v20201126
authorKilian Saffran <ksaffran@dks.lu>
Thu, 26 Nov 2020 14:13:23 +0000 (15:13 +0100)
committerKilian Saffran <ksaffran@dks.lu>
Thu, 26 Nov 2020 14:13:23 +0000 (15:13 +0100)
184 files changed:
admin/css/fonts/DancingScript-Bold.ttf [new file with mode: 0644]
admin/css/fonts/DancingScript-Medium.ttf [new file with mode: 0644]
admin/css/fonts/DancingScript-Regular.ttf [new file with mode: 0644]
admin/css/fonts/DancingScript-SemiBold.ttf [new file with mode: 0644]
admin/css/fonts/DancingScript-VariableFont_wght.ttf [new file with mode: 0644]
admin/css/fonts/Roboto-Black.ttf [new file with mode: 0644]
admin/css/fonts/Roboto-BlackItalic.ttf [new file with mode: 0644]
admin/css/fonts/Roboto-Bold.ttf [new file with mode: 0644]
admin/css/fonts/Roboto-BoldItalic.ttf [new file with mode: 0644]
admin/css/fonts/Roboto-Italic.ttf [new file with mode: 0644]
admin/css/fonts/Roboto-Light.ttf [new file with mode: 0644]
admin/css/fonts/Roboto-LightItalic.ttf [new file with mode: 0644]
admin/css/fonts/Roboto-Medium.ttf [new file with mode: 0644]
admin/css/fonts/Roboto-MediumItalic.ttf [new file with mode: 0644]
admin/css/fonts/Roboto-Regular.ttf [new file with mode: 0644]
admin/css/fonts/Roboto-Thin.ttf [new file with mode: 0644]
admin/css/fonts/Roboto-ThinItalic.ttf [new file with mode: 0644]
admin/css/fonts/pot.svg [deleted file]
admin/css/fonts/pot.ttf [deleted file]
admin/css/fonts/pot.woff [deleted file]
admin/css/fonts/siteicons.eot [new file with mode: 0644]
admin/css/fonts/siteicons.svg [new file with mode: 0644]
admin/css/fonts/siteicons.ttf [new file with mode: 0644]
admin/css/fonts/siteicons.woff [new file with mode: 0644]
admin/css/icons.css
admin/data/galleries/photos/oldbell_photo (1).jpg [new file with mode: 0644]
admin/data/galleries/photos/oldbell_photo (10).jpg [new file with mode: 0644]
admin/data/galleries/photos/oldbell_photo (15).jpg [new file with mode: 0644]
admin/data/galleries/photos/oldbell_photo (17).jpg [new file with mode: 0644]
admin/data/galleries/photos/oldbell_photo (18).jpg [new file with mode: 0644]
admin/data/galleries/photos/oldbell_photo (19).jpg [new file with mode: 0644]
admin/data/galleries/photos/oldbell_photo (2).jpg [new file with mode: 0644]
admin/data/galleries/photos/oldbell_photo (20).jpg [new file with mode: 0644]
admin/data/galleries/photos/oldbell_photo (21).jpg [new file with mode: 0644]
admin/data/galleries/photos/oldbell_photo (3).jpg [new file with mode: 0644]
admin/data/galleries/photos/oldbell_photo (4).jpg [new file with mode: 0644]
admin/data/galleries/photos/oldbell_photo (5).jpg [new file with mode: 0644]
admin/data/galleries/photos/oldbell_photo (6).jpg [new file with mode: 0644]
admin/data/galleries/photos/oldbell_photo (8).jpg [new file with mode: 0644]
admin/data/galleries/photos/thumb/oldbell_photo (1).jpg [new file with mode: 0644]
admin/data/galleries/photos/thumb/oldbell_photo (10).jpg [new file with mode: 0644]
admin/data/galleries/photos/thumb/oldbell_photo (15).jpg [new file with mode: 0644]
admin/data/galleries/photos/thumb/oldbell_photo (17).jpg [new file with mode: 0644]
admin/data/galleries/photos/thumb/oldbell_photo (18).jpg [new file with mode: 0644]
admin/data/galleries/photos/thumb/oldbell_photo (19).jpg [new file with mode: 0644]
admin/data/galleries/photos/thumb/oldbell_photo (2).jpg [new file with mode: 0644]
admin/data/galleries/photos/thumb/oldbell_photo (20).jpg [new file with mode: 0644]
admin/data/galleries/photos/thumb/oldbell_photo (21).jpg [new file with mode: 0644]
admin/data/galleries/photos/thumb/oldbell_photo (3).jpg [new file with mode: 0644]
admin/data/galleries/photos/thumb/oldbell_photo (4).jpg [new file with mode: 0644]
admin/data/galleries/photos/thumb/oldbell_photo (5).jpg [new file with mode: 0644]
admin/data/galleries/photos/thumb/oldbell_photo (6).jpg [new file with mode: 0644]
admin/data/galleries/photos/thumb/oldbell_photo (8).jpg [new file with mode: 0644]
admin/db.php
admin/index.php
admin/js/dataform.js
admin/js/filedata.js [new file with mode: 0644]
admin/js/modules/galleries.js [new file with mode: 0644]
admin/js/modules/gallery.js
admin/js/modules/rendezvous.js
admin/js/modules/rendezvous_config.js [new file with mode: 0644]
admin/js/myapp.js
admin/js/request.js
admin/js/vendors/Acrobat_2020_Web_WWMUI.zip [new file with mode: 0644]
admin/js/vendors/dropzone-5.7.2.zip [new file with mode: 0644]
admin/js/vendors/dropzone/basic.css [new file with mode: 0644]
admin/js/vendors/dropzone/dropzone-amd-module.js [new file with mode: 0644]
admin/js/vendors/dropzone/dropzone.css [new file with mode: 0644]
admin/js/vendors/dropzone/dropzone.js [new file with mode: 0644]
admin/js/vendors/dropzone/dropzone.js.map [new file with mode: 0644]
admin/js/vendors/dropzone/min/basic.min.css [new file with mode: 0644]
admin/js/vendors/dropzone/min/dropzone-amd-module.min.js [new file with mode: 0644]
admin/js/vendors/dropzone/min/dropzone.min.css [new file with mode: 0644]
admin/js/vendors/dropzone/min/dropzone.min.js [new file with mode: 0644]
admin/js/vendors/tinymce/changelog.txt [new file with mode: 0644]
admin/js/vendors/tinymce/js/tinymce/jquery.tinymce.min.js [new file with mode: 0644]
admin/js/vendors/tinymce/js/tinymce/langs/de.js [new file with mode: 0644]
admin/js/vendors/tinymce/js/tinymce/langs/fr.js [new file with mode: 0644]
admin/js/vendors/tinymce/js/tinymce/langs/readme.md [new file with mode: 0644]
admin/js/vendors/tinymce/js/tinymce/license.txt [new file with mode: 0644]
admin/js/vendors/tinymce/js/tinymce/plugins/advlist/plugin.min.js [new file with mode: 0644]
admin/js/vendors/tinymce/js/tinymce/plugins/anchor/plugin.min.js [new file with mode: 0644]
admin/js/vendors/tinymce/js/tinymce/plugins/autolink/plugin.min.js [new file with mode: 0644]
admin/js/vendors/tinymce/js/tinymce/plugins/autoresize/plugin.min.js [new file with mode: 0644]
admin/js/vendors/tinymce/js/tinymce/plugins/autosave/plugin.min.js [new file with mode: 0644]
admin/js/vendors/tinymce/js/tinymce/plugins/bbcode/plugin.min.js [new file with mode: 0644]
admin/js/vendors/tinymce/js/tinymce/plugins/charmap/plugin.min.js [new file with mode: 0644]
admin/js/vendors/tinymce/js/tinymce/plugins/code/plugin.min.js [new file with mode: 0644]
admin/js/vendors/tinymce/js/tinymce/plugins/codesample/plugin.min.js [new file with mode: 0644]
admin/js/vendors/tinymce/js/tinymce/plugins/colorpicker/plugin.min.js [new file with mode: 0644]
admin/js/vendors/tinymce/js/tinymce/plugins/contextmenu/plugin.min.js [new file with mode: 0644]
admin/js/vendors/tinymce/js/tinymce/plugins/directionality/plugin.min.js [new file with mode: 0644]
admin/js/vendors/tinymce/js/tinymce/plugins/emoticons/js/emojis.js [new file with mode: 0644]
admin/js/vendors/tinymce/js/tinymce/plugins/emoticons/js/emojis.min.js [new file with mode: 0644]
admin/js/vendors/tinymce/js/tinymce/plugins/emoticons/plugin.min.js [new file with mode: 0644]
admin/js/vendors/tinymce/js/tinymce/plugins/fullpage/plugin.min.js [new file with mode: 0644]
admin/js/vendors/tinymce/js/tinymce/plugins/fullscreen/plugin.min.js [new file with mode: 0644]
admin/js/vendors/tinymce/js/tinymce/plugins/help/plugin.min.js [new file with mode: 0644]
admin/js/vendors/tinymce/js/tinymce/plugins/hr/plugin.min.js [new file with mode: 0644]
admin/js/vendors/tinymce/js/tinymce/plugins/image/plugin.min.js [new file with mode: 0644]
admin/js/vendors/tinymce/js/tinymce/plugins/imagetools/plugin.min.js [new file with mode: 0644]
admin/js/vendors/tinymce/js/tinymce/plugins/importcss/plugin.min.js [new file with mode: 0644]
admin/js/vendors/tinymce/js/tinymce/plugins/insertdatetime/plugin.min.js [new file with mode: 0644]
admin/js/vendors/tinymce/js/tinymce/plugins/legacyoutput/plugin.min.js [new file with mode: 0644]
admin/js/vendors/tinymce/js/tinymce/plugins/link/plugin.min.js [new file with mode: 0644]
admin/js/vendors/tinymce/js/tinymce/plugins/lists/plugin.min.js [new file with mode: 0644]
admin/js/vendors/tinymce/js/tinymce/plugins/media/plugin.min.js [new file with mode: 0644]
admin/js/vendors/tinymce/js/tinymce/plugins/nonbreaking/plugin.min.js [new file with mode: 0644]
admin/js/vendors/tinymce/js/tinymce/plugins/noneditable/plugin.min.js [new file with mode: 0644]
admin/js/vendors/tinymce/js/tinymce/plugins/pagebreak/plugin.min.js [new file with mode: 0644]
admin/js/vendors/tinymce/js/tinymce/plugins/paste/plugin.min.js [new file with mode: 0644]
admin/js/vendors/tinymce/js/tinymce/plugins/preview/plugin.min.js [new file with mode: 0644]
admin/js/vendors/tinymce/js/tinymce/plugins/print/plugin.min.js [new file with mode: 0644]
admin/js/vendors/tinymce/js/tinymce/plugins/quickbars/plugin.min.js [new file with mode: 0644]
admin/js/vendors/tinymce/js/tinymce/plugins/save/plugin.min.js [new file with mode: 0644]
admin/js/vendors/tinymce/js/tinymce/plugins/searchreplace/plugin.min.js [new file with mode: 0644]
admin/js/vendors/tinymce/js/tinymce/plugins/spellchecker/plugin.min.js [new file with mode: 0644]
admin/js/vendors/tinymce/js/tinymce/plugins/tabfocus/plugin.min.js [new file with mode: 0644]
admin/js/vendors/tinymce/js/tinymce/plugins/table/plugin.min.js [new file with mode: 0644]
admin/js/vendors/tinymce/js/tinymce/plugins/template/plugin.min.js [new file with mode: 0644]
admin/js/vendors/tinymce/js/tinymce/plugins/textcolor/plugin.min.js [new file with mode: 0644]
admin/js/vendors/tinymce/js/tinymce/plugins/textpattern/plugin.min.js [new file with mode: 0644]
admin/js/vendors/tinymce/js/tinymce/plugins/toc/plugin.min.js [new file with mode: 0644]
admin/js/vendors/tinymce/js/tinymce/plugins/visualblocks/plugin.min.js [new file with mode: 0644]
admin/js/vendors/tinymce/js/tinymce/plugins/visualchars/plugin.min.js [new file with mode: 0644]
admin/js/vendors/tinymce/js/tinymce/plugins/wordcount/plugin.min.js [new file with mode: 0644]
admin/js/vendors/tinymce/js/tinymce/skins/content/dark/content.min.css [new file with mode: 0644]
admin/js/vendors/tinymce/js/tinymce/skins/content/default/content.min.css [new file with mode: 0644]
admin/js/vendors/tinymce/js/tinymce/skins/content/document/content.min.css [new file with mode: 0644]
admin/js/vendors/tinymce/js/tinymce/skins/content/writer/content.min.css [new file with mode: 0644]
admin/js/vendors/tinymce/js/tinymce/skins/ui/oxide-dark/content.inline.min.css [new file with mode: 0644]
admin/js/vendors/tinymce/js/tinymce/skins/ui/oxide-dark/content.min.css [new file with mode: 0644]
admin/js/vendors/tinymce/js/tinymce/skins/ui/oxide-dark/content.mobile.min.css [new file with mode: 0644]
admin/js/vendors/tinymce/js/tinymce/skins/ui/oxide-dark/fonts/tinymce-mobile.woff [new file with mode: 0644]
admin/js/vendors/tinymce/js/tinymce/skins/ui/oxide-dark/skin.min.css [new file with mode: 0644]
admin/js/vendors/tinymce/js/tinymce/skins/ui/oxide-dark/skin.mobile.min.css [new file with mode: 0644]
admin/js/vendors/tinymce/js/tinymce/skins/ui/oxide/content.inline.min.css [new file with mode: 0644]
admin/js/vendors/tinymce/js/tinymce/skins/ui/oxide/content.min.css [new file with mode: 0644]
admin/js/vendors/tinymce/js/tinymce/skins/ui/oxide/content.mobile.min.css [new file with mode: 0644]
admin/js/vendors/tinymce/js/tinymce/skins/ui/oxide/fonts/tinymce-mobile.woff [new file with mode: 0644]
admin/js/vendors/tinymce/js/tinymce/skins/ui/oxide/skin.min.css [new file with mode: 0644]
admin/js/vendors/tinymce/js/tinymce/skins/ui/oxide/skin.mobile.min.css [new file with mode: 0644]
admin/js/vendors/tinymce/js/tinymce/themes/mobile/theme.min.js [new file with mode: 0644]
admin/js/vendors/tinymce/js/tinymce/themes/silver/theme.min.js [new file with mode: 0644]
admin/js/vendors/tinymce/js/tinymce/tinymce.min.js [new file with mode: 0644]
admin/js/vendors/tui.calendar/tui-calendar.css [new file with mode: 0644]
admin/js/vendors/tui.calendar/tui-calendar.css.map [new file with mode: 0644]
admin/js/vendors/tui.calendar/tui-calendar.js [new file with mode: 0644]
admin/js/vendors/tui.calendar/tui-calendar.js.map [new file with mode: 0644]
admin/js/vendors/tui.calendar/tui-calendar.min.css [new file with mode: 0644]
admin/js/vendors/tui.calendar/tui-calendar.min.css.map [new file with mode: 0644]
admin/js/vendors/tui.calendar/tui-calendar.min.js [new file with mode: 0644]
admin/js/vendors/tui.calendar/tui-calendar.min.js.map [new file with mode: 0644]
admin/js/vendors/tui.color-picker/tui-color-picker.css [new file with mode: 0644]
admin/js/vendors/tui.color-picker/tui-color-picker.js [new file with mode: 0644]
admin/js/vendors/tui.color-picker/tui-color-picker.min.css [new file with mode: 0644]
admin/js/vendors/tui.color-picker/tui-color-picker.min.js [new file with mode: 0644]
admin/js/vendors/tui.image-editor/svg/icon-a.svg [new file with mode: 0644]
admin/js/vendors/tui.image-editor/svg/icon-b.svg [new file with mode: 0644]
admin/js/vendors/tui.image-editor/svg/icon-c.svg [new file with mode: 0644]
admin/js/vendors/tui.image-editor/svg/icon-d.svg [new file with mode: 0644]
admin/js/vendors/tui.image-editor/tui-image-editor.css [new file with mode: 0644]
admin/js/vendors/tui.image-editor/tui-image-editor.js [new file with mode: 0644]
admin/js/vendors/tui.image-editor/tui-image-editor.min.css [new file with mode: 0644]
admin/js/vendors/tui.image-editor/tui-image-editor.min.css.map [new file with mode: 0644]
admin/js/vendors/tui.image-editor/tui-image-editor.min.js [new file with mode: 0644]
admin/lib/database.php
admin/lib/modules/Gallery.php
admin/lib/session.php
admin/tmpl/elements/dialogs/confirm.html.mustache [new file with mode: 0644]
admin/tmpl/elements/dialogs/dataload.html.mustache [new file with mode: 0644]
admin/tmpl/elements/dialogs/dlg_galleryitem.html.mustache [new file with mode: 0644]
admin/tmpl/elements/dialogs/dlgaddgalleryitem.html.mustache [new file with mode: 0644]
admin/tmpl/elements/dialogs/message.html.mustache [new file with mode: 0644]
admin/tmpl/elements/panels/pnl_galleries.html.mustache [new file with mode: 0644]
admin/tmpl/elements/panels/pnl_gallery.html.mustache [new file with mode: 0644]
admin/tmpl/index.html.mustache
admin/tmpl/pages/galleries.html.mustache
admin/tmpl/pages/index.html.mustache
admin/tmpl/pages/rendezvous.html.mustache
admin/upload.php
dev/cmds.txt [new file with mode: 0644]
website/mkdir weeklysoap.txt [new file with mode: 0644]
website/tmpl/pages/index.html.mustache

diff --git a/admin/css/fonts/DancingScript-Bold.ttf b/admin/css/fonts/DancingScript-Bold.ttf
new file mode 100644 (file)
index 0000000..6eb9606
Binary files /dev/null and b/admin/css/fonts/DancingScript-Bold.ttf differ
diff --git a/admin/css/fonts/DancingScript-Medium.ttf b/admin/css/fonts/DancingScript-Medium.ttf
new file mode 100644 (file)
index 0000000..1d96569
Binary files /dev/null and b/admin/css/fonts/DancingScript-Medium.ttf differ
diff --git a/admin/css/fonts/DancingScript-Regular.ttf b/admin/css/fonts/DancingScript-Regular.ttf
new file mode 100644 (file)
index 0000000..f743783
Binary files /dev/null and b/admin/css/fonts/DancingScript-Regular.ttf differ
diff --git a/admin/css/fonts/DancingScript-SemiBold.ttf b/admin/css/fonts/DancingScript-SemiBold.ttf
new file mode 100644 (file)
index 0000000..ead1c3d
Binary files /dev/null and b/admin/css/fonts/DancingScript-SemiBold.ttf differ
diff --git a/admin/css/fonts/DancingScript-VariableFont_wght.ttf b/admin/css/fonts/DancingScript-VariableFont_wght.ttf
new file mode 100644 (file)
index 0000000..6f55454
Binary files /dev/null and b/admin/css/fonts/DancingScript-VariableFont_wght.ttf differ
diff --git a/admin/css/fonts/Roboto-Black.ttf b/admin/css/fonts/Roboto-Black.ttf
new file mode 100644 (file)
index 0000000..2d45238
Binary files /dev/null and b/admin/css/fonts/Roboto-Black.ttf differ
diff --git a/admin/css/fonts/Roboto-BlackItalic.ttf b/admin/css/fonts/Roboto-BlackItalic.ttf
new file mode 100644 (file)
index 0000000..29a4359
Binary files /dev/null and b/admin/css/fonts/Roboto-BlackItalic.ttf differ
diff --git a/admin/css/fonts/Roboto-Bold.ttf b/admin/css/fonts/Roboto-Bold.ttf
new file mode 100644 (file)
index 0000000..d998cf5
Binary files /dev/null and b/admin/css/fonts/Roboto-Bold.ttf differ
diff --git a/admin/css/fonts/Roboto-BoldItalic.ttf b/admin/css/fonts/Roboto-BoldItalic.ttf
new file mode 100644 (file)
index 0000000..b4e2210
Binary files /dev/null and b/admin/css/fonts/Roboto-BoldItalic.ttf differ
diff --git a/admin/css/fonts/Roboto-Italic.ttf b/admin/css/fonts/Roboto-Italic.ttf
new file mode 100644 (file)
index 0000000..5b390ff
Binary files /dev/null and b/admin/css/fonts/Roboto-Italic.ttf differ
diff --git a/admin/css/fonts/Roboto-Light.ttf b/admin/css/fonts/Roboto-Light.ttf
new file mode 100644 (file)
index 0000000..3526798
Binary files /dev/null and b/admin/css/fonts/Roboto-Light.ttf differ
diff --git a/admin/css/fonts/Roboto-LightItalic.ttf b/admin/css/fonts/Roboto-LightItalic.ttf
new file mode 100644 (file)
index 0000000..46e9bf7
Binary files /dev/null and b/admin/css/fonts/Roboto-LightItalic.ttf differ
diff --git a/admin/css/fonts/Roboto-Medium.ttf b/admin/css/fonts/Roboto-Medium.ttf
new file mode 100644 (file)
index 0000000..f714a51
Binary files /dev/null and b/admin/css/fonts/Roboto-Medium.ttf differ
diff --git a/admin/css/fonts/Roboto-MediumItalic.ttf b/admin/css/fonts/Roboto-MediumItalic.ttf
new file mode 100644 (file)
index 0000000..5dc6a2d
Binary files /dev/null and b/admin/css/fonts/Roboto-MediumItalic.ttf differ
diff --git a/admin/css/fonts/Roboto-Regular.ttf b/admin/css/fonts/Roboto-Regular.ttf
new file mode 100644 (file)
index 0000000..2b6392f
Binary files /dev/null and b/admin/css/fonts/Roboto-Regular.ttf differ
diff --git a/admin/css/fonts/Roboto-Thin.ttf b/admin/css/fonts/Roboto-Thin.ttf
new file mode 100644 (file)
index 0000000..4e797cf
Binary files /dev/null and b/admin/css/fonts/Roboto-Thin.ttf differ
diff --git a/admin/css/fonts/Roboto-ThinItalic.ttf b/admin/css/fonts/Roboto-ThinItalic.ttf
new file mode 100644 (file)
index 0000000..eea836f
Binary files /dev/null and b/admin/css/fonts/Roboto-ThinItalic.ttf differ
diff --git a/admin/css/fonts/pot.svg b/admin/css/fonts/pot.svg
deleted file mode 100644 (file)
index 0858544..0000000
+++ /dev/null
@@ -1,138 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
-<svg xmlns="http://www.w3.org/2000/svg">
-<metadata>Generated by IcoMoon</metadata>
-<defs>
-<font id="pot" horiz-adv-x="1024">
-<font-face units-per-em="1024" ascent="960" descent="-64" />
-<missing-glyph horiz-adv-x="1024" />
-<glyph unicode="&#x20;" horiz-adv-x="512" d="" />
-<glyph unicode="&#xe900;" glyph-name="pause" d="M811.771 362.91c-12.827-56.112-29.899-108.479-50.513-156.048h68.561c41.745 0 75.792 34.992 75.792 78.049 0 42.958-34.047 77.999-75.792 77.999zM448.901 572.858c-21.735 0-41.836-0.864-61.427-2.062-2.425-36.767-16.93-71.759-56.016-103.2-10.542-8.496-64.738-14.256-42.069 4.034 35.26 28.415 47.108 60.67 46.966 94.654-131.062-14.976-204.753-52.945-217.020-72.433 15.484-24.48 126.723-78.91 329.566-78.91s314.083 54.43 329.566 78.91c-11.054 17.616-72.293 50.402-180.407 67.584-4.29-33.31-19.31-65.088-55.036-93.84-10.542-8.496-64.692-14.256-42.069 4.034 35.772 28.845 47.433 61.535 47.014 96.046-30.412 2.977-62.734 5.183-99.067 5.183zM606.361 959.994c12.045 0.162 19.893-2.922 8.443-11.779-122.060-94.127-39.598-214.366-19.355-324.668 139.969-20.256 238.521-68.495 238.57-124.991-2.659-27.263-6.576-53.519-11.008-79.391h6.809c72.014 0 130.41-60.096 130.41-134.255s-58.395-134.304-130.41-134.304h-95.802c-71.22-131.805-172.385-214.606-285.117-214.606-193.653 0-353.96 243.311-385.118 562.363 0 59.856 110.027 110.305 262.545 128.255-12.082 41.569-31.764 84.049-41.045 124.367-20.055 87.169 6.997 148.223 75.886 201.312 5.34 4.128 21.583 7.536 33.628 7.698s19.892-2.922 8.441-11.779c-119.122-91.871-43.515-208.557-20.895-316.605 21.689 1.298 43.797 2.112 66.557 2.112 30.318 0 59.654-1.392 87.919-3.694-12.173 40.462-30.97 81.694-39.971 120.957-20.055 87.169 6.994 148.223 75.886 201.312 5.339 4.128 21.581 7.536 33.626 7.698z" />
-<glyph unicode="&#xe901;" glyph-name="calendar" d="M800 832h-544c-52.995-0.060-95.94-43.005-96-95.994v-608.006c0.042-35.329 28.671-63.958 63.996-64h608.004c35.329 0.042 63.958 28.671 64 63.996v608.004c-0.060 52.995-43.005 95.94-95.994 96h-0.006zM384 144c0-8.837-7.163-16-16-16v0h-128c-8.837 0-16 7.163-16 16v0 96c0 8.837 7.163 16 16 16v0h128c8.837 0 16-7.163 16-16v0zM384 336c0-8.837-7.163-16-16-16v0h-128c-8.837 0-16 7.163-16 16v0 96c0 8.837 7.163 16 16 16v0h128c8.837 0 16-7.163 16-16v0zM384 528c0-8.837-7.163-16-16-16v0h-128c-8.837 0-16 7.163-16 16v0 96c0 8.837 7.163 16 16 16v0h128c8.837 0 16-7.163 16-16v0zM608 144c0-8.837-7.163-16-16-16v0h-128c-8.837 0-16 7.163-16 16v0 96c0 8.837 7.163 16 16 16v0h128c8.837 0 16-7.163 16-16v0zM608 336c0-8.837-7.163-16-16-16v0h-128c-8.837 0-16 7.163-16 16v0 96c0 8.837 7.163 16 16 16v0h128c8.837 0 16-7.163 16-16v0zM608 528c0-8.837-7.163-16-16-16v0h-128c-8.837 0-16 7.163-16 16v0 96c0 8.837 7.163 16 16 16v0h128c8.837 0 16-7.163 16-16v0zM832 144c0-8.837-7.163-16-16-16v0h-128c-8.837 0-16 7.163-16 16v0 96c0 8.837 7.163 16 16 16v0h128c8.837 0 16-7.163 16-16v0zM832 336c0-8.837-7.163-16-16-16v0h-128c-8.837 0-16 7.163-16 16v0 96c0 8.837 7.163 16 16 16v0h128c8.837 0 16-7.163 16-16v0zM832 528c0-8.837-7.163-16-16-16v0h-128c-8.837 0-16 7.163-16 16v0 96c0 8.837 7.163 16 16 16v0h128c8.837 0 16-7.163 16-16v0z" />
-<glyph unicode="&#xe902;" glyph-name="clocktime" d="M398.164 640.5v-137.594c-19.007-10.912-31.602-31.092-31.602-54.214 0-6.076 0.87-11.948 2.491-17.5l-0.11 0.44-51.514-51.516c-5.698-5.775-9.217-13.712-9.217-22.471 0-17.673 14.327-32 32-32 8.759 0 16.696 3.519 22.474 9.22l-0.004-0.003 51.514 51.512c4.998-1.409 10.738-2.219 16.666-2.219 35.183 0 63.704 28.521 63.704 63.704 0 23.678-12.918 44.339-32.091 55.319l-0.311 0.164v137.156c0 17.673-14.327 32-32 32s-32-14.327-32-32v0zM433.931 831.984c199.204-2.11 361.934-155.453 378.912-350.54l0.101-1.444h67.084c8.837-0.001 16.001-7.165 16.001-16.002 0-3.407-1.064-6.564-2.879-9.159l0.034 0.052-113.465-163.891c-2.927-4.187-7.725-6.891-13.154-6.891s-10.227 2.704-13.12 6.84l-0.034 0.052-113.465 163.891c-1.78 2.543-2.845 5.701-2.845 9.108 0 8.837 7.164 16.001 16.001 16.002h63.575c-16.574 142.661-135.194 252.799-280.171 255.94l-0.315 0.005c-0.737 0.007-1.609 0.011-2.481 0.011-156.612 0-284.354-123.605-290.993-278.582l-0.020-0.6c-0.089-2.677-0.14-5.823-0.14-8.982 0-158.943 128.849-287.792 287.792-287.792 76.653 0 146.307 29.968 197.884 78.827l-0.131-0.123c5.699 5.468 13.451 8.834 21.988 8.834 10.78 0 20.307-5.367 26.053-13.575l0.068-0.102 18.316-26.461c3.512-5.104 5.609-11.419 5.609-18.223 0-9.59-4.165-18.207-10.786-24.14l-0.031-0.027c-68.025-62.619-159.201-101.009-259.344-101.009-211.769 0-383.441 171.672-383.441 383.441 0 5.662 0.123 11.296 0.366 16.898l-0.028-0.799c10.572 205.602 179.792 368.321 387.044 368.445h0.012z" />
-<glyph unicode="&#xe903;" glyph-name="cube" d="M160 621.883l320-192.008v-351.992l-304.469 182.68c-9.368 5.696-15.53 15.847-15.531 27.437v0zM528.469 859.437c-4.703 2.857-10.388 4.547-16.469 4.547s-11.766-1.691-16.612-4.628l0.143 0.080-303.527-182.117 319.996-192 319.996 192zM544 429.875v-351.992l304.469 182.68c9.368 5.696 15.53 15.847 15.531 27.437v0 333.883z" />
-<glyph unicode="&#xe904;" glyph-name="cubelight" d="M862.891 648.313c-0.42 1.193-0.819 2.148-1.264 3.077l0.080-0.186c-0.606 1.84-1.273 3.397-2.054 4.885l0.084-0.175c-2.136 2.898-3.775 5.032-5.443 7.141l0.447-0.586c-0.89 0.795-1.858 1.567-2.869 2.283l-0.102 0.069c-0.991 0.903-2.067 1.762-3.198 2.549l-0.103 0.068-320 192c-4.703 2.857-10.388 4.547-16.469 4.547s-11.766-1.691-16.612-4.628l0.143 0.080-320-192c-1.226-0.854-2.295-1.709-3.306-2.626l0.027 0.024c-1.121-0.791-2.097-1.571-3.025-2.402l0.031 0.027c-0.962-1.071-1.874-2.241-2.701-3.472l-0.072-0.114c-0.744-0.875-1.474-1.84-2.148-2.846l-0.072-0.115c-0.675-1.276-1.326-2.795-1.858-4.368l-0.066-0.226c-0.389-1.024-0.947-1.961-1.232-3.016-0.699-2.49-1.103-5.349-1.107-8.302v-352.002c0.001-11.591 6.163-21.742 15.39-27.357l0.141-0.080 320.688-192.406c1.479-0.783 3.216-1.505 5.024-2.066l0.221-0.059c0.76-0.266 1.461-0.704 2.232-0.906 2.489-0.714 5.349-1.125 8.304-1.125s5.815 0.411 8.524 1.178l-0.22-0.053c0.772 0.203 1.472 0.64 2.232 0.906 2.028 0.62 3.765 1.342 5.415 2.207l-0.171-0.082 0.34 0.258 0.348 0.148 320 192c9.368 5.695 15.531 15.847 15.532 27.437v0 352c-0.004 2.958-0.408 5.821-1.163 8.538l0.053-0.225zM480 152.531l-256 153.594v277.344l256-153.594zM512 485.32l-257.807 154.68 257.807 154.688 257.807-154.688zM800 306.125l-256-153.594v277.344l256 153.594z" />
-<glyph unicode="&#xe905;" glyph-name="dashboard" d="M797.156 159.875c-8.529-10.218-21.271-16.672-35.519-16.672-14.515 0-27.465 6.697-35.93 17.171l-0.068 0.087c-3.873 1.648-7.184 3.885-9.987 6.638l-67.901 67.901c-5.79 5.79-9.372 13.789-9.372 22.625 0 17.671 14.325 31.997 31.997 31.997 8.836 0 16.835-3.581 22.625-9.372v0l43.26-43.258c32.994 40.283 55.204 90.578 61.549 145.7l0.122 1.308h-61.932c-17.673 0-32 14.327-32 32s14.327 32 32 32v0h61.98c-0.262 2.437-0.252 4.84-0.574 7.281-7.523 53.851-29.185 101.615-61.077 140.704l0.405-0.512-43.703-43.723c-5.79-5.79-13.789-9.372-22.625-9.372-17.671 0-31.997 14.325-31.997 31.997 0 8.836 3.581 16.835 9.372 22.625l43.729 43.75c-40.045 32.607-89.888 54.662-144.495 61.243l-1.359 0.133c-0.555 0.064-1.102 0.043-1.656 0.101v-62.228c0-17.673-14.327-32-32-32s-32 14.327-32 32v0 62.14c-56.57-6.349-107.037-28.47-148.016-61.804l0.52 0.41 43.746-43.746c5.754-5.74 9.32-13.67 9.342-22.433v-0.004l165.252-120.793c13.687-10.088 22.469-26.147 22.469-44.256 0-30.276-24.544-54.82-54.82-54.82-18.11 0-34.169 8.782-44.151 22.32l-0.106 0.151-120.787 165.242c-8.77 0.028-16.703 3.594-22.449 9.344l-43.724 43.726c-32.699-40.559-54.775-90.956-61.278-146.12l-0.13-1.357h62.133c17.673 0 32-14.327 32-32s-14.327-32-32-32v0h-61.984c6.676-56.414 28.847-106.679 62.085-147.591l-0.416 0.528 43.313 43.312c5.79 5.79 13.789 9.372 22.625 9.372 17.671 0 31.997-14.325 31.997-31.997 0-8.836-3.581-16.835-9.372-22.625v0l-67.905-67.906c-2.759-2.694-6.015-4.893-9.616-6.445l-0.206-0.079c-8.543-10.61-21.531-17.341-36.092-17.341-14.245 0-26.985 6.443-35.465 16.573l-0.059 0.072c-61.126 67.675-98.527 157.799-98.527 256.658 0 211.831 171.723 383.555 383.555 383.555 15.672 0 31.124-0.94 46.303-2.766l-1.83 0.179c192.044-22.638 339.606-184.452 339.606-380.731 0-98.991-37.534-189.216-99.146-257.219l0.29 0.325z" />
-<glyph unicode="&#xe906;" glyph-name="history" d="M623.040 527.829l-69.717-69.76c0.811-3.264 1.344-6.699 1.344-10.197 0-23.552-19.093-42.795-42.667-42.795-15.957 0-29.717 10.923-37.035 21.589h-58.965c-5.867 0-10.667 5.312-10.667 11.157v20.331c0 5.867 4.8 11.179 10.667 11.179h58.965c7.339 10.667 21.077 21.589 37.035 21.589 4.203 0 8.213-1.045 12.053-2.176l69.077 69.056c4.139 4.139 10.944 4.139 15.083 0l14.805-14.848c4.181-4.16 4.181-10.944 0.021-15.125zM763.541 405.333c2.453 21.333 4.203 28.459 4.203 43.051 0 141.184-114.837 256.213-256 256.213s-255.872-114.731-255.872-255.936c0-141.12 106.795-255.872 256.128-255.872v0.043c42.667 0.128 96.192 13.696 139.243 41.835l1.216 0.832 31.488-43.648c3.456-4.779 7.701-4.011 9.429 1.557l47.040 137.387c1.749 5.611-1.643 10.24-7.531 10.368l-145.792-0.043c-5.888 0.128-7.893-3.712-4.48-8.448l32.32-45.227c-31.893-20.48-60.267-30.357-102.933-30.507v-0.171c-106.667 0.021-192.171 85.973-192.128 192.021 0 106.048 85.909 192 191.957 192 106.027 0 191.957-86.357 191.957-192.427 0-14.677-1.963-21.717-5.12-43.051h64.875z" />
-<glyph unicode="&#xe907;" glyph-name="shop" d="M188.588 347.734v-280.78h320.912v280.78zM108.388 788.962h802.215c22.085 0 40.105-18.021 40.105-40.115v-43.691l68.324-195.76c0 0 4.999-41.069-36.35-41.069-17.128 0-26.522 7.093-31.975 15.333v-496.922c0-22.095-18.019-40.116-40.105-40.116h-80.227v401.112h-200.56v-401.112h-521.429c-22.105 0-40.104 18.021-40.104 40.116v496.985c-4.935-8.275-13.188-15.397-27.579-15.397-41.369 0-40.705 41.069-40.705 41.069l68.284 195.74v43.712c0 22.093 17.999 40.115 40.104 40.115zM108.377 949.41h802.23c22.086 0 40.105-18.019 40.105-40.113v-40.115c0-22.084-18.020-40.104-40.105-40.104h-802.23c-22.105 0-40.105 18.021-40.105 40.104v40.115c0 22.094 17.999 40.113 40.105 40.113z" />
-<glyph unicode="&#xe908;" glyph-name="template" d="M502.522 615.239l80.861-74.562-92.996-19.661zM411.045 829.025h192.977l-70.344-75.324h-117.69l-5.087-164.232c0 0-6.541-108.612-126.229-95.489l-102.575 2.793v-466.617c0-10.396 8.467-18.817 18.858-18.817h527.19c10.354 0 18.821 8.421 18.821 18.817v559.653l75.36 75.979v-635.632c0-51.997-42.186-94.113-94.181-94.113h-527.19c-51.996 0-94.145 42.117-94.145 94.113v477.886l37.28 39.323 0.037 1.077 195.375 205.259h-0.546l-52.214-55.075 54.721 57.95h0.763l1.744 1.812h0.145zM707.15 880.343l131.403-121.256-162.198-175.828-2.761 27.837-43.293 14.716-1.217 29.473-43.201 11.446-5.196 33.247-35.771 4.578zM797.329 959.977c5.834-0.231 11.27-2.23 15.501-6.119l93.089-85.922c11.299-10.41 9.845-30.426-3.307-44.623l-17.841-19.376-134.038 123.651 17.859 19.376c8.187 8.874 19.013 13.399 28.736 13.013z" />
-<glyph unicode="&#xe909;" glyph-name="remove" d="M824.447 960l199.553-199.586-312.445-312.431 312.445-312.443-199.552-199.541-312.448 312.437-312.451-312.437-199.533 199.539 312.432 312.443-312.448 312.438 199.552 199.564 312.446-312.444z" />
-<glyph unicode="&#xe90a;" glyph-name="access" d="M941.97 557.736l-133.783-128.013h-172.028l-38.165-22.101h-126.982l-354.747-358.103 38.248-36.558 328.823 332.987h114.658l38.165 22.060h191.111l152.906 146.273zM769.981 813.727v-124.175h114.658v124.175zM502.457 960h401.307l114.658-109.715v-409.121l-129.769-139.457h-176.002l-38.245-36.558-38.248 36.558-38.165-36.558h-95.536v-73.157h-76.453v-73.119h-76.41v-73.155h-76.493v-73.119h-38.208v-36.599h-191.069l-38.248 36.599v255.95l349.545 334.517-38.248 36.558 32.719 31.23v182.872z" />
-<glyph unicode="&#xe90b;" glyph-name="address" d="M800 832h-480c-0.001 0-0.002 0-0.003 0-70.691 0-127.997-57.306-127.997-127.997 0-0.001 0-0.002 0-0.003v0-512c0-70.692 57.308-128 128-128v0h480c17.673 0 32 14.327 32 32v0 64h-512c-17.673 0-32 14.327-32 32s14.327 32 32 32v0h512v576c0 17.673-14.327 32-32 32v0zM642.012 368.25c0-0.001 0-0.001 0-0.002 0-8.974-7.274-16.248-16.248-16.248-0.001 0-0.003 0-0.004 0h-227.52c-0.001 0-0.003 0-0.004 0-8.974 0-16.248 7.274-16.248 16.248 0 0.001 0 0.001 0 0.002v0 30.918c0.002 11.475 5.947 21.561 14.924 27.348l0.128 0.077 49.947 31.773-4.711 37.672c-11.313 5.176-20.058 14.331-24.579 25.633l-0.113 0.319-3.48 10.437c-0.96 2.477-1.516 5.344-1.516 8.341 0 4.42 1.21 8.558 3.316 12.1l-0.060-0.109v58.58c0 53.105 43.050 96.154 96.154 96.154s96.154-43.050 96.154-96.154v-58.578c2.046-3.433 3.256-7.571 3.256-11.991 0-2.997-0.556-5.864-1.571-8.503l0.055 0.162-3.48-10.437c-4.633-11.621-13.379-20.776-24.396-25.831l-0.295-0.121-4.71-37.672 49.947-31.773c9.106-5.864 15.051-15.95 15.053-27.425v0zM992 320v-96c0-17.673-14.327-32-32-32v0h-64v160h64c17.673 0 32-14.327 32-32v0zM992 544v-96c0-17.673-14.327-32-32-32v0h-64v160h64c17.673 0 32-14.327 32-32v0zM992 768v-96c0-17.673-14.327-32-32-32v0h-64v160h64c17.673 0 32-14.327 32-32v0z" />
-<glyph unicode="&#xe90c;" glyph-name="apps" d="M608 256v-128c0-17.673-14.327-32-32-32v0h-128c-17.673 0-32 14.327-32 32v0 128c0 17.673 14.327 32 32 32v0h128c17.673 0 32-14.327 32-32v0zM320 288h-128c-17.673 0-32-14.327-32-32v0-128c0-17.673 14.327-32 32-32v0h128c17.673 0 32 14.327 32 32v0 128c0 17.673-14.327 32-32 32v0zM320 544h-128c-17.673 0-32-14.327-32-32v0-128c0-17.673 14.327-32 32-32v0h128c17.673 0 32 14.327 32 32v0 128c0 17.673-14.327 32-32 32v0zM576 544h-128c-17.673 0-32-14.327-32-32v0-128c0-17.673 14.327-32 32-32v0h128c17.673 0 32 14.327 32 32v0 128c0 17.673-14.327 32-32 32v0zM320 800h-128c-17.673 0-32-14.327-32-32v0-128c0-17.673 14.327-32 32-32v0h128c17.673 0 32 14.327 32 32v0 128c0 17.673-14.327 32-32 32v0zM832 800h-128c-17.673 0-32-14.327-32-32v0-128c0-17.673 14.327-32 32-32v0h128c17.673 0 32 14.327 32 32v0 128c0 17.673-14.327 32-32 32v0zM832 544h-128c-17.673 0-32-14.327-32-32v0-128c0-17.673 14.327-32 32-32v0h128c17.673 0 32 14.327 32 32v0 128c0 17.673-14.327 32-32 32v0zM832 288h-128c-17.673 0-32-14.327-32-32v0-128c0-17.673 14.327-32 32-32v0h128c17.673 0 32 14.327 32 32v0 128c0 17.673-14.327 32-32 32v0zM576 800h-128c-17.673 0-32-14.327-32-32v0-128c0-17.673 14.327-32 32-32v0h128c17.673 0 32 14.327 32 32v0 128c0 17.673-14.327 32-32 32v0z" />
-<glyph unicode="&#xe90d;" glyph-name="archive" d="M382.656 229.376v-65.376h258.736v65.376zM25.92 276.432h972.224v-340.432h-972.224zM377.248 654.976v-65.36h258.704v65.36zM25.92 698.56h972.224v-354.064h-85.849l-28.506 178.992-614.892-178.992h-242.976zM230.155 960h544.695l183.054-160.745-0.594-35.335h-890.554l-3.332 36.015z" />
-<glyph unicode="&#xe90e;" glyph-name="calendar1" d="M559.767 183.959h125.060v-121.123h-125.060zM365.241 183.959h125.012v-121.123h-125.012zM170.715 183.959h125.060v-121.123h-125.060zM744.356 374.453h125.059v-121.075h-125.059zM559.767 374.453h125.060v-121.075h-125.060zM365.241 374.453h125.012v-121.075h-125.012zM170.715 374.453h125.060v-121.075h-125.060zM744.356 568.979h125.059v-121.075h-125.059zM549.83 568.979h125.059v-121.075h-125.059zM355.304 568.979h125.060v-121.075h-125.060zM92.933 696.021v-702.974h838.384v702.974zM35.766 960h952.709v-1024.144h-952.709z" />
-<glyph unicode="&#xe90f;" glyph-name="code" d="M684.251 763.073l339.893-251.789v-131.2l-339.893-250.662v136.459l222.52 178.772v2.121l-222.52 178.783zM339.941 763.073v-136.519l-222.478-178.771v-2.063l222.478-178.84v-137.458l-339.941 251.719v131.21zM543.108 906.232l92.079-15.94-155.219-900.571-92.020 15.881z" />
-<glyph unicode="&#xe910;" glyph-name="coin" d="M532.288 652.47c-50.624 0-90.208-20.802-118.912-62.404-17.152-24.802-28.96-53.923-35.264-87.365h-58.432l-11.6-39.364h65.776c-0.528-6.719-0.784-13.6-0.784-20.482 0-7.68 0.256-15.521 0.784-23.041h-54.176l-11.6-39.043h69.504c7.088-48.161 23.488-85.765 48.88-112.486 26.96-28.642 60.24-42.723 99.52-42.723 46.096 0 82.4 17.28 109.344 52.163 22.64 28.963 36 64.645 40.048 107.206h-44.88c-4.768-26.72-11.536-48.003-21.136-64.643-17.616-31.043-43.856-46.563-77.84-46.563-37.024 0-64.752 14.722-83.12 44.163-11.36 17.761-19.152 38.563-23.664 62.565h144.304l11.872 39.362h-160.24c-0.256 4.16-0.256 8.96-0.256 13.761 0 10.401 0.256 20.482 1.024 29.762h147.872l11.6 39.364h-153.92c5.024 24.32 13.088 44.321 24.432 59.844 20.64 28.002 47.856 42.083 81.392 42.083 27.408 0 48.8-7.522 63.968-22.882 15.344-15.040 25.408-36.002 30.432-61.924h45.136c-2.768 34.242-15.856 64.963-39.792 92.166-23.728 26.881-57.2 40.483-100.272 40.483zM512.048 822.4c206.688 0 374.384-167.69 374.384-374.424s-167.696-374.424-374.384-374.424c-206.768 0-374.464 167.69-374.464 374.424s167.392 374.424 374.464 374.424zM512.064 909.28c-254.4 0-461.376-206.88-461.376-461.28s206.976-461.28 461.376-461.28c254.336 0 461.248 206.88 461.248 461.28s-206.912 461.28-461.248 461.28zM512.064 960c282.272 0 511.936-229.6 511.936-512 0-282.24-229.664-512-511.936-512-282.368 0-512.064 229.76-512.064 512 0 282.4 229.696 512 512.064 512z" />
-<glyph unicode="&#xe911;" glyph-name="company" d="M575.675 131.977v-163.575h59.362v163.575zM483.014 131.977v-163.575h59.362v163.575zM391.839 131.977v-163.575h59.345v163.575zM575.675 330.29v-163.575h59.362v163.575zM483.014 330.29v-163.575h59.362v163.575zM391.839 330.29v-163.575h59.345v163.575zM349.372 372.282h328.131v-436.233h-328.131zM345.5 435.484h332.967v-34.738h-332.967zM530.055 549.485v-68.038h57.907v68.038zM438.145 549.485v-68.038h57.907v68.038zM530.79 652.277v-68.038h57.907v68.038zM438.88 652.277v-68.038h57.907v68.038zM403.407 678.682h220.028v-218.574h-220.028zM506.673 960h13.496v-190.111h69.476v-34.754h46.355v-23.153h-244.162v23.153h46.306v34.754h68.528z" />
-<glyph unicode="&#xe912;" glyph-name="cube1" d="M160 621.883l320-192.008v-351.992l-304.469 182.68c-9.368 5.696-15.53 15.847-15.531 27.437v0zM528.469 859.437c-4.703 2.857-10.388 4.547-16.469 4.547s-11.766-1.691-16.612-4.628l0.143 0.080-303.527-182.117 319.996-192 319.996 192zM544 429.875v-351.992l304.469 182.68c9.368 5.696 15.53 15.847 15.531 27.437v0 333.883z" />
-<glyph unicode="&#xe913;" glyph-name="cubelight1" d="M862.891 648.313c-0.42 1.193-0.819 2.148-1.264 3.077l0.080-0.186c-0.606 1.84-1.273 3.397-2.054 4.885l0.084-0.175c-2.136 2.898-3.775 5.032-5.443 7.141l0.447-0.586c-0.89 0.795-1.858 1.567-2.869 2.283l-0.102 0.069c-0.991 0.903-2.067 1.762-3.198 2.549l-0.103 0.068-320 192c-4.703 2.857-10.388 4.547-16.469 4.547s-11.766-1.691-16.612-4.628l0.143 0.080-320-192c-1.226-0.854-2.295-1.709-3.306-2.626l0.027 0.024c-1.121-0.791-2.097-1.571-3.025-2.402l0.031 0.027c-0.962-1.071-1.874-2.241-2.701-3.472l-0.072-0.114c-0.744-0.875-1.474-1.84-2.148-2.846l-0.072-0.115c-0.675-1.276-1.326-2.795-1.858-4.368l-0.066-0.226c-0.389-1.024-0.947-1.961-1.232-3.016-0.699-2.49-1.103-5.349-1.107-8.302v-352.002c0.001-11.591 6.163-21.742 15.39-27.357l0.141-0.080 320.688-192.406c1.479-0.783 3.216-1.505 5.024-2.066l0.221-0.059c0.76-0.266 1.461-0.704 2.232-0.906 2.489-0.714 5.349-1.125 8.304-1.125s5.815 0.411 8.524 1.178l-0.22-0.053c0.772 0.203 1.472 0.64 2.232 0.906 2.028 0.62 3.765 1.342 5.415 2.207l-0.171-0.082 0.34 0.258 0.348 0.148 320 192c9.368 5.695 15.531 15.847 15.532 27.437v0 352c-0.004 2.958-0.408 5.821-1.163 8.538l0.053-0.225zM480 152.531l-256 153.594v277.344l256-153.594zM512 485.32l-257.807 154.68 257.807 154.688 257.807-154.688zM800 306.125l-256-153.594v277.344l256 153.594z" />
-<glyph unicode="&#xe914;" glyph-name="dashboard1" d="M797.156 159.875c-8.529-10.218-21.271-16.672-35.519-16.672-14.515 0-27.465 6.697-35.93 17.171l-0.068 0.087c-3.873 1.648-7.184 3.885-9.987 6.638l-67.901 67.901c-5.79 5.79-9.372 13.789-9.372 22.625 0 17.671 14.325 31.997 31.997 31.997 8.836 0 16.835-3.581 22.625-9.372v0l43.26-43.258c32.994 40.283 55.204 90.578 61.549 145.7l0.122 1.308h-61.932c-17.673 0-32 14.327-32 32s14.327 32 32 32v0h61.98c-0.262 2.437-0.252 4.84-0.574 7.281-7.523 53.851-29.185 101.615-61.077 140.704l0.405-0.512-43.703-43.723c-5.79-5.79-13.789-9.372-22.625-9.372-17.671 0-31.997 14.325-31.997 31.997 0 8.836 3.581 16.835 9.372 22.625l43.729 43.75c-40.045 32.607-89.888 54.662-144.495 61.243l-1.359 0.133c-0.555 0.064-1.102 0.043-1.656 0.101v-62.228c0-17.673-14.327-32-32-32s-32 14.327-32 32v0 62.14c-56.57-6.349-107.037-28.47-148.016-61.804l0.52 0.41 43.746-43.746c5.754-5.74 9.32-13.67 9.342-22.433v-0.004l165.252-120.793c13.687-10.088 22.469-26.147 22.469-44.256 0-30.276-24.544-54.82-54.82-54.82-18.11 0-34.169 8.782-44.151 22.32l-0.106 0.151-120.787 165.242c-8.77 0.028-16.703 3.594-22.449 9.344l-43.724 43.726c-32.699-40.559-54.775-90.956-61.278-146.12l-0.13-1.357h62.133c17.673 0 32-14.327 32-32s-14.327-32-32-32v0h-61.984c6.676-56.414 28.847-106.679 62.085-147.591l-0.416 0.528 43.313 43.312c5.79 5.79 13.789 9.372 22.625 9.372 17.671 0 31.997-14.325 31.997-31.997 0-8.836-3.581-16.835-9.372-22.625v0l-67.905-67.906c-2.759-2.694-6.015-4.893-9.616-6.445l-0.206-0.079c-8.543-10.61-21.531-17.341-36.092-17.341-14.245 0-26.985 6.443-35.465 16.573l-0.059 0.072c-61.126 67.675-98.527 157.799-98.527 256.658 0 211.831 171.723 383.555 383.555 383.555 15.672 0 31.124-0.94 46.303-2.766l-1.83 0.179c192.044-22.638 339.606-184.452 339.606-380.731 0-98.991-37.534-189.216-99.146-257.219l0.29 0.325z" />
-<glyph unicode="&#xe915;" glyph-name="datarefresh" d="M56.046 365.538h300.061c-16.969-43.564-26.759-90.717-26.759-140.317 0-33.611 4.732-66.080 12.89-97.080h-286.192c-26.596 0-48.134 21.537-48.134 48.132v140.97c0 26.758 21.538 48.295 48.134 48.295zM720.679 512.952c3.12 0.082 6.26 0.082 9.442 0h0.489c39.969-0.326 77.818-8.81 112.24-23.984l1.142-0.653c101.636-45.194 172.113-147.492 170.971-265.78-1.631-158.913-131.654-286.501-290.553-284.869-123.987 1.305-228.723 80.925-267.876 191.218l102.942 17.947c28.876-62.978 92.011-107.030 165.914-107.846 101.963-0.979 185.327 80.925 186.306 182.897 1.142 101.809-80.754 185.345-182.717 186.323-8.646 0-17.13-0.653-25.45-1.632l-0.163 0.653c-27.408-3.589-52.857-13.216-75.045-27.736l35.401-33.447c2.121-1.958 2.936-5.058 1.794-7.668-0.979-2.774-3.426-4.568-6.362-4.732l-162.814-8.647c-2.121 0-3.915 0.979-5.384 2.447-1.468 1.632-2.121 3.753-1.631 6.037l12.236 68.036 17.619 96.262c0.489 2.937 2.61 5.221 5.384 5.71 2.936 0.653 5.873-0.489 7.504-2.937l28.223-41.441c39.154 28.226 85.649 46.499 136.059 52.047 0.653 0.163 1.305 0.163 1.958 0.163 4.405 0.489 8.646 0.816 13.051 1.142 3.1 0.245 6.199 0.408 9.319 0.489zM56.036 665.378h674.698c26.59 0 48.285-21.538 48.285-48.294v-13.217c-21.206 3.589-42.903 5.871-65.088 5.871-138.006 0-258.558-72.767-326.42-181.755h-331.476c-26.59 0-48.124 21.538-48.124 48.131v140.97c0 26.756 21.534 48.294 48.124 48.294zM149.834 895.923c-30.179 0-54.811-24.457-54.811-54.62s24.632-54.783 54.811-54.783c30.179 0 54.648 24.62 54.648 54.783s-24.469 54.62-54.648 54.62zM56.035 960h674.699c26.59 0 48.286-21.685 48.286-48.261v-141.034c0-26.576-21.696-48.098-48.286-48.098h-674.699c-26.59 0-48.123 21.522-48.123 48.098v141.034c0 26.576 21.533 48.261 48.123 48.261z" />
-<glyph unicode="&#xe916;" glyph-name="documentsave" d="M345.584 354.72v-202.88h345.36v202.88zM533.952 557.568h56.752v-130.416h-56.752zM286.432 586.544h114.104v-186.55h231.83v186.55h35.629l82.102-82.093v-381.571h-463.664zM194.583 882.635v-869.291h634.898v674.562h-201.145v194.729zM121.52 960h548.147l232.877-227.99v-796.010h-781.024z" />
-<glyph unicode="&#xe917;" glyph-name="documents" d="M301.347 410.718v-155.408h72.277v82.877h267.51v-82.877h72.62v155.408zM74.104 686.18v-82.471h866.943v82.471l30.484-30.67c30.546-30.641 52.389-38.879 40.118-103.597-12.236-64.501-71.375-418.254-80.171-466.116-9.667-52.479-63.044-51.798-63.044-51.798h-721.747c0 0-53.375-0.68-63.009 51.798-8.796 47.863-67.967 401.616-80.204 466.116-12.266 64.717 9.571 72.956 40.115 103.597zM146.677 759.102h721.749v-103.59h-721.749zM249.767 862.691h515.569v-51.795h-515.569z" />
-<glyph unicode="&#xe918;" glyph-name="download" d="M896 224v-128c0-17.673-14.327-32-32-32v0h-704c-17.673 0-32 14.327-32 32v0 128c0 17.673 14.327 32 32 32v0h704c17.673 0 32-14.327 32-32v0zM485.961 340.455c5.876-8.154 15.345-13.4 26.039-13.4s20.163 5.246 25.974 13.305l0.065 0.095 177.818 248.945c3.727 5.164 5.961 11.621 5.961 18.6 0 17.673-14.327 32-32 32h-81.818v192c0 17.673-14.327 32-32 32v0h-128c-17.673 0-32-14.327-32-32v0-192h-81.818c-17.673 0-32-14.327-32-32 0-6.978 2.234-13.435 6.025-18.694l-0.065 0.095z" />
-<glyph unicode="&#xe919;" glyph-name="duplicate1" d="M736 464v144l160-160h-144c-8.837 0-16 7.163-16 16v0zM352 640v176c0 8.837-7.163 16-16 16v0h-144c-17.673 0-32-14.327-32-32v0-480c0-17.673 14.327-32 32-32v0h224v288c0.116 11.518 2.262 22.501 6.096 32.655l-0.217-0.655h-37.879c-17.673 0-32 14.327-32 32v0zM672 416v176c0 8.837-7.163 16-16 16v0h-144c-17.673 0-32-14.327-32-32v0-480c0-17.673 14.327-32 32-32v0h352c17.673 0 32 14.327 32 32v0 272c0 8.837-7.163 16-16 16v0h-176c-17.673 0-32 14.327-32 32v0zM416 832v-144c0-8.837 7.163-16 16-16v0h144z" />
-<glyph unicode="&#xe91a;" glyph-name="edit" d="M150.64 131.024l196.688-112.934-177.876-82.090zM440.518 757.632l319.786-183.541-245.536-427.755-18.294 54.689-93.831 9.688-15.939 58.789-92.020 3.171-25.749 64.455-73.896-7.251zM594.229 959.985c8.817 0.212 17.429-1.772 25.181-6.213l226.455-129.975c27.498-15.797 33.665-56.711 13.811-91.334l-26.999-47.086-326.116 187.209 26.999 47.086c14.27 24.886 38.139 39.772 60.67 40.314z" />
-<glyph unicode="&#xe91b;" glyph-name="excel" d="M789.441 241.11v-102.216h168.092v102.216zM789.441 373.99v-102.216h168.092v102.216zM789.441 506.871v-102.216h168.092v102.216zM345.376 635.776l-51.108-127.204-43.156 115.844h-69.282l70.42-166.952-78.365-165.819h68.144l51.108 118.12 51.108-129.471h74.959l-86.318 182.848 80.635 172.633zM789.441 639.751v-102.216h168.092v102.216zM789.441 772.631v-102.216h168.092v102.216zM608.293 830.554h402.053c7.527 0 13.629-6.102 13.629-13.629v-729.139c0-7.533-6.102-13.625-13.629-13.625h-402.053v64.733h149.918v102.216h-149.918v30.665h149.918v102.216h-149.918v30.665h149.918v102.216h-149.918v30.663h149.918v102.216h-149.918v30.665h149.918v102.216h-149.918zM589.444 943.748v-991.49l-589.444 102.216v787.058z" />
-<glyph unicode="&#xe91c;" glyph-name="expand" d="M139.462 308.298h744.932l-372.468-372.442zM511.926 960l372.468-372.442h-744.932z" />
-<glyph unicode="&#xe91d;" glyph-name="file" d="M640 608h176c8.837 0 16-7.163 16-16v0-496c0-17.673-14.327-32-32-32v0h-544c-17.673 0-32 14.327-32 32v0 704c0 17.673 14.327 32 32 32v0h336c8.837 0 16-7.163 16-16v0-176c0-17.673 14.327-32 32-32v0zM688 672h144l-160 160v-144c0-8.837 7.163-16 16-16v0z" />
-<glyph unicode="&#xe91e;" glyph-name="Floppy" d="M109.804 141.178c-10.916 0-19.935-8.978-19.935-19.968v-65.146c0-10.907 9.020-19.97 19.935-19.97h65.315c10.978 0 19.894 9.062 19.894 19.97v65.146c0 10.99-8.917 19.968-19.894 19.968zM589.312 869.072h146.912v-222.912h-146.912zM213.307 919.544v-250.771c0-43.802 35.811-79.718 79.687-79.718h427.524c43.875 0 79.77 35.917 79.77 79.718v250.771zM138.578 960h733.023l144.751-144.697v-793.092l-21.958-31.824c-23.251-35.272-63.021-54.387-109-54.387h-746.815c-72.023 0-130.898 58.958-130.898 130.898v762.168c0 72.112 58.875 130.935 130.898 130.935z" />
-<glyph unicode="&#xe91f;" glyph-name="folder" d="M193.912 591.524l-65.912-263.649v408.125c0.001 35.346 28.654 63.999 64 64h133.49c0 0 0.001 0 0.001 0 17.673 0 33.673-7.164 45.255-18.746l45.254-45.254h416c35.346-0.001 63.999-28.654 64-64v0-32h-640c-0.001 0-0.001 0-0.002 0-29.833 0-54.898-20.413-61.99-48.033l-0.097-0.444zM942.031 576h-636.063c-0.001 0-0.001 0-0.002 0-29.833 0-54.897-20.413-61.989-48.033l-0.097-0.444-115.881-463.524h768l108.119 432.476c1.214 4.66 1.911 10.011 1.911 15.524 0 35.346-28.653 63.999-63.999 64v0z" />
-<glyph unicode="&#xe920;" glyph-name="folder_add" d="M785.553 312.399v-95.808h-95.774v-57.011h95.774v-95.791h57.045v95.791h95.774v57.011h-95.774v95.808zM809.218 404.602c118.6 0 214.747-96.162 214.747-214.765s-96.148-214.765-214.747-214.765c-118.603 0-214.749 96.162-214.749 214.765s96.146 214.765 214.749 214.765zM81.172 920.86h285.817c44.839 0 81.184-36.345 81.184-81.163v-38.919h365.342c44.838 0 81.184-36.366 81.184-81.182v-253.204l-6.333 1.888c-25.165 7.163-51.718 10.999-79.149 10.999-159.599 0-289.459-129.845-289.459-289.441 0-24.937 3.17-49.147 9.129-72.249l1.406-5.182h-449.12c-44.828 0-81.174 36.346-81.174 81.185v526.004c0 1.401 0.035 2.793 0.106 4.176l0.068 0.898-0.068 0.899c-0.070 1.384-0.106 2.777-0.106 4.178v109.951c0 44.817 36.345 81.163 81.172 81.163z" />
-<glyph unicode="&#xe921;" glyph-name="folder_delete" d="M688.355 220.883v-67.036h248.593v67.036zM809.218 404.602c118.6 0 214.747-96.162 214.747-214.765s-96.148-214.765-214.747-214.765c-118.6 0-214.749 96.162-214.749 214.765s96.149 214.765 214.749 214.765zM81.172 920.86h285.819c44.837 0 81.182-36.345 81.182-81.163v-38.919h365.342c44.838 0 81.184-36.366 81.184-81.182v-253.204l-6.333 1.888c-25.165 7.163-51.718 10.999-79.149 10.999-159.599 0-289.459-129.845-289.459-289.441 0-24.937 3.17-49.147 9.129-72.249l1.406-5.182h-449.12c-44.828 0-81.174 36.346-81.174 81.185v526.004c0 1.401 0.035 2.793 0.106 4.176l0.068 0.898-0.068 0.899c-0.070 1.384-0.106 2.777-0.106 4.178v109.951c0 44.817 36.345 81.163 81.172 81.163z" />
-<glyph unicode="&#xe922;" glyph-name="folder_find" d="M494.046 553.696c90.647 0 164.146-73.457 164.146-164.1 0-90.632-73.498-164.108-164.146-164.108-90.646 0-164.126 73.476-164.126 164.108 0 90.643 73.481 164.1 164.126 164.1zM494.046 602.144c-117.376 0-212.542-95.145-212.542-212.548 0-117.391 95.165-212.556 212.542-212.556 34.851 0 67.744 8.387 96.769 23.254l4.077 2.151 54.362-69.117h93.29l-89.772 114.911 2.001 2.255c32.294 37.28 51.834 85.909 51.834 139.102 0 117.403-95.168 212.548-212.562 212.548zM92.896 910.64h327.164c51.312 0 92.916-41.604 92.916-92.904v-44.536h418.106c51.315 0 92.918-41.615 92.918-92.907v-602.031c0-51.325-41.603-92.918-92.918-92.918h-838.185c-51.293 0-92.896 41.594-92.896 92.918v602.031c0 1.603 0.041 3.196 0.121 4.779l0.078 1.030-0.078 1.030c-0.080 1.584-0.121 3.178-0.121 4.782v125.822c0 51.299 41.603 92.904 92.896 92.904z" />
-<glyph unicode="&#xe923;" glyph-name="globe" d="M388.544 743.172c-28.448-28.809-51.452-63.073-67.291-101.070l-0.777-2.102h-63.865c33.945 44.926 78.421 80.17 129.848 102.371l2.085 0.801zM218.906 576h81.85c-6.347-28.27-10.618-61.247-11.874-94.995l-0.030-1.005h-95.229c3.656 35.474 12.605 67.979 26.088 98.006l-0.805-2.006zM218.906 320c-12.678 28.021-21.627 60.526-25.169 94.637l-0.115 1.363h95.228c1.286-34.754 5.557-67.731 12.582-99.676l-0.678 3.676zM256.611 256h63.865c16.616-40.099 39.619-74.362 68.1-103.205l-0.033 0.033c-53.511 23.002-97.988 58.245-131.347 102.364l-0.586 0.808zM480 158.068c-37.056 25.495-67.243 58.29-89.018 96.499l-0.752 1.432h89.77zM480 320h-114.076c-7.272 28.429-12.009 61.37-13.155 95.221l-0.021 0.779h127.252zM480 480h-127.252c1.166 34.63 5.904 67.571 13.864 99.232l-0.688-3.232h114.076zM480 640h-89.77c22.527 39.642 52.714 72.436 88.791 97.294l0.978 0.637zM767.389 640h-63.872c-16.622 40.103-39.631 74.369-68.118 103.214l0.032-0.033c53.521-23.001 98.007-58.249 131.372-102.374l0.586-0.808zM544 737.926c37.050-25.497 67.233-58.289 89.008-96.493l0.752-1.432h-89.76zM544 576h114.072c7.273-28.428 12.012-61.369 13.159-95.221l0.021-0.779h-127.252zM544 416h127.252c-1.168-34.631-5.906-67.572-13.868-99.232l0.688 3.232h-114.072zM544 158.074v97.926h89.76c-22.527-39.637-52.71-72.429-88.782-97.288l-0.978-0.637zM635.432 152.818c28.454 28.812 51.464 63.079 67.309 101.080l0.777 2.101h63.872c-33.951-44.933-78.436-80.181-129.873-102.381l-2.085-0.801zM805.096 320h-81.853c6.349 28.27 10.621 61.246 11.877 94.995l0.030 1.005h95.228c-3.655-35.474-12.603-67.979-26.086-98.006l0.805 2.006zM735.148 480c-1.285 34.754-5.558 67.73-12.585 99.674l0.678-3.674h81.853c12.678-28.021 21.625-60.526 25.165-94.638l0.115-1.362zM896 448c0 212.077-171.923 384-384 384s-384-171.923-384-384c0-212.077 171.923-384 384-384v0c212.077 0 384 171.923 384 384v0z" />
-<glyph unicode="&#xe924;" glyph-name="group" d="M823.502 288h-47.004c-2.992 0.083-5.847 0.358-8.641 0.815l0.368-0.050c-13.662 11.227-29.91 24.652-48.35 39.953l-4.238 3.531c-1.115 3.304-2.023 7.215-2.557 11.244l-0.035 0.326c0.527 2.031 1.156 4.008 1.612 6.070l16.094 73.688c19.613 16.339 34.884 37.23 44.269 61.083l0.356 1.026 8.906 24c5.094 12.059 8.054 26.079 8.054 40.791 0 25.917-9.187 49.689-24.482 68.236l0.147-0.183v48.945c10.060 2.878 21.614 4.533 33.555 4.533 69.839 0 126.455-56.616 126.455-126.455 0-0.547-0.003-1.092-0.010-1.637l0.001 0.083v-69.961c4.573-3.984 7.447-9.817 7.447-16.322 0-2.91-0.575-5.686-1.618-8.22l0.052 0.144-11.762-35.281c-5.295-13.384-16.081-23.612-29.505-28.040l-0.337-0.096-5.269-42.16c-4.084-31.766-30.958-56.062-63.506-56.062 0 0 0 0 0 0v0zM287.012 288.695c15.744 12.945 33.188 27.312 49.082 40.414l4.424 3.641c1.037 3.152 1.89 6.897 2.402 10.751l0.036 0.327c-0.527 2.020-1.162 4-1.612 6.048l-16.094 73.703c-19.595 16.329-34.856 37.204-44.238 61.037l-0.356 1.026-8.969 24.109c-5.079 12.041-8.030 26.039-8.030 40.727 0 25.918 9.19 49.69 24.489 68.235l-0.146-0.183v48.945c-10.060 2.878-21.614 4.533-33.555 4.533-69.839 0-126.455-56.616-126.455-126.455 0-0.547 0.003-1.092 0.010-1.637l-0.001 0.083v-69.961c-4.573-3.984-7.447-9.817-7.447-16.322 0-2.91 0.575-5.686 1.618-8.22l-0.052 0.144 11.762-35.281c5.295-13.384 16.081-23.612 29.505-28.040l0.337-0.096 5.269-42.16c4.084-31.766 30.958-56.062 63.506-56.062 0 0 0 0 0 0h47.004c2.735 0.090 5.326 0.34 7.866 0.742l-0.356-0.046zM1010.352 249.555l-70.819 49.571c-18.173-39.272-54.546-67.41-97.992-73.753l-0.693-0.083c14.011-17.84 22.585-40.532 22.921-65.213l0.001-0.076h144.23c8.837 0 16 7.163 16 16v0 47.34c-0.001 10.801-5.352 20.352-13.548 26.147l-0.1 0.067zM116.467 299.125l-70.819-49.571c-8.296-5.862-13.648-15.413-13.648-26.215v0-47.34c0-8.837 7.163-16 16-16v0h144.824c1.185 24.746 9.937 47.241 23.973 65.456l-0.201-0.272c-44.747 5.947-81.747 34.258-99.8 73.151l-0.329 0.791zM773.455 202.297c-13.924 10.547-58.512 47.348-94.453 77.188-29.443-33.897-72.541-55.268-120.636-55.484h-60.694c-48.237 0.222-91.415 21.695-120.684 55.531l-0.172 0.203c-36.762-30.304-82.34-67.828-94.272-77.437-16.096-10.821-26.545-28.963-26.545-49.546 0-0.114 0-0.228 0.001-0.343v0.018-40.426c0-8.837 7.163-16 16-16v0h512c8.837 0 16 7.163 16 16v0 40.426c0.088 1.147 0.139 2.484 0.139 3.833 0 19.598-10.626 36.714-26.43 45.902l-0.253 0.136zM340.633 507.977c8.558-20.091 23.145-36.239 41.462-46.535l0.481-0.249 21.307-97.656c9.736-43.507 48.024-75.536 93.792-75.536 0 0 0.001 0 0.001 0h60.648c0 0 0 0 0 0 45.768 0 84.055 32.028 93.671 74.895l0.121 0.64 21.307 97.656c18.799 10.544 33.386 26.693 41.706 46.16l0.237 0.624 8.96 24.047c2.746 5.341 4.356 11.654 4.356 18.343 0 16.707-10.042 31.068-24.42 37.377l-0.262 0.102v84.156c0 96-64 160-176 160s-176-64-176-160v-84.156c-14.639-6.411-24.682-20.772-24.682-37.479 0-6.689 1.61-13.001 4.463-18.572l-0.107 0.23z" />
-<glyph unicode="&#xe925;" glyph-name="home" d="M661.333 553.6v129.067h-64v-65.749l-74.304 73.685-0.043 1.024-266.283-264.96h84.629v-234.667h128v128h106.667v-128h128v234.667h85.333z" />
-<glyph unicode="&#xe926;" glyph-name="inbox" d="M816 800h-608c-44.164-0.048-79.952-35.836-80-79.995v-576.005c0.048-44.164 35.836-79.952 79.995-80h608.005c44.164 0.048 79.952 35.836 80 79.995v576.005c-0.048 44.164-35.836 79.952-79.995 80h-0.005zM800 384h-130.883c0 0 0 0-0.001 0-7.725 0-14.172-5.475-15.671-12.756l-0.018-0.103-26.856-134.281c-1.517-7.385-7.964-12.86-15.689-12.86 0 0 0 0-0.001 0h-197.766c0 0 0 0-0.001 0-7.725 0-14.172 5.475-15.671 12.756l-0.018 0.103-26.856 134.281c-1.517 7.385-7.964 12.86-15.689 12.86 0 0 0 0-0.001 0h-130.883v320h576z" />
-<glyph unicode="&#xe927;" glyph-name="library" d="M576 832h-160c-17.673 0-32-14.327-32-32v0-704c0-17.673 14.327-32 32-32v0h160c17.673 0 32 14.327 32 32v0 704c0 17.673-14.327 32-32 32v0zM544 144c0-8.837-7.163-16-16-16v0h-64c-8.837 0-16 7.163-16 16v0 32c0 8.837 7.163 16 16 16v0h64c8.837 0 16-7.163 16-16v0zM544 720c0-8.837-7.163-16-16-16v0h-64c-8.837 0-16 7.163-16 16v0 32c0 8.837 7.163 16 16 16v0h64c8.837 0 16-7.163 16-16v0zM865.174 814.101c-2.739 15.123-15.804 26.443-31.514 26.443-1.964 0-3.886-0.177-5.752-0.516l0.195 0.029-157.568-27.783c-15.123-2.739-26.443-15.804-26.443-31.514 0-1.964 0.177-3.886 0.516-5.752l-0.029 0.195 122.248-693.305c2.737-15.123 15.802-26.444 31.512-26.444 1.964 0 3.888 0.177 5.754 0.516l-0.195-0.029 157.568 27.783c15.123 2.737 26.443 15.802 26.443 31.511 0 1.964-0.177 3.888-0.516 5.754l0.029-0.195zM903.082 138.418l-63.029-11.113c-0.835-0.154-1.795-0.243-2.776-0.243-7.855 0-14.388 5.66-15.745 13.123l-0.015 0.098-5.556 31.514c-0.155 0.835-0.243 1.797-0.243 2.778 0 7.855 5.66 14.387 13.124 15.742l0.098 0.015 63.029 11.115c0.835 0.154 1.795 0.243 2.776 0.243 7.855 0 14.388-5.66 15.745-13.123l0.015-0.098 5.556-31.516c0.154-0.835 0.243-1.795 0.243-2.776 0-7.855-5.66-14.388-13.124-15.744l-0.098-0.015zM288 832h-160c-17.673 0-32-14.327-32-32v0-704c0-17.673 14.327-32 32-32v0h160c17.673 0 32 14.327 32 32v0 704c0 17.673-14.327 32-32 32v0zM256 144c0-8.837-7.163-16-16-16v0h-64c-8.837 0-16 7.163-16 16v0 32c0 8.837 7.163 16 16 16v0h64c8.837 0 16-7.163 16-16v0zM256 720c0-8.837-7.163-16-16-16v0h-64c-8.837 0-16 7.163-16 16v0 32c0 8.837 7.163 16 16 16v0h64c8.837 0 16-7.163 16-16v0z" />
-<glyph unicode="&#xe928;" glyph-name="license" d="M875.125 506.258l-204.547-148.578 77.998-240.192c0.65-1.932 1.025-4.157 1.025-6.47 0-11.561-9.372-20.932-20.932-20.932-0.003 0-0.006 0-0.009 0v0c-4.595 0.025-8.829 1.553-12.24 4.116l0.053-0.038-204.342 148.426-204.344-148.426c-3.358-2.525-7.592-4.053-12.182-4.078h-0.006c-0.002 0-0.004 0-0.006 0-11.562 0-20.934 9.373-20.934 20.934 0 2.312 0.375 4.536 1.067 6.616l-0.043-0.148 77.998 240.192-204.547 148.578c-5.239 3.837-8.603 9.966-8.603 16.88 0 11.522 9.34 20.862 20.862 20.862 0 0 0 0 0 0h252.793l78.1 240.5c2.803 8.438 10.625 14.417 19.843 14.417s17.040-5.978 19.8-14.27l0.042-0.147 78.099-240.5h252.793c11.521-0.003 20.859-9.343 20.859-20.864 0-6.913-3.362-13.041-8.54-16.837l-0.058-0.041z" />
-<glyph unicode="&#xe929;" glyph-name="list" d="M352 512v-128c0-17.673-14.327-32-32-32v0h-128c-17.673 0-32 14.327-32 32v0 128c0 17.673 14.327 32 32 32v0h128c17.673 0 32-14.327 32-32v0zM320 288h-128c-17.673 0-32-14.327-32-32v0-128c0-17.673 14.327-32 32-32v0h128c17.673 0 32 14.327 32 32v0 128c0 17.673-14.327 32-32 32v0zM320 800h-128c-17.673 0-32-14.327-32-32v0-128c0-17.673 14.327-32 32-32v0h128c17.673 0 32 14.327 32 32v0 128c0 17.673-14.327 32-32 32v0zM864 608h-416c-17.673 0-32-14.327-32-32v0-32c0-17.673 14.327-32 32-32v0h416c17.673 0 32 14.327 32 32v0 32c0 17.673-14.327 32-32 32v0zM864 800h-416c-17.673 0-32-14.327-32-32v0-32c0-17.673 14.327-32 32-32v0h416c17.673 0 32 14.327 32 32v0 32c0 17.673-14.327 32-32 32v0zM864 224h-416c-17.673 0-32-14.327-32-32v0-32c0-17.673 14.327-32 32-32v0h416c17.673 0 32 14.327 32 32v0 32c0 17.673-14.327 32-32 32v0zM864 416h-416c-17.673 0-32-14.327-32-32v0-32c0-17.673 14.327-32 32-32v0h416c17.673 0 32 14.327 32 32v0 32c0 17.673-14.327 32-32 32v0z" />
-<glyph unicode="&#xe92a;" glyph-name="log" d="M484.605 523.186c-29.216 0-46.245-27.795-46.245-64.947 0-37.435 17.56-63.807 46.528-63.807 29.216 0 45.967 27.778 45.967 64.933 0 34.325-16.468 63.821-46.25 63.821zM264.531 554.432h43.398v-154.911h76.017v-36.306h-119.415zM708.043 556.399c24.685 0 43.682-4.829 53.027-9.343l-9.062-34.624c-10.53 4.514-23.562 8.203-44.529 8.203-36.031 0-63.308-20.39-63.308-61.828 0-39.451 24.721-62.687 60.152-62.687 9.969 0 17.908 1.111 21.279 2.846v40h-29.465v33.734h71.179v-100.705c-13.341-4.546-38.556-10.797-63.804-10.797-34.906 0-60.152 8.813-77.745 25.86-17.593 16.421-27.216 41.407-26.936 69.469 0.281 63.561 46.528 99.872 109.211 99.872zM485.733 557.527c58.746 0 90.774-43.996 90.774-96.728 0-62.681-37.999-100.729-93.901-100.729-56.716 0-89.901 42.842-89.901 97.306 0 57.313 36.562 100.15 93.028 100.15zM192.874 899.427v-898.747h449.428l-0.689 224.562 185.203-0.187v674.372zM132.35 960h759.397v-807.847l-193.105-216.081h-566.292z" />
-<glyph unicode="&#xe92b;" glyph-name="logout" d="M802.658 802.445l-320 26.668c-0.736 0.061-1.594 0.096-2.459 0.096-16.632 0-30.273-12.806-31.6-29.096l-0.007-0.113h-0.592v-672h0.592c1.335-16.401 14.974-29.205 31.604-29.205 0.867 0 1.725 0.035 2.575 0.103l-0.112-0.007 320 26.664c16.491 1.418 29.341 15.154 29.342 31.891v0 613.109c0 0 0 0.001 0 0.001 0 16.737-12.85 30.474-29.223 31.881l-0.119 0.008zM544 416c-17.673 0-32 14.327-32 32s14.327 32 32 32c17.673 0 32-14.327 32-32v0c0-17.673-14.327-32-32-32v0zM256 800h128v-64h-128v-544h128v-64h-128c-35.327 0.047-63.953 28.673-64 63.995v544.005c0.047 35.327 28.673 63.953 63.995 64h0.005z" />
-<glyph unicode="&#xe92c;" glyph-name="menu" d="M870.4 755.2v-51.2c0-28.277-22.923-51.2-51.2-51.2v0h-614.4c-28.277 0-51.2 22.923-51.2 51.2v0 51.2c0 28.277 22.923 51.2 51.2 51.2v0h614.4c28.277 0 51.2-22.923 51.2-51.2v0zM819.2 550.4h-614.4c-28.277 0-51.2-22.923-51.2-51.2v0-51.2c0-28.277 22.923-51.2 51.2-51.2v0h614.4c28.277 0 51.2 22.923 51.2 51.2v0 51.2c0 28.277-22.923 51.2-51.2 51.2v0zM819.2 294.4h-614.4c-28.277 0-51.2-22.923-51.2-51.2v0-51.2c0-28.277 22.923-51.2 51.2-51.2v0h614.4c28.277 0 51.2 22.923 51.2 51.2v0 51.2c0 28.277-22.923 51.2-51.2 51.2v0z" />
-<glyph unicode="&#xe92d;" glyph-name="newspaper" d="M400 512h352c8.837 0 16 7.163 16 16v0 128c0 8.837-7.163 16-16 16v0h-352c-8.837 0-16-7.163-16-16v0-128c0-8.837 7.163-16 16-16v0zM751.998 448h-128c-8.837 0-16-7.163-16-16v0-32c0-8.837 7.163-16 16-16v0h128c8.837 0 16 7.163 16 16v0 32c0 8.837-7.163 16-16 16v0zM751.998 320h-128c-8.837 0-16-7.163-16-16v0-32c0-8.837 7.163-16 16-16v0h128c8.837 0 16 7.163 16 16v0 32c0 8.837-7.163 16-16 16v0zM399.998 256h128c8.837 0 16 7.163 16 16v0 32c0 8.837-7.163 16-16 16v0h-128c-8.837 0-16-7.163-16-16v0-32c0-8.837 7.163-16 16-16v0zM864 800h-576c-0.005 0-0.012 0-0.018 0-17.663 0-31.982-14.319-31.982-31.982 0-0.006 0-0.013 0-0.019v0.001-544c0-17.673-14.327-32-32-32s-32 14.327-32 32v0 544c-35.327-0.047-63.953-28.673-64-63.995v-480.005c0.064-52.972 42.971-95.901 95.928-96h576.071c52.995 0.060 95.94 43.005 96 95.994v544.006c0 0.005 0 0.012 0 0.018 0 17.663-14.319 31.982-31.982 31.982-0.006 0-0.013 0-0.019 0h0.001zM832 224c-0.012-17.668-14.332-31.988-31.999-32h-485.47c3.465 9.51 5.469 20.489 5.469 31.935 0 0.023 0 0.045 0 0.068v-0.004 512h512zM399.998 384h128c8.837 0 16 7.163 16 16v0 32c0 8.837-7.163 16-16 16v0h-128c-8.837 0-16-7.163-16-16v0-32c0-8.837 7.163-16 16-16v0z" />
-<glyph unicode="&#xe92e;" glyph-name="numberlist" d="M448 544v32c0 17.673 14.327 32 32 32v0h256c17.673 0 32-14.327 32-32v0-32c0-17.673-14.327-32-32-32v0h-256c-17.673 0-32 14.327-32 32v0zM736 224h-256c-17.673 0-32-14.327-32-32v0-32c0-17.673 14.327-32 32-32v0h256c17.673 0 32 14.327 32 32v0 32c0 17.673-14.327 32-32 32v0zM864 416h-384c-17.673 0-32-14.327-32-32v0-32c0-17.673 14.327-32 32-32v0h384c17.673 0 32 14.327 32 32v0 32c0 17.673-14.327 32-32 32v0zM864 800h-384c-17.673 0-32-14.327-32-32v0-32c0-17.673 14.327-32 32-32v0h384c17.673 0 32 14.327 32 32v0 32c0 17.673-14.327 32-32 32v0zM320 224h-78.375c5.243 9.382 13.594 16.497 23.633 20.032l0.305 0.093c18.844 6.72 76.156 27.094 76.156 85.031-0.068 47.946-38.926 86.794-86.87 86.844h-0.005c-32.111-0.153-60.674-15.208-79.15-38.599l-0.163-0.214c-4.685-5.53-7.533-12.745-7.533-20.626 0-17.674 14.328-32.002 32.002-32.002 9.794 0 18.56 4.399 24.43 11.33l0.039 0.047c6.893 9.542 17.877 15.76 30.328 16.063l0.047 0.001c12.621-0.003 22.854-10.225 22.875-22.842v-0.002c0-3.812 0-12.781-33.625-24.719-43.636-17.22-73.949-59.019-73.949-107.899 0-2.19 0.061-4.366 0.181-6.526l-0.013 0.3c0.935-16.931 14.889-30.307 31.968-30.313h117.719c17.673 0 32 14.327 32 32s-14.327 32-32 32v0zM214.624 681.376l9.376 9.374v-114.75c0-17.673 14.327-32 32-32s32 14.327 32 32v0 192c0 0 0 0 0 0 0 17.672-14.326 31.997-31.997 31.997-8.837 0-16.836-3.582-22.627-9.373l-64-64c-5.668-5.769-9.168-13.685-9.168-22.419 0-17.671 14.325-31.996 31.996-31.996 8.734 0 16.65 3.499 22.424 9.172l-0.005-0.005z" />
-<glyph unicode="&#xe92f;" glyph-name="package" d="M734.549 503.648l-380.418 258.141 126.775 76.055 383.994-255.984zM293.65 725.5l-132.754-79.641 384.006-256 129.17 77.5zM128 334.875l384-255.992v255.992l-384 256zM768 449.078v-86.93c0-0.002 0-0.003 0-0.005 0-5.797-3.082-10.875-7.697-13.683l-0.071-0.040-32-19.195c-2.35-1.432-5.192-2.28-8.232-2.28-8.836 0-15.999 7.163-16 15.999v0 67.744l-128-76.804v-255.984l320 191.976v256.007z" />
-<glyph unicode="&#xe930;" glyph-name="dataset" d="M96.734 228.331h830.597c32.681 0 59.317-26.584 59.317-59.329v-173.575c0-32.777-26.635-59.378-59.317-59.378h-830.597c-32.845 0-59.317 26.602-59.317 59.378v173.575c0 32.745 26.472 59.329 59.317 59.329zM96.736 597.425h830.597c32.681 0 59.317-26.535 59.317-59.28v-173.575c0-32.728-26.635-59.345-59.317-59.345h-830.597c-32.845 0-59.317 26.617-59.317 59.345v173.575c0 32.744 26.472 59.28 59.317 59.28zM212.102 881.309c-37.093 0-67.324-30.212-67.324-67.384s30.23-67.368 67.324-67.368c37.093 0 67.324 30.196 67.324 67.368s-30.23 67.384-67.324 67.384zM96.736 960h830.597c32.681 0 59.317-26.552 59.317-59.345v-173.559c0-32.728-26.635-59.296-59.317-59.296h-830.597c-32.845 0-59.317 26.568-59.317 59.296v173.559c0 32.794 26.472 59.345 59.317 59.345z" />
-<glyph unicode="&#xe931;" glyph-name="check" d="M916.971 762.262c33.615 0 67.23 0 100.862 0 6.16-8.589-24.368-19.371-41.255-30.652-249.52-166.853-456.719-384.262-641.873-597.871-113.945 102.664-214.918 213.992-334.704 312.729 20.277 21.201 46.237 38.582 77.926 52.13 55.357-29.907 102.485-57.26 169.397-89.382 9.391-4.491 72.785-33.537 78.197-33.26 12.033 0.639 44.327 38.741 64.191 55.175 143.868 119.108 350.573 253.499 527.26 331.131z" />
-<glyph unicode="&#xe932;" glyph-name="pay" d="M290.893 44.681h341.090v-108.598h-341.090zM654.474 488.13c21.302 0.828 42.039-10.909 51.67-31.4l71.345-151.834c10.431-22.197 4.638-47.869-12.567-63.604l-3.157-2.611-124.45-130.921-0.691-1.528c-7.41-15.376-23.143-25.987-41.351-25.987h-261.553c-25.332 0-45.875 20.541-45.875 45.875v160.864l124.446-124.443c15.624-15.621 36.383-24.211 58.458-24.211 22.076 0 42.833 8.591 58.436 24.211l111.965 111.961v-31.040l29.568 27.14-65.221 138.828c-12.864 27.341-1.1 59.903 26.241 72.766l1.639 0.777c6.836 3.21 13.999 4.882 21.1 5.158zM501.391 542.007l-50.752-50.734c19.938-13.614 36.101-14.219 48.485-1.833 10.359 10.358 11.115 27.88 2.267 52.567zM546.232 658.468c-8.654 0.045-16.055-3.021-22.205-9.17-6.496-6.52-10.034-13.596-10.618-21.278s1.511-18.126 6.281-31.311l52.587 52.588c-8.72 6.085-17.414 9.128-26.045 9.17zM620.373 697.396l18.193-18.19-23.198-23.197c20.196-21.254 32.044-38.023 35.541-50.301l-28.204-28.205c-3.732 17.782-14.24 35.865-31.568 54.251l-60.765-60.765c12.732-30.643 18.881-54.186 18.45-70.629-0.454-16.42-5.999-29.95-16.615-40.567-12.926-12.928-28.7-18.754-47.367-17.479-18.664 1.273-38.063 9.581-58.175 24.965l-28.612-28.591-18.19 18.192 27.535 27.534c-21.882 21.902-35.928 43.503-42.078 64.759l29.387 29.39c1.362-10.681 5.611-22.744 12.777-36.21 7.141-13.487 15.19-24.708 24.166-33.684l58.651 58.651c-13.702 32.865-19.938 56.755-18.708 71.685 1.23 14.954 7.358 27.947 18.45 39.015 13.077 13.097 29.626 19.183 49.609 18.255 19.981-0.925 38.993-8.459 57.010-22.592zM548.714 960c11.758 0 23.518-4.488 32.494-13.464l307.536-307.538c17.955-17.954 17.955-47.041 0-64.972l-144.476-144.477-17.35 36.933c-3.986 8.47-9.421 16.004-15.925 22.36l-2.552 2.326 115.333 115.332-275.062 275.064-353.027-353.025 275.062-275.064 124.276 124.275 31.153-66.294-122.952-122.953c-17.931-17.953-47.021-17.953-64.975 0l-307.535 307.539c-17.953 17.951-17.953 47.040 0 64.972l385.521 385.522c8.966 8.976 20.722 13.464 32.479 13.464z" />
-<glyph unicode="&#xe933;" glyph-name="pdf" d="M200.571 163.069c-65.7-20.885-113.75-73.848-130.451-94.215 0.202 3.96-6.842-8.705-6.842-8.705s2.706 3.609 6.842 8.705c-0.062-1.554-1.135-5.38-4.261-13.7-11.29-29.974 23.636-29.205 23.636-29.205 99.024 16.106 111.076 137.121 111.076 137.121zM767.851 265.049c-18.402 0.001-29.754-1.181-29.754-1.181 105.384-92.26 203.398-70.757 203.398-70.757 40.12 5.38-21.102 42.521-21.102 42.521-56.586 25.098-117.411 29.415-152.542 29.417zM407.732 514.149c0 0-38.052-198.070-85.604-256.815l263.733 42.154c0 0-131.431 126.545-178.128 214.661zM413.841 879.988c-0.327 0.031-0.655 0.025-0.984-0.018-2.95-0.391-5.989-3.865-8.935-12.118 0 0-14.213-73.113 21.382-194.629 0 0 30.308 96.404 7.495 170.219 0 0-8.827 35.592-18.958 36.546zM380.637 959.983c28.069 1.161 53.374-56.91 53.374-56.91 78.685-180.728 4.276-296.195 4.276-296.195 77.907-197.402 234.047-302.811 234.047-302.811 151.708 8.755 262.38-32.43 262.38-32.43 87.066-49.221 57.909-95.201 57.909-95.201-91.233-109.402-359.227 61.184-359.227 61.184l-345.434-62.554c-49.916-183.551-216.724-226.674-216.724-226.674-79.509-12.464-68.639 76.672-68.639 76.672 62.061 146.761 218.123 180.527 218.123 180.527 61.47 70.59 161.941 402.39 161.941 402.39-101.512 245.186-30.183 326.754-30.183 326.754 9.136 17.894 18.799 24.862 28.156 25.249z" />
-<glyph unicode="&#xe934;" glyph-name="pdfexport" d="M186.878 198.357c-61.858-18.302-107.102-64.709-122.827-82.566 0.191 3.469-6.445-7.624-6.445-7.624s2.548 3.151 6.445 7.624c-0.066-1.354-1.068-4.711-4.028-12.017-10.629-26.259 22.267-25.589 22.267-25.589 93.244 14.117 104.589 120.172 104.589 120.172zM721.065 287.733c-17.328 0.001-28.016-1.035-28.016-1.035 99.242-80.847 191.531-62.003 191.531-62.003 37.782 4.708-19.861 37.254-19.861 37.254-53.296 21.995-110.573 25.78-143.653 25.783zM381.96 506.055c0 0-35.839-173.585-80.605-225.069l248.329 36.937c0 0-123.752 110.91-167.724 188.132zM845.111 705.497c4.827 0.315 10.331-1.799 16.15-6.633l38.243-31.943c18.558-15.55 48.954-40.949 67.525-56.433l38.272-31.99c18.607-15.533 18.321-40.666-0.508-55.8l-38.832-31.256c-18.859-15.249-49.683-40.059-68.539-55.228l-38.835-31.239c-18.822-15.249-34.021-2.515-33.753 28.201l0.526 59.012h-225.156c-15.85 0-28.705 12.878-28.705 28.729v62.246c0 15.834 12.855 28.694 28.705 28.694h226.241l0.506 59.362c0.198 21.13 7.54 33.585 18.16 34.279zM386.788 826.673c-2.777-0.341-5.637-3.384-8.408-10.615 0 0-13.398-64.091 20.135-170.59 0 0 28.535 84.507 7.050 149.183 0 0-8.859 33.241-18.777 32.022zM356.447 896.795c26.43 1.014 50.261-49.878 50.261-49.878 74.083-158.383 4.029-259.586 4.029-259.586 73.367-173.011 220.388-265.396 220.388-265.396 142.849 7.671 247.075-28.422 247.075-28.422 81.976-43.129 54.534-83.444 54.534-83.444-85.921-95.871-338.276 53.635-338.276 53.635l-325.281-54.828c-46.998-160.866-204.075-198.666-204.075-198.666-74.88-10.915-64.627 67.21-64.627 67.21 58.439 128.623 205.395 158.211 205.395 158.211 57.879 61.876 152.495 352.67 152.495 352.67-95.602 214.882-28.427 286.37-28.427 286.37 8.602 15.68 17.701 21.786 26.511 22.124z" />
-<glyph unicode="&#xe935;" glyph-name="pictures" d="M490.078 477.525c115.421-29.010 218.49-140.465 249.026-175.898v112.194h74.003v-130.009h48.004v-60.007h-440.037v60.007h69.004zM146.397 671.379l-74.038-7.249 70.472-612.97 63.542 6.188zM778.103 777.091c45.819 0 83.007-37.202 83.007-83.032 0-45.824-37.188-83.026-83.007-83.026-45.814 0-83.003 37.202-83.003 83.026 0 45.83 37.188 83.032 83.003 83.032zM270.261 791.335l-68.169-6.625 68.169-698.111v596.849h-0.031c0 25.314 0 47.128 0 64.443h0.031zM336.703 851.095v-725.174h621.029v725.174h-71.381zM270.261 915.353h753.883v-853.631h-102.797l-708.662-69.13-0.089 0.931-129.677-12.684-82.919 740.739 140.175 13.684-10.439 106.832 140.525 13.751z" />
-<glyph unicode="&#xe936;" glyph-name="plus" d="M388.095 960h247.889v-388.114h388.095v-247.869h-388.095v-388.075h-247.889v388.075h-388.095v247.869h388.095z" />
-<glyph unicode="&#xe937;" d="M741.3 471.948c-63.591 0.034-127.198 0.034-190.772-0.084-3.373 0-5.344 1.040-7.615 3.707-3.824 4.496-8.249 8.823-13.293 11.692-4.025 2.315-4.943 4.613-4.943 8.84 0.117 81.708 0.067 163.432 0.067 245.14 0 2.013 0.117 4.043-0.067 6.022-0.618 7.314-6.797 12.078-14.044 10.937-6.463-1.023-10.053-5.938-10.053-13.99-0.033-41.5 0-82.999 0-124.499 0-41.265-0.033-82.58 0.033-123.895 0.050-3.976-0.685-6.24-4.709-8.454-4.943-2.634-9.285-6.827-13.009-11.121-2.455-2.835-4.425-4.479-8.35-4.412-12.675 0.252-25.366 0.067-38.057 0-5.878-0.034-10.454-2.785-13.627-7.632-3.741-5.586-3.908-11.675-0.918-17.63 3.139-6.207 8.633-9.259 15.497-9.327 12.658-0.117 25.383 0.101 38.024-0.185 2.238-0.084 4.676-1.795 6.579-3.305 5.010-4.043 9.552-8.773 14.812-12.447 2.555-1.761 3.841-3.053 3.807-6.257-0.184-11.994-0.117-24.004-0.083-36.015 0-1.979-0.033-4.043 0.451-5.955 1.386-5.687 6.98-9.478 12.708-8.924 6.296 0.621 10.871 5.401 10.971 12.128 0.15 12.916 0.117 25.849 0 38.765 0 3.305 1.319 4.848 4.242 6.626 4.826 2.885 9.552 6.559 13.126 10.903 2.705 3.305 5.127 4.73 9.318 4.73 46.040-0.151 92.063-0.101 138.052-0.101 17.768 0 35.536-0.117 53.27 0.034 11.122 0.101 18.419 7.632 18.102 18.1-0.334 10.216-7.748 16.607-19.521 16.607zM533.212 452.607c0-0.017 0-0.034-0.017-0.067-0.017-0.218-0.033-0.419-0.067-0.637-0.033-0.319-0.083-0.621-0.15-0.939-0.167-0.923-0.401-1.845-0.701-2.734-0.1-0.302-0.2-0.604-0.317-0.889-0.134-0.352-0.267-0.688-0.434-1.040-0.134-0.319-0.267-0.621-0.434-0.906-0.301-0.604-0.635-1.208-1.002-1.761-0.534-0.839-1.136-1.644-1.787-2.416 0-0.017 0-0.017-0.017-0.034-0.451-0.503-0.902-0.973-1.369-1.443-0.25-0.235-0.501-0.47-0.751-0.705 0 0 0-0.017-0.017-0.017-0.334-0.302-0.685-0.587-1.035-0.855-0.267-0.218-0.534-0.419-0.802-0.604-1.57-1.124-3.306-2.046-5.16-2.717-1.303-0.47-2.638-0.822-4.041-1.040-0.701-0.101-1.403-0.185-2.121-0.218-0.351 0-0.701-0.017-1.069-0.017-0.384-0.017-0.751 0-1.136 0.034-0.284 0.017-0.568 0.050-0.868 0.084-0.618 0.067-1.236 0.185-1.837 0.335s-1.202 0.335-1.787 0.537c-2.137 0.788-4.175 1.979-6.012 3.472-0.317 0.252-0.635 0.537-0.935 0.805-0.401 0.369-0.785 0.738-1.152 1.124-0.083 0.084-0.167 0.185-0.25 0.268-0.367 0.403-0.735 0.822-1.069 1.241-0.434 0.52-0.835 1.057-1.202 1.61s-0.718 1.107-1.052 1.694c-0.635 1.174-1.186 2.382-1.586 3.623-0.217 0.621-0.384 1.258-0.534 1.879-0.067 0.319-0.134 0.637-0.184 0.956-0.1 0.486-0.167 0.99-0.184 1.493-0.050 0.503-0.067 1.006-0.067 1.51 0 0.369 0.017 0.738 0.017 1.107 0.033 0.671 0.083 1.325 0.184 1.979 0.033 0.235 0.067 0.486 0.117 0.721 0.017 0.134 0.033 0.252 0.067 0.386 0.033 0.117 0.067 0.252 0.083 0.386 0.050 0.268 0.1 0.52 0.167 0.772 0.1 0.419 0.217 0.839 0.351 1.241 0.267 0.906 0.618 1.795 1.019 2.65 0.134 0.302 0.284 0.604 0.451 0.906 0.2 0.369 0.401 0.738 0.618 1.090s0.434 0.705 0.685 1.057c0.468 0.671 0.985 1.325 1.536 1.946 0.284 0.335 0.601 0.671 0.935 0.973 0.267 0.268 0.534 0.52 0.818 0.772 0.301 0.268 0.618 0.537 0.952 0.788 0.317 0.252 0.651 0.486 1.002 0.721 1.019 0.705 2.121 1.308 3.273 1.812 0.384 0.168 0.768 0.319 1.169 0.47 0.284 0.101 0.568 0.201 0.852 0.285 0.284 0.101 0.568 0.185 0.852 0.252s0.584 0.151 0.885 0.218c0.301 0.050 0.584 0.117 0.885 0.168 0.918 0.151 1.837 0.252 2.789 0.302 0.367 0.017 0.735 0.017 1.102 0.017 0.267 0 0.534 0 0.802-0.017 0.25-0.017 0.518-0.034 0.785-0.050 0.518-0.050 1.035-0.101 1.536-0.185 0.451-0.067 0.902-0.168 1.353-0.268 0.434-0.101 0.885-0.218 1.319-0.352 0.417-0.117 0.852-0.268 1.252-0.419l0.017-0.017c0.401-0.151 0.802-0.302 1.186-0.47 0.067-0.034 0.117-0.050 0.184-0.101 0.367-0.168 0.718-0.335 1.085-0.537 0.367-0.185 0.735-0.403 1.102-0.621 0.017-0.017 0.033-0.017 0.050-0.034 0.367-0.235 0.735-0.486 1.102-0.738 0.351-0.252 0.701-0.52 1.052-0.805 0.167-0.134 0.334-0.268 0.484-0.403 0.334-0.285 0.668-0.604 0.985-0.923 0.301-0.285 0.584-0.587 0.852-0.889 0.451-0.486 0.868-0.99 1.252-1.526 0.184-0.268 0.384-0.537 0.568-0.805 0.367-0.537 0.701-1.107 1.019-1.694 0.417-0.788 0.802-1.61 1.102-2.466 0.134-0.319 0.25-0.637 0.351-0.973 0.685-2.080 1.035-4.311 1.002-6.626 0-0.587-0.033-1.157-0.1-1.728z" />
-<glyph unicode="&#xe938;" d="M522.992 804.030c0-3.992 0.301-8.001-0.083-11.96-0.551-5.804-4.576-9.41-9.969-9.528-5.594-0.134-10.17 3.556-10.487 9.528-0.434 8.136-0.434 16.321 0 24.457 0.301 5.619 4.826 9.226 10.22 9.226 5.411 0 9.702-3.59 10.27-9.226 0.401-4.126 0.083-8.337 0.083-12.514-0.033 0.017-0.033 0.017-0.033 0.017z" />
-<glyph unicode="&#xe939;" d="M523.075 105.11c0-3.808 0.234-7.632-0.050-11.423-0.484-6.307-4.809-10.367-10.487-10.283-5.494 0.084-9.869 3.992-10.153 10.014-0.367 7.783-0.367 15.6-0.033 23.4 0.267 5.988 4.626 9.863 10.17 9.947 5.761 0.067 10.070-3.942 10.52-10.199 0.284-3.791 0.050-7.616 0.050-11.44-0.017-0.017-0.017-0.017-0.017-0.017z" />
-<glyph unicode="&#xe93a;" d="M882.242 454.318c-0.167-5.519-4.342-9.662-10.12-10.031-0.351-0.034-0.735-0.017-1.085-0.017h-10.854c0 0.017 0 0.017 0 0.017-3.791 0-7.598-0.168-11.389 0.050-5.494 0.302-9.519 4.479-9.786 9.779-0.267 5.435 3.757 10.551 9.318 10.819 8.116 0.352 16.282 0.335 24.398 0.017 5.644-0.235 9.686-5.15 9.519-10.635z" />
-<glyph unicode="&#xe93b;" d="M186.319 454.536c-0.017-5.502-4.191-9.813-9.903-10.249-0.351-0.017-0.735-0.017-1.085-0.017-2.405-0.017-4.809-0.017-7.231-0.017-1.202 0.017-2.421 0.017-3.624 0.017-3.006 0.017-6.028-0.084-9.051-0.034-0.768 0.017-1.553 0.050-2.338 0.084-5.745 0.285-9.919 4.613-10.003 10.132-0.083 5.485 4.008 10.316 9.652 10.518 7.932 0.302 15.914 0.302 23.863 0.017 5.628-0.218 9.752-4.982 9.719-10.45z" />
-<glyph unicode="&#xe93c;" d="M492.065 454.234c0-0.503 0.017-1.006 0.067-1.51-0.067 0.503-0.083 1.006-0.083 1.526 0 0.369 0.017 0.721 0.033 1.090 0-0.369-0.017-0.738-0.017-1.107z" />
-<glyph unicode="&#xe93d;" d="M497.358 468.476c-0.551-0.621-1.069-1.275-1.536-1.946 0.468 0.671 0.969 1.325 1.536 1.946z" />
-<glyph unicode="&#xe93e;" d="M508.981 474.934c0.902 0.168 1.837 0.268 2.789 0.302-0.952-0.050-1.87-0.151-2.789-0.302z" />
-<glyph unicode="&#xe93f;" d="M511.92 433.568c0.367 0 0.718 0.017 1.069 0.017-0.367-0.017-0.718-0.034-1.085-0.034-0.384 0-0.751 0.017-1.119 0.050 0.384-0.034 0.751-0.050 1.136-0.034z" />
-<glyph unicode="&#xe940;" d="M512.872 475.269c0.267 0 0.534-0.017 0.802-0.034-0.267 0.017-0.534 0.017-0.802 0.017-0.367 0-0.735 0-1.102-0.017 0.367 0.034 0.735 0.034 1.102 0.034z" />
-<glyph unicode="&#xe941;" d="M526.916 439.741c0.468 0.47 0.918 0.939 1.369 1.443-0.651-0.772-1.353-1.493-2.121-2.147 0.25 0.235 0.501 0.47 0.751 0.705z" />
-<glyph unicode="&#xe942;" d="M528.302 441.217c0.651 0.772 1.252 1.577 1.787 2.416-0.534-0.855-1.119-1.661-1.787-2.416z" />
-<glyph unicode="&#xe943;" glyph-name="staff" d="M852.529 206.541c-40.953 0.285-74.344-32.751-74.586-73.619-0.285-41.010 32.708-74.331 73.589-74.616 40.981-0.285 74.373 32.609 74.629 73.619 0.256 40.868-32.708 74.331-73.632 74.616zM853.184 311.346c15.493 0 30.472-2.421 44.755-6.123l5.909-39.159c14.453-5.696 27.795-13.385 39.529-23.068l37.065 13.955c20.847-21.502 36.211-48.13 44.213-77.891l-31.042-24.777c1.153-7.405 1.908-15.094 1.837-22.784-0.086-7.832-0.897-15.379-2.136-22.784l30.743-25.204c-8.415-29.619-24.122-56.105-45.224-77.322l-36.866 14.525c-11.876-9.541-25.332-17.088-39.813-22.641l-6.436-39.017c-14.353-3.702-29.333-5.696-44.812-5.696-15.521 0.142-30.472 2.421-44.811 6.265l-5.852 39.159c-14.439 5.554-27.824 13.385-39.557 23.068l-37.065-13.955c-20.818 21.36-36.211 48.13-44.242 77.891l31.070 24.635c-1.139 7.547-1.88 15.094-1.837 22.926 0.085 7.689 0.897 15.379 2.136 22.784l-30.743 25.062c8.387 29.761 24.122 56.105 45.21 77.464l36.909-14.525c11.847 9.541 25.318 17.088 39.828 22.499l6.365 39.159c14.382 3.56 29.362 5.696 44.868 5.553zM409.028 371.574l49.657-49.694-38.586-38.587 39.825-46.143-52.696-157.924-54.289 156.107 44.44 48.528-38.046 38.019zM618.515 376.928c38.144-7.169 73.391-22.554 103.826-44.248l0.426-0.317-2.897-1.86c-63.883-43.209-105.968-116.325-105.968-199.009 0-41.386 10.521-80.353 29.028-114.37l0.909-1.579h-643.838v102.668c0 127.586 90.779 233.999 211.264 258.14l194.355-304.663zM344.453 820.627c-25.958 0.065-58.686-6.617-62.522-39.908 0 0 0-64.687-17.265-73.32l-4.285-60.371-17.266 17.252 6.459-81.938 32.358-2.176c0 0 8.634-166.017 166.052-133.689 0 0 75.464 23.726 92.699 133.689l25.901 2.176 6.459 73.32-10.776-2.173c0 0-6.491 62.544-12.949 88.412l-4.317 62.531c0 0-36.645 30.199-90.556 4.316 0 0-62.546 2.173-77.637 8.633 0 0-14.592 3.203-32.352 3.248zM418.251 942.627c73.513 0.006 124.602-38.985 124.602-38.985 94.873-75.478 43.136-204.866 43.136-204.866 21.551-12.933 19.41-23.709 19.41-23.709 0-140.181-38.819-129.388-38.819-129.388-21.583-90.57-105.648-131.53-105.648-131.53-163.908-40.977-204.867 129.371-204.867 129.371-34.503 4.316-38.819 84.095-38.819 84.095-10.809 53.91 19.409 75.477 19.409 75.477-64.718 150.938 51.737 196.216 51.737 196.216 46.692 32.612 91.352 43.315 129.859 43.318z" />
-<glyph unicode="&#xe944;" glyph-name="back" d="M580.895 960h273.723l-413.813-509.791 2.338-2.896 415.046-511.313h-273.736l-280.542 345.584-1.234-1.48-136.868 168.605 136.868 168.646z" />
-<glyph unicode="&#xe945;" glyph-name="next" d="M165.81 960h273.728l280.547-345.583 1.234 1.48 136.87-168.604-415.080-511.292h-273.741l413.82 509.792-2.338 2.896-99.387 122.396z" />
-<glyph unicode="&#xe946;" glyph-name="sendemail" d="M27.191 706.781c-25.772-241.871 124.762-457.551 339.243-483.692 130.086-15.899 254.021 41.716 338.899 143.179l-99.362 77.659 417.947 168.715-62.835-446.319-94.675 73.987c-102.159-126.221-264.94-198.635-437.993-177.524-267.144 32.56-457.349 275.497-424.787 542.664 4.313 35.279 12.355 69.116 23.562 101.329zM119.785 802.29l301.541-301.517c9.96-9.956 26.039-9.956 35.971 0l300.424 300.37c6.124-4.049 10.197-10.971 10.197-18.876v-222.443l-254.765-102.9 107.427-83.946h-452.099c-22.788 22.312-43.559 47.202-61.051 74.628v334.661c0 8.758 5.061 16.291 12.355 20.023zM154.8 854.39h569.177c-0.319-5.431-2.529-10.81-6.738-14.938l-263.022-261.552c-8.813-8.573-22.738-8.625-31.099-0.080l-262.357 260.383c-4.368 4.42-6.284 10.331-5.962 16.186z" />
-<glyph unicode="&#xe947;" glyph-name="exit" d="M826.547 713.055l174.681-174.731-174.681-174.856v116.127h-324.501v117.521h324.501zM22.578 960h748.846v-322.493h-85.415v233.478h-527.32l143.325-93.695v-571.717h383.995v233.478h85.415v-322.493h-469.41v-180.559l-279.436 180.559z" />
-<glyph unicode="&#xe948;" glyph-name="key" d="M738.8 883.463c-8.706 0-17.411-3.312-24.038-9.937-13.313-13.315-13.313-34.816 0-48.13l148.772-148.899c13.318-13.25 34.83-13.25 48.143 0.064 13.308 13.25 13.308 34.816-0.067 48.13l-148.768 148.835c-6.63 6.625-15.336 9.937-24.042 9.937zM711.352 960c26.51 0.008 53.012-10.118 73.233-30.404l177.155-177.025c40.447-40.509 40.447-106.138 0-146.523l-213.276-213.222c-40.389-40.436-106.026-40.436-146.535 0l-20.948 20.956-146.829-147.025-75.136 22.819 16.939-80.955-78.011 19.881 12.629-85.271-86.701 11.249 16.942-80.95-78.887 18.878 15.316-82.52-74.011-74.080-81.386 174.416 431.31 431.342 110.665-110.618-138.919 138.968c-40.498 40.383-40.498 106.017 0 146.523l213.17 213.157c20.255 20.253 46.773 30.396 73.283 30.404z" />
-<glyph unicode="&#xe949;" glyph-name="duplicate" d="M10.24 553.574v-396.186h104.448v54.497h-52.224v685.67h685.67v-52.224h54.477v104.448h-792.371v-396.206zM168.038 790.374c-0.686-1.587-0.911-191.846-0.686-422.973l0.686-420.024 845.722-1.137-0.451 422.748-0.686 422.973-421.837 0.676c-336.251 0.461-422.072 0.010-422.748-2.263zM959.273 369.674v-368.937h-737.884v737.874h737.874v-368.937zM538.563 580.588c-0.911-0.911-1.587-36.782-1.587-79.688v-77.875l-78.787-0.451-79.012-0.686v-104.448l78.787-0.686 79.012-0.451 0.451-79.012 0.686-78.787 52.9-0.686 52.675-0.451v158.925h158.925l-0.451 52.9-0.686 52.675-78.787 0.686-79.012 0.451-0.451 79.012-0.686 78.787-51.313 0.676c-28.14 0.246-51.753-0.205-52.664-0.891z" />
-<glyph unicode="&#xe94a;" glyph-name="paste" d="M605.659 64.886h204.831v-28.466h-204.831zM605.659 156.302h204.831v-28.481h-204.831zM550.693 412.216c-5.984 0-10.938-4.925-10.938-10.968v-410.451c0-6.055 4.955-10.969 10.938-10.969h307.123c6.043 0 10.967 4.913 10.967 10.969v266.799l-81.768 0.329c-69.89-5.489-71.762 57.844-71.762 57.844v96.447zM550.69 456.091h184.737l39.994-42.204h0.562l96.757-102.552 0.057-0.204 39.816-42.017v-278.318c0-30.288-24.536-54.812-54.81-54.812h-307.112c-30.276 0-54.81 24.524-54.81 54.812v410.453c0 30.265 24.534 54.842 54.81 54.842zM473.656 917.935c-30.071 0-54.464-23.086-54.464-51.573 0-28.453 24.394-51.569 54.464-51.569 30.074 0 54.464 23.116 54.464 51.569 0 28.487-24.39 51.573-54.464 51.573zM473.656 960c52.904 0 96.089-39.324 98.736-88.812l0.128-4.816h83.897v-29.951h179.521v-404.837l-76.399 80.603h-3.089v225.206h-100.033v-100.188h-365.509v100.188h-100.049v-694.723h248.938v-51.875c0-7.646 0.777-15.114 2.256-22.328l0.886-3.83h-331.552v871.785h179.521v29.951h83.882l0.129 4.816c2.647 49.488 45.833 88.812 98.736 88.812z" />
-<glyph unicode="&#xe94b;" glyph-name="copy" d="M614.832 590.144v-132.453c0 0-2.565-87.003-98.572-79.45l-112.324-0.455v-366.468c0-8.312 6.771-15.062 15.082-15.062h421.761c8.278 0 15.061 6.75 15.061 15.062v563.764c0 8.289-6.782 15.062-15.061 15.062zM436.672 886.928v-160.666c0 0-3.093-105.514-119.549-96.373l-136.227-0.54v-444.483c0-10.086 8.22-18.258 18.305-18.258h144.511v226.987l54.706 57.72 0.080 0.29 132.935 140.843h0.746l54.925 57.952h141.888v218.278c0 10.031-8.205 18.25-18.259 18.25zM403.040 960h307.691c50.448 0 91.366-40.914 91.366-91.32v-218.28h38.685c41.603 0 75.331-33.742 75.331-75.313v-563.775c0-41.61-33.728-75.312-75.331-75.312h-421.76c-41.593 0-75.309 33.703-75.309 75.312v82.224h-144.516c-50.46 0-91.356 40.875-91.356 91.335v463.677l66.357 70.010 0.095 0.341 161.216 170.811h0.911z" />
-<glyph unicode="&#xe94c;" glyph-name="replace" d="M202.716 688.95l202.812-202.848h-127.928v-257.484h236.225v-137.025h-373.306v394.509h-140.518zM474.506 804.216h412.622v-378.822h137.016l-202.713-202.789-202.809 202.789h131.457v241.798h-275.572z" />
-<glyph unicode="&#xe94d;" glyph-name="week" d="M528.871 122.241c-5.104 0-9.357-4.98-9.357-11.12v-101.089c0-6.14 4.253-11.12 9.357-11.12h95.404c5.245 0 9.497 4.98 9.497 11.12v101.089c0 6.14-4.252 11.12-9.497 11.12zM404.547 122.241c-5.245 0-9.499-4.98-9.499-11.12v-101.089c0-6.14 4.253-11.12 9.499-11.12h95.404c5.103 0 9.357 4.98 9.357 11.12v101.089c0 6.14-4.255 11.12-9.357 11.12zM280.080 122.241c-5.245 0-9.499-4.98-9.499-11.12v-101.089c0-6.14 4.253-11.12 9.499-11.12h95.404c5.245 0 9.499 4.98 9.499 11.12v101.089c0 6.14-4.253 11.12-9.499 11.12zM155.614 122.241c-5.103 0-9.355-4.98-9.355-11.12v-101.089c0-6.14 4.252-11.12 9.355-11.12h95.405c5.247 0 9.499 4.98 9.499 11.12v101.089c0 6.14-4.252 11.12-9.499 11.12zM777.801 258.021c-5.245 0-9.497-4.98-9.497-11.12v-101.089c0-6.14 4.252-11.121 9.497-11.121h95.404c5.245 0 9.499 4.981 9.499 11.121v101.089c0 6.14-4.253 11.12-9.499 11.12zM653.335 258.021c-5.245 0-9.497-4.98-9.497-11.12v-101.089c0-6.14 4.252-11.121 9.497-11.121h95.407c5.245 0 9.496 4.981 9.496 11.121v101.089c0 6.14-4.251 11.12-9.496 11.12zM528.871 258.021c-5.104 0-9.357-4.98-9.357-11.12v-101.089c0-6.14 4.253-11.121 9.357-11.121h95.404c5.245 0 9.497 4.981 9.497 11.121v101.089c0 6.14-4.252 11.12-9.497 11.12zM404.547 258.021c-5.245 0-9.499-4.98-9.499-11.12v-101.089c0-6.14 4.253-11.121 9.499-11.121h95.404c5.103 0 9.357 4.981 9.357 11.121v101.089c0 6.14-4.255 11.12-9.357 11.12zM280.080 258.021c-5.245 0-9.499-4.98-9.499-11.12v-101.089c0-6.14 4.253-11.121 9.499-11.121h95.404c5.245 0 9.499 4.981 9.499 11.121v101.089c0 6.14-4.253 11.12-9.499 11.12zM155.614 258.021c-5.103 0-9.355-4.98-9.355-11.12v-101.089c0-6.14 4.252-11.121 9.355-11.121h95.405c5.247 0 9.499 4.981 9.499 11.121v101.089c0 6.14-4.252 11.12-9.499 11.12zM777.801 393.972c-5.245 0-9.497-4.981-9.497-10.959v-101.252c0-6.144 4.252-11.124 9.497-11.124h95.404c5.245 0 9.499 4.98 9.499 11.124v101.252c0 5.977-4.253 10.959-9.499 10.959zM653.335 393.972c-5.245 0-9.497-4.981-9.497-10.959v-101.252c0-6.144 4.252-11.124 9.497-11.124h95.407c5.245 0 9.496 4.98 9.496 11.124v101.252c0 5.977-4.251 10.959-9.496 10.959zM528.871 393.972c-5.104 0-9.357-4.981-9.357-10.959v-101.252c0-6.144 4.253-11.124 9.357-11.124h95.404c5.245 0 9.497 4.98 9.497 11.124v101.252c0 5.977-4.252 10.959-9.497 10.959zM404.547 393.972c-5.245 0-9.499-4.981-9.499-10.959v-101.252c0-6.144 4.253-11.124 9.499-11.124h95.404c5.103 0 9.357 4.98 9.357 11.124v101.252c0 5.977-4.255 10.959-9.357 10.959zM280.080 393.972c-5.245 0-9.499-4.981-9.499-10.959v-101.252c0-6.144 4.253-11.124 9.499-11.124h95.404c5.245 0 9.499 4.98 9.499 11.124v101.252c0 5.977-4.253 10.959-9.499 10.959zM155.614 393.972c-5.103 0-9.355-4.981-9.355-10.959v-101.252c0-6.144 4.252-11.124 9.355-11.124h95.405c5.247 0 9.499 4.98 9.499 11.124v101.252c0 5.977-4.252 10.959-9.499 10.959zM777.801 527.093c-5.245 0-9.497-4.977-9.497-11.12v-101.252c0-5.979 4.252-10.959 9.497-10.959h95.404c5.245 0 9.499 4.98 9.499 10.959v101.252c0 6.143-4.253 11.12-9.499 11.12zM653.335 527.093c-5.245 0-9.497-4.977-9.497-11.12v-101.252c0-5.979 4.252-10.959 9.497-10.959h95.407c5.245 0 9.496 4.98 9.496 10.959v101.252c0 6.143-4.251 11.12-9.496 11.12zM528.871 527.093c-5.104 0-9.357-4.977-9.357-11.12v-101.252c0-5.979 4.253-10.959 9.357-10.959h95.404c5.245 0 9.497 4.98 9.497 10.959v101.252c0 6.143-4.252 11.12-9.497 11.12zM404.547 527.093c-5.245 0-9.499-4.977-9.499-11.12v-101.252c0-5.979 4.253-10.959 9.499-10.959h95.404c5.103 0 9.357 4.98 9.357 10.959v101.252c0 6.143-4.255 11.12-9.357 11.12zM103.731 908.379v-308.082h804.773v308.082zM67.865 960h888.271c5.245 0 9.497-4.981 9.497-11.12v-975.365c0-6.144-1.701-15.603-3.828-21.248l-9.496-11.619c-4.68-2.492-12.76-4.648-18.004-4.648h-844.608c-5.247 0-13.326 2.156-18.004 4.648l-9.64 11.619c-1.985 5.645-3.686 15.104-3.686 21.248v975.365c0 6.14 4.254 11.12 9.499 11.12z" />
-<glyph unicode="&#xe94e;" glyph-name="baggage" d="M733.725 664.051v-522.022h122.802v522.022zM170.739 664.051v-522.022h122.77v522.022zM438.264 769.338l-22.849-67.612h194.723l-24.368 67.612zM415.655 791.666h192.707l51.857-89.94h232.036c72.769 0 131.762-54.978 131.762-122.813v-351.734c0-67.85-58.993-122.843-131.762-122.843h-760.493c-72.753 0-131.763 54.993-131.763 122.843v351.734c0 67.835 59.009 122.813 131.763 122.813h232.036z" />
-<glyph unicode="&#xe94f;" glyph-name="trash" d="M191.166 630.621h136.774v-577.939h105.019v577.939h157.78v-577.939h105.083v577.939h136.772v-694.765h-641.428zM126.98 847.182h769.8v-99.472h-769.8zM335.572 960h352.663v-90.878h-352.663z" />
-<glyph unicode="&#xe950;" glyph-name="erase" d="M88.57 4.16h886.236c18.731 0 34.042-15.353 34.042-34.060 0-18.79-15.311-34.1-34.042-34.1h-886.236c-18.729 0-34.042 15.31-34.042 34.1 0 18.707 15.313 34.060 34.042 34.060zM331.535 590.147l-248.272-249.935 157.96-161.957c13.749-13.833 48.813-37.771 68.188-37.771h104.73c19.416 0 46.979 23.937 60.73 37.771l131.647 136.812zM629.682 960c17.438 0 34.877-7.814 48.146-21.084l278.586-279.645c26.499-26.457 26.499-72.207 0-98.729l-425.897-430.494c-26.523-26.605-78.815-57.729-116.377-57.729h-104.73c-37.459 0-89.815 31.125-116.375 57.729l-157.96 167.29c-26.5 26.499-26.5 69.935 0 96.332l546.42 546.452c13.166 13.293 30.711 19.877 48.187 19.877z" />
-<glyph unicode="&#xe951;" d="M458.499-21.888c-57.395 4.965-111.283 21.958-162.466 47.857-82.11 41.567-147.22 102.24-194.462 181.079-42.082 70.251-63.941 147.010-65.728 229.423-0.15 6.458-0.15 12.933 0 19.324 0.15 12.228 0.802 24.306 1.87 36.283 19.889 225.447 189.82 404.698 419.2 432.208 7.197 0.839 14.478 0.99 23.88 1.61v-48.763c-77.434-6.425-148.974-28.533-210.978-73.891-116.844-85.381-180.786-195.035-184.91-329.163-0.334-10.216-0.301-20.532 0.117-30.999 0.701-19.542 2.588-39.554 5.745-60.035 23.546-153.988 112.419-260.623 251.49-324.533 34.484-15.869 74.028-21.22 111.684-29.053 16.933-3.523 26.836-9.813 27.704-27.577 0.701-16.238-5.811-25.279-23.145-23.769z" />
-<glyph unicode="&#xe952;" d="M831.743 103.969c-73.527-71.928-163.752-112.925-266.219-124.885-13.844-1.627-29.073-4.311-32.146 16.053-2.622 17.328 7.181 28.768 26.936 33.264 32.53 7.431 65.594 13.369 97.356 23.484 58.731 18.737 108.612 53.275 150.744 97.61 122.188 128.408 158.358 279.829 98.492 446.147-59.867 166.418-184.81 258.308-359.935 280.299-2.839 0.352-5.694 0.755-11.038 1.459v48.696c18.703-2.114 36.655-2.634 53.955-6.29 187.565-39.235 316.667-149.090 371.591-333.222 54.94-184.4 7.732-348.168-129.736-482.614z" />
-<glyph unicode="&#xe953;" glyph-name="projects" d="M738.064 471.472l-206.048-117.081 0.648-237.415 205.4 118.386zM296.816 471.472v-236.11l205.402-118.386 0.646 237.415zM517.439 619.312l-204.671-118.352 204.671-117.696 205.313 117.696zM92.872 910.64h327.139c51.335 0 92.917-41.604 92.917-92.904v-44.536h418.154c51.314 0 92.918-41.615 92.918-92.907v-602.031c0-51.325-41.605-92.918-92.918-92.918h-838.208c-51.27 0-92.873 41.594-92.873 92.918v602.031c0 1.603 0.041 3.196 0.121 4.779l0.078 1.030-0.078 1.030c-0.080 1.584-0.121 3.178-0.121 4.782v125.822c0 51.299 41.603 92.904 92.872 92.904z" />
-<glyph unicode="&#xe954;" glyph-name="usertime" d="M557.61 283.76c0 0 234.191-55.807 256.508-278.821h-814.117c0 0 66.954 245.319 267.693 267.648l54.36-232.801 39.942 0.321 45.427 119.165-42.397 73.563h84.77l-40.646-75.446 51.832-116.487 31.151 0.25zM721.151 752.498c3.881 0.061 7.808-1.164 11.085-3.756l86.55-69.216c0.927-0.749 1.758-1.573 2.49-2.458l1.384-2.053 0.604-0.177c3.044-1.077 5.694-2.969 7.708-5.437 2.408-2.972 3.834-6.662 3.883-10.763l0.775-110.79c0.044-9.547-7.646-17.359-17.196-17.446-9.534-0.042-17.332 7.639-17.418 17.206l-0.771 102.937-0.623 0.275c-0.864 0.474-1.701 1.029-2.502 1.669l-86.513 69.196c-7.448 5.987-8.658 16.859-2.723 24.365 3.363 4.163 8.277 6.368 13.267 6.447zM401.426 759.683c33.843 0 65.776-7.706 94.582-21.095-8.652-26.989-13.395-55.697-13.395-85.511 0-93.086 45.61-175.496 115.472-226.751-38.319-69.217-111.983-116.086-196.66-116.086-124.119 0-224.722 100.616-224.722 224.733 0 124.113 100.603 224.711 224.722 224.711zM786.072 821.774c-92.958 0-168.706-75.661-168.706-168.701 0-93.019 75.748-168.723 168.706-168.723 93.042 0 168.708 75.705 168.708 168.723 0 93.040-75.666 168.701-168.708 168.701zM786.072 891.011c131.44 0 237.961-106.559 237.961-237.939 0-131.359-106.521-237.917-237.961-237.917-131.347 0-237.911 106.558-237.911 237.917 0 131.38 106.564 237.939 237.911 237.939z" />
-<glyph unicode="&#xe955;" glyph-name="finger1" d="M943.765 724.484c-6.925 3.208-14.269 4.937-21.133 4.937-9.938 0-18.217-3.5-23.398-9.749-30.615-37.272-58.645-109.766-81.218-168.016-10.382-26.932-24.32-62.974-33.738-79.891-5.144 49.556 17.094 228.345 25.656 297.196l0.146 1.111c5.948 47.828 6.885 56.222 6.584 59.957-2.304 26.624-11.603 44.65-27.656 53.547-16.23 9.022-38.279 7.083-62.748-5.485-12.282-6.313-17.24-30.624-35.123-141.157l-0.073-0.499c-9.841-60.706-32.478-200.564-49.876-222.875-15.487 34.036-26.917 222.032-31.854 303.405-3.427 56.977-5.488 89.686-7.686 99.713-4.657 20.932-29.135 40.188-54.521 42.927-21.115 2.514-39.271-7.083-48.869-25.291-16.744-16.266-15.277-74.205-7.646-211.704 3.625-65.442 11.113-200.603-0.536-214.912-20.99 3.811-51.453 90.274-90.514 257.081-10.952 46.707-14.391 60.791-18.312 67.104-7.113 21.578-35.135 39.786-61.388 39.786-2.249 0-4.438-0.146-6.599-0.417-13.88-1.75-45.974-12.224-43.384-71.055 12.76-82.235 28.661-143.017 44.035-202.058l0.307-1.16c9.214-35.348 17.931-68.766 25.611-105.685 18.092-87.187 5.025-139.581 4.876-140.183-1.184-5.397-3.096-8.626-5.704-9.603-0.953-0.344-2.125-0.566-3.436-0.566-7.667 0-18.75 5.899-24.427 9.603-11.676 26.813-70.108 154.724-129.679 176.082l-2.155 0.807-2.219-0.064c-22.442-0.569-39.399-7.874-50.464-21.751-17.484-21.94-12.964-51.754-11.777-57.723l0.734-2.189c0.438-0.937 42.93-93.579 47.581-135.599 4.033-36.081 34.98-76.978 59.863-109.876l1.020-1.351c8.118-10.76 15.113-20.074 20.555-28.594 72.744-87.708 192.059-165.572 193.048-166.226 14.683-12.562 22.521-24.238 22.756-33.875 0.149-6.289-3.351-9.792-3.47-9.938l-2.892-2.645 0.244-0.271h-1.172v-21.334h346.783v7.186l17.773 59.957c55.854 178.514 57.683 333.929 57.601 334.994 0.572 5.665 16.534 59.915 29.385 103.703l0.344 1.126c25.571 87.291 57.446 195.882 65.007 237.516 3.202 17.858-7.086 35.15-26.244 44.005zM946.191 684.793c-7.345-40.501-40.532-153.555-64.742-236.122-20.978-71.429-29.604-101.308-30.31-109.346 0-1.488-0.645-150.225-56.633-329.138l-15.664-52.853h-296.359c1.208 3.622 2.073 7.81 2.036 12.687-0.073 17.137-10.943 35.080-32.532 53.437-1.193 0.77-119.558 78.75-187.856 160.954-5.464 8.73-13.792 19.751-21.858 30.374-21.864 28.916-51.839 68.593-55.093 97.968-4.876 43.819-43.989 130.687-48.978 141.568-0.621 4.395-2.666 23.784 7.339 36.267 6.045 7.561 16.062 11.777 29.769 12.525 53.386-22.25 114.369-163.831 114.971-165.267l1.303-3.023 2.615-2c3.656-2.663 22.829-16.020 41.408-16.020 4.255 0 8.264 0.667 11.844 2.030 7.412 2.782 17.051 9.667 20.735 26.603 0.621 2.292 14.635 57.553-4.712 150.751-7.704 37.287-16.619 71.369-26.016 107.493l-0.161 0.527c-15.167 58.058-30.88 118.097-43.399 198.329-1.166 26.88 6.843 42.754 22.451 44.744 17.812 2.52 40.318-12.124 42.802-23.666l3.126-8.915c3.306-10.775 9.545-37.555 13.719-55.455 35.4-150.91 68.565-275.843 115.419-275.843 3.814 0 9.412 1.108 14.455 6.474 19.267 20.311 16.224 102.002 8.867 234.183-3.573 64.021-8.094 180.517-0.907 191.977l2.901 5.984c4.417 9.506 15.387 13.77 24.092 13.77 1.272 0 2.49-0.067 3.668-0.213 14.875-1.598 31.196-13.332 33.561-24.15 1.851-8.307 4.258-48.214 7.101-94.38l0.082-1.552c16.001-264.082 26.603-328.559 53.836-328.559 30.934 0 46.062 61.461 75.895 246.114l0.146 0.77c7.311 45.222 18.324 113.248 23.23 123.247 15.989 7.999 30.517 9.962 38.946 5.333 10.708-5.917 14.23-21.812 15.271-33.957 0.033-3.296-3.278-29.772-6.447-55.416-28.925-232.454-33.083-312.208-17.103-328.2 4.24-4.2 10.218-6.024 15.572-4.791 16.312 3.436 27.093 27.958 56.052 102.973 21.894 56.588 49.082 126.952 77.301 161.268 0.228 0.244 1.574 0.937 4.52 0.937 3.458 0 7.406-0.937 11.165-2.666 7.022-3.275 14.044-9.649 12.574-17.758zM156.185 382.742c-0.332 1.948-0.457 3.857-0.569 5.792-34.791 3.354-65.947 26.84-76.884 62.267-14.525 47.082 11.968 97.186 59.041 111.711 47.070 14.516 97.168-11.959 111.699-59.041 6.365-20.671 4.642-41.853-3.114-60.386 6.645-3.065 12.592-7.899 17.021-13.98 11.831 24.281 15.040 52.823 6.453 80.664-17.995 58.289-80.062 91.123-138.363 73.14-58.317-18.007-91.123-80.089-73.137-138.397 14.239-46.126 56.082-76.147 101.81-77.812-1.61 5.29-3.029 10.623-3.957 16.041z" />
-<glyph unicode="&#xe956;" glyph-name="finger2" d="M913.761 724.494c-6.927 3.219-14.27 4.928-21.132 4.928-9.947 0-18.208-3.48-23.397-9.751-30.623-37.268-58.642-109.756-81.228-168.014-10.372-26.923-24.311-62.962-33.726-79.891-5.139 49.579 17.093 228.366 25.646 297.194l0.141 1.122c5.969 47.825 6.898 56.21 6.583 59.934-2.292 26.644-11.602 44.67-27.644 53.556-16.224 9.020-38.267 7.084-62.748-5.485-12.288-6.333-17.249-30.633-35.125-141.167l-0.060-0.49c-9.867-60.717-32.489-200.561-49.886-222.882-15.496 34.044-26.904 222.030-31.843 303.402-3.436 56.998-5.511 89.705-7.7 99.721-4.667 20.939-29.135 40.203-54.511 42.931-21.121 2.526-39.276-7.082-48.874-25.3-16.746-16.256-15.276-74.195-7.652-211.699 3.632-65.423 11.105-200.587-0.542-214.894-20.976 3.803-51.457 90.274-90.51 257.081-10.958 46.712-14.379 60.768-18.319 67.104-7.103 21.575-35.123 39.775-61.373 39.775-2.249 0-4.438-0.147-6.605-0.409-13.874-1.758-45.983-12.222-43.388-71.070 12.77-82.21 28.67-143 44.038-202.042l0.313-1.17c9.205-35.337 17.917-68.753 25.599-105.675 18.099-87.181 5.026-139.594 4.872-140.199-1.182-5.406-3.082-8.613-5.707-9.603-0.936-0.333-2.121-0.538-3.433-0.538-7.671 0-18.754 5.874-24.415 9.572-11.693 26.821-70.121 154.744-129.684 176.102l-2.162 0.798-2.208-0.052c-22.453-0.568-39.416-7.895-50.477-21.761-17.478-21.932-12.959-51.744-11.777-57.738l0.73-2.167c0.439-0.936 42.931-93.571 47.583-135.622 4.041-36.061 34.973-76.973 59.867-109.851l1.026-1.351c8.105-10.753 15.105-20.065 20.541-28.586 72.749-87.733 192.061-165.596 193.064-166.221 14.666-12.573 22.514-24.253 22.754-33.907 0.144-6.288-3.353-9.789-3.48-9.914l-2.891-2.647 0.245-0.283h-1.162v-21.333h346.781v7.188l17.772 59.96c55.852 178.522 57.683 333.927 57.602 334.977 0.56 5.69 16.519 59.916 29.375 103.72l0.353 1.11c25.569 87.296 57.434 195.886 64.996 237.54 3.211 17.866-7.080 35.138-26.224 44zM916.189 684.812c-7.356-40.499-40.532-153.551-64.751-236.119-20.958-71.453-29.598-101.331-30.29-109.35 0-1.499-0.654-150.247-56.654-329.124l-15.665-52.875h-296.346c1.204 3.626 2.058 7.803 2.037 12.698-0.084 17.125-10.954 35.060-32.542 53.435-1.188 0.773-119.557 78.74-187.847 160.941-5.458 8.723-13.791 19.754-21.855 30.377-21.872 28.934-51.847 68.6-55.102 97.975-4.874 43.832-43.976 130.661-48.977 141.551-0.61 4.408-2.666 23.807 7.34 36.288 6.057 7.553 16.063 11.775 29.771 12.526 53.393-22.25 114.37-163.842 114.97-165.281l1.293-3 2.625-2.019c3.645-2.668 22.811-16.025 41.396-16.025 4.264 0 8.265 0.692 11.848 2.064 7.416 2.772 17.045 9.664 20.723 26.582 0.629 2.293 14.644 57.552-4.704 150.746-7.707 37.306-16.628 71.389-26.014 107.494l-0.174 0.546c-15.165 58.055-30.873 118.095-43.389 198.326-1.162 26.87 6.84 42.745 22.453 44.749 17.813 2.496 40.311-12.14 42.798-23.671l3.122-8.916c3.319-10.794 9.548-37.556 13.73-55.456 35.389-150.917 68.562-275.861 115.407-275.861 3.808 0 9.417 1.12 14.454 6.485 19.275 20.321 16.223 101.991 8.875 234.18-3.583 64.018-8.105 180.526-0.917 191.963l2.913 6.005c4.416 9.504 15.37 13.77 24.080 13.77 1.272 0 2.501-0.090 3.673-0.227 14.878-1.598 31.192-13.342 33.555-24.159 1.856-8.288 4.274-48.193 7.105-94.358l0.083-1.552c16.001-264.081 26.603-328.557 53.833-328.557 30.939 0 46.063 61.46 75.891 246.092l0.158 0.781c7.291 45.229 18.311 113.247 23.207 123.235 16.001 8.026 30.541 9.992 38.947 5.36 10.722-5.921 14.232-21.818 15.283-33.962 0.023-3.298-3.283-29.792-6.458-55.416-28.917-232.462-33.083-312.209-17.107-328.196 4.242-4.215 10.209-6.037 15.567-4.791 16.33 3.409 27.099 27.954 56.062 102.959 21.893 56.575 49.081 126.964 77.285 161.254 0.24 0.268 1.573 0.959 4.526 0.959 3.457 0 7.416-0.959 11.162-2.666 7.049-3.279 14.072-9.652 12.624-17.764zM294.016 937.701c-61.024 0-110.663-49.65-110.663-110.684 0-54.4 39.498-99.664 91.291-108.846-2.539 7.603-3.958 15.167-4.963 22.974-37.455 10.635-64.998 45.064-64.998 85.872 0 49.271 40.082 89.351 89.332 89.351 49.268 0 89.33-40.080 89.33-89.351 0-26.536-11.753-50.322-30.205-66.684 0.852-1.682 1.682-3.37 2.333-5.194 1.942-5.557 3.315-11.186 4.269-16.885 27.208 20.171 44.936 52.375 44.936 88.763-0.001 61.036-49.655 110.684-110.663 110.684z" />
-<glyph unicode="&#xe957;" glyph-name="finger3" d="M890.066 678.005c-6.499 3.030-13.428 4.637-19.87 4.637-9.352 0-17.155-3.274-22.035-9.174-28.798-35.074-55.187-103.285-76.418-158.112-9.765-25.332-22.889-59.249-31.751-75.178-4.841 46.654 16.095 214.9 24.146 279.675l0.146 1.054c5.588 45.007 6.479 52.899 6.184 56.402-2.177 25.074-10.919 42.037-26.034 50.398-15.261 8.487-36.013 6.665-59.028-5.162-11.566-5.961-16.232-28.827-33.055-132.845l-0.077-0.461c-9.252-57.138-30.563-188.737-46.932-209.744-14.568 32.038-25.329 208.94-29.975 285.515-3.237 53.638-5.159 84.418-7.232 93.842-4.382 19.701-27.406 37.832-51.32 40.399-19.873 2.377-36.953-6.665-45.993-23.808-15.757-15.296-14.37-69.821-7.195-199.215 3.411-61.569 10.469-188.76-0.49-202.226-19.767 3.578-48.425 84.951-85.183 241.922-10.306 43.959-13.545 57.187-17.232 63.147-6.705 20.305-33.072 37.428-57.774 37.428-2.122 0-4.176-0.137-6.213-0.381-13.061-1.658-43.252-11.503-40.811-66.882 11.993-77.363 26.962-134.57 41.424-190.129l0.289-1.103c8.685-33.255 16.885-64.7 24.112-99.444 17.011-82.041 4.723-131.365 4.583-131.935-1.114-5.084-2.922-8.106-5.368-9.037-0.905-0.312-1.999-0.51-3.234-0.51-7.215 0-17.644 5.531-22.998 9.011-10.979 25.241-65.963 145.62-122.032 165.719l-2.019 0.75-2.097-0.049c-21.119-0.536-37.067-7.43-47.476-20.477-16.453-20.638-12.194-48.688-11.091-54.334l0.702-2.039c0.412-0.885 40.404-88.053 44.775-127.627 3.79-33.937 32.917-72.439 56.324-103.374l0.96-1.275c7.651-10.114 14.239-18.879 19.354-26.899 68.455-82.562 180.734-155.835 181.66-156.422 13.82-11.833 21.188-22.82 21.408-31.909 0.143-5.918-3.151-9.215-3.248-9.332l-2.721-2.489 0.232-0.264h-1.137v-20.076h326.346v6.763l16.725 56.419c52.549 167.999 54.274 314.241 54.196 315.232 0.559 5.351 15.568 56.385 27.661 97.6l0.312 1.048c24.075 82.149 54.070 184.335 61.185 223.536 3.045 16.819-6.64 33.072-24.685 41.413zM892.369 640.666c-6.92-38.113-38.15-144.5-60.93-222.199-19.744-67.243-27.85-95.357-28.526-102.904 0-1.412-0.607-141.387-53.285-309.721l-14.751-49.757h-278.893c1.137 3.411 1.962 7.341 1.922 11.95-0.063 16.115-10.292 32.994-30.608 50.286-1.131 0.725-112.509 74.095-176.787 151.455-5.141 8.203-12.978 18.584-20.566 28.583-20.569 27.231-48.777 64.557-51.833 92.2-4.589 41.247-41.407 122.958-46.096 133.212-0.593 4.145-2.509 22.396 6.906 34.14 5.68 7.106 15.121 11.082 28.016 11.787 50.226-20.938 107.613-154.182 108.178-155.537l1.229-2.821 2.449-1.902c3.457-2.509 21.491-15.078 38.978-15.078 3.996 0 7.777 0.647 11.131 1.942 6.975 2.607 16.060 9.097 19.521 25.014 0.573 2.157 13.763 54.156-4.445 141.857-7.238 35.108-15.631 67.18-24.482 101.154l-0.14 0.516c-14.273 54.634-29.059 111.134-40.851 186.635-1.094 25.284 6.453 40.221 21.127 42.112 16.762 2.346 37.95-11.426 40.287-22.276l2.945-8.39c3.099-10.16 8.98-35.34 12.895-52.185 33.327-142.020 64.522-259.598 108.627-259.598 3.583 0 8.842 1.054 13.6 6.101 18.114 19.125 15.258 95.978 8.332 220.377-3.351 60.243-7.611 169.881-0.842 180.646l2.721 5.651c4.15 8.945 14.482 12.958 22.683 12.958 1.194 0 2.326-0.083 3.454-0.209 13.978-1.504 29.348-12.557 31.565-22.737 1.753-7.8 4.019-45.351 6.685-88.795l0.086-1.461c15.058-248.51 25.034-309.186 50.662-309.186 29.102 0 43.335 57.837 71.42 231.582l0.137 0.733c6.88 42.561 17.232 106.571 21.861 115.972 15.035 7.553 28.718 9.401 36.661 5.044 10.077-5.571 13.388-20.529 14.35-31.96 0.040-3.102-3.076-28.036-6.058-52.148-27.231-218.759-31.141-293.799-16.115-308.842 3.999-3.973 9.624-5.686 14.665-4.508 15.347 3.202 25.484 26.309 52.735 96.884 20.612 53.24 46.196 119.48 72.751 151.75 0.212 0.249 1.489 0.899 4.251 0.899 3.257 0 6.98-0.899 10.518-2.509 6.617-3.088 13.233-9.086 11.861-16.716zM522.754 959.258c-57.015 6.817-108.945-34.048-115.765-91.063-6.064-50.839 25.799-97.542 73.164-111.907-1.504 7.401-1.994 14.617-2.077 22.035-33.794 14.11-55.697 49.364-51.149 87.494 5.508 46.033 47.442 79.007 93.452 73.508 46.041-5.505 79.016-47.419 73.528-93.449-2.979-24.825-16.596-45.724-35.681-58.951 0.61-1.676 1.197-3.343 1.59-5.121 1.197-5.402 1.862-10.821 2.117-16.247 27.661 15.797 47.835 43.933 51.893 77.927 6.806 57.023-34.031 108.954-91.072 115.774z" />
-<glyph unicode="&#xe958;" glyph-name="finger4" d="M913.759 724.495c-6.916 3.217-14.278 4.925-21.124 4.925-9.938 0-18.226-3.479-23.413-9.749-30.605-37.268-58.645-109.757-81.197-168.015-10.385-26.922-24.332-62.964-33.75-79.888-5.144 49.577 17.103 228.361 25.656 297.194l0.155 1.12c5.938 47.827 6.888 56.213 6.584 59.936-2.322 26.645-11.612 44.671-27.677 53.556-16.217 9.022-38.267 7.083-62.724-5.485-12.282-6.334-17.252-30.633-35.126-141.169l-0.082-0.49c-9.831-60.718-32.477-200.562-49.876-222.886-15.478 34.045-26.916 222.030-31.853 303.403-3.436 56.998-5.479 89.707-7.686 99.721-4.654 20.938-29.123 40.203-54.518 42.93-21.118 2.526-39.274-7.083-48.874-25.3-16.75-16.254-15.277-74.196-7.652-211.697 3.631-65.427 11.125-200.587-0.52-214.896-21.005 3.802-51.459 90.273-90.514 257.080-10.958 46.713-14.4 60.77-18.318 67.104-7.126 21.578-35.144 39.773-61.394 39.773-2.249 0-4.438-0.146-6.602-0.408-13.874-1.759-45.961-12.224-43.368-71.070 12.744-82.21 28.651-143.001 44.020-202.042l0.314-1.172c9.226-35.336 17.937-68.753 25.62-105.675 18.077-87.181 5.019-139.595 4.876-140.201-1.187-5.406-3.105-8.614-5.707-9.603-0.956-0.332-2.118-0.542-3.43-0.542-7.673 0-18.756 5.875-24.436 9.573-11.67 26.822-70.102 154.747-129.684 176.105l-2.146 0.797-2.228-0.055c-22.442-0.569-39.39-7.896-50.451-21.757-17.478-21.934-12.957-51.745-11.786-57.738l0.752-2.17c0.438-0.937 42.93-93.567 47.581-135.62 4.021-36.063 34.973-76.978 59.847-109.854l1.026-1.351c8.124-10.751 15.125-20.062 20.561-28.584 72.747-87.738 192.064-165.598 193.041-166.222 14.686-12.574 22.515-24.25 22.749-33.908 0.152-6.292-3.348-9.792-3.452-9.917l-2.892-2.645 0.247-0.283h-1.184v-21.331h346.744v7.186l17.773 59.954c55.842 178.525 57.683 333.93 57.592 334.983 0.594 5.686 16.552 59.914 29.406 103.715l0.32 1.114c25.583 87.293 57.467 195.884 65.028 237.542 3.217 17.876-7.062 35.144-26.228 44.010zM916.185 684.813c-7.354-40.498-40.54-153.554-64.748-236.117-20.981-71.459-29.595-101.331-30.313-109.352 0-1.501-0.645-150.245-56.624-329.127l-15.676-52.874h-296.351c1.205 3.622 2.079 7.798 2.036 12.699-0.064 17.124-10.933 35.062-32.52 53.437-1.208 0.77-119.561 78.737-187.87 160.941-5.458 8.717-13.791 19.751-21.855 30.374-21.858 28.937-51.827 68.601-55.081 97.974-4.876 43.831-44.001 130.664-48.978 141.555-0.63 4.404-2.666 23.806 7.339 36.285 6.036 7.552 16.062 11.776 29.768 12.525 53.373-22.25 114.353-163.845 114.952-165.282l1.312-3.001 2.599-2.021c3.674-2.663 22.838-16.020 41.42-16.020 4.246 0 8.264 0.688 11.828 2.064 7.412 2.77 17.067 9.667 20.744 26.582 0.609 2.292 14.625 57.549-4.724 150.744-7.689 37.305-16.61 71.389-26.015 107.492l-0.152 0.548c-15.164 58.058-30.876 118.097-43.408 198.328-1.163 26.871 6.858 42.744 22.451 44.75 17.812 2.496 40.33-12.142 42.814-23.672l3.126-8.915c3.296-10.796 9.545-37.558 13.706-55.458 35.412-150.918 68.562-275.863 115.43-275.863 3.805 0 9.396 1.12 14.452 6.483 19.255 20.323 16.214 101.992 8.854 234.181-3.561 64.020-8.087 180.528-0.895 191.964l2.892 6.005c4.417 9.506 15.389 13.77 24.101 13.77 1.272 0 2.475-0.088 3.674-0.225 14.863-1.598 31.184-13.344 33.549-24.162 1.854-8.285 4.258-48.193 7.104-94.358l0.082-1.552c15.998-264.084 26.603-328.561 53.833-328.561 30.937 0 46.062 61.461 75.894 246.092l0.146 0.782c7.323 45.228 18.315 113.248 23.23 123.238 15.98 8.027 30.52 9.99 38.958 5.357 10.708-5.92 14.23-21.815 15.249-33.963 0.043-3.296-3.269-29.793-6.435-55.416-28.937-232.465-33.092-312.212-17.124-328.195 4.249-4.219 10.227-6.039 15.581-4.791 16.312 3.406 27.081 27.954 56.039 102.957 21.906 56.575 49.094 126.966 77.31 161.258 0.228 0.265 1.586 0.959 4.529 0.959 3.449 0 7.409-0.959 11.168-2.666 7.043-3.269 14.053-9.646 12.595-17.755zM747.836 947.338c-59.893 11.612-118.069-27.671-129.724-87.573-10.352-53.41 19.791-105.367 68.893-124.251-1.041 7.953-0.998 15.645-0.499 23.495-34.748 17.578-55.209 56.627-47.459 96.68 9.408 48.375 56.396 80.076 104.75 70.686 48.351-9.375 80.061-56.347 70.665-104.722-5.062-26.058-21.115-47.167-42.355-59.713 0.499-1.823 1.001-3.634 1.294-5.54 0.852-5.829 1.114-11.63 0.977-17.401 30.542 14.604 54.082 42.869 61.019 78.582 11.624 59.92-27.647 118.118-87.561 129.757z" />
-<glyph unicode="&#xe959;" glyph-name="finger5" d="M882.684 724.498c-6.915 3.217-14.278 4.925-21.124 4.925-9.938 0-18.226-3.479-23.413-9.749-30.605-37.268-58.647-109.755-81.196-168.013-10.385-26.922-24.332-62.963-33.749-79.893-5.144 49.577 17.103 228.365 25.656 297.197l0.155 1.12c5.938 47.827 6.888 56.212 6.584 59.935-2.322 26.645-11.612 44.67-27.677 53.555-16.217 9.022-38.269 7.080-62.726-5.485-12.279-6.337-17.249-30.632-35.122-141.167l-0.082-0.493c-9.831-60.711-32.48-200.557-49.875-222.883-15.478 34.051-26.916 222.031-31.853 303.406-3.436 56.998-5.479 89.7-7.686 99.72-4.657 20.938-29.123 40.196-54.52 42.929-21.118 2.526-39.274-7.083-48.874-25.3-16.75-16.254-15.277-74.195-7.652-211.694 3.628-65.426 11.125-200.584-0.52-214.893-21.002 3.796-51.455 90.266-90.513 257.077-10.958 46.707-14.4 60.769-18.317 67.103-7.125 21.577-35.143 39.773-61.393 39.773-2.249 0-4.438-0.152-6.602-0.408-13.877-1.759-45.964-12.224-43.371-71.069 12.747-82.215 28.651-142.999 44.019-202.039l0.314-1.172c9.223-35.335 17.937-68.753 25.619-105.674 18.077-87.18 5.019-139.593 4.876-140.205-1.187-5.397-3.105-8.605-5.707-9.594-0.959-0.332-2.118-0.542-3.43-0.542-7.673 0-18.756 5.874-24.438 9.573-11.67 26.813-70.101 154.745-129.68 176.097l-2.146 0.804-2.228-0.055c-22.442-0.569-39.389-7.896-50.45-21.757-17.477-21.933-12.957-51.744-11.785-57.737l0.749-2.17c0.438-0.937 42.929-93.565 47.583-135.618 4.021-36.063 34.973-76.977 59.847-109.853l1.026-1.351c8.124-10.751 15.124-20.061 20.561-28.584 72.746-87.737 192.059-165.596 193.039-166.22 14.686-12.574 22.515-24.25 22.749-33.908 0.152-6.291-3.348-9.792-3.452-9.917l-2.892-2.645 0.244-0.292h-1.181v-21.334h346.734v7.199l17.77 59.944c55.844 178.532 57.686 333.935 57.594 334.988 0.59 5.686 16.552 59.914 29.403 103.713l0.323 1.114c25.583 87.292 57.466 195.882 65.027 237.539 3.229 17.858-7.049 35.137-26.216 44.004zM885.11 684.816c-7.354-40.497-40.537-153.552-64.744-236.114-20.981-71.459-29.595-101.33-30.313-109.35 0-1.501-0.645-150.243-56.623-329.135l-15.675-52.873h-296.347c1.205 3.634 2.079 7.81 2.036 12.711-0.064 17.124-10.93 35.061-32.52 53.436-1.208 0.77-119.559 78.724-187.868 160.93-5.457 8.726-13.791 19.76-21.854 30.383-21.86 28.937-51.826 68.6-55.083 97.973-4.876 43.83-43.998 130.663-48.977 141.554-0.63 4.404-2.666 23.805 7.339 36.285 6.036 7.552 16.062 11.776 29.771 12.519 53.372-22.25 114.348-163.837 114.948-165.274l1.312-3.001 2.599-2.021c3.671-2.663 22.837-16.019 41.42-16.019 4.246 0 8.264 0.688 11.828 2.064 7.412 2.77 17.066 9.667 20.743 26.581 0.609 2.292 14.625 57.549-4.724 150.737-7.686 37.311-16.61 71.395-26.015 107.497l-0.149 0.548c-15.167 58.054-30.879 118.092-43.41 198.326-1.16 26.87 6.858 42.738 22.451 44.743 17.812 2.499 40.333-12.136 42.817-23.665l3.126-8.915c3.296-10.796 9.545-37.557 13.706-55.457 35.411-150.916 68.558-275.86 115.426-275.86 3.808 0 9.396 1.12 14.455 6.483 19.255 20.317 16.214 101.991 8.854 234.178-3.561 64.020-8.087 180.526-0.895 191.961l2.889 6.005c4.417 9.5 15.392 13.77 24.104 13.77 1.269 0 2.475-0.088 3.674-0.225 14.857-1.598 31.186-13.344 33.545-24.161 1.854-8.285 4.264-48.192 7.11-94.357l0.082-1.558c15.998-264.074 26.603-328.551 53.832-328.551 30.937 0 46.061 61.457 75.893 246.089l0.146 0.782c7.323 45.221 18.314 113.24 23.23 123.236 15.977 8.026 30.517 9.984 38.957 5.357 10.708-5.92 14.23-21.815 15.249-33.962 0.043-3.296-3.269-29.795-6.435-55.415-28.94-232.462-33.095-312.212-17.127-328.2 4.249-4.21 10.23-6.030 15.584-4.782 16.309 3.406 27.080 27.948 56.039 102.955 21.903 56.575 49.093 126.965 77.309 161.256 0.228 0.265 1.583 0.959 4.529 0.959 3.449 0 7.409-0.959 11.168-2.666 7.040-3.281 14.047-9.646 12.589-17.754zM914.902 777.057c-53.269 29.728-120.807 10.571-150.578-42.707-26.49-47.51-14.053-106.279 26.666-139.56 1.531 7.892 3.936 15.188 6.885 22.496-27.519 27.54-34.802 71.017-14.896 106.663 24.021 43.018 78.538 58.462 121.559 34.449 42.987-24 58.468-78.511 34.446-121.553-12.939-23.175-34.793-38.218-58.876-43.508-0.082-1.887-0.195-3.771-0.52-5.661-1.011-5.792-2.542-11.381-4.48-16.832 33.573 4.353 64.741 23.842 82.489 55.628 29.759 53.287 10.617 120.835-42.695 150.584z" />
-<glyph unicode="&#xe95a;" glyph-name="fingerprint-check" d="M146.534 672.217c6.854-1.498 13.212-1.402 32.776 13.622 8.665 6.661 21.497 17.898 33.366 33.572l5.182 6.877c44.38 59.027 148.287 197.224 298.353 189.725 123.76-9.033 211.48-102.489 253.695-270.301 1.434-5.704 2.317-9.203 3.264-11.888 6.451-27.443 17.257-61.634 32.85-72.883 3.87-2.8 8.34-4.134 12.784-4.134 6.774 0 13.444 3.155 17.721 9.068 6.825 9.442 5.008 22.509-3.948 29.744-4.302 5.578-12.426 28.941-17.25 49.823-0.277 1.241-0.683 2.456-1.167 3.612-0.4 1.428-1.192 4.531-1.898 7.322-6.693 26.592-24.462 97.249-67.557 163.7-55.646 85.799-131.53 132.742-225.592 139.525-0.161 0.016-0.303 0.016-0.464 0.029-173.364 8.836-287.151-142.483-335.727-207.101l-5.117-6.78c-13.299-17.585-28.999-28.529-34.407-31.7-1.853-0.712-3.612-1.692-5.249-2.952-6.799-5.162-10.119-13.934-8.292-22.255 1.84-8.292 8.369-14.795 16.676-16.625zM693.79 588.429c16.499 41.193 16.896 83.756 1.105 116.764-14.095 29.438-40.362 50.783-75.961 61.679-52.25 15.99-115.595-13.029-173.606-79.512-0.744-0.809-83.35-87.694-170.1-140.804-0.645-0.387-64.138-38.486-130.441-56.545-11.646-3.171-18.533-15.175-15.346-26.821 3.181-11.646 15.175-18.517 26.821-15.339 72.145 19.648 138.768 59.613 141.687 61.369 94.091 57.615 179.423 148.432 180.151 149.27 35.238 40.355 87.359 79.058 128.040 66.603 23.921-7.328 40.539-20.373 49.33-38.77 10.531-22.013 9.706-51.763-2.24-81.655-22.287-55.63-91.597-122.807-195.197-189.152-51.96-33.305-182.793-114.989-275.186-154.487-11.095-4.744-16.238-17.579-11.498-28.684 3.535-8.282 11.598-13.254 20.086-13.254 2.868 0 5.784 0.564 8.588 1.766 95.409 40.79 228.698 123.976 281.567 157.838 78.694 50.397 179.358 127.679 212.199 209.734zM341.889 751.546c-9.909-10.928-18.813-22.651-28.394-33.856-12.545-14.679-26.289-28.387-40.61-41.316-14.733-13.303-26.637-22.822-44.019-32.795-18.439-10.583-37.207-21.275-56.304-30.569-6.574-3.203-12.22-5.282-19.603-7.512-11.408-3.419-18.465-15.184-15.268-26.876 3.103-11.272 15.478-18.687 26.885-15.268 22.348 6.722 42.582 18.217 62.755 29.676 17.050 9.693 33.965 18.41 49.63 30.321 30.498 23.208 56.768 50.31 80.924 79.954 9.787 12.004 20.247 23.444 31.165 34.42 5.975 6 12.133 11.785 18.439 17.431 3.264 2.936 6.593 5.801 9.974 8.636 1.692 1.434 3.442 2.845 5.162 4.257 0.464 0.374 3.838 3.039 4.721 3.738 15.223 11.669 31.423 22.023 48.479 30.785 16.1 8.275 32.283 14.082 51.902 18.159 6.484 1.357 7.918 1.505 12.771 2.001 11.843 1.231 21.868 9.010 21.868 21.852 0 10.982-9.983 23.083-21.868 21.845-79-8.153-146.531-57.525-198.61-114.882zM171.843 333.171c47.487 16.29 291.202 107.303 427.691 298.607 7.003 9.825 4.721 23.47-5.095 30.472-9.816 7.009-23.466 4.731-30.482-5.095-128.739-180.444-361.037-267.114-406.303-282.649-0.97-0.332-1.566-0.551-1.759-0.638-11.292-4.267-16.983-16.883-12.703-28.178 3.306-8.733 11.617-14.115 20.45-14.115 2.472 0 4.979 0.429 7.454 1.321l0.748 0.274zM456.713 240.968c5.066 23.444 13.448 45.644 24.707 66.090-26.27-14.691-60-36.624-102.45-64.605-54.544-35.97-116.394-76.721-143.279-83.966-11.662-3.132-18.578-15.13-15.433-26.779 2.639-9.758 11.446-16.187 21.078-16.187 1.898 0 3.793 0.242 5.691 0.761 33.724 9.075 93.118 48.225 155.995 89.666 17.186 11.34 35.802 23.592 53.69 35.019zM452.985 159.523c-29.686-18.968-68.108-46.272-116.545-81.639-11.662-8.504-21.723-15.858-28.716-20.798-9.861-6.957-12.191-20.601-5.249-30.446 4.279-6.033 11.034-9.242 17.866-9.242 4.373 0 8.772 1.289 12.587 4.002 7.26 5.127 17.472 12.571 29.273 21.185 21.82 15.922 64.353 46.978 100.774 71.237-4.74 14.691-8.092 29.976-9.99 45.702zM493.943 50.712c-38.135-12.99-91.245-66.355-102.182-77.669-8.404-8.669-8.188-22.496 0.483-30.891 4.257-4.112 9.722-6.152 15.197-6.152 5.71 0 11.43 2.217 15.71 6.648 29.27 30.227 70.837 64.566 86.969 67.357 7.405 1.27 16.612-1.853 27.056-7.421-16.435 14.086-30.994 30.24-43.233 48.128zM830.182 438.444c-18.217 7.699-37.252 15.781-52.578 28.545-16.873 14.034-24.713 32.48-28.232 53.761-4.589 27.759-46.691 15.945-42.147-11.617 6.207-37.584 26.663-63.686 54.267-83.186 22.496-6.142 43.713-15.381 63.171-27.295 5.314 1.115 10.080 4.234 13.396 9.88 5.404 9.287 3.11 25.277-7.876 29.911zM639.774 442.204c-7.94-2.175-15.152-10.138-16.241-18.681 12.958 4.047 26.421 7.012 40.207 8.875-5.195 7.885-13.686 12.639-23.966 9.806zM683.6 412.815c-116.761 0-211.735-94.987-211.735-211.738s94.974-211.735 211.735-211.735c116.745 0 211.738 94.983 211.738 211.735s-94.996 211.738-211.738 211.738zM683.6 34.512c-91.838 0-166.565 74.723-166.565 166.565s74.727 166.565 166.565 166.565c91.841 0 166.565-74.723 166.565-166.565 0-91.838-74.723-166.565-166.565-166.565zM658.126 161.73l-57.158 52.537-30.569-33.272 91.874-84.394 136.502 161.825-34.507 29.135z" />
-<glyph unicode="&#xe95b;" glyph-name="fingerprint-crosshair" d="M199.95 704.952c-6.121-4.648-9.109-12.544-7.465-20.035 1.668-7.496 7.525-13.348 15.036-14.996 6.171-1.355 11.895-1.262 29.487 12.26 7.827 5.997 19.374 16.113 30.038 30.221l4.665 6.194c39.954 53.134 133.497 177.553 268.593 170.803 111.411-8.132 190.411-92.273 228.387-243.342 1.288-5.132 2.086-8.283 2.959-10.702 5.799-24.706 15.547-55.487 29.565-65.614 3.493-2.521 7.505-3.722 11.497-3.722 6.124 0 12.132 2.84 15.965 8.167 6.153 8.497 4.508 20.261-3.536 26.774-3.893 5.022-11.198 26.055-15.527 44.854-0.261 1.117-0.618 2.205-1.073 3.252-0.357 1.279-1.062 4.079-1.688 6.588-6.034 23.946-22.019 87.555-60.807 147.373-50.128 77.245-118.432 119.502-203.121 125.615-0.139 0.009-0.267 0.009-0.418 0.023-156.068 7.978-258.503-128.249-302.228-186.422l-4.607-6.11c-11.973-15.826-26.107-25.681-30.995-28.532-1.648-0.641-3.229-1.529-4.726-2.649zM700.184 594.478c14.833 37.088 15.19 75.406 0.975 105.119-12.689 26.504-36.336 45.719-68.365 55.527-47.039 14.395-104.066-11.729-156.312-71.582-0.67-0.728-75.037-78.951-153.115-126.761-0.577-0.348-57.761-34.648-117.448-50.906-10.485-2.855-16.664-13.661-13.795-24.146 2.834-10.479 13.661-16.676 24.143-13.803 64.93 17.682 124.91 53.656 127.535 55.243 84.706 51.869 161.554 133.628 162.204 134.376 31.709 36.336 78.646 71.176 115.252 59.96 21.535-6.597 36.496-18.338 44.41-34.897 9.498-19.817 8.758-46.6-2.016-73.511-20.044-50.082-82.441-110.558-175.729-170.286-46.786-29.971-164.554-103.511-247.72-139.073-10.009-4.27-14.627-15.826-10.371-25.811 3.194-7.465 10.458-11.932 18.083-11.932 2.582 0 5.207 0.496 7.729 1.578 85.893 36.722 205.888 111.62 253.504 142.099 70.828 45.359 161.473 114.948 191.035 188.807zM383.381 741.341c-8.941-9.843-16.937-20.392-25.579-30.479-11.294-13.215-23.65-25.559-36.56-37.195-13.244-11.979-23.983-20.551-39.629-29.527-16.58-9.524-33.496-19.153-50.688-27.52-5.918-2.89-10.981-4.755-17.627-6.76-10.27-3.078-16.644-13.67-13.745-24.195 2.773-10.148 13.914-16.829 24.184-13.745 20.119 6.052 38.358 16.397 56.516 26.716 15.329 8.721 30.557 16.574 44.663 27.296 27.476 20.894 51.126 45.292 72.873 71.979 8.79 10.807 18.207 21.106 28.036 30.984 5.376 5.402 10.94 10.604 16.6 15.686 2.959 2.646 5.962 5.228 8.982 7.778 1.543 1.291 3.095 2.562 4.665 3.832 0.418 0.339 3.476 2.744 4.25 3.377 13.705 10.493 28.289 19.815 43.641 27.703 14.497 7.45 29.043 12.678 46.708 16.345 5.857 1.221 7.128 1.352 11.517 1.802 10.662 1.108 19.675 8.111 19.675 19.667 0 9.896-8.996 20.781-19.675 19.672-71.126-7.331-131.942-51.791-178.807-103.416zM230.295 364.682c42.73 14.662 262.158 96.598 385.006 268.825 6.313 8.845 4.268 21.126-4.59 27.427-8.834 6.313-21.126 4.265-27.41-4.581-115.899-162.447-325.048-240.473-365.783-254.47-0.879-0.29-1.395-0.476-1.59-0.554-10.165-3.853-15.269-15.21-11.436-25.376 2.979-7.862 10.458-12.71 18.413-12.71 2.228 0 4.503 0.4 6.71 1.192l0.679 0.247zM765.57 247.579c-27.259 9.086-60.639 32.843-92.888 55.817-46.74 33.279-87.068 62.029-119.949 56.36-24.703-4.27-67.854-31.84-135.981-76.752-49.124-32.385-104.785-69.072-129.001-75.594-10.479-2.82-16.705-13.621-13.876-24.105 2.359-8.787 10.305-14.575 18.979-14.575 1.688 0 3.415 0.218 5.123 0.685 30.34 8.17 83.813 43.415 140.428 80.723 45.727 30.145 102.641 67.66 121.017 70.828 16.71 2.858 57.584-26.229 90.436-49.638 34.619-24.642 70.427-50.148 103.262-61.1 10.316-3.447 21.445 2.144 24.88 12.431 3.435 10.345-2.144 21.486-12.431 24.92zM716.309 151.218c-15.846 5.738-41.619 21.654-66.557 37.050-52.655 32.533-86.116 52.281-110.14 48.129-24.334-4.198-75.4-38.927-161.162-101.521-10.499-7.647-19.559-14.279-25.831-18.727-8.877-6.252-11.001-18.547-4.726-27.398 3.832-5.442 9.913-8.341 16.084-8.341 3.911 0 7.876 1.172 11.338 3.615 6.533 4.616 15.707 11.317 26.33 19.081 34.129 24.909 124.785 91.098 144.452 94.495 12.269 0.833 56.54-26.47 82.98-42.791 27.851-17.215 54.158-33.476 73.865-40.584 10.215-3.702 21.483 1.587 25.187 11.813 3.687 10.206-1.593 21.483-11.819 25.179zM649.871 53.416c-11.042 7.215-21.21 14.465-31.036 21.474-32.266 23.032-60.143 42.939-90.703 37.627-34.436-5.939-89.235-61.057-99.876-72.037-7.546-7.804-7.351-20.253 0.458-27.81 3.812-3.702 8.753-5.55 13.682-5.55 5.147 0 10.27 2.005 14.143 5.997 26.33 27.212 63.755 58.129 78.289 60.639 14.355 2.463 36.058-12.985 61.187-30.894 9.658-6.91 20.618-14.732 32.365-22.399 9.104-5.936 21.314-3.374 27.233 5.721 5.915 9.104 3.351 21.294-5.741 27.233zM822.974 459.47c-16.4 6.925-33.537 14.201-47.334 25.692-15.21 12.631-22.28 29.237-25.437 48.399-4.111 24.99-42.014 14.358-37.923-10.458 8.399-51.036 45.965-78.649 90.839-97.613 9.875-4.169 20.987-3.078 26.902 7.061 4.909 8.346 2.843 22.739-7.047 26.919zM784.792 356.828c-14.775 4.546-25.971 10.325-41.619 19.556-28.634 16.916-54.744 41.439-67.43 72.734-4.033 9.922-12.948 16.838-24.207 13.737-9.431-2.594-17.769-14.242-13.74-24.201 23.45-57.802 77.262-101.492 136.532-119.752 24.323-7.494 34.628 30.476 10.464 37.926zM30.801 929.019h191.145v30.499h-221.644v-221.641h30.499zM802.344 959.518v-30.499h191.157v-191.142h30.496v221.641zM30.499 158.129h-30.499v-221.647h221.633v30.499h-191.133zM993.182-33.019h-191.154v-30.499h221.653v221.647h-30.499z" />
-<glyph unicode="&#xe95c;" glyph-name="fingerprint-remove" d="M146.555 672.221c6.851-1.498 13.212-1.402 32.747 13.621 8.694 6.664 21.526 17.898 33.369 33.572l5.185 6.877c44.38 59.026 148.279 197.221 298.346 189.726 123.772-9.036 211.5-102.491 253.711-270.294 1.434-5.704 2.282-9.203 3.264-11.894 6.429-27.439 17.256-61.633 32.85-72.883 3.87-2.797 8.34-4.131 12.784-4.131 6.774 0 13.444 3.148 17.72 9.065 6.825 9.442 4.985 22.509-3.948 29.747-4.325 5.575-12.426 28.941-17.25 49.823-0.277 1.241-0.683 2.449-1.167 3.612-0.419 1.421-1.192 4.528-1.898 7.318-6.693 26.592-24.462 97.248-67.556 163.698-55.646 85.801-131.564 132.74-225.605 139.53-0.139 0.010-0.287 0.010-0.464 0.023-173.34 8.842-287.148-142.481-335.713-207.092l-5.117-6.787c-13.306-17.585-28.999-28.525-34.429-31.699-1.83-0.712-3.596-1.692-5.256-2.945-6.799-5.162-10.106-13.94-8.266-22.261 1.853-8.298 8.362-14.804 16.692-16.625zM693.797 588.421c16.499 41.196 16.895 83.755 1.083 116.763-14.073 29.444-40.342 50.783-75.937 61.684-52.249 15.99-115.587-13.035-173.62-79.511-0.722-0.815-83.327-87.699-170.075-140.809-0.644-0.38-64.143-38.479-130.458-56.538-11.623-3.174-18.51-15.178-15.329-26.821 3.187-11.652 15.178-18.523 26.821-15.332 72.148 19.634 138.753 59.6 141.666 61.362 94.112 57.598 179.446 148.414 180.168 149.249 35.222 40.361 87.358 79.060 128.038 66.602 23.92-7.328 40.516-20.376 49.307-38.769 10.55-22.006 9.729-51.762-2.236-81.654-22.267-55.623-91.576-122.805-195.172-189.149-51.969-33.291-182.804-114.974-275.186-154.466-11.089-4.756-16.248-17.591-11.52-28.683 3.548-8.291 11.623-13.267 20.115-13.267 2.845 0 5.778 0.577 8.581 1.766 95.391 40.79 228.695 123.988 281.566 157.849 78.664 50.393 179.35 127.677 212.19 209.725zM341.9 751.555c-9.903-10.934-18.813-22.657-28.409-33.855-12.548-14.685-26.266-28.39-40.587-41.322-14.74-13.299-26.637-22.822-44.038-32.792-18.416-10.583-37.207-21.278-56.303-30.568-6.551-3.21-12.197-5.288-19.586-7.512-11.404-3.425-18.481-15.191-15.268-26.875 3.11-11.272 15.484-18.694 26.891-15.268 22.348 6.716 42.585 18.213 62.748 29.676 17.034 9.687 33.971 18.404 49.629 30.32 30.504 23.202 56.77 50.303 80.923 79.946 9.771 12.010 20.247 23.443 31.171 34.426 5.949 5.994 12.126 11.778 18.416 17.424 3.287 2.936 6.616 5.807 9.999 8.639 1.692 1.434 3.438 2.845 5.162 4.257 0.435 0.367 3.835 3.036 4.718 3.738 15.197 11.662 31.403 22.016 48.479 30.778 16.103 8.282 32.26 14.082 51.875 18.165 6.506 1.35 7.918 1.498 12.793 1.995 11.843 1.231 21.868 9.010 21.868 21.852 0 10.989-9.983 23.083-21.868 21.852-79.002-8.163-146.564-57.534-198.614-114.874zM171.851 333.166c47.46 16.29 291.195 107.302 427.67 298.607 6.993 9.825 4.731 23.466-5.082 30.468-9.838 7.015-23.489 4.731-30.481-5.095-128.734-180.442-361.029-267.11-406.292-282.649-0.97-0.332-1.566-0.538-1.782-0.638-11.272-4.267-16.96-16.883-12.684-28.174 3.306-8.736 11.598-14.118 20.427-14.118 2.491 0 5.001 0.432 7.45 1.324l0.773 0.274zM456.72 240.965c5.050 23.443 13.454 45.643 24.707 66.090-26.263-14.688-59.999-36.623-102.445-64.601-54.566-35.96-116.392-76.72-143.29-83.955-11.646-3.145-18.555-15.139-15.416-26.785 2.623-9.758 11.453-16.186 21.085-16.186 1.875 0 3.793 0.242 5.691 0.757 33.701 9.074 93.097 48.227 155.983 89.668 17.179 11.356 35.779 23.608 53.686 35.012zM453.001 159.523c-29.692-18.971-68.129-46.271-116.563-81.641-11.64-8.501-21.726-15.845-28.693-20.798-9.861-6.957-12.197-20.601-5.249-30.446 4.257-6.020 11.011-9.242 17.862-9.242 4.366 0 8.752 1.289 12.59 4.006 7.26 5.127 17.453 12.568 29.273 21.181 21.819 15.922 64.353 46.98 100.77 71.239-4.74 14.691-8.095 29.975-9.99 45.701zM493.956 50.723c-38.154-12.999-91.241-66.354-102.21-77.678-8.378-8.665-8.163-22.496 0.506-30.887 4.234-4.115 9.725-6.155 15.2-6.155 5.713 0 11.43 2.217 15.71 6.648 29.27 30.23 70.836 64.569 86.961 67.359 7.386 1.266 16.589-1.853 27.046-7.425-16.412 14.082-30.971 30.249-43.213 48.137zM830.188 438.46c-18.217 7.689-37.252 15.777-52.578 28.535-16.873 14.037-24.726 32.479-28.232 53.767-4.589 27.755-46.69 15.938-42.147-11.623 6.206-37.577 26.663-63.686 54.266-83.185 22.464-6.142 43.713-15.381 63.17-27.294 5.295 1.115 10.057 4.234 13.364 9.88 5.436 9.277 3.142 25.267-7.843 29.921zM639.76 442.221c-7.918-2.185-15.152-10.144-16.244-18.69 12.97 4.047 26.411 7.012 40.2 8.875-5.188 7.872-13.654 12.651-23.956 9.816zM683.585 412.809c-116.74 0-211.729-94.982-211.729-211.732s94.989-211.735 211.729-211.735c116.763 0 211.735 94.985 211.735 211.735s-94.985 211.732-211.735 211.732zM683.585 34.511c-91.837 0-166.56 74.723-166.56 166.563s74.723 166.563 166.56 166.563c91.84 0 166.563-74.723 166.563-166.563s-74.735-166.563-166.563-166.563zM739.54 290.301l-53.883-57.144-53.857 57.144-35.334-26.685 58.945-62.538-58.945-62.529 35.334-26.698 53.857 57.147 53.883-57.147 35.334 26.698-58.955 62.529 58.955 62.538z" />
-<glyph unicode="&#xe95d;" glyph-name="rename" d="M292.64 960h438.752v-27.918h-37c-41.803 0-72.25-12.332-91.376-37-12.592-16.125-18.875-54.875-18.875-116.292v-487.75h90.1v-64h-90.1v-109.79c0-51.834 3.261-86.083 9.813-102.709 5.030-12.584 15.595-23.374 31.709-32.459 21.647-12.082 44.562-18.114 68.73-18.114h37v-27.968h-438.752v27.968h36.249c42.292 0 72.99 12.323 92.126 36.989 12.083 16.125 18.125 54.875 18.125 116.293v109.79h-93.157v64h93.157v487.75c0 51.835-3.282 86.085-9.813 102.667-5.042 12.584-15.365 23.418-30.97 32.5-22.155 12.084-45.302 18.125-69.469 18.125h-36.249z" />
-<glyph unicode="&#xe95e;" glyph-name="fingerprint-scanning" d="M309.333 835.448c-3.31-4.367-7.212-7.084-8.56-7.869-0.449-0.183-0.889-0.428-1.308-0.727-1.69-1.287-2.515-3.462-2.054-5.538 0.449-2.066 2.075-3.683 4.147-4.141 1.699-0.376 3.285-0.333 8.138 3.383 2.155 1.647 5.345 4.456 8.288 8.34l1.287 1.705c11.017 14.672 36.841 48.991 74.127 47.13 30.747-2.237 52.543-25.457 63.028-67.16 0.351-1.412 0.575-2.292 0.801-2.943 1.611-6.833 4.3-15.326 8.184-18.107 0.963-0.7 2.066-1.030 3.169-1.030 1.684 0 3.352 0.779 4.401 2.249 1.696 2.356 1.247 5.589-0.981 7.386-1.073 1.39-3.074 7.185-4.288 12.371-0.064 0.309-0.168 0.608-0.278 0.898-0.092 0.351-0.296 1.125-0.471 1.818-1.656 6.604-6.069 24.158-16.79 40.682-13.826 21.313-32.675 32.975-56.042 34.659-0.046 0-0.076 0-0.119 0.009-43.072 2.191-71.346-35.404-83.415-51.458l-1.265-1.659zM350.1 836.884c-2.463-2.708-4.679-5.62-7.053-8.407-3.126-3.649-6.525-7.059-10.091-10.268-3.649-3.301-6.616-5.666-10.935-8.147-4.581-2.625-9.251-5.284-13.994-7.591-1.644-0.795-3.035-1.32-4.874-1.867-2.839-0.859-4.596-3.78-3.793-6.684 0.758-2.802 3.832-4.639 6.674-3.789 5.559 1.672 10.577 4.532 15.592 7.377 4.23 2.411 8.435 4.575 12.325 7.53 7.582 5.773 14.104 12.499 20.1 19.855 2.433 2.977 5.036 5.825 7.744 8.554 1.476 1.501 3.007 2.919 4.581 4.33 0.816 0.727 1.641 1.442 2.475 2.139 0.419 0.355 0.847 0.709 1.287 1.073 0.11 0.089 0.911 0.706 1.146 0.911 3.793 2.903 7.817 5.486 12.068 7.671 4.006 2.044 8.022 3.487 12.896 4.508 1.617 0.339 1.971 0.361 3.178 0.501 2.934 0.299 5.434 2.237 5.434 5.434 0 2.72-2.463 5.727-5.434 5.428-19.611-2.038-36.401-14.299-49.328-28.556zM473.366 751.66c1.339 2.301 0.767 6.274-1.95 7.42-4.529 1.931-9.266 3.933-13.077 7.102-4.196 3.478-6.146 8.065-7.014 13.355-1.134 6.897-11.598 3.964-10.473-2.891 2.323-14.070 12.692-21.71 25.081-26.945 2.732-1.137 5.779-0.837 7.432 1.959zM785.586 295.125c2.53 29.032-4.434 53.609-20.665 73.082-23.972 28.623-60.754 37.556-76.453 40.141-9.996 25.066-25.246 41.59-45.388 49.117-7.888 2.943-16.463 4.456-25.478 4.456-15.121 0-28.76-4.168-37.919-7.86-12.102 21.942-28.259 35.578-48.026 40.557-5.458 1.381-11.207 2.087-17.102 2.087-18.856 0-36.098-7.090-47.833-13.471-4.071 27.156-9.413 91.703-13.346 139.187l-0.031 0.544c-4.089 49.639-6.876 82.149-9.147 103.719 4.373-2.637 8.963-4.905 13.786-6.384 6.714-2.066 9.562 8.407 2.891 10.464-4.083 1.256-7.176 2.86-11.485 5.397-2.396 1.418-4.67 3.074-6.839 4.874-1.867 14.501-3.493 21.527-5.443 24.956-1.497 5.131-4.22 10.861-7.839 16.524 3.45 4.508 6.363 9.125 8.257 13.847 4.089 10.229 4.199 20.812 0.266 29.011-3.499 7.325-10.036 12.618-18.877 15.317-12.967 3.976-28.715-3.227-43.13-19.748-0.083-0.095-4.538-4.722-11.274-10.925-2.964-1.87-5.904-4.367-8.697-7.655-6.671-5.62-14.394-11.576-22.297-16.405-0.162-0.101-15.934-9.575-32.406-14.052-2.9-0.795-4.605-3.78-3.811-6.671 0.788-2.891 3.768-4.609 6.671-3.802 17.915 4.874 34.472 14.81 35.199 15.247 1.565 0.953 3.074 2.014 4.596 3.035-2.075-6.097-3.9-13.162-5.333-21.395-16.063-8.514-29.332-13.477-34.121-15.103-0.235-0.083-0.385-0.15-0.44-0.171-2.802-1.064-4.22-4.19-3.148-6.992 0.828-2.164 2.891-3.502 5.079-3.502 0.623 0 1.238 0.11 1.849 0.324l0.193 0.070c4.303 1.479 15.121 5.461 28.745 12.2-0.226-1.91-0.458-3.741-0.642-5.751 0-3.933 0-7.808-0.009-11.711-8.795-4.838-17.606-9.361-25.362-12.664-2.76-1.17-4.037-4.373-2.87-7.133 0.889-2.051 2.891-3.288 5.003-3.288 0.706 0 1.433 0.141 2.127 0.44 6.509 2.781 13.764 6.47 21.078 10.366-0.428-201.161-6.017-348.392-7.283-379.273-18.944-8.618-36.239-28.155-38.158-30.371-60.934-67.306-32.055-116.765-30.802-118.804 46.586-81.557 142.818-242.1 143.707-243.573l1.886-3.12 0.92 0.556v-1.455h307.753l11.356-3.359 15.898 54.382c63.908 122.055 46.589 286.712 44.392 304.739zM415.735 830.308c5.956-1.818 10.082-5.061 12.264-9.627 2.625-5.47 2.43-12.848-0.544-20.295-1.125-2.793-2.787-5.715-4.914-8.737-9.984 11.943-23.571 21.948-37.556 23.229 8.716 9.605 21.041 18.4 30.75 15.43zM720.651-1.281l-10.867-36.608h-291.669c-20.457 34.179-98.814 165.344-139.178 235.96-0.889 1.537-21.267 38.259 28.253 92.953 5.29 6.173 21.909 22.957 35.16 26.45l7.869 2.103 0.339 8.126c0.089 1.265 7.658 166.261 7.582 410.656 2.992 32.859 11.781 53.698 22.856 54.364l0.513 0.021c13.761 0 31.911-21.805 34.622-34.448l1.583-7.457 0.935-0.147c3.365-18.923 8.413-80.142 12.521-129.552 13.407-162.352 15.023-162.835 25.622-166.013l5.455-1.586 4.486 3.438c2.402 1.788 24.024 17.453 47.836 17.453 4.074 0 8.022-0.483 11.671-1.4 15.748-3.955 28.589-16.833 38.182-38.222l5.049-11.292 10.678 6.21c0.712 0.376 18.083 9.871 37.443 9.871 6.369 0 12.307-1.002 17.694-3.010 15.311-5.721 26.93-19.849 34.585-41.99l2.362-6.849 7.194-0.648c0.422-0.043 44.45-4.511 68.379-33.195 12.466-14.923 17.694-34.261 15.54-57.582l-0.064-1.623 0.104-0.7c0.822-7.096 19.806-175.401-42.736-295.284zM463.381 591.729h85.062v85.050h-11.714v-73.333h-73.348zM319.686 603.446h-73.348v73.333h-11.692v-85.050h85.040zM246.338 948.292h73.348v11.708h-85.040v-85.037h11.692zM536.729 874.953h11.714v85.047h-85.062v-11.708h73.348z" />
-<glyph unicode="&#xe95f;" d="M312.281 806.136c1.723-0.372 3.32-0.35 8.219 3.421 2.188 1.669 5.409 4.499 8.385 8.432l1.288 1.723c11.154 14.82 37.239 49.532 74.934 47.63 31.074-2.258 53.106-25.733 63.697-67.875 0.369-1.428 0.595-2.308 0.827-2.986 1.625-6.884 4.334-15.472 8.242-18.308 0.986-0.703 2.095-1.033 3.211-1.033 1.707 0 3.389 0.789 4.445 2.273 1.72 2.372 1.262 5.647-0.979 7.466-1.094 1.415-3.116 7.262-4.337 12.515-0.086 0.312-0.175 0.607-0.299 0.913-0.095 0.343-0.299 1.138-0.477 1.828-1.669 6.68-6.137 24.423-16.947 41.103-13.981 21.548-33.036 33.335-56.657 35.052-0.032 0-0.076 0-0.127 0-43.519 2.226-72.097-35.777-84.291-51.999l-1.278-1.698c-3.345-4.413-7.275-7.17-8.645-7.965-0.458-0.178-0.89-0.436-1.307-0.734-1.714-1.294-2.55-3.498-2.095-5.593s2.099-3.707 4.194-4.165z" />
-<glyph unicode="&#xe960;" d="M449.977 814.4c-3.542 7.399-10.137 12.776-19.074 15.501-13.138 4.009-29.014-3.262-43.599-19.955-0.191-0.223-20.925-22.041-42.708-35.364-0.169-0.102-16.108-9.663-32.756-14.194-2.916-0.795-4.636-3.825-3.857-6.731 0.804-2.932 3.825-4.655 6.747-3.857 18.105 4.925 34.842 14.979 35.564 15.408 23.624 14.477 45.058 37.284 45.249 37.475 8.846 10.14 21.936 19.86 32.155 16.737 6.006-1.851 10.175-5.113 12.385-9.739 2.639-5.529 2.439-13.001-0.572-20.502-3.351-8.388-11.055-17.818-22.232-27.621 1.339-1.625 2.553-3.367 3.58-5.304 0.757-1.479 1.259-3.021 1.873-4.55 11.777 10.032 22.219 21.507 26.963 33.386 4.149 10.35 4.238 21.033 0.283 29.31z" />
-<glyph unicode="&#xe961;" d="M361.339 826.050c-2.502-2.741-4.731-5.685-7.138-8.493-3.157-3.688-6.601-7.145-10.197-10.388-3.701-3.339-6.696-5.723-11.065-8.219-4.614-2.665-9.335-5.348-14.14-7.676-1.637-0.804-3.049-1.326-4.912-1.882-2.862-0.858-4.645-3.825-3.825-6.753 0.76-2.833 3.879-4.696 6.728-3.835 5.609 1.682 10.703 4.572 15.768 7.453 4.27 2.442 8.525 4.626 12.448 7.612 7.666 5.828 14.257 12.645 20.327 20.086 2.458 3.014 5.087 5.876 7.815 8.639 1.507 1.501 3.052 2.96 4.626 4.378 0.827 0.734 1.669 1.456 2.518 2.172 0.423 0.359 0.858 0.712 1.294 1.065 0.121 0.092 0.967 0.76 1.192 0.951 3.809 2.925 7.879 5.51 12.165 7.72 4.048 2.083 8.098 3.529 13.024 4.56 1.637 0.343 1.997 0.366 3.208 0.502 2.986 0.299 5.498 2.261 5.498 5.478 0 2.763-2.518 5.806-5.498 5.485-19.806-2.051-36.775-14.451-49.837-28.855z" />
-<glyph unicode="&#xe962;" d="M403.949 771.316c7.965 7.361 15.545 15.51 22.060 24.658 1.765 2.474 1.192 5.892-1.272 7.666-2.458 1.774-5.892 1.183-7.65-1.285-7.447-10.445-16.305-19.542-25.621-27.551 4.305-0.671 8.55-1.784 12.483-3.488z" />
-<glyph unicode="&#xe963;" d="M470.737 754.604c-4.238 3.52-6.21 8.146-7.1 13.494-1.148 6.973-11.71 3.997-10.579-2.922 1.126-6.785 4.114-12.079 8.27-16.343h19.351c-3.517 1.558-6.992 3.316-9.943 5.771z" />
-<glyph unicode="&#xe964;" d="M363.963 749.51h-66.969v-3.583h64.47c0.725 1.256 1.552 2.467 2.499 3.583z" />
-<glyph unicode="&#xe965;" d="M427.307 749.51c1.17-1.052 2.118-2.35 3.116-3.583h83.032v3.583h-86.148z" />
-<glyph unicode="&#xe966;" d="M523.292 751.246h19.847v-7.075h-19.847v7.075z" />
-<glyph unicode="&#xe967;" d="M264.769 751.246h19.86v-7.075h-19.86v7.075z" />
-<glyph unicode="&#xe968;" d="M353.874 720.296c-11.122-6.318-22.741-12.493-32.645-16.725-2.785-1.18-4.079-4.423-2.9-7.208 0.893-2.073 2.932-3.32 5.049-3.32 0.712 0 1.456 0.14 2.149 0.445 8.315 3.542 17.764 8.401 27.122 13.558 0.223 4.458 0.658 8.858 1.224 13.249z" />
-<glyph unicode="&#xe969;" d="M360.093 745.927h-13.214c-15.119-7.78-27.386-12.296-31.99-13.863-0.235-0.079-0.388-0.146-0.436-0.156-2.839-1.081-4.264-4.242-3.192-7.075 0.833-2.197 2.925-3.548 5.135-3.548 0.63 0 1.256 0.105 1.87 0.327l0.2 0.076c5.393 1.851 20.957 7.622 39.497 17.787 0.661 2.156 1.332 4.308 2.13 6.451z" />
-<glyph unicode="&#xe96a;" d="M467.783 689.015c-7.612 2.541-16.915 9.173-25.917 15.567-2.286 1.637-4.455 3.135-6.649 4.658-0.944-3.52-2.687-6.849-5.358-9.612 1.924-1.326 3.831-2.677 5.657-3.968 9.647-6.877 19.631-13.981 28.791-17.033 2.884-0.976 5.984 0.598 6.941 3.469 0.957 2.868-0.604 5.974-3.466 6.919z" />
-<glyph unicode="&#xe96b;" d="M485.932 745.927h-20.702c3.831-2.922 8.27-5.284 13.014-7.281 2.763-1.161 5.847-0.849 7.507 1.987 0.874 1.469 0.948 3.618 0.181 5.294z" />
-<glyph unicode="&#xe96c;" d="M473.131 719.495c-4.111 1.256-7.243 2.871-11.599 5.447-7.987 4.722-15.278 11.567-18.811 20.286-0.099 0.238-0.223 0.458-0.331 0.696h-10.009c-0.544-1.141-0.715-2.41-0.235-3.602 6.556-16.127 21.561-28.314 38.085-33.405 6.779-2.092 9.641 8.505 2.9 10.579z" />
-<glyph unicode="&#xe96d;" d="M475.417 576.839h88.485v88.491h-12.187v-76.298h-76.298z" />
-<glyph unicode="&#xe96e;" d="M325.89 589.033h-76.295v76.298h-12.191v-88.491h88.485z" />
-<glyph unicode="&#xe96f;" d="M249.595 947.819h76.295v12.181h-88.485v-88.472h12.191z" />
-<glyph unicode="&#xe970;" d="M551.715 871.515h12.187v88.485h-88.485v-12.181h76.298z" />
-<glyph unicode="&#xe971;" d="M782.916 287.505c2.477 28.419-4.331 52.47-20.216 71.531-23.45 28.019-59.455 36.759-74.819 39.281-9.793 24.537-24.721 40.696-44.429 48.072-7.726 2.881-16.101 4.362-24.941 4.362-14.785 0-28.127-4.079-37.103-7.695-11.854 21.485-27.65 34.836-47.017 39.707-5.335 1.348-10.963 2.035-16.725 2.035-18.458 0-35.344-6.951-46.823-13.189-3.987 26.581-9.214 89.757-13.068 136.249l-0.022 0.525c-8.582 104.033-11.3 131.88-15.914 139.979-5.86 20.168-31.055 49.716-56.171 47.929-16.588-1.011-37.513-14.661-42.848-73.97 0-208.862-5.866-363.288-7.167-394.712-18.54-8.423-35.478-27.551-37.351-29.729-59.656-65.862-31.376-114.272-30.152-116.275 45.592-79.802 139.791-236.966 140.65-238.403l1.838-3.037 0.916 0.556v-1.424h301.204l11.122-3.297 15.567 53.23c62.552 119.454 45.599 280.612 43.468 298.275zM287.023 192.489c-0.871 1.523-20.801 37.453 27.653 90.987 5.173 6.051 21.443 22.47 34.413 25.876l7.698 2.089 0.331 7.946c0.092 1.24 7.497 162.732 7.431 401.917 2.922 32.181 11.513 52.562 22.378 53.22l0.49 0.010c13.469 0 31.24-21.335 33.895-33.716l1.558-7.288 0.903-0.159c3.304-18.515 8.248-78.425 12.257-126.787 13.125-158.907 14.706-159.39 25.081-162.481l5.339-1.568 4.401 3.374c2.34 1.742 23.51 17.090 46.823 17.090 3.975 0 7.844-0.483 11.389-1.393 15.434-3.87 27.99-16.467 37.389-37.392l4.919-11.046 10.458 6.070c0.706 0.382 17.691 9.663 36.658 9.663 6.222 0 12.044-0.979 17.322-2.97 14.973-5.596 26.34-19.411 33.84-41.090l2.327-6.68 7.030-0.655c0.413-0.032 43.491-4.416 66.918-32.489 12.21-14.582 17.332-33.538 15.211-56.368l-0.073-1.587 0.118-0.687c0.817-6.954 19.38-171.683-41.824-289.013l-10.623-35.812h-285.493c-20.012 33.468-96.717 161.845-136.214 230.938z" />
-<glyph unicode="&#xe972;" glyph-name="fingerprint-search" d="M69.645 672.197c6.871-1.506 13.222-1.395 32.783 13.627 8.667 6.664 21.495 17.903 33.359 33.566l5.184 6.894c44.378 59.021 148.266 197.203 298.338 189.71 123.749-9.029 211.491-102.481 253.678-270.282 1.431-5.697 2.306-9.21 3.276-11.887 0.076-0.352 0.204-0.73 0.27-1.102 11.953-21.005 21.373-43.608 27.902-67.431 1.506-1.625 3.052-3.167 4.671-4.345 3.861-2.793 8.341-4.134 12.778-4.134 6.753 0 13.463 3.144 17.716 9.072 6.822 9.427 5 22.485-3.937 29.734-4.312 5.582-12.427 28.932-17.245 49.818-0.293 1.233-0.674 2.431-1.191 3.608-0.382 1.441-1.181 4.552-1.878 7.338-6.687 26.59-24.462 97.235-67.55 163.686-55.65 85.788-131.538 132.738-225.592 139.514-0.151 0.023-0.286 0.023-0.451 0.046-173.35 8.851-287.139-142.474-335.71-207.090l-5.105-6.776c-13.305-17.577-29.024-28.527-34.444-31.698-1.819-0.727-3.598-1.707-5.233-2.954-6.799-5.148-10.121-13.933-8.295-22.264 1.849-8.325 8.368-14.824 16.676-16.65zM590.263 740.954c-13.206 11.298-29.369 20.097-48.246 25.886-6.888 2.098-13.979 3.375-21.222 3.944 24.623-6.983 47.933-17.068 69.467-29.83zM79.388 447.842c23.856 6.499 47.062 15.212 67.599 24.044-0.273 5.269-0.431 10.558-0.431 15.893 0 11.032 0.664 21.929 1.852 32.642-22.922-10.765-51.453-22.511-80.509-30.435-11.64-3.151-18.502-15.173-15.331-26.813 3.154-11.644 15.163-18.525 26.82-15.331zM205.945 310.782c-34.711-19.021-69.435-36.707-99.978-49.752-11.104-4.75-16.252-17.574-11.506-28.672 3.536-8.315 11.617-13.259 20.087-13.259 2.871 0 5.786 0.562 8.588 1.733 34.395 14.712 73.724 34.974 112.437 56.413-10.69 10.427-20.613 21.603-29.629 33.536zM265.006 751.535c-9.914-10.94-18.811-22.676-28.399-33.862-12.555-14.67-26.271-28.386-40.585-41.309-14.745-13.305-26.659-22.82-44.032-32.806-18.426-10.558-37.217-21.278-56.304-30.563-6.575-3.197-12.229-5.289-19.607-7.496-11.384-3.424-18.465-15.189-15.235-26.873 3.089-11.285 15.466-18.686 26.866-15.265 22.34 6.73 42.588 18.212 62.748 29.672 6.822 3.894 13.601 7.624 20.304 11.476 32.254 74.312 94.311 132.784 171.008 160.265 1.312 1.102 2.641 2.177 3.963 3.289 0.451 0.352 3.848 3.039 4.707 3.73 15.212 11.647 31.431 22.018 48.492 30.774 16.104 8.292 32.27 14.078 51.877 18.166 6.503 1.345 7.92 1.487 12.782 1.983 11.838 1.233 21.857 9.029 21.857 21.853 0 10.986-9.986 23.077-21.857 21.843-78.986-8.18-146.53-57.574-198.584-114.878zM94.962 333.158c13.209 4.536 41.631 14.861 78.703 31.517-6.092 13.147-11.239 26.833-15.344 40.95-36.543-16.502-64.655-26.711-77.549-31.158-0.977-0.329-1.579-0.539-1.779-0.608-11.285-4.302-16.975-16.91-12.703-28.175 3.309-8.743 11.621-14.101 20.442-14.101 2.477 0 4.996 0.405 7.447 1.283l0.783 0.293zM569.38 223.523c21.748-15.439 43.786-30.751 65.33-42.953l-50.561 50.65c-4.848-2.71-9.802-5.266-14.768-7.697zM336.483 212.761c-15.989 6.069-31.32 13.509-45.841 22.153-51.525-33.925-106.826-69.698-131.837-76.427-11.667-3.151-18.574-15.15-15.439-26.794 2.628-9.769 11.446-16.186 21.084-16.186 1.881 0 3.806 0.247 5.697 0.766 33.701 9.095 93.1 48.242 155.979 89.666 3.408 2.233 6.861 4.529 10.358 6.822zM634.801 96.048c-17.594 6.374-46.239 24.064-73.931 41.167-58.482 36.141-95.656 58.057-122.325 53.475-27.021-4.681-83.762-43.243-178.994-112.786-11.66-8.509-21.725-15.847-28.711-20.797-9.841-6.97-12.196-20.6-5.246-30.451 4.266-6.019 11.022-9.249 17.864-9.249 4.368 0 8.762 1.303 12.601 4.006 7.263 5.134 17.459 12.598 29.267 21.182 37.895 27.692 138.59 101.195 160.443 104.977 13.62 0.921 62.781-29.402 92.15-47.525 30.954-19.113 60.185-37.191 82.045-45.091 11.331-4.108 23.873 1.779 27.981 13.124 4.102 11.354-1.786 23.86-13.144 27.968zM561.009-12.57c-12.279 8.006-23.547 16.074-34.477 23.853-35.826 25.606-66.81 47.713-100.757 41.782-38.22-6.598-99.1-67.806-110.914-79.999-8.401-8.667-8.17-22.511 0.497-30.918 4.24-4.072 9.726-6.144 15.189-6.144 5.707 0 11.407 2.23 15.686 6.661 29.264 30.214 70.839 64.58 86.976 67.366 15.956 2.737 40.065-14.43 67.948-34.319 10.756-7.677 22.929-16.367 35.97-24.873 10.108-6.585 23.659-3.753 30.244 6.358 6.572 10.104 3.737 23.626-6.361 30.234zM761.096 408.553c5.46 9.262 3.154 25.238-7.832 29.885-7.026 2.97-14.14 6.095-21.143 9.404-2.023-14.719-5.21-29.205-9.43-43.388 2.812-1.283 5.651-2.52 8.532-3.737 10.963-4.661 23.278-3.444 29.872 7.835zM710.87 324.426c-6.966 2.148-13.203 4.615-19.416 7.453l33.925-33.994c2.523 10.384-1.408 22.485-14.509 26.54zM957.447 42.247l-295.348 295.865c-0.451 0.474-1.003 0.753-1.474 1.194 32.069 44.552 51.183 98.985 51.183 157.927 0 149.503-121.624 271.107-271.114 271.107-149.5 0-271.097-121.604-271.097-271.107 0-149.487 121.611-271.094 271.107-271.094 54.334 0 104.885 16.196 147.355 43.828 0.898-1.056 1.654-2.23 2.644-3.24l295.329-295.878c19.709-19.719 51.676-19.696 71.408 0 19.692 19.722 19.692 51.696 0.007 71.398zM658.056 503.153c-1.96-3.062-4.73-4.842-8.41-4.842-7.2 0-11.884 7.489-11.884 20.689 0 13.821 5.052 21.14 11.976 21.14 1.714 0 3.177-0.421 4.516-1.102 2.25-11.667 3.477-23.666 3.802-35.885zM559.127 662.658c0-12.946-3.861-21.146-11.956-21.146-7.2 0-11.884 7.473-11.884 20.672 0 13.818 5.052 21.163 11.976 21.163 8.183 0 11.864-8.197 11.864-20.689zM263.289 609.094c8.193 0 11.881-8.2 11.881-20.696 0-12.966-3.885-21.163-11.976-21.163-7.193 0-11.867 7.489-11.867 20.689 0 13.838 5.046 21.169 11.963 21.169zM225.71 464.844c2.066 2.809 4.717 4.322 7.785 4.322 8.206 0 11.881-8.193 11.881-20.666 0-12.236-3.49-20.126-10.683-20.982-4.069 11.989-7.045 24.481-8.983 37.326zM277.117 354.117c-5.743 6.552-11.213 13.351-16.137 20.554 0.23 13.193 5.144 20.238 11.92 20.238 8.183 0 11.871-8.193 11.871-20.689 0.003-10.354-2.51-17.581-7.654-20.103zM347.636 300.786c-7.884 3.737-15.518 7.901-22.833 12.538 1.671 8.285 5.842 12.65 11.167 12.65 8.2 0 11.887-8.193 11.887-20.686 0-1.599-0.092-3.062-0.22-4.503zM370.194 304.816c0 13.824 5.049 21.163 11.976 21.163 8.183 0 11.867-8.193 11.867-20.686 0-9.118-1.97-15.795-5.93-19.011-5.098 1.273-10.17 2.598-15.124 4.23-1.766 3.477-2.789 8.272-2.789 14.305zM508.773 304.816c0 13.824 5.049 21.163 11.966 21.163 8.21 0 11.877-8.193 11.877-20.686 0-1.914-0.224-3.559-0.391-5.246-6.845-3.187-13.841-6.022-21.034-8.499-1.493 3.365-2.418 7.73-2.418 13.269zM540.432 303.997c0.013 0.562 0.112 1.033 0.112 1.618 0 16.163-7.013 25.698-19.344 25.698-11.874 0-20.353-9.381-20.353-26.382 0.069-6.476 1.372-11.673 3.454-15.785-7.812-2.404-15.831-4.253-23.991-5.763v47.075h-6.749l-12.769-5.953 1.536-5.213 10.164 4.736h0.184v-41.828c-10.456-1.529-21.084-2.612-31.961-2.612-2.217 0-4.384 0.26-6.585 0.339v50.518h-6.743l-12.782-5.957 1.543-5.21 10.17 4.736h0.181v-43.72c-10.568 0.71-20.988 1.96-31.096 4.098 4.256 4.523 6.601 11.614 6.601 21.205 0 16.163-7.029 25.695-19.35 25.695-11.887 0-20.347-9.377-20.347-26.382 0.046-4.144 0.553-7.825 1.464-11.009-2.927 1.102-5.897 2.095-8.756 3.332 0.474 2.566 0.783 5.289 0.783 8.374 0 16.163-7.029 25.698-19.354 25.698-8.47 0-15.143-4.875-18.301-13.759-13.532 9.252-25.83 20.103-36.934 32.106 7.414 3.556 11.506 12.088 11.506 24.896 0 16.153-7.019 25.688-19.35 25.688-8.92 0-15.92-5.289-18.847-15.13-7.108 11.749-13.114 24.198-17.919 37.27 10.67 1.677 16.709 10.851 16.709 26.412 0 16.16-7.019 25.692-19.35 25.692-3.473 0-6.585-0.878-9.348-2.431-0.957 8.285-1.582 16.653-1.582 25.198 0 13.176 1.372 25.978 3.608 38.497l5.269 2.477h0.187v-44.348h7.654v50.739h-6.766l-5.223-2.444c3.431 16.275 8.841 31.787 15.686 46.483-0.010-0.224-0.046-0.401-0.046-0.655 0.187-16.772 7.93-26.073 19.367-26.073 12.94 0 20.33 9.522 20.33 26.79 0 16.156-7.006 25.692-19.35 25.692-2.516 0-4.845-0.516-6.996-1.349 15.117 23.929 34.704 44.664 57.653 61.096v-37.099h7.637v42.421c34.181 22.337 74.888 35.428 118.667 35.428 37.681 0 73.132-9.634 104.066-26.563-10.302-1.47-17.393-10.535-17.393-26.073 0.181-16.795 7.914-26.077 19.35-26.077 12.956 0 20.344 9.525 20.344 26.767 0 4.842-0.71 9.022-1.927 12.607 24.481-17.15 45.18-39.233 60.886-64.741l-6.957-3.22 1.543-5.217 8.206 3.829c0.697-1.204 1.474-2.319 2.148-3.516v-39.891h7.644v24.514c6.121-13.394 10.94-27.471 14.262-42.141-0.881 0.118-1.733 0.266-2.677 0.266-11.874 0-20.344-9.364-20.344-26.379 0.181-16.772 7.914-26.073 19.35-26.073 3.424 0 6.45 0.727 9.052 2.003-0.125-11.769-1.316-23.284-3.243-34.556v13.176h-6.743l-12.775-5.95 1.543-5.217 10.164 4.773h0.171v-37.934c-3.546-10.752-7.924-21.093-13.045-31.024-6.217-3.105-10.446-9.884-11.459-19.807-6.226-9.525-13.236-18.449-20.847-26.836v47.749h-6.743l-12.775-5.944 1.529-5.223 10.177 4.773h0.181v-44.348h4.93c-16.929-18.018-36.773-33.155-58.889-44.634zM361.944 636.2c12.953 0 20.34 9.522 20.34 26.767 0 16.156-7.006 25.692-19.35 25.692-11.874 0-20.347-9.384-20.347-26.386 0.187-16.801 7.92-26.073 19.357-26.073zM362.484 683.347c8.193 0 11.881-8.193 11.881-20.689 0-12.946-3.881-21.146-11.976-21.146-7.187 0-11.867 7.473-11.867 20.672-0.013 13.818 5.036 21.163 11.963 21.163zM406.608 681.387h0.168v-44.332h7.644v50.739h-6.756l-12.769-5.937 1.529-5.217zM452.805 681.387h0.171v-44.332h7.654v50.739h-6.769l-12.769-5.937 1.536-5.217zM501.514 688.659c-11.887 0-20.347-9.384-20.347-26.386 0.187-16.791 7.92-26.073 19.357-26.073 12.953 0 20.34 9.522 20.34 26.767-0.003 16.156-7.042 25.692-19.35 25.692zM500.975 641.512c-7.203 0-11.887 7.473-11.887 20.672 0 13.818 5.049 21.163 11.966 21.163 8.193 0 11.871-8.193 11.871-20.689-0.003-12.943-3.861-21.146-11.95-21.146zM307.423 607.134h0.171v-44.315h7.654v50.713h-6.753l-12.772-5.927 1.52-5.217zM353.794 607.134v-44.315h7.654v50.713h-6.759l-12.792-5.927 1.536-5.217 10.187 4.746zM421.669 588.727c0 16.16-7.019 25.695-19.35 25.695-11.874 0-20.347-9.384-20.347-26.406 0.187-16.775 7.93-26.077 19.354-26.077 12.979-0.013 20.344 9.522 20.344 26.787zM389.906 587.928c0 13.824 5.049 21.166 11.966 21.166 8.193 0 11.871-8.2 11.871-20.696 0-12.966-3.861-21.163-11.966-21.163-7.18 0.003-11.871 7.506-11.871 20.692zM446.006 607.134h0.158v-44.315h7.654v50.713h-6.746l-12.778-5.927 1.529-5.217zM493.719 561.927c12.956 0 20.347 9.522 20.347 26.79 0 16.156-7.019 25.692-19.35 25.692-11.887 0-20.347-9.381-20.347-26.406 0.187-16.772 7.92-26.077 19.35-26.077zM494.265 609.094c8.183 0 11.871-8.2 11.871-20.696 0-12.966-3.875-21.163-11.966-21.163-7.203 0-11.881 7.489-11.881 20.689 0 13.838 5.049 21.169 11.976 21.169zM538.563 607.134v-44.315h7.644v50.713h-6.743l-12.775-5.927 1.52-5.217 10.164 4.746zM586.118 561.927c12.956 0 20.33 9.522 20.33 26.79 0 16.156-7.003 25.692-19.35 25.692-11.874 0-20.34-9.381-20.34-26.406 0.181-16.772 7.927-26.077 19.36-26.077zM586.648 609.094c8.193 0 11.874-8.2 11.874-20.696 0-12.966-3.875-21.163-11.966-21.163-7.193 0-11.874 7.489-11.874 20.689 0.003 13.838 5.046 21.169 11.966 21.169zM280.636 545.455c-11.881 0-20.347-9.364-20.347-26.379 0.187-16.772 7.92-26.073 19.354-26.073 12.956 0 20.347 9.522 20.347 26.767 0 16.166-7.045 25.685-19.354 25.685zM280.083 498.315c-7.203 0-11.874 7.489-11.874 20.689 0 13.821 5.049 21.14 11.966 21.14 8.193 0 11.887-8.193 11.887-20.666-0.003-12.969-3.881-21.163-11.979-21.163zM326.829 545.455c-11.881 0-20.34-9.364-20.34-26.379 0.181-16.772 7.917-26.073 19.347-26.073 12.956 0 20.347 9.522 20.347 26.767 0.003 16.166-7.039 25.685-19.354 25.685zM326.29 498.315c-7.216 0-11.881 7.489-11.881 20.689 0 13.821 5.049 21.14 11.976 21.14 8.183 0 11.871-8.193 11.871-20.666 0-12.969-3.871-21.163-11.966-21.163zM358.78 538.679l1.549-5.246 10.164 4.773h0.184v-44.351h7.644v50.749h-6.743zM424.505 493.854v50.749h-6.743l-12.769-5.924 1.529-5.246 10.17 4.773h0.168v-44.351zM465.399 545.455c-11.867 0-20.35-9.364-20.35-26.379 0.181-16.772 7.93-26.073 19.36-26.073 12.956 0 20.337 9.522 20.337 26.767-0.003 16.166-7.009 25.685-19.347 25.685zM464.846 498.315c-7.193 0-11.871 7.489-11.871 20.689 0 13.821 5.049 21.14 11.966 21.14 8.206 0 11.881-8.193 11.881-20.666 0-12.969-3.861-21.163-11.976-21.163zM497.376 538.679l1.533-5.246 10.164 4.773h0.184v-44.351h7.654v50.749h-6.749zM557.789 545.455c-11.874 0-20.353-9.364-20.353-26.379 0.204-16.772 7.937-26.073 19.373-26.073 12.953 0 20.33 9.522 20.33 26.767 0 16.166-7.026 25.685-19.35 25.685zM557.259 498.315c-7.203 0-11.884 7.489-11.884 20.689 0 13.821 5.052 21.14 11.966 21.14 8.193 0 11.884-8.193 11.884-20.666 0-12.969-3.871-21.163-11.966-21.163zM589.756 538.679l1.543-5.246 10.173 4.773h0.171v-44.351h7.654v50.749h-6.756zM265.93 467.679l1.52-5.223 10.173 4.776h0.174v-44.361h7.657v50.742h-6.746zM331.648 422.871v50.742h-6.743l-12.792-5.934 1.529-5.223 10.183 4.776h0.174v-44.361zM358.297 467.679l1.546-5.223 10.167 4.776h0.184v-44.361h7.644v50.742h-6.743zM418.719 474.478c-11.871 0-20.347-9.371-20.347-26.382 0.184-16.772 7.93-26.080 19.354-26.080 12.956 0 20.347 9.525 20.347 26.774 0.003 16.156-7.009 25.688-19.354 25.688zM418.189 427.341c-7.193 0-11.874 7.483-11.874 20.689 0 13.795 5.049 21.14 11.966 21.14 8.197 0 11.887-8.193 11.887-20.666-0.003-12.969-3.885-21.163-11.979-21.163zM470.221 422.871v50.742h-6.759l-12.769-5.934 1.536-5.223 10.173 4.776h0.178v-44.361zM496.893 467.679l1.529-5.223 10.167 4.776h0.184v-44.361h7.654v50.742h-6.766zM557.315 474.478c-11.887 0-20.344-9.371-20.344-26.382 0.181-16.772 7.914-26.080 19.35-26.080 12.956 0 20.344 9.525 20.344 26.774 0 16.156-7.045 25.688-19.35 25.688zM556.772 427.341c-7.2 0-11.884 7.483-11.884 20.689 0 13.795 5.052 21.14 11.966 21.14 8.193 0 11.874-8.193 11.874-20.666 0-12.969-3.861-21.163-11.956-21.163zM583.171 448.082c0.181-16.772 7.914-26.080 19.35-26.080 12.953 0 20.34 9.522 20.34 26.771 0 16.16-7.022 25.692-19.35 25.692-11.9 0.013-20.34-9.354-20.34-26.382zM614.925 448.5c0-12.966-3.861-21.163-11.956-21.163-7.203 0-11.884 7.483-11.884 20.689 0 13.795 5.052 21.14 11.976 21.14 8.183 0 11.864-8.193 11.864-20.666zM319.537 400.221c-11.857 0-20.347-9.368-20.347-26.382 0.184-16.775 7.93-26.070 19.367-26.070 12.946 0 20.334 9.525 20.334 26.767 0 16.163-7.026 25.685-19.354 25.685zM318.994 353.081c-7.193 0-11.874 7.463-11.874 20.689 0 13.798 5.049 21.14 11.966 21.14 8.193 0 11.887-8.193 11.887-20.689 0-12.943-3.891-21.14-11.979-21.14zM351.508 393.423l1.536-5.223 10.177 4.773h0.174v-44.335h7.654v50.729h-6.759zM397.698 393.423l1.529-5.223 10.19 4.773h0.161v-44.335h7.667v50.729h-6.753zM458.117 400.221c-11.871 0-20.347-9.368-20.347-26.382 0.184-16.775 7.93-26.070 19.354-26.070 12.966 0 20.347 9.525 20.347 26.767 0 16.163-7.022 25.685-19.354 25.685zM457.587 353.081c-7.193 0-11.874 7.463-11.874 20.689 0 13.798 5.055 21.14 11.966 21.14 8.193 0 11.874-8.193 11.874-20.689 0-12.943-3.861-21.14-11.966-21.14zM490.087 393.423l1.536-5.223 10.167 4.773h0.174v-44.335h7.654v50.729h-6.743zM550.516 400.221c-11.884 0-20.353-9.368-20.353-26.382 0.194-16.775 7.924-26.070 19.363-26.070 12.953 0 20.34 9.525 20.34 26.767 0 16.163-7.036 25.685-19.35 25.685zM549.977 353.081c-7.203 0-11.887 7.463-11.887 20.689 0 13.798 5.042 21.14 11.979 21.14 8.183 0 11.864-8.193 11.864-20.689 0-12.943-3.875-21.14-11.956-21.14z" />
-<glyph unicode="&#xe973;" glyph-name="fingerprint-simple" d="M173.793 672.211c6.855-1.487 13.22-1.378 32.768 13.628 8.677 6.674 21.512 17.897 33.36 33.577l5.19 6.878c44.379 59.029 148.274 197.225 298.345 189.706 123.756-9.023 211.475-102.478 253.676-270.271 1.441-5.707 2.306-9.197 3.276-11.901 6.437-27.429 17.265-61.615 32.843-72.877 3.852-2.793 8.342-4.125 12.779-4.125 6.766 0 13.463 3.135 17.729 9.055 6.822 9.447 5 22.512-3.941 29.752-4.312 5.582-12.414 28.933-17.242 49.819-0.283 1.243-0.687 2.444-1.181 3.608-0.405 1.431-1.181 4.543-1.891 7.329-6.684 26.604-24.462 97.248-67.539 163.691-55.658 85.798-131.558 132.746-225.609 139.525-0.145 0.023-0.303 0.023-0.46 0.023-173.349 8.851-287.138-142.469-335.717-207.074l-5.105-6.786c-13.299-17.585-29.015-28.531-34.429-31.699-1.826-0.73-3.598-1.71-5.246-2.954-6.799-5.151-10.121-13.937-8.292-22.262 1.839-8.309 8.351-14.822 16.687-16.644zM721.037 588.423c16.479 41.198 16.897 83.752 1.079 116.75-14.068 29.452-40.343 50.78-75.933 61.681-52.257 15.989-115.595-13.022-173.622-79.509-0.737-0.816-83.337-87.696-170.072-140.808-0.635-0.382-64.134-38.462-130.446-56.539-11.647-3.158-18.512-15.18-15.345-26.804 3.158-11.644 15.167-18.525 26.818-15.338 72.127 19.627 138.758 59.585 141.673 61.335 94.093 57.622 179.44 148.416 180.154 149.271 35.238 40.353 87.367 79.048 128.025 66.598 23.939-7.329 40.544-20.367 49.336-38.761 10.536-22.005 9.713-51.78-2.253-81.666-22.255-55.632-91.584-122.786-195.203-189.144-51.948-33.271-182.766-114.983-275.175-154.471-11.101-4.75-16.242-17.561-11.506-28.673 3.552-8.305 11.618-13.269 20.104-13.269 2.872 0 5.786 0.562 8.588 1.756 95.393 40.813 228.684 123.986 281.559 157.846 78.693 50.398 179.371 127.69 212.218 209.744zM369.13 751.552c-9.911-10.93-18.808-22.666-28.4-33.853-12.552-14.673-26.268-28.383-40.596-41.313-14.729-13.305-26.65-22.811-44.017-32.807-18.433-10.559-37.218-21.252-56.309-30.557-6.569-3.21-12.22-5.279-19.604-7.503-11.391-3.427-18.466-15.187-15.252-26.88 3.089-11.272 15.473-18.696 26.88-15.275 22.338 6.733 42.59 18.236 62.75 29.696 17.048 9.68 33.962 18.404 49.612 30.314 30.521 23.199 56.776 50.29 80.93 79.949 9.789 12.009 20.239 23.439 31.169 34.426 5.96 5.996 12.124 11.769 18.427 17.43 3.276 2.937 6.608 5.799 9.983 8.644 1.707 1.431 3.434 2.849 5.177 4.26 0.444 0.372 3.839 3.043 4.7 3.737 15.22 11.657 31.436 22.018 48.494 30.775 16.114 8.292 32.278 14.075 51.888 18.167 6.496 1.352 7.911 1.497 12.776 1.99 11.841 1.22 21.861 9.016 21.861 21.844 0 10.999-9.983 23.087-21.861 21.857-78.995-8.187-146.551-57.569-198.607-114.898zM199.090 333.161c47.471 16.289 291.187 107.296 427.673 298.604 7.016 9.822 4.73 23.453-5.085 30.479-9.838 7.006-23.482 4.723-30.495-5.098-128.729-180.457-361.025-267.106-406.292-282.671-0.967-0.316-1.566-0.53-1.773-0.599-11.286-4.302-16.969-16.897-12.69-28.173 3.309-8.746 11.618-14.104 20.446-14.104 2.467 0 4.993 0.418 7.447 1.296l0.77 0.266zM793.651 203.093c-30.278 10.095-67.348 36.481-103.175 62-51.905 36.991-96.702 68.901-133.219 62.621-27.446-4.75-75.381-35.393-151.050-85.245-54.543-35.965-116.385-76.723-143.278-83.962-11.651-3.161-18.558-15.141-15.42-26.778 2.628-9.772 11.447-16.19 21.094-16.19 1.881 0 3.789 0.25 5.681 0.753 33.718 9.098 93.113 48.247 155.991 89.682 50.783 33.478 113.997 75.147 134.413 78.67 18.555 3.177 63.96-29.13 100.442-55.122 38.452-27.387 78.209-55.711 114.704-67.891 11.457-3.802 23.828 2.388 27.643 13.825 3.812 11.437-2.378 23.821-13.825 27.637zM738.944 96.053c-17.614 6.361-46.241 24.055-73.933 41.156-58.487 36.143-95.656 58.072-122.332 53.48-27.018-4.684-83.768-43.238-178.996-112.79-11.667-8.509-21.729-15.848-28.715-20.788-9.845-6.98-12.197-20.601-5.246-30.462 4.276-6.023 11.019-9.243 17.871-9.243 4.358 0 8.759 1.303 12.585 3.996 7.259 5.135 17.453 12.595 29.265 21.183 37.899 27.679 138.601 101.198 160.451 104.968 13.631 0.934 62.789-29.393 92.156-47.537 30.955-19.114 60.177-37.169 82.061-45.093 11.332-4.098 23.874 1.78 27.972 13.134 4.095 11.381-1.766 23.887-13.137 27.995zM665.146-12.572c-12.269 8.006-23.548 16.075-34.478 23.841-35.817 25.607-66.805 47.718-100.744 41.797-38.238-6.598-99.113-67.822-110.938-79.999-8.391-8.68-8.161-22.515 0.507-30.923 4.246-4.072 9.72-6.144 15.18-6.144 5.717 0 11.424 2.217 15.703 6.651 29.265 30.222 70.841 64.569 86.965 67.361 15.953 2.733 40.077-14.41 67.957-34.311 10.74-7.677 22.92-16.358 35.978-24.887 10.095-6.585 23.647-3.74 30.245 6.371 6.572 10.115 3.727 23.634-6.375 30.242zM857.418 438.451c-18.213 7.69-37.258 15.782-52.589 28.541-16.874 14.039-24.719 32.469-28.242 53.757-4.559 27.758-46.682 15.946-42.136-11.605 9.345-56.674 51.060-87.37 100.905-108.411 10.973-4.661 23.288-3.444 29.883 7.825 5.454 9.272 3.141 25.245-7.822 29.893zM815.006 324.435c-16.4 5.065-28.86 11.457-46.221 21.722-31.798 18.788-60.806 46.004-74.91 80.798-4.467 11.022-14.374 18.7-26.88 15.252-10.483-2.881-19.732-15.828-15.266-26.89 26.048-64.197 85.821-112.734 151.669-133.028 27.008-8.305 38.465 33.873 11.608 42.146z" />
-<glyph unicode="&#xe974;" glyph-name="settings" d="M225.037 959.932c64.288 1.523 129.795-22.546 179.775-72.557 73.543-73.574 90.917-180.699 52.646-267.98l531.791-483.041c34.747-34.789 34.747-91.040 0-125.733l-39.794-39.834c-34.747-34.788-90.964-34.788-125.712 0l-483.096 531.774c-87.347-38.31-194.495-20.94-267.942 52.634-57.121 57.108-80.539 134.49-70.401 207.207l138.755-138.868c53.074-53.063 139.85-52.302 193.781 1.618 53.978 53.873 54.693 140.725 1.618 193.836l-138.85 138.725c9.086 1.261 18.246 2.001 27.43 2.219z" />
-<glyph unicode="&#xe975;" glyph-name="Save" d="M178.857 170.418v-103.511h664.66v103.511zM270.958 958.932h127.786v-260.744h-127.786zM5.556 960h168.819v-312.888h669.074v312.888h175.017v-1023.936h-1012.91z" />
-<glyph unicode="&#xe976;" glyph-name="squares" d="M928 752v-416c-0.171-56.042-41.533-102.371-95.391-110.309l-0.609-0.074v526.383c-0.114 8.79-7.21 15.886-15.989 16h-526.394c8.012 54.467 54.341 95.829 110.365 96h416.018c61.825-0.077 111.923-50.175 112-111.993v-0.007zM768 592v-416c-0.077-61.825-50.175-111.923-111.993-112h-416.007c-61.825 0.077-111.923 50.175-112 111.993v416.007c0.077 61.825 50.175 111.923 111.993 112h416.007c61.825-0.077 111.923-50.175 112-111.993v-0.007zM672 592c-0.114 8.79-7.21 15.886-15.989 16h-416.011c-8.79-0.114-15.886-7.21-16-15.989v-416.011c0.114-8.79 7.21-15.886 15.989-16h416.011c8.79 0.114 15.886 7.21 16 15.989v0.011z" />
-<glyph unicode="&#xe977;" glyph-name="table" d="M0 147.354h1023.919v-129.997h-1023.919zM0 391.18h1023.919v-130.079h-1023.919zM0 635.007h1023.919v-130.079h-1023.919zM0 878.752h1023.919v-130.079h-1023.919z" />
-<glyph unicode="&#xe978;" glyph-name="upload" d="M511.975 447.953l-242.846-242.843h161.146v-184.088h163.402v184.088h161.146zM646.038 924.618l311.664-313.105h-311.664zM66.25 960h514.016v-388.045h377.436v-636.099h-891.451z" />
-<glyph unicode="&#xe979;" glyph-name="user" d="M784 832h-544c-61.825-0.077-111.923-50.175-112-111.993v-544.007c0.077-61.825 50.175-111.923 111.993-112h544.007c61.825 0.077 111.923 50.175 112 111.993v544.007c-0.077 61.825-50.175 111.923-111.993 112h-0.007zM384 506.039v69.961c0 70.692 57.308 128 128 128s128-57.308 128-128v0-69.961c4.573-3.984 7.447-9.818 7.447-16.322 0-2.91-0.575-5.686-1.618-8.22l0.052 0.144-11.762-35.281c-5.297-13.384-16.083-23.612-29.504-28.044l-0.337-0.096-5.269-42.156c-4.083-31.765-30.956-56.062-63.504-56.062-0.001 0-0.002 0-0.002 0h-47.004c-0.001 0-0.001 0-0.002 0-32.548 0-59.421 24.298-63.47 55.744l-0.034 0.32-5.27 42.156c-13.759 4.528-24.544 14.757-29.729 27.818l-0.113 0.323-11.762 35.281c-0.99 2.39-1.565 5.165-1.565 8.075 0 6.504 2.873 12.338 7.42 16.3l0.026 0.022zM736 176c0-8.837-7.163-16-16-16v0h-416c-8.837 0-16 7.163-16 16v0 62.68c0.001 21.603 10.705 40.706 27.098 52.295l0.201 0.135 57.17 40.016c20.522-44.54 64.704-74.939 116.007-75.125h47.024c51.327 0.185 95.509 30.585 115.704 74.332l0.328 0.793 57.17-40.016c16.594-11.724 27.298-30.827 27.298-52.43v0z" />
-<glyph unicode="&#xe97a;" glyph-name="entry" d="M393.929 713.001l174.72-174.764-174.72-174.827v116.073h-324.558v117.572h324.558zM205.76 960h749.061v-843.557l-279.544-180.587v180.587h-469.517v322.548h85.455v-233.539h384.062v571.835l143.461 93.764h-527.523v-233.535h-85.455z" />
-<glyph unicode="&#xe97b;" glyph-name="lock" d="M521.113 345.977c-36.247 0-65.622-30.173-65.622-67.384 0-26.94 15.629-49.757 37.892-60.574v-91.901h55.619v91.957c22.292 10.76 37.947 33.661 37.947 60.517 0 37.211-29.428 67.384-65.836 67.384zM511.933 882.117c-91.257 0-165.188-80.448-165.188-179.648v-94.869c0-11.971 1.142-23.651 3.186-35.018h324.163c2.071 11.367 3.184 23.047 3.184 35.018v94.869c0 99.2-74.089 179.648-165.345 179.648zM511.933 960c122.569 0 222-108.056 222-241.289v-127.351c0-8.021-0.396-15.951-1.087-23.8 62.837-17.306 109.461-79.119 109.461-152.847v-320.929c0-87.113-65.041-157.781-145.152-157.781h-370.284c-80.244 0-145.179 70.668-145.179 157.781v320.929c0 73.757 46.598 135.541 109.515 152.88-0.69 7.816-1.088 15.746-1.088 23.767v127.351c0 133.232 99.271 241.289 221.816 241.289z" />
-<glyph unicode="&#xe97c;" glyph-name="unlock" d="M500.472 357.966c-50.471 0-91.375-41.364-91.375-92.479 0-36.908 21.775-68.247 52.794-83.072v-126.117h77.391v126.212c31.052 14.729 52.797 46.159 52.797 82.976 0 51.115-40.934 92.479-91.607 92.479zM452.81 959.958c90.471 1.822 176.486-56.22 211.078-151.903l42.359-117.054c6.804-18.844 11.019-38.031 13.14-57.156l-60.906 0.746c-1.25 16.539-4.652 33.204-10.496 49.403l-31.514 87.276c-32.967 91.078-128.617 136.429-213.798 101.076-85.183-35.291-127.339-137.766-94.341-229.002l28.868-79.958h289.913l90.183-1.151c-0.030-0.186-0.060-0.343-0.060-0.529 70.675-10.497 125.071-75.316 125.071-153.869v-316.25c0-85.904-64.948-155.584-145.158-155.584h-370.297c-80.125 0-145.16 69.68-145.16 155.584v316.25c0 68.085 40.963 125.865 97.829 146.892l-29.507 81.607c-44.219 122.474 12.56 260.148 126.785 307.524 25 10.384 50.681 15.588 76.013 16.098z" />
-<glyph unicode="&#xe97d;" glyph-name="category" d="M632.965 307.194v-260.497h320.022v260.497zM236.496 342.238l-53.124-106.723-118.088-16.801 85.126-83.363-20.481-117.444 105.607 55.042 105.287-55.682-19.681 117.444 85.606 82.883-117.928 17.601zM562.080 404.16h461.952v-461.95h-461.952zM0 404.16h461.952v-461.934h-461.952zM230.976 861.302l-159.956-277.049h319.911l-79.978 138.525zM793.133 872.015c-82.564 0-149.45-66.702-149.45-149.235 0-82.385 66.886-149.243 149.45-149.243 82.406 0 149.292 66.858 149.292 149.243 0 82.534-66.886 149.235-149.292 149.235zM0 953.759h461.952v-461.962h-461.952zM562.078 953.76h461.952v-461.968h-461.952z" />
-<glyph unicode="&#xe97e;" glyph-name="vacancydays" d="M440.576 617.536l60.752-30.48c17.296-621.056 391.136-651.056 391.136-651.056h-349.152c-203.376 163.936-150.192 654.48-150.192 654.48zM668.568 959.978c142.582 1.91 235.284-118.058 227.397-277.457-66.24 160.75-267.727 179.613-353.263 91.711 201.439 23.968 480.895-116.75 283.088-519.639-39.504 307.595-277.504 402.889-381.215 417.369-144.447-10.464-335.375-168.893-345.007-414.969-306.399 398.057 184.735 544.519 303.199 499.224-27.104 64.367-194.319 117.438-368.607-28.943 63.312 411.721 413.823 146.813 413.823 146.813 80.66 58.974 155.776 85.024 220.586 85.892z" />
-<glyph unicode="&#xe97f;" glyph-name="sector" d="M369.796 543.236c-21.646-0.589-122.661-41.523-111.068-51.392 13.153-11.33 47.996-39.607 59.337-39.607 11.313 0 49.935 74.462 55.589 88.573 0.707 1.771-0.765 2.51-3.858 2.426zM221.988 716.273c-16.176-0.073-32.162-1.473-35.88-3.963-8.437-5.61-31.119-99.868-19.779-90.46 11.343 9.467 85.774 79.166 93.336 87.616 4.236 4.801-16.878 6.901-37.676 6.807zM267.16 817.528c55.835-0.239 111.197-2.719 121.555-6.727 20.749-8.011 102.742-145.582 117.304-165.407 14.653-19.765-2.784-45.201-2.784-45.201l-120.43-213.404 253.871-204.151 1.945-0.191c6.281-0.682 10.206-1.616 10.206-1.616 31.395 31.174 59.289 41.548 82.598 41.417 47.728-0.27 76.237-44.589 76.237-44.589s86.209 11.656 97.524-92.962c0 0 35.808-1.889 33.965-32.062 0 0 70.62 11.327 84.776-52.729h-629.519c0 56.573 99.869 54.651 99.869 54.651 4.749 60.295 56.557 52.81 56.557 52.81 1.2 40.536 18.828 59.945 38.809 68.838l2.291 0.914-225.238 181.126-6.262-11.096c0 0 16.969-19.328 35.373-36.748 18.342-17.468-1.406-49.465-1.406-49.465l-128.614-246.013c0 0-23.122-24.437-59.871-7.516-36.776 16.986-26.371 55.589-26.371 55.589s109.302 206.361 106.021 217.719c-3.343 11.315-117.332 145.597-117.332 145.597s-1.875-147.483-4.281-162.564c-2.343-15.092-77.712-250.217-77.712-250.217s-31.091-20.264-56.557-8.937c-25.467 11.344-29.685 40.060-29.685 40.060s56.059 203.114 57.963 219.094c1.875 16.028-3.75 235.605 0 247.388 3.782 11.781 42.434 46.619 42.434 46.619l-25.467 18.375c0 0 0.392 4.798 1.251 13.040l0.262 2.483-51.222 41.19 20.279 25.186 35.641-28.661 0.281 2.011c8.771 61.144 27.369 154.383 61.346 179.419 12.249 4.962 68.556 6.966 124.391 6.727zM556.962 905.524c52.304 0 94.707-42.405 94.707-94.719 0-52.308-42.403-94.698-94.707-94.698-52.309 0-94.71 42.39-94.71 94.698 0 52.314 42.401 94.719 94.71 94.719z" />
-</font></defs></svg>
\ No newline at end of file
diff --git a/admin/css/fonts/pot.ttf b/admin/css/fonts/pot.ttf
deleted file mode 100644 (file)
index 2f0e87f..0000000
Binary files a/admin/css/fonts/pot.ttf and /dev/null differ
diff --git a/admin/css/fonts/pot.woff b/admin/css/fonts/pot.woff
deleted file mode 100644 (file)
index dbc69a9..0000000
Binary files a/admin/css/fonts/pot.woff and /dev/null differ
diff --git a/admin/css/fonts/siteicons.eot b/admin/css/fonts/siteicons.eot
new file mode 100644 (file)
index 0000000..fde3503
Binary files /dev/null and b/admin/css/fonts/siteicons.eot differ
diff --git a/admin/css/fonts/siteicons.svg b/admin/css/fonts/siteicons.svg
new file mode 100644 (file)
index 0000000..c81bc18
--- /dev/null
@@ -0,0 +1,153 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<svg xmlns="http://www.w3.org/2000/svg">
+<metadata>
+<json>
+<![CDATA[
+{
+       "fontFamily": "siteicons",
+       "description": "Font generated by IcoMoon.",
+       "majorVersion": 0,
+       "version": "Version 1.0",
+       "fontId": "siteicons",
+       "psName": "siteicons",
+       "subFamily": "Regular",
+       "fullName": "siteicons"
+}
+]]>
+</json>
+</metadata>
+<defs>
+<font id="siteicons" horiz-adv-x="1024">
+<font-face units-per-em="1024" ascent="960" descent="-64" />
+<missing-glyph horiz-adv-x="1024" />
+<glyph unicode="&#x20;" horiz-adv-x="512" d="" />
+<glyph unicode="&#xe900;" glyph-name="menu" data-tags="a5_menu" d="M0 513.749h1024v-216.661h-1024v216.661zM0 152.619h1023.659v-216.619h-1023.659v216.619zM0 874.837h1024v-216.661h-1024v216.661z" />
+<glyph unicode="&#xe901;" glyph-name="info" data-tags="a53_info" d="M512.043 960c-282.795 0-512.043-229.248-512.043-512s229.248-512 512.043-512c282.709 0 511.957 229.248 511.957 512s-229.248 512-511.957 512zM504.277 787.2c38.613 0 68.523-28.971 68.523-67.541 0-36.693-29.909-67.584-69.504-67.584-35.712 0-67.584 30.891-67.584 67.584 0.043 38.571 31.915 67.541 68.565 67.541zM635.563 152.917h-247.125v30.933c55.979 6.741 61.781 10.667 61.781 79.147v191.147c0 63.744-6.741 66.603-53.12 74.325v27.989c57.899 6.784 121.643 19.328 175.701 34.731v-328.235c0-66.645 4.779-71.424 62.763-79.147v-30.891z" />
+<glyph unicode="&#xe902;" glyph-name="help" data-tags="a55_help" d="M512.085 960c-282.752 0-511.915-229.163-511.915-512.043 0-282.581 229.163-511.957 511.915-511.957s511.915 229.376 511.915 511.957c0 282.88-229.163 512.043-511.915 512.043zM585.429 100.309h-139.648v134.955h139.648v-134.955zM718.635 493.568c-11.776-16.811-34.517-38.272-68.053-64.469l-32.981-25.685c-18.048-13.995-29.952-30.379-35.925-49.024-3.755-11.819-5.76-30.208-6.059-55.125h-126.592c1.835 52.608 6.869 88.917 14.848 109.013 8.107 20.096 28.885 43.264 62.421 69.419l34.005 26.624c11.179 8.405 20.224 17.621 27.051 27.563 12.331 17.109 18.603 35.968 18.603 56.533 0 23.68-6.912 45.184-20.651 64.64-13.867 19.456-39.125 29.269-75.733 29.269-36.053 0-61.568-11.989-76.672-35.968-15.061-23.979-22.613-48.896-22.613-74.709h-134.997c3.755 88.661 34.731 151.552 92.928 188.629 36.736 23.68 81.92 35.499 135.509 35.499 70.357 0 128.853-16.853 175.36-50.432 46.549-33.664 69.845-83.499 69.845-149.461 0-40.491-10.155-74.581-30.293-102.315z" />
+<glyph unicode="&#xe903;" glyph-name="alert" data-tags="a141_alert" d="M1001.173 174.123l-384.981 666.88c-26.709 46.293-63.659 71.808-104.021 71.808s-77.312-25.472-104.064-71.765l-385.024-666.923c-26.709-46.293-30.336-91.051-10.155-125.952 20.181-34.944 60.715-54.229 114.176-54.229h770.048c53.461 0 93.995 19.243 114.176 54.187 20.139 34.944 16.555 79.701-10.155 125.995zM514.645 79.403c-35.797 0-64.768 28.971-64.768 64.811 0 35.669 28.971 64.683 64.768 64.683 35.755 0 64.768-29.013 64.768-64.683-0.043-35.84-29.056-64.811-64.768-64.811zM604.459 648.533c0 0-35.712-354.901-35.712-355.456l-0.043-0.555h-0.043c-1.28-26.155-25.557-47.061-55.424-47.061-30.848 0-55.765 22.101-55.765 49.195 0 0.811-33.536 353.92-33.536 353.92v0.128c0 49.835 40.363 90.283 90.24 90.283 49.792 0 90.24-40.448 90.24-90.283 0.043-0.085 0.043-0.128 0.043-0.171z" />
+<glyph unicode="&#xe904;" glyph-name="star" data-tags="a137_star" d="M512.043 960l158.208-320.555 353.749-51.413-255.957-249.515 60.459-352.427-316.459 166.4-316.501-166.4 60.459 352.427-256 249.515 353.792 51.413z" />
+<glyph unicode="&#xe905;" glyph-name="home" data-tags="a135_home" d="M876.885 390.997v-408.491h-249.515v308.139h-236.757v-308.139h-252.416v408.491l369.707 397.312zM1024 407.552l-512.981 552.448-194.048-208.299v72.192c0 4.523-3.413 8.149-7.595 8.149h-106.411c-4.224 0-7.595-3.584-7.595-8.149l0.299-202.581-195.669-210.176 33.024-35.499 477.952 513.365 480.085-516.821 32.939 35.371z" />
+<glyph unicode="&#xe906;" glyph-name="cart2" data-tags="a133_cart" d="M225.963 871.296l-208.853 46.037-17.109-77.611 164.693-36.309 200.448-647.723h643.243v79.573h-585.856zM514.645 20.181c0-46.492-37.689-84.181-84.181-84.181s-84.181 37.689-84.181 84.181c0 46.492 37.689 84.181 84.181 84.181s84.181-37.689 84.181-84.181zM979.371 20.181c0-46.492-37.689-84.181-84.181-84.181s-84.181 37.689-84.181 84.181c0 46.492 37.689 84.181 84.181 84.181s84.181-37.689 84.181-84.181zM976.853 316.629l47.147 415.829h-653.355l117.76-415.829z" />
+<glyph unicode="&#xe907;" glyph-name="duplicate2" data-tags="a87_duplicate" d="M169.813 790.272l598.997-0.811-1.408 170.539h-767.403v-767.403h169.813zM224.64 735.36v-799.36h799.36v799.36h-799.36zM928.896 289.749h-258.645v-258.603h-85.333v258.603h-258.603v85.333h258.603v258.645h85.333v-258.645h258.645v-85.333z" />
+<glyph unicode="&#xe908;" glyph-name="trash2" data-tags="a25_trash" d="M979.499 870.955h-267.179c0 27.051 5.205 89.045-51.925 89.045h-252.032c-56.789 0-52.139-61.995-52.139-89.045h-267.093c-29.355 0-44.501-61.995-44.501-89.003h979.371c0 26.965-15.147 89.003-44.501 89.003zM133.632 737.408l-2.347-745.387c0-30.933 27.179-56.021 60.715-56.021h683.989c33.579 0 60.757 25.088 60.757 55.979l-1.792 745.387h-801.323zM311.723 25.173h-89.045v623.189h89.045v-623.189zM489.771 25.173h-89.045v623.189h89.003v-623.189zM667.819 25.173h-89.045v623.189h89.045v-623.189zM845.909 25.173h-89.003v623.189h89.003v-623.189z" />
+<glyph unicode="&#xe909;" glyph-name="quote" data-tags="a113_invoice" d="M899.243 960h-765.013c-20.139 0-36.523-16.341-36.523-36.565v-950.869c0-20.139 16.384-36.565 36.523-36.565h765.013c20.224 0 36.565 16.427 36.565 36.565v950.869c0.043 20.224-16.341 36.565-36.565 36.565zM169.344 237.739h428.331v-94.421h-428.331v94.421zM169.344 274.347v88.32h428.331v-88.32h-428.331zM169.344 399.317v93.611h428.331v-93.611h-428.331zM169.344 529.536v49.835c0 20.053 17.067 36.309 38.059 36.309h390.272v-86.144h-428.331zM164.779 800.811c0 20.224 13.44 36.565 30.037 36.565h150.229c16.597 0 30.037-16.341 30.037-36.565v-22.869c0-20.224-13.397-36.565-30.037-36.565h-150.272c-16.597 0-30.037 16.341-30.037 36.565v22.869zM169.344 43.989v62.763h428.331v-99.072h-390.272c-20.992 0-38.059 16.256-38.059 36.309zM864.171 43.989c0-20.096-16.981-36.352-38.059-36.352h-191.915v99.072h229.973v-62.72zM864.171 143.317h-229.973v94.421h229.973v-94.421zM864.171 274.347h-229.973v88.32h229.973v-88.32zM864.171 399.317h-229.973v93.611h225.451v36.608h-225.451v86.144h191.915c21.035 0 38.059-16.256 38.059-36.309v-180.053z" />
+<glyph unicode="&#xe90a;" glyph-name="pdf2" data-tags="a77_PDF" d="M940.459 611.499h-344.96v344.917zM496.555 313.515c-13.995 0-22.997-1.237-28.331-2.432v-180.907c5.333-1.28 13.952-1.28 21.717-1.28 56.661-0.384 93.525 30.805 93.525 96.853 0.512 57.429-33.152 87.765-86.912 87.765zM254.805 314.325c-12.715 0-21.376-1.195-25.899-2.432v-81.707c5.333-1.152 11.904-1.621 20.949-1.621 33.237 0 53.717 16.853 53.717 45.184-0.043 25.429-17.664 40.576-48.768 40.576zM506.624 534.229v425.771h-428.416v-1024h862.251l1.408 598.229h-435.243zM340.096 209.749c-21.333-20.139-52.907-29.141-89.813-29.141-8.192 0-15.616 0.384-21.376 1.237v-98.859h-61.909v272.811c19.328 3.285 46.336 5.76 84.48 5.76 38.528 0 66.091-7.424 84.48-22.229 17.707-13.909 29.525-36.864 29.525-63.957s-8.96-50.048-25.387-65.621zM604.075 115.797c-29.227-24.192-73.515-35.712-127.659-35.712-32.384 0-55.381 2.048-70.955 4.139v271.573c22.912 3.712 52.864 5.76 84.437 5.76 52.48 0 86.656-9.472 113.28-29.568 28.715-21.291 46.763-55.339 46.763-104.192 0-52.949-19.328-89.429-45.867-112zM860.245 308.267h-106.24v-63.189h99.243v-50.901h-99.243v-111.104h-62.763v276.48h169.003v-51.285z" />
+<glyph unicode="&#xe90b;" glyph-name="access" data-tags="access" d="M941.97 557.736l-133.783-128.013h-172.028l-38.165-22.101h-126.982l-354.747-358.103 38.248-36.558 328.823 332.987h114.658l38.165 22.060h191.111l152.906 146.273zM769.981 813.727v-124.175h114.658v124.175zM502.457 960h401.307l114.658-109.715v-409.121l-129.769-139.457h-176.002l-38.245-36.558-38.248 36.558-38.165-36.558h-95.536v-73.157h-76.453v-73.119h-76.41v-73.155h-76.493v-73.119h-38.208v-36.599h-191.069l-38.248 36.599v255.95l349.545 334.517-38.248 36.558 32.719 31.23v182.872z" />
+<glyph unicode="&#xe90c;" glyph-name="address" data-tags="address" d="M800 832h-480c-0.001 0-0.002 0-0.003 0-70.691 0-127.997-57.306-127.997-127.997 0-0.001 0-0.002 0-0.003v0-512c0-70.692 57.308-128 128-128v0h480c17.673 0 32 14.327 32 32v0 64h-512c-17.673 0-32 14.327-32 32s14.327 32 32 32v0h512v576c0 17.673-14.327 32-32 32v0zM642.012 368.25c0-0.001 0-0.001 0-0.002 0-8.974-7.274-16.248-16.248-16.248-0.001 0-0.003 0-0.004 0h-227.52c-0.001 0-0.003 0-0.004 0-8.974 0-16.248 7.274-16.248 16.248 0 0.001 0 0.001 0 0.002v0 30.918c0.002 11.475 5.947 21.561 14.924 27.348l0.128 0.077 49.947 31.773-4.711 37.672c-11.313 5.176-20.058 14.331-24.579 25.633l-0.113 0.319-3.48 10.437c-0.96 2.477-1.516 5.344-1.516 8.341 0 4.42 1.21 8.558 3.316 12.1l-0.060-0.109v58.58c0 53.105 43.050 96.154 96.154 96.154s96.154-43.050 96.154-96.154v-58.578c2.046-3.433 3.256-7.571 3.256-11.991 0-2.997-0.556-5.864-1.571-8.503l0.055 0.162-3.48-10.437c-4.633-11.621-13.379-20.776-24.396-25.831l-0.295-0.121-4.71-37.672 49.947-31.773c9.106-5.864 15.051-15.95 15.053-27.425v0zM992 320v-96c0-17.673-14.327-32-32-32v0h-64v160h64c17.673 0 32-14.327 32-32v0zM992 544v-96c0-17.673-14.327-32-32-32v0h-64v160h64c17.673 0 32-14.327 32-32v0zM992 768v-96c0-17.673-14.327-32-32-32v0h-64v160h64c17.673 0 32-14.327 32-32v0z" />
+<glyph unicode="&#xe90d;" glyph-name="apps" data-tags="apps" d="M608 256v-128c0-17.673-14.327-32-32-32v0h-128c-17.673 0-32 14.327-32 32v0 128c0 17.673 14.327 32 32 32v0h128c17.673 0 32-14.327 32-32v0zM320 288h-128c-17.673 0-32-14.327-32-32v0-128c0-17.673 14.327-32 32-32v0h128c17.673 0 32 14.327 32 32v0 128c0 17.673-14.327 32-32 32v0zM320 544h-128c-17.673 0-32-14.327-32-32v0-128c0-17.673 14.327-32 32-32v0h128c17.673 0 32 14.327 32 32v0 128c0 17.673-14.327 32-32 32v0zM576 544h-128c-17.673 0-32-14.327-32-32v0-128c0-17.673 14.327-32 32-32v0h128c17.673 0 32 14.327 32 32v0 128c0 17.673-14.327 32-32 32v0zM320 800h-128c-17.673 0-32-14.327-32-32v0-128c0-17.673 14.327-32 32-32v0h128c17.673 0 32 14.327 32 32v0 128c0 17.673-14.327 32-32 32v0zM832 800h-128c-17.673 0-32-14.327-32-32v0-128c0-17.673 14.327-32 32-32v0h128c17.673 0 32 14.327 32 32v0 128c0 17.673-14.327 32-32 32v0zM832 544h-128c-17.673 0-32-14.327-32-32v0-128c0-17.673 14.327-32 32-32v0h128c17.673 0 32 14.327 32 32v0 128c0 17.673-14.327 32-32 32v0zM832 288h-128c-17.673 0-32-14.327-32-32v0-128c0-17.673 14.327-32 32-32v0h128c17.673 0 32 14.327 32 32v0 128c0 17.673-14.327 32-32 32v0zM576 800h-128c-17.673 0-32-14.327-32-32v0-128c0-17.673 14.327-32 32-32v0h128c17.673 0 32 14.327 32 32v0 128c0 17.673-14.327 32-32 32v0z" />
+<glyph unicode="&#xe90e;" glyph-name="archive" data-tags="archive" d="M382.656 229.376v-65.376h258.736v65.376zM25.92 276.432h972.224v-340.432h-972.224zM377.248 654.976v-65.36h258.704v65.36zM25.92 698.56h972.224v-354.064h-85.849l-28.506 178.992-614.892-178.992h-242.976zM230.155 960h544.695l183.054-160.745-0.594-35.335h-890.554l-3.332 36.015z" />
+<glyph unicode="&#xe90f;" glyph-name="barberscissor" data-tags="barberscissor" d="M786.392 486.039c54.219-13.596 58.737-60.99 53.086-71.541s-13.118-16.694-19.22-19.97c-16.995-9.159-46.097-12.108-77.015 5.624-38.262 21.95-33.921 54.601-26.482 65.44 7.426 10.838 22.55 32.269 69.63 20.448zM42.423 598.64c54.287-28.229 440.468-139.888 440.468-139.888 32.051 14.114 57.14 20.462 98.705 17.445 41.565-3.003 117.365-63.911 117.365-63.911s47.899-41.087 110.336-43.19c62.423-2.102 146.004 21.431 165.415 57.714 0 0 6.457 8.272-0.014 13.487-6.47 5.228-13.637-5.351-18.892-10.279 0 0-29.375-21.199-41.006-26.018-11.616-4.805-36.992-9.883-46.52 9.282-9.542 19.165-28.748 77.097-75.336 89.437s-58.41-8.272-99.62-23.069c-41.224-14.811-89.737 17.868-98.255 23.547-8.504 5.706-14.033 2.020-14.033 2.020-11.848-6.088-52.172-1.256-52.172-1.256l-215.907 50.288-270.931 52.281c-5.76-4.955 0.396-7.89 0.396-7.89zM566.267 256.329c25.895-13.5 62.314-52.991 39.245-85.983s-53.359-19.861-53.359-19.861c-31.423 6.061-68.361 51.202-59.625 83.936 8.736 32.706 47.831 35.423 73.739 21.909zM125.021 742.908c1.447-6.771 320.414-304.525 320.414-304.525s34.221-41.32 52.158-105.258c0 0 15.411-31.246-7.207-67.61-22.591-36.351-13.132-80.114 19.247-107.483 0 0 35.15-36.296 70.231-23.765 35.081 12.517 47.653 38.426 54.246 63.064 6.579 24.625 20.162 30.85 20.162 30.85s20.394 5.378 10.852 21.8c-9.555 16.435-21.636 3.945-23.369-1.283 0 0-62.751 4.218-103.483 61.699-40.719 57.495-38.726 162.098-38.726 162.098s-341.995 262.455-368.19 275.736c0 0-7.794 1.461-6.334-5.324z" />
+<glyph unicode="&#xe910;" glyph-name="camera" data-tags="camera, photo, picture, image" d="M304 352c0-114.876 93.124-208 208-208s208 93.124 208 208-93.124 208-208 208-208-93.124-208-208zM960 704h-224c-16 64-32 128-96 128h-256c-64 0-80-64-96-128h-224c-35.2 0-64-28.8-64-64v-576c0-35.2 28.8-64 64-64h896c35.2 0 64 28.8 64 64v576c0 35.2-28.8 64-64 64zM512 68c-156.85 0-284 127.148-284 284 0 156.85 127.15 284 284 284 156.852 0 284-127.15 284-284 0-156.852-127.146-284-284-284zM960 512h-128v64h128v-64z" />
+<glyph unicode="&#xe911;" glyph-name="clocktime" data-tags="clocktime" d="M398.164 640.5v-137.594c-19.007-10.912-31.602-31.092-31.602-54.214 0-6.076 0.87-11.948 2.491-17.5l-0.11 0.44-51.514-51.516c-5.698-5.775-9.217-13.712-9.217-22.471 0-17.673 14.327-32 32-32 8.759 0 16.696 3.519 22.474 9.22l-0.004-0.003 51.514 51.512c4.998-1.409 10.738-2.219 16.666-2.219 35.183 0 63.704 28.521 63.704 63.704 0 23.678-12.918 44.339-32.091 55.319l-0.311 0.164v137.156c0 17.673-14.327 32-32 32s-32-14.327-32-32v0zM433.931 831.984c199.204-2.11 361.934-155.453 378.912-350.54l0.101-1.444h67.084c8.837-0.001 16.001-7.165 16.001-16.002 0-3.407-1.064-6.564-2.879-9.159l0.034 0.052-113.465-163.891c-2.927-4.187-7.725-6.891-13.154-6.891s-10.227 2.704-13.12 6.84l-0.034 0.052-113.465 163.891c-1.78 2.543-2.845 5.701-2.845 9.108 0 8.837 7.164 16.001 16.001 16.002h63.575c-16.574 142.661-135.194 252.799-280.171 255.94l-0.315 0.005c-0.737 0.007-1.609 0.011-2.481 0.011-156.612 0-284.354-123.605-290.993-278.582l-0.020-0.6c-0.089-2.677-0.14-5.823-0.14-8.982 0-158.943 128.849-287.792 287.792-287.792 76.653 0 146.307 29.968 197.884 78.827l-0.131-0.123c5.699 5.468 13.451 8.834 21.988 8.834 10.78 0 20.307-5.367 26.053-13.575l0.068-0.102 18.316-26.461c3.512-5.104 5.609-11.419 5.609-18.223 0-9.59-4.165-18.207-10.786-24.14l-0.031-0.027c-68.025-62.619-159.201-101.009-259.344-101.009-211.769 0-383.441 171.672-383.441 383.441 0 5.662 0.123 11.296 0.366 16.898l-0.028-0.799c10.572 205.602 179.792 368.321 387.044 368.445h0.012z" />
+<glyph unicode="&#xe912;" glyph-name="code" data-tags="code" d="M684.251 763.073l339.893-251.789v-131.2l-339.893-250.662v136.459l222.52 178.772v2.121l-222.52 178.783zM339.941 763.073v-136.519l-222.478-178.771v-2.063l222.478-178.84v-137.458l-339.941 251.719v131.21zM543.108 906.232l92.079-15.94-155.219-900.571-92.020 15.881z" />
+<glyph unicode="&#xe913;" glyph-name="coin" data-tags="coin" d="M532.288 652.47c-50.624 0-90.208-20.802-118.912-62.404-17.152-24.802-28.96-53.923-35.264-87.365h-58.432l-11.6-39.364h65.776c-0.528-6.719-0.784-13.6-0.784-20.482 0-7.68 0.256-15.521 0.784-23.041h-54.176l-11.6-39.043h69.504c7.088-48.161 23.488-85.765 48.88-112.486 26.96-28.642 60.24-42.723 99.52-42.723 46.096 0 82.4 17.28 109.344 52.163 22.64 28.963 36 64.645 40.048 107.206h-44.88c-4.768-26.72-11.536-48.003-21.136-64.643-17.616-31.043-43.856-46.563-77.84-46.563-37.024 0-64.752 14.722-83.12 44.163-11.36 17.761-19.152 38.563-23.664 62.565h144.304l11.872 39.362h-160.24c-0.256 4.16-0.256 8.96-0.256 13.761 0 10.401 0.256 20.482 1.024 29.762h147.872l11.6 39.364h-153.92c5.024 24.32 13.088 44.321 24.432 59.844 20.64 28.002 47.856 42.083 81.392 42.083 27.408 0 48.8-7.522 63.968-22.882 15.344-15.040 25.408-36.002 30.432-61.924h45.136c-2.768 34.242-15.856 64.963-39.792 92.166-23.728 26.881-57.2 40.483-100.272 40.483zM512.048 822.4c206.688 0 374.384-167.69 374.384-374.424s-167.696-374.424-374.384-374.424c-206.768 0-374.464 167.69-374.464 374.424s167.392 374.424 374.464 374.424zM512.064 909.28c-254.4 0-461.376-206.88-461.376-461.28s206.976-461.28 461.376-461.28c254.336 0 461.248 206.88 461.248 461.28s-206.912 461.28-461.248 461.28zM512.064 960c282.272 0 511.936-229.6 511.936-512 0-282.24-229.664-512-511.936-512-282.368 0-512.064 229.76-512.064 512 0 282.4 229.696 512 512.064 512z" />
+<glyph unicode="&#xe914;" glyph-name="cube" data-tags="cube" d="M160 621.883l320-192.008v-351.992l-304.469 182.68c-9.368 5.696-15.53 15.847-15.531 27.437v0zM528.469 859.437c-4.703 2.857-10.388 4.547-16.469 4.547s-11.766-1.691-16.612-4.628l0.143 0.080-303.527-182.117 319.996-192 319.996 192zM544 429.875v-351.992l304.469 182.68c9.368 5.696 15.53 15.847 15.531 27.437v0 333.883z" />
+<glyph unicode="&#xe915;" glyph-name="dashboard" data-tags="dashboard" d="M797.156 159.875c-8.529-10.218-21.271-16.672-35.519-16.672-14.515 0-27.465 6.697-35.93 17.171l-0.068 0.087c-3.873 1.648-7.184 3.885-9.987 6.638l-67.901 67.901c-5.79 5.79-9.372 13.789-9.372 22.625 0 17.671 14.325 31.997 31.997 31.997 8.836 0 16.835-3.581 22.625-9.372v0l43.26-43.258c32.994 40.283 55.204 90.578 61.549 145.7l0.122 1.308h-61.932c-17.673 0-32 14.327-32 32s14.327 32 32 32v0h61.98c-0.262 2.437-0.252 4.84-0.574 7.281-7.523 53.851-29.185 101.615-61.077 140.704l0.405-0.512-43.703-43.723c-5.79-5.79-13.789-9.372-22.625-9.372-17.671 0-31.997 14.325-31.997 31.997 0 8.836 3.581 16.835 9.372 22.625l43.729 43.75c-40.045 32.607-89.888 54.662-144.495 61.243l-1.359 0.133c-0.555 0.064-1.102 0.043-1.656 0.101v-62.228c0-17.673-14.327-32-32-32s-32 14.327-32 32v0 62.14c-56.57-6.349-107.037-28.47-148.016-61.804l0.52 0.41 43.746-43.746c5.754-5.74 9.32-13.67 9.342-22.433v-0.004l165.252-120.793c13.687-10.088 22.469-26.147 22.469-44.256 0-30.276-24.544-54.82-54.82-54.82-18.11 0-34.169 8.782-44.151 22.32l-0.106 0.151-120.787 165.242c-8.77 0.028-16.703 3.594-22.449 9.344l-43.724 43.726c-32.699-40.559-54.775-90.956-61.278-146.12l-0.13-1.357h62.133c17.673 0 32-14.327 32-32s-14.327-32-32-32v0h-61.984c6.676-56.414 28.847-106.679 62.085-147.591l-0.416 0.528 43.313 43.312c5.79 5.79 13.789 9.372 22.625 9.372 17.671 0 31.997-14.325 31.997-31.997 0-8.836-3.581-16.835-9.372-22.625v0l-67.905-67.906c-2.759-2.694-6.015-4.893-9.616-6.445l-0.206-0.079c-8.543-10.61-21.531-17.341-36.092-17.341-14.245 0-26.985 6.443-35.465 16.573l-0.059 0.072c-61.126 67.675-98.527 157.799-98.527 256.658 0 211.831 171.723 383.555 383.555 383.555 15.672 0 31.124-0.94 46.303-2.766l-1.83 0.179c192.044-22.638 339.606-184.452 339.606-380.731 0-98.991-37.534-189.216-99.146-257.219l0.29 0.325z" />
+<glyph unicode="&#xe916;" glyph-name="datarefresh" data-tags="datarefresh" d="M56.046 365.538h300.061c-16.969-43.564-26.759-90.717-26.759-140.317 0-33.611 4.732-66.080 12.89-97.080h-286.192c-26.596 0-48.134 21.537-48.134 48.132v140.97c0 26.758 21.538 48.295 48.134 48.295zM720.679 512.952c3.12 0.082 6.26 0.082 9.442 0h0.489c39.969-0.326 77.818-8.81 112.24-23.984l1.142-0.653c101.636-45.194 172.113-147.492 170.971-265.78-1.631-158.913-131.654-286.501-290.553-284.869-123.987 1.305-228.723 80.925-267.876 191.218l102.942 17.947c28.876-62.978 92.011-107.030 165.914-107.846 101.963-0.979 185.327 80.925 186.306 182.897 1.142 101.809-80.754 185.345-182.717 186.323-8.646 0-17.13-0.653-25.45-1.632l-0.163 0.653c-27.408-3.589-52.857-13.216-75.045-27.736l35.401-33.447c2.121-1.958 2.936-5.058 1.794-7.668-0.979-2.774-3.426-4.568-6.362-4.732l-162.814-8.647c-2.121 0-3.915 0.979-5.384 2.447-1.468 1.632-2.121 3.753-1.631 6.037l12.236 68.036 17.619 96.262c0.489 2.937 2.61 5.221 5.384 5.71 2.936 0.653 5.873-0.489 7.504-2.937l28.223-41.441c39.154 28.226 85.649 46.499 136.059 52.047 0.653 0.163 1.305 0.163 1.958 0.163 4.405 0.489 8.646 0.816 13.051 1.142 3.1 0.245 6.199 0.408 9.319 0.489zM56.036 665.378h674.698c26.59 0 48.285-21.538 48.285-48.294v-13.217c-21.206 3.589-42.903 5.871-65.088 5.871-138.006 0-258.558-72.767-326.42-181.755h-331.476c-26.59 0-48.124 21.538-48.124 48.131v140.97c0 26.756 21.534 48.294 48.124 48.294zM149.834 895.923c-30.179 0-54.811-24.457-54.811-54.62s24.632-54.783 54.811-54.783c30.179 0 54.648 24.62 54.648 54.783s-24.469 54.62-54.648 54.62zM56.035 960h674.699c26.59 0 48.286-21.685 48.286-48.261v-141.034c0-26.576-21.696-48.098-48.286-48.098h-674.699c-26.59 0-48.123 21.522-48.123 48.098v141.034c0 26.576 21.533 48.261 48.123 48.261z" />
+<glyph unicode="&#xe917;" glyph-name="documentsave" data-tags="documentsave" d="M345.584 354.72v-202.88h345.36v202.88zM533.952 557.568h56.752v-130.416h-56.752zM286.432 586.544h114.104v-186.55h231.83v186.55h35.629l82.102-82.093v-381.571h-463.664zM194.583 882.635v-869.291h634.898v674.562h-201.145v194.729zM121.52 960h548.147l232.877-227.99v-796.010h-781.024z" />
+<glyph unicode="&#xe918;" glyph-name="download" data-tags="download" d="M896 224v-128c0-17.673-14.327-32-32-32v0h-704c-17.673 0-32 14.327-32 32v0 128c0 17.673 14.327 32 32 32v0h704c17.673 0 32-14.327 32-32v0zM485.961 340.455c5.876-8.154 15.345-13.4 26.039-13.4s20.163 5.246 25.974 13.305l0.065 0.095 177.818 248.945c3.727 5.164 5.961 11.621 5.961 18.6 0 17.673-14.327 32-32 32h-81.818v192c0 17.673-14.327 32-32 32v0h-128c-17.673 0-32-14.327-32-32v0-192h-81.818c-17.673 0-32-14.327-32-32 0-6.978 2.234-13.435 6.025-18.694l-0.065 0.095z" />
+<glyph unicode="&#xe919;" glyph-name="duplicate1" data-tags="duplicate1" d="M736 464v144l160-160h-144c-8.837 0-16 7.163-16 16v0zM352 640v176c0 8.837-7.163 16-16 16v0h-144c-17.673 0-32-14.327-32-32v0-480c0-17.673 14.327-32 32-32v0h224v288c0.116 11.518 2.262 22.501 6.096 32.655l-0.217-0.655h-37.879c-17.673 0-32 14.327-32 32v0zM672 416v176c0 8.837-7.163 16-16 16v0h-144c-17.673 0-32-14.327-32-32v0-480c0-17.673 14.327-32 32-32v0h352c17.673 0 32 14.327 32 32v0 272c0 8.837-7.163 16-16 16v0h-176c-17.673 0-32 14.327-32 32v0zM416 832v-144c0-8.837 7.163-16 16-16v0h144z" />
+<glyph unicode="&#xe91a;" glyph-name="edit" data-tags="edit" d="M150.64 131.024l196.688-112.934-177.876-82.090zM440.518 757.632l319.786-183.541-245.536-427.755-18.294 54.689-93.831 9.688-15.939 58.789-92.020 3.171-25.749 64.455-73.896-7.251zM594.229 959.985c8.817 0.212 17.429-1.772 25.181-6.213l226.455-129.975c27.498-15.797 33.665-56.711 13.811-91.334l-26.999-47.086-326.116 187.209 26.999 47.086c14.27 24.886 38.139 39.772 60.67 40.314z" />
+<glyph unicode="&#xe91b;" glyph-name="events" data-tags="Calendar_Ok" d="M960.678 366.457l63.222-63.199-266.16-266.165-0.163 0.201-150.263 150.245 63.212 63.224 87.214-87.247zM341.472 512.38c13.904 0 26.763-2.977 38.527-9.001 11.76-5.987 20.742-14.167 26.961-24.507 6.232-10.307 9.324-21.333 9.324-32.952 0-11.027-2.945-21.106-8.869-30.17-5.92-9.065-14.739-16.265-26.388-21.595 15.134-3.503 26.897-10.768 35.257-21.696 8.41-11.028 12.564-24.836 12.564-41.261 0-22.35-8.165-41.265-24.425-56.811-16.28-15.542-36.858-23.297-61.759-23.297-22.411 0-41.030 6.707-55.885 20.062-14.819 13.444-23.296 30.789-25.39 52.095l31.394 4.12c3.632-17.735 9.736-30.63 18.391-38.451 8.654-7.849 19.205-11.777 31.638-11.777 14.772 0 27.223 5.105 37.448 15.346 10.125 10.245 15.231 22.873 15.231 38.057 0 14.363-4.714 26.343-14.102 35.635-9.458 9.39-21.416 14.039-35.96 14.039-5.903 0-13.268-1.179-22.133-3.473l3.484 27.522c2.094-0.298 3.762-0.36 5.022-0.36 13.398 0 25.47 3.502 36.155 10.472 10.698 6.936 16.032 17.702 16.032 32.294 0 11.489-3.893 21.011-11.663 28.536-7.82 7.559-17.881 11.355-30.184 11.355-12.172 0-22.415-3.891-30.513-11.518-8.145-7.657-13.398-19.208-15.687-34.492l-31.347 5.533c3.796 21.072 12.547 37.402 26.144 48.918 13.613 11.584 30.512 17.377 50.732 17.377zM557.843 512.405h20.221v-256.666h-31.393v200.056c-7.559-7.264-17.457-14.496-29.692-21.662-12.321-7.198-23.3-12.565-33.097-16.197v30.3c17.57 8.31 32.916 18.255 46.099 30.003 13.107 11.686 22.415 23.104 27.863 34.165zM76.808 786.636h84.286v-94.785h152.748v94.785h214.198v-94.785h152.751v94.785h91.872c42.417 0 76.793-34.35 76.793-76.794v-406.333l-81.165-81.116v374.018h-687.115v-413.068h482.054l89.374-89.383h-652.604v89.383h0.065v526.499c0 42.443 34.338 76.794 76.742 76.794zM557.157 858.982h94.56v-136.173h-94.56zM190.225 858.982h94.535v-136.173h-94.535z" />
+<glyph unicode="&#xe91c;" glyph-name="excel" data-tags="excel" d="M789.441 241.11v-102.216h168.092v102.216zM789.441 373.99v-102.216h168.092v102.216zM789.441 506.871v-102.216h168.092v102.216zM345.376 635.776l-51.108-127.204-43.156 115.844h-69.282l70.42-166.952-78.365-165.819h68.144l51.108 118.12 51.108-129.471h74.959l-86.318 182.848 80.635 172.633zM789.441 639.751v-102.216h168.092v102.216zM789.441 772.631v-102.216h168.092v102.216zM608.293 830.554h402.053c7.527 0 13.629-6.102 13.629-13.629v-729.139c0-7.533-6.102-13.625-13.629-13.625h-402.053v64.733h149.918v102.216h-149.918v30.665h149.918v102.216h-149.918v30.665h149.918v102.216h-149.918v30.663h149.918v102.216h-149.918v30.665h149.918v102.216h-149.918zM589.444 943.748v-991.49l-589.444 102.216v787.058z" />
+<glyph unicode="&#xe91d;" glyph-name="expand" data-tags="expand" d="M139.462 308.298h744.932l-372.468-372.442zM511.926 960l372.468-372.442h-744.932z" />
+<glyph unicode="&#xe91e;" glyph-name="file" data-tags="file" d="M640 608h176c8.837 0 16-7.163 16-16v0-496c0-17.673-14.327-32-32-32v0h-544c-17.673 0-32 14.327-32 32v0 704c0 17.673 14.327 32 32 32v0h336c8.837 0 16-7.163 16-16v0-176c0-17.673 14.327-32 32-32v0zM688 672h144l-160 160v-144c0-8.837 7.163-16 16-16v0z" />
+<glyph unicode="&#xe91f;" glyph-name="film" data-tags="film, video, movie, tape, play" d="M0 832v-768h1024v768h-1024zM192 128h-128v128h128v-128zM192 384h-128v128h128v-128zM192 640h-128v128h128v-128zM768 128h-512v640h512v-640zM960 128h-128v128h128v-128zM960 384h-128v128h128v-128zM960 640h-128v128h128v-128zM384 640v-384l256 192z" />
+<glyph unicode="&#xe920;" glyph-name="folder" data-tags="folder" d="M193.912 591.524l-65.912-263.649v408.125c0.001 35.346 28.654 63.999 64 64h133.49c0 0 0.001 0 0.001 0 17.673 0 33.673-7.164 45.255-18.746l45.254-45.254h416c35.346-0.001 63.999-28.654 64-64v0-32h-640c-0.001 0-0.001 0-0.002 0-29.833 0-54.898-20.413-61.99-48.033l-0.097-0.444zM942.031 576h-636.063c-0.001 0-0.001 0-0.002 0-29.833 0-54.897-20.413-61.989-48.033l-0.097-0.444-115.881-463.524h768l108.119 432.476c1.214 4.66 1.911 10.011 1.911 15.524 0 35.346-28.653 63.999-63.999 64v0z" />
+<glyph unicode="&#xe921;" glyph-name="folder_add" data-tags="folder_add" d="M785.553 312.399v-95.808h-95.774v-57.011h95.774v-95.791h57.045v95.791h95.774v57.011h-95.774v95.808zM809.218 404.602c118.6 0 214.747-96.162 214.747-214.765s-96.148-214.765-214.747-214.765c-118.603 0-214.749 96.162-214.749 214.765s96.146 214.765 214.749 214.765zM81.172 920.86h285.817c44.839 0 81.184-36.345 81.184-81.163v-38.919h365.342c44.838 0 81.184-36.366 81.184-81.182v-253.204l-6.333 1.888c-25.165 7.163-51.718 10.999-79.149 10.999-159.599 0-289.459-129.845-289.459-289.441 0-24.937 3.17-49.147 9.129-72.249l1.406-5.182h-449.12c-44.828 0-81.174 36.346-81.174 81.185v526.004c0 1.401 0.035 2.793 0.106 4.176l0.068 0.898-0.068 0.899c-0.070 1.384-0.106 2.777-0.106 4.178v109.951c0 44.817 36.345 81.163 81.172 81.163z" />
+<glyph unicode="&#xe922;" glyph-name="folder_delete" data-tags="folder_delete" d="M688.355 220.883v-67.036h248.593v67.036zM809.218 404.602c118.6 0 214.747-96.162 214.747-214.765s-96.148-214.765-214.747-214.765c-118.6 0-214.749 96.162-214.749 214.765s96.149 214.765 214.749 214.765zM81.172 920.86h285.819c44.837 0 81.182-36.345 81.182-81.163v-38.919h365.342c44.838 0 81.184-36.366 81.184-81.182v-253.204l-6.333 1.888c-25.165 7.163-51.718 10.999-79.149 10.999-159.599 0-289.459-129.845-289.459-289.441 0-24.937 3.17-49.147 9.129-72.249l1.406-5.182h-449.12c-44.828 0-81.174 36.346-81.174 81.185v526.004c0 1.401 0.035 2.793 0.106 4.176l0.068 0.898-0.068 0.899c-0.070 1.384-0.106 2.777-0.106 4.178v109.951c0 44.817 36.345 81.163 81.172 81.163z" />
+<glyph unicode="&#xe923;" glyph-name="folder_find" data-tags="folder_find" d="M494.046 553.696c90.647 0 164.146-73.457 164.146-164.1 0-90.632-73.498-164.108-164.146-164.108-90.646 0-164.126 73.476-164.126 164.108 0 90.643 73.481 164.1 164.126 164.1zM494.046 602.144c-117.376 0-212.542-95.145-212.542-212.548 0-117.391 95.165-212.556 212.542-212.556 34.851 0 67.744 8.387 96.769 23.254l4.077 2.151 54.362-69.117h93.29l-89.772 114.911 2.001 2.255c32.294 37.28 51.834 85.909 51.834 139.102 0 117.403-95.168 212.548-212.562 212.548zM92.896 910.64h327.164c51.312 0 92.916-41.604 92.916-92.904v-44.536h418.106c51.315 0 92.918-41.615 92.918-92.907v-602.031c0-51.325-41.603-92.918-92.918-92.918h-838.185c-51.293 0-92.896 41.594-92.896 92.918v602.031c0 1.603 0.041 3.196 0.121 4.779l0.078 1.030-0.078 1.030c-0.080 1.584-0.121 3.178-0.121 4.782v125.822c0 51.299 41.603 92.904 92.896 92.904z" />
+<glyph unicode="&#xe924;" glyph-name="group" data-tags="group" d="M823.502 288h-47.004c-2.992 0.083-5.847 0.358-8.641 0.815l0.368-0.050c-13.662 11.227-29.91 24.652-48.35 39.953l-4.238 3.531c-1.115 3.304-2.023 7.215-2.557 11.244l-0.035 0.326c0.527 2.031 1.156 4.008 1.612 6.070l16.094 73.688c19.613 16.339 34.884 37.23 44.269 61.083l0.356 1.026 8.906 24c5.094 12.059 8.054 26.079 8.054 40.791 0 25.917-9.187 49.689-24.482 68.236l0.147-0.183v48.945c10.060 2.878 21.614 4.533 33.555 4.533 69.839 0 126.455-56.616 126.455-126.455 0-0.547-0.003-1.092-0.010-1.637l0.001 0.083v-69.961c4.573-3.984 7.447-9.817 7.447-16.322 0-2.91-0.575-5.686-1.618-8.22l0.052 0.144-11.762-35.281c-5.295-13.384-16.081-23.612-29.505-28.040l-0.337-0.096-5.269-42.16c-4.084-31.766-30.958-56.062-63.506-56.062 0 0 0 0 0 0v0zM287.012 288.695c15.744 12.945 33.188 27.312 49.082 40.414l4.424 3.641c1.037 3.152 1.89 6.897 2.402 10.751l0.036 0.327c-0.527 2.020-1.162 4-1.612 6.048l-16.094 73.703c-19.595 16.329-34.856 37.204-44.238 61.037l-0.356 1.026-8.969 24.109c-5.079 12.041-8.030 26.039-8.030 40.727 0 25.918 9.19 49.69 24.489 68.235l-0.146-0.183v48.945c-10.060 2.878-21.614 4.533-33.555 4.533-69.839 0-126.455-56.616-126.455-126.455 0-0.547 0.003-1.092 0.010-1.637l-0.001 0.083v-69.961c-4.573-3.984-7.447-9.817-7.447-16.322 0-2.91 0.575-5.686 1.618-8.22l-0.052 0.144 11.762-35.281c5.295-13.384 16.081-23.612 29.505-28.040l0.337-0.096 5.269-42.16c4.084-31.766 30.958-56.062 63.506-56.062 0 0 0 0 0 0h47.004c2.735 0.090 5.326 0.34 7.866 0.742l-0.356-0.046zM1010.352 249.555l-70.819 49.571c-18.173-39.272-54.546-67.41-97.992-73.753l-0.693-0.083c14.011-17.84 22.585-40.532 22.921-65.213l0.001-0.076h144.23c8.837 0 16 7.163 16 16v0 47.34c-0.001 10.801-5.352 20.352-13.548 26.147l-0.1 0.067zM116.467 299.125l-70.819-49.571c-8.296-5.862-13.648-15.413-13.648-26.215v0-47.34c0-8.837 7.163-16 16-16v0h144.824c1.185 24.746 9.937 47.241 23.973 65.456l-0.201-0.272c-44.747 5.947-81.747 34.258-99.8 73.151l-0.329 0.791zM773.455 202.297c-13.924 10.547-58.512 47.348-94.453 77.188-29.443-33.897-72.541-55.268-120.636-55.484h-60.694c-48.237 0.222-91.415 21.695-120.684 55.531l-0.172 0.203c-36.762-30.304-82.34-67.828-94.272-77.437-16.096-10.821-26.545-28.963-26.545-49.546 0-0.114 0-0.228 0.001-0.343v0.018-40.426c0-8.837 7.163-16 16-16v0h512c8.837 0 16 7.163 16 16v0 40.426c0.088 1.147 0.139 2.484 0.139 3.833 0 19.598-10.626 36.714-26.43 45.902l-0.253 0.136zM340.633 507.977c8.558-20.091 23.145-36.239 41.462-46.535l0.481-0.249 21.307-97.656c9.736-43.507 48.024-75.536 93.792-75.536 0 0 0.001 0 0.001 0h60.648c0 0 0 0 0 0 45.768 0 84.055 32.028 93.671 74.895l0.121 0.64 21.307 97.656c18.799 10.544 33.386 26.693 41.706 46.16l0.237 0.624 8.96 24.047c2.746 5.341 4.356 11.654 4.356 18.343 0 16.707-10.042 31.068-24.42 37.377l-0.262 0.102v84.156c0 96-64 160-176 160s-176-64-176-160v-84.156c-14.639-6.411-24.682-20.772-24.682-37.479 0-6.689 1.61-13.001 4.463-18.572l-0.107 0.23z" />
+<glyph unicode="&#xe925;" glyph-name="history" data-tags="history" d="M623.040 527.829l-69.717-69.76c0.811-3.264 1.344-6.699 1.344-10.197 0-23.552-19.093-42.795-42.667-42.795-15.957 0-29.717 10.923-37.035 21.589h-58.965c-5.867 0-10.667 5.312-10.667 11.157v20.331c0 5.867 4.8 11.179 10.667 11.179h58.965c7.339 10.667 21.077 21.589 37.035 21.589 4.203 0 8.213-1.045 12.053-2.176l69.077 69.056c4.139 4.139 10.944 4.139 15.083 0l14.805-14.848c4.181-4.16 4.181-10.944 0.021-15.125zM763.541 405.333c2.453 21.333 4.203 28.459 4.203 43.051 0 141.184-114.837 256.213-256 256.213s-255.872-114.731-255.872-255.936c0-141.12 106.795-255.872 256.128-255.872v0.043c42.667 0.128 96.192 13.696 139.243 41.835l1.216 0.832 31.488-43.648c3.456-4.779 7.701-4.011 9.429 1.557l47.040 137.387c1.749 5.611-1.643 10.24-7.531 10.368l-145.792-0.043c-5.888 0.128-7.893-3.712-4.48-8.448l32.32-45.227c-31.893-20.48-60.267-30.357-102.933-30.507v-0.171c-106.667 0.021-192.171 85.973-192.128 192.021 0 106.048 85.909 192 191.957 192 106.027 0 191.957-86.357 191.957-192.427 0-14.677-1.963-21.717-5.12-43.051h64.875z" />
+<glyph unicode="&#xe926;" glyph-name="image" data-tags="image, picture, photo, graphic" d="M959.884 832c0.040-0.034 0.082-0.076 0.116-0.116v-767.77c-0.034-0.040-0.076-0.082-0.116-0.116h-895.77c-0.040 0.034-0.082 0.076-0.114 0.116v767.772c0.034 0.040 0.076 0.082 0.114 0.114h895.77zM960 896h-896c-35.2 0-64-28.8-64-64v-768c0-35.2 28.8-64 64-64h896c35.2 0 64 28.8 64 64v768c0 35.2-28.8 64-64 64v0zM832 672c0-53.020-42.98-96-96-96s-96 42.98-96 96 42.98 96 96 96 96-42.98 96-96zM896 128h-768v128l224 384 256-320h64l224 192z" />
+<glyph unicode="&#xe927;" glyph-name="file-picture" data-tags="file-picture, file, document, file-image" d="M832 64h-640v128l192 320 263-320 185 128v-256zM832 480c0-53.020-42.98-96-96-96-53.022 0-96 42.98-96 96s42.978 96 96 96c53.020 0 96-42.98 96-96zM917.806 730.924c-22.212 30.292-53.174 65.7-87.178 99.704s-69.412 64.964-99.704 87.178c-51.574 37.82-76.592 42.194-90.924 42.194h-496c-44.112 0-80-35.888-80-80v-864c0-44.112 35.888-80 80-80h736c44.112 0 80 35.888 80 80v624c0 14.332-4.372 39.35-42.194 90.924zM785.374 785.374c30.7-30.7 54.8-58.398 72.58-81.374h-153.954v153.946c22.984-17.78 50.678-41.878 81.374-72.572zM896 16c0-8.672-7.328-16-16-16h-736c-8.672 0-16 7.328-16 16v864c0 8.672 7.328 16 16 16 0 0 495.956 0.002 496 0v-224c0-17.672 14.326-32 32-32h224v-624z" />
+<glyph unicode="&#xe928;" glyph-name="images" data-tags="images, pictures, photos, graphics" horiz-adv-x="1152" d="M1088 832h-64v64c0 35.2-28.8 64-64 64h-896c-35.2 0-64-28.8-64-64v-768c0-35.2 28.8-64 64-64h64v-64c0-35.2 28.8-64 64-64h896c35.2 0 64 28.8 64 64v768c0 35.2-28.8 64-64 64zM128 768v-640h-63.886c-0.040 0.034-0.082 0.076-0.114 0.116v767.77c0.034 0.040 0.076 0.082 0.114 0.114h895.77c0.040-0.034 0.082-0.076 0.116-0.116v-63.884h-768c-35.2 0-64-28.8-64-64v0zM1088 0.116c-0.034-0.040-0.076-0.082-0.116-0.116h-895.77c-0.040 0.034-0.082 0.076-0.114 0.116v767.77c0.034 0.040 0.076 0.082 0.114 0.114h895.77c0.040-0.034 0.082-0.076 0.116-0.116v-767.768zM960 608c0-53.020-42.98-96-96-96s-96 42.98-96 96 42.98 96 96 96 96-42.98 96-96zM1024 64h-768v128l224 384 256-320h64l224 192z" />
+<glyph unicode="&#xe929;" glyph-name="file-play" data-tags="file-play, file, document, file-media, file-video" d="M384 576l320-224-320-224v448zM917.806 730.924c-22.212 30.292-53.174 65.7-87.178 99.704s-69.412 64.964-99.704 87.178c-51.574 37.82-76.592 42.194-90.924 42.194h-496c-44.112 0-80-35.888-80-80v-864c0-44.112 35.888-80 80-80h736c44.112 0 80 35.888 80 80v624c0 14.332-4.372 39.35-42.194 90.924zM785.374 785.374c30.7-30.7 54.8-58.398 72.58-81.374h-153.954v153.946c22.984-17.78 50.678-41.878 81.374-72.572zM896 16c0-8.672-7.328-16-16-16h-736c-8.672 0-16 7.328-16 16v864c0 8.672 7.328 16 16 16 0 0 495.956 0.002 496 0v-224c0-17.672 14.326-32 32-32h224v-624z" />
+<glyph unicode="&#xe92a;" glyph-name="inbox" data-tags="inbox" d="M816 800h-608c-44.164-0.048-79.952-35.836-80-79.995v-576.005c0.048-44.164 35.836-79.952 79.995-80h608.005c44.164 0.048 79.952 35.836 80 79.995v576.005c-0.048 44.164-35.836 79.952-79.995 80h-0.005zM800 384h-130.883c0 0 0 0-0.001 0-7.725 0-14.172-5.475-15.671-12.756l-0.018-0.103-26.856-134.281c-1.517-7.385-7.964-12.86-15.689-12.86 0 0 0 0-0.001 0h-197.766c0 0 0 0-0.001 0-7.725 0-14.172 5.475-15.671 12.756l-0.018 0.103-26.856 134.281c-1.517 7.385-7.964 12.86-15.689 12.86 0 0 0 0-0.001 0h-130.883v320h576z" />
+<glyph unicode="&#xe92b;" glyph-name="library" data-tags="library" d="M576 832h-160c-17.673 0-32-14.327-32-32v0-704c0-17.673 14.327-32 32-32v0h160c17.673 0 32 14.327 32 32v0 704c0 17.673-14.327 32-32 32v0zM544 144c0-8.837-7.163-16-16-16v0h-64c-8.837 0-16 7.163-16 16v0 32c0 8.837 7.163 16 16 16v0h64c8.837 0 16-7.163 16-16v0zM544 720c0-8.837-7.163-16-16-16v0h-64c-8.837 0-16 7.163-16 16v0 32c0 8.837 7.163 16 16 16v0h64c8.837 0 16-7.163 16-16v0zM865.174 814.101c-2.739 15.123-15.804 26.443-31.514 26.443-1.964 0-3.886-0.177-5.752-0.516l0.195 0.029-157.568-27.783c-15.123-2.739-26.443-15.804-26.443-31.514 0-1.964 0.177-3.886 0.516-5.752l-0.029 0.195 122.248-693.305c2.737-15.123 15.802-26.444 31.512-26.444 1.964 0 3.888 0.177 5.754 0.516l-0.195-0.029 157.568 27.783c15.123 2.737 26.443 15.802 26.443 31.511 0 1.964-0.177 3.888-0.516 5.754l0.029-0.195zM903.082 138.418l-63.029-11.113c-0.835-0.154-1.795-0.243-2.776-0.243-7.855 0-14.388 5.66-15.745 13.123l-0.015 0.098-5.556 31.514c-0.155 0.835-0.243 1.797-0.243 2.778 0 7.855 5.66 14.387 13.124 15.742l0.098 0.015 63.029 11.115c0.835 0.154 1.795 0.243 2.776 0.243 7.855 0 14.388-5.66 15.745-13.123l0.015-0.098 5.556-31.516c0.154-0.835 0.243-1.795 0.243-2.776 0-7.855-5.66-14.388-13.124-15.744l-0.098-0.015zM288 832h-160c-17.673 0-32-14.327-32-32v0-704c0-17.673 14.327-32 32-32v0h160c17.673 0 32 14.327 32 32v0 704c0 17.673-14.327 32-32 32v0zM256 144c0-8.837-7.163-16-16-16v0h-64c-8.837 0-16 7.163-16 16v0 32c0 8.837 7.163 16 16 16v0h64c8.837 0 16-7.163 16-16v0zM256 720c0-8.837-7.163-16-16-16v0h-64c-8.837 0-16 7.163-16 16v0 32c0 8.837 7.163 16 16 16v0h64c8.837 0 16-7.163 16-16v0z" />
+<glyph unicode="&#xe92c;" glyph-name="license" data-tags="license" d="M875.125 506.258l-204.547-148.578 77.998-240.192c0.65-1.932 1.025-4.157 1.025-6.47 0-11.561-9.372-20.932-20.932-20.932-0.003 0-0.006 0-0.009 0v0c-4.595 0.025-8.829 1.553-12.24 4.116l0.053-0.038-204.342 148.426-204.344-148.426c-3.358-2.525-7.592-4.053-12.182-4.078h-0.006c-0.002 0-0.004 0-0.006 0-11.562 0-20.934 9.373-20.934 20.934 0 2.312 0.375 4.536 1.067 6.616l-0.043-0.148 77.998 240.192-204.547 148.578c-5.239 3.837-8.603 9.966-8.603 16.88 0 11.522 9.34 20.862 20.862 20.862 0 0 0 0 0 0h252.793l78.1 240.5c2.803 8.438 10.625 14.417 19.843 14.417s17.040-5.978 19.8-14.27l0.042-0.147 78.099-240.5h252.793c11.521-0.003 20.859-9.343 20.859-20.864 0-6.913-3.362-13.041-8.54-16.837l-0.058-0.041z" />
+<glyph unicode="&#xe92d;" glyph-name="list" data-tags="list" d="M352 512v-128c0-17.673-14.327-32-32-32v0h-128c-17.673 0-32 14.327-32 32v0 128c0 17.673 14.327 32 32 32v0h128c17.673 0 32-14.327 32-32v0zM320 288h-128c-17.673 0-32-14.327-32-32v0-128c0-17.673 14.327-32 32-32v0h128c17.673 0 32 14.327 32 32v0 128c0 17.673-14.327 32-32 32v0zM320 800h-128c-17.673 0-32-14.327-32-32v0-128c0-17.673 14.327-32 32-32v0h128c17.673 0 32 14.327 32 32v0 128c0 17.673-14.327 32-32 32v0zM864 608h-416c-17.673 0-32-14.327-32-32v0-32c0-17.673 14.327-32 32-32v0h416c17.673 0 32 14.327 32 32v0 32c0 17.673-14.327 32-32 32v0zM864 800h-416c-17.673 0-32-14.327-32-32v0-32c0-17.673 14.327-32 32-32v0h416c17.673 0 32 14.327 32 32v0 32c0 17.673-14.327 32-32 32v0zM864 224h-416c-17.673 0-32-14.327-32-32v0-32c0-17.673 14.327-32 32-32v0h416c17.673 0 32 14.327 32 32v0 32c0 17.673-14.327 32-32 32v0zM864 416h-416c-17.673 0-32-14.327-32-32v0-32c0-17.673 14.327-32 32-32v0h416c17.673 0 32 14.327 32 32v0 32c0 17.673-14.327 32-32 32v0z" />
+<glyph unicode="&#xe92e;" glyph-name="log" data-tags="log" d="M484.605 523.186c-29.216 0-46.245-27.795-46.245-64.947 0-37.435 17.56-63.807 46.528-63.807 29.216 0 45.967 27.778 45.967 64.933 0 34.325-16.468 63.821-46.25 63.821zM264.531 554.432h43.398v-154.911h76.017v-36.306h-119.415zM708.043 556.399c24.685 0 43.682-4.829 53.027-9.343l-9.062-34.624c-10.53 4.514-23.562 8.203-44.529 8.203-36.031 0-63.308-20.39-63.308-61.828 0-39.451 24.721-62.687 60.152-62.687 9.969 0 17.908 1.111 21.279 2.846v40h-29.465v33.734h71.179v-100.705c-13.341-4.546-38.556-10.797-63.804-10.797-34.906 0-60.152 8.813-77.745 25.86-17.593 16.421-27.216 41.407-26.936 69.469 0.281 63.561 46.528 99.872 109.211 99.872zM485.733 557.527c58.746 0 90.774-43.996 90.774-96.728 0-62.681-37.999-100.729-93.901-100.729-56.716 0-89.901 42.842-89.901 97.306 0 57.313 36.562 100.15 93.028 100.15zM192.874 899.427v-898.747h449.428l-0.689 224.562 185.203-0.187v674.372zM132.35 960h759.397v-807.847l-193.105-216.081h-566.292z" />
+<glyph unicode="&#xe92f;" glyph-name="logout" data-tags="logout" d="M802.658 802.445l-320 26.668c-0.736 0.061-1.594 0.096-2.459 0.096-16.632 0-30.273-12.806-31.6-29.096l-0.007-0.113h-0.592v-672h0.592c1.335-16.401 14.974-29.205 31.604-29.205 0.867 0 1.725 0.035 2.575 0.103l-0.112-0.007 320 26.664c16.491 1.418 29.341 15.154 29.342 31.891v0 613.109c0 0 0 0.001 0 0.001 0 16.737-12.85 30.474-29.223 31.881l-0.119 0.008zM544 416c-17.673 0-32 14.327-32 32s14.327 32 32 32c17.673 0 32-14.327 32-32v0c0-17.673-14.327-32-32-32v0zM256 800h128v-64h-128v-544h128v-64h-128c-35.327 0.047-63.953 28.673-64 63.995v544.005c0.047 35.327 28.673 63.953 63.995 64h0.005z" />
+<glyph unicode="&#xe930;" glyph-name="dataset" data-tags="dataset" d="M96.734 228.331h830.597c32.681 0 59.317-26.584 59.317-59.329v-173.575c0-32.777-26.635-59.378-59.317-59.378h-830.597c-32.845 0-59.317 26.602-59.317 59.378v173.575c0 32.745 26.472 59.329 59.317 59.329zM96.736 597.425h830.597c32.681 0 59.317-26.535 59.317-59.28v-173.575c0-32.728-26.635-59.345-59.317-59.345h-830.597c-32.845 0-59.317 26.617-59.317 59.345v173.575c0 32.744 26.472 59.28 59.317 59.28zM212.102 881.309c-37.093 0-67.324-30.212-67.324-67.384s30.23-67.368 67.324-67.368c37.093 0 67.324 30.196 67.324 67.368s-30.23 67.384-67.324 67.384zM96.736 960h830.597c32.681 0 59.317-26.552 59.317-59.345v-173.559c0-32.728-26.635-59.296-59.317-59.296h-830.597c-32.845 0-59.317 26.568-59.317 59.296v173.559c0 32.794 26.472 59.345 59.317 59.345z" />
+<glyph unicode="&#xe931;" glyph-name="newspaper" data-tags="newspaper" d="M400 512h352c8.837 0 16 7.163 16 16v0 128c0 8.837-7.163 16-16 16v0h-352c-8.837 0-16-7.163-16-16v0-128c0-8.837 7.163-16 16-16v0zM751.998 448h-128c-8.837 0-16-7.163-16-16v0-32c0-8.837 7.163-16 16-16v0h128c8.837 0 16 7.163 16 16v0 32c0 8.837-7.163 16-16 16v0zM751.998 320h-128c-8.837 0-16-7.163-16-16v0-32c0-8.837 7.163-16 16-16v0h128c8.837 0 16 7.163 16 16v0 32c0 8.837-7.163 16-16 16v0zM399.998 256h128c8.837 0 16 7.163 16 16v0 32c0 8.837-7.163 16-16 16v0h-128c-8.837 0-16-7.163-16-16v0-32c0-8.837 7.163-16 16-16v0zM864 800h-576c-0.005 0-0.012 0-0.018 0-17.663 0-31.982-14.319-31.982-31.982 0-0.006 0-0.013 0-0.019v0.001-544c0-17.673-14.327-32-32-32s-32 14.327-32 32v0 544c-35.327-0.047-63.953-28.673-64-63.995v-480.005c0.064-52.972 42.971-95.901 95.928-96h576.071c52.995 0.060 95.94 43.005 96 95.994v544.006c0 0.005 0 0.012 0 0.018 0 17.663-14.319 31.982-31.982 31.982-0.006 0-0.013 0-0.019 0h0.001zM832 224c-0.012-17.668-14.332-31.988-31.999-32h-485.47c3.465 9.51 5.469 20.489 5.469 31.935 0 0.023 0 0.045 0 0.068v-0.004 512h512zM399.998 384h128c8.837 0 16 7.163 16 16v0 32c0 8.837-7.163 16-16 16v0h-128c-8.837 0-16-7.163-16-16v0-32c0-8.837 7.163-16 16-16v0z" />
+<glyph unicode="&#xe932;" glyph-name="numberlist" data-tags="numberlist" d="M448 544v32c0 17.673 14.327 32 32 32v0h256c17.673 0 32-14.327 32-32v0-32c0-17.673-14.327-32-32-32v0h-256c-17.673 0-32 14.327-32 32v0zM736 224h-256c-17.673 0-32-14.327-32-32v0-32c0-17.673 14.327-32 32-32v0h256c17.673 0 32 14.327 32 32v0 32c0 17.673-14.327 32-32 32v0zM864 416h-384c-17.673 0-32-14.327-32-32v0-32c0-17.673 14.327-32 32-32v0h384c17.673 0 32 14.327 32 32v0 32c0 17.673-14.327 32-32 32v0zM864 800h-384c-17.673 0-32-14.327-32-32v0-32c0-17.673 14.327-32 32-32v0h384c17.673 0 32 14.327 32 32v0 32c0 17.673-14.327 32-32 32v0zM320 224h-78.375c5.243 9.382 13.594 16.497 23.633 20.032l0.305 0.093c18.844 6.72 76.156 27.094 76.156 85.031-0.068 47.946-38.926 86.794-86.87 86.844h-0.005c-32.111-0.153-60.674-15.208-79.15-38.599l-0.163-0.214c-4.685-5.53-7.533-12.745-7.533-20.626 0-17.674 14.328-32.002 32.002-32.002 9.794 0 18.56 4.399 24.43 11.33l0.039 0.047c6.893 9.542 17.877 15.76 30.328 16.063l0.047 0.001c12.621-0.003 22.854-10.225 22.875-22.842v-0.002c0-3.812 0-12.781-33.625-24.719-43.636-17.22-73.949-59.019-73.949-107.899 0-2.19 0.061-4.366 0.181-6.526l-0.013 0.3c0.935-16.931 14.889-30.307 31.968-30.313h117.719c17.673 0 32 14.327 32 32s-14.327 32-32 32v0zM214.624 681.376l9.376 9.374v-114.75c0-17.673 14.327-32 32-32s32 14.327 32 32v0 192c0 0 0 0 0 0 0 17.672-14.326 31.997-31.997 31.997-8.837 0-16.836-3.582-22.627-9.373l-64-64c-5.668-5.769-9.168-13.685-9.168-22.419 0-17.671 14.325-31.996 31.996-31.996 8.734 0 16.65 3.499 22.424 9.172l-0.005-0.005z" />
+<glyph unicode="&#xe933;" glyph-name="package" data-tags="package" d="M734.549 503.648l-380.418 258.141 126.775 76.055 383.994-255.984zM293.65 725.5l-132.754-79.641 384.006-256 129.17 77.5zM128 334.875l384-255.992v255.992l-384 256zM768 449.078v-86.93c0-0.002 0-0.003 0-0.005 0-5.797-3.082-10.875-7.697-13.683l-0.071-0.040-32-19.195c-2.35-1.432-5.192-2.28-8.232-2.28-8.836 0-15.999 7.163-16 15.999v0 67.744l-128-76.804v-255.984l320 191.976v256.007z" />
+<glyph unicode="&#xe934;" glyph-name="paste1" data-tags="paste, clipboard-file" d="M704 832h-128v64c0 35.2-28.8 64-64 64h-128c-35.204 0-64-28.8-64-64v-64h-128v-128h512v128zM512 832h-128v63.886c0.034 0.038 0.072 0.078 0.114 0.114h127.768c0.042-0.036 0.082-0.076 0.118-0.114v-63.886zM832 640v160c0 17.6-14.4 32-32 32h-64v-64h32v-128h-192l-192-192v-256h-256v576h32v64h-64c-17.602 0-32-14.4-32-32v-640c0-17.6 14.398-32 32-32h288v-192h640v704h-192zM576 549.49v-101.49h-101.49l101.49 101.49zM960 0h-512v384h192v192h320v-576z" />
+<glyph unicode="&#xe935;" glyph-name="pause" data-tags="pause" d="M811.771 362.91c-12.827-56.112-29.899-108.479-50.513-156.048h68.561c41.745 0 75.792 34.992 75.792 78.049 0 42.958-34.047 77.999-75.792 77.999zM448.901 572.858c-21.735 0-41.836-0.864-61.427-2.062-2.425-36.767-16.93-71.759-56.016-103.2-10.542-8.496-64.738-14.256-42.069 4.034 35.26 28.415 47.108 60.67 46.966 94.654-131.062-14.976-204.753-52.945-217.020-72.433 15.484-24.48 126.723-78.91 329.566-78.91s314.083 54.43 329.566 78.91c-11.054 17.616-72.293 50.402-180.407 67.584-4.29-33.31-19.31-65.088-55.036-93.84-10.542-8.496-64.692-14.256-42.069 4.034 35.772 28.845 47.433 61.535 47.014 96.046-30.412 2.977-62.734 5.183-99.067 5.183zM606.361 959.994c12.045 0.162 19.893-2.922 8.443-11.779-122.060-94.127-39.598-214.366-19.355-324.668 139.969-20.256 238.521-68.495 238.57-124.991-2.659-27.263-6.576-53.519-11.008-79.391h6.809c72.014 0 130.41-60.096 130.41-134.255s-58.395-134.304-130.41-134.304h-95.802c-71.22-131.805-172.385-214.606-285.117-214.606-193.653 0-353.96 243.311-385.118 562.363 0 59.856 110.027 110.305 262.545 128.255-12.082 41.569-31.764 84.049-41.045 124.367-20.055 87.169 6.997 148.223 75.886 201.312 5.34 4.128 21.583 7.536 33.628 7.698s19.892-2.922 8.441-11.779c-119.122-91.871-43.515-208.557-20.895-316.605 21.689 1.298 43.797 2.112 66.557 2.112 30.318 0 59.654-1.392 87.919-3.694-12.173 40.462-30.97 81.694-39.971 120.957-20.055 87.169 6.994 148.223 75.886 201.312 5.339 4.128 21.581 7.536 33.626 7.698z" />
+<glyph unicode="&#xe936;" glyph-name="pay" data-tags="pay" d="M290.893 44.681h341.090v-108.598h-341.090zM654.474 488.13c21.302 0.828 42.039-10.909 51.67-31.4l71.345-151.834c10.431-22.197 4.638-47.869-12.567-63.604l-3.157-2.611-124.45-130.921-0.691-1.528c-7.41-15.376-23.143-25.987-41.351-25.987h-261.553c-25.332 0-45.875 20.541-45.875 45.875v160.864l124.446-124.443c15.624-15.621 36.383-24.211 58.458-24.211 22.076 0 42.833 8.591 58.436 24.211l111.965 111.961v-31.040l29.568 27.14-65.221 138.828c-12.864 27.341-1.1 59.903 26.241 72.766l1.639 0.777c6.836 3.21 13.999 4.882 21.1 5.158zM501.391 542.007l-50.752-50.734c19.938-13.614 36.101-14.219 48.485-1.833 10.359 10.358 11.115 27.88 2.267 52.567zM546.232 658.468c-8.654 0.045-16.055-3.021-22.205-9.17-6.496-6.52-10.034-13.596-10.618-21.278s1.511-18.126 6.281-31.311l52.587 52.588c-8.72 6.085-17.414 9.128-26.045 9.17zM620.373 697.396l18.193-18.19-23.198-23.197c20.196-21.254 32.044-38.023 35.541-50.301l-28.204-28.205c-3.732 17.782-14.24 35.865-31.568 54.251l-60.765-60.765c12.732-30.643 18.881-54.186 18.45-70.629-0.454-16.42-5.999-29.95-16.615-40.567-12.926-12.928-28.7-18.754-47.367-17.479-18.664 1.273-38.063 9.581-58.175 24.965l-28.612-28.591-18.19 18.192 27.535 27.534c-21.882 21.902-35.928 43.503-42.078 64.759l29.387 29.39c1.362-10.681 5.611-22.744 12.777-36.21 7.141-13.487 15.19-24.708 24.166-33.684l58.651 58.651c-13.702 32.865-19.938 56.755-18.708 71.685 1.23 14.954 7.358 27.947 18.45 39.015 13.077 13.097 29.626 19.183 49.609 18.255 19.981-0.925 38.993-8.459 57.010-22.592zM548.714 960c11.758 0 23.518-4.488 32.494-13.464l307.536-307.538c17.955-17.954 17.955-47.041 0-64.972l-144.476-144.477-17.35 36.933c-3.986 8.47-9.421 16.004-15.925 22.36l-2.552 2.326 115.333 115.332-275.062 275.064-353.027-353.025 275.062-275.064 124.276 124.275 31.153-66.294-122.952-122.953c-17.931-17.953-47.021-17.953-64.975 0l-307.535 307.539c-17.953 17.951-17.953 47.040 0 64.972l385.521 385.522c8.966 8.976 20.722 13.464 32.479 13.464z" />
+<glyph unicode="&#xe937;" glyph-name="pdf" data-tags="pdf" d="M200.571 163.069c-65.7-20.885-113.75-73.848-130.451-94.215 0.202 3.96-6.842-8.705-6.842-8.705s2.706 3.609 6.842 8.705c-0.062-1.554-1.135-5.38-4.261-13.7-11.29-29.974 23.636-29.205 23.636-29.205 99.024 16.106 111.076 137.121 111.076 137.121zM767.851 265.049c-18.402 0.001-29.754-1.181-29.754-1.181 105.384-92.26 203.398-70.757 203.398-70.757 40.12 5.38-21.102 42.521-21.102 42.521-56.586 25.098-117.411 29.415-152.542 29.417zM407.732 514.149c0 0-38.052-198.070-85.604-256.815l263.733 42.154c0 0-131.431 126.545-178.128 214.661zM413.841 879.988c-0.327 0.031-0.655 0.025-0.984-0.018-2.95-0.391-5.989-3.865-8.935-12.118 0 0-14.213-73.113 21.382-194.629 0 0 30.308 96.404 7.495 170.219 0 0-8.827 35.592-18.958 36.546zM380.637 959.983c28.069 1.161 53.374-56.91 53.374-56.91 78.685-180.728 4.276-296.195 4.276-296.195 77.907-197.402 234.047-302.811 234.047-302.811 151.708 8.755 262.38-32.43 262.38-32.43 87.066-49.221 57.909-95.201 57.909-95.201-91.233-109.402-359.227 61.184-359.227 61.184l-345.434-62.554c-49.916-183.551-216.724-226.674-216.724-226.674-79.509-12.464-68.639 76.672-68.639 76.672 62.061 146.761 218.123 180.527 218.123 180.527 61.47 70.59 161.941 402.39 161.941 402.39-101.512 245.186-30.183 326.754-30.183 326.754 9.136 17.894 18.799 24.862 28.156 25.249z" />
+<glyph unicode="&#xe938;" glyph-name="pictures" data-tags="pictures" d="M490.078 477.525c115.421-29.010 218.49-140.465 249.026-175.898v112.194h74.003v-130.009h48.004v-60.007h-440.037v60.007h69.004zM146.397 671.379l-74.038-7.249 70.472-612.97 63.542 6.188zM778.103 777.091c45.819 0 83.007-37.202 83.007-83.032 0-45.824-37.188-83.026-83.007-83.026-45.814 0-83.003 37.202-83.003 83.026 0 45.83 37.188 83.032 83.003 83.032zM270.261 791.335l-68.169-6.625 68.169-698.111v596.849h-0.031c0 25.314 0 47.128 0 64.443h0.031zM336.703 851.095v-725.174h621.029v725.174h-71.381zM270.261 915.353h753.883v-853.631h-102.797l-708.662-69.13-0.089 0.931-129.677-12.684-82.919 740.739 140.175 13.684-10.439 106.832 140.525 13.751z" />
+<glyph unicode="&#xe939;" glyph-name="play" data-tags="play, video, movie" d="M981.188 799.892c-143.632 20.65-302.332 32.108-469.186 32.108-166.86 0-325.556-11.458-469.194-32.108-27.53-107.726-42.808-226.75-42.808-351.892 0-125.14 15.278-244.166 42.808-351.89 143.638-20.652 302.336-32.11 469.194-32.11 166.854 0 325.552 11.458 469.186 32.11 27.532 107.724 42.812 226.75 42.812 351.89 0 125.142-15.28 244.166-42.812 351.892zM384.002 256v384l320-192-320-192z" />
+<glyph unicode="&#xe93a;" glyph-name="cart" data-tags="cart, purchase, ecommerce, shopping" d="M384 32c0-53.019-42.981-96-96-96s-96 42.981-96 96c0 53.019 42.981 96 96 96s96-42.981 96-96zM1024 32c0-53.019-42.981-96-96-96s-96 42.981-96 96c0 53.019 42.981 96 96 96s96-42.981 96-96zM1024 448v384h-768c0 35.346-28.654 64-64 64h-192v-64h128l48.074-412.054c-29.294-23.458-48.074-59.5-48.074-99.946 0-70.696 57.308-128 128-128h768v64h-768c-35.346 0-64 28.654-64 64 0 0.218 0.014 0.436 0.016 0.656l831.984 127.344z" />
+<glyph unicode="&#xe93b;" glyph-name="plus" data-tags="plus" d="M388.095 960h247.889v-388.114h388.095v-247.869h-388.095v-388.075h-247.889v388.075h-388.095v247.869h388.095z" />
+<glyph unicode="&#xe93c;" glyph-name="profile" data-tags="profile, file, document, page, user, paper" d="M864 960h-768c-52.8 0-96-43.2-96-96v-832c0-52.8 43.2-96 96-96h768c52.8 0 96 43.2 96 96v832c0 52.8-43.2 96-96 96zM832 64h-704v768h704v-768zM256 384h448v-64h-448zM256 256h448v-64h-448zM320 672c0 53.019 42.981 96 96 96s96-42.981 96-96c0-53.019-42.981-96-96-96s-96 42.981-96 96zM480 576h-128c-52.8 0-96-28.8-96-64v-64h320v64c0 35.2-43.2 64-96 64z" />
+<glyph unicode="&#xe93d;" glyph-name="razorblade" data-tags="razorblade" d="M88.889 323.321c0 7.372 5.979 13.364 13.351 13.364 7.385 0 13.364-5.992 13.364-13.364s-5.979-13.351-13.364-13.351c-7.372 0-13.351 5.979-13.351 13.351zM896.461 315.649c0 10.329 8.388 18.717 18.717 18.717s18.704-8.388 18.704-18.717c0-10.342-8.375-18.704-18.704-18.704s-18.717 8.362-18.717 18.704zM56.365 297.192c0 0 224.71-62.716 434.961-63.875 210.252-1.172 345.57 8.128 453.6 41.225 0 0 45.666 12.517 26.493 62.469 0 0-10.824 32.771-75.285 21.166 0 0-297.351-42.983-449.497-33.11-152.173 9.886-384.476 30.205-384.476 30.205s-29.020 4.064-32.511-23.237c-3.478-27.288 26.715-34.842 26.715-34.842zM357.189 483.031l376.817 206.735c2.996 1.641 6.747 0.677 8.571-2.214l22.898-36.093-29.632 27.288-364.717-200.353 22.664-49.365zM115.598 358.172l83.634-6.968 125.823 72.29c6.76 3.881 14.888 4.611 22.234 2.019l29.958-10.576c17.558-6.187 36.913-4.676 53.286 4.181l353.919 191.404c4.793 2.592 8.271 7.099 9.56 12.4 1.303 5.288 0.3 10.889-2.774 15.422l-42.188 62.26c-3.191 4.715-9.482 6.213-14.445 3.439z" />
+<glyph unicode="&#xe93e;" glyph-name="remove" data-tags="remove" d="M824.447 960l199.553-199.586-312.445-312.431 312.445-312.443-199.552-199.541-312.448 312.437-312.451-312.437-199.533 199.539 312.432 312.443-312.448 312.438 199.552 199.564 312.446-312.444z" />
+<glyph unicode="&#xe93f;" glyph-name="credit-card" data-tags="credit-card, money, payment, ecommerce" d="M928 832h-832c-52.8 0-96-43.2-96-96v-576c0-52.8 43.2-96 96-96h832c52.8 0 96 43.2 96 96v576c0 52.8-43.2 96-96 96zM96 768h832c17.346 0 32-14.654 32-32v-96h-896v96c0 17.346 14.654 32 32 32zM928 128h-832c-17.346 0-32 14.654-32 32v288h896v-288c0-17.346-14.654-32-32-32zM128 320h64v-128h-64zM256 320h64v-128h-64zM384 320h64v-128h-64z" />
+<glyph unicode="&#xe940;" glyph-name="rendezvous" data-tags="Hand_Shake" d="M204.412 366.925c20.005 0.565 37.826-15.148 40.815-36.805l0.094-0.622c7.878 22.245 28.491 36.284 49.168 32.067 17.616-3.634 29.944-19.444 32.313-38.605 10.628 21.54 30.049 34.537 48.755 30.317 23.194-5.249 36.285-34.935 29.161-66.251l-1.373-6.070c10.888 14.32 28.165 21.751 44.854 17.344 23.031-6.058 36.122-32.125 29.219-58.225l-14.123-53.595c-6.879-26.064-31.129-42.285-54.136-36.227-19.361 5.134-31.504 24.379-30.882 45.885-11.123-15.623-27.378-24.379-43.131-20.815-19.642 4.464-31.854 26.475-30.858 52.164-10.139-12.916-25.445-19.946-40.798-16.782-14.884 3.024-25.95 14.872-30.474 30.003-4.336-2.695-9.223-4.57-14.532-5.321-21.635-2.964-41.7 13.35-44.853 36.45l-6.599 47.534c-3.153 23.090 11.791 44.219 33.356 47.22 1.349 0.185 2.693 0.295 4.026 0.333zM220.697 670.443h40.412c0 0-70.194-70.323 6.472-131.645 0 0 39.662-35.186 95.394 1.5l105.452 57.946 64.732-32.161 296.98-212.81c0 0 25.070-17.967 18.356-46.377 0 0-12.189-30.379-37.977-28.598l-138.304 99.296c-6.037 4.244-13.572 3.869-16.971-0.879-3.469-4.782-1.383-12.095 4.558-16.373l112.015-80.333c2.192-6.656 4.256-19.246-4.993-32.501 0 0-12.823-15.47-28.762-15.754l-139.43 100.457c-6.025 4.244-13.562 3.867-16.971-0.879-3.471-4.781-1.373-12.095 4.57-16.375l110.174-79.017c2.626-5.37 5.72-15.66-0.915-27.568 0 0-13.43-20.934-33.754-20.369l-99.696 71.507c-5.346 3.785-12.319 3-15.73-1.747-3.469-4.781-1.935-11.697 3.317-15.506l62.67-44.947c1.219-4.688 2.216-13.783-4.313-25.845 0 0-13.723-22.914-37.413-18.19l-66.105 49.133c0 0 50.377 122.421-56.575 133.273 0 0-21.32 81.166-102.862 45.628 0 0-37.036 33.663-83.791 6.342 0 0-56.482 47.138-105.521-20.934l-11.31 3.997c0 0 4.501 175.022 76.29 299.728zM966.743 682.517c0 0 21.038 0.305 24.473-27.32l32.813-239.657c0 0 3.19-25.597-23.966-28.751l-43.785-0.094c0 0 0.996 180.424-76.66 272.815zM115.214 709.398c3.803 0.051 8.081-0.594 12.877-2.197l46.344-24.437c0 0-82.514-168.269-83.51-320.89l-75.821 12.974c0 0-22.691 10.185-12.447 41.384l85.304 272.287c0 0 6.717 20.601 27.255 20.879zM473.014 751.751c6.525-0.188 13.194-1.978 19.553-5.136l162.029-69.723 0.199 0.094 95.021-42.286 93.521 11.251c86.792-100.266 70.289-255.852 70.289-255.852l-52.356-14.181-296.304 220.398-88.199 37.973-133.558-75.29c-20.97-11.814-49.979-0.059-64.852 26.253-14.815 26.347-9.847 57.253 11.124 69.102l164.842 92.918c5.784 3.252 12.165 4.668 18.691 4.48z" />
+<glyph unicode="&#xe941;" glyph-name="save" data-tags="Floppy" d="M109.804 141.178c-10.916 0-19.935-8.978-19.935-19.968v-65.146c0-10.907 9.020-19.97 19.935-19.97h65.315c10.978 0 19.894 9.062 19.894 19.97v65.146c0 10.99-8.917 19.968-19.894 19.968zM589.312 869.072h146.912v-222.912h-146.912zM213.307 919.544v-250.771c0-43.802 35.811-79.718 79.687-79.718h427.524c43.875 0 79.77 35.917 79.77 79.718v250.771zM138.578 960h733.023l144.751-144.697v-793.092l-21.958-31.824c-23.251-35.272-63.021-54.387-109-54.387h-746.815c-72.023 0-130.898 58.958-130.898 130.898v762.168c0 72.112 58.875 130.935 130.898 130.935z" />
+<glyph unicode="&#xe942;" glyph-name="phone" data-tags="phone, telephone, contact, support, call" d="M704 320c-64-64-64-128-128-128s-128 64-192 128-128 128-128 192 64 64 128 128-128 256-192 256-192-192-192-192c0-128 131.5-387.5 256-512s384-256 512-256c0 0 192 128 192 192s-192 256-256 192z" />
+<glyph unicode="&#xe943;" glyph-name="shop" data-tags="shop" d="M188.588 347.734v-280.78h320.912v280.78zM108.388 788.962h802.215c22.085 0 40.105-18.021 40.105-40.115v-43.691l68.324-195.76c0 0 4.999-41.069-36.35-41.069-17.128 0-26.522 7.093-31.975 15.333v-496.922c0-22.095-18.019-40.116-40.105-40.116h-80.227v401.112h-200.56v-401.112h-521.429c-22.105 0-40.104 18.021-40.104 40.116v496.985c-4.935-8.275-13.188-15.397-27.579-15.397-41.369 0-40.705 41.069-40.705 41.069l68.284 195.74v43.712c0 22.093 17.999 40.115 40.104 40.115zM108.377 949.41h802.23c22.086 0 40.105-18.019 40.105-40.113v-40.115c0-22.084-18.020-40.104-40.105-40.104h-802.23c-22.105 0-40.105 18.021-40.105 40.104v40.115c0 22.094 17.999 40.113 40.105 40.113z" />
+<glyph unicode="&#xe944;" glyph-name="back" data-tags="back" d="M580.895 960h273.723l-413.813-509.791 2.338-2.896 415.046-511.313h-273.736l-280.542 345.584-1.234-1.48-136.868 168.605 136.868 168.646z" />
+<glyph unicode="&#xe945;" glyph-name="envelop" data-tags="envelop, mail, email, contact, letter" d="M928 832h-832c-52.8 0-96-43.2-96-96v-640c0-52.8 43.2-96 96-96h832c52.8 0 96 43.2 96 96v640c0 52.8-43.2 96-96 96zM398.74 409.628l-270.74-210.892v501.642l270.74-290.75zM176.38 704h671.24l-335.62-252-335.62 252zM409.288 398.302l102.712-110.302 102.71 110.302 210.554-270.302h-626.528l210.552 270.302zM625.26 409.628l270.74 290.75v-501.642l-270.74 210.892z" />
+<glyph unicode="&#xe946;" glyph-name="next" data-tags="next" d="M165.81 960h273.728l280.547-345.583 1.234 1.48 136.87-168.604-415.080-511.292h-273.741l413.82 509.792-2.338 2.896-99.387 122.396z" />
+<glyph unicode="&#xe947;" glyph-name="exit" data-tags="exit" d="M826.547 713.055l174.681-174.731-174.681-174.856v116.127h-324.501v117.521h324.501zM22.578 960h748.846v-322.493h-85.415v233.478h-527.32l143.325-93.695v-571.717h383.995v233.478h85.415v-322.493h-469.41v-180.559l-279.436 180.559z" />
+<glyph unicode="&#xe948;" glyph-name="key" data-tags="key" d="M738.8 883.463c-8.706 0-17.411-3.312-24.038-9.937-13.313-13.315-13.313-34.816 0-48.13l148.772-148.899c13.318-13.25 34.83-13.25 48.143 0.064 13.308 13.25 13.308 34.816-0.067 48.13l-148.768 148.835c-6.63 6.625-15.336 9.937-24.042 9.937zM711.352 960c26.51 0.008 53.012-10.118 73.233-30.404l177.155-177.025c40.447-40.509 40.447-106.138 0-146.523l-213.276-213.222c-40.389-40.436-106.026-40.436-146.535 0l-20.948 20.956-146.829-147.025-75.136 22.819 16.939-80.955-78.011 19.881 12.629-85.271-86.701 11.249 16.942-80.95-78.887 18.878 15.316-82.52-74.011-74.080-81.386 174.416 431.31 431.342 110.665-110.618-138.919 138.968c-40.498 40.383-40.498 106.017 0 146.523l213.17 213.157c20.255 20.253 46.773 30.396 73.283 30.404z" />
+<glyph unicode="&#xe949;" glyph-name="duplicate" data-tags="duplicate" d="M10.24 553.574v-396.186h104.448v54.497h-52.224v685.67h685.67v-52.224h54.477v104.448h-792.371v-396.206zM168.038 790.374c-0.686-1.587-0.911-191.846-0.686-422.973l0.686-420.024 845.722-1.137-0.451 422.748-0.686 422.973-421.837 0.676c-336.251 0.461-422.072 0.010-422.748-2.263zM959.273 369.674v-368.937h-737.884v737.874h737.874v-368.937zM538.563 580.588c-0.911-0.911-1.587-36.782-1.587-79.688v-77.875l-78.787-0.451-79.012-0.686v-104.448l78.787-0.686 79.012-0.451 0.451-79.012 0.686-78.787 52.9-0.686 52.675-0.451v158.925h158.925l-0.451 52.9-0.686 52.675-78.787 0.686-79.012 0.451-0.451 79.012-0.686 78.787-51.313 0.676c-28.14 0.246-51.753-0.205-52.664-0.891z" />
+<glyph unicode="&#xe94a;" glyph-name="location" data-tags="location, map-marker, pin" d="M512 960c-176.732 0-320-143.268-320-320 0-320 320-704 320-704s320 384 320 704c0 176.732-143.27 320-320 320zM512 448c-106.040 0-192 85.96-192 192s85.96 192 192 192 192-85.96 192-192-85.96-192-192-192z" />
+<glyph unicode="&#xe94b;" glyph-name="copy" data-tags="copy" d="M614.832 590.144v-132.453c0 0-2.565-87.003-98.572-79.45l-112.324-0.455v-366.468c0-8.312 6.771-15.062 15.082-15.062h421.761c8.278 0 15.061 6.75 15.061 15.062v563.764c0 8.289-6.782 15.062-15.061 15.062zM436.672 886.928v-160.666c0 0-3.093-105.514-119.549-96.373l-136.227-0.54v-444.483c0-10.086 8.22-18.258 18.305-18.258h144.511v226.987l54.706 57.72 0.080 0.29 132.935 140.843h0.746l54.925 57.952h141.888v218.278c0 10.031-8.205 18.25-18.259 18.25zM403.040 960h307.691c50.448 0 91.366-40.914 91.366-91.32v-218.28h38.685c41.603 0 75.331-33.742 75.331-75.313v-563.775c0-41.61-33.728-75.312-75.331-75.312h-421.76c-41.593 0-75.309 33.703-75.309 75.312v82.224h-144.516c-50.46 0-91.356 40.875-91.356 91.335v463.677l66.357 70.010 0.095 0.341 161.216 170.811h0.911z" />
+<glyph unicode="&#xe94c;" glyph-name="map" data-tags="map, guide" d="M672 768l-320 128-352-128v-768l352 128 320-128 352 128v768l-352-128zM384 814.27l256-102.4v-630.138l-256 102.398v630.14zM64 723.172l256 93.090v-631.8l-256-93.088v631.798zM960 172.828l-256-93.092v631.8l256 93.090v-631.798z" />
+<glyph unicode="&#xe94d;" glyph-name="pushpin" data-tags="pushpin, pin" d="M544 960l-96-96 96-96-224-256h-224l176-176-272-360.616v-39.384h39.384l360.616 272 176-176v224l256 224 96-96 96 96-480 480zM448 416l-64 64 224 224 64-64-224-224z" />
+<glyph unicode="&#xe94e;" glyph-name="baggage" data-tags="baggage" d="M733.725 664.051v-522.022h122.802v522.022zM170.739 664.051v-522.022h122.77v522.022zM438.264 769.338l-22.849-67.612h194.723l-24.368 67.612zM415.655 791.666h192.707l51.857-89.94h232.036c72.769 0 131.762-54.978 131.762-122.813v-351.734c0-67.85-58.993-122.843-131.762-122.843h-760.493c-72.753 0-131.763 54.993-131.763 122.843v351.734c0 67.835 59.009 122.813 131.763 122.813h232.036z" />
+<glyph unicode="&#xe94f;" glyph-name="clock" data-tags="clock, time, schedule" d="M658.744 210.744l-210.744 210.746v282.51h128v-229.49l173.256-173.254zM512 960c-282.77 0-512-229.23-512-512s229.23-512 512-512 512 229.23 512 512-229.23 512-512 512zM512 64c-212.078 0-384 171.922-384 384s171.922 384 384 384c212.078 0 384-171.922 384-384s-171.922-384-384-384z" />
+<glyph unicode="&#xe950;" glyph-name="erase" data-tags="erase" d="M88.57 4.16h886.236c18.731 0 34.042-15.353 34.042-34.060 0-18.79-15.311-34.1-34.042-34.1h-886.236c-18.729 0-34.042 15.31-34.042 34.1 0 18.707 15.313 34.060 34.042 34.060zM331.535 590.147l-248.272-249.935 157.96-161.957c13.749-13.833 48.813-37.771 68.188-37.771h104.73c19.416 0 46.979 23.937 60.73 37.771l131.647 136.812zM629.682 960c17.438 0 34.877-7.814 48.146-21.084l278.586-279.645c26.499-26.457 26.499-72.207 0-98.729l-425.897-430.494c-26.523-26.605-78.815-57.729-116.377-57.729h-104.73c-37.459 0-89.815 31.125-116.375 57.729l-157.96 167.29c-26.5 26.499-26.5 69.935 0 96.332l546.42 546.452c13.166 13.293 30.711 19.877 48.187 19.877z" />
+<glyph unicode="&#xe951;" glyph-name="replace" data-tags="replace" d="M202.716 688.95l202.812-202.848h-127.928v-257.484h236.225v-137.025h-373.306v394.509h-140.518zM474.506 804.216h412.622v-378.822h137.016l-202.713-202.789-202.809 202.789h131.457v241.798h-275.572z" />
+<glyph unicode="&#xe952;" glyph-name="sendemail" data-tags="sendemail" d="M27.191 706.781c-25.772-241.871 124.762-457.551 339.243-483.692 130.086-15.899 254.021 41.716 338.899 143.179l-99.362 77.659 417.947 168.715-62.835-446.319-94.675 73.987c-102.159-126.221-264.94-198.635-437.993-177.524-267.144 32.56-457.349 275.497-424.787 542.664 4.313 35.279 12.355 69.116 23.562 101.329zM119.785 802.29l301.541-301.517c9.96-9.956 26.039-9.956 35.971 0l300.424 300.37c6.124-4.049 10.197-10.971 10.197-18.876v-222.443l-254.765-102.9 107.427-83.946h-452.099c-22.788 22.312-43.559 47.202-61.051 74.628v334.661c0 8.758 5.061 16.291 12.355 20.023zM154.8 854.39h569.177c-0.319-5.431-2.529-10.81-6.738-14.938l-263.022-261.552c-8.813-8.573-22.738-8.625-31.099-0.080l-262.357 260.383c-4.368 4.42-6.284 10.331-5.962 16.186z" />
+<glyph unicode="&#xe953;" glyph-name="calendar2" data-tags="calendar, date, schedule, time, day" d="M320 576h128v-128h-128zM512 576h128v-128h-128zM704 576h128v-128h-128zM128 192h128v-128h-128zM320 192h128v-128h-128zM512 192h128v-128h-128zM320 384h128v-128h-128zM512 384h128v-128h-128zM704 384h128v-128h-128zM128 384h128v-128h-128zM832 960v-64h-128v64h-448v-64h-128v64h-128v-1024h960v1024h-128zM896 0h-832v704h832v-704z" />
+<glyph unicode="&#xe954;" glyph-name="projects" data-tags="projects" d="M738.064 471.472l-206.048-117.081 0.648-237.415 205.4 118.386zM296.816 471.472v-236.11l205.402-118.386 0.646 237.415zM517.439 619.312l-204.671-118.352 204.671-117.696 205.313 117.696zM92.872 910.64h327.139c51.335 0 92.917-41.604 92.917-92.904v-44.536h418.154c51.314 0 92.918-41.615 92.918-92.907v-602.031c0-51.325-41.605-92.918-92.918-92.918h-838.208c-51.27 0-92.873 41.594-92.873 92.918v602.031c0 1.603 0.041 3.196 0.121 4.779l0.078 1.030-0.078 1.030c-0.080 1.584-0.121 3.178-0.121 4.782v125.822c0 51.299 41.603 92.904 92.872 92.904z" />
+<glyph unicode="&#xe955;" glyph-name="shopbasket" data-tags="Shopping_Basket_02" d="M686.817 305.824c-25.961 0-47.089-21.127-47.089-47.087 0-25.973 21.128-47.089 47.089-47.089s47.087 21.116 47.087 47.089c0 25.96-21.127 47.087-47.087 47.087zM523.415 305.824c-25.957 0-47.079-21.127-47.079-47.087 0-25.973 21.122-47.089 47.079-47.089s47.081 21.116 47.081 47.089c0 25.96-21.124 47.087-47.081 47.087zM348.934 305.824c-25.958 0-47.062-21.127-47.062-47.087 0-25.973 21.104-47.089 47.062-47.089 25.98 0 47.082 21.116 47.082 47.089 0 25.96-21.102 47.087-47.082 47.087zM769.897 437.792c-25.957 0-47.081-21.113-47.081-47.081 0-25.956 21.124-47.079 47.081-47.079s47.079 21.123 47.079 47.079c0 25.967-21.122 47.081-47.079 47.081zM595.415 437.792c-25.957 0-47.079-21.113-47.079-47.081 0-25.956 21.122-47.079 47.079-47.079 25.979 0 47.081 21.123 47.081 47.079 0 25.967-21.101 47.081-47.081 47.081zM420.956 437.792c-25.98 0-47.084-21.113-47.084-47.081 0-25.956 21.104-47.079 47.084-47.079 25.958 0 47.060 21.123 47.060 47.079 0 25.967-21.102 47.081-47.060 47.081zM249.255 437.792c-25.956 0-47.079-21.113-47.079-47.081 0-25.956 21.123-47.079 47.079-47.079s47.081 21.123 47.081 47.079c0 25.967-21.125 47.081-47.081 47.081zM39.458 607.248h160.978l101.44-101.344c15.229-15.394 35.645-23.79 57.291-23.79 21.624 0 42.042 8.397 57.291 23.79 27.69 27.438 31.146 69.939 10.728 101.344h169.627c-20.438-31.405-16.792-73.906 10.728-101.344 15.397-15.394 35.667-23.79 57.293-23.79 21.813 0 42.062 8.397 57.459 23.79l101.435 101.344h160.979c21.626 0 39.291-17.645 39.291-39.375v-118.136c0-21.717-17.666-39.374-39.291-39.374h-39.458v-39.375c0-3.552-78.773-315.116-78.773-315.116-9.163-22.159-17.643-39.376-39.291-39.376h-630.208c-17.832 0-27.707 18.438-39.479 39.376 0 0-78.75 311.564-78.75 315.116v39.375h-39.292c-21.811 0-39.458 17.658-39.458 39.374v118.136c0 21.73 17.647 39.375 39.458 39.375zM942.206 879.52c9.994 0 19.989-3.807 27.604-11.421 15.23-15.23 15.23-39.99 0-55.221l-269.304-269.242c-7.625-7.618-17.667-11.429-27.538-11.429-10.022 0-20.063 3.811-27.689 11.429-15.23 15.226-15.23 39.895 0 55.126l269.324 269.337c7.615 7.614 17.609 11.421 27.604 11.421zM81.872 879.52c9.953 0 19.906-3.807 27.522-11.421l269.313-269.337c15.25-15.231 15.25-39.9 0-55.126-7.606-7.618-17.648-11.429-27.523-11.429-10.019 0-19.894 3.811-27.687 11.429l-269.146 269.242c-15.251 15.231-15.251 39.991 0 55.221 7.615 7.614 17.568 11.421 27.522 11.421z" />
+<glyph unicode="&#xe956;" glyph-name="staff" data-tags="staff" d="M852.529 206.541c-40.953 0.285-74.344-32.751-74.586-73.619-0.285-41.010 32.708-74.331 73.589-74.616 40.981-0.285 74.373 32.609 74.629 73.619 0.256 40.868-32.708 74.331-73.632 74.616zM853.184 311.346c15.493 0 30.472-2.421 44.755-6.123l5.909-39.159c14.453-5.696 27.795-13.385 39.529-23.068l37.065 13.955c20.847-21.502 36.211-48.13 44.213-77.891l-31.042-24.777c1.153-7.405 1.908-15.094 1.837-22.784-0.086-7.832-0.897-15.379-2.136-22.784l30.743-25.204c-8.415-29.619-24.122-56.105-45.224-77.322l-36.866 14.525c-11.876-9.541-25.332-17.088-39.813-22.641l-6.436-39.017c-14.353-3.702-29.333-5.696-44.812-5.696-15.521 0.142-30.472 2.421-44.811 6.265l-5.852 39.159c-14.439 5.554-27.824 13.385-39.557 23.068l-37.065-13.955c-20.818 21.36-36.211 48.13-44.242 77.891l31.070 24.635c-1.139 7.547-1.88 15.094-1.837 22.926 0.085 7.689 0.897 15.379 2.136 22.784l-30.743 25.062c8.387 29.761 24.122 56.105 45.21 77.464l36.909-14.525c11.847 9.541 25.318 17.088 39.828 22.499l6.365 39.159c14.382 3.56 29.362 5.696 44.868 5.553zM409.028 371.574l49.657-49.694-38.586-38.587 39.825-46.143-52.696-157.924-54.289 156.107 44.44 48.528-38.046 38.019zM618.515 376.928c38.144-7.169 73.391-22.554 103.826-44.248l0.426-0.317-2.897-1.86c-63.883-43.209-105.968-116.325-105.968-199.009 0-41.386 10.521-80.353 29.028-114.37l0.909-1.579h-643.838v102.668c0 127.586 90.779 233.999 211.264 258.14l194.355-304.663zM344.453 820.627c-25.958 0.065-58.686-6.617-62.522-39.908 0 0 0-64.687-17.265-73.32l-4.285-60.371-17.266 17.252 6.459-81.938 32.358-2.176c0 0 8.634-166.017 166.052-133.689 0 0 75.464 23.726 92.699 133.689l25.901 2.176 6.459 73.32-10.776-2.173c0 0-6.491 62.544-12.949 88.412l-4.317 62.531c0 0-36.645 30.199-90.556 4.316 0 0-62.546 2.173-77.637 8.633 0 0-14.592 3.203-32.352 3.248zM418.251 942.627c73.513 0.006 124.602-38.985 124.602-38.985 94.873-75.478 43.136-204.866 43.136-204.866 21.551-12.933 19.41-23.709 19.41-23.709 0-140.181-38.819-129.388-38.819-129.388-21.583-90.57-105.648-131.53-105.648-131.53-163.908-40.977-204.867 129.371-204.867 129.371-34.503 4.316-38.819 84.095-38.819 84.095-10.809 53.91 19.409 75.477 19.409 75.477-64.718 150.938 51.737 196.216 51.737 196.216 46.692 32.612 91.352 43.315 129.859 43.318z" />
+<glyph unicode="&#xe957;" glyph-name="template" data-tags="template" d="M502.522 615.239l80.861-74.562-92.996-19.661zM411.045 829.025h192.977l-70.344-75.324h-117.69l-5.087-164.232c0 0-6.541-108.612-126.229-95.489l-102.575 2.793v-466.617c0-10.396 8.467-18.817 18.858-18.817h527.19c10.354 0 18.821 8.421 18.821 18.817v559.653l75.36 75.979v-635.632c0-51.997-42.186-94.113-94.181-94.113h-527.19c-51.996 0-94.145 42.117-94.145 94.113v477.886l37.28 39.323 0.037 1.077 195.375 205.259h-0.546l-52.214-55.075 54.721 57.95h0.763l1.744 1.812h0.145zM707.15 880.343l131.403-121.256-162.198-175.828-2.761 27.837-43.293 14.716-1.217 29.473-43.201 11.446-5.196 33.247-35.771 4.578zM797.329 959.977c5.834-0.231 11.27-2.23 15.501-6.119l93.089-85.922c11.299-10.41 9.845-30.426-3.307-44.623l-17.841-19.376-134.038 123.651 17.859 19.376c8.187 8.874 19.013 13.399 28.736 13.013z" />
+<glyph unicode="&#xe958;" glyph-name="trash" data-tags="trash" d="M191.166 630.621h136.774v-577.939h105.019v577.939h157.78v-577.939h105.083v577.939h136.772v-694.765h-641.428zM126.98 847.182h769.8v-99.472h-769.8zM335.572 960h352.663v-90.878h-352.663z" />
+<glyph unicode="&#xe959;" glyph-name="upload2" data-tags="Upload" d="M22.819 171.681c12.624 0 22.819-10.252 22.819-22.847v-122.166h932.639v121.423c0 12.623 10.198 22.875 22.819 22.875 12.596 0 22.819-10.252 22.819-22.875v-139.252c0-15.353-9.558-24.941-21.386-24.941h-981.144c-11.821 0-21.385 9.588-21.385 21.385v143.55c0 12.595 10.211 22.847 22.819 22.847zM515.759 912.162c23.419-0.214 46.741-11.259 64.311-33.1l72.285-89.816c35.196-43.549 92.712-115.037 127.77-158.637l72.395-89.843c35.194-43.655 5.761-78.765-65.317-78.162l-136.664 1.27v-210.722c0-36.715-29.767-66.421-66.445-66.421h-143.998c-36.655 0-66.475 29.707-66.475 66.421v213.091l-137.356 1.297c-71.074 0.578-99.818 36.291-63.91 79.29l73.917 88.633c35.935 42.937 94.691 113.325 130.6 156.264l73.999 88.55c17.955 21.483 41.47 32.1 64.888 31.886z" />
+<glyph unicode="&#xe95a;" glyph-name="usertime" data-tags="usertime" d="M557.61 283.76c0 0 234.191-55.807 256.508-278.821h-814.117c0 0 66.954 245.319 267.693 267.648l54.36-232.801 39.942 0.321 45.427 119.165-42.397 73.563h84.77l-40.646-75.446 51.832-116.487 31.151 0.25zM721.151 752.498c3.881 0.061 7.808-1.164 11.085-3.756l86.55-69.216c0.927-0.749 1.758-1.573 2.49-2.458l1.384-2.053 0.604-0.177c3.044-1.077 5.694-2.969 7.708-5.437 2.408-2.972 3.834-6.662 3.883-10.763l0.775-110.79c0.044-9.547-7.646-17.359-17.196-17.446-9.534-0.042-17.332 7.639-17.418 17.206l-0.771 102.937-0.623 0.275c-0.864 0.474-1.701 1.029-2.502 1.669l-86.513 69.196c-7.448 5.987-8.658 16.859-2.723 24.365 3.363 4.163 8.277 6.368 13.267 6.447zM401.426 759.683c33.843 0 65.776-7.706 94.582-21.095-8.652-26.989-13.395-55.697-13.395-85.511 0-93.086 45.61-175.496 115.472-226.751-38.319-69.217-111.983-116.086-196.66-116.086-124.119 0-224.722 100.616-224.722 224.733 0 124.113 100.603 224.711 224.722 224.711zM786.072 821.774c-92.958 0-168.706-75.661-168.706-168.701 0-93.019 75.748-168.723 168.706-168.723 93.042 0 168.708 75.705 168.708 168.723 0 93.040-75.666 168.701-168.708 168.701zM786.072 891.011c131.44 0 237.961-106.559 237.961-237.939 0-131.359-106.521-237.917-237.961-237.917-131.347 0-237.911 106.558-237.911 237.917 0 131.38 106.564 237.939 237.911 237.939z" />
+<glyph unicode="&#xe95b;" glyph-name="website" data-tags="globe" d="M388.544 743.172c-28.448-28.809-51.452-63.073-67.291-101.070l-0.777-2.102h-63.865c33.945 44.926 78.421 80.17 129.848 102.371l2.085 0.801zM218.906 576h81.85c-6.347-28.27-10.618-61.247-11.874-94.995l-0.030-1.005h-95.229c3.656 35.474 12.605 67.979 26.088 98.006l-0.805-2.006zM218.906 320c-12.678 28.021-21.627 60.526-25.169 94.637l-0.115 1.363h95.228c1.286-34.754 5.557-67.731 12.582-99.676l-0.678 3.676zM256.611 256h63.865c16.616-40.099 39.619-74.362 68.1-103.205l-0.033 0.033c-53.511 23.002-97.988 58.245-131.347 102.364l-0.586 0.808zM480 158.068c-37.056 25.495-67.243 58.29-89.018 96.499l-0.752 1.432h89.77zM480 320h-114.076c-7.272 28.429-12.009 61.37-13.155 95.221l-0.021 0.779h127.252zM480 480h-127.252c1.166 34.63 5.904 67.571 13.864 99.232l-0.688-3.232h114.076zM480 640h-89.77c22.527 39.642 52.714 72.436 88.791 97.294l0.978 0.637zM767.389 640h-63.872c-16.622 40.103-39.631 74.369-68.118 103.214l0.032-0.033c53.521-23.001 98.007-58.249 131.372-102.374l0.586-0.808zM544 737.926c37.050-25.497 67.233-58.289 89.008-96.493l0.752-1.432h-89.76zM544 576h114.072c7.273-28.428 12.012-61.369 13.159-95.221l0.021-0.779h-127.252zM544 416h127.252c-1.168-34.631-5.906-67.572-13.868-99.232l0.688 3.232h-114.072zM544 158.074v97.926h89.76c-22.527-39.637-52.71-72.429-88.782-97.288l-0.978-0.637zM635.432 152.818c28.454 28.812 51.464 63.079 67.309 101.080l0.777 2.101h63.872c-33.951-44.933-78.436-80.181-129.873-102.381l-2.085-0.801zM805.096 320h-81.853c6.349 28.27 10.621 61.246 11.877 94.995l0.030 1.005h95.228c-3.655-35.474-12.603-67.979-26.086-98.006l0.805 2.006zM735.148 480c-1.285 34.754-5.558 67.73-12.585 99.674l0.678-3.674h81.853c12.678-28.021 21.625-60.526 25.165-94.638l0.115-1.362zM896 448c0 212.077-171.923 384-384 384s-384-171.923-384-384c0-212.077 171.923-384 384-384v0c212.077 0 384 171.923 384 384v0z" />
+<glyph unicode="&#xe95c;" glyph-name="week" data-tags="week" d="M528.871 122.241c-5.104 0-9.357-4.98-9.357-11.12v-101.089c0-6.14 4.253-11.12 9.357-11.12h95.404c5.245 0 9.497 4.98 9.497 11.12v101.089c0 6.14-4.252 11.12-9.497 11.12zM404.547 122.241c-5.245 0-9.499-4.98-9.499-11.12v-101.089c0-6.14 4.253-11.12 9.499-11.12h95.404c5.103 0 9.357 4.98 9.357 11.12v101.089c0 6.14-4.255 11.12-9.357 11.12zM280.080 122.241c-5.245 0-9.499-4.98-9.499-11.12v-101.089c0-6.14 4.253-11.12 9.499-11.12h95.404c5.245 0 9.499 4.98 9.499 11.12v101.089c0 6.14-4.253 11.12-9.499 11.12zM155.614 122.241c-5.103 0-9.355-4.98-9.355-11.12v-101.089c0-6.14 4.252-11.12 9.355-11.12h95.405c5.247 0 9.499 4.98 9.499 11.12v101.089c0 6.14-4.252 11.12-9.499 11.12zM777.801 258.021c-5.245 0-9.497-4.98-9.497-11.12v-101.089c0-6.14 4.252-11.121 9.497-11.121h95.404c5.245 0 9.499 4.981 9.499 11.121v101.089c0 6.14-4.253 11.12-9.499 11.12zM653.335 258.021c-5.245 0-9.497-4.98-9.497-11.12v-101.089c0-6.14 4.252-11.121 9.497-11.121h95.407c5.245 0 9.496 4.981 9.496 11.121v101.089c0 6.14-4.251 11.12-9.496 11.12zM528.871 258.021c-5.104 0-9.357-4.98-9.357-11.12v-101.089c0-6.14 4.253-11.121 9.357-11.121h95.404c5.245 0 9.497 4.981 9.497 11.121v101.089c0 6.14-4.252 11.12-9.497 11.12zM404.547 258.021c-5.245 0-9.499-4.98-9.499-11.12v-101.089c0-6.14 4.253-11.121 9.499-11.121h95.404c5.103 0 9.357 4.981 9.357 11.121v101.089c0 6.14-4.255 11.12-9.357 11.12zM280.080 258.021c-5.245 0-9.499-4.98-9.499-11.12v-101.089c0-6.14 4.253-11.121 9.499-11.121h95.404c5.245 0 9.499 4.981 9.499 11.121v101.089c0 6.14-4.253 11.12-9.499 11.12zM155.614 258.021c-5.103 0-9.355-4.98-9.355-11.12v-101.089c0-6.14 4.252-11.121 9.355-11.121h95.405c5.247 0 9.499 4.981 9.499 11.121v101.089c0 6.14-4.252 11.12-9.499 11.12zM777.801 393.972c-5.245 0-9.497-4.981-9.497-10.959v-101.252c0-6.144 4.252-11.124 9.497-11.124h95.404c5.245 0 9.499 4.98 9.499 11.124v101.252c0 5.977-4.253 10.959-9.499 10.959zM653.335 393.972c-5.245 0-9.497-4.981-9.497-10.959v-101.252c0-6.144 4.252-11.124 9.497-11.124h95.407c5.245 0 9.496 4.98 9.496 11.124v101.252c0 5.977-4.251 10.959-9.496 10.959zM528.871 393.972c-5.104 0-9.357-4.981-9.357-10.959v-101.252c0-6.144 4.253-11.124 9.357-11.124h95.404c5.245 0 9.497 4.98 9.497 11.124v101.252c0 5.977-4.252 10.959-9.497 10.959zM404.547 393.972c-5.245 0-9.499-4.981-9.499-10.959v-101.252c0-6.144 4.253-11.124 9.499-11.124h95.404c5.103 0 9.357 4.98 9.357 11.124v101.252c0 5.977-4.255 10.959-9.357 10.959zM280.080 393.972c-5.245 0-9.499-4.981-9.499-10.959v-101.252c0-6.144 4.253-11.124 9.499-11.124h95.404c5.245 0 9.499 4.98 9.499 11.124v101.252c0 5.977-4.253 10.959-9.499 10.959zM155.614 393.972c-5.103 0-9.355-4.981-9.355-10.959v-101.252c0-6.144 4.252-11.124 9.355-11.124h95.405c5.247 0 9.499 4.98 9.499 11.124v101.252c0 5.977-4.252 10.959-9.499 10.959zM777.801 527.093c-5.245 0-9.497-4.977-9.497-11.12v-101.252c0-5.979 4.252-10.959 9.497-10.959h95.404c5.245 0 9.499 4.98 9.499 10.959v101.252c0 6.143-4.253 11.12-9.499 11.12zM653.335 527.093c-5.245 0-9.497-4.977-9.497-11.12v-101.252c0-5.979 4.252-10.959 9.497-10.959h95.407c5.245 0 9.496 4.98 9.496 10.959v101.252c0 6.143-4.251 11.12-9.496 11.12zM528.871 527.093c-5.104 0-9.357-4.977-9.357-11.12v-101.252c0-5.979 4.253-10.959 9.357-10.959h95.404c5.245 0 9.497 4.98 9.497 10.959v101.252c0 6.143-4.252 11.12-9.497 11.12zM404.547 527.093c-5.245 0-9.499-4.977-9.499-11.12v-101.252c0-5.979 4.253-10.959 9.499-10.959h95.404c5.103 0 9.357 4.98 9.357 10.959v101.252c0 6.143-4.255 11.12-9.357 11.12zM103.731 908.379v-308.082h804.773v308.082zM67.865 960h888.271c5.245 0 9.497-4.981 9.497-11.12v-975.365c0-6.144-1.701-15.603-3.828-21.248l-9.496-11.619c-4.68-2.492-12.76-4.648-18.004-4.648h-844.608c-5.247 0-13.326 2.156-18.004 4.648l-9.64 11.619c-1.985 5.645-3.686 15.104-3.686 21.248v975.365c0 6.14 4.254 11.12 9.499 11.12z" />
+<glyph unicode="&#xe95d;" glyph-name="rename" data-tags="rename" d="M292.64 960h438.752v-27.918h-37c-41.803 0-72.25-12.332-91.376-37-12.592-16.125-18.875-54.875-18.875-116.292v-487.75h90.1v-64h-90.1v-109.79c0-51.834 3.261-86.083 9.813-102.709 5.030-12.584 15.595-23.374 31.709-32.459 21.647-12.082 44.562-18.114 68.73-18.114h37v-27.968h-438.752v27.968h36.249c42.292 0 72.99 12.323 92.126 36.989 12.083 16.125 18.125 54.875 18.125 116.293v109.79h-93.157v64h93.157v487.75c0 51.835-3.282 86.085-9.813 102.667-5.042 12.584-15.365 23.418-30.97 32.5-22.155 12.084-45.302 18.125-69.469 18.125h-36.249z" />
+<glyph unicode="&#xe95e;" glyph-name="box-add" data-tags="box-add, box, download, storage, inbox, archive" d="M832 896h-640l-192-192v-672c0-17.674 14.326-32 32-32h960c17.672 0 32 14.326 32 32v672l-192 192zM512 128l-320 256h192v192h256v-192h192l-320-256zM154.51 768l64 64h586.978l64-64h-714.978z" />
+<glyph unicode="&#xe960;" glyph-name="download1" data-tags="download, save, store, arrow" d="M512 384l256 256h-192v256h-128v-256h-192zM744.726 488.728l-71.74-71.742 260.080-96.986-421.066-157.018-421.066 157.018 260.080 96.986-71.742 71.742-279.272-104.728v-256l512-192 512 192v256z" />
+<glyph unicode="&#xe974;" glyph-name="settings" data-tags="settings" d="M225.037 959.932c64.288 1.523 129.795-22.546 179.775-72.557 73.543-73.574 90.917-180.699 52.646-267.98l531.791-483.041c34.747-34.789 34.747-91.040 0-125.733l-39.794-39.834c-34.747-34.788-90.964-34.788-125.712 0l-483.096 531.774c-87.347-38.31-194.495-20.94-267.942 52.634-57.121 57.108-80.539 134.49-70.401 207.207l138.755-138.868c53.074-53.063 139.85-52.302 193.781 1.618 53.978 53.873 54.693 140.725 1.618 193.836l-138.85 138.725c9.086 1.261 18.246 2.001 27.43 2.219z" />
+<glyph unicode="&#xe975;" glyph-name="save2" data-tags="Save" d="M178.857 170.418v-103.511h664.66v103.511zM270.958 958.932h127.786v-260.744h-127.786zM5.556 960h168.819v-312.888h669.074v312.888h175.017v-1023.936h-1012.91z" />
+<glyph unicode="&#xe976;" glyph-name="squares" data-tags="squares" d="M928 752v-416c-0.171-56.042-41.533-102.371-95.391-110.309l-0.609-0.074v526.383c-0.114 8.79-7.21 15.886-15.989 16h-526.394c8.012 54.467 54.341 95.829 110.365 96h416.018c61.825-0.077 111.923-50.175 112-111.993v-0.007zM768 592v-416c-0.077-61.825-50.175-111.923-111.993-112h-416.007c-61.825 0.077-111.923 50.175-112 111.993v416.007c0.077 61.825 50.175 111.923 111.993 112h416.007c61.825-0.077 111.923-50.175 112-111.993v-0.007zM672 592c-0.114 8.79-7.21 15.886-15.989 16h-416.011c-8.79-0.114-15.886-7.21-16-15.989v-416.011c0.114-8.79 7.21-15.886 15.989-16h416.011c8.79 0.114 15.886 7.21 16 15.989v0.011z" />
+<glyph unicode="&#xe977;" glyph-name="table" data-tags="table" d="M0 147.354h1023.919v-129.997h-1023.919zM0 391.18h1023.919v-130.079h-1023.919zM0 635.007h1023.919v-130.079h-1023.919zM0 878.752h1023.919v-130.079h-1023.919z" />
+<glyph unicode="&#xe978;" glyph-name="upload" data-tags="upload" d="M511.975 447.953l-242.846-242.843h161.146v-184.088h163.402v184.088h161.146zM646.038 924.618l311.664-313.105h-311.664zM66.25 960h514.016v-388.045h377.436v-636.099h-891.451z" />
+<glyph unicode="&#xe979;" glyph-name="user" data-tags="user" d="M784 832h-544c-61.825-0.077-111.923-50.175-112-111.993v-544.007c0.077-61.825 50.175-111.923 111.993-112h544.007c61.825 0.077 111.923 50.175 112 111.993v544.007c-0.077 61.825-50.175 111.923-111.993 112h-0.007zM384 506.039v69.961c0 70.692 57.308 128 128 128s128-57.308 128-128v0-69.961c4.573-3.984 7.447-9.818 7.447-16.322 0-2.91-0.575-5.686-1.618-8.22l0.052 0.144-11.762-35.281c-5.297-13.384-16.083-23.612-29.504-28.044l-0.337-0.096-5.269-42.156c-4.083-31.765-30.956-56.062-63.504-56.062-0.001 0-0.002 0-0.002 0h-47.004c-0.001 0-0.001 0-0.002 0-32.548 0-59.421 24.298-63.47 55.744l-0.034 0.32-5.27 42.156c-13.759 4.528-24.544 14.757-29.729 27.818l-0.113 0.323-11.762 35.281c-0.99 2.39-1.565 5.165-1.565 8.075 0 6.504 2.873 12.338 7.42 16.3l0.026 0.022zM736 176c0-8.837-7.163-16-16-16v0h-416c-8.837 0-16 7.163-16 16v0 62.68c0.001 21.603 10.705 40.706 27.098 52.295l0.201 0.135 57.17 40.016c20.522-44.54 64.704-74.939 116.007-75.125h47.024c51.327 0.185 95.509 30.585 115.704 74.332l0.328 0.793 57.17-40.016c16.594-11.724 27.298-30.827 27.298-52.43v0z" />
+<glyph unicode="&#xe97a;" glyph-name="entry" data-tags="entry" d="M393.929 713.001l174.72-174.764-174.72-174.827v116.073h-324.558v117.572h324.558zM205.76 960h749.061v-843.557l-279.544-180.587v180.587h-469.517v322.548h85.455v-233.539h384.062v571.835l143.461 93.764h-527.523v-233.535h-85.455z" />
+<glyph unicode="&#xe97b;" glyph-name="lock" data-tags="lock" d="M521.113 345.977c-36.247 0-65.622-30.173-65.622-67.384 0-26.94 15.629-49.757 37.892-60.574v-91.901h55.619v91.957c22.292 10.76 37.947 33.661 37.947 60.517 0 37.211-29.428 67.384-65.836 67.384zM511.933 882.117c-91.257 0-165.188-80.448-165.188-179.648v-94.869c0-11.971 1.142-23.651 3.186-35.018h324.163c2.071 11.367 3.184 23.047 3.184 35.018v94.869c0 99.2-74.089 179.648-165.345 179.648zM511.933 960c122.569 0 222-108.056 222-241.289v-127.351c0-8.021-0.396-15.951-1.087-23.8 62.837-17.306 109.461-79.119 109.461-152.847v-320.929c0-87.113-65.041-157.781-145.152-157.781h-370.284c-80.244 0-145.179 70.668-145.179 157.781v320.929c0 73.757 46.598 135.541 109.515 152.88-0.69 7.816-1.088 15.746-1.088 23.767v127.351c0 133.232 99.271 241.289 221.816 241.289z" />
+<glyph unicode="&#xe97c;" glyph-name="unlock" data-tags="unlock" d="M500.472 357.966c-50.471 0-91.375-41.364-91.375-92.479 0-36.908 21.775-68.247 52.794-83.072v-126.117h77.391v126.212c31.052 14.729 52.797 46.159 52.797 82.976 0 51.115-40.934 92.479-91.607 92.479zM452.81 959.958c90.471 1.822 176.486-56.22 211.078-151.903l42.359-117.054c6.804-18.844 11.019-38.031 13.14-57.156l-60.906 0.746c-1.25 16.539-4.652 33.204-10.496 49.403l-31.514 87.276c-32.967 91.078-128.617 136.429-213.798 101.076-85.183-35.291-127.339-137.766-94.341-229.002l28.868-79.958h289.913l90.183-1.151c-0.030-0.186-0.060-0.343-0.060-0.529 70.675-10.497 125.071-75.316 125.071-153.869v-316.25c0-85.904-64.948-155.584-145.158-155.584h-370.297c-80.125 0-145.16 69.68-145.16 155.584v316.25c0 68.085 40.963 125.865 97.829 146.892l-29.507 81.607c-44.219 122.474 12.56 260.148 126.785 307.524 25 10.384 50.681 15.588 76.013 16.098z" />
+<glyph unicode="&#xe97d;" glyph-name="category" data-tags="category" d="M632.965 307.194v-260.497h320.022v260.497zM236.496 342.238l-53.124-106.723-118.088-16.801 85.126-83.363-20.481-117.444 105.607 55.042 105.287-55.682-19.681 117.444 85.606 82.883-117.928 17.601zM562.080 404.16h461.952v-461.95h-461.952zM0 404.16h461.952v-461.934h-461.952zM230.976 861.302l-159.956-277.049h319.911l-79.978 138.525zM793.133 872.015c-82.564 0-149.45-66.702-149.45-149.235 0-82.385 66.886-149.243 149.45-149.243 82.406 0 149.292 66.858 149.292 149.243 0 82.534-66.886 149.235-149.292 149.235zM0 953.759h461.952v-461.962h-461.952zM562.078 953.76h461.952v-461.968h-461.952z" />
+<glyph unicode="&#xe97e;" glyph-name="vacancydays" data-tags="vacancydays" d="M440.576 617.536l60.752-30.48c17.296-621.056 391.136-651.056 391.136-651.056h-349.152c-203.376 163.936-150.192 654.48-150.192 654.48zM668.568 959.978c142.582 1.91 235.284-118.058 227.397-277.457-66.24 160.75-267.727 179.613-353.263 91.711 201.439 23.968 480.895-116.75 283.088-519.639-39.504 307.595-277.504 402.889-381.215 417.369-144.447-10.464-335.375-168.893-345.007-414.969-306.399 398.057 184.735 544.519 303.199 499.224-27.104 64.367-194.319 117.438-368.607-28.943 63.312 411.721 413.823 146.813 413.823 146.813 80.66 58.974 155.776 85.024 220.586 85.892z" />
+<glyph unicode="&#xe97f;" glyph-name="sector" data-tags="sector" d="M369.796 543.236c-21.646-0.589-122.661-41.523-111.068-51.392 13.153-11.33 47.996-39.607 59.337-39.607 11.313 0 49.935 74.462 55.589 88.573 0.707 1.771-0.765 2.51-3.858 2.426zM221.988 716.273c-16.176-0.073-32.162-1.473-35.88-3.963-8.437-5.61-31.119-99.868-19.779-90.46 11.343 9.467 85.774 79.166 93.336 87.616 4.236 4.801-16.878 6.901-37.676 6.807zM267.16 817.528c55.835-0.239 111.197-2.719 121.555-6.727 20.749-8.011 102.742-145.582 117.304-165.407 14.653-19.765-2.784-45.201-2.784-45.201l-120.43-213.404 253.871-204.151 1.945-0.191c6.281-0.682 10.206-1.616 10.206-1.616 31.395 31.174 59.289 41.548 82.598 41.417 47.728-0.27 76.237-44.589 76.237-44.589s86.209 11.656 97.524-92.962c0 0 35.808-1.889 33.965-32.062 0 0 70.62 11.327 84.776-52.729h-629.519c0 56.573 99.869 54.651 99.869 54.651 4.749 60.295 56.557 52.81 56.557 52.81 1.2 40.536 18.828 59.945 38.809 68.838l2.291 0.914-225.238 181.126-6.262-11.096c0 0 16.969-19.328 35.373-36.748 18.342-17.468-1.406-49.465-1.406-49.465l-128.614-246.013c0 0-23.122-24.437-59.871-7.516-36.776 16.986-26.371 55.589-26.371 55.589s109.302 206.361 106.021 217.719c-3.343 11.315-117.332 145.597-117.332 145.597s-1.875-147.483-4.281-162.564c-2.343-15.092-77.712-250.217-77.712-250.217s-31.091-20.264-56.557-8.937c-25.467 11.344-29.685 40.060-29.685 40.060s56.059 203.114 57.963 219.094c1.875 16.028-3.75 235.605 0 247.388 3.782 11.781 42.434 46.619 42.434 46.619l-25.467 18.375c0 0 0.392 4.798 1.251 13.040l0.262 2.483-51.222 41.19 20.279 25.186 35.641-28.661 0.281 2.011c8.771 61.144 27.369 154.383 61.346 179.419 12.249 4.962 68.556 6.966 124.391 6.727zM556.962 905.524c52.304 0 94.707-42.405 94.707-94.719 0-52.308-42.403-94.698-94.707-94.698-52.309 0-94.71 42.39-94.71 94.698 0 52.314 42.401 94.719 94.71 94.719z" />
+<glyph unicode="&#xea0f;" glyph-name="cross" data-tags="cross, cancel, close, quit, remove" d="M1014.662 137.34c-0.004 0.004-0.008 0.008-0.012 0.010l-310.644 310.65 310.644 310.65c0.004 0.004 0.008 0.006 0.012 0.010 3.344 3.346 5.762 7.254 7.312 11.416 4.246 11.376 1.824 24.682-7.324 33.83l-146.746 146.746c-9.148 9.146-22.45 11.566-33.828 7.32-4.16-1.55-8.070-3.968-11.418-7.31 0-0.004-0.004-0.006-0.008-0.010l-310.648-310.652-310.648 310.65c-0.004 0.004-0.006 0.006-0.010 0.010-3.346 3.342-7.254 5.76-11.414 7.31-11.38 4.248-24.682 1.826-33.83-7.32l-146.748-146.748c-9.148-9.148-11.568-22.452-7.322-33.828 1.552-4.16 3.97-8.072 7.312-11.416 0.004-0.002 0.006-0.006 0.010-0.010l310.65-310.648-310.65-310.652c-0.002-0.004-0.006-0.006-0.008-0.010-3.342-3.346-5.76-7.254-7.314-11.414-4.248-11.376-1.826-24.682 7.322-33.83l146.748-146.746c9.15-9.148 22.452-11.568 33.83-7.322 4.16 1.552 8.070 3.97 11.416 7.312 0.002 0.004 0.006 0.006 0.010 0.010l310.648 310.65 310.648-310.65c0.004-0.002 0.008-0.006 0.012-0.008 3.348-3.344 7.254-5.762 11.414-7.314 11.378-4.246 24.684-1.826 33.828 7.322l146.746 146.748c9.148 9.148 11.57 22.454 7.324 33.83-1.552 4.16-3.97 8.068-7.314 11.414z" />
+<glyph unicode="&#xea10;" glyph-name="checkmark" data-tags="checkmark, tick, correct, accept, ok" d="M864 832l-480-480-224 224-160-160 384-384 640 640z" />
+<glyph unicode="&#xea34;" glyph-name="arrow-right" data-tags="arrow-right, right, next" d="M992 448l-480 480v-288h-512v-384h512v-288z" />
+<glyph unicode="&#xea36;" glyph-name="arrow-down" data-tags="arrow-down, down, download, bottom" d="M512-32l480 480h-288v512h-384v-512h-288z" />
+<glyph unicode="&#xea38;" glyph-name="arrow-left" data-tags="arrow-left, left, previous" d="M32 448l480-480v288h512v384h-512v288z" />
+<glyph unicode="&#xea3c;" glyph-name="arrow-right1" data-tags="arrow-right, right, next" d="M621.254 82.746l320 320c24.994 24.992 24.994 65.516 0 90.51l-320 320c-24.994 24.992-65.516 24.992-90.51 0-24.994-24.994-24.994-65.516 0-90.51l210.746-210.746h-613.49c-35.346 0-64-28.654-64-64s28.654-64 64-64h613.49l-210.746-210.746c-12.496-12.496-18.744-28.876-18.744-45.254s6.248-32.758 18.744-45.254c24.994-24.994 65.516-24.994 90.51 0z" />
+<glyph unicode="&#xea40;" glyph-name="arrow-left1" data-tags="arrow-left, left, previous" d="M402.746 82.746l-320 320c-24.994 24.992-24.994 65.516 0 90.51l320 320c24.994 24.992 65.516 24.992 90.51 0 24.994-24.994 24.994-65.516 0-90.51l-210.746-210.746h613.49c35.346 0 64-28.654 64-64s-28.654-64-64-64h-613.49l210.746-210.746c12.496-12.496 18.744-28.876 18.744-45.254s-6.248-32.758-18.744-45.254c-24.994-24.994-65.516-24.994-90.51 0z" />
+<glyph unicode="&#xea42;" glyph-name="circle-right" data-tags="circle-right, right, circle-next, arrow" d="M512 960c-282.77 0-512-229.23-512-512s229.23-512 512-512 512 229.23 512 512-229.23 512-512 512zM512 32c-229.75 0-416 186.25-416 416s186.25 416 416 416 416-186.25 416-416-186.25-416-416-416zM354.744 253.256l90.512-90.512 285.254 285.256-285.256 285.254-90.508-90.508 194.744-194.746z" />
+<glyph unicode="&#xea44;" glyph-name="circle-left" data-tags="circle-left, left, circle-previous, arrow" d="M512-64c282.77 0 512 229.23 512 512s-229.23 512-512 512-512-229.23-512-512 229.23-512 512-512zM512 864c229.75 0 416-186.25 416-416s-186.25-416-416-416-416 186.25-416 416 186.25 416 416 416zM669.256 642.744l-90.512 90.512-285.254-285.256 285.256-285.254 90.508 90.508-194.744 194.746z" />
+<glyph unicode="&#xea52;" glyph-name="checkbox-checked" data-tags="checkbox-checked, checkbox, tick, checked, selected" d="M896 960h-768c-70.4 0-128-57.6-128-128v-768c0-70.4 57.6-128 128-128h768c70.4 0 128 57.6 128 128v768c0 70.4-57.6 128-128 128zM448 165.49l-237.254 237.256 90.51 90.508 146.744-146.744 306.746 306.746 90.508-90.51-397.254-397.256z" />
+<glyph unicode="&#xea53;" glyph-name="checkbox-unchecked" data-tags="checkbox-unchecked, checkbox, unchecked, square" d="M896 960h-768c-70.4 0-128-57.6-128-128v-768c0-70.4 57.6-128 128-128h768c70.4 0 128 57.6 128 128v768c0 70.4-57.6 128-128 128zM896 64h-768v768h768v-768z" />
+<glyph unicode="&#xea76;" glyph-name="section" data-tags="section, wysiwyg" d="M495.964-64c-49.36 0-91.116 14.406-124.104 42.82-33.224 28.614-50.068 62.038-50.068 99.344 0 18.128 6.6 33.756 19.622 46.458 13.232 12.914 29.782 19.744 47.85 19.744 18.002 0 34.194-6.41 46.826-18.542 12.472-11.972 18.796-27.824 18.796-47.104 0-11.318-1.85-23.818-5.494-37.146-3.616-13.178-4.376-19.938-4.376-23.292 0-3.682 0.924-8.076 7.774-12.756 12.76-8.824 28.066-13.084 46.876-13.084 22.576 0 42.718 7.858 61.574 24.022 18.578 15.942 27.612 32.318 27.612 50.056 0 19.736-5.27 36.826-16.12 52.242-18.336 25.758-52.878 55.954-102.612 89.668-79.858 53.454-133.070 99.766-162.58 141.52-22.89 32.684-34.476 67.89-34.476 104.704 0 37.062 12.142 73.948 36.092 109.63 20.508 30.554 50.8 58.12 90.228 82.138-21.096 22.7-36.896 44.064-47.094 63.688-12.872 24.76-19.398 50.372-19.398 76.122 0 47.814 18.91 89.16 56.206 122.89 37.32 33.76 83.86 50.878 138.322 50.878 50.086 0 92.206-14.082 125.182-41.852 33.328-28.082 50.222-60.898 50.222-97.54 0-18.656-6.986-35.364-20.766-49.66l-0.276-0.282c-7.976-7.924-22.618-17.37-47.046-17.37-19.148 0-35.934 6.272-48.54 18.136-12.558 11.794-18.93 25.918-18.93 41.966 0 6.934 1.702 17.416 5.352 32.98 1.778 7.364 2.668 14.142 2.668 20.25 0 10.338-3.726 18.272-11.724 24.966-8.282 6.93-20.108 10.302-36.142 10.302-24.868 0-45.282-7.562-62.41-23.118-17.19-15.606-25.544-34.088-25.544-56.508 0-20.156 4.568-36.762 13.58-49.362 17.112-23.938 46.796-49.79 88.22-76.836 84.17-54.588 142.902-104.672 174.518-148.826 23.35-33.12 35.152-68.34 35.152-104.792 0-36.598-11.882-73.496-35.318-109.676-20.208-31.18-50.722-59.276-90.884-83.71 22.178-23.466 37.812-44.042 47.554-62.538 12.082-22.97 18.208-48.048 18.208-74.542 0-49.664-18.926-91.862-56.244-125.422-37.34-33.554-83.866-50.566-138.288-50.566zM446.416 603.654c-48.222-28.952-71.712-62.19-71.712-101.314 0-22.756 6.498-43.13 19.86-62.278 19.936-27.926 59.27-62.054 116.804-101.288 24.358-16.586 46.36-32.712 65.592-48.060 49.060 29.504 72.956 62.366 72.956 100.178 0 20.598-8.142 42.774-24.204 65.916-16.808 24.196-52.85 55.796-107.128 93.914-28.328 19.562-52.558 37.334-72.168 52.932z" />
+<glyph unicode="&#xea7d;" glyph-name="share" data-tags="share, out, external, outside" d="M256 320c0 0 58.824 192 384 192v-192l384 256-384 256v-192c-256 0-384-159.672-384-320zM704 192h-576v384h125.876c10.094 11.918 20.912 23.334 32.488 34.18 43.964 41.19 96.562 72.652 156.114 93.82h-442.478v-640h832v268.624l-128-85.334v-55.29z" />
+<glyph unicode="&#xea7e;" glyph-name="new-tab" data-tags="new-tab, out, external, outside, popout, link, blank" d="M192 896v-768h768v768h-768zM896 192h-640v640h640v-640zM128 64v672l-64 64v-800h800l-64 64h-672zM352 704l160-160-192-192 96-96 192 192 160-160v416z" />
+<glyph unicode="&#xea83;" glyph-name="mail" data-tags="mail, contact, support, newsletter, letter, email, envelop, social" d="M853.31 960h-682.62c-93.88 0-170.69-76.784-170.69-170.658v-682.656c0-93.876 76.81-170.686 170.69-170.686h682.622c93.938 0 170.688 76.81 170.688 170.686v682.656c0 93.874-76.75 170.658-170.69 170.658zM256 704h512c9.138 0 18.004-1.962 26.144-5.662l-282.144-329.168-282.144 329.17c8.14 3.696 17.006 5.66 26.144 5.66zM192 256v384c0 1.34 0.056 2.672 0.14 4l187.664-218.94-185.598-185.6c-1.444 5.338-2.206 10.886-2.206 16.54zM768 192h-512c-5.654 0-11.202 0.762-16.54 2.206l182.118 182.118 90.422-105.496 90.424 105.494 182.116-182.118c-5.34-1.442-10.886-2.204-16.54-2.204zM832 256c0-5.654-0.762-11.2-2.206-16.54l-185.598 185.598 187.664 218.942c0.084-1.328 0.14-2.66 0.14-4v-384z" />
+<glyph unicode="&#xea91;" glyph-name="facebook" data-tags="facebook, brand, social" d="M928 960h-832c-52.8 0-96-43.2-96-96v-832c0-52.8 43.2-96 96-96h416v448h-128v128h128v64c0 105.8 86.2 192 192 192h128v-128h-128c-35.2 0-64-28.8-64-64v-64h192l-32-128h-160v-448h288c52.8 0 96 43.2 96 96v832c0 52.8-43.2 96-96 96z" />
+<glyph unicode="&#xea92;" glyph-name="instagram" data-tags="instagram, brand, social" d="M512 867.8c136.8 0 153-0.6 206.8-3 50-2.2 77-10.6 95-17.6 23.8-9.2 41-20.4 58.8-38.2 18-18 29-35 38.4-58.8 7-18 15.4-45.2 17.6-95 2.4-54 3-70.2 3-206.8s-0.6-153-3-206.8c-2.2-50-10.6-77-17.6-95-9.2-23.8-20.4-41-38.2-58.8-18-18-35-29-58.8-38.4-18-7-45.2-15.4-95-17.6-54-2.4-70.2-3-206.8-3s-153 0.6-206.8 3c-50 2.2-77 10.6-95 17.6-23.8 9.2-41 20.4-58.8 38.2-18 18-29 35-38.4 58.8-7 18-15.4 45.2-17.6 95-2.4 54-3 70.2-3 206.8s0.6 153 3 206.8c2.2 50 10.6 77 17.6 95 9.2 23.8 20.4 41 38.2 58.8 18 18 35 29 58.8 38.4 18 7 45.2 15.4 95 17.6 53.8 2.4 70 3 206.8 3zM512 960c-139 0-156.4-0.6-211-3-54.4-2.4-91.8-11.2-124.2-23.8-33.8-13.2-62.4-30.6-90.8-59.2-28.6-28.4-46-57-59.2-90.6-12.6-32.6-21.4-69.8-23.8-124.2-2.4-54.8-3-72.2-3-211.2s0.6-156.4 3-211c2.4-54.4 11.2-91.8 23.8-124.2 13.2-33.8 30.6-62.4 59.2-90.8 28.4-28.4 57-46 90.6-59 32.6-12.6 69.8-21.4 124.2-23.8 54.6-2.4 72-3 211-3s156.4 0.6 211 3c54.4 2.4 91.8 11.2 124.2 23.8 33.6 13 62.2 30.6 90.6 59s46 57 59 90.6c12.6 32.6 21.4 69.8 23.8 124.2 2.4 54.6 3 72 3 211s-0.6 156.4-3 211c-2.4 54.4-11.2 91.8-23.8 124.2-12.6 34-30 62.6-58.6 91-28.4 28.4-57 46-90.6 59-32.6 12.6-69.8 21.4-124.2 23.8-54.8 2.6-72.2 3.2-211.2 3.2v0zM512 711c-145.2 0-263-117.8-263-263s117.8-263 263-263 263 117.8 263 263c0 145.2-117.8 263-263 263zM512 277.4c-94.2 0-170.6 76.4-170.6 170.6s76.4 170.6 170.6 170.6c94.2 0 170.6-76.4 170.6-170.6s-76.4-170.6-170.6-170.6zM846.8 721.4c0-33.91-27.49-61.4-61.4-61.4s-61.4 27.49-61.4 61.4c0 33.91 27.49 61.4 61.4 61.4s61.4-27.49 61.4-61.4z" />
+<glyph unicode="&#xea93;" glyph-name="whatsapp" data-tags="whatsapp, brand, social" d="M873 811.2c-95.8 96-223.2 148.8-359 148.8-279.6 0-507.2-227.6-507.2-507.4 0-89.4 23.4-176.8 67.8-253.6l-72-263 269 70.6c74.2-40.4 157.6-61.8 242.4-61.8h0.2c0 0 0 0 0 0 279.6 0 507.4 227.6 507.4 507.4 0 135.6-52.8 263-148.6 359zM514.2 30.4v0c-75.8 0-150 20.4-214.8 58.8l-15.4 9.2-159.6-41.8 42.6 155.6-10 16c-42.4 67-64.6 144.6-64.6 224.4 0 232.6 189.2 421.8 422 421.8 112.6 0 218.6-44 298.2-123.6 79.6-79.8 123.4-185.6 123.4-298.4-0.2-232.8-189.4-422-421.8-422zM745.4 346.4c-12.6 6.4-75 37-86.6 41.2s-20 6.4-28.6-6.4c-8.4-12.6-32.8-41.2-40.2-49.8-7.4-8.4-14.8-9.6-27.4-3.2s-53.6 19.8-102 63c-37.6 33.6-63.2 75.2-70.6 87.8s-0.8 19.6 5.6 25.8c5.8 5.6 12.6 14.8 19 22.2s8.4 12.6 12.6 21.2c4.2 8.4 2.2 15.8-1 22.2s-28.6 68.8-39 94.2c-10.2 24.8-20.8 21.4-28.6 21.8-7.4 0.4-15.8 0.4-24.2 0.4s-22.2-3.2-33.8-15.8c-11.6-12.6-44.4-43.4-44.4-105.8s45.4-122.6 51.8-131.2c6.4-8.4 89.4-136.6 216.6-191.4 30.2-13 53.8-20.8 72.2-26.8 30.4-9.6 58-8.2 79.8-5 24.4 3.6 75 30.6 85.6 60.2s10.6 55 7.4 60.2c-3 5.6-11.4 8.8-24.2 15.2z" />
+<glyph unicode="&#xea96;" glyph-name="twitter" data-tags="twitter, brand, tweet, social" d="M1024 733.6c-37.6-16.8-78.2-28-120.6-33 43.4 26 76.6 67.2 92.4 116.2-40.6-24-85.6-41.6-133.4-51-38.4 40.8-93 66.2-153.4 66.2-116 0-210-94-210-210 0-16.4 1.8-32.4 5.4-47.8-174.6 8.8-329.4 92.4-433 219.6-18-31-28.4-67.2-28.4-105.6 0-72.8 37-137.2 93.4-174.8-34.4 1-66.8 10.6-95.2 26.2 0-0.8 0-1.8 0-2.6 0-101.8 72.4-186.8 168.6-206-17.6-4.8-36.2-7.4-55.4-7.4-13.6 0-26.6 1.4-39.6 3.8 26.8-83.4 104.4-144.2 196.2-146-72-56.4-162.4-90-261-90-17 0-33.6 1-50.2 3 93.2-59.8 203.6-94.4 322.2-94.4 386.4 0 597.8 320.2 597.8 597.8 0 9.2-0.2 18.2-0.6 27.2 41 29.4 76.6 66.4 104.8 108.6z" />
+<glyph unicode="&#xea9d;" glyph-name="youtube" data-tags="youtube, brand, social" d="M1013.8 652.8c0 0-10 70.6-40.8 101.6-39 40.8-82.6 41-102.6 43.4-143.2 10.4-358.2 10.4-358.2 10.4h-0.4c0 0-215 0-358.2-10.4-20-2.4-63.6-2.6-102.6-43.4-30.8-31-40.6-101.6-40.6-101.6s-10.2-82.8-10.2-165.8v-77.6c0-82.8 10.2-165.8 10.2-165.8s10-70.6 40.6-101.6c39-40.8 90.2-39.4 113-43.8 82-7.8 348.2-10.2 348.2-10.2s215.2 0.4 358.4 10.6c20 2.4 63.6 2.6 102.6 43.4 30.8 31 40.8 101.6 40.8 101.6s10.2 82.8 10.2 165.8v77.6c-0.2 82.8-10.4 165.8-10.4 165.8zM406.2 315.2v287.8l276.6-144.4-276.6-143.4z" />
+</font></defs></svg>
\ No newline at end of file
diff --git a/admin/css/fonts/siteicons.ttf b/admin/css/fonts/siteicons.ttf
new file mode 100644 (file)
index 0000000..df72514
Binary files /dev/null and b/admin/css/fonts/siteicons.ttf differ
diff --git a/admin/css/fonts/siteicons.woff b/admin/css/fonts/siteicons.woff
new file mode 100644 (file)
index 0000000..f1e61eb
Binary files /dev/null and b/admin/css/fonts/siteicons.woff differ
index 2d6fc0e..aba0c47 100644 (file)
@@ -1,9 +1,10 @@
 @font-face {
-  font-family: 'pot';
-  src:
-    url('fonts/pot.ttf?8s8vvb') format('truetype'),
-    url('fonts/pot.woff?8s8vvb') format('woff'),
-    url('fonts/pot.svg?8s8vvb#pot') format('svg');
+  font-family: 'siteicons';
+  src:  url('fonts/siteicons.eot?dqz0d2');
+  src:  url('fonts/siteicons.eot?dqz0d2#iefix') format('embedded-opentype'),
+    url('fonts/siteicons.ttf?dqz0d2') format('truetype'),
+    url('fonts/siteicons.woff?dqz0d2') format('woff'),
+    url('fonts/siteicons.svg?dqz0d2#siteicons') format('svg');
   font-weight: normal;
   font-style: normal;
   font-display: block;
@@ -11,7 +12,7 @@
 
 [class^="icon-"], [class*=" icon-"] {
   /* use !important to prevent issues with browser extensions that change fonts */
-  font-family: 'pot' !important;
+  font-family: 'siteicons' !important;
   speak: never;
   font-style: normal;
   font-weight: normal;
   -moz-osx-font-smoothing: grayscale;
 }
 
-.icon-category:before {
-  content: "\e97d";
-}
-.icon-vacancydays:before {
-  content: "\e97e";
-}
-.icon-sector:before {
-  content: "\e97f";
-}
-.icon-lock:before {
-  content: "\e97b";
-}
-.icon-unlock:before {
-  content: "\e97c";
-}
-.icon-entry:before {
-  content: "\e97a";
-}
-.icon-settings:before {
-  content: "\e974";
-}
-.icon-dataset:before {
-  content: "\e930";
-}
-.icon-check:before {
-  content: "\e931";
-}
-.icon-pause:before {
+.icon-menu:before {
   content: "\e900";
 }
-.icon-duplicate:before {
-  content: "\e949";
-}
-.icon-finger1:before {
-  content: "\e955";
-}
-.icon-finger2:before {
-  content: "\e956";
-}
-.icon-finger3:before {
-  content: "\e957";
-}
-.icon-finger4:before {
-  content: "\e958";
-}
-.icon-finger5:before {
-  content: "\e959";
-}
-.icon-fingerprint-check:before {
-  content: "\e95a";
-}
-.icon-fingerprint-crosshair:before {
-  content: "\e95b";
-}
-.icon-fingerprint-remove:before {
-  content: "\e95c";
-}
-.icon-fingerprint-scanning:before {
-  content: "\e95e";
-}
-.icon-fingerprint-scanning-index .path1:before {
-  content: "\e95f";
-  color: rgb(0, 0, 0);
-}
-.icon-fingerprint-scanning-index .path2:before {
-  content: "\e960";
-  margin-left: -1em;
-  color: rgb(0, 0, 0);
-}
-.icon-fingerprint-scanning-index .path3:before {
-  content: "\e961";
-  margin-left: -1em;
-  color: rgb(0, 0, 0);
-}
-.icon-fingerprint-scanning-index .path4:before {
-  content: "\e962";
-  margin-left: -1em;
-  color: rgb(0, 0, 0);
-}
-.icon-fingerprint-scanning-index .path5:before {
-  content: "\e963";
-  margin-left: -1em;
-  color: rgb(0, 0, 0);
-}
-.icon-fingerprint-scanning-index .path6:before {
-  content: "\e964";
-  margin-left: -1em;
-  color: rgb(0, 0, 0);
-}
-.icon-fingerprint-scanning-index .path7:before {
-  content: "\e965";
-  margin-left: -1em;
-  color: rgb(0, 0, 0);
-}
-.icon-fingerprint-scanning-index .path8:before {
-  content: "\e966";
-  margin-left: -1em;
-  color: rgb(0, 0, 0);
-}
-.icon-fingerprint-scanning-index .path9:before {
-  content: "\e967";
-  margin-left: -1em;
-  color: rgb(0, 0, 0);
-}
-.icon-fingerprint-scanning-index .path10:before {
-  content: "\e968";
-  margin-left: -1em;
-  color: rgb(0, 0, 0);
-  opacity: 0.4;
-}
-.icon-fingerprint-scanning-index .path11:before {
-  content: "\e969";
-  margin-left: -1em;
-  color: rgb(0, 0, 0);
-  opacity: 0.4;
-}
-.icon-fingerprint-scanning-index .path12:before {
-  content: "\e96a";
-  margin-left: -1em;
-  color: rgb(0, 0, 0);
-  opacity: 0.4;
-}
-.icon-fingerprint-scanning-index .path13:before {
-  content: "\e96b";
-  margin-left: -1em;
-  color: rgb(0, 0, 0);
-  opacity: 0.4;
-}
-.icon-fingerprint-scanning-index .path14:before {
-  content: "\e96c";
-  margin-left: -1em;
-  color: rgb(0, 0, 0);
-  opacity: 0.4;
-}
-.icon-fingerprint-scanning-index .path15:before {
-  content: "\e96d";
-  margin-left: -1em;
-  color: rgb(0, 0, 0);
-}
-.icon-fingerprint-scanning-index .path16:before {
-  content: "\e96e";
-  margin-left: -1em;
-  color: rgb(0, 0, 0);
-}
-.icon-fingerprint-scanning-index .path17:before {
-  content: "\e96f";
-  margin-left: -1em;
-  color: rgb(0, 0, 0);
-}
-.icon-fingerprint-scanning-index .path18:before {
-  content: "\e970";
-  margin-left: -1em;
-  color: rgb(0, 0, 0);
-}
-.icon-fingerprint-scanning-index .path19:before {
-  content: "\e971";
-  margin-left: -1em;
-  color: rgb(0, 0, 0);
-}
-.icon-fingerprint-search:before {
-  content: "\e972";
-}
-.icon-fingerprint-simple:before {
-  content: "\e973";
-}
-.icon-calendar:before {
+.icon-info:before {
   content: "\e901";
 }
-.icon-clocktime:before {
+.icon-help:before {
   content: "\e902";
 }
-.icon-cube:before {
+.icon-alert:before {
   content: "\e903";
 }
-.icon-cubelight:before {
+.icon-star:before {
   content: "\e904";
 }
-.icon-dashboard:before {
+.icon-home:before {
   content: "\e905";
 }
-.icon-history:before {
+.icon-cart2:before {
   content: "\e906";
 }
-.icon-usertime:before {
-  content: "\e954";
+.icon-duplicate2:before {
+  content: "\e907";
 }
-.icon-replace:before {
-  content: "\e94c";
+.icon-trash2:before {
+  content: "\e908";
 }
-.icon-week:before {
-  content: "\e94d";
+.icon-quote:before {
+  content: "\e909";
 }
-.icon-baggage:before {
-  content: "\e94e";
+.icon-pdf2:before {
+  content: "\e90a";
 }
-.icon-trash:before {
-  content: "\e94f";
+.icon-access:before {
+  content: "\e90b";
 }
-.icon-erase:before {
-  content: "\e950";
+.icon-address:before {
+  content: "\e90c";
 }
-.icon-paste:before {
-  content: "\e94a";
+.icon-apps:before {
+  content: "\e90d";
 }
-.icon-copy:before {
-  content: "\e94b";
+.icon-archive:before {
+  content: "\e90e";
 }
-.icon-sendemail:before {
-  content: "\e946";
+.icon-arrow-down:before {
+  content: "\ea36";
 }
-.icon-exit:before {
-  content: "\e947";
+.icon-arrow-left:before {
+  content: "\ea38";
 }
-.icon-key:before {
-  content: "\e948";
+.icon-arrow-left1:before {
+  content: "\ea40";
+}
+.icon-arrow-right:before {
+  content: "\ea34";
+}
+.icon-arrow-right1:before {
+  content: "\ea3c";
 }
 .icon-back:before {
   content: "\e944";
 }
-.icon-next:before {
-  content: "\e945";
+.icon-baggage:before {
+  content: "\e94e";
 }
-.icon-staff:before {
-  content: "\e943";
+.icon-barberscissor:before {
+  content: "\e90f";
 }
-.icon-shop:before {
-  content: "\e907";
+.icon-box-add:before {
+  content: "\e95e";
 }
-.icon-template:before {
-  content: "\e908";
+.icon-calendar2:before {
+  content: "\e953";
 }
-.icon-remove:before {
-  content: "\e909";
+.icon-camera:before {
+  content: "\e910";
 }
-.icon-access:before {
-  content: "\e90a";
+.icon-cart:before {
+  content: "\e93a";
 }
-.icon-address:before {
-  content: "\e90b";
+.icon-category:before {
+  content: "\e97d";
 }
-.icon-apps:before {
-  content: "\e90c";
+.icon-checkbox-checked:before {
+  content: "\ea52";
 }
-.icon-archive:before {
-  content: "\e90d";
+.icon-checkbox-unchecked:before {
+  content: "\ea53";
 }
-.icon-calendar1:before {
-  content: "\e90e";
+.icon-checkmark:before {
+  content: "\ea10";
 }
-.icon-code:before {
-  content: "\e90f";
+.icon-circle-left:before {
+  content: "\ea44";
 }
-.icon-coin:before {
-  content: "\e910";
+.icon-circle-right:before {
+  content: "\ea42";
 }
-.icon-company:before {
+.icon-clock:before {
+  content: "\e94f";
+}
+.icon-clocktime:before {
   content: "\e911";
 }
-.icon-cube1:before {
+.icon-code:before {
   content: "\e912";
 }
-.icon-cubelight1:before {
+.icon-coin:before {
   content: "\e913";
 }
-.icon-dashboard1:before {
+.icon-copy:before {
+  content: "\e94b";
+}
+.icon-credit-card:before {
+  content: "\e93f";
+}
+.icon-cross:before {
+  content: "\ea0f";
+}
+.icon-cube:before {
   content: "\e914";
 }
-.icon-datarefresh:before {
+.icon-dashboard:before {
   content: "\e915";
 }
-.icon-documentsave:before {
+.icon-datarefresh:before {
   content: "\e916";
 }
-.icon-documents:before {
+.icon-dataset:before {
+  content: "\e930";
+}
+.icon-documentsave:before {
   content: "\e917";
 }
 .icon-download:before {
   content: "\e918";
 }
+.icon-download1:before {
+  content: "\e960";
+}
+.icon-duplicate:before {
+  content: "\e949";
+}
 .icon-duplicate1:before {
   content: "\e919";
 }
 .icon-edit:before {
   content: "\e91a";
 }
-.icon-excel:before {
+.icon-entry:before {
+  content: "\e97a";
+}
+.icon-envelop:before {
+  content: "\e945";
+}
+.icon-erase:before {
+  content: "\e950";
+}
+.icon-events:before {
   content: "\e91b";
 }
-.icon-expand:before {
+.icon-excel:before {
   content: "\e91c";
 }
-.icon-file:before {
+.icon-exit:before {
+  content: "\e947";
+}
+.icon-expand:before {
   content: "\e91d";
 }
-.icon-Floppy:before {
+.icon-facebook:before {
+  content: "\ea91";
+}
+.icon-file:before {
   content: "\e91e";
 }
-.icon-folder:before {
+.icon-file-picture:before {
+  content: "\e927";
+}
+.icon-file-play:before {
+  content: "\e929";
+}
+.icon-film:before {
   content: "\e91f";
 }
-.icon-folder_add:before {
+.icon-folder:before {
   content: "\e920";
 }
-.icon-folder_delete:before {
+.icon-folder_add:before {
   content: "\e921";
 }
-.icon-folder_find:before {
+.icon-folder_delete:before {
   content: "\e922";
 }
-.icon-globe:before {
+.icon-folder_find:before {
   content: "\e923";
 }
 .icon-group:before {
   content: "\e924";
 }
-.icon-home:before {
+.icon-history:before {
   content: "\e925";
 }
-.icon-inbox:before {
+.icon-image:before {
   content: "\e926";
 }
-.icon-library:before {
-  content: "\e927";
-}
-.icon-license:before {
+.icon-images:before {
   content: "\e928";
 }
-.icon-list:before {
-  content: "\e929";
-}
-.icon-log:before {
+.icon-inbox:before {
   content: "\e92a";
 }
-.icon-logout:before {
+.icon-instagram:before {
+  content: "\ea92";
+}
+.icon-key:before {
+  content: "\e948";
+}
+.icon-library:before {
   content: "\e92b";
 }
-.icon-menu:before {
+.icon-license:before {
   content: "\e92c";
 }
-.icon-newspaper:before {
+.icon-list:before {
   content: "\e92d";
 }
-.icon-numberlist:before {
+.icon-location:before {
+  content: "\e94a";
+}
+.icon-lock:before {
+  content: "\e97b";
+}
+.icon-log:before {
   content: "\e92e";
 }
-.icon-package:before {
+.icon-logout:before {
   content: "\e92f";
 }
-.icon-pay:before {
+.icon-mail:before {
+  content: "\ea83";
+}
+.icon-map:before {
+  content: "\e94c";
+}
+.icon-new-tab:before {
+  content: "\ea7e";
+}
+.icon-newspaper:before {
+  content: "\e931";
+}
+.icon-next:before {
+  content: "\e946";
+}
+.icon-numberlist:before {
   content: "\e932";
 }
-.icon-pdf:before {
+.icon-package:before {
   content: "\e933";
 }
-.icon-pdfexport:before {
+.icon-paste1:before {
   content: "\e934";
 }
-.icon-pictures:before {
+.icon-pause:before {
   content: "\e935";
 }
-.icon-plus:before {
+.icon-pay:before {
   content: "\e936";
 }
-.icon-poticon .path1:before {
+.icon-pdf:before {
   content: "\e937";
-  color: rgb(0, 50, 104);
 }
-.icon-poticon .path2:before {
+.icon-phone:before {
+  content: "\e942";
+}
+.icon-pictures:before {
   content: "\e938";
-  margin-left: -1em;
-  color: rgb(0, 50, 104);
 }
-.icon-poticon .path3:before {
+.icon-play:before {
   content: "\e939";
-  margin-left: -1em;
-  color: rgb(0, 50, 104);
 }
-.icon-poticon .path4:before {
-  content: "\e93a";
-  margin-left: -1em;
-  color: rgb(0, 50, 104);
-}
-.icon-poticon .path5:before {
+.icon-plus:before {
   content: "\e93b";
-  margin-left: -1em;
-  color: rgb(0, 50, 104);
 }
-.icon-poticon .path6:before {
+.icon-profile:before {
   content: "\e93c";
-  margin-left: -1em;
-  color: rgb(255, 255, 255);
 }
-.icon-poticon .path7:before {
+.icon-projects:before {
+  content: "\e954";
+}
+.icon-pushpin:before {
+  content: "\e94d";
+}
+.icon-razorblade:before {
   content: "\e93d";
-  margin-left: -1em;
-  color: rgb(255, 255, 255);
 }
-.icon-poticon .path8:before {
+.icon-remove:before {
   content: "\e93e";
-  margin-left: -1em;
-  color: rgb(255, 255, 255);
 }
-.icon-poticon .path9:before {
-  content: "\e93f";
-  margin-left: -1em;
-  color: rgb(255, 255, 255);
+.icon-rename:before {
+  content: "\e95d";
 }
-.icon-poticon .path10:before {
+.icon-rendezvous:before {
   content: "\e940";
-  margin-left: -1em;
-  color: rgb(255, 255, 255);
 }
-.icon-poticon .path11:before {
+.icon-replace:before {
+  content: "\e951";
+}
+.icon-save:before {
   content: "\e941";
-  margin-left: -1em;
-  color: rgb(255, 255, 255);
 }
-.icon-poticon .path12:before {
-  content: "\e942";
-  margin-left: -1em;
-  color: rgb(255, 255, 255);
+.icon-save2:before {
+  content: "\e975";
 }
-.icon-poticon .path13:before {
-  content: "\e951";
-  margin-left: -1em;
-  color: rgb(0, 91, 206);
+.icon-section:before {
+  content: "\ea76";
+}
+.icon-sector:before {
+  content: "\e97f";
 }
-.icon-poticon .path14:before {
+.icon-sendemail:before {
   content: "\e952";
-  margin-left: -1em;
-  color: rgb(0, 50, 104);
 }
-.icon-projects:before {
-  content: "\e953";
+.icon-settings:before {
+  content: "\e974";
 }
-.icon-rename:before {
-  content: "\e95d";
+.icon-share:before {
+  content: "\ea7d";
 }
-.icon-Save:before {
-  content: "\e975";
+.icon-shop:before {
+  content: "\e943";
+}
+.icon-shopbasket:before {
+  content: "\e955";
 }
 .icon-squares:before {
   content: "\e976";
 }
+.icon-staff:before {
+  content: "\e956";
+}
 .icon-table:before {
   content: "\e977";
 }
+.icon-template:before {
+  content: "\e957";
+}
+.icon-trash:before {
+  content: "\e958";
+}
+.icon-twitter:before {
+  content: "\ea96";
+}
+.icon-unlock:before {
+  content: "\e97c";
+}
 .icon-upload:before {
   content: "\e978";
 }
+.icon-upload2:before {
+  content: "\e959";
+}
 .icon-user:before {
   content: "\e979";
 }
+.icon-usertime:before {
+  content: "\e95a";
+}
+.icon-vacancydays:before {
+  content: "\e97e";
+}
+.icon-website:before {
+  content: "\e95b";
+}
+.icon-week:before {
+  content: "\e95c";
+}
+.icon-whatsapp:before {
+  content: "\ea93";
+}
+.icon-youtube:before {
+  content: "\ea9d";
+}
diff --git a/admin/data/galleries/photos/oldbell_photo (1).jpg b/admin/data/galleries/photos/oldbell_photo (1).jpg
new file mode 100644 (file)
index 0000000..a08a86f
Binary files /dev/null and b/admin/data/galleries/photos/oldbell_photo (1).jpg differ
diff --git a/admin/data/galleries/photos/oldbell_photo (10).jpg b/admin/data/galleries/photos/oldbell_photo (10).jpg
new file mode 100644 (file)
index 0000000..f89b732
Binary files /dev/null and b/admin/data/galleries/photos/oldbell_photo (10).jpg differ
diff --git a/admin/data/galleries/photos/oldbell_photo (15).jpg b/admin/data/galleries/photos/oldbell_photo (15).jpg
new file mode 100644 (file)
index 0000000..b31e3fa
Binary files /dev/null and b/admin/data/galleries/photos/oldbell_photo (15).jpg differ
diff --git a/admin/data/galleries/photos/oldbell_photo (17).jpg b/admin/data/galleries/photos/oldbell_photo (17).jpg
new file mode 100644 (file)
index 0000000..7f08fc8
Binary files /dev/null and b/admin/data/galleries/photos/oldbell_photo (17).jpg differ
diff --git a/admin/data/galleries/photos/oldbell_photo (18).jpg b/admin/data/galleries/photos/oldbell_photo (18).jpg
new file mode 100644 (file)
index 0000000..3bbcdfc
Binary files /dev/null and b/admin/data/galleries/photos/oldbell_photo (18).jpg differ
diff --git a/admin/data/galleries/photos/oldbell_photo (19).jpg b/admin/data/galleries/photos/oldbell_photo (19).jpg
new file mode 100644 (file)
index 0000000..3977c5b
Binary files /dev/null and b/admin/data/galleries/photos/oldbell_photo (19).jpg differ
diff --git a/admin/data/galleries/photos/oldbell_photo (2).jpg b/admin/data/galleries/photos/oldbell_photo (2).jpg
new file mode 100644 (file)
index 0000000..418934c
Binary files /dev/null and b/admin/data/galleries/photos/oldbell_photo (2).jpg differ
diff --git a/admin/data/galleries/photos/oldbell_photo (20).jpg b/admin/data/galleries/photos/oldbell_photo (20).jpg
new file mode 100644 (file)
index 0000000..ef6b43d
Binary files /dev/null and b/admin/data/galleries/photos/oldbell_photo (20).jpg differ
diff --git a/admin/data/galleries/photos/oldbell_photo (21).jpg b/admin/data/galleries/photos/oldbell_photo (21).jpg
new file mode 100644 (file)
index 0000000..f3e60e9
Binary files /dev/null and b/admin/data/galleries/photos/oldbell_photo (21).jpg differ
diff --git a/admin/data/galleries/photos/oldbell_photo (3).jpg b/admin/data/galleries/photos/oldbell_photo (3).jpg
new file mode 100644 (file)
index 0000000..9e650b3
Binary files /dev/null and b/admin/data/galleries/photos/oldbell_photo (3).jpg differ
diff --git a/admin/data/galleries/photos/oldbell_photo (4).jpg b/admin/data/galleries/photos/oldbell_photo (4).jpg
new file mode 100644 (file)
index 0000000..429ab28
Binary files /dev/null and b/admin/data/galleries/photos/oldbell_photo (4).jpg differ
diff --git a/admin/data/galleries/photos/oldbell_photo (5).jpg b/admin/data/galleries/photos/oldbell_photo (5).jpg
new file mode 100644 (file)
index 0000000..a95ec75
Binary files /dev/null and b/admin/data/galleries/photos/oldbell_photo (5).jpg differ
diff --git a/admin/data/galleries/photos/oldbell_photo (6).jpg b/admin/data/galleries/photos/oldbell_photo (6).jpg
new file mode 100644 (file)
index 0000000..1e5969a
Binary files /dev/null and b/admin/data/galleries/photos/oldbell_photo (6).jpg differ
diff --git a/admin/data/galleries/photos/oldbell_photo (8).jpg b/admin/data/galleries/photos/oldbell_photo (8).jpg
new file mode 100644 (file)
index 0000000..bad97c9
Binary files /dev/null and b/admin/data/galleries/photos/oldbell_photo (8).jpg differ
diff --git a/admin/data/galleries/photos/thumb/oldbell_photo (1).jpg b/admin/data/galleries/photos/thumb/oldbell_photo (1).jpg
new file mode 100644 (file)
index 0000000..cdd1659
Binary files /dev/null and b/admin/data/galleries/photos/thumb/oldbell_photo (1).jpg differ
diff --git a/admin/data/galleries/photos/thumb/oldbell_photo (10).jpg b/admin/data/galleries/photos/thumb/oldbell_photo (10).jpg
new file mode 100644 (file)
index 0000000..0bf0c6d
Binary files /dev/null and b/admin/data/galleries/photos/thumb/oldbell_photo (10).jpg differ
diff --git a/admin/data/galleries/photos/thumb/oldbell_photo (15).jpg b/admin/data/galleries/photos/thumb/oldbell_photo (15).jpg
new file mode 100644 (file)
index 0000000..3fa6441
Binary files /dev/null and b/admin/data/galleries/photos/thumb/oldbell_photo (15).jpg differ
diff --git a/admin/data/galleries/photos/thumb/oldbell_photo (17).jpg b/admin/data/galleries/photos/thumb/oldbell_photo (17).jpg
new file mode 100644 (file)
index 0000000..f440b6b
Binary files /dev/null and b/admin/data/galleries/photos/thumb/oldbell_photo (17).jpg differ
diff --git a/admin/data/galleries/photos/thumb/oldbell_photo (18).jpg b/admin/data/galleries/photos/thumb/oldbell_photo (18).jpg
new file mode 100644 (file)
index 0000000..e30d6f8
Binary files /dev/null and b/admin/data/galleries/photos/thumb/oldbell_photo (18).jpg differ
diff --git a/admin/data/galleries/photos/thumb/oldbell_photo (19).jpg b/admin/data/galleries/photos/thumb/oldbell_photo (19).jpg
new file mode 100644 (file)
index 0000000..f703bd5
Binary files /dev/null and b/admin/data/galleries/photos/thumb/oldbell_photo (19).jpg differ
diff --git a/admin/data/galleries/photos/thumb/oldbell_photo (2).jpg b/admin/data/galleries/photos/thumb/oldbell_photo (2).jpg
new file mode 100644 (file)
index 0000000..1835f8b
Binary files /dev/null and b/admin/data/galleries/photos/thumb/oldbell_photo (2).jpg differ
diff --git a/admin/data/galleries/photos/thumb/oldbell_photo (20).jpg b/admin/data/galleries/photos/thumb/oldbell_photo (20).jpg
new file mode 100644 (file)
index 0000000..c9cb973
Binary files /dev/null and b/admin/data/galleries/photos/thumb/oldbell_photo (20).jpg differ
diff --git a/admin/data/galleries/photos/thumb/oldbell_photo (21).jpg b/admin/data/galleries/photos/thumb/oldbell_photo (21).jpg
new file mode 100644 (file)
index 0000000..e1228e0
Binary files /dev/null and b/admin/data/galleries/photos/thumb/oldbell_photo (21).jpg differ
diff --git a/admin/data/galleries/photos/thumb/oldbell_photo (3).jpg b/admin/data/galleries/photos/thumb/oldbell_photo (3).jpg
new file mode 100644 (file)
index 0000000..1f09943
Binary files /dev/null and b/admin/data/galleries/photos/thumb/oldbell_photo (3).jpg differ
diff --git a/admin/data/galleries/photos/thumb/oldbell_photo (4).jpg b/admin/data/galleries/photos/thumb/oldbell_photo (4).jpg
new file mode 100644 (file)
index 0000000..03a3171
Binary files /dev/null and b/admin/data/galleries/photos/thumb/oldbell_photo (4).jpg differ
diff --git a/admin/data/galleries/photos/thumb/oldbell_photo (5).jpg b/admin/data/galleries/photos/thumb/oldbell_photo (5).jpg
new file mode 100644 (file)
index 0000000..e4d44c1
Binary files /dev/null and b/admin/data/galleries/photos/thumb/oldbell_photo (5).jpg differ
diff --git a/admin/data/galleries/photos/thumb/oldbell_photo (6).jpg b/admin/data/galleries/photos/thumb/oldbell_photo (6).jpg
new file mode 100644 (file)
index 0000000..d43b219
Binary files /dev/null and b/admin/data/galleries/photos/thumb/oldbell_photo (6).jpg differ
diff --git a/admin/data/galleries/photos/thumb/oldbell_photo (8).jpg b/admin/data/galleries/photos/thumb/oldbell_photo (8).jpg
new file mode 100644 (file)
index 0000000..039ce1b
Binary files /dev/null and b/admin/data/galleries/photos/thumb/oldbell_photo (8).jpg differ
index a25e504..b4a776d 100644 (file)
@@ -32,7 +32,7 @@
       if ($params["get"] == "gallery_galleries"){
         $html["data"] = $gl->getGalleries();
       } 
-      elseif ($params["get"] == "gallery_gallery"){
+      elseif ($params["get"] == "gallery_data"){
         $html["data"] = $gl->getGallery($params["id"]);
       }
       elseif ($params["get"] == "gallery_items"){
@@ -57,8 +57,8 @@
   } elseif (isset($params["fn"])){
     
 
-  } elseif(isset($params["save"])){
-
+  } elseif(isset($params["savefield"])){
+    db.exec("UPDATE ".$params["table"]." set ".$params["column"]."=".$db->value($params["value"])." where id=".$db->value($params["id"]).";");
   }
   header('Content-Type: application/json');
   echo json_encode($html);
index 3832527..ac96795 100644 (file)
   $vars["page"] = 'pages/'.$vars["page"];
   $m = new Mustache_Engine(array(
     'loader' => new Mustache_Loader_FilesystemLoader($cfg["templatepath"]),
-    'partials_loader' => new Mustache_Loader_FilesystemLoader($cfg["templatepath"].'/blocks'),
+    'partials_loader' => new Mustache_Loader_FilesystemLoader($cfg["templatepath"].'/elements'),
     'escape' => function($value) {
       return $value;
     },
index 2251bae..ab958e6 100644 (file)
 let dataform = {
-saveform: function(frmid,aftercallback,clientschema){
-  var flds=form.getformcontent(frmid,null);
-  flds["fn"] ="saveform";
-  flds["schemata"]=clientschema;
-  flds["table"] = frmid;
-  if (clientschema == null){
-    flds["schemata"]=schemata;
-  }
-  delete flds["null"]; 
-  postData("db.cgi",flds).then(data => {
-    if (aftercallback){
-      aftercallback(data.result);
-      form.formsaved({});
-    } else {
-      form.formsaved(data.result);
-    }
-  });
-  return false;
-},
-saveformdata: function(flds,aftercallback,clientschema){
-  flds["fn"] ="saveform";
-  flds["schemata"]=clientschema;
-  if (clientschema == null){
-    flds["schemata"]=schemata;
-  }
-  delete flds["null"];
-  postData("db.cgi",flds).then(data => {
-    if (aftercallback){
-      aftercallback(data.result);
-      form.formsaved({});
-    } else {
-      form.formsaved(data.result);
-    }
-  });
-  return false;
-},
-formsaved: function(data){
-  var sb = document.getElementById("snackbar");
-  sb.className="show green";
-  sb.innerHTML = 'Les données ont été sauvegardées!';
-  setTimeout(function(){ sb.className = sb.className.replace("show green", ""); }, 3000);
-  return false;
-},
-getformcontent: function(frmid,dataflds){
-  var frm = document.getElementById("frm_" + frmid);
-  var flds = {};
-  // if (dataflds){
-  //   flds = dataflds;
-  // } 
-  for (var i = 0; i < frm.elements.length; i++) {
-    var field = frm.elements[i];
-    if ((field.getAttribute("name") != 'null') && (field.tagName == "INPUT" || field.tagName == "SELECT" || field.tagName == "TEXTAREA")){
-      if (field.classList.contains("tagedit")){
-        var fvalue=field.value.trim();
-        var ndata = null;
-        if (fvalue != ""){
-          ndata =  fvalue.split(",");  
-        }
-        flds[field.getAttribute("name")] = ndata;
-      }else if (field.tagName == "TEXTAREA" ){
-        if (field.classList.contains("richeditarea")){
-          flds[field.getAttribute("name")] = tinymce.get(field.id).getContent();
-        } else {
-          flds[field.getAttribute("name")] = field.innerHTML;
+  // saveform: function(frmid){
+  //   var flds=dataform.getformcontent(frmid,null);
+  //   console.log("TODO: save to db",flds);
+  //   delete flds["null"]; 
+  //   return false;
+  // },
+  // saveformdata: function(flds){
+  //   delete flds["null"];
+  //   console.log("TODO: save to db",flds);
+  //   return false;
+  // },
+  formsaved: function(data){
+    var sb = document.getElementById("snackbar");
+    sb.className="show green";
+    sb.innerHTML = 'Les données ont été sauvegardées!';
+    setTimeout(function(){ sb.className = sb.className.replace("show green", ""); }, 3000);
+    return false;
+  },
+  getformcontent: function(frmid,dataflds){
+    var frm = document.getElementById("frm_" + frmid);
+    var flds = {};
+    if (dataflds){
+      flds = dataflds;
+    } 
+    for (var i = 0; i < frm.elements.length; i++) {
+      var field = frm.elements[i];
+      if (((field.getAttribute("name") != 'null') && (field.tagName == "INPUT" || field.tagName == "SELECT" || field.tagName == "TEXTAREA")) && (field.id)){
+        // if (field.classList.contains("tagedit")){
+        //   var fvalue=field.value.trim();
+        //   var ndata = null;
+        //   if (fvalue != ""){
+        //     ndata =  fvalue.split(",");  
+        //   }
+        //   flds[field.getAttribute("name")] = ndata;
+        // }
+        if (field.tagName == "TEXTAREA" ){
+          if (field.classList.contains("richeditarea")){
+            flds[field.dataset.table][field.dataset.column] = tinymce.get(field.id).getContent();
+          } else {
+            flds[field.dataset.table][field.dataset.column] = field.innerHTML;
+          }
+        } else if (field.type == "checkbox" ){
+          if (field.checked){
+            flds[field.dataset.table][field.dataset.column] = "1";
+          } else {
+            flds[field.dataset.table][field.dataset.column] = "";
+          }
         }
-      }else if (field.type == "checkbox" ){
-        if (field.checked){
-          flds[field.getAttribute("name")] = "1";
-        } else {
-          flds[field.getAttribute("name")] = "";
+        else if (field.tagName == "SELECT" && field.multiple == true){
+            var opts = field.selectedOptions;
+            var vals = [];
+            for (var o in opts){
+              if (opts[o].value){
+                vals.push(opts[o].value);
+              }
+            }
+            if (vals.length > 0) {
+              flds[field.dataset.table][field.dataset.column] = JSON.stringify(vals);
+            } else {
+              flds[field.dataset.table][field.dataset.column] = "";
+            }    
+        } 
+        else {
+          console.log("Field",field,field.id, field.value);
+          flds[field.dataset.table][field.dataset.column] = field.value;
         }
       }
-      else if (field.tagName == "SELECT" && field.multiple == true){
-        flds[field.getAttribute("name")] = dataflds[field.getAttribute("id")].selected();
-      } 
-      else if (field.tagName == "SELECT"){
-         flds[field.getAttribute("name")] = dataflds[field.getAttribute("id")].selected();
-      }
-      else {
-        flds[field.getAttribute("name")] = field.value;
-      }
-    }
-  }
-  return flds;
-},
-cleanform: function(frmname){
-  var frm = document.getElementById("frm_" + frmname);
-  for (var f in frm){
-    if (frm[f] && frm[f].id){
-    if (frm[f].tagName == 'INPUT'){
-      if (frm[f].type == "checkbox"){
-        frm[f].checked = false;
-      } else if (frm[f].classList.contains("datefield")){
-          if (frm[f]._flatpickr){ frm[f]._flatpickr.clear(); }
-      } 
-      // else if (frm[f].classList.contains("choices__input")){
-      //   if (choice[frmname][frm[f].id]){
-      //     choice[frmname][frm[f].id].removeActiveItems();
-      //   }
-      // } 
-      else {
-        frm[f].value = "";
-      }
     }
-    if (frm[f].tagName == 'SELECT'){
-      if (frm[f].multiple == true){
-        if (frm[f].classList.contains("choices__input")){
-          choice[frmname][frm[f].id].removeActiveItems();
+    return flds;
+  },
+  cleanform: function(frmname){
+    var frm = document.getElementById("frm_" + frmname);
+    for (var f in frm){
+      if (frm[f] && frm[f].id){
+      if (frm[f].tagName == 'INPUT'){
+        if (frm[f].type == "checkbox"){
+          frm[f].checked = false;
+        } else if (frm[f].classList.contains("datefield")){
+            if (frm[f]._flatpickr){ frm[f]._flatpickr.clear(); }
+        }  
+        else {
+          frm[f].value = "";
         }
-      } else {
-        frm[f].value = "";
-      }
-      
-    }
-    if (frm[f].tagName == 'TEXTAREA'){
-      if (frm[f].classList.contains("richeditarea")){
-        tinymce.get(frm[f].id).setContent("");
-      } else {
-        frm[f].innerHTML = "";
-      } 
-    }
-  }
-  }
-  return false;
-},
-cleanform2: function(frmname,choices){
-  var frm = document.getElementById("frm_" + frmname);
-  for (var f in frm){
-    if (frm[f] && frm[f].id){
-    if (frm[f].tagName == 'INPUT'){
-      if (frm[f].type == "checkbox"){
-        frm[f].checked = false;
-      } else if (frm[f].classList.contains("datefield")){
-          if (frm[f]._flatpickr){ frm[f]._flatpickr.clear(); }
-      } 
-      // else if (frm[f].classList.contains("choices__input")){
-      //   if (choices[frm[f].id]){
-      //     choices[frm[f].id].removeActiveItems();
-      //   }
-      // } 
-      else {
-        frm[f].value = "";
       }
-    }
-    if (frm[f].tagName == 'SELECT'){
-      if (frm[f].multiple == true){
-        if (frm[f].classList.contains("choices__input")){
-          choices[frm[f].id].removeActiveItems();
+      if (frm[f].tagName == 'SELECT'){
+        if (frm[f].multiple == true){
+          // if (frm[f].classList.contains("choices__input")){
+          //   choice[frmname][frm[f].id].removeActiveItems();
+          // }
+        } else {
+          frm[f].value = "";
         }
-      } else {
-        frm[f].value = "";
+        
+      }
+      if (frm[f].tagName == 'TEXTAREA'){
+        if (frm[f].classList.contains("richeditarea")){
+          console.log("REA ID:",frm[f].id);
+          tinymce.get(frm[f].id).setContent("");
+        } else {
+          frm[f].innerHTML = "";
+        } 
       }
-      
     }
-    if (frm[f].tagName == 'TEXTAREA'){
-      if (frm[f].classList.contains("richeditarea")){
-        tinymce.get(frm[f].id).setContent("");
-      } else {
-        frm[f].innerHTML = "";
-      } 
     }
-  }
-  }
-  return false;
-},
-fillformbydataclass2: function(dataclass,choices,data,onblur){
-  var frm = document.getElementsByClassName('data_'+ dataclass);
-  //console.log("frmdata",frm);
-  if (data){
-    for (var f in frm){
-      //console.log("field",frm[f].id);
-      if (frm[f].id){
-        frm[f].dataset.id=data['id'];
-      }
-      if (data[frm[f].id]){
+    return false;
+  },
+  fillform: function(dataclass,choices,data){
+    var frm = document.querySelectorAll('.data_'+ dataclass);
+    //console.log("frmdata",frm);
+    if (data){
+      for (var f in frm){
+        
+        var tblid = null;
 
-        if (frm[f].tagName == 'INPUT'){
-          if (frm[f].type == "checkbox"){
-            if (data[frm[f].id] == "1"){
-              frm[f].checked = true;
-            } else {
-              frm[f].checked = false;
+        //console.log("ID",frm[f].id);
+        if (frm[f].id){
+          tblid = frm[f].id.replace(dataclass + "_","");
+          frm[f].dataset.id=data['id'];
+        }
+        //console.log(frm[f].id +'=>' +tblid + "=>" +data[tblid]);
+        if (tblid != null && data[tblid]){
+  
+          if (frm[f].tagName == 'INPUT'){
+            if (frm[f].type == "checkbox"){
+              if (data[tblid] == "1"){
+                frm[f].checked = true;
+              } else {
+                frm[f].checked = false;
+              }
+            } 
+            else if (frm[f].classList.contains("datefield")){ 
+              frm[f]._flatpickr.setDate(data[tblid]);
+            } 
+            else if (frm[f].classList.contains("timefield")){
+              frm[f].value = timecalc.StringToTime(data[tblid]);
+            } 
+            else if (frm[f].classList.contains("number")){
+              frm[f].value = dataform.setNumber(data[tblid],null);
+            }
+            else if (frm[f].classList.contains("currency")){
+              frm[f].value = dataform.setNumber(data[tblid],2);
+            }
+            else if (frm[f].classList.contains("percent")){
+              frm[f].value = dataform.setNumber(data[tblid],2);
+            }
+            else {
+              frm[f].value=data[tblid];
             }
-          } 
-          else if (frm[f].classList.contains("datefield")){ 
-            frm[f]._flatpickr.setDate(data[frm[f].id]);
-          } 
-          else if (frm[f].classList.contains("timefield")){
-            frm[f].value = timecalc.StringToTime(data[frm[f].id]);
           }
-          else {
-            frm[f].value=data[frm[f].id];
+          if (frm[f].tagName == 'SELECT'){
+            if (frm[f].multiple == true){
+         
+              choices[frm[f].id].set(JSON.parse(data[tblid]));
+            } else {
+              frm[f].value=data[tblid];
+            }
           }
-        }
-        if (frm[f].tagName == 'SELECT'){
-          if (frm[f].multiple == true){
-       
-            choices[frm[f].id].set(JSON.parse(data[frm[f].id]));
-          } else {
-            frm[f].value=data[frm[f].id];
+          if (frm[f].tagName == "TEXTAREA"){
+            //console.log("Set TextArea: " + frm[f].id + " => "+ data[tblid]);
+            if (frm[f].classList.contains("richeditarea")){
+              
+              tinymce.get(frm[f].id).setContent(data[tblid]);
+            } else {
+              frm[f].value = data[tblid];
+            } 
           }
-        }
-      } 
+        } 
+      }
     }
-  }
-},
-fillselectlist: function(obj,data,vidcol,vvalcol){
-  var sellist = [];
-  let csel = obj.value;
-  if (data){
-    for (var i in data){
-      sellist.push({value:data[i][vidcol],text:data[i][vvalcol]});
+  },
+  setNumber(numdata,decimals){
+    console.log("Number in ",numdata);
+    if (numdata == null || numdata == ''){
+      return "";
+    } 
+    if (decimals){
+      numdata = parseFloat(numdata).toFixed(decimals).toString();    
     }
-  }
-  obj.setData(sellist);
-  if (obj.select.element.dataset.selected && obj.select.element.dataset.selected != ""){
-     obj.set(obj.select.element.dataset.selected);
-  }
-  return false;
-},
-savefield: function(obj,callback){
-  fdata = obj.dataset;
-  fdata["save"] = "field";
-  fdata["schemata"] = schemata;
-  if (obj.tagName == 'INPUT' || obj.tagName == 'SELECT' || obj.tagName == 'TEXTAREA'){
-    if (obj.type == 'checkbox' || obj.type == 'radio'){
-      if (obj.checked == true){
-        fdata["value"] = 1;
-      } else {
-        fdata["value"] = null;
+    numdata.toString().replace(/./,',');
+    console.log("Number out ",numdata);
+    return numdata;
+  },
+  fillselectlist: function(obj,listdata,vidcol,vvalcol){
+    var sellist = [];
+    let csel = obj.value;
+    //console.log(obj);
+    //console.log("selectdata",listdata);
+    
+    // for (var d in listdata){
+    // console.log(d);
+    // }
+    // console.log("datasize",listdata.length);
+    if (listdata.length > 0){
+      for (var i=0;i<listdata.length;i++){
+        
+        sellist.push({value:listdata[i][vidcol],text:listdata[i][vvalcol]});
       }
-    }else {
-      fdata["value"] = obj.value;
     }
-  }
-  postData("db.cgi",fdata).then(data => { if (callback){callback(data);}});
-  return false;
-},
-saveschemafield: function(obj,schema){
-  fdata = obj.dataset;
-  fdata["save"] = "field";
-  fdata["schemata"] = schema;
-  if (obj.tagName == 'INPUT' || obj.tagName == 'SELECT' || obj.tagName == 'TEXTAREA'){
-    if (obj.type == 'checkbox' || obj.type == 'radio'){
-      if (obj.checked == true){
-        fdata["value"] = 1;
-      } else {
-        fdata["value"] = null;
+    //console.log("Select data",sellist);
+    obj.setData(sellist);
+    if (obj.select.element.dataset.selected && obj.select.element.dataset.selected != ""){
+       obj.set(obj.select.element.dataset.selected);
+    }
+    return false;
+  },
+  filldatalist: function(obj,optdata,element){
+    obj.innerHTML = '';
+    for (d=0;d < optdata.length;d++){
+      obj.insertAdjacentHTML('beforend','<option vale="' + optdata[d][element] + '"/>');
+    }
+  },
+  setValue: function(obj,newvalue){
+    if (obj.tagName == 'INPUT' || obj.tagName == 'SELECT'){
+      if (obj.type == 'checkbox' || obj.type == 'radio'){
+        obj.checked = true;
+      }else {
+        obj.value=newvalue;
       }
-    }else {
-      fdata["value"] = obj.value;
     }
-  }
-  postData("db.cgi",fdata).then(data => { });
-  return false;
-},
-cleanfield: function(objid){
-  document.getElementById(objid).value='';
-}
-
+    if (obj.tagName == 'TEXTAREA'){
+      obj.innerHTML = newvalue;
+    }
+    dataform.savefield(obj);
+  },
+  savefield: function(obj){
+    //if (obj.tagName == 'TextArea')
+    fdata = obj.dataset;
+    //fdata["save"] = "field";
+    //fdata["schemata"] = schemata;
+    if (obj.tagName == 'INPUT' || obj.tagName == 'SELECT' || obj.tagName == 'TEXTAREA'){
+      if (obj.type == 'checkbox' || obj.type == 'radio'){
+        if (obj.checked == true){
+          fdata["value"] = "'1'";
+        } else {
+          fdata["value"] = "null";
+        }
+      }else {
+        if (obj.value == ''){
+          fdata["value"] = 'null';
+        } else {
+          fdata["value"] = "'" +obj.value + "'";
+        }
+        
+      }
+    }
+    fdata["savefield"] = 1;
+    postData({fdata}).then(ret => {
 
-}
\ No newline at end of file
+    });
+    return false;
+  },
+  cleanfield: function(objid){
+    document.getElementById(objid).value='';
+  },
+  }
\ No newline at end of file
diff --git a/admin/js/filedata.js b/admin/js/filedata.js
new file mode 100644 (file)
index 0000000..3c60908
--- /dev/null
@@ -0,0 +1,24 @@
+let filedata = {
+  getfileinfo: function (fileobjid){
+    var files = {"count":0,"size":0,"sizehr":"0 bytes","fileinfo":[]};
+    var nBytes = 0;
+    var oFiles = document.getElementById(fileobjid).files;
+    files.count = oFiles.length;
+    for (var nFileId = 0; nFileId < files.count; nFileId++) {
+      var nfo = {"name":name,"type":type,"size":oFiles[nFileId].size,"sizehr":filedata.sizeHumanReadble(oFiles[nFileId].size)} 
+      files.fileinfo.push(nfo);
+      nBytes += oFiles[nFileId].size;
+    }
+    files.size = nBytes;
+    files.sizehr = filedata.sizeHumanReadble(nBytes);
+    return files;
+  },
+  sizeHumanReadble: function(nBytes){
+    var sOutput = nBytes + " bytes" 
+    for (var aMultiples = ["KB", "MB", "GB"], nMultiple = 0, nApprox = nBytes / 1024; nApprox > 1; nApprox /= 1024, nMultiple++) {
+      sOutput = nApprox.toFixed(3) + " " + aMultiples[nMultiple] + " (" + nBytes + " bytes)";
+    }
+    return sOutput;
+  }
+  
+}
\ No newline at end of file
diff --git a/admin/js/modules/galleries.js b/admin/js/modules/galleries.js
new file mode 100644 (file)
index 0000000..9fe6b51
--- /dev/null
@@ -0,0 +1,42 @@
+let galleries = {
+  tbl: null,
+  tblitems: null,
+  init: function(){
+    console.log("Init Galleries!");
+    galleries.tbl= new Tabulator("#tbl_galleries",{
+      height: "calc(100vh - 60px)",
+      layout: "fitColumns",
+      responsiveLayout:true,
+      selectable: 1,
+      rowContext:function(e, row){ e.preventDefault(); },
+        columns: [
+          {title: "Gallerie", field: "gallery"},
+          {title: "description",field: "description"}
+      ]
+    });
+    
+    galleries.gettbldata();
+  },
+  gettbldata: function(){
+    postData({"get":"gallery_galleries"}).then(data => {
+      console.log("galleries Data",data.data);
+      galleries.tbl.setData(data.data);
+      
+    })
+  },
+  edit: function(){
+    let sel = galleries.tbl.getSelectedData();
+    if (sel[0]){
+      gallery.viewpanel(sel[0].id);
+    }
+  },
+  add: function(){
+
+  },
+  confirmRemove: function(){
+
+  },
+  remove: function(){
+
+  }
+} 
\ No newline at end of file
index d15110a..3a8a31f 100644 (file)
 let gallery = {
+  id_gallery: null,
+  gallery_folder: null,
   tbl: null,
-  tblitems: null,
+  selects: {},
+  viewpanel: function(id){
+    gallery.id_gallery=id;
+    let sel = galleries.tbl.getSelectedData();
+    this.gallery_folder = sel[0].link; 
+    dataform.cleanform("galleries");
+    postData({"get":"gallery_data","id":gallery.id_gallery}).then(data => {
+      console.log("Gallery Data:",data.data);
+      dataform.fillform("galleries",gallery.selects,data.data);
+      gallery.gettabledata();
+      
+      myapp.viewpanel("gallery");
+    });
+    
+  },
   init: function(){
-    console.log("Init Galleries!");
-    gallery.tbl= new Tabulator("#tbl_galleries",{
-      height: "calc(100vh - 60px)",
-      layout: "fitColumns",
-      responsiveLayout:true,
-      selectable: 1,
-      rowContext:function(e, row){ e.preventDefault(); },
-        columns: [
-          {title: "Gallerie", field: "gallery"},
-          {title: "description",field: "description"}
-      ]
+    flatpickr("#galleryitem_publishdate",{altInput: true,
+      altFormat: "d.m.Y", dateFormat: "Y-m-d","locale": "fr",
+      // onClose: function(selectedDates, dateStr, instance) {}
+    });
+    flatpickr("#galleryitem_unpublishdate",{altInput: true,
+      altFormat: "d.m.Y",dateFormat: "Y-m-d","locale": "fr",
+      // onClose: function(selectedDates, dateStr, instance) {}
     });
-    gallery.tblitems =new Tabulator("#tbl_galleryitems",{
-      height: "calc(100vh - 246px)",
+    tinymce.init({
+      selector: '#galleryitem_description,#galleries_description',
+      plugins: 'paste importcss searchreplace autolink directionality visualblocks visualchars template charmap nonbreaking advlist lists  textpattern noneditable charmap autoresize ',
+      menubar: false,
+      entity_encoding : 'raw',
+      toolbar: 'bold italic underline strikethrough | fontsizeselect | forecolor removeformat | charmap',
+      toolbar_sticky: false,
+      language: 'fr',
+      content_css: [
+        'css/theme.css'
+      ],
+      statusbar: false,
+      forced_root_block : '',
+      min_height: 150,
+      branding: false,
+      importcss_append: true,
+      noneditable_noneditable_class: "mceNonEditable",
+      contextmenu: false,
+      setup: function(editor) {
+        editor.on('blur', function(e) {
+          console.log("tmce blur:",e.target.id);
+          if (e.target.id == "galleries_description"){
+            //dataform.savefield(document.getElementById(e.id));
+            console.log("TODO: savefield");
+          }
+          //
+          //e.id
+          //console.log('The Editor has initialized.');
+        });
+      }
+     });
+    gallery.tbl =new Tabulator("#tbl_galleryitems",{
+      height: "calc(100vh - 60px)",
       layout: "fitColumns",
       responsiveLayout:true,
       selectable: 1,
+      autoResize:false,
+      rowFormatter:function(row, data){
+        console.log(row);
+
+        
+      },
       rowContext:function(e, row){ e.preventDefault(); },
         columns: [
-          {title: "Image", field: "filename",formatter:"html",},
-          {title: "Type", field: "filetype"},
+          {title: "Image", field: "filename",formatter:pictureFormatter,width:200},
+          {title: "Type", field: "filetype" ,width: 100},
           {title: "description",field: "description"},
-          {title: "publication",field: "publishdate",formatter:"datetime",headerSort:true,formatterParams:{inputFormat:"YYYY-MM-DD",outputFormat:"DD.MM.YYYY",invalidPlaceholder:""}},
-          {title: "fin publication",field: "unpublishdate",formatter:"datetime",headerSort:true,formatterParams:{inputFormat:"YYYY-MM-DD",outputFormat:"DD.MM.YYYY",invalidPlaceholder:""}},
+          {title: "publication",field: "publishdate",width: 100,formatter:"datetime",headerSort:true,formatterParams:{inputFormat:"YYYY-MM-DD",outputFormat:"DD.MM.YYYY",invalidPlaceholder:""}},
+          {title: "fin publication",field: "unpublishdate",width: 100,formatter:"datetime",headerSort:true,formatterParams:{inputFormat:"YYYY-MM-DD",outputFormat:"DD.MM.YYYY",invalidPlaceholder:""}},
       ]
     });
-    gallery.gettbldata();
   },
-  gettbldata: function(){
-    postData({"get":"gallery_galleries"}).then(data => {
-      console.log("Gallery Data",data.data);
+  gettabledata: function(){
+    postData({"get":"gallery_items","id":gallery.id_gallery}).then(data => {
+      console.log("Gallery Items:",data.data);
       gallery.tbl.setData(data.data);
-      
     })
   },
+  add: function(){
+    myapp.viewdialog("addgalleryitem");
+  },
+  uploadItem: function(){
+    let data = dataform.getformcontent("addgalleryitem");
+    myapp.closedlg("addgalleryitem");
+    myapp.openDataLoad("Téléchargement en cours","Attendez s.v.p.!");
+    postFile("addgalleryitem_file",data).then(data => {
+      myapp.closeDataLoad();
+      
+      // postData({"fn":"gallery_addfiles",}).then( data => {
+        
+      // });
+      
+      
+    }).catch(err => {
+      myapp.closeDataLoad();
+    });
+    
+  },
+  confirmRemove: function(){
+    var sel = gallery.tbl.getSelectedData();
+    //delcallback = ;
+    if (sel[0]) {
+      myapp.confirm("Supprimer l'élément?","êtes vous sûre de supprimer cet élément?","oui","non","gallery.remove();");
+    }
+  },
+  remove: function(){
+    var sel = gallery.tbl.getSelectedData();
+    postData({"fn":"gallery_deleteitem","id":id}).then(data => {
+      gallery.tbl.deselectRow(sel[0].id);
+      gallery.gettabledata();
+    });
+  },
   edit: function(){
-    let sel = gallery.tbl.getSelectedData();
+    let sel =  this.tbl.getSelectedData();
+    console.log(sel);
+    dataform.cleanform("galleryitem");
     if (sel[0]){
-      myapp.viewpanel("gallery");
+      dataform.fillform("galleryitem",{},sel[0]);
+      myapp.viewdialog("galleryitem");
     }
   },
-  add: function(){
-
+  save: function(){
+    myapp.closedlg("galleryitem");
   },
-  confirmRemove: function(){
-
+  editImage: function(){
+    let sel =  this.tbl.getSelectedData();
   },
-  remove: function(){
-
+  setAsDefault: function(){
+    let sel =  this.tbl.getSelectedData();
   }
-} 
\ No newline at end of file
+
+}
+
+let pictureFormatter = function(cell, formatterParams){
+  
+  return '<div><img style="height: 75px;" src="data/galleries/' + gallery.gallery_folder + '/thumb/'+ cell.getValue()+'" /></div>';
+};
\ No newline at end of file
index e69de29..1639547 100644 (file)
@@ -0,0 +1,5 @@
+
+
+let rendezvous = {
+  
+}
\ No newline at end of file
diff --git a/admin/js/modules/rendezvous_config.js b/admin/js/modules/rendezvous_config.js
new file mode 100644 (file)
index 0000000..e69de29
index 087870d..b0141a7 100644 (file)
@@ -54,6 +54,35 @@ let myapp = {
     },\r
     closedlg: function(dlgid){\r
       document.getElementById(dlgid).style.display='none';\r
+    },\r
+    confirm(title,message,strbtnok,strbtncancel,action){\r
+      document.getElementById("dlgconfirm_title").innerHTML = title;\r
+      document.getElementById("dlgconfirm_text").innerHTML = message;\r
+      document.getElementById("dlgconfirm_btnok").innerHTML = strbtnok;\r
+      document.getElementById("dlgconfirm_btncancel").innerHTML = strbtncancel;\r
+      document.getElementById("dlgconfirm_btnok").setAttribute("onclick","document.getElementById('dlgconfirm').style.display='none';" + action);\r
+      document.getElementById("dlgconfirm").style.display = 'block';\r
+    },\r
+    message: function(title,message){\r
+      document.getElementById('dlgmessage_title').innerHTML=title;\r
+      document.getElementById('dlgmessage_text').innerHTML=message;\r
+      document.getElementById('dlgmessage').style.display='block';\r
+      return false;\r
+    },\r
+    openDataLoad: function(title,message){\r
+      document.getElementById('dlgdataload_title').innerHTML=title;\r
+      document.getElementById('dlgdataload_text').innerHTML=message;\r
+      document.getElementById('dlgdataload').style.display='block';\r
+      return false;\r
+    },\r
+    closeDataLoad(){\r
+      document.getElementById('dlgdataload_title').innerHTML='';\r
+      document.getElementById('dlgdataload_text').innerHTML='';\r
+      document.getElementById('dlgdataload').style.display='none';\r
+      return false;\r
+    },\r
+    setDataLoadMsg(msg){\r
+      document.getElementById('dlgdataload_text').innerHTML=msg;\r
     }\r
 }\r
 document.addEventListener("DOMContentLoaded", function() {\r
index 4b99f43..f28e1b7 100644 (file)
@@ -20,6 +20,31 @@ async function postData(data = {}) {
   return response.json();
 }
 
+async function postFile(fileobjid,data = {}) {
+  var mfd = new FormData();
+  for (var o in data){
+    mfd.append(o,mfd);
+  }
+  var fileobj = document.getElementById(fileobjid);
+  for (let i = 0; i < fileobj.files.length; i++) {
+    mfd.append('file', fileobj.files[i]);
+  }
+  const response = await fetch(api + 'upload.php', {
+    method: 'POST', 
+    mode: 'same-origin', 
+    cache: 'no-cache', 
+    credentials: 'same-origin', 
+    headers: {
+      'Content-Type': 'multipart/form-data'
+    },
+    redirect: 'follow', 
+    referrerPolicy: 'strict-origin', 
+    body: mfd
+  });
+  
+  return response.json();
+}
+
 // var report ={
 //   generate: function(repname,filename,data){
 //     showdataloaddlg("Création PDF encours","Attendez s.v.p.");
diff --git a/admin/js/vendors/Acrobat_2020_Web_WWMUI.zip b/admin/js/vendors/Acrobat_2020_Web_WWMUI.zip
new file mode 100644 (file)
index 0000000..d06d72e
Binary files /dev/null and b/admin/js/vendors/Acrobat_2020_Web_WWMUI.zip differ
diff --git a/admin/js/vendors/dropzone-5.7.2.zip b/admin/js/vendors/dropzone-5.7.2.zip
new file mode 100644 (file)
index 0000000..ee10954
Binary files /dev/null and b/admin/js/vendors/dropzone-5.7.2.zip differ
diff --git a/admin/js/vendors/dropzone/basic.css b/admin/js/vendors/dropzone/basic.css
new file mode 100644 (file)
index 0000000..b72d7de
--- /dev/null
@@ -0,0 +1,39 @@
+/*
+ * The MIT License
+ * Copyright (c) 2012 Matias Meno <m@tias.me>
+ */
+.dropzone, .dropzone * {
+  box-sizing: border-box; }
+
+.dropzone {
+  position: relative; }
+  .dropzone .dz-preview {
+    position: relative;
+    display: inline-block;
+    width: 120px;
+    margin: 0.5em; }
+    .dropzone .dz-preview .dz-progress {
+      display: block;
+      height: 15px;
+      border: 1px solid #aaa; }
+      .dropzone .dz-preview .dz-progress .dz-upload {
+        display: block;
+        height: 100%;
+        width: 0;
+        background: green; }
+    .dropzone .dz-preview .dz-error-message {
+      color: red;
+      display: none; }
+    .dropzone .dz-preview.dz-error .dz-error-message, .dropzone .dz-preview.dz-error .dz-error-mark {
+      display: block; }
+    .dropzone .dz-preview.dz-success .dz-success-mark {
+      display: block; }
+    .dropzone .dz-preview .dz-error-mark, .dropzone .dz-preview .dz-success-mark {
+      position: absolute;
+      display: none;
+      left: 30px;
+      top: 30px;
+      width: 54px;
+      height: 58px;
+      left: 50%;
+      margin-left: -27px; }
diff --git a/admin/js/vendors/dropzone/dropzone-amd-module.js b/admin/js/vendors/dropzone/dropzone-amd-module.js
new file mode 100644 (file)
index 0000000..0b1f47d
--- /dev/null
@@ -0,0 +1,3522 @@
+// Uses AMD or browser globals to create a jQuery plugin.
+(function (factory) {
+  if (typeof define === 'function' && define.amd) {
+      // AMD. Register as an anonymous module.
+      define(['jquery'], factory);
+  } else {
+      // Browser globals
+      factory(jQuery);
+  }
+} (function (jQuery) {
+    var module = { exports: { } }; // Fake component
+
+"use strict";
+
+function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
+
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
+
+function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
+
+function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
+
+function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
+
+function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
+
+function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
+
+function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
+
+function _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
+
+function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
+
+function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
+
+function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
+
+/*
+ *
+ * More info at [www.dropzonejs.com](http://www.dropzonejs.com)
+ *
+ * Copyright (c) 2012, Matias Meno
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ *
+ */
+// The Emitter class provides the ability to call `.on()` on Dropzone to listen
+// to events.
+// It is strongly based on component's emitter class, and I removed the
+// functionality because of the dependency hell with different frameworks.
+var Emitter = /*#__PURE__*/function () {
+  function Emitter() {
+    _classCallCheck(this, Emitter);
+  }
+
+  _createClass(Emitter, [{
+    key: "on",
+    // Add an event listener for given event
+    value: function on(event, fn) {
+      this._callbacks = this._callbacks || {}; // Create namespace for this event
+
+      if (!this._callbacks[event]) {
+        this._callbacks[event] = [];
+      }
+
+      this._callbacks[event].push(fn);
+
+      return this;
+    }
+  }, {
+    key: "emit",
+    value: function emit(event) {
+      this._callbacks = this._callbacks || {};
+      var callbacks = this._callbacks[event];
+
+      if (callbacks) {
+        for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
+          args[_key - 1] = arguments[_key];
+        }
+
+        var _iterator = _createForOfIteratorHelper(callbacks),
+            _step;
+
+        try {
+          for (_iterator.s(); !(_step = _iterator.n()).done;) {
+            var callback = _step.value;
+            callback.apply(this, args);
+          }
+        } catch (err) {
+          _iterator.e(err);
+        } finally {
+          _iterator.f();
+        }
+      }
+
+      return this;
+    } // Remove event listener for given event. If fn is not provided, all event
+    // listeners for that event will be removed. If neither is provided, all
+    // event listeners will be removed.
+
+  }, {
+    key: "off",
+    value: function off(event, fn) {
+      if (!this._callbacks || arguments.length === 0) {
+        this._callbacks = {};
+        return this;
+      } // specific event
+
+
+      var callbacks = this._callbacks[event];
+
+      if (!callbacks) {
+        return this;
+      } // remove all handlers
+
+
+      if (arguments.length === 1) {
+        delete this._callbacks[event];
+        return this;
+      } // remove specific handler
+
+
+      for (var i = 0; i < callbacks.length; i++) {
+        var callback = callbacks[i];
+
+        if (callback === fn) {
+          callbacks.splice(i, 1);
+          break;
+        }
+      }
+
+      return this;
+    }
+  }]);
+
+  return Emitter;
+}();
+
+var Dropzone = /*#__PURE__*/function (_Emitter) {
+  _inherits(Dropzone, _Emitter);
+
+  var _super = _createSuper(Dropzone);
+
+  _createClass(Dropzone, null, [{
+    key: "initClass",
+    value: function initClass() {
+      // Exposing the emitter class, mainly for tests
+      this.prototype.Emitter = Emitter;
+      /*
+       This is a list of all available events you can register on a dropzone object.
+        You can register an event handler like this:
+        dropzone.on("dragEnter", function() { });
+        */
+
+      this.prototype.events = ["drop", "dragstart", "dragend", "dragenter", "dragover", "dragleave", "addedfile", "addedfiles", "removedfile", "thumbnail", "error", "errormultiple", "processing", "processingmultiple", "uploadprogress", "totaluploadprogress", "sending", "sendingmultiple", "success", "successmultiple", "canceled", "canceledmultiple", "complete", "completemultiple", "reset", "maxfilesexceeded", "maxfilesreached", "queuecomplete"];
+      this.prototype.defaultOptions = {
+        /**
+         * Has to be specified on elements other than form (or when the form
+         * doesn't have an `action` attribute). You can also
+         * provide a function that will be called with `files` and
+         * must return the url (since `v3.12.0`)
+         */
+        url: null,
+
+        /**
+         * Can be changed to `"put"` if necessary. You can also provide a function
+         * that will be called with `files` and must return the method (since `v3.12.0`).
+         */
+        method: "post",
+
+        /**
+         * Will be set on the XHRequest.
+         */
+        withCredentials: false,
+
+        /**
+         * The timeout for the XHR requests in milliseconds (since `v4.4.0`).
+         */
+        timeout: 30000,
+
+        /**
+         * How many file uploads to process in parallel (See the
+         * Enqueuing file uploads documentation section for more info)
+         */
+        parallelUploads: 2,
+
+        /**
+         * Whether to send multiple files in one request. If
+         * this it set to true, then the fallback file input element will
+         * have the `multiple` attribute as well. This option will
+         * also trigger additional events (like `processingmultiple`). See the events
+         * documentation section for more information.
+         */
+        uploadMultiple: false,
+
+        /**
+         * Whether you want files to be uploaded in chunks to your server. This can't be
+         * used in combination with `uploadMultiple`.
+         *
+         * See [chunksUploaded](#config-chunksUploaded) for the callback to finalise an upload.
+         */
+        chunking: false,
+
+        /**
+         * If `chunking` is enabled, this defines whether **every** file should be chunked,
+         * even if the file size is below chunkSize. This means, that the additional chunk
+         * form data will be submitted and the `chunksUploaded` callback will be invoked.
+         */
+        forceChunking: false,
+
+        /**
+         * If `chunking` is `true`, then this defines the chunk size in bytes.
+         */
+        chunkSize: 2000000,
+
+        /**
+         * If `true`, the individual chunks of a file are being uploaded simultaneously.
+         */
+        parallelChunkUploads: false,
+
+        /**
+         * Whether a chunk should be retried if it fails.
+         */
+        retryChunks: false,
+
+        /**
+         * If `retryChunks` is true, how many times should it be retried.
+         */
+        retryChunksLimit: 3,
+
+        /**
+         * If not `null` defines how many files this Dropzone handles. If it exceeds,
+         * the event `maxfilesexceeded` will be called. The dropzone element gets the
+         * class `dz-max-files-reached` accordingly so you can provide visual feedback.
+         */
+        maxFilesize: 256,
+
+        /**
+         * The name of the file param that gets transferred.
+         * **NOTE**: If you have the option  `uploadMultiple` set to `true`, then
+         * Dropzone will append `[]` to the name.
+         */
+        paramName: "file",
+
+        /**
+         * Whether thumbnails for images should be generated
+         */
+        createImageThumbnails: true,
+
+        /**
+         * In MB. When the filename exceeds this limit, the thumbnail will not be generated.
+         */
+        maxThumbnailFilesize: 10,
+
+        /**
+         * If `null`, the ratio of the image will be used to calculate it.
+         */
+        thumbnailWidth: 120,
+
+        /**
+         * The same as `thumbnailWidth`. If both are null, images will not be resized.
+         */
+        thumbnailHeight: 120,
+
+        /**
+         * How the images should be scaled down in case both, `thumbnailWidth` and `thumbnailHeight` are provided.
+         * Can be either `contain` or `crop`.
+         */
+        thumbnailMethod: 'crop',
+
+        /**
+         * If set, images will be resized to these dimensions before being **uploaded**.
+         * If only one, `resizeWidth` **or** `resizeHeight` is provided, the original aspect
+         * ratio of the file will be preserved.
+         *
+         * The `options.transformFile` function uses these options, so if the `transformFile` function
+         * is overridden, these options don't do anything.
+         */
+        resizeWidth: null,
+
+        /**
+         * See `resizeWidth`.
+         */
+        resizeHeight: null,
+
+        /**
+         * The mime type of the resized image (before it gets uploaded to the server).
+         * If `null` the original mime type will be used. To force jpeg, for example, use `image/jpeg`.
+         * See `resizeWidth` for more information.
+         */
+        resizeMimeType: null,
+
+        /**
+         * The quality of the resized images. See `resizeWidth`.
+         */
+        resizeQuality: 0.8,
+
+        /**
+         * How the images should be scaled down in case both, `resizeWidth` and `resizeHeight` are provided.
+         * Can be either `contain` or `crop`.
+         */
+        resizeMethod: 'contain',
+
+        /**
+         * The base that is used to calculate the filesize. You can change this to
+         * 1024 if you would rather display kibibytes, mebibytes, etc...
+         * 1024 is technically incorrect, because `1024 bytes` are `1 kibibyte` not `1 kilobyte`.
+         * You can change this to `1024` if you don't care about validity.
+         */
+        filesizeBase: 1000,
+
+        /**
+         * Can be used to limit the maximum number of files that will be handled by this Dropzone
+         */
+        maxFiles: null,
+
+        /**
+         * An optional object to send additional headers to the server. Eg:
+         * `{ "My-Awesome-Header": "header value" }`
+         */
+        headers: null,
+
+        /**
+         * If `true`, the dropzone element itself will be clickable, if `false`
+         * nothing will be clickable.
+         *
+         * You can also pass an HTML element, a CSS selector (for multiple elements)
+         * or an array of those. In that case, all of those elements will trigger an
+         * upload when clicked.
+         */
+        clickable: true,
+
+        /**
+         * Whether hidden files in directories should be ignored.
+         */
+        ignoreHiddenFiles: true,
+
+        /**
+         * The default implementation of `accept` checks the file's mime type or
+         * extension against this list. This is a comma separated list of mime
+         * types or file extensions.
+         *
+         * Eg.: `image/*,application/pdf,.psd`
+         *
+         * If the Dropzone is `clickable` this option will also be used as
+         * [`accept`](https://developer.mozilla.org/en-US/docs/HTML/Element/input#attr-accept)
+         * parameter on the hidden file input as well.
+         */
+        acceptedFiles: null,
+
+        /**
+         * **Deprecated!**
+         * Use acceptedFiles instead.
+         */
+        acceptedMimeTypes: null,
+
+        /**
+         * If false, files will be added to the queue but the queue will not be
+         * processed automatically.
+         * This can be useful if you need some additional user input before sending
+         * files (or if you want want all files sent at once).
+         * If you're ready to send the file simply call `myDropzone.processQueue()`.
+         *
+         * See the [enqueuing file uploads](#enqueuing-file-uploads) documentation
+         * section for more information.
+         */
+        autoProcessQueue: true,
+
+        /**
+         * If false, files added to the dropzone will not be queued by default.
+         * You'll have to call `enqueueFile(file)` manually.
+         */
+        autoQueue: true,
+
+        /**
+         * If `true`, this will add a link to every file preview to remove or cancel (if
+         * already uploading) the file. The `dictCancelUpload`, `dictCancelUploadConfirmation`
+         * and `dictRemoveFile` options are used for the wording.
+         */
+        addRemoveLinks: false,
+
+        /**
+         * Defines where to display the file previews – if `null` the
+         * Dropzone element itself is used. Can be a plain `HTMLElement` or a CSS
+         * selector. The element should have the `dropzone-previews` class so
+         * the previews are displayed properly.
+         */
+        previewsContainer: null,
+
+        /**
+         * This is the element the hidden input field (which is used when clicking on the
+         * dropzone to trigger file selection) will be appended to. This might
+         * be important in case you use frameworks to switch the content of your page.
+         *
+         * Can be a selector string, or an element directly.
+         */
+        hiddenInputContainer: "body",
+
+        /**
+         * If null, no capture type will be specified
+         * If camera, mobile devices will skip the file selection and choose camera
+         * If microphone, mobile devices will skip the file selection and choose the microphone
+         * If camcorder, mobile devices will skip the file selection and choose the camera in video mode
+         * On apple devices multiple must be set to false.  AcceptedFiles may need to
+         * be set to an appropriate mime type (e.g. "image/*", "audio/*", or "video/*").
+         */
+        capture: null,
+
+        /**
+         * **Deprecated**. Use `renameFile` instead.
+         */
+        renameFilename: null,
+
+        /**
+         * A function that is invoked before the file is uploaded to the server and renames the file.
+         * This function gets the `File` as argument and can use the `file.name`. The actual name of the
+         * file that gets used during the upload can be accessed through `file.upload.filename`.
+         */
+        renameFile: null,
+
+        /**
+         * If `true` the fallback will be forced. This is very useful to test your server
+         * implementations first and make sure that everything works as
+         * expected without dropzone if you experience problems, and to test
+         * how your fallbacks will look.
+         */
+        forceFallback: false,
+
+        /**
+         * The text used before any files are dropped.
+         */
+        dictDefaultMessage: "Drop files here to upload",
+
+        /**
+         * The text that replaces the default message text it the browser is not supported.
+         */
+        dictFallbackMessage: "Your browser does not support drag'n'drop file uploads.",
+
+        /**
+         * The text that will be added before the fallback form.
+         * If you provide a  fallback element yourself, or if this option is `null` this will
+         * be ignored.
+         */
+        dictFallbackText: "Please use the fallback form below to upload your files like in the olden days.",
+
+        /**
+         * If the filesize is too big.
+         * `{{filesize}}` and `{{maxFilesize}}` will be replaced with the respective configuration values.
+         */
+        dictFileTooBig: "File is too big ({{filesize}}MiB). Max filesize: {{maxFilesize}}MiB.",
+
+        /**
+         * If the file doesn't match the file type.
+         */
+        dictInvalidFileType: "You can't upload files of this type.",
+
+        /**
+         * If the server response was invalid.
+         * `{{statusCode}}` will be replaced with the servers status code.
+         */
+        dictResponseError: "Server responded with {{statusCode}} code.",
+
+        /**
+         * If `addRemoveLinks` is true, the text to be used for the cancel upload link.
+         */
+        dictCancelUpload: "Cancel upload",
+
+        /**
+         * The text that is displayed if an upload was manually canceled
+         */
+        dictUploadCanceled: "Upload canceled.",
+
+        /**
+         * If `addRemoveLinks` is true, the text to be used for confirmation when cancelling upload.
+         */
+        dictCancelUploadConfirmation: "Are you sure you want to cancel this upload?",
+
+        /**
+         * If `addRemoveLinks` is true, the text to be used to remove a file.
+         */
+        dictRemoveFile: "Remove file",
+
+        /**
+         * If this is not null, then the user will be prompted before removing a file.
+         */
+        dictRemoveFileConfirmation: null,
+
+        /**
+         * Displayed if `maxFiles` is st and exceeded.
+         * The string `{{maxFiles}}` will be replaced by the configuration value.
+         */
+        dictMaxFilesExceeded: "You can not upload any more files.",
+
+        /**
+         * Allows you to translate the different units. Starting with `tb` for terabytes and going down to
+         * `b` for bytes.
+         */
+        dictFileSizeUnits: {
+          tb: "TB",
+          gb: "GB",
+          mb: "MB",
+          kb: "KB",
+          b: "b"
+        },
+
+        /**
+         * Called when dropzone initialized
+         * You can add event listeners here
+         */
+        init: function init() {},
+
+        /**
+         * Can be an **object** of additional parameters to transfer to the server, **or** a `Function`
+         * that gets invoked with the `files`, `xhr` and, if it's a chunked upload, `chunk` arguments. In case
+         * of a function, this needs to return a map.
+         *
+         * The default implementation does nothing for normal uploads, but adds relevant information for
+         * chunked uploads.
+         *
+         * This is the same as adding hidden input fields in the form element.
+         */
+        params: function params(files, xhr, chunk) {
+          if (chunk) {
+            return {
+              dzuuid: chunk.file.upload.uuid,
+              dzchunkindex: chunk.index,
+              dztotalfilesize: chunk.file.size,
+              dzchunksize: this.options.chunkSize,
+              dztotalchunkcount: chunk.file.upload.totalChunkCount,
+              dzchunkbyteoffset: chunk.index * this.options.chunkSize
+            };
+          }
+        },
+
+        /**
+         * A function that gets a [file](https://developer.mozilla.org/en-US/docs/DOM/File)
+         * and a `done` function as parameters.
+         *
+         * If the done function is invoked without arguments, the file is "accepted" and will
+         * be processed. If you pass an error message, the file is rejected, and the error
+         * message will be displayed.
+         * This function will not be called if the file is too big or doesn't match the mime types.
+         */
+        accept: function accept(file, done) {
+          return done();
+        },
+
+        /**
+         * The callback that will be invoked when all chunks have been uploaded for a file.
+         * It gets the file for which the chunks have been uploaded as the first parameter,
+         * and the `done` function as second. `done()` needs to be invoked when everything
+         * needed to finish the upload process is done.
+         */
+        chunksUploaded: function chunksUploaded(file, done) {
+          done();
+        },
+
+        /**
+         * Gets called when the browser is not supported.
+         * The default implementation shows the fallback input field and adds
+         * a text.
+         */
+        fallback: function fallback() {
+          // This code should pass in IE7... :(
+          var messageElement;
+          this.element.className = "".concat(this.element.className, " dz-browser-not-supported");
+
+          var _iterator2 = _createForOfIteratorHelper(this.element.getElementsByTagName("div")),
+              _step2;
+
+          try {
+            for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
+              var child = _step2.value;
+
+              if (/(^| )dz-message($| )/.test(child.className)) {
+                messageElement = child;
+                child.className = "dz-message"; // Removes the 'dz-default' class
+
+                break;
+              }
+            }
+          } catch (err) {
+            _iterator2.e(err);
+          } finally {
+            _iterator2.f();
+          }
+
+          if (!messageElement) {
+            messageElement = Dropzone.createElement("<div class=\"dz-message\"><span></span></div>");
+            this.element.appendChild(messageElement);
+          }
+
+          var span = messageElement.getElementsByTagName("span")[0];
+
+          if (span) {
+            if (span.textContent != null) {
+              span.textContent = this.options.dictFallbackMessage;
+            } else if (span.innerText != null) {
+              span.innerText = this.options.dictFallbackMessage;
+            }
+          }
+
+          return this.element.appendChild(this.getFallbackForm());
+        },
+
+        /**
+         * Gets called to calculate the thumbnail dimensions.
+         *
+         * It gets `file`, `width` and `height` (both may be `null`) as parameters and must return an object containing:
+         *
+         *  - `srcWidth` & `srcHeight` (required)
+         *  - `trgWidth` & `trgHeight` (required)
+         *  - `srcX` & `srcY` (optional, default `0`)
+         *  - `trgX` & `trgY` (optional, default `0`)
+         *
+         * Those values are going to be used by `ctx.drawImage()`.
+         */
+        resize: function resize(file, width, height, resizeMethod) {
+          var info = {
+            srcX: 0,
+            srcY: 0,
+            srcWidth: file.width,
+            srcHeight: file.height
+          };
+          var srcRatio = file.width / file.height; // Automatically calculate dimensions if not specified
+
+          if (width == null && height == null) {
+            width = info.srcWidth;
+            height = info.srcHeight;
+          } else if (width == null) {
+            width = height * srcRatio;
+          } else if (height == null) {
+            height = width / srcRatio;
+          } // Make sure images aren't upscaled
+
+
+          width = Math.min(width, info.srcWidth);
+          height = Math.min(height, info.srcHeight);
+          var trgRatio = width / height;
+
+          if (info.srcWidth > width || info.srcHeight > height) {
+            // Image is bigger and needs rescaling
+            if (resizeMethod === 'crop') {
+              if (srcRatio > trgRatio) {
+                info.srcHeight = file.height;
+                info.srcWidth = info.srcHeight * trgRatio;
+              } else {
+                info.srcWidth = file.width;
+                info.srcHeight = info.srcWidth / trgRatio;
+              }
+            } else if (resizeMethod === 'contain') {
+              // Method 'contain'
+              if (srcRatio > trgRatio) {
+                height = width / srcRatio;
+              } else {
+                width = height * srcRatio;
+              }
+            } else {
+              throw new Error("Unknown resizeMethod '".concat(resizeMethod, "'"));
+            }
+          }
+
+          info.srcX = (file.width - info.srcWidth) / 2;
+          info.srcY = (file.height - info.srcHeight) / 2;
+          info.trgWidth = width;
+          info.trgHeight = height;
+          return info;
+        },
+
+        /**
+         * Can be used to transform the file (for example, resize an image if necessary).
+         *
+         * The default implementation uses `resizeWidth` and `resizeHeight` (if provided) and resizes
+         * images according to those dimensions.
+         *
+         * Gets the `file` as the first parameter, and a `done()` function as the second, that needs
+         * to be invoked with the file when the transformation is done.
+         */
+        transformFile: function transformFile(file, done) {
+          if ((this.options.resizeWidth || this.options.resizeHeight) && file.type.match(/image.*/)) {
+            return this.resizeImage(file, this.options.resizeWidth, this.options.resizeHeight, this.options.resizeMethod, done);
+          } else {
+            return done(file);
+          }
+        },
+
+        /**
+         * A string that contains the template used for each dropped
+         * file. Change it to fulfill your needs but make sure to properly
+         * provide all elements.
+         *
+         * If you want to use an actual HTML element instead of providing a String
+         * as a config option, you could create a div with the id `tpl`,
+         * put the template inside it and provide the element like this:
+         *
+         *     document
+         *       .querySelector('#tpl')
+         *       .innerHTML
+         *
+         */
+        previewTemplate: "<div class=\"dz-preview dz-file-preview\">\n  <div class=\"dz-image\"><img data-dz-thumbnail /></div>\n  <div class=\"dz-details\">\n    <div class=\"dz-size\"><span data-dz-size></span></div>\n    <div class=\"dz-filename\"><span data-dz-name></span></div>\n  </div>\n  <div class=\"dz-progress\"><span class=\"dz-upload\" data-dz-uploadprogress></span></div>\n  <div class=\"dz-error-message\"><span data-dz-errormessage></span></div>\n  <div class=\"dz-success-mark\">\n    <svg width=\"54px\" height=\"54px\" viewBox=\"0 0 54 54\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n      <title>Check</title>\n      <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n        <path d=\"M23.5,31.8431458 L17.5852419,25.9283877 C16.0248253,24.3679711 13.4910294,24.366835 11.9289322,25.9289322 C10.3700136,27.4878508 10.3665912,30.0234455 11.9283877,31.5852419 L20.4147581,40.0716123 C20.5133999,40.1702541 20.6159315,40.2626649 20.7218615,40.3488435 C22.2835669,41.8725651 24.794234,41.8626202 26.3461564,40.3106978 L43.3106978,23.3461564 C44.8771021,21.7797521 44.8758057,19.2483887 43.3137085,17.6862915 C41.7547899,16.1273729 39.2176035,16.1255422 37.6538436,17.6893022 L23.5,31.8431458 Z M27,53 C41.3594035,53 53,41.3594035 53,27 C53,12.6405965 41.3594035,1 27,1 C12.6405965,1 1,12.6405965 1,27 C1,41.3594035 12.6405965,53 27,53 Z\" stroke-opacity=\"0.198794158\" stroke=\"#747474\" fill-opacity=\"0.816519475\" fill=\"#FFFFFF\"></path>\n      </g>\n    </svg>\n  </div>\n  <div class=\"dz-error-mark\">\n    <svg width=\"54px\" height=\"54px\" viewBox=\"0 0 54 54\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n      <title>Error</title>\n      <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n        <g stroke=\"#747474\" stroke-opacity=\"0.198794158\" fill=\"#FFFFFF\" fill-opacity=\"0.816519475\">\n          <path d=\"M32.6568542,29 L38.3106978,23.3461564 C39.8771021,21.7797521 39.8758057,19.2483887 38.3137085,17.6862915 C36.7547899,16.1273729 34.2176035,16.1255422 32.6538436,17.6893022 L27,23.3431458 L21.3461564,17.6893022 C19.7823965,16.1255422 17.2452101,16.1273729 15.6862915,17.6862915 C14.1241943,19.2483887 14.1228979,21.7797521 15.6893022,23.3461564 L21.3431458,29 L15.6893022,34.6538436 C14.1228979,36.2202479 14.1241943,38.7516113 15.6862915,40.3137085 C17.2452101,41.8726271 19.7823965,41.8744578 21.3461564,40.3106978 L27,34.6568542 L32.6538436,40.3106978 C34.2176035,41.8744578 36.7547899,41.8726271 38.3137085,40.3137085 C39.8758057,38.7516113 39.8771021,36.2202479 38.3106978,34.6538436 L32.6568542,29 Z M27,53 C41.3594035,53 53,41.3594035 53,27 C53,12.6405965 41.3594035,1 27,1 C12.6405965,1 1,12.6405965 1,27 C1,41.3594035 12.6405965,53 27,53 Z\"></path>\n        </g>\n      </g>\n    </svg>\n  </div>\n</div>",
+        // END OPTIONS
+        // (Required by the dropzone documentation parser)
+
+        /*
+         Those functions register themselves to the events on init and handle all
+         the user interface specific stuff. Overwriting them won't break the upload
+         but can break the way it's displayed.
+         You can overwrite them if you don't like the default behavior. If you just
+         want to add an additional event handler, register it on the dropzone object
+         and don't overwrite those options.
+         */
+        // Those are self explanatory and simply concern the DragnDrop.
+        drop: function drop(e) {
+          return this.element.classList.remove("dz-drag-hover");
+        },
+        dragstart: function dragstart(e) {},
+        dragend: function dragend(e) {
+          return this.element.classList.remove("dz-drag-hover");
+        },
+        dragenter: function dragenter(e) {
+          return this.element.classList.add("dz-drag-hover");
+        },
+        dragover: function dragover(e) {
+          return this.element.classList.add("dz-drag-hover");
+        },
+        dragleave: function dragleave(e) {
+          return this.element.classList.remove("dz-drag-hover");
+        },
+        paste: function paste(e) {},
+        // Called whenever there are no files left in the dropzone anymore, and the
+        // dropzone should be displayed as if in the initial state.
+        reset: function reset() {
+          return this.element.classList.remove("dz-started");
+        },
+        // Called when a file is added to the queue
+        // Receives `file`
+        addedfile: function addedfile(file) {
+          var _this2 = this;
+
+          if (this.element === this.previewsContainer) {
+            this.element.classList.add("dz-started");
+          }
+
+          if (this.previewsContainer) {
+            file.previewElement = Dropzone.createElement(this.options.previewTemplate.trim());
+            file.previewTemplate = file.previewElement; // Backwards compatibility
+
+            this.previewsContainer.appendChild(file.previewElement);
+
+            var _iterator3 = _createForOfIteratorHelper(file.previewElement.querySelectorAll("[data-dz-name]")),
+                _step3;
+
+            try {
+              for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
+                var node = _step3.value;
+                node.textContent = file.name;
+              }
+            } catch (err) {
+              _iterator3.e(err);
+            } finally {
+              _iterator3.f();
+            }
+
+            var _iterator4 = _createForOfIteratorHelper(file.previewElement.querySelectorAll("[data-dz-size]")),
+                _step4;
+
+            try {
+              for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
+                node = _step4.value;
+                node.innerHTML = this.filesize(file.size);
+              }
+            } catch (err) {
+              _iterator4.e(err);
+            } finally {
+              _iterator4.f();
+            }
+
+            if (this.options.addRemoveLinks) {
+              file._removeLink = Dropzone.createElement("<a class=\"dz-remove\" href=\"javascript:undefined;\" data-dz-remove>".concat(this.options.dictRemoveFile, "</a>"));
+              file.previewElement.appendChild(file._removeLink);
+            }
+
+            var removeFileEvent = function removeFileEvent(e) {
+              e.preventDefault();
+              e.stopPropagation();
+
+              if (file.status === Dropzone.UPLOADING) {
+                return Dropzone.confirm(_this2.options.dictCancelUploadConfirmation, function () {
+                  return _this2.removeFile(file);
+                });
+              } else {
+                if (_this2.options.dictRemoveFileConfirmation) {
+                  return Dropzone.confirm(_this2.options.dictRemoveFileConfirmation, function () {
+                    return _this2.removeFile(file);
+                  });
+                } else {
+                  return _this2.removeFile(file);
+                }
+              }
+            };
+
+            var _iterator5 = _createForOfIteratorHelper(file.previewElement.querySelectorAll("[data-dz-remove]")),
+                _step5;
+
+            try {
+              for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
+                var removeLink = _step5.value;
+                removeLink.addEventListener("click", removeFileEvent);
+              }
+            } catch (err) {
+              _iterator5.e(err);
+            } finally {
+              _iterator5.f();
+            }
+          }
+        },
+        // Called whenever a file is removed.
+        removedfile: function removedfile(file) {
+          if (file.previewElement != null && file.previewElement.parentNode != null) {
+            file.previewElement.parentNode.removeChild(file.previewElement);
+          }
+
+          return this._updateMaxFilesReachedClass();
+        },
+        // Called when a thumbnail has been generated
+        // Receives `file` and `dataUrl`
+        thumbnail: function thumbnail(file, dataUrl) {
+          if (file.previewElement) {
+            file.previewElement.classList.remove("dz-file-preview");
+
+            var _iterator6 = _createForOfIteratorHelper(file.previewElement.querySelectorAll("[data-dz-thumbnail]")),
+                _step6;
+
+            try {
+              for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {
+                var thumbnailElement = _step6.value;
+                thumbnailElement.alt = file.name;
+                thumbnailElement.src = dataUrl;
+              }
+            } catch (err) {
+              _iterator6.e(err);
+            } finally {
+              _iterator6.f();
+            }
+
+            return setTimeout(function () {
+              return file.previewElement.classList.add("dz-image-preview");
+            }, 1);
+          }
+        },
+        // Called whenever an error occurs
+        // Receives `file` and `message`
+        error: function error(file, message) {
+          if (file.previewElement) {
+            file.previewElement.classList.add("dz-error");
+
+            if (typeof message !== "string" && message.error) {
+              message = message.error;
+            }
+
+            var _iterator7 = _createForOfIteratorHelper(file.previewElement.querySelectorAll("[data-dz-errormessage]")),
+                _step7;
+
+            try {
+              for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {
+                var node = _step7.value;
+                node.textContent = message;
+              }
+            } catch (err) {
+              _iterator7.e(err);
+            } finally {
+              _iterator7.f();
+            }
+          }
+        },
+        errormultiple: function errormultiple() {},
+        // Called when a file gets processed. Since there is a cue, not all added
+        // files are processed immediately.
+        // Receives `file`
+        processing: function processing(file) {
+          if (file.previewElement) {
+            file.previewElement.classList.add("dz-processing");
+
+            if (file._removeLink) {
+              return file._removeLink.innerHTML = this.options.dictCancelUpload;
+            }
+          }
+        },
+        processingmultiple: function processingmultiple() {},
+        // Called whenever the upload progress gets updated.
+        // Receives `file`, `progress` (percentage 0-100) and `bytesSent`.
+        // To get the total number of bytes of the file, use `file.size`
+        uploadprogress: function uploadprogress(file, progress, bytesSent) {
+          if (file.previewElement) {
+            var _iterator8 = _createForOfIteratorHelper(file.previewElement.querySelectorAll("[data-dz-uploadprogress]")),
+                _step8;
+
+            try {
+              for (_iterator8.s(); !(_step8 = _iterator8.n()).done;) {
+                var node = _step8.value;
+                node.nodeName === 'PROGRESS' ? node.value = progress : node.style.width = "".concat(progress, "%");
+              }
+            } catch (err) {
+              _iterator8.e(err);
+            } finally {
+              _iterator8.f();
+            }
+          }
+        },
+        // Called whenever the total upload progress gets updated.
+        // Called with totalUploadProgress (0-100), totalBytes and totalBytesSent
+        totaluploadprogress: function totaluploadprogress() {},
+        // Called just before the file is sent. Gets the `xhr` object as second
+        // parameter, so you can modify it (for example to add a CSRF token) and a
+        // `formData` object to add additional information.
+        sending: function sending() {},
+        sendingmultiple: function sendingmultiple() {},
+        // When the complete upload is finished and successful
+        // Receives `file`
+        success: function success(file) {
+          if (file.previewElement) {
+            return file.previewElement.classList.add("dz-success");
+          }
+        },
+        successmultiple: function successmultiple() {},
+        // When the upload is canceled.
+        canceled: function canceled(file) {
+          return this.emit("error", file, this.options.dictUploadCanceled);
+        },
+        canceledmultiple: function canceledmultiple() {},
+        // When the upload is finished, either with success or an error.
+        // Receives `file`
+        complete: function complete(file) {
+          if (file._removeLink) {
+            file._removeLink.innerHTML = this.options.dictRemoveFile;
+          }
+
+          if (file.previewElement) {
+            return file.previewElement.classList.add("dz-complete");
+          }
+        },
+        completemultiple: function completemultiple() {},
+        maxfilesexceeded: function maxfilesexceeded() {},
+        maxfilesreached: function maxfilesreached() {},
+        queuecomplete: function queuecomplete() {},
+        addedfiles: function addedfiles() {}
+      };
+      this.prototype._thumbnailQueue = [];
+      this.prototype._processingThumbnail = false;
+    } // global utility
+
+  }, {
+    key: "extend",
+    value: function extend(target) {
+      for (var _len2 = arguments.length, objects = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
+        objects[_key2 - 1] = arguments[_key2];
+      }
+
+      for (var _i = 0, _objects = objects; _i < _objects.length; _i++) {
+        var object = _objects[_i];
+
+        for (var key in object) {
+          var val = object[key];
+          target[key] = val;
+        }
+      }
+
+      return target;
+    }
+  }]);
+
+  function Dropzone(el, options) {
+    var _this;
+
+    _classCallCheck(this, Dropzone);
+
+    _this = _super.call(this);
+    var fallback, left;
+    _this.element = el; // For backwards compatibility since the version was in the prototype previously
+
+    _this.version = Dropzone.version;
+    _this.defaultOptions.previewTemplate = _this.defaultOptions.previewTemplate.replace(/\n*/g, "");
+    _this.clickableElements = [];
+    _this.listeners = [];
+    _this.files = []; // All files
+
+    if (typeof _this.element === "string") {
+      _this.element = document.querySelector(_this.element);
+    } // Not checking if instance of HTMLElement or Element since IE9 is extremely weird.
+
+
+    if (!_this.element || _this.element.nodeType == null) {
+      throw new Error("Invalid dropzone element.");
+    }
+
+    if (_this.element.dropzone) {
+      throw new Error("Dropzone already attached.");
+    } // Now add this dropzone to the instances.
+
+
+    Dropzone.instances.push(_assertThisInitialized(_this)); // Put the dropzone inside the element itself.
+
+    _this.element.dropzone = _assertThisInitialized(_this);
+    var elementOptions = (left = Dropzone.optionsForElement(_this.element)) != null ? left : {};
+    _this.options = Dropzone.extend({}, _this.defaultOptions, elementOptions, options != null ? options : {}); // If the browser failed, just call the fallback and leave
+
+    if (_this.options.forceFallback || !Dropzone.isBrowserSupported()) {
+      return _possibleConstructorReturn(_this, _this.options.fallback.call(_assertThisInitialized(_this)));
+    } // @options.url = @element.getAttribute "action" unless @options.url?
+
+
+    if (_this.options.url == null) {
+      _this.options.url = _this.element.getAttribute("action");
+    }
+
+    if (!_this.options.url) {
+      throw new Error("No URL provided.");
+    }
+
+    if (_this.options.acceptedFiles && _this.options.acceptedMimeTypes) {
+      throw new Error("You can't provide both 'acceptedFiles' and 'acceptedMimeTypes'. 'acceptedMimeTypes' is deprecated.");
+    }
+
+    if (_this.options.uploadMultiple && _this.options.chunking) {
+      throw new Error('You cannot set both: uploadMultiple and chunking.');
+    } // Backwards compatibility
+
+
+    if (_this.options.acceptedMimeTypes) {
+      _this.options.acceptedFiles = _this.options.acceptedMimeTypes;
+      delete _this.options.acceptedMimeTypes;
+    } // Backwards compatibility
+
+
+    if (_this.options.renameFilename != null) {
+      _this.options.renameFile = function (file) {
+        return _this.options.renameFilename.call(_assertThisInitialized(_this), file.name, file);
+      };
+    }
+
+    if (typeof _this.options.method === 'string') {
+      _this.options.method = _this.options.method.toUpperCase();
+    }
+
+    if ((fallback = _this.getExistingFallback()) && fallback.parentNode) {
+      // Remove the fallback
+      fallback.parentNode.removeChild(fallback);
+    } // Display previews in the previewsContainer element or the Dropzone element unless explicitly set to false
+
+
+    if (_this.options.previewsContainer !== false) {
+      if (_this.options.previewsContainer) {
+        _this.previewsContainer = Dropzone.getElement(_this.options.previewsContainer, "previewsContainer");
+      } else {
+        _this.previewsContainer = _this.element;
+      }
+    }
+
+    if (_this.options.clickable) {
+      if (_this.options.clickable === true) {
+        _this.clickableElements = [_this.element];
+      } else {
+        _this.clickableElements = Dropzone.getElements(_this.options.clickable, "clickable");
+      }
+    }
+
+    _this.init();
+
+    return _this;
+  } // Returns all files that have been accepted
+
+
+  _createClass(Dropzone, [{
+    key: "getAcceptedFiles",
+    value: function getAcceptedFiles() {
+      return this.files.filter(function (file) {
+        return file.accepted;
+      }).map(function (file) {
+        return file;
+      });
+    } // Returns all files that have been rejected
+    // Not sure when that's going to be useful, but added for completeness.
+
+  }, {
+    key: "getRejectedFiles",
+    value: function getRejectedFiles() {
+      return this.files.filter(function (file) {
+        return !file.accepted;
+      }).map(function (file) {
+        return file;
+      });
+    }
+  }, {
+    key: "getFilesWithStatus",
+    value: function getFilesWithStatus(status) {
+      return this.files.filter(function (file) {
+        return file.status === status;
+      }).map(function (file) {
+        return file;
+      });
+    } // Returns all files that are in the queue
+
+  }, {
+    key: "getQueuedFiles",
+    value: function getQueuedFiles() {
+      return this.getFilesWithStatus(Dropzone.QUEUED);
+    }
+  }, {
+    key: "getUploadingFiles",
+    value: function getUploadingFiles() {
+      return this.getFilesWithStatus(Dropzone.UPLOADING);
+    }
+  }, {
+    key: "getAddedFiles",
+    value: function getAddedFiles() {
+      return this.getFilesWithStatus(Dropzone.ADDED);
+    } // Files that are either queued or uploading
+
+  }, {
+    key: "getActiveFiles",
+    value: function getActiveFiles() {
+      return this.files.filter(function (file) {
+        return file.status === Dropzone.UPLOADING || file.status === Dropzone.QUEUED;
+      }).map(function (file) {
+        return file;
+      });
+    } // The function that gets called when Dropzone is initialized. You
+    // can (and should) setup event listeners inside this function.
+
+  }, {
+    key: "init",
+    value: function init() {
+      var _this3 = this;
+
+      // In case it isn't set already
+      if (this.element.tagName === "form") {
+        this.element.setAttribute("enctype", "multipart/form-data");
+      }
+
+      if (this.element.classList.contains("dropzone") && !this.element.querySelector(".dz-message")) {
+        this.element.appendChild(Dropzone.createElement("<div class=\"dz-default dz-message\"><button class=\"dz-button\" type=\"button\">".concat(this.options.dictDefaultMessage, "</button></div>")));
+      }
+
+      if (this.clickableElements.length) {
+        var setupHiddenFileInput = function setupHiddenFileInput() {
+          if (_this3.hiddenFileInput) {
+            _this3.hiddenFileInput.parentNode.removeChild(_this3.hiddenFileInput);
+          }
+
+          _this3.hiddenFileInput = document.createElement("input");
+
+          _this3.hiddenFileInput.setAttribute("type", "file");
+
+          if (_this3.options.maxFiles === null || _this3.options.maxFiles > 1) {
+            _this3.hiddenFileInput.setAttribute("multiple", "multiple");
+          }
+
+          _this3.hiddenFileInput.className = "dz-hidden-input";
+
+          if (_this3.options.acceptedFiles !== null) {
+            _this3.hiddenFileInput.setAttribute("accept", _this3.options.acceptedFiles);
+          }
+
+          if (_this3.options.capture !== null) {
+            _this3.hiddenFileInput.setAttribute("capture", _this3.options.capture);
+          } // Not setting `display="none"` because some browsers don't accept clicks
+          // on elements that aren't displayed.
+
+
+          _this3.hiddenFileInput.style.visibility = "hidden";
+          _this3.hiddenFileInput.style.position = "absolute";
+          _this3.hiddenFileInput.style.top = "0";
+          _this3.hiddenFileInput.style.left = "0";
+          _this3.hiddenFileInput.style.height = "0";
+          _this3.hiddenFileInput.style.width = "0";
+          Dropzone.getElement(_this3.options.hiddenInputContainer, 'hiddenInputContainer').appendChild(_this3.hiddenFileInput);
+          return _this3.hiddenFileInput.addEventListener("change", function () {
+            var files = _this3.hiddenFileInput.files;
+
+            if (files.length) {
+              var _iterator9 = _createForOfIteratorHelper(files),
+                  _step9;
+
+              try {
+                for (_iterator9.s(); !(_step9 = _iterator9.n()).done;) {
+                  var file = _step9.value;
+
+                  _this3.addFile(file);
+                }
+              } catch (err) {
+                _iterator9.e(err);
+              } finally {
+                _iterator9.f();
+              }
+            }
+
+            _this3.emit("addedfiles", files);
+
+            return setupHiddenFileInput();
+          });
+        };
+
+        setupHiddenFileInput();
+      }
+
+      this.URL = window.URL !== null ? window.URL : window.webkitURL; // Setup all event listeners on the Dropzone object itself.
+      // They're not in @setupEventListeners() because they shouldn't be removed
+      // again when the dropzone gets disabled.
+
+      var _iterator10 = _createForOfIteratorHelper(this.events),
+          _step10;
+
+      try {
+        for (_iterator10.s(); !(_step10 = _iterator10.n()).done;) {
+          var eventName = _step10.value;
+          this.on(eventName, this.options[eventName]);
+        }
+      } catch (err) {
+        _iterator10.e(err);
+      } finally {
+        _iterator10.f();
+      }
+
+      this.on("uploadprogress", function () {
+        return _this3.updateTotalUploadProgress();
+      });
+      this.on("removedfile", function () {
+        return _this3.updateTotalUploadProgress();
+      });
+      this.on("canceled", function (file) {
+        return _this3.emit("complete", file);
+      }); // Emit a `queuecomplete` event if all files finished uploading.
+
+      this.on("complete", function (file) {
+        if (_this3.getAddedFiles().length === 0 && _this3.getUploadingFiles().length === 0 && _this3.getQueuedFiles().length === 0) {
+          // This needs to be deferred so that `queuecomplete` really triggers after `complete`
+          return setTimeout(function () {
+            return _this3.emit("queuecomplete");
+          }, 0);
+        }
+      });
+
+      var containsFiles = function containsFiles(e) {
+        if (e.dataTransfer.types) {
+          // Because e.dataTransfer.types is an Object in
+          // IE, we need to iterate like this instead of
+          // using e.dataTransfer.types.some()
+          for (var i = 0; i < e.dataTransfer.types.length; i++) {
+            if (e.dataTransfer.types[i] === "Files") return true;
+          }
+        }
+
+        return false;
+      };
+
+      var noPropagation = function noPropagation(e) {
+        // If there are no files, we don't want to stop
+        // propagation so we don't interfere with other
+        // drag and drop behaviour.
+        if (!containsFiles(e)) return;
+        e.stopPropagation();
+
+        if (e.preventDefault) {
+          return e.preventDefault();
+        } else {
+          return e.returnValue = false;
+        }
+      }; // Create the listeners
+
+
+      this.listeners = [{
+        element: this.element,
+        events: {
+          "dragstart": function dragstart(e) {
+            return _this3.emit("dragstart", e);
+          },
+          "dragenter": function dragenter(e) {
+            noPropagation(e);
+            return _this3.emit("dragenter", e);
+          },
+          "dragover": function dragover(e) {
+            // Makes it possible to drag files from chrome's download bar
+            // http://stackoverflow.com/questions/19526430/drag-and-drop-file-uploads-from-chrome-downloads-bar
+            // Try is required to prevent bug in Internet Explorer 11 (SCRIPT65535 exception)
+            var efct;
+
+            try {
+              efct = e.dataTransfer.effectAllowed;
+            } catch (error) {}
+
+            e.dataTransfer.dropEffect = 'move' === efct || 'linkMove' === efct ? 'move' : 'copy';
+            noPropagation(e);
+            return _this3.emit("dragover", e);
+          },
+          "dragleave": function dragleave(e) {
+            return _this3.emit("dragleave", e);
+          },
+          "drop": function drop(e) {
+            noPropagation(e);
+            return _this3.drop(e);
+          },
+          "dragend": function dragend(e) {
+            return _this3.emit("dragend", e);
+          }
+        } // This is disabled right now, because the browsers don't implement it properly.
+        // "paste": (e) =>
+        //   noPropagation e
+        //   @paste e
+
+      }];
+      this.clickableElements.forEach(function (clickableElement) {
+        return _this3.listeners.push({
+          element: clickableElement,
+          events: {
+            "click": function click(evt) {
+              // Only the actual dropzone or the message element should trigger file selection
+              if (clickableElement !== _this3.element || evt.target === _this3.element || Dropzone.elementInside(evt.target, _this3.element.querySelector(".dz-message"))) {
+                _this3.hiddenFileInput.click(); // Forward the click
+
+              }
+
+              return true;
+            }
+          }
+        });
+      });
+      this.enable();
+      return this.options.init.call(this);
+    } // Not fully tested yet
+
+  }, {
+    key: "destroy",
+    value: function destroy() {
+      this.disable();
+      this.removeAllFiles(true);
+
+      if (this.hiddenFileInput != null ? this.hiddenFileInput.parentNode : undefined) {
+        this.hiddenFileInput.parentNode.removeChild(this.hiddenFileInput);
+        this.hiddenFileInput = null;
+      }
+
+      delete this.element.dropzone;
+      return Dropzone.instances.splice(Dropzone.instances.indexOf(this), 1);
+    }
+  }, {
+    key: "updateTotalUploadProgress",
+    value: function updateTotalUploadProgress() {
+      var totalUploadProgress;
+      var totalBytesSent = 0;
+      var totalBytes = 0;
+      var activeFiles = this.getActiveFiles();
+
+      if (activeFiles.length) {
+        var _iterator11 = _createForOfIteratorHelper(this.getActiveFiles()),
+            _step11;
+
+        try {
+          for (_iterator11.s(); !(_step11 = _iterator11.n()).done;) {
+            var file = _step11.value;
+            totalBytesSent += file.upload.bytesSent;
+            totalBytes += file.upload.total;
+          }
+        } catch (err) {
+          _iterator11.e(err);
+        } finally {
+          _iterator11.f();
+        }
+
+        totalUploadProgress = 100 * totalBytesSent / totalBytes;
+      } else {
+        totalUploadProgress = 100;
+      }
+
+      return this.emit("totaluploadprogress", totalUploadProgress, totalBytes, totalBytesSent);
+    } // @options.paramName can be a function taking one parameter rather than a string.
+    // A parameter name for a file is obtained simply by calling this with an index number.
+
+  }, {
+    key: "_getParamName",
+    value: function _getParamName(n) {
+      if (typeof this.options.paramName === "function") {
+        return this.options.paramName(n);
+      } else {
+        return "".concat(this.options.paramName).concat(this.options.uploadMultiple ? "[".concat(n, "]") : "");
+      }
+    } // If @options.renameFile is a function,
+    // the function will be used to rename the file.name before appending it to the formData
+
+  }, {
+    key: "_renameFile",
+    value: function _renameFile(file) {
+      if (typeof this.options.renameFile !== "function") {
+        return file.name;
+      }
+
+      return this.options.renameFile(file);
+    } // Returns a form that can be used as fallback if the browser does not support DragnDrop
+    //
+    // If the dropzone is already a form, only the input field and button are returned. Otherwise a complete form element is provided.
+    // This code has to pass in IE7 :(
+
+  }, {
+    key: "getFallbackForm",
+    value: function getFallbackForm() {
+      var existingFallback, form;
+
+      if (existingFallback = this.getExistingFallback()) {
+        return existingFallback;
+      }
+
+      var fieldsString = "<div class=\"dz-fallback\">";
+
+      if (this.options.dictFallbackText) {
+        fieldsString += "<p>".concat(this.options.dictFallbackText, "</p>");
+      }
+
+      fieldsString += "<input type=\"file\" name=\"".concat(this._getParamName(0), "\" ").concat(this.options.uploadMultiple ? 'multiple="multiple"' : undefined, " /><input type=\"submit\" value=\"Upload!\"></div>");
+      var fields = Dropzone.createElement(fieldsString);
+
+      if (this.element.tagName !== "FORM") {
+        form = Dropzone.createElement("<form action=\"".concat(this.options.url, "\" enctype=\"multipart/form-data\" method=\"").concat(this.options.method, "\"></form>"));
+        form.appendChild(fields);
+      } else {
+        // Make sure that the enctype and method attributes are set properly
+        this.element.setAttribute("enctype", "multipart/form-data");
+        this.element.setAttribute("method", this.options.method);
+      }
+
+      return form != null ? form : fields;
+    } // Returns the fallback elements if they exist already
+    //
+    // This code has to pass in IE7 :(
+
+  }, {
+    key: "getExistingFallback",
+    value: function getExistingFallback() {
+      var getFallback = function getFallback(elements) {
+        var _iterator12 = _createForOfIteratorHelper(elements),
+            _step12;
+
+        try {
+          for (_iterator12.s(); !(_step12 = _iterator12.n()).done;) {
+            var el = _step12.value;
+
+            if (/(^| )fallback($| )/.test(el.className)) {
+              return el;
+            }
+          }
+        } catch (err) {
+          _iterator12.e(err);
+        } finally {
+          _iterator12.f();
+        }
+      };
+
+      for (var _i2 = 0, _arr = ["div", "form"]; _i2 < _arr.length; _i2++) {
+        var tagName = _arr[_i2];
+        var fallback;
+
+        if (fallback = getFallback(this.element.getElementsByTagName(tagName))) {
+          return fallback;
+        }
+      }
+    } // Activates all listeners stored in @listeners
+
+  }, {
+    key: "setupEventListeners",
+    value: function setupEventListeners() {
+      return this.listeners.map(function (elementListeners) {
+        return function () {
+          var result = [];
+
+          for (var event in elementListeners.events) {
+            var listener = elementListeners.events[event];
+            result.push(elementListeners.element.addEventListener(event, listener, false));
+          }
+
+          return result;
+        }();
+      });
+    } // Deactivates all listeners stored in @listeners
+
+  }, {
+    key: "removeEventListeners",
+    value: function removeEventListeners() {
+      return this.listeners.map(function (elementListeners) {
+        return function () {
+          var result = [];
+
+          for (var event in elementListeners.events) {
+            var listener = elementListeners.events[event];
+            result.push(elementListeners.element.removeEventListener(event, listener, false));
+          }
+
+          return result;
+        }();
+      });
+    } // Removes all event listeners and cancels all files in the queue or being processed.
+
+  }, {
+    key: "disable",
+    value: function disable() {
+      var _this4 = this;
+
+      this.clickableElements.forEach(function (element) {
+        return element.classList.remove("dz-clickable");
+      });
+      this.removeEventListeners();
+      this.disabled = true;
+      return this.files.map(function (file) {
+        return _this4.cancelUpload(file);
+      });
+    }
+  }, {
+    key: "enable",
+    value: function enable() {
+      delete this.disabled;
+      this.clickableElements.forEach(function (element) {
+        return element.classList.add("dz-clickable");
+      });
+      return this.setupEventListeners();
+    } // Returns a nicely formatted filesize
+
+  }, {
+    key: "filesize",
+    value: function filesize(size) {
+      var selectedSize = 0;
+      var selectedUnit = "b";
+
+      if (size > 0) {
+        var units = ['tb', 'gb', 'mb', 'kb', 'b'];
+
+        for (var i = 0; i < units.length; i++) {
+          var unit = units[i];
+          var cutoff = Math.pow(this.options.filesizeBase, 4 - i) / 10;
+
+          if (size >= cutoff) {
+            selectedSize = size / Math.pow(this.options.filesizeBase, 4 - i);
+            selectedUnit = unit;
+            break;
+          }
+        }
+
+        selectedSize = Math.round(10 * selectedSize) / 10; // Cutting of digits
+      }
+
+      return "<strong>".concat(selectedSize, "</strong> ").concat(this.options.dictFileSizeUnits[selectedUnit]);
+    } // Adds or removes the `dz-max-files-reached` class from the form.
+
+  }, {
+    key: "_updateMaxFilesReachedClass",
+    value: function _updateMaxFilesReachedClass() {
+      if (this.options.maxFiles != null && this.getAcceptedFiles().length >= this.options.maxFiles) {
+        if (this.getAcceptedFiles().length === this.options.maxFiles) {
+          this.emit('maxfilesreached', this.files);
+        }
+
+        return this.element.classList.add("dz-max-files-reached");
+      } else {
+        return this.element.classList.remove("dz-max-files-reached");
+      }
+    }
+  }, {
+    key: "drop",
+    value: function drop(e) {
+      if (!e.dataTransfer) {
+        return;
+      }
+
+      this.emit("drop", e); // Convert the FileList to an Array
+      // This is necessary for IE11
+
+      var files = [];
+
+      for (var i = 0; i < e.dataTransfer.files.length; i++) {
+        files[i] = e.dataTransfer.files[i];
+      } // Even if it's a folder, files.length will contain the folders.
+
+
+      if (files.length) {
+        var items = e.dataTransfer.items;
+
+        if (items && items.length && items[0].webkitGetAsEntry != null) {
+          // The browser supports dropping of folders, so handle items instead of files
+          this._addFilesFromItems(items);
+        } else {
+          this.handleFiles(files);
+        }
+      }
+
+      this.emit("addedfiles", files);
+    }
+  }, {
+    key: "paste",
+    value: function paste(e) {
+      if (__guard__(e != null ? e.clipboardData : undefined, function (x) {
+        return x.items;
+      }) == null) {
+        return;
+      }
+
+      this.emit("paste", e);
+      var items = e.clipboardData.items;
+
+      if (items.length) {
+        return this._addFilesFromItems(items);
+      }
+    }
+  }, {
+    key: "handleFiles",
+    value: function handleFiles(files) {
+      var _iterator13 = _createForOfIteratorHelper(files),
+          _step13;
+
+      try {
+        for (_iterator13.s(); !(_step13 = _iterator13.n()).done;) {
+          var file = _step13.value;
+          this.addFile(file);
+        }
+      } catch (err) {
+        _iterator13.e(err);
+      } finally {
+        _iterator13.f();
+      }
+    } // When a folder is dropped (or files are pasted), items must be handled
+    // instead of files.
+
+  }, {
+    key: "_addFilesFromItems",
+    value: function _addFilesFromItems(items) {
+      var _this5 = this;
+
+      return function () {
+        var result = [];
+
+        var _iterator14 = _createForOfIteratorHelper(items),
+            _step14;
+
+        try {
+          for (_iterator14.s(); !(_step14 = _iterator14.n()).done;) {
+            var item = _step14.value;
+            var entry;
+
+            if (item.webkitGetAsEntry != null && (entry = item.webkitGetAsEntry())) {
+              if (entry.isFile) {
+                result.push(_this5.addFile(item.getAsFile()));
+              } else if (entry.isDirectory) {
+                // Append all files from that directory to files
+                result.push(_this5._addFilesFromDirectory(entry, entry.name));
+              } else {
+                result.push(undefined);
+              }
+            } else if (item.getAsFile != null) {
+              if (item.kind == null || item.kind === "file") {
+                result.push(_this5.addFile(item.getAsFile()));
+              } else {
+                result.push(undefined);
+              }
+            } else {
+              result.push(undefined);
+            }
+          }
+        } catch (err) {
+          _iterator14.e(err);
+        } finally {
+          _iterator14.f();
+        }
+
+        return result;
+      }();
+    } // Goes through the directory, and adds each file it finds recursively
+
+  }, {
+    key: "_addFilesFromDirectory",
+    value: function _addFilesFromDirectory(directory, path) {
+      var _this6 = this;
+
+      var dirReader = directory.createReader();
+
+      var errorHandler = function errorHandler(error) {
+        return __guardMethod__(console, 'log', function (o) {
+          return o.log(error);
+        });
+      };
+
+      var readEntries = function readEntries() {
+        return dirReader.readEntries(function (entries) {
+          if (entries.length > 0) {
+            var _iterator15 = _createForOfIteratorHelper(entries),
+                _step15;
+
+            try {
+              for (_iterator15.s(); !(_step15 = _iterator15.n()).done;) {
+                var entry = _step15.value;
+
+                if (entry.isFile) {
+                  entry.file(function (file) {
+                    if (_this6.options.ignoreHiddenFiles && file.name.substring(0, 1) === '.') {
+                      return;
+                    }
+
+                    file.fullPath = "".concat(path, "/").concat(file.name);
+                    return _this6.addFile(file);
+                  });
+                } else if (entry.isDirectory) {
+                  _this6._addFilesFromDirectory(entry, "".concat(path, "/").concat(entry.name));
+                }
+              } // Recursively call readEntries() again, since browser only handle
+              // the first 100 entries.
+              // See: https://developer.mozilla.org/en-US/docs/Web/API/DirectoryReader#readEntries
+
+            } catch (err) {
+              _iterator15.e(err);
+            } finally {
+              _iterator15.f();
+            }
+
+            readEntries();
+          }
+
+          return null;
+        }, errorHandler);
+      };
+
+      return readEntries();
+    } // If `done()` is called without argument the file is accepted
+    // If you call it with an error message, the file is rejected
+    // (This allows for asynchronous validation)
+    //
+    // This function checks the filesize, and if the file.type passes the
+    // `acceptedFiles` check.
+
+  }, {
+    key: "accept",
+    value: function accept(file, done) {
+      if (this.options.maxFilesize && file.size > this.options.maxFilesize * 1024 * 1024) {
+        done(this.options.dictFileTooBig.replace("{{filesize}}", Math.round(file.size / 1024 / 10.24) / 100).replace("{{maxFilesize}}", this.options.maxFilesize));
+      } else if (!Dropzone.isValidFile(file, this.options.acceptedFiles)) {
+        done(this.options.dictInvalidFileType);
+      } else if (this.options.maxFiles != null && this.getAcceptedFiles().length >= this.options.maxFiles) {
+        done(this.options.dictMaxFilesExceeded.replace("{{maxFiles}}", this.options.maxFiles));
+        this.emit("maxfilesexceeded", file);
+      } else {
+        this.options.accept.call(this, file, done);
+      }
+    }
+  }, {
+    key: "addFile",
+    value: function addFile(file) {
+      var _this7 = this;
+
+      file.upload = {
+        uuid: Dropzone.uuidv4(),
+        progress: 0,
+        // Setting the total upload size to file.size for the beginning
+        // It's actual different than the size to be transmitted.
+        total: file.size,
+        bytesSent: 0,
+        filename: this._renameFile(file) // Not setting chunking information here, because the acutal data — and
+        // thus the chunks — might change if `options.transformFile` is set
+        // and does something to the data.
+
+      };
+      this.files.push(file);
+      file.status = Dropzone.ADDED;
+      this.emit("addedfile", file);
+
+      this._enqueueThumbnail(file);
+
+      this.accept(file, function (error) {
+        if (error) {
+          file.accepted = false;
+
+          _this7._errorProcessing([file], error); // Will set the file.status
+
+        } else {
+          file.accepted = true;
+
+          if (_this7.options.autoQueue) {
+            _this7.enqueueFile(file);
+          } // Will set .accepted = true
+
+        }
+
+        _this7._updateMaxFilesReachedClass();
+      });
+    } // Wrapper for enqueueFile
+
+  }, {
+    key: "enqueueFiles",
+    value: function enqueueFiles(files) {
+      var _iterator16 = _createForOfIteratorHelper(files),
+          _step16;
+
+      try {
+        for (_iterator16.s(); !(_step16 = _iterator16.n()).done;) {
+          var file = _step16.value;
+          this.enqueueFile(file);
+        }
+      } catch (err) {
+        _iterator16.e(err);
+      } finally {
+        _iterator16.f();
+      }
+
+      return null;
+    }
+  }, {
+    key: "enqueueFile",
+    value: function enqueueFile(file) {
+      var _this8 = this;
+
+      if (file.status === Dropzone.ADDED && file.accepted === true) {
+        file.status = Dropzone.QUEUED;
+
+        if (this.options.autoProcessQueue) {
+          return setTimeout(function () {
+            return _this8.processQueue();
+          }, 0); // Deferring the call
+        }
+      } else {
+        throw new Error("This file can't be queued because it has already been processed or was rejected.");
+      }
+    }
+  }, {
+    key: "_enqueueThumbnail",
+    value: function _enqueueThumbnail(file) {
+      var _this9 = this;
+
+      if (this.options.createImageThumbnails && file.type.match(/image.*/) && file.size <= this.options.maxThumbnailFilesize * 1024 * 1024) {
+        this._thumbnailQueue.push(file);
+
+        return setTimeout(function () {
+          return _this9._processThumbnailQueue();
+        }, 0); // Deferring the call
+      }
+    }
+  }, {
+    key: "_processThumbnailQueue",
+    value: function _processThumbnailQueue() {
+      var _this10 = this;
+
+      if (this._processingThumbnail || this._thumbnailQueue.length === 0) {
+        return;
+      }
+
+      this._processingThumbnail = true;
+
+      var file = this._thumbnailQueue.shift();
+
+      return this.createThumbnail(file, this.options.thumbnailWidth, this.options.thumbnailHeight, this.options.thumbnailMethod, true, function (dataUrl) {
+        _this10.emit("thumbnail", file, dataUrl);
+
+        _this10._processingThumbnail = false;
+        return _this10._processThumbnailQueue();
+      });
+    } // Can be called by the user to remove a file
+
+  }, {
+    key: "removeFile",
+    value: function removeFile(file) {
+      if (file.status === Dropzone.UPLOADING) {
+        this.cancelUpload(file);
+      }
+
+      this.files = without(this.files, file);
+      this.emit("removedfile", file);
+
+      if (this.files.length === 0) {
+        return this.emit("reset");
+      }
+    } // Removes all files that aren't currently processed from the list
+
+  }, {
+    key: "removeAllFiles",
+    value: function removeAllFiles(cancelIfNecessary) {
+      // Create a copy of files since removeFile() changes the @files array.
+      if (cancelIfNecessary == null) {
+        cancelIfNecessary = false;
+      }
+
+      var _iterator17 = _createForOfIteratorHelper(this.files.slice()),
+          _step17;
+
+      try {
+        for (_iterator17.s(); !(_step17 = _iterator17.n()).done;) {
+          var file = _step17.value;
+
+          if (file.status !== Dropzone.UPLOADING || cancelIfNecessary) {
+            this.removeFile(file);
+          }
+        }
+      } catch (err) {
+        _iterator17.e(err);
+      } finally {
+        _iterator17.f();
+      }
+
+      return null;
+    } // Resizes an image before it gets sent to the server. This function is the default behavior of
+    // `options.transformFile` if `resizeWidth` or `resizeHeight` are set. The callback is invoked with
+    // the resized blob.
+
+  }, {
+    key: "resizeImage",
+    value: function resizeImage(file, width, height, resizeMethod, callback) {
+      var _this11 = this;
+
+      return this.createThumbnail(file, width, height, resizeMethod, true, function (dataUrl, canvas) {
+        if (canvas == null) {
+          // The image has not been resized
+          return callback(file);
+        } else {
+          var resizeMimeType = _this11.options.resizeMimeType;
+
+          if (resizeMimeType == null) {
+            resizeMimeType = file.type;
+          }
+
+          var resizedDataURL = canvas.toDataURL(resizeMimeType, _this11.options.resizeQuality);
+
+          if (resizeMimeType === 'image/jpeg' || resizeMimeType === 'image/jpg') {
+            // Now add the original EXIF information
+            resizedDataURL = ExifRestore.restore(file.dataURL, resizedDataURL);
+          }
+
+          return callback(Dropzone.dataURItoBlob(resizedDataURL));
+        }
+      });
+    }
+  }, {
+    key: "createThumbnail",
+    value: function createThumbnail(file, width, height, resizeMethod, fixOrientation, callback) {
+      var _this12 = this;
+
+      var fileReader = new FileReader();
+
+      fileReader.onload = function () {
+        file.dataURL = fileReader.result; // Don't bother creating a thumbnail for SVG images since they're vector
+
+        if (file.type === "image/svg+xml") {
+          if (callback != null) {
+            callback(fileReader.result);
+          }
+
+          return;
+        }
+
+        _this12.createThumbnailFromUrl(file, width, height, resizeMethod, fixOrientation, callback);
+      };
+
+      fileReader.readAsDataURL(file);
+    } // `mockFile` needs to have these attributes:
+    // 
+    //     { name: 'name', size: 12345, imageUrl: '' }
+    //
+    // `callback` will be invoked when the image has been downloaded and displayed.
+    // `crossOrigin` will be added to the `img` tag when accessing the file.
+
+  }, {
+    key: "displayExistingFile",
+    value: function displayExistingFile(mockFile, imageUrl, callback, crossOrigin) {
+      var _this13 = this;
+
+      var resizeThumbnail = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true;
+      this.emit("addedfile", mockFile);
+      this.emit("complete", mockFile);
+
+      if (!resizeThumbnail) {
+        this.emit("thumbnail", mockFile, imageUrl);
+        if (callback) callback();
+      } else {
+        var onDone = function onDone(thumbnail) {
+          _this13.emit('thumbnail', mockFile, thumbnail);
+
+          if (callback) callback();
+        };
+
+        mockFile.dataURL = imageUrl;
+        this.createThumbnailFromUrl(mockFile, this.options.thumbnailWidth, this.options.thumbnailHeight, this.options.resizeMethod, this.options.fixOrientation, onDone, crossOrigin);
+      }
+    }
+  }, {
+    key: "createThumbnailFromUrl",
+    value: function createThumbnailFromUrl(file, width, height, resizeMethod, fixOrientation, callback, crossOrigin) {
+      var _this14 = this;
+
+      // Not using `new Image` here because of a bug in latest Chrome versions.
+      // See https://github.com/enyo/dropzone/pull/226
+      var img = document.createElement("img");
+
+      if (crossOrigin) {
+        img.crossOrigin = crossOrigin;
+      } // fixOrientation is not needed anymore with browsers handling imageOrientation
+
+
+      fixOrientation = getComputedStyle(document.body)['imageOrientation'] == 'from-image' ? false : fixOrientation;
+
+      img.onload = function () {
+        var loadExif = function loadExif(callback) {
+          return callback(1);
+        };
+
+        if (typeof EXIF !== 'undefined' && EXIF !== null && fixOrientation) {
+          loadExif = function loadExif(callback) {
+            return EXIF.getData(img, function () {
+              return callback(EXIF.getTag(this, 'Orientation'));
+            });
+          };
+        }
+
+        return loadExif(function (orientation) {
+          file.width = img.width;
+          file.height = img.height;
+
+          var resizeInfo = _this14.options.resize.call(_this14, file, width, height, resizeMethod);
+
+          var canvas = document.createElement("canvas");
+          var ctx = canvas.getContext("2d");
+          canvas.width = resizeInfo.trgWidth;
+          canvas.height = resizeInfo.trgHeight;
+
+          if (orientation > 4) {
+            canvas.width = resizeInfo.trgHeight;
+            canvas.height = resizeInfo.trgWidth;
+          }
+
+          switch (orientation) {
+            case 2:
+              // horizontal flip
+              ctx.translate(canvas.width, 0);
+              ctx.scale(-1, 1);
+              break;
+
+            case 3:
+              // 180° rotate left
+              ctx.translate(canvas.width, canvas.height);
+              ctx.rotate(Math.PI);
+              break;
+
+            case 4:
+              // vertical flip
+              ctx.translate(0, canvas.height);
+              ctx.scale(1, -1);
+              break;
+
+            case 5:
+              // vertical flip + 90 rotate right
+              ctx.rotate(0.5 * Math.PI);
+              ctx.scale(1, -1);
+              break;
+
+            case 6:
+              // 90° rotate right
+              ctx.rotate(0.5 * Math.PI);
+              ctx.translate(0, -canvas.width);
+              break;
+
+            case 7:
+              // horizontal flip + 90 rotate right
+              ctx.rotate(0.5 * Math.PI);
+              ctx.translate(canvas.height, -canvas.width);
+              ctx.scale(-1, 1);
+              break;
+
+            case 8:
+              // 90° rotate left
+              ctx.rotate(-0.5 * Math.PI);
+              ctx.translate(-canvas.height, 0);
+              break;
+          } // This is a bugfix for iOS' scaling bug.
+
+
+          drawImageIOSFix(ctx, img, resizeInfo.srcX != null ? resizeInfo.srcX : 0, resizeInfo.srcY != null ? resizeInfo.srcY : 0, resizeInfo.srcWidth, resizeInfo.srcHeight, resizeInfo.trgX != null ? resizeInfo.trgX : 0, resizeInfo.trgY != null ? resizeInfo.trgY : 0, resizeInfo.trgWidth, resizeInfo.trgHeight);
+          var thumbnail = canvas.toDataURL("image/png");
+
+          if (callback != null) {
+            return callback(thumbnail, canvas);
+          }
+        });
+      };
+
+      if (callback != null) {
+        img.onerror = callback;
+      }
+
+      return img.src = file.dataURL;
+    } // Goes through the queue and processes files if there aren't too many already.
+
+  }, {
+    key: "processQueue",
+    value: function processQueue() {
+      var parallelUploads = this.options.parallelUploads;
+      var processingLength = this.getUploadingFiles().length;
+      var i = processingLength; // There are already at least as many files uploading than should be
+
+      if (processingLength >= parallelUploads) {
+        return;
+      }
+
+      var queuedFiles = this.getQueuedFiles();
+
+      if (!(queuedFiles.length > 0)) {
+        return;
+      }
+
+      if (this.options.uploadMultiple) {
+        // The files should be uploaded in one request
+        return this.processFiles(queuedFiles.slice(0, parallelUploads - processingLength));
+      } else {
+        while (i < parallelUploads) {
+          if (!queuedFiles.length) {
+            return;
+          } // Nothing left to process
+
+
+          this.processFile(queuedFiles.shift());
+          i++;
+        }
+      }
+    } // Wrapper for `processFiles`
+
+  }, {
+    key: "processFile",
+    value: function processFile(file) {
+      return this.processFiles([file]);
+    } // Loads the file, then calls finishedLoading()
+
+  }, {
+    key: "processFiles",
+    value: function processFiles(files) {
+      var _iterator18 = _createForOfIteratorHelper(files),
+          _step18;
+
+      try {
+        for (_iterator18.s(); !(_step18 = _iterator18.n()).done;) {
+          var file = _step18.value;
+          file.processing = true; // Backwards compatibility
+
+          file.status = Dropzone.UPLOADING;
+          this.emit("processing", file);
+        }
+      } catch (err) {
+        _iterator18.e(err);
+      } finally {
+        _iterator18.f();
+      }
+
+      if (this.options.uploadMultiple) {
+        this.emit("processingmultiple", files);
+      }
+
+      return this.uploadFiles(files);
+    }
+  }, {
+    key: "_getFilesWithXhr",
+    value: function _getFilesWithXhr(xhr) {
+      var files;
+      return files = this.files.filter(function (file) {
+        return file.xhr === xhr;
+      }).map(function (file) {
+        return file;
+      });
+    } // Cancels the file upload and sets the status to CANCELED
+    // **if** the file is actually being uploaded.
+    // If it's still in the queue, the file is being removed from it and the status
+    // set to CANCELED.
+
+  }, {
+    key: "cancelUpload",
+    value: function cancelUpload(file) {
+      if (file.status === Dropzone.UPLOADING) {
+        var groupedFiles = this._getFilesWithXhr(file.xhr);
+
+        var _iterator19 = _createForOfIteratorHelper(groupedFiles),
+            _step19;
+
+        try {
+          for (_iterator19.s(); !(_step19 = _iterator19.n()).done;) {
+            var groupedFile = _step19.value;
+            groupedFile.status = Dropzone.CANCELED;
+          }
+        } catch (err) {
+          _iterator19.e(err);
+        } finally {
+          _iterator19.f();
+        }
+
+        if (typeof file.xhr !== 'undefined') {
+          file.xhr.abort();
+        }
+
+        var _iterator20 = _createForOfIteratorHelper(groupedFiles),
+            _step20;
+
+        try {
+          for (_iterator20.s(); !(_step20 = _iterator20.n()).done;) {
+            var _groupedFile = _step20.value;
+            this.emit("canceled", _groupedFile);
+          }
+        } catch (err) {
+          _iterator20.e(err);
+        } finally {
+          _iterator20.f();
+        }
+
+        if (this.options.uploadMultiple) {
+          this.emit("canceledmultiple", groupedFiles);
+        }
+      } else if (file.status === Dropzone.ADDED || file.status === Dropzone.QUEUED) {
+        file.status = Dropzone.CANCELED;
+        this.emit("canceled", file);
+
+        if (this.options.uploadMultiple) {
+          this.emit("canceledmultiple", [file]);
+        }
+      }
+
+      if (this.options.autoProcessQueue) {
+        return this.processQueue();
+      }
+    }
+  }, {
+    key: "resolveOption",
+    value: function resolveOption(option) {
+      if (typeof option === 'function') {
+        for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {
+          args[_key3 - 1] = arguments[_key3];
+        }
+
+        return option.apply(this, args);
+      }
+
+      return option;
+    }
+  }, {
+    key: "uploadFile",
+    value: function uploadFile(file) {
+      return this.uploadFiles([file]);
+    }
+  }, {
+    key: "uploadFiles",
+    value: function uploadFiles(files) {
+      var _this15 = this;
+
+      this._transformFiles(files, function (transformedFiles) {
+        if (_this15.options.chunking) {
+          // Chunking is not allowed to be used with `uploadMultiple` so we know
+          // that there is only __one__file.
+          var transformedFile = transformedFiles[0];
+          files[0].upload.chunked = _this15.options.chunking && (_this15.options.forceChunking || transformedFile.size > _this15.options.chunkSize);
+          files[0].upload.totalChunkCount = Math.ceil(transformedFile.size / _this15.options.chunkSize);
+        }
+
+        if (files[0].upload.chunked) {
+          // This file should be sent in chunks!
+          // If the chunking option is set, we **know** that there can only be **one** file, since
+          // uploadMultiple is not allowed with this option.
+          var file = files[0];
+          var _transformedFile = transformedFiles[0];
+          var startedChunkCount = 0;
+          file.upload.chunks = [];
+
+          var handleNextChunk = function handleNextChunk() {
+            var chunkIndex = 0; // Find the next item in file.upload.chunks that is not defined yet.
+
+            while (file.upload.chunks[chunkIndex] !== undefined) {
+              chunkIndex++;
+            } // This means, that all chunks have already been started.
+
+
+            if (chunkIndex >= file.upload.totalChunkCount) return;
+            startedChunkCount++;
+            var start = chunkIndex * _this15.options.chunkSize;
+            var end = Math.min(start + _this15.options.chunkSize, _transformedFile.size);
+            var dataBlock = {
+              name: _this15._getParamName(0),
+              data: _transformedFile.webkitSlice ? _transformedFile.webkitSlice(start, end) : _transformedFile.slice(start, end),
+              filename: file.upload.filename,
+              chunkIndex: chunkIndex
+            };
+            file.upload.chunks[chunkIndex] = {
+              file: file,
+              index: chunkIndex,
+              dataBlock: dataBlock,
+              // In case we want to retry.
+              status: Dropzone.UPLOADING,
+              progress: 0,
+              retries: 0 // The number of times this block has been retried.
+
+            };
+
+            _this15._uploadData(files, [dataBlock]);
+          };
+
+          file.upload.finishedChunkUpload = function (chunk) {
+            var allFinished = true;
+            chunk.status = Dropzone.SUCCESS; // Clear the data from the chunk
+
+            chunk.dataBlock = null; // Leaving this reference to xhr intact here will cause memory leaks in some browsers
+
+            chunk.xhr = null;
+
+            for (var i = 0; i < file.upload.totalChunkCount; i++) {
+              if (file.upload.chunks[i] === undefined) {
+                return handleNextChunk();
+              }
+
+              if (file.upload.chunks[i].status !== Dropzone.SUCCESS) {
+                allFinished = false;
+              }
+            }
+
+            if (allFinished) {
+              _this15.options.chunksUploaded(file, function () {
+                _this15._finished(files, '', null);
+              });
+            }
+          };
+
+          if (_this15.options.parallelChunkUploads) {
+            for (var i = 0; i < file.upload.totalChunkCount; i++) {
+              handleNextChunk();
+            }
+          } else {
+            handleNextChunk();
+          }
+        } else {
+          var dataBlocks = [];
+
+          for (var _i3 = 0; _i3 < files.length; _i3++) {
+            dataBlocks[_i3] = {
+              name: _this15._getParamName(_i3),
+              data: transformedFiles[_i3],
+              filename: files[_i3].upload.filename
+            };
+          }
+
+          _this15._uploadData(files, dataBlocks);
+        }
+      });
+    } /// Returns the right chunk for given file and xhr
+
+  }, {
+    key: "_getChunk",
+    value: function _getChunk(file, xhr) {
+      for (var i = 0; i < file.upload.totalChunkCount; i++) {
+        if (file.upload.chunks[i] !== undefined && file.upload.chunks[i].xhr === xhr) {
+          return file.upload.chunks[i];
+        }
+      }
+    } // This function actually uploads the file(s) to the server.
+    // If dataBlocks contains the actual data to upload (meaning, that this could either be transformed
+    // files, or individual chunks for chunked upload).
+
+  }, {
+    key: "_uploadData",
+    value: function _uploadData(files, dataBlocks) {
+      var _this16 = this;
+
+      var xhr = new XMLHttpRequest(); // Put the xhr object in the file objects to be able to reference it later.
+
+      var _iterator21 = _createForOfIteratorHelper(files),
+          _step21;
+
+      try {
+        for (_iterator21.s(); !(_step21 = _iterator21.n()).done;) {
+          var file = _step21.value;
+          file.xhr = xhr;
+        }
+      } catch (err) {
+        _iterator21.e(err);
+      } finally {
+        _iterator21.f();
+      }
+
+      if (files[0].upload.chunked) {
+        // Put the xhr object in the right chunk object, so it can be associated later, and found with _getChunk
+        files[0].upload.chunks[dataBlocks[0].chunkIndex].xhr = xhr;
+      }
+
+      var method = this.resolveOption(this.options.method, files);
+      var url = this.resolveOption(this.options.url, files);
+      xhr.open(method, url, true); // Setting the timeout after open because of IE11 issue: https://gitlab.com/meno/dropzone/issues/8
+
+      xhr.timeout = this.resolveOption(this.options.timeout, files); // Has to be after `.open()`. See https://github.com/enyo/dropzone/issues/179
+
+      xhr.withCredentials = !!this.options.withCredentials;
+
+      xhr.onload = function (e) {
+        _this16._finishedUploading(files, xhr, e);
+      };
+
+      xhr.ontimeout = function () {
+        _this16._handleUploadError(files, xhr, "Request timedout after ".concat(_this16.options.timeout / 1000, " seconds"));
+      };
+
+      xhr.onerror = function () {
+        _this16._handleUploadError(files, xhr);
+      }; // Some browsers do not have the .upload property
+
+
+      var progressObj = xhr.upload != null ? xhr.upload : xhr;
+
+      progressObj.onprogress = function (e) {
+        return _this16._updateFilesUploadProgress(files, xhr, e);
+      };
+
+      var headers = {
+        "Accept": "application/json",
+        "Cache-Control": "no-cache",
+        "X-Requested-With": "XMLHttpRequest"
+      };
+
+      if (this.options.headers) {
+        Dropzone.extend(headers, this.options.headers);
+      }
+
+      for (var headerName in headers) {
+        var headerValue = headers[headerName];
+
+        if (headerValue) {
+          xhr.setRequestHeader(headerName, headerValue);
+        }
+      }
+
+      var formData = new FormData(); // Adding all @options parameters
+
+      if (this.options.params) {
+        var additionalParams = this.options.params;
+
+        if (typeof additionalParams === 'function') {
+          additionalParams = additionalParams.call(this, files, xhr, files[0].upload.chunked ? this._getChunk(files[0], xhr) : null);
+        }
+
+        for (var key in additionalParams) {
+          var value = additionalParams[key];
+
+          if (Array.isArray(value)) {
+            // The additional parameter contains an array,
+            // so lets iterate over it to attach each value
+            // individually.
+            for (var i = 0; i < value.length; i++) {
+              formData.append(key, value[i]);
+            }
+          } else {
+            formData.append(key, value);
+          }
+        }
+      } // Let the user add additional data if necessary
+
+
+      var _iterator22 = _createForOfIteratorHelper(files),
+          _step22;
+
+      try {
+        for (_iterator22.s(); !(_step22 = _iterator22.n()).done;) {
+          var _file = _step22.value;
+          this.emit("sending", _file, xhr, formData);
+        }
+      } catch (err) {
+        _iterator22.e(err);
+      } finally {
+        _iterator22.f();
+      }
+
+      if (this.options.uploadMultiple) {
+        this.emit("sendingmultiple", files, xhr, formData);
+      }
+
+      this._addFormElementData(formData); // Finally add the files
+      // Has to be last because some servers (eg: S3) expect the file to be the last parameter
+
+
+      for (var _i4 = 0; _i4 < dataBlocks.length; _i4++) {
+        var dataBlock = dataBlocks[_i4];
+        formData.append(dataBlock.name, dataBlock.data, dataBlock.filename);
+      }
+
+      this.submitRequest(xhr, formData, files);
+    } // Transforms all files with this.options.transformFile and invokes done with the transformed files when done.
+
+  }, {
+    key: "_transformFiles",
+    value: function _transformFiles(files, done) {
+      var _this17 = this;
+
+      var transformedFiles = []; // Clumsy way of handling asynchronous calls, until I get to add a proper Future library.
+
+      var doneCounter = 0;
+
+      var _loop = function _loop(i) {
+        _this17.options.transformFile.call(_this17, files[i], function (transformedFile) {
+          transformedFiles[i] = transformedFile;
+
+          if (++doneCounter === files.length) {
+            done(transformedFiles);
+          }
+        });
+      };
+
+      for (var i = 0; i < files.length; i++) {
+        _loop(i);
+      }
+    } // Takes care of adding other input elements of the form to the AJAX request
+
+  }, {
+    key: "_addFormElementData",
+    value: function _addFormElementData(formData) {
+      // Take care of other input elements
+      if (this.element.tagName === "FORM") {
+        var _iterator23 = _createForOfIteratorHelper(this.element.querySelectorAll("input, textarea, select, button")),
+            _step23;
+
+        try {
+          for (_iterator23.s(); !(_step23 = _iterator23.n()).done;) {
+            var input = _step23.value;
+            var inputName = input.getAttribute("name");
+            var inputType = input.getAttribute("type");
+            if (inputType) inputType = inputType.toLowerCase(); // If the input doesn't have a name, we can't use it.
+
+            if (typeof inputName === 'undefined' || inputName === null) continue;
+
+            if (input.tagName === "SELECT" && input.hasAttribute("multiple")) {
+              // Possibly multiple values
+              var _iterator24 = _createForOfIteratorHelper(input.options),
+                  _step24;
+
+              try {
+                for (_iterator24.s(); !(_step24 = _iterator24.n()).done;) {
+                  var option = _step24.value;
+
+                  if (option.selected) {
+                    formData.append(inputName, option.value);
+                  }
+                }
+              } catch (err) {
+                _iterator24.e(err);
+              } finally {
+                _iterator24.f();
+              }
+            } else if (!inputType || inputType !== "checkbox" && inputType !== "radio" || input.checked) {
+              formData.append(inputName, input.value);
+            }
+          }
+        } catch (err) {
+          _iterator23.e(err);
+        } finally {
+          _iterator23.f();
+        }
+      }
+    } // Invoked when there is new progress information about given files.
+    // If e is not provided, it is assumed that the upload is finished.
+
+  }, {
+    key: "_updateFilesUploadProgress",
+    value: function _updateFilesUploadProgress(files, xhr, e) {
+      var progress;
+
+      if (typeof e !== 'undefined') {
+        progress = 100 * e.loaded / e.total;
+
+        if (files[0].upload.chunked) {
+          var file = files[0]; // Since this is a chunked upload, we need to update the appropriate chunk progress.
+
+          var chunk = this._getChunk(file, xhr);
+
+          chunk.progress = progress;
+          chunk.total = e.total;
+          chunk.bytesSent = e.loaded;
+          var fileProgress = 0,
+              fileTotal,
+              fileBytesSent;
+          file.upload.progress = 0;
+          file.upload.total = 0;
+          file.upload.bytesSent = 0;
+
+          for (var i = 0; i < file.upload.totalChunkCount; i++) {
+            if (file.upload.chunks[i] !== undefined && file.upload.chunks[i].progress !== undefined) {
+              file.upload.progress += file.upload.chunks[i].progress;
+              file.upload.total += file.upload.chunks[i].total;
+              file.upload.bytesSent += file.upload.chunks[i].bytesSent;
+            }
+          }
+
+          file.upload.progress = file.upload.progress / file.upload.totalChunkCount;
+        } else {
+          var _iterator25 = _createForOfIteratorHelper(files),
+              _step25;
+
+          try {
+            for (_iterator25.s(); !(_step25 = _iterator25.n()).done;) {
+              var _file2 = _step25.value;
+              _file2.upload.progress = progress;
+              _file2.upload.total = e.total;
+              _file2.upload.bytesSent = e.loaded;
+            }
+          } catch (err) {
+            _iterator25.e(err);
+          } finally {
+            _iterator25.f();
+          }
+        }
+
+        var _iterator26 = _createForOfIteratorHelper(files),
+            _step26;
+
+        try {
+          for (_iterator26.s(); !(_step26 = _iterator26.n()).done;) {
+            var _file3 = _step26.value;
+            this.emit("uploadprogress", _file3, _file3.upload.progress, _file3.upload.bytesSent);
+          }
+        } catch (err) {
+          _iterator26.e(err);
+        } finally {
+          _iterator26.f();
+        }
+      } else {
+        // Called when the file finished uploading
+        var allFilesFinished = true;
+        progress = 100;
+
+        var _iterator27 = _createForOfIteratorHelper(files),
+            _step27;
+
+        try {
+          for (_iterator27.s(); !(_step27 = _iterator27.n()).done;) {
+            var _file4 = _step27.value;
+
+            if (_file4.upload.progress !== 100 || _file4.upload.bytesSent !== _file4.upload.total) {
+              allFilesFinished = false;
+            }
+
+            _file4.upload.progress = progress;
+            _file4.upload.bytesSent = _file4.upload.total;
+          } // Nothing to do, all files already at 100%
+
+        } catch (err) {
+          _iterator27.e(err);
+        } finally {
+          _iterator27.f();
+        }
+
+        if (allFilesFinished) {
+          return;
+        }
+
+        var _iterator28 = _createForOfIteratorHelper(files),
+            _step28;
+
+        try {
+          for (_iterator28.s(); !(_step28 = _iterator28.n()).done;) {
+            var _file5 = _step28.value;
+            this.emit("uploadprogress", _file5, progress, _file5.upload.bytesSent);
+          }
+        } catch (err) {
+          _iterator28.e(err);
+        } finally {
+          _iterator28.f();
+        }
+      }
+    }
+  }, {
+    key: "_finishedUploading",
+    value: function _finishedUploading(files, xhr, e) {
+      var response;
+
+      if (files[0].status === Dropzone.CANCELED) {
+        return;
+      }
+
+      if (xhr.readyState !== 4) {
+        return;
+      }
+
+      if (xhr.responseType !== 'arraybuffer' && xhr.responseType !== 'blob') {
+        response = xhr.responseText;
+
+        if (xhr.getResponseHeader("content-type") && ~xhr.getResponseHeader("content-type").indexOf("application/json")) {
+          try {
+            response = JSON.parse(response);
+          } catch (error) {
+            e = error;
+            response = "Invalid JSON response from server.";
+          }
+        }
+      }
+
+      this._updateFilesUploadProgress(files);
+
+      if (!(200 <= xhr.status && xhr.status < 300)) {
+        this._handleUploadError(files, xhr, response);
+      } else {
+        if (files[0].upload.chunked) {
+          files[0].upload.finishedChunkUpload(this._getChunk(files[0], xhr));
+        } else {
+          this._finished(files, response, e);
+        }
+      }
+    }
+  }, {
+    key: "_handleUploadError",
+    value: function _handleUploadError(files, xhr, response) {
+      if (files[0].status === Dropzone.CANCELED) {
+        return;
+      }
+
+      if (files[0].upload.chunked && this.options.retryChunks) {
+        var chunk = this._getChunk(files[0], xhr);
+
+        if (chunk.retries++ < this.options.retryChunksLimit) {
+          this._uploadData(files, [chunk.dataBlock]);
+
+          return;
+        } else {
+          console.warn('Retried this chunk too often. Giving up.');
+        }
+      }
+
+      this._errorProcessing(files, response || this.options.dictResponseError.replace("{{statusCode}}", xhr.status), xhr);
+    }
+  }, {
+    key: "submitRequest",
+    value: function submitRequest(xhr, formData, files) {
+      xhr.send(formData);
+    } // Called internally when processing is finished.
+    // Individual callbacks have to be called in the appropriate sections.
+
+  }, {
+    key: "_finished",
+    value: function _finished(files, responseText, e) {
+      var _iterator29 = _createForOfIteratorHelper(files),
+          _step29;
+
+      try {
+        for (_iterator29.s(); !(_step29 = _iterator29.n()).done;) {
+          var file = _step29.value;
+          file.status = Dropzone.SUCCESS;
+          this.emit("success", file, responseText, e);
+          this.emit("complete", file);
+        }
+      } catch (err) {
+        _iterator29.e(err);
+      } finally {
+        _iterator29.f();
+      }
+
+      if (this.options.uploadMultiple) {
+        this.emit("successmultiple", files, responseText, e);
+        this.emit("completemultiple", files);
+      }
+
+      if (this.options.autoProcessQueue) {
+        return this.processQueue();
+      }
+    } // Called internally when processing is finished.
+    // Individual callbacks have to be called in the appropriate sections.
+
+  }, {
+    key: "_errorProcessing",
+    value: function _errorProcessing(files, message, xhr) {
+      var _iterator30 = _createForOfIteratorHelper(files),
+          _step30;
+
+      try {
+        for (_iterator30.s(); !(_step30 = _iterator30.n()).done;) {
+          var file = _step30.value;
+          file.status = Dropzone.ERROR;
+          this.emit("error", file, message, xhr);
+          this.emit("complete", file);
+        }
+      } catch (err) {
+        _iterator30.e(err);
+      } finally {
+        _iterator30.f();
+      }
+
+      if (this.options.uploadMultiple) {
+        this.emit("errormultiple", files, message, xhr);
+        this.emit("completemultiple", files);
+      }
+
+      if (this.options.autoProcessQueue) {
+        return this.processQueue();
+      }
+    }
+  }], [{
+    key: "uuidv4",
+    value: function uuidv4() {
+      return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
+        var r = Math.random() * 16 | 0,
+            v = c === 'x' ? r : r & 0x3 | 0x8;
+        return v.toString(16);
+      });
+    }
+  }]);
+
+  return Dropzone;
+}(Emitter);
+
+Dropzone.initClass();
+Dropzone.version = "5.7.2"; // This is a map of options for your different dropzones. Add configurations
+// to this object for your different dropzone elemens.
+//
+// Example:
+//
+//     Dropzone.options.myDropzoneElementId = { maxFilesize: 1 };
+//
+// To disable autoDiscover for a specific element, you can set `false` as an option:
+//
+//     Dropzone.options.myDisabledElementId = false;
+//
+// And in html:
+//
+//     <form action="/upload" id="my-dropzone-element-id" class="dropzone"></form>
+
+Dropzone.options = {}; // Returns the options for an element or undefined if none available.
+
+Dropzone.optionsForElement = function (element) {
+  // Get the `Dropzone.options.elementId` for this element if it exists
+  if (element.getAttribute("id")) {
+    return Dropzone.options[camelize(element.getAttribute("id"))];
+  } else {
+    return undefined;
+  }
+}; // Holds a list of all dropzone instances
+
+
+Dropzone.instances = []; // Returns the dropzone for given element if any
+
+Dropzone.forElement = function (element) {
+  if (typeof element === "string") {
+    element = document.querySelector(element);
+  }
+
+  if ((element != null ? element.dropzone : undefined) == null) {
+    throw new Error("No Dropzone found for given element. This is probably because you're trying to access it before Dropzone had the time to initialize. Use the `init` option to setup any additional observers on your Dropzone.");
+  }
+
+  return element.dropzone;
+}; // Set to false if you don't want Dropzone to automatically find and attach to .dropzone elements.
+
+
+Dropzone.autoDiscover = true; // Looks for all .dropzone elements and creates a dropzone for them
+
+Dropzone.discover = function () {
+  var dropzones;
+
+  if (document.querySelectorAll) {
+    dropzones = document.querySelectorAll(".dropzone");
+  } else {
+    dropzones = []; // IE :(
+
+    var checkElements = function checkElements(elements) {
+      return function () {
+        var result = [];
+
+        var _iterator31 = _createForOfIteratorHelper(elements),
+            _step31;
+
+        try {
+          for (_iterator31.s(); !(_step31 = _iterator31.n()).done;) {
+            var el = _step31.value;
+
+            if (/(^| )dropzone($| )/.test(el.className)) {
+              result.push(dropzones.push(el));
+            } else {
+              result.push(undefined);
+            }
+          }
+        } catch (err) {
+          _iterator31.e(err);
+        } finally {
+          _iterator31.f();
+        }
+
+        return result;
+      }();
+    };
+
+    checkElements(document.getElementsByTagName("div"));
+    checkElements(document.getElementsByTagName("form"));
+  }
+
+  return function () {
+    var result = [];
+
+    var _iterator32 = _createForOfIteratorHelper(dropzones),
+        _step32;
+
+    try {
+      for (_iterator32.s(); !(_step32 = _iterator32.n()).done;) {
+        var dropzone = _step32.value;
+
+        // Create a dropzone unless auto discover has been disabled for specific element
+        if (Dropzone.optionsForElement(dropzone) !== false) {
+          result.push(new Dropzone(dropzone));
+        } else {
+          result.push(undefined);
+        }
+      }
+    } catch (err) {
+      _iterator32.e(err);
+    } finally {
+      _iterator32.f();
+    }
+
+    return result;
+  }();
+}; // Since the whole Drag'n'Drop API is pretty new, some browsers implement it,
+// but not correctly.
+// So I created a blacklist of userAgents. Yes, yes. Browser sniffing, I know.
+// But what to do when browsers *theoretically* support an API, but crash
+// when using it.
+//
+// This is a list of regular expressions tested against navigator.userAgent
+//
+// ** It should only be used on browser that *do* support the API, but
+// incorrectly **
+//
+
+
+Dropzone.blacklistedBrowsers = [// The mac os and windows phone version of opera 12 seems to have a problem with the File drag'n'drop API.
+/opera.*(Macintosh|Windows Phone).*version\/12/i]; // Checks if the browser is supported
+
+Dropzone.isBrowserSupported = function () {
+  var capableBrowser = true;
+
+  if (window.File && window.FileReader && window.FileList && window.Blob && window.FormData && document.querySelector) {
+    if (!("classList" in document.createElement("a"))) {
+      capableBrowser = false;
+    } else {
+      // The browser supports the API, but may be blacklisted.
+      var _iterator33 = _createForOfIteratorHelper(Dropzone.blacklistedBrowsers),
+          _step33;
+
+      try {
+        for (_iterator33.s(); !(_step33 = _iterator33.n()).done;) {
+          var regex = _step33.value;
+
+          if (regex.test(navigator.userAgent)) {
+            capableBrowser = false;
+            continue;
+          }
+        }
+      } catch (err) {
+        _iterator33.e(err);
+      } finally {
+        _iterator33.f();
+      }
+    }
+  } else {
+    capableBrowser = false;
+  }
+
+  return capableBrowser;
+};
+
+Dropzone.dataURItoBlob = function (dataURI) {
+  // convert base64 to raw binary data held in a string
+  // doesn't handle URLEncoded DataURIs - see SO answer #6850276 for code that does this
+  var byteString = atob(dataURI.split(',')[1]); // separate out the mime component
+
+  var mimeString = dataURI.split(',')[0].split(':')[1].split(';')[0]; // write the bytes of the string to an ArrayBuffer
+
+  var ab = new ArrayBuffer(byteString.length);
+  var ia = new Uint8Array(ab);
+
+  for (var i = 0, end = byteString.length, asc = 0 <= end; asc ? i <= end : i >= end; asc ? i++ : i--) {
+    ia[i] = byteString.charCodeAt(i);
+  } // write the ArrayBuffer to a blob
+
+
+  return new Blob([ab], {
+    type: mimeString
+  });
+}; // Returns an array without the rejected item
+
+
+var without = function without(list, rejectedItem) {
+  return list.filter(function (item) {
+    return item !== rejectedItem;
+  }).map(function (item) {
+    return item;
+  });
+}; // abc-def_ghi -> abcDefGhi
+
+
+var camelize = function camelize(str) {
+  return str.replace(/[\-_](\w)/g, function (match) {
+    return match.charAt(1).toUpperCase();
+  });
+}; // Creates an element from string
+
+
+Dropzone.createElement = function (string) {
+  var div = document.createElement("div");
+  div.innerHTML = string;
+  return div.childNodes[0];
+}; // Tests if given element is inside (or simply is) the container
+
+
+Dropzone.elementInside = function (element, container) {
+  if (element === container) {
+    return true;
+  } // Coffeescript doesn't support do/while loops
+
+
+  while (element = element.parentNode) {
+    if (element === container) {
+      return true;
+    }
+  }
+
+  return false;
+};
+
+Dropzone.getElement = function (el, name) {
+  var element;
+
+  if (typeof el === "string") {
+    element = document.querySelector(el);
+  } else if (el.nodeType != null) {
+    element = el;
+  }
+
+  if (element == null) {
+    throw new Error("Invalid `".concat(name, "` option provided. Please provide a CSS selector or a plain HTML element."));
+  }
+
+  return element;
+};
+
+Dropzone.getElements = function (els, name) {
+  var el, elements;
+
+  if (els instanceof Array) {
+    elements = [];
+
+    try {
+      var _iterator34 = _createForOfIteratorHelper(els),
+          _step34;
+
+      try {
+        for (_iterator34.s(); !(_step34 = _iterator34.n()).done;) {
+          el = _step34.value;
+          elements.push(this.getElement(el, name));
+        }
+      } catch (err) {
+        _iterator34.e(err);
+      } finally {
+        _iterator34.f();
+      }
+    } catch (e) {
+      elements = null;
+    }
+  } else if (typeof els === "string") {
+    elements = [];
+
+    var _iterator35 = _createForOfIteratorHelper(document.querySelectorAll(els)),
+        _step35;
+
+    try {
+      for (_iterator35.s(); !(_step35 = _iterator35.n()).done;) {
+        el = _step35.value;
+        elements.push(el);
+      }
+    } catch (err) {
+      _iterator35.e(err);
+    } finally {
+      _iterator35.f();
+    }
+  } else if (els.nodeType != null) {
+    elements = [els];
+  }
+
+  if (elements == null || !elements.length) {
+    throw new Error("Invalid `".concat(name, "` option provided. Please provide a CSS selector, a plain HTML element or a list of those."));
+  }
+
+  return elements;
+}; // Asks the user the question and calls accepted or rejected accordingly
+//
+// The default implementation just uses `window.confirm` and then calls the
+// appropriate callback.
+
+
+Dropzone.confirm = function (question, accepted, rejected) {
+  if (window.confirm(question)) {
+    return accepted();
+  } else if (rejected != null) {
+    return rejected();
+  }
+}; // Validates the mime type like this:
+//
+// https://developer.mozilla.org/en-US/docs/HTML/Element/input#attr-accept
+
+
+Dropzone.isValidFile = function (file, acceptedFiles) {
+  if (!acceptedFiles) {
+    return true;
+  } // If there are no accepted mime types, it's OK
+
+
+  acceptedFiles = acceptedFiles.split(",");
+  var mimeType = file.type;
+  var baseMimeType = mimeType.replace(/\/.*$/, "");
+
+  var _iterator36 = _createForOfIteratorHelper(acceptedFiles),
+      _step36;
+
+  try {
+    for (_iterator36.s(); !(_step36 = _iterator36.n()).done;) {
+      var validType = _step36.value;
+      validType = validType.trim();
+
+      if (validType.charAt(0) === ".") {
+        if (file.name.toLowerCase().indexOf(validType.toLowerCase(), file.name.length - validType.length) !== -1) {
+          return true;
+        }
+      } else if (/\/\*$/.test(validType)) {
+        // This is something like a image/* mime type
+        if (baseMimeType === validType.replace(/\/.*$/, "")) {
+          return true;
+        }
+      } else {
+        if (mimeType === validType) {
+          return true;
+        }
+      }
+    }
+  } catch (err) {
+    _iterator36.e(err);
+  } finally {
+    _iterator36.f();
+  }
+
+  return false;
+}; // Augment jQuery
+
+
+if (typeof jQuery !== 'undefined' && jQuery !== null) {
+  jQuery.fn.dropzone = function (options) {
+    return this.each(function () {
+      return new Dropzone(this, options);
+    });
+  };
+}
+
+if (typeof module !== 'undefined' && module !== null) {
+  module.exports = Dropzone;
+} else {
+  window.Dropzone = Dropzone;
+} // Dropzone file status codes
+
+
+Dropzone.ADDED = "added";
+Dropzone.QUEUED = "queued"; // For backwards compatibility. Now, if a file is accepted, it's either queued
+// or uploading.
+
+Dropzone.ACCEPTED = Dropzone.QUEUED;
+Dropzone.UPLOADING = "uploading";
+Dropzone.PROCESSING = Dropzone.UPLOADING; // alias
+
+Dropzone.CANCELED = "canceled";
+Dropzone.ERROR = "error";
+Dropzone.SUCCESS = "success";
+/*
+
+ Bugfix for iOS 6 and 7
+ Source: http://stackoverflow.com/questions/11929099/html5-canvas-drawimage-ratio-bug-ios
+ based on the work of https://github.com/stomita/ios-imagefile-megapixel
+
+ */
+// Detecting vertical squash in loaded image.
+// Fixes a bug which squash image vertically while drawing into canvas for some images.
+// This is a bug in iOS6 devices. This function from https://github.com/stomita/ios-imagefile-megapixel
+
+var detectVerticalSquash = function detectVerticalSquash(img) {
+  var iw = img.naturalWidth;
+  var ih = img.naturalHeight;
+  var canvas = document.createElement("canvas");
+  canvas.width = 1;
+  canvas.height = ih;
+  var ctx = canvas.getContext("2d");
+  ctx.drawImage(img, 0, 0);
+
+  var _ctx$getImageData = ctx.getImageData(1, 0, 1, ih),
+      data = _ctx$getImageData.data; // search image edge pixel position in case it is squashed vertically.
+
+
+  var sy = 0;
+  var ey = ih;
+  var py = ih;
+
+  while (py > sy) {
+    var alpha = data[(py - 1) * 4 + 3];
+
+    if (alpha === 0) {
+      ey = py;
+    } else {
+      sy = py;
+    }
+
+    py = ey + sy >> 1;
+  }
+
+  var ratio = py / ih;
+
+  if (ratio === 0) {
+    return 1;
+  } else {
+    return ratio;
+  }
+}; // A replacement for context.drawImage
+// (args are for source and destination).
+
+
+var drawImageIOSFix = function drawImageIOSFix(ctx, img, sx, sy, sw, sh, dx, dy, dw, dh) {
+  var vertSquashRatio = detectVerticalSquash(img);
+  return ctx.drawImage(img, sx, sy, sw, sh, dx, dy, dw, dh / vertSquashRatio);
+}; // Based on MinifyJpeg
+// Source: http://www.perry.cz/files/ExifRestorer.js
+// http://elicon.blog57.fc2.com/blog-entry-206.html
+
+
+var ExifRestore = /*#__PURE__*/function () {
+  function ExifRestore() {
+    _classCallCheck(this, ExifRestore);
+  }
+
+  _createClass(ExifRestore, null, [{
+    key: "initClass",
+    value: function initClass() {
+      this.KEY_STR = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
+    }
+  }, {
+    key: "encode64",
+    value: function encode64(input) {
+      var output = '';
+      var chr1 = undefined;
+      var chr2 = undefined;
+      var chr3 = '';
+      var enc1 = undefined;
+      var enc2 = undefined;
+      var enc3 = undefined;
+      var enc4 = '';
+      var i = 0;
+
+      while (true) {
+        chr1 = input[i++];
+        chr2 = input[i++];
+        chr3 = input[i++];
+        enc1 = chr1 >> 2;
+        enc2 = (chr1 & 3) << 4 | chr2 >> 4;
+        enc3 = (chr2 & 15) << 2 | chr3 >> 6;
+        enc4 = chr3 & 63;
+
+        if (isNaN(chr2)) {
+          enc3 = enc4 = 64;
+        } else if (isNaN(chr3)) {
+          enc4 = 64;
+        }
+
+        output = output + this.KEY_STR.charAt(enc1) + this.KEY_STR.charAt(enc2) + this.KEY_STR.charAt(enc3) + this.KEY_STR.charAt(enc4);
+        chr1 = chr2 = chr3 = '';
+        enc1 = enc2 = enc3 = enc4 = '';
+
+        if (!(i < input.length)) {
+          break;
+        }
+      }
+
+      return output;
+    }
+  }, {
+    key: "restore",
+    value: function restore(origFileBase64, resizedFileBase64) {
+      if (!origFileBase64.match('data:image/jpeg;base64,')) {
+        return resizedFileBase64;
+      }
+
+      var rawImage = this.decode64(origFileBase64.replace('data:image/jpeg;base64,', ''));
+      var segments = this.slice2Segments(rawImage);
+      var image = this.exifManipulation(resizedFileBase64, segments);
+      return "data:image/jpeg;base64,".concat(this.encode64(image));
+    }
+  }, {
+    key: "exifManipulation",
+    value: function exifManipulation(resizedFileBase64, segments) {
+      var exifArray = this.getExifArray(segments);
+      var newImageArray = this.insertExif(resizedFileBase64, exifArray);
+      var aBuffer = new Uint8Array(newImageArray);
+      return aBuffer;
+    }
+  }, {
+    key: "getExifArray",
+    value: function getExifArray(segments) {
+      var seg = undefined;
+      var x = 0;
+
+      while (x < segments.length) {
+        seg = segments[x];
+
+        if (seg[0] === 255 & seg[1] === 225) {
+          return seg;
+        }
+
+        x++;
+      }
+
+      return [];
+    }
+  }, {
+    key: "insertExif",
+    value: function insertExif(resizedFileBase64, exifArray) {
+      var imageData = resizedFileBase64.replace('data:image/jpeg;base64,', '');
+      var buf = this.decode64(imageData);
+      var separatePoint = buf.indexOf(255, 3);
+      var mae = buf.slice(0, separatePoint);
+      var ato = buf.slice(separatePoint);
+      var array = mae;
+      array = array.concat(exifArray);
+      array = array.concat(ato);
+      return array;
+    }
+  }, {
+    key: "slice2Segments",
+    value: function slice2Segments(rawImageArray) {
+      var head = 0;
+      var segments = [];
+
+      while (true) {
+        var length;
+
+        if (rawImageArray[head] === 255 & rawImageArray[head + 1] === 218) {
+          break;
+        }
+
+        if (rawImageArray[head] === 255 & rawImageArray[head + 1] === 216) {
+          head += 2;
+        } else {
+          length = rawImageArray[head + 2] * 256 + rawImageArray[head + 3];
+          var endPoint = head + length + 2;
+          var seg = rawImageArray.slice(head, endPoint);
+          segments.push(seg);
+          head = endPoint;
+        }
+
+        if (head > rawImageArray.length) {
+          break;
+        }
+      }
+
+      return segments;
+    }
+  }, {
+    key: "decode64",
+    value: function decode64(input) {
+      var output = '';
+      var chr1 = undefined;
+      var chr2 = undefined;
+      var chr3 = '';
+      var enc1 = undefined;
+      var enc2 = undefined;
+      var enc3 = undefined;
+      var enc4 = '';
+      var i = 0;
+      var buf = []; // remove all characters that are not A-Z, a-z, 0-9, +, /, or =
+
+      var base64test = /[^A-Za-z0-9\+\/\=]/g;
+
+      if (base64test.exec(input)) {
+        console.warn('There were invalid base64 characters in the input text.\nValid base64 characters are A-Z, a-z, 0-9, \'+\', \'/\',and \'=\'\nExpect errors in decoding.');
+      }
+
+      input = input.replace(/[^A-Za-z0-9\+\/\=]/g, '');
+
+      while (true) {
+        enc1 = this.KEY_STR.indexOf(input.charAt(i++));
+        enc2 = this.KEY_STR.indexOf(input.charAt(i++));
+        enc3 = this.KEY_STR.indexOf(input.charAt(i++));
+        enc4 = this.KEY_STR.indexOf(input.charAt(i++));
+        chr1 = enc1 << 2 | enc2 >> 4;
+        chr2 = (enc2 & 15) << 4 | enc3 >> 2;
+        chr3 = (enc3 & 3) << 6 | enc4;
+        buf.push(chr1);
+
+        if (enc3 !== 64) {
+          buf.push(chr2);
+        }
+
+        if (enc4 !== 64) {
+          buf.push(chr3);
+        }
+
+        chr1 = chr2 = chr3 = '';
+        enc1 = enc2 = enc3 = enc4 = '';
+
+        if (!(i < input.length)) {
+          break;
+        }
+      }
+
+      return buf;
+    }
+  }]);
+
+  return ExifRestore;
+}();
+
+ExifRestore.initClass();
+/*
+ * contentloaded.js
+ *
+ * Author: Diego Perini (diego.perini at gmail.com)
+ * Summary: cross-browser wrapper for DOMContentLoaded
+ * Updated: 20101020
+ * License: MIT
+ * Version: 1.2
+ *
+ * URL:
+ * http://javascript.nwbox.com/ContentLoaded/
+ * http://javascript.nwbox.com/ContentLoaded/MIT-LICENSE
+ */
+// @win window reference
+// @fn function reference
+
+var contentLoaded = function contentLoaded(win, fn) {
+  var done = false;
+  var top = true;
+  var doc = win.document;
+  var root = doc.documentElement;
+  var add = doc.addEventListener ? "addEventListener" : "attachEvent";
+  var rem = doc.addEventListener ? "removeEventListener" : "detachEvent";
+  var pre = doc.addEventListener ? "" : "on";
+
+  var init = function init(e) {
+    if (e.type === "readystatechange" && doc.readyState !== "complete") {
+      return;
+    }
+
+    (e.type === "load" ? win : doc)[rem](pre + e.type, init, false);
+
+    if (!done && (done = true)) {
+      return fn.call(win, e.type || e);
+    }
+  };
+
+  var poll = function poll() {
+    try {
+      root.doScroll("left");
+    } catch (e) {
+      setTimeout(poll, 50);
+      return;
+    }
+
+    return init("poll");
+  };
+
+  if (doc.readyState !== "complete") {
+    if (doc.createEventObject && root.doScroll) {
+      try {
+        top = !win.frameElement;
+      } catch (error) {}
+
+      if (top) {
+        poll();
+      }
+    }
+
+    doc[add](pre + "DOMContentLoaded", init, false);
+    doc[add](pre + "readystatechange", init, false);
+    return win[add](pre + "load", init, false);
+  }
+}; // As a single function to be able to write tests.
+
+
+Dropzone._autoDiscoverFunction = function () {
+  if (Dropzone.autoDiscover) {
+    return Dropzone.discover();
+  }
+};
+
+contentLoaded(window, Dropzone._autoDiscoverFunction);
+
+function __guard__(value, transform) {
+  return typeof value !== 'undefined' && value !== null ? transform(value) : undefined;
+}
+
+function __guardMethod__(obj, methodName, transform) {
+  if (typeof obj !== 'undefined' && obj !== null && typeof obj[methodName] === 'function') {
+    return transform(obj, methodName);
+  } else {
+    return undefined;
+  }
+}
+
+    return module.exports;
+}));
\ No newline at end of file
diff --git a/admin/js/vendors/dropzone/dropzone.css b/admin/js/vendors/dropzone/dropzone.css
new file mode 100644 (file)
index 0000000..93a9146
--- /dev/null
@@ -0,0 +1,396 @@
+/*
+ * The MIT License
+ * Copyright (c) 2012 Matias Meno <m@tias.me>
+ */
+@-webkit-keyframes passing-through {
+  0% {
+    opacity: 0;
+    -webkit-transform: translateY(40px);
+    -moz-transform: translateY(40px);
+    -ms-transform: translateY(40px);
+    -o-transform: translateY(40px);
+    transform: translateY(40px); }
+  30%, 70% {
+    opacity: 1;
+    -webkit-transform: translateY(0px);
+    -moz-transform: translateY(0px);
+    -ms-transform: translateY(0px);
+    -o-transform: translateY(0px);
+    transform: translateY(0px); }
+  100% {
+    opacity: 0;
+    -webkit-transform: translateY(-40px);
+    -moz-transform: translateY(-40px);
+    -ms-transform: translateY(-40px);
+    -o-transform: translateY(-40px);
+    transform: translateY(-40px); } }
+@-moz-keyframes passing-through {
+  0% {
+    opacity: 0;
+    -webkit-transform: translateY(40px);
+    -moz-transform: translateY(40px);
+    -ms-transform: translateY(40px);
+    -o-transform: translateY(40px);
+    transform: translateY(40px); }
+  30%, 70% {
+    opacity: 1;
+    -webkit-transform: translateY(0px);
+    -moz-transform: translateY(0px);
+    -ms-transform: translateY(0px);
+    -o-transform: translateY(0px);
+    transform: translateY(0px); }
+  100% {
+    opacity: 0;
+    -webkit-transform: translateY(-40px);
+    -moz-transform: translateY(-40px);
+    -ms-transform: translateY(-40px);
+    -o-transform: translateY(-40px);
+    transform: translateY(-40px); } }
+@keyframes passing-through {
+  0% {
+    opacity: 0;
+    -webkit-transform: translateY(40px);
+    -moz-transform: translateY(40px);
+    -ms-transform: translateY(40px);
+    -o-transform: translateY(40px);
+    transform: translateY(40px); }
+  30%, 70% {
+    opacity: 1;
+    -webkit-transform: translateY(0px);
+    -moz-transform: translateY(0px);
+    -ms-transform: translateY(0px);
+    -o-transform: translateY(0px);
+    transform: translateY(0px); }
+  100% {
+    opacity: 0;
+    -webkit-transform: translateY(-40px);
+    -moz-transform: translateY(-40px);
+    -ms-transform: translateY(-40px);
+    -o-transform: translateY(-40px);
+    transform: translateY(-40px); } }
+@-webkit-keyframes slide-in {
+  0% {
+    opacity: 0;
+    -webkit-transform: translateY(40px);
+    -moz-transform: translateY(40px);
+    -ms-transform: translateY(40px);
+    -o-transform: translateY(40px);
+    transform: translateY(40px); }
+  30% {
+    opacity: 1;
+    -webkit-transform: translateY(0px);
+    -moz-transform: translateY(0px);
+    -ms-transform: translateY(0px);
+    -o-transform: translateY(0px);
+    transform: translateY(0px); } }
+@-moz-keyframes slide-in {
+  0% {
+    opacity: 0;
+    -webkit-transform: translateY(40px);
+    -moz-transform: translateY(40px);
+    -ms-transform: translateY(40px);
+    -o-transform: translateY(40px);
+    transform: translateY(40px); }
+  30% {
+    opacity: 1;
+    -webkit-transform: translateY(0px);
+    -moz-transform: translateY(0px);
+    -ms-transform: translateY(0px);
+    -o-transform: translateY(0px);
+    transform: translateY(0px); } }
+@keyframes slide-in {
+  0% {
+    opacity: 0;
+    -webkit-transform: translateY(40px);
+    -moz-transform: translateY(40px);
+    -ms-transform: translateY(40px);
+    -o-transform: translateY(40px);
+    transform: translateY(40px); }
+  30% {
+    opacity: 1;
+    -webkit-transform: translateY(0px);
+    -moz-transform: translateY(0px);
+    -ms-transform: translateY(0px);
+    -o-transform: translateY(0px);
+    transform: translateY(0px); } }
+@-webkit-keyframes pulse {
+  0% {
+    -webkit-transform: scale(1);
+    -moz-transform: scale(1);
+    -ms-transform: scale(1);
+    -o-transform: scale(1);
+    transform: scale(1); }
+  10% {
+    -webkit-transform: scale(1.1);
+    -moz-transform: scale(1.1);
+    -ms-transform: scale(1.1);
+    -o-transform: scale(1.1);
+    transform: scale(1.1); }
+  20% {
+    -webkit-transform: scale(1);
+    -moz-transform: scale(1);
+    -ms-transform: scale(1);
+    -o-transform: scale(1);
+    transform: scale(1); } }
+@-moz-keyframes pulse {
+  0% {
+    -webkit-transform: scale(1);
+    -moz-transform: scale(1);
+    -ms-transform: scale(1);
+    -o-transform: scale(1);
+    transform: scale(1); }
+  10% {
+    -webkit-transform: scale(1.1);
+    -moz-transform: scale(1.1);
+    -ms-transform: scale(1.1);
+    -o-transform: scale(1.1);
+    transform: scale(1.1); }
+  20% {
+    -webkit-transform: scale(1);
+    -moz-transform: scale(1);
+    -ms-transform: scale(1);
+    -o-transform: scale(1);
+    transform: scale(1); } }
+@keyframes pulse {
+  0% {
+    -webkit-transform: scale(1);
+    -moz-transform: scale(1);
+    -ms-transform: scale(1);
+    -o-transform: scale(1);
+    transform: scale(1); }
+  10% {
+    -webkit-transform: scale(1.1);
+    -moz-transform: scale(1.1);
+    -ms-transform: scale(1.1);
+    -o-transform: scale(1.1);
+    transform: scale(1.1); }
+  20% {
+    -webkit-transform: scale(1);
+    -moz-transform: scale(1);
+    -ms-transform: scale(1);
+    -o-transform: scale(1);
+    transform: scale(1); } }
+.dropzone, .dropzone * {
+  box-sizing: border-box; }
+
+.dropzone {
+  min-height: 150px;
+  border: 2px solid rgba(0, 0, 0, 0.3);
+  background: white;
+  padding: 20px 20px; }
+  .dropzone.dz-clickable {
+    cursor: pointer; }
+    .dropzone.dz-clickable * {
+      cursor: default; }
+    .dropzone.dz-clickable .dz-message, .dropzone.dz-clickable .dz-message * {
+      cursor: pointer; }
+  .dropzone.dz-started .dz-message {
+    display: none; }
+  .dropzone.dz-drag-hover {
+    border-style: solid; }
+    .dropzone.dz-drag-hover .dz-message {
+      opacity: 0.5; }
+  .dropzone .dz-message {
+    text-align: center;
+    margin: 2em 0; }
+    .dropzone .dz-message .dz-button {
+      background: none;
+      color: inherit;
+      border: none;
+      padding: 0;
+      font: inherit;
+      cursor: pointer;
+      outline: inherit; }
+  .dropzone .dz-preview {
+    position: relative;
+    display: inline-block;
+    vertical-align: top;
+    margin: 16px;
+    min-height: 100px; }
+    .dropzone .dz-preview:hover {
+      z-index: 1000; }
+      .dropzone .dz-preview:hover .dz-details {
+        opacity: 1; }
+    .dropzone .dz-preview.dz-file-preview .dz-image {
+      border-radius: 20px;
+      background: #999;
+      background: linear-gradient(to bottom, #eee, #ddd); }
+    .dropzone .dz-preview.dz-file-preview .dz-details {
+      opacity: 1; }
+    .dropzone .dz-preview.dz-image-preview {
+      background: white; }
+      .dropzone .dz-preview.dz-image-preview .dz-details {
+        -webkit-transition: opacity 0.2s linear;
+        -moz-transition: opacity 0.2s linear;
+        -ms-transition: opacity 0.2s linear;
+        -o-transition: opacity 0.2s linear;
+        transition: opacity 0.2s linear; }
+    .dropzone .dz-preview .dz-remove {
+      font-size: 14px;
+      text-align: center;
+      display: block;
+      cursor: pointer;
+      border: none; }
+      .dropzone .dz-preview .dz-remove:hover {
+        text-decoration: underline; }
+    .dropzone .dz-preview:hover .dz-details {
+      opacity: 1; }
+    .dropzone .dz-preview .dz-details {
+      z-index: 20;
+      position: absolute;
+      top: 0;
+      left: 0;
+      opacity: 0;
+      font-size: 13px;
+      min-width: 100%;
+      max-width: 100%;
+      padding: 2em 1em;
+      text-align: center;
+      color: rgba(0, 0, 0, 0.9);
+      line-height: 150%; }
+      .dropzone .dz-preview .dz-details .dz-size {
+        margin-bottom: 1em;
+        font-size: 16px; }
+      .dropzone .dz-preview .dz-details .dz-filename {
+        white-space: nowrap; }
+        .dropzone .dz-preview .dz-details .dz-filename:hover span {
+          border: 1px solid rgba(200, 200, 200, 0.8);
+          background-color: rgba(255, 255, 255, 0.8); }
+        .dropzone .dz-preview .dz-details .dz-filename:not(:hover) {
+          overflow: hidden;
+          text-overflow: ellipsis; }
+          .dropzone .dz-preview .dz-details .dz-filename:not(:hover) span {
+            border: 1px solid transparent; }
+      .dropzone .dz-preview .dz-details .dz-filename span, .dropzone .dz-preview .dz-details .dz-size span {
+        background-color: rgba(255, 255, 255, 0.4);
+        padding: 0 0.4em;
+        border-radius: 3px; }
+    .dropzone .dz-preview:hover .dz-image img {
+      -webkit-transform: scale(1.05, 1.05);
+      -moz-transform: scale(1.05, 1.05);
+      -ms-transform: scale(1.05, 1.05);
+      -o-transform: scale(1.05, 1.05);
+      transform: scale(1.05, 1.05);
+      -webkit-filter: blur(8px);
+      filter: blur(8px); }
+    .dropzone .dz-preview .dz-image {
+      border-radius: 20px;
+      overflow: hidden;
+      width: 120px;
+      height: 120px;
+      position: relative;
+      display: block;
+      z-index: 10; }
+      .dropzone .dz-preview .dz-image img {
+        display: block; }
+    .dropzone .dz-preview.dz-success .dz-success-mark {
+      -webkit-animation: passing-through 3s cubic-bezier(0.77, 0, 0.175, 1);
+      -moz-animation: passing-through 3s cubic-bezier(0.77, 0, 0.175, 1);
+      -ms-animation: passing-through 3s cubic-bezier(0.77, 0, 0.175, 1);
+      -o-animation: passing-through 3s cubic-bezier(0.77, 0, 0.175, 1);
+      animation: passing-through 3s cubic-bezier(0.77, 0, 0.175, 1); }
+    .dropzone .dz-preview.dz-error .dz-error-mark {
+      opacity: 1;
+      -webkit-animation: slide-in 3s cubic-bezier(0.77, 0, 0.175, 1);
+      -moz-animation: slide-in 3s cubic-bezier(0.77, 0, 0.175, 1);
+      -ms-animation: slide-in 3s cubic-bezier(0.77, 0, 0.175, 1);
+      -o-animation: slide-in 3s cubic-bezier(0.77, 0, 0.175, 1);
+      animation: slide-in 3s cubic-bezier(0.77, 0, 0.175, 1); }
+    .dropzone .dz-preview .dz-success-mark, .dropzone .dz-preview .dz-error-mark {
+      pointer-events: none;
+      opacity: 0;
+      z-index: 500;
+      position: absolute;
+      display: block;
+      top: 50%;
+      left: 50%;
+      margin-left: -27px;
+      margin-top: -27px; }
+      .dropzone .dz-preview .dz-success-mark svg, .dropzone .dz-preview .dz-error-mark svg {
+        display: block;
+        width: 54px;
+        height: 54px; }
+    .dropzone .dz-preview.dz-processing .dz-progress {
+      opacity: 1;
+      -webkit-transition: all 0.2s linear;
+      -moz-transition: all 0.2s linear;
+      -ms-transition: all 0.2s linear;
+      -o-transition: all 0.2s linear;
+      transition: all 0.2s linear; }
+    .dropzone .dz-preview.dz-complete .dz-progress {
+      opacity: 0;
+      -webkit-transition: opacity 0.4s ease-in;
+      -moz-transition: opacity 0.4s ease-in;
+      -ms-transition: opacity 0.4s ease-in;
+      -o-transition: opacity 0.4s ease-in;
+      transition: opacity 0.4s ease-in; }
+    .dropzone .dz-preview:not(.dz-processing) .dz-progress {
+      -webkit-animation: pulse 6s ease infinite;
+      -moz-animation: pulse 6s ease infinite;
+      -ms-animation: pulse 6s ease infinite;
+      -o-animation: pulse 6s ease infinite;
+      animation: pulse 6s ease infinite; }
+    .dropzone .dz-preview .dz-progress {
+      opacity: 1;
+      z-index: 1000;
+      pointer-events: none;
+      position: absolute;
+      height: 16px;
+      left: 50%;
+      top: 50%;
+      margin-top: -8px;
+      width: 80px;
+      margin-left: -40px;
+      background: rgba(255, 255, 255, 0.9);
+      -webkit-transform: scale(1);
+      border-radius: 8px;
+      overflow: hidden; }
+      .dropzone .dz-preview .dz-progress .dz-upload {
+        background: #333;
+        background: linear-gradient(to bottom, #666, #444);
+        position: absolute;
+        top: 0;
+        left: 0;
+        bottom: 0;
+        width: 0;
+        -webkit-transition: width 300ms ease-in-out;
+        -moz-transition: width 300ms ease-in-out;
+        -ms-transition: width 300ms ease-in-out;
+        -o-transition: width 300ms ease-in-out;
+        transition: width 300ms ease-in-out; }
+    .dropzone .dz-preview.dz-error .dz-error-message {
+      display: block; }
+    .dropzone .dz-preview.dz-error:hover .dz-error-message {
+      opacity: 1;
+      pointer-events: auto; }
+    .dropzone .dz-preview .dz-error-message {
+      pointer-events: none;
+      z-index: 1000;
+      position: absolute;
+      display: block;
+      display: none;
+      opacity: 0;
+      -webkit-transition: opacity 0.3s ease;
+      -moz-transition: opacity 0.3s ease;
+      -ms-transition: opacity 0.3s ease;
+      -o-transition: opacity 0.3s ease;
+      transition: opacity 0.3s ease;
+      border-radius: 8px;
+      font-size: 13px;
+      top: 130px;
+      left: -10px;
+      width: 140px;
+      background: #be2626;
+      background: linear-gradient(to bottom, #be2626, #a92222);
+      padding: 0.5em 1.2em;
+      color: white; }
+      .dropzone .dz-preview .dz-error-message:after {
+        content: '';
+        position: absolute;
+        top: -6px;
+        left: 64px;
+        width: 0;
+        height: 0;
+        border-left: 6px solid transparent;
+        border-right: 6px solid transparent;
+        border-bottom: 6px solid #be2626; }
diff --git a/admin/js/vendors/dropzone/dropzone.js b/admin/js/vendors/dropzone/dropzone.js
new file mode 100644 (file)
index 0000000..970dce0
--- /dev/null
@@ -0,0 +1,3507 @@
+"use strict";
+
+function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
+
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
+
+function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
+
+function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
+
+function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
+
+function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
+
+function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
+
+function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
+
+function _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
+
+function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
+
+function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
+
+function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
+
+/*
+ *
+ * More info at [www.dropzonejs.com](http://www.dropzonejs.com)
+ *
+ * Copyright (c) 2012, Matias Meno
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ *
+ */
+// The Emitter class provides the ability to call `.on()` on Dropzone to listen
+// to events.
+// It is strongly based on component's emitter class, and I removed the
+// functionality because of the dependency hell with different frameworks.
+var Emitter = /*#__PURE__*/function () {
+  function Emitter() {
+    _classCallCheck(this, Emitter);
+  }
+
+  _createClass(Emitter, [{
+    key: "on",
+    // Add an event listener for given event
+    value: function on(event, fn) {
+      this._callbacks = this._callbacks || {}; // Create namespace for this event
+
+      if (!this._callbacks[event]) {
+        this._callbacks[event] = [];
+      }
+
+      this._callbacks[event].push(fn);
+
+      return this;
+    }
+  }, {
+    key: "emit",
+    value: function emit(event) {
+      this._callbacks = this._callbacks || {};
+      var callbacks = this._callbacks[event];
+
+      if (callbacks) {
+        for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
+          args[_key - 1] = arguments[_key];
+        }
+
+        var _iterator = _createForOfIteratorHelper(callbacks),
+            _step;
+
+        try {
+          for (_iterator.s(); !(_step = _iterator.n()).done;) {
+            var callback = _step.value;
+            callback.apply(this, args);
+          }
+        } catch (err) {
+          _iterator.e(err);
+        } finally {
+          _iterator.f();
+        }
+      }
+
+      return this;
+    } // Remove event listener for given event. If fn is not provided, all event
+    // listeners for that event will be removed. If neither is provided, all
+    // event listeners will be removed.
+
+  }, {
+    key: "off",
+    value: function off(event, fn) {
+      if (!this._callbacks || arguments.length === 0) {
+        this._callbacks = {};
+        return this;
+      } // specific event
+
+
+      var callbacks = this._callbacks[event];
+
+      if (!callbacks) {
+        return this;
+      } // remove all handlers
+
+
+      if (arguments.length === 1) {
+        delete this._callbacks[event];
+        return this;
+      } // remove specific handler
+
+
+      for (var i = 0; i < callbacks.length; i++) {
+        var callback = callbacks[i];
+
+        if (callback === fn) {
+          callbacks.splice(i, 1);
+          break;
+        }
+      }
+
+      return this;
+    }
+  }]);
+
+  return Emitter;
+}();
+
+var Dropzone = /*#__PURE__*/function (_Emitter) {
+  _inherits(Dropzone, _Emitter);
+
+  var _super = _createSuper(Dropzone);
+
+  _createClass(Dropzone, null, [{
+    key: "initClass",
+    value: function initClass() {
+      // Exposing the emitter class, mainly for tests
+      this.prototype.Emitter = Emitter;
+      /*
+       This is a list of all available events you can register on a dropzone object.
+        You can register an event handler like this:
+        dropzone.on("dragEnter", function() { });
+        */
+
+      this.prototype.events = ["drop", "dragstart", "dragend", "dragenter", "dragover", "dragleave", "addedfile", "addedfiles", "removedfile", "thumbnail", "error", "errormultiple", "processing", "processingmultiple", "uploadprogress", "totaluploadprogress", "sending", "sendingmultiple", "success", "successmultiple", "canceled", "canceledmultiple", "complete", "completemultiple", "reset", "maxfilesexceeded", "maxfilesreached", "queuecomplete"];
+      this.prototype.defaultOptions = {
+        /**
+         * Has to be specified on elements other than form (or when the form
+         * doesn't have an `action` attribute). You can also
+         * provide a function that will be called with `files` and
+         * must return the url (since `v3.12.0`)
+         */
+        url: null,
+
+        /**
+         * Can be changed to `"put"` if necessary. You can also provide a function
+         * that will be called with `files` and must return the method (since `v3.12.0`).
+         */
+        method: "post",
+
+        /**
+         * Will be set on the XHRequest.
+         */
+        withCredentials: false,
+
+        /**
+         * The timeout for the XHR requests in milliseconds (since `v4.4.0`).
+         */
+        timeout: 30000,
+
+        /**
+         * How many file uploads to process in parallel (See the
+         * Enqueuing file uploads documentation section for more info)
+         */
+        parallelUploads: 2,
+
+        /**
+         * Whether to send multiple files in one request. If
+         * this it set to true, then the fallback file input element will
+         * have the `multiple` attribute as well. This option will
+         * also trigger additional events (like `processingmultiple`). See the events
+         * documentation section for more information.
+         */
+        uploadMultiple: false,
+
+        /**
+         * Whether you want files to be uploaded in chunks to your server. This can't be
+         * used in combination with `uploadMultiple`.
+         *
+         * See [chunksUploaded](#config-chunksUploaded) for the callback to finalise an upload.
+         */
+        chunking: false,
+
+        /**
+         * If `chunking` is enabled, this defines whether **every** file should be chunked,
+         * even if the file size is below chunkSize. This means, that the additional chunk
+         * form data will be submitted and the `chunksUploaded` callback will be invoked.
+         */
+        forceChunking: false,
+
+        /**
+         * If `chunking` is `true`, then this defines the chunk size in bytes.
+         */
+        chunkSize: 2000000,
+
+        /**
+         * If `true`, the individual chunks of a file are being uploaded simultaneously.
+         */
+        parallelChunkUploads: false,
+
+        /**
+         * Whether a chunk should be retried if it fails.
+         */
+        retryChunks: false,
+
+        /**
+         * If `retryChunks` is true, how many times should it be retried.
+         */
+        retryChunksLimit: 3,
+
+        /**
+         * If not `null` defines how many files this Dropzone handles. If it exceeds,
+         * the event `maxfilesexceeded` will be called. The dropzone element gets the
+         * class `dz-max-files-reached` accordingly so you can provide visual feedback.
+         */
+        maxFilesize: 256,
+
+        /**
+         * The name of the file param that gets transferred.
+         * **NOTE**: If you have the option  `uploadMultiple` set to `true`, then
+         * Dropzone will append `[]` to the name.
+         */
+        paramName: "file",
+
+        /**
+         * Whether thumbnails for images should be generated
+         */
+        createImageThumbnails: true,
+
+        /**
+         * In MB. When the filename exceeds this limit, the thumbnail will not be generated.
+         */
+        maxThumbnailFilesize: 10,
+
+        /**
+         * If `null`, the ratio of the image will be used to calculate it.
+         */
+        thumbnailWidth: 120,
+
+        /**
+         * The same as `thumbnailWidth`. If both are null, images will not be resized.
+         */
+        thumbnailHeight: 120,
+
+        /**
+         * How the images should be scaled down in case both, `thumbnailWidth` and `thumbnailHeight` are provided.
+         * Can be either `contain` or `crop`.
+         */
+        thumbnailMethod: 'crop',
+
+        /**
+         * If set, images will be resized to these dimensions before being **uploaded**.
+         * If only one, `resizeWidth` **or** `resizeHeight` is provided, the original aspect
+         * ratio of the file will be preserved.
+         *
+         * The `options.transformFile` function uses these options, so if the `transformFile` function
+         * is overridden, these options don't do anything.
+         */
+        resizeWidth: null,
+
+        /**
+         * See `resizeWidth`.
+         */
+        resizeHeight: null,
+
+        /**
+         * The mime type of the resized image (before it gets uploaded to the server).
+         * If `null` the original mime type will be used. To force jpeg, for example, use `image/jpeg`.
+         * See `resizeWidth` for more information.
+         */
+        resizeMimeType: null,
+
+        /**
+         * The quality of the resized images. See `resizeWidth`.
+         */
+        resizeQuality: 0.8,
+
+        /**
+         * How the images should be scaled down in case both, `resizeWidth` and `resizeHeight` are provided.
+         * Can be either `contain` or `crop`.
+         */
+        resizeMethod: 'contain',
+
+        /**
+         * The base that is used to calculate the filesize. You can change this to
+         * 1024 if you would rather display kibibytes, mebibytes, etc...
+         * 1024 is technically incorrect, because `1024 bytes` are `1 kibibyte` not `1 kilobyte`.
+         * You can change this to `1024` if you don't care about validity.
+         */
+        filesizeBase: 1000,
+
+        /**
+         * Can be used to limit the maximum number of files that will be handled by this Dropzone
+         */
+        maxFiles: null,
+
+        /**
+         * An optional object to send additional headers to the server. Eg:
+         * `{ "My-Awesome-Header": "header value" }`
+         */
+        headers: null,
+
+        /**
+         * If `true`, the dropzone element itself will be clickable, if `false`
+         * nothing will be clickable.
+         *
+         * You can also pass an HTML element, a CSS selector (for multiple elements)
+         * or an array of those. In that case, all of those elements will trigger an
+         * upload when clicked.
+         */
+        clickable: true,
+
+        /**
+         * Whether hidden files in directories should be ignored.
+         */
+        ignoreHiddenFiles: true,
+
+        /**
+         * The default implementation of `accept` checks the file's mime type or
+         * extension against this list. This is a comma separated list of mime
+         * types or file extensions.
+         *
+         * Eg.: `image/*,application/pdf,.psd`
+         *
+         * If the Dropzone is `clickable` this option will also be used as
+         * [`accept`](https://developer.mozilla.org/en-US/docs/HTML/Element/input#attr-accept)
+         * parameter on the hidden file input as well.
+         */
+        acceptedFiles: null,
+
+        /**
+         * **Deprecated!**
+         * Use acceptedFiles instead.
+         */
+        acceptedMimeTypes: null,
+
+        /**
+         * If false, files will be added to the queue but the queue will not be
+         * processed automatically.
+         * This can be useful if you need some additional user input before sending
+         * files (or if you want want all files sent at once).
+         * If you're ready to send the file simply call `myDropzone.processQueue()`.
+         *
+         * See the [enqueuing file uploads](#enqueuing-file-uploads) documentation
+         * section for more information.
+         */
+        autoProcessQueue: true,
+
+        /**
+         * If false, files added to the dropzone will not be queued by default.
+         * You'll have to call `enqueueFile(file)` manually.
+         */
+        autoQueue: true,
+
+        /**
+         * If `true`, this will add a link to every file preview to remove or cancel (if
+         * already uploading) the file. The `dictCancelUpload`, `dictCancelUploadConfirmation`
+         * and `dictRemoveFile` options are used for the wording.
+         */
+        addRemoveLinks: false,
+
+        /**
+         * Defines where to display the file previews – if `null` the
+         * Dropzone element itself is used. Can be a plain `HTMLElement` or a CSS
+         * selector. The element should have the `dropzone-previews` class so
+         * the previews are displayed properly.
+         */
+        previewsContainer: null,
+
+        /**
+         * This is the element the hidden input field (which is used when clicking on the
+         * dropzone to trigger file selection) will be appended to. This might
+         * be important in case you use frameworks to switch the content of your page.
+         *
+         * Can be a selector string, or an element directly.
+         */
+        hiddenInputContainer: "body",
+
+        /**
+         * If null, no capture type will be specified
+         * If camera, mobile devices will skip the file selection and choose camera
+         * If microphone, mobile devices will skip the file selection and choose the microphone
+         * If camcorder, mobile devices will skip the file selection and choose the camera in video mode
+         * On apple devices multiple must be set to false.  AcceptedFiles may need to
+         * be set to an appropriate mime type (e.g. "image/*", "audio/*", or "video/*").
+         */
+        capture: null,
+
+        /**
+         * **Deprecated**. Use `renameFile` instead.
+         */
+        renameFilename: null,
+
+        /**
+         * A function that is invoked before the file is uploaded to the server and renames the file.
+         * This function gets the `File` as argument and can use the `file.name`. The actual name of the
+         * file that gets used during the upload can be accessed through `file.upload.filename`.
+         */
+        renameFile: null,
+
+        /**
+         * If `true` the fallback will be forced. This is very useful to test your server
+         * implementations first and make sure that everything works as
+         * expected without dropzone if you experience problems, and to test
+         * how your fallbacks will look.
+         */
+        forceFallback: false,
+
+        /**
+         * The text used before any files are dropped.
+         */
+        dictDefaultMessage: "Drop files here to upload",
+
+        /**
+         * The text that replaces the default message text it the browser is not supported.
+         */
+        dictFallbackMessage: "Your browser does not support drag'n'drop file uploads.",
+
+        /**
+         * The text that will be added before the fallback form.
+         * If you provide a  fallback element yourself, or if this option is `null` this will
+         * be ignored.
+         */
+        dictFallbackText: "Please use the fallback form below to upload your files like in the olden days.",
+
+        /**
+         * If the filesize is too big.
+         * `{{filesize}}` and `{{maxFilesize}}` will be replaced with the respective configuration values.
+         */
+        dictFileTooBig: "File is too big ({{filesize}}MiB). Max filesize: {{maxFilesize}}MiB.",
+
+        /**
+         * If the file doesn't match the file type.
+         */
+        dictInvalidFileType: "You can't upload files of this type.",
+
+        /**
+         * If the server response was invalid.
+         * `{{statusCode}}` will be replaced with the servers status code.
+         */
+        dictResponseError: "Server responded with {{statusCode}} code.",
+
+        /**
+         * If `addRemoveLinks` is true, the text to be used for the cancel upload link.
+         */
+        dictCancelUpload: "Cancel upload",
+
+        /**
+         * The text that is displayed if an upload was manually canceled
+         */
+        dictUploadCanceled: "Upload canceled.",
+
+        /**
+         * If `addRemoveLinks` is true, the text to be used for confirmation when cancelling upload.
+         */
+        dictCancelUploadConfirmation: "Are you sure you want to cancel this upload?",
+
+        /**
+         * If `addRemoveLinks` is true, the text to be used to remove a file.
+         */
+        dictRemoveFile: "Remove file",
+
+        /**
+         * If this is not null, then the user will be prompted before removing a file.
+         */
+        dictRemoveFileConfirmation: null,
+
+        /**
+         * Displayed if `maxFiles` is st and exceeded.
+         * The string `{{maxFiles}}` will be replaced by the configuration value.
+         */
+        dictMaxFilesExceeded: "You can not upload any more files.",
+
+        /**
+         * Allows you to translate the different units. Starting with `tb` for terabytes and going down to
+         * `b` for bytes.
+         */
+        dictFileSizeUnits: {
+          tb: "TB",
+          gb: "GB",
+          mb: "MB",
+          kb: "KB",
+          b: "b"
+        },
+
+        /**
+         * Called when dropzone initialized
+         * You can add event listeners here
+         */
+        init: function init() {},
+
+        /**
+         * Can be an **object** of additional parameters to transfer to the server, **or** a `Function`
+         * that gets invoked with the `files`, `xhr` and, if it's a chunked upload, `chunk` arguments. In case
+         * of a function, this needs to return a map.
+         *
+         * The default implementation does nothing for normal uploads, but adds relevant information for
+         * chunked uploads.
+         *
+         * This is the same as adding hidden input fields in the form element.
+         */
+        params: function params(files, xhr, chunk) {
+          if (chunk) {
+            return {
+              dzuuid: chunk.file.upload.uuid,
+              dzchunkindex: chunk.index,
+              dztotalfilesize: chunk.file.size,
+              dzchunksize: this.options.chunkSize,
+              dztotalchunkcount: chunk.file.upload.totalChunkCount,
+              dzchunkbyteoffset: chunk.index * this.options.chunkSize
+            };
+          }
+        },
+
+        /**
+         * A function that gets a [file](https://developer.mozilla.org/en-US/docs/DOM/File)
+         * and a `done` function as parameters.
+         *
+         * If the done function is invoked without arguments, the file is "accepted" and will
+         * be processed. If you pass an error message, the file is rejected, and the error
+         * message will be displayed.
+         * This function will not be called if the file is too big or doesn't match the mime types.
+         */
+        accept: function accept(file, done) {
+          return done();
+        },
+
+        /**
+         * The callback that will be invoked when all chunks have been uploaded for a file.
+         * It gets the file for which the chunks have been uploaded as the first parameter,
+         * and the `done` function as second. `done()` needs to be invoked when everything
+         * needed to finish the upload process is done.
+         */
+        chunksUploaded: function chunksUploaded(file, done) {
+          done();
+        },
+
+        /**
+         * Gets called when the browser is not supported.
+         * The default implementation shows the fallback input field and adds
+         * a text.
+         */
+        fallback: function fallback() {
+          // This code should pass in IE7... :(
+          var messageElement;
+          this.element.className = "".concat(this.element.className, " dz-browser-not-supported");
+
+          var _iterator2 = _createForOfIteratorHelper(this.element.getElementsByTagName("div")),
+              _step2;
+
+          try {
+            for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
+              var child = _step2.value;
+
+              if (/(^| )dz-message($| )/.test(child.className)) {
+                messageElement = child;
+                child.className = "dz-message"; // Removes the 'dz-default' class
+
+                break;
+              }
+            }
+          } catch (err) {
+            _iterator2.e(err);
+          } finally {
+            _iterator2.f();
+          }
+
+          if (!messageElement) {
+            messageElement = Dropzone.createElement("<div class=\"dz-message\"><span></span></div>");
+            this.element.appendChild(messageElement);
+          }
+
+          var span = messageElement.getElementsByTagName("span")[0];
+
+          if (span) {
+            if (span.textContent != null) {
+              span.textContent = this.options.dictFallbackMessage;
+            } else if (span.innerText != null) {
+              span.innerText = this.options.dictFallbackMessage;
+            }
+          }
+
+          return this.element.appendChild(this.getFallbackForm());
+        },
+
+        /**
+         * Gets called to calculate the thumbnail dimensions.
+         *
+         * It gets `file`, `width` and `height` (both may be `null`) as parameters and must return an object containing:
+         *
+         *  - `srcWidth` & `srcHeight` (required)
+         *  - `trgWidth` & `trgHeight` (required)
+         *  - `srcX` & `srcY` (optional, default `0`)
+         *  - `trgX` & `trgY` (optional, default `0`)
+         *
+         * Those values are going to be used by `ctx.drawImage()`.
+         */
+        resize: function resize(file, width, height, resizeMethod) {
+          var info = {
+            srcX: 0,
+            srcY: 0,
+            srcWidth: file.width,
+            srcHeight: file.height
+          };
+          var srcRatio = file.width / file.height; // Automatically calculate dimensions if not specified
+
+          if (width == null && height == null) {
+            width = info.srcWidth;
+            height = info.srcHeight;
+          } else if (width == null) {
+            width = height * srcRatio;
+          } else if (height == null) {
+            height = width / srcRatio;
+          } // Make sure images aren't upscaled
+
+
+          width = Math.min(width, info.srcWidth);
+          height = Math.min(height, info.srcHeight);
+          var trgRatio = width / height;
+
+          if (info.srcWidth > width || info.srcHeight > height) {
+            // Image is bigger and needs rescaling
+            if (resizeMethod === 'crop') {
+              if (srcRatio > trgRatio) {
+                info.srcHeight = file.height;
+                info.srcWidth = info.srcHeight * trgRatio;
+              } else {
+                info.srcWidth = file.width;
+                info.srcHeight = info.srcWidth / trgRatio;
+              }
+            } else if (resizeMethod === 'contain') {
+              // Method 'contain'
+              if (srcRatio > trgRatio) {
+                height = width / srcRatio;
+              } else {
+                width = height * srcRatio;
+              }
+            } else {
+              throw new Error("Unknown resizeMethod '".concat(resizeMethod, "'"));
+            }
+          }
+
+          info.srcX = (file.width - info.srcWidth) / 2;
+          info.srcY = (file.height - info.srcHeight) / 2;
+          info.trgWidth = width;
+          info.trgHeight = height;
+          return info;
+        },
+
+        /**
+         * Can be used to transform the file (for example, resize an image if necessary).
+         *
+         * The default implementation uses `resizeWidth` and `resizeHeight` (if provided) and resizes
+         * images according to those dimensions.
+         *
+         * Gets the `file` as the first parameter, and a `done()` function as the second, that needs
+         * to be invoked with the file when the transformation is done.
+         */
+        transformFile: function transformFile(file, done) {
+          if ((this.options.resizeWidth || this.options.resizeHeight) && file.type.match(/image.*/)) {
+            return this.resizeImage(file, this.options.resizeWidth, this.options.resizeHeight, this.options.resizeMethod, done);
+          } else {
+            return done(file);
+          }
+        },
+
+        /**
+         * A string that contains the template used for each dropped
+         * file. Change it to fulfill your needs but make sure to properly
+         * provide all elements.
+         *
+         * If you want to use an actual HTML element instead of providing a String
+         * as a config option, you could create a div with the id `tpl`,
+         * put the template inside it and provide the element like this:
+         *
+         *     document
+         *       .querySelector('#tpl')
+         *       .innerHTML
+         *
+         */
+        previewTemplate: "<div class=\"dz-preview dz-file-preview\">\n  <div class=\"dz-image\"><img data-dz-thumbnail /></div>\n  <div class=\"dz-details\">\n    <div class=\"dz-size\"><span data-dz-size></span></div>\n    <div class=\"dz-filename\"><span data-dz-name></span></div>\n  </div>\n  <div class=\"dz-progress\"><span class=\"dz-upload\" data-dz-uploadprogress></span></div>\n  <div class=\"dz-error-message\"><span data-dz-errormessage></span></div>\n  <div class=\"dz-success-mark\">\n    <svg width=\"54px\" height=\"54px\" viewBox=\"0 0 54 54\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n      <title>Check</title>\n      <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n        <path d=\"M23.5,31.8431458 L17.5852419,25.9283877 C16.0248253,24.3679711 13.4910294,24.366835 11.9289322,25.9289322 C10.3700136,27.4878508 10.3665912,30.0234455 11.9283877,31.5852419 L20.4147581,40.0716123 C20.5133999,40.1702541 20.6159315,40.2626649 20.7218615,40.3488435 C22.2835669,41.8725651 24.794234,41.8626202 26.3461564,40.3106978 L43.3106978,23.3461564 C44.8771021,21.7797521 44.8758057,19.2483887 43.3137085,17.6862915 C41.7547899,16.1273729 39.2176035,16.1255422 37.6538436,17.6893022 L23.5,31.8431458 Z M27,53 C41.3594035,53 53,41.3594035 53,27 C53,12.6405965 41.3594035,1 27,1 C12.6405965,1 1,12.6405965 1,27 C1,41.3594035 12.6405965,53 27,53 Z\" stroke-opacity=\"0.198794158\" stroke=\"#747474\" fill-opacity=\"0.816519475\" fill=\"#FFFFFF\"></path>\n      </g>\n    </svg>\n  </div>\n  <div class=\"dz-error-mark\">\n    <svg width=\"54px\" height=\"54px\" viewBox=\"0 0 54 54\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n      <title>Error</title>\n      <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n        <g stroke=\"#747474\" stroke-opacity=\"0.198794158\" fill=\"#FFFFFF\" fill-opacity=\"0.816519475\">\n          <path d=\"M32.6568542,29 L38.3106978,23.3461564 C39.8771021,21.7797521 39.8758057,19.2483887 38.3137085,17.6862915 C36.7547899,16.1273729 34.2176035,16.1255422 32.6538436,17.6893022 L27,23.3431458 L21.3461564,17.6893022 C19.7823965,16.1255422 17.2452101,16.1273729 15.6862915,17.6862915 C14.1241943,19.2483887 14.1228979,21.7797521 15.6893022,23.3461564 L21.3431458,29 L15.6893022,34.6538436 C14.1228979,36.2202479 14.1241943,38.7516113 15.6862915,40.3137085 C17.2452101,41.8726271 19.7823965,41.8744578 21.3461564,40.3106978 L27,34.6568542 L32.6538436,40.3106978 C34.2176035,41.8744578 36.7547899,41.8726271 38.3137085,40.3137085 C39.8758057,38.7516113 39.8771021,36.2202479 38.3106978,34.6538436 L32.6568542,29 Z M27,53 C41.3594035,53 53,41.3594035 53,27 C53,12.6405965 41.3594035,1 27,1 C12.6405965,1 1,12.6405965 1,27 C1,41.3594035 12.6405965,53 27,53 Z\"></path>\n        </g>\n      </g>\n    </svg>\n  </div>\n</div>",
+        // END OPTIONS
+        // (Required by the dropzone documentation parser)
+
+        /*
+         Those functions register themselves to the events on init and handle all
+         the user interface specific stuff. Overwriting them won't break the upload
+         but can break the way it's displayed.
+         You can overwrite them if you don't like the default behavior. If you just
+         want to add an additional event handler, register it on the dropzone object
+         and don't overwrite those options.
+         */
+        // Those are self explanatory and simply concern the DragnDrop.
+        drop: function drop(e) {
+          return this.element.classList.remove("dz-drag-hover");
+        },
+        dragstart: function dragstart(e) {},
+        dragend: function dragend(e) {
+          return this.element.classList.remove("dz-drag-hover");
+        },
+        dragenter: function dragenter(e) {
+          return this.element.classList.add("dz-drag-hover");
+        },
+        dragover: function dragover(e) {
+          return this.element.classList.add("dz-drag-hover");
+        },
+        dragleave: function dragleave(e) {
+          return this.element.classList.remove("dz-drag-hover");
+        },
+        paste: function paste(e) {},
+        // Called whenever there are no files left in the dropzone anymore, and the
+        // dropzone should be displayed as if in the initial state.
+        reset: function reset() {
+          return this.element.classList.remove("dz-started");
+        },
+        // Called when a file is added to the queue
+        // Receives `file`
+        addedfile: function addedfile(file) {
+          var _this2 = this;
+
+          if (this.element === this.previewsContainer) {
+            this.element.classList.add("dz-started");
+          }
+
+          if (this.previewsContainer) {
+            file.previewElement = Dropzone.createElement(this.options.previewTemplate.trim());
+            file.previewTemplate = file.previewElement; // Backwards compatibility
+
+            this.previewsContainer.appendChild(file.previewElement);
+
+            var _iterator3 = _createForOfIteratorHelper(file.previewElement.querySelectorAll("[data-dz-name]")),
+                _step3;
+
+            try {
+              for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
+                var node = _step3.value;
+                node.textContent = file.name;
+              }
+            } catch (err) {
+              _iterator3.e(err);
+            } finally {
+              _iterator3.f();
+            }
+
+            var _iterator4 = _createForOfIteratorHelper(file.previewElement.querySelectorAll("[data-dz-size]")),
+                _step4;
+
+            try {
+              for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
+                node = _step4.value;
+                node.innerHTML = this.filesize(file.size);
+              }
+            } catch (err) {
+              _iterator4.e(err);
+            } finally {
+              _iterator4.f();
+            }
+
+            if (this.options.addRemoveLinks) {
+              file._removeLink = Dropzone.createElement("<a class=\"dz-remove\" href=\"javascript:undefined;\" data-dz-remove>".concat(this.options.dictRemoveFile, "</a>"));
+              file.previewElement.appendChild(file._removeLink);
+            }
+
+            var removeFileEvent = function removeFileEvent(e) {
+              e.preventDefault();
+              e.stopPropagation();
+
+              if (file.status === Dropzone.UPLOADING) {
+                return Dropzone.confirm(_this2.options.dictCancelUploadConfirmation, function () {
+                  return _this2.removeFile(file);
+                });
+              } else {
+                if (_this2.options.dictRemoveFileConfirmation) {
+                  return Dropzone.confirm(_this2.options.dictRemoveFileConfirmation, function () {
+                    return _this2.removeFile(file);
+                  });
+                } else {
+                  return _this2.removeFile(file);
+                }
+              }
+            };
+
+            var _iterator5 = _createForOfIteratorHelper(file.previewElement.querySelectorAll("[data-dz-remove]")),
+                _step5;
+
+            try {
+              for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
+                var removeLink = _step5.value;
+                removeLink.addEventListener("click", removeFileEvent);
+              }
+            } catch (err) {
+              _iterator5.e(err);
+            } finally {
+              _iterator5.f();
+            }
+          }
+        },
+        // Called whenever a file is removed.
+        removedfile: function removedfile(file) {
+          if (file.previewElement != null && file.previewElement.parentNode != null) {
+            file.previewElement.parentNode.removeChild(file.previewElement);
+          }
+
+          return this._updateMaxFilesReachedClass();
+        },
+        // Called when a thumbnail has been generated
+        // Receives `file` and `dataUrl`
+        thumbnail: function thumbnail(file, dataUrl) {
+          if (file.previewElement) {
+            file.previewElement.classList.remove("dz-file-preview");
+
+            var _iterator6 = _createForOfIteratorHelper(file.previewElement.querySelectorAll("[data-dz-thumbnail]")),
+                _step6;
+
+            try {
+              for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {
+                var thumbnailElement = _step6.value;
+                thumbnailElement.alt = file.name;
+                thumbnailElement.src = dataUrl;
+              }
+            } catch (err) {
+              _iterator6.e(err);
+            } finally {
+              _iterator6.f();
+            }
+
+            return setTimeout(function () {
+              return file.previewElement.classList.add("dz-image-preview");
+            }, 1);
+          }
+        },
+        // Called whenever an error occurs
+        // Receives `file` and `message`
+        error: function error(file, message) {
+          if (file.previewElement) {
+            file.previewElement.classList.add("dz-error");
+
+            if (typeof message !== "string" && message.error) {
+              message = message.error;
+            }
+
+            var _iterator7 = _createForOfIteratorHelper(file.previewElement.querySelectorAll("[data-dz-errormessage]")),
+                _step7;
+
+            try {
+              for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {
+                var node = _step7.value;
+                node.textContent = message;
+              }
+            } catch (err) {
+              _iterator7.e(err);
+            } finally {
+              _iterator7.f();
+            }
+          }
+        },
+        errormultiple: function errormultiple() {},
+        // Called when a file gets processed. Since there is a cue, not all added
+        // files are processed immediately.
+        // Receives `file`
+        processing: function processing(file) {
+          if (file.previewElement) {
+            file.previewElement.classList.add("dz-processing");
+
+            if (file._removeLink) {
+              return file._removeLink.innerHTML = this.options.dictCancelUpload;
+            }
+          }
+        },
+        processingmultiple: function processingmultiple() {},
+        // Called whenever the upload progress gets updated.
+        // Receives `file`, `progress` (percentage 0-100) and `bytesSent`.
+        // To get the total number of bytes of the file, use `file.size`
+        uploadprogress: function uploadprogress(file, progress, bytesSent) {
+          if (file.previewElement) {
+            var _iterator8 = _createForOfIteratorHelper(file.previewElement.querySelectorAll("[data-dz-uploadprogress]")),
+                _step8;
+
+            try {
+              for (_iterator8.s(); !(_step8 = _iterator8.n()).done;) {
+                var node = _step8.value;
+                node.nodeName === 'PROGRESS' ? node.value = progress : node.style.width = "".concat(progress, "%");
+              }
+            } catch (err) {
+              _iterator8.e(err);
+            } finally {
+              _iterator8.f();
+            }
+          }
+        },
+        // Called whenever the total upload progress gets updated.
+        // Called with totalUploadProgress (0-100), totalBytes and totalBytesSent
+        totaluploadprogress: function totaluploadprogress() {},
+        // Called just before the file is sent. Gets the `xhr` object as second
+        // parameter, so you can modify it (for example to add a CSRF token) and a
+        // `formData` object to add additional information.
+        sending: function sending() {},
+        sendingmultiple: function sendingmultiple() {},
+        // When the complete upload is finished and successful
+        // Receives `file`
+        success: function success(file) {
+          if (file.previewElement) {
+            return file.previewElement.classList.add("dz-success");
+          }
+        },
+        successmultiple: function successmultiple() {},
+        // When the upload is canceled.
+        canceled: function canceled(file) {
+          return this.emit("error", file, this.options.dictUploadCanceled);
+        },
+        canceledmultiple: function canceledmultiple() {},
+        // When the upload is finished, either with success or an error.
+        // Receives `file`
+        complete: function complete(file) {
+          if (file._removeLink) {
+            file._removeLink.innerHTML = this.options.dictRemoveFile;
+          }
+
+          if (file.previewElement) {
+            return file.previewElement.classList.add("dz-complete");
+          }
+        },
+        completemultiple: function completemultiple() {},
+        maxfilesexceeded: function maxfilesexceeded() {},
+        maxfilesreached: function maxfilesreached() {},
+        queuecomplete: function queuecomplete() {},
+        addedfiles: function addedfiles() {}
+      };
+      this.prototype._thumbnailQueue = [];
+      this.prototype._processingThumbnail = false;
+    } // global utility
+
+  }, {
+    key: "extend",
+    value: function extend(target) {
+      for (var _len2 = arguments.length, objects = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
+        objects[_key2 - 1] = arguments[_key2];
+      }
+
+      for (var _i = 0, _objects = objects; _i < _objects.length; _i++) {
+        var object = _objects[_i];
+
+        for (var key in object) {
+          var val = object[key];
+          target[key] = val;
+        }
+      }
+
+      return target;
+    }
+  }]);
+
+  function Dropzone(el, options) {
+    var _this;
+
+    _classCallCheck(this, Dropzone);
+
+    _this = _super.call(this);
+    var fallback, left;
+    _this.element = el; // For backwards compatibility since the version was in the prototype previously
+
+    _this.version = Dropzone.version;
+    _this.defaultOptions.previewTemplate = _this.defaultOptions.previewTemplate.replace(/\n*/g, "");
+    _this.clickableElements = [];
+    _this.listeners = [];
+    _this.files = []; // All files
+
+    if (typeof _this.element === "string") {
+      _this.element = document.querySelector(_this.element);
+    } // Not checking if instance of HTMLElement or Element since IE9 is extremely weird.
+
+
+    if (!_this.element || _this.element.nodeType == null) {
+      throw new Error("Invalid dropzone element.");
+    }
+
+    if (_this.element.dropzone) {
+      throw new Error("Dropzone already attached.");
+    } // Now add this dropzone to the instances.
+
+
+    Dropzone.instances.push(_assertThisInitialized(_this)); // Put the dropzone inside the element itself.
+
+    _this.element.dropzone = _assertThisInitialized(_this);
+    var elementOptions = (left = Dropzone.optionsForElement(_this.element)) != null ? left : {};
+    _this.options = Dropzone.extend({}, _this.defaultOptions, elementOptions, options != null ? options : {}); // If the browser failed, just call the fallback and leave
+
+    if (_this.options.forceFallback || !Dropzone.isBrowserSupported()) {
+      return _possibleConstructorReturn(_this, _this.options.fallback.call(_assertThisInitialized(_this)));
+    } // @options.url = @element.getAttribute "action" unless @options.url?
+
+
+    if (_this.options.url == null) {
+      _this.options.url = _this.element.getAttribute("action");
+    }
+
+    if (!_this.options.url) {
+      throw new Error("No URL provided.");
+    }
+
+    if (_this.options.acceptedFiles && _this.options.acceptedMimeTypes) {
+      throw new Error("You can't provide both 'acceptedFiles' and 'acceptedMimeTypes'. 'acceptedMimeTypes' is deprecated.");
+    }
+
+    if (_this.options.uploadMultiple && _this.options.chunking) {
+      throw new Error('You cannot set both: uploadMultiple and chunking.');
+    } // Backwards compatibility
+
+
+    if (_this.options.acceptedMimeTypes) {
+      _this.options.acceptedFiles = _this.options.acceptedMimeTypes;
+      delete _this.options.acceptedMimeTypes;
+    } // Backwards compatibility
+
+
+    if (_this.options.renameFilename != null) {
+      _this.options.renameFile = function (file) {
+        return _this.options.renameFilename.call(_assertThisInitialized(_this), file.name, file);
+      };
+    }
+
+    if (typeof _this.options.method === 'string') {
+      _this.options.method = _this.options.method.toUpperCase();
+    }
+
+    if ((fallback = _this.getExistingFallback()) && fallback.parentNode) {
+      // Remove the fallback
+      fallback.parentNode.removeChild(fallback);
+    } // Display previews in the previewsContainer element or the Dropzone element unless explicitly set to false
+
+
+    if (_this.options.previewsContainer !== false) {
+      if (_this.options.previewsContainer) {
+        _this.previewsContainer = Dropzone.getElement(_this.options.previewsContainer, "previewsContainer");
+      } else {
+        _this.previewsContainer = _this.element;
+      }
+    }
+
+    if (_this.options.clickable) {
+      if (_this.options.clickable === true) {
+        _this.clickableElements = [_this.element];
+      } else {
+        _this.clickableElements = Dropzone.getElements(_this.options.clickable, "clickable");
+      }
+    }
+
+    _this.init();
+
+    return _this;
+  } // Returns all files that have been accepted
+
+
+  _createClass(Dropzone, [{
+    key: "getAcceptedFiles",
+    value: function getAcceptedFiles() {
+      return this.files.filter(function (file) {
+        return file.accepted;
+      }).map(function (file) {
+        return file;
+      });
+    } // Returns all files that have been rejected
+    // Not sure when that's going to be useful, but added for completeness.
+
+  }, {
+    key: "getRejectedFiles",
+    value: function getRejectedFiles() {
+      return this.files.filter(function (file) {
+        return !file.accepted;
+      }).map(function (file) {
+        return file;
+      });
+    }
+  }, {
+    key: "getFilesWithStatus",
+    value: function getFilesWithStatus(status) {
+      return this.files.filter(function (file) {
+        return file.status === status;
+      }).map(function (file) {
+        return file;
+      });
+    } // Returns all files that are in the queue
+
+  }, {
+    key: "getQueuedFiles",
+    value: function getQueuedFiles() {
+      return this.getFilesWithStatus(Dropzone.QUEUED);
+    }
+  }, {
+    key: "getUploadingFiles",
+    value: function getUploadingFiles() {
+      return this.getFilesWithStatus(Dropzone.UPLOADING);
+    }
+  }, {
+    key: "getAddedFiles",
+    value: function getAddedFiles() {
+      return this.getFilesWithStatus(Dropzone.ADDED);
+    } // Files that are either queued or uploading
+
+  }, {
+    key: "getActiveFiles",
+    value: function getActiveFiles() {
+      return this.files.filter(function (file) {
+        return file.status === Dropzone.UPLOADING || file.status === Dropzone.QUEUED;
+      }).map(function (file) {
+        return file;
+      });
+    } // The function that gets called when Dropzone is initialized. You
+    // can (and should) setup event listeners inside this function.
+
+  }, {
+    key: "init",
+    value: function init() {
+      var _this3 = this;
+
+      // In case it isn't set already
+      if (this.element.tagName === "form") {
+        this.element.setAttribute("enctype", "multipart/form-data");
+      }
+
+      if (this.element.classList.contains("dropzone") && !this.element.querySelector(".dz-message")) {
+        this.element.appendChild(Dropzone.createElement("<div class=\"dz-default dz-message\"><button class=\"dz-button\" type=\"button\">".concat(this.options.dictDefaultMessage, "</button></div>")));
+      }
+
+      if (this.clickableElements.length) {
+        var setupHiddenFileInput = function setupHiddenFileInput() {
+          if (_this3.hiddenFileInput) {
+            _this3.hiddenFileInput.parentNode.removeChild(_this3.hiddenFileInput);
+          }
+
+          _this3.hiddenFileInput = document.createElement("input");
+
+          _this3.hiddenFileInput.setAttribute("type", "file");
+
+          if (_this3.options.maxFiles === null || _this3.options.maxFiles > 1) {
+            _this3.hiddenFileInput.setAttribute("multiple", "multiple");
+          }
+
+          _this3.hiddenFileInput.className = "dz-hidden-input";
+
+          if (_this3.options.acceptedFiles !== null) {
+            _this3.hiddenFileInput.setAttribute("accept", _this3.options.acceptedFiles);
+          }
+
+          if (_this3.options.capture !== null) {
+            _this3.hiddenFileInput.setAttribute("capture", _this3.options.capture);
+          } // Not setting `display="none"` because some browsers don't accept clicks
+          // on elements that aren't displayed.
+
+
+          _this3.hiddenFileInput.style.visibility = "hidden";
+          _this3.hiddenFileInput.style.position = "absolute";
+          _this3.hiddenFileInput.style.top = "0";
+          _this3.hiddenFileInput.style.left = "0";
+          _this3.hiddenFileInput.style.height = "0";
+          _this3.hiddenFileInput.style.width = "0";
+          Dropzone.getElement(_this3.options.hiddenInputContainer, 'hiddenInputContainer').appendChild(_this3.hiddenFileInput);
+          return _this3.hiddenFileInput.addEventListener("change", function () {
+            var files = _this3.hiddenFileInput.files;
+
+            if (files.length) {
+              var _iterator9 = _createForOfIteratorHelper(files),
+                  _step9;
+
+              try {
+                for (_iterator9.s(); !(_step9 = _iterator9.n()).done;) {
+                  var file = _step9.value;
+
+                  _this3.addFile(file);
+                }
+              } catch (err) {
+                _iterator9.e(err);
+              } finally {
+                _iterator9.f();
+              }
+            }
+
+            _this3.emit("addedfiles", files);
+
+            return setupHiddenFileInput();
+          });
+        };
+
+        setupHiddenFileInput();
+      }
+
+      this.URL = window.URL !== null ? window.URL : window.webkitURL; // Setup all event listeners on the Dropzone object itself.
+      // They're not in @setupEventListeners() because they shouldn't be removed
+      // again when the dropzone gets disabled.
+
+      var _iterator10 = _createForOfIteratorHelper(this.events),
+          _step10;
+
+      try {
+        for (_iterator10.s(); !(_step10 = _iterator10.n()).done;) {
+          var eventName = _step10.value;
+          this.on(eventName, this.options[eventName]);
+        }
+      } catch (err) {
+        _iterator10.e(err);
+      } finally {
+        _iterator10.f();
+      }
+
+      this.on("uploadprogress", function () {
+        return _this3.updateTotalUploadProgress();
+      });
+      this.on("removedfile", function () {
+        return _this3.updateTotalUploadProgress();
+      });
+      this.on("canceled", function (file) {
+        return _this3.emit("complete", file);
+      }); // Emit a `queuecomplete` event if all files finished uploading.
+
+      this.on("complete", function (file) {
+        if (_this3.getAddedFiles().length === 0 && _this3.getUploadingFiles().length === 0 && _this3.getQueuedFiles().length === 0) {
+          // This needs to be deferred so that `queuecomplete` really triggers after `complete`
+          return setTimeout(function () {
+            return _this3.emit("queuecomplete");
+          }, 0);
+        }
+      });
+
+      var containsFiles = function containsFiles(e) {
+        if (e.dataTransfer.types) {
+          // Because e.dataTransfer.types is an Object in
+          // IE, we need to iterate like this instead of
+          // using e.dataTransfer.types.some()
+          for (var i = 0; i < e.dataTransfer.types.length; i++) {
+            if (e.dataTransfer.types[i] === "Files") return true;
+          }
+        }
+
+        return false;
+      };
+
+      var noPropagation = function noPropagation(e) {
+        // If there are no files, we don't want to stop
+        // propagation so we don't interfere with other
+        // drag and drop behaviour.
+        if (!containsFiles(e)) return;
+        e.stopPropagation();
+
+        if (e.preventDefault) {
+          return e.preventDefault();
+        } else {
+          return e.returnValue = false;
+        }
+      }; // Create the listeners
+
+
+      this.listeners = [{
+        element: this.element,
+        events: {
+          "dragstart": function dragstart(e) {
+            return _this3.emit("dragstart", e);
+          },
+          "dragenter": function dragenter(e) {
+            noPropagation(e);
+            return _this3.emit("dragenter", e);
+          },
+          "dragover": function dragover(e) {
+            // Makes it possible to drag files from chrome's download bar
+            // http://stackoverflow.com/questions/19526430/drag-and-drop-file-uploads-from-chrome-downloads-bar
+            // Try is required to prevent bug in Internet Explorer 11 (SCRIPT65535 exception)
+            var efct;
+
+            try {
+              efct = e.dataTransfer.effectAllowed;
+            } catch (error) {}
+
+            e.dataTransfer.dropEffect = 'move' === efct || 'linkMove' === efct ? 'move' : 'copy';
+            noPropagation(e);
+            return _this3.emit("dragover", e);
+          },
+          "dragleave": function dragleave(e) {
+            return _this3.emit("dragleave", e);
+          },
+          "drop": function drop(e) {
+            noPropagation(e);
+            return _this3.drop(e);
+          },
+          "dragend": function dragend(e) {
+            return _this3.emit("dragend", e);
+          }
+        } // This is disabled right now, because the browsers don't implement it properly.
+        // "paste": (e) =>
+        //   noPropagation e
+        //   @paste e
+
+      }];
+      this.clickableElements.forEach(function (clickableElement) {
+        return _this3.listeners.push({
+          element: clickableElement,
+          events: {
+            "click": function click(evt) {
+              // Only the actual dropzone or the message element should trigger file selection
+              if (clickableElement !== _this3.element || evt.target === _this3.element || Dropzone.elementInside(evt.target, _this3.element.querySelector(".dz-message"))) {
+                _this3.hiddenFileInput.click(); // Forward the click
+
+              }
+
+              return true;
+            }
+          }
+        });
+      });
+      this.enable();
+      return this.options.init.call(this);
+    } // Not fully tested yet
+
+  }, {
+    key: "destroy",
+    value: function destroy() {
+      this.disable();
+      this.removeAllFiles(true);
+
+      if (this.hiddenFileInput != null ? this.hiddenFileInput.parentNode : undefined) {
+        this.hiddenFileInput.parentNode.removeChild(this.hiddenFileInput);
+        this.hiddenFileInput = null;
+      }
+
+      delete this.element.dropzone;
+      return Dropzone.instances.splice(Dropzone.instances.indexOf(this), 1);
+    }
+  }, {
+    key: "updateTotalUploadProgress",
+    value: function updateTotalUploadProgress() {
+      var totalUploadProgress;
+      var totalBytesSent = 0;
+      var totalBytes = 0;
+      var activeFiles = this.getActiveFiles();
+
+      if (activeFiles.length) {
+        var _iterator11 = _createForOfIteratorHelper(this.getActiveFiles()),
+            _step11;
+
+        try {
+          for (_iterator11.s(); !(_step11 = _iterator11.n()).done;) {
+            var file = _step11.value;
+            totalBytesSent += file.upload.bytesSent;
+            totalBytes += file.upload.total;
+          }
+        } catch (err) {
+          _iterator11.e(err);
+        } finally {
+          _iterator11.f();
+        }
+
+        totalUploadProgress = 100 * totalBytesSent / totalBytes;
+      } else {
+        totalUploadProgress = 100;
+      }
+
+      return this.emit("totaluploadprogress", totalUploadProgress, totalBytes, totalBytesSent);
+    } // @options.paramName can be a function taking one parameter rather than a string.
+    // A parameter name for a file is obtained simply by calling this with an index number.
+
+  }, {
+    key: "_getParamName",
+    value: function _getParamName(n) {
+      if (typeof this.options.paramName === "function") {
+        return this.options.paramName(n);
+      } else {
+        return "".concat(this.options.paramName).concat(this.options.uploadMultiple ? "[".concat(n, "]") : "");
+      }
+    } // If @options.renameFile is a function,
+    // the function will be used to rename the file.name before appending it to the formData
+
+  }, {
+    key: "_renameFile",
+    value: function _renameFile(file) {
+      if (typeof this.options.renameFile !== "function") {
+        return file.name;
+      }
+
+      return this.options.renameFile(file);
+    } // Returns a form that can be used as fallback if the browser does not support DragnDrop
+    //
+    // If the dropzone is already a form, only the input field and button are returned. Otherwise a complete form element is provided.
+    // This code has to pass in IE7 :(
+
+  }, {
+    key: "getFallbackForm",
+    value: function getFallbackForm() {
+      var existingFallback, form;
+
+      if (existingFallback = this.getExistingFallback()) {
+        return existingFallback;
+      }
+
+      var fieldsString = "<div class=\"dz-fallback\">";
+
+      if (this.options.dictFallbackText) {
+        fieldsString += "<p>".concat(this.options.dictFallbackText, "</p>");
+      }
+
+      fieldsString += "<input type=\"file\" name=\"".concat(this._getParamName(0), "\" ").concat(this.options.uploadMultiple ? 'multiple="multiple"' : undefined, " /><input type=\"submit\" value=\"Upload!\"></div>");
+      var fields = Dropzone.createElement(fieldsString);
+
+      if (this.element.tagName !== "FORM") {
+        form = Dropzone.createElement("<form action=\"".concat(this.options.url, "\" enctype=\"multipart/form-data\" method=\"").concat(this.options.method, "\"></form>"));
+        form.appendChild(fields);
+      } else {
+        // Make sure that the enctype and method attributes are set properly
+        this.element.setAttribute("enctype", "multipart/form-data");
+        this.element.setAttribute("method", this.options.method);
+      }
+
+      return form != null ? form : fields;
+    } // Returns the fallback elements if they exist already
+    //
+    // This code has to pass in IE7 :(
+
+  }, {
+    key: "getExistingFallback",
+    value: function getExistingFallback() {
+      var getFallback = function getFallback(elements) {
+        var _iterator12 = _createForOfIteratorHelper(elements),
+            _step12;
+
+        try {
+          for (_iterator12.s(); !(_step12 = _iterator12.n()).done;) {
+            var el = _step12.value;
+
+            if (/(^| )fallback($| )/.test(el.className)) {
+              return el;
+            }
+          }
+        } catch (err) {
+          _iterator12.e(err);
+        } finally {
+          _iterator12.f();
+        }
+      };
+
+      for (var _i2 = 0, _arr = ["div", "form"]; _i2 < _arr.length; _i2++) {
+        var tagName = _arr[_i2];
+        var fallback;
+
+        if (fallback = getFallback(this.element.getElementsByTagName(tagName))) {
+          return fallback;
+        }
+      }
+    } // Activates all listeners stored in @listeners
+
+  }, {
+    key: "setupEventListeners",
+    value: function setupEventListeners() {
+      return this.listeners.map(function (elementListeners) {
+        return function () {
+          var result = [];
+
+          for (var event in elementListeners.events) {
+            var listener = elementListeners.events[event];
+            result.push(elementListeners.element.addEventListener(event, listener, false));
+          }
+
+          return result;
+        }();
+      });
+    } // Deactivates all listeners stored in @listeners
+
+  }, {
+    key: "removeEventListeners",
+    value: function removeEventListeners() {
+      return this.listeners.map(function (elementListeners) {
+        return function () {
+          var result = [];
+
+          for (var event in elementListeners.events) {
+            var listener = elementListeners.events[event];
+            result.push(elementListeners.element.removeEventListener(event, listener, false));
+          }
+
+          return result;
+        }();
+      });
+    } // Removes all event listeners and cancels all files in the queue or being processed.
+
+  }, {
+    key: "disable",
+    value: function disable() {
+      var _this4 = this;
+
+      this.clickableElements.forEach(function (element) {
+        return element.classList.remove("dz-clickable");
+      });
+      this.removeEventListeners();
+      this.disabled = true;
+      return this.files.map(function (file) {
+        return _this4.cancelUpload(file);
+      });
+    }
+  }, {
+    key: "enable",
+    value: function enable() {
+      delete this.disabled;
+      this.clickableElements.forEach(function (element) {
+        return element.classList.add("dz-clickable");
+      });
+      return this.setupEventListeners();
+    } // Returns a nicely formatted filesize
+
+  }, {
+    key: "filesize",
+    value: function filesize(size) {
+      var selectedSize = 0;
+      var selectedUnit = "b";
+
+      if (size > 0) {
+        var units = ['tb', 'gb', 'mb', 'kb', 'b'];
+
+        for (var i = 0; i < units.length; i++) {
+          var unit = units[i];
+          var cutoff = Math.pow(this.options.filesizeBase, 4 - i) / 10;
+
+          if (size >= cutoff) {
+            selectedSize = size / Math.pow(this.options.filesizeBase, 4 - i);
+            selectedUnit = unit;
+            break;
+          }
+        }
+
+        selectedSize = Math.round(10 * selectedSize) / 10; // Cutting of digits
+      }
+
+      return "<strong>".concat(selectedSize, "</strong> ").concat(this.options.dictFileSizeUnits[selectedUnit]);
+    } // Adds or removes the `dz-max-files-reached` class from the form.
+
+  }, {
+    key: "_updateMaxFilesReachedClass",
+    value: function _updateMaxFilesReachedClass() {
+      if (this.options.maxFiles != null && this.getAcceptedFiles().length >= this.options.maxFiles) {
+        if (this.getAcceptedFiles().length === this.options.maxFiles) {
+          this.emit('maxfilesreached', this.files);
+        }
+
+        return this.element.classList.add("dz-max-files-reached");
+      } else {
+        return this.element.classList.remove("dz-max-files-reached");
+      }
+    }
+  }, {
+    key: "drop",
+    value: function drop(e) {
+      if (!e.dataTransfer) {
+        return;
+      }
+
+      this.emit("drop", e); // Convert the FileList to an Array
+      // This is necessary for IE11
+
+      var files = [];
+
+      for (var i = 0; i < e.dataTransfer.files.length; i++) {
+        files[i] = e.dataTransfer.files[i];
+      } // Even if it's a folder, files.length will contain the folders.
+
+
+      if (files.length) {
+        var items = e.dataTransfer.items;
+
+        if (items && items.length && items[0].webkitGetAsEntry != null) {
+          // The browser supports dropping of folders, so handle items instead of files
+          this._addFilesFromItems(items);
+        } else {
+          this.handleFiles(files);
+        }
+      }
+
+      this.emit("addedfiles", files);
+    }
+  }, {
+    key: "paste",
+    value: function paste(e) {
+      if (__guard__(e != null ? e.clipboardData : undefined, function (x) {
+        return x.items;
+      }) == null) {
+        return;
+      }
+
+      this.emit("paste", e);
+      var items = e.clipboardData.items;
+
+      if (items.length) {
+        return this._addFilesFromItems(items);
+      }
+    }
+  }, {
+    key: "handleFiles",
+    value: function handleFiles(files) {
+      var _iterator13 = _createForOfIteratorHelper(files),
+          _step13;
+
+      try {
+        for (_iterator13.s(); !(_step13 = _iterator13.n()).done;) {
+          var file = _step13.value;
+          this.addFile(file);
+        }
+      } catch (err) {
+        _iterator13.e(err);
+      } finally {
+        _iterator13.f();
+      }
+    } // When a folder is dropped (or files are pasted), items must be handled
+    // instead of files.
+
+  }, {
+    key: "_addFilesFromItems",
+    value: function _addFilesFromItems(items) {
+      var _this5 = this;
+
+      return function () {
+        var result = [];
+
+        var _iterator14 = _createForOfIteratorHelper(items),
+            _step14;
+
+        try {
+          for (_iterator14.s(); !(_step14 = _iterator14.n()).done;) {
+            var item = _step14.value;
+            var entry;
+
+            if (item.webkitGetAsEntry != null && (entry = item.webkitGetAsEntry())) {
+              if (entry.isFile) {
+                result.push(_this5.addFile(item.getAsFile()));
+              } else if (entry.isDirectory) {
+                // Append all files from that directory to files
+                result.push(_this5._addFilesFromDirectory(entry, entry.name));
+              } else {
+                result.push(undefined);
+              }
+            } else if (item.getAsFile != null) {
+              if (item.kind == null || item.kind === "file") {
+                result.push(_this5.addFile(item.getAsFile()));
+              } else {
+                result.push(undefined);
+              }
+            } else {
+              result.push(undefined);
+            }
+          }
+        } catch (err) {
+          _iterator14.e(err);
+        } finally {
+          _iterator14.f();
+        }
+
+        return result;
+      }();
+    } // Goes through the directory, and adds each file it finds recursively
+
+  }, {
+    key: "_addFilesFromDirectory",
+    value: function _addFilesFromDirectory(directory, path) {
+      var _this6 = this;
+
+      var dirReader = directory.createReader();
+
+      var errorHandler = function errorHandler(error) {
+        return __guardMethod__(console, 'log', function (o) {
+          return o.log(error);
+        });
+      };
+
+      var readEntries = function readEntries() {
+        return dirReader.readEntries(function (entries) {
+          if (entries.length > 0) {
+            var _iterator15 = _createForOfIteratorHelper(entries),
+                _step15;
+
+            try {
+              for (_iterator15.s(); !(_step15 = _iterator15.n()).done;) {
+                var entry = _step15.value;
+
+                if (entry.isFile) {
+                  entry.file(function (file) {
+                    if (_this6.options.ignoreHiddenFiles && file.name.substring(0, 1) === '.') {
+                      return;
+                    }
+
+                    file.fullPath = "".concat(path, "/").concat(file.name);
+                    return _this6.addFile(file);
+                  });
+                } else if (entry.isDirectory) {
+                  _this6._addFilesFromDirectory(entry, "".concat(path, "/").concat(entry.name));
+                }
+              } // Recursively call readEntries() again, since browser only handle
+              // the first 100 entries.
+              // See: https://developer.mozilla.org/en-US/docs/Web/API/DirectoryReader#readEntries
+
+            } catch (err) {
+              _iterator15.e(err);
+            } finally {
+              _iterator15.f();
+            }
+
+            readEntries();
+          }
+
+          return null;
+        }, errorHandler);
+      };
+
+      return readEntries();
+    } // If `done()` is called without argument the file is accepted
+    // If you call it with an error message, the file is rejected
+    // (This allows for asynchronous validation)
+    //
+    // This function checks the filesize, and if the file.type passes the
+    // `acceptedFiles` check.
+
+  }, {
+    key: "accept",
+    value: function accept(file, done) {
+      if (this.options.maxFilesize && file.size > this.options.maxFilesize * 1024 * 1024) {
+        done(this.options.dictFileTooBig.replace("{{filesize}}", Math.round(file.size / 1024 / 10.24) / 100).replace("{{maxFilesize}}", this.options.maxFilesize));
+      } else if (!Dropzone.isValidFile(file, this.options.acceptedFiles)) {
+        done(this.options.dictInvalidFileType);
+      } else if (this.options.maxFiles != null && this.getAcceptedFiles().length >= this.options.maxFiles) {
+        done(this.options.dictMaxFilesExceeded.replace("{{maxFiles}}", this.options.maxFiles));
+        this.emit("maxfilesexceeded", file);
+      } else {
+        this.options.accept.call(this, file, done);
+      }
+    }
+  }, {
+    key: "addFile",
+    value: function addFile(file) {
+      var _this7 = this;
+
+      file.upload = {
+        uuid: Dropzone.uuidv4(),
+        progress: 0,
+        // Setting the total upload size to file.size for the beginning
+        // It's actual different than the size to be transmitted.
+        total: file.size,
+        bytesSent: 0,
+        filename: this._renameFile(file) // Not setting chunking information here, because the acutal data — and
+        // thus the chunks — might change if `options.transformFile` is set
+        // and does something to the data.
+
+      };
+      this.files.push(file);
+      file.status = Dropzone.ADDED;
+      this.emit("addedfile", file);
+
+      this._enqueueThumbnail(file);
+
+      this.accept(file, function (error) {
+        if (error) {
+          file.accepted = false;
+
+          _this7._errorProcessing([file], error); // Will set the file.status
+
+        } else {
+          file.accepted = true;
+
+          if (_this7.options.autoQueue) {
+            _this7.enqueueFile(file);
+          } // Will set .accepted = true
+
+        }
+
+        _this7._updateMaxFilesReachedClass();
+      });
+    } // Wrapper for enqueueFile
+
+  }, {
+    key: "enqueueFiles",
+    value: function enqueueFiles(files) {
+      var _iterator16 = _createForOfIteratorHelper(files),
+          _step16;
+
+      try {
+        for (_iterator16.s(); !(_step16 = _iterator16.n()).done;) {
+          var file = _step16.value;
+          this.enqueueFile(file);
+        }
+      } catch (err) {
+        _iterator16.e(err);
+      } finally {
+        _iterator16.f();
+      }
+
+      return null;
+    }
+  }, {
+    key: "enqueueFile",
+    value: function enqueueFile(file) {
+      var _this8 = this;
+
+      if (file.status === Dropzone.ADDED && file.accepted === true) {
+        file.status = Dropzone.QUEUED;
+
+        if (this.options.autoProcessQueue) {
+          return setTimeout(function () {
+            return _this8.processQueue();
+          }, 0); // Deferring the call
+        }
+      } else {
+        throw new Error("This file can't be queued because it has already been processed or was rejected.");
+      }
+    }
+  }, {
+    key: "_enqueueThumbnail",
+    value: function _enqueueThumbnail(file) {
+      var _this9 = this;
+
+      if (this.options.createImageThumbnails && file.type.match(/image.*/) && file.size <= this.options.maxThumbnailFilesize * 1024 * 1024) {
+        this._thumbnailQueue.push(file);
+
+        return setTimeout(function () {
+          return _this9._processThumbnailQueue();
+        }, 0); // Deferring the call
+      }
+    }
+  }, {
+    key: "_processThumbnailQueue",
+    value: function _processThumbnailQueue() {
+      var _this10 = this;
+
+      if (this._processingThumbnail || this._thumbnailQueue.length === 0) {
+        return;
+      }
+
+      this._processingThumbnail = true;
+
+      var file = this._thumbnailQueue.shift();
+
+      return this.createThumbnail(file, this.options.thumbnailWidth, this.options.thumbnailHeight, this.options.thumbnailMethod, true, function (dataUrl) {
+        _this10.emit("thumbnail", file, dataUrl);
+
+        _this10._processingThumbnail = false;
+        return _this10._processThumbnailQueue();
+      });
+    } // Can be called by the user to remove a file
+
+  }, {
+    key: "removeFile",
+    value: function removeFile(file) {
+      if (file.status === Dropzone.UPLOADING) {
+        this.cancelUpload(file);
+      }
+
+      this.files = without(this.files, file);
+      this.emit("removedfile", file);
+
+      if (this.files.length === 0) {
+        return this.emit("reset");
+      }
+    } // Removes all files that aren't currently processed from the list
+
+  }, {
+    key: "removeAllFiles",
+    value: function removeAllFiles(cancelIfNecessary) {
+      // Create a copy of files since removeFile() changes the @files array.
+      if (cancelIfNecessary == null) {
+        cancelIfNecessary = false;
+      }
+
+      var _iterator17 = _createForOfIteratorHelper(this.files.slice()),
+          _step17;
+
+      try {
+        for (_iterator17.s(); !(_step17 = _iterator17.n()).done;) {
+          var file = _step17.value;
+
+          if (file.status !== Dropzone.UPLOADING || cancelIfNecessary) {
+            this.removeFile(file);
+          }
+        }
+      } catch (err) {
+        _iterator17.e(err);
+      } finally {
+        _iterator17.f();
+      }
+
+      return null;
+    } // Resizes an image before it gets sent to the server. This function is the default behavior of
+    // `options.transformFile` if `resizeWidth` or `resizeHeight` are set. The callback is invoked with
+    // the resized blob.
+
+  }, {
+    key: "resizeImage",
+    value: function resizeImage(file, width, height, resizeMethod, callback) {
+      var _this11 = this;
+
+      return this.createThumbnail(file, width, height, resizeMethod, true, function (dataUrl, canvas) {
+        if (canvas == null) {
+          // The image has not been resized
+          return callback(file);
+        } else {
+          var resizeMimeType = _this11.options.resizeMimeType;
+
+          if (resizeMimeType == null) {
+            resizeMimeType = file.type;
+          }
+
+          var resizedDataURL = canvas.toDataURL(resizeMimeType, _this11.options.resizeQuality);
+
+          if (resizeMimeType === 'image/jpeg' || resizeMimeType === 'image/jpg') {
+            // Now add the original EXIF information
+            resizedDataURL = ExifRestore.restore(file.dataURL, resizedDataURL);
+          }
+
+          return callback(Dropzone.dataURItoBlob(resizedDataURL));
+        }
+      });
+    }
+  }, {
+    key: "createThumbnail",
+    value: function createThumbnail(file, width, height, resizeMethod, fixOrientation, callback) {
+      var _this12 = this;
+
+      var fileReader = new FileReader();
+
+      fileReader.onload = function () {
+        file.dataURL = fileReader.result; // Don't bother creating a thumbnail for SVG images since they're vector
+
+        if (file.type === "image/svg+xml") {
+          if (callback != null) {
+            callback(fileReader.result);
+          }
+
+          return;
+        }
+
+        _this12.createThumbnailFromUrl(file, width, height, resizeMethod, fixOrientation, callback);
+      };
+
+      fileReader.readAsDataURL(file);
+    } // `mockFile` needs to have these attributes:
+    // 
+    //     { name: 'name', size: 12345, imageUrl: '' }
+    //
+    // `callback` will be invoked when the image has been downloaded and displayed.
+    // `crossOrigin` will be added to the `img` tag when accessing the file.
+
+  }, {
+    key: "displayExistingFile",
+    value: function displayExistingFile(mockFile, imageUrl, callback, crossOrigin) {
+      var _this13 = this;
+
+      var resizeThumbnail = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true;
+      this.emit("addedfile", mockFile);
+      this.emit("complete", mockFile);
+
+      if (!resizeThumbnail) {
+        this.emit("thumbnail", mockFile, imageUrl);
+        if (callback) callback();
+      } else {
+        var onDone = function onDone(thumbnail) {
+          _this13.emit('thumbnail', mockFile, thumbnail);
+
+          if (callback) callback();
+        };
+
+        mockFile.dataURL = imageUrl;
+        this.createThumbnailFromUrl(mockFile, this.options.thumbnailWidth, this.options.thumbnailHeight, this.options.resizeMethod, this.options.fixOrientation, onDone, crossOrigin);
+      }
+    }
+  }, {
+    key: "createThumbnailFromUrl",
+    value: function createThumbnailFromUrl(file, width, height, resizeMethod, fixOrientation, callback, crossOrigin) {
+      var _this14 = this;
+
+      // Not using `new Image` here because of a bug in latest Chrome versions.
+      // See https://github.com/enyo/dropzone/pull/226
+      var img = document.createElement("img");
+
+      if (crossOrigin) {
+        img.crossOrigin = crossOrigin;
+      } // fixOrientation is not needed anymore with browsers handling imageOrientation
+
+
+      fixOrientation = getComputedStyle(document.body)['imageOrientation'] == 'from-image' ? false : fixOrientation;
+
+      img.onload = function () {
+        var loadExif = function loadExif(callback) {
+          return callback(1);
+        };
+
+        if (typeof EXIF !== 'undefined' && EXIF !== null && fixOrientation) {
+          loadExif = function loadExif(callback) {
+            return EXIF.getData(img, function () {
+              return callback(EXIF.getTag(this, 'Orientation'));
+            });
+          };
+        }
+
+        return loadExif(function (orientation) {
+          file.width = img.width;
+          file.height = img.height;
+
+          var resizeInfo = _this14.options.resize.call(_this14, file, width, height, resizeMethod);
+
+          var canvas = document.createElement("canvas");
+          var ctx = canvas.getContext("2d");
+          canvas.width = resizeInfo.trgWidth;
+          canvas.height = resizeInfo.trgHeight;
+
+          if (orientation > 4) {
+            canvas.width = resizeInfo.trgHeight;
+            canvas.height = resizeInfo.trgWidth;
+          }
+
+          switch (orientation) {
+            case 2:
+              // horizontal flip
+              ctx.translate(canvas.width, 0);
+              ctx.scale(-1, 1);
+              break;
+
+            case 3:
+              // 180° rotate left
+              ctx.translate(canvas.width, canvas.height);
+              ctx.rotate(Math.PI);
+              break;
+
+            case 4:
+              // vertical flip
+              ctx.translate(0, canvas.height);
+              ctx.scale(1, -1);
+              break;
+
+            case 5:
+              // vertical flip + 90 rotate right
+              ctx.rotate(0.5 * Math.PI);
+              ctx.scale(1, -1);
+              break;
+
+            case 6:
+              // 90° rotate right
+              ctx.rotate(0.5 * Math.PI);
+              ctx.translate(0, -canvas.width);
+              break;
+
+            case 7:
+              // horizontal flip + 90 rotate right
+              ctx.rotate(0.5 * Math.PI);
+              ctx.translate(canvas.height, -canvas.width);
+              ctx.scale(-1, 1);
+              break;
+
+            case 8:
+              // 90° rotate left
+              ctx.rotate(-0.5 * Math.PI);
+              ctx.translate(-canvas.height, 0);
+              break;
+          } // This is a bugfix for iOS' scaling bug.
+
+
+          drawImageIOSFix(ctx, img, resizeInfo.srcX != null ? resizeInfo.srcX : 0, resizeInfo.srcY != null ? resizeInfo.srcY : 0, resizeInfo.srcWidth, resizeInfo.srcHeight, resizeInfo.trgX != null ? resizeInfo.trgX : 0, resizeInfo.trgY != null ? resizeInfo.trgY : 0, resizeInfo.trgWidth, resizeInfo.trgHeight);
+          var thumbnail = canvas.toDataURL("image/png");
+
+          if (callback != null) {
+            return callback(thumbnail, canvas);
+          }
+        });
+      };
+
+      if (callback != null) {
+        img.onerror = callback;
+      }
+
+      return img.src = file.dataURL;
+    } // Goes through the queue and processes files if there aren't too many already.
+
+  }, {
+    key: "processQueue",
+    value: function processQueue() {
+      var parallelUploads = this.options.parallelUploads;
+      var processingLength = this.getUploadingFiles().length;
+      var i = processingLength; // There are already at least as many files uploading than should be
+
+      if (processingLength >= parallelUploads) {
+        return;
+      }
+
+      var queuedFiles = this.getQueuedFiles();
+
+      if (!(queuedFiles.length > 0)) {
+        return;
+      }
+
+      if (this.options.uploadMultiple) {
+        // The files should be uploaded in one request
+        return this.processFiles(queuedFiles.slice(0, parallelUploads - processingLength));
+      } else {
+        while (i < parallelUploads) {
+          if (!queuedFiles.length) {
+            return;
+          } // Nothing left to process
+
+
+          this.processFile(queuedFiles.shift());
+          i++;
+        }
+      }
+    } // Wrapper for `processFiles`
+
+  }, {
+    key: "processFile",
+    value: function processFile(file) {
+      return this.processFiles([file]);
+    } // Loads the file, then calls finishedLoading()
+
+  }, {
+    key: "processFiles",
+    value: function processFiles(files) {
+      var _iterator18 = _createForOfIteratorHelper(files),
+          _step18;
+
+      try {
+        for (_iterator18.s(); !(_step18 = _iterator18.n()).done;) {
+          var file = _step18.value;
+          file.processing = true; // Backwards compatibility
+
+          file.status = Dropzone.UPLOADING;
+          this.emit("processing", file);
+        }
+      } catch (err) {
+        _iterator18.e(err);
+      } finally {
+        _iterator18.f();
+      }
+
+      if (this.options.uploadMultiple) {
+        this.emit("processingmultiple", files);
+      }
+
+      return this.uploadFiles(files);
+    }
+  }, {
+    key: "_getFilesWithXhr",
+    value: function _getFilesWithXhr(xhr) {
+      var files;
+      return files = this.files.filter(function (file) {
+        return file.xhr === xhr;
+      }).map(function (file) {
+        return file;
+      });
+    } // Cancels the file upload and sets the status to CANCELED
+    // **if** the file is actually being uploaded.
+    // If it's still in the queue, the file is being removed from it and the status
+    // set to CANCELED.
+
+  }, {
+    key: "cancelUpload",
+    value: function cancelUpload(file) {
+      if (file.status === Dropzone.UPLOADING) {
+        var groupedFiles = this._getFilesWithXhr(file.xhr);
+
+        var _iterator19 = _createForOfIteratorHelper(groupedFiles),
+            _step19;
+
+        try {
+          for (_iterator19.s(); !(_step19 = _iterator19.n()).done;) {
+            var groupedFile = _step19.value;
+            groupedFile.status = Dropzone.CANCELED;
+          }
+        } catch (err) {
+          _iterator19.e(err);
+        } finally {
+          _iterator19.f();
+        }
+
+        if (typeof file.xhr !== 'undefined') {
+          file.xhr.abort();
+        }
+
+        var _iterator20 = _createForOfIteratorHelper(groupedFiles),
+            _step20;
+
+        try {
+          for (_iterator20.s(); !(_step20 = _iterator20.n()).done;) {
+            var _groupedFile = _step20.value;
+            this.emit("canceled", _groupedFile);
+          }
+        } catch (err) {
+          _iterator20.e(err);
+        } finally {
+          _iterator20.f();
+        }
+
+        if (this.options.uploadMultiple) {
+          this.emit("canceledmultiple", groupedFiles);
+        }
+      } else if (file.status === Dropzone.ADDED || file.status === Dropzone.QUEUED) {
+        file.status = Dropzone.CANCELED;
+        this.emit("canceled", file);
+
+        if (this.options.uploadMultiple) {
+          this.emit("canceledmultiple", [file]);
+        }
+      }
+
+      if (this.options.autoProcessQueue) {
+        return this.processQueue();
+      }
+    }
+  }, {
+    key: "resolveOption",
+    value: function resolveOption(option) {
+      if (typeof option === 'function') {
+        for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {
+          args[_key3 - 1] = arguments[_key3];
+        }
+
+        return option.apply(this, args);
+      }
+
+      return option;
+    }
+  }, {
+    key: "uploadFile",
+    value: function uploadFile(file) {
+      return this.uploadFiles([file]);
+    }
+  }, {
+    key: "uploadFiles",
+    value: function uploadFiles(files) {
+      var _this15 = this;
+
+      this._transformFiles(files, function (transformedFiles) {
+        if (_this15.options.chunking) {
+          // Chunking is not allowed to be used with `uploadMultiple` so we know
+          // that there is only __one__file.
+          var transformedFile = transformedFiles[0];
+          files[0].upload.chunked = _this15.options.chunking && (_this15.options.forceChunking || transformedFile.size > _this15.options.chunkSize);
+          files[0].upload.totalChunkCount = Math.ceil(transformedFile.size / _this15.options.chunkSize);
+        }
+
+        if (files[0].upload.chunked) {
+          // This file should be sent in chunks!
+          // If the chunking option is set, we **know** that there can only be **one** file, since
+          // uploadMultiple is not allowed with this option.
+          var file = files[0];
+          var _transformedFile = transformedFiles[0];
+          var startedChunkCount = 0;
+          file.upload.chunks = [];
+
+          var handleNextChunk = function handleNextChunk() {
+            var chunkIndex = 0; // Find the next item in file.upload.chunks that is not defined yet.
+
+            while (file.upload.chunks[chunkIndex] !== undefined) {
+              chunkIndex++;
+            } // This means, that all chunks have already been started.
+
+
+            if (chunkIndex >= file.upload.totalChunkCount) return;
+            startedChunkCount++;
+            var start = chunkIndex * _this15.options.chunkSize;
+            var end = Math.min(start + _this15.options.chunkSize, _transformedFile.size);
+            var dataBlock = {
+              name: _this15._getParamName(0),
+              data: _transformedFile.webkitSlice ? _transformedFile.webkitSlice(start, end) : _transformedFile.slice(start, end),
+              filename: file.upload.filename,
+              chunkIndex: chunkIndex
+            };
+            file.upload.chunks[chunkIndex] = {
+              file: file,
+              index: chunkIndex,
+              dataBlock: dataBlock,
+              // In case we want to retry.
+              status: Dropzone.UPLOADING,
+              progress: 0,
+              retries: 0 // The number of times this block has been retried.
+
+            };
+
+            _this15._uploadData(files, [dataBlock]);
+          };
+
+          file.upload.finishedChunkUpload = function (chunk) {
+            var allFinished = true;
+            chunk.status = Dropzone.SUCCESS; // Clear the data from the chunk
+
+            chunk.dataBlock = null; // Leaving this reference to xhr intact here will cause memory leaks in some browsers
+
+            chunk.xhr = null;
+
+            for (var i = 0; i < file.upload.totalChunkCount; i++) {
+              if (file.upload.chunks[i] === undefined) {
+                return handleNextChunk();
+              }
+
+              if (file.upload.chunks[i].status !== Dropzone.SUCCESS) {
+                allFinished = false;
+              }
+            }
+
+            if (allFinished) {
+              _this15.options.chunksUploaded(file, function () {
+                _this15._finished(files, '', null);
+              });
+            }
+          };
+
+          if (_this15.options.parallelChunkUploads) {
+            for (var i = 0; i < file.upload.totalChunkCount; i++) {
+              handleNextChunk();
+            }
+          } else {
+            handleNextChunk();
+          }
+        } else {
+          var dataBlocks = [];
+
+          for (var _i3 = 0; _i3 < files.length; _i3++) {
+            dataBlocks[_i3] = {
+              name: _this15._getParamName(_i3),
+              data: transformedFiles[_i3],
+              filename: files[_i3].upload.filename
+            };
+          }
+
+          _this15._uploadData(files, dataBlocks);
+        }
+      });
+    } /// Returns the right chunk for given file and xhr
+
+  }, {
+    key: "_getChunk",
+    value: function _getChunk(file, xhr) {
+      for (var i = 0; i < file.upload.totalChunkCount; i++) {
+        if (file.upload.chunks[i] !== undefined && file.upload.chunks[i].xhr === xhr) {
+          return file.upload.chunks[i];
+        }
+      }
+    } // This function actually uploads the file(s) to the server.
+    // If dataBlocks contains the actual data to upload (meaning, that this could either be transformed
+    // files, or individual chunks for chunked upload).
+
+  }, {
+    key: "_uploadData",
+    value: function _uploadData(files, dataBlocks) {
+      var _this16 = this;
+
+      var xhr = new XMLHttpRequest(); // Put the xhr object in the file objects to be able to reference it later.
+
+      var _iterator21 = _createForOfIteratorHelper(files),
+          _step21;
+
+      try {
+        for (_iterator21.s(); !(_step21 = _iterator21.n()).done;) {
+          var file = _step21.value;
+          file.xhr = xhr;
+        }
+      } catch (err) {
+        _iterator21.e(err);
+      } finally {
+        _iterator21.f();
+      }
+
+      if (files[0].upload.chunked) {
+        // Put the xhr object in the right chunk object, so it can be associated later, and found with _getChunk
+        files[0].upload.chunks[dataBlocks[0].chunkIndex].xhr = xhr;
+      }
+
+      var method = this.resolveOption(this.options.method, files);
+      var url = this.resolveOption(this.options.url, files);
+      xhr.open(method, url, true); // Setting the timeout after open because of IE11 issue: https://gitlab.com/meno/dropzone/issues/8
+
+      xhr.timeout = this.resolveOption(this.options.timeout, files); // Has to be after `.open()`. See https://github.com/enyo/dropzone/issues/179
+
+      xhr.withCredentials = !!this.options.withCredentials;
+
+      xhr.onload = function (e) {
+        _this16._finishedUploading(files, xhr, e);
+      };
+
+      xhr.ontimeout = function () {
+        _this16._handleUploadError(files, xhr, "Request timedout after ".concat(_this16.options.timeout / 1000, " seconds"));
+      };
+
+      xhr.onerror = function () {
+        _this16._handleUploadError(files, xhr);
+      }; // Some browsers do not have the .upload property
+
+
+      var progressObj = xhr.upload != null ? xhr.upload : xhr;
+
+      progressObj.onprogress = function (e) {
+        return _this16._updateFilesUploadProgress(files, xhr, e);
+      };
+
+      var headers = {
+        "Accept": "application/json",
+        "Cache-Control": "no-cache",
+        "X-Requested-With": "XMLHttpRequest"
+      };
+
+      if (this.options.headers) {
+        Dropzone.extend(headers, this.options.headers);
+      }
+
+      for (var headerName in headers) {
+        var headerValue = headers[headerName];
+
+        if (headerValue) {
+          xhr.setRequestHeader(headerName, headerValue);
+        }
+      }
+
+      var formData = new FormData(); // Adding all @options parameters
+
+      if (this.options.params) {
+        var additionalParams = this.options.params;
+
+        if (typeof additionalParams === 'function') {
+          additionalParams = additionalParams.call(this, files, xhr, files[0].upload.chunked ? this._getChunk(files[0], xhr) : null);
+        }
+
+        for (var key in additionalParams) {
+          var value = additionalParams[key];
+
+          if (Array.isArray(value)) {
+            // The additional parameter contains an array,
+            // so lets iterate over it to attach each value
+            // individually.
+            for (var i = 0; i < value.length; i++) {
+              formData.append(key, value[i]);
+            }
+          } else {
+            formData.append(key, value);
+          }
+        }
+      } // Let the user add additional data if necessary
+
+
+      var _iterator22 = _createForOfIteratorHelper(files),
+          _step22;
+
+      try {
+        for (_iterator22.s(); !(_step22 = _iterator22.n()).done;) {
+          var _file = _step22.value;
+          this.emit("sending", _file, xhr, formData);
+        }
+      } catch (err) {
+        _iterator22.e(err);
+      } finally {
+        _iterator22.f();
+      }
+
+      if (this.options.uploadMultiple) {
+        this.emit("sendingmultiple", files, xhr, formData);
+      }
+
+      this._addFormElementData(formData); // Finally add the files
+      // Has to be last because some servers (eg: S3) expect the file to be the last parameter
+
+
+      for (var _i4 = 0; _i4 < dataBlocks.length; _i4++) {
+        var dataBlock = dataBlocks[_i4];
+        formData.append(dataBlock.name, dataBlock.data, dataBlock.filename);
+      }
+
+      this.submitRequest(xhr, formData, files);
+    } // Transforms all files with this.options.transformFile and invokes done with the transformed files when done.
+
+  }, {
+    key: "_transformFiles",
+    value: function _transformFiles(files, done) {
+      var _this17 = this;
+
+      var transformedFiles = []; // Clumsy way of handling asynchronous calls, until I get to add a proper Future library.
+
+      var doneCounter = 0;
+
+      var _loop = function _loop(i) {
+        _this17.options.transformFile.call(_this17, files[i], function (transformedFile) {
+          transformedFiles[i] = transformedFile;
+
+          if (++doneCounter === files.length) {
+            done(transformedFiles);
+          }
+        });
+      };
+
+      for (var i = 0; i < files.length; i++) {
+        _loop(i);
+      }
+    } // Takes care of adding other input elements of the form to the AJAX request
+
+  }, {
+    key: "_addFormElementData",
+    value: function _addFormElementData(formData) {
+      // Take care of other input elements
+      if (this.element.tagName === "FORM") {
+        var _iterator23 = _createForOfIteratorHelper(this.element.querySelectorAll("input, textarea, select, button")),
+            _step23;
+
+        try {
+          for (_iterator23.s(); !(_step23 = _iterator23.n()).done;) {
+            var input = _step23.value;
+            var inputName = input.getAttribute("name");
+            var inputType = input.getAttribute("type");
+            if (inputType) inputType = inputType.toLowerCase(); // If the input doesn't have a name, we can't use it.
+
+            if (typeof inputName === 'undefined' || inputName === null) continue;
+
+            if (input.tagName === "SELECT" && input.hasAttribute("multiple")) {
+              // Possibly multiple values
+              var _iterator24 = _createForOfIteratorHelper(input.options),
+                  _step24;
+
+              try {
+                for (_iterator24.s(); !(_step24 = _iterator24.n()).done;) {
+                  var option = _step24.value;
+
+                  if (option.selected) {
+                    formData.append(inputName, option.value);
+                  }
+                }
+              } catch (err) {
+                _iterator24.e(err);
+              } finally {
+                _iterator24.f();
+              }
+            } else if (!inputType || inputType !== "checkbox" && inputType !== "radio" || input.checked) {
+              formData.append(inputName, input.value);
+            }
+          }
+        } catch (err) {
+          _iterator23.e(err);
+        } finally {
+          _iterator23.f();
+        }
+      }
+    } // Invoked when there is new progress information about given files.
+    // If e is not provided, it is assumed that the upload is finished.
+
+  }, {
+    key: "_updateFilesUploadProgress",
+    value: function _updateFilesUploadProgress(files, xhr, e) {
+      var progress;
+
+      if (typeof e !== 'undefined') {
+        progress = 100 * e.loaded / e.total;
+
+        if (files[0].upload.chunked) {
+          var file = files[0]; // Since this is a chunked upload, we need to update the appropriate chunk progress.
+
+          var chunk = this._getChunk(file, xhr);
+
+          chunk.progress = progress;
+          chunk.total = e.total;
+          chunk.bytesSent = e.loaded;
+          var fileProgress = 0,
+              fileTotal,
+              fileBytesSent;
+          file.upload.progress = 0;
+          file.upload.total = 0;
+          file.upload.bytesSent = 0;
+
+          for (var i = 0; i < file.upload.totalChunkCount; i++) {
+            if (file.upload.chunks[i] !== undefined && file.upload.chunks[i].progress !== undefined) {
+              file.upload.progress += file.upload.chunks[i].progress;
+              file.upload.total += file.upload.chunks[i].total;
+              file.upload.bytesSent += file.upload.chunks[i].bytesSent;
+            }
+          }
+
+          file.upload.progress = file.upload.progress / file.upload.totalChunkCount;
+        } else {
+          var _iterator25 = _createForOfIteratorHelper(files),
+              _step25;
+
+          try {
+            for (_iterator25.s(); !(_step25 = _iterator25.n()).done;) {
+              var _file2 = _step25.value;
+              _file2.upload.progress = progress;
+              _file2.upload.total = e.total;
+              _file2.upload.bytesSent = e.loaded;
+            }
+          } catch (err) {
+            _iterator25.e(err);
+          } finally {
+            _iterator25.f();
+          }
+        }
+
+        var _iterator26 = _createForOfIteratorHelper(files),
+            _step26;
+
+        try {
+          for (_iterator26.s(); !(_step26 = _iterator26.n()).done;) {
+            var _file3 = _step26.value;
+            this.emit("uploadprogress", _file3, _file3.upload.progress, _file3.upload.bytesSent);
+          }
+        } catch (err) {
+          _iterator26.e(err);
+        } finally {
+          _iterator26.f();
+        }
+      } else {
+        // Called when the file finished uploading
+        var allFilesFinished = true;
+        progress = 100;
+
+        var _iterator27 = _createForOfIteratorHelper(files),
+            _step27;
+
+        try {
+          for (_iterator27.s(); !(_step27 = _iterator27.n()).done;) {
+            var _file4 = _step27.value;
+
+            if (_file4.upload.progress !== 100 || _file4.upload.bytesSent !== _file4.upload.total) {
+              allFilesFinished = false;
+            }
+
+            _file4.upload.progress = progress;
+            _file4.upload.bytesSent = _file4.upload.total;
+          } // Nothing to do, all files already at 100%
+
+        } catch (err) {
+          _iterator27.e(err);
+        } finally {
+          _iterator27.f();
+        }
+
+        if (allFilesFinished) {
+          return;
+        }
+
+        var _iterator28 = _createForOfIteratorHelper(files),
+            _step28;
+
+        try {
+          for (_iterator28.s(); !(_step28 = _iterator28.n()).done;) {
+            var _file5 = _step28.value;
+            this.emit("uploadprogress", _file5, progress, _file5.upload.bytesSent);
+          }
+        } catch (err) {
+          _iterator28.e(err);
+        } finally {
+          _iterator28.f();
+        }
+      }
+    }
+  }, {
+    key: "_finishedUploading",
+    value: function _finishedUploading(files, xhr, e) {
+      var response;
+
+      if (files[0].status === Dropzone.CANCELED) {
+        return;
+      }
+
+      if (xhr.readyState !== 4) {
+        return;
+      }
+
+      if (xhr.responseType !== 'arraybuffer' && xhr.responseType !== 'blob') {
+        response = xhr.responseText;
+
+        if (xhr.getResponseHeader("content-type") && ~xhr.getResponseHeader("content-type").indexOf("application/json")) {
+          try {
+            response = JSON.parse(response);
+          } catch (error) {
+            e = error;
+            response = "Invalid JSON response from server.";
+          }
+        }
+      }
+
+      this._updateFilesUploadProgress(files);
+
+      if (!(200 <= xhr.status && xhr.status < 300)) {
+        this._handleUploadError(files, xhr, response);
+      } else {
+        if (files[0].upload.chunked) {
+          files[0].upload.finishedChunkUpload(this._getChunk(files[0], xhr));
+        } else {
+          this._finished(files, response, e);
+        }
+      }
+    }
+  }, {
+    key: "_handleUploadError",
+    value: function _handleUploadError(files, xhr, response) {
+      if (files[0].status === Dropzone.CANCELED) {
+        return;
+      }
+
+      if (files[0].upload.chunked && this.options.retryChunks) {
+        var chunk = this._getChunk(files[0], xhr);
+
+        if (chunk.retries++ < this.options.retryChunksLimit) {
+          this._uploadData(files, [chunk.dataBlock]);
+
+          return;
+        } else {
+          console.warn('Retried this chunk too often. Giving up.');
+        }
+      }
+
+      this._errorProcessing(files, response || this.options.dictResponseError.replace("{{statusCode}}", xhr.status), xhr);
+    }
+  }, {
+    key: "submitRequest",
+    value: function submitRequest(xhr, formData, files) {
+      xhr.send(formData);
+    } // Called internally when processing is finished.
+    // Individual callbacks have to be called in the appropriate sections.
+
+  }, {
+    key: "_finished",
+    value: function _finished(files, responseText, e) {
+      var _iterator29 = _createForOfIteratorHelper(files),
+          _step29;
+
+      try {
+        for (_iterator29.s(); !(_step29 = _iterator29.n()).done;) {
+          var file = _step29.value;
+          file.status = Dropzone.SUCCESS;
+          this.emit("success", file, responseText, e);
+          this.emit("complete", file);
+        }
+      } catch (err) {
+        _iterator29.e(err);
+      } finally {
+        _iterator29.f();
+      }
+
+      if (this.options.uploadMultiple) {
+        this.emit("successmultiple", files, responseText, e);
+        this.emit("completemultiple", files);
+      }
+
+      if (this.options.autoProcessQueue) {
+        return this.processQueue();
+      }
+    } // Called internally when processing is finished.
+    // Individual callbacks have to be called in the appropriate sections.
+
+  }, {
+    key: "_errorProcessing",
+    value: function _errorProcessing(files, message, xhr) {
+      var _iterator30 = _createForOfIteratorHelper(files),
+          _step30;
+
+      try {
+        for (_iterator30.s(); !(_step30 = _iterator30.n()).done;) {
+          var file = _step30.value;
+          file.status = Dropzone.ERROR;
+          this.emit("error", file, message, xhr);
+          this.emit("complete", file);
+        }
+      } catch (err) {
+        _iterator30.e(err);
+      } finally {
+        _iterator30.f();
+      }
+
+      if (this.options.uploadMultiple) {
+        this.emit("errormultiple", files, message, xhr);
+        this.emit("completemultiple", files);
+      }
+
+      if (this.options.autoProcessQueue) {
+        return this.processQueue();
+      }
+    }
+  }], [{
+    key: "uuidv4",
+    value: function uuidv4() {
+      return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
+        var r = Math.random() * 16 | 0,
+            v = c === 'x' ? r : r & 0x3 | 0x8;
+        return v.toString(16);
+      });
+    }
+  }]);
+
+  return Dropzone;
+}(Emitter);
+
+Dropzone.initClass();
+Dropzone.version = "5.7.2"; // This is a map of options for your different dropzones. Add configurations
+// to this object for your different dropzone elemens.
+//
+// Example:
+//
+//     Dropzone.options.myDropzoneElementId = { maxFilesize: 1 };
+//
+// To disable autoDiscover for a specific element, you can set `false` as an option:
+//
+//     Dropzone.options.myDisabledElementId = false;
+//
+// And in html:
+//
+//     <form action="/upload" id="my-dropzone-element-id" class="dropzone"></form>
+
+Dropzone.options = {}; // Returns the options for an element or undefined if none available.
+
+Dropzone.optionsForElement = function (element) {
+  // Get the `Dropzone.options.elementId` for this element if it exists
+  if (element.getAttribute("id")) {
+    return Dropzone.options[camelize(element.getAttribute("id"))];
+  } else {
+    return undefined;
+  }
+}; // Holds a list of all dropzone instances
+
+
+Dropzone.instances = []; // Returns the dropzone for given element if any
+
+Dropzone.forElement = function (element) {
+  if (typeof element === "string") {
+    element = document.querySelector(element);
+  }
+
+  if ((element != null ? element.dropzone : undefined) == null) {
+    throw new Error("No Dropzone found for given element. This is probably because you're trying to access it before Dropzone had the time to initialize. Use the `init` option to setup any additional observers on your Dropzone.");
+  }
+
+  return element.dropzone;
+}; // Set to false if you don't want Dropzone to automatically find and attach to .dropzone elements.
+
+
+Dropzone.autoDiscover = true; // Looks for all .dropzone elements and creates a dropzone for them
+
+Dropzone.discover = function () {
+  var dropzones;
+
+  if (document.querySelectorAll) {
+    dropzones = document.querySelectorAll(".dropzone");
+  } else {
+    dropzones = []; // IE :(
+
+    var checkElements = function checkElements(elements) {
+      return function () {
+        var result = [];
+
+        var _iterator31 = _createForOfIteratorHelper(elements),
+            _step31;
+
+        try {
+          for (_iterator31.s(); !(_step31 = _iterator31.n()).done;) {
+            var el = _step31.value;
+
+            if (/(^| )dropzone($| )/.test(el.className)) {
+              result.push(dropzones.push(el));
+            } else {
+              result.push(undefined);
+            }
+          }
+        } catch (err) {
+          _iterator31.e(err);
+        } finally {
+          _iterator31.f();
+        }
+
+        return result;
+      }();
+    };
+
+    checkElements(document.getElementsByTagName("div"));
+    checkElements(document.getElementsByTagName("form"));
+  }
+
+  return function () {
+    var result = [];
+
+    var _iterator32 = _createForOfIteratorHelper(dropzones),
+        _step32;
+
+    try {
+      for (_iterator32.s(); !(_step32 = _iterator32.n()).done;) {
+        var dropzone = _step32.value;
+
+        // Create a dropzone unless auto discover has been disabled for specific element
+        if (Dropzone.optionsForElement(dropzone) !== false) {
+          result.push(new Dropzone(dropzone));
+        } else {
+          result.push(undefined);
+        }
+      }
+    } catch (err) {
+      _iterator32.e(err);
+    } finally {
+      _iterator32.f();
+    }
+
+    return result;
+  }();
+}; // Since the whole Drag'n'Drop API is pretty new, some browsers implement it,
+// but not correctly.
+// So I created a blacklist of userAgents. Yes, yes. Browser sniffing, I know.
+// But what to do when browsers *theoretically* support an API, but crash
+// when using it.
+//
+// This is a list of regular expressions tested against navigator.userAgent
+//
+// ** It should only be used on browser that *do* support the API, but
+// incorrectly **
+//
+
+
+Dropzone.blacklistedBrowsers = [// The mac os and windows phone version of opera 12 seems to have a problem with the File drag'n'drop API.
+/opera.*(Macintosh|Windows Phone).*version\/12/i]; // Checks if the browser is supported
+
+Dropzone.isBrowserSupported = function () {
+  var capableBrowser = true;
+
+  if (window.File && window.FileReader && window.FileList && window.Blob && window.FormData && document.querySelector) {
+    if (!("classList" in document.createElement("a"))) {
+      capableBrowser = false;
+    } else {
+      // The browser supports the API, but may be blacklisted.
+      var _iterator33 = _createForOfIteratorHelper(Dropzone.blacklistedBrowsers),
+          _step33;
+
+      try {
+        for (_iterator33.s(); !(_step33 = _iterator33.n()).done;) {
+          var regex = _step33.value;
+
+          if (regex.test(navigator.userAgent)) {
+            capableBrowser = false;
+            continue;
+          }
+        }
+      } catch (err) {
+        _iterator33.e(err);
+      } finally {
+        _iterator33.f();
+      }
+    }
+  } else {
+    capableBrowser = false;
+  }
+
+  return capableBrowser;
+};
+
+Dropzone.dataURItoBlob = function (dataURI) {
+  // convert base64 to raw binary data held in a string
+  // doesn't handle URLEncoded DataURIs - see SO answer #6850276 for code that does this
+  var byteString = atob(dataURI.split(',')[1]); // separate out the mime component
+
+  var mimeString = dataURI.split(',')[0].split(':')[1].split(';')[0]; // write the bytes of the string to an ArrayBuffer
+
+  var ab = new ArrayBuffer(byteString.length);
+  var ia = new Uint8Array(ab);
+
+  for (var i = 0, end = byteString.length, asc = 0 <= end; asc ? i <= end : i >= end; asc ? i++ : i--) {
+    ia[i] = byteString.charCodeAt(i);
+  } // write the ArrayBuffer to a blob
+
+
+  return new Blob([ab], {
+    type: mimeString
+  });
+}; // Returns an array without the rejected item
+
+
+var without = function without(list, rejectedItem) {
+  return list.filter(function (item) {
+    return item !== rejectedItem;
+  }).map(function (item) {
+    return item;
+  });
+}; // abc-def_ghi -> abcDefGhi
+
+
+var camelize = function camelize(str) {
+  return str.replace(/[\-_](\w)/g, function (match) {
+    return match.charAt(1).toUpperCase();
+  });
+}; // Creates an element from string
+
+
+Dropzone.createElement = function (string) {
+  var div = document.createElement("div");
+  div.innerHTML = string;
+  return div.childNodes[0];
+}; // Tests if given element is inside (or simply is) the container
+
+
+Dropzone.elementInside = function (element, container) {
+  if (element === container) {
+    return true;
+  } // Coffeescript doesn't support do/while loops
+
+
+  while (element = element.parentNode) {
+    if (element === container) {
+      return true;
+    }
+  }
+
+  return false;
+};
+
+Dropzone.getElement = function (el, name) {
+  var element;
+
+  if (typeof el === "string") {
+    element = document.querySelector(el);
+  } else if (el.nodeType != null) {
+    element = el;
+  }
+
+  if (element == null) {
+    throw new Error("Invalid `".concat(name, "` option provided. Please provide a CSS selector or a plain HTML element."));
+  }
+
+  return element;
+};
+
+Dropzone.getElements = function (els, name) {
+  var el, elements;
+
+  if (els instanceof Array) {
+    elements = [];
+
+    try {
+      var _iterator34 = _createForOfIteratorHelper(els),
+          _step34;
+
+      try {
+        for (_iterator34.s(); !(_step34 = _iterator34.n()).done;) {
+          el = _step34.value;
+          elements.push(this.getElement(el, name));
+        }
+      } catch (err) {
+        _iterator34.e(err);
+      } finally {
+        _iterator34.f();
+      }
+    } catch (e) {
+      elements = null;
+    }
+  } else if (typeof els === "string") {
+    elements = [];
+
+    var _iterator35 = _createForOfIteratorHelper(document.querySelectorAll(els)),
+        _step35;
+
+    try {
+      for (_iterator35.s(); !(_step35 = _iterator35.n()).done;) {
+        el = _step35.value;
+        elements.push(el);
+      }
+    } catch (err) {
+      _iterator35.e(err);
+    } finally {
+      _iterator35.f();
+    }
+  } else if (els.nodeType != null) {
+    elements = [els];
+  }
+
+  if (elements == null || !elements.length) {
+    throw new Error("Invalid `".concat(name, "` option provided. Please provide a CSS selector, a plain HTML element or a list of those."));
+  }
+
+  return elements;
+}; // Asks the user the question and calls accepted or rejected accordingly
+//
+// The default implementation just uses `window.confirm` and then calls the
+// appropriate callback.
+
+
+Dropzone.confirm = function (question, accepted, rejected) {
+  if (window.confirm(question)) {
+    return accepted();
+  } else if (rejected != null) {
+    return rejected();
+  }
+}; // Validates the mime type like this:
+//
+// https://developer.mozilla.org/en-US/docs/HTML/Element/input#attr-accept
+
+
+Dropzone.isValidFile = function (file, acceptedFiles) {
+  if (!acceptedFiles) {
+    return true;
+  } // If there are no accepted mime types, it's OK
+
+
+  acceptedFiles = acceptedFiles.split(",");
+  var mimeType = file.type;
+  var baseMimeType = mimeType.replace(/\/.*$/, "");
+
+  var _iterator36 = _createForOfIteratorHelper(acceptedFiles),
+      _step36;
+
+  try {
+    for (_iterator36.s(); !(_step36 = _iterator36.n()).done;) {
+      var validType = _step36.value;
+      validType = validType.trim();
+
+      if (validType.charAt(0) === ".") {
+        if (file.name.toLowerCase().indexOf(validType.toLowerCase(), file.name.length - validType.length) !== -1) {
+          return true;
+        }
+      } else if (/\/\*$/.test(validType)) {
+        // This is something like a image/* mime type
+        if (baseMimeType === validType.replace(/\/.*$/, "")) {
+          return true;
+        }
+      } else {
+        if (mimeType === validType) {
+          return true;
+        }
+      }
+    }
+  } catch (err) {
+    _iterator36.e(err);
+  } finally {
+    _iterator36.f();
+  }
+
+  return false;
+}; // Augment jQuery
+
+
+if (typeof jQuery !== 'undefined' && jQuery !== null) {
+  jQuery.fn.dropzone = function (options) {
+    return this.each(function () {
+      return new Dropzone(this, options);
+    });
+  };
+}
+
+if (typeof module !== 'undefined' && module !== null) {
+  module.exports = Dropzone;
+} else {
+  window.Dropzone = Dropzone;
+} // Dropzone file status codes
+
+
+Dropzone.ADDED = "added";
+Dropzone.QUEUED = "queued"; // For backwards compatibility. Now, if a file is accepted, it's either queued
+// or uploading.
+
+Dropzone.ACCEPTED = Dropzone.QUEUED;
+Dropzone.UPLOADING = "uploading";
+Dropzone.PROCESSING = Dropzone.UPLOADING; // alias
+
+Dropzone.CANCELED = "canceled";
+Dropzone.ERROR = "error";
+Dropzone.SUCCESS = "success";
+/*
+
+ Bugfix for iOS 6 and 7
+ Source: http://stackoverflow.com/questions/11929099/html5-canvas-drawimage-ratio-bug-ios
+ based on the work of https://github.com/stomita/ios-imagefile-megapixel
+
+ */
+// Detecting vertical squash in loaded image.
+// Fixes a bug which squash image vertically while drawing into canvas for some images.
+// This is a bug in iOS6 devices. This function from https://github.com/stomita/ios-imagefile-megapixel
+
+var detectVerticalSquash = function detectVerticalSquash(img) {
+  var iw = img.naturalWidth;
+  var ih = img.naturalHeight;
+  var canvas = document.createElement("canvas");
+  canvas.width = 1;
+  canvas.height = ih;
+  var ctx = canvas.getContext("2d");
+  ctx.drawImage(img, 0, 0);
+
+  var _ctx$getImageData = ctx.getImageData(1, 0, 1, ih),
+      data = _ctx$getImageData.data; // search image edge pixel position in case it is squashed vertically.
+
+
+  var sy = 0;
+  var ey = ih;
+  var py = ih;
+
+  while (py > sy) {
+    var alpha = data[(py - 1) * 4 + 3];
+
+    if (alpha === 0) {
+      ey = py;
+    } else {
+      sy = py;
+    }
+
+    py = ey + sy >> 1;
+  }
+
+  var ratio = py / ih;
+
+  if (ratio === 0) {
+    return 1;
+  } else {
+    return ratio;
+  }
+}; // A replacement for context.drawImage
+// (args are for source and destination).
+
+
+var drawImageIOSFix = function drawImageIOSFix(ctx, img, sx, sy, sw, sh, dx, dy, dw, dh) {
+  var vertSquashRatio = detectVerticalSquash(img);
+  return ctx.drawImage(img, sx, sy, sw, sh, dx, dy, dw, dh / vertSquashRatio);
+}; // Based on MinifyJpeg
+// Source: http://www.perry.cz/files/ExifRestorer.js
+// http://elicon.blog57.fc2.com/blog-entry-206.html
+
+
+var ExifRestore = /*#__PURE__*/function () {
+  function ExifRestore() {
+    _classCallCheck(this, ExifRestore);
+  }
+
+  _createClass(ExifRestore, null, [{
+    key: "initClass",
+    value: function initClass() {
+      this.KEY_STR = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
+    }
+  }, {
+    key: "encode64",
+    value: function encode64(input) {
+      var output = '';
+      var chr1 = undefined;
+      var chr2 = undefined;
+      var chr3 = '';
+      var enc1 = undefined;
+      var enc2 = undefined;
+      var enc3 = undefined;
+      var enc4 = '';
+      var i = 0;
+
+      while (true) {
+        chr1 = input[i++];
+        chr2 = input[i++];
+        chr3 = input[i++];
+        enc1 = chr1 >> 2;
+        enc2 = (chr1 & 3) << 4 | chr2 >> 4;
+        enc3 = (chr2 & 15) << 2 | chr3 >> 6;
+        enc4 = chr3 & 63;
+
+        if (isNaN(chr2)) {
+          enc3 = enc4 = 64;
+        } else if (isNaN(chr3)) {
+          enc4 = 64;
+        }
+
+        output = output + this.KEY_STR.charAt(enc1) + this.KEY_STR.charAt(enc2) + this.KEY_STR.charAt(enc3) + this.KEY_STR.charAt(enc4);
+        chr1 = chr2 = chr3 = '';
+        enc1 = enc2 = enc3 = enc4 = '';
+
+        if (!(i < input.length)) {
+          break;
+        }
+      }
+
+      return output;
+    }
+  }, {
+    key: "restore",
+    value: function restore(origFileBase64, resizedFileBase64) {
+      if (!origFileBase64.match('data:image/jpeg;base64,')) {
+        return resizedFileBase64;
+      }
+
+      var rawImage = this.decode64(origFileBase64.replace('data:image/jpeg;base64,', ''));
+      var segments = this.slice2Segments(rawImage);
+      var image = this.exifManipulation(resizedFileBase64, segments);
+      return "data:image/jpeg;base64,".concat(this.encode64(image));
+    }
+  }, {
+    key: "exifManipulation",
+    value: function exifManipulation(resizedFileBase64, segments) {
+      var exifArray = this.getExifArray(segments);
+      var newImageArray = this.insertExif(resizedFileBase64, exifArray);
+      var aBuffer = new Uint8Array(newImageArray);
+      return aBuffer;
+    }
+  }, {
+    key: "getExifArray",
+    value: function getExifArray(segments) {
+      var seg = undefined;
+      var x = 0;
+
+      while (x < segments.length) {
+        seg = segments[x];
+
+        if (seg[0] === 255 & seg[1] === 225) {
+          return seg;
+        }
+
+        x++;
+      }
+
+      return [];
+    }
+  }, {
+    key: "insertExif",
+    value: function insertExif(resizedFileBase64, exifArray) {
+      var imageData = resizedFileBase64.replace('data:image/jpeg;base64,', '');
+      var buf = this.decode64(imageData);
+      var separatePoint = buf.indexOf(255, 3);
+      var mae = buf.slice(0, separatePoint);
+      var ato = buf.slice(separatePoint);
+      var array = mae;
+      array = array.concat(exifArray);
+      array = array.concat(ato);
+      return array;
+    }
+  }, {
+    key: "slice2Segments",
+    value: function slice2Segments(rawImageArray) {
+      var head = 0;
+      var segments = [];
+
+      while (true) {
+        var length;
+
+        if (rawImageArray[head] === 255 & rawImageArray[head + 1] === 218) {
+          break;
+        }
+
+        if (rawImageArray[head] === 255 & rawImageArray[head + 1] === 216) {
+          head += 2;
+        } else {
+          length = rawImageArray[head + 2] * 256 + rawImageArray[head + 3];
+          var endPoint = head + length + 2;
+          var seg = rawImageArray.slice(head, endPoint);
+          segments.push(seg);
+          head = endPoint;
+        }
+
+        if (head > rawImageArray.length) {
+          break;
+        }
+      }
+
+      return segments;
+    }
+  }, {
+    key: "decode64",
+    value: function decode64(input) {
+      var output = '';
+      var chr1 = undefined;
+      var chr2 = undefined;
+      var chr3 = '';
+      var enc1 = undefined;
+      var enc2 = undefined;
+      var enc3 = undefined;
+      var enc4 = '';
+      var i = 0;
+      var buf = []; // remove all characters that are not A-Z, a-z, 0-9, +, /, or =
+
+      var base64test = /[^A-Za-z0-9\+\/\=]/g;
+
+      if (base64test.exec(input)) {
+        console.warn('There were invalid base64 characters in the input text.\nValid base64 characters are A-Z, a-z, 0-9, \'+\', \'/\',and \'=\'\nExpect errors in decoding.');
+      }
+
+      input = input.replace(/[^A-Za-z0-9\+\/\=]/g, '');
+
+      while (true) {
+        enc1 = this.KEY_STR.indexOf(input.charAt(i++));
+        enc2 = this.KEY_STR.indexOf(input.charAt(i++));
+        enc3 = this.KEY_STR.indexOf(input.charAt(i++));
+        enc4 = this.KEY_STR.indexOf(input.charAt(i++));
+        chr1 = enc1 << 2 | enc2 >> 4;
+        chr2 = (enc2 & 15) << 4 | enc3 >> 2;
+        chr3 = (enc3 & 3) << 6 | enc4;
+        buf.push(chr1);
+
+        if (enc3 !== 64) {
+          buf.push(chr2);
+        }
+
+        if (enc4 !== 64) {
+          buf.push(chr3);
+        }
+
+        chr1 = chr2 = chr3 = '';
+        enc1 = enc2 = enc3 = enc4 = '';
+
+        if (!(i < input.length)) {
+          break;
+        }
+      }
+
+      return buf;
+    }
+  }]);
+
+  return ExifRestore;
+}();
+
+ExifRestore.initClass();
+/*
+ * contentloaded.js
+ *
+ * Author: Diego Perini (diego.perini at gmail.com)
+ * Summary: cross-browser wrapper for DOMContentLoaded
+ * Updated: 20101020
+ * License: MIT
+ * Version: 1.2
+ *
+ * URL:
+ * http://javascript.nwbox.com/ContentLoaded/
+ * http://javascript.nwbox.com/ContentLoaded/MIT-LICENSE
+ */
+// @win window reference
+// @fn function reference
+
+var contentLoaded = function contentLoaded(win, fn) {
+  var done = false;
+  var top = true;
+  var doc = win.document;
+  var root = doc.documentElement;
+  var add = doc.addEventListener ? "addEventListener" : "attachEvent";
+  var rem = doc.addEventListener ? "removeEventListener" : "detachEvent";
+  var pre = doc.addEventListener ? "" : "on";
+
+  var init = function init(e) {
+    if (e.type === "readystatechange" && doc.readyState !== "complete") {
+      return;
+    }
+
+    (e.type === "load" ? win : doc)[rem](pre + e.type, init, false);
+
+    if (!done && (done = true)) {
+      return fn.call(win, e.type || e);
+    }
+  };
+
+  var poll = function poll() {
+    try {
+      root.doScroll("left");
+    } catch (e) {
+      setTimeout(poll, 50);
+      return;
+    }
+
+    return init("poll");
+  };
+
+  if (doc.readyState !== "complete") {
+    if (doc.createEventObject && root.doScroll) {
+      try {
+        top = !win.frameElement;
+      } catch (error) {}
+
+      if (top) {
+        poll();
+      }
+    }
+
+    doc[add](pre + "DOMContentLoaded", init, false);
+    doc[add](pre + "readystatechange", init, false);
+    return win[add](pre + "load", init, false);
+  }
+}; // As a single function to be able to write tests.
+
+
+Dropzone._autoDiscoverFunction = function () {
+  if (Dropzone.autoDiscover) {
+    return Dropzone.discover();
+  }
+};
+
+contentLoaded(window, Dropzone._autoDiscoverFunction);
+
+function __guard__(value, transform) {
+  return typeof value !== 'undefined' && value !== null ? transform(value) : undefined;
+}
+
+function __guardMethod__(obj, methodName, transform) {
+  if (typeof obj !== 'undefined' && obj !== null && typeof obj[methodName] === 'function') {
+    return transform(obj, methodName);
+  } else {
+    return undefined;
+  }
+}
diff --git a/admin/js/vendors/dropzone/dropzone.js.map b/admin/js/vendors/dropzone/dropzone.js.map
new file mode 100644 (file)
index 0000000..1ee4b64
--- /dev/null
@@ -0,0 +1 @@
+{"version":3,"sources":["../src/dropzone.js"],"names":["Emitter","event","fn","_callbacks","push","callbacks","args","callback","apply","arguments","length","i","splice","Dropzone","prototype","events","defaultOptions","url","method","withCredentials","timeout","parallelUploads","uploadMultiple","chunking","forceChunking","chunkSize","parallelChunkUploads","retryChunks","retryChunksLimit","maxFilesize","paramName","createImageThumbnails","maxThumbnailFilesize","thumbnailWidth","thumbnailHeight","thumbnailMethod","resizeWidth","resizeHeight","resizeMimeType","resizeQuality","resizeMethod","filesizeBase","maxFiles","headers","clickable","ignoreHiddenFiles","acceptedFiles","acceptedMimeTypes","autoProcessQueue","autoQueue","addRemoveLinks","previewsContainer","hiddenInputContainer","capture","renameFilename","renameFile","forceFallback","dictDefaultMessage","dictFallbackMessage","dictFallbackText","dictFileTooBig","dictInvalidFileType","dictResponseError","dictCancelUpload","dictUploadCanceled","dictCancelUploadConfirmation","dictRemoveFile","dictRemoveFileConfirmation","dictMaxFilesExceeded","dictFileSizeUnits","tb","gb","mb","kb","b","init","params","files","xhr","chunk","dzuuid","file","upload","uuid","dzchunkindex","index","dztotalfilesize","size","dzchunksize","options","dztotalchunkcount","totalChunkCount","dzchunkbyteoffset","accept","done","chunksUploaded","fallback","messageElement","element","className","getElementsByTagName","child","test","createElement","appendChild","span","textContent","innerText","getFallbackForm","resize","width","height","info","srcX","srcY","srcWidth","srcHeight","srcRatio","Math","min","trgRatio","Error","trgWidth","trgHeight","transformFile","type","match","resizeImage","previewTemplate","drop","e","classList","remove","dragstart","dragend","dragenter","add","dragover","dragleave","paste","reset","addedfile","previewElement","trim","querySelectorAll","node","name","innerHTML","filesize","_removeLink","removeFileEvent","preventDefault","stopPropagation","status","UPLOADING","confirm","removeFile","removeLink","addEventListener","removedfile","parentNode","removeChild","_updateMaxFilesReachedClass","thumbnail","dataUrl","thumbnailElement","alt","src","setTimeout","error","message","errormultiple","processing","processingmultiple","uploadprogress","progress","bytesSent","nodeName","value","style","totaluploadprogress","sending","sendingmultiple","success","successmultiple","canceled","emit","canceledmultiple","complete","completemultiple","maxfilesexceeded","maxfilesreached","queuecomplete","addedfiles","_thumbnailQueue","_processingThumbnail","target","objects","object","key","val","el","left","version","replace","clickableElements","listeners","document","querySelector","nodeType","dropzone","instances","elementOptions","optionsForElement","extend","isBrowserSupported","call","getAttribute","toUpperCase","getExistingFallback","getElement","getElements","filter","accepted","map","getFilesWithStatus","QUEUED","ADDED","tagName","setAttribute","contains","setupHiddenFileInput","hiddenFileInput","visibility","position","top","addFile","URL","window","webkitURL","eventName","on","updateTotalUploadProgress","getAddedFiles","getUploadingFiles","getQueuedFiles","noPropagation","returnValue","efct","dataTransfer","effectAllowed","dropEffect","forEach","clickableElement","evt","elementInside","click","enable","disable","removeAllFiles","undefined","indexOf","totalUploadProgress","totalBytesSent","totalBytes","activeFiles","getActiveFiles","total","n","existingFallback","form","fieldsString","_getParamName","fields","getFallback","elements","elementListeners","result","listener","removeEventListener","removeEventListeners","disabled","cancelUpload","setupEventListeners","selectedSize","selectedUnit","units","unit","cutoff","pow","round","getAcceptedFiles","items","webkitGetAsEntry","_addFilesFromItems","handleFiles","__guard__","clipboardData","x","item","entry","isFile","getAsFile","isDirectory","_addFilesFromDirectory","kind","directory","path","dirReader","createReader","errorHandler","__guardMethod__","console","o","log","readEntries","entries","substring","fullPath","isValidFile","uuidv4","filename","_renameFile","chunked","ceil","_enqueueThumbnail","_errorProcessing","enqueueFile","processQueue","_processThumbnailQueue","shift","createThumbnail","without","cancelIfNecessary","slice","canvas","resizedDataURL","toDataURL","ExifRestore","restore","dataURL","dataURItoBlob","fixOrientation","fileReader","FileReader","onload","createThumbnailFromUrl","readAsDataURL","crossOrigin","img","loadExif","EXIF","getData","getTag","orientation","resizeInfo","ctx","getContext","translate","scale","rotate","PI","drawImageIOSFix","trgX","trgY","onerror","processingLength","queuedFiles","processFiles","processFile","uploadFiles","groupedFiles","_getFilesWithXhr","groupedFile","CANCELED","abort","option","_transformFiles","transformedFiles","transformedFile","startedChunkCount","chunks","handleNextChunk","chunkIndex","start","end","dataBlock","data","webkitSlice","retries","_uploadData","finishedChunkUpload","allFinished","SUCCESS","_finished","dataBlocks","XMLHttpRequest","resolveOption","open","_finishedUploading","ontimeout","_handleUploadError","progressObj","onprogress","_updateFilesUploadProgress","headerName","headerValue","setRequestHeader","formData","FormData","additionalParams","_getChunk","append","_addFormElementData","submitRequest","doneCounter","input","inputName","inputType","toLowerCase","hasAttribute","selected","checked","loaded","fileProgress","fileTotal","fileBytesSent","allFilesFinished","response","readyState","responseType","responseText","getResponseHeader","JSON","parse","warn","send","ERROR","c","r","random","v","toString","initClass","camelize","forElement","autoDiscover","discover","dropzones","checkElements","blacklistedBrowsers","capableBrowser","File","FileList","Blob","regex","navigator","userAgent","dataURI","byteString","atob","split","mimeString","ab","ArrayBuffer","ia","Uint8Array","asc","charCodeAt","list","rejectedItem","str","charAt","string","div","childNodes","container","els","Array","question","rejected","mimeType","baseMimeType","validType","jQuery","each","module","exports","ACCEPTED","PROCESSING","detectVerticalSquash","iw","naturalWidth","ih","naturalHeight","drawImage","getImageData","sy","ey","py","alpha","ratio","sx","sw","sh","dx","dy","dw","dh","vertSquashRatio","KEY_STR","output","chr1","chr2","chr3","enc1","enc2","enc3","enc4","isNaN","origFileBase64","resizedFileBase64","rawImage","decode64","segments","slice2Segments","image","exifManipulation","encode64","exifArray","getExifArray","newImageArray","insertExif","aBuffer","seg","imageData","buf","separatePoint","mae","ato","array","concat","rawImageArray","head","endPoint","base64test","exec","contentLoaded","win","doc","root","documentElement","rem","pre","poll","doScroll","createEventObject","frameElement","_autoDiscoverFunction","transform","obj","methodName"],"mappings":"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","sourcesContent":["/*\n *\n * More info at [www.dropzonejs.com](http://www.dropzonejs.com)\n *\n * Copyright (c) 2012, Matias Meno\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n *\n */\n\n\n// The Emitter class provides the ability to call `.on()` on Dropzone to listen\n// to events.\n// It is strongly based on component's emitter class, and I removed the\n// functionality because of the dependency hell with different frameworks.\nclass Emitter {\n  // Add an event listener for given event\n  on(event, fn) {\n    this._callbacks = this._callbacks || {};\n    // Create namespace for this event\n    if (!this._callbacks[event]) {\n      this._callbacks[event] = [];\n    }\n    this._callbacks[event].push(fn);\n    return this;\n  }\n\n\n  emit(event, ...args) {\n    this._callbacks = this._callbacks || {};\n    let callbacks = this._callbacks[event];\n\n    if (callbacks) {\n      for (let callback of callbacks) {\n        callback.apply(this, args);\n      }\n    }\n\n    return this;\n  }\n\n  // Remove event listener for given event. If fn is not provided, all event\n  // listeners for that event will be removed. If neither is provided, all\n  // event listeners will be removed.\n  off(event, fn) {\n    if (!this._callbacks || (arguments.length === 0)) {\n      this._callbacks = {};\n      return this;\n    }\n\n    // specific event\n    let callbacks = this._callbacks[event];\n    if (!callbacks) {\n      return this;\n    }\n\n    // remove all handlers\n    if (arguments.length === 1) {\n      delete this._callbacks[event];\n      return this;\n    }\n\n    // remove specific handler\n    for (let i = 0; i < callbacks.length; i++) {\n      let callback = callbacks[i];\n      if (callback === fn) {\n        callbacks.splice(i, 1);\n        break;\n      }\n    }\n\n    return this;\n  }\n}\n\nclass Dropzone extends Emitter {\n  static initClass() {\n\n    // Exposing the emitter class, mainly for tests\n    this.prototype.Emitter = Emitter;\n\n    /*\n     This is a list of all available events you can register on a dropzone object.\n\n     You can register an event handler like this:\n\n     dropzone.on(\"dragEnter\", function() { });\n\n     */\n    this.prototype.events = [\n      \"drop\",\n      \"dragstart\",\n      \"dragend\",\n      \"dragenter\",\n      \"dragover\",\n      \"dragleave\",\n      \"addedfile\",\n      \"addedfiles\",\n      \"removedfile\",\n      \"thumbnail\",\n      \"error\",\n      \"errormultiple\",\n      \"processing\",\n      \"processingmultiple\",\n      \"uploadprogress\",\n      \"totaluploadprogress\",\n      \"sending\",\n      \"sendingmultiple\",\n      \"success\",\n      \"successmultiple\",\n      \"canceled\",\n      \"canceledmultiple\",\n      \"complete\",\n      \"completemultiple\",\n      \"reset\",\n      \"maxfilesexceeded\",\n      \"maxfilesreached\",\n      \"queuecomplete\"\n    ];\n\n\n    this.prototype.defaultOptions = {\n      /**\n       * Has to be specified on elements other than form (or when the form\n       * doesn't have an `action` attribute). You can also\n       * provide a function that will be called with `files` and\n       * must return the url (since `v3.12.0`)\n       */\n      url: null,\n\n      /**\n       * Can be changed to `\"put\"` if necessary. You can also provide a function\n       * that will be called with `files` and must return the method (since `v3.12.0`).\n       */\n      method: \"post\",\n\n      /**\n       * Will be set on the XHRequest.\n       */\n      withCredentials: false,\n\n      /**\n       * The timeout for the XHR requests in milliseconds (since `v4.4.0`).\n       */\n      timeout: 30000,\n\n      /**\n       * How many file uploads to process in parallel (See the\n       * Enqueuing file uploads* documentation section for more info)\n       */\n      parallelUploads: 2,\n\n      /**\n       * Whether to send multiple files in one request. If\n       * this it set to true, then the fallback file input element will\n       * have the `multiple` attribute as well. This option will\n       * also trigger additional events (like `processingmultiple`). See the events\n       * documentation section for more information.\n       */\n      uploadMultiple: false,\n\n      /**\n       * Whether you want files to be uploaded in chunks to your server. This can't be\n       * used in combination with `uploadMultiple`.\n       *\n       * See [chunksUploaded](#config-chunksUploaded) for the callback to finalise an upload.\n       */\n      chunking: false,\n\n      /**\n       * If `chunking` is enabled, this defines whether **every** file should be chunked,\n       * even if the file size is below chunkSize. This means, that the additional chunk\n       * form data will be submitted and the `chunksUploaded` callback will be invoked.\n       */\n      forceChunking: false,\n\n      /**\n       * If `chunking` is `true`, then this defines the chunk size in bytes.\n       */\n      chunkSize: 2000000,\n\n      /**\n       * If `true`, the individual chunks of a file are being uploaded simultaneously.\n       */\n      parallelChunkUploads: false,\n\n      /**\n       * Whether a chunk should be retried if it fails.\n       */\n      retryChunks: false,\n\n      /**\n       * If `retryChunks` is true, how many times should it be retried.\n       */\n      retryChunksLimit: 3,\n\n      /**\n       * If not `null` defines how many files this Dropzone handles. If it exceeds,\n       * the event `maxfilesexceeded` will be called. The dropzone element gets the\n       * class `dz-max-files-reached` accordingly so you can provide visual feedback.\n       */\n      maxFilesize: 256,\n\n      /**\n       * The name of the file param that gets transferred.\n       * **NOTE**: If you have the option  `uploadMultiple` set to `true`, then\n       * Dropzone will append `[]` to the name.\n       */\n      paramName: \"file\",\n\n      /**\n       * Whether thumbnails for images should be generated\n       */\n      createImageThumbnails: true,\n\n      /**\n       * In MB. When the filename exceeds this limit, the thumbnail will not be generated.\n       */\n      maxThumbnailFilesize: 10,\n\n      /**\n       * If `null`, the ratio of the image will be used to calculate it.\n       */\n      thumbnailWidth: 120,\n\n      /**\n       * The same as `thumbnailWidth`. If both are null, images will not be resized.\n       */\n      thumbnailHeight: 120,\n\n      /**\n       * How the images should be scaled down in case both, `thumbnailWidth` and `thumbnailHeight` are provided.\n       * Can be either `contain` or `crop`.\n       */\n      thumbnailMethod: 'crop',\n\n      /**\n       * If set, images will be resized to these dimensions before being **uploaded**.\n       * If only one, `resizeWidth` **or** `resizeHeight` is provided, the original aspect\n       * ratio of the file will be preserved.\n       *\n       * The `options.transformFile` function uses these options, so if the `transformFile` function\n       * is overridden, these options don't do anything.\n       */\n      resizeWidth: null,\n\n      /**\n       * See `resizeWidth`.\n       */\n      resizeHeight: null,\n\n      /**\n       * The mime type of the resized image (before it gets uploaded to the server).\n       * If `null` the original mime type will be used. To force jpeg, for example, use `image/jpeg`.\n       * See `resizeWidth` for more information.\n       */\n      resizeMimeType: null,\n\n      /**\n       * The quality of the resized images. See `resizeWidth`.\n       */\n      resizeQuality: 0.8,\n\n      /**\n       * How the images should be scaled down in case both, `resizeWidth` and `resizeHeight` are provided.\n       * Can be either `contain` or `crop`.\n       */\n      resizeMethod: 'contain',\n\n      /**\n       * The base that is used to calculate the filesize. You can change this to\n       * 1024 if you would rather display kibibytes, mebibytes, etc...\n       * 1024 is technically incorrect, because `1024 bytes` are `1 kibibyte` not `1 kilobyte`.\n       * You can change this to `1024` if you don't care about validity.\n       */\n      filesizeBase: 1000,\n\n      /**\n       * Can be used to limit the maximum number of files that will be handled by this Dropzone\n       */\n      maxFiles: null,\n\n      /**\n       * An optional object to send additional headers to the server. Eg:\n       * `{ \"My-Awesome-Header\": \"header value\" }`\n       */\n      headers: null,\n\n      /**\n       * If `true`, the dropzone element itself will be clickable, if `false`\n       * nothing will be clickable.\n       *\n       * You can also pass an HTML element, a CSS selector (for multiple elements)\n       * or an array of those. In that case, all of those elements will trigger an\n       * upload when clicked.\n       */\n      clickable: true,\n\n      /**\n       * Whether hidden files in directories should be ignored.\n       */\n      ignoreHiddenFiles: true,\n\n\n      /**\n       * The default implementation of `accept` checks the file's mime type or\n       * extension against this list. This is a comma separated list of mime\n       * types or file extensions.\n       *\n       * Eg.: `image/*,application/pdf,.psd`\n       *\n       * If the Dropzone is `clickable` this option will also be used as\n       * [`accept`](https://developer.mozilla.org/en-US/docs/HTML/Element/input#attr-accept)\n       * parameter on the hidden file input as well.\n       */\n      acceptedFiles: null,\n\n      /**\n       * **Deprecated!**\n       * Use acceptedFiles instead.\n       */\n      acceptedMimeTypes: null,\n\n      /**\n       * If false, files will be added to the queue but the queue will not be\n       * processed automatically.\n       * This can be useful if you need some additional user input before sending\n       * files (or if you want want all files sent at once).\n       * If you're ready to send the file simply call `myDropzone.processQueue()`.\n       *\n       * See the [enqueuing file uploads](#enqueuing-file-uploads) documentation\n       * section for more information.\n       */\n      autoProcessQueue: true,\n\n      /**\n       * If false, files added to the dropzone will not be queued by default.\n       * You'll have to call `enqueueFile(file)` manually.\n       */\n      autoQueue: true,\n\n      /**\n       * If `true`, this will add a link to every file preview to remove or cancel (if\n       * already uploading) the file. The `dictCancelUpload`, `dictCancelUploadConfirmation`\n       * and `dictRemoveFile` options are used for the wording.\n       */\n      addRemoveLinks: false,\n\n      /**\n       * Defines where to display the file previews – if `null` the\n       * Dropzone element itself is used. Can be a plain `HTMLElement` or a CSS\n       * selector. The element should have the `dropzone-previews` class so\n       * the previews are displayed properly.\n       */\n      previewsContainer: null,\n\n      /**\n       * This is the element the hidden input field (which is used when clicking on the\n       * dropzone to trigger file selection) will be appended to. This might\n       * be important in case you use frameworks to switch the content of your page.\n       *\n       * Can be a selector string, or an element directly.\n       */\n      hiddenInputContainer: \"body\",\n\n      /**\n       * If null, no capture type will be specified\n       * If camera, mobile devices will skip the file selection and choose camera\n       * If microphone, mobile devices will skip the file selection and choose the microphone\n       * If camcorder, mobile devices will skip the file selection and choose the camera in video mode\n       * On apple devices multiple must be set to false.  AcceptedFiles may need to\n       * be set to an appropriate mime type (e.g. \"image/*\", \"audio/*\", or \"video/*\").\n       */\n      capture: null,\n\n      /**\n       * **Deprecated**. Use `renameFile` instead.\n       */\n      renameFilename: null,\n\n      /**\n       * A function that is invoked before the file is uploaded to the server and renames the file.\n       * This function gets the `File` as argument and can use the `file.name`. The actual name of the\n       * file that gets used during the upload can be accessed through `file.upload.filename`.\n       */\n      renameFile: null,\n\n      /**\n       * If `true` the fallback will be forced. This is very useful to test your server\n       * implementations first and make sure that everything works as\n       * expected without dropzone if you experience problems, and to test\n       * how your fallbacks will look.\n       */\n      forceFallback: false,\n\n      /**\n       * The text used before any files are dropped.\n       */\n      dictDefaultMessage: \"Drop files here to upload\",\n\n      /**\n       * The text that replaces the default message text it the browser is not supported.\n       */\n      dictFallbackMessage: \"Your browser does not support drag'n'drop file uploads.\",\n\n      /**\n       * The text that will be added before the fallback form.\n       * If you provide a  fallback element yourself, or if this option is `null` this will\n       * be ignored.\n       */\n      dictFallbackText: \"Please use the fallback form below to upload your files like in the olden days.\",\n\n      /**\n       * If the filesize is too big.\n       * `{{filesize}}` and `{{maxFilesize}}` will be replaced with the respective configuration values.\n       */\n      dictFileTooBig: \"File is too big ({{filesize}}MiB). Max filesize: {{maxFilesize}}MiB.\",\n\n      /**\n       * If the file doesn't match the file type.\n       */\n      dictInvalidFileType: \"You can't upload files of this type.\",\n\n      /**\n       * If the server response was invalid.\n       * `{{statusCode}}` will be replaced with the servers status code.\n       */\n      dictResponseError: \"Server responded with {{statusCode}} code.\",\n\n      /**\n       * If `addRemoveLinks` is true, the text to be used for the cancel upload link.\n       */\n      dictCancelUpload: \"Cancel upload\",\n\n      /**\n       * The text that is displayed if an upload was manually canceled\n       */\n      dictUploadCanceled: \"Upload canceled.\",\n\n      /**\n       * If `addRemoveLinks` is true, the text to be used for confirmation when cancelling upload.\n       */\n      dictCancelUploadConfirmation: \"Are you sure you want to cancel this upload?\",\n\n      /**\n       * If `addRemoveLinks` is true, the text to be used to remove a file.\n       */\n      dictRemoveFile: \"Remove file\",\n\n      /**\n       * If this is not null, then the user will be prompted before removing a file.\n       */\n      dictRemoveFileConfirmation: null,\n\n      /**\n       * Displayed if `maxFiles` is st and exceeded.\n       * The string `{{maxFiles}}` will be replaced by the configuration value.\n       */\n      dictMaxFilesExceeded: \"You can not upload any more files.\",\n\n      /**\n       * Allows you to translate the different units. Starting with `tb` for terabytes and going down to\n       * `b` for bytes.\n       */\n      dictFileSizeUnits: {tb: \"TB\", gb: \"GB\", mb: \"MB\", kb: \"KB\", b: \"b\"},\n      /**\n       * Called when dropzone initialized\n       * You can add event listeners here\n       */\n      init() {},\n\n      /**\n       * Can be an **object** of additional parameters to transfer to the server, **or** a `Function`\n       * that gets invoked with the `files`, `xhr` and, if it's a chunked upload, `chunk` arguments. In case\n       * of a function, this needs to return a map.\n       *\n       * The default implementation does nothing for normal uploads, but adds relevant information for\n       * chunked uploads.\n       *\n       * This is the same as adding hidden input fields in the form element.\n       */\n      params(files, xhr, chunk) {\n        if (chunk) {\n          return {\n            dzuuid: chunk.file.upload.uuid,\n            dzchunkindex: chunk.index,\n            dztotalfilesize: chunk.file.size,\n            dzchunksize: this.options.chunkSize,\n            dztotalchunkcount: chunk.file.upload.totalChunkCount,\n            dzchunkbyteoffset: chunk.index * this.options.chunkSize\n          };\n        }\n      },\n\n      /**\n       * A function that gets a [file](https://developer.mozilla.org/en-US/docs/DOM/File)\n       * and a `done` function as parameters.\n       *\n       * If the done function is invoked without arguments, the file is \"accepted\" and will\n       * be processed. If you pass an error message, the file is rejected, and the error\n       * message will be displayed.\n       * This function will not be called if the file is too big or doesn't match the mime types.\n       */\n      accept(file, done) {\n        return done();\n      },\n\n      /**\n       * The callback that will be invoked when all chunks have been uploaded for a file.\n       * It gets the file for which the chunks have been uploaded as the first parameter,\n       * and the `done` function as second. `done()` needs to be invoked when everything\n       * needed to finish the upload process is done.\n       */\n      chunksUploaded: function(file, done) { done(); },\n\n      /**\n       * Gets called when the browser is not supported.\n       * The default implementation shows the fallback input field and adds\n       * a text.\n       */\n      fallback() {\n        // This code should pass in IE7... :(\n        let messageElement;\n        this.element.className = `${this.element.className} dz-browser-not-supported`;\n\n        for (let child of this.element.getElementsByTagName(\"div\")) {\n          if (/(^| )dz-message($| )/.test(child.className)) {\n            messageElement = child;\n            child.className = \"dz-message\"; // Removes the 'dz-default' class\n            break;\n          }\n        }\n        if (!messageElement) {\n          messageElement = Dropzone.createElement(\"<div class=\\\"dz-message\\\"><span></span></div>\");\n          this.element.appendChild(messageElement);\n        }\n\n        let span = messageElement.getElementsByTagName(\"span\")[0];\n        if (span) {\n          if (span.textContent != null) {\n            span.textContent = this.options.dictFallbackMessage;\n          } else if (span.innerText != null) {\n            span.innerText = this.options.dictFallbackMessage;\n          }\n        }\n\n        return this.element.appendChild(this.getFallbackForm());\n      },\n\n\n      /**\n       * Gets called to calculate the thumbnail dimensions.\n       *\n       * It gets `file`, `width` and `height` (both may be `null`) as parameters and must return an object containing:\n       *\n       *  - `srcWidth` & `srcHeight` (required)\n       *  - `trgWidth` & `trgHeight` (required)\n       *  - `srcX` & `srcY` (optional, default `0`)\n       *  - `trgX` & `trgY` (optional, default `0`)\n       *\n       * Those values are going to be used by `ctx.drawImage()`.\n       */\n      resize(file, width, height, resizeMethod) {\n        let info = {\n          srcX: 0,\n          srcY: 0,\n          srcWidth: file.width,\n          srcHeight: file.height\n        };\n\n        let srcRatio = file.width / file.height;\n\n        // Automatically calculate dimensions if not specified\n        if ((width == null) && (height == null)) {\n          width = info.srcWidth;\n          height = info.srcHeight;\n        } else if ((width == null)) {\n          width = height * srcRatio;\n        } else if ((height == null)) {\n          height = width / srcRatio;\n        }\n\n        // Make sure images aren't upscaled\n        width = Math.min(width, info.srcWidth);\n        height = Math.min(height, info.srcHeight);\n\n        let trgRatio = width / height;\n\n        if ((info.srcWidth > width) || (info.srcHeight > height)) {\n          // Image is bigger and needs rescaling\n          if (resizeMethod === 'crop') {\n            if (srcRatio > trgRatio) {\n              info.srcHeight = file.height;\n              info.srcWidth = info.srcHeight * trgRatio;\n            } else {\n              info.srcWidth = file.width;\n              info.srcHeight = info.srcWidth / trgRatio;\n            }\n          } else if (resizeMethod === 'contain') {\n            // Method 'contain'\n            if (srcRatio > trgRatio) {\n              height = width / srcRatio;\n            } else {\n              width = height * srcRatio;\n            }\n          } else {\n            throw new Error(`Unknown resizeMethod '${resizeMethod}'`);\n          }\n        }\n\n        info.srcX = (file.width - info.srcWidth) / 2;\n        info.srcY = (file.height - info.srcHeight) / 2;\n\n        info.trgWidth = width;\n        info.trgHeight = height;\n\n        return info;\n      },\n\n      /**\n       * Can be used to transform the file (for example, resize an image if necessary).\n       *\n       * The default implementation uses `resizeWidth` and `resizeHeight` (if provided) and resizes\n       * images according to those dimensions.\n       *\n       * Gets the `file` as the first parameter, and a `done()` function as the second, that needs\n       * to be invoked with the file when the transformation is done.\n       */\n      transformFile(file, done) {\n        if ((this.options.resizeWidth || this.options.resizeHeight) && file.type.match(/image.*/)) {\n          return this.resizeImage(file, this.options.resizeWidth, this.options.resizeHeight, this.options.resizeMethod, done);\n        } else {\n          return done(file);\n        }\n      },\n\n\n      /**\n       * A string that contains the template used for each dropped\n       * file. Change it to fulfill your needs but make sure to properly\n       * provide all elements.\n       *\n       * If you want to use an actual HTML element instead of providing a String\n       * as a config option, you could create a div with the id `tpl`,\n       * put the template inside it and provide the element like this:\n       *\n       *     document\n       *       .querySelector('#tpl')\n       *       .innerHTML\n       *\n       */\n      previewTemplate: `\\\n<div class=\"dz-preview dz-file-preview\">\n  <div class=\"dz-image\"><img data-dz-thumbnail /></div>\n  <div class=\"dz-details\">\n    <div class=\"dz-size\"><span data-dz-size></span></div>\n    <div class=\"dz-filename\"><span data-dz-name></span></div>\n  </div>\n  <div class=\"dz-progress\"><span class=\"dz-upload\" data-dz-uploadprogress></span></div>\n  <div class=\"dz-error-message\"><span data-dz-errormessage></span></div>\n  <div class=\"dz-success-mark\">\n    <svg width=\"54px\" height=\"54px\" viewBox=\"0 0 54 54\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:sketch=\"http://www.bohemiancoding.com/sketch/ns\">\n      <title>Check</title>\n      <defs></defs>\n      <g id=\"Page-1\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\" sketch:type=\"MSPage\">\n        <path d=\"M23.5,31.8431458 L17.5852419,25.9283877 C16.0248253,24.3679711 13.4910294,24.366835 11.9289322,25.9289322 C10.3700136,27.4878508 10.3665912,30.0234455 11.9283877,31.5852419 L20.4147581,40.0716123 C20.5133999,40.1702541 20.6159315,40.2626649 20.7218615,40.3488435 C22.2835669,41.8725651 24.794234,41.8626202 26.3461564,40.3106978 L43.3106978,23.3461564 C44.8771021,21.7797521 44.8758057,19.2483887 43.3137085,17.6862915 C41.7547899,16.1273729 39.2176035,16.1255422 37.6538436,17.6893022 L23.5,31.8431458 Z M27,53 C41.3594035,53 53,41.3594035 53,27 C53,12.6405965 41.3594035,1 27,1 C12.6405965,1 1,12.6405965 1,27 C1,41.3594035 12.6405965,53 27,53 Z\" id=\"Oval-2\" stroke-opacity=\"0.198794158\" stroke=\"#747474\" fill-opacity=\"0.816519475\" fill=\"#FFFFFF\" sketch:type=\"MSShapeGroup\"></path>\n      </g>\n    </svg>\n  </div>\n  <div class=\"dz-error-mark\">\n    <svg width=\"54px\" height=\"54px\" viewBox=\"0 0 54 54\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:sketch=\"http://www.bohemiancoding.com/sketch/ns\">\n      <title>Error</title>\n      <defs></defs>\n      <g id=\"Page-1\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\" sketch:type=\"MSPage\">\n        <g id=\"Check-+-Oval-2\" sketch:type=\"MSLayerGroup\" stroke=\"#747474\" stroke-opacity=\"0.198794158\" fill=\"#FFFFFF\" fill-opacity=\"0.816519475\">\n          <path d=\"M32.6568542,29 L38.3106978,23.3461564 C39.8771021,21.7797521 39.8758057,19.2483887 38.3137085,17.6862915 C36.7547899,16.1273729 34.2176035,16.1255422 32.6538436,17.6893022 L27,23.3431458 L21.3461564,17.6893022 C19.7823965,16.1255422 17.2452101,16.1273729 15.6862915,17.6862915 C14.1241943,19.2483887 14.1228979,21.7797521 15.6893022,23.3461564 L21.3431458,29 L15.6893022,34.6538436 C14.1228979,36.2202479 14.1241943,38.7516113 15.6862915,40.3137085 C17.2452101,41.8726271 19.7823965,41.8744578 21.3461564,40.3106978 L27,34.6568542 L32.6538436,40.3106978 C34.2176035,41.8744578 36.7547899,41.8726271 38.3137085,40.3137085 C39.8758057,38.7516113 39.8771021,36.2202479 38.3106978,34.6538436 L32.6568542,29 Z M27,53 C41.3594035,53 53,41.3594035 53,27 C53,12.6405965 41.3594035,1 27,1 C12.6405965,1 1,12.6405965 1,27 C1,41.3594035 12.6405965,53 27,53 Z\" id=\"Oval-2\" sketch:type=\"MSShapeGroup\"></path>\n        </g>\n      </g>\n    </svg>\n  </div>\n</div>\\\n`,\n\n      // END OPTIONS\n      // (Required by the dropzone documentation parser)\n\n\n      /*\n       Those functions register themselves to the events on init and handle all\n       the user interface specific stuff. Overwriting them won't break the upload\n       but can break the way it's displayed.\n       You can overwrite them if you don't like the default behavior. If you just\n       want to add an additional event handler, register it on the dropzone object\n       and don't overwrite those options.\n       */\n\n\n\n\n      // Those are self explanatory and simply concern the DragnDrop.\n      drop(e) {\n        return this.element.classList.remove(\"dz-drag-hover\");\n      },\n      dragstart(e) {\n      },\n      dragend(e) {\n        return this.element.classList.remove(\"dz-drag-hover\");\n      },\n      dragenter(e) {\n        return this.element.classList.add(\"dz-drag-hover\");\n      },\n      dragover(e) {\n        return this.element.classList.add(\"dz-drag-hover\");\n      },\n      dragleave(e) {\n        return this.element.classList.remove(\"dz-drag-hover\");\n      },\n\n      paste(e) {\n      },\n\n      // Called whenever there are no files left in the dropzone anymore, and the\n      // dropzone should be displayed as if in the initial state.\n      reset() {\n        return this.element.classList.remove(\"dz-started\");\n      },\n\n      // Called when a file is added to the queue\n      // Receives `file`\n      addedfile(file) {\n        if (this.element === this.previewsContainer) {\n          this.element.classList.add(\"dz-started\");\n        }\n\n        if (this.previewsContainer) {\n          file.previewElement = Dropzone.createElement(this.options.previewTemplate.trim());\n          file.previewTemplate = file.previewElement; // Backwards compatibility\n\n          this.previewsContainer.appendChild(file.previewElement);\n          for (var node of file.previewElement.querySelectorAll(\"[data-dz-name]\")) {\n            node.textContent = file.name;\n          }\n          for (node of file.previewElement.querySelectorAll(\"[data-dz-size]\")) {\n            node.innerHTML = this.filesize(file.size);\n          }\n\n          if (this.options.addRemoveLinks) {\n            file._removeLink = Dropzone.createElement(`<a class=\"dz-remove\" href=\"javascript:undefined;\" data-dz-remove>${this.options.dictRemoveFile}</a>`);\n            file.previewElement.appendChild(file._removeLink);\n          }\n\n          let removeFileEvent = e => {\n            e.preventDefault();\n            e.stopPropagation();\n            if (file.status === Dropzone.UPLOADING) {\n              return Dropzone.confirm(this.options.dictCancelUploadConfirmation, () => this.removeFile(file));\n            } else {\n              if (this.options.dictRemoveFileConfirmation) {\n                return Dropzone.confirm(this.options.dictRemoveFileConfirmation, () => this.removeFile(file));\n              } else {\n                return this.removeFile(file);\n              }\n            }\n          };\n\n          for (let removeLink of file.previewElement.querySelectorAll(\"[data-dz-remove]\")) {\n             removeLink.addEventListener(\"click\", removeFileEvent);\n          }\n        }\n      },\n\n\n      // Called whenever a file is removed.\n      removedfile(file) {\n        if (file.previewElement != null && file.previewElement.parentNode != null) {\n          file.previewElement.parentNode.removeChild(file.previewElement);\n        }\n        return this._updateMaxFilesReachedClass();\n      },\n\n      // Called when a thumbnail has been generated\n      // Receives `file` and `dataUrl`\n      thumbnail(file, dataUrl) {\n        if (file.previewElement) {\n          file.previewElement.classList.remove(\"dz-file-preview\");\n          for (let thumbnailElement of file.previewElement.querySelectorAll(\"[data-dz-thumbnail]\")) {\n            thumbnailElement.alt = file.name;\n            thumbnailElement.src = dataUrl;\n          }\n\n          return setTimeout((() => file.previewElement.classList.add(\"dz-image-preview\")), 1);\n        }\n      },\n\n      // Called whenever an error occurs\n      // Receives `file` and `message`\n      error(file, message) {\n        if (file.previewElement) {\n          file.previewElement.classList.add(\"dz-error\");\n          if ((typeof message !== \"String\") && message.error) {\n            message = message.error;\n          }\n          for (let node of file.previewElement.querySelectorAll(\"[data-dz-errormessage]\")) {\n            node.textContent = message;\n          }\n        }\n      },\n\n      errormultiple() {\n      },\n\n      // Called when a file gets processed. Since there is a cue, not all added\n      // files are processed immediately.\n      // Receives `file`\n      processing(file) {\n        if (file.previewElement) {\n          file.previewElement.classList.add(\"dz-processing\");\n          if (file._removeLink) {\n            return file._removeLink.innerHTML = this.options.dictCancelUpload;\n          }\n        }\n      },\n\n      processingmultiple() {\n      },\n\n      // Called whenever the upload progress gets updated.\n      // Receives `file`, `progress` (percentage 0-100) and `bytesSent`.\n      // To get the total number of bytes of the file, use `file.size`\n      uploadprogress(file, progress, bytesSent) {\n        if (file.previewElement) {\n          for (let node of file.previewElement.querySelectorAll(\"[data-dz-uploadprogress]\")) {\n              node.nodeName === 'PROGRESS' ?\n                  (node.value = progress)\n                  :\n                  (node.style.width = `${progress}%`)\n          }\n        }\n      },\n\n      // Called whenever the total upload progress gets updated.\n      // Called with totalUploadProgress (0-100), totalBytes and totalBytesSent\n      totaluploadprogress() {\n      },\n\n      // Called just before the file is sent. Gets the `xhr` object as second\n      // parameter, so you can modify it (for example to add a CSRF token) and a\n      // `formData` object to add additional information.\n      sending() {\n      },\n\n      sendingmultiple() {},\n\n      // When the complete upload is finished and successful\n      // Receives `file`\n      success(file) {\n        if (file.previewElement) {\n          return file.previewElement.classList.add(\"dz-success\");\n        }\n      },\n\n      successmultiple() {},\n\n      // When the upload is canceled.\n      canceled(file) {\n        return this.emit(\"error\", file, this.options.dictUploadCanceled);\n      },\n\n      canceledmultiple() {},\n\n      // When the upload is finished, either with success or an error.\n      // Receives `file`\n      complete(file) {\n        if (file._removeLink) {\n          file._removeLink.innerHTML = this.options.dictRemoveFile;\n        }\n        if (file.previewElement) {\n          return file.previewElement.classList.add(\"dz-complete\");\n        }\n      },\n\n      completemultiple() {},\n\n      maxfilesexceeded() {},\n\n      maxfilesreached() {},\n\n      queuecomplete() {},\n\n      addedfiles() {}\n    };\n\n\n    this.prototype._thumbnailQueue = [];\n    this.prototype._processingThumbnail = false;\n  }\n\n  // global utility\n  static extend(target, ...objects) {\n    for (let object of objects) {\n      for (let key in object) {\n        let val = object[key];\n        target[key] = val;\n      }\n    }\n    return target;\n  }\n\n  constructor(el, options) {\n    super();\n    let fallback, left;\n    this.element = el;\n    // For backwards compatibility since the version was in the prototype previously\n    this.version = Dropzone.version;\n\n    this.defaultOptions.previewTemplate = this.defaultOptions.previewTemplate.replace(/\\n*/g, \"\");\n\n    this.clickableElements = [];\n    this.listeners = [];\n    this.files = []; // All files\n\n    if (typeof this.element === \"string\") {\n      this.element = document.querySelector(this.element);\n    }\n\n    // Not checking if instance of HTMLElement or Element since IE9 is extremely weird.\n    if (!this.element || (this.element.nodeType == null)) {\n      throw new Error(\"Invalid dropzone element.\");\n    }\n\n    if (this.element.dropzone) {\n      throw new Error(\"Dropzone already attached.\");\n    }\n\n    // Now add this dropzone to the instances.\n    Dropzone.instances.push(this);\n\n    // Put the dropzone inside the element itself.\n    this.element.dropzone = this;\n\n    let elementOptions = (left = Dropzone.optionsForElement(this.element)) != null ? left : {};\n\n    this.options = Dropzone.extend({}, this.defaultOptions, elementOptions, options != null ? options : {});\n\n    // If the browser failed, just call the fallback and leave\n    if (this.options.forceFallback || !Dropzone.isBrowserSupported()) {\n      return this.options.fallback.call(this);\n    }\n\n    // @options.url = @element.getAttribute \"action\" unless @options.url?\n    if (this.options.url == null) {\n      this.options.url = this.element.getAttribute(\"action\");\n    }\n\n    if (!this.options.url) {\n      throw new Error(\"No URL provided.\");\n    }\n\n    if (this.options.acceptedFiles && this.options.acceptedMimeTypes) {\n      throw new Error(\"You can't provide both 'acceptedFiles' and 'acceptedMimeTypes'. 'acceptedMimeTypes' is deprecated.\");\n    }\n\n    if (this.options.uploadMultiple && this.options.chunking) {\n      throw new Error('You cannot set both: uploadMultiple and chunking.');\n    }\n\n    // Backwards compatibility\n    if (this.options.acceptedMimeTypes) {\n      this.options.acceptedFiles = this.options.acceptedMimeTypes;\n      delete this.options.acceptedMimeTypes;\n    }\n\n    // Backwards compatibility\n    if (this.options.renameFilename != null) {\n      this.options.renameFile = file => this.options.renameFilename.call(this, file.name, file);\n    }\n\n    this.options.method = this.options.method.toUpperCase();\n\n    if ((fallback = this.getExistingFallback()) && fallback.parentNode) {\n      // Remove the fallback\n      fallback.parentNode.removeChild(fallback);\n    }\n\n    // Display previews in the previewsContainer element or the Dropzone element unless explicitly set to false\n    if (this.options.previewsContainer !== false) {\n      if (this.options.previewsContainer) {\n        this.previewsContainer = Dropzone.getElement(this.options.previewsContainer, \"previewsContainer\");\n      } else {\n        this.previewsContainer = this.element;\n      }\n    }\n\n    if (this.options.clickable) {\n      if (this.options.clickable === true) {\n        this.clickableElements = [this.element];\n      } else {\n        this.clickableElements = Dropzone.getElements(this.options.clickable, \"clickable\");\n      }\n    }\n\n\n    this.init();\n  }\n\n\n  // Returns all files that have been accepted\n  getAcceptedFiles() {\n    return this.files.filter((file) => file.accepted).map((file) => file);\n  }\n\n  // Returns all files that have been rejected\n  // Not sure when that's going to be useful, but added for completeness.\n  getRejectedFiles() {\n    return this.files.filter((file) => !file.accepted).map((file) => file);\n  }\n\n  getFilesWithStatus(status) {\n    return this.files.filter((file) => file.status === status).map((file) => file);\n  }\n\n  // Returns all files that are in the queue\n  getQueuedFiles() {\n    return this.getFilesWithStatus(Dropzone.QUEUED);\n  }\n\n  getUploadingFiles() {\n    return this.getFilesWithStatus(Dropzone.UPLOADING);\n  }\n\n  getAddedFiles() {\n    return this.getFilesWithStatus(Dropzone.ADDED);\n  }\n\n  // Files that are either queued or uploading\n  getActiveFiles() {\n    return this.files.filter((file) => (file.status === Dropzone.UPLOADING) || (file.status === Dropzone.QUEUED)).map((file) => file);\n  }\n\n  // The function that gets called when Dropzone is initialized. You\n  // can (and should) setup event listeners inside this function.\n  init() {\n    // In case it isn't set already\n    if (this.element.tagName === \"form\") {\n      this.element.setAttribute(\"enctype\", \"multipart/form-data\");\n    }\n\n    if (this.element.classList.contains(\"dropzone\") && !this.element.querySelector(\".dz-message\")) {\n      this.element.appendChild(Dropzone.createElement(`<div class=\"dz-default dz-message\"><span>${this.options.dictDefaultMessage}</span></div>`));\n    }\n\n    if (this.clickableElements.length) {\n      let setupHiddenFileInput = () => {\n        if (this.hiddenFileInput) {\n          this.hiddenFileInput.parentNode.removeChild(this.hiddenFileInput);\n        }\n        this.hiddenFileInput = document.createElement(\"input\");\n        this.hiddenFileInput.setAttribute(\"type\", \"file\");\n        if ((this.options.maxFiles === null) || (this.options.maxFiles > 1)) {\n          this.hiddenFileInput.setAttribute(\"multiple\", \"multiple\");\n        }\n        this.hiddenFileInput.className = \"dz-hidden-input\";\n\n        if (this.options.acceptedFiles !== null) {\n          this.hiddenFileInput.setAttribute(\"accept\", this.options.acceptedFiles);\n        }\n        if (this.options.capture !== null) {\n          this.hiddenFileInput.setAttribute(\"capture\", this.options.capture);\n        }\n\n        // Not setting `display=\"none\"` because some browsers don't accept clicks\n        // on elements that aren't displayed.\n        this.hiddenFileInput.style.visibility = \"hidden\";\n        this.hiddenFileInput.style.position = \"absolute\";\n        this.hiddenFileInput.style.top = \"0\";\n        this.hiddenFileInput.style.left = \"0\";\n        this.hiddenFileInput.style.height = \"0\";\n        this.hiddenFileInput.style.width = \"0\";\n        Dropzone.getElement(this.options.hiddenInputContainer, 'hiddenInputContainer').appendChild(this.hiddenFileInput);\n        return this.hiddenFileInput.addEventListener(\"change\", () => {\n          let {files} = this.hiddenFileInput;\n          if (files.length) {\n            for (let file of files) {\n              this.addFile(file);\n            }\n          }\n          this.emit(\"addedfiles\", files);\n          return setupHiddenFileInput();\n        });\n      };\n      setupHiddenFileInput();\n    }\n\n    this.URL = window.URL !== null ? window.URL : window.webkitURL;\n\n\n    // Setup all event listeners on the Dropzone object itself.\n    // They're not in @setupEventListeners() because they shouldn't be removed\n    // again when the dropzone gets disabled.\n    for (let eventName of this.events) {\n      this.on(eventName, this.options[eventName]);\n    }\n\n    this.on(\"uploadprogress\", () => this.updateTotalUploadProgress());\n\n    this.on(\"removedfile\", () => this.updateTotalUploadProgress());\n\n    this.on(\"canceled\", file => this.emit(\"complete\", file));\n\n    // Emit a `queuecomplete` event if all files finished uploading.\n    this.on(\"complete\", file => {\n      if ((this.getAddedFiles().length === 0) && (this.getUploadingFiles().length === 0) && (this.getQueuedFiles().length === 0)) {\n        // This needs to be deferred so that `queuecomplete` really triggers after `complete`\n        return setTimeout((() => this.emit(\"queuecomplete\")), 0);\n      }\n    });\n\n\n    let noPropagation = function (e) {\n      e.stopPropagation();\n      if (e.preventDefault) {\n        return e.preventDefault();\n      } else {\n        return e.returnValue = false;\n      }\n    };\n\n    // Create the listeners\n    this.listeners = [\n      {\n        element: this.element,\n        events: {\n          \"dragstart\": e => {\n            return this.emit(\"dragstart\", e);\n          },\n          \"dragenter\": e => {\n            noPropagation(e);\n            return this.emit(\"dragenter\", e);\n          },\n          \"dragover\": e => {\n            // Makes it possible to drag files from chrome's download bar\n            // http://stackoverflow.com/questions/19526430/drag-and-drop-file-uploads-from-chrome-downloads-bar\n            // Try is required to prevent bug in Internet Explorer 11 (SCRIPT65535 exception)\n            let efct;\n            try {\n              efct = e.dataTransfer.effectAllowed;\n            } catch (error) {\n            }\n            e.dataTransfer.dropEffect = ('move' === efct) || ('linkMove' === efct) ? 'move' : 'copy';\n\n            noPropagation(e);\n            return this.emit(\"dragover\", e);\n          },\n          \"dragleave\": e => {\n            return this.emit(\"dragleave\", e);\n          },\n          \"drop\": e => {\n            noPropagation(e);\n            return this.drop(e);\n          },\n          \"dragend\": e => {\n            return this.emit(\"dragend\", e);\n          }\n        }\n\n        // This is disabled right now, because the browsers don't implement it properly.\n        // \"paste\": (e) =>\n        //   noPropagation e\n        //   @paste e\n      }\n    ];\n\n    this.clickableElements.forEach(clickableElement => {\n      return this.listeners.push({\n        element: clickableElement,\n        events: {\n          \"click\": evt => {\n            // Only the actual dropzone or the message element should trigger file selection\n            if ((clickableElement !== this.element) || ((evt.target === this.element) || Dropzone.elementInside(evt.target, this.element.querySelector(\".dz-message\")))) {\n              this.hiddenFileInput.click(); // Forward the click\n            }\n            return true;\n          }\n        }\n      });\n    });\n\n    this.enable();\n\n    return this.options.init.call(this);\n  }\n\n  // Not fully tested yet\n  destroy() {\n    this.disable();\n    this.removeAllFiles(true);\n    if (this.hiddenFileInput != null ? this.hiddenFileInput.parentNode : undefined) {\n      this.hiddenFileInput.parentNode.removeChild(this.hiddenFileInput);\n      this.hiddenFileInput = null;\n    }\n    delete this.element.dropzone;\n    return Dropzone.instances.splice(Dropzone.instances.indexOf(this), 1);\n  }\n\n\n  updateTotalUploadProgress() {\n    let totalUploadProgress;\n    let totalBytesSent = 0;\n    let totalBytes = 0;\n\n    let activeFiles = this.getActiveFiles();\n\n    if (activeFiles.length) {\n      for (let file of this.getActiveFiles()) {\n        totalBytesSent += file.upload.bytesSent;\n        totalBytes += file.upload.total;\n      }\n      totalUploadProgress = (100 * totalBytesSent) / totalBytes;\n    } else {\n      totalUploadProgress = 100;\n    }\n\n    return this.emit(\"totaluploadprogress\", totalUploadProgress, totalBytes, totalBytesSent);\n  }\n\n  // @options.paramName can be a function taking one parameter rather than a string.\n  // A parameter name for a file is obtained simply by calling this with an index number.\n  _getParamName(n) {\n    if (typeof this.options.paramName === \"function\") {\n      return this.options.paramName(n);\n    } else {\n      return `${this.options.paramName}${this.options.uploadMultiple ? `[${n}]` : \"\"}`;\n    }\n  }\n\n  // If @options.renameFile is a function,\n  // the function will be used to rename the file.name before appending it to the formData\n  _renameFile(file) {\n    if (typeof this.options.renameFile !== \"function\") {\n      return file.name;\n    }\n    return this.options.renameFile(file);\n  }\n\n  // Returns a form that can be used as fallback if the browser does not support DragnDrop\n  //\n  // If the dropzone is already a form, only the input field and button are returned. Otherwise a complete form element is provided.\n  // This code has to pass in IE7 :(\n  getFallbackForm() {\n    let existingFallback, form;\n    if (existingFallback = this.getExistingFallback()) {\n      return existingFallback;\n    }\n\n    let fieldsString = \"<div class=\\\"dz-fallback\\\">\";\n    if (this.options.dictFallbackText) {\n      fieldsString += `<p>${this.options.dictFallbackText}</p>`;\n    }\n    fieldsString += `<input type=\"file\" name=\"${this._getParamName(0)}\" ${this.options.uploadMultiple ? 'multiple=\"multiple\"' : undefined } /><input type=\"submit\" value=\"Upload!\"></div>`;\n\n    let fields = Dropzone.createElement(fieldsString);\n    if (this.element.tagName !== \"FORM\") {\n      form = Dropzone.createElement(`<form action=\"${this.options.url}\" enctype=\"multipart/form-data\" method=\"${this.options.method}\"></form>`);\n      form.appendChild(fields);\n    } else {\n      // Make sure that the enctype and method attributes are set properly\n      this.element.setAttribute(\"enctype\", \"multipart/form-data\");\n      this.element.setAttribute(\"method\", this.options.method);\n    }\n    return form != null ? form : fields;\n  }\n\n\n  // Returns the fallback elements if they exist already\n  //\n  // This code has to pass in IE7 :(\n  getExistingFallback() {\n    let getFallback = function (elements) {\n      for (let el of elements) {\n        if (/(^| )fallback($| )/.test(el.className)) {\n          return el;\n        }\n      }\n    };\n\n    for (let tagName of [\"div\", \"form\"]) {\n      var fallback;\n      if (fallback = getFallback(this.element.getElementsByTagName(tagName))) {\n        return fallback;\n      }\n    }\n  }\n\n\n  // Activates all listeners stored in @listeners\n  setupEventListeners() {\n    return this.listeners.map((elementListeners) =>\n        (() => {\n          let result = [];\n          for (let event in elementListeners.events) {\n            let listener = elementListeners.events[event];\n            result.push(elementListeners.element.addEventListener(event, listener, false));\n          }\n          return result;\n        })());\n  }\n\n\n  // Deactivates all listeners stored in @listeners\n  removeEventListeners() {\n    return this.listeners.map((elementListeners) =>\n        (() => {\n          let result = [];\n          for (let event in elementListeners.events) {\n            let listener = elementListeners.events[event];\n            result.push(elementListeners.element.removeEventListener(event, listener, false));\n          }\n          return result;\n        })());\n  }\n\n  // Removes all event listeners and cancels all files in the queue or being processed.\n  disable() {\n    this.clickableElements.forEach(element => element.classList.remove(\"dz-clickable\"));\n    this.removeEventListeners();\n    this.disabled = true;\n\n    return this.files.map((file) => this.cancelUpload(file));\n  }\n\n  enable() {\n    delete this.disabled;\n    this.clickableElements.forEach(element => element.classList.add(\"dz-clickable\"));\n    return this.setupEventListeners();\n  }\n\n  // Returns a nicely formatted filesize\n  filesize(size) {\n    let selectedSize = 0;\n    let selectedUnit = \"b\";\n\n    if (size > 0) {\n      let units = ['tb', 'gb', 'mb', 'kb', 'b'];\n\n      for (let i = 0; i < units.length; i++) {\n        let unit = units[i];\n        let cutoff = Math.pow(this.options.filesizeBase, 4 - i) / 10;\n\n        if (size >= cutoff) {\n          selectedSize = size / Math.pow(this.options.filesizeBase, 4 - i);\n          selectedUnit = unit;\n          break;\n        }\n      }\n\n      selectedSize = Math.round(10 * selectedSize) / 10; // Cutting of digits\n    }\n\n    return `<strong>${selectedSize}</strong> ${this.options.dictFileSizeUnits[selectedUnit]}`;\n  }\n\n\n  // Adds or removes the `dz-max-files-reached` class from the form.\n  _updateMaxFilesReachedClass() {\n    if ((this.options.maxFiles != null) && (this.getAcceptedFiles().length >= this.options.maxFiles)) {\n      if (this.getAcceptedFiles().length === this.options.maxFiles) {\n        this.emit('maxfilesreached', this.files);\n      }\n      return this.element.classList.add(\"dz-max-files-reached\");\n    } else {\n      return this.element.classList.remove(\"dz-max-files-reached\");\n    }\n  }\n\n\n  drop(e) {\n    if (!e.dataTransfer) {\n      return;\n    }\n    this.emit(\"drop\", e);\n\n    // Convert the FileList to an Array\n    // This is necessary for IE11\n    let files = [];\n    for (let i = 0; i < e.dataTransfer.files.length; i++) {\n      files[i] = e.dataTransfer.files[i];\n    }\n\n    this.emit(\"addedfiles\", files);\n\n    // Even if it's a folder, files.length will contain the folders.\n    if (files.length) {\n      let {items} = e.dataTransfer;\n      if (items && items.length && (items[0].webkitGetAsEntry != null)) {\n        // The browser supports dropping of folders, so handle items instead of files\n        this._addFilesFromItems(items);\n      } else {\n        this.handleFiles(files);\n      }\n    }\n  }\n\n  paste(e) {\n    if (__guard__(e != null ? e.clipboardData : undefined, x => x.items) == null) {\n      return;\n    }\n\n    this.emit(\"paste\", e);\n    let {items} = e.clipboardData;\n\n    if (items.length) {\n      return this._addFilesFromItems(items);\n    }\n  }\n\n\n  handleFiles(files) {\n    for(let file of files) {\n      this.addFile(file);\n    }\n  }\n\n  // When a folder is dropped (or files are pasted), items must be handled\n  // instead of files.\n  _addFilesFromItems(items) {\n    return (() => {\n      let result = [];\n      for (let item of items) {\n        var entry;\n        if ((item.webkitGetAsEntry != null) && (entry = item.webkitGetAsEntry())) {\n          if (entry.isFile) {\n            result.push(this.addFile(item.getAsFile()));\n          } else if (entry.isDirectory) {\n            // Append all files from that directory to files\n            result.push(this._addFilesFromDirectory(entry, entry.name));\n          } else {\n            result.push(undefined);\n          }\n        } else if (item.getAsFile != null) {\n          if ((item.kind == null) || (item.kind === \"file\")) {\n            result.push(this.addFile(item.getAsFile()));\n          } else {\n            result.push(undefined);\n          }\n        } else {\n          result.push(undefined);\n        }\n      }\n      return result;\n    })();\n  }\n\n\n  // Goes through the directory, and adds each file it finds recursively\n  _addFilesFromDirectory(directory, path) {\n    let dirReader = directory.createReader();\n\n    let errorHandler = error => __guardMethod__(console, 'log', o => o.log(error));\n\n    var readEntries = () => {\n      return dirReader.readEntries(entries => {\n            if (entries.length > 0) {\n              for (let entry of entries) {\n                if (entry.isFile) {\n                  entry.file(file => {\n                    if (this.options.ignoreHiddenFiles && (file.name.substring(0, 1) === '.')) {\n                      return;\n                    }\n                    file.fullPath = `${path}/${file.name}`;\n                    return this.addFile(file);\n                  });\n                } else if (entry.isDirectory) {\n                  this._addFilesFromDirectory(entry, `${path}/${entry.name}`);\n                }\n              }\n\n              // Recursively call readEntries() again, since browser only handle\n              // the first 100 entries.\n              // See: https://developer.mozilla.org/en-US/docs/Web/API/DirectoryReader#readEntries\n              readEntries();\n            }\n            return null;\n          }\n          , errorHandler);\n    };\n\n    return readEntries();\n  }\n\n\n  // If `done()` is called without argument the file is accepted\n  // If you call it with an error message, the file is rejected\n  // (This allows for asynchronous validation)\n  //\n  // This function checks the filesize, and if the file.type passes the\n  // `acceptedFiles` check.\n  accept(file, done) {\n    if (this.options.maxFilesize && file.size > (this.options.maxFilesize * 1024 * 1024)) {\n      return done(this.options.dictFileTooBig.replace(\"{{filesize}}\", Math.round(file.size / 1024 / 10.24) / 100).replace(\"{{maxFilesize}}\", this.options.maxFilesize));\n    } else if (!Dropzone.isValidFile(file, this.options.acceptedFiles)) {\n      return done(this.options.dictInvalidFileType);\n    } else if ((this.options.maxFiles != null) && (this.getAcceptedFiles().length >= this.options.maxFiles)) {\n      done(this.options.dictMaxFilesExceeded.replace(\"{{maxFiles}}\", this.options.maxFiles));\n      return this.emit(\"maxfilesexceeded\", file);\n    } else {\n      return this.options.accept.call(this, file, done);\n    }\n  }\n\n  addFile(file) {\n    file.upload = {\n      uuid: Dropzone.uuidv4(),\n      progress: 0,\n      // Setting the total upload size to file.size for the beginning\n      // It's actual different than the size to be transmitted.\n      total: file.size,\n      bytesSent: 0,\n      filename: this._renameFile(file),\n      chunked: this.options.chunking && (this.options.forceChunking || file.size > this.options.chunkSize),\n      totalChunkCount: Math.ceil(file.size / this.options.chunkSize)\n    };\n    this.files.push(file);\n\n    file.status = Dropzone.ADDED;\n\n    this.emit(\"addedfile\", file);\n\n    this._enqueueThumbnail(file);\n\n    return this.accept(file, error => {\n      if (error) {\n        file.accepted = false;\n        this._errorProcessing([file], error); // Will set the file.status\n      } else {\n        file.accepted = true;\n        if (this.options.autoQueue) {\n          this.enqueueFile(file);\n        } // Will set .accepted = true\n      }\n      return this._updateMaxFilesReachedClass();\n    });\n  }\n\n\n  // Wrapper for enqueueFile\n  enqueueFiles(files) {\n    for (let file of files) {\n      this.enqueueFile(file);\n    }\n    return null;\n  }\n\n  enqueueFile(file) {\n    if ((file.status === Dropzone.ADDED) && (file.accepted === true)) {\n      file.status = Dropzone.QUEUED;\n      if (this.options.autoProcessQueue) {\n        return setTimeout((() => this.processQueue()), 0); // Deferring the call\n      }\n    } else {\n      throw new Error(\"This file can't be queued because it has already been processed or was rejected.\");\n    }\n  }\n\n  _enqueueThumbnail(file) {\n    if (this.options.createImageThumbnails && file.type.match(/image.*/) && (file.size <= (this.options.maxThumbnailFilesize * 1024 * 1024))) {\n      this._thumbnailQueue.push(file);\n      return setTimeout((() => this._processThumbnailQueue()), 0); // Deferring the call\n    }\n  }\n\n  _processThumbnailQueue() {\n    if (this._processingThumbnail || (this._thumbnailQueue.length === 0)) {\n      return;\n    }\n\n    this._processingThumbnail = true;\n    let file = this._thumbnailQueue.shift();\n    return this.createThumbnail(file, this.options.thumbnailWidth, this.options.thumbnailHeight, this.options.thumbnailMethod, true, dataUrl => {\n      this.emit(\"thumbnail\", file, dataUrl);\n      this._processingThumbnail = false;\n      return this._processThumbnailQueue();\n    });\n  }\n\n\n  // Can be called by the user to remove a file\n  removeFile(file) {\n    if (file.status === Dropzone.UPLOADING) {\n      this.cancelUpload(file);\n    }\n    this.files = without(this.files, file);\n\n    this.emit(\"removedfile\", file);\n    if (this.files.length === 0) {\n      return this.emit(\"reset\");\n    }\n  }\n\n  // Removes all files that aren't currently processed from the list\n  removeAllFiles(cancelIfNecessary) {\n    // Create a copy of files since removeFile() changes the @files array.\n    if (cancelIfNecessary == null) {\n      cancelIfNecessary = false;\n    }\n    for (let file of this.files.slice()) {\n      if ((file.status !== Dropzone.UPLOADING) || cancelIfNecessary) {\n        this.removeFile(file);\n      }\n    }\n    return null;\n  }\n\n  // Resizes an image before it gets sent to the server. This function is the default behavior of\n  // `options.transformFile` if `resizeWidth` or `resizeHeight` are set. The callback is invoked with\n  // the resized blob.\n  resizeImage(file, width, height, resizeMethod, callback) {\n    return this.createThumbnail(file, width, height, resizeMethod, true, (dataUrl, canvas) => {\n      if (canvas == null) {\n        // The image has not been resized\n        return callback(file);\n      } else {\n        let {resizeMimeType} = this.options;\n        if (resizeMimeType == null) {\n          resizeMimeType = file.type;\n        }\n        let resizedDataURL = canvas.toDataURL(resizeMimeType, this.options.resizeQuality);\n        if ((resizeMimeType === 'image/jpeg') || (resizeMimeType === 'image/jpg')) {\n          // Now add the original EXIF information\n          resizedDataURL = ExifRestore.restore(file.dataURL, resizedDataURL);\n        }\n        return callback(Dropzone.dataURItoBlob(resizedDataURL));\n      }\n    });\n  }\n\n  createThumbnail(file, width, height, resizeMethod, fixOrientation, callback) {\n    let fileReader = new FileReader;\n\n    fileReader.onload = () => {\n\n      file.dataURL = fileReader.result;\n\n      // Don't bother creating a thumbnail for SVG images since they're vector\n      if (file.type === \"image/svg+xml\") {\n        if (callback != null) {\n          callback(fileReader.result);\n        }\n        return;\n      }\n\n      return this.createThumbnailFromUrl(file, width, height, resizeMethod, fixOrientation, callback);\n    };\n\n    return fileReader.readAsDataURL(file);\n  }\n\n  createThumbnailFromUrl(file, width, height, resizeMethod, fixOrientation, callback, crossOrigin) {\n    // Not using `new Image` here because of a bug in latest Chrome versions.\n    // See https://github.com/enyo/dropzone/pull/226\n    let img = document.createElement(\"img\");\n\n    if (crossOrigin) {\n      img.crossOrigin = crossOrigin;\n    }\n\n    img.onload = () => {\n      let loadExif = callback => callback(1);\n      if ((typeof EXIF !== 'undefined' && EXIF !== null) && fixOrientation) {\n        loadExif = callback =>\n            EXIF.getData(img, function () {\n              return callback(EXIF.getTag(this, 'Orientation'));\n            })\n        ;\n      }\n\n      return loadExif(orientation => {\n        file.width = img.width;\n        file.height = img.height;\n\n        let resizeInfo = this.options.resize.call(this, file, width, height, resizeMethod);\n\n        let canvas = document.createElement(\"canvas\");\n        let ctx = canvas.getContext(\"2d\");\n\n        canvas.width = resizeInfo.trgWidth;\n        canvas.height = resizeInfo.trgHeight;\n\n        if (orientation > 4) {\n          canvas.width = resizeInfo.trgHeight;\n          canvas.height = resizeInfo.trgWidth;\n        }\n\n        switch (orientation) {\n          case 2:\n            // horizontal flip\n            ctx.translate(canvas.width, 0);\n            ctx.scale(-1, 1);\n            break;\n          case 3:\n            // 180° rotate left\n            ctx.translate(canvas.width, canvas.height);\n            ctx.rotate(Math.PI);\n            break;\n          case 4:\n            // vertical flip\n            ctx.translate(0, canvas.height);\n            ctx.scale(1, -1);\n            break;\n          case 5:\n            // vertical flip + 90 rotate right\n            ctx.rotate(0.5 * Math.PI);\n            ctx.scale(1, -1);\n            break;\n          case 6:\n            // 90° rotate right\n            ctx.rotate(0.5 * Math.PI);\n            ctx.translate(0, -canvas.width);\n            break;\n          case 7:\n            // horizontal flip + 90 rotate right\n            ctx.rotate(0.5 * Math.PI);\n            ctx.translate(canvas.height, -canvas.width);\n            ctx.scale(-1, 1);\n            break;\n          case 8:\n            // 90° rotate left\n            ctx.rotate(-0.5 * Math.PI);\n            ctx.translate(-canvas.height, 0);\n            break;\n        }\n\n        // This is a bugfix for iOS' scaling bug.\n        drawImageIOSFix(ctx, img, resizeInfo.srcX != null ? resizeInfo.srcX : 0, resizeInfo.srcY != null ? resizeInfo.srcY : 0, resizeInfo.srcWidth, resizeInfo.srcHeight, resizeInfo.trgX != null ? resizeInfo.trgX : 0, resizeInfo.trgY != null ? resizeInfo.trgY : 0, resizeInfo.trgWidth, resizeInfo.trgHeight);\n\n        let thumbnail = canvas.toDataURL(\"image/png\");\n\n        if (callback != null) {\n          return callback(thumbnail, canvas);\n        }\n      });\n    };\n\n    if (callback != null) {\n      img.onerror = callback;\n    }\n\n    return img.src = file.dataURL;\n  }\n\n\n  // Goes through the queue and processes files if there aren't too many already.\n  processQueue() {\n    let {parallelUploads} = this.options;\n    let processingLength = this.getUploadingFiles().length;\n    let i = processingLength;\n\n    // There are already at least as many files uploading than should be\n    if (processingLength >= parallelUploads) {\n      return;\n    }\n\n    let queuedFiles = this.getQueuedFiles();\n\n    if (!(queuedFiles.length > 0)) {\n      return;\n    }\n\n    if (this.options.uploadMultiple) {\n      // The files should be uploaded in one request\n      return this.processFiles(queuedFiles.slice(0, (parallelUploads - processingLength)));\n    } else {\n      while (i < parallelUploads) {\n        if (!queuedFiles.length) {\n          return;\n        } // Nothing left to process\n        this.processFile(queuedFiles.shift());\n        i++;\n      }\n    }\n  }\n\n\n  // Wrapper for `processFiles`\n  processFile(file) {\n    return this.processFiles([file]);\n  }\n\n\n  // Loads the file, then calls finishedLoading()\n  processFiles(files) {\n    for (let file of files) {\n      file.processing = true; // Backwards compatibility\n      file.status = Dropzone.UPLOADING;\n\n      this.emit(\"processing\", file);\n    }\n\n    if (this.options.uploadMultiple) {\n      this.emit(\"processingmultiple\", files);\n    }\n\n    return this.uploadFiles(files);\n  }\n\n\n  _getFilesWithXhr(xhr) {\n    let files;\n    return files = (this.files.filter((file) => file.xhr === xhr).map((file) => file));\n  }\n\n\n  // Cancels the file upload and sets the status to CANCELED\n  // **if** the file is actually being uploaded.\n  // If it's still in the queue, the file is being removed from it and the status\n  // set to CANCELED.\n  cancelUpload(file) {\n    if (file.status === Dropzone.UPLOADING) {\n      let groupedFiles = this._getFilesWithXhr(file.xhr);\n      for (let groupedFile of groupedFiles) {\n        groupedFile.status = Dropzone.CANCELED;\n      }\n      if (typeof file.xhr !== 'undefined') {\n        file.xhr.abort();\n      }\n      for (let groupedFile of groupedFiles) {\n        this.emit(\"canceled\", groupedFile);\n      }\n      if (this.options.uploadMultiple) {\n        this.emit(\"canceledmultiple\", groupedFiles);\n      }\n\n    } else if (file.status === Dropzone.ADDED || file.status === Dropzone.QUEUED) {\n      file.status = Dropzone.CANCELED;\n      this.emit(\"canceled\", file);\n      if (this.options.uploadMultiple) {\n        this.emit(\"canceledmultiple\", [file]);\n      }\n    }\n\n    if (this.options.autoProcessQueue) {\n      return this.processQueue();\n    }\n  }\n\n  resolveOption(option, ...args) {\n    if (typeof option === 'function') {\n      return option.apply(this, args);\n    }\n    return option;\n  }\n\n  uploadFile(file) { return this.uploadFiles([file]); }\n\n  uploadFiles(files) {\n    this._transformFiles(files, (transformedFiles) => {\n      if (files[0].upload.chunked) {\n        // This file should be sent in chunks!\n\n        // If the chunking option is set, we **know** that there can only be **one** file, since\n        // uploadMultiple is not allowed with this option.\n        let file = files[0];\n        let transformedFile = transformedFiles[0];\n        let startedChunkCount = 0;\n\n        file.upload.chunks = [];\n\n        let handleNextChunk = () => {\n          let chunkIndex = 0;\n\n          // Find the next item in file.upload.chunks that is not defined yet.\n          while (file.upload.chunks[chunkIndex] !== undefined) {\n            chunkIndex++;\n          }\n\n          // This means, that all chunks have already been started.\n          if (chunkIndex >= file.upload.totalChunkCount) return;\n\n          startedChunkCount++;\n\n          let start = chunkIndex * this.options.chunkSize;\n          let end = Math.min(start + this.options.chunkSize, file.size);\n\n          let dataBlock = {\n            name: this._getParamName(0),\n            data: transformedFile.webkitSlice ? transformedFile.webkitSlice(start, end) : transformedFile.slice(start, end),\n            filename: file.upload.filename,\n            chunkIndex: chunkIndex\n          };\n\n          file.upload.chunks[chunkIndex] = {\n            file: file,\n            index: chunkIndex,\n            dataBlock: dataBlock, // In case we want to retry.\n            status: Dropzone.UPLOADING,\n            progress: 0,\n            retries: 0 // The number of times this block has been retried.\n          };\n\n\n          this._uploadData(files, [dataBlock]);\n        };\n\n        file.upload.finishedChunkUpload = (chunk) => {\n          let allFinished = true;\n          chunk.status = Dropzone.SUCCESS;\n\n          // Clear the data from the chunk\n          chunk.dataBlock = null;\n          // Leaving this reference to xhr intact here will cause memory leaks in some browsers\n          chunk.xhr = null;\n\n          for (let i = 0; i < file.upload.totalChunkCount; i ++) {\n            if (file.upload.chunks[i] === undefined) {\n              return handleNextChunk();\n            }\n            if (file.upload.chunks[i].status !== Dropzone.SUCCESS) {\n              allFinished = false;\n            }\n          }\n\n          if (allFinished) {\n            this.options.chunksUploaded(file, () => {\n              this._finished(files, '', null);\n            });\n          }\n        };\n\n        if (this.options.parallelChunkUploads) {\n          for (let i = 0; i < file.upload.totalChunkCount; i++) {\n            handleNextChunk();\n          }\n        }\n        else {\n          handleNextChunk();\n        }\n      } else {\n        let dataBlocks = [];\n        for (let i = 0; i < files.length; i++) {\n          dataBlocks[i] = {\n            name: this._getParamName(i),\n            data: transformedFiles[i],\n            filename: files[i].upload.filename\n          };\n        }\n        this._uploadData(files, dataBlocks);\n      }\n    });\n  }\n\n  /// Returns the right chunk for given file and xhr\n  _getChunk(file, xhr) {\n    for (let i = 0; i < file.upload.totalChunkCount; i++) {\n      if (file.upload.chunks[i] !== undefined && file.upload.chunks[i].xhr === xhr) {\n        return file.upload.chunks[i];\n      }\n    }\n  }\n\n  // This function actually uploads the file(s) to the server.\n  // If dataBlocks contains the actual data to upload (meaning, that this could either be transformed\n  // files, or individual chunks for chunked upload).\n  _uploadData(files, dataBlocks) {\n    let xhr = new XMLHttpRequest();\n\n    // Put the xhr object in the file objects to be able to reference it later.\n    for (let file of files) {\n      file.xhr = xhr;\n    }\n    if (files[0].upload.chunked) {\n      // Put the xhr object in the right chunk object, so it can be associated later, and found with _getChunk\n      files[0].upload.chunks[dataBlocks[0].chunkIndex].xhr = xhr;\n    }\n\n    let method = this.resolveOption(this.options.method, files);\n    let url = this.resolveOption(this.options.url, files);\n    xhr.open(method, url, true);\n\n    // Setting the timeout after open because of IE11 issue: https://gitlab.com/meno/dropzone/issues/8\n    xhr.timeout = this.resolveOption(this.options.timeout, files);\n\n    // Has to be after `.open()`. See https://github.com/enyo/dropzone/issues/179\n    xhr.withCredentials = !!this.options.withCredentials;\n\n\n    xhr.onload = e => {\n      this._finishedUploading(files, xhr, e);\n    };\n\n    xhr.ontimeout = () => {\n      this._handleUploadError(files, xhr, `Request timedout after ${this.options.timeout} seconds`);\n    };\n\n    xhr.onerror = () => {\n      this._handleUploadError(files, xhr);\n    };\n\n    // Some browsers do not have the .upload property\n    let progressObj = xhr.upload != null ? xhr.upload : xhr;\n    progressObj.onprogress = (e) => this._updateFilesUploadProgress(files, xhr, e);\n\n    let headers = {\n      \"Accept\": \"application/json\",\n      \"Cache-Control\": \"no-cache\",\n      \"X-Requested-With\": \"XMLHttpRequest\",\n    };\n\n    if (this.options.headers) {\n      Dropzone.extend(headers, this.options.headers);\n    }\n\n    for (let headerName in headers) {\n      let headerValue = headers[headerName];\n      if (headerValue) {\n        xhr.setRequestHeader(headerName, headerValue);\n      }\n    }\n\n    let formData = new FormData();\n\n    // Adding all @options parameters\n    if (this.options.params) {\n      let additionalParams = this.options.params;\n      if (typeof additionalParams === 'function') {\n        additionalParams = additionalParams.call(this, files, xhr, files[0].upload.chunked ? this._getChunk(files[0], xhr) : null);\n      }\n\n      for (let key in additionalParams) {\n        let value = additionalParams[key];\n        formData.append(key, value);\n      }\n    }\n\n    // Let the user add additional data if necessary\n    for (let file of files) {\n      this.emit(\"sending\", file, xhr, formData);\n    }\n    if (this.options.uploadMultiple) {\n      this.emit(\"sendingmultiple\", files, xhr, formData);\n    }\n\n\n    this._addFormElementData(formData);\n\n\n    // Finally add the files\n    // Has to be last because some servers (eg: S3) expect the file to be the last parameter\n    for (let i = 0; i < dataBlocks.length; i++) {\n      let dataBlock = dataBlocks[i];\n      formData.append(dataBlock.name, dataBlock.data, dataBlock.filename);\n    }\n\n    this.submitRequest(xhr, formData, files);\n  }\n\n\n  // Transforms all files with this.options.transformFile and invokes done with the transformed files when done.\n  _transformFiles(files, done) {\n    let transformedFiles = [];\n    // Clumsy way of handling asynchronous calls, until I get to add a proper Future library.\n    let doneCounter = 0;\n    for (let i = 0; i < files.length; i++) {\n      this.options.transformFile.call(this, files[i], (transformedFile) => {\n        transformedFiles[i] = transformedFile;\n        if (++doneCounter === files.length) {\n          done(transformedFiles);\n        }\n      });\n    }\n  }\n\n  // Takes care of adding other input elements of the form to the AJAX request\n  _addFormElementData(formData) {\n    // Take care of other input elements\n    if (this.element.tagName === \"FORM\") {\n      for (let input of this.element.querySelectorAll(\"input, textarea, select, button\")) {\n        let inputName = input.getAttribute(\"name\");\n        let inputType = input.getAttribute(\"type\");\n        if (inputType) inputType = inputType.toLowerCase();\n\n        // If the input doesn't have a name, we can't use it.\n        if (typeof inputName === 'undefined' || inputName === null) continue;\n\n        if ((input.tagName === \"SELECT\") && input.hasAttribute(\"multiple\")) {\n          // Possibly multiple values\n          for (let option of input.options) {\n            if (option.selected) {\n              formData.append(inputName, option.value);\n            }\n          }\n        } else if (!inputType || (inputType !== \"checkbox\" && inputType !== \"radio\") || input.checked) {\n          formData.append(inputName, input.value);\n        }\n      }\n    }\n  }\n\n  // Invoked when there is new progress information about given files.\n  // If e is not provided, it is assumed that the upload is finished.\n  _updateFilesUploadProgress(files, xhr, e) {\n    let progress;\n    if (typeof e !== 'undefined') {\n      progress = (100 * e.loaded) / e.total;\n\n      if (files[0].upload.chunked) {\n        let file = files[0];\n        // Since this is a chunked upload, we need to update the appropriate chunk progress.\n        let chunk = this._getChunk(file, xhr);\n        chunk.progress = progress;\n        chunk.total = e.total;\n        chunk.bytesSent = e.loaded;\n        let fileProgress = 0, fileTotal, fileBytesSent;\n        file.upload.progress = 0;\n        file.upload.total = 0;\n        file.upload.bytesSent = 0;\n        for (let i = 0; i < file.upload.totalChunkCount; i++) {\n          if (file.upload.chunks[i] !== undefined && file.upload.chunks[i].progress !== undefined) {\n            file.upload.progress += file.upload.chunks[i].progress;\n            file.upload.total += file.upload.chunks[i].total;\n            file.upload.bytesSent += file.upload.chunks[i].bytesSent;\n          }\n        }\n        file.upload.progress = file.upload.progress / file.upload.totalChunkCount;\n      } else {\n        for (let file of files) {\n          file.upload.progress = progress;\n          file.upload.total = e.total;\n          file.upload.bytesSent = e.loaded;\n        }\n      }\n      for (let file of files) {\n        this.emit(\"uploadprogress\", file, file.upload.progress, file.upload.bytesSent);\n      }\n    } else {\n      // Called when the file finished uploading\n\n      let allFilesFinished = true;\n\n      progress = 100;\n\n      for (let file of files) {\n        if ((file.upload.progress !== 100) || (file.upload.bytesSent !== file.upload.total)) {\n          allFilesFinished = false;\n        }\n        file.upload.progress = progress;\n        file.upload.bytesSent = file.upload.total;\n      }\n\n      // Nothing to do, all files already at 100%\n      if (allFilesFinished) {\n        return;\n      }\n\n      for (let file of files) {\n        this.emit(\"uploadprogress\", file, progress, file.upload.bytesSent);\n      }\n    }\n\n  }\n\n\n  _finishedUploading(files, xhr, e) {\n    let response;\n\n    if (files[0].status === Dropzone.CANCELED) {\n      return;\n    }\n\n    if (xhr.readyState !== 4) {\n      return;\n    }\n\n    if ((xhr.responseType !== 'arraybuffer') && (xhr.responseType !== 'blob')) {\n      response = xhr.responseText;\n\n      if (xhr.getResponseHeader(\"content-type\") && ~xhr.getResponseHeader(\"content-type\").indexOf(\"application/json\")) {\n        try {\n          response = JSON.parse(response);\n        } catch (error) {\n          e = error;\n          response = \"Invalid JSON response from server.\";\n        }\n      }\n    }\n\n    this._updateFilesUploadProgress(files);\n\n    if (!(200 <= xhr.status && xhr.status < 300)) {\n      this._handleUploadError(files, xhr, response);\n    } else {\n      if (files[0].upload.chunked) {\n        files[0].upload.finishedChunkUpload(this._getChunk(files[0], xhr));\n      } else {\n        this._finished(files, response, e);\n      }\n    }\n  }\n\n  _handleUploadError(files, xhr, response) {\n    if (files[0].status === Dropzone.CANCELED) {\n      return;\n    }\n\n    if (files[0].upload.chunked && this.options.retryChunks) {\n      let chunk = this._getChunk(files[0], xhr);\n      if (chunk.retries++ < this.options.retryChunksLimit) {\n        this._uploadData(files, [chunk.dataBlock]);\n        return;\n      } else {\n        console.warn('Retried this chunk too often. Giving up.')\n      }\n    }\n\n    for (let file of files) {\n      this._errorProcessing(files, response || this.options.dictResponseError.replace(\"{{statusCode}}\", xhr.status), xhr);\n    }\n  }\n\n  submitRequest(xhr, formData, files) {\n    xhr.send(formData);\n  }\n\n  // Called internally when processing is finished.\n  // Individual callbacks have to be called in the appropriate sections.\n  _finished(files, responseText, e) {\n    for (let file of files) {\n      file.status = Dropzone.SUCCESS;\n      this.emit(\"success\", file, responseText, e);\n      this.emit(\"complete\", file);\n    }\n    if (this.options.uploadMultiple) {\n      this.emit(\"successmultiple\", files, responseText, e);\n      this.emit(\"completemultiple\", files);\n    }\n\n    if (this.options.autoProcessQueue) {\n      return this.processQueue();\n    }\n  }\n\n  // Called internally when processing is finished.\n  // Individual callbacks have to be called in the appropriate sections.\n  _errorProcessing(files, message, xhr) {\n    for (let file of files) {\n      file.status = Dropzone.ERROR;\n      this.emit(\"error\", file, message, xhr);\n      this.emit(\"complete\", file);\n    }\n    if (this.options.uploadMultiple) {\n      this.emit(\"errormultiple\", files, message, xhr);\n      this.emit(\"completemultiple\", files);\n    }\n\n    if (this.options.autoProcessQueue) {\n      return this.processQueue();\n    }\n  }\n\n  static uuidv4() {\n    return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {\n      let r = Math.random() * 16 | 0, v = c === 'x' ? r : (r & 0x3 | 0x8);\n      return v.toString(16);\n    });\n  };\n}\nDropzone.initClass();\n\n\nDropzone.version = \"5.5.0\";\n\n\n// This is a map of options for your different dropzones. Add configurations\n// to this object for your different dropzone elemens.\n//\n// Example:\n//\n//     Dropzone.options.myDropzoneElementId = { maxFilesize: 1 };\n//\n// To disable autoDiscover for a specific element, you can set `false` as an option:\n//\n//     Dropzone.options.myDisabledElementId = false;\n//\n// And in html:\n//\n//     <form action=\"/upload\" id=\"my-dropzone-element-id\" class=\"dropzone\"></form>\nDropzone.options = {};\n\n\n// Returns the options for an element or undefined if none available.\nDropzone.optionsForElement = function (element) {\n  // Get the `Dropzone.options.elementId` for this element if it exists\n  if (element.getAttribute(\"id\")) {\n    return Dropzone.options[camelize(element.getAttribute(\"id\"))];\n  } else {\n    return undefined;\n  }\n};\n\n\n// Holds a list of all dropzone instances\nDropzone.instances = [];\n\n// Returns the dropzone for given element if any\nDropzone.forElement = function (element) {\n  if (typeof element === \"string\") {\n    element = document.querySelector(element);\n  }\n  if ((element != null ? element.dropzone : undefined) == null) {\n    throw new Error(\"No Dropzone found for given element. This is probably because you're trying to access it before Dropzone had the time to initialize. Use the `init` option to setup any additional observers on your Dropzone.\");\n  }\n  return element.dropzone;\n};\n\n\n// Set to false if you don't want Dropzone to automatically find and attach to .dropzone elements.\nDropzone.autoDiscover = true;\n\n// Looks for all .dropzone elements and creates a dropzone for them\nDropzone.discover = function () {\n  let dropzones;\n  if (document.querySelectorAll) {\n    dropzones = document.querySelectorAll(\".dropzone\");\n  } else {\n    dropzones = [];\n    // IE :(\n    let checkElements = elements =>\n        (() => {\n          let result = [];\n          for (let el of elements) {\n            if (/(^| )dropzone($| )/.test(el.className)) {\n              result.push(dropzones.push(el));\n            } else {\n              result.push(undefined);\n            }\n          }\n          return result;\n        })()\n    ;\n    checkElements(document.getElementsByTagName(\"div\"));\n    checkElements(document.getElementsByTagName(\"form\"));\n  }\n\n  return (() => {\n    let result = [];\n    for (let dropzone of dropzones) {\n      // Create a dropzone unless auto discover has been disabled for specific element\n      if (Dropzone.optionsForElement(dropzone) !== false) {\n        result.push(new Dropzone(dropzone));\n      } else {\n        result.push(undefined);\n      }\n    }\n    return result;\n  })();\n};\n\n\n// Since the whole Drag'n'Drop API is pretty new, some browsers implement it,\n// but not correctly.\n// So I created a blacklist of userAgents. Yes, yes. Browser sniffing, I know.\n// But what to do when browsers *theoretically* support an API, but crash\n// when using it.\n//\n// This is a list of regular expressions tested against navigator.userAgent\n//\n// ** It should only be used on browser that *do* support the API, but\n// incorrectly **\n//\nDropzone.blacklistedBrowsers = [\n  // The mac os and windows phone version of opera 12 seems to have a problem with the File drag'n'drop API.\n  /opera.*(Macintosh|Windows Phone).*version\\/12/i\n];\n\n\n// Checks if the browser is supported\nDropzone.isBrowserSupported = function () {\n  let capableBrowser = true;\n\n  if (window.File && window.FileReader && window.FileList && window.Blob && window.FormData && document.querySelector) {\n    if (!(\"classList\" in document.createElement(\"a\"))) {\n      capableBrowser = false;\n    } else {\n      // The browser supports the API, but may be blacklisted.\n      for (let regex of Dropzone.blacklistedBrowsers) {\n        if (regex.test(navigator.userAgent)) {\n          capableBrowser = false;\n          continue;\n        }\n      }\n    }\n  } else {\n    capableBrowser = false;\n  }\n\n  return capableBrowser;\n};\n\nDropzone.dataURItoBlob = function (dataURI) {\n  // convert base64 to raw binary data held in a string\n  // doesn't handle URLEncoded DataURIs - see SO answer #6850276 for code that does this\n  let byteString = atob(dataURI.split(',')[1]);\n\n  // separate out the mime component\n  let mimeString = dataURI.split(',')[0].split(':')[1].split(';')[0];\n\n  // write the bytes of the string to an ArrayBuffer\n  let ab = new ArrayBuffer(byteString.length);\n  let ia = new Uint8Array(ab);\n  for (let i = 0, end = byteString.length, asc = 0 <= end; asc ? i <= end : i >= end; asc ? i++ : i--) {\n    ia[i] = byteString.charCodeAt(i);\n  }\n\n  // write the ArrayBuffer to a blob\n  return new Blob([ab], {type: mimeString});\n};\n\n// Returns an array without the rejected item\nconst without = (list, rejectedItem) => list.filter((item) => item !== rejectedItem).map((item) => item);\n\n// abc-def_ghi -> abcDefGhi\nconst camelize = str => str.replace(/[\\-_](\\w)/g, match => match.charAt(1).toUpperCase());\n\n// Creates an element from string\nDropzone.createElement = function (string) {\n  let div = document.createElement(\"div\");\n  div.innerHTML = string;\n  return div.childNodes[0];\n};\n\n// Tests if given element is inside (or simply is) the container\nDropzone.elementInside = function (element, container) {\n  if (element === container) {\n    return true;\n  } // Coffeescript doesn't support do/while loops\n  while ((element = element.parentNode)) {\n    if (element === container) {\n      return true;\n    }\n  }\n  return false;\n};\n\n\nDropzone.getElement = function (el, name) {\n  let element;\n  if (typeof el === \"string\") {\n    element = document.querySelector(el);\n  } else if (el.nodeType != null) {\n    element = el;\n  }\n  if (element == null) {\n    throw new Error(`Invalid \\`${name}\\` option provided. Please provide a CSS selector or a plain HTML element.`);\n  }\n  return element;\n};\n\n\nDropzone.getElements = function (els, name) {\n  let el, elements;\n  if (els instanceof Array) {\n    elements = [];\n    try {\n      for (el of els) {\n        elements.push(this.getElement(el, name));\n      }\n    } catch (e) {\n      elements = null;\n    }\n  } else if (typeof els === \"string\") {\n    elements = [];\n    for (el of document.querySelectorAll(els)) {\n      elements.push(el);\n    }\n  } else if (els.nodeType != null) {\n    elements = [els];\n  }\n\n  if ((elements == null) || !elements.length) {\n    throw new Error(`Invalid \\`${name}\\` option provided. Please provide a CSS selector, a plain HTML element or a list of those.`);\n  }\n\n  return elements;\n};\n\n// Asks the user the question and calls accepted or rejected accordingly\n//\n// The default implementation just uses `window.confirm` and then calls the\n// appropriate callback.\nDropzone.confirm = function (question, accepted, rejected) {\n  if (window.confirm(question)) {\n    return accepted();\n  } else if (rejected != null) {\n    return rejected();\n  }\n};\n\n// Validates the mime type like this:\n//\n// https://developer.mozilla.org/en-US/docs/HTML/Element/input#attr-accept\nDropzone.isValidFile = function (file, acceptedFiles) {\n  if (!acceptedFiles) {\n    return true;\n  } // If there are no accepted mime types, it's OK\n  acceptedFiles = acceptedFiles.split(\",\");\n\n  let mimeType = file.type;\n  let baseMimeType = mimeType.replace(/\\/.*$/, \"\");\n\n  for (let validType of acceptedFiles) {\n    validType = validType.trim();\n    if (validType.charAt(0) === \".\") {\n      if (file.name.toLowerCase().indexOf(validType.toLowerCase(), file.name.length - validType.length) !== -1) {\n        return true;\n      }\n    } else if (/\\/\\*$/.test(validType)) {\n      // This is something like a image/* mime type\n      if (baseMimeType === validType.replace(/\\/.*$/, \"\")) {\n        return true;\n      }\n    } else {\n      if (mimeType === validType) {\n        return true;\n      }\n    }\n  }\n\n  return false;\n};\n\n// Augment jQuery\nif (typeof jQuery !== 'undefined' && jQuery !== null) {\n  jQuery.fn.dropzone = function (options) {\n    return this.each(function () {\n      return new Dropzone(this, options);\n    });\n  };\n}\n\n\nif (typeof module !== 'undefined' && module !== null) {\n  module.exports = Dropzone;\n} else {\n  window.Dropzone = Dropzone;\n}\n\n\n// Dropzone file status codes\nDropzone.ADDED = \"added\";\n\nDropzone.QUEUED = \"queued\";\n// For backwards compatibility. Now, if a file is accepted, it's either queued\n// or uploading.\nDropzone.ACCEPTED = Dropzone.QUEUED;\n\nDropzone.UPLOADING = \"uploading\";\nDropzone.PROCESSING = Dropzone.UPLOADING; // alias\n\nDropzone.CANCELED = \"canceled\";\nDropzone.ERROR = \"error\";\nDropzone.SUCCESS = \"success\";\n\n\n/*\n\n Bugfix for iOS 6 and 7\n Source: http://stackoverflow.com/questions/11929099/html5-canvas-drawimage-ratio-bug-ios\n based on the work of https://github.com/stomita/ios-imagefile-megapixel\n\n */\n\n// Detecting vertical squash in loaded image.\n// Fixes a bug which squash image vertically while drawing into canvas for some images.\n// This is a bug in iOS6 devices. This function from https://github.com/stomita/ios-imagefile-megapixel\nlet detectVerticalSquash = function (img) {\n  let iw = img.naturalWidth;\n  let ih = img.naturalHeight;\n  let canvas = document.createElement(\"canvas\");\n  canvas.width = 1;\n  canvas.height = ih;\n  let ctx = canvas.getContext(\"2d\");\n  ctx.drawImage(img, 0, 0);\n  let {data} = ctx.getImageData(1, 0, 1, ih);\n\n\n  // search image edge pixel position in case it is squashed vertically.\n  let sy = 0;\n  let ey = ih;\n  let py = ih;\n  while (py > sy) {\n    let alpha = data[((py - 1) * 4) + 3];\n\n    if (alpha === 0) {\n      ey = py;\n    } else {\n      sy = py;\n    }\n\n    py = (ey + sy) >> 1;\n  }\n  let ratio = (py / ih);\n\n  if (ratio === 0) {\n    return 1;\n  } else {\n    return ratio;\n  }\n};\n\n// A replacement for context.drawImage\n// (args are for source and destination).\nvar drawImageIOSFix = function (ctx, img, sx, sy, sw, sh, dx, dy, dw, dh) {\n  let vertSquashRatio = detectVerticalSquash(img);\n  return ctx.drawImage(img, sx, sy, sw, sh, dx, dy, dw, dh / vertSquashRatio);\n};\n\n\n// Based on MinifyJpeg\n// Source: http://www.perry.cz/files/ExifRestorer.js\n// http://elicon.blog57.fc2.com/blog-entry-206.html\nclass ExifRestore {\n  static initClass() {\n    this.KEY_STR = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n  }\n\n  static encode64(input) {\n    let output = '';\n    let chr1 = undefined;\n    let chr2 = undefined;\n    let chr3 = '';\n    let enc1 = undefined;\n    let enc2 = undefined;\n    let enc3 = undefined;\n    let enc4 = '';\n    let i = 0;\n    while (true) {\n      chr1 = input[i++];\n      chr2 = input[i++];\n      chr3 = input[i++];\n      enc1 = chr1 >> 2;\n      enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);\n      enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);\n      enc4 = chr3 & 63;\n      if (isNaN(chr2)) {\n        enc3 = (enc4 = 64);\n      } else if (isNaN(chr3)) {\n        enc4 = 64;\n      }\n      output = output + this.KEY_STR.charAt(enc1) + this.KEY_STR.charAt(enc2) + this.KEY_STR.charAt(enc3) + this.KEY_STR.charAt(enc4);\n      chr1 = (chr2 = (chr3 = ''));\n      enc1 = (enc2 = (enc3 = (enc4 = '')));\n      if (!(i < input.length)) {\n        break;\n      }\n    }\n    return output;\n  }\n\n  static restore(origFileBase64, resizedFileBase64) {\n    if (!origFileBase64.match('data:image/jpeg;base64,')) {\n      return resizedFileBase64;\n    }\n    let rawImage = this.decode64(origFileBase64.replace('data:image/jpeg;base64,', ''));\n    let segments = this.slice2Segments(rawImage);\n    let image = this.exifManipulation(resizedFileBase64, segments);\n    return `data:image/jpeg;base64,${this.encode64(image)}`;\n  }\n\n  static exifManipulation(resizedFileBase64, segments) {\n    let exifArray = this.getExifArray(segments);\n    let newImageArray = this.insertExif(resizedFileBase64, exifArray);\n    let aBuffer = new Uint8Array(newImageArray);\n    return aBuffer;\n  }\n\n  static getExifArray(segments) {\n    let seg = undefined;\n    let x = 0;\n    while (x < segments.length) {\n      seg = segments[x];\n      if ((seg[0] === 255) & (seg[1] === 225)) {\n        return seg;\n      }\n      x++;\n    }\n    return [];\n  }\n\n  static insertExif(resizedFileBase64, exifArray) {\n    let imageData = resizedFileBase64.replace('data:image/jpeg;base64,', '');\n    let buf = this.decode64(imageData);\n    let separatePoint = buf.indexOf(255, 3);\n    let mae = buf.slice(0, separatePoint);\n    let ato = buf.slice(separatePoint);\n    let array = mae;\n    array = array.concat(exifArray);\n    array = array.concat(ato);\n    return array;\n  }\n\n  static slice2Segments(rawImageArray) {\n    let head = 0;\n    let segments = [];\n    while (true) {\n      var length;\n      if ((rawImageArray[head] === 255) & (rawImageArray[head + 1] === 218)) {\n        break;\n      }\n      if ((rawImageArray[head] === 255) & (rawImageArray[head + 1] === 216)) {\n        head += 2;\n      } else {\n        length = (rawImageArray[head + 2] * 256) + rawImageArray[head + 3];\n        let endPoint = head + length + 2;\n        let seg = rawImageArray.slice(head, endPoint);\n        segments.push(seg);\n        head = endPoint;\n      }\n      if (head > rawImageArray.length) {\n        break;\n      }\n    }\n    return segments;\n  }\n\n  static decode64(input) {\n    let output = '';\n    let chr1 = undefined;\n    let chr2 = undefined;\n    let chr3 = '';\n    let enc1 = undefined;\n    let enc2 = undefined;\n    let enc3 = undefined;\n    let enc4 = '';\n    let i = 0;\n    let buf = [];\n    // remove all characters that are not A-Z, a-z, 0-9, +, /, or =\n    let base64test = /[^A-Za-z0-9\\+\\/\\=]/g;\n    if (base64test.exec(input)) {\n      console.warn('There were invalid base64 characters in the input text.\\nValid base64 characters are A-Z, a-z, 0-9, \\'+\\', \\'/\\',and \\'=\\'\\nExpect errors in decoding.');\n    }\n    input = input.replace(/[^A-Za-z0-9\\+\\/\\=]/g, '');\n    while (true) {\n      enc1 = this.KEY_STR.indexOf(input.charAt(i++));\n      enc2 = this.KEY_STR.indexOf(input.charAt(i++));\n      enc3 = this.KEY_STR.indexOf(input.charAt(i++));\n      enc4 = this.KEY_STR.indexOf(input.charAt(i++));\n      chr1 = (enc1 << 2) | (enc2 >> 4);\n      chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);\n      chr3 = ((enc3 & 3) << 6) | enc4;\n      buf.push(chr1);\n      if (enc3 !== 64) {\n        buf.push(chr2);\n      }\n      if (enc4 !== 64) {\n        buf.push(chr3);\n      }\n      chr1 = (chr2 = (chr3 = ''));\n      enc1 = (enc2 = (enc3 = (enc4 = '')));\n      if (!(i < input.length)) {\n        break;\n      }\n    }\n    return buf;\n  }\n}\nExifRestore.initClass();\n\n\n/*\n * contentloaded.js\n *\n * Author: Diego Perini (diego.perini at gmail.com)\n * Summary: cross-browser wrapper for DOMContentLoaded\n * Updated: 20101020\n * License: MIT\n * Version: 1.2\n *\n * URL:\n * http://javascript.nwbox.com/ContentLoaded/\n * http://javascript.nwbox.com/ContentLoaded/MIT-LICENSE\n */\n\n// @win window reference\n// @fn function reference\nlet contentLoaded = function (win, fn) {\n  let done = false;\n  let top = true;\n  let doc = win.document;\n  let root = doc.documentElement;\n  let add = (doc.addEventListener ? \"addEventListener\" : \"attachEvent\");\n  let rem = (doc.addEventListener ? \"removeEventListener\" : \"detachEvent\");\n  let pre = (doc.addEventListener ? \"\" : \"on\");\n  var init = function (e) {\n    if ((e.type === \"readystatechange\") && (doc.readyState !== \"complete\")) {\n      return;\n    }\n    ((e.type === \"load\" ? win : doc))[rem](pre + e.type, init, false);\n    if (!done && (done = true)) {\n      return fn.call(win, e.type || e);\n    }\n  };\n\n  var poll = function () {\n    try {\n      root.doScroll(\"left\");\n    } catch (e) {\n      setTimeout(poll, 50);\n      return;\n    }\n    return init(\"poll\");\n  };\n\n  if (doc.readyState !== \"complete\") {\n    if (doc.createEventObject && root.doScroll) {\n      try {\n        top = !win.frameElement;\n      } catch (error) {\n      }\n      if (top) {\n        poll();\n      }\n    }\n    doc[add](pre + \"DOMContentLoaded\", init, false);\n    doc[add](pre + \"readystatechange\", init, false);\n    return win[add](pre + \"load\", init, false);\n  }\n};\n\n\n// As a single function to be able to write tests.\nDropzone._autoDiscoverFunction = function () {\n  if (Dropzone.autoDiscover) {\n    return Dropzone.discover();\n  }\n};\ncontentLoaded(window, Dropzone._autoDiscoverFunction);\n\nfunction __guard__(value, transform) {\n  return (typeof value !== 'undefined' && value !== null) ? transform(value) : undefined;\n}\nfunction __guardMethod__(obj, methodName, transform) {\n  if (typeof obj !== 'undefined' && obj !== null && typeof obj[methodName] === 'function') {\n    return transform(obj, methodName);\n  } else {\n    return undefined;\n  }\n}"],"file":"dropzone.js"}
\ No newline at end of file
diff --git a/admin/js/vendors/dropzone/min/basic.min.css b/admin/js/vendors/dropzone/min/basic.min.css
new file mode 100644 (file)
index 0000000..5238d5c
--- /dev/null
@@ -0,0 +1 @@
+.dropzone,.dropzone *{box-sizing:border-box}.dropzone{position:relative}.dropzone .dz-preview{position:relative;display:inline-block;width:120px;margin:0.5em}.dropzone .dz-preview .dz-progress{display:block;height:15px;border:1px solid #aaa}.dropzone .dz-preview .dz-progress .dz-upload{display:block;height:100%;width:0;background:green}.dropzone .dz-preview .dz-error-message{color:red;display:none}.dropzone .dz-preview.dz-error .dz-error-message,.dropzone .dz-preview.dz-error .dz-error-mark{display:block}.dropzone .dz-preview.dz-success .dz-success-mark{display:block}.dropzone .dz-preview .dz-error-mark,.dropzone .dz-preview .dz-success-mark{position:absolute;display:none;left:30px;top:30px;width:54px;height:58px;left:50%;margin-left:-27px}
diff --git a/admin/js/vendors/dropzone/min/dropzone-amd-module.min.js b/admin/js/vendors/dropzone/min/dropzone-amd-module.min.js
new file mode 100644 (file)
index 0000000..cbdbce1
--- /dev/null
@@ -0,0 +1 @@
+!function(e){"function"==typeof define&&define.amd?define(["jquery"],e):e(jQuery)}(function(e){var t={exports:{}};function n(e){return(n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function i(e,t){return(i=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function r(i){var r=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch(e){return!1}}();return function(){var e,t=a(i);if(r){var n=a(this).constructor;e=Reflect.construct(t,arguments,n)}else e=t.apply(this,arguments);return s(this,e)}}function s(e,t){return!t||"object"!==n(t)&&"function"!=typeof t?l(e):t}function l(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function a(e){return(a=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function w(e,t){var n;if("undefined"==typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(n=function(e,t){if(!e)return;if("string"==typeof e)return u(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return u(e,t)}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);function i(){}var r=0;return{s:i,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,o=!0,s=!1;return{s:function(){n=e[Symbol.iterator]()},n:function(){var e=n.next();return o=e.done,e},e:function(e){s=!0,a=e},f:function(){try{o||null==n.return||n.return()}finally{if(s)throw a}}}}function u(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,i=new Array(t);n<t;n++)i[n]=e[n];return i}function c(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}function d(e,t,n){return t&&o(e.prototype,t),n&&o(e,n),e}var p=function(){function e(){c(this,e)}return d(e,[{key:"on",value:function(e,t){return this._callbacks=this._callbacks||{},this._callbacks[e]||(this._callbacks[e]=[]),this._callbacks[e].push(t),this}},{key:"emit",value:function(e){this._callbacks=this._callbacks||{};var t=this._callbacks[e];if(t){for(var n=arguments.length,i=new Array(1<n?n-1:0),r=1;r<n;r++)i[r-1]=arguments[r];var a,o=w(t);try{for(o.s();!(a=o.n()).done;){a.value.apply(this,i)}}catch(e){o.e(e)}finally{o.f()}}return this}},{key:"off",value:function(e,t){if(!this._callbacks||0===arguments.length)return this._callbacks={},this;var n=this._callbacks[e];if(!n)return this;if(1===arguments.length)return delete this._callbacks[e],this;for(var i=0;i<n.length;i++){if(n[i]===t){n.splice(i,1);break}}return this}}]),e}(),h=function(){!function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&i(e,t)}(F,p);var o=r(F);function F(e,t){var n,i,r;if(c(this,F),(n=o.call(this)).element=e,n.version=F.version,n.defaultOptions.previewTemplate=n.defaultOptions.previewTemplate.replace(/\n*/g,""),n.clickableElements=[],n.listeners=[],n.files=[],"string"==typeof n.element&&(n.element=document.querySelector(n.element)),!n.element||null==n.element.nodeType)throw new Error("Invalid dropzone element.");if(n.element.dropzone)throw new Error("Dropzone already attached.");F.instances.push(l(n)),n.element.dropzone=l(n);var a=null!=(r=F.optionsForElement(n.element))?r:{};if(n.options=F.extend({},n.defaultOptions,a,null!=t?t:{}),n.options.forceFallback||!F.isBrowserSupported())return s(n,n.options.fallback.call(l(n)));if(null==n.options.url&&(n.options.url=n.element.getAttribute("action")),!n.options.url)throw new Error("No URL provided.");if(n.options.acceptedFiles&&n.options.acceptedMimeTypes)throw new Error("You can't provide both 'acceptedFiles' and 'acceptedMimeTypes'. 'acceptedMimeTypes' is deprecated.");if(n.options.uploadMultiple&&n.options.chunking)throw new Error("You cannot set both: uploadMultiple and chunking.");return n.options.acceptedMimeTypes&&(n.options.acceptedFiles=n.options.acceptedMimeTypes,delete n.options.acceptedMimeTypes),null!=n.options.renameFilename&&(n.options.renameFile=function(e){return n.options.renameFilename.call(l(n),e.name,e)}),"string"==typeof n.options.method&&(n.options.method=n.options.method.toUpperCase()),(i=n.getExistingFallback())&&i.parentNode&&i.parentNode.removeChild(i),!1!==n.options.previewsContainer&&(n.options.previewsContainer?n.previewsContainer=F.getElement(n.options.previewsContainer,"previewsContainer"):n.previewsContainer=n.element),n.options.clickable&&(!0===n.options.clickable?n.clickableElements=[n.element]:n.clickableElements=F.getElements(n.options.clickable,"clickable")),n.init(),n}return d(F,null,[{key:"initClass",value:function(){this.prototype.Emitter=p,this.prototype.events=["drop","dragstart","dragend","dragenter","dragover","dragleave","addedfile","addedfiles","removedfile","thumbnail","error","errormultiple","processing","processingmultiple","uploadprogress","totaluploadprogress","sending","sendingmultiple","success","successmultiple","canceled","canceledmultiple","complete","completemultiple","reset","maxfilesexceeded","maxfilesreached","queuecomplete"],this.prototype.defaultOptions={url:null,method:"post",withCredentials:!1,timeout:3e4,parallelUploads:2,uploadMultiple:!1,chunking:!1,forceChunking:!1,chunkSize:2e6,parallelChunkUploads:!1,retryChunks:!1,retryChunksLimit:3,maxFilesize:256,paramName:"file",createImageThumbnails:!0,maxThumbnailFilesize:10,thumbnailWidth:120,thumbnailHeight:120,thumbnailMethod:"crop",resizeWidth:null,resizeHeight:null,resizeMimeType:null,resizeQuality:.8,resizeMethod:"contain",filesizeBase:1e3,maxFiles:null,headers:null,clickable:!0,ignoreHiddenFiles:!0,acceptedFiles:null,acceptedMimeTypes:null,autoProcessQueue:!0,autoQueue:!0,addRemoveLinks:!1,previewsContainer:null,hiddenInputContainer:"body",capture:null,renameFilename:null,renameFile:null,forceFallback:!1,dictDefaultMessage:"Drop files here to upload",dictFallbackMessage:"Your browser does not support drag'n'drop file uploads.",dictFallbackText:"Please use the fallback form below to upload your files like in the olden days.",dictFileTooBig:"File is too big ({{filesize}}MiB). Max filesize: {{maxFilesize}}MiB.",dictInvalidFileType:"You can't upload files of this type.",dictResponseError:"Server responded with {{statusCode}} code.",dictCancelUpload:"Cancel upload",dictUploadCanceled:"Upload canceled.",dictCancelUploadConfirmation:"Are you sure you want to cancel this upload?",dictRemoveFile:"Remove file",dictRemoveFileConfirmation:null,dictMaxFilesExceeded:"You can not upload any more files.",dictFileSizeUnits:{tb:"TB",gb:"GB",mb:"MB",kb:"KB",b:"b"},init:function(){},params:function(e,t,n){if(n)return{dzuuid:n.file.upload.uuid,dzchunkindex:n.index,dztotalfilesize:n.file.size,dzchunksize:this.options.chunkSize,dztotalchunkcount:n.file.upload.totalChunkCount,dzchunkbyteoffset:n.index*this.options.chunkSize}},accept:function(e,t){return t()},chunksUploaded:function(e,t){t()},fallback:function(){var e;this.element.className="".concat(this.element.className," dz-browser-not-supported");var t,n=w(this.element.getElementsByTagName("div"));try{for(n.s();!(t=n.n()).done;){var i=t.value;if(/(^| )dz-message($| )/.test(i.className)){(e=i).className="dz-message";break}}}catch(e){n.e(e)}finally{n.f()}e||(e=F.createElement('<div class="dz-message"><span></span></div>'),this.element.appendChild(e));var r=e.getElementsByTagName("span")[0];return r&&(null!=r.textContent?r.textContent=this.options.dictFallbackMessage:null!=r.innerText&&(r.innerText=this.options.dictFallbackMessage)),this.element.appendChild(this.getFallbackForm())},resize:function(e,t,n,i){var r={srcX:0,srcY:0,srcWidth:e.width,srcHeight:e.height},a=e.width/e.height;null==t&&null==n?(t=r.srcWidth,n=r.srcHeight):null==t?t=n*a:null==n&&(n=t/a);var o=(t=Math.min(t,r.srcWidth))/(n=Math.min(n,r.srcHeight));if(r.srcWidth>t||r.srcHeight>n)if("crop"===i)o<a?(r.srcHeight=e.height,r.srcWidth=r.srcHeight*o):(r.srcWidth=e.width,r.srcHeight=r.srcWidth/o);else{if("contain"!==i)throw new Error("Unknown resizeMethod '".concat(i,"'"));o<a?n=t/a:t=n*a}return r.srcX=(e.width-r.srcWidth)/2,r.srcY=(e.height-r.srcHeight)/2,r.trgWidth=t,r.trgHeight=n,r},transformFile:function(e,t){return(this.options.resizeWidth||this.options.resizeHeight)&&e.type.match(/image.*/)?this.resizeImage(e,this.options.resizeWidth,this.options.resizeHeight,this.options.resizeMethod,t):t(e)},previewTemplate:'<div class="dz-preview dz-file-preview">\n  <div class="dz-image"><img data-dz-thumbnail /></div>\n  <div class="dz-details">\n    <div class="dz-size"><span data-dz-size></span></div>\n    <div class="dz-filename"><span data-dz-name></span></div>\n  </div>\n  <div class="dz-progress"><span class="dz-upload" data-dz-uploadprogress></span></div>\n  <div class="dz-error-message"><span data-dz-errormessage></span></div>\n  <div class="dz-success-mark">\n    <svg width="54px" height="54px" viewBox="0 0 54 54" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">\n      <title>Check</title>\n      <g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">\n        <path d="M23.5,31.8431458 L17.5852419,25.9283877 C16.0248253,24.3679711 13.4910294,24.366835 11.9289322,25.9289322 C10.3700136,27.4878508 10.3665912,30.0234455 11.9283877,31.5852419 L20.4147581,40.0716123 C20.5133999,40.1702541 20.6159315,40.2626649 20.7218615,40.3488435 C22.2835669,41.8725651 24.794234,41.8626202 26.3461564,40.3106978 L43.3106978,23.3461564 C44.8771021,21.7797521 44.8758057,19.2483887 43.3137085,17.6862915 C41.7547899,16.1273729 39.2176035,16.1255422 37.6538436,17.6893022 L23.5,31.8431458 Z M27,53 C41.3594035,53 53,41.3594035 53,27 C53,12.6405965 41.3594035,1 27,1 C12.6405965,1 1,12.6405965 1,27 C1,41.3594035 12.6405965,53 27,53 Z" stroke-opacity="0.198794158" stroke="#747474" fill-opacity="0.816519475" fill="#FFFFFF"></path>\n      </g>\n    </svg>\n  </div>\n  <div class="dz-error-mark">\n    <svg width="54px" height="54px" viewBox="0 0 54 54" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">\n      <title>Error</title>\n      <g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">\n        <g stroke="#747474" stroke-opacity="0.198794158" fill="#FFFFFF" fill-opacity="0.816519475">\n          <path d="M32.6568542,29 L38.3106978,23.3461564 C39.8771021,21.7797521 39.8758057,19.2483887 38.3137085,17.6862915 C36.7547899,16.1273729 34.2176035,16.1255422 32.6538436,17.6893022 L27,23.3431458 L21.3461564,17.6893022 C19.7823965,16.1255422 17.2452101,16.1273729 15.6862915,17.6862915 C14.1241943,19.2483887 14.1228979,21.7797521 15.6893022,23.3461564 L21.3431458,29 L15.6893022,34.6538436 C14.1228979,36.2202479 14.1241943,38.7516113 15.6862915,40.3137085 C17.2452101,41.8726271 19.7823965,41.8744578 21.3461564,40.3106978 L27,34.6568542 L32.6538436,40.3106978 C34.2176035,41.8744578 36.7547899,41.8726271 38.3137085,40.3137085 C39.8758057,38.7516113 39.8771021,36.2202479 38.3106978,34.6538436 L32.6568542,29 Z M27,53 C41.3594035,53 53,41.3594035 53,27 C53,12.6405965 41.3594035,1 27,1 C12.6405965,1 1,12.6405965 1,27 C1,41.3594035 12.6405965,53 27,53 Z"></path>\n        </g>\n      </g>\n    </svg>\n  </div>\n</div>',drop:function(){return this.element.classList.remove("dz-drag-hover")},dragstart:function(){},dragend:function(){return this.element.classList.remove("dz-drag-hover")},dragenter:function(){return this.element.classList.add("dz-drag-hover")},dragover:function(){return this.element.classList.add("dz-drag-hover")},dragleave:function(){return this.element.classList.remove("dz-drag-hover")},paste:function(){},reset:function(){return this.element.classList.remove("dz-started")},addedfile:function(t){var n=this;if(this.element===this.previewsContainer&&this.element.classList.add("dz-started"),this.previewsContainer){t.previewElement=F.createElement(this.options.previewTemplate.trim()),t.previewTemplate=t.previewElement,this.previewsContainer.appendChild(t.previewElement);var e,i=w(t.previewElement.querySelectorAll("[data-dz-name]"));try{for(i.s();!(e=i.n()).done;){var r=e.value;r.textContent=t.name}}catch(e){i.e(e)}finally{i.f()}var a,o=w(t.previewElement.querySelectorAll("[data-dz-size]"));try{for(o.s();!(a=o.n()).done;)(r=a.value).innerHTML=this.filesize(t.size)}catch(e){o.e(e)}finally{o.f()}this.options.addRemoveLinks&&(t._removeLink=F.createElement('<a class="dz-remove" href="javascript:undefined;" data-dz-remove>'.concat(this.options.dictRemoveFile,"</a>")),t.previewElement.appendChild(t._removeLink));function s(e){return e.preventDefault(),e.stopPropagation(),t.status===F.UPLOADING?F.confirm(n.options.dictCancelUploadConfirmation,function(){return n.removeFile(t)}):n.options.dictRemoveFileConfirmation?F.confirm(n.options.dictRemoveFileConfirmation,function(){return n.removeFile(t)}):n.removeFile(t)}var l,u=w(t.previewElement.querySelectorAll("[data-dz-remove]"));try{for(u.s();!(l=u.n()).done;){l.value.addEventListener("click",s)}}catch(e){u.e(e)}finally{u.f()}}},removedfile:function(e){return null!=e.previewElement&&null!=e.previewElement.parentNode&&e.previewElement.parentNode.removeChild(e.previewElement),this._updateMaxFilesReachedClass()},thumbnail:function(e,t){if(e.previewElement){e.previewElement.classList.remove("dz-file-preview");var n,i=w(e.previewElement.querySelectorAll("[data-dz-thumbnail]"));try{for(i.s();!(n=i.n()).done;){var r=n.value;r.alt=e.name,r.src=t}}catch(e){i.e(e)}finally{i.f()}return setTimeout(function(){return e.previewElement.classList.add("dz-image-preview")},1)}},error:function(e,t){if(e.previewElement){e.previewElement.classList.add("dz-error"),"string"!=typeof t&&t.error&&(t=t.error);var n,i=w(e.previewElement.querySelectorAll("[data-dz-errormessage]"));try{for(i.s();!(n=i.n()).done;){n.value.textContent=t}}catch(e){i.e(e)}finally{i.f()}}},errormultiple:function(){},processing:function(e){if(e.previewElement&&(e.previewElement.classList.add("dz-processing"),e._removeLink))return e._removeLink.innerHTML=this.options.dictCancelUpload},processingmultiple:function(){},uploadprogress:function(e,t){if(e.previewElement){var n,i=w(e.previewElement.querySelectorAll("[data-dz-uploadprogress]"));try{for(i.s();!(n=i.n()).done;){var r=n.value;"PROGRESS"===r.nodeName?r.value=t:r.style.width="".concat(t,"%")}}catch(e){i.e(e)}finally{i.f()}}},totaluploadprogress:function(){},sending:function(){},sendingmultiple:function(){},success:function(e){if(e.previewElement)return e.previewElement.classList.add("dz-success")},successmultiple:function(){},canceled:function(e){return this.emit("error",e,this.options.dictUploadCanceled)},canceledmultiple:function(){},complete:function(e){if(e._removeLink&&(e._removeLink.innerHTML=this.options.dictRemoveFile),e.previewElement)return e.previewElement.classList.add("dz-complete")},completemultiple:function(){},maxfilesexceeded:function(){},maxfilesreached:function(){},queuecomplete:function(){},addedfiles:function(){}},this.prototype._thumbnailQueue=[],this.prototype._processingThumbnail=!1}},{key:"extend",value:function(e){for(var t=arguments.length,n=new Array(1<t?t-1:0),i=1;i<t;i++)n[i-1]=arguments[i];for(var r=0,a=n;r<a.length;r++){var o=a[r];for(var s in o){var l=o[s];e[s]=l}}return e}}]),d(F,[{key:"getAcceptedFiles",value:function(){return this.files.filter(function(e){return e.accepted}).map(function(e){return e})}},{key:"getRejectedFiles",value:function(){return this.files.filter(function(e){return!e.accepted}).map(function(e){return e})}},{key:"getFilesWithStatus",value:function(t){return this.files.filter(function(e){return e.status===t}).map(function(e){return e})}},{key:"getQueuedFiles",value:function(){return this.getFilesWithStatus(F.QUEUED)}},{key:"getUploadingFiles",value:function(){return this.getFilesWithStatus(F.UPLOADING)}},{key:"getAddedFiles",value:function(){return this.getFilesWithStatus(F.ADDED)}},{key:"getActiveFiles",value:function(){return this.files.filter(function(e){return e.status===F.UPLOADING||e.status===F.QUEUED}).map(function(e){return e})}},{key:"init",value:function(){var a=this;if("form"===this.element.tagName&&this.element.setAttribute("enctype","multipart/form-data"),this.element.classList.contains("dropzone")&&!this.element.querySelector(".dz-message")&&this.element.appendChild(F.createElement('<div class="dz-default dz-message"><button class="dz-button" type="button">'.concat(this.options.dictDefaultMessage,"</button></div>"))),this.clickableElements.length){!function r(){return a.hiddenFileInput&&a.hiddenFileInput.parentNode.removeChild(a.hiddenFileInput),a.hiddenFileInput=document.createElement("input"),a.hiddenFileInput.setAttribute("type","file"),(null===a.options.maxFiles||1<a.options.maxFiles)&&a.hiddenFileInput.setAttribute("multiple","multiple"),a.hiddenFileInput.className="dz-hidden-input",null!==a.options.acceptedFiles&&a.hiddenFileInput.setAttribute("accept",a.options.acceptedFiles),null!==a.options.capture&&a.hiddenFileInput.setAttribute("capture",a.options.capture),a.hiddenFileInput.style.visibility="hidden",a.hiddenFileInput.style.position="absolute",a.hiddenFileInput.style.top="0",a.hiddenFileInput.style.left="0",a.hiddenFileInput.style.height="0",a.hiddenFileInput.style.width="0",F.getElement(a.options.hiddenInputContainer,"hiddenInputContainer").appendChild(a.hiddenFileInput),a.hiddenFileInput.addEventListener("change",function(){var e=a.hiddenFileInput.files;if(e.length){var t,n=w(e);try{for(n.s();!(t=n.n()).done;){var i=t.value;a.addFile(i)}}catch(e){n.e(e)}finally{n.f()}}return a.emit("addedfiles",e),r()})}()}this.URL=null!==window.URL?window.URL:window.webkitURL;var e,t=w(this.events);try{for(t.s();!(e=t.n()).done;){var n=e.value;this.on(n,this.options[n])}}catch(e){t.e(e)}finally{t.f()}this.on("uploadprogress",function(){return a.updateTotalUploadProgress()}),this.on("removedfile",function(){return a.updateTotalUploadProgress()}),this.on("canceled",function(e){return a.emit("complete",e)}),this.on("complete",function(e){if(0===a.getAddedFiles().length&&0===a.getUploadingFiles().length&&0===a.getQueuedFiles().length)return setTimeout(function(){return a.emit("queuecomplete")},0)});function i(e){return function(e){if(e.dataTransfer.types)for(var t=0;t<e.dataTransfer.types.length;t++)if("Files"===e.dataTransfer.types[t])return!0;return!1}(e)&&(e.stopPropagation(),e.preventDefault?e.preventDefault():e.returnValue=!1)}return this.listeners=[{element:this.element,events:{dragstart:function(e){return a.emit("dragstart",e)},dragenter:function(e){return i(e),a.emit("dragenter",e)},dragover:function(e){var t;try{t=e.dataTransfer.effectAllowed}catch(e){}return e.dataTransfer.dropEffect="move"===t||"linkMove"===t?"move":"copy",i(e),a.emit("dragover",e)},dragleave:function(e){return a.emit("dragleave",e)},drop:function(e){return i(e),a.drop(e)},dragend:function(e){return a.emit("dragend",e)}}}],this.clickableElements.forEach(function(t){return a.listeners.push({element:t,events:{click:function(e){return t===a.element&&e.target!==a.element&&!F.elementInside(e.target,a.element.querySelector(".dz-message"))||a.hiddenFileInput.click(),!0}}})}),this.enable(),this.options.init.call(this)}},{key:"destroy",value:function(){return this.disable(),this.removeAllFiles(!0),null!=this.hiddenFileInput&&this.hiddenFileInput.parentNode&&(this.hiddenFileInput.parentNode.removeChild(this.hiddenFileInput),this.hiddenFileInput=null),delete this.element.dropzone,F.instances.splice(F.instances.indexOf(this),1)}},{key:"updateTotalUploadProgress",value:function(){var e,t=0,n=0;if(this.getActiveFiles().length){var i,r=w(this.getActiveFiles());try{for(r.s();!(i=r.n()).done;){var a=i.value;t+=a.upload.bytesSent,n+=a.upload.total}}catch(e){r.e(e)}finally{r.f()}e=100*t/n}else e=100;return this.emit("totaluploadprogress",e,n,t)}},{key:"_getParamName",value:function(e){return"function"==typeof this.options.paramName?this.options.paramName(e):"".concat(this.options.paramName).concat(this.options.uploadMultiple?"[".concat(e,"]"):"")}},{key:"_renameFile",value:function(e){return"function"!=typeof this.options.renameFile?e.name:this.options.renameFile(e)}},{key:"getFallbackForm",value:function(){var e,t;if(e=this.getExistingFallback())return e;var n='<div class="dz-fallback">';this.options.dictFallbackText&&(n+="<p>".concat(this.options.dictFallbackText,"</p>")),n+='<input type="file" name="'.concat(this._getParamName(0),'" ').concat(this.options.uploadMultiple?'multiple="multiple"':void 0,' /><input type="submit" value="Upload!"></div>');var i=F.createElement(n);return"FORM"!==this.element.tagName?(t=F.createElement('<form action="'.concat(this.options.url,'" enctype="multipart/form-data" method="').concat(this.options.method,'"></form>'))).appendChild(i):(this.element.setAttribute("enctype","multipart/form-data"),this.element.setAttribute("method",this.options.method)),null!=t?t:i}},{key:"getExistingFallback",value:function(){function e(e){var t,n=w(e);try{for(n.s();!(t=n.n()).done;){var i=t.value;if(/(^| )fallback($| )/.test(i.className))return i}}catch(e){n.e(e)}finally{n.f()}}for(var t=0,n=["div","form"];t<n.length;t++){var i,r=n[t];if(i=e(this.element.getElementsByTagName(r)))return i}}},{key:"setupEventListeners",value:function(){return this.listeners.map(function(i){return function(){var e=[];for(var t in i.events){var n=i.events[t];e.push(i.element.addEventListener(t,n,!1))}return e}()})}},{key:"removeEventListeners",value:function(){return this.listeners.map(function(i){return function(){var e=[];for(var t in i.events){var n=i.events[t];e.push(i.element.removeEventListener(t,n,!1))}return e}()})}},{key:"disable",value:function(){var t=this;return this.clickableElements.forEach(function(e){return e.classList.remove("dz-clickable")}),this.removeEventListeners(),this.disabled=!0,this.files.map(function(e){return t.cancelUpload(e)})}},{key:"enable",value:function(){return delete this.disabled,this.clickableElements.forEach(function(e){return e.classList.add("dz-clickable")}),this.setupEventListeners()}},{key:"filesize",value:function(e){var t=0,n="b";if(0<e){for(var i=["tb","gb","mb","kb","b"],r=0;r<i.length;r++){var a=i[r];if(Math.pow(this.options.filesizeBase,4-r)/10<=e){t=e/Math.pow(this.options.filesizeBase,4-r),n=a;break}}t=Math.round(10*t)/10}return"<strong>".concat(t,"</strong> ").concat(this.options.dictFileSizeUnits[n])}},{key:"_updateMaxFilesReachedClass",value:function(){return null!=this.options.maxFiles&&this.getAcceptedFiles().length>=this.options.maxFiles?(this.getAcceptedFiles().length===this.options.maxFiles&&this.emit("maxfilesreached",this.files),this.element.classList.add("dz-max-files-reached")):this.element.classList.remove("dz-max-files-reached")}},{key:"drop",value:function(e){if(e.dataTransfer){this.emit("drop",e);for(var t=[],n=0;n<e.dataTransfer.files.length;n++)t[n]=e.dataTransfer.files[n];if(t.length){var i=e.dataTransfer.items;i&&i.length&&null!=i[0].webkitGetAsEntry?this._addFilesFromItems(i):this.handleFiles(t)}this.emit("addedfiles",t)}}},{key:"paste",value:function(e){if(null!=(t=null!=e?e.clipboardData:void 0,n=function(e){return e.items},null!=t?n(t):void 0)){var t,n;this.emit("paste",e);var i=e.clipboardData.items;return i.length?this._addFilesFromItems(i):void 0}}},{key:"handleFiles",value:function(e){var t,n=w(e);try{for(n.s();!(t=n.n()).done;){var i=t.value;this.addFile(i)}}catch(e){n.e(e)}finally{n.f()}}},{key:"_addFilesFromItems",value:function(a){var o=this;return function(){var e,t=[],n=w(a);try{for(n.s();!(e=n.n()).done;){var i,r=e.value;null!=r.webkitGetAsEntry&&(i=r.webkitGetAsEntry())?i.isFile?t.push(o.addFile(r.getAsFile())):i.isDirectory?t.push(o._addFilesFromDirectory(i,i.name)):t.push(void 0):null!=r.getAsFile&&(null==r.kind||"file"===r.kind)?t.push(o.addFile(r.getAsFile())):t.push(void 0)}}catch(e){n.e(e)}finally{n.f()}return t}()}},{key:"_addFilesFromDirectory",value:function(e,a){function t(t){return e=console,n="log",i=function(e){return e.log(t)},null!=e&&"function"==typeof e[n]?i(e,n):void 0;var e,n,i}var o=this,n=e.createReader();return function r(){return n.readEntries(function(e){if(0<e.length){var t,n=w(e);try{for(n.s();!(t=n.n()).done;){var i=t.value;i.isFile?i.file(function(e){if(!o.options.ignoreHiddenFiles||"."!==e.name.substring(0,1))return e.fullPath="".concat(a,"/").concat(e.name),o.addFile(e)}):i.isDirectory&&o._addFilesFromDirectory(i,"".concat(a,"/").concat(i.name))}}catch(e){n.e(e)}finally{n.f()}r()}return null},t)}()}},{key:"accept",value:function(e,t){this.options.maxFilesize&&e.size>1024*this.options.maxFilesize*1024?t(this.options.dictFileTooBig.replace("{{filesize}}",Math.round(e.size/1024/10.24)/100).replace("{{maxFilesize}}",this.options.maxFilesize)):F.isValidFile(e,this.options.acceptedFiles)?null!=this.options.maxFiles&&this.getAcceptedFiles().length>=this.options.maxFiles?(t(this.options.dictMaxFilesExceeded.replace("{{maxFiles}}",this.options.maxFiles)),this.emit("maxfilesexceeded",e)):this.options.accept.call(this,e,t):t(this.options.dictInvalidFileType)}},{key:"addFile",value:function(t){var n=this;t.upload={uuid:F.uuidv4(),progress:0,total:t.size,bytesSent:0,filename:this._renameFile(t)},this.files.push(t),t.status=F.ADDED,this.emit("addedfile",t),this._enqueueThumbnail(t),this.accept(t,function(e){e?(t.accepted=!1,n._errorProcessing([t],e)):(t.accepted=!0,n.options.autoQueue&&n.enqueueFile(t)),n._updateMaxFilesReachedClass()})}},{key:"enqueueFiles",value:function(e){var t,n=w(e);try{for(n.s();!(t=n.n()).done;){var i=t.value;this.enqueueFile(i)}}catch(e){n.e(e)}finally{n.f()}return null}},{key:"enqueueFile",value:function(e){var t=this;if(e.status!==F.ADDED||!0!==e.accepted)throw new Error("This file can't be queued because it has already been processed or was rejected.");if(e.status=F.QUEUED,this.options.autoProcessQueue)return setTimeout(function(){return t.processQueue()},0)}},{key:"_enqueueThumbnail",value:function(e){var t=this;if(this.options.createImageThumbnails&&e.type.match(/image.*/)&&e.size<=1024*this.options.maxThumbnailFilesize*1024)return this._thumbnailQueue.push(e),setTimeout(function(){return t._processThumbnailQueue()},0)}},{key:"_processThumbnailQueue",value:function(){var t=this;if(!this._processingThumbnail&&0!==this._thumbnailQueue.length){this._processingThumbnail=!0;var n=this._thumbnailQueue.shift();return this.createThumbnail(n,this.options.thumbnailWidth,this.options.thumbnailHeight,this.options.thumbnailMethod,!0,function(e){return t.emit("thumbnail",n,e),t._processingThumbnail=!1,t._processThumbnailQueue()})}}},{key:"removeFile",value:function(e){if(e.status===F.UPLOADING&&this.cancelUpload(e),this.files=f(this.files,e),this.emit("removedfile",e),0===this.files.length)return this.emit("reset")}},{key:"removeAllFiles",value:function(e){null==e&&(e=!1);var t,n=w(this.files.slice());try{for(n.s();!(t=n.n()).done;){var i=t.value;i.status===F.UPLOADING&&!e||this.removeFile(i)}}catch(e){n.e(e)}finally{n.f()}return null}},{key:"resizeImage",value:function(r,e,t,n,a){var o=this;return this.createThumbnail(r,e,t,n,!0,function(e,t){if(null==t)return a(r);var n=o.options.resizeMimeType;null==n&&(n=r.type);var i=t.toDataURL(n,o.options.resizeQuality);return"image/jpeg"!==n&&"image/jpg"!==n||(i=g.restore(r.dataURL,i)),a(F.dataURItoBlob(i))})}},{key:"createThumbnail",value:function(e,t,n,i,r,a){var o=this,s=new FileReader;s.onload=function(){e.dataURL=s.result,"image/svg+xml"!==e.type?o.createThumbnailFromUrl(e,t,n,i,r,a):null!=a&&a(s.result)},s.readAsDataURL(e)}},{key:"displayExistingFile",value:function(t,e,n,i,r){var a=this,o=!(4<arguments.length&&void 0!==r)||r;if(this.emit("addedfile",t),this.emit("complete",t),o){t.dataURL=e,this.createThumbnailFromUrl(t,this.options.thumbnailWidth,this.options.thumbnailHeight,this.options.resizeMethod,this.options.fixOrientation,function(e){a.emit("thumbnail",t,e),n&&n()},i)}else this.emit("thumbnail",t,e),n&&n()}},{key:"createThumbnailFromUrl",value:function(a,o,s,l,t,u,e){var c=this,d=document.createElement("img");return e&&(d.crossOrigin=e),t="from-image"!=getComputedStyle(document.body).imageOrientation&&t,d.onload=function(){var e=function(e){return e(1)};return"undefined"!=typeof EXIF&&null!==EXIF&&t&&(e=function(e){return EXIF.getData(d,function(){return e(EXIF.getTag(this,"Orientation"))})}),e(function(e){a.width=d.width,a.height=d.height;var t=c.options.resize.call(c,a,o,s,l),n=document.createElement("canvas"),i=n.getContext("2d");switch(n.width=t.trgWidth,n.height=t.trgHeight,4<e&&(n.width=t.trgHeight,n.height=t.trgWidth),e){case 2:i.translate(n.width,0),i.scale(-1,1);break;case 3:i.translate(n.width,n.height),i.rotate(Math.PI);break;case 4:i.translate(0,n.height),i.scale(1,-1);break;case 5:i.rotate(.5*Math.PI),i.scale(1,-1);break;case 6:i.rotate(.5*Math.PI),i.translate(0,-n.width);break;case 7:i.rotate(.5*Math.PI),i.translate(n.height,-n.width),i.scale(-1,1);break;case 8:i.rotate(-.5*Math.PI),i.translate(-n.height,0)}v(i,d,null!=t.srcX?t.srcX:0,null!=t.srcY?t.srcY:0,t.srcWidth,t.srcHeight,null!=t.trgX?t.trgX:0,null!=t.trgY?t.trgY:0,t.trgWidth,t.trgHeight);var r=n.toDataURL("image/png");if(null!=u)return u(r,n)})},null!=u&&(d.onerror=u),d.src=a.dataURL}},{key:"processQueue",value:function(){var e=this.options.parallelUploads,t=this.getUploadingFiles().length,n=t;if(!(e<=t)){var i=this.getQueuedFiles();if(0<i.length){if(this.options.uploadMultiple)return this.processFiles(i.slice(0,e-t));for(;n<e;){if(!i.length)return;this.processFile(i.shift()),n++}}}}},{key:"processFile",value:function(e){return this.processFiles([e])}},{key:"processFiles",value:function(e){var t,n=w(e);try{for(n.s();!(t=n.n()).done;){var i=t.value;i.processing=!0,i.status=F.UPLOADING,this.emit("processing",i)}}catch(e){n.e(e)}finally{n.f()}return this.options.uploadMultiple&&this.emit("processingmultiple",e),this.uploadFiles(e)}},{key:"_getFilesWithXhr",value:function(t){return this.files.filter(function(e){return e.xhr===t}).map(function(e){return e})}},{key:"cancelUpload",value:function(e){if(e.status===F.UPLOADING){var t,n=this._getFilesWithXhr(e.xhr),i=w(n);try{for(i.s();!(t=i.n()).done;){t.value.status=F.CANCELED}}catch(e){i.e(e)}finally{i.f()}void 0!==e.xhr&&e.xhr.abort();var r,a=w(n);try{for(a.s();!(r=a.n()).done;){var o=r.value;this.emit("canceled",o)}}catch(e){a.e(e)}finally{a.f()}this.options.uploadMultiple&&this.emit("canceledmultiple",n)}else e.status!==F.ADDED&&e.status!==F.QUEUED||(e.status=F.CANCELED,this.emit("canceled",e),this.options.uploadMultiple&&this.emit("canceledmultiple",[e]));if(this.options.autoProcessQueue)return this.processQueue()}},{key:"resolveOption",value:function(e){if("function"!=typeof e)return e;for(var t=arguments.length,n=new Array(1<t?t-1:0),i=1;i<t;i++)n[i-1]=arguments[i];return e.apply(this,n)}},{key:"uploadFile",value:function(e){return this.uploadFiles([e])}},{key:"uploadFiles",value:function(l){var u=this;this._transformFiles(l,function(e){if(u.options.chunking){var t=e[0];l[0].upload.chunked=u.options.chunking&&(u.options.forceChunking||t.size>u.options.chunkSize),l[0].upload.totalChunkCount=Math.ceil(t.size/u.options.chunkSize)}if(l[0].upload.chunked){var r=l[0],a=e[0];r.upload.chunks=[];function i(){for(var e=0;void 0!==r.upload.chunks[e];)e++;if(!(e>=r.upload.totalChunkCount)){0;var t=e*u.options.chunkSize,n=Math.min(t+u.options.chunkSize,a.size),i={name:u._getParamName(0),data:a.webkitSlice?a.webkitSlice(t,n):a.slice(t,n),filename:r.upload.filename,chunkIndex:e};r.upload.chunks[e]={file:r,index:e,dataBlock:i,status:F.UPLOADING,progress:0,retries:0},u._uploadData(l,[i])}}if(r.upload.finishedChunkUpload=function(e){var t=!0;e.status=F.SUCCESS,e.dataBlock=null,e.xhr=null;for(var n=0;n<r.upload.totalChunkCount;n++){if(void 0===r.upload.chunks[n])return i();r.upload.chunks[n].status!==F.SUCCESS&&(t=!1)}t&&u.options.chunksUploaded(r,function(){u._finished(l,"",null)})},u.options.parallelChunkUploads)for(var n=0;n<r.upload.totalChunkCount;n++)i();else i()}else{for(var o=[],s=0;s<l.length;s++)o[s]={name:u._getParamName(s),data:e[s],filename:l[s].upload.filename};u._uploadData(l,o)}})}},{key:"_getChunk",value:function(e,t){for(var n=0;n<e.upload.totalChunkCount;n++)if(void 0!==e.upload.chunks[n]&&e.upload.chunks[n].xhr===t)return e.upload.chunks[n]}},{key:"_uploadData",value:function(t,e){var n,i=this,r=new XMLHttpRequest,a=w(t);try{for(a.s();!(n=a.n()).done;){n.value.xhr=r}}catch(e){a.e(e)}finally{a.f()}t[0].upload.chunked&&(t[0].upload.chunks[e[0].chunkIndex].xhr=r);var o=this.resolveOption(this.options.method,t),s=this.resolveOption(this.options.url,t);r.open(o,s,!0),r.timeout=this.resolveOption(this.options.timeout,t),r.withCredentials=!!this.options.withCredentials,r.onload=function(e){i._finishedUploading(t,r,e)},r.ontimeout=function(){i._handleUploadError(t,r,"Request timedout after ".concat(i.options.timeout/1e3," seconds"))},r.onerror=function(){i._handleUploadError(t,r)},(null!=r.upload?r.upload:r).onprogress=function(e){return i._updateFilesUploadProgress(t,r,e)};var l={Accept:"application/json","Cache-Control":"no-cache","X-Requested-With":"XMLHttpRequest"};for(var u in this.options.headers&&F.extend(l,this.options.headers),l){var c=l[u];c&&r.setRequestHeader(u,c)}var d=new FormData;if(this.options.params){var p=this.options.params;for(var h in"function"==typeof p&&(p=p.call(this,t,r,t[0].upload.chunked?this._getChunk(t[0],r):null)),p){var f=p[h];if(Array.isArray(f))for(var m=0;m<f.length;m++)d.append(h,f[m]);else d.append(h,f)}}var v,g=w(t);try{for(g.s();!(v=g.n()).done;){var y=v.value;this.emit("sending",y,r,d)}}catch(e){g.e(e)}finally{g.f()}this.options.uploadMultiple&&this.emit("sendingmultiple",t,r,d),this._addFormElementData(d);for(var k=0;k<e.length;k++){var b=e[k];d.append(b.name,b.data,b.filename)}this.submitRequest(r,d,t)}},{key:"_transformFiles",value:function(n,i){function e(t){r.options.transformFile.call(r,n[t],function(e){a[t]=e,++o===n.length&&i(a)})}for(var r=this,a=[],o=0,t=0;t<n.length;t++)e(t)}},{key:"_addFormElementData",value:function(e){if("FORM"===this.element.tagName){var t,n=w(this.element.querySelectorAll("input, textarea, select, button"));try{for(n.s();!(t=n.n()).done;){var i=t.value,r=i.getAttribute("name"),a=i.getAttribute("type");if(a=a&&a.toLowerCase(),null!=r)if("SELECT"===i.tagName&&i.hasAttribute("multiple")){var o,s=w(i.options);try{for(s.s();!(o=s.n()).done;){var l=o.value;l.selected&&e.append(r,l.value)}}catch(e){s.e(e)}finally{s.f()}}else(!a||"checkbox"!==a&&"radio"!==a||i.checked)&&e.append(r,i.value)}}catch(e){n.e(e)}finally{n.f()}}}},{key:"_updateFilesUploadProgress",value:function(e,t,n){var i;if(void 0!==n){if(i=100*n.loaded/n.total,e[0].upload.chunked){var r=e[0],a=this._getChunk(r,t);a.progress=i,a.total=n.total,a.bytesSent=n.loaded;r.upload.progress=0,r.upload.total=0;for(var o=r.upload.bytesSent=0;o<r.upload.totalChunkCount;o++)void 0!==r.upload.chunks[o]&&void 0!==r.upload.chunks[o].progress&&(r.upload.progress+=r.upload.chunks[o].progress,r.upload.total+=r.upload.chunks[o].total,r.upload.bytesSent+=r.upload.chunks[o].bytesSent);r.upload.progress=r.upload.progress/r.upload.totalChunkCount}else{var s,l=w(e);try{for(l.s();!(s=l.n()).done;){var u=s.value;u.upload.progress=i,u.upload.total=n.total,u.upload.bytesSent=n.loaded}}catch(e){l.e(e)}finally{l.f()}}var c,d=w(e);try{for(d.s();!(c=d.n()).done;){var p=c.value;this.emit("uploadprogress",p,p.upload.progress,p.upload.bytesSent)}}catch(e){d.e(e)}finally{d.f()}}else{var h=!0;i=100;var f,m=w(e);try{for(m.s();!(f=m.n()).done;){var v=f.value;100===v.upload.progress&&v.upload.bytesSent===v.upload.total||(h=!1),v.upload.progress=i,v.upload.bytesSent=v.upload.total}}catch(e){m.e(e)}finally{m.f()}if(h)return;var g,y=w(e);try{for(y.s();!(g=y.n()).done;){var k=g.value;this.emit("uploadprogress",k,i,k.upload.bytesSent)}}catch(e){y.e(e)}finally{y.f()}}}},{key:"_finishedUploading",value:function(e,t,n){var i;if(e[0].status!==F.CANCELED&&4===t.readyState){if("arraybuffer"!==t.responseType&&"blob"!==t.responseType&&(i=t.responseText,t.getResponseHeader("content-type")&&~t.getResponseHeader("content-type").indexOf("application/json")))try{i=JSON.parse(i)}catch(e){n=e,i="Invalid JSON response from server."}this._updateFilesUploadProgress(e),200<=t.status&&t.status<300?e[0].upload.chunked?e[0].upload.finishedChunkUpload(this._getChunk(e[0],t)):this._finished(e,i,n):this._handleUploadError(e,t,i)}}},{key:"_handleUploadError",value:function(e,t,n){if(e[0].status!==F.CANCELED){if(e[0].upload.chunked&&this.options.retryChunks){var i=this._getChunk(e[0],t);if(i.retries++<this.options.retryChunksLimit)return void this._uploadData(e,[i.dataBlock]);console.warn("Retried this chunk too often. Giving up.")}this._errorProcessing(e,n||this.options.dictResponseError.replace("{{statusCode}}",t.status),t)}}},{key:"submitRequest",value:function(e,t){e.send(t)}},{key:"_finished",value:function(e,t,n){var i,r=w(e);try{for(r.s();!(i=r.n()).done;){var a=i.value;a.status=F.SUCCESS,this.emit("success",a,t,n),this.emit("complete",a)}}catch(e){r.e(e)}finally{r.f()}if(this.options.uploadMultiple&&(this.emit("successmultiple",e,t,n),this.emit("completemultiple",e)),this.options.autoProcessQueue)return this.processQueue()}},{key:"_errorProcessing",value:function(e,t,n){var i,r=w(e);try{for(r.s();!(i=r.n()).done;){var a=i.value;a.status=F.ERROR,this.emit("error",a,t,n),this.emit("complete",a)}}catch(e){r.e(e)}finally{r.f()}if(this.options.uploadMultiple&&(this.emit("errormultiple",e,t,n),this.emit("completemultiple",e)),this.options.autoProcessQueue)return this.processQueue()}}],[{key:"uuidv4",value:function(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(e){var t=16*Math.random()|0;return("x"===e?t:3&t|8).toString(16)})}}]),F}();h.initClass(),h.version="5.7.2",h.options={},h.optionsForElement=function(e){return e.getAttribute("id")?h.options[m(e.getAttribute("id"))]:void 0},h.instances=[],h.forElement=function(e){if("string"==typeof e&&(e=document.querySelector(e)),null==(null!=e?e.dropzone:void 0))throw new Error("No Dropzone found for given element. This is probably because you're trying to access it before Dropzone had the time to initialize. Use the `init` option to setup any additional observers on your Dropzone.");return e.dropzone},h.autoDiscover=!0,h.discover=function(){var a;if(document.querySelectorAll)a=document.querySelectorAll(".dropzone");else{a=[];function e(r){return function(){var e,t=[],n=w(r);try{for(n.s();!(e=n.n()).done;){var i=e.value;/(^| )dropzone($| )/.test(i.className)?t.push(a.push(i)):t.push(void 0)}}catch(e){n.e(e)}finally{n.f()}return t}()}e(document.getElementsByTagName("div")),e(document.getElementsByTagName("form"))}return function(){var e,t=[],n=w(a);try{for(n.s();!(e=n.n()).done;){var i=e.value;!1!==h.optionsForElement(i)?t.push(new h(i)):t.push(void 0)}}catch(e){n.e(e)}finally{n.f()}return t}()},h.blacklistedBrowsers=[/opera.*(Macintosh|Windows Phone).*version\/12/i],h.isBrowserSupported=function(){var e=!0;if(window.File&&window.FileReader&&window.FileList&&window.Blob&&window.FormData&&document.querySelector)if("classList"in document.createElement("a")){var t,n=w(h.blacklistedBrowsers);try{for(n.s();!(t=n.n()).done;){t.value.test(navigator.userAgent)&&(e=!1)}}catch(e){n.e(e)}finally{n.f()}}else e=!1;else e=!1;return e},h.dataURItoBlob=function(e){for(var t=atob(e.split(",")[1]),n=e.split(",")[0].split(":")[1].split(";")[0],i=new ArrayBuffer(t.length),r=new Uint8Array(i),a=0,o=t.length,s=0<=o;s?a<=o:o<=a;s?a++:a--)r[a]=t.charCodeAt(a);return new Blob([i],{type:n})};var f=function(e,t){return e.filter(function(e){return e!==t}).map(function(e){return e})},m=function(e){return e.replace(/[\-_](\w)/g,function(e){return e.charAt(1).toUpperCase()})};h.createElement=function(e){var t=document.createElement("div");return t.innerHTML=e,t.childNodes[0]},h.elementInside=function(e,t){if(e===t)return!0;for(;e=e.parentNode;)if(e===t)return!0;return!1},h.getElement=function(e,t){var n;if("string"==typeof e?n=document.querySelector(e):null!=e.nodeType&&(n=e),null==n)throw new Error("Invalid `".concat(t,"` option provided. Please provide a CSS selector or a plain HTML element."));return n},h.getElements=function(e,t){var n,i;if(e instanceof Array){i=[];try{var r,a=w(e);try{for(a.s();!(r=a.n()).done;)n=r.value,i.push(this.getElement(n,t))}catch(e){a.e(e)}finally{a.f()}}catch(e){i=null}}else if("string"==typeof e){i=[];var o,s=w(document.querySelectorAll(e));try{for(s.s();!(o=s.n()).done;)n=o.value,i.push(n)}catch(e){s.e(e)}finally{s.f()}}else null!=e.nodeType&&(i=[e]);if(null==i||!i.length)throw new Error("Invalid `".concat(t,"` option provided. Please provide a CSS selector, a plain HTML element or a list of those."));return i},h.confirm=function(e,t,n){return window.confirm(e)?t():null!=n?n():void 0},h.isValidFile=function(e,t){if(!t)return!0;t=t.split(",");var n,i=e.type,r=i.replace(/\/.*$/,""),a=w(t);try{for(a.s();!(n=a.n()).done;){var o=n.value;if("."===(o=o.trim()).charAt(0)){if(-1!==e.name.toLowerCase().indexOf(o.toLowerCase(),e.name.length-o.length))return!0}else if(/\/\*$/.test(o)){if(r===o.replace(/\/.*$/,""))return!0}else if(i===o)return!0}}catch(e){a.e(e)}finally{a.f()}return!1},null!=e&&(e.fn.dropzone=function(e){return this.each(function(){return new h(this,e)})}),null!=t?t.exports=h:window.Dropzone=h,h.ADDED="added",h.QUEUED="queued",h.ACCEPTED=h.QUEUED,h.UPLOADING="uploading",h.PROCESSING=h.UPLOADING,h.CANCELED="canceled",h.ERROR="error",h.SUCCESS="success";var v=function(e,t,n,i,r,a,o,s,l,u){var c=function(e){e.naturalWidth;var t=e.naturalHeight,n=document.createElement("canvas");n.width=1,n.height=t;var i=n.getContext("2d");i.drawImage(e,0,0);for(var r=i.getImageData(1,0,1,t).data,a=0,o=t,s=t;a<s;){0===r[4*(s-1)+3]?o=s:a=s,s=o+a>>1}var l=s/t;return 0==l?1:l}(t);return e.drawImage(t,n,i,r,a,o,s,l,u/c)},g=function(){function e(){c(this,e)}return d(e,null,[{key:"initClass",value:function(){this.KEY_STR="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="}},{key:"encode64",value:function(e){for(var t="",n=void 0,i=void 0,r="",a=void 0,o=void 0,s=void 0,l="",u=0;a=(n=e[u++])>>2,o=(3&n)<<4|(i=e[u++])>>4,s=(15&i)<<2|(r=e[u++])>>6,l=63&r,isNaN(i)?s=l=64:isNaN(r)&&(l=64),t=t+this.KEY_STR.charAt(a)+this.KEY_STR.charAt(o)+this.KEY_STR.charAt(s)+this.KEY_STR.charAt(l),n=i=r="",a=o=s=l="",u<e.length;);return t}},{key:"restore",value:function(e,t){if(!e.match("data:image/jpeg;base64,"))return t;var n=this.decode64(e.replace("data:image/jpeg;base64,","")),i=this.slice2Segments(n),r=this.exifManipulation(t,i);return"data:image/jpeg;base64,".concat(this.encode64(r))}},{key:"exifManipulation",value:function(e,t){var n=this.getExifArray(t),i=this.insertExif(e,n);return new Uint8Array(i)}},{key:"getExifArray",value:function(e){for(var t=void 0,n=0;n<e.length;){if(255===(t=e[n])[0]&225===t[1])return t;n++}return[]}},{key:"insertExif",value:function(e,t){var n=e.replace("data:image/jpeg;base64,",""),i=this.decode64(n),r=i.indexOf(255,3),a=i.slice(0,r),o=i.slice(r),s=a;return s=(s=s.concat(t)).concat(o)}},{key:"slice2Segments",value:function(e){for(var t=0,n=[];;){if(255===e[t]&218===e[t+1])break;if(255===e[t]&216===e[t+1])t+=2;else{var i=t+(256*e[t+2]+e[t+3])+2,r=e.slice(t,i);n.push(r),t=i}if(t>e.length)break}return n}},{key:"decode64",value:function(e){var t=void 0,n=void 0,i="",r=void 0,a=void 0,o="",s=0,l=[];for(/[^A-Za-z0-9\+\/\=]/g.exec(e)&&console.warn("There were invalid base64 characters in the input text.\nValid base64 characters are A-Z, a-z, 0-9, '+', '/',and '='\nExpect errors in decoding."),e=e.replace(/[^A-Za-z0-9\+\/\=]/g,"");t=this.KEY_STR.indexOf(e.charAt(s++))<<2|(r=this.KEY_STR.indexOf(e.charAt(s++)))>>4,n=(15&r)<<4|(a=this.KEY_STR.indexOf(e.charAt(s++)))>>2,i=(3&a)<<6|(o=this.KEY_STR.indexOf(e.charAt(s++))),l.push(t),64!==a&&l.push(n),64!==o&&l.push(i),t=n=i="",r=a=o="",s<e.length;);return l}}]),e}();g.initClass();return h._autoDiscoverFunction=function(){if(h.autoDiscover)return h.discover()},function(t,n){function i(e){if("readystatechange"!==e.type||"complete"===a.readyState)return("load"===e.type?t:a)[l](u+e.type,i,!1),!r&&(r=!0)?n.call(t,e.type||e):void 0}var r=!1,e=!0,a=t.document,o=a.documentElement,s=a.addEventListener?"addEventListener":"attachEvent",l=a.addEventListener?"removeEventListener":"detachEvent",u=a.addEventListener?"":"on";if("complete"!==a.readyState){if(a.createEventObject&&o.doScroll){try{e=!t.frameElement}catch(e){}e&&!function t(){try{o.doScroll("left")}catch(e){return void setTimeout(t,50)}return i("poll")}()}a[s](u+"DOMContentLoaded",i,!1),a[s](u+"readystatechange",i,!1),t[s](u+"load",i,!1)}}(window,h._autoDiscoverFunction),t.exports});
\ No newline at end of file
diff --git a/admin/js/vendors/dropzone/min/dropzone.min.css b/admin/js/vendors/dropzone/min/dropzone.min.css
new file mode 100644 (file)
index 0000000..1b63110
--- /dev/null
@@ -0,0 +1 @@
+@-webkit-keyframes passing-through{0%{opacity:0;-webkit-transform:translateY(40px);-moz-transform:translateY(40px);-ms-transform:translateY(40px);-o-transform:translateY(40px);transform:translateY(40px)}30%, 70%{opacity:1;-webkit-transform:translateY(0px);-moz-transform:translateY(0px);-ms-transform:translateY(0px);-o-transform:translateY(0px);transform:translateY(0px)}100%{opacity:0;-webkit-transform:translateY(-40px);-moz-transform:translateY(-40px);-ms-transform:translateY(-40px);-o-transform:translateY(-40px);transform:translateY(-40px)}}@-moz-keyframes passing-through{0%{opacity:0;-webkit-transform:translateY(40px);-moz-transform:translateY(40px);-ms-transform:translateY(40px);-o-transform:translateY(40px);transform:translateY(40px)}30%, 70%{opacity:1;-webkit-transform:translateY(0px);-moz-transform:translateY(0px);-ms-transform:translateY(0px);-o-transform:translateY(0px);transform:translateY(0px)}100%{opacity:0;-webkit-transform:translateY(-40px);-moz-transform:translateY(-40px);-ms-transform:translateY(-40px);-o-transform:translateY(-40px);transform:translateY(-40px)}}@keyframes passing-through{0%{opacity:0;-webkit-transform:translateY(40px);-moz-transform:translateY(40px);-ms-transform:translateY(40px);-o-transform:translateY(40px);transform:translateY(40px)}30%, 70%{opacity:1;-webkit-transform:translateY(0px);-moz-transform:translateY(0px);-ms-transform:translateY(0px);-o-transform:translateY(0px);transform:translateY(0px)}100%{opacity:0;-webkit-transform:translateY(-40px);-moz-transform:translateY(-40px);-ms-transform:translateY(-40px);-o-transform:translateY(-40px);transform:translateY(-40px)}}@-webkit-keyframes slide-in{0%{opacity:0;-webkit-transform:translateY(40px);-moz-transform:translateY(40px);-ms-transform:translateY(40px);-o-transform:translateY(40px);transform:translateY(40px)}30%{opacity:1;-webkit-transform:translateY(0px);-moz-transform:translateY(0px);-ms-transform:translateY(0px);-o-transform:translateY(0px);transform:translateY(0px)}}@-moz-keyframes slide-in{0%{opacity:0;-webkit-transform:translateY(40px);-moz-transform:translateY(40px);-ms-transform:translateY(40px);-o-transform:translateY(40px);transform:translateY(40px)}30%{opacity:1;-webkit-transform:translateY(0px);-moz-transform:translateY(0px);-ms-transform:translateY(0px);-o-transform:translateY(0px);transform:translateY(0px)}}@keyframes slide-in{0%{opacity:0;-webkit-transform:translateY(40px);-moz-transform:translateY(40px);-ms-transform:translateY(40px);-o-transform:translateY(40px);transform:translateY(40px)}30%{opacity:1;-webkit-transform:translateY(0px);-moz-transform:translateY(0px);-ms-transform:translateY(0px);-o-transform:translateY(0px);transform:translateY(0px)}}@-webkit-keyframes pulse{0%{-webkit-transform:scale(1);-moz-transform:scale(1);-ms-transform:scale(1);-o-transform:scale(1);transform:scale(1)}10%{-webkit-transform:scale(1.1);-moz-transform:scale(1.1);-ms-transform:scale(1.1);-o-transform:scale(1.1);transform:scale(1.1)}20%{-webkit-transform:scale(1);-moz-transform:scale(1);-ms-transform:scale(1);-o-transform:scale(1);transform:scale(1)}}@-moz-keyframes pulse{0%{-webkit-transform:scale(1);-moz-transform:scale(1);-ms-transform:scale(1);-o-transform:scale(1);transform:scale(1)}10%{-webkit-transform:scale(1.1);-moz-transform:scale(1.1);-ms-transform:scale(1.1);-o-transform:scale(1.1);transform:scale(1.1)}20%{-webkit-transform:scale(1);-moz-transform:scale(1);-ms-transform:scale(1);-o-transform:scale(1);transform:scale(1)}}@keyframes pulse{0%{-webkit-transform:scale(1);-moz-transform:scale(1);-ms-transform:scale(1);-o-transform:scale(1);transform:scale(1)}10%{-webkit-transform:scale(1.1);-moz-transform:scale(1.1);-ms-transform:scale(1.1);-o-transform:scale(1.1);transform:scale(1.1)}20%{-webkit-transform:scale(1);-moz-transform:scale(1);-ms-transform:scale(1);-o-transform:scale(1);transform:scale(1)}}.dropzone,.dropzone *{box-sizing:border-box}.dropzone{min-height:150px;border:2px solid rgba(0,0,0,0.3);background:white;padding:20px 20px}.dropzone.dz-clickable{cursor:pointer}.dropzone.dz-clickable *{cursor:default}.dropzone.dz-clickable .dz-message,.dropzone.dz-clickable .dz-message *{cursor:pointer}.dropzone.dz-started .dz-message{display:none}.dropzone.dz-drag-hover{border-style:solid}.dropzone.dz-drag-hover .dz-message{opacity:0.5}.dropzone .dz-message{text-align:center;margin:2em 0}.dropzone .dz-message .dz-button{background:none;color:inherit;border:none;padding:0;font:inherit;cursor:pointer;outline:inherit}.dropzone .dz-preview{position:relative;display:inline-block;vertical-align:top;margin:16px;min-height:100px}.dropzone .dz-preview:hover{z-index:1000}.dropzone .dz-preview:hover .dz-details{opacity:1}.dropzone .dz-preview.dz-file-preview .dz-image{border-radius:20px;background:#999;background:linear-gradient(to bottom, #eee, #ddd)}.dropzone .dz-preview.dz-file-preview .dz-details{opacity:1}.dropzone .dz-preview.dz-image-preview{background:white}.dropzone .dz-preview.dz-image-preview .dz-details{-webkit-transition:opacity 0.2s linear;-moz-transition:opacity 0.2s linear;-ms-transition:opacity 0.2s linear;-o-transition:opacity 0.2s linear;transition:opacity 0.2s linear}.dropzone .dz-preview .dz-remove{font-size:14px;text-align:center;display:block;cursor:pointer;border:none}.dropzone .dz-preview .dz-remove:hover{text-decoration:underline}.dropzone .dz-preview:hover .dz-details{opacity:1}.dropzone .dz-preview .dz-details{z-index:20;position:absolute;top:0;left:0;opacity:0;font-size:13px;min-width:100%;max-width:100%;padding:2em 1em;text-align:center;color:rgba(0,0,0,0.9);line-height:150%}.dropzone .dz-preview .dz-details .dz-size{margin-bottom:1em;font-size:16px}.dropzone .dz-preview .dz-details .dz-filename{white-space:nowrap}.dropzone .dz-preview .dz-details .dz-filename:hover span{border:1px solid rgba(200,200,200,0.8);background-color:rgba(255,255,255,0.8)}.dropzone .dz-preview .dz-details .dz-filename:not(:hover){overflow:hidden;text-overflow:ellipsis}.dropzone .dz-preview .dz-details .dz-filename:not(:hover) span{border:1px solid transparent}.dropzone .dz-preview .dz-details .dz-filename span,.dropzone .dz-preview .dz-details .dz-size span{background-color:rgba(255,255,255,0.4);padding:0 0.4em;border-radius:3px}.dropzone .dz-preview:hover .dz-image img{-webkit-transform:scale(1.05, 1.05);-moz-transform:scale(1.05, 1.05);-ms-transform:scale(1.05, 1.05);-o-transform:scale(1.05, 1.05);transform:scale(1.05, 1.05);-webkit-filter:blur(8px);filter:blur(8px)}.dropzone .dz-preview .dz-image{border-radius:20px;overflow:hidden;width:120px;height:120px;position:relative;display:block;z-index:10}.dropzone .dz-preview .dz-image img{display:block}.dropzone .dz-preview.dz-success .dz-success-mark{-webkit-animation:passing-through 3s cubic-bezier(0.77, 0, 0.175, 1);-moz-animation:passing-through 3s cubic-bezier(0.77, 0, 0.175, 1);-ms-animation:passing-through 3s cubic-bezier(0.77, 0, 0.175, 1);-o-animation:passing-through 3s cubic-bezier(0.77, 0, 0.175, 1);animation:passing-through 3s cubic-bezier(0.77, 0, 0.175, 1)}.dropzone .dz-preview.dz-error .dz-error-mark{opacity:1;-webkit-animation:slide-in 3s cubic-bezier(0.77, 0, 0.175, 1);-moz-animation:slide-in 3s cubic-bezier(0.77, 0, 0.175, 1);-ms-animation:slide-in 3s cubic-bezier(0.77, 0, 0.175, 1);-o-animation:slide-in 3s cubic-bezier(0.77, 0, 0.175, 1);animation:slide-in 3s cubic-bezier(0.77, 0, 0.175, 1)}.dropzone .dz-preview .dz-success-mark,.dropzone .dz-preview .dz-error-mark{pointer-events:none;opacity:0;z-index:500;position:absolute;display:block;top:50%;left:50%;margin-left:-27px;margin-top:-27px}.dropzone .dz-preview .dz-success-mark svg,.dropzone .dz-preview .dz-error-mark svg{display:block;width:54px;height:54px}.dropzone .dz-preview.dz-processing .dz-progress{opacity:1;-webkit-transition:all 0.2s linear;-moz-transition:all 0.2s linear;-ms-transition:all 0.2s linear;-o-transition:all 0.2s linear;transition:all 0.2s linear}.dropzone .dz-preview.dz-complete .dz-progress{opacity:0;-webkit-transition:opacity 0.4s ease-in;-moz-transition:opacity 0.4s ease-in;-ms-transition:opacity 0.4s ease-in;-o-transition:opacity 0.4s ease-in;transition:opacity 0.4s ease-in}.dropzone .dz-preview:not(.dz-processing) .dz-progress{-webkit-animation:pulse 6s ease infinite;-moz-animation:pulse 6s ease infinite;-ms-animation:pulse 6s ease infinite;-o-animation:pulse 6s ease infinite;animation:pulse 6s ease infinite}.dropzone .dz-preview .dz-progress{opacity:1;z-index:1000;pointer-events:none;position:absolute;height:16px;left:50%;top:50%;margin-top:-8px;width:80px;margin-left:-40px;background:rgba(255,255,255,0.9);-webkit-transform:scale(1);border-radius:8px;overflow:hidden}.dropzone .dz-preview .dz-progress .dz-upload{background:#333;background:linear-gradient(to bottom, #666, #444);position:absolute;top:0;left:0;bottom:0;width:0;-webkit-transition:width 300ms ease-in-out;-moz-transition:width 300ms ease-in-out;-ms-transition:width 300ms ease-in-out;-o-transition:width 300ms ease-in-out;transition:width 300ms ease-in-out}.dropzone .dz-preview.dz-error .dz-error-message{display:block}.dropzone .dz-preview.dz-error:hover .dz-error-message{opacity:1;pointer-events:auto}.dropzone .dz-preview .dz-error-message{pointer-events:none;z-index:1000;position:absolute;display:block;display:none;opacity:0;-webkit-transition:opacity 0.3s ease;-moz-transition:opacity 0.3s ease;-ms-transition:opacity 0.3s ease;-o-transition:opacity 0.3s ease;transition:opacity 0.3s ease;border-radius:8px;font-size:13px;top:130px;left:-10px;width:140px;background:#be2626;background:linear-gradient(to bottom, #be2626, #a92222);padding:0.5em 1.2em;color:white}.dropzone .dz-preview .dz-error-message:after{content:'';position:absolute;top:-6px;left:64px;width:0;height:0;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #be2626}
diff --git a/admin/js/vendors/dropzone/min/dropzone.min.js b/admin/js/vendors/dropzone/min/dropzone.min.js
new file mode 100644 (file)
index 0000000..26b15a6
--- /dev/null
@@ -0,0 +1 @@
+"use strict";function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function _inherits(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&_setPrototypeOf(e,t)}function _setPrototypeOf(e,t){return(_setPrototypeOf=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function _createSuper(i){var r=_isNativeReflectConstruct();return function(){var e,t=_getPrototypeOf(i);if(r){var n=_getPrototypeOf(this).constructor;e=Reflect.construct(t,arguments,n)}else e=t.apply(this,arguments);return _possibleConstructorReturn(this,e)}}function _possibleConstructorReturn(e,t){return!t||"object"!==_typeof(t)&&"function"!=typeof t?_assertThisInitialized(e):t}function _assertThisInitialized(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function _isNativeReflectConstruct(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch(e){return!1}}function _getPrototypeOf(e){return(_getPrototypeOf=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function _createForOfIteratorHelper(e,t){var n;if("undefined"==typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(n=_unsupportedIterableToArray(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var i=0,r=function(){};return{s:r,n:function(){return i>=e.length?{done:!0}:{done:!1,value:e[i++]}},e:function(e){throw e},f:r}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,l=!1;return{s:function(){n=e[Symbol.iterator]()},n:function(){var e=n.next();return a=e.done,e},e:function(e){l=!0,o=e},f:function(){try{a||null==n.return||n.return()}finally{if(l)throw o}}}}function _unsupportedIterableToArray(e,t){if(e){if("string"==typeof e)return _arrayLikeToArray(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?_arrayLikeToArray(e,t):void 0}}function _arrayLikeToArray(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,i=new Array(t);n<t;n++)i[n]=e[n];return i}function _classCallCheck(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function _defineProperties(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}function _createClass(e,t,n){return t&&_defineProperties(e.prototype,t),n&&_defineProperties(e,n),e}var Emitter=function(){function e(){_classCallCheck(this,e)}return _createClass(e,[{key:"on",value:function(e,t){return this._callbacks=this._callbacks||{},this._callbacks[e]||(this._callbacks[e]=[]),this._callbacks[e].push(t),this}},{key:"emit",value:function(e){this._callbacks=this._callbacks||{};var t=this._callbacks[e];if(t){for(var n=arguments.length,i=new Array(1<n?n-1:0),r=1;r<n;r++)i[r-1]=arguments[r];var o,a=_createForOfIteratorHelper(t);try{for(a.s();!(o=a.n()).done;){o.value.apply(this,i)}}catch(e){a.e(e)}finally{a.f()}}return this}},{key:"off",value:function(e,t){if(!this._callbacks||0===arguments.length)return this._callbacks={},this;var n=this._callbacks[e];if(!n)return this;if(1===arguments.length)return delete this._callbacks[e],this;for(var i=0;i<n.length;i++){if(n[i]===t){n.splice(i,1);break}}return this}}]),e}(),Dropzone=function(){_inherits(b,Emitter);var a=_createSuper(b);function b(e,t){var n,i,r;if(_classCallCheck(this,b),(n=a.call(this)).element=e,n.version=b.version,n.defaultOptions.previewTemplate=n.defaultOptions.previewTemplate.replace(/\n*/g,""),n.clickableElements=[],n.listeners=[],n.files=[],"string"==typeof n.element&&(n.element=document.querySelector(n.element)),!n.element||null==n.element.nodeType)throw new Error("Invalid dropzone element.");if(n.element.dropzone)throw new Error("Dropzone already attached.");b.instances.push(_assertThisInitialized(n)),n.element.dropzone=_assertThisInitialized(n);var o=null!=(r=b.optionsForElement(n.element))?r:{};if(n.options=b.extend({},n.defaultOptions,o,null!=t?t:{}),n.options.forceFallback||!b.isBrowserSupported())return _possibleConstructorReturn(n,n.options.fallback.call(_assertThisInitialized(n)));if(null==n.options.url&&(n.options.url=n.element.getAttribute("action")),!n.options.url)throw new Error("No URL provided.");if(n.options.acceptedFiles&&n.options.acceptedMimeTypes)throw new Error("You can't provide both 'acceptedFiles' and 'acceptedMimeTypes'. 'acceptedMimeTypes' is deprecated.");if(n.options.uploadMultiple&&n.options.chunking)throw new Error("You cannot set both: uploadMultiple and chunking.");return n.options.acceptedMimeTypes&&(n.options.acceptedFiles=n.options.acceptedMimeTypes,delete n.options.acceptedMimeTypes),null!=n.options.renameFilename&&(n.options.renameFile=function(e){return n.options.renameFilename.call(_assertThisInitialized(n),e.name,e)}),"string"==typeof n.options.method&&(n.options.method=n.options.method.toUpperCase()),(i=n.getExistingFallback())&&i.parentNode&&i.parentNode.removeChild(i),!1!==n.options.previewsContainer&&(n.options.previewsContainer?n.previewsContainer=b.getElement(n.options.previewsContainer,"previewsContainer"):n.previewsContainer=n.element),n.options.clickable&&(!0===n.options.clickable?n.clickableElements=[n.element]:n.clickableElements=b.getElements(n.options.clickable,"clickable")),n.init(),n}return _createClass(b,null,[{key:"initClass",value:function(){this.prototype.Emitter=Emitter,this.prototype.events=["drop","dragstart","dragend","dragenter","dragover","dragleave","addedfile","addedfiles","removedfile","thumbnail","error","errormultiple","processing","processingmultiple","uploadprogress","totaluploadprogress","sending","sendingmultiple","success","successmultiple","canceled","canceledmultiple","complete","completemultiple","reset","maxfilesexceeded","maxfilesreached","queuecomplete"],this.prototype.defaultOptions={url:null,method:"post",withCredentials:!1,timeout:3e4,parallelUploads:2,uploadMultiple:!1,chunking:!1,forceChunking:!1,chunkSize:2e6,parallelChunkUploads:!1,retryChunks:!1,retryChunksLimit:3,maxFilesize:256,paramName:"file",createImageThumbnails:!0,maxThumbnailFilesize:10,thumbnailWidth:120,thumbnailHeight:120,thumbnailMethod:"crop",resizeWidth:null,resizeHeight:null,resizeMimeType:null,resizeQuality:.8,resizeMethod:"contain",filesizeBase:1e3,maxFiles:null,headers:null,clickable:!0,ignoreHiddenFiles:!0,acceptedFiles:null,acceptedMimeTypes:null,autoProcessQueue:!0,autoQueue:!0,addRemoveLinks:!1,previewsContainer:null,hiddenInputContainer:"body",capture:null,renameFilename:null,renameFile:null,forceFallback:!1,dictDefaultMessage:"Drop files here to upload",dictFallbackMessage:"Your browser does not support drag'n'drop file uploads.",dictFallbackText:"Please use the fallback form below to upload your files like in the olden days.",dictFileTooBig:"File is too big ({{filesize}}MiB). Max filesize: {{maxFilesize}}MiB.",dictInvalidFileType:"You can't upload files of this type.",dictResponseError:"Server responded with {{statusCode}} code.",dictCancelUpload:"Cancel upload",dictUploadCanceled:"Upload canceled.",dictCancelUploadConfirmation:"Are you sure you want to cancel this upload?",dictRemoveFile:"Remove file",dictRemoveFileConfirmation:null,dictMaxFilesExceeded:"You can not upload any more files.",dictFileSizeUnits:{tb:"TB",gb:"GB",mb:"MB",kb:"KB",b:"b"},init:function(){},params:function(e,t,n){if(n)return{dzuuid:n.file.upload.uuid,dzchunkindex:n.index,dztotalfilesize:n.file.size,dzchunksize:this.options.chunkSize,dztotalchunkcount:n.file.upload.totalChunkCount,dzchunkbyteoffset:n.index*this.options.chunkSize}},accept:function(e,t){return t()},chunksUploaded:function(e,t){t()},fallback:function(){var e;this.element.className="".concat(this.element.className," dz-browser-not-supported");var t,n=_createForOfIteratorHelper(this.element.getElementsByTagName("div"));try{for(n.s();!(t=n.n()).done;){var i=t.value;if(/(^| )dz-message($| )/.test(i.className)){(e=i).className="dz-message";break}}}catch(e){n.e(e)}finally{n.f()}e||(e=b.createElement('<div class="dz-message"><span></span></div>'),this.element.appendChild(e));var r=e.getElementsByTagName("span")[0];return r&&(null!=r.textContent?r.textContent=this.options.dictFallbackMessage:null!=r.innerText&&(r.innerText=this.options.dictFallbackMessage)),this.element.appendChild(this.getFallbackForm())},resize:function(e,t,n,i){var r={srcX:0,srcY:0,srcWidth:e.width,srcHeight:e.height},o=e.width/e.height;null==t&&null==n?(t=r.srcWidth,n=r.srcHeight):null==t?t=n*o:null==n&&(n=t/o);var a=(t=Math.min(t,r.srcWidth))/(n=Math.min(n,r.srcHeight));if(r.srcWidth>t||r.srcHeight>n)if("crop"===i)a<o?(r.srcHeight=e.height,r.srcWidth=r.srcHeight*a):(r.srcWidth=e.width,r.srcHeight=r.srcWidth/a);else{if("contain"!==i)throw new Error("Unknown resizeMethod '".concat(i,"'"));a<o?n=t/o:t=n*o}return r.srcX=(e.width-r.srcWidth)/2,r.srcY=(e.height-r.srcHeight)/2,r.trgWidth=t,r.trgHeight=n,r},transformFile:function(e,t){return(this.options.resizeWidth||this.options.resizeHeight)&&e.type.match(/image.*/)?this.resizeImage(e,this.options.resizeWidth,this.options.resizeHeight,this.options.resizeMethod,t):t(e)},previewTemplate:'<div class="dz-preview dz-file-preview">\n  <div class="dz-image"><img data-dz-thumbnail /></div>\n  <div class="dz-details">\n    <div class="dz-size"><span data-dz-size></span></div>\n    <div class="dz-filename"><span data-dz-name></span></div>\n  </div>\n  <div class="dz-progress"><span class="dz-upload" data-dz-uploadprogress></span></div>\n  <div class="dz-error-message"><span data-dz-errormessage></span></div>\n  <div class="dz-success-mark">\n    <svg width="54px" height="54px" viewBox="0 0 54 54" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">\n      <title>Check</title>\n      <g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">\n        <path d="M23.5,31.8431458 L17.5852419,25.9283877 C16.0248253,24.3679711 13.4910294,24.366835 11.9289322,25.9289322 C10.3700136,27.4878508 10.3665912,30.0234455 11.9283877,31.5852419 L20.4147581,40.0716123 C20.5133999,40.1702541 20.6159315,40.2626649 20.7218615,40.3488435 C22.2835669,41.8725651 24.794234,41.8626202 26.3461564,40.3106978 L43.3106978,23.3461564 C44.8771021,21.7797521 44.8758057,19.2483887 43.3137085,17.6862915 C41.7547899,16.1273729 39.2176035,16.1255422 37.6538436,17.6893022 L23.5,31.8431458 Z M27,53 C41.3594035,53 53,41.3594035 53,27 C53,12.6405965 41.3594035,1 27,1 C12.6405965,1 1,12.6405965 1,27 C1,41.3594035 12.6405965,53 27,53 Z" stroke-opacity="0.198794158" stroke="#747474" fill-opacity="0.816519475" fill="#FFFFFF"></path>\n      </g>\n    </svg>\n  </div>\n  <div class="dz-error-mark">\n    <svg width="54px" height="54px" viewBox="0 0 54 54" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">\n      <title>Error</title>\n      <g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">\n        <g stroke="#747474" stroke-opacity="0.198794158" fill="#FFFFFF" fill-opacity="0.816519475">\n          <path d="M32.6568542,29 L38.3106978,23.3461564 C39.8771021,21.7797521 39.8758057,19.2483887 38.3137085,17.6862915 C36.7547899,16.1273729 34.2176035,16.1255422 32.6538436,17.6893022 L27,23.3431458 L21.3461564,17.6893022 C19.7823965,16.1255422 17.2452101,16.1273729 15.6862915,17.6862915 C14.1241943,19.2483887 14.1228979,21.7797521 15.6893022,23.3461564 L21.3431458,29 L15.6893022,34.6538436 C14.1228979,36.2202479 14.1241943,38.7516113 15.6862915,40.3137085 C17.2452101,41.8726271 19.7823965,41.8744578 21.3461564,40.3106978 L27,34.6568542 L32.6538436,40.3106978 C34.2176035,41.8744578 36.7547899,41.8726271 38.3137085,40.3137085 C39.8758057,38.7516113 39.8771021,36.2202479 38.3106978,34.6538436 L32.6568542,29 Z M27,53 C41.3594035,53 53,41.3594035 53,27 C53,12.6405965 41.3594035,1 27,1 C12.6405965,1 1,12.6405965 1,27 C1,41.3594035 12.6405965,53 27,53 Z"></path>\n        </g>\n      </g>\n    </svg>\n  </div>\n</div>',drop:function(){return this.element.classList.remove("dz-drag-hover")},dragstart:function(){},dragend:function(){return this.element.classList.remove("dz-drag-hover")},dragenter:function(){return this.element.classList.add("dz-drag-hover")},dragover:function(){return this.element.classList.add("dz-drag-hover")},dragleave:function(){return this.element.classList.remove("dz-drag-hover")},paste:function(){},reset:function(){return this.element.classList.remove("dz-started")},addedfile:function(t){var n=this;if(this.element===this.previewsContainer&&this.element.classList.add("dz-started"),this.previewsContainer){t.previewElement=b.createElement(this.options.previewTemplate.trim()),t.previewTemplate=t.previewElement,this.previewsContainer.appendChild(t.previewElement);var e,i=_createForOfIteratorHelper(t.previewElement.querySelectorAll("[data-dz-name]"));try{for(i.s();!(e=i.n()).done;){var r=e.value;r.textContent=t.name}}catch(e){i.e(e)}finally{i.f()}var o,a=_createForOfIteratorHelper(t.previewElement.querySelectorAll("[data-dz-size]"));try{for(a.s();!(o=a.n()).done;)(r=o.value).innerHTML=this.filesize(t.size)}catch(e){a.e(e)}finally{a.f()}this.options.addRemoveLinks&&(t._removeLink=b.createElement('<a class="dz-remove" href="javascript:undefined;" data-dz-remove>'.concat(this.options.dictRemoveFile,"</a>")),t.previewElement.appendChild(t._removeLink));var l,s=function(e){return e.preventDefault(),e.stopPropagation(),t.status===b.UPLOADING?b.confirm(n.options.dictCancelUploadConfirmation,function(){return n.removeFile(t)}):n.options.dictRemoveFileConfirmation?b.confirm(n.options.dictRemoveFileConfirmation,function(){return n.removeFile(t)}):n.removeFile(t)},u=_createForOfIteratorHelper(t.previewElement.querySelectorAll("[data-dz-remove]"));try{for(u.s();!(l=u.n()).done;){l.value.addEventListener("click",s)}}catch(e){u.e(e)}finally{u.f()}}},removedfile:function(e){return null!=e.previewElement&&null!=e.previewElement.parentNode&&e.previewElement.parentNode.removeChild(e.previewElement),this._updateMaxFilesReachedClass()},thumbnail:function(e,t){if(e.previewElement){e.previewElement.classList.remove("dz-file-preview");var n,i=_createForOfIteratorHelper(e.previewElement.querySelectorAll("[data-dz-thumbnail]"));try{for(i.s();!(n=i.n()).done;){var r=n.value;r.alt=e.name,r.src=t}}catch(e){i.e(e)}finally{i.f()}return setTimeout(function(){return e.previewElement.classList.add("dz-image-preview")},1)}},error:function(e,t){if(e.previewElement){e.previewElement.classList.add("dz-error"),"string"!=typeof t&&t.error&&(t=t.error);var n,i=_createForOfIteratorHelper(e.previewElement.querySelectorAll("[data-dz-errormessage]"));try{for(i.s();!(n=i.n()).done;){n.value.textContent=t}}catch(e){i.e(e)}finally{i.f()}}},errormultiple:function(){},processing:function(e){if(e.previewElement&&(e.previewElement.classList.add("dz-processing"),e._removeLink))return e._removeLink.innerHTML=this.options.dictCancelUpload},processingmultiple:function(){},uploadprogress:function(e,t){if(e.previewElement){var n,i=_createForOfIteratorHelper(e.previewElement.querySelectorAll("[data-dz-uploadprogress]"));try{for(i.s();!(n=i.n()).done;){var r=n.value;"PROGRESS"===r.nodeName?r.value=t:r.style.width="".concat(t,"%")}}catch(e){i.e(e)}finally{i.f()}}},totaluploadprogress:function(){},sending:function(){},sendingmultiple:function(){},success:function(e){if(e.previewElement)return e.previewElement.classList.add("dz-success")},successmultiple:function(){},canceled:function(e){return this.emit("error",e,this.options.dictUploadCanceled)},canceledmultiple:function(){},complete:function(e){if(e._removeLink&&(e._removeLink.innerHTML=this.options.dictRemoveFile),e.previewElement)return e.previewElement.classList.add("dz-complete")},completemultiple:function(){},maxfilesexceeded:function(){},maxfilesreached:function(){},queuecomplete:function(){},addedfiles:function(){}},this.prototype._thumbnailQueue=[],this.prototype._processingThumbnail=!1}},{key:"extend",value:function(e){for(var t=arguments.length,n=new Array(1<t?t-1:0),i=1;i<t;i++)n[i-1]=arguments[i];for(var r=0,o=n;r<o.length;r++){var a=o[r];for(var l in a){var s=a[l];e[l]=s}}return e}}]),_createClass(b,[{key:"getAcceptedFiles",value:function(){return this.files.filter(function(e){return e.accepted}).map(function(e){return e})}},{key:"getRejectedFiles",value:function(){return this.files.filter(function(e){return!e.accepted}).map(function(e){return e})}},{key:"getFilesWithStatus",value:function(t){return this.files.filter(function(e){return e.status===t}).map(function(e){return e})}},{key:"getQueuedFiles",value:function(){return this.getFilesWithStatus(b.QUEUED)}},{key:"getUploadingFiles",value:function(){return this.getFilesWithStatus(b.UPLOADING)}},{key:"getAddedFiles",value:function(){return this.getFilesWithStatus(b.ADDED)}},{key:"getActiveFiles",value:function(){return this.files.filter(function(e){return e.status===b.UPLOADING||e.status===b.QUEUED}).map(function(e){return e})}},{key:"init",value:function(){var o=this;if("form"===this.element.tagName&&this.element.setAttribute("enctype","multipart/form-data"),this.element.classList.contains("dropzone")&&!this.element.querySelector(".dz-message")&&this.element.appendChild(b.createElement('<div class="dz-default dz-message"><button class="dz-button" type="button">'.concat(this.options.dictDefaultMessage,"</button></div>"))),this.clickableElements.length){!function r(){return o.hiddenFileInput&&o.hiddenFileInput.parentNode.removeChild(o.hiddenFileInput),o.hiddenFileInput=document.createElement("input"),o.hiddenFileInput.setAttribute("type","file"),(null===o.options.maxFiles||1<o.options.maxFiles)&&o.hiddenFileInput.setAttribute("multiple","multiple"),o.hiddenFileInput.className="dz-hidden-input",null!==o.options.acceptedFiles&&o.hiddenFileInput.setAttribute("accept",o.options.acceptedFiles),null!==o.options.capture&&o.hiddenFileInput.setAttribute("capture",o.options.capture),o.hiddenFileInput.style.visibility="hidden",o.hiddenFileInput.style.position="absolute",o.hiddenFileInput.style.top="0",o.hiddenFileInput.style.left="0",o.hiddenFileInput.style.height="0",o.hiddenFileInput.style.width="0",b.getElement(o.options.hiddenInputContainer,"hiddenInputContainer").appendChild(o.hiddenFileInput),o.hiddenFileInput.addEventListener("change",function(){var e=o.hiddenFileInput.files;if(e.length){var t,n=_createForOfIteratorHelper(e);try{for(n.s();!(t=n.n()).done;){var i=t.value;o.addFile(i)}}catch(e){n.e(e)}finally{n.f()}}return o.emit("addedfiles",e),r()})}()}this.URL=null!==window.URL?window.URL:window.webkitURL;var e,t=_createForOfIteratorHelper(this.events);try{for(t.s();!(e=t.n()).done;){var n=e.value;this.on(n,this.options[n])}}catch(e){t.e(e)}finally{t.f()}this.on("uploadprogress",function(){return o.updateTotalUploadProgress()}),this.on("removedfile",function(){return o.updateTotalUploadProgress()}),this.on("canceled",function(e){return o.emit("complete",e)}),this.on("complete",function(e){if(0===o.getAddedFiles().length&&0===o.getUploadingFiles().length&&0===o.getQueuedFiles().length)return setTimeout(function(){return o.emit("queuecomplete")},0)});function i(e){return function(e){if(e.dataTransfer.types)for(var t=0;t<e.dataTransfer.types.length;t++)if("Files"===e.dataTransfer.types[t])return!0;return!1}(e)&&(e.stopPropagation(),e.preventDefault?e.preventDefault():e.returnValue=!1)}return this.listeners=[{element:this.element,events:{dragstart:function(e){return o.emit("dragstart",e)},dragenter:function(e){return i(e),o.emit("dragenter",e)},dragover:function(e){var t;try{t=e.dataTransfer.effectAllowed}catch(e){}return e.dataTransfer.dropEffect="move"===t||"linkMove"===t?"move":"copy",i(e),o.emit("dragover",e)},dragleave:function(e){return o.emit("dragleave",e)},drop:function(e){return i(e),o.drop(e)},dragend:function(e){return o.emit("dragend",e)}}}],this.clickableElements.forEach(function(t){return o.listeners.push({element:t,events:{click:function(e){return t===o.element&&e.target!==o.element&&!b.elementInside(e.target,o.element.querySelector(".dz-message"))||o.hiddenFileInput.click(),!0}}})}),this.enable(),this.options.init.call(this)}},{key:"destroy",value:function(){return this.disable(),this.removeAllFiles(!0),null!=this.hiddenFileInput&&this.hiddenFileInput.parentNode&&(this.hiddenFileInput.parentNode.removeChild(this.hiddenFileInput),this.hiddenFileInput=null),delete this.element.dropzone,b.instances.splice(b.instances.indexOf(this),1)}},{key:"updateTotalUploadProgress",value:function(){var e,t=0,n=0;if(this.getActiveFiles().length){var i,r=_createForOfIteratorHelper(this.getActiveFiles());try{for(r.s();!(i=r.n()).done;){var o=i.value;t+=o.upload.bytesSent,n+=o.upload.total}}catch(e){r.e(e)}finally{r.f()}e=100*t/n}else e=100;return this.emit("totaluploadprogress",e,n,t)}},{key:"_getParamName",value:function(e){return"function"==typeof this.options.paramName?this.options.paramName(e):"".concat(this.options.paramName).concat(this.options.uploadMultiple?"[".concat(e,"]"):"")}},{key:"_renameFile",value:function(e){return"function"!=typeof this.options.renameFile?e.name:this.options.renameFile(e)}},{key:"getFallbackForm",value:function(){var e,t;if(e=this.getExistingFallback())return e;var n='<div class="dz-fallback">';this.options.dictFallbackText&&(n+="<p>".concat(this.options.dictFallbackText,"</p>")),n+='<input type="file" name="'.concat(this._getParamName(0),'" ').concat(this.options.uploadMultiple?'multiple="multiple"':void 0,' /><input type="submit" value="Upload!"></div>');var i=b.createElement(n);return"FORM"!==this.element.tagName?(t=b.createElement('<form action="'.concat(this.options.url,'" enctype="multipart/form-data" method="').concat(this.options.method,'"></form>'))).appendChild(i):(this.element.setAttribute("enctype","multipart/form-data"),this.element.setAttribute("method",this.options.method)),null!=t?t:i}},{key:"getExistingFallback",value:function(){for(var e=function(e){var t,n=_createForOfIteratorHelper(e);try{for(n.s();!(t=n.n()).done;){var i=t.value;if(/(^| )fallback($| )/.test(i.className))return i}}catch(e){n.e(e)}finally{n.f()}},t=0,n=["div","form"];t<n.length;t++){var i,r=n[t];if(i=e(this.element.getElementsByTagName(r)))return i}}},{key:"setupEventListeners",value:function(){return this.listeners.map(function(i){return function(){var e=[];for(var t in i.events){var n=i.events[t];e.push(i.element.addEventListener(t,n,!1))}return e}()})}},{key:"removeEventListeners",value:function(){return this.listeners.map(function(i){return function(){var e=[];for(var t in i.events){var n=i.events[t];e.push(i.element.removeEventListener(t,n,!1))}return e}()})}},{key:"disable",value:function(){var t=this;return this.clickableElements.forEach(function(e){return e.classList.remove("dz-clickable")}),this.removeEventListeners(),this.disabled=!0,this.files.map(function(e){return t.cancelUpload(e)})}},{key:"enable",value:function(){return delete this.disabled,this.clickableElements.forEach(function(e){return e.classList.add("dz-clickable")}),this.setupEventListeners()}},{key:"filesize",value:function(e){var t=0,n="b";if(0<e){for(var i=["tb","gb","mb","kb","b"],r=0;r<i.length;r++){var o=i[r];if(Math.pow(this.options.filesizeBase,4-r)/10<=e){t=e/Math.pow(this.options.filesizeBase,4-r),n=o;break}}t=Math.round(10*t)/10}return"<strong>".concat(t,"</strong> ").concat(this.options.dictFileSizeUnits[n])}},{key:"_updateMaxFilesReachedClass",value:function(){return null!=this.options.maxFiles&&this.getAcceptedFiles().length>=this.options.maxFiles?(this.getAcceptedFiles().length===this.options.maxFiles&&this.emit("maxfilesreached",this.files),this.element.classList.add("dz-max-files-reached")):this.element.classList.remove("dz-max-files-reached")}},{key:"drop",value:function(e){if(e.dataTransfer){this.emit("drop",e);for(var t=[],n=0;n<e.dataTransfer.files.length;n++)t[n]=e.dataTransfer.files[n];if(t.length){var i=e.dataTransfer.items;i&&i.length&&null!=i[0].webkitGetAsEntry?this._addFilesFromItems(i):this.handleFiles(t)}this.emit("addedfiles",t)}}},{key:"paste",value:function(e){if(null!=__guard__(null!=e?e.clipboardData:void 0,function(e){return e.items})){this.emit("paste",e);var t=e.clipboardData.items;return t.length?this._addFilesFromItems(t):void 0}}},{key:"handleFiles",value:function(e){var t,n=_createForOfIteratorHelper(e);try{for(n.s();!(t=n.n()).done;){var i=t.value;this.addFile(i)}}catch(e){n.e(e)}finally{n.f()}}},{key:"_addFilesFromItems",value:function(o){var a=this;return function(){var e,t=[],n=_createForOfIteratorHelper(o);try{for(n.s();!(e=n.n()).done;){var i,r=e.value;null!=r.webkitGetAsEntry&&(i=r.webkitGetAsEntry())?i.isFile?t.push(a.addFile(r.getAsFile())):i.isDirectory?t.push(a._addFilesFromDirectory(i,i.name)):t.push(void 0):null!=r.getAsFile&&(null==r.kind||"file"===r.kind)?t.push(a.addFile(r.getAsFile())):t.push(void 0)}}catch(e){n.e(e)}finally{n.f()}return t}()}},{key:"_addFilesFromDirectory",value:function(e,o){function t(t){return __guardMethod__(console,"log",function(e){return e.log(t)})}var a=this,n=e.createReader();return function r(){return n.readEntries(function(e){if(0<e.length){var t,n=_createForOfIteratorHelper(e);try{for(n.s();!(t=n.n()).done;){var i=t.value;i.isFile?i.file(function(e){if(!a.options.ignoreHiddenFiles||"."!==e.name.substring(0,1))return e.fullPath="".concat(o,"/").concat(e.name),a.addFile(e)}):i.isDirectory&&a._addFilesFromDirectory(i,"".concat(o,"/").concat(i.name))}}catch(e){n.e(e)}finally{n.f()}r()}return null},t)}()}},{key:"accept",value:function(e,t){this.options.maxFilesize&&e.size>1024*this.options.maxFilesize*1024?t(this.options.dictFileTooBig.replace("{{filesize}}",Math.round(e.size/1024/10.24)/100).replace("{{maxFilesize}}",this.options.maxFilesize)):b.isValidFile(e,this.options.acceptedFiles)?null!=this.options.maxFiles&&this.getAcceptedFiles().length>=this.options.maxFiles?(t(this.options.dictMaxFilesExceeded.replace("{{maxFiles}}",this.options.maxFiles)),this.emit("maxfilesexceeded",e)):this.options.accept.call(this,e,t):t(this.options.dictInvalidFileType)}},{key:"addFile",value:function(t){var n=this;t.upload={uuid:b.uuidv4(),progress:0,total:t.size,bytesSent:0,filename:this._renameFile(t)},this.files.push(t),t.status=b.ADDED,this.emit("addedfile",t),this._enqueueThumbnail(t),this.accept(t,function(e){e?(t.accepted=!1,n._errorProcessing([t],e)):(t.accepted=!0,n.options.autoQueue&&n.enqueueFile(t)),n._updateMaxFilesReachedClass()})}},{key:"enqueueFiles",value:function(e){var t,n=_createForOfIteratorHelper(e);try{for(n.s();!(t=n.n()).done;){var i=t.value;this.enqueueFile(i)}}catch(e){n.e(e)}finally{n.f()}return null}},{key:"enqueueFile",value:function(e){var t=this;if(e.status!==b.ADDED||!0!==e.accepted)throw new Error("This file can't be queued because it has already been processed or was rejected.");if(e.status=b.QUEUED,this.options.autoProcessQueue)return setTimeout(function(){return t.processQueue()},0)}},{key:"_enqueueThumbnail",value:function(e){var t=this;if(this.options.createImageThumbnails&&e.type.match(/image.*/)&&e.size<=1024*this.options.maxThumbnailFilesize*1024)return this._thumbnailQueue.push(e),setTimeout(function(){return t._processThumbnailQueue()},0)}},{key:"_processThumbnailQueue",value:function(){var t=this;if(!this._processingThumbnail&&0!==this._thumbnailQueue.length){this._processingThumbnail=!0;var n=this._thumbnailQueue.shift();return this.createThumbnail(n,this.options.thumbnailWidth,this.options.thumbnailHeight,this.options.thumbnailMethod,!0,function(e){return t.emit("thumbnail",n,e),t._processingThumbnail=!1,t._processThumbnailQueue()})}}},{key:"removeFile",value:function(e){if(e.status===b.UPLOADING&&this.cancelUpload(e),this.files=without(this.files,e),this.emit("removedfile",e),0===this.files.length)return this.emit("reset")}},{key:"removeAllFiles",value:function(e){null==e&&(e=!1);var t,n=_createForOfIteratorHelper(this.files.slice());try{for(n.s();!(t=n.n()).done;){var i=t.value;i.status===b.UPLOADING&&!e||this.removeFile(i)}}catch(e){n.e(e)}finally{n.f()}return null}},{key:"resizeImage",value:function(r,e,t,n,o){var a=this;return this.createThumbnail(r,e,t,n,!0,function(e,t){if(null==t)return o(r);var n=a.options.resizeMimeType;null==n&&(n=r.type);var i=t.toDataURL(n,a.options.resizeQuality);return"image/jpeg"!==n&&"image/jpg"!==n||(i=ExifRestore.restore(r.dataURL,i)),o(b.dataURItoBlob(i))})}},{key:"createThumbnail",value:function(e,t,n,i,r,o){var a=this,l=new FileReader;l.onload=function(){e.dataURL=l.result,"image/svg+xml"!==e.type?a.createThumbnailFromUrl(e,t,n,i,r,o):null!=o&&o(l.result)},l.readAsDataURL(e)}},{key:"displayExistingFile",value:function(t,e,n,i,r){var o=this,a=!(4<arguments.length&&void 0!==r)||r;if(this.emit("addedfile",t),this.emit("complete",t),a){t.dataURL=e,this.createThumbnailFromUrl(t,this.options.thumbnailWidth,this.options.thumbnailHeight,this.options.resizeMethod,this.options.fixOrientation,function(e){o.emit("thumbnail",t,e),n&&n()},i)}else this.emit("thumbnail",t,e),n&&n()}},{key:"createThumbnailFromUrl",value:function(o,a,l,s,t,u,e){var c=this,d=document.createElement("img");return e&&(d.crossOrigin=e),t="from-image"!=getComputedStyle(document.body).imageOrientation&&t,d.onload=function(){var e=function(e){return e(1)};return"undefined"!=typeof EXIF&&null!==EXIF&&t&&(e=function(e){return EXIF.getData(d,function(){return e(EXIF.getTag(this,"Orientation"))})}),e(function(e){o.width=d.width,o.height=d.height;var t=c.options.resize.call(c,o,a,l,s),n=document.createElement("canvas"),i=n.getContext("2d");switch(n.width=t.trgWidth,n.height=t.trgHeight,4<e&&(n.width=t.trgHeight,n.height=t.trgWidth),e){case 2:i.translate(n.width,0),i.scale(-1,1);break;case 3:i.translate(n.width,n.height),i.rotate(Math.PI);break;case 4:i.translate(0,n.height),i.scale(1,-1);break;case 5:i.rotate(.5*Math.PI),i.scale(1,-1);break;case 6:i.rotate(.5*Math.PI),i.translate(0,-n.width);break;case 7:i.rotate(.5*Math.PI),i.translate(n.height,-n.width),i.scale(-1,1);break;case 8:i.rotate(-.5*Math.PI),i.translate(-n.height,0)}drawImageIOSFix(i,d,null!=t.srcX?t.srcX:0,null!=t.srcY?t.srcY:0,t.srcWidth,t.srcHeight,null!=t.trgX?t.trgX:0,null!=t.trgY?t.trgY:0,t.trgWidth,t.trgHeight);var r=n.toDataURL("image/png");if(null!=u)return u(r,n)})},null!=u&&(d.onerror=u),d.src=o.dataURL}},{key:"processQueue",value:function(){var e=this.options.parallelUploads,t=this.getUploadingFiles().length,n=t;if(!(e<=t)){var i=this.getQueuedFiles();if(0<i.length){if(this.options.uploadMultiple)return this.processFiles(i.slice(0,e-t));for(;n<e;){if(!i.length)return;this.processFile(i.shift()),n++}}}}},{key:"processFile",value:function(e){return this.processFiles([e])}},{key:"processFiles",value:function(e){var t,n=_createForOfIteratorHelper(e);try{for(n.s();!(t=n.n()).done;){var i=t.value;i.processing=!0,i.status=b.UPLOADING,this.emit("processing",i)}}catch(e){n.e(e)}finally{n.f()}return this.options.uploadMultiple&&this.emit("processingmultiple",e),this.uploadFiles(e)}},{key:"_getFilesWithXhr",value:function(t){return this.files.filter(function(e){return e.xhr===t}).map(function(e){return e})}},{key:"cancelUpload",value:function(e){if(e.status===b.UPLOADING){var t,n=this._getFilesWithXhr(e.xhr),i=_createForOfIteratorHelper(n);try{for(i.s();!(t=i.n()).done;){t.value.status=b.CANCELED}}catch(e){i.e(e)}finally{i.f()}void 0!==e.xhr&&e.xhr.abort();var r,o=_createForOfIteratorHelper(n);try{for(o.s();!(r=o.n()).done;){var a=r.value;this.emit("canceled",a)}}catch(e){o.e(e)}finally{o.f()}this.options.uploadMultiple&&this.emit("canceledmultiple",n)}else e.status!==b.ADDED&&e.status!==b.QUEUED||(e.status=b.CANCELED,this.emit("canceled",e),this.options.uploadMultiple&&this.emit("canceledmultiple",[e]));if(this.options.autoProcessQueue)return this.processQueue()}},{key:"resolveOption",value:function(e){if("function"!=typeof e)return e;for(var t=arguments.length,n=new Array(1<t?t-1:0),i=1;i<t;i++)n[i-1]=arguments[i];return e.apply(this,n)}},{key:"uploadFile",value:function(e){return this.uploadFiles([e])}},{key:"uploadFiles",value:function(s){var u=this;this._transformFiles(s,function(e){if(u.options.chunking){var t=e[0];s[0].upload.chunked=u.options.chunking&&(u.options.forceChunking||t.size>u.options.chunkSize),s[0].upload.totalChunkCount=Math.ceil(t.size/u.options.chunkSize)}if(s[0].upload.chunked){var r=s[0],o=e[0];r.upload.chunks=[];var i=function(){for(var e=0;void 0!==r.upload.chunks[e];)e++;if(!(e>=r.upload.totalChunkCount)){0;var t=e*u.options.chunkSize,n=Math.min(t+u.options.chunkSize,o.size),i={name:u._getParamName(0),data:o.webkitSlice?o.webkitSlice(t,n):o.slice(t,n),filename:r.upload.filename,chunkIndex:e};r.upload.chunks[e]={file:r,index:e,dataBlock:i,status:b.UPLOADING,progress:0,retries:0},u._uploadData(s,[i])}};if(r.upload.finishedChunkUpload=function(e){var t=!0;e.status=b.SUCCESS,e.dataBlock=null,e.xhr=null;for(var n=0;n<r.upload.totalChunkCount;n++){if(void 0===r.upload.chunks[n])return i();r.upload.chunks[n].status!==b.SUCCESS&&(t=!1)}t&&u.options.chunksUploaded(r,function(){u._finished(s,"",null)})},u.options.parallelChunkUploads)for(var n=0;n<r.upload.totalChunkCount;n++)i();else i()}else{for(var a=[],l=0;l<s.length;l++)a[l]={name:u._getParamName(l),data:e[l],filename:s[l].upload.filename};u._uploadData(s,a)}})}},{key:"_getChunk",value:function(e,t){for(var n=0;n<e.upload.totalChunkCount;n++)if(void 0!==e.upload.chunks[n]&&e.upload.chunks[n].xhr===t)return e.upload.chunks[n]}},{key:"_uploadData",value:function(t,e){var n,i=this,r=new XMLHttpRequest,o=_createForOfIteratorHelper(t);try{for(o.s();!(n=o.n()).done;){n.value.xhr=r}}catch(e){o.e(e)}finally{o.f()}t[0].upload.chunked&&(t[0].upload.chunks[e[0].chunkIndex].xhr=r);var a=this.resolveOption(this.options.method,t),l=this.resolveOption(this.options.url,t);r.open(a,l,!0),r.timeout=this.resolveOption(this.options.timeout,t),r.withCredentials=!!this.options.withCredentials,r.onload=function(e){i._finishedUploading(t,r,e)},r.ontimeout=function(){i._handleUploadError(t,r,"Request timedout after ".concat(i.options.timeout/1e3," seconds"))},r.onerror=function(){i._handleUploadError(t,r)},(null!=r.upload?r.upload:r).onprogress=function(e){return i._updateFilesUploadProgress(t,r,e)};var s={Accept:"application/json","Cache-Control":"no-cache","X-Requested-With":"XMLHttpRequest"};for(var u in this.options.headers&&b.extend(s,this.options.headers),s){var c=s[u];c&&r.setRequestHeader(u,c)}var d=new FormData;if(this.options.params){var p=this.options.params;for(var h in"function"==typeof p&&(p=p.call(this,t,r,t[0].upload.chunked?this._getChunk(t[0],r):null)),p){var f=p[h];if(Array.isArray(f))for(var m=0;m<f.length;m++)d.append(h,f[m]);else d.append(h,f)}}var v,g=_createForOfIteratorHelper(t);try{for(g.s();!(v=g.n()).done;){var y=v.value;this.emit("sending",y,r,d)}}catch(e){g.e(e)}finally{g.f()}this.options.uploadMultiple&&this.emit("sendingmultiple",t,r,d),this._addFormElementData(d);for(var F=0;F<e.length;F++){var k=e[F];d.append(k.name,k.data,k.filename)}this.submitRequest(r,d,t)}},{key:"_transformFiles",value:function(n,i){for(var e=this,r=[],o=0,t=function(t){e.options.transformFile.call(e,n[t],function(e){r[t]=e,++o===n.length&&i(r)})},a=0;a<n.length;a++)t(a)}},{key:"_addFormElementData",value:function(e){if("FORM"===this.element.tagName){var t,n=_createForOfIteratorHelper(this.element.querySelectorAll("input, textarea, select, button"));try{for(n.s();!(t=n.n()).done;){var i=t.value,r=i.getAttribute("name"),o=i.getAttribute("type");if(o=o&&o.toLowerCase(),null!=r)if("SELECT"===i.tagName&&i.hasAttribute("multiple")){var a,l=_createForOfIteratorHelper(i.options);try{for(l.s();!(a=l.n()).done;){var s=a.value;s.selected&&e.append(r,s.value)}}catch(e){l.e(e)}finally{l.f()}}else(!o||"checkbox"!==o&&"radio"!==o||i.checked)&&e.append(r,i.value)}}catch(e){n.e(e)}finally{n.f()}}}},{key:"_updateFilesUploadProgress",value:function(e,t,n){var i;if(void 0!==n){if(i=100*n.loaded/n.total,e[0].upload.chunked){var r=e[0],o=this._getChunk(r,t);o.progress=i,o.total=n.total,o.bytesSent=n.loaded;r.upload.progress=0,r.upload.total=0;for(var a=r.upload.bytesSent=0;a<r.upload.totalChunkCount;a++)void 0!==r.upload.chunks[a]&&void 0!==r.upload.chunks[a].progress&&(r.upload.progress+=r.upload.chunks[a].progress,r.upload.total+=r.upload.chunks[a].total,r.upload.bytesSent+=r.upload.chunks[a].bytesSent);r.upload.progress=r.upload.progress/r.upload.totalChunkCount}else{var l,s=_createForOfIteratorHelper(e);try{for(s.s();!(l=s.n()).done;){var u=l.value;u.upload.progress=i,u.upload.total=n.total,u.upload.bytesSent=n.loaded}}catch(e){s.e(e)}finally{s.f()}}var c,d=_createForOfIteratorHelper(e);try{for(d.s();!(c=d.n()).done;){var p=c.value;this.emit("uploadprogress",p,p.upload.progress,p.upload.bytesSent)}}catch(e){d.e(e)}finally{d.f()}}else{var h=!0;i=100;var f,m=_createForOfIteratorHelper(e);try{for(m.s();!(f=m.n()).done;){var v=f.value;100===v.upload.progress&&v.upload.bytesSent===v.upload.total||(h=!1),v.upload.progress=i,v.upload.bytesSent=v.upload.total}}catch(e){m.e(e)}finally{m.f()}if(h)return;var g,y=_createForOfIteratorHelper(e);try{for(y.s();!(g=y.n()).done;){var F=g.value;this.emit("uploadprogress",F,i,F.upload.bytesSent)}}catch(e){y.e(e)}finally{y.f()}}}},{key:"_finishedUploading",value:function(e,t,n){var i;if(e[0].status!==b.CANCELED&&4===t.readyState){if("arraybuffer"!==t.responseType&&"blob"!==t.responseType&&(i=t.responseText,t.getResponseHeader("content-type")&&~t.getResponseHeader("content-type").indexOf("application/json")))try{i=JSON.parse(i)}catch(e){n=e,i="Invalid JSON response from server."}this._updateFilesUploadProgress(e),200<=t.status&&t.status<300?e[0].upload.chunked?e[0].upload.finishedChunkUpload(this._getChunk(e[0],t)):this._finished(e,i,n):this._handleUploadError(e,t,i)}}},{key:"_handleUploadError",value:function(e,t,n){if(e[0].status!==b.CANCELED){if(e[0].upload.chunked&&this.options.retryChunks){var i=this._getChunk(e[0],t);if(i.retries++<this.options.retryChunksLimit)return void this._uploadData(e,[i.dataBlock]);console.warn("Retried this chunk too often. Giving up.")}this._errorProcessing(e,n||this.options.dictResponseError.replace("{{statusCode}}",t.status),t)}}},{key:"submitRequest",value:function(e,t){e.send(t)}},{key:"_finished",value:function(e,t,n){var i,r=_createForOfIteratorHelper(e);try{for(r.s();!(i=r.n()).done;){var o=i.value;o.status=b.SUCCESS,this.emit("success",o,t,n),this.emit("complete",o)}}catch(e){r.e(e)}finally{r.f()}if(this.options.uploadMultiple&&(this.emit("successmultiple",e,t,n),this.emit("completemultiple",e)),this.options.autoProcessQueue)return this.processQueue()}},{key:"_errorProcessing",value:function(e,t,n){var i,r=_createForOfIteratorHelper(e);try{for(r.s();!(i=r.n()).done;){var o=i.value;o.status=b.ERROR,this.emit("error",o,t,n),this.emit("complete",o)}}catch(e){r.e(e)}finally{r.f()}if(this.options.uploadMultiple&&(this.emit("errormultiple",e,t,n),this.emit("completemultiple",e)),this.options.autoProcessQueue)return this.processQueue()}}],[{key:"uuidv4",value:function(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(e){var t=16*Math.random()|0;return("x"===e?t:3&t|8).toString(16)})}}]),b}();Dropzone.initClass(),Dropzone.version="5.7.2",Dropzone.options={},Dropzone.optionsForElement=function(e){return e.getAttribute("id")?Dropzone.options[camelize(e.getAttribute("id"))]:void 0},Dropzone.instances=[],Dropzone.forElement=function(e){if("string"==typeof e&&(e=document.querySelector(e)),null==(null!=e?e.dropzone:void 0))throw new Error("No Dropzone found for given element. This is probably because you're trying to access it before Dropzone had the time to initialize. Use the `init` option to setup any additional observers on your Dropzone.");return e.dropzone},Dropzone.autoDiscover=!0,Dropzone.discover=function(){var o;if(document.querySelectorAll)o=document.querySelectorAll(".dropzone");else{o=[];var e=function(r){return function(){var e,t=[],n=_createForOfIteratorHelper(r);try{for(n.s();!(e=n.n()).done;){var i=e.value;/(^| )dropzone($| )/.test(i.className)?t.push(o.push(i)):t.push(void 0)}}catch(e){n.e(e)}finally{n.f()}return t}()};e(document.getElementsByTagName("div")),e(document.getElementsByTagName("form"))}return function(){var e,t=[],n=_createForOfIteratorHelper(o);try{for(n.s();!(e=n.n()).done;){var i=e.value;!1!==Dropzone.optionsForElement(i)?t.push(new Dropzone(i)):t.push(void 0)}}catch(e){n.e(e)}finally{n.f()}return t}()},Dropzone.blacklistedBrowsers=[/opera.*(Macintosh|Windows Phone).*version\/12/i],Dropzone.isBrowserSupported=function(){var e=!0;if(window.File&&window.FileReader&&window.FileList&&window.Blob&&window.FormData&&document.querySelector)if("classList"in document.createElement("a")){var t,n=_createForOfIteratorHelper(Dropzone.blacklistedBrowsers);try{for(n.s();!(t=n.n()).done;){t.value.test(navigator.userAgent)&&(e=!1)}}catch(e){n.e(e)}finally{n.f()}}else e=!1;else e=!1;return e},Dropzone.dataURItoBlob=function(e){for(var t=atob(e.split(",")[1]),n=e.split(",")[0].split(":")[1].split(";")[0],i=new ArrayBuffer(t.length),r=new Uint8Array(i),o=0,a=t.length,l=0<=a;l?o<=a:a<=o;l?o++:o--)r[o]=t.charCodeAt(o);return new Blob([i],{type:n})};var without=function(e,t){return e.filter(function(e){return e!==t}).map(function(e){return e})},camelize=function(e){return e.replace(/[\-_](\w)/g,function(e){return e.charAt(1).toUpperCase()})};Dropzone.createElement=function(e){var t=document.createElement("div");return t.innerHTML=e,t.childNodes[0]},Dropzone.elementInside=function(e,t){if(e===t)return!0;for(;e=e.parentNode;)if(e===t)return!0;return!1},Dropzone.getElement=function(e,t){var n;if("string"==typeof e?n=document.querySelector(e):null!=e.nodeType&&(n=e),null==n)throw new Error("Invalid `".concat(t,"` option provided. Please provide a CSS selector or a plain HTML element."));return n},Dropzone.getElements=function(e,t){var n,i;if(e instanceof Array){i=[];try{var r,o=_createForOfIteratorHelper(e);try{for(o.s();!(r=o.n()).done;)n=r.value,i.push(this.getElement(n,t))}catch(e){o.e(e)}finally{o.f()}}catch(e){i=null}}else if("string"==typeof e){i=[];var a,l=_createForOfIteratorHelper(document.querySelectorAll(e));try{for(l.s();!(a=l.n()).done;)n=a.value,i.push(n)}catch(e){l.e(e)}finally{l.f()}}else null!=e.nodeType&&(i=[e]);if(null==i||!i.length)throw new Error("Invalid `".concat(t,"` option provided. Please provide a CSS selector, a plain HTML element or a list of those."));return i},Dropzone.confirm=function(e,t,n){return window.confirm(e)?t():null!=n?n():void 0},Dropzone.isValidFile=function(e,t){if(!t)return!0;t=t.split(",");var n,i=e.type,r=i.replace(/\/.*$/,""),o=_createForOfIteratorHelper(t);try{for(o.s();!(n=o.n()).done;){var a=n.value;if("."===(a=a.trim()).charAt(0)){if(-1!==e.name.toLowerCase().indexOf(a.toLowerCase(),e.name.length-a.length))return!0}else if(/\/\*$/.test(a)){if(r===a.replace(/\/.*$/,""))return!0}else if(i===a)return!0}}catch(e){o.e(e)}finally{o.f()}return!1},"undefined"!=typeof jQuery&&null!==jQuery&&(jQuery.fn.dropzone=function(e){return this.each(function(){return new Dropzone(this,e)})}),"undefined"!=typeof module&&null!==module?module.exports=Dropzone:window.Dropzone=Dropzone,Dropzone.ADDED="added",Dropzone.QUEUED="queued",Dropzone.ACCEPTED=Dropzone.QUEUED,Dropzone.UPLOADING="uploading",Dropzone.PROCESSING=Dropzone.UPLOADING,Dropzone.CANCELED="canceled",Dropzone.ERROR="error",Dropzone.SUCCESS="success";var detectVerticalSquash=function(e){e.naturalWidth;var t=e.naturalHeight,n=document.createElement("canvas");n.width=1,n.height=t;var i=n.getContext("2d");i.drawImage(e,0,0);for(var r=i.getImageData(1,0,1,t).data,o=0,a=t,l=t;o<l;){0===r[4*(l-1)+3]?a=l:o=l,l=a+o>>1}var s=l/t;return 0==s?1:s},drawImageIOSFix=function(e,t,n,i,r,o,a,l,s,u){var c=detectVerticalSquash(t);return e.drawImage(t,n,i,r,o,a,l,s,u/c)},ExifRestore=function(){function e(){_classCallCheck(this,e)}return _createClass(e,null,[{key:"initClass",value:function(){this.KEY_STR="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="}},{key:"encode64",value:function(e){for(var t="",n=void 0,i=void 0,r="",o=void 0,a=void 0,l=void 0,s="",u=0;o=(n=e[u++])>>2,a=(3&n)<<4|(i=e[u++])>>4,l=(15&i)<<2|(r=e[u++])>>6,s=63&r,isNaN(i)?l=s=64:isNaN(r)&&(s=64),t=t+this.KEY_STR.charAt(o)+this.KEY_STR.charAt(a)+this.KEY_STR.charAt(l)+this.KEY_STR.charAt(s),n=i=r="",o=a=l=s="",u<e.length;);return t}},{key:"restore",value:function(e,t){if(!e.match("data:image/jpeg;base64,"))return t;var n=this.decode64(e.replace("data:image/jpeg;base64,","")),i=this.slice2Segments(n),r=this.exifManipulation(t,i);return"data:image/jpeg;base64,".concat(this.encode64(r))}},{key:"exifManipulation",value:function(e,t){var n=this.getExifArray(t),i=this.insertExif(e,n);return new Uint8Array(i)}},{key:"getExifArray",value:function(e){for(var t=void 0,n=0;n<e.length;){if(255===(t=e[n])[0]&225===t[1])return t;n++}return[]}},{key:"insertExif",value:function(e,t){var n=e.replace("data:image/jpeg;base64,",""),i=this.decode64(n),r=i.indexOf(255,3),o=i.slice(0,r),a=i.slice(r),l=o;return l=(l=l.concat(t)).concat(a)}},{key:"slice2Segments",value:function(e){for(var t=0,n=[];;){if(255===e[t]&218===e[t+1])break;if(255===e[t]&216===e[t+1])t+=2;else{var i=t+(256*e[t+2]+e[t+3])+2,r=e.slice(t,i);n.push(r),t=i}if(t>e.length)break}return n}},{key:"decode64",value:function(e){var t=void 0,n=void 0,i="",r=void 0,o=void 0,a="",l=0,s=[];for(/[^A-Za-z0-9\+\/\=]/g.exec(e)&&console.warn("There were invalid base64 characters in the input text.\nValid base64 characters are A-Z, a-z, 0-9, '+', '/',and '='\nExpect errors in decoding."),e=e.replace(/[^A-Za-z0-9\+\/\=]/g,"");t=this.KEY_STR.indexOf(e.charAt(l++))<<2|(r=this.KEY_STR.indexOf(e.charAt(l++)))>>4,n=(15&r)<<4|(o=this.KEY_STR.indexOf(e.charAt(l++)))>>2,i=(3&o)<<6|(a=this.KEY_STR.indexOf(e.charAt(l++))),s.push(t),64!==o&&s.push(n),64!==a&&s.push(i),t=n=i="",r=o=a="",l<e.length;);return s}}]),e}();ExifRestore.initClass();var contentLoaded=function(t,n){function i(e){if("readystatechange"!==e.type||"complete"===o.readyState)return("load"===e.type?t:o)[s](u+e.type,i,!1),!r&&(r=!0)?n.call(t,e.type||e):void 0}var r=!1,e=!0,o=t.document,a=o.documentElement,l=o.addEventListener?"addEventListener":"attachEvent",s=o.addEventListener?"removeEventListener":"detachEvent",u=o.addEventListener?"":"on";if("complete"!==o.readyState){if(o.createEventObject&&a.doScroll){try{e=!t.frameElement}catch(e){}e&&!function t(){try{a.doScroll("left")}catch(e){return void setTimeout(t,50)}return i("poll")}()}return o[l](u+"DOMContentLoaded",i,!1),o[l](u+"readystatechange",i,!1),t[l](u+"load",i,!1)}};function __guard__(e,t){return null!=e?t(e):void 0}function __guardMethod__(e,t,n){return null!=e&&"function"==typeof e[t]?n(e,t):void 0}Dropzone._autoDiscoverFunction=function(){if(Dropzone.autoDiscover)return Dropzone.discover()},contentLoaded(window,Dropzone._autoDiscoverFunction);
\ No newline at end of file
diff --git a/admin/js/vendors/tinymce/changelog.txt b/admin/js/vendors/tinymce/changelog.txt
new file mode 100644 (file)
index 0000000..aa08a58
--- /dev/null
@@ -0,0 +1,1479 @@
+Version 5.1.5 (2019-12-19)
+    Fixed the UI not working with hybrid devices that accept both touch and mouse events #TNY-4521
+    Fixed the `charmap` dialog initially focusing the first tab of the dialog instead of the search input field #TINY-4342
+    Fixed an exception being raised when inserting content if the caret was directly before or after a `contenteditable="false"` element #TINY-4528
+    Fixed a bug with pasting image URLs when paste as text is enabled #TINY-4523
+Version 5.1.4 (2019-12-11)
+    Fixed dialog contents disappearing when clicking a checkbox for right-to-left languages #TINY-4518
+    Fixed the `legacyoutput` plugin registering legacy formats after editior initialization, causing legacy content to be stripped on the initial load #TINY-4447
+    Fixed search and replace not cycling through results when searching using special characters #TINY-4506
+    Fixed the `visualchars` plugin converting HTML-like text to DOM elements in certain cases #TINY-4507
+    Fixed an issue with the `paste` plugin not sanitizing content in some cases #TINY-4510
+    Fixed HTML comments incorrectly being parsed in certain cases #TINY-4511
+Version 5.1.3 (2019-12-04)
+    Fixed sticky toolbar not undocking when fullscreen mode is activated #TINY-4390
+    Fixed the "Current Window" target not applying when updating links using the link dialog #TINY-4063
+    Fixed disabled menu items not highlighting when focused #TINY-4339
+    Fixed touch events passing through dialog collection items to the content underneath on Android devices #TINY-4431
+    Fixed keyboard navigation of the Help dialog's Keyboard Navigation tab #TINY-4391
+    Fixed search and replace dialog disappearing when finding offscreen matches on iOS devices #TINY-4350
+    Fixed performance issues where sticky toolbar was jumping while scrolling on slower browsers #TINY-4475
+Version 5.1.2 (2019-11-19)
+    Fixed desktop touch devices using `mobile` configuration overrides #TINY-4345
+    Fixed unable to disable the new scrolling toolbar feature #TINY-4345
+    Fixed touch events passing through any pop-up items to the content underneath on Android devices #TINY-4367
+    Fixed the table selector handles throwing JavaScript exceptions for non-table selections #TINY-4338
+    Fixed `cut` operations not removing selected content on Android devices when the `paste` plugin is enabled #TINY-4362
+    Fixed inline toolbar not constrained to the window width by default #TINY-4314
+    Fixed context toolbar split button chevrons pointing right when they should be pointing down #TINY-4257
+    Fixed unable to access the dialog footer in tabbed dialogs on small screens #TINY-4360
+    Fixed mobile table selectors were hard to select with touch by increasing the size #TINY-4366
+    Fixed mobile table selectors moving when moving outside the editor #TINY-4366
+    Fixed inline toolbars collapsing when using sliding toolbars #TINY-4389
+    Fixed block textpatterns not treating NBSPs as spaces #TINY-4378
+    Fixed backspace not merging blocks when the last element in the preceding block was a `contenteditable="false"` element #TINY-4235
+    Fixed toolbar buttons that only contain text labels overlapping on mobile devices #TINY-4395
+    Fixed quickbars quickimage picker not working on mobile #TINY-4377
+    Fixed fullscreen not resizing in an iOS WKWebView component #TINY-4413
+Version 5.1.1 (2019-10-28)
+    Fixed font formats containing spaces being wrapped in `&quot;` entities instead of single quotes #TINY-4275
+    Fixed alert and confirm dialogs losing focus when clicked #TINY-4248
+    Fixed clicking outside a modal dialog focusing on the document body #TINY-4249
+    Fixed the context toolbar not hiding when scrolled out of view #TINY-4265
+Version 5.1.0 (2019-10-17)
+    Added touch selector handles for table selections on touch devices #TINY-4097
+    Added border width field to Table Cell dialog #TINY-4028
+    Added touch event listener to media plugin to make embeds playable #TINY-4093
+    Added oxide styling options to notifications and tweaked the default variables #TINY-4153
+    Added additional padding to split button chevrons on touch devices, to make them easier to interact with #TINY-4223
+    Added new platform detection functions to `Env` and deprecated older detection properties #TINY-4184
+    Added `inputMode` config field to specify inputmode attribute of `input` dialog components #TINY-4062
+    Added new `inputMode` property to relevant plugins/dialogs #TINY-4102
+    Added new `toolbar_sticky` setting to allow the iframe menubar/toolbar to stick to the top of the window when scrolling #TINY-3982
+    Changed default setting for `toolbar_drawer` to `floating` #TINY-3634
+    Changed mobile phones to use the `silver` theme by default #TINY-3634
+    Changed some editor settings to default to `false` on touch devices:
+        - `menubar`(phones only) #TINY-4077
+        - `table_grid` #TINY-4075
+        - `resize` #TINY-4157
+        - `object_resizing` #TINY-4157
+    Changed toolbars and context toolbars to sidescroll on mobile #TINY-3894 #TINY-4107
+    Changed context menus to render as horizontal menus on touch devices #TINY-4107
+    Changed the editor to use the `VisualViewport` API of the browser where possible #TINY-4078
+    Changed visualblocks toolbar button icon and renamed `paragraph` icon to `visualchars` #TINY-4074
+    Changed Oxide default for `@toolbar-button-chevron-color` to follow toolbar button icon color #TINY-4153
+    Changed the `urlinput` dialog component to use the `url` type attribute #TINY-4102
+    Fixed Safari desktop visual viewport fires resize on fullscreen breaking the restore function #TINY-3976
+    Fixed scroll issues on mobile devices #TINY-3976
+    Fixed context toolbar unable to refresh position on iOS12 #TINY-4107
+    Fixed ctrl+left click not opening links on readonly mode and the preview dialog #TINY-4138
+    Fixed Slider UI component not firing `onChange` event on touch devices #TINY-4092
+    Fixed notifications overlapping instead of stacking #TINY-3478
+    Fixed inline dialogs positioning incorrectly when the page is scrolled #TINY-4018
+    Fixed inline dialogs and menus not repositioning when resizing #TINY-3227
+    Fixed inline toolbar incorrectly stretching to the full width when a width value was provided #TINY-4066
+    Fixed menu chevrons color to follow the menu text color #TINY-4153
+    Fixed table menu selection grid from staying black when using dark skins, now follows border color #TINY-4153
+    Fixed Oxide using the wrong text color variable for menubar button focused state #TINY-4146
+    Fixed the autoresize plugin not keeping the selection in view when resizing #TINY-4094
+    Fixed textpattern plugin throwing exceptions when using `forced_root_block: false` #TINY-4172
+    Fixed missing CSS fill styles for toolbar button icon active state #TINY-4147
+    Fixed an issue where the editor selection could end up inside a short ended element (such as `br`) #TINY-3999
+    Fixed browser selection being lost in inline mode when opening split dropdowns #TINY-4197
+    Fixed backspace throwing an exception when using `forced_root_block: false` #TINY-4099
+    Fixed floating toolbar drawer expanding outside the bounds of the editor #TINY-3941
+    Fixed the autocompleter not activating immediately after a `br` or `contenteditable=false` element #TINY-4194
+    Fixed an issue where the autocompleter would incorrectly close on IE 11 in certain edge cases #TINY-4205
+Version 5.0.16 (2019-09-24)
+    Added new `referrer_policy` setting to add the `referrerpolicy` attribute when loading scripts or stylesheets #TINY-3978
+    Added a slight background color to dialog tab links when focused to aid keyboard navigation #TINY-3877
+    Fixed media poster value not updating on change #TINY-4013
+    Fixed openlink was not registered as a toolbar button #TINY-4024
+    Fixed failing to initialize if a script tag was used inside a SVG #TINY-4087
+    Fixed double top border showing on toolbar without menubar when toolbar_drawer is enabled #TINY-4118
+    Fixed unable to drag inline dialogs to the bottom of the screen when scrolled #TINY-4154
+    Fixed notifications appearing on top of the toolbar when scrolled in inline mode #TINY-4159
+    Fixed notifications displaying incorrectly on IE 11 #TINY-4169
+Version 5.0.15 (2019-09-02)
+    Added a dark `content_css` skin to go with the dark UI skin #TINY-3743
+    Changed the enabled state on toolbar buttons so they don't get the hover effect #TINY-3974
+    Fixed missing CSS active state on toolbar buttons #TINY-3966
+    Fixed `onChange` callback not firing for the colorinput dialog component #TINY-3968
+    Fixed context toolbars not showing in fullscreen mode #TINY-4023
+Version 5.0.14 (2019-08-19)
+    Added an API to reload the autocompleter menu with additional fetch metadata #MENTIONS-17
+    Fixed missing toolbar button border styling options #TINY-3965
+    Fixed image upload progress notification closing before the upload is complete #TINY-3963
+    Fixed inline dialogs not closing on escape when no dialog component is in focus #TINY-3936
+    Fixed plugins not being filtered when defaulting to mobile on phones #TINY-3537
+    Fixed toolbar more drawer showing the content behind it when transitioning between opened and closed states #TINY-3878
+    Fixed focus not returning to the dialog after pressing the "Replace all" button in the search and replace dialog #TINY-3961
+    Removed Oxide variable `@menubar-select-disabled-border-color` and replaced it with `@menubar-select-disabled-border` #TINY-3965
+Version 5.0.13 (2019-08-06)
+    Changed modal dialogs to prevent dragging by default and added new `draggable_modal` setting to restore dragging #TINY-3873
+    Changed the nonbreaking plugin to insert nbsp characters wrapped in spans to aid in filtering. This can be disabled using the `nonbreaking_wrap` setting #TINY-3647
+    Changed backspace behaviour in lists to outdent nested list items when the cursor is at the start of the list item #TINY-3651
+    Fixed sidebar growing beyond editor bounds in IE 11 #TINY-3937
+    Fixed issue with being unable to keyboard navigate disabled toolbar buttons #TINY-3350
+    Fixed issues with backspace and delete in nested contenteditable true and false elements #TINY-3868
+    Fixed issue with losing keyboard navigation in dialogs due to disabled buttons #TINY-3914
+    Fixed `MouseEvent.mozPressure is deprecated` warning in Firefox #TINY-3919
+    Fixed `default_link_target` not being respected when `target_list` is disabled #TINY-3757
+    Fixed mobile plugin filter to only apply to the mobile theme, rather than all mobile platforms #TINY-3405
+    Fixed focus switching to another editor during mode changes #TINY-3852
+    Fixed an exception being thrown when clicking on an uninitialized inline editor #TINY-3925
+    Fixed unable to keyboard navigate to dialog menu buttons #TINY-3933
+    Fixed dialogs being able to be dragged outside the window viewport #TINY-3787
+    Fixed inline dialogs appearing above modal dialogs #TINY-3932
+Version 5.0.12 (2019-07-18)
+    Added ability to utilize UI dialog panels inside other panels #TINY-3305
+    Added help dialog tab explaining keyboard navigation of the editor #TINY-3603
+    Changed the "Find and Replace" design to an inline dialog #TINY-3054
+    Fixed issue where autolink spacebar event was not being fired on Edge #TINY-3891
+    Fixed table selection missing the background color #TINY-3892
+    Fixed removing shortcuts not working for function keys #TINY-3871
+    Fixed non-descriptive UI component type names #TINY-3349
+    Fixed UI registry components rendering as the wrong type when manually specifying a different type #TINY-3385
+    Fixed an issue where dialog checkbox, input, selectbox, textarea and urlinput components couldn't be disabled #TINY-3708
+    Fixed the context toolbar not using viable screen space in inline/distraction free mode #TINY-3717
+    Fixed the context toolbar overlapping the toolbar in various conditions #TINY-3205
+    Fixed IE11 edge case where items were being inserted into the wrong location #TINY-3884
+Version 5.0.11 (2019-07-04)
+    Fixed packaging errors caused by a rollup treeshaking bug (https://github.com/rollup/rollup/issues/2970) #TINY-3866
+    Fixed the customeditor component not able to get data from the dialog api #TINY-3866
+    Fixed collection component tooltips not being translated #TINY-3855
+Version 5.0.10 (2019-07-02)
+    Added support for all HTML color formats in `color_map` setting #TINY-3837
+    Changed backspace key handling to outdent content in appropriate circumstances #TINY-3685
+    Changed default palette for forecolor and backcolor to include some lighter colors suitable for highlights #TINY-2865
+    Changed the search and replace plugin to cycle through results #TINY-3800
+    Fixed inconsistent types causing some properties to be unable to be used in dialog components #TINY-3778
+    Fixed an issue in the Oxide skin where dialog content like outlines and shadows were clipped because of overflow hidden #TINY-3566
+    Fixed the search and replace plugin not resetting state when changing the search query #TINY-3800
+    Fixed backspace in lists not creating an undo level #TINY-3814
+    Fixed the editor to cancel loading in quirks mode where the UI is not supported #TINY-3391
+    Fixed applying fonts not working when the name contained spaces and numbers #TINY-3801
+    Fixed so that initial content is retained when initializing on list items #TINY-3796
+    Fixed inefficient font name and font size current value lookup during rendering #TINY-3813
+    Fixed mobile font copied into the wrong folder for the oxide-dark skin #TINY-3816
+    Fixed an issue where resizing the width of tables would produce inaccurate results #TINY-3827
+    Fixed a memory leak in the Silver theme #TINY-3797
+    Fixed alert and confirm dialogs using incorrect markup causing inconsistent padding #TINY-3835
+    Fixed an issue in the Table plugin with `table_responsive_width` not enforcing units when resizing #TINY-3790
+    Fixed leading, trailing and sequential spaces being lost when pasting plain text #TINY-3726
+    Fixed exception being thrown when creating relative URIs #TINY-3851
+    Fixed focus is no longer set to the editor content during mode changes unless the editor already had focus #TINY-3852
+Version 5.0.9 (2019-06-26)
+    Fixed print plugin not working in Firefox #TINY-3834
+Version 5.0.8 (2019-06-18)
+    Added back support for multiple toolbars #TINY-2195
+    Added support for .m4a files to the media plugin #TINY-3750
+    Added new base_url and suffix editor init options #TINY-3681
+    Fixed incorrect padding for select boxes with visible values #TINY-3780
+    Fixed selection incorrectly changing when programmatically setting selection on contenteditable false elements #TINY-3766
+    Fixed sidebar background being transparent #TINY-3727
+    Fixed the build to remove duplicate iife wrappers #TINY-3689
+    Fixed bogus autocompleter span appearing in content when the autocompleter menu is shown #TINY-3752
+    Fixed toolbar font size select not working with legacyoutput plugin #TINY-2921
+    Fixed the legacyoutput plugin incorrectly aligning images #TINY-3660
+    Fixed remove color not working when using the legacyoutput plugin #TINY-3756
+    Fixed the font size menu applying incorrect sizes when using the legacyoutput plugin #TINY-3773
+    Fixed scrollIntoView not working when the parent window was out of view #TINY-3663
+    Fixed the print plugin printing from the wrong window in IE11 #TINY-3762
+    Fixed content CSS loaded over CORS not loading in the preview plugin with content_css_cors enabled #TINY-3769
+    Fixed the link plugin missing the default "None" option for link list #TINY-3738
+    Fixed small dot visible with menubar and toolbar disabled in inline mode #TINY-3623
+    Fixed space key properly inserts a nbsp before/after block elements #TINY-3745
+    Fixed native context menu not showing with images in IE11 #TINY-3392
+    Fixed inconsistent browser context menu image selection #TINY-3789
+Version 5.0.7 (2019-06-05)
+    Added new toolbar button and menu item for inserting tables via dialog #TINY-3636
+    Added new API for adding/removing/changing tabs in the Help dialog #TINY-3535
+    Added highlighting of matched text in autocompleter items #TINY-3687
+    Added the ability for autocompleters to work with matches that include spaces #TINY-3704
+    Added new `imagetools_fetch_image` callback to allow custom implementations for cors loading of images #TINY-3658
+    Added `'http'` and `https` options to `link_assume_external_targets` to prepend `http://` or `https://` prefixes when URL does not contain a protocol prefix. Patch contributed by francoisfreitag. #GH-4335
+    Changed annotations navigation to work the same as inline boundaries #TINY-3396
+    Changed tabpanel API by adding a `name` field and changing relevant methods to use it #TINY-3535
+    Fixed text color not updating all color buttons when choosing a color #TINY-3602
+    Fixed the autocompleter not working with fragmented text #TINY-3459
+    Fixed the autosave plugin no longer overwrites window.onbeforeunload #TINY-3688
+    Fixed infinite loop in the paste plugin when IE11 takes a long time to process paste events. Patch contributed by lRawd. #GH-4987
+    Fixed image handle locations when using `fixed_toolbar_container`. Patch contributed by t00. #GH-4966
+    Fixed the autoresize plugin not firing `ResizeEditor` events #TINY-3587
+    Fixed editor in fullscreen mode not extending to the bottom of the screen #TINY-3701
+    Fixed list removal when pressing backspace after the start of the list item #TINY-3697
+    Fixed autocomplete not triggering from compositionend events #TINY-3711
+    Fixed `file_picker_callback` could not set the caption field on the insert image dialog #TINY-3172
+    Fixed the autocompleter menu showing up after a selection had been made #TINY-3718
+    Fixed an exception being thrown when a file or number input has focus during initialization. Patch contributed by t00 #GH-2194
+Version 5.0.6 (2019-05-22)
+    Added `icons_url` editor settings to enable icon packs to be loaded from a custom url #TINY-3585
+    Added `image_uploadtab` editor setting to control the visibility of the upload tab in the image dialog #TINY-3606
+    Added new api endpoints to the wordcount plugin and improved character count logic #TINY-3578
+    Changed plugin, language and icon loading errors to log in the console instead of a notification #TINY-3585
+    Fixed the textpattern plugin not working with fragmented text #TINY-3089
+    Fixed various toolbar drawer accessibility issues and added an animation #TINY-3554
+    Fixed issues with selection and ui components when toggling readonly mode #TINY-3592
+    Fixed so readonly mode works with inline editors #TINY-3592
+    Fixed docked inline toolbar positioning when scrolled #TINY-3621
+    Fixed initial value not being set on bespoke select in quickbars and toolbar drawer #TINY-3591
+    Fixed so that nbsp entities aren't trimmed in white-space: pre-line elements #TINY-3642
+    Fixed `mceInsertLink` command inserting spaces instead of url encoded characters #GH-4990
+    Fixed text content floating on top of dialogs in IE11 #TINY-3640
+Version 5.0.5 (2019-05-09)
+    Added menu items to match the forecolor/backcolor toolbar buttons #TINY-2878
+    Added default directionality based on the configured language #TINY-2621
+    Added styles, icons and tests for rtl mode #TINY-2621
+    Fixed autoresize not working with floating elements or when media elements finished loading #TINY-3545
+    Fixed incorrect vertical caret positioning in IE 11 #TINY-3188
+    Fixed submenu anchoring hiding overflowed content #TINY-3564
+    Removed unused and hidden validation icons to avoid displaying phantom tooltips #TINY-2329
+Version 5.0.4 (2019-04-23)
+    Added back URL dialog functionality, which is now available via `editor.windowManager.openUrl()` #TINY-3382
+    Added the missing throbber functionality when calling `editor.setProgressState(true)` #TINY-3453
+    Added function to reset the editor content and undo/dirty state via `editor.resetContent()` #TINY-3435
+    Added the ability to set menu buttons as active #TINY-3274
+    Added `editor.mode` API, featuring a custom editor mode API #TINY-3406
+    Added better styling to floating toolbar drawer #TINY-3479
+    Added the new premium plugins to the Help dialog plugins tab #TINY-3496
+    Added the linkchecker context menu items to the default configuration #TINY-3543
+    Fixed image context menu items showing on placeholder images #TINY-3280
+    Fixed dialog labels and text color contrast within notifications/alert banners to satisfy WCAG 4.5:1 contrast ratio for accessibility #TINY-3351
+    Fixed selectbox and colorpicker items not being translated #TINY-3546
+    Fixed toolbar drawer sliding mode to correctly focus the editor when tabbing via keyboard navigation #TINY-3533
+    Fixed positioning of the styleselect menu in iOS while using the mobile theme #TINY-3505
+    Fixed the menubutton `onSetup` callback to be correctly executed when rendering the menu buttons #TINY-3547
+    Fixed `default_link_target` setting to be correctly utilized when creating a link #TINY-3508
+    Fixed colorpicker floating marginally outside its container #TINY-3026
+    Fixed disabled menu items displaying as active when hovered #TINY-3027
+    Removed redundant mobile wrapper #TINY-3480
+Version 5.0.3 (2019-03-19)
+    Changed empty nested-menu items within the style formats menu to be disabled or hidden if the value of `style_formats_autohide` is `true` #TINY-3310
+    Changed the entire phrase 'Powered by Tiny' in the status bar to be a link instead of just the word 'Tiny' #TINY-3366
+    Changed `formatselect`, `styleselect` and `align` menus to use the `mceToggleFormat` command internally #TINY-3428
+    Fixed toolbar keyboard navigation to work as expected when `toolbar_drawer` is configured #TINY-3432
+    Fixed text direction buttons to display the correct pressed state in selections that have no explicit `dir` property #TINY-3138
+    Fixed the mobile editor to clean up properly when removed #TINY-3445
+    Fixed quickbar toolbars to add an empty box to the screen when it is set to `false` #TINY-3439
+    Fixed an issue where pressing the **Delete/Backspace** key at the edge of tables was creating incorrect selections #TINY-3371
+    Fixed an issue where dialog collection items (emoticon and special character dialogs) couldn't be selected with touch devices #TINY-3444
+    Fixed a type error introduced in TinyMCE version 5.0.2 when calling `editor.getContent()` with nested bookmarks #TINY-3400
+    Fixed an issue that prevented default icons from being overridden #TINY-3449
+    Fixed an issue where **Home/End** keys wouldn't move the caret correctly before or after `contenteditable=false` inline elements #TINY-2995
+    Fixed styles to be preserved in IE 11 when editing via the `fullpage` plugin #TINY-3464
+    Fixed the `link` plugin context toolbar missing the open link button #TINY-3461
+    Fixed inconsistent dialog component spacing #TINY-3436
+Version 5.0.2 (2019-03-05)
+    Added presentation and document presets to `htmlpanel` dialog component #TINY-2694
+    Added missing fixed_toolbar_container setting has been reimplemented in the Silver theme #TINY-2712
+    Added a new toolbar setting `toolbar_drawer` that moves toolbar groups which overflow the editor width into either a `sliding` or `floating` toolbar section #TINY-2874
+    Updated the build process to include package lock files in the dev distribution archive #TINY-2870
+    Fixed inline dialogs did not have aria attributes #TINY-2694
+    Fixed default icons are now available in the UI registry, allowing use outside of toolbar buttons #TINY-3307
+    Fixed a memory leak related to select toolbar items #TINY-2874
+    Fixed a memory leak due to format changed listeners that were never unbound #TINY-3191
+    Fixed an issue where content may have been lost when using permanent bookmarks #TINY-3400
+    Fixed the quicklink toolbar button not rendering in the quickbars plugin #TINY-3125
+    Fixed an issue where menus were generating invalid HTML in some cases #TINY-3323
+    Fixed an issue that could cause the mobile theme to show a blank white screen when the editor was inside an `overflow:hidden` element #TINY-3407
+    Fixed mobile theme using a transparent background and not taking up the full width on iOS #TINY-3414
+    Fixed the template plugin dialog missing the description field #TINY-3337
+    Fixed input dialog components using an invalid default type attribute #TINY-3424
+    Fixed an issue where backspace/delete keys after/before pagebreak elements wouldn't move the caret #TINY-3097
+    Fixed an issue in the table plugin where menu items and toolbar buttons weren't showing correctly based on the selection #TINY-3423
+    Fixed inconsistent button focus styles in Firefox #TINY-3377
+    Fixed the resize icon floating left when all status bar elements were disabled #TINY-3340
+    Fixed the resize handle to not show in fullscreen mode #TINY-3404
+Version 5.0.1 (2019-02-21)
+    Removed paste as text notification banner and paste_plaintext_inform setting #POW-102
+    Fixed an issue where adding links to images would replace the image with text #TINY-3356
+    Fixed an issue where the inline editor could use fractional pixels for positioning #TINY-3202
+    Fixed an issue where uploading non-image files in the Image Plugin upload tab threw an error. #TINY-3244
+    Added H1-H6 toggle button registration to the silver theme #TINY-3070
+    Fixed an issue in the media plugin that was causing the source url and height/width to be lost in certain circumstances #TINY-2858
+    Fixed an issue with the Context Toolbar not being removed when clicking outside of the editor #TINY-2804
+    Fixed an issue where clicking 'Remove link' wouldn't remove the link in certain circumstances #TINY-3199
+    Added code sample toolbar button will now toggle on when the cursor is in a code section #TINY-3040
+    Fixed an issue where the media plugin would fail when parsing dialog data #TINY-3218
+    Fixed an issue where retrieving the selected content as text didn't create newlines #TINY-3197
+    Fixed incorrect keyboard shortcuts in the Help dialog for Windows #TINY-3292
+    Fixed an issue where JSON serialization could produce invalid JSON #TINY-3281
+    Fixed production CSS including references to source maps #TINY-3920
+    Fixed development CSS was not included in the development zip #TINY-3920
+    Fixed the autocompleter matches predicate not matching on the start of words by default #TINY-3306
+    Added new settings to the emoticons plugin to allow additional emoticons to be added #TINY-3088
+    Fixed an issue where the page could be scrolled with modal dialogs open #TINY-2252
+    Fixed an issue where autocomplete menus would show an icon margin when no items had icons #TINY-3329
+    Fixed an issue in the quickbars plugin where images incorrectly showed the text selection toolbar #TINY-3338
+    Fixed an issue that caused the inline editor to fail to render when the target element already had focus #TINY-3353
+Version 5.0.0 (2019-02-04)
+    Full documentation for the version 5 features and changes is available at https://www.tiny.cloud/docs/release-notes/
+
+    Changes since RC2:
+    Fixed an issue where tab panel heights weren't sizing properly on smaller screens and weren't updating on resize #TINY-3242
+    Added links and registered names with * to denote premium plugins in Plugins tab of Help dialog #TINY-3223
+    Changed Tiny 5 mobile skin to look more uniform with desktop #TINY-2650
+    Fixed image tools not having any padding between the label and slider #TINY-3220
+    Blacklisted table, th and td as inline editor target #TINY-717
+    Fixed context toolbar toggle buttons not showing the correct state #TINY-3022
+    Fixed missing separators in the spellchecker context menu between the suggestions and actions #TINY-3217
+    Fixed notification icon positioning in alert banners #TINY-2196
+    Fixed a typo in the word count plugin name #TINY-3062
+    Fixed charmap and emoticons dialogs not having a primary button #TINY-3233
+    Fixed an issue where resizing wouldn't work correctly depending on the box-sizing model #TINY-3278
+Version 5.0.0-rc-2 (2019-01-22)
+    Fixed the link dialog such that it will now retain class attributes when updating links #TINY-2825
+    Added screen reader accessibility for sidebar and statusbar #TINY-2699
+    Updated Emoticons and Charmap dialogs to be screen reader accessible #TINY-2693
+    Fixed "Find and replace" not showing in the "Edit" menu by default #TINY-3061
+    Updated the textpattern plugin to properly support nested patterns and to allow running a command with a value for a pattern with a start and an end #TINY-2991
+    Removed unnecessary 'flex' and unused 'colspan' properties from the new dialog APIs #TINY-2973
+    Changed checkboxes to use a boolean for its state, instead of a string #TINY-2848
+    Fixed dropdown buttons missing the 'type' attribute, which could cause forms to be incorrectly submitted #TINY-2826
+    Fixed emoticon and charmap search not returning expected results in certain cases #TINY-3084
+    Changed formatting menus so they are registered and made the align toolbar button use an icon instead of text #TINY-2880
+    Fixed blank rel_list values throwing an exception in the link plugin #TINY-3149
+Version 5.0.0-rc-1 (2019-01-08)
+    Updated the font select dropdown logic to try to detect the system font stack and show "System Font" as the font name #TINY-2710
+    Fixed readonly mode not fully disabling editing content #TINY-2287
+    Updated the autocompleter to only show when it has matched items #TINY-2350
+    Added editor settings functionality to specify title attributes for toolbar groups #TINY-2690
+    Added icons instead of button text to improve Search and Replace dialog footer appearance #TINY-2654
+    Added `tox-dialog__table` instead of `mce-table-striped` class to enhance Help dialog appearance #TINY-2360
+    Added title attribute to iframes so, screen readers can announce iframe labels #TINY-2692
+    Updated SizeInput labels to "Height" and "Width" instead of Dimensions #TINY-2833
+    Fixed accessibility issues with the font select, font size, style select and format select toolbar dropdowns #TINY-2713
+    Fixed accessibility issues with split dropdowns #TINY-2697
+    Added a wordcount menu item, that defaults to appearing in the tools menu #TINY-2877
+    Fixed the legacyoutput plugin to be compatible with TinyMCE 5.0 #TINY-2301
+    Updated the build process to minify and generate ASCII only output for the emoticons database #TINY-2744
+    Fixed icons not showing correctly in the autocompleter popup #TINY-3029
+    Fixed an issue where preview wouldn't show anything in Edge under certain circumstances #TINY-3035
+    Fixed the height being incorrectly calculated for the autoresize plugin #TINY-2807
+Version 5.0.0-beta-1 (2018-11-30)
+    Changed the name of the "inlite" plugin to "quickbars" #TINY-2831
+    Fixed an inline mode issue where the save plugin upon saving can cause content loss #TINY-2659
+    Changed the background color icon to highlight background icon #TINY-2258
+    Added a new `addNestedMenuItem()` UI registry function and changed all nested menu items to use the new registry functions #TINY-2230
+    Changed Help dialog to be accessible to screen readers #TINY-2687
+    Changed the color swatch to save selected custom colors to local storage for use across sessions #TINY-2722
+    Added title attribute to color swatch colors #TINY-2669
+    Added anchorbar component to anchor inline toolbar dialogs to instead of the toolbar #TINY-2040
+    Added support for toolbar<n> and toolbar array config options to be squashed into a single toolbar and not create multiple toolbars #TINY-2195
+    Added error handling for when forced_root_block config option is set to true #TINY-2261
+    Added functionality for the removed_menuitems config option #TINY-2184
+    Fixed an issue in IE 11 where calling selection.getContent() would return an empty string when the editor didn't have focus #TINY-2325
+    Added the ability to use a string to reference menu items in menu buttons and submenu items #TINY-2253
+    Removed compat3x plugin #TINY-2815
+    Changed `WindowManager` API - methods `getParams`, `setParams` and `getWindows`, and the legacy `windows` property, have been removed. `alert` and `confirm` dialogs are no longer tracked in the window list. #TINY-2603
+Version 5.0.0-preview-4 (2018-11-12)
+    Fixed distraction free plugin #AP-470
+    Removed the tox-custom-editor class that was added to the wrapping element of codemirror #TINY-2211
+    Fixed contents of the input field being selected on focus instead of just recieving an outline highlight #AP-464
+    Added width and height placeholder text to image and media dialog dimensions input #AP-296
+    Fixed styling issues with dialogs and menus in IE 11 #AP-456
+    Fixed custom style format control not honoring custom formats #AP-393
+    Fixed context menu not appearing when clicking an image with a caption #AP-382
+    Fixed directionality of UI when using an RTL language #AP-423
+    Fixed page responsiveness with multiple inline editors #AP-430
+    Added the ability to keyboard navigate through menus, toolbars, sidebar and the status bar sequentially #AP-381
+    Fixed empty toolbar groups appearing through invalid configuration of the `toolbar` property #AP-450
+    Fixed text not being retained when updating links through the link dialog #AP-293
+    Added translation capability back to the editor's UI #AP-282
+    Fixed edit image context menu, context toolbar and toolbar items being incorrectly enabled when selecting invalid images #AP-323
+    Fixed emoji type ahead being shown when typing URLs #AP-366
+    Fixed toolbar configuration properties incorrectly expecting string arrays instead of strings #AP-342
+    Changed the editor resize handle so that it should be disabled when the autoresize plugin is turned on #AP-424
+    Fixed the block formatting toolbar item not showing a "Formatting" title when there is no selection #AP-321
+    Fixed clicking disabled toolbar buttons hiding the toolbar in inline mode #AP-380
+    Fixed `EditorResize` event not being fired upon editor resize #AP-327
+    Fixed tables losing styles when updating through the dialog #AP-368
+    Fixed context toolbar positioning to be more consistent near the edges of the editor #AP-318
+    Added `label` component type for dialogs to group components under a label
+    Fixed table of contents plugin now works with v5 toolbar APIs correctly #AP-347
+    Fixed the `link_context_toolbar` configuration not disabling the context toolbar #AP-458
+    Fixed the link context toolbar showing incorrect relative links #AP-435
+    Fixed the alignment of the icon in alert banner dialog components #TINY-2220
+    Changed UI text for microcopy improvements #TINY-2281
+    Fixed the visual blocks and visual char menu options not displaying their toggled state #TINY-2238
+    Fixed the editor not displaying as fullscreen when toggled #TINY-2237
+Version 5.0.0-preview-3 (2018-10-18)
+    Changed editor layout to use modern CSS properties over manually calculating dimensions #AP-324
+    Changed `autoresize_min_height` and `autoresize_max_height` configurations to `min_height` and `max_height` #AP-324
+    Fixed bugs with editor width jumping when resizing and the iframe not resizing to smaller than 150px in height #AP-324
+    Fixed mobile theme bug that prevented the editor from loading #AP-404
+    Fixed long toolbar groups extending outside of the editor instead of wrapping
+    Changed `Whole word` label in Search and Replace dialog to `Find whole words only` #AP-387
+    Fixed dialog titles so they are now proper case #AP-384
+    Fixed color picker default to be #000000 instead of #ff00ff #AP-216
+    Fixed "match case" option on the Find and Replace dialog is no longer selected by default #AP-298
+    Fixed vertical alignment of toolbar icons #DES-134
+    Fixed toolbar icons not appearing on IE11 #DES-133
+Version 5.0.0-preview-2 (2018-10-10)
+    Changed configuration of color options has been simplified to `color_map`, `color_cols`, and `custom_colors` #AP-328
+    Added swatch is now shown for colorinput fields, instead of the colorpicker directly #AP-328
+    Removed `colorpicker` plugin, it is now in the theme #AP-328
+    Removed `textcolor` plugin, it is now in the theme #AP-328
+    Fixed styleselect not updating the displayed item as the cursor moved #AP-388
+    Changed `height` configuration to apply to the editor frame (including menubar, toolbar, status bar) instead of the content area #AP-324
+    Added fontformats and fontsizes menu items #AP-390
+    Fixed preview iframe not expanding to the dialog size #AP-252
+    Fixed 'meta' shortcuts not translated into platform-specific text #AP-270
+    Fixed tabbed dialogs (Charmap and Emoticons) shrinking when no search results returned
+    Fixed a bug where alert banner icons were not retrieved from icon pack. #AP-330
+    Fixed component styles to flex so they fill large dialogs. #AP-252
+    Fixed editor flashing unstyled during load (still in progress). #AP-349
+Version 5.0.0-preview-1 (2018-10-01)
+    Developer preview 1
+    Initial list of features and changes is available at https://tiny.cloud/docs-preview/release-notes/new-features/
+Version 4.9.3 (2019-01-31)
+    Added a visualchars_default_state setting to the Visualchars Plugin. Patch contributed by mat3e.
+    Fixed a bug where scrolling on a page with more than one editor would cause a ResizeWindow event to fire. #TINY-3247
+    Fixed a bug where if a plugin threw an error during initialisation the whole editor would fail to load. #TINY-3243
+    Fixed a bug where getContent would include bogus elements when valid_elements setting was set up in a specific way. #TINY-3213
+    Fixed a bug where only a few function key names could be used when creating keyboard shortcuts. #TINY-3146
+    Fixed a bug where it wasn't possible to enter spaces into an editor after pressing shift+enter. #TINY-3099
+    Fixed a bug where no caret would be rendered after backspacing to a contenteditable false element. #TINY-2998
+    Fixed a bug where deletion to/from indented lists would leave list fragments in the editor. #TINY-2981
+Version 4.9.2 (2018-12-17)
+    Fixed a bug with pressing the space key on IE 11 would result in nbsp characters being inserted between words at the end of a block. #TINY-2996
+    Fixed a bug where character composition using quote and space on US International keyboards would produce a space instead of a quote. #TINY-2999
+    Fixed a bug where remove format wouldn't remove the inner most inline element in some situations. #TINY-2982
+    Fixed a bug where outdenting an list item would affect attributes on other list items within the same list. #TINY-2971
+    Fixed a bug where the DomParser filters wouldn't be applied for elements created when parsing invalid html. #TINY-2978
+    Fixed a bug where setProgressState wouldn't automatically close floating ui elements like menus. #TINY-2896
+    Fixed a bug where it wasn't possible to navigate out of a figcaption element using the arrow keys. #TINY-2894
+    Fixed a bug where enter key before an image inside a link would remove the image. #TINY-2780
+Version 4.9.1 (2018-12-04)
+    Added functionality to insert html to the replacement feature of the Textpattern Plugin. #TINY-2839
+    Fixed a bug where `editor.selection.getContent({format: 'text'})` didn't work as expected in IE11 on an unfocused editor. #TINY-2862
+    Fixed a bug in the Textpattern Plugin where the editor would get an incorrect selection after inserting a text pattern on Safari. #TINY-2838
+    Fixed a bug where the space bar didn't work correctly in editors with the forced_root_block setting set to false. #TINY-2816
+Version 4.9.0 (2018-11-27)
+    Added a replace feature to the Textpattern Plugin. #TINY-1908
+    Added functionality to the Lists Plugin that improves the indentation logic. #TINY-1790
+    Fixed a bug where it wasn't possible to delete/backspace when the caret was between a contentEditable=false element and a BR. #TINY-2372
+    Fixed a bug where copying table cells without a text selection would fail to copy anything. #TINY-1789
+    Implemented missing `autosave_restore_when_empty` functionality in the Autosave Plugin. Patch contributed by gzzo. #GH-4447
+    Reduced insertion of unnecessary nonbreaking spaces in the editor. #TINY-1879
+Version 4.8.5 (2018-10-30)
+    Added a content_css_cors setting to the editor that adds the crossorigin="anonymous" attribute to link tags added by the StyleSheetLoader. #TINY-1909
+    Fixed a bug where trying to remove formatting with a collapsed selection range would throw an exception. #GH-4636
+    Fixed a bug in the image plugin that caused updating figures to split contenteditable elements. #GH-4563
+    Fixed a bug that was causing incorrect viewport calculations for fixed position UI elements. #TINY-1897
+    Fixed a bug where inline formatting would cause the delete key to do nothing. #TINY-1900
+Version 4.8.4 (2018-10-23)
+    Added support for the HTML5 `main` element. #TINY-1877
+    Changed the keyboard shortcut to move focus to contextual toolbars to Ctrl+F9. #TINY-1812
+    Fixed a bug where content css could not be loaded from another domain. #TINY-1891
+    Fixed a bug on FireFox where the cursor would get stuck between two contenteditable false inline elements located inside of the same block element divided by a BR. #TINY-1878
+    Fixed a bug with the insertContent method where nonbreaking spaces would be inserted incorrectly. #TINY-1868
+    Fixed a bug where the toolbar of the inline editor would not be visible in some scenarios. #TINY-1862
+    Fixed a bug where removing the editor while more than one notification was open would throw an error. #TINY-1845
+    Fixed a bug where the menubutton would be rendered on top of the menu if the viewport didn't have enough height. #TINY-1678
+    Fixed a bug with the annotations api where annotating collapsed selections caused problems. #TBS-2449
+    Fixed a bug where wbr elements were being transformed into whitespace when using the Paste Plugin's paste as text setting. #GH-4638
+    Fixed a bug where the Search and Replace didn't replace spaces correctly. #GH-4632
+    Fixed a bug with sublist items not persisting selection. #GH-4628
+    Fixed a bug with mceInsertRawHTML command not working as expected. #GH-4625
+Version 4.8.3 (2018-09-13)
+    Fixed a bug where the Wordcount Plugin didn't correctly count words within tables on IE11. #TINY-1770
+    Fixed a bug where it wasn't possible to move the caret out of a table on IE11 and Firefox. #TINY-1682
+    Fixed a bug where merging empty blocks didn't work as expected, sometimes causing content to be deleted. #TINY-1781
+    Fixed a bug where the Textcolor Plugin didn't show the correct current color. #TINY-1810
+    Fixed a bug where clear formatting with a collapsed selection would sometimes clear formatting from more content than expected. #TINY-1813 #TINY-1821
+    Fixed a bug with the Table Plugin where it wasn't possible to keyboard navigate to the caption. #TINY-1818
+Version 4.8.2 (2018-08-09)
+    Moved annotator from "experimental" to "annotator" object on editor. #TBS-2398
+    Improved the multiclick normalization across browsers. #TINY-1788
+    Fixed a bug where running getSelectedBlocks with a collapsed selection between block elements would produce incorrect results. #TINY-1787
+    Fixed a bug where the ScriptLoaders loadScript method would not work as expected in FireFox when loaded on the same page as a ShadowDOM polyfill. #TINY-1786
+    Removed reference to ShadowDOM event.path as Blink based browsers now support event.composedPath. #TINY-1785
+    Fixed a bug where a reference to localStorage would throw an "access denied" error in IE11 with strict security settings. #TINY-1782
+    Fixed a bug where pasting using the toolbar button on an inline editor in IE11 would cause a looping behaviour. #TINY-1768
+Version 4.8.1 (2018-07-26)
+    Fixed a bug where the content of inline editors was being cleaned on every call of `editor.save()`. #TINY-1783
+    Fixed a bug where the arrow of the Inlite Theme toolbar was being rendered incorrectly in RTL mode. #TINY-1776
+    Fixed a bug with the Paste Plugin where pasting after inline contenteditable false elements moved the caret to the end of the line. #TINY-1758
+Version 4.8.0 (2018-06-27)
+    Added new "experimental" object in editor, with initial Annotator API. #TBS-2374
+    Fixed a bug where deleting paragraphs inside of table cells would delete the whole table cell. #TINY-1759
+    Fixed a bug in the Table Plugin where removing row height set on the row properties dialog did not update the table. #TINY-1730
+    Fixed a bug with the font select toolbar item didn't update correctly. #TINY-1683
+    Fixed a bug where all bogus elements would not be deleted when removing an inline editor. #TINY-1669
+Version 4.7.13 (2018-05-16)
+    Fixed a bug where Edge 17 wouldn't be able to select images or tables. #TINY-1679
+    Fixed issue where whitespace wasn't preserved when the editor was initialized on pre elements. #TINY-1649
+    Fixed a bug with the fontselect dropdowns throwing an error if the editor was hidden in Firefox. #TINY-1664
+    Fixed a bug where it wasn't possible to merge table cells on IE 11. #TINY-1671
+    Fixed a bug where textcolor wasn't applying properly on IE 11 in some situations. #TINY-1663
+    Fixed a bug where the justifyfull command state wasn't working correctly. #TINY-1677
+    Fixed a bug where the styles wasn't updated correctly when resizing some tables. #TINY-1668
+    Added missing code menu item from the default menu config. #TINY-1648
+    Added new align button for combining the separate align buttons into a menu button. #TINY-1652
+Version 4.7.12 (2018-05-03)
+    Added an option to filter out image svg data urls.
+    Added support for html5 details and summary elements.
+    Changed so the mce-abs-layout-item css rule targets html instead of body. Patch contributed by nazar-pc.
+    Fixed a bug where the "read" step on the mobile theme was still present on android mobile browsers.
+    Fixed a bug where all images in the editor document would reload on any editor change.
+    Fixed a bug with the Table Plugin where ObjectResized event wasn't being triggered on column resize.
+    Fixed so the selection is set to the first suitable caret position after editor.setContent called.
+    Fixed so links with xlink:href attributes are filtered correctly to prevent XSS.
+    Fixed a bug on IE11 where pasting content into an inline editor initialized on a heading element would create new editable elements.
+    Fixed a bug where readonly mode would not work as expected when the editor contained contentEditable=true elements.
+    Fixed a bug where the Link Plugin would throw an error when used together with the webcomponents polyfill. Patch contributed by 4esnog.
+    Fixed a bug where the "Powered by TinyMCE" branding link would break on XHTML pages. Patch contributed by tistre.
+    Fixed a bug where the same id would be used in the blobcache for all pasted images. Patch contributed by thorn0.
+Version 4.7.11 (2018-04-11)
+    Added a new imagetools_credentials_hosts option to the Imagetools Plugin.
+    Fixed a bug where toggling a list containing empty LIs would throw an error. Patch contributed by bradleyke.
+    Fixed a bug where applying block styles to a text with the caret at the end of the paragraph would select all text in the paragraph.
+    Fixed a bug where toggling on the Spellchecker Plugin would trigger isDirty on the editor.
+    Fixed a bug where it was possible to enter content into selection bookmark spans.
+    Fixed a bug where if a non paragraph block was configured in forced_root_block the editor.getContent method would return incorrect values with an empty editor.
+    Fixed a bug where dropdown menu panels stayed open and fixed in position when dragging dialog windows.
+    Fixed a bug where it wasn't possible to extend table cells with the space button in Safari.
+    Fixed a bug where the setupeditor event would thrown an error when using the Compat3x Plugin.
+    Fixed a bug where an error was thrown in FontInfo when called on a detached element.
+Version 4.7.10 (2018-04-03)
+    Removed the "read" step from the mobile theme.
+    Added normalization of triple clicks across browsers in the editor.
+    Added a `hasFocus` method to the editor that checks if the editor has focus.
+    Added correct icon to the Nonbreaking Plugin menu item.
+    Fixed so the `getContent`/`setContent` methods work even if the editor is not initialized.
+    Fixed a bug with the Media Plugin where query strings were being stripped from youtube links.
+    Fixed a bug where image styles were changed/removed when opening and closing the Image Plugin dialog.
+    Fixed a bug in the Table Plugin where some table cell styles were not correctly added to the content html.
+    Fixed a bug in the Spellchecker Plugin where it wasn't possible to change the spellchecker language.
+    Fixed so the the unlink action in the Link Plugin has a menu item and can be added to the contextmenu.
+    Fixed a bug where it wasn't possible to keyboard navigate to the start of an inline element on a new line within the same block element.
+    Fixed a bug with the Text Color Plugin where if used with an inline editor located at the bottom of the screen the colorpicker could appear off screen.
+    Fixed a bug with the UndoManager where undo levels were being added for nbzwsp characters.
+    Fixed a bug with the Table Plugin where the caret would sometimes be lost when keyboard navigating up through a table.
+    Fixed a bug where FontInfo.getFontFamily would throw an error when called on a removed editor.
+    Fixed a bug in Firefox where undo levels were not being added correctly for some specific operations.
+    Fixed a bug where initializing an inline editor inside of a table would make the whole table resizeable.
+    Fixed a bug where the fake cursor that appears next to tables on Firefox was positioned incorrectly when switching to fullscreen.
+    Fixed a bug where zwsp's weren't trimmed from the output from `editor.getContent({ format: 'text' })`.
+    Fixed a bug where the fontsizeselect/fontselect toolbar items showed the body info rather than the first possible caret position info on init.
+    Fixed a bug where it wasn't possible to select all content if the editor only contained an inline boundary element.
+    Fixed a bug where `content_css` urls with query strings wasn't working.
+    Fixed a bug in the Table Plugin where some table row styles were removed when changing other styles in the row properties dialog.
+Version 4.7.9 (2018-02-27)
+    Fixed a bug where the editor target element didn't get the correct style when removing the editor.
+Version 4.7.8 (2018-02-26)
+    Fixed an issue with the Help Plugin where the menuitem name wasn't lowercase.
+    Fixed an issue on MacOS where text and bold text did not have the same line-height in the autocomplete dropdown in the Link Plugin dialog.
+    Fixed a bug where the "paste as text" option in the Paste Plugin didn't work.
+    Fixed a bug where dialog list boxes didn't get positioned correctly in documents with scroll.
+    Fixed a bug where the Inlite Theme didn't use the Table Plugin api to insert correct tables.
+    Fixed a bug where the Inlite Theme panel didn't hide on blur in a correct way.
+    Fixed a bug where placing the cursor before a table in Firefox would scroll to the bottom of the table.
+    Fixed a bug where selecting partial text in table cells with rowspans and deleting would produce faulty tables.
+    Fixed a bug where the Preview Plugin didn't work on Safari due to sandbox security.
+    Fixed a bug where table cell selection using the keyboard threw an error.
+    Fixed so the font size and font family doesn't toggle the text but only sets the selected format on the selected text.
+    Fixed so the built-in spellchecking on Chrome and Safari creates an undo level when replacing words.
+Version 4.7.7 (2018-02-19)
+    Added a border style selector to the advanced tab of the Image Plugin.
+    Added better controls for default table inserted by the Table Plugin.
+    Added new `table_responsive_width` option to the Table Plugin that controls whether to use pixel or percentage widths.
+    Fixed a bug where the Link Plugin text didn't update when a URL was pasted using the context menu.
+    Fixed a bug with the Spellchecker Plugin where using "Add to dictionary" in the context menu threw an error.
+    Fixed a bug in the Media Plugin where the preview node for iframes got default width and height attributes that interfered with width/height styles.
+    Fixed a bug where backslashes were being added to some font family names in Firefox in the fontselect toolbar item.
+    Fixed a bug where errors would be thrown when trying to remove an editor that had not yet been fully initialized.
+    Fixed a bug where the Imagetools Plugin didn't update the images atomically.
+    Fixed a bug where the Fullscreen Plugin was throwing errors when being used on an inline editor.
+    Fixed a bug where drop down menus weren't positioned correctly in inline editors on scroll.
+    Fixed a bug with a semicolon missing at the end of the bundled javascript files.
+    Fixed a bug in the Table Plugin with cursor navigation inside of tables where the cursor would sometimes jump into an incorrect table cells.
+    Fixed a bug where indenting a table that is a list item using the "Increase indent" button would create a nested table.
+    Fixed a bug where text nodes containing only whitespace were being wrapped by paragraph elements.
+    Fixed a bug where whitespace was being inserted after br tags inside of paragraph tags.
+    Fixed a bug where converting an indented paragraph to a list item would cause the list item to have extra padding.
+    Fixed a bug where Copy/Paste in an editor with a lot of content would cause the editor to scroll to the top of the content in IE11.
+    Fixed a bug with a memory leak in the DragHelper. Path contributed by ben-mckernan.
+    Fixed a bug where the advanced tab in the Media Plugin was being shown even if it didn't contain anything. Patch contributed by gabrieeel.
+    Fixed an outdated eventname in the EventUtils. Patch contributed by nazar-pc.
+    Fixed an issue where the Json.parse function would throw an error when being used on a page with strict CSP settings.
+    Fixed so you can place the curser before and after table elements within the editor in Firefox and Edge/IE.
+Version 4.7.6 (2018-01-29)
+    Fixed a bug in the jquery integration where it threw an error saying that "global is not defined".
+    Fixed a bug where deleting a table cell whose previous sibling was set to contenteditable false would create a corrupted table.
+    Fixed a bug where highlighting text in an unfocused editor did not work correctly in IE11/Edge.
+    Fixed a bug where the table resize handles were not being repositioned when activating the Fullscreen Plugin.
+    Fixed a bug where the Imagetools Plugin dialog didn't honor editor RTL settings.
+    Fixed a bug where block elements weren't being merged correctly if you deleted from after a contenteditable false element to the beginning of another block element.
+    Fixed a bug where TinyMCE didn't work with module loaders like webpack.
+Version 4.7.5 (2018-01-22)
+    Fixed bug with the Codesample Plugin where it wasn't possible to edit codesamples when the editor was in inline mode.
+    Fixed bug where focusing on the status bar broke the keyboard navigation functionality.
+    Fixed bug where an error would be thrown on Edge by the Table Plugin when pasting using the PowerPaste Plugin.
+    Fixed bug in the Table Plugin where selecting row border style from the dropdown menu in advanced row properties would throw an error.
+    Fixed bug with icons being rendered incorrectly on Chrome on Mac OS.
+    Fixed bug in the Textcolor Plugin where the font color and background color buttons wouldn't trigger an ExecCommand event.
+    Fixed bug in the Link Plugin where the url field wasn't forced LTR.
+    Fixed bug where the Nonbreaking Plugin incorrectly inserted spaces into tables.
+    Fixed bug with the inline theme where the toolbar wasn't repositioned on window resize.
+Version 4.7.4 (2017-12-05)
+    Fixed bug in the Nonbreaking Plugin where the nonbreaking_force_tab setting was being ignored.
+    Fixed bug in the Table Plugin where changing row height incorrectly converted column widths to pixels.
+    Fixed bug in the Table Plugin on Edge and IE11 where resizing the last column after resizing the table would cause invalid column heights.
+    Fixed bug in the Table Plugin where keyboard navigation was not normalized between browsers.
+    Fixed bug in the Table Plugin where the colorpicker button would show even without defining the colorpicker_callback.
+    Fixed bug in the Table Plugin where it wasn't possible to set the cell background color.
+    Fixed bug where Firefox would throw an error when intialising an editor on an element that is hidden or not yet added to the DOM.
+    Fixed bug where Firefox would throw an error when intialising an editor inside of a hidden iframe.
+Version 4.7.3 (2017-11-23)
+    Added functionality to open the Codesample Plugin dialog when double clicking on a codesample. Patch contributed by dakuzen.
+    Fixed bug where undo/redo didn't work correctly with some formats and caret positions.
+    Fixed bug where the color picker didn't show up in Table Plugin dialogs.
+    Fixed bug where it wasn't possible to change the width of a table through the Table Plugin dialog.
+    Fixed bug where the Charmap Plugin couldn't insert some special characters.
+    Fixed bug where editing a newly inserted link would not actually edit the link but insert a new link next to it.
+    Fixed bug where deleting all content in a table cell made it impossible to place the caret into it.
+    Fixed bug where the vertical alignment field in the Table Plugin cell properties dialog didn't do anything.
+    Fixed bug where an image with a caption showed two sets of resize handles in IE11.
+    Fixed bug where pressing the enter button inside of an h1 with contenteditable set to true would sometimes produce a p tag.
+    Fixed bug with backspace not working as expected before a noneditable element.
+    Fixed bug where operating on tables with invalid rowspans would cause an error to be thrown.
+    Fixed so a real base64 representation of the image is available on the blobInfo that the images_upload_handler gets called with.
+    Fixed so the image upload tab is available when the images_upload_handler is defined (and not only when the images_upload_url is defined).
+Version 4.7.2 (2017-11-07)
+    Added newly rewritten Table Plugin.
+    Added support for attributes with colon in valid_elements and addValidElements.
+    Added support for dailymotion short url in the Media Plugin. Patch contributed by maat8.
+    Added support for converting to half pt when converting font size from px to pt. Patch contributed by danny6514.
+    Added support for location hash to the Autosave plugin to make it work better with SPAs using hash routing.
+    Added support for merging table cells when pasting a table into another table.
+    Changed so the language packs are only loaded once. Patch contributed by 0xor1.
+    Simplified the css for inline boundaries selection by switching to an attribute selector.
+    Fixed bug where an error would be thrown on editor initialization if the window.getSelection() returned null.
+    Fixed bug where holding down control or alt keys made the keyboard navigation inside an inline boundary not work as expected.
+    Fixed bug where applying formats in IE11 produced extra, empty paragraphs in the editor.
+    Fixed bug where the Word Count Plugin didn't count some mathematical operators correctly.
+    Fixed bug where removing an inline editor removed the element that the editor had been initialized on.
+    Fixed bug where setting the selection to the end of an editable container caused some formatting problems.
+    Fixed bug where an error would be thrown sometimes when an editor was removed because of the selection bookmark was being stored asynchronously.
+    Fixed a bug where an editor initialized on an empty list did not contain any valid cursor positions.
+    Fixed a bug with the Context Menu Plugin and webkit browsers on Mac where right-clicking inside a table would produce an incorrect selection.
+    Fixed bug where the Image Plugin constrain proportions setting wasn't working as expected.
+    Fixed bug where deleting the last character in a span with decorations produced an incorrect element when typing.
+    Fixed bug where focusing on inline editors made the toolbar flicker when moving between elements quickly.
+    Fixed bug where the selection would be stored incorrectly in inline editors when the mouseup event was fired outside the editor body.
+    Fixed bug where toggling bold at the end of an inline boundary would toggle off the whole word.
+    Fixed bug where setting the skin to false would not stop the loading of some skin css files.
+    Fixed bug in mobile theme where pinch-to-zoom would break after exiting the editor.
+    Fixed bug where sublists of a fully selected list would not be switched correctly when changing list style.
+    Fixed bug where inserting media by source would break the UndoManager.
+    Fixed bug where inserting some content into the editor with a specific selection would replace some content incorrectly.
+    Fixed bug where selecting all content with ctrl+a in IE11 caused problems with untoggling some formatting.
+    Fixed bug where the Search and Replace Plugin left some marker spans in the editor when undoing and redoing after replacing some content.
+    Fixed bug where the editor would not get a scrollbar when using the Fullscreen and Autoresize plugins together.
+    Fixed bug where the font selector would stop working correctly after selecting fonts three times.
+    Fixed so pressing the enter key inside of an inline boundary inserts a br after the inline boundary element.
+    Fixed a bug where it wasn't possible to use tab navigation inside of a table that was inside of a list.
+    Fixed bug where end_container_on_empty_block would incorrectly remove elements.
+    Fixed bug where content_styles weren't added to the Preview Plugin iframe.
+    Fixed so the beforeSetContent/beforeGetContent events are preventable.
+    Fixed bug where changing height value in Table Plugin advanced tab didn't do anything.
+    Fixed bug where it wasn't possible to remove formatting from content in beginning of table cell.
+Version 4.7.1 (2017-10-09)
+    Fixed bug where theme set to false on an inline editor produced an extra div element after the target element.
+    Fixed bug where the editor drag icon was misaligned with the branding set to false.
+    Fixed bug where doubled menu items were not being removed as expected with the removed_menuitems setting.
+    Fixed bug where the Table of contents plugin threw an error when initialized.
+    Fixed bug where it wasn't possible to add inline formats to text selected right to left.
+    Fixed bug where the paste from plain text mode did not work as expected.
+    Fixed so the style previews do not set color and background color when selected.
+    Fixed bug where the Autolink plugin didn't work as expected with some formats applied on an empty editor.
+    Fixed bug where the Textpattern plugin were throwing errors on some patterns.
+    Fixed bug where the Save plugin saved all editors instead of only the active editor. Patch contributed by dannoe.
+Version 4.7.0 (2017-10-03)
+    Added new mobile ui that is specifically designed for mobile devices.
+    Updated the default skin to be more modern and white since white is preferred by most implementations.
+    Restructured the default menus to be more similar to common office suites like Google Docs.
+    Fixed so theme can be set to false on both inline and iframe editor modes.
+    Fixed bug where inline editor would add/remove the visualblocks css multiple times.
+    Fixed bug where selection wouldn't be properly restored when editor lost focus and commands where invoked.
+    Fixed bug where toc plugin would generate id:s for headers even though a toc wasn't inserted into the content.
+    Fixed bug where is wasn't possible to drag/drop contents within the editor if paste_data_images where set to true.
+    Fixed bug where getParam and close in WindowManager would get the first opened window instead of the last opened window.
+    Fixed bug where delete would delete between cells inside a table in Firefox.
+Version 4.6.7 (2017-09-18)
+    Fixed bug where paste wasn't working in IOS.
+    Fixed bug where the Word Count Plugin didn't count some mathematical operators correctly.
+    Fixed bug where inserting a list in a table caused the cell to expand in height.
+    Fixed bug where pressing enter in a list located inside of a table deleted list items instead of inserting new list item.
+    Fixed bug where copy and pasting table cells produced inconsistent results.
+    Fixed bug where initializing an editor with an ID of 'length' would throw an exception.
+    Fixed bug where it was possible to split a non merged table cell.
+    Fixed bug where copy and pasting a list with a very specific selection into another list would produce a nested list.
+    Fixed bug where copy and pasting ordered lists sometimes produced unordered lists.
+    Fixed bug where padded elements inside other elements would be treated as empty.
+    Added some missing translations to Image, Link and Help plugins.
+    Fixed so you can resize images inside a figure element.
+    Fixed bug where an inline TinyMCE editor initialized on a table did not set selection on load in Chrome.
+    Fixed the positioning of the inlite toolbar when the target element wasn't big enough to fit the toolbar.
+Version 4.6.6 (2017-08-30)
+    Fixed so that notifications wrap long text content instead of bleeding outside the notification element.
+    Fixed so the content_style css is added after the skin and custom stylesheets.
+    Fixed bug where it wasn't possible to remove a table with the Cut button.
+    Fixed bug where the center format wasn't getting the same font size as the other formats in the format preview.
+    Fixed bug where the wordcount plugin wasn't counting hyphenated words correctly.
+    Fixed bug where all content pasted into the editor was added to the end of the editor.
+    Fixed bug where enter keydown on list item selection only deleted content and didn't create a new line.
+    Fixed bug where destroying the editor while the content css was still loading caused error notifications on Firefox.
+    Fixed bug where undoing cut operation in IE11 left some unwanted html in the editor content.
+    Fixed bug where enter keydown would throw an error in IE11.
+    Fixed bug where duplicate instances of an editor were added to the editors array when using the createEditor API.
+    Fixed bug where the formatter applied formats on the wrong content when spellchecker was activated.
+    Fixed bug where switching formats would reset font size on child nodes.
+    Fixed bug where the table caption element weren't always the first descendant to the table tag.
+    Fixed bug where pasting some content into the editor on chrome some newlines were removed.
+    Fixed bug where it wasn't possible to remove a list if a list item was a table element.
+    Fixed bug where copy/pasting partial selections of tables wouldn't produce a proper table.
+    Fixed bug where the searchreplace plugin could not find consecutive spaces.
+    Fixed bug where background color wasn't applied correctly on some partially selected contents.
+Version 4.6.5 (2017-08-02)
+    Added new inline_boundaries_selector that allows you to specify the elements that should have boundaries.
+    Added new local upload feature this allows the user to upload images directly from the image dialog.
+    Added a new api for providing meta data for plugins. It will show up in the help dialog if it's provided.
+    Fixed so that the notifications created by the notification manager are more screen reader accessible.
+    Fixed bug where changing the list format on multiple selected lists didn't change all of the lists.
+    Fixed bug where the nonbreaking plugin would insert multiple undo levels when pressing the tab key.
+    Fixed bug where delete/backspace wouldn't render a caret when all editor contents where deleted.
+    Fixed bug where delete/backspace wouldn't render a caret if the deleted element was a single contentEditable false element.
+    Fixed bug where the wordcount plugin wouldn't count words correctly if word where typed after applying a style format.
+    Fixed bug where the wordcount plugin would count mathematical formulas as multiple words for example 1+1=2.
+    Fixed bug where formatting of triple clicked blocks on Chrome/Safari would result in styles being added outside the visual selection.
+    Fixed bug where paste would add the contents to the end of the editor area when inline mode was used.
+    Fixed bug where toggling off bold formatting on text entered in a new paragraph would add an extra line break.
+    Fixed bug where autolink plugin would only produce a link on every other consecutive link on Firefox.
+    Fixed bug where it wasn't possible to select all contents if the content only had one pre element.
+    Fixed bug where sizzle would produce lagging behavior on some sites due to repaints caused by feature detection.
+    Fixed bug where toggling off inline formats wouldn't include the space on selected contents with leading or trailing spaces.
+    Fixed bug where the cut operation in UI wouldn't work in Chrome.
+    Fixed bug where some legacy editor initialization logic would throw exceptions about editor settings not being defined.
+    Fixed bug where it wasn't possible to apply text color to links if they where part of a non collapsed selection.
+    Fixed bug where an exception would be thrown if the user selected a video element and then moved the focus outside the editor.
+    Fixed bug where list operations didn't work if there where block elements inside the list items.
+    Fixed bug where applying block formats to lists wrapped in block elements would apply to all elements in that wrapped block.
+Version 4.6.4 (2017-06-13)
+    Fixed bug where the editor would move the caret when clicking on the scrollbar next to a content editable false block.
+    Fixed bug where the text color select dropdowns wasn't placed correctly when they didn't fit the width of the screen.
+    Fixed bug where the default editor line height wasn't working for mixed font size contents.
+    Fixed bug where the content css files for inline editors were loaded multiple times for multiple editor instances.
+    Fixed bug where the initial value of the font size/font family dropdowns wasn't displayed.
+    Fixed bug where the I18n api was not supporting arrays as the translation replacement values.
+    Fixed bug where chrome would display "The given range isn't in document." errors for invalid ranges passed to setRng.
+    Fixed bug where the compat3x plugin wasn't working since the global tinymce references wasn't resolved correctly.
+    Fixed bug where the preview plugin wasn't encoding the base url passed into the iframe contents producing a xss bug.
+    Fixed bug where the dom parser/serializer wasn't handling some special elements like noframes, title and xmp.
+    Fixed bug where the dom parser/serializer wasn't handling cdata sections with comments inside.
+    Fixed bug where the editor would scroll to the top of the editable area if a dialog was closed in inline mode.
+    Fixed bug where the link dialog would not display the right rel value if rel_list was configured.
+    Fixed bug where the context menu would select images on some platforms but not others.
+    Fixed bug where the filenames of images were not retained on dragged and drop into the editor from the desktop.
+    Fixed bug where the paste plugin would misrepresent newlines when pasting plain text and having forced_root_block configured.
+    Fixed so that the error messages for the imagetools plugin is more human readable.
+    Fixed so the internal validate setting for the parser/serializer can't be set from editor initialization settings.
+Version 4.6.3 (2017-05-30)
+    Fixed bug where the arrow keys didn't work correctly when navigating on nested inline boundary elements.
+    Fixed bug where delete/backspace didn't work correctly on nested inline boundary elements.
+    Fixed bug where image editing didn't work on subsequent edits of the same image.
+    Fixed bug where charmap descriptions wouldn't properly wrap if they exceeded the width of the box.
+    Fixed bug where the default image upload handler only accepted 200 as a valid http status code.
+    Fixed so rel on target=_blank links gets forced with only noopener instead of both noopener and noreferrer.
+Version 4.6.2 (2017-05-23)
+    Fixed bug where the SaxParser would run out of memory on very large documents.
+    Fixed bug with formatting like font size wasn't applied to del elements.
+    Fixed bug where various api calls would be throwing exceptions if they where invoked on a removed editor instance.
+    Fixed bug where the branding position would be incorrect if the editor was inside a hidden tab and then later showed.
+    Fixed bug where the color levels feature in the imagetools dialog wasn't working properly.
+    Fixed bug where imagetools dialog wouldn't pre-load images from CORS domains, before trying to prepare them for editing.
+    Fixed bug where the tab key would move the caret to the next table cell if being pressed inside a list inside a table.
+    Fixed bug where the cut/copy operations would loose parent context like the current format etc.
+    Fixed bug with format preview not working on invalid elements excluded by valid_elements.
+    Fixed bug where blocks would be merged in incorrect order on backspace/delete.
+    Fixed bug where zero length text nodes would cause issues with the undo logic if there where iframes present.
+    Fixed bug where the font size/family select lists would throw errors if the first node was a comment.
+    Fixed bug with csp having to allow local script evaluation since it was used to detect global scope.
+    Fixed bug where CSP required a relaxed option for javascript: URLs in unsupported legacy browsers.
+    Fixed bug where a fake caret would be rendered for td with the contenteditable=false.
+    Fixed bug where typing would be blocked on IE 11 when within a nested contenteditable=true/false structure.
+Version 4.6.1 (2017-05-10)
+    Added configuration option to list plugin to disable tab indentation.
+    Fixed bug where format change on very specific content could cause the selection to change.
+    Fixed bug where TinyMCE could not be lazyloaded through jquery integration.
+    Fixed bug where entities in style attributes weren't decoded correctly on paste in webkit.
+    Fixed bug where fontsize_formats option had been renamed incorrectly.
+    Fixed bug with broken backspace/delete behaviour between contenteditable=false blocks.
+    Fixed bug where it wasn't possible to backspace to the previous line with the inline boundaries functionality turned on.
+    Fixed bug where is wasn't possible to move caret left and right around a linked image with the inline boundaries functionality turned on.
+    Fixed bug where pressing enter after/before hr element threw exception. Patch contributed bradleyke.
+    Fixed so the CSS in the visualblocks plugin doesn't overwrite background color. Patch contributed by Christian Rank.
+    Fixed bug where multibyte characters weren't encoded correctly. Patch contributed by James Tarkenton.
+    Fixed bug where shift-click to select within contenteditable=true fields wasn't working.
+Version 4.6.0 (2017-05-04)
+    Dropped support for IE 8-10 due to market share and lack of support from Microsoft. See tinymce docs for details.
+    Added an inline boundary caret position feature that makes it easier to type at the beginning/end of links/code elements.
+    Added a help plugin that adds a button and a dialog showing the editor shortcuts and loaded plugins.
+    Added an inline_boundaries option that allows you to disable the inline boundary feature if it's not desired.
+    Added a new ScrollIntoView event that allows you to override the default scroll to element behavior.
+    Added role and aria- attributes as valid elements in the default valid elements config.
+    Added new internal flag for PastePreProcess/PastePostProcess this is useful to know if the paste was coming from an external source.
+    Added new ignore function to UndoManager this works similar to transact except that it doesn't add an undo level by default.
+    Fixed so that urls gets retained for images when being edited. This url is then passed on to the upload handler.
+    Fixed so that the editors would be initialized on readyState interactive instead of complete.
+    Fixed so that the init event of the editor gets fired once all contentCSS files have been properly loaded.
+    Fixed so that width/height of the editor gets taken from the textarea element if it's explicitly specified in styles.
+    Fixed so that keep_styles set to false no longer clones class/style from the previous paragraph on enter.
+    Fixed so that the default line-height is 1.2em to avoid zwnbsp characters from producing text rendering glitches on Windows.
+    Fixed so that loading errors of content css gets presented by a notification message.
+    Fixed so figure image elements can be linked when selected this wraps the figure image in a anchor element.
+    Fixed bug where it wasn't possible to copy/paste rows with colspans by using the table copy/paste feature.
+    Fixed bug where the protect setting wasn't properly applied to header/footer parts when using the fullpage plugin.
+    Fixed bug where custom formats that specified upper case element names where not applied correctly.
+    Fixed bug where some screen readers weren't reading buttons due to an aria specific fix for IE 8.
+    Fixed bug where cut wasn't working correctly on iOS due to it's clipboard API not working correctly.
+    Fixed bug where Edge would paste div elements instead of paragraphs when pasting plain text.
+    Fixed bug where the textpattern plugin wasn't dealing with trailing punctuations correctly.
+    Fixed bug where image editing would some times change the image format from jpg to png.
+    Fixed bug where some UI elements could be inserted into the toolbar even if they where not registered.
+    Fixed bug where it was possible to click the TD instead of the character in the character map and that caused an exception.
+    Fixed bug where the font size/font family dropdowns would sometimes show an incorrect value due to css not being loaded in time.
+    Fixed bug with the media plugin inserting undefined instead of retaining size when media_dimensions was set to false.
+    Fixed bug with deleting images when forced_root_blocks where set to false.
+    Fixed bug where input focus wasn't properly handled on nested content editable elements.
+    Fixed bug where Chrome/Firefox would throw an exception when selecting images due to recent change of setBaseAndExtent support.
+    Fixed bug where malformed blobs would throw exceptions now they are simply ignored.
+    Fixed bug where backspace/delete wouldn't work properly in some cases where all contents was selected in WebKit.
+    Fixed bug with Angular producing errors since it was expecting events objects to be patched with their custom properties.
+    Fixed bug where the formatter would apply formatting to spellchecker errors now all bogus elements are excluded.
+    Fixed bug with backspace/delete inside table caption elements wouldn't behave properly on IE 11.
+    Fixed bug where typing after a contenteditable false inline element could move the caret to the end of that element.
+    Fixed bug where backspace before/after contenteditable false blocks wouldn't properly remove the right element.
+    Fixed bug where backspace before/after contenteditable false inline elements wouldn't properly empty the current block element.
+    Fixed bug where vertical caret navigation with a custom line-height would sometimes match incorrect positions.
+    Fixed bug with paste on Edge where character encoding wasn't handled properly due to a browser bug.
+    Fixed bug with paste on Edge where extra fragment data was inserted into the contents when pasting.
+    Fixed bug with pasting contents when having a whole block element selected on WebKit could cause WebKit spans to appear.
+    Fixed bug where the visualchars plugin wasn't working correctly showing invisible nbsp characters.
+    Fixed bug where browsers would hang if you tried to load some malformed html contents.
+    Fixed bug where the init call promise wouldn't resolve if the specified selector didn't find any matching elements.
+    Fixed bug where the Schema isValidChild function was case sensitive.
+Version 4.5.3 (2017-02-01)
+    Added keyboard navigation for menu buttons when the menu is in focus.
+    Added api to the list plugin for setting custom classes/attributes on lists.
+    Added validation for the anchor plugin input field according to W3C id naming specifications.
+    Fixed bug where media placeholders were removed after resize with the forced_root_block setting set to false.
+    Fixed bug where deleting selections with similar sibling nodes sometimes deleted the whole document.
+    Fixed bug with inlite theme where several toolbars would appear scrolling when more than one instance of the editor was in use.
+    Fixed bug where the editor would throw error with the fontselect plugin on hidden editor instances in Firefox.
+    Fixed bug where the background color would not stretch to the font size.
+    Fixed bug where font size would be removed when changing background color.
+    Fixed bug where the undomanager trimmed away whitespace between nodes on undo/redo.
+    Fixed bug where media_dimensions=false in media plugin caused the editor to throw an error.
+    Fixed bug where IE was producing font/u elements within links on paste.
+    Fixed bug where some button tooltips were broken when compat3x was in use.
+    Fixed bug where backspace/delete/typeover would remove the caption element.
+    Fixed bug where powerspell failed to function when compat3x was enabled.
+    Fixed bug where it wasn't possible to apply sub/sup on text with large font size.
+    Fixed bug where pre tags with spaces weren't treated as content.
+    Fixed bug where Meta+A would select the entire document instead of all contents in nested ce=true elements.
+Version 4.5.2 (2017-01-04)
+    Added missing keyboard shortcut description for the underline menu item in the format menu.
+    Fixed bug where external blob urls wasn't properly handled by editor upload logic. Patch contributed by David Oviedo.
+    Fixed bug where urls wasn't treated as a single word by the wordcount plugin.
+    Fixed bug where nbsp characters wasn't treated as word delimiters by the wordcount plugin.
+    Fixed bug where editor instance wasn't properly passed to the format preview logic. Patch contributed by NullQuery.
+    Fixed bug where the fake caret wasn't hidden when you moved selection to a cE=false element.
+    Fixed bug where it wasn't possible to edit existing code sample blocks.
+    Fixed bug where it wasn't possible to delete editor contents if the selection included an empty block.
+    Fixed bug where the formatter wasn't expanding words on some international characters. Patch contributed by Martin Larochelle.
+    Fixed bug where the open link feature wasn't working correctly on IE 11.
+    Fixed bug where enter before/after a cE=false block wouldn't properly padd the paragraph with an br element.
+    Fixed so font size and font family select boxes always displays a value by using the runtime style as a fallback.
+    Fixed so missing plugins will be logged to console as warnings rather than halting the initialization of the editor.
+    Fixed so splitbuttons become normal buttons in advlist plugin if styles are empty. Patch contributed by René Schleusner.
+    Fixed so you can multi insert rows/cols by selecting table cells and using insert rows/columns.
+Version 4.5.1 (2016-12-07)
+    Fixed bug where the lists plugin wouldn't initialize without the advlist plugins if served from cdn.
+    Fixed bug where selectors with "*" would cause the style format preview to throw an error.
+    Fixed bug with toggling lists off on lists with empty list items would throw an error.
+    Fixed bug where editing images would produce non existing blob uris.
+    Fixed bug where the offscreen toc selection would be treated as the real toc element.
+    Fixed bug where the aria level attribute for element path would have an incorrect start index.
+    Fixed bug where the offscreen selection of cE=false that where very wide would be shown onscreen. Patch contributed by Steven Bufton.
+    Fixed so the default_link_target gets applied to links created by the autolink plugin.
+    Fixed so that the name attribute gets removed by the anchor plugin if editing anchors.
+Version 4.5.0 (2016-11-23)
+    Added new toc plugin allows you to insert table of contents based on editor headings.
+    Added new auto complete menu to all url fields. Adds history, link to anchors etc.
+    Added new sidebar api that allows you to add custom sidebar panels and buttons to toggle these.
+    Added new insert menu button that allows you to have multiple insert functions under the same menu button.
+    Added new open link feature to ctrl+click, alt+enter and context menu.
+    Added new media_embed_handler option to allow the media plugin to be populated with custom embeds.
+    Added new support for editing transparent images using the image tools dialog.
+    Added new images_reuse_filename option to allow filenames of images to be retained for upload.
+    Added new security feature where links with target="_blank" will by default get rel="noopener noreferrer".
+    Added new allow_unsafe_link_target to allow you to opt-out of the target="_blank" security feature.
+    Added new style_formats_autohide option to automatically hide styles based on context.
+    Added new codesample_content_css option to specify where the code sample prism css is loaded from.
+    Added new support for Japanese/Chinese word count following the unicode standards on this.
+    Added new fragmented undo levels this dramatically reduces flicker on contents with iframes.
+    Added new live previews for complex elements like table or lists.
+    Fixed bug where it wasn't possible to properly tab between controls in a dialog with a disabled form item control.
+    Fixed bug where firefox would generate a rectangle on elements produced after/before a cE=false elements.
+    Fixed bug with advlist plugin not switching list element format properly in some edge cases.
+    Fixed bug where col/rowspans wasn't correctly computed by the table plugin in some cases.
+    Fixed bug where the table plugin would thrown an error if object_resizing was disabled.
+    Fixed bug where some invalid markup would cause issues when running in XHTML mode. Patch contributed by Charles Bourasseau.
+    Fixed bug where the fullscreen class wouldn't be removed properly when closing dialogs.
+    Fixed bug where the PastePlainTextToggle event wasn't fired by the paste plugin when the state changed.
+    Fixed bug where table the row type wasn't properly updated in table row dialog. Patch contributed by Matthias Balmer.
+    Fixed bug where select all and cut wouldn't place caret focus back to the editor in WebKit. Patch contributed by Daniel Jalkut.
+    Fixed bug where applying cell/row properties to multiple cells/rows would reset other unchanged properties.
+    Fixed bug where some elements in the schema would have redundant/incorrect children.
+    Fixed bug where selector and target options would cause issues if used together.
+    Fixed bug where drag/drop of images from desktop on chrome would thrown an error.
+    Fixed bug where cut on WebKit/Blink wouldn't add an undo level.
+    Fixed bug where IE 11 would scroll to the cE=false elements when they where selected.
+    Fixed bug where keys like F5 wouldn't work when a cE=false element was selected.
+    Fixed bug where the undo manager wouldn't stop the typing state when commands where executed.
+    Fixed bug where unlink on wrapped links wouldn't work properly.
+    Fixed bug with drag/drop of images on WebKit where the image would be deleted form the source editor.
+    Fixed bug where the visual characters mode would be disabled when contents was extracted from the editor.
+    Fixed bug where some browsers would toggle of formats applied to the caret when clicking in the editor toolbar.
+    Fixed bug where the custom theme function wasn't working correctly.
+    Fixed bug where image option for custom buttons required you to have icon specified as well.
+    Fixed bug where the context menu and contextual toolbars would be visible at the same time and sometimes overlapping.
+    Fixed bug where the noneditable plugin would double wrap elements when using the noneditable_regexp option.
+    Fixed bug where tables would get padding instead of margin when you used the indent button.
+    Fixed bug where the charmap plugin wouldn't properly insert non breaking spaces.
+    Fixed bug where the color previews in color input boxes wasn't properly updated.
+    Fixed bug where the list items of previous lists wasn't merged in the right order.
+    Fixed bug where it wasn't possible to drag/drop inline-block cE=false elements on IE 11.
+    Fixed bug where some table cell merges would produce incorrect rowspan/colspan.
+    Fixed so the font size of the editor defaults to 14px instead of 11px this can be overridden by custom css.
+    Fixed so wordcount is debounced to reduce cpu hogging on larger texts.
+    Fixed so tinymce global gets properly exported as a module when used with some module bundlers.
+    Fixed so it's possible to specify what css properties you want to preview on specific formats.
+    Fixed so anchors are contentEditable=false while within the editor.
+    Fixed so selected contents gets wrapped in a inline code element by the codesample plugin.
+    Fixed so conditional comments gets properly stripped independent of case. Patch contributed by Georgii Dolzhykov.
+    Fixed so some escaped css sequences gets properly handled. Patch contributed by Georgii Dolzhykov.
+    Fixed so notifications with the same message doesn't get displayed at the same time.
+    Fixed so F10 can be used as an alternative key to focus to the toolbar.
+    Fixed various api documentation issues and typos.
+    Removed layer plugin since it wasn't really ported from 3.x and there doesn't seem to be much use for it.
+    Removed moxieplayer.swf from the media plugin since it wasn't used by the media plugin.
+    Removed format state from the advlist plugin to be more consistent with common word processors.
+Version 4.4.3 (2016-09-01)
+    Fixed bug where copy would produce an exception on Chrome.
+    Fixed bug where deleting lists on IE 11 would merge in correct text nodes.
+    Fixed bug where deleting partial lists with indentation wouldn't cause proper normalization.
+Version 4.4.2 (2016-08-25)
+    Added new importcss_exclusive option to disable unique selectors per group.
+    Added new group specific selector_converter option to importcss plugin.
+    Added new codesample_languages option to apply custom languages to codesample plugin.
+    Added new codesample_dialog_width/codesample_dialog_height options.
+    Fixed bug where fullscreen button had an incorrect keyboard shortcut.
+    Fixed bug where backspace/delete wouldn't work correctly from a block to a cE=false element.
+    Fixed bug where smartpaste wasn't detecting links with special characters in them like tilde.
+    Fixed bug where the editor wouldn't get proper focus if you clicked on a cE=false element.
+    Fixed bug where it wasn't possible to copy/paste table rows that had merged cells.
+    Fixed bug where merging cells could some times produce invalid col/rowspan attibute values.
+    Fixed bug where getBody would sometimes thrown an exception now it just returns null if the iframe is clobbered.
+    Fixed bug where drag/drop of cE=false element wasn't properly constrained to viewport.
+    Fixed bug where contextmenu on Mac would collapse any selection to a caret.
+    Fixed bug where rtl mode wasn't rendered properly when loading a language pack with the rtl flag.
+    Fixed bug where Kamer word bounderies would be stripped from contents.
+    Fixed bug where lists would sometimes render two dots or numbers on the same line.
+    Fixed bug where the skin_url wasn't used by the inlite theme.
+    Fixed so data attributes are ignored when comparing formats in the formatter.
+    Fixed so it's possible to disable inline toolbars in the inlite theme.
+    Fixed so template dialog gets resized if it doesn't fit the window viewport.
+Version 4.4.1 (2016-07-26)
+    Added smart_paste option to paste plugin to allow disabling the paste behavior if needed.
+    Fixed bug where png urls wasn't properly detected by the smart paste logic.
+    Fixed bug where the element path wasn't working properly when multiple editor instances where used.
+    Fixed bug with creating lists out of multiple paragraphs would just create one list item instead of multiple.
+    Fixed bug where scroll position wasn't properly handled by the inlite theme to place the toolbar properly.
+    Fixed bug where multiple instances of the editor using the inlite theme didn't render the toolbar properly.
+    Fixed bug where the shortcut label for fullscreen mode didn't match the actual shortcut key.
+    Fixed bug where it wasn't possible to select cE=false blocks using touch devices on for example iOS.
+    Fixed bug where it was possible to select the child image within a cE=false on IE 11.
+    Fixed so inserts of html containing lists doesn't merge with any existing lists unless it's a paste operation.
+Version 4.4.0 (2016-06-30)
+    Added new inlite theme this is a more lightweight inline UI.
+    Added smarter paste logic that auto detects urls in the clipboard and inserts images/links based on that.
+    Added a better image resize algorithm for better image quality in the imagetools plugin.
+    Fixed bug where it wasn't possible to drag/dropping cE=false elements on FF.
+    Fixed bug where backspace/delete before/after a cE=false block would produce a new paragraph.
+    Fixed bug where list style type css property wasn't preserved when indenting lists.
+    Fixed bug where merging of lists where done even if the list style type was different.
+    Fixed bug where the image_dataimg_filter function wasn't used when pasting images.
+    Fixed bug where nested editable within a non editable element would cause scroll on focus in Chrome.
+    Fixed so invalid targets for inline mode is blocked on initialization. We only support elements that can have children.
+Version 4.3.13 (2016-06-08)
+    Added characters with a diacritical mark to charmap plugin. Patch contributed by Dominik Schilling.
+    Added better error handling if the image proxy service would produce errors.
+    Fixed issue with pasting list items into list items would produce nested list rather than a merged list.
+    Fixed bug where table selection could get stuck in selection mode for inline editors.
+    Fixed bug where it was possible to place the caret inside the resize grid elements.
+    Fixed bug where it wasn't possible to place in elements horizontally adjacent cE=false blocks.
+    Fixed bug where multiple notifications wouldn't be properly placed on screen.
+    Fixed bug where multiple editor instance of the same id could be produces in some specific integrations.
+Version 4.3.12 (2016-05-10)
+    Fixed bug where focus calls couldn't be made inside the editors PostRender event handler.
+    Fixed bug where some translations wouldn't work as expected due to a bug in editor.translate.
+    Fixed bug where the node change event could fire with a node out side the root of the editor.
+    Fixed bug where Chrome wouldn't properly present the keyboard paste clipboard details when paste was clicked.
+    Fixed bug where merged cells in tables couldn't be selected from right to left.
+    Fixed bug where insert row wouldn't properly update a merged cells rowspan property.
+    Fixed bug where the color input boxes preview field wasn't properly set on initialization.
+    Fixed bug where IME composition inside table cells wouldn't work as expected on IE 11.
+    Fixed so all shadow dom support is under and experimental flag due to flaky browser support.
+Version 4.3.11 (2016-04-25)
+    Fixed bug where it wasn't possible to insert empty blocks though the API unless they where padded.
+    Fixed bug where you couldn't type the Euro character on Windows.
+    Fixed bug where backspace/delete from a cE=false element to a text block didn't work properly.
+    Fixed bug where the text color default grid would render incorrectly.
+    Fixed bug where the codesample plugin wouldn't load the css in the editor for multiple editors.
+    Fixed so the codesample plugin textarea gets focused by default.
+Version 4.3.10 (2016-04-12)
+    Fixed bug where the key "y" on WebKit couldn't be entered due to conflict with keycode for F10 on keypress.
+Version 4.3.9 (2016-04-12)
+    Added support for focusing the contextual toolbars using keyboard.
+    Added keyboard support for slider UI controls. You can no increase/decrease using arrow keys.
+    Added url pattern matching for Dailymotion to media plugin. Patch contributed by Bertrand Darbon.
+    Added body_class to template plugin preview. Patch contributed by Milen Petrinski.
+    Added options to better override textcolor pickers with custom colors. Patch contributed by Xavier Boubert.
+    Added visual arrows to inline contextual toolbars so that they point to the element being active.
+    Fixed so toolbars for tables or other larger elements get better positioned below the scrollable viewport.
+    Fixed bug where it was possible to click links inside cE=false blocks.
+    Fixed bug where event targets wasn't properly handled in Safari Technical Preview.
+    Fixed bug where drag/drop text in FF 45 would make the editor caret invisible.
+    Fixed bug where the remove state wasn't properly set on editor instances when detected as clobbered.
+    Fixed bug where offscreen selection of some cE=false elements would render onscreen. Patch contributed by Steven Bufton
+    Fixed bug where enter would clone styles out side the root on editors inside a span. Patch contributed by ChristophKaser.
+    Fixed bug where drag/drop of images into the editor didn't work correctly in FF.
+    Fixed so the first item in panels for the imagetools dialog gets proper keyboard focus.
+    Changed the Meta+Shift+F shortcut to Ctrl+Shift+F since Czech, Slovak, Polish languages used the first one for input.
+Version 4.3.8 (2016-03-15)
+    Fixed bug where inserting HR at the end of a block element would produce an extra empty block.
+    Fixed bug where links would be clickable when readonly mode was enabled.
+    Fixed bug where the formatter would normalize to the wrong node on very specific content.
+    Fixed bug where some nested list items couldn't be indented properly.
+    Fixed bug where links where clickable in the preview dialog.
+    Fixed so the alt attribute doesn't get padded with an empty value by default.
+    Fixed so nested alignment works more correctly. You will now alter the alignment to the closest block parent.
+Version 4.3.7 (2016-03-02)
+    Fixed bug where incorrect icons would be rendered for imagetools edit and color levels.
+    Fixed bug where navigation using arrow keys inside a SelectBox didn't move up/down.
+    Fixed bug where the visualblocks plugin would render borders round internal UI elements.
+Version 4.3.6 (2016-03-01)
+    Added new paste_remember_plaintext_info option to allow a global disable of the plain text mode notification.
+    Added new PastePlainTextToggle event that fires when plain text mode toggles on/off.
+    Fixed bug where it wasn't possible to select media elements since the drag logic would snap it to mouse cursor.
+    Fixed bug where it was hard to place the caret inside nested cE=true elements when the outer cE=false element was focused.
+    Fixed bug where editors wouldn't properly initialize if both selector and mode where used.
+    Fixed bug where IME input inside table cells would switch the IME off.
+    Fixed bug where selection inside the first table cell would cause the whole table cell to get selected.
+    Fixed bug where error handling of images being uploaded wouldn't properly handle faulty statuses.
+    Fixed bug where inserting contents before a HR would cause an exception to be thrown.
+    Fixed bug where copy/paste of Excel data would be inserted as an image.
+    Fixed caret position issues with copy/paste of inline block cE=false elements.
+    Fixed issues with various menu item focus bugs in Chrome. Where the focused menu bar item wasn't properly blurred.
+    Fixed so the notifications have a solid background since it would be hard to read if there where text under it.
+    Fixed so notifications gets animated similar to the ones used by dialogs.
+    Fixed so larger images that gets pasted is handled better.
+    Fixed so the window close button is more uniform on various platform and also increased it's hit area.
+Version 4.3.5 (2016-02-11)
+    Npm version bump due to package not being fully updated.
+Version 4.3.4 (2016-02-11)
+    Added new OpenWindow/CloseWindow events that gets fired when windows open/close.
+    Added new NewCell/NewRow events that gets fired when table cells/rows are created.
+    Added new Promise return value to tinymce.init makes it easier to handle initialization.
+    Removed the jQuery version the jQuery plugin is now moved into the main package.
+    Removed jscs from build process since eslint can now handle code style checking.
+    Fixed various bugs with drag/drop of contentEditable:false elements.
+    Fixed bug where deleting of very specific nested list items would result in an odd list.
+    Fixed bug where lists would get merged with adjacent lists outside the editable inline root.
+    Fixed bug where MS Edge would crash when closing a dialog then clicking a menu item.
+    Fixed bug where table cell selection would add undo levels.
+    Fixed bug where table cell selection wasn't removed when inline editor where removed.
+    Fixed bug where table cell selection wouldn't work properly on nested tables.
+    Fixed bug where table merge menu would be available when merging between thead and tbody.
+    Fixed bug where table row/column resize wouldn't get properly removed when the editor was removed.
+    Fixed bug where Chrome would scroll to the editor if there where a empty hash value in document url.
+    Fixed bug where the cache suffix wouldn't work correctly with the importcss plugin.
+    Fixed bug where selection wouldn't work properly on MS Edge on Windows Phone 10.
+    Fixed so adjacent pre blocks gets joined into one pre block since that seems like the user intent.
+    Fixed so events gets properly dispatched in shadow dom. Patch provided by Nazar Mokrynskyi.
+Version 4.3.3 (2016-01-14)
+    Added new table_resize_bars configuration setting.  This setting allows you to disable the table resize bars.
+    Added new beforeInitialize event to tinymce.util.XHR lets you modify XHR properties before open. Patch contributed by Brent Clintel.
+    Added new autolink_pattern setting to autolink plugin. Enables you to override the default autolink formats. Patch contributed by Ben Tiedt.
+    Added new charmap option that lets you override the default charmap of the charmap plugin.
+    Added new charmap_append option that lets you add new characters to the default charmap of the charmap plugin.
+    Added new insertCustomChar event that gets fired when a character is inserted by the charmap plugin.
+    Fixed bug where table cells started with a superfluous &nbsp; in IE10+.
+    Fixed bug where table plugin would retain all BR tags when cells were merged.
+    Fixed bug where media plugin would strip underscores from youtube urls.
+    Fixed bug where IME input would fail on IE 11 if you typed within a table.
+    Fixed bug where double click selection of a word would remove the space before the word on insert contents.
+    Fixed bug where table plugin would produce exceptions when hovering tables with invalid structure.
+    Fixed bug where fullscreen wouldn't scroll back to it's original position when untoggled.
+    Fixed so the template plugins templates setting can be a function that gets a callback that can provide templates.
+Version 4.3.2 (2015-12-14)
+    Fixed bug where the resize bars for table cells were not affected by the object_resizing property.
+    Fixed bug where the contextual table toolbar would appear incorrectly if TinyMCE was initialized inline inside a table.
+    Fixed bug where resizing table cells did not fire a node change event or add an undo level.
+    Fixed bug where double click selection of text on IE 11 wouldn't work properly.
+    Fixed bug where codesample plugin would incorrectly produce br elements inside code elements.
+    Fixed bug where media plugin would strip dashes from youtube urls.
+    Fixed bug where it was possible to move the caret into the table resize bars.
+    Fixed bug where drag/drop into a cE=false element was possible on IE.
+Version 4.3.1 (2015-11-30)
+    Fixed so it's possible to disable the table inline toolbar by setting it to false or an empty string.
+    Fixed bug where it wasn't possible to resize some tables using the drag handles.
+    Fixed bug where unique id:s would clash for multiple editor instances and cE=false selections.
+    Fixed bug where the same plugin could be initialized multiple times.
+    Fixed bug where the table inline toolbars would be displayed at the same time as the image toolbars.
+    Fixed bug where the table selection rect wouldn't be removed when selecting another control element.
+Version 4.3.0 (2015-11-23)
+    Added new table column/row resize support. Makes it a lot more easy to resize the columns/rows in a table.
+    Added new table inline toolbar. Makes it easier to for example add new rows or columns to a table.
+    Added new notification API. Lets you display floating notifications to the end user.
+    Added new codesample plugin that lets you insert syntax highlighted pre elements into the editor.
+    Added new image_caption to images. Lets you create images with captions using a HTML5 figure/figcaption elements.
+    Added new live previews of embeded videos. Lets you play the video right inside the editor.
+    Added new setDirty method and "dirty" event to the editor. Makes it easier to track the dirty state change.
+    Added new setMode method to Editor instances that lets you dynamically switch between design/readonly.
+    Added new core support for contentEditable=false elements within the editor overrides the browsers broken behavior.
+    Rewrote the noneditable plugin to use the new contentEditable false core logic.
+    Fixed so the dirty state doesn't set to false automatically when the undo index is set to 0.
+    Fixed the Selection.placeCaretAt so it works better on IE when the coordinate is between paragraphs.
+    Fixed bug where data-mce-bogus="all" element contents where counted by the word count plugin.
+    Fixed bug where contentEditable=false elements would be indented by the indent buttons.
+    Fixed bug where images within contentEditable=false would be selected in WebKit on mouse click.
+    Fixed bug in DOMUntils split method where the replacement parameter wouldn't work on specific cases.
+    Fixed bug where the importcss plugin would import classes from the skin content css file.
+    Fixed so all button variants have a wrapping span for it's text to make it easier to skin.
+    Fixed so it's easier to exit pre block using the arrow keys.
+    Fixed bug where listboxes with fix widths didn't render correctly.
+Version 4.2.8 (2015-11-13)
+    Fixed bug where it was possible to delete tables as the inline root element if all columns where selected.
+    Fixed bug where the UI buttons active state wasn't properly updated due to recent refactoring of that logic.
+Version 4.2.7 (2015-10-27)
+    Fixed bug where backspace/delete would remove all formats on the last paragraph character in WebKit/Blink.
+    Fixed bug where backspace within a inline format element with a bogus caret container would move the caret.
+    Fixed bug where backspace/delete on selected table cells wouldn't add an undo level.
+    Fixed bug where script tags embedded within the editor could sometimes get a mce- prefix prepended to them
+    Fixed bug where validate: false option could produce an error to be thrown from the Serialization step.
+    Fixed bug where inline editing of a table as the root element could let the user delete that table.
+    Fixed bug where inline editing of a table as the root element wouldn't properly handle enter key.
+    Fixed bug where inline editing of a table as the root element would normalize the selection incorrectly.
+    Fixed bug where inline editing of a list as the root element could let the user delete that list.
+    Fixed bug where inline editing of a list as the root element could let the user split that list.
+    Fixed bug where resize handles would be rendered on editable root elements such as table.
+Version 4.2.6 (2015-09-28)
+    Added capability to set request headers when using XHRs.
+    Added capability to upload local images automatically default delay is set to 30 seconds after editing images.
+    Added commands ids mceEditImage, mceAchor and mceMedia to be avaiable from execCommand.
+    Added Edge browser to saucelabs grunt task. Patch contributed by John-David Dalton.
+    Fixed bug where blob uris not produced by tinymce would produce HTML invalid markup.
+    Fixed bug where selection of contents of a nearly empty editor in Edge would sometimes fail.
+    Fixed bug where color styles woudln't be retained on copy/paste in Blink/Webkit.
+    Fixed bug where the table plugin would throw an error when inserting rows after a child table.
+    Fixed bug where the template plugin wouldn't handle functions as variable replacements.
+    Fixed bug where undo/redo sometimes wouldn't work properly when applying formatting collapsed ranges.
+    Fixed bug where shift+delete wouldn't do a cut operation on Blink/WebKit.
+    Fixed bug where cut action wouldn't properly store the before selection bookmark for the undo level.
+    Fixed bug where backspace in side an empty list element on IE would loose editor focus.
+    Fixed bug where the save plugin wouldn't enable the buttons when a change occurred.
+    Fixed bug where Edge wouldn't initialize the editor if a document.domain was specified.
+    Fixed bug where enter key before nested images would sometimes not properly expand the previous block.
+    Fixed bug where the inline toolbars wouldn't get properly hidden when blurring the editor instance.
+    Fixed bug where Edge would paste Chinese characters on some Windows 10 installations.
+    Fixed bug where IME would loose focus on IE 11 due to the double trailing br bug fix.
+    Fixed bug where the proxy url in imagetools was incorrect. Patch contributed by Wong Ho Wang.
+Version 4.2.5 (2015-08-31)
+    Added fullscreen capability to embedded youtube and vimeo videos.
+    Fixed bug where the uploadImages call didn't work on IE 10.
+    Fixed bug where image place holders would be uploaded by uploadImages call.
+    Fixed bug where images marked with bogus would be uploaded by the uploadImages call.
+    Fixed bug where multiple calls to uploadImages would result in decreased performance.
+    Fixed bug where pagebreaks were editable to imagetools patch contributed by Rasmus Wallin.
+    Fixed bug where the element path could cause too much recursion exception.
+    Fixed bug for domains containing ".min". Patch contributed by Loïc Février.
+    Fixed so validation of external links to accept a number after www. Patch contributed by Victor Carvalho.
+    Fixed so the charmap is exposed though execCommand. Patch contributed by Matthew Will.
+    Fixed so that the image uploads are concurrent for improved performance.
+    Fixed various grammar problems in inline documentation. Patches provided by nikolas.
+Version 4.2.4 (2015-08-17)
+    Added picture as a valid element to the HTML 5 schema. Patch contributed by Adam Taylor.
+    Fixed bug where contents would be duplicated on drag/drop within the same editor.
+    Fixed bug where floating/alignment of images on Edge wouldn't work properly.
+    Fixed bug where it wasn't possible to drag images on IE 11.
+    Fixed bug where image selection on Edge would sometimes fail.
+    Fixed bug where contextual toolbars icons wasn't rendered properly when using the toolbar_items_size.
+    Fixed bug where searchreplace dialog doesn't get prefilled with the selected text.
+    Fixed bug where fragmented matches wouldn't get properly replaced by the searchreplace plugin.
+    Fixed bug where enter key wouldn't place the caret if was after a trailing space within an inline element.
+    Fixed bug where the autolink plugin could produce multiple links for the same text on Gecko.
+    Fixed bug where EditorUpload could sometimes throw an exception if the blob wasn't found.
+    Fixed xss issues with media plugin not properly filtering out some script attributes.
+Version 4.2.3 (2015-07-30)
+    Fixed bug where image selection wasn't possible on Edge due to incompatible setBaseAndExtend API.
+    Fixed bug where image blobs urls where not properly destroyed by the imagetools plugin.
+    Fixed bug where keyboard shortcuts wasn't working correctly on IE 8.
+    Fixed skin issue where the borders of panels where not visible on IE 8.
+Version 4.2.2 (2015-07-22)
+    Fixed bug where float panels were not being hidden on inline editor blur when fixed_toolbar_container config option was in use.
+    Fixed bug where combobox states wasn't properly updated if contents where updated without keyboard.
+    Fixed bug where pasting into textbox or combobox would move the caret to the end of text.
+    Fixed bug where removal of bogus span elements before block elements would remove whitespace between nodes.
+    Fixed bug where repositioning of inline toolbars where async and producing errors if the editor was removed from DOM to early. Patch by iseulde.
+    Fixed bug where element path wasn't working correctly. Patch contributed by iseulde.
+    Fixed bug where menus wasn't rendered correctly when custom images where added to a menu. Patch contributed by Naim Hammadi.
+Version 4.2.1 (2015-06-29)
+    Fixed bug where back/forward buttons in the browser would render blob images as broken images.
+    Fixed bug where Firefox would throw regexp to big error when replacing huge base64 chunks.
+    Fixed bug rendering issues with resize and context toolbars not being placed properly until next animation frame.
+    Fixed bug where the rendering of the image while cropping would some times not be centered correctly.
+    Fixed bug where listbox items with submenus would me selected as active.
+    Fixed bug where context menu where throwing an error when rendering.
+    Fixed bug where resize both option wasn't working due to resent addClass API change. Patch contributed by Jogai.
+    Fixed bug where a hideAll call for container rendered inline toolbars would throw an error.
+    Fixed bug where onclick event handler on combobox could cause issues if element.id was a function by some polluting libraries.
+    Fixed bug where listboxes wouldn't get proper selected sub menu item when using link_list or image_list.
+    Fixed so the UI controls are as wide as 4.1.x to avoid wrapping controls in toolbars.
+    Fixed so the imagetools dialog is adaptive for smaller screen sizes.
+Version 4.2.0 (2015-06-25)
+    Added new flat default skin to make the UI more modern.
+    Added new imagetools plugin, lets you crop/resize and apply filters to images.
+    Added new contextual toolbars support to the API lets you add floating toolbars for specific CSS selectors.
+    Added new promise feature fill as tinymce.util.Promise.
+    Added new built in image upload feature lets you upload any base64 encoded image within the editor as files.
+    Fixed bug where resize handles would appear in the right position in the wrong editor when switching between resizable content in different inline editors.
+    Fixed bug where tables would not be inserted in inline mode due to previous float panel fix.
+    Fixed bug where floating panels would remain open when focus was lost on inline editors.
+    Fixed bug where cut command on Chrome would thrown a browser security exception.
+    Fixed bug where IE 11 sometimes would report an incorrect size for images in the image dialog.
+    Fixed bug where it wasn't possible to remove inline formatting at the end of block elements.
+    Fixed bug where it wasn't possible to delete table cell contents when cell selection was vertical.
+    Fixed bug where table cell wasn't emptied from block elements if delete/backspace where pressed in empty cell.
+    Fixed bug where cmd+shift+arrow didn't work correctly on Firefox mac when selecting to start/end of line.
+    Fixed bug where removal of bogus elements would sometimes remove whitespace between nodes.
+    Fixed bug where the resize handles wasn't updated when the main window was resized.
+    Fixed so script elements gets removed by default to prevent possible XSS issues in default config implementations.
+    Fixed so the UI doesn't need manual reflows when using non native layout managers.
+    Fixed so base64 encoded images doesn't slow down the editor on modern browsers while editing.
+    Fixed so all UI elements uses touch events to improve mobile device support.
+    Removed the touch click quirks patch for iOS since it did more harm than good.
+    Removed the non proportional resize handles since. Unproportional resize can still be done by holding the shift key.
+Version 4.1.10 (2015-05-05)
+    Fixed bug where plugins loaded with compat3x would sometimes throw errors when loading using the jQuery version.
+    Fixed bug where extra empty paragraphs would get deleted in WebKit/Blink due to recent Quriks fix.
+    Fixed bug where the editor wouldn't work properly on IE 12 due to some required browser sniffing.
+    Fixed bug where formatting shortcut keys where interfering with Mac OS X screenshot keys.
+    Fixed bug where the caret wouldn't move to the next/previous line boundary on Cmd+Left/Right on Gecko.
+    Fixed bug where it wasn't possible to remove formats from very specific nested contents.
+    Fixed bug where undo levels wasn't produced when typing letters using the shift or alt+ctrl modifiers.
+    Fixed bug where the dirty state wasn't properly updated when typing using the shift or alt+ctrl modifiers.
+    Fixed bug where an error would be thrown if an autofocused editor was destroyed quickly after its initialization. Patch provided by thorn0.
+    Fixed issue with dirty state not being properly updated on redo operation.
+    Fixed issue with entity decoder not handling incorrectly written numeric entities.
+    Fixed issue where some PI element values wouldn't be properly encoded.
+Version 4.1.9 (2015-03-10)
+    Fixed bug where indentation wouldn't work properly for non list elements.
+    Fixed bug with image plugin not pulling the image dimensions out correctly if a custom document_base_url was used.
+    Fixed bug where ctrl+alt+[1-9] would conflict with the AltGr+[1-9] on Windows. New shortcuts is ctrl+shift+[1-9].
+    Fixed bug with removing formatting on nodes in inline mode would sometimes include nodes outside the editor body.
+    Fixed bug where extra nbsp:s would be inserted when you replaced a word surrounded by spaces using insertContent.
+    Fixed bug with pasting from Google Docs would produce extra strong elements and line feeds.
+Version 4.1.8 (2015-03-05)
+    Added new html5 sizes attribute to img elements used together with srcset.
+    Added new elementpath option that makes it possible to disable the element path but keep the statusbar.
+    Added new option table_style_by_css for the table plugin to set table styling with css rather than table attributes.
+    Added new link_assume_external_targets option to prompt the user to prepend http:// prefix if the supplied link does not contain a protocol prefix.
+    Added new image_prepend_url option to allow a custom base path/url to be added to images.
+    Added new table_appearance_options option to make it possible to disable some options.
+    Added new image_title option to make it possible to alter the title of the image, disabled by default.
+    Fixed bug where selection starting from out side of the body wouldn't produce a proper selection range on IE 11.
+    Fixed bug where pressing enter twice before a table moves the cursor in the table and causes a javascript error.
+    Fixed bug where advanced image styles were not respected.
+    Fixed bug where the less common Shift+Delete didn't produce a proper cut operation on WebKit browsers.
+    Fixed bug where image/media size constrain logic would produce NaN when handling non number values.
+    Fixed bug where internal classes where removed by the removeformat command.
+    Fixed bug with creating links table cell contents with a specific selection would throw a exceptions on WebKit/Blink.
+    Fixed bug where valid_classes option didn't work as expected according to docs. Patch provided by thorn0.
+    Fixed bug where jQuery plugin would patch the internal methods multiple times. Patch provided by Drew Martin.
+    Fixed bug where backspace key wouldn't delete the current selection of newly formatted content.
+    Fixed bug where type over of inline formatting elements wouldn't properly keep the format on WebKit/Blink.
+    Fixed bug where selection needed to be properly normalized on modern IE versions.
+    Fixed bug where Command+Backspace didn't properly delete the whole line of text but the previous word.
+    Fixed bug where UI active states wheren't properly updated on IE if you placed caret within the current range.
+    Fixed bug where delete/backspace on WebKit/Blink would remove span elements created by the user.
+    Fixed bug where delete/backspace would produce incorrect results when deleting between two text blocks with br elements.
+    Fixed bug where captions where removed when pasting from MS Office.
+    Fixed bug where lists plugin wouldn't properly remove fully selected nested lists.
+    Fixed bug where the ttf font used for icons would throw an warning message on Gecko on Mac OS X.
+    Fixed a bug where applying a color to text did not update the undo/redo history.
+    Fixed so shy entities gets displayed when using the visualchars plugin.
+    Fixed so removeformat removes ins/del by default since these might be used for strikethough.
+    Fixed so multiple language packs can be loaded and added to the global I18n data structure.
+    Fixed so transparent color selection gets treated as a normal color selection. Patch contributed by Alexander Hofbauer.
+    Fixed so it's possible to disable autoresize_overflow_padding, autoresize_bottom_margin options by setting them to false.
+    Fixed so the charmap plugin shows the description of the character in the dialog. Patch contributed by Jelle Hissink.
+    Removed address from the default list of block formats since it tends to be missused.
+    Fixed so the pre block format is called preformatted to make it more verbose.
+    Fixed so it's possible to context scope translation strings this isn't needed most of the time.
+    Fixed so the max length of the width/height input fields of the media dialog is 5 instead of 3.
+    Fixed so drag/dropped contents gets properly processed by paste plugin since it's basically a paste. Patch contributed by Greg Fairbanks.
+    Fixed so shortcut keys for headers is ctrl+alt+[1-9] instead of ctrl+[1-9] since these are for switching tabs in the browsers.
+    Fixed so "u" doesn't get converted into a span element by the legacy input filter. Since this is now a valid HTML5 element.
+    Fixed font families in order to provide appropriate web-safe fonts.
+Version 4.1.7 (2014-11-27)
+    Added HTML5 schema support for srcset, source and picture. Patch contributed by mattheu.
+    Added new cache_suffix setting to enable cache busting by producing unique urls.
+    Added new paste_convert_word_fake_lists option to enable users to disable the fake lists convert logic.
+    Fixed so advlist style changes adds undo levels for each change.
+    Fixed bug where WebKit would sometimes produce an exception when the autolink plugin where looking for URLs.
+    Fixed bug where IE 7 wouldn't be rendered properly due to aggressive css compression.
+    Fixed bug where DomQuery wouldn't accept window as constructor element.
+    Fixed bug where the color picker in 3.x dialogs wouldn't work properly. Patch contributed by Callidior.
+    Fixed bug where the image plugin wouldn't respect the document_base_url.
+    Fixed bug where the jQuery plugin would fail to append to elements named array prototype names.
+Version 4.1.6 (2014-10-08)
+    Fixed bug with clicking on the scrollbar of the iframe would cause a JS error to be thrown.
+    Fixed bug where null would produce an exception if you passed it to selection.setRng.
+    Fixed bug where Ctrl/Cmd+Tab would indent the current list item if you switched tabs in the browser.
+    Fixed bug where pasting empty cells from Excel would result in a broken table.
+    Fixed bug where it wasn't possible to switch back to default list style type.
+    Fixed issue where the select all quirk fix would fire for other modifiers than Ctrl/Cmd combinations.
+    Replaced jake with grunt since it is more mainstream and has better plugin support.
+Version 4.1.5 (2014-09-09)
+    Fixed bug where sometimes the resize rectangles wouldn't properly render on images on WebKit/Blink.
+    Fixed bug in list plugin where delete/backspace would merge empty LI elements in lists incorrectly.
+    Fixed bug where empty list elements would result in empty LI elements without it's parent container.
+    Fixed bug where backspace in empty caret formatted element could produce an type error exception of Gecko.
+    Fixed bug where lists pasted from word with a custom start index above 9 wouldn't be properly handled.
+    Fixed bug where tabfocus plugin would tab out of the editor instance even if the default action was prevented.
+    Fixed bug where tabfocus wouldn't tab properly to other adjacent editor instances.
+    Fixed bug where the DOMUtils setStyles wouldn't properly removed or update the data-mce-style attribute.
+    Fixed bug where dialog select boxes would be placed incorrectly if document.body wasn't statically positioned.
+    Fixed bug where pasting would sometimes scroll to the top of page if the user was using the autoresize plugin.
+    Fixed bug where caret wouldn't be properly rendered by Chrome when clicking on the iframes documentElement.
+    Fixed so custom images for menubutton/splitbutton can be provided. Patch contributed by Naim Hammadi.
+    Fixed so the default action of windows closing can be prevented by blocking the default action of the close event.
+    Fixed so nodeChange and focus of the editor isn't automatically performed when opening sub dialogs.
+Version 4.1.4 (2014-08-21)
+    Added new media_filter_html option to media plugin that blocks any conditional comments, scripts etc within a video element.
+    Added new content_security_policy option allows you to set custom policy for iframe contents. Patch contributed by Francois Chagnon.
+    Fixed bug where activate/deactivate events wasn't firing properly when switching between editors.
+    Fixed bug where placing the caret on iOS was difficult due to a WebKit bug with touch events.
+    Fixed bug where the resize helper wouldn't render properly on older IE versions.
+    Fixed bug where resizing images inside tables on older IE versions would sometimes fail depending mouse position.
+    Fixed bug where editor.insertContent would produce an exception when inserting select/option elements.
+    Fixed bug where extra empty paragraphs would be produced if block elements where inserted inside span elements.
+    Fixed bug where the spellchecker menu item wouldn't be properly checked if spell checking was started before it was rendered.
+    Fixed bug where the DomQuery filter function wouldn't remove non elements from collection.
+    Fixed bug where document with custom document.domain wouldn't properly render the editor.
+    Fixed bug where IE 8 would throw exception when trying to enter invalid color values into colorboxes.
+    Fixed bug where undo manager could incorrectly add an extra undo level when custom resize handles was removed.
+    Fixed bug where it wouldn't be possible to alter cell properties properly on table cells on IE 8.
+    Fixed so the color picker button in table dialog isn't shown unless you include the colorpicker plugin or add your own custom color picker.
+    Fixed so activate/deactivate events fire when windowManager opens a window since.
+    Fixed so the table advtab options isn't separated by an underscore to normalize naming with image_advtab option.
+    Fixed so the table cell dialog has proper padding when the advanced tab in disabled.
+Version 4.1.3 (2014-07-29)
+    Added event binding logic to tinymce.util.XHR making it possible to override headers and settings before any request is made.
+    Fixed bug where drag events wasn't fireing properly on older IE versions since the event handlers where bound to document.
+    Fixed bug where drag/dropping contents within the editor on IE would force the contents into plain text mode even if it was internal content.
+    Fixed bug where IE 7 wouldn't open menus properly due to a resize bug in the browser auto closing them immediately.
+    Fixed bug where the DOMUtils getPos logic wouldn't produce a valid coordinate inside the body if the body was positioned non static.
+    Fixed bug where the element path and format state wasn't properly updated if you had the wordcount plugin enabled.
+    Fixed bug where a comment at the beginning of source would produce an exception in the formatter logic.
+    Fixed bug where setAttrib/getAttrib on null would throw exception together with any hooked attributes like style.
+    Fixed bug where table sizes wasn't properly retained when copy/pasting on WebKit/Blink.
+    Fixed bug where WebKit/Blink would produce colors in RGB format instead of the forced HEX format when deleting contents.
+    Fixed bug where the width attribute wasn't updated on tables if you changed the size inside the table dialog.
+    Fixed bug where control selection wasn't properly handled when the caret was placed directly after an image.
+    Fixed bug where selecting the contents of table cells using the selection.select method wouldn't place the caret properly.
+    Fixed bug where the selection state for images wasn't removed when placing the caret right after an image on WebKit/Blink.
+    Fixed bug where all events wasn't properly unbound when and editor instance was removed or destroyed by some external innerHTML call.
+    Fixed bug where it wasn't possible or very hard to select images on iOS when the onscreen keyboard was visible.
+    Fixed so auto_focus can take a boolean argument this will auto focus the last initialized editor might be useful for single inits.
+    Fixed so word auto detect lists logic works better for faked lists that doesn't have specific markup.
+    Fixed so nodeChange gets fired on mouseup as it used to before 4.1.1 we optimized that event to fire less often.
+    Removed the finish menu item from spellchecker menu since it's redundant you can stop spellchecking by toggling menu item or button.
+Version 4.1.2 (2014-07-15)
+    Added offset/grep to DomQuery class works basically the same as it's jQuery equivalent.
+    Fixed bug where backspace/delete or setContent with an empty string would remove header data when using the fullpage plugin.
+    Fixed bug where tinymce.remove with a selector not matching any editors would remove all editors.
+    Fixed bug where resizing of the editor didn't work since the theme was calling setStyles instead of setStyle.
+    Fixed bug where IE 7 would fail to append html fragments to iframe document when using DomQuery.
+    Fixed bug where the getStyle DOMUtils method would produce an exception if it was called with null as it's element.
+    Fixed bug where the paste plugin would remove the element if the none of the paste_webkit_styles rules matched the current style.
+    Fixed bug where contextmenu table items wouldn't work properly on IE since it would some times fire an incorrect selection change.
+    Fixed bug where the padding/border values wasn't used in the size calculation for the body size when using autoresize. Patch contributed by Matt Whelan.
+    Fixed bug where conditional word comments wouldn't be properly removed when pasting plain text.
+    Fixed bug where resizing would sometime fail on IE 11 when the mouseup occurred inside the resizable element.
+    Fixed so the iframe gets initialized without any inline event handlers for better CSP support. Patch contributed by Matt Whelan.
+    Fixed so the tinymce.dom.Sizzle is the latest version of sizzle this resolves the document context bug.
+Version 4.1.1 (2014-07-08)
+    Fixed bug where pasting plain text on some WebKit versions would result in an empty line.
+    Fixed bug where resizing images inside tables on IE 11 wouldn't work properly.
+    Fixed bug where IE 11 would sometimes throw "Invalid argument" exception when editor contents was set to an empty string.
+    Fixed bug where document.activeElement would throw exceptions on IE 9 when that element was hidden or removed from dom.
+    Fixed bug where WebKit/Blink sometimes produced br elements with the Apple-interchange-newline class.
+    Fixed bug where table cell selection wasn't properly removed when copy/pasting table cells.
+    Fixed bug where pasting nested list items from Word wouldn't produce proper semantic nested lists.
+    Fixed bug where right clicking using the contextmenu plugin on WebKit/Blink on Mac OS X would select the target current word or line.
+    Fixed bug where it wasn't possible to alter table cell properties on IE 8 using the context menu.
+    Fixed bug where the resize helper wouldn't be correctly positioned on older IE versions.
+    Fixed bug where fullpage plugin would produce an error if you didn't specify a doctype encoding.
+    Fixed bug where anchor plugin would get the name/id of the current element even if it wasn't anchor element.
+    Fixed bug where visual aids for tables wouldn't be properly disabled when changing the border size.
+    Fixed bug where some control selection events wasn't properly fired on older IE versions.
+    Fixed bug where table cell selection on older IE versions would prevent resizing of images.
+    Fixed bug with paste_data_images paste option not working properly on modern IE versions.
+    Fixed bug where custom elements with underscores in the name wasn't properly parsed/serialized.
+    Fixed bug where applying inline formats to nested list elements would produce an incorrect formatting result.
+    Fixed so it's possible to hide items from elements path by using preventDefault/stopPropagation.
+    Fixed so inline mode toolbar gets rendered right aligned if the editable element positioned to the documents right edge.
+    Fixed so empty inline elements inside empty block elements doesn't get removed if configured to be kept intact.
+    Fixed so DomQuery parentsUntil/prevUntil/nextUntil supports selectors/elements/filters etc.
+    Fixed so legacyoutput plugin overrides fontselect and fontsizeselect controls and handles font elements properly.
+Version 4.1.0 (2014-06-18)
+    Added new file_picker_callback option to replace the old file_browser_callback the latter will still work though.
+    Added new custom colors to textcolor plugin will be displayed if a color picker is provided also shows the latest colors.
+    Added new color_picker_callback option to enable you to add custom color pickers to the editor.
+    Added new advanced tabs to table/cell/row dialogs to enable you to select colors for border/background.
+    Added new colorpicker plugin that lets you select colors from a hsv color picker.
+    Added new tinymce.util.Color class to handle color parsing and converting.
+    Added new colorpicker UI widget element lets you add a hsv color picker to any form/window.
+    Added new textpattern plugin that allows you to use markdown like text patterns to format contents.
+    Added new resize helper element that shows the current width & height while resizing.
+    Added new "once" method to Editor and EventDispatcher enables since callback execution events.
+    Added new jQuery like class under tinymce.dom.DomQuery it's exposed on editor instances (editor.$) and globally under (tinymce.$).
+    Fixed so the default resize method for images are proportional shift/ctrl can be used to make an unproportional size.
+    Fixed bug where the image_dimensions option of the image plugin would cause exceptions when it tried to update the size.
+    Fixed bug where table cell dialog class field wasn't properly updated when editing an a table cell with an existing class.
+    Fixed bug where Safari on Mac would produce webkit-fake-url for pasted images so these are now removed.
+    Fixed bug where the nodeChange event would get fired before the selection was changed when clicking inside the current selection range.
+    Fixed bug where valid_classes option would cause exception when it removed internal prefixed classes like mce-item-.
+    Fixed bug where backspace would cause navigation in IE 8 on an inline element and after a caret formatting was applied.
+    Fixed so placeholder images produced by the media plugin gets selected when inserted/edited.
+    Fixed so it's possible to drag in images when the paste_data_images option is enabled. Might be useful for mail clients.
+    Fixed so images doesn't get a width/height applied if the image_dimensions option is set to false useful for responsive contents.
+    Fixed so it's possible to pass in an optional arguments object for the nodeChanged function to be passed to all nodechange event listeners.
+    Fixed bug where media plugin embed code didn't update correctly.
diff --git a/admin/js/vendors/tinymce/js/tinymce/jquery.tinymce.min.js b/admin/js/vendors/tinymce/js/tinymce/jquery.tinymce.min.js
new file mode 100644 (file)
index 0000000..5a6ef56
--- /dev/null
@@ -0,0 +1,91 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ */
+/**
+ * Jquery integration plugin.
+ *
+ * @class tinymce.core.JqueryIntegration
+ * @private
+ */
+!function(){var f,c,u,p,d,s=[];d="undefined"!=typeof global?global:window,p=d.jQuery;function v(){
+// Reference to tinymce needs to be lazily evaluated since tinymce
+// might be loaded through the compressor or other means
+return d.tinymce}p.fn.tinymce=function(o){var e,t,i,l=this,r="";
+// No match then just ignore the call
+if(!l.length)return l;
+// Get editor instance
+if(!o)return v()?v().get(l[0].id):null;l.css("visibility","hidden");function n(){var a=[],c=0;
+// Apply patches to the jQuery object, only once
+u||(m(),u=!0),
+// Create an editor instance for each matched node
+l.each(function(e,t){var n,i=t.id,r=o.oninit;
+// Generate unique id for target element if needed
+i||(t.id=i=v().DOM.uniqueId()),
+// Only init the editor once
+v().get(i)||(
+// Create editor instance and render it
+n=v().createEditor(i,o),a.push(n),n.on("init",function(){var e,t=r;l.css("visibility",""),
+// Run this if the oninit setting is defined
+// this logic will fire the oninit callback ones each
+// matched editor instance is initialized
+r&&++c==a.length&&("string"==typeof t&&(e=-1===t.indexOf(".")?null:v().resolve(t.replace(/\.\w+$/,"")),t=v().resolve(t)),
+// Call the oninit function with the object
+t.apply(e||v(),a))}))}),
+// Render the editor instances in a separate loop since we
+// need to have the full editors array used in the onInit calls
+p.each(a,function(e,t){t.render()})}
+// Load TinyMCE on demand, if we need to
+if(d.tinymce||c||!(e=o.script_url))
+// Delay the init call until tinymce is loaded
+1===c?s.push(n):n();else{c=1,t=e.substring(0,e.lastIndexOf("/")),
+// Check if it's a dev/src version they want to load then
+// make sure that all plugins, themes etc are loaded in source mode as well
+-1!=e.indexOf(".min")&&(r=".min"),
+// Setup tinyMCEPreInit object this will later be used by the TinyMCE
+// core script to locate other resources like CSS files, dialogs etc
+// You can also predefined a tinyMCEPreInit object and then it will use that instead
+d.tinymce=d.tinyMCEPreInit||{base:t,suffix:r},
+// url contains gzip then we assume it's a compressor
+-1!=e.indexOf("gzip")&&(i=o.language||"en",e=e+(/\?/.test(e)?"&":"?")+"js=true&core=true&suffix="+escape(r)+"&themes="+escape(o.theme||"modern")+"&plugins="+escape(o.plugins||"")+"&languages="+(i||""),
+// Check if compressor script is already loaded otherwise setup a basic one
+d.tinyMCE_GZ||(d.tinyMCE_GZ={start:function(){function n(e){v().ScriptLoader.markDone(v().baseURI.toAbsolute(e))}
+// Add core languages
+n("langs/"+i+".js"),
+// Add themes with languages
+n("themes/"+o.theme+"/theme"+r+".js"),n("themes/"+o.theme+"/langs/"+i+".js"),
+// Add plugins with languages
+p.each(o.plugins.split(","),function(e,t){t&&(n("plugins/"+t+"/plugin"+r+".js"),n("plugins/"+t+"/langs/"+i+".js"))})},end:function(){}}));var a=document.createElement("script");a.type="text/javascript",a.onload=a.onreadystatechange=function(e){e=e||window.event,2===c||"load"!=e.type&&!/complete|loaded/.test(a.readyState)||(v().dom.Event.domLoaded=1,c=2,
+// Execute callback after mainscript has been loaded and before the initialization occurs
+o.script_loaded&&o.script_loaded(),n(),p.each(s,function(e,t){t()}))},a.src=e,document.body.appendChild(a)}return l},
+// Add :tinymce pseudo selector this will select elements that has been converted into editor instances
+// it's now possible to use things like $('*:tinymce') to get all TinyMCE bound elements.
+p.extend(p.expr[":"],{tinymce:function(e){var t;return!!(e.id&&"tinymce"in d&&(t=v().get(e.id))&&t.editorManager===v())}});
+// This function patches internal jQuery functions so that if
+// you for example remove an div element containing an editor it's
+// automatically destroyed by the TinyMCE API
+var m=function(){function r(e){
+// If the function is remove
+"remove"===e&&this.each(function(e,t){var n=u(t);n&&n.remove()}),this.find("span.mceEditor,div.mceEditor").each(function(e,t){var n=v().get(t.id.replace(/_parent$/,""));n&&n.remove()})}function o(i){var e,t=this;
+// Handle set value
+/*jshint eqnull:true */if(null!=i)r.call(t),
+// Saves the contents before get/set value of textarea/div
+t.each(function(e,t){var n;(n=v().get(t.id))&&n.setContent(i)});else if(0<t.length&&(e=v().get(t[0].id)))return e.getContent()}function l(e){return!!(e&&e.length&&d.tinymce&&e.is(":tinymce"))}
+// Removes any child editor instances by looking for editor wrapper elements
+var u=function(e){var t=null;return e&&e.id&&d.tinymce&&(t=v().get(e.id)),t},s={};
+// Loads or saves contents from/to textarea if the value
+// argument is defined it will set the TinyMCE internal contents
+// Patch some setter/getter functions these will
+// now be able to set/get the contents of editor instances for
+// example $('#editorid').html('Content'); will update the TinyMCE iframe instance
+p.each(["text","html","val"],function(e,t){var a=s[t]=p.fn[t],c="text"===t;p.fn[t]=function(e){var t=this;if(!l(t))return a.apply(t,arguments);if(e!==f)return o.call(t.filter(":tinymce"),e),a.apply(t.not(":tinymce"),arguments),t;// return original set for chaining
+var i="",r=arguments;return(c?t:t.eq(0)).each(function(e,t){var n=u(t);i+=n?c?n.getContent().replace(/<(?:"[^"]*"|'[^']*'|[^'">])*>/g,""):n.getContent({save:!0}):a.apply(p(t),r)}),i}}),
+// Makes it possible to use $('#id').append("content"); to append contents to the TinyMCE editor iframe
+p.each(["append","prepend"],function(e,t){var n=s[t]=p.fn[t],r="prepend"===t;p.fn[t]=function(i){var e=this;return l(e)?i!==f?("string"==typeof i&&e.filter(":tinymce").each(function(e,t){var n=u(t);n&&n.setContent(r?i+n.getContent():n.getContent()+i)}),n.apply(e.not(":tinymce"),arguments),e):void 0:n.apply(e,arguments)}}),
+// Makes sure that the editor instance gets properly destroyed when the parent element is removed
+p.each(["remove","replaceWith","replaceAll","empty"],function(e,t){var n=s[t]=p.fn[t];p.fn[t]=function(){return r.call(this,t),n.apply(this,arguments)}}),s.attr=p.fn.attr,
+// Makes sure that $('#tinymce_id').attr('value') gets the editors current HTML contents
+p.fn.attr=function(e,t){var n=this,i=arguments;if(!e||"value"!==e||!l(n))return s.attr.apply(n,i);if(t!==f)return o.call(n.filter(":tinymce"),t),s.attr.apply(n.not(":tinymce"),i),n;// return original set for chaining
+var r=n[0],a=u(r);return a?a.getContent({save:!0}):s.attr.apply(p(r),i)}}}();
\ No newline at end of file
diff --git a/admin/js/vendors/tinymce/js/tinymce/langs/de.js b/admin/js/vendors/tinymce/js/tinymce/langs/de.js
new file mode 100644 (file)
index 0000000..f7a5b00
--- /dev/null
@@ -0,0 +1,389 @@
+tinymce.addI18n('de',{
+"Redo": "Wiederholen",
+"Undo": "R\u00fcckg\u00e4ngig machen",
+"Cut": "Ausschneiden",
+"Copy": "Kopieren",
+"Paste": "Einf\u00fcgen",
+"Select all": "Alles ausw\u00e4hlen",
+"New document": "Neues Dokument",
+"Ok": "Ok",
+"Cancel": "Abbrechen",
+"Visual aids": "Visuelle Hilfen",
+"Bold": "Fett",
+"Italic": "Kursiv",
+"Underline": "Unterstrichen",
+"Strikethrough": "Durchgestrichen",
+"Superscript": "Hochgestellt",
+"Subscript": "Tiefgestellt",
+"Clear formatting": "Formatierung entfernen",
+"Align left": "Linksb\u00fcndig ausrichten",
+"Align center": "Zentrieren",
+"Align right": "Rechtsb\u00fcndig ausrichten",
+"Justify": "Blocksatz",
+"Bullet list": "Aufz\u00e4hlung",
+"Numbered list": "Nummerierte Liste",
+"Decrease indent": "Einzug verkleinern",
+"Increase indent": "Einzug vergr\u00f6\u00dfern",
+"Close": "Schlie\u00dfen",
+"Formats": "Formate",
+"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Ihr Browser unterst\u00fctzt leider keinen direkten Zugriff auf die Zwischenablage. Bitte benutzen Sie die Tastenkombinationen Strg+X\/C\/V.",
+"Headers": "\u00dcberschriften",
+"Header 1": "\u00dcberschrift 1",
+"Header 2": "\u00dcberschrift 2",
+"Header 3": "\u00dcberschrift 3",
+"Header 4": "\u00dcberschrift 4",
+"Header 5": "\u00dcberschrift 5",
+"Header 6": "\u00dcberschrift 6",
+"Headings": "\u00dcberschriften",
+"Heading 1": "Kopfzeile 1",
+"Heading 2": "Kopfzeile 2",
+"Heading 3": "Kopfzeile 3",
+"Heading 4": "Kopfzeile 4",
+"Heading 5": "Kopfzeile 5",
+"Heading 6": "Kopfzeile 6",
+"Preformatted": "Vorformatiert",
+"Div": "Div",
+"Pre": "Pre",
+"Code": "Code",
+"Paragraph": "Absatz",
+"Blockquote": "Blockquote",
+"Inline": "Zeichenformate",
+"Blocks": "Bl\u00f6cke",
+"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "Einf\u00fcgen ist nun im einfachen Textmodus. Inhalte werden ab jetzt als unformatierter Text eingef\u00fcgt, bis Sie diese Einstellung wieder ausschalten!",
+"Fonts": "Schriftarten",
+"Font Sizes": "Schriftgr\u00f6\u00dfe",
+"Class": "Klasse",
+"Browse for an image": "Bild...",
+"OR": "ODER",
+"Drop an image here": "Bild hier ablegen",
+"Upload": "Hochladen",
+"Block": "Blocksatz",
+"Align": "Ausrichten",
+"Default": "Standard",
+"Circle": "Kreis",
+"Disc": "Punkt",
+"Square": "Quadrat",
+"Lower Alpha": "Kleinbuchstaben",
+"Lower Greek": "Griechische Kleinbuchstaben",
+"Lower Roman": "R\u00f6mische Zahlen (Kleinbuchstaben)",
+"Upper Alpha": "Gro\u00dfbuchstaben",
+"Upper Roman": "R\u00f6mische Zahlen (Gro\u00dfbuchstaben)",
+"Anchor...": "Textmarke",
+"Name": "Name",
+"Id": "Kennung",
+"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.": "Die Kennung sollte mit einem Buchstaben anfangen. Nachfolgend nur Buchstaben, Zahlen, Striche (Minus), Punkte, Kommas und Unterstriche.",
+"You have unsaved changes are you sure you want to navigate away?": "Die \u00c4nderungen wurden noch nicht gespeichert, sind Sie sicher, dass Sie diese Seite verlassen wollen?",
+"Restore last draft": "Letzten Entwurf wiederherstellen",
+"Special characters...": "Sonderzeichen...",
+"Source code": "Quelltext",
+"Insert\/Edit code sample": "Codebeispiel einf\u00fcgen\/bearbeiten",
+"Language": "Sprache",
+"Code sample...": "Codebeispiel...",
+"Color Picker": "Farbwahl",
+"R": "R",
+"G": "G",
+"B": "B",
+"Left to right": "Von links nach rechts",
+"Right to left": "Von rechts nach links",
+"Emoticons...": "Emoticons...",
+"Metadata and Document Properties": "Dokument-Eigenschaften und -Metadaten",
+"Title": "Titel",
+"Keywords": "Sch\u00fcsselw\u00f6rter",
+"Description": "Beschreibung",
+"Robots": "Robots",
+"Author": "Verfasser",
+"Encoding": "Zeichenkodierung",
+"Fullscreen": "Vollbild",
+"Action": "Aktion",
+"Shortcut": "Shortcut",
+"Help": "Hilfe",
+"Address": "Adresse",
+"Focus to menubar": "Fokus auf Men\u00fcleiste",
+"Focus to toolbar": "Fokus auf Werkzeugleiste",
+"Focus to element path": "Fokus auf Elementpfad",
+"Focus to contextual toolbar": "Fokus auf kontextbezogene Werkzeugleiste",
+"Insert link (if link plugin activated)": "Link einf\u00fcgen (wenn Link-Plugin aktiviert ist)",
+"Save (if save plugin activated)": "Speichern (wenn Save-Plugin aktiviert ist)",
+"Find (if searchreplace plugin activated)": "Suchen einf\u00fcgen (wenn Suchen\/Ersetzen-Plugin aktiviert ist)",
+"Plugins installed ({0}):": "installierte Plugins ({0}):",
+"Premium plugins:": "Premium Plugins:",
+"Learn more...": "Erfahren Sie mehr dazu...",
+"You are using {0}": "Sie verwenden {0}",
+"Plugins": "Plugins",
+"Handy Shortcuts": "Praktische Tastenkombinationen",
+"Horizontal line": "Horizontale Linie",
+"Insert\/edit image": "Bild einf\u00fcgen\/bearbeiten",
+"Image description": "Bildbeschreibung",
+"Source": "Quelle",
+"Dimensions": "Abmessungen",
+"Constrain proportions": "Seitenverh\u00e4ltnis beibehalten",
+"General": "Allgemein",
+"Advanced": "Erweitert",
+"Style": "Stil",
+"Vertical space": "Vertikaler Abstand",
+"Horizontal space": "Horizontaler Abstand",
+"Border": "Rahmen",
+"Insert image": "Bild einf\u00fcgen",
+"Image...": "Bild...",
+"Image list": "Bildliste",
+"Rotate counterclockwise": "Gegen den Uhrzeigersinn drehen",
+"Rotate clockwise": "Im Uhrzeigersinn drehen",
+"Flip vertically": "Vertikal spiegeln",
+"Flip horizontally": "Horizontal spiegeln",
+"Edit image": "Bild bearbeiten",
+"Image options": "Bildeigenschaften",
+"Zoom in": "Ansicht vergr\u00f6\u00dfern",
+"Zoom out": "Ansicht verkleinern",
+"Crop": "Bescheiden",
+"Resize": "Skalieren",
+"Orientation": "Ausrichtung",
+"Brightness": "Helligkeit",
+"Sharpen": "Sch\u00e4rfen",
+"Contrast": "Kontrast",
+"Color levels": "Farbwerte",
+"Gamma": "Gamma",
+"Invert": "Invertieren",
+"Apply": "Anwenden",
+"Back": "Zur\u00fcck",
+"Insert date\/time": "Datum\/Uhrzeit einf\u00fcgen ",
+"Date\/time": "Datum\/Uhrzeit",
+"Insert\/Edit Link": "Link einf\u00fcgen\/bearbeiten",
+"Insert\/edit link": "Link einf\u00fcgen\/bearbeiten",
+"Text to display": "Anzuzeigender Text",
+"Url": "URL",
+"Open link in...": "Link \u00f6ffnen in...",
+"Current window": "Aktuelles Fenster",
+"None": "Keine",
+"New window": "Neues Fenster",
+"Remove link": "Link entfernen",
+"Anchors": "Textmarken",
+"Link...": "Link...",
+"Paste or type a link": "Link einf\u00fcgen oder eintippen",
+"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "Diese Adresse scheint eine E-Mail-Adresse zu sein. M\u00f6chten Sie das dazu ben\u00f6tigte \"mailto:\" voranstellen?",
+"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "Diese Adresse scheint ein externer Link zu sein. M\u00f6chten Sie das dazu ben\u00f6tigte \"http:\/\/\" voranstellen?",
+"Link list": "Linkliste",
+"Insert video": "Video einf\u00fcgen",
+"Insert\/edit video": "Video einf\u00fcgen\/bearbeiten",
+"Insert\/edit media": "Medien einf\u00fcgen\/bearbeiten",
+"Alternative source": "Alternative Quelle",
+"Alternative source URL": "URL der alternativen Quelle",
+"Media poster (Image URL)": "Medienposter (Bild-URL)",
+"Paste your embed code below:": "F\u00fcgen Sie Ihren Einbettungscode hier ein:",
+"Embed": "Einbetten",
+"Media...": "Medien...",
+"Nonbreaking space": "Gesch\u00fctztes Leerzeichen",
+"Page break": "Seitenumbruch",
+"Paste as text": "Als Text einf\u00fcgen",
+"Preview": "Vorschau",
+"Print...": "Drucken...",
+"Save": "Speichern",
+"Find": "Suchen",
+"Replace with": "Ersetzen durch",
+"Replace": "Ersetzen",
+"Replace all": "Alles ersetzen",
+"Previous": "Vorherige",
+"Next": "Weiter",
+"Find and replace...": "Suchen und ersetzen...",
+"Could not find the specified string.": "Die Zeichenfolge wurde nicht gefunden.",
+"Match case": "Gro\u00df-\/Kleinschreibung beachten",
+"Find whole words only": "Nur ganze W\u00f6rter suchen",
+"Spell check": "Rechschreibpr\u00fcfung",
+"Ignore": "Ignorieren",
+"Ignore all": "Alles Ignorieren",
+"Finish": "Ende",
+"Add to Dictionary": "Zum W\u00f6rterbuch hinzuf\u00fcgen",
+"Insert table": "Tabelle einf\u00fcgen",
+"Table properties": "Tabelleneigenschaften",
+"Delete table": "Tabelle l\u00f6schen",
+"Cell": "Zelle",
+"Row": "Zeile",
+"Column": "Spalte",
+"Cell properties": "Zelleneigenschaften",
+"Merge cells": "Zellen verbinden",
+"Split cell": "Zelle aufteilen",
+"Insert row before": "Neue Zeile davor einf\u00fcgen ",
+"Insert row after": "Neue Zeile danach einf\u00fcgen",
+"Delete row": "Zeile l\u00f6schen",
+"Row properties": "Zeileneigenschaften",
+"Cut row": "Zeile ausschneiden",
+"Copy row": "Zeile kopieren",
+"Paste row before": "Zeile davor einf\u00fcgen",
+"Paste row after": "Zeile danach einf\u00fcgen",
+"Insert column before": "Neue Spalte davor einf\u00fcgen",
+"Insert column after": "Neue Spalte danach einf\u00fcgen",
+"Delete column": "Spalte l\u00f6schen",
+"Cols": "Spalten",
+"Rows": "Zeilen",
+"Width": "Breite",
+"Height": "H\u00f6he",
+"Cell spacing": "Zellenabstand",
+"Cell padding": "Zelleninnenabstand",
+"Show caption": "Beschriftung anzeigen",
+"Left": "Linksb\u00fcndig",
+"Center": "Zentriert",
+"Right": "Rechtsb\u00fcndig",
+"Cell type": "Zellentyp",
+"Scope": "G\u00fcltigkeitsbereich",
+"Alignment": "Ausrichtung",
+"H Align": "Horizontale Ausrichtung",
+"V Align": "Vertikale Ausrichtung",
+"Top": "Oben",
+"Middle": "Mitte",
+"Bottom": "Unten",
+"Header cell": "Kopfzelle",
+"Row group": "Zeilengruppe",
+"Column group": "Spaltengruppe",
+"Row type": "Zeilentyp",
+"Header": "Kopfzeile",
+"Body": "Inhalt",
+"Footer": "Fu\u00dfzeile",
+"Border color": "Rahmenfarbe",
+"Insert template...": "Vorlage einf\u00fcgen...",
+"Templates": "Vorlagen",
+"Template": "Vorlage",
+"Text color": "Textfarbe",
+"Background color": "Hintergrundfarbe",
+"Custom...": "Benutzerdefiniert...",
+"Custom color": "Benutzerdefinierte Farbe",
+"No color": "Keine Farbe",
+"Remove color": "Farbauswahl aufheben",
+"Table of Contents": "Inhaltsverzeichnis",
+"Show blocks": "Bl\u00f6cke anzeigen",
+"Show invisible characters": "Unsichtbare Zeichen anzeigen",
+"Word count": "Anzahl der W\u00f6rter",
+"Words: {0}": "W\u00f6rter: {0}",
+"{0} words": "{0} W\u00f6rter",
+"File": "Datei",
+"Edit": "Bearbeiten",
+"Insert": "Einf\u00fcgen",
+"View": "Ansicht",
+"Format": "Format",
+"Table": "Tabelle",
+"Tools": "Werkzeuge",
+"Powered by {0}": "Betrieben von {0}",
+"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Rich-Text- Area. Dr\u00fccken Sie ALT-F9 f\u00fcr das Men\u00fc. Dr\u00fccken Sie ALT-F10 f\u00fcr Symbolleiste. Dr\u00fccken Sie ALT-0 f\u00fcr Hilfe",
+"Image title": "Bildtitel",
+"Border width": "Rahmenbreite",
+"Border style": "Rahmenstil",
+"Error": "Fehler",
+"Warn": "Warnung",
+"Valid": "G\u00fcltig",
+"To open the popup, press Shift+Enter": "Dr\u00fccken Sie Umschalt+Eingabe, um das Popup-Fenster zu \u00f6ffnen.",
+"Rich Text Area. Press ALT-0 for help.": "Rich-Text-Bereich. Dr\u00fccken Sie Alt+0 f\u00fcr Hilfe.",
+"System Font": "Betriebssystemschriftart",
+"Failed to upload image: {0}": "Bild konnte nicht hochgeladen werden: {0}",
+"Failed to load plugin: {0} from url {1}": "Plugin konnte nicht geladen werden: {0} von URL {1}",
+"Failed to load plugin url: {0}": "Plugin-URL konnte nicht geladen werden: {0}",
+"Failed to initialize plugin: {0}": "Plugin konnte nicht initialisiert werden: {0}",
+"example": "Beispiel",
+"Search": "Suchen",
+"All": "Alles",
+"Currency": "W\u00e4hrung",
+"Text": "Text",
+"Quotations": "Anf\u00fchrungszeichen",
+"Mathematical": "Mathematisch",
+"Extended Latin": "Erweitertes Latein",
+"Symbols": "Symbole",
+"Arrows": "Pfeile",
+"User Defined": "Benutzerdefiniert",
+"dollar sign": "Dollarzeichen",
+"currency sign": "W\u00e4hrungssymbol",
+"euro-currency sign": "Eurozeichen",
+"colon sign": "Doppelpunkt",
+"cruzeiro sign": "Cruzeirozeichen",
+"french franc sign": "Franczeichen",
+"lira sign": "Lirezeichen",
+"mill sign": "Millzeichen",
+"naira sign": "Nairazeichen",
+"peseta sign": "Pesetazeichen",
+"rupee sign": "Rupiezeichen",
+"won sign": "Wonzeichen",
+"new sheqel sign": "Schekelzeichen",
+"dong sign": "Dongzeichen",
+"kip sign": "Kipzeichen",
+"tugrik sign": "Tugrikzeichen",
+"drachma sign": "Drachmezeichen",
+"german penny symbol": "Pfennigzeichen",
+"peso sign": "Pesozeichen",
+"guarani sign": "Guaranizeichen",
+"austral sign": "Australzeichen",
+"hryvnia sign": "Hrywnjazeichen",
+"cedi sign": "Cedizeichen",
+"livre tournois sign": "Livrezeichen",
+"spesmilo sign": "Spesmilozeichen",
+"tenge sign": "Tengezeichen",
+"indian rupee sign": "Indisches Rupiezeichen",
+"turkish lira sign": "T\u00fcrkisches Lirazeichen",
+"nordic mark sign": "Zeichen nordische Mark",
+"manat sign": "Manatzeichen",
+"ruble sign": "Rubelzeichen",
+"yen character": "Yenzeichen",
+"yuan character": "Yuanzeichen",
+"yuan character, in hong kong and taiwan": "Yuanzeichen in Hongkong und Taiwan",
+"yen\/yuan character variant one": "Yen-\/Yuanzeichen Variante 1",
+"Loading emoticons...": "Emoticons werden geladen...",
+"Could not load emoticons": "Emoticons konnten nicht geladen werden",
+"People": "Menschen",
+"Animals and Nature": "Tiere und Natur",
+"Food and Drink": "Essen und Trinken",
+"Activity": "Aktivit\u00e4t",
+"Travel and Places": "Reisen und Orte",
+"Objects": "Objekte",
+"Flags": "Flaggen",
+"Characters": "Zeichen",
+"Characters (no spaces)": "Zeichen (ohne Leerzeichen)",
+"Error: Form submit field collision.": "Fehler: Kollision der Formularbest\u00e4tigungsfelder.",
+"Error: No form element found.": "Fehler: Kein Formularelement gefunden.",
+"Update": "Aktualisieren",
+"Color swatch": "Farbpalette",
+"Turquoise": "T\u00fcrkis",
+"Green": "Gr\u00fcn",
+"Blue": "Blau",
+"Purple": "Violett",
+"Navy Blue": "Marineblau",
+"Dark Turquoise": "Dunkelt\u00fcrkis",
+"Dark Green": "Dunkelgr\u00fcn",
+"Medium Blue": "Mittleres Blau",
+"Medium Purple": "Mittelviolett",
+"Midnight Blue": "Mitternachtsblau",
+"Yellow": "Gelb",
+"Orange": "Orange",
+"Red": "Rot",
+"Light Gray": "Hellgrau",
+"Gray": "Grau",
+"Dark Yellow": "Dunkelgelb",
+"Dark Orange": "Dunkelorange",
+"Dark Red": "Dunkelrot",
+"Medium Gray": "Mittelgrau",
+"Dark Gray": "Dunkelgrau",
+"Black": "Schwarz",
+"White": "Wei\u00df",
+"Switch to or from fullscreen mode": "Vollbildmodus umschalten",
+"Open help dialog": "Hilfe-Dialog \u00f6ffnen",
+"history": "Historie",
+"styles": "Stile",
+"formatting": "Formatierung",
+"alignment": "Ausrichtung",
+"indentation": "Einr\u00fcckungen",
+"permanent pen": "Textmarker",
+"comments": "Anmerkungen",
+"Anchor": "Textmarke",
+"Special character": "Sonderzeichen",
+"Code sample": "Codebeispiel",
+"Color": "Farbe",
+"Emoticons": "Emoticons",
+"Document properties": "Dokumenteigenschaften",
+"Image": "Bild",
+"Insert link": "Link einf\u00fcgen",
+"Target": "Ziel",
+"Link": "Link",
+"Poster": "Poster",
+"Media": "Medium",
+"Print": "Drucken",
+"Prev": "Zur\u00fcck",
+"Find and replace": "Suchen und ersetzen",
+"Whole words": "Nur ganze W\u00f6rter",
+"Spellcheck": "Rechtschreibpr\u00fcfung",
+"Caption": "Beschriftung",
+"Insert template": "Vorlage einf\u00fcgen "
+});
\ No newline at end of file
diff --git a/admin/js/vendors/tinymce/js/tinymce/langs/fr.js b/admin/js/vendors/tinymce/js/tinymce/langs/fr.js
new file mode 100644 (file)
index 0000000..102af87
--- /dev/null
@@ -0,0 +1,389 @@
+tinymce.addI18n('fr',{
+"Redo": "R\u00e9tablir",
+"Undo": "Annuler",
+"Cut": "Couper",
+"Copy": "Copier",
+"Paste": "Coller",
+"Select all": "S\u00e9lectionner tout",
+"New document": "Nouveau document",
+"Ok": "OK",
+"Cancel": "Annuler",
+"Visual aids": "Aides visuelles",
+"Bold": "Gras",
+"Italic": "Italique",
+"Underline": "Soulign\u00e9",
+"Strikethrough": "Barr\u00e9",
+"Superscript": "Exposant",
+"Subscript": "Indice",
+"Clear formatting": "Effacer la mise en forme",
+"Align left": "Aligner \u00e0 gauche",
+"Align center": "Centrer",
+"Align right": "Aligner \u00e0 droite",
+"Justify": "Justifier",
+"Bullet list": "Liste \u00e0 puces",
+"Numbered list": "Liste num\u00e9rot\u00e9e",
+"Decrease indent": "R\u00e9duire le retrait",
+"Increase indent": "Augmenter le retrait",
+"Close": "Fermer",
+"Formats": "Formats",
+"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Votre navigateur ne supporte pas l\u2019acc\u00e8s direct au presse-papiers. Merci d'utiliser les raccourcis clavier Ctrl+X\/C\/V.",
+"Headers": "En-t\u00eates",
+"Header 1": "En-t\u00eate 1",
+"Header 2": "En-t\u00eate 2",
+"Header 3": "En-t\u00eate 3",
+"Header 4": "En-t\u00eate 4",
+"Header 5": "En-t\u00eate 5",
+"Header 6": "En-t\u00eate 6",
+"Headings": "Titres",
+"Heading 1": "Titre\u00a01",
+"Heading 2": "Titre\u00a02",
+"Heading 3": "Titre\u00a03",
+"Heading 4": "Titre\u00a04",
+"Heading 5": "Titre\u00a05",
+"Heading 6": "Titre\u00a06",
+"Preformatted": "Pr\u00e9format\u00e9",
+"Div": "Div",
+"Pre": "Pre",
+"Code": "Code",
+"Paragraph": "Paragraphe",
+"Blockquote": "Blockquote",
+"Inline": "En ligne",
+"Blocks": "Blocs",
+"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "Le presse-papiers est maintenant en mode \"texte plein\". Les contenus seront coll\u00e9s sans retenir les formatages jusqu'\u00e0 ce que vous d\u00e9sactiviez cette option.",
+"Fonts": "Polices",
+"Font Sizes": "Tailles de police",
+"Class": "Classe",
+"Browse for an image": "Rechercher une image",
+"OR": "OU",
+"Drop an image here": "D\u00e9poser une image ici",
+"Upload": "T\u00e9l\u00e9charger",
+"Block": "Bloc",
+"Align": "Aligner",
+"Default": "Par d\u00e9faut",
+"Circle": "Cercle",
+"Disc": "Disque",
+"Square": "Carr\u00e9",
+"Lower Alpha": "Alpha minuscule",
+"Lower Greek": "Grec minuscule",
+"Lower Roman": "Romain minuscule",
+"Upper Alpha": "Alpha majuscule",
+"Upper Roman": "Romain majuscule",
+"Anchor...": "Ancre...",
+"Name": "Nom",
+"Id": "Id",
+"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.": "L'Id doit commencer par une lettre suivi par des lettres, nombres, tirets, points, deux-points ou underscores",
+"You have unsaved changes are you sure you want to navigate away?": "Vous avez des modifications non enregistr\u00e9es, \u00eates-vous s\u00fbr de quitter la page?",
+"Restore last draft": "Restaurer le dernier brouillon",
+"Special characters...": "Caract\u00e8res sp\u00e9ciaux...",
+"Source code": "Code source",
+"Insert\/Edit code sample": "Ins\u00e9rer \/ modifier une exemple de code",
+"Language": "Langue",
+"Code sample...": "Exemple de code...",
+"Color Picker": "S\u00e9lecteur de couleurs",
+"R": "R",
+"G": "V",
+"B": "B",
+"Left to right": "Gauche \u00e0 droite",
+"Right to left": "Droite \u00e0 gauche",
+"Emoticons...": "\u00c9motic\u00f4nes...",
+"Metadata and Document Properties": "M\u00e9tadonn\u00e9es et propri\u00e9t\u00e9s du document",
+"Title": "Titre",
+"Keywords": "Mots-cl\u00e9s",
+"Description": "Description",
+"Robots": "Robots",
+"Author": "Auteur",
+"Encoding": "Encodage",
+"Fullscreen": "Plein \u00e9cran",
+"Action": "Action",
+"Shortcut": "Raccourci",
+"Help": "Aide",
+"Address": "Adresse",
+"Focus to menubar": "Cibler la barre de menu",
+"Focus to toolbar": "Cibler la barre d'outils",
+"Focus to element path": "Cibler le chemin vers l'\u00e9l\u00e9ment",
+"Focus to contextual toolbar": "Cibler la barre d'outils contextuelle",
+"Insert link (if link plugin activated)": "Ins\u00e9rer un lien (si le module link est activ\u00e9)",
+"Save (if save plugin activated)": "Enregistrer (si le module save est activ\u00e9)",
+"Find (if searchreplace plugin activated)": "Rechercher (si le module searchreplace est activ\u00e9)",
+"Plugins installed ({0}):": "Modules install\u00e9s ({0}) : ",
+"Premium plugins:": "Modules premium :",
+"Learn more...": "En savoir plus...",
+"You are using {0}": "Vous utilisez {0}",
+"Plugins": "Plugins",
+"Handy Shortcuts": "Raccourcis utiles",
+"Horizontal line": "Ligne horizontale",
+"Insert\/edit image": "Ins\u00e9rer\/modifier une image",
+"Image description": "Description de l'image",
+"Source": "Source",
+"Dimensions": "Dimensions",
+"Constrain proportions": "Conserver les proportions",
+"General": "G\u00e9n\u00e9ral",
+"Advanced": "Avanc\u00e9",
+"Style": "Style",
+"Vertical space": "Espacement vertical",
+"Horizontal space": "Espacement horizontal",
+"Border": "Bordure",
+"Insert image": "Ins\u00e9rer une image",
+"Image...": "Image...",
+"Image list": "Liste d'images",
+"Rotate counterclockwise": "Rotation anti-horaire",
+"Rotate clockwise": "Rotation horaire",
+"Flip vertically": "Retournement vertical",
+"Flip horizontally": "Retournement horizontal",
+"Edit image": "Modifier l'image",
+"Image options": "Options de l'image",
+"Zoom in": "Zoomer",
+"Zoom out": "D\u00e9zoomer",
+"Crop": "Rogner",
+"Resize": "Redimensionner",
+"Orientation": "Orientation",
+"Brightness": "Luminosit\u00e9",
+"Sharpen": "Affiner",
+"Contrast": "Contraste",
+"Color levels": "Niveaux de couleur",
+"Gamma": "Gamma",
+"Invert": "Inverser",
+"Apply": "Appliquer",
+"Back": "Retour",
+"Insert date\/time": "Ins\u00e9rer date\/heure",
+"Date\/time": "Date\/heure",
+"Insert\/Edit Link": "Ins\u00e9rer\/Modifier lien",
+"Insert\/edit link": "Ins\u00e9rer\/modifier un lien",
+"Text to display": "Texte \u00e0 afficher",
+"Url": "Url",
+"Open link in...": "Ouvrir le lien dans...",
+"Current window": "Fen\u00eatre active",
+"None": "n\/a",
+"New window": "Nouvelle fen\u00eatre",
+"Remove link": "Enlever le lien",
+"Anchors": "Ancres",
+"Link...": "Lien...",
+"Paste or type a link": "Coller ou taper un lien",
+"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "L'URL que vous avez entr\u00e9e semble \u00eatre une adresse e-mail. Voulez-vous ajouter le pr\u00e9fixe mailto: n\u00e9cessaire?",
+"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "L'URL que vous avez entr\u00e9e semble \u00eatre un lien externe. Voulez-vous ajouter le pr\u00e9fixe http:\/\/ n\u00e9cessaire?",
+"Link list": "Liste de liens",
+"Insert video": "Ins\u00e9rer une vid\u00e9o",
+"Insert\/edit video": "Ins\u00e9rer\/modifier une vid\u00e9o",
+"Insert\/edit media": "Ins\u00e9rer\/modifier un m\u00e9dia",
+"Alternative source": "Source alternative",
+"Alternative source URL": "URL de la source alternative",
+"Media poster (Image URL)": "Affiche de m\u00e9dia (URL de l'image)",
+"Paste your embed code below:": "Collez votre code d'int\u00e9gration ci-dessous :",
+"Embed": "Int\u00e9grer",
+"Media...": "M\u00e9dia...",
+"Nonbreaking space": "Espace ins\u00e9cable",
+"Page break": "Saut de page",
+"Paste as text": "Coller comme texte",
+"Preview": "Pr\u00e9visualiser",
+"Print...": "Imprimer...",
+"Save": "Enregistrer",
+"Find": "Chercher",
+"Replace with": "Remplacer par",
+"Replace": "Remplacer",
+"Replace all": "Tout remplacer",
+"Previous": "Pr\u00e9c\u00e9dente",
+"Next": "Suiv",
+"Find and replace...": "Trouver et remplacer...",
+"Could not find the specified string.": "Impossible de trouver la cha\u00eene sp\u00e9cifi\u00e9e.",
+"Match case": "Respecter la casse",
+"Find whole words only": "Mot entier",
+"Spell check": "V\u00e9rification de l'orthographe",
+"Ignore": "Ignorer",
+"Ignore all": "Tout ignorer",
+"Finish": "Finie",
+"Add to Dictionary": "Ajouter au dictionnaire",
+"Insert table": "Ins\u00e9rer un tableau",
+"Table properties": "Propri\u00e9t\u00e9s du tableau",
+"Delete table": "Supprimer le tableau",
+"Cell": "Cellule",
+"Row": "Ligne",
+"Column": "Colonne",
+"Cell properties": "Propri\u00e9t\u00e9s de la cellule",
+"Merge cells": "Fusionner les cellules",
+"Split cell": "Diviser la cellule",
+"Insert row before": "Ins\u00e9rer une ligne avant",
+"Insert row after": "Ins\u00e9rer une ligne apr\u00e8s",
+"Delete row": "Effacer la ligne",
+"Row properties": "Propri\u00e9t\u00e9s de la ligne",
+"Cut row": "Couper la ligne",
+"Copy row": "Copier la ligne",
+"Paste row before": "Coller la ligne avant",
+"Paste row after": "Coller la ligne apr\u00e8s",
+"Insert column before": "Ins\u00e9rer une colonne avant",
+"Insert column after": "Ins\u00e9rer une colonne apr\u00e8s",
+"Delete column": "Effacer la colonne",
+"Cols": "Colonnes",
+"Rows": "Lignes",
+"Width": "Largeur",
+"Height": "Hauteur",
+"Cell spacing": "Espacement inter-cellulles",
+"Cell padding": "Espacement interne cellule",
+"Show caption": "Afficher le sous-titrage",
+"Left": "Gauche",
+"Center": "Centr\u00e9",
+"Right": "Droite",
+"Cell type": "Type de cellule",
+"Scope": "Etendue",
+"Alignment": "Alignement",
+"H Align": "Alignement H",
+"V Align": "Alignement V",
+"Top": "Haut",
+"Middle": "Milieu",
+"Bottom": "Bas",
+"Header cell": "Cellule d'en-t\u00eate",
+"Row group": "Groupe de lignes",
+"Column group": "Groupe de colonnes",
+"Row type": "Type de ligne",
+"Header": "En-t\u00eate",
+"Body": "Corps",
+"Footer": "Pied",
+"Border color": "Couleur de la bordure",
+"Insert template...": "Ins\u00e9rer un mod\u00e8le...",
+"Templates": "Th\u00e8mes",
+"Template": "Mod\u00e8le",
+"Text color": "Couleur du texte",
+"Background color": "Couleur d'arri\u00e8re-plan",
+"Custom...": "Personnalis\u00e9...",
+"Custom color": "Couleur personnalis\u00e9e",
+"No color": "Aucune couleur",
+"Remove color": "Supprimer la couleur",
+"Table of Contents": "Table des mati\u00e8res",
+"Show blocks": "Afficher les blocs",
+"Show invisible characters": "Afficher les caract\u00e8res invisibles",
+"Word count": "Nombre de mots",
+"Words: {0}": "Mots : {0}",
+"{0} words": "{0} mots",
+"File": "Fichier",
+"Edit": "Editer",
+"Insert": "Ins\u00e9rer",
+"View": "Voir",
+"Format": "Format",
+"Table": "Tableau",
+"Tools": "Outils",
+"Powered by {0}": "Propuls\u00e9 par {0}",
+"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Zone Texte Riche. Appuyer sur ALT-F9 pour le menu. Appuyer sur ALT-F10 pour la barre d'outils. Appuyer sur ALT-0 pour de l'aide.",
+"Image title": "Titre d'image",
+"Border width": "\u00c9paisseur de la bordure",
+"Border style": "Style de la bordure",
+"Error": "Erreur",
+"Warn": "Avertir",
+"Valid": "Valide",
+"To open the popup, press Shift+Enter": "Pour ouvrir la popup, appuyez sur Maj+Entr\u00e9e",
+"Rich Text Area. Press ALT-0 for help.": "Zone de texte riche. Appuyez sur ALT-0 pour l'aide.",
+"System Font": "Police syst\u00e8me",
+"Failed to upload image: {0}": "\u00c9chec d'envoi de l'image\u00a0: {0}",
+"Failed to load plugin: {0} from url {1}": "\u00c9chec de chargement du plug-in\u00a0: {0} \u00e0 partir de l\u2019URL {1} ",
+"Failed to load plugin url: {0}": "\u00c9chec de chargement de l'URL du plug-in\u00a0: {0}",
+"Failed to initialize plugin: {0}": "\u00c9chec d'initialisation du plug-in\u00a0: {0}",
+"example": "exemple",
+"Search": "Rechercher",
+"All": "Tout",
+"Currency": "Devise",
+"Text": "Texte",
+"Quotations": "Citations",
+"Mathematical": "Op\u00e9rateurs math\u00e9matiques",
+"Extended Latin": "Latin \u00e9tendu",
+"Symbols": "Symboles",
+"Arrows": "Fl\u00e8ches",
+"User Defined": "D\u00e9fini par l'utilisateur",
+"dollar sign": "Symbole dollar",
+"currency sign": "Symbole devise",
+"euro-currency sign": "Symbole euro",
+"colon sign": "Symbole col\u00f3n",
+"cruzeiro sign": "Symbole cruzeiro",
+"french franc sign": "Symbole franc fran\u00e7ais",
+"lira sign": "Symbole lire",
+"mill sign": "Symbole milli\u00e8me",
+"naira sign": "Symbole naira",
+"peseta sign": "Symbole peseta",
+"rupee sign": "Symbole roupie",
+"won sign": "Symbole won",
+"new sheqel sign": "Symbole nouveau ch\u00e9kel",
+"dong sign": "Symbole dong",
+"kip sign": "Symbole kip",
+"tugrik sign": "Symbole tougrik",
+"drachma sign": "Symbole drachme",
+"german penny symbol": "Symbole pfennig",
+"peso sign": "Symbole peso",
+"guarani sign": "Symbole guarani",
+"austral sign": "Symbole austral",
+"hryvnia sign": "Symbole hryvnia",
+"cedi sign": "Symbole cedi",
+"livre tournois sign": "Symbole livre tournois",
+"spesmilo sign": "Symbole spesmilo",
+"tenge sign": "Symbole tenge",
+"indian rupee sign": "Symbole roupie indienne",
+"turkish lira sign": "Symbole lire turque",
+"nordic mark sign": "Symbole du mark nordique",
+"manat sign": "Symbole manat",
+"ruble sign": "Symbole rouble",
+"yen character": "Sinogramme Yen",
+"yuan character": "Sinogramme Yuan",
+"yuan character, in hong kong and taiwan": "Sinogramme Yuan, Hong Kong et Taiwan",
+"yen\/yuan character variant one": "Sinogramme Yen\/Yuan, premi\u00e8re variante",
+"Loading emoticons...": "Chargement des \u00e9motic\u00f4nes en cours...",
+"Could not load emoticons": "\u00c9chec de chargement des \u00e9motic\u00f4nes",
+"People": "Personnes",
+"Animals and Nature": "Animaux & nature",
+"Food and Drink": "Nourriture & boissons",
+"Activity": "Activit\u00e9",
+"Travel and Places": "Voyages & lieux",
+"Objects": "Objets",
+"Flags": "Drapeaux",
+"Characters": "Caract\u00e8res",
+"Characters (no spaces)": "Caract\u00e8res (espaces non compris)",
+"Error: Form submit field collision.": "Erreur : conflit de champs lors de la soumission du formulaire",
+"Error: No form element found.": "Erreur : aucun \u00e9l\u00e9ment de formulaire trouv\u00e9.",
+"Update": "Mettre \u00e0 jour",
+"Color swatch": "\u00c9chantillon de couleurs",
+"Turquoise": "Turquoise",
+"Green": "Vert",
+"Blue": "Bleu",
+"Purple": "Violet",
+"Navy Blue": "Bleu marine",
+"Dark Turquoise": "Turquoise fonc\u00e9",
+"Dark Green": "Vert fonc\u00e9",
+"Medium Blue": "Bleu moyen",
+"Medium Purple": "Violet moyen",
+"Midnight Blue": "Bleu de minuit",
+"Yellow": "Jaune",
+"Orange": "Orange",
+"Red": "Rouge",
+"Light Gray": "Gris clair",
+"Gray": "Gris",
+"Dark Yellow": "Jaune fonc\u00e9",
+"Dark Orange": "Orange fonc\u00e9",
+"Dark Red": "Rouge fonc\u00e9",
+"Medium Gray": "Gris moyen",
+"Dark Gray": "Gris fonc\u00e9",
+"Black": "Noir",
+"White": "Blanc",
+"Switch to or from fullscreen mode": "Passer en ou quitter le mode plein \u00e9cran",
+"Open help dialog": "Ouvrir la bo\u00eete de dialogue d'aide",
+"history": "historique",
+"styles": "styles",
+"formatting": "mise en forme",
+"alignment": "alignement",
+"indentation": "retrait",
+"permanent pen": "feutre ind\u00e9l\u00e9bile",
+"comments": "commentaires",
+"Anchor": "Ancre",
+"Special character": "Caract\u00e8res sp\u00e9ciaux",
+"Code sample": "Extrait de code",
+"Color": "Couleur",
+"Emoticons": "Emotic\u00f4nes",
+"Document properties": "Propri\u00e9t\u00e9 du document",
+"Image": "Image",
+"Insert link": "Ins\u00e9rer un lien",
+"Target": "Cible",
+"Link": "Lien",
+"Poster": "Publier",
+"Media": "M\u00e9dia",
+"Print": "Imprimer",
+"Prev": "Pr\u00e9c ",
+"Find and replace": "Trouver et remplacer",
+"Whole words": "Mots entiers",
+"Spellcheck": "V\u00e9rification orthographique",
+"Caption": "Titre",
+"Insert template": "Ajouter un th\u00e8me"
+});
\ No newline at end of file
diff --git a/admin/js/vendors/tinymce/js/tinymce/langs/readme.md b/admin/js/vendors/tinymce/js/tinymce/langs/readme.md
new file mode 100644 (file)
index 0000000..a52bf03
--- /dev/null
@@ -0,0 +1,3 @@
+This is where language files should be placed.
+
+Please DO NOT translate these directly use this service: https://www.transifex.com/projects/p/tinymce/
diff --git a/admin/js/vendors/tinymce/js/tinymce/license.txt b/admin/js/vendors/tinymce/js/tinymce/license.txt
new file mode 100644 (file)
index 0000000..b17fc90
--- /dev/null
@@ -0,0 +1,504 @@
+      GNU LESSER GENERAL PUBLIC LICENSE
+           Version 2.1, February 1999
+
+ Copyright (C) 1991, 1999 Free Software Foundation, Inc.
+ 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the Lesser GPL.  It also counts
+ as the successor of the GNU Library Public License, version 2, hence
+ the version number 2.1.]
+
+          Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+  This license, the Lesser General Public License, applies to some
+specially designated software packages--typically libraries--of the
+Free Software Foundation and other authors who decide to use it.  You
+can use it too, but we suggest you first think carefully about whether
+this license or the ordinary General Public License is the better
+strategy to use in any particular case, based on the explanations below.
+
+  When we speak of free software, we are referring to freedom of use,
+not price.  Our General Public Licenses are designed to make sure that
+you have the freedom to distribute copies of free software (and charge
+for this service if you wish); that you receive source code or can get
+it if you want it; that you can change the software and use pieces of
+it in new free programs; and that you are informed that you can do
+these things.
+
+  To protect your rights, we need to make restrictions that forbid
+distributors to deny you these rights or to ask you to surrender these
+rights.  These restrictions translate to certain responsibilities for
+you if you distribute copies of the library or if you modify it.
+
+  For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you.  You must make sure that they, too, receive or can get the source
+code.  If you link other code with the library, you must provide
+complete object files to the recipients, so that they can relink them
+with the library after making changes to the library and recompiling
+it.  And you must show them these terms so they know their rights.
+
+  We protect your rights with a two-step method: (1) we copyright the
+library, and (2) we offer you this license, which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  To protect each distributor, we want to make it very clear that
+there is no warranty for the free library.  Also, if the library is
+modified by someone else and passed on, the recipients should know
+that what they have is not the original version, so that the original
+author's reputation will not be affected by problems that might be
+introduced by others.
+
+  Finally, software patents pose a constant threat to the existence of
+any free program.  We wish to make sure that a company cannot
+effectively restrict the users of a free program by obtaining a
+restrictive license from a patent holder.  Therefore, we insist that
+any patent license obtained for a version of the library must be
+consistent with the full freedom of use specified in this license.
+
+  Most GNU software, including some libraries, is covered by the
+ordinary GNU General Public License.  This license, the GNU Lesser
+General Public License, applies to certain designated libraries, and
+is quite different from the ordinary General Public License.  We use
+this license for certain libraries in order to permit linking those
+libraries into non-free programs.
+
+  When a program is linked with a library, whether statically or using
+a shared library, the combination of the two is legally speaking a
+combined work, a derivative of the original library.  The ordinary
+General Public License therefore permits such linking only if the
+entire combination fits its criteria of freedom.  The Lesser General
+Public License permits more lax criteria for linking other code with
+the library.
+
+  We call this license the "Lesser" General Public License because it
+does Less to protect the user's freedom than the ordinary General
+Public License.  It also provides other free software developers Less
+of an advantage over competing non-free programs.  These disadvantages
+are the reason we use the ordinary General Public License for many
+libraries.  However, the Lesser license provides advantages in certain
+special circumstances.
+
+  For example, on rare occasions, there may be a special need to
+encourage the widest possible use of a certain library, so that it becomes
+a de-facto standard.  To achieve this, non-free programs must be
+allowed to use the library.  A more frequent case is that a free
+library does the same job as widely used non-free libraries.  In this
+case, there is little to gain by limiting the free library to free
+software only, so we use the Lesser General Public License.
+
+  In other cases, permission to use a particular library in non-free
+programs enables a greater number of people to use a large body of
+free software.  For example, permission to use the GNU C Library in
+non-free programs enables many more people to use the whole GNU
+operating system, as well as its variant, the GNU/Linux operating
+system.
+
+  Although the Lesser General Public License is Less protective of the
+users' freedom, it does ensure that the user of a program that is
+linked with the Library has the freedom and the wherewithal to run
+that program using a modified version of the Library.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.  Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library".  The
+former contains code derived from the library, whereas the latter must
+be combined with the library in order to run.
+
+      GNU LESSER GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any software library or other
+program which contains a notice placed by the copyright holder or
+other authorized party saying it may be distributed under the terms of
+this Lesser General Public License (also called "this License").
+Each licensee is addressed as "you".
+
+  A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+  The "Library", below, refers to any such software library or work
+which has been distributed under these terms.  A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language.  (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+  "Source code" for a work means the preferred form of the work for
+making modifications to it.  For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control compilation
+and installation of the library.
+
+  Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it).  Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+  
+  1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+  You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+
+  2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) The modified work must itself be a software library.
+
+    b) You must cause the files modified to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    c) You must cause the whole of the work to be licensed at no
+    charge to all third parties under the terms of this License.
+
+    d) If a facility in the modified Library refers to a function or a
+    table of data to be supplied by an application program that uses
+    the facility, other than as an argument passed when the facility
+    is invoked, then you must make a good faith effort to ensure that,
+    in the event an application does not supply such function or
+    table, the facility still operates, and performs whatever part of
+    its purpose remains meaningful.
+
+    (For example, a function in a library to compute square roots has
+    a purpose that is entirely well-defined independent of the
+    application.  Therefore, Subsection 2d requires that any
+    application-supplied function or table used by this function must
+    be optional: if the application does not supply it, the square
+    root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library.  To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License.  (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.)  Do not make any other change in
+these notices.
+
+  Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+  This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+  4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+  If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library".  Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+  However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library".  The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+  When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library.  The
+threshold for this to be true is not precisely defined by law.
+
+  If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work.  (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+  Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+
+  6. As an exception to the Sections above, you may also combine or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+  You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License.  You must supply a copy of this License.  If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License.  Also, you must do one
+of these things:
+
+    a) Accompany the work with the complete corresponding
+    machine-readable source code for the Library including whatever
+    changes were used in the work (which must be distributed under
+    Sections 1 and 2 above); and, if the work is an executable linked
+    with the Library, with the complete machine-readable "work that
+    uses the Library", as object code and/or source code, so that the
+    user can modify the Library and then relink to produce a modified
+    executable containing the modified Library.  (It is understood
+    that the user who changes the contents of definitions files in the
+    Library will not necessarily be able to recompile the application
+    to use the modified definitions.)
+
+    b) Use a suitable shared library mechanism for linking with the
+    Library.  A suitable mechanism is one that (1) uses at run time a
+    copy of the library already present on the user's computer system,
+    rather than copying library functions into the executable, and (2)
+    will operate properly with a modified version of the library, if
+    the user installs one, as long as the modified version is
+    interface-compatible with the version that the work was made with.
+
+    c) Accompany the work with a written offer, valid for at
+    least three years, to give the same user the materials
+    specified in Subsection 6a, above, for a charge no more
+    than the cost of performing this distribution.
+
+    d) If distribution of the work is made by offering access to copy
+    from a designated place, offer equivalent access to copy the above
+    specified materials from the same place.
+
+    e) Verify that the user has already received a copy of these
+    materials or that you have already sent this user a copy.
+
+  For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it.  However, as a special exception,
+the materials to be distributed need not include anything that is
+normally distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+  It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system.  Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+
+  7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+    a) Accompany the combined library with a copy of the same work
+    based on the Library, uncombined with any other library
+    facilities.  This must be distributed under the terms of the
+    Sections above.
+
+    b) Give prominent notice with the combined library of the fact
+    that part of it is a work based on the Library, and explaining
+    where to find the accompanying uncombined form of the same work.
+
+  8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License.  Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License.  However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+  9. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Library or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+  10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties with
+this License.
+
+  11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply,
+and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License may add
+an explicit geographical distribution limitation excluding those countries,
+so that distribution is permitted only in or among countries not thus
+excluded.  In such case, this License incorporates the limitation as if
+written in the body of this License.
+
+  13. The Free Software Foundation may publish revised and/or new
+versions of the Lesser General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation.  If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+
+  14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission.  For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this.  Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+          NO WARRANTY
+
+  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+         END OF TERMS AND CONDITIONS
+
+           How to Apply These Terms to Your New Libraries
+
+  If you develop a new library, and you want it to be of the greatest
+possible use to the public, we recommend making it free software that
+everyone can redistribute and change.  You can do so by permitting
+redistribution under these terms (or, alternatively, under the terms of the
+ordinary General Public License).
+
+  To apply these terms, attach the following notices to the library.  It is
+safest to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least the
+"copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the library's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This library is free software; you can redistribute it and/or
+    modify it under the terms of the GNU Lesser General Public
+    License as published by the Free Software Foundation; either
+    version 2.1 of the License, or (at your option) any later version.
+
+    This library is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+    Lesser General Public License for more details.
+
+    You should have received a copy of the GNU Lesser General Public
+    License along with this library; if not, write to the Free Software
+    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+
+Also add information on how to contact you by electronic and paper mail.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the library, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the
+  library `Frob' (a library for tweaking knobs) written by James Random Hacker.
+
+  <signature of Ty Coon>, 1 April 1990
+  Ty Coon, President of Vice
+
+That's all there is to it!
+
+
diff --git a/admin/js/vendors/tinymce/js/tinymce/plugins/advlist/plugin.min.js b/admin/js/vendors/tinymce/js/tinymce/plugins/advlist/plugin.min.js
new file mode 100644 (file)
index 0000000..f11035d
--- /dev/null
@@ -0,0 +1,9 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ *
+ * Version: 5.1.5 (2019-12-19)
+ */
+!function(){"use strict";function n(){}function o(n){return function(){return n}}function t(){return d}var e,r=tinymce.util.Tools.resolve("tinymce.PluginManager"),u=tinymce.util.Tools.resolve("tinymce.util.Tools"),l=function(n,t,e){var r="UL"===t?"InsertUnorderedList":"InsertOrderedList";n.execCommand(r,!1,!1===e?null:{"list-style-type":e})},i=function(e){e.addCommand("ApplyUnorderedListStyle",function(n,t){l(e,"UL",t["list-style-type"])}),e.addCommand("ApplyOrderedListStyle",function(n,t){l(e,"OL",t["list-style-type"])})},c=function(n){var t=n.getParam("advlist_number_styles","default,lower-alpha,lower-greek,lower-roman,upper-alpha,upper-roman");return t?t.split(/[ ,]/):[]},s=function(n){var t=n.getParam("advlist_bullet_styles","default,circle,square");return t?t.split(/[ ,]/):[]},f=o(!1),a=o(!0),d=(e={fold:function(n,t){return n()},is:f,isSome:f,isNone:a,getOr:m,getOrThunk:p,getOrDie:function(n){throw new Error(n||"error: getOrDie called on none.")},getOrNull:o(null),getOrUndefined:o(undefined),or:m,orThunk:p,map:t,each:n,bind:t,exists:f,forall:a,filter:t,equals:g,equals_:g,toArray:function(){return[]},toString:o("none()")},Object.freeze&&Object.freeze(e),e);function g(n){return n.isNone()}function p(n){return n()}function m(n){return n}function y(n,t,e){var r=function(n,t){for(var e=0;e<n.length;e++){if(t(n[e]))return e}return-1}(t.parents,L),i=-1!==r?t.parents.slice(0,r):t.parents,o=u.grep(i,N(n));return 0<o.length&&o[0].nodeName===e}function O(n,t,e,r,i,o){0<o.length?function(e,n,t,r,i,o){e.ui.registry.addSplitButton(n,{tooltip:t,icon:"OL"===i?"ordered-list":"unordered-list",presets:"listpreview",columns:3,fetch:function(n){n(u.map(o,function(n){return{type:"choiceitem",value:"default"===n?"":n,icon:"list-"+("OL"===i?"num":"bull")+"-"+("disc"===n||"decimal"===n?"default":n),text:function(n){return n.replace(/\-/g," ").replace(/\b\w/g,function(n){return n.toUpperCase()})}(n)}}))},onAction:function(){return e.execCommand(r)},onItemAction:function(n,t){l(e,i,t)},select:function(t){return S(e).map(function(n){return t===n}).getOr(!1)},onSetup:function(t){function n(n){t.setActive(y(e,n,i))}return e.on("NodeChange",n),function(){return e.off("NodeChange",n)}}})}(n,t,e,r,i,o):function(e,n,t,r,i){e.ui.registry.addToggleButton(n,{active:!1,tooltip:t,icon:"OL"===i?"ordered-list":"unordered-list",onSetup:function(t){function n(n){t.setActive(y(e,n,i))}return e.on("NodeChange",n),function(){return e.off("NodeChange",n)}},onAction:function(){return e.execCommand(r)}})}(n,t,e,r,i)}var v=function(e){function n(){return i}function t(n){return n(e)}var r=o(e),i={fold:function(n,t){return t(e)},is:function(n){return e===n},isSome:a,isNone:f,getOr:r,getOrThunk:r,getOrDie:r,getOrNull:r,getOrUndefined:r,or:n,orThunk:n,map:function(n){return v(n(e))},each:function(n){n(e)},bind:t,exists:t,forall:t,filter:function(n){return n(e)?i:d},toArray:function(){return[e]},toString:function(){return"some("+e+")"},equals:function(n){return n.is(e)},equals_:function(n,t){return n.fold(f,function(n){return t(e,n)})}};return i},h=function(n){return null===n||n===undefined?d:v(n)},L=function(n){return n&&/^(TH|TD)$/.test(n.nodeName)},N=function(t){return function(n){return n&&/^(OL|UL|DL)$/.test(n.nodeName)&&function(n,t){return n.$.contains(n.getBody(),t)}(t,n)}},S=function(n){var t=n.dom.getParent(n.selection.getNode(),"ol,ul"),e=n.dom.getStyle(t,"listStyleType");return h(e)},T=function(n){O(n,"numlist","Numbered list","InsertOrderedList","OL",c(n)),O(n,"bullist","Bullet list","InsertUnorderedList","UL",s(n))};!function b(){r.add("advlist",function(n){var t,e,r;e="lists",r=(t=n).settings.plugins?t.settings.plugins:"",-1!==u.inArray(r.split(/[ ,]/),e)&&(T(n),i(n))})}()}();
\ No newline at end of file
diff --git a/admin/js/vendors/tinymce/js/tinymce/plugins/anchor/plugin.min.js b/admin/js/vendors/tinymce/js/tinymce/plugins/anchor/plugin.min.js
new file mode 100644 (file)
index 0000000..eac9ace
--- /dev/null
@@ -0,0 +1,9 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ *
+ * Version: 5.1.5 (2019-12-19)
+ */
+!function(){"use strict";function e(o){return function(t){for(var e=0;e<t.length;e++)(n=t[e]).attr("href")||!n.attr("id")&&!n.attr("name")||n.firstChild||t[e].attr("contenteditable",o);var n}}var t=tinymce.util.Tools.resolve("tinymce.PluginManager"),n=function(t){return/^[A-Za-z][A-Za-z0-9\-:._]*$/.test(t)},o=function(t){var e=t.selection.getNode();return"A"===e.tagName&&""===t.dom.getAttrib(e,"href")?e.getAttribute("id")||e.getAttribute("name"):""},r=function(t,e){var n=t.selection.getNode();"A"===n.tagName&&""===t.dom.getAttrib(n,"href")?(n.removeAttribute("name"),n.id=e,t.undoManager.add()):(t.focus(),t.selection.collapse(!0),t.execCommand("mceInsertContent",!1,t.dom.createHTML("a",{id:e})))},a=function(e){var t=o(e);e.windowManager.open({title:"Anchor",size:"normal",body:{type:"panel",items:[{name:"id",type:"input",label:"ID",placeholder:"example"}]},buttons:[{type:"cancel",name:"cancel",text:"Cancel"},{type:"submit",name:"save",text:"Save",primary:!0}],initialData:{id:t},onSubmit:function(t){!function(t,e){return n(e)?(r(t,e),!1):(t.windowManager.alert("Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores."),!0)}(e,t.getData().id)&&t.close()}})},i=function(t){t.addCommand("mceAnchor",function(){a(t)})},c=function(t){t.on("PreInit",function(){t.parser.addNodeFilter("a",e("false")),t.serializer.addNodeFilter("a",e(null))})},d=function(e){e.ui.registry.addToggleButton("anchor",{icon:"bookmark",tooltip:"Anchor",onAction:function(){return e.execCommand("mceAnchor")},onSetup:function(t){return e.selection.selectorChangedWithUnbind("a:not([href])",t.setActive).unbind}}),e.ui.registry.addMenuItem("anchor",{icon:"bookmark",text:"Anchor...",onAction:function(){return e.execCommand("mceAnchor")}})};!function u(){t.add("anchor",function(t){c(t),i(t),d(t)})}()}();
\ No newline at end of file
diff --git a/admin/js/vendors/tinymce/js/tinymce/plugins/autolink/plugin.min.js b/admin/js/vendors/tinymce/js/tinymce/plugins/autolink/plugin.min.js
new file mode 100644 (file)
index 0000000..c12a0a7
--- /dev/null
@@ -0,0 +1,9 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ *
+ * Version: 5.1.5 (2019-12-19)
+ */
+!function(){"use strict";function i(t,e){if(e<0&&(e=0),3===t.nodeType){var n=t.data.length;n<e&&(e=n)}return e}function C(t,e,n){1!==e.nodeType||e.hasChildNodes()?t.setStart(e,i(e,n)):t.setStartBefore(e)}function m(t,e,n){1!==e.nodeType||e.hasChildNodes()?t.setEnd(e,i(e,n)):t.setEndAfter(e)}var t=tinymce.util.Tools.resolve("tinymce.PluginManager"),o=tinymce.util.Tools.resolve("tinymce.Env"),y=function(t){return t.getParam("autolink_pattern",/^(https?:\/\/|ssh:\/\/|ftp:\/\/|file:\/|www\.|(?:mailto:)?[A-Z0-9._%+\-]+@)(.+)$/i)},k=function(t){return t.getParam("default_link_target",!1)},r=function(t,e,n){var i,o,r,f,a,s,d,c,l,u,g=y(t),h=k(t);if("A"!==t.selection.getNode().tagName){if((i=t.selection.getRng(!0).cloneRange()).startOffset<5){if(!(c=i.endContainer.previousSibling)){if(!i.endContainer.firstChild||!i.endContainer.firstChild.nextSibling)return;c=i.endContainer.firstChild.nextSibling}if(l=c.length,C(i,c,l),m(i,c,l),i.endOffset<5)return;o=i.endOffset,f=c}else{if(3!==(f=i.endContainer).nodeType&&f.firstChild){for(;3!==f.nodeType&&f.firstChild;)f=f.firstChild;3===f.nodeType&&(C(i,f,0),m(i,f,f.nodeValue.length))}o=1===i.endOffset?2:i.endOffset-1-e}for(r=o;C(i,f,2<=o?o-2:0),m(i,f,1<=o?o-1:0),o-=1," "!==(u=i.toString())&&""!==u&&160!==u.charCodeAt(0)&&0<=o-2&&u!==n;);!function(t,e){return t===e||" "===t||160===t.charCodeAt(0)}(i.toString(),n)?(0===i.startOffset?C(i,f,0):C(i,f,o),m(i,f,r)):(C(i,f,o),m(i,f,r),o+=1),"."===(s=i.toString()).charAt(s.length-1)&&m(i,f,r-1),(d=(s=i.toString().trim()).match(g))&&("www."===d[1]?d[1]="http://www.":/@$/.test(d[1])&&!/^mailto:/.test(d[1])&&(d[1]="mailto:"+d[1]),a=t.selection.getBookmark(),t.selection.setRng(i),t.execCommand("createlink",!1,d[1]+d[2]),!1!==h&&t.dom.setAttrib(t.selection.getNode(),"target",h),t.selection.moveToBookmark(a),t.nodeChanged())}},e=function(e){var n;e.on("keydown",function(t){if(13===t.keyCode)return function(t){r(t,-1,"")}(e)}),o.browser.isIE()?e.on("focus",function(){if(!n){n=!0;try{e.execCommand("AutoUrlDetect",!1,!0)}catch(t){}}}):(e.on("keypress",function(t){if(41===t.keyCode)return function(t){r(t,-1,"(")}(e)}),e.on("keyup",function(t){if(32===t.keyCode)return function(t){r(t,0,"")}(e)}))};!function n(){t.add("autolink",function(t){e(t)})}()}();
\ No newline at end of file
diff --git a/admin/js/vendors/tinymce/js/tinymce/plugins/autoresize/plugin.min.js b/admin/js/vendors/tinymce/js/tinymce/plugins/autoresize/plugin.min.js
new file mode 100644 (file)
index 0000000..8d76967
--- /dev/null
@@ -0,0 +1,9 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ *
+ * Version: 5.1.5 (2019-12-19)
+ */
+!function(){"use strict";function d(e,t){var n=e.getBody();n&&(n.style.overflowY=t?"":"hidden",t||(n.scrollTop=0))}function h(e,t,n,i){var o=parseInt(e.getStyle(t,n,i),10);return isNaN(o)?0:o}var i=function(e){function t(){return n}var n=e;return{get:t,set:function(e){n=e},clone:function(){return i(t())}}},e=tinymce.util.Tools.resolve("tinymce.PluginManager"),v=tinymce.util.Tools.resolve("tinymce.Env"),r=tinymce.util.Tools.resolve("tinymce.util.Delay"),p=function(e){return e.fire("ResizeEditor")},y=function(e){return e.getParam("min_height",e.getElement().offsetHeight,"number")},z=function(e){return e.getParam("max_height",0,"number")},n=function(e){return e.getParam("autoresize_overflow_padding",1,"number")},b=function(e){return e.getParam("autoresize_bottom_margin",50,"number")},o=function(e){return e.getParam("autoresize_on_init",!0,"boolean")},u=function(e,t,n,i,o){r.setEditorTimeout(e,function(){C(e,t),n--?u(e,t,n,i,o):o&&o()},i)},C=function(e,t){var n,i,o,r=e.dom,u=e.getDoc();if(u)if(function(e){return e.plugins.fullscreen&&e.plugins.fullscreen.isFullscreen()}(e))d(e,!0);else{var s=u.documentElement,a=b(e);i=y(e);var f=h(r,s,"margin-top",!0),c=h(r,s,"margin-bottom",!0);(o=s.offsetHeight+f+c+a)<0&&(o=0);var g=e.getContainer().offsetHeight-e.getContentAreaContainer().offsetHeight;o+g>y(e)&&(i=o+g);var l=z(e);if(l&&l<i?(i=l,d(e,!0)):d(e,!1),i!==t.get()){if(n=i-t.get(),r.setStyle(e.getContainer(),"height",i+"px"),t.set(i),p(e),v.browser.isSafari()&&v.mac){var m=e.getWin();m.scrollTo(m.pageXOffset,m.pageYOffset)}e.hasFocus()&&e.selection.scrollIntoView(e.selection.getNode()),v.webkit&&n<0&&C(e,t)}}},s={setup:function(t,e){t.on("init",function(){var e=n(t);t.dom.setStyles(t.getBody(),{paddingLeft:e,paddingRight:e,"min-height":0})}),t.on("NodeChange SetContent keyup FullscreenStateChanged ResizeContent",function(){C(t,e)}),o(t)&&t.on("init",function(){u(t,e,20,100,function(){u(t,e,5,1e3)})})},resize:C},a=function(e,t){e.addCommand("mceAutoResize",function(){s.resize(e,t)})};!function t(){e.add("autoresize",function(e){if(e.settings.hasOwnProperty("resize")||(e.settings.resize=!1),!e.inline){var t=i(0);a(e,t),s.setup(e,t)}})}()}();
\ No newline at end of file
diff --git a/admin/js/vendors/tinymce/js/tinymce/plugins/autosave/plugin.min.js b/admin/js/vendors/tinymce/js/tinymce/plugins/autosave/plugin.min.js
new file mode 100644 (file)
index 0000000..c3683e7
--- /dev/null
@@ -0,0 +1,9 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ *
+ * Version: 5.1.5 (2019-12-19)
+ */
+!function(n){"use strict";function r(t,e){var n=t||e,r=/^(\d+)([ms]?)$/.exec(""+n);return(r[2]?{s:1e3,m:6e4}[r[2]]:1)*parseInt(n,10)}function o(t){var e=t.getParam("autosave_prefix","tinymce-autosave-{path}{query}{hash}-{id}-");return e=(e=(e=(e=e.replace(/\{path\}/g,n.document.location.pathname)).replace(/\{query\}/g,n.document.location.search)).replace(/\{hash\}/g,n.document.location.hash)).replace(/\{id\}/g,t.id)}function a(t,e){var n=t.settings.forced_root_block;return""===(e=d.trim(void 0===e?t.getBody().innerHTML:e))||new RegExp("^<"+n+"[^>]*>((\xa0|&nbsp;|[ \t]|<br[^>]*>)+?|)</"+n+">|<br>$","i").test(e)}function i(t){var e=parseInt(v.getItem(o(t)+"time"),10)||0;return!((new Date).getTime()-e>function(t){return r(t.settings.autosave_retention,"20m")}(t))||(g(t,!1),!1)}function u(t){var e=o(t);!a(t)&&t.isDirty()&&(v.setItem(e+"draft",t.getContent({format:"raw",no_events:!0})),v.setItem(e+"time",(new Date).getTime().toString()),function(t){t.fire("StoreDraft")}(t))}function s(t){var e=o(t);i(t)&&(t.setContent(v.getItem(e+"draft"),{format:"raw"}),function(t){t.fire("RestoreDraft")}(t))}function c(t,e){var n=function(t){return r(t.settings.autosave_interval,"30s")}(t);e.get()||(m.setInterval(function(){t.removed||u(t)},n),e.set(!0))}function f(t){t.undoManager.transact(function(){s(t),g(t)}),t.focus()}var l=function(t){function e(){return n}var n=t;return{get:e,set:function(t){n=t},clone:function(){return l(e())}}},t=tinymce.util.Tools.resolve("tinymce.PluginManager"),m=tinymce.util.Tools.resolve("tinymce.util.Delay"),v=tinymce.util.Tools.resolve("tinymce.util.LocalStorage"),d=tinymce.util.Tools.resolve("tinymce.util.Tools"),g=function(t,e){var n=o(t);v.removeItem(n+"draft"),v.removeItem(n+"time"),!1!==e&&function(t){t.fire("RemoveDraft")}(t)};function y(r){for(var o=[],t=1;t<arguments.length;t++)o[t-1]=arguments[t];return function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];var n=o.concat(t);return r.apply(null,n)}}function p(n,t){return function(t){t.setDisabled(!i(n));function e(){return t.setDisabled(!i(n))}return n.on("StoreDraft RestoreDraft RemoveDraft",e),function(){return n.off("StoreDraft RestoreDraft RemoveDraft",e)}}}var D=tinymce.util.Tools.resolve("tinymce.EditorManager");!function e(){t.add("autosave",function(t){var e=l(!1);return function(t){t.editorManager.on("BeforeUnload",function(t){var e;d.each(D.get(),function(t){t.plugins.autosave&&t.plugins.autosave.storeDraft(),!e&&t.isDirty()&&function(t){return t.getParam("autosave_ask_before_unload",!0)}(t)&&(e=t.translate("You have unsaved changes are you sure you want to navigate away?"))}),e&&(t.preventDefault(),t.returnValue=e)})}(t),function(t,e){c(t,e),t.ui.registry.addButton("restoredraft",{tooltip:"Restore last draft",icon:"restore-draft",onAction:function(){f(t)},onSetup:p(t)}),t.ui.registry.addMenuItem("restoredraft",{text:"Restore last draft",icon:"restore-draft",onAction:function(){f(t)},onSetup:p(t)})}(t,e),t.on("init",function(){(function(t){return t.getParam("autosave_restore_when_empty",!1)})(t)&&t.dom.isEmpty(t.getBody())&&s(t)}),function(t){return{hasDraft:y(i,t),storeDraft:y(u,t),restoreDraft:y(s,t),removeDraft:y(g,t),isEmpty:y(a,t)}}(t)})}()}(window);
\ No newline at end of file
diff --git a/admin/js/vendors/tinymce/js/tinymce/plugins/bbcode/plugin.min.js b/admin/js/vendors/tinymce/js/tinymce/plugins/bbcode/plugin.min.js
new file mode 100644 (file)
index 0000000..3b5119f
--- /dev/null
@@ -0,0 +1,9 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ *
+ * Version: 5.1.5 (2019-12-19)
+ */
+!function(){"use strict";var o=tinymce.util.Tools.resolve("tinymce.PluginManager"),e=tinymce.util.Tools.resolve("tinymce.util.Tools"),t=function(t){t=e.trim(t);function o(o,e){t=t.replace(o,e)}return o(/<a.*?href=\"(.*?)\".*?>(.*?)<\/a>/gi,"[url=$1]$2[/url]"),o(/<font.*?color=\"(.*?)\".*?class=\"codeStyle\".*?>(.*?)<\/font>/gi,"[code][color=$1]$2[/color][/code]"),o(/<font.*?color=\"(.*?)\".*?class=\"quoteStyle\".*?>(.*?)<\/font>/gi,"[quote][color=$1]$2[/color][/quote]"),o(/<font.*?class=\"codeStyle\".*?color=\"(.*?)\".*?>(.*?)<\/font>/gi,"[code][color=$1]$2[/color][/code]"),o(/<font.*?class=\"quoteStyle\".*?color=\"(.*?)\".*?>(.*?)<\/font>/gi,"[quote][color=$1]$2[/color][/quote]"),o(/<span style=\"color: ?(.*?);\">(.*?)<\/span>/gi,"[color=$1]$2[/color]"),o(/<font.*?color=\"(.*?)\".*?>(.*?)<\/font>/gi,"[color=$1]$2[/color]"),o(/<span style=\"font-size:(.*?);\">(.*?)<\/span>/gi,"[size=$1]$2[/size]"),o(/<font>(.*?)<\/font>/gi,"$1"),o(/<img.*?src=\"(.*?)\".*?\/>/gi,"[img]$1[/img]"),o(/<span class=\"codeStyle\">(.*?)<\/span>/gi,"[code]$1[/code]"),o(/<span class=\"quoteStyle\">(.*?)<\/span>/gi,"[quote]$1[/quote]"),o(/<strong class=\"codeStyle\">(.*?)<\/strong>/gi,"[code][b]$1[/b][/code]"),o(/<strong class=\"quoteStyle\">(.*?)<\/strong>/gi,"[quote][b]$1[/b][/quote]"),o(/<em class=\"codeStyle\">(.*?)<\/em>/gi,"[code][i]$1[/i][/code]"),o(/<em class=\"quoteStyle\">(.*?)<\/em>/gi,"[quote][i]$1[/i][/quote]"),o(/<u class=\"codeStyle\">(.*?)<\/u>/gi,"[code][u]$1[/u][/code]"),o(/<u class=\"quoteStyle\">(.*?)<\/u>/gi,"[quote][u]$1[/u][/quote]"),o(/<\/(strong|b)>/gi,"[/b]"),o(/<(strong|b)>/gi,"[b]"),o(/<\/(em|i)>/gi,"[/i]"),o(/<(em|i)>/gi,"[i]"),o(/<\/u>/gi,"[/u]"),o(/<span style=\"text-decoration: ?underline;\">(.*?)<\/span>/gi,"[u]$1[/u]"),o(/<u>/gi,"[u]"),o(/<blockquote[^>]*>/gi,"[quote]"),o(/<\/blockquote>/gi,"[/quote]"),o(/<br \/>/gi,"\n"),o(/<br\/>/gi,"\n"),o(/<br>/gi,"\n"),o(/<p>/gi,""),o(/<\/p>/gi,"\n"),o(/&nbsp;|\u00a0/gi," "),o(/&quot;/gi,'"'),o(/&lt;/gi,"<"),o(/&gt;/gi,">"),o(/&amp;/gi,"&"),t},i=function(t){t=e.trim(t);function o(o,e){t=t.replace(o,e)}return o(/\n/gi,"<br />"),o(/\[b\]/gi,"<strong>"),o(/\[\/b\]/gi,"</strong>"),o(/\[i\]/gi,"<em>"),o(/\[\/i\]/gi,"</em>"),o(/\[u\]/gi,"<u>"),o(/\[\/u\]/gi,"</u>"),o(/\[url=([^\]]+)\](.*?)\[\/url\]/gi,'<a href="$1">$2</a>'),o(/\[url\](.*?)\[\/url\]/gi,'<a href="$1">$1</a>'),o(/\[img\](.*?)\[\/img\]/gi,'<img src="$1" />'),o(/\[color=(.*?)\](.*?)\[\/color\]/gi,'<font color="$1">$2</font>'),o(/\[code\](.*?)\[\/code\]/gi,'<span class="codeStyle">$1</span>&nbsp;'),o(/\[quote.*?\](.*?)\[\/quote\]/gi,'<span class="quoteStyle">$1</span>&nbsp;'),t};!function n(){o.add("bbcode",function(o){o.on("BeforeSetContent",function(o){o.content=i(o.content)}),o.on("PostProcess",function(o){o.set&&(o.content=i(o.content)),o.get&&(o.content=t(o.content))})})}()}();
\ No newline at end of file
diff --git a/admin/js/vendors/tinymce/js/tinymce/plugins/charmap/plugin.min.js b/admin/js/vendors/tinymce/js/tinymce/plugins/charmap/plugin.min.js
new file mode 100644 (file)
index 0000000..b1623c9
--- /dev/null
@@ -0,0 +1,9 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ *
+ * Version: 5.1.5 (2019-12-19)
+ */
+!function(c){"use strict";function n(){}function i(n){return function(){return n}}function e(){return m}var r,t=tinymce.util.Tools.resolve("tinymce.PluginManager"),a=function(n,e){return n.fire("insertCustomChar",{chr:e})},u=function(n,e){var r=a(n,e).chr;n.execCommand("mceInsertContent",!1,r)},o=tinymce.util.Tools.resolve("tinymce.util.Tools"),s=function(n){return n.settings.charmap},l=function(n){return n.settings.charmap_append},f=i(!1),g=i(!0),m=(r={fold:function(n,e){return n()},is:f,isSome:f,isNone:g,getOr:p,getOrThunk:d,getOrDie:function(n){throw new Error(n||"error: getOrDie called on none.")},getOrNull:i(null),getOrUndefined:i(undefined),or:p,orThunk:d,map:e,each:n,bind:e,exists:f,forall:g,filter:e,equals:h,equals_:h,toArray:function(){return[]},toString:i("none()")},Object.freeze&&Object.freeze(r),r);function h(n){return n.isNone()}function d(n){return n()}function p(n){return n}function y(e){return function(n){return function(n){if(null===n)return"null";var e=typeof n;return"object"==e&&(Array.prototype.isPrototypeOf(n)||n.constructor&&"Array"===n.constructor.name)?"array":"object"==e&&(String.prototype.isPrototypeOf(n)||n.constructor&&"String"===n.constructor.name)?"string":e}(n)===e}}function w(n,e){for(var r=n.length,t=new Array(r),a=0;a<r;a++){var i=n[a];t[a]=e(i,a)}return t}function b(n,e){return function(n){for(var e=[],r=0,t=n.length;r<t;++r){if(!O(n[r]))throw new Error("Arr.flatten item "+r+" was not an array, input: "+n);S.apply(e,n[r])}return e}(w(n,e))}function v(n){return T(n)?[].concat(function(n){return o.grep(n,function(n){return T(n)&&2===n.length})}(n)):"function"==typeof n?n():[]}function k(n,e){return-1!==n.indexOf(e)}var C=function(r){function n(){return a}function e(n){return n(r)}var t=i(r),a={fold:function(n,e){return e(r)},is:function(n){return r===n},isSome:g,isNone:f,getOr:t,getOrThunk:t,getOrDie:t,getOrNull:t,getOrUndefined:t,or:n,orThunk:n,map:function(n){return C(n(r))},each:function(n){n(r)},bind:e,exists:e,forall:e,filter:function(n){return n(r)?a:m},toArray:function(){return[r]},toString:function(){return"some("+r+")"},equals:function(n){return n.is(r)},equals_:function(n,e){return n.fold(f,function(n){return e(r,n)})}};return a},A={some:C,none:e,from:function(n){return null===n||n===undefined?m:C(n)}},O=y("array"),x=y("function"),q=Array.prototype.slice,S=Array.prototype.push,T=(x(Array.from)&&Array.from,o.isArray),E="User Defined",z=function(n){var e=function(n,e){var r=s(n);r&&(e=[{name:E,characters:v(r)}]);var t=l(n);if(t){var a=o.grep(e,function(n){return n.name===E});return a.length?(a[0].characters=[].concat(a[0].characters).concat(v(t)),e):[].concat(e).concat({name:E,characters:v(t)})}return e}(n,[{name:"Currency",characters:[[36,"dollar sign"],[162,"cent sign"],[8364,"euro sign"],[163,"pound sign"],[165,"yen sign"],[164,"currency sign"],[8352,"euro-currency sign"],[8353,"colon sign"],[8354,"cruzeiro sign"],[8355,"french franc sign"],[8356,"lira sign"],[8357,"mill sign"],[8358,"naira sign"],[8359,"peseta sign"],[8360,"rupee sign"],[8361,"won sign"],[8362,"new sheqel sign"],[8363,"dong sign"],[8365,"kip sign"],[8366,"tugrik sign"],[8367,"drachma sign"],[8368,"german penny symbol"],[8369,"peso sign"],[8370,"guarani sign"],[8371,"austral sign"],[8372,"hryvnia sign"],[8373,"cedi sign"],[8374,"livre tournois sign"],[8375,"spesmilo sign"],[8376,"tenge sign"],[8377,"indian rupee sign"],[8378,"turkish lira sign"],[8379,"nordic mark sign"],[8380,"manat sign"],[8381,"ruble sign"],[20870,"yen character"],[20803,"yuan character"],[22291,"yuan character, in hong kong and taiwan"],[22278,"yen/yuan character variant one"]]},{name:"Text",characters:[[169,"copyright sign"],[174,"registered sign"],[8482,"trade mark sign"],[8240,"per mille sign"],[181,"micro sign"],[183,"middle dot"],[8226,"bullet"],[8230,"three dot leader"],[8242,"minutes / feet"],[8243,"seconds / inches"],[167,"section sign"],[182,"paragraph sign"],[223,"sharp s / ess-zed"]]},{name:"Quotations",characters:[[8249,"single left-pointing angle quotation mark"],[8250,"single right-pointing angle quotation mark"],[171,"left pointing guillemet"],[187,"right pointing guillemet"],[8216,"left single quotation mark"],[8217,"right single quotation mark"],[8220,"left double quotation mark"],[8221,"right double quotation mark"],[8218,"single low-9 quotation mark"],[8222,"double low-9 quotation mark"],[60,"less-than sign"],[62,"greater-than sign"],[8804,"less-than or equal to"],[8805,"greater-than or equal to"],[8211,"en dash"],[8212,"em dash"],[175,"macron"],[8254,"overline"],[164,"currency sign"],[166,"broken bar"],[168,"diaeresis"],[161,"inverted exclamation mark"],[191,"turned question mark"],[710,"circumflex accent"],[732,"small tilde"],[176,"degree sign"],[8722,"minus sign"],[177,"plus-minus sign"],[247,"division sign"],[8260,"fraction slash"],[215,"multiplication sign"],[185,"superscript one"],[178,"superscript two"],[179,"superscript three"],[188,"fraction one quarter"],[189,"fraction one half"],[190,"fraction three quarters"]]},{name:"Mathematical",characters:[[402,"function / florin"],[8747,"integral"],[8721,"n-ary sumation"],[8734,"infinity"],[8730,"square root"],[8764,"similar to"],[8773,"approximately equal to"],[8776,"almost equal to"],[8800,"not equal to"],[8801,"identical to"],[8712,"element of"],[8713,"not an element of"],[8715,"contains as member"],[8719,"n-ary product"],[8743,"logical and"],[8744,"logical or"],[172,"not sign"],[8745,"intersection"],[8746,"union"],[8706,"partial differential"],[8704,"for all"],[8707,"there exists"],[8709,"diameter"],[8711,"backward difference"],[8727,"asterisk operator"],[8733,"proportional to"],[8736,"angle"]]},{name:"Extended Latin",characters:[[192,"A - grave"],[193,"A - acute"],[194,"A - circumflex"],[195,"A - tilde"],[196,"A - diaeresis"],[197,"A - ring above"],[256,"A - macron"],[198,"ligature AE"],[199,"C - cedilla"],[200,"E - grave"],[201,"E - acute"],[202,"E - circumflex"],[203,"E - diaeresis"],[274,"E - macron"],[204,"I - grave"],[205,"I - acute"],[206,"I - circumflex"],[207,"I - diaeresis"],[298,"I - macron"],[208,"ETH"],[209,"N - tilde"],[210,"O - grave"],[211,"O - acute"],[212,"O - circumflex"],[213,"O - tilde"],[214,"O - diaeresis"],[216,"O - slash"],[332,"O - macron"],[338,"ligature OE"],[352,"S - caron"],[217,"U - grave"],[218,"U - acute"],[219,"U - circumflex"],[220,"U - diaeresis"],[362,"U - macron"],[221,"Y - acute"],[376,"Y - diaeresis"],[562,"Y - macron"],[222,"THORN"],[224,"a - grave"],[225,"a - acute"],[226,"a - circumflex"],[227,"a - tilde"],[228,"a - diaeresis"],[229,"a - ring above"],[257,"a - macron"],[230,"ligature ae"],[231,"c - cedilla"],[232,"e - grave"],[233,"e - acute"],[234,"e - circumflex"],[235,"e - diaeresis"],[275,"e - macron"],[236,"i - grave"],[237,"i - acute"],[238,"i - circumflex"],[239,"i - diaeresis"],[299,"i - macron"],[240,"eth"],[241,"n - tilde"],[242,"o - grave"],[243,"o - acute"],[244,"o - circumflex"],[245,"o - tilde"],[246,"o - diaeresis"],[248,"o slash"],[333,"o macron"],[339,"ligature oe"],[353,"s - caron"],[249,"u - grave"],[250,"u - acute"],[251,"u - circumflex"],[252,"u - diaeresis"],[363,"u - macron"],[253,"y - acute"],[254,"thorn"],[255,"y - diaeresis"],[563,"y - macron"],[913,"Alpha"],[914,"Beta"],[915,"Gamma"],[916,"Delta"],[917,"Epsilon"],[918,"Zeta"],[919,"Eta"],[920,"Theta"],[921,"Iota"],[922,"Kappa"],[923,"Lambda"],[924,"Mu"],[925,"Nu"],[926,"Xi"],[927,"Omicron"],[928,"Pi"],[929,"Rho"],[931,"Sigma"],[932,"Tau"],[933,"Upsilon"],[934,"Phi"],[935,"Chi"],[936,"Psi"],[937,"Omega"],[945,"alpha"],[946,"beta"],[947,"gamma"],[948,"delta"],[949,"epsilon"],[950,"zeta"],[951,"eta"],[952,"theta"],[953,"iota"],[954,"kappa"],[955,"lambda"],[956,"mu"],[957,"nu"],[958,"xi"],[959,"omicron"],[960,"pi"],[961,"rho"],[962,"final sigma"],[963,"sigma"],[964,"tau"],[965,"upsilon"],[966,"phi"],[967,"chi"],[968,"psi"],[969,"omega"]]},{name:"Symbols",characters:[[8501,"alef symbol"],[982,"pi symbol"],[8476,"real part symbol"],[978,"upsilon - hook symbol"],[8472,"Weierstrass p"],[8465,"imaginary part"]]},{name:"Arrows",characters:[[8592,"leftwards arrow"],[8593,"upwards arrow"],[8594,"rightwards arrow"],[8595,"downwards arrow"],[8596,"left right arrow"],[8629,"carriage return"],[8656,"leftwards double arrow"],[8657,"upwards double arrow"],[8658,"rightwards double arrow"],[8659,"downwards double arrow"],[8660,"left right double arrow"],[8756,"therefore"],[8834,"subset of"],[8835,"superset of"],[8836,"not a subset of"],[8838,"subset of or equal to"],[8839,"superset of or equal to"],[8853,"circled plus"],[8855,"circled times"],[8869,"perpendicular"],[8901,"dot operator"],[8968,"left ceiling"],[8969,"right ceiling"],[8970,"left floor"],[8971,"right floor"],[9001,"left-pointing angle bracket"],[9002,"right-pointing angle bracket"],[9674,"lozenge"],[9824,"black spade suit"],[9827,"black club suit"],[9829,"black heart suit"],[9830,"black diamond suit"],[8194,"en space"],[8195,"em space"],[8201,"thin space"],[8204,"zero width non-joiner"],[8205,"zero width joiner"],[8206,"left-to-right mark"],[8207,"right-to-left mark"]]}]);return 1<e.length?[{name:"All",characters:b(e,function(n){return n.characters})}].concat(e):e},N=function(e){return{getCharMap:function(){return z(e)},insertChar:function(n){u(e,n)}}},U=function(n){function e(){return r}var r=n;return{get:e,set:function(n){r=n},clone:function(){return U(e())}}},D=function(n,e){var r=[],t=e.toLowerCase();return function(n,e){for(var r=0,t=n.length;r<t;r++){e(n[r],r)}}(n.characters,function(n){!function(n,e,r){return!!k(String.fromCharCode(n).toLowerCase(),r)||(k(e.toLowerCase(),r)||k(e.toLowerCase().replace(/\s+/g,""),r))}(n[0],n[1],t)||r.push(n)}),w(r,function(n){return{text:n[1],value:String.fromCharCode(n[0]),icon:String.fromCharCode(n[0])}})},I="pattern",P=function(r,n){function e(){return[{label:"Search",type:"input",name:I},{type:"collection",name:"results"}]}function t(r,t){(function(n,e){for(var r=0,t=n.length;r<t;r++){var a=n[r];if(e(a,r))return A.some(a)}return A.none()})(n,function(n){return n.name===a.get()}).each(function(n){var e=D(n,t);r.setData({results:e})})}var a=1===n.length?U(E):U("All"),i=function(r,t){var a=null;return{cancel:function(){null!==a&&(c.clearTimeout(a),a=null)},throttle:function(){for(var n=[],e=0;e<arguments.length;e++)n[e]=arguments[e];null!==a&&c.clearTimeout(a),a=c.setTimeout(function(){r.apply(null,n),a=null},t)}}}(function(n){var e=n.getData().pattern;t(n,e)},40),o={title:"Special Character",size:"normal",body:1===n.length?{type:"panel",items:e()}:{type:"tabpanel",tabs:w(n,function(n){return{title:n.name,name:n.name,items:e()}})},buttons:[{type:"cancel",name:"close",text:"Close",primary:!0}],initialData:{pattern:"",results:D(n[0],"")},onAction:function(n,e){"results"===e.name&&(u(r,e.value),n.close())},onTabChange:function(n,e){a.set(e.newTabName),i.throttle(n)},onChange:function(n,e){e.name===I&&i.throttle(n)}};r.windowManager.open(o).focus(I)},j=function(n,e){n.addCommand("mceShowCharmap",function(){P(n,e)})},L=tinymce.util.Tools.resolve("tinymce.util.Promise"),M=function(n){n.ui.registry.addButton("charmap",{icon:"insert-character",tooltip:"Special character",onAction:function(){return n.execCommand("mceShowCharmap")}}),n.ui.registry.addMenuItem("charmap",{icon:"insert-character",text:"Special character...",onAction:function(){return n.execCommand("mceShowCharmap")}})};!function R(){t.add("charmap",function(n){var e=z(n);return j(n,e),M(n),function(t,a){t.ui.registry.addAutocompleter("charmap",{ch:":",columns:"auto",minChars:2,fetch:function(r,n){return new L(function(n,e){n(D(a,r))})},onAction:function(n,e,r){t.selection.setRng(e),t.insertContent(r),n.hide()}})}(n,e[0]),N(n)})}()}(window);
\ No newline at end of file
diff --git a/admin/js/vendors/tinymce/js/tinymce/plugins/code/plugin.min.js b/admin/js/vendors/tinymce/js/tinymce/plugins/code/plugin.min.js
new file mode 100644 (file)
index 0000000..f0db72f
--- /dev/null
@@ -0,0 +1,9 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ *
+ * Version: 5.1.5 (2019-12-19)
+ */
+!function(){"use strict";var e=tinymce.util.Tools.resolve("tinymce.PluginManager"),t=function(e,n){e.focus(),e.undoManager.transact(function(){e.setContent(n)}),e.selection.setCursorLocation(),e.nodeChanged()},o=function(e){return e.getContent({source_view:!0})},n=function(n){var e=o(n);n.windowManager.open({title:"Source Code",size:"large",body:{type:"panel",items:[{type:"textarea",name:"code"}]},buttons:[{type:"cancel",name:"cancel",text:"Cancel"},{type:"submit",name:"save",text:"Save",primary:!0}],initialData:{code:e},onSubmit:function(e){t(n,e.getData().code),e.close()}})},c=function(e){e.addCommand("mceCodeEditor",function(){n(e)})},i=function(e){e.ui.registry.addButton("code",{icon:"sourcecode",tooltip:"Source code",onAction:function(){return n(e)}}),e.ui.registry.addMenuItem("code",{icon:"sourcecode",text:"Source code",onAction:function(){return n(e)}})};!function u(){e.add("code",function(e){return c(e),i(e),{}})}()}();
\ No newline at end of file
diff --git a/admin/js/vendors/tinymce/js/tinymce/plugins/codesample/plugin.min.js b/admin/js/vendors/tinymce/js/tinymce/plugins/codesample/plugin.min.js
new file mode 100644 (file)
index 0000000..95f8588
--- /dev/null
@@ -0,0 +1,9 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ *
+ * Version: 5.1.5 (2019-12-19)
+ */
+!function(c){"use strict";var e=tinymce.util.Tools.resolve("tinymce.PluginManager"),r=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),t={},n=t,g=void 0!==t?t:"undefined"!=typeof WorkerGlobalScope&&c.self instanceof WorkerGlobalScope?c.self:{},i=function(){var u=/\blang(?:uage)?-(?!\*)(\w+)\b/i,S=g.Prism={util:{encode:function(e){return e instanceof s?new s(e.type,S.util.encode(e.content),e.alias):"Array"===S.util.type(e)?e.map(S.util.encode):e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/\u00a0/g," ")},type:function(e){return Object.prototype.toString.call(e).match(/\[object (\w+)\]/)[1]},clone:function(e){switch(S.util.type(e)){case"Object":var t={};for(var n in e)e.hasOwnProperty(n)&&(t[n]=S.util.clone(e[n]));return t;case"Array":return e.map&&e.map(function(e){return S.util.clone(e)})}return e}},languages:{extend:function(e,t){var n=S.util.clone(S.languages[e]);for(var a in t)n[a]=t[a];return n},insertBefore:function(n,e,t,a){var r=(a=a||S.languages)[n];if(2===arguments.length){for(var i in t=e)t.hasOwnProperty(i)&&(r[i]=t[i]);return r}var o={};for(var s in r)if(r.hasOwnProperty(s)){if(s===e)for(var i in t)t.hasOwnProperty(i)&&(o[i]=t[i]);o[s]=r[s]}return S.languages.DFS(S.languages,function(e,t){t===a[n]&&e!==n&&(this[e]=o)}),a[n]=o},DFS:function(e,t,n){for(var a in e)e.hasOwnProperty(a)&&(t.call(e,a,e[a],n||a),"Object"===S.util.type(e[a])?S.languages.DFS(e[a],t):"Array"===S.util.type(e[a])&&S.languages.DFS(e[a],t,a))}},plugins:{},highlightAll:function(e,t){for(var n=c.document.querySelectorAll('code[class*="language-"], [class*="language-"] code, code[class*="lang-"], [class*="lang-"] code'),a=0,r=void 0;r=n[a++];)S.highlightElement(r,!0===e,t)},highlightElement:function(e,t,n){for(var a,r,i=e;i&&!u.test(i.className);)i=i.parentNode;i&&(a=(i.className.match(u)||[,""])[1],r=S.languages[a]),e.className=e.className.replace(u,"").replace(/\s+/g," ")+" language-"+a,i=e.parentNode,/pre/i.test(i.nodeName)&&(i.className=i.className.replace(u,"").replace(/\s+/g," ")+" language-"+a);var o=e.textContent,s={element:e,language:a,grammar:r,code:o};if(o&&r)if(S.hooks.run("before-highlight",s),t&&g.Worker){var l=new c.Worker(S.filename);l.onmessage=function(e){s.highlightedCode=e.data,S.hooks.run("before-insert",s),s.element.innerHTML=s.highlightedCode,n&&n.call(s.element),S.hooks.run("after-highlight",s),S.hooks.run("complete",s)},l.postMessage(JSON.stringify({language:s.language,code:s.code,immediateClose:!0}))}else s.highlightedCode=S.highlight(s.code,s.grammar,s.language),S.hooks.run("before-insert",s),s.element.innerHTML=s.highlightedCode,n&&n.call(e),S.hooks.run("after-highlight",s),S.hooks.run("complete",s);else S.hooks.run("complete",s)},highlight:function(e,t,n){var a=S.tokenize(e,t);return s.stringify(S.util.encode(a),n)},tokenize:function(e,t,n){var a=S.Token,r=[e],i=t.rest;if(i){for(var o in i)t[o]=i[o];delete t.rest}e:for(var o in t)if(t.hasOwnProperty(o)&&t[o]){var s=t[o];s="Array"===S.util.type(s)?s:[s];for(var l=0;l<s.length;++l){var u=s[l],c=u.inside,g=!!u.lookbehind,d=0,p=u.alias;u=u.pattern||u;for(var f=0;f<r.length;f++){var h=r[f];if(r.length>e.length)break e;if(!(h instanceof a)){u.lastIndex=0;var m=u.exec(h);if(m){g&&(d=m[1].length);var b=m.index-1+d,y=b+(m=m[0].slice(d)).length,v=h.slice(0,b+1),k=h.slice(y+1),w=[f,1];v&&w.push(v);var x=new a(o,c?S.tokenize(m,c):m,p);w.push(x),k&&w.push(k),Array.prototype.splice.apply(r,w)}}}}}return r},hooks:{all:{},add:function(e,t){var n=S.hooks.all;n[e]=n[e]||[],n[e].push(t)},run:function(e,t){var n=S.hooks.all[e];if(n&&n.length)for(var a=0,r=void 0;r=n[a++];)r(t)}}},s=S.Token=function(e,t,n){this.type=e,this.content=t,this.alias=n};if(s.stringify=function(t,n,e){if("string"==typeof t)return t;if("Array"===S.util.type(t))return t.map(function(e){return s.stringify(e,n,t)}).join("");var a={type:t.type,content:s.stringify(t.content,n,e),tag:"span",classes:["token",t.type],attributes:{},language:n,parent:e};if("comment"===a.type&&(a.attributes.spellcheck="true"),t.alias){var r="Array"===S.util.type(t.alias)?t.alias:[t.alias];Array.prototype.push.apply(a.classes,r)}S.hooks.run("wrap",a);var i="";for(var o in a.attributes)i+=(i?" ":"")+o+'="'+(a.attributes[o]||"")+'"';return"<"+a.tag+' class="'+a.classes.join(" ")+'" '+i+">"+a.content+"</"+a.tag+">"},!g.document)return g.addEventListener&&g.addEventListener("message",function(e){var t=JSON.parse(e.data),n=t.language,a=t.code,r=t.immediateClose;g.postMessage(S.highlight(a,S.languages[n],n)),r&&g.close()},!1),g.Prism}();void 0!==n&&(n.Prism=i),i.languages.markup={comment:/<!--[\w\W]*?-->/,prolog:/<\?[\w\W]+?\?>/,doctype:/<!DOCTYPE[\w\W]+?>/,cdata:/<!\[CDATA\[[\w\W]*?]]>/i,tag:{pattern:/<\/?[^\s>\/=.]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\\1|\\?(?!\1)[\w\W])*\1|[^\s'">=]+))?)*\s*\/?>/i,inside:{tag:{pattern:/^<\/?[^\s>\/]+/i,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"attr-value":{pattern:/=(?:('|")[\w\W]*?(\1)|[^\s>]+)/i,inside:{punctuation:/[=>"']/}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:/&#?[\da-z]{1,8};/i},i.hooks.add("wrap",function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&amp;/,"&"))}),i.languages.xml=i.languages.markup,i.languages.html=i.languages.markup,i.languages.mathml=i.languages.markup,i.languages.svg=i.languages.markup,i.languages.css={comment:/\/\*[\w\W]*?\*\//,atrule:{pattern:/@[\w-]+?.*?(;|(?=\s*\{))/i,inside:{rule:/@[\w-]+/}},url:/url\((?:(["'])(\\(?:\r\n|[\w\W])|(?!\1)[^\\\r\n])*\1|.*?)\)/i,selector:/[^\{\}\s][^\{\};]*?(?=\s*\{)/,string:/("|')(\\(?:\r\n|[\w\W])|(?!\1)[^\\\r\n])*\1/,property:/(\b|\B)[\w-]+(?=\s*:)/i,important:/\B!important\b/i,"function":/[-a-z0-9]+(?=\()/i,punctuation:/[(){};:]/},i.languages.css.atrule.inside.rest=i.util.clone(i.languages.css),i.languages.markup&&(i.languages.insertBefore("markup","tag",{style:{pattern:/<style[\w\W]*?>[\w\W]*?<\/style>/i,inside:{tag:{pattern:/<style[\w\W]*?>|<\/style>/i,inside:i.languages.markup.tag.inside},rest:i.languages.css},alias:"language-css"}}),i.languages.insertBefore("inside","attr-value",{"style-attr":{pattern:/\s*style=("|').*?\1/i,inside:{"attr-name":{pattern:/^\s*style/i,inside:i.languages.markup.tag.inside},punctuation:/^\s*=\s*['"]|['"]\s*$/,"attr-value":{pattern:/.+/i,inside:i.languages.css}},alias:"language-css"}},i.languages.markup.tag)),i.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\w\W]*?\*\//,lookbehind:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0}],string:/(["'])(\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,"class-name":{pattern:/((?:\b(?:class|interface|extends|implements|trait|instanceof|new)\s+)|(?:catch\s+\())[a-z0-9_\.\\]+/i,lookbehind:!0,inside:{punctuation:/(\.|\\)/}},keyword:/\b(if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\b/,"boolean":/\b(true|false)\b/,"function":/[a-z0-9_]+(?=\()/i,number:/\b-?(?:0x[\da-f]+|\d*\.?\d+(?:e[+-]?\d+)?)\b/i,operator:/--?|\+\+?|!=?=?|<=?|>=?|==?=?|&&?|\|\|?|\?|\*|\/|~|\^|%/,punctuation:/[{}[\];(),.:]/},i.languages.javascript=i.languages.extend("clike",{keyword:/\b(as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|false|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|true|try|typeof|var|void|while|with|yield)\b/,number:/\b-?(0x[\dA-Fa-f]+|0b[01]+|0o[0-7]+|\d*\.?\d+([Ee][+-]?\d+)?|NaN|Infinity)\b/,"function":/[_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*(?=\()/i}),i.languages.insertBefore("javascript","keyword",{regex:{pattern:/(^|[^/])\/(?!\/)(\[.+?]|\\.|[^/\\\r\n])+\/[gimyu]{0,5}(?=\s*($|[\r\n,.;})]))/,lookbehind:!0}}),i.languages.insertBefore("javascript","class-name",{"template-string":{pattern:/`(?:\\`|\\?[^`])*`/,inside:{interpolation:{pattern:/\$\{[^}]+\}/,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:i.languages.javascript}},string:/[\s\S]+/}}}),i.languages.markup&&i.languages.insertBefore("markup","tag",{script:{pattern:/<script[\w\W]*?>[\w\W]*?<\/script>/i,inside:{tag:{pattern:/<script[\w\W]*?>|<\/script>/i,inside:i.languages.markup.tag.inside},rest:i.languages.javascript},alias:"language-javascript"}}),i.languages.js=i.languages.javascript,i.languages.c=i.languages.extend("clike",{keyword:/\b(asm|typeof|inline|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|union|unsigned|void|volatile|while)\b/,operator:/\-[>-]?|\+\+?|!=?|<<?=?|>>?=?|==?|&&?|\|?\||[~^%?*\/]/,number:/\b-?(?:0x[\da-f]+|\d*\.?\d+(?:e[+-]?\d+)?)[ful]*\b/i}),i.languages.insertBefore("c","string",{macro:{pattern:/(^\s*)#\s*[a-z]+([^\r\n\\]|\\.|\\(?:\r\n?|\n))*/im,lookbehind:!0,alias:"property",inside:{string:{pattern:/(#\s*include\s*)(<.+?>|("|')(\\?.)+?\3)/,lookbehind:!0}}}}),delete i.languages.c["class-name"],delete i.languages.c["boolean"],i.languages.csharp=i.languages.extend("clike",{keyword:/\b(abstract|as|async|await|base|bool|break|byte|case|catch|char|checked|class|const|continue|decimal|default|delegate|do|double|else|enum|event|explicit|extern|false|finally|fixed|float|for|foreach|goto|if|implicit|in|int|interface|internal|is|lock|long|namespace|new|null|object|operator|out|override|params|private|protected|public|readonly|ref|return|sbyte|sealed|short|sizeof|stackalloc|static|string|struct|switch|this|throw|true|try|typeof|uint|ulong|unchecked|unsafe|ushort|using|virtual|void|volatile|while|add|alias|ascending|async|await|descending|dynamic|from|get|global|group|into|join|let|orderby|partial|remove|select|set|value|var|where|yield)\b/,string:[/@("|')(\1\1|\\\1|\\?(?!\1)[\s\S])*\1/,/("|')(\\?.)*?\1/],number:/\b-?(0x[\da-f]+|\d*\.?\d+)\b/i}),i.languages.insertBefore("csharp","keyword",{preprocessor:{pattern:/(^\s*)#.*/m,lookbehind:!0}}),i.languages.cpp=i.languages.extend("c",{keyword:/\b(alignas|alignof|asm|auto|bool|break|case|catch|char|char16_t|char32_t|class|compl|const|constexpr|const_cast|continue|decltype|default|delete|do|double|dynamic_cast|else|enum|explicit|export|extern|float|for|friend|goto|if|inline|int|long|mutable|namespace|new|noexcept|nullptr|operator|private|protected|public|register|reinterpret_cast|return|short|signed|sizeof|static|static_assert|static_cast|struct|switch|template|this|thread_local|throw|try|typedef|typeid|typename|union|unsigned|using|virtual|void|volatile|wchar_t|while)\b/,"boolean":/\b(true|false)\b/,operator:/[-+]{1,2}|!=?|<{1,2}=?|>{1,2}=?|\->|:{1,2}|={1,2}|\^|~|%|&{1,2}|\|?\||\?|\*|\/|\b(and|and_eq|bitand|bitor|not|not_eq|or|or_eq|xor|xor_eq)\b/}),i.languages.insertBefore("cpp","keyword",{"class-name":{pattern:/(class\s+)[a-z0-9_]+/i,lookbehind:!0}}),i.languages.java=i.languages.extend("clike",{keyword:/\b(abstract|continue|for|new|switch|assert|default|goto|package|synchronized|boolean|do|if|private|this|break|double|implements|protected|throw|byte|else|import|public|throws|case|enum|instanceof|return|transient|catch|extends|int|short|try|char|final|interface|static|void|class|finally|long|strictfp|volatile|const|float|native|super|while)\b/,number:/\b0b[01]+\b|\b0x[\da-f]*\.?[\da-fp\-]+\b|\b\d*\.?\d+(?:e[+-]?\d+)?[df]?\b/i,operator:{pattern:/(^|[^.])(?:\+[+=]?|-[-=]?|!=?|<<?=?|>>?>?=?|==?|&[&=]?|\|[|=]?|\*=?|\/=?|%=?|\^=?|[?:~])/m,lookbehind:!0}}),i.languages.php=i.languages.extend("clike",{keyword:/\b(and|or|xor|array|as|break|case|cfunction|class|const|continue|declare|default|die|do|else|elseif|enddeclare|endfor|endforeach|endif|endswitch|endwhile|extends|for|foreach|function|include|include_once|global|if|new|return|static|switch|use|require|require_once|var|while|abstract|interface|public|implements|private|protected|parent|throw|null|echo|print|trait|namespace|final|yield|goto|instanceof|finally|try|catch)\b/i,constant:/\b[A-Z0-9_]{2,}\b/,comment:{pattern:/(^|[^\\])(?:\/\*[\w\W]*?\*\/|\/\/.*)/,lookbehind:!0}}),i.languages.insertBefore("php","class-name",{"shell-comment":{pattern:/(^|[^\\])#.*/,lookbehind:!0,alias:"comment"}}),i.languages.insertBefore("php","keyword",{delimiter:/\?>|<\?(?:php)?/i,variable:/\$\w+\b/i,"package":{pattern:/(\\|namespace\s+|use\s+)[\w\\]+/,lookbehind:!0,inside:{punctuation:/\\/}}}),i.languages.insertBefore("php","operator",{property:{pattern:/(->)[\w]+/,lookbehind:!0}}),i.languages.markup&&(i.hooks.add("before-highlight",function(t){"php"===t.language&&(t.tokenStack=[],t.backupCode=t.code,t.code=t.code.replace(/(?:<\?php|<\?)[\w\W]*?(?:\?>)/gi,function(e){return t.tokenStack.push(e),"{{{PHP"+t.tokenStack.length+"}}}"}))}),i.hooks.add("before-insert",function(e){"php"===e.language&&(e.code=e.backupCode,delete e.backupCode)}),i.hooks.add("after-highlight",function(e){if("php"===e.language){for(var t=0,n=void 0;n=e.tokenStack[t];t++)e.highlightedCode=e.highlightedCode.replace("{{{PHP"+(t+1)+"}}}",i.highlight(n,e.grammar,"php").replace(/\$/g,"$$$$"));e.element.innerHTML=e.highlightedCode}}),i.hooks.add("wrap",function(e){"php"===e.language&&"markup"===e.type&&(e.content=e.content.replace(/(\{\{\{PHP[0-9]+\}\}\})/g,'<span class="token php">$1</span>'))}),i.languages.insertBefore("php","comment",{markup:{pattern:/<[^?]\/?(.*?)>/,inside:i.languages.markup},php:/\{\{\{PHP[0-9]+\}\}\}/})),i.languages.python={comment:{pattern:/(^|[^\\])#.*/,lookbehind:!0},string:/"""[\s\S]+?"""|'''[\s\S]+?'''|("|')(?:\\?.)*?\1/,"function":{pattern:/((?:^|\s)def[ \t]+)[a-zA-Z_][a-zA-Z0-9_]*(?=\()/g,lookbehind:!0},"class-name":{pattern:/(\bclass\s+)[a-z0-9_]+/i,lookbehind:!0},keyword:/\b(?:as|assert|async|await|break|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|pass|print|raise|return|try|while|with|yield)\b/,"boolean":/\b(?:True|False)\b/,number:/\b-?(?:0[bo])?(?:(?:\d|0x[\da-f])[\da-f]*\.?\d*|\.\d+)(?:e[+-]?\d+)?j?\b/i,operator:/[-+%=]=?|!=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]|\b(?:or|and|not)\b/,punctuation:/[{}[\];(),.:]/},function(e){e.languages.ruby=e.languages.extend("clike",{comment:/#(?!\{[^\r\n]*?\}).*/,keyword:/\b(alias|and|BEGIN|begin|break|case|class|def|define_method|defined|do|each|else|elsif|END|end|ensure|false|for|if|in|module|new|next|nil|not|or|raise|redo|require|rescue|retry|return|self|super|then|throw|true|undef|unless|until|when|while|yield)\b/});var t={pattern:/#\{[^}]+\}/,inside:{delimiter:{pattern:/^#\{|\}$/,alias:"tag"},rest:e.util.clone(e.languages.ruby)}};e.languages.insertBefore("ruby","keyword",{regex:[{pattern:/%r([^a-zA-Z0-9\s\{\(\[<])(?:[^\\]|\\[\s\S])*?\1[gim]{0,3}/,inside:{interpolation:t}},{pattern:/%r\((?:[^()\\]|\\[\s\S])*\)[gim]{0,3}/,inside:{interpolation:t}},{pattern:/%r\{(?:[^#{}\\]|#(?:\{[^}]+\})?|\\[\s\S])*\}[gim]{0,3}/,inside:{interpolation:t}},{pattern:/%r\[(?:[^\[\]\\]|\\[\s\S])*\][gim]{0,3}/,inside:{interpolation:t}},{pattern:/%r<(?:[^<>\\]|\\[\s\S])*>[gim]{0,3}/,inside:{interpolation:t}},{pattern:/(^|[^/])\/(?!\/)(\[.+?]|\\.|[^/\r\n])+\/[gim]{0,3}(?=\s*($|[\r\n,.;})]))/,lookbehind:!0}],variable:/[@$]+[a-zA-Z_][a-zA-Z_0-9]*(?:[?!]|\b)/,symbol:/:[a-zA-Z_][a-zA-Z_0-9]*(?:[?!]|\b)/}),e.languages.insertBefore("ruby","number",{builtin:/\b(Array|Bignum|Binding|Class|Continuation|Dir|Exception|FalseClass|File|Stat|File|Fixnum|Fload|Hash|Integer|IO|MatchData|Method|Module|NilClass|Numeric|Object|Proc|Range|Regexp|String|Struct|TMS|Symbol|ThreadGroup|Thread|Time|TrueClass)\b/,constant:/\b[A-Z][a-zA-Z_0-9]*(?:[?!]|\b)/}),e.languages.ruby.string=[{pattern:/%[qQiIwWxs]?([^a-zA-Z0-9\s\{\(\[<])(?:[^\\]|\\[\s\S])*?\1/,inside:{interpolation:t}},{pattern:/%[qQiIwWxs]?\((?:[^()\\]|\\[\s\S])*\)/,inside:{interpolation:t}},{pattern:/%[qQiIwWxs]?\{(?:[^#{}\\]|#(?:\{[^}]+\})?|\\[\s\S])*\}/,inside:{interpolation:t}},{pattern:/%[qQiIwWxs]?\[(?:[^\[\]\\]|\\[\s\S])*\]/,inside:{interpolation:t}},{pattern:/%[qQiIwWxs]?<(?:[^<>\\]|\\[\s\S])*>/,inside:{interpolation:t}},{pattern:/("|')(#\{[^}]+\}|\\(?:\r?\n|\r)|\\?.)*?\1/,inside:{interpolation:t}}]}(i);function a(){}function o(e){return function(){return e}}function s(){return f}var l,u={isCodeSample:function B(e){return e&&"PRE"===e.nodeName&&-1!==e.className.indexOf("language-")},trimArg:function M(n){return function(e,t){return n(t)}}},d=o(!1),p=o(!0),f=(l={fold:function(e,t){return e()},is:d,isSome:d,isNone:p,getOr:b,getOrThunk:m,getOrDie:function(e){throw new Error(e||"error: getOrDie called on none.")},getOrNull:o(null),getOrUndefined:o(undefined),or:b,orThunk:m,map:s,each:a,bind:s,exists:d,forall:p,filter:s,equals:h,equals_:h,toArray:function(){return[]},toString:o("none()")},Object.freeze&&Object.freeze(l),l);function h(e){return e.isNone()}function m(e){return e()}function b(e){return e}function y(e){var t=e.selection?e.selection.getNode():null;return u.isCodeSample(t)?w.some(t):w.none()}var v,k=function(n){function e(){return r}function t(e){return e(n)}var a=o(n),r={fold:function(e,t){return t(n)},is:function(e){return n===e},isSome:p,isNone:d,getOr:a,getOrThunk:a,getOrDie:a,getOrNull:a,getOrUndefined:a,or:e,orThunk:e,map:function(e){return k(e(n))},each:function(e){e(n)},bind:t,exists:t,forall:t,filter:function(e){return e(n)?r:f},toArray:function(){return[n]},toString:function(){return"some("+n+")"},equals:function(e){return e.is(n)},equals_:function(e,t){return e.fold(d,function(e){return t(n,e)})}};return r},w={some:k,none:s,from:function(e){return null===e||e===undefined?f:k(e)}},x=y,S=function(t,n,a){t.undoManager.transact(function(){var e=y(t);return a=r.DOM.encode(a),e.fold(function(){t.insertContent('<pre id="__new" class="language-'+n+'">'+a+"</pre>"),t.selection.select(t.$("#__new").removeAttr("id")[0])},function(e){t.dom.setAttrib(e,"class","language-"+n),e.innerHTML=a,i.highlightElement(e),t.selection.select(e)})})},A=function(e){return y(e).fold(function(){return""},function(e){return e.textContent})},C=function(e){return e.settings.codesample_languages},_=function(e){var t=C(e);return t||[{text:"HTML/XML",value:"markup"},{text:"JavaScript",value:"javascript"},{text:"CSS",value:"css"},{text:"PHP",value:"php"},{text:"Ruby",value:"ruby"},{text:"Python",value:"python"},{text:"Java",value:"java"},{text:"C",value:"c"},{text:"C#",value:"csharp"},{text:"C++",value:"cpp"}]},N=function(e,n){return x(e).fold(function(){return n},function(e){var t=e.className.match(/language-(\w+)/);return t?t[1]:n})},O=(v="function",function(e){return function(e){if(null===e)return"null";var t=typeof e;return"object"==t&&(Array.prototype.isPrototypeOf(e)||e.constructor&&"Array"===e.constructor.name)?"array":"object"==t&&(String.prototype.isPrototypeOf(e)||e.constructor&&"String"===e.constructor.name)?"string":t}(e)===v}),z=Array.prototype.slice,P=(O(Array.from)&&Array.from,function(n){var e=_(n),t=function(e){return 0===e.length?w.none():w.some(e[0])}(e).fold(function(){return""},function(e){return e.value}),a=N(n,t),r=A(n);n.windowManager.open({title:"Insert/Edit Code Sample",size:"large",body:{type:"panel",items:[{type:"selectbox",name:"language",label:"Language",items:e},{type:"textarea",name:"code",label:"Code view"}]},buttons:[{type:"cancel",name:"cancel",text:"Cancel"},{type:"submit",name:"save",text:"Save",primary:!0}],initialData:{language:a,code:r},onSubmit:function(e){var t=e.getData();S(n,t.language,t.code),e.close()}})}),W=function(t){t.addCommand("codesample",function(){var e=t.selection.getNode();t.selection.isCollapsed()||u.isCodeSample(e)?P(t):t.formatter.toggle("code")})},j=function(n){var r=n.$;n.on("PreProcess",function(e){r("pre[contenteditable=false]",e.node).filter(u.trimArg(u.isCodeSample)).each(function(e,t){var n=r(t),a=t.textContent;n.attr("class",r.trim(n.attr("class"))),n.removeAttr("contentEditable"),n.empty().append(r("<code></code>").each(function(){this.textContent=a}))})}),n.on("SetContent",function(){var e=r("pre").filter(u.trimArg(u.isCodeSample)).filter(function(e,t){return"false"!==t.contentEditable});e.length&&n.undoManager.transact(function(){e.each(function(e,t){r(t).find("br").each(function(e,t){t.parentNode.replaceChild(n.getDoc().createTextNode("\n"),t)}),t.contentEditable="false",t.innerHTML=n.dom.encode(t.textContent),i.highlightElement(t),t.className=r.trim(t.className)})})})},T=function(n){n.ui.registry.addToggleButton("codesample",{icon:"code-sample",tooltip:"Insert/edit code sample",onAction:function(){return P(n)},onSetup:function(e){function t(){e.setActive(function(e){var t=e.selection.getStart();return e.dom.is(t,"pre.language-markup")}(n))}return n.on("NodeChange",t),function(){return n.off("NodeChange",t)}}}),n.ui.registry.addMenuItem("codesample",{text:"Code sample...",icon:"code-sample",onAction:function(){return P(n)}})};!function F(){e.add("codesample",function(t){j(t),T(t),W(t),t.on("dblclick",function(e){u.isCodeSample(e.target)&&P(t)})})}()}(window);
\ No newline at end of file
diff --git a/admin/js/vendors/tinymce/js/tinymce/plugins/colorpicker/plugin.min.js b/admin/js/vendors/tinymce/js/tinymce/plugins/colorpicker/plugin.min.js
new file mode 100644 (file)
index 0000000..51e2463
--- /dev/null
@@ -0,0 +1,9 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ *
+ * Version: 5.1.5 (2019-12-19)
+ */
+!function(o){"use strict";var i=tinymce.util.Tools.resolve("tinymce.PluginManager");!function n(){i.add("colorpicker",function(){o.console.warn("Color picker plugin is now built in to the core editor, please remove it from your editor configuration")})}()}(window);
\ No newline at end of file
diff --git a/admin/js/vendors/tinymce/js/tinymce/plugins/contextmenu/plugin.min.js b/admin/js/vendors/tinymce/js/tinymce/plugins/contextmenu/plugin.min.js
new file mode 100644 (file)
index 0000000..b9a9522
--- /dev/null
@@ -0,0 +1,9 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ *
+ * Version: 5.1.5 (2019-12-19)
+ */
+!function(n){"use strict";var o=tinymce.util.Tools.resolve("tinymce.PluginManager");!function e(){o.add("contextmenu",function(){n.console.warn("Context menu plugin is now built in to the core editor, please remove it from your editor configuration")})}()}(window);
\ No newline at end of file
diff --git a/admin/js/vendors/tinymce/js/tinymce/plugins/directionality/plugin.min.js b/admin/js/vendors/tinymce/js/tinymce/plugins/directionality/plugin.min.js
new file mode 100644 (file)
index 0000000..0105327
--- /dev/null
@@ -0,0 +1,9 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ *
+ * Version: 5.1.5 (2019-12-19)
+ */
+!function(i){"use strict";function n(){}function u(n){return function(){return n}}function t(){return a}var e,r=tinymce.util.Tools.resolve("tinymce.PluginManager"),c=tinymce.util.Tools.resolve("tinymce.util.Tools"),o=function(n,t){var e,r=n.dom,o=n.selection.getSelectedBlocks();o.length&&(e=r.getAttrib(o[0],"dir"),c.each(o,function(n){r.getParent(n.parentNode,'*[dir="'+t+'"]',r.getRoot())||r.setAttrib(n,"dir",e!==t?t:null)}),n.nodeChanged())},d=function(n){n.addCommand("mceDirectionLTR",function(){o(n,"ltr")}),n.addCommand("mceDirectionRTL",function(){o(n,"rtl")})},f=u(!1),l=u(!0),a=(e={fold:function(n,t){return n()},is:f,isSome:f,isNone:l,getOr:s,getOrThunk:N,getOrDie:function(n){throw new Error(n||"error: getOrDie called on none.")},getOrNull:u(null),getOrUndefined:u(undefined),or:s,orThunk:N,map:t,each:n,bind:t,exists:f,forall:l,filter:t,equals:m,equals_:m,toArray:function(){return[]},toString:u("none()")},Object.freeze&&Object.freeze(e),e);function m(n){return n.isNone()}function N(n){return n()}function s(n){return n}function g(n,t){var e=n.dom(),r=i.window.getComputedStyle(e).getPropertyValue(t),o=""!==r||function(n){var t=A(n)?n.dom().parentNode:n.dom();return t!==undefined&&null!==t&&t.ownerDocument.body.contains(t)}(n)?r:w(e,t);return null===o?undefined:o}function T(t,r){return function(e){function n(n){var t=p.fromDom(n.element);e.setActive(function(n){return"rtl"===g(n,"direction")?"rtl":"ltr"}(t)===r)}return t.on("NodeChange",n),function(){return t.off("NodeChange",n)}}}var E,O,y=function(e){function n(){return o}function t(n){return n(e)}var r=u(e),o={fold:function(n,t){return t(e)},is:function(n){return e===n},isSome:l,isNone:f,getOr:r,getOrThunk:r,getOrDie:r,getOrNull:r,getOrUndefined:r,or:n,orThunk:n,map:function(n){return y(n(e))},each:function(n){n(e)},bind:t,exists:t,forall:t,filter:function(n){return n(e)?o:a},toArray:function(){return[e]},toString:function(){return"some("+e+")"},equals:function(n){return n.is(e)},equals_:function(n,t){return n.fold(f,function(n){return t(e,n)})}};return o},D=function(n){return null===n||n===undefined?a:y(n)},h=function(n){if(null===n||n===undefined)throw new Error("Node cannot be null or undefined");return{dom:u(n)}},p={fromHtml:function(n,t){var e=(t||i.document).createElement("div");if(e.innerHTML=n,!e.hasChildNodes()||1<e.childNodes.length)throw i.console.error("HTML does not have a single root node",n),new Error("HTML must have a single root node");return h(e.childNodes[0])},fromTag:function(n,t){var e=(t||i.document).createElement(n);return h(e)},fromText:function(n,t){var e=(t||i.document).createTextNode(n);return h(e)},fromDom:h,fromPoint:function(n,t,e){var r=n.dom();return D(r.elementFromPoint(t,e)).map(h)}},_=(E="function",function(n){return function(n){if(null===n)return"null";var t=typeof n;return"object"==t&&(Array.prototype.isPrototypeOf(n)||n.constructor&&"Array"===n.constructor.name)?"array":"object"==t&&(String.prototype.isPrototypeOf(n)||n.constructor&&"String"===n.constructor.name)?"string":t}(n)===E}),v=Array.prototype.slice,C=(_(Array.from)&&Array.from,i.Node.ATTRIBUTE_NODE,i.Node.CDATA_SECTION_NODE,i.Node.COMMENT_NODE,i.Node.DOCUMENT_NODE,i.Node.DOCUMENT_TYPE_NODE,i.Node.DOCUMENT_FRAGMENT_NODE,i.Node.ELEMENT_NODE,i.Node.TEXT_NODE),A=(i.Node.PROCESSING_INSTRUCTION_NODE,i.Node.ENTITY_REFERENCE_NODE,i.Node.ENTITY_NODE,i.Node.NOTATION_NODE,"undefined"!=typeof i.window?i.window:Function("return this;")(),O=C,function(n){return function(n){return n.dom().nodeType}(n)===O}),w=function(n,t){return function(n){return n.style!==undefined&&_(n.style.getPropertyValue)}(n)?n.style.getPropertyValue(t):""},S=function(n){n.ui.registry.addToggleButton("ltr",{tooltip:"Left to right",icon:"ltr",onAction:function(){return n.execCommand("mceDirectionLTR")},onSetup:T(n,"ltr")}),n.ui.registry.addToggleButton("rtl",{tooltip:"Right to left",icon:"rtl",onAction:function(){return n.execCommand("mceDirectionRTL")},onSetup:T(n,"rtl")})};!function R(){r.add("directionality",function(n){d(n),S(n)})}()}(window);
\ No newline at end of file
diff --git a/admin/js/vendors/tinymce/js/tinymce/plugins/emoticons/js/emojis.js b/admin/js/vendors/tinymce/js/tinymce/plugins/emoticons/js/emojis.js
new file mode 100644 (file)
index 0000000..5f8c249
--- /dev/null
@@ -0,0 +1,9015 @@
+// NOTE: Source: npm package: emojilib, file:emojis.json
+window.tinymce.Resource.add("tinymce.plugins.emoticons", {
+  grinning: {
+    keywords: [ "face", "smile", "happy", "joy", ":D", "grin" ],
+    "char": "\ud83d\ude00",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  grimacing: {
+    keywords: [ "face", "grimace", "teeth" ],
+    "char": "\ud83d\ude2c",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  grin: {
+    keywords: [ "face", "happy", "smile", "joy", "kawaii" ],
+    "char": "\ud83d\ude01",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  joy: {
+    keywords: [ "face", "cry", "tears", "weep", "happy", "happytears", "haha" ],
+    "char": "\ud83d\ude02",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  rofl: {
+    keywords: [ "face", "rolling", "floor", "laughing", "lol", "haha" ],
+    "char": "\ud83e\udd23",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  smiley: {
+    keywords: [ "face", "happy", "joy", "haha", ":D", ":)", "smile", "funny" ],
+    "char": "\ud83d\ude03",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  smile: {
+    keywords: [ "face", "happy", "joy", "funny", "haha", "laugh", "like", ":D", ":)" ],
+    "char": "\ud83d\ude04",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  sweat_smile: {
+    keywords: [ "face", "hot", "happy", "laugh", "sweat", "smile", "relief" ],
+    "char": "\ud83d\ude05",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  laughing: {
+    keywords: [ "happy", "joy", "lol", "satisfied", "haha", "face", "glad", "XD", "laugh" ],
+    "char": "\ud83d\ude06",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  innocent: {
+    keywords: [ "face", "angel", "heaven", "halo" ],
+    "char": "\ud83d\ude07",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  wink: {
+    keywords: [ "face", "happy", "mischievous", "secret", ";)", "smile", "eye" ],
+    "char": "\ud83d\ude09",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  blush: {
+    keywords: [ "face", "smile", "happy", "flushed", "crush", "embarrassed", "shy", "joy" ],
+    "char": "\ud83d\ude0a",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  slightly_smiling_face: {
+    keywords: [ "face", "smile" ],
+    "char": "\ud83d\ude42",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  upside_down_face: {
+    keywords: [ "face", "flipped", "silly", "smile" ],
+    "char": "\ud83d\ude43",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  relaxed: {
+    keywords: [ "face", "blush", "massage", "happiness" ],
+    "char": "\u263a\ufe0f",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  yum: {
+    keywords: [ "happy", "joy", "tongue", "smile", "face", "silly", "yummy", "nom", "delicious", "savouring" ],
+    "char": "\ud83d\ude0b",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  relieved: {
+    keywords: [ "face", "relaxed", "phew", "massage", "happiness" ],
+    "char": "\ud83d\ude0c",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  heart_eyes: {
+    keywords: [ "face", "love", "like", "affection", "valentines", "infatuation", "crush", "heart" ],
+    "char": "\ud83d\ude0d",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  kissing_heart: {
+    keywords: [ "face", "love", "like", "affection", "valentines", "infatuation", "kiss" ],
+    "char": "\ud83d\ude18",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  kissing: {
+    keywords: [ "love", "like", "face", "3", "valentines", "infatuation", "kiss" ],
+    "char": "\ud83d\ude17",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  kissing_smiling_eyes: {
+    keywords: [ "face", "affection", "valentines", "infatuation", "kiss" ],
+    "char": "\ud83d\ude19",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  kissing_closed_eyes: {
+    keywords: [ "face", "love", "like", "affection", "valentines", "infatuation", "kiss" ],
+    "char": "\ud83d\ude1a",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  stuck_out_tongue_winking_eye: {
+    keywords: [ "face", "prank", "childish", "playful", "mischievous", "smile", "wink", "tongue" ],
+    "char": "\ud83d\ude1c",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  zany: {
+    keywords: [ "face", "goofy", "crazy" ],
+    "char": "\ud83e\udd2a",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  raised_eyebrow: {
+    keywords: [ "face", "distrust", "scepticism", "disapproval", "disbelief", "surprise" ],
+    "char": "\ud83e\udd28",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  monocle: {
+    keywords: [ "face", "stuffy", "wealthy" ],
+    "char": "\ud83e\uddd0",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  stuck_out_tongue_closed_eyes: {
+    keywords: [ "face", "prank", "playful", "mischievous", "smile", "tongue" ],
+    "char": "\ud83d\ude1d",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  stuck_out_tongue: {
+    keywords: [ "face", "prank", "childish", "playful", "mischievous", "smile", "tongue" ],
+    "char": "\ud83d\ude1b",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  money_mouth_face: {
+    keywords: [ "face", "rich", "dollar", "money" ],
+    "char": "\ud83e\udd11",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  nerd_face: {
+    keywords: [ "face", "nerdy", "geek", "dork" ],
+    "char": "\ud83e\udd13",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  sunglasses: {
+    keywords: [ "face", "cool", "smile", "summer", "beach", "sunglass" ],
+    "char": "\ud83d\ude0e",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  star_struck: {
+    keywords: [ "face", "smile", "starry", "eyes", "grinning" ],
+    "char": "\ud83e\udd29",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  clown_face: {
+    keywords: [ "face" ],
+    "char": "\ud83e\udd21",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  cowboy_hat_face: {
+    keywords: [ "face", "cowgirl", "hat" ],
+    "char": "\ud83e\udd20",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  hugs: {
+    keywords: [ "face", "smile", "hug" ],
+    "char": "\ud83e\udd17",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  smirk: {
+    keywords: [ "face", "smile", "mean", "prank", "smug", "sarcasm" ],
+    "char": "\ud83d\ude0f",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  no_mouth: {
+    keywords: [ "face", "hellokitty" ],
+    "char": "\ud83d\ude36",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  neutral_face: {
+    keywords: [ "indifference", "meh", ":|", "neutral" ],
+    "char": "\ud83d\ude10",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  expressionless: {
+    keywords: [ "face", "indifferent", "-_-", "meh", "deadpan" ],
+    "char": "\ud83d\ude11",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  unamused: {
+    keywords: [ "indifference", "bored", "straight face", "serious", "sarcasm", "unimpressed", "skeptical", "dubious", "side_eye" ],
+    "char": "\ud83d\ude12",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  roll_eyes: {
+    keywords: [ "face", "eyeroll", "frustrated" ],
+    "char": "\ud83d\ude44",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  thinking: {
+    keywords: [ "face", "hmmm", "think", "consider" ],
+    "char": "\ud83e\udd14",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  lying_face: {
+    keywords: [ "face", "lie", "pinocchio" ],
+    "char": "\ud83e\udd25",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  hand_over_mouth: {
+    keywords: [ "face", "whoops", "shock", "surprise" ],
+    "char": "\ud83e\udd2d",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  shushing: {
+    keywords: [ "face", "quiet", "shhh" ],
+    "char": "\ud83e\udd2b",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  symbols_over_mouth: {
+    keywords: [ "face", "swearing", "cursing", "cussing", "profanity", "expletive" ],
+    "char": "\ud83e\udd2c",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  exploding_head: {
+    keywords: [ "face", "shocked", "mind", "blown" ],
+    "char": "\ud83e\udd2f",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  flushed: {
+    keywords: [ "face", "blush", "shy", "flattered" ],
+    "char": "\ud83d\ude33",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  disappointed: {
+    keywords: [ "face", "sad", "upset", "depressed", ":(" ],
+    "char": "\ud83d\ude1e",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  worried: {
+    keywords: [ "face", "concern", "nervous", ":(" ],
+    "char": "\ud83d\ude1f",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  angry: {
+    keywords: [ "mad", "face", "annoyed", "frustrated" ],
+    "char": "\ud83d\ude20",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  rage: {
+    keywords: [ "angry", "mad", "hate", "despise" ],
+    "char": "\ud83d\ude21",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  pensive: {
+    keywords: [ "face", "sad", "depressed", "upset" ],
+    "char": "\ud83d\ude14",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  confused: {
+    keywords: [ "face", "indifference", "huh", "weird", "hmmm", ":/" ],
+    "char": "\ud83d\ude15",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  slightly_frowning_face: {
+    keywords: [ "face", "frowning", "disappointed", "sad", "upset" ],
+    "char": "\ud83d\ude41",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  frowning_face: {
+    keywords: [ "face", "sad", "upset", "frown" ],
+    "char": "\u2639",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  persevere: {
+    keywords: [ "face", "sick", "no", "upset", "oops" ],
+    "char": "\ud83d\ude23",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  confounded: {
+    keywords: [ "face", "confused", "sick", "unwell", "oops", ":S" ],
+    "char": "\ud83d\ude16",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  tired_face: {
+    keywords: [ "sick", "whine", "upset", "frustrated" ],
+    "char": "\ud83d\ude2b",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  weary: {
+    keywords: [ "face", "tired", "sleepy", "sad", "frustrated", "upset" ],
+    "char": "\ud83d\ude29",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  triumph: {
+    keywords: [ "face", "gas", "phew", "proud", "pride" ],
+    "char": "\ud83d\ude24",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  open_mouth: {
+    keywords: [ "face", "surprise", "impressed", "wow", "whoa", ":O" ],
+    "char": "\ud83d\ude2e",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  scream: {
+    keywords: [ "face", "munch", "scared", "omg" ],
+    "char": "\ud83d\ude31",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  fearful: {
+    keywords: [ "face", "scared", "terrified", "nervous", "oops", "huh" ],
+    "char": "\ud83d\ude28",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  cold_sweat: {
+    keywords: [ "face", "nervous", "sweat" ],
+    "char": "\ud83d\ude30",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  hushed: {
+    keywords: [ "face", "woo", "shh" ],
+    "char": "\ud83d\ude2f",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  frowning: {
+    keywords: [ "face", "aw", "what" ],
+    "char": "\ud83d\ude26",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  anguished: {
+    keywords: [ "face", "stunned", "nervous" ],
+    "char": "\ud83d\ude27",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  cry: {
+    keywords: [ "face", "tears", "sad", "depressed", "upset", ":'(" ],
+    "char": "\ud83d\ude22",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  disappointed_relieved: {
+    keywords: [ "face", "phew", "sweat", "nervous" ],
+    "char": "\ud83d\ude25",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  drooling_face: {
+    keywords: [ "face" ],
+    "char": "\ud83e\udd24",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  sleepy: {
+    keywords: [ "face", "tired", "rest", "nap" ],
+    "char": "\ud83d\ude2a",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  sweat: {
+    keywords: [ "face", "hot", "sad", "tired", "exercise" ],
+    "char": "\ud83d\ude13",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  sob: {
+    keywords: [ "face", "cry", "tears", "sad", "upset", "depressed" ],
+    "char": "\ud83d\ude2d",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  dizzy_face: {
+    keywords: [ "spent", "unconscious", "xox", "dizzy" ],
+    "char": "\ud83d\ude35",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  astonished: {
+    keywords: [ "face", "xox", "surprised", "poisoned" ],
+    "char": "\ud83d\ude32",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  zipper_mouth_face: {
+    keywords: [ "face", "sealed", "zipper", "secret" ],
+    "char": "\ud83e\udd10",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  nauseated_face: {
+    keywords: [ "face", "vomit", "gross", "green", "sick", "throw up", "ill" ],
+    "char": "\ud83e\udd22",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  sneezing_face: {
+    keywords: [ "face", "gesundheit", "sneeze", "sick", "allergy" ],
+    "char": "\ud83e\udd27",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  vomiting: {
+    keywords: [ "face", "sick" ],
+    "char": "\ud83e\udd2e",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  mask: {
+    keywords: [ "face", "sick", "ill", "disease" ],
+    "char": "\ud83d\ude37",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  face_with_thermometer: {
+    keywords: [ "sick", "temperature", "thermometer", "cold", "fever" ],
+    "char": "\ud83e\udd12",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  face_with_head_bandage: {
+    keywords: [ "injured", "clumsy", "bandage", "hurt" ],
+    "char": "\ud83e\udd15",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  sleeping: {
+    keywords: [ "face", "tired", "sleepy", "night", "zzz" ],
+    "char": "\ud83d\ude34",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  zzz: {
+    keywords: [ "sleepy", "tired", "dream" ],
+    "char": "\ud83d\udca4",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  poop: {
+    keywords: [ "hankey", "shitface", "fail", "turd", "shit" ],
+    "char": "\ud83d\udca9",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  smiling_imp: {
+    keywords: [ "devil", "horns" ],
+    "char": "\ud83d\ude08",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  imp: {
+    keywords: [ "devil", "angry", "horns" ],
+    "char": "\ud83d\udc7f",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  japanese_ogre: {
+    keywords: [ "monster", "red", "mask", "halloween", "scary", "creepy", "devil", "demon", "japanese", "ogre" ],
+    "char": "\ud83d\udc79",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  japanese_goblin: {
+    keywords: [ "red", "evil", "mask", "monster", "scary", "creepy", "japanese", "goblin" ],
+    "char": "\ud83d\udc7a",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  skull: {
+    keywords: [ "dead", "skeleton", "creepy", "death" ],
+    "char": "\ud83d\udc80",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  ghost: {
+    keywords: [ "halloween", "spooky", "scary" ],
+    "char": "\ud83d\udc7b",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  alien: {
+    keywords: [ "UFO", "paul", "weird", "outer_space" ],
+    "char": "\ud83d\udc7d",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  robot: {
+    keywords: [ "computer", "machine", "bot" ],
+    "char": "\ud83e\udd16",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  smiley_cat: {
+    keywords: [ "animal", "cats", "happy", "smile" ],
+    "char": "\ud83d\ude3a",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  smile_cat: {
+    keywords: [ "animal", "cats", "smile" ],
+    "char": "\ud83d\ude38",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  joy_cat: {
+    keywords: [ "animal", "cats", "haha", "happy", "tears" ],
+    "char": "\ud83d\ude39",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  heart_eyes_cat: {
+    keywords: [ "animal", "love", "like", "affection", "cats", "valentines", "heart" ],
+    "char": "\ud83d\ude3b",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  smirk_cat: {
+    keywords: [ "animal", "cats", "smirk" ],
+    "char": "\ud83d\ude3c",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  kissing_cat: {
+    keywords: [ "animal", "cats", "kiss" ],
+    "char": "\ud83d\ude3d",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  scream_cat: {
+    keywords: [ "animal", "cats", "munch", "scared", "scream" ],
+    "char": "\ud83d\ude40",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  crying_cat_face: {
+    keywords: [ "animal", "tears", "weep", "sad", "cats", "upset", "cry" ],
+    "char": "\ud83d\ude3f",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  pouting_cat: {
+    keywords: [ "animal", "cats" ],
+    "char": "\ud83d\ude3e",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  palms_up: {
+    keywords: [ "hands", "gesture", "cupped", "prayer" ],
+    "char": "\ud83e\udd32",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  raised_hands: {
+    keywords: [ "gesture", "hooray", "yea", "celebration", "hands" ],
+    "char": "\ud83d\ude4c",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  clap: {
+    keywords: [ "hands", "praise", "applause", "congrats", "yay" ],
+    "char": "\ud83d\udc4f",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  wave: {
+    keywords: [ "hands", "gesture", "goodbye", "solong", "farewell", "hello", "hi", "palm" ],
+    "char": "\ud83d\udc4b",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  call_me_hand: {
+    keywords: [ "hands", "gesture" ],
+    "char": "\ud83e\udd19",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  "+1": {
+    keywords: [ "thumbsup", "yes", "awesome", "good", "agree", "accept", "cool", "hand", "like" ],
+    "char": "\ud83d\udc4d",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  "-1": {
+    keywords: [ "thumbsdown", "no", "dislike", "hand" ],
+    "char": "\ud83d\udc4e",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  facepunch: {
+    keywords: [ "angry", "violence", "fist", "hit", "attack", "hand" ],
+    "char": "\ud83d\udc4a",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  fist: {
+    keywords: [ "fingers", "hand", "grasp" ],
+    "char": "\u270a",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  fist_left: {
+    keywords: [ "hand", "fistbump" ],
+    "char": "\ud83e\udd1b",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  fist_right: {
+    keywords: [ "hand", "fistbump" ],
+    "char": "\ud83e\udd1c",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  v: {
+    keywords: [ "fingers", "ohyeah", "hand", "peace", "victory", "two" ],
+    "char": "\u270c",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  ok_hand: {
+    keywords: [ "fingers", "limbs", "perfect", "ok", "okay" ],
+    "char": "\ud83d\udc4c",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  raised_hand: {
+    keywords: [ "fingers", "stop", "highfive", "palm", "ban" ],
+    "char": "\u270b",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  raised_back_of_hand: {
+    keywords: [ "fingers", "raised", "backhand" ],
+    "char": "\ud83e\udd1a",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  open_hands: {
+    keywords: [ "fingers", "butterfly", "hands", "open" ],
+    "char": "\ud83d\udc50",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  muscle: {
+    keywords: [ "arm", "flex", "hand", "summer", "strong", "biceps" ],
+    "char": "\ud83d\udcaa",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  pray: {
+    keywords: [ "please", "hope", "wish", "namaste", "highfive" ],
+    "char": "\ud83d\ude4f",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  handshake: {
+    keywords: [ "agreement", "shake" ],
+    "char": "\ud83e\udd1d",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  point_up: {
+    keywords: [ "hand", "fingers", "direction", "up" ],
+    "char": "\u261d",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  point_up_2: {
+    keywords: [ "fingers", "hand", "direction", "up" ],
+    "char": "\ud83d\udc46",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  point_down: {
+    keywords: [ "fingers", "hand", "direction", "down" ],
+    "char": "\ud83d\udc47",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  point_left: {
+    keywords: [ "direction", "fingers", "hand", "left" ],
+    "char": "\ud83d\udc48",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  point_right: {
+    keywords: [ "fingers", "hand", "direction", "right" ],
+    "char": "\ud83d\udc49",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  fu: {
+    keywords: [ "hand", "fingers", "rude", "middle", "flipping" ],
+    "char": "\ud83d\udd95",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  raised_hand_with_fingers_splayed: {
+    keywords: [ "hand", "fingers", "palm" ],
+    "char": "\ud83d\udd90",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  love_you: {
+    keywords: [ "hand", "fingers", "gesture" ],
+    "char": "\ud83e\udd1f",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  metal: {
+    keywords: [ "hand", "fingers", "evil_eye", "sign_of_horns", "rock_on" ],
+    "char": "\ud83e\udd18",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  crossed_fingers: {
+    keywords: [ "good", "lucky" ],
+    "char": "\ud83e\udd1e",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  vulcan_salute: {
+    keywords: [ "hand", "fingers", "spock", "star trek" ],
+    "char": "\ud83d\udd96",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  writing_hand: {
+    keywords: [ "lower_left_ballpoint_pen", "stationery", "write", "compose" ],
+    "char": "\u270d",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  selfie: {
+    keywords: [ "camera", "phone" ],
+    "char": "\ud83e\udd33",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  nail_care: {
+    keywords: [ "beauty", "manicure", "finger", "fashion", "nail" ],
+    "char": "\ud83d\udc85",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  lips: {
+    keywords: [ "mouth", "kiss" ],
+    "char": "\ud83d\udc44",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  tongue: {
+    keywords: [ "mouth", "playful" ],
+    "char": "\ud83d\udc45",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  ear: {
+    keywords: [ "face", "hear", "sound", "listen" ],
+    "char": "\ud83d\udc42",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  nose: {
+    keywords: [ "smell", "sniff" ],
+    "char": "\ud83d\udc43",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  eye: {
+    keywords: [ "face", "look", "see", "watch", "stare" ],
+    "char": "\ud83d\udc41",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  eyes: {
+    keywords: [ "look", "watch", "stalk", "peek", "see" ],
+    "char": "\ud83d\udc40",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  brain: {
+    keywords: [ "smart", "intelligent" ],
+    "char": "\ud83e\udde0",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  bust_in_silhouette: {
+    keywords: [ "user", "person", "human" ],
+    "char": "\ud83d\udc64",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  busts_in_silhouette: {
+    keywords: [ "user", "person", "human", "group", "team" ],
+    "char": "\ud83d\udc65",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  speaking_head: {
+    keywords: [ "user", "person", "human", "sing", "say", "talk" ],
+    "char": "\ud83d\udde3",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  baby: {
+    keywords: [ "child", "boy", "girl", "toddler" ],
+    "char": "\ud83d\udc76",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  child: {
+    keywords: [ "gender-neutral", "young" ],
+    "char": "\ud83e\uddd2",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  boy: {
+    keywords: [ "man", "male", "guy", "teenager" ],
+    "char": "\ud83d\udc66",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  girl: {
+    keywords: [ "female", "woman", "teenager" ],
+    "char": "\ud83d\udc67",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  adult: {
+    keywords: [ "gender-neutral", "person" ],
+    "char": "\ud83e\uddd1",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  man: {
+    keywords: [ "mustache", "father", "dad", "guy", "classy", "sir", "moustache" ],
+    "char": "\ud83d\udc68",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  woman: {
+    keywords: [ "female", "girls", "lady" ],
+    "char": "\ud83d\udc69",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  blonde_woman: {
+    keywords: [ "woman", "female", "girl", "blonde", "person" ],
+    "char": "\ud83d\udc71\u200d\u2640\ufe0f",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  blonde_man: {
+    keywords: [ "man", "male", "boy", "blonde", "guy", "person" ],
+    "char": "\ud83d\udc71",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  bearded_person: {
+    keywords: [ "person", "bewhiskered" ],
+    "char": "\ud83e\uddd4",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  older_adult: {
+    keywords: [ "human", "elder", "senior", "gender-neutral" ],
+    "char": "\ud83e\uddd3",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  older_man: {
+    keywords: [ "human", "male", "men", "old", "elder", "senior" ],
+    "char": "\ud83d\udc74",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  older_woman: {
+    keywords: [ "human", "female", "women", "lady", "old", "elder", "senior" ],
+    "char": "\ud83d\udc75",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  man_with_gua_pi_mao: {
+    keywords: [ "male", "boy", "chinese" ],
+    "char": "\ud83d\udc72",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  woman_with_headscarf: {
+    keywords: [ "female", "hijab", "mantilla", "tichel" ],
+    "char": "\ud83e\uddd5",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  woman_with_turban: {
+    keywords: [ "female", "indian", "hinduism", "arabs", "woman" ],
+    "char": "\ud83d\udc73\u200d\u2640\ufe0f",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  man_with_turban: {
+    keywords: [ "male", "indian", "hinduism", "arabs" ],
+    "char": "\ud83d\udc73",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  policewoman: {
+    keywords: [ "woman", "police", "law", "legal", "enforcement", "arrest", "911", "female" ],
+    "char": "\ud83d\udc6e\u200d\u2640\ufe0f",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  policeman: {
+    keywords: [ "man", "police", "law", "legal", "enforcement", "arrest", "911" ],
+    "char": "\ud83d\udc6e",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  construction_worker_woman: {
+    keywords: [ "female", "human", "wip", "build", "construction", "worker", "labor", "woman" ],
+    "char": "\ud83d\udc77\u200d\u2640\ufe0f",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  construction_worker_man: {
+    keywords: [ "male", "human", "wip", "guy", "build", "construction", "worker", "labor" ],
+    "char": "\ud83d\udc77",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  guardswoman: {
+    keywords: [ "uk", "gb", "british", "female", "royal", "woman" ],
+    "char": "\ud83d\udc82\u200d\u2640\ufe0f",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  guardsman: {
+    keywords: [ "uk", "gb", "british", "male", "guy", "royal" ],
+    "char": "\ud83d\udc82",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  female_detective: {
+    keywords: [ "human", "spy", "detective", "female", "woman" ],
+    "char": "\ud83d\udd75\ufe0f\u200d\u2640\ufe0f",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  male_detective: {
+    keywords: [ "human", "spy", "detective" ],
+    "char": "\ud83d\udd75",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  woman_health_worker: {
+    keywords: [ "doctor", "nurse", "therapist", "healthcare", "woman", "human" ],
+    "char": "\ud83d\udc69\u200d\u2695\ufe0f",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  man_health_worker: {
+    keywords: [ "doctor", "nurse", "therapist", "healthcare", "man", "human" ],
+    "char": "\ud83d\udc68\u200d\u2695\ufe0f",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  woman_farmer: {
+    keywords: [ "rancher", "gardener", "woman", "human" ],
+    "char": "\ud83d\udc69\u200d\ud83c\udf3e",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  man_farmer: {
+    keywords: [ "rancher", "gardener", "man", "human" ],
+    "char": "\ud83d\udc68\u200d\ud83c\udf3e",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  woman_cook: {
+    keywords: [ "chef", "woman", "human" ],
+    "char": "\ud83d\udc69\u200d\ud83c\udf73",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  man_cook: {
+    keywords: [ "chef", "man", "human" ],
+    "char": "\ud83d\udc68\u200d\ud83c\udf73",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  woman_student: {
+    keywords: [ "graduate", "woman", "human" ],
+    "char": "\ud83d\udc69\u200d\ud83c\udf93",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  man_student: {
+    keywords: [ "graduate", "man", "human" ],
+    "char": "\ud83d\udc68\u200d\ud83c\udf93",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  woman_singer: {
+    keywords: [ "rockstar", "entertainer", "woman", "human" ],
+    "char": "\ud83d\udc69\u200d\ud83c\udfa4",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  man_singer: {
+    keywords: [ "rockstar", "entertainer", "man", "human" ],
+    "char": "\ud83d\udc68\u200d\ud83c\udfa4",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  woman_teacher: {
+    keywords: [ "instructor", "professor", "woman", "human" ],
+    "char": "\ud83d\udc69\u200d\ud83c\udfeb",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  man_teacher: {
+    keywords: [ "instructor", "professor", "man", "human" ],
+    "char": "\ud83d\udc68\u200d\ud83c\udfeb",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  woman_factory_worker: {
+    keywords: [ "assembly", "industrial", "woman", "human" ],
+    "char": "\ud83d\udc69\u200d\ud83c\udfed",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  man_factory_worker: {
+    keywords: [ "assembly", "industrial", "man", "human" ],
+    "char": "\ud83d\udc68\u200d\ud83c\udfed",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  woman_technologist: {
+    keywords: [ "coder", "developer", "engineer", "programmer", "software", "woman", "human", "laptop", "computer" ],
+    "char": "\ud83d\udc69\u200d\ud83d\udcbb",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  man_technologist: {
+    keywords: [ "coder", "developer", "engineer", "programmer", "software", "man", "human", "laptop", "computer" ],
+    "char": "\ud83d\udc68\u200d\ud83d\udcbb",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  woman_office_worker: {
+    keywords: [ "business", "manager", "woman", "human" ],
+    "char": "\ud83d\udc69\u200d\ud83d\udcbc",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  man_office_worker: {
+    keywords: [ "business", "manager", "man", "human" ],
+    "char": "\ud83d\udc68\u200d\ud83d\udcbc",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  woman_mechanic: {
+    keywords: [ "plumber", "woman", "human", "wrench" ],
+    "char": "\ud83d\udc69\u200d\ud83d\udd27",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  man_mechanic: {
+    keywords: [ "plumber", "man", "human", "wrench" ],
+    "char": "\ud83d\udc68\u200d\ud83d\udd27",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  woman_scientist: {
+    keywords: [ "biologist", "chemist", "engineer", "physicist", "woman", "human" ],
+    "char": "\ud83d\udc69\u200d\ud83d\udd2c",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  man_scientist: {
+    keywords: [ "biologist", "chemist", "engineer", "physicist", "man", "human" ],
+    "char": "\ud83d\udc68\u200d\ud83d\udd2c",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  woman_artist: {
+    keywords: [ "painter", "woman", "human" ],
+    "char": "\ud83d\udc69\u200d\ud83c\udfa8",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  man_artist: {
+    keywords: [ "painter", "man", "human" ],
+    "char": "\ud83d\udc68\u200d\ud83c\udfa8",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  woman_firefighter: {
+    keywords: [ "fireman", "woman", "human" ],
+    "char": "\ud83d\udc69\u200d\ud83d\ude92",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  man_firefighter: {
+    keywords: [ "fireman", "man", "human" ],
+    "char": "\ud83d\udc68\u200d\ud83d\ude92",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  woman_pilot: {
+    keywords: [ "aviator", "plane", "woman", "human" ],
+    "char": "\ud83d\udc69\u200d\u2708\ufe0f",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  man_pilot: {
+    keywords: [ "aviator", "plane", "man", "human" ],
+    "char": "\ud83d\udc68\u200d\u2708\ufe0f",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  woman_astronaut: {
+    keywords: [ "space", "rocket", "woman", "human" ],
+    "char": "\ud83d\udc69\u200d\ud83d\ude80",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  man_astronaut: {
+    keywords: [ "space", "rocket", "man", "human" ],
+    "char": "\ud83d\udc68\u200d\ud83d\ude80",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  woman_judge: {
+    keywords: [ "justice", "court", "woman", "human" ],
+    "char": "\ud83d\udc69\u200d\u2696\ufe0f",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  man_judge: {
+    keywords: [ "justice", "court", "man", "human" ],
+    "char": "\ud83d\udc68\u200d\u2696\ufe0f",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  mrs_claus: {
+    keywords: [ "woman", "female", "xmas", "mother christmas" ],
+    "char": "\ud83e\udd36",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  santa: {
+    keywords: [ "festival", "man", "male", "xmas", "father christmas" ],
+    "char": "\ud83c\udf85",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  sorceress: {
+    keywords: [ "woman", "female", "mage", "witch" ],
+    "char": "\ud83e\uddd9\u200d\u2640\ufe0f",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  wizard: {
+    keywords: [ "man", "male", "mage", "sorcerer" ],
+    "char": "\ud83e\uddd9\u200d\u2642\ufe0f",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  woman_elf: {
+    keywords: [ "woman", "female" ],
+    "char": "\ud83e\udddd\u200d\u2640\ufe0f",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  man_elf: {
+    keywords: [ "man", "male" ],
+    "char": "\ud83e\udddd\u200d\u2642\ufe0f",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  woman_vampire: {
+    keywords: [ "woman", "female" ],
+    "char": "\ud83e\udddb\u200d\u2640\ufe0f",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  man_vampire: {
+    keywords: [ "man", "male", "dracula" ],
+    "char": "\ud83e\udddb\u200d\u2642\ufe0f",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  woman_zombie: {
+    keywords: [ "woman", "female", "undead", "walking dead" ],
+    "char": "\ud83e\udddf\u200d\u2640\ufe0f",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  man_zombie: {
+    keywords: [ "man", "male", "dracula", "undead", "walking dead" ],
+    "char": "\ud83e\udddf\u200d\u2642\ufe0f",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  woman_genie: {
+    keywords: [ "woman", "female" ],
+    "char": "\ud83e\uddde\u200d\u2640\ufe0f",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  man_genie: {
+    keywords: [ "man", "male" ],
+    "char": "\ud83e\uddde\u200d\u2642\ufe0f",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  mermaid: {
+    keywords: [ "woman", "female", "merwoman", "ariel" ],
+    "char": "\ud83e\udddc\u200d\u2640\ufe0f",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  merman: {
+    keywords: [ "man", "male", "triton" ],
+    "char": "\ud83e\udddc\u200d\u2642\ufe0f",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  woman_fairy: {
+    keywords: [ "woman", "female" ],
+    "char": "\ud83e\uddda\u200d\u2640\ufe0f",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  man_fairy: {
+    keywords: [ "man", "male" ],
+    "char": "\ud83e\uddda\u200d\u2642\ufe0f",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  angel: {
+    keywords: [ "heaven", "wings", "halo" ],
+    "char": "\ud83d\udc7c",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  pregnant_woman: {
+    keywords: [ "baby" ],
+    "char": "\ud83e\udd30",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  breastfeeding: {
+    keywords: [ "nursing", "baby" ],
+    "char": "\ud83e\udd31",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  princess: {
+    keywords: [ "girl", "woman", "female", "blond", "crown", "royal", "queen" ],
+    "char": "\ud83d\udc78",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  prince: {
+    keywords: [ "boy", "man", "male", "crown", "royal", "king" ],
+    "char": "\ud83e\udd34",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  bride_with_veil: {
+    keywords: [ "couple", "marriage", "wedding", "woman", "bride" ],
+    "char": "\ud83d\udc70",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  man_in_tuxedo: {
+    keywords: [ "couple", "marriage", "wedding", "groom" ],
+    "char": "\ud83e\udd35",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  running_woman: {
+    keywords: [ "woman", "walking", "exercise", "race", "running", "female" ],
+    "char": "\ud83c\udfc3\u200d\u2640\ufe0f",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  running_man: {
+    keywords: [ "man", "walking", "exercise", "race", "running" ],
+    "char": "\ud83c\udfc3",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  walking_woman: {
+    keywords: [ "human", "feet", "steps", "woman", "female" ],
+    "char": "\ud83d\udeb6\u200d\u2640\ufe0f",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  walking_man: {
+    keywords: [ "human", "feet", "steps" ],
+    "char": "\ud83d\udeb6",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  dancer: {
+    keywords: [ "female", "girl", "woman", "fun" ],
+    "char": "\ud83d\udc83",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  man_dancing: {
+    keywords: [ "male", "boy", "fun", "dancer" ],
+    "char": "\ud83d\udd7a",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  dancing_women: {
+    keywords: [ "female", "bunny", "women", "girls" ],
+    "char": "\ud83d\udc6f",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  dancing_men: {
+    keywords: [ "male", "bunny", "men", "boys" ],
+    "char": "\ud83d\udc6f\u200d\u2642\ufe0f",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  couple: {
+    keywords: [ "pair", "people", "human", "love", "date", "dating", "like", "affection", "valentines", "marriage" ],
+    "char": "\ud83d\udc6b",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  two_men_holding_hands: {
+    keywords: [ "pair", "couple", "love", "like", "bromance", "friendship", "people", "human" ],
+    "char": "\ud83d\udc6c",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  two_women_holding_hands: {
+    keywords: [ "pair", "friendship", "couple", "love", "like", "female", "people", "human" ],
+    "char": "\ud83d\udc6d",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  bowing_woman: {
+    keywords: [ "woman", "female", "girl" ],
+    "char": "\ud83d\ude47\u200d\u2640\ufe0f",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  bowing_man: {
+    keywords: [ "man", "male", "boy" ],
+    "char": "\ud83d\ude47",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  man_facepalming: {
+    keywords: [ "man", "male", "boy", "disbelief" ],
+    "char": "\ud83e\udd26",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  woman_facepalming: {
+    keywords: [ "woman", "female", "girl", "disbelief" ],
+    "char": "\ud83e\udd26\u200d\u2640\ufe0f",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  woman_shrugging: {
+    keywords: [ "woman", "female", "girl", "confused", "indifferent", "doubt" ],
+    "char": "\ud83e\udd37",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  man_shrugging: {
+    keywords: [ "man", "male", "boy", "confused", "indifferent", "doubt" ],
+    "char": "\ud83e\udd37\u200d\u2642\ufe0f",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  tipping_hand_woman: {
+    keywords: [ "female", "girl", "woman", "human", "information" ],
+    "char": "\ud83d\udc81",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  tipping_hand_man: {
+    keywords: [ "male", "boy", "man", "human", "information" ],
+    "char": "\ud83d\udc81\u200d\u2642\ufe0f",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  no_good_woman: {
+    keywords: [ "female", "girl", "woman", "nope" ],
+    "char": "\ud83d\ude45",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  no_good_man: {
+    keywords: [ "male", "boy", "man", "nope" ],
+    "char": "\ud83d\ude45\u200d\u2642\ufe0f",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  ok_woman: {
+    keywords: [ "women", "girl", "female", "pink", "human", "woman" ],
+    "char": "\ud83d\ude46",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  ok_man: {
+    keywords: [ "men", "boy", "male", "blue", "human", "man" ],
+    "char": "\ud83d\ude46\u200d\u2642\ufe0f",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  raising_hand_woman: {
+    keywords: [ "female", "girl", "woman" ],
+    "char": "\ud83d\ude4b",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  raising_hand_man: {
+    keywords: [ "male", "boy", "man" ],
+    "char": "\ud83d\ude4b\u200d\u2642\ufe0f",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  pouting_woman: {
+    keywords: [ "female", "girl", "woman" ],
+    "char": "\ud83d\ude4e",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  pouting_man: {
+    keywords: [ "male", "boy", "man" ],
+    "char": "\ud83d\ude4e\u200d\u2642\ufe0f",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  frowning_woman: {
+    keywords: [ "female", "girl", "woman", "sad", "depressed", "discouraged", "unhappy" ],
+    "char": "\ud83d\ude4d",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  frowning_man: {
+    keywords: [ "male", "boy", "man", "sad", "depressed", "discouraged", "unhappy" ],
+    "char": "\ud83d\ude4d\u200d\u2642\ufe0f",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  haircut_woman: {
+    keywords: [ "female", "girl", "woman" ],
+    "char": "\ud83d\udc87",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  haircut_man: {
+    keywords: [ "male", "boy", "man" ],
+    "char": "\ud83d\udc87\u200d\u2642\ufe0f",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  massage_woman: {
+    keywords: [ "female", "girl", "woman", "head" ],
+    "char": "\ud83d\udc86",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  massage_man: {
+    keywords: [ "male", "boy", "man", "head" ],
+    "char": "\ud83d\udc86\u200d\u2642\ufe0f",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  woman_in_steamy_room: {
+    keywords: [ "female", "woman", "spa", "steamroom", "sauna" ],
+    "char": "\ud83e\uddd6\u200d\u2640\ufe0f",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  man_in_steamy_room: {
+    keywords: [ "male", "man", "spa", "steamroom", "sauna" ],
+    "char": "\ud83e\uddd6\u200d\u2642\ufe0f",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  couple_with_heart_woman_man: {
+    keywords: [ "pair", "love", "like", "affection", "human", "dating", "valentines", "marriage" ],
+    "char": "\ud83d\udc91",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  couple_with_heart_woman_woman: {
+    keywords: [ "pair", "love", "like", "affection", "human", "dating", "valentines", "marriage" ],
+    "char": "\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d\udc69",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  couple_with_heart_man_man: {
+    keywords: [ "pair", "love", "like", "affection", "human", "dating", "valentines", "marriage" ],
+    "char": "\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc68",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  couplekiss_man_woman: {
+    keywords: [ "pair", "valentines", "love", "like", "dating", "marriage" ],
+    "char": "\ud83d\udc8f",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  couplekiss_woman_woman: {
+    keywords: [ "pair", "valentines", "love", "like", "dating", "marriage" ],
+    "char": "\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  couplekiss_man_man: {
+    keywords: [ "pair", "valentines", "love", "like", "dating", "marriage" ],
+    "char": "\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  family_man_woman_boy: {
+    keywords: [ "home", "parents", "child", "mom", "dad", "father", "mother", "people", "human" ],
+    "char": "\ud83d\udc6a",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  family_man_woman_girl: {
+    keywords: [ "home", "parents", "people", "human", "child" ],
+    "char": "\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  family_man_woman_girl_boy: {
+    keywords: [ "home", "parents", "people", "human", "children" ],
+    "char": "\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc66",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  family_man_woman_boy_boy: {
+    keywords: [ "home", "parents", "people", "human", "children" ],
+    "char": "\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  family_man_woman_girl_girl: {
+    keywords: [ "home", "parents", "people", "human", "children" ],
+    "char": "\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc67",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  family_woman_woman_boy: {
+    keywords: [ "home", "parents", "people", "human", "children" ],
+    "char": "\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc66",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  family_woman_woman_girl: {
+    keywords: [ "home", "parents", "people", "human", "children" ],
+    "char": "\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  family_woman_woman_girl_boy: {
+    keywords: [ "home", "parents", "people", "human", "children" ],
+    "char": "\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc66",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  family_woman_woman_boy_boy: {
+    keywords: [ "home", "parents", "people", "human", "children" ],
+    "char": "\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  family_woman_woman_girl_girl: {
+    keywords: [ "home", "parents", "people", "human", "children" ],
+    "char": "\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc67",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  family_man_man_boy: {
+    keywords: [ "home", "parents", "people", "human", "children" ],
+    "char": "\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc66",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  family_man_man_girl: {
+    keywords: [ "home", "parents", "people", "human", "children" ],
+    "char": "\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  family_man_man_girl_boy: {
+    keywords: [ "home", "parents", "people", "human", "children" ],
+    "char": "\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d\udc66",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  family_man_man_boy_boy: {
+    keywords: [ "home", "parents", "people", "human", "children" ],
+    "char": "\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  family_man_man_girl_girl: {
+    keywords: [ "home", "parents", "people", "human", "children" ],
+    "char": "\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d\udc67",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  family_woman_boy: {
+    keywords: [ "home", "parent", "people", "human", "child" ],
+    "char": "\ud83d\udc69\u200d\ud83d\udc66",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  family_woman_girl: {
+    keywords: [ "home", "parent", "people", "human", "child" ],
+    "char": "\ud83d\udc69\u200d\ud83d\udc67",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  family_woman_girl_boy: {
+    keywords: [ "home", "parent", "people", "human", "children" ],
+    "char": "\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc66",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  family_woman_boy_boy: {
+    keywords: [ "home", "parent", "people", "human", "children" ],
+    "char": "\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  family_woman_girl_girl: {
+    keywords: [ "home", "parent", "people", "human", "children" ],
+    "char": "\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc67",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  family_man_boy: {
+    keywords: [ "home", "parent", "people", "human", "child" ],
+    "char": "\ud83d\udc68\u200d\ud83d\udc66",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  family_man_girl: {
+    keywords: [ "home", "parent", "people", "human", "child" ],
+    "char": "\ud83d\udc68\u200d\ud83d\udc67",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  family_man_girl_boy: {
+    keywords: [ "home", "parent", "people", "human", "children" ],
+    "char": "\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d\udc66",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  family_man_boy_boy: {
+    keywords: [ "home", "parent", "people", "human", "children" ],
+    "char": "\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  family_man_girl_girl: {
+    keywords: [ "home", "parent", "people", "human", "children" ],
+    "char": "\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d\udc67",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  coat: {
+    keywords: [ "jacket" ],
+    "char": "\ud83e\udde5",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  womans_clothes: {
+    keywords: [ "fashion", "shopping_bags", "female" ],
+    "char": "\ud83d\udc5a",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  tshirt: {
+    keywords: [ "fashion", "cloth", "casual", "shirt", "tee" ],
+    "char": "\ud83d\udc55",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  jeans: {
+    keywords: [ "fashion", "shopping" ],
+    "char": "\ud83d\udc56",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  necktie: {
+    keywords: [ "shirt", "suitup", "formal", "fashion", "cloth", "business" ],
+    "char": "\ud83d\udc54",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  dress: {
+    keywords: [ "clothes", "fashion", "shopping" ],
+    "char": "\ud83d\udc57",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  bikini: {
+    keywords: [ "swimming", "female", "woman", "girl", "fashion", "beach", "summer" ],
+    "char": "\ud83d\udc59",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  kimono: {
+    keywords: [ "dress", "fashion", "women", "female", "japanese" ],
+    "char": "\ud83d\udc58",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  lipstick: {
+    keywords: [ "female", "girl", "fashion", "woman" ],
+    "char": "\ud83d\udc84",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  kiss: {
+    keywords: [ "face", "lips", "love", "like", "affection", "valentines" ],
+    "char": "\ud83d\udc8b",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  footprints: {
+    keywords: [ "feet", "tracking", "walking", "beach" ],
+    "char": "\ud83d\udc63",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  high_heel: {
+    keywords: [ "fashion", "shoes", "female", "pumps", "stiletto" ],
+    "char": "\ud83d\udc60",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  sandal: {
+    keywords: [ "shoes", "fashion", "flip flops" ],
+    "char": "\ud83d\udc61",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  boot: {
+    keywords: [ "shoes", "fashion" ],
+    "char": "\ud83d\udc62",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  mans_shoe: {
+    keywords: [ "fashion", "male" ],
+    "char": "\ud83d\udc5e",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  athletic_shoe: {
+    keywords: [ "shoes", "sports", "sneakers" ],
+    "char": "\ud83d\udc5f",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  socks: {
+    keywords: [ "stockings", "clothes" ],
+    "char": "\ud83e\udde6",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  gloves: {
+    keywords: [ "hands", "winter", "clothes" ],
+    "char": "\ud83e\udde4",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  scarf: {
+    keywords: [ "neck", "winter", "clothes" ],
+    "char": "\ud83e\udde3",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  womans_hat: {
+    keywords: [ "fashion", "accessories", "female", "lady", "spring" ],
+    "char": "\ud83d\udc52",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  tophat: {
+    keywords: [ "magic", "gentleman", "classy", "circus" ],
+    "char": "\ud83c\udfa9",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  billed_hat: {
+    keywords: [ "cap", "baseball" ],
+    "char": "\ud83e\udde2",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  rescue_worker_helmet: {
+    keywords: [ "construction", "build" ],
+    "char": "\u26d1",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  mortar_board: {
+    keywords: [ "school", "college", "degree", "university", "graduation", "cap", "hat", "legal", "learn", "education" ],
+    "char": "\ud83c\udf93",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  crown: {
+    keywords: [ "king", "kod", "leader", "royalty", "lord" ],
+    "char": "\ud83d\udc51",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  school_satchel: {
+    keywords: [ "student", "education", "bag", "backpack" ],
+    "char": "\ud83c\udf92",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  pouch: {
+    keywords: [ "bag", "accessories", "shopping" ],
+    "char": "\ud83d\udc5d",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  purse: {
+    keywords: [ "fashion", "accessories", "money", "sales", "shopping" ],
+    "char": "\ud83d\udc5b",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  handbag: {
+    keywords: [ "fashion", "accessory", "accessories", "shopping" ],
+    "char": "\ud83d\udc5c",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  briefcase: {
+    keywords: [ "business", "documents", "work", "law", "legal", "job", "career" ],
+    "char": "\ud83d\udcbc",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  eyeglasses: {
+    keywords: [ "fashion", "accessories", "eyesight", "nerdy", "dork", "geek" ],
+    "char": "\ud83d\udc53",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  dark_sunglasses: {
+    keywords: [ "face", "cool", "accessories" ],
+    "char": "\ud83d\udd76",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  ring: {
+    keywords: [ "wedding", "propose", "marriage", "valentines", "diamond", "fashion", "jewelry", "gem", "engagement" ],
+    "char": "\ud83d\udc8d",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  closed_umbrella: {
+    keywords: [ "weather", "rain", "drizzle" ],
+    "char": "\ud83c\udf02",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  dog: {
+    keywords: [ "animal", "friend", "nature", "woof", "puppy", "pet", "faithful" ],
+    "char": "\ud83d\udc36",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  cat: {
+    keywords: [ "animal", "meow", "nature", "pet", "kitten" ],
+    "char": "\ud83d\udc31",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  mouse: {
+    keywords: [ "animal", "nature", "cheese_wedge", "rodent" ],
+    "char": "\ud83d\udc2d",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  hamster: {
+    keywords: [ "animal", "nature" ],
+    "char": "\ud83d\udc39",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  rabbit: {
+    keywords: [ "animal", "nature", "pet", "spring", "magic", "bunny" ],
+    "char": "\ud83d\udc30",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  fox_face: {
+    keywords: [ "animal", "nature", "face" ],
+    "char": "\ud83e\udd8a",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  bear: {
+    keywords: [ "animal", "nature", "wild" ],
+    "char": "\ud83d\udc3b",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  panda_face: {
+    keywords: [ "animal", "nature", "panda" ],
+    "char": "\ud83d\udc3c",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  koala: {
+    keywords: [ "animal", "nature" ],
+    "char": "\ud83d\udc28",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  tiger: {
+    keywords: [ "animal", "cat", "danger", "wild", "nature", "roar" ],
+    "char": "\ud83d\udc2f",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  lion: {
+    keywords: [ "animal", "nature" ],
+    "char": "\ud83e\udd81",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  cow: {
+    keywords: [ "beef", "ox", "animal", "nature", "moo", "milk" ],
+    "char": "\ud83d\udc2e",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  pig: {
+    keywords: [ "animal", "oink", "nature" ],
+    "char": "\ud83d\udc37",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  pig_nose: {
+    keywords: [ "animal", "oink" ],
+    "char": "\ud83d\udc3d",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  frog: {
+    keywords: [ "animal", "nature", "croak", "toad" ],
+    "char": "\ud83d\udc38",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  squid: {
+    keywords: [ "animal", "nature", "ocean", "sea" ],
+    "char": "\ud83e\udd91",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  octopus: {
+    keywords: [ "animal", "creature", "ocean", "sea", "nature", "beach" ],
+    "char": "\ud83d\udc19",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  shrimp: {
+    keywords: [ "animal", "ocean", "nature", "seafood" ],
+    "char": "\ud83e\udd90",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  monkey_face: {
+    keywords: [ "animal", "nature", "circus" ],
+    "char": "\ud83d\udc35",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  gorilla: {
+    keywords: [ "animal", "nature", "circus" ],
+    "char": "\ud83e\udd8d",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  see_no_evil: {
+    keywords: [ "monkey", "animal", "nature", "haha" ],
+    "char": "\ud83d\ude48",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  hear_no_evil: {
+    keywords: [ "animal", "monkey", "nature" ],
+    "char": "\ud83d\ude49",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  speak_no_evil: {
+    keywords: [ "monkey", "animal", "nature", "omg" ],
+    "char": "\ud83d\ude4a",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  monkey: {
+    keywords: [ "animal", "nature", "banana", "circus" ],
+    "char": "\ud83d\udc12",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  chicken: {
+    keywords: [ "animal", "cluck", "nature", "bird" ],
+    "char": "\ud83d\udc14",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  penguin: {
+    keywords: [ "animal", "nature" ],
+    "char": "\ud83d\udc27",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  bird: {
+    keywords: [ "animal", "nature", "fly", "tweet", "spring" ],
+    "char": "\ud83d\udc26",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  baby_chick: {
+    keywords: [ "animal", "chicken", "bird" ],
+    "char": "\ud83d\udc24",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  hatching_chick: {
+    keywords: [ "animal", "chicken", "egg", "born", "baby", "bird" ],
+    "char": "\ud83d\udc23",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  hatched_chick: {
+    keywords: [ "animal", "chicken", "baby", "bird" ],
+    "char": "\ud83d\udc25",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  duck: {
+    keywords: [ "animal", "nature", "bird", "mallard" ],
+    "char": "\ud83e\udd86",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  eagle: {
+    keywords: [ "animal", "nature", "bird" ],
+    "char": "\ud83e\udd85",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  owl: {
+    keywords: [ "animal", "nature", "bird", "hoot" ],
+    "char": "\ud83e\udd89",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  bat: {
+    keywords: [ "animal", "nature", "blind", "vampire" ],
+    "char": "\ud83e\udd87",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  wolf: {
+    keywords: [ "animal", "nature", "wild" ],
+    "char": "\ud83d\udc3a",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  boar: {
+    keywords: [ "animal", "nature" ],
+    "char": "\ud83d\udc17",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  horse: {
+    keywords: [ "animal", "brown", "nature" ],
+    "char": "\ud83d\udc34",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  unicorn: {
+    keywords: [ "animal", "nature", "mystical" ],
+    "char": "\ud83e\udd84",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  honeybee: {
+    keywords: [ "animal", "insect", "nature", "bug", "spring", "honey" ],
+    "char": "\ud83d\udc1d",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  bug: {
+    keywords: [ "animal", "insect", "nature", "worm" ],
+    "char": "\ud83d\udc1b",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  butterfly: {
+    keywords: [ "animal", "insect", "nature", "caterpillar" ],
+    "char": "\ud83e\udd8b",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  snail: {
+    keywords: [ "slow", "animal", "shell" ],
+    "char": "\ud83d\udc0c",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  beetle: {
+    keywords: [ "animal", "insect", "nature", "ladybug" ],
+    "char": "\ud83d\udc1e",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  ant: {
+    keywords: [ "animal", "insect", "nature", "bug" ],
+    "char": "\ud83d\udc1c",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  grasshopper: {
+    keywords: [ "animal", "cricket", "chirp" ],
+    "char": "\ud83e\udd97",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  spider: {
+    keywords: [ "animal", "arachnid" ],
+    "char": "\ud83d\udd77",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  scorpion: {
+    keywords: [ "animal", "arachnid" ],
+    "char": "\ud83e\udd82",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  crab: {
+    keywords: [ "animal", "crustacean" ],
+    "char": "\ud83e\udd80",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  snake: {
+    keywords: [ "animal", "evil", "nature", "hiss", "python" ],
+    "char": "\ud83d\udc0d",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  lizard: {
+    keywords: [ "animal", "nature", "reptile" ],
+    "char": "\ud83e\udd8e",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  "t-rex": {
+    keywords: [ "animal", "nature", "dinosaur", "tyrannosaurus", "extinct" ],
+    "char": "\ud83e\udd96",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  sauropod: {
+    keywords: [ "animal", "nature", "dinosaur", "brachiosaurus", "brontosaurus", "diplodocus", "extinct" ],
+    "char": "\ud83e\udd95",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  turtle: {
+    keywords: [ "animal", "slow", "nature", "tortoise" ],
+    "char": "\ud83d\udc22",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  tropical_fish: {
+    keywords: [ "animal", "swim", "ocean", "beach", "nemo" ],
+    "char": "\ud83d\udc20",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  fish: {
+    keywords: [ "animal", "food", "nature" ],
+    "char": "\ud83d\udc1f",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  blowfish: {
+    keywords: [ "animal", "nature", "food", "sea", "ocean" ],
+    "char": "\ud83d\udc21",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  dolphin: {
+    keywords: [ "animal", "nature", "fish", "sea", "ocean", "flipper", "fins", "beach" ],
+    "char": "\ud83d\udc2c",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  shark: {
+    keywords: [ "animal", "nature", "fish", "sea", "ocean", "jaws", "fins", "beach" ],
+    "char": "\ud83e\udd88",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  whale: {
+    keywords: [ "animal", "nature", "sea", "ocean" ],
+    "char": "\ud83d\udc33",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  whale2: {
+    keywords: [ "animal", "nature", "sea", "ocean" ],
+    "char": "\ud83d\udc0b",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  crocodile: {
+    keywords: [ "animal", "nature", "reptile", "lizard", "alligator" ],
+    "char": "\ud83d\udc0a",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  leopard: {
+    keywords: [ "animal", "nature" ],
+    "char": "\ud83d\udc06",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  zebra: {
+    keywords: [ "animal", "nature", "stripes", "safari" ],
+    "char": "\ud83e\udd93",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  tiger2: {
+    keywords: [ "animal", "nature", "roar" ],
+    "char": "\ud83d\udc05",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  water_buffalo: {
+    keywords: [ "animal", "nature", "ox", "cow" ],
+    "char": "\ud83d\udc03",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  ox: {
+    keywords: [ "animal", "cow", "beef" ],
+    "char": "\ud83d\udc02",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  cow2: {
+    keywords: [ "beef", "ox", "animal", "nature", "moo", "milk" ],
+    "char": "\ud83d\udc04",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  deer: {
+    keywords: [ "animal", "nature", "horns", "venison" ],
+    "char": "\ud83e\udd8c",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  dromedary_camel: {
+    keywords: [ "animal", "hot", "desert", "hump" ],
+    "char": "\ud83d\udc2a",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  camel: {
+    keywords: [ "animal", "nature", "hot", "desert", "hump" ],
+    "char": "\ud83d\udc2b",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  giraffe: {
+    keywords: [ "animal", "nature", "spots", "safari" ],
+    "char": "\ud83e\udd92",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  elephant: {
+    keywords: [ "animal", "nature", "nose", "th", "circus" ],
+    "char": "\ud83d\udc18",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  rhinoceros: {
+    keywords: [ "animal", "nature", "horn" ],
+    "char": "\ud83e\udd8f",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  goat: {
+    keywords: [ "animal", "nature" ],
+    "char": "\ud83d\udc10",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  ram: {
+    keywords: [ "animal", "sheep", "nature" ],
+    "char": "\ud83d\udc0f",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  sheep: {
+    keywords: [ "animal", "nature", "wool", "shipit" ],
+    "char": "\ud83d\udc11",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  racehorse: {
+    keywords: [ "animal", "gamble", "luck" ],
+    "char": "\ud83d\udc0e",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  pig2: {
+    keywords: [ "animal", "nature" ],
+    "char": "\ud83d\udc16",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  rat: {
+    keywords: [ "animal", "mouse", "rodent" ],
+    "char": "\ud83d\udc00",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  mouse2: {
+    keywords: [ "animal", "nature", "rodent" ],
+    "char": "\ud83d\udc01",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  rooster: {
+    keywords: [ "animal", "nature", "chicken" ],
+    "char": "\ud83d\udc13",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  turkey: {
+    keywords: [ "animal", "bird" ],
+    "char": "\ud83e\udd83",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  dove: {
+    keywords: [ "animal", "bird" ],
+    "char": "\ud83d\udd4a",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  dog2: {
+    keywords: [ "animal", "nature", "friend", "doge", "pet", "faithful" ],
+    "char": "\ud83d\udc15",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  poodle: {
+    keywords: [ "dog", "animal", "101", "nature", "pet" ],
+    "char": "\ud83d\udc29",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  cat2: {
+    keywords: [ "animal", "meow", "pet", "cats" ],
+    "char": "\ud83d\udc08",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  rabbit2: {
+    keywords: [ "animal", "nature", "pet", "magic", "spring" ],
+    "char": "\ud83d\udc07",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  chipmunk: {
+    keywords: [ "animal", "nature", "rodent", "squirrel" ],
+    "char": "\ud83d\udc3f",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  hedgehog: {
+    keywords: [ "animal", "nature", "spiny" ],
+    "char": "\ud83e\udd94",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  paw_prints: {
+    keywords: [ "animal", "tracking", "footprints", "dog", "cat", "pet", "feet" ],
+    "char": "\ud83d\udc3e",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  dragon: {
+    keywords: [ "animal", "myth", "nature", "chinese", "green" ],
+    "char": "\ud83d\udc09",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  dragon_face: {
+    keywords: [ "animal", "myth", "nature", "chinese", "green" ],
+    "char": "\ud83d\udc32",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  cactus: {
+    keywords: [ "vegetable", "plant", "nature" ],
+    "char": "\ud83c\udf35",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  christmas_tree: {
+    keywords: [ "festival", "vacation", "december", "xmas", "celebration" ],
+    "char": "\ud83c\udf84",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  evergreen_tree: {
+    keywords: [ "plant", "nature" ],
+    "char": "\ud83c\udf32",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  deciduous_tree: {
+    keywords: [ "plant", "nature" ],
+    "char": "\ud83c\udf33",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  palm_tree: {
+    keywords: [ "plant", "vegetable", "nature", "summer", "beach", "mojito", "tropical" ],
+    "char": "\ud83c\udf34",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  seedling: {
+    keywords: [ "plant", "nature", "grass", "lawn", "spring" ],
+    "char": "\ud83c\udf31",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  herb: {
+    keywords: [ "vegetable", "plant", "medicine", "weed", "grass", "lawn" ],
+    "char": "\ud83c\udf3f",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  shamrock: {
+    keywords: [ "vegetable", "plant", "nature", "irish", "clover" ],
+    "char": "\u2618",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  four_leaf_clover: {
+    keywords: [ "vegetable", "plant", "nature", "lucky", "irish" ],
+    "char": "\ud83c\udf40",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  bamboo: {
+    keywords: [ "plant", "nature", "vegetable", "panda", "pine_decoration" ],
+    "char": "\ud83c\udf8d",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  tanabata_tree: {
+    keywords: [ "plant", "nature", "branch", "summer" ],
+    "char": "\ud83c\udf8b",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  leaves: {
+    keywords: [ "nature", "plant", "tree", "vegetable", "grass", "lawn", "spring" ],
+    "char": "\ud83c\udf43",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  fallen_leaf: {
+    keywords: [ "nature", "plant", "vegetable", "leaves" ],
+    "char": "\ud83c\udf42",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  maple_leaf: {
+    keywords: [ "nature", "plant", "vegetable", "ca", "fall" ],
+    "char": "\ud83c\udf41",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  ear_of_rice: {
+    keywords: [ "nature", "plant" ],
+    "char": "\ud83c\udf3e",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  hibiscus: {
+    keywords: [ "plant", "vegetable", "flowers", "beach" ],
+    "char": "\ud83c\udf3a",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  sunflower: {
+    keywords: [ "nature", "plant", "fall" ],
+    "char": "\ud83c\udf3b",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  rose: {
+    keywords: [ "flowers", "valentines", "love", "spring" ],
+    "char": "\ud83c\udf39",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  wilted_flower: {
+    keywords: [ "plant", "nature", "flower" ],
+    "char": "\ud83e\udd40",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  tulip: {
+    keywords: [ "flowers", "plant", "nature", "summer", "spring" ],
+    "char": "\ud83c\udf37",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  blossom: {
+    keywords: [ "nature", "flowers", "yellow" ],
+    "char": "\ud83c\udf3c",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  cherry_blossom: {
+    keywords: [ "nature", "plant", "spring", "flower" ],
+    "char": "\ud83c\udf38",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  bouquet: {
+    keywords: [ "flowers", "nature", "spring" ],
+    "char": "\ud83d\udc90",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  mushroom: {
+    keywords: [ "plant", "vegetable" ],
+    "char": "\ud83c\udf44",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  chestnut: {
+    keywords: [ "food", "squirrel" ],
+    "char": "\ud83c\udf30",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  jack_o_lantern: {
+    keywords: [ "halloween", "light", "pumpkin", "creepy", "fall" ],
+    "char": "\ud83c\udf83",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  shell: {
+    keywords: [ "nature", "sea", "beach" ],
+    "char": "\ud83d\udc1a",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  spider_web: {
+    keywords: [ "animal", "insect", "arachnid", "silk" ],
+    "char": "\ud83d\udd78",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  earth_americas: {
+    keywords: [ "globe", "world", "USA", "international" ],
+    "char": "\ud83c\udf0e",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  earth_africa: {
+    keywords: [ "globe", "world", "international" ],
+    "char": "\ud83c\udf0d",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  earth_asia: {
+    keywords: [ "globe", "world", "east", "international" ],
+    "char": "\ud83c\udf0f",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  full_moon: {
+    keywords: [ "nature", "yellow", "twilight", "planet", "space", "night", "evening", "sleep" ],
+    "char": "\ud83c\udf15",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  waning_gibbous_moon: {
+    keywords: [ "nature", "twilight", "planet", "space", "night", "evening", "sleep", "waxing_gibbous_moon" ],
+    "char": "\ud83c\udf16",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  last_quarter_moon: {
+    keywords: [ "nature", "twilight", "planet", "space", "night", "evening", "sleep" ],
+    "char": "\ud83c\udf17",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  waning_crescent_moon: {
+    keywords: [ "nature", "twilight", "planet", "space", "night", "evening", "sleep" ],
+    "char": "\ud83c\udf18",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  new_moon: {
+    keywords: [ "nature", "twilight", "planet", "space", "night", "evening", "sleep" ],
+    "char": "\ud83c\udf11",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  waxing_crescent_moon: {
+    keywords: [ "nature", "twilight", "planet", "space", "night", "evening", "sleep" ],
+    "char": "\ud83c\udf12",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  first_quarter_moon: {
+    keywords: [ "nature", "twilight", "planet", "space", "night", "evening", "sleep" ],
+    "char": "\ud83c\udf13",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  waxing_gibbous_moon: {
+    keywords: [ "nature", "night", "sky", "gray", "twilight", "planet", "space", "evening", "sleep" ],
+    "char": "\ud83c\udf14",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  new_moon_with_face: {
+    keywords: [ "nature", "twilight", "planet", "space", "night", "evening", "sleep" ],
+    "char": "\ud83c\udf1a",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  full_moon_with_face: {
+    keywords: [ "nature", "twilight", "planet", "space", "night", "evening", "sleep" ],
+    "char": "\ud83c\udf1d",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  first_quarter_moon_with_face: {
+    keywords: [ "nature", "twilight", "planet", "space", "night", "evening", "sleep" ],
+    "char": "\ud83c\udf1b",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  last_quarter_moon_with_face: {
+    keywords: [ "nature", "twilight", "planet", "space", "night", "evening", "sleep" ],
+    "char": "\ud83c\udf1c",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  sun_with_face: {
+    keywords: [ "nature", "morning", "sky" ],
+    "char": "\ud83c\udf1e",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  crescent_moon: {
+    keywords: [ "night", "sleep", "sky", "evening", "magic" ],
+    "char": "\ud83c\udf19",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  star: {
+    keywords: [ "night", "yellow" ],
+    "char": "\u2b50",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  star2: {
+    keywords: [ "night", "sparkle", "awesome", "good", "magic" ],
+    "char": "\ud83c\udf1f",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  dizzy: {
+    keywords: [ "star", "sparkle", "shoot", "magic" ],
+    "char": "\ud83d\udcab",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  sparkles: {
+    keywords: [ "stars", "shine", "shiny", "cool", "awesome", "good", "magic" ],
+    "char": "\u2728",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  comet: {
+    keywords: [ "space" ],
+    "char": "\u2604",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  sunny: {
+    keywords: [ "weather", "nature", "brightness", "summer", "beach", "spring" ],
+    "char": "\u2600\ufe0f",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  sun_behind_small_cloud: {
+    keywords: [ "weather" ],
+    "char": "\ud83c\udf24",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  partly_sunny: {
+    keywords: [ "weather", "nature", "cloudy", "morning", "fall", "spring" ],
+    "char": "\u26c5",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  sun_behind_large_cloud: {
+    keywords: [ "weather" ],
+    "char": "\ud83c\udf25",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  sun_behind_rain_cloud: {
+    keywords: [ "weather" ],
+    "char": "\ud83c\udf26",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  cloud: {
+    keywords: [ "weather", "sky" ],
+    "char": "\u2601\ufe0f",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  cloud_with_rain: {
+    keywords: [ "weather" ],
+    "char": "\ud83c\udf27",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  cloud_with_lightning_and_rain: {
+    keywords: [ "weather", "lightning" ],
+    "char": "\u26c8",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  cloud_with_lightning: {
+    keywords: [ "weather", "thunder" ],
+    "char": "\ud83c\udf29",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  zap: {
+    keywords: [ "thunder", "weather", "lightning bolt", "fast" ],
+    "char": "\u26a1",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  fire: {
+    keywords: [ "hot", "cook", "flame" ],
+    "char": "\ud83d\udd25",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  boom: {
+    keywords: [ "bomb", "explode", "explosion", "collision", "blown" ],
+    "char": "\ud83d\udca5",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  snowflake: {
+    keywords: [ "winter", "season", "cold", "weather", "christmas", "xmas" ],
+    "char": "\u2744\ufe0f",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  cloud_with_snow: {
+    keywords: [ "weather" ],
+    "char": "\ud83c\udf28",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  snowman: {
+    keywords: [ "winter", "season", "cold", "weather", "christmas", "xmas", "frozen", "without_snow" ],
+    "char": "\u26c4",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  snowman_with_snow: {
+    keywords: [ "winter", "season", "cold", "weather", "christmas", "xmas", "frozen" ],
+    "char": "\u2603",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  wind_face: {
+    keywords: [ "gust", "air" ],
+    "char": "\ud83c\udf2c",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  dash: {
+    keywords: [ "wind", "air", "fast", "shoo", "fart", "smoke", "puff" ],
+    "char": "\ud83d\udca8",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  tornado: {
+    keywords: [ "weather", "cyclone", "twister" ],
+    "char": "\ud83c\udf2a",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  fog: {
+    keywords: [ "weather" ],
+    "char": "\ud83c\udf2b",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  open_umbrella: {
+    keywords: [ "weather", "spring" ],
+    "char": "\u2602",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  umbrella: {
+    keywords: [ "rainy", "weather", "spring" ],
+    "char": "\u2614",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  droplet: {
+    keywords: [ "water", "drip", "faucet", "spring" ],
+    "char": "\ud83d\udca7",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  sweat_drops: {
+    keywords: [ "water", "drip", "oops" ],
+    "char": "\ud83d\udca6",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  ocean: {
+    keywords: [ "sea", "water", "wave", "nature", "tsunami", "disaster" ],
+    "char": "\ud83c\udf0a",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  green_apple: {
+    keywords: [ "fruit", "nature" ],
+    "char": "\ud83c\udf4f",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  apple: {
+    keywords: [ "fruit", "mac", "school" ],
+    "char": "\ud83c\udf4e",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  pear: {
+    keywords: [ "fruit", "nature", "food" ],
+    "char": "\ud83c\udf50",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  tangerine: {
+    keywords: [ "food", "fruit", "nature", "orange" ],
+    "char": "\ud83c\udf4a",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  lemon: {
+    keywords: [ "fruit", "nature" ],
+    "char": "\ud83c\udf4b",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  banana: {
+    keywords: [ "fruit", "food", "monkey" ],
+    "char": "\ud83c\udf4c",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  watermelon: {
+    keywords: [ "fruit", "food", "picnic", "summer" ],
+    "char": "\ud83c\udf49",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  grapes: {
+    keywords: [ "fruit", "food", "wine" ],
+    "char": "\ud83c\udf47",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  strawberry: {
+    keywords: [ "fruit", "food", "nature" ],
+    "char": "\ud83c\udf53",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  melon: {
+    keywords: [ "fruit", "nature", "food" ],
+    "char": "\ud83c\udf48",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  cherries: {
+    keywords: [ "food", "fruit" ],
+    "char": "\ud83c\udf52",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  peach: {
+    keywords: [ "fruit", "nature", "food" ],
+    "char": "\ud83c\udf51",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  pineapple: {
+    keywords: [ "fruit", "nature", "food" ],
+    "char": "\ud83c\udf4d",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  coconut: {
+    keywords: [ "fruit", "nature", "food", "palm" ],
+    "char": "\ud83e\udd65",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  kiwi_fruit: {
+    keywords: [ "fruit", "food" ],
+    "char": "\ud83e\udd5d",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  avocado: {
+    keywords: [ "fruit", "food" ],
+    "char": "\ud83e\udd51",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  broccoli: {
+    keywords: [ "fruit", "food", "vegetable" ],
+    "char": "\ud83e\udd66",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  tomato: {
+    keywords: [ "fruit", "vegetable", "nature", "food" ],
+    "char": "\ud83c\udf45",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  eggplant: {
+    keywords: [ "vegetable", "nature", "food", "aubergine" ],
+    "char": "\ud83c\udf46",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  cucumber: {
+    keywords: [ "fruit", "food", "pickle" ],
+    "char": "\ud83e\udd52",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  carrot: {
+    keywords: [ "vegetable", "food", "orange" ],
+    "char": "\ud83e\udd55",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  hot_pepper: {
+    keywords: [ "food", "spicy", "chilli", "chili" ],
+    "char": "\ud83c\udf36",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  potato: {
+    keywords: [ "food", "tuber", "vegatable", "starch" ],
+    "char": "\ud83e\udd54",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  corn: {
+    keywords: [ "food", "vegetable", "plant" ],
+    "char": "\ud83c\udf3d",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  sweet_potato: {
+    keywords: [ "food", "nature" ],
+    "char": "\ud83c\udf60",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  peanuts: {
+    keywords: [ "food", "nut" ],
+    "char": "\ud83e\udd5c",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  honey_pot: {
+    keywords: [ "bees", "sweet", "kitchen" ],
+    "char": "\ud83c\udf6f",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  croissant: {
+    keywords: [ "food", "bread", "french" ],
+    "char": "\ud83e\udd50",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  bread: {
+    keywords: [ "food", "wheat", "breakfast", "toast" ],
+    "char": "\ud83c\udf5e",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  baguette_bread: {
+    keywords: [ "food", "bread", "french" ],
+    "char": "\ud83e\udd56",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  pretzel: {
+    keywords: [ "food", "bread", "twisted" ],
+    "char": "\ud83e\udd68",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  cheese: {
+    keywords: [ "food", "chadder" ],
+    "char": "\ud83e\uddc0",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  egg: {
+    keywords: [ "food", "chicken", "breakfast" ],
+    "char": "\ud83e\udd5a",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  bacon: {
+    keywords: [ "food", "breakfast", "pork", "pig", "meat" ],
+    "char": "\ud83e\udd53",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  steak: {
+    keywords: [ "food", "cow", "meat", "cut", "chop", "lambchop", "porkchop" ],
+    "char": "\ud83e\udd69",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  pancakes: {
+    keywords: [ "food", "breakfast", "flapjacks", "hotcakes" ],
+    "char": "\ud83e\udd5e",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  poultry_leg: {
+    keywords: [ "food", "meat", "drumstick", "bird", "chicken", "turkey" ],
+    "char": "\ud83c\udf57",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  meat_on_bone: {
+    keywords: [ "good", "food", "drumstick" ],
+    "char": "\ud83c\udf56",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  fried_shrimp: {
+    keywords: [ "food", "animal", "appetizer", "summer" ],
+    "char": "\ud83c\udf64",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  fried_egg: {
+    keywords: [ "food", "breakfast", "kitchen", "egg" ],
+    "char": "\ud83c\udf73",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  hamburger: {
+    keywords: [ "meat", "fast food", "beef", "cheeseburger", "mcdonalds", "burger king" ],
+    "char": "\ud83c\udf54",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  fries: {
+    keywords: [ "chips", "snack", "fast food" ],
+    "char": "\ud83c\udf5f",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  stuffed_flatbread: {
+    keywords: [ "food", "flatbread", "stuffed", "gyro" ],
+    "char": "\ud83e\udd59",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  hotdog: {
+    keywords: [ "food", "frankfurter" ],
+    "char": "\ud83c\udf2d",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  pizza: {
+    keywords: [ "food", "party" ],
+    "char": "\ud83c\udf55",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  sandwich: {
+    keywords: [ "food", "lunch", "bread" ],
+    "char": "\ud83e\udd6a",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  canned_food: {
+    keywords: [ "food", "soup" ],
+    "char": "\ud83e\udd6b",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  spaghetti: {
+    keywords: [ "food", "italian", "noodle" ],
+    "char": "\ud83c\udf5d",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  taco: {
+    keywords: [ "food", "mexican" ],
+    "char": "\ud83c\udf2e",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  burrito: {
+    keywords: [ "food", "mexican" ],
+    "char": "\ud83c\udf2f",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  green_salad: {
+    keywords: [ "food", "healthy", "lettuce" ],
+    "char": "\ud83e\udd57",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  shallow_pan_of_food: {
+    keywords: [ "food", "cooking", "casserole", "paella" ],
+    "char": "\ud83e\udd58",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  ramen: {
+    keywords: [ "food", "japanese", "noodle", "chopsticks" ],
+    "char": "\ud83c\udf5c",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  stew: {
+    keywords: [ "food", "meat", "soup" ],
+    "char": "\ud83c\udf72",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  fish_cake: {
+    keywords: [ "food", "japan", "sea", "beach", "narutomaki", "pink", "swirl", "kamaboko", "surimi", "ramen" ],
+    "char": "\ud83c\udf65",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  fortune_cookie: {
+    keywords: [ "food", "prophecy" ],
+    "char": "\ud83e\udd60",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  sushi: {
+    keywords: [ "food", "fish", "japanese", "rice" ],
+    "char": "\ud83c\udf63",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  bento: {
+    keywords: [ "food", "japanese", "box" ],
+    "char": "\ud83c\udf71",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  curry: {
+    keywords: [ "food", "spicy", "hot", "indian" ],
+    "char": "\ud83c\udf5b",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  rice_ball: {
+    keywords: [ "food", "japanese" ],
+    "char": "\ud83c\udf59",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  rice: {
+    keywords: [ "food", "china", "asian" ],
+    "char": "\ud83c\udf5a",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  rice_cracker: {
+    keywords: [ "food", "japanese" ],
+    "char": "\ud83c\udf58",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  oden: {
+    keywords: [ "food", "japanese" ],
+    "char": "\ud83c\udf62",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  dango: {
+    keywords: [ "food", "dessert", "sweet", "japanese", "barbecue", "meat" ],
+    "char": "\ud83c\udf61",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  shaved_ice: {
+    keywords: [ "hot", "dessert", "summer" ],
+    "char": "\ud83c\udf67",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  ice_cream: {
+    keywords: [ "food", "hot", "dessert" ],
+    "char": "\ud83c\udf68",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  icecream: {
+    keywords: [ "food", "hot", "dessert", "summer" ],
+    "char": "\ud83c\udf66",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  pie: {
+    keywords: [ "food", "dessert", "pastry" ],
+    "char": "\ud83e\udd67",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  cake: {
+    keywords: [ "food", "dessert" ],
+    "char": "\ud83c\udf70",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  birthday: {
+    keywords: [ "food", "dessert", "cake" ],
+    "char": "\ud83c\udf82",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  custard: {
+    keywords: [ "dessert", "food" ],
+    "char": "\ud83c\udf6e",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  candy: {
+    keywords: [ "snack", "dessert", "sweet", "lolly" ],
+    "char": "\ud83c\udf6c",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  lollipop: {
+    keywords: [ "food", "snack", "candy", "sweet" ],
+    "char": "\ud83c\udf6d",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  chocolate_bar: {
+    keywords: [ "food", "snack", "dessert", "sweet" ],
+    "char": "\ud83c\udf6b",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  popcorn: {
+    keywords: [ "food", "movie theater", "films", "snack" ],
+    "char": "\ud83c\udf7f",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  dumpling: {
+    keywords: [ "food", "empanada", "pierogi", "potsticker" ],
+    "char": "\ud83e\udd5f",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  doughnut: {
+    keywords: [ "food", "dessert", "snack", "sweet", "donut" ],
+    "char": "\ud83c\udf69",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  cookie: {
+    keywords: [ "food", "snack", "oreo", "chocolate", "sweet", "dessert" ],
+    "char": "\ud83c\udf6a",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  milk_glass: {
+    keywords: [ "beverage", "drink", "cow" ],
+    "char": "\ud83e\udd5b",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  beer: {
+    keywords: [ "relax", "beverage", "drink", "drunk", "party", "pub", "summer", "alcohol", "booze" ],
+    "char": "\ud83c\udf7a",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  beers: {
+    keywords: [ "relax", "beverage", "drink", "drunk", "party", "pub", "summer", "alcohol", "booze" ],
+    "char": "\ud83c\udf7b",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  clinking_glasses: {
+    keywords: [ "beverage", "drink", "party", "alcohol", "celebrate", "cheers", "wine", "champagne", "toast" ],
+    "char": "\ud83e\udd42",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  wine_glass: {
+    keywords: [ "drink", "beverage", "drunk", "alcohol", "booze" ],
+    "char": "\ud83c\udf77",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  tumbler_glass: {
+    keywords: [ "drink", "beverage", "drunk", "alcohol", "liquor", "booze", "bourbon", "scotch", "whisky", "glass", "shot" ],
+    "char": "\ud83e\udd43",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  cocktail: {
+    keywords: [ "drink", "drunk", "alcohol", "beverage", "booze", "mojito" ],
+    "char": "\ud83c\udf78",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  tropical_drink: {
+    keywords: [ "beverage", "cocktail", "summer", "beach", "alcohol", "booze", "mojito" ],
+    "char": "\ud83c\udf79",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  champagne: {
+    keywords: [ "drink", "wine", "bottle", "celebration" ],
+    "char": "\ud83c\udf7e",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  sake: {
+    keywords: [ "wine", "drink", "drunk", "beverage", "japanese", "alcohol", "booze" ],
+    "char": "\ud83c\udf76",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  tea: {
+    keywords: [ "drink", "bowl", "breakfast", "green", "british" ],
+    "char": "\ud83c\udf75",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  cup_with_straw: {
+    keywords: [ "drink", "soda" ],
+    "char": "\ud83e\udd64",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  coffee: {
+    keywords: [ "beverage", "caffeine", "latte", "espresso" ],
+    "char": "\u2615",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  baby_bottle: {
+    keywords: [ "food", "container", "milk" ],
+    "char": "\ud83c\udf7c",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  spoon: {
+    keywords: [ "cutlery", "kitchen", "tableware" ],
+    "char": "\ud83e\udd44",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  fork_and_knife: {
+    keywords: [ "cutlery", "kitchen" ],
+    "char": "\ud83c\udf74",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  plate_with_cutlery: {
+    keywords: [ "food", "eat", "meal", "lunch", "dinner", "restaurant" ],
+    "char": "\ud83c\udf7d",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  bowl_with_spoon: {
+    keywords: [ "food", "breakfast", "cereal", "oatmeal", "porridge" ],
+    "char": "\ud83e\udd63",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  takeout_box: {
+    keywords: [ "food", "leftovers" ],
+    "char": "\ud83e\udd61",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  chopsticks: {
+    keywords: [ "food" ],
+    "char": "\ud83e\udd62",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  soccer: {
+    keywords: [ "sports", "football" ],
+    "char": "\u26bd",
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  basketball: {
+    keywords: [ "sports", "balls", "NBA" ],
+    "char": "\ud83c\udfc0",
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  football: {
+    keywords: [ "sports", "balls", "NFL" ],
+    "char": "\ud83c\udfc8",
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  baseball: {
+    keywords: [ "sports", "balls" ],
+    "char": "\u26be",
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  tennis: {
+    keywords: [ "sports", "balls", "green" ],
+    "char": "\ud83c\udfbe",
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  volleyball: {
+    keywords: [ "sports", "balls" ],
+    "char": "\ud83c\udfd0",
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  rugby_football: {
+    keywords: [ "sports", "team" ],
+    "char": "\ud83c\udfc9",
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  "8ball": {
+    keywords: [ "pool", "hobby", "game", "luck", "magic" ],
+    "char": "\ud83c\udfb1",
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  golf: {
+    keywords: [ "sports", "business", "flag", "hole", "summer" ],
+    "char": "\u26f3",
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  golfing_woman: {
+    keywords: [ "sports", "business", "woman", "female" ],
+    "char": "\ud83c\udfcc\ufe0f\u200d\u2640\ufe0f",
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  golfing_man: {
+    keywords: [ "sports", "business" ],
+    "char": "\ud83c\udfcc",
+    fitzpatrick_scale: true,
+    category: "activity"
+  },
+  ping_pong: {
+    keywords: [ "sports", "pingpong" ],
+    "char": "\ud83c\udfd3",
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  badminton: {
+    keywords: [ "sports" ],
+    "char": "\ud83c\udff8",
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  goal_net: {
+    keywords: [ "sports" ],
+    "char": "\ud83e\udd45",
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  ice_hockey: {
+    keywords: [ "sports" ],
+    "char": "\ud83c\udfd2",
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  field_hockey: {
+    keywords: [ "sports" ],
+    "char": "\ud83c\udfd1",
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  cricket: {
+    keywords: [ "sports" ],
+    "char": "\ud83c\udfcf",
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  ski: {
+    keywords: [ "sports", "winter", "cold", "snow" ],
+    "char": "\ud83c\udfbf",
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  skier: {
+    keywords: [ "sports", "winter", "snow" ],
+    "char": "\u26f7",
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  snowboarder: {
+    keywords: [ "sports", "winter" ],
+    "char": "\ud83c\udfc2",
+    fitzpatrick_scale: true,
+    category: "activity"
+  },
+  person_fencing: {
+    keywords: [ "sports", "fencing", "sword" ],
+    "char": "\ud83e\udd3a",
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  women_wrestling: {
+    keywords: [ "sports", "wrestlers" ],
+    "char": "\ud83e\udd3c\u200d\u2640\ufe0f",
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  men_wrestling: {
+    keywords: [ "sports", "wrestlers" ],
+    "char": "\ud83e\udd3c\u200d\u2642\ufe0f",
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  woman_cartwheeling: {
+    keywords: [ "gymnastics" ],
+    "char": "\ud83e\udd38\u200d\u2640\ufe0f",
+    fitzpatrick_scale: true,
+    category: "activity"
+  },
+  man_cartwheeling: {
+    keywords: [ "gymnastics" ],
+    "char": "\ud83e\udd38\u200d\u2642\ufe0f",
+    fitzpatrick_scale: true,
+    category: "activity"
+  },
+  woman_playing_handball: {
+    keywords: [ "sports" ],
+    "char": "\ud83e\udd3e\u200d\u2640\ufe0f",
+    fitzpatrick_scale: true,
+    category: "activity"
+  },
+  man_playing_handball: {
+    keywords: [ "sports" ],
+    "char": "\ud83e\udd3e\u200d\u2642\ufe0f",
+    fitzpatrick_scale: true,
+    category: "activity"
+  },
+  ice_skate: {
+    keywords: [ "sports" ],
+    "char": "\u26f8",
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  curling_stone: {
+    keywords: [ "sports" ],
+    "char": "\ud83e\udd4c",
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  sled: {
+    keywords: [ "sleigh", "luge", "toboggan" ],
+    "char": "\ud83d\udef7",
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  bow_and_arrow: {
+    keywords: [ "sports" ],
+    "char": "\ud83c\udff9",
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  fishing_pole_and_fish: {
+    keywords: [ "food", "hobby", "summer" ],
+    "char": "\ud83c\udfa3",
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  boxing_glove: {
+    keywords: [ "sports", "fighting" ],
+    "char": "\ud83e\udd4a",
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  martial_arts_uniform: {
+    keywords: [ "judo", "karate", "taekwondo" ],
+    "char": "\ud83e\udd4b",
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  rowing_woman: {
+    keywords: [ "sports", "hobby", "water", "ship", "woman", "female" ],
+    "char": "\ud83d\udea3\u200d\u2640\ufe0f",
+    fitzpatrick_scale: true,
+    category: "activity"
+  },
+  rowing_man: {
+    keywords: [ "sports", "hobby", "water", "ship" ],
+    "char": "\ud83d\udea3",
+    fitzpatrick_scale: true,
+    category: "activity"
+  },
+  climbing_woman: {
+    keywords: [ "sports", "hobby", "woman", "female", "rock" ],
+    "char": "\ud83e\uddd7\u200d\u2640\ufe0f",
+    fitzpatrick_scale: true,
+    category: "activity"
+  },
+  climbing_man: {
+    keywords: [ "sports", "hobby", "man", "male", "rock" ],
+    "char": "\ud83e\uddd7\u200d\u2642\ufe0f",
+    fitzpatrick_scale: true,
+    category: "activity"
+  },
+  swimming_woman: {
+    keywords: [ "sports", "exercise", "human", "athlete", "water", "summer", "woman", "female" ],
+    "char": "\ud83c\udfca\u200d\u2640\ufe0f",
+    fitzpatrick_scale: true,
+    category: "activity"
+  },
+  swimming_man: {
+    keywords: [ "sports", "exercise", "human", "athlete", "water", "summer" ],
+    "char": "\ud83c\udfca",
+    fitzpatrick_scale: true,
+    category: "activity"
+  },
+  woman_playing_water_polo: {
+    keywords: [ "sports", "pool" ],
+    "char": "\ud83e\udd3d\u200d\u2640\ufe0f",
+    fitzpatrick_scale: true,
+    category: "activity"
+  },
+  man_playing_water_polo: {
+    keywords: [ "sports", "pool" ],
+    "char": "\ud83e\udd3d\u200d\u2642\ufe0f",
+    fitzpatrick_scale: true,
+    category: "activity"
+  },
+  woman_in_lotus_position: {
+    keywords: [ "woman", "female", "meditation", "yoga", "serenity", "zen", "mindfulness" ],
+    "char": "\ud83e\uddd8\u200d\u2640\ufe0f",
+    fitzpatrick_scale: true,
+    category: "activity"
+  },
+  man_in_lotus_position: {
+    keywords: [ "man", "male", "meditation", "yoga", "serenity", "zen", "mindfulness" ],
+    "char": "\ud83e\uddd8\u200d\u2642\ufe0f",
+    fitzpatrick_scale: true,
+    category: "activity"
+  },
+  surfing_woman: {
+    keywords: [ "sports", "ocean", "sea", "summer", "beach", "woman", "female" ],
+    "char": "\ud83c\udfc4\u200d\u2640\ufe0f",
+    fitzpatrick_scale: true,
+    category: "activity"
+  },
+  surfing_man: {
+    keywords: [ "sports", "ocean", "sea", "summer", "beach" ],
+    "char": "\ud83c\udfc4",
+    fitzpatrick_scale: true,
+    category: "activity"
+  },
+  bath: {
+    keywords: [ "clean", "shower", "bathroom" ],
+    "char": "\ud83d\udec0",
+    fitzpatrick_scale: true,
+    category: "activity"
+  },
+  basketball_woman: {
+    keywords: [ "sports", "human", "woman", "female" ],
+    "char": "\u26f9\ufe0f\u200d\u2640\ufe0f",
+    fitzpatrick_scale: true,
+    category: "activity"
+  },
+  basketball_man: {
+    keywords: [ "sports", "human" ],
+    "char": "\u26f9",
+    fitzpatrick_scale: true,
+    category: "activity"
+  },
+  weight_lifting_woman: {
+    keywords: [ "sports", "training", "exercise", "woman", "female" ],
+    "char": "\ud83c\udfcb\ufe0f\u200d\u2640\ufe0f",
+    fitzpatrick_scale: true,
+    category: "activity"
+  },
+  weight_lifting_man: {
+    keywords: [ "sports", "training", "exercise" ],
+    "char": "\ud83c\udfcb",
+    fitzpatrick_scale: true,
+    category: "activity"
+  },
+  biking_woman: {
+    keywords: [ "sports", "bike", "exercise", "hipster", "woman", "female" ],
+    "char": "\ud83d\udeb4\u200d\u2640\ufe0f",
+    fitzpatrick_scale: true,
+    category: "activity"
+  },
+  biking_man: {
+    keywords: [ "sports", "bike", "exercise", "hipster" ],
+    "char": "\ud83d\udeb4",
+    fitzpatrick_scale: true,
+    category: "activity"
+  },
+  mountain_biking_woman: {
+    keywords: [ "transportation", "sports", "human", "race", "bike", "woman", "female" ],
+    "char": "\ud83d\udeb5\u200d\u2640\ufe0f",
+    fitzpatrick_scale: true,
+    category: "activity"
+  },
+  mountain_biking_man: {
+    keywords: [ "transportation", "sports", "human", "race", "bike" ],
+    "char": "\ud83d\udeb5",
+    fitzpatrick_scale: true,
+    category: "activity"
+  },
+  horse_racing: {
+    keywords: [ "animal", "betting", "competition", "gambling", "luck" ],
+    "char": "\ud83c\udfc7",
+    fitzpatrick_scale: true,
+    category: "activity"
+  },
+  business_suit_levitating: {
+    keywords: [ "suit", "business", "levitate", "hover", "jump" ],
+    "char": "\ud83d\udd74",
+    fitzpatrick_scale: true,
+    category: "activity"
+  },
+  trophy: {
+    keywords: [ "win", "award", "contest", "place", "ftw", "ceremony" ],
+    "char": "\ud83c\udfc6",
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  running_shirt_with_sash: {
+    keywords: [ "play", "pageant" ],
+    "char": "\ud83c\udfbd",
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  medal_sports: {
+    keywords: [ "award", "winning" ],
+    "char": "\ud83c\udfc5",
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  medal_military: {
+    keywords: [ "award", "winning", "army" ],
+    "char": "\ud83c\udf96",
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  "1st_place_medal": {
+    keywords: [ "award", "winning", "first" ],
+    "char": "\ud83e\udd47",
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  "2nd_place_medal": {
+    keywords: [ "award", "second" ],
+    "char": "\ud83e\udd48",
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  "3rd_place_medal": {
+    keywords: [ "award", "third" ],
+    "char": "\ud83e\udd49",
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  reminder_ribbon: {
+    keywords: [ "sports", "cause", "support", "awareness" ],
+    "char": "\ud83c\udf97",
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  rosette: {
+    keywords: [ "flower", "decoration", "military" ],
+    "char": "\ud83c\udff5",
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  ticket: {
+    keywords: [ "event", "concert", "pass" ],
+    "char": "\ud83c\udfab",
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  tickets: {
+    keywords: [ "sports", "concert", "entrance" ],
+    "char": "\ud83c\udf9f",
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  performing_arts: {
+    keywords: [ "acting", "theater", "drama" ],
+    "char": "\ud83c\udfad",
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  art: {
+    keywords: [ "design", "paint", "draw", "colors" ],
+    "char": "\ud83c\udfa8",
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  circus_tent: {
+    keywords: [ "festival", "carnival", "party" ],
+    "char": "\ud83c\udfaa",
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  woman_juggling: {
+    keywords: [ "juggle", "balance", "skill", "multitask" ],
+    "char": "\ud83e\udd39\u200d\u2640\ufe0f",
+    fitzpatrick_scale: true,
+    category: "activity"
+  },
+  man_juggling: {
+    keywords: [ "juggle", "balance", "skill", "multitask" ],
+    "char": "\ud83e\udd39\u200d\u2642\ufe0f",
+    fitzpatrick_scale: true,
+    category: "activity"
+  },
+  microphone: {
+    keywords: [ "sound", "music", "PA", "sing", "talkshow" ],
+    "char": "\ud83c\udfa4",
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  headphones: {
+    keywords: [ "music", "score", "gadgets" ],
+    "char": "\ud83c\udfa7",
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  musical_score: {
+    keywords: [ "treble", "clef", "compose" ],
+    "char": "\ud83c\udfbc",
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  musical_keyboard: {
+    keywords: [ "piano", "instrument", "compose" ],
+    "char": "\ud83c\udfb9",
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  drum: {
+    keywords: [ "music", "instrument", "drumsticks", "snare" ],
+    "char": "\ud83e\udd41",
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  saxophone: {
+    keywords: [ "music", "instrument", "jazz", "blues" ],
+    "char": "\ud83c\udfb7",
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  trumpet: {
+    keywords: [ "music", "brass" ],
+    "char": "\ud83c\udfba",
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  guitar: {
+    keywords: [ "music", "instrument" ],
+    "char": "\ud83c\udfb8",
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  violin: {
+    keywords: [ "music", "instrument", "orchestra", "symphony" ],
+    "char": "\ud83c\udfbb",
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  clapper: {
+    keywords: [ "movie", "film", "record" ],
+    "char": "\ud83c\udfac",
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  video_game: {
+    keywords: [ "play", "console", "PS4", "controller" ],
+    "char": "\ud83c\udfae",
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  space_invader: {
+    keywords: [ "game", "arcade", "play" ],
+    "char": "\ud83d\udc7e",
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  dart: {
+    keywords: [ "game", "play", "bar", "target", "bullseye" ],
+    "char": "\ud83c\udfaf",
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  game_die: {
+    keywords: [ "dice", "random", "tabletop", "play", "luck" ],
+    "char": "\ud83c\udfb2",
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  slot_machine: {
+    keywords: [ "bet", "gamble", "vegas", "fruit machine", "luck", "casino" ],
+    "char": "\ud83c\udfb0",
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  bowling: {
+    keywords: [ "sports", "fun", "play" ],
+    "char": "\ud83c\udfb3",
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  red_car: {
+    keywords: [ "red", "transportation", "vehicle" ],
+    "char": "\ud83d\ude97",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  taxi: {
+    keywords: [ "uber", "vehicle", "cars", "transportation" ],
+    "char": "\ud83d\ude95",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  blue_car: {
+    keywords: [ "transportation", "vehicle" ],
+    "char": "\ud83d\ude99",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  bus: {
+    keywords: [ "car", "vehicle", "transportation" ],
+    "char": "\ud83d\ude8c",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  trolleybus: {
+    keywords: [ "bart", "transportation", "vehicle" ],
+    "char": "\ud83d\ude8e",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  racing_car: {
+    keywords: [ "sports", "race", "fast", "formula", "f1" ],
+    "char": "\ud83c\udfce",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  police_car: {
+    keywords: [ "vehicle", "cars", "transportation", "law", "legal", "enforcement" ],
+    "char": "\ud83d\ude93",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  ambulance: {
+    keywords: [ "health", "911", "hospital" ],
+    "char": "\ud83d\ude91",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  fire_engine: {
+    keywords: [ "transportation", "cars", "vehicle" ],
+    "char": "\ud83d\ude92",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  minibus: {
+    keywords: [ "vehicle", "car", "transportation" ],
+    "char": "\ud83d\ude90",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  truck: {
+    keywords: [ "cars", "transportation" ],
+    "char": "\ud83d\ude9a",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  articulated_lorry: {
+    keywords: [ "vehicle", "cars", "transportation", "express" ],
+    "char": "\ud83d\ude9b",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  tractor: {
+    keywords: [ "vehicle", "car", "farming", "agriculture" ],
+    "char": "\ud83d\ude9c",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  kick_scooter: {
+    keywords: [ "vehicle", "kick", "razor" ],
+    "char": "\ud83d\udef4",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  motorcycle: {
+    keywords: [ "race", "sports", "fast" ],
+    "char": "\ud83c\udfcd",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  bike: {
+    keywords: [ "sports", "bicycle", "exercise", "hipster" ],
+    "char": "\ud83d\udeb2",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  motor_scooter: {
+    keywords: [ "vehicle", "vespa", "sasha" ],
+    "char": "\ud83d\udef5",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  rotating_light: {
+    keywords: [ "police", "ambulance", "911", "emergency", "alert", "error", "pinged", "law", "legal" ],
+    "char": "\ud83d\udea8",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  oncoming_police_car: {
+    keywords: [ "vehicle", "law", "legal", "enforcement", "911" ],
+    "char": "\ud83d\ude94",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  oncoming_bus: {
+    keywords: [ "vehicle", "transportation" ],
+    "char": "\ud83d\ude8d",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  oncoming_automobile: {
+    keywords: [ "car", "vehicle", "transportation" ],
+    "char": "\ud83d\ude98",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  oncoming_taxi: {
+    keywords: [ "vehicle", "cars", "uber" ],
+    "char": "\ud83d\ude96",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  aerial_tramway: {
+    keywords: [ "transportation", "vehicle", "ski" ],
+    "char": "\ud83d\udea1",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  mountain_cableway: {
+    keywords: [ "transportation", "vehicle", "ski" ],
+    "char": "\ud83d\udea0",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  suspension_railway: {
+    keywords: [ "vehicle", "transportation" ],
+    "char": "\ud83d\ude9f",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  railway_car: {
+    keywords: [ "transportation", "vehicle" ],
+    "char": "\ud83d\ude83",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  train: {
+    keywords: [ "transportation", "vehicle", "carriage", "public", "travel" ],
+    "char": "\ud83d\ude8b",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  monorail: {
+    keywords: [ "transportation", "vehicle" ],
+    "char": "\ud83d\ude9d",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  bullettrain_side: {
+    keywords: [ "transportation", "vehicle" ],
+    "char": "\ud83d\ude84",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  bullettrain_front: {
+    keywords: [ "transportation", "vehicle", "speed", "fast", "public", "travel" ],
+    "char": "\ud83d\ude85",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  light_rail: {
+    keywords: [ "transportation", "vehicle" ],
+    "char": "\ud83d\ude88",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  mountain_railway: {
+    keywords: [ "transportation", "vehicle" ],
+    "char": "\ud83d\ude9e",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  steam_locomotive: {
+    keywords: [ "transportation", "vehicle", "train" ],
+    "char": "\ud83d\ude82",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  train2: {
+    keywords: [ "transportation", "vehicle" ],
+    "char": "\ud83d\ude86",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  metro: {
+    keywords: [ "transportation", "blue-square", "mrt", "underground", "tube" ],
+    "char": "\ud83d\ude87",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  tram: {
+    keywords: [ "transportation", "vehicle" ],
+    "char": "\ud83d\ude8a",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  station: {
+    keywords: [ "transportation", "vehicle", "public" ],
+    "char": "\ud83d\ude89",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  flying_saucer: {
+    keywords: [ "transportation", "vehicle", "ufo" ],
+    "char": "\ud83d\udef8",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  helicopter: {
+    keywords: [ "transportation", "vehicle", "fly" ],
+    "char": "\ud83d\ude81",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  small_airplane: {
+    keywords: [ "flight", "transportation", "fly", "vehicle" ],
+    "char": "\ud83d\udee9",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  airplane: {
+    keywords: [ "vehicle", "transportation", "flight", "fly" ],
+    "char": "\u2708\ufe0f",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  flight_departure: {
+    keywords: [ "airport", "flight", "landing" ],
+    "char": "\ud83d\udeeb",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  flight_arrival: {
+    keywords: [ "airport", "flight", "boarding" ],
+    "char": "\ud83d\udeec",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  sailboat: {
+    keywords: [ "ship", "summer", "transportation", "water", "sailing" ],
+    "char": "\u26f5",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  motor_boat: {
+    keywords: [ "ship" ],
+    "char": "\ud83d\udee5",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  speedboat: {
+    keywords: [ "ship", "transportation", "vehicle", "summer" ],
+    "char": "\ud83d\udea4",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  ferry: {
+    keywords: [ "boat", "ship", "yacht" ],
+    "char": "\u26f4",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  passenger_ship: {
+    keywords: [ "yacht", "cruise", "ferry" ],
+    "char": "\ud83d\udef3",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  rocket: {
+    keywords: [ "launch", "ship", "staffmode", "NASA", "outer space", "outer_space", "fly" ],
+    "char": "\ud83d\ude80",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  artificial_satellite: {
+    keywords: [ "communication", "gps", "orbit", "spaceflight", "NASA", "ISS" ],
+    "char": "\ud83d\udef0",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  seat: {
+    keywords: [ "sit", "airplane", "transport", "bus", "flight", "fly" ],
+    "char": "\ud83d\udcba",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  canoe: {
+    keywords: [ "boat", "paddle", "water", "ship" ],
+    "char": "\ud83d\udef6",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  anchor: {
+    keywords: [ "ship", "ferry", "sea", "boat" ],
+    "char": "\u2693",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  construction: {
+    keywords: [ "wip", "progress", "caution", "warning" ],
+    "char": "\ud83d\udea7",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  fuelpump: {
+    keywords: [ "gas station", "petroleum" ],
+    "char": "\u26fd",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  busstop: {
+    keywords: [ "transportation", "wait" ],
+    "char": "\ud83d\ude8f",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  vertical_traffic_light: {
+    keywords: [ "transportation", "driving" ],
+    "char": "\ud83d\udea6",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  traffic_light: {
+    keywords: [ "transportation", "signal" ],
+    "char": "\ud83d\udea5",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  checkered_flag: {
+    keywords: [ "contest", "finishline", "race", "gokart" ],
+    "char": "\ud83c\udfc1",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  ship: {
+    keywords: [ "transportation", "titanic", "deploy" ],
+    "char": "\ud83d\udea2",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  ferris_wheel: {
+    keywords: [ "photo", "carnival", "londoneye" ],
+    "char": "\ud83c\udfa1",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  roller_coaster: {
+    keywords: [ "carnival", "playground", "photo", "fun" ],
+    "char": "\ud83c\udfa2",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  carousel_horse: {
+    keywords: [ "photo", "carnival" ],
+    "char": "\ud83c\udfa0",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  building_construction: {
+    keywords: [ "wip", "working", "progress" ],
+    "char": "\ud83c\udfd7",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  foggy: {
+    keywords: [ "photo", "mountain" ],
+    "char": "\ud83c\udf01",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  tokyo_tower: {
+    keywords: [ "photo", "japanese" ],
+    "char": "\ud83d\uddfc",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  factory: {
+    keywords: [ "building", "industry", "pollution", "smoke" ],
+    "char": "\ud83c\udfed",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  fountain: {
+    keywords: [ "photo", "summer", "water", "fresh" ],
+    "char": "\u26f2",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  rice_scene: {
+    keywords: [ "photo", "japan", "asia", "tsukimi" ],
+    "char": "\ud83c\udf91",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  mountain: {
+    keywords: [ "photo", "nature", "environment" ],
+    "char": "\u26f0",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  mountain_snow: {
+    keywords: [ "photo", "nature", "environment", "winter", "cold" ],
+    "char": "\ud83c\udfd4",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  mount_fuji: {
+    keywords: [ "photo", "mountain", "nature", "japanese" ],
+    "char": "\ud83d\uddfb",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  volcano: {
+    keywords: [ "photo", "nature", "disaster" ],
+    "char": "\ud83c\udf0b",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  japan: {
+    keywords: [ "nation", "country", "japanese", "asia" ],
+    "char": "\ud83d\uddfe",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  camping: {
+    keywords: [ "photo", "outdoors", "tent" ],
+    "char": "\ud83c\udfd5",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  tent: {
+    keywords: [ "photo", "camping", "outdoors" ],
+    "char": "\u26fa",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  national_park: {
+    keywords: [ "photo", "environment", "nature" ],
+    "char": "\ud83c\udfde",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  motorway: {
+    keywords: [ "road", "cupertino", "interstate", "highway" ],
+    "char": "\ud83d\udee3",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  railway_track: {
+    keywords: [ "train", "transportation" ],
+    "char": "\ud83d\udee4",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  sunrise: {
+    keywords: [ "morning", "view", "vacation", "photo" ],
+    "char": "\ud83c\udf05",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  sunrise_over_mountains: {
+    keywords: [ "view", "vacation", "photo" ],
+    "char": "\ud83c\udf04",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  desert: {
+    keywords: [ "photo", "warm", "saharah" ],
+    "char": "\ud83c\udfdc",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  beach_umbrella: {
+    keywords: [ "weather", "summer", "sunny", "sand", "mojito" ],
+    "char": "\ud83c\udfd6",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  desert_island: {
+    keywords: [ "photo", "tropical", "mojito" ],
+    "char": "\ud83c\udfdd",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  city_sunrise: {
+    keywords: [ "photo", "good morning", "dawn" ],
+    "char": "\ud83c\udf07",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  city_sunset: {
+    keywords: [ "photo", "evening", "sky", "buildings" ],
+    "char": "\ud83c\udf06",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  cityscape: {
+    keywords: [ "photo", "night life", "urban" ],
+    "char": "\ud83c\udfd9",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  night_with_stars: {
+    keywords: [ "evening", "city", "downtown" ],
+    "char": "\ud83c\udf03",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  bridge_at_night: {
+    keywords: [ "photo", "sanfrancisco" ],
+    "char": "\ud83c\udf09",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  milky_way: {
+    keywords: [ "photo", "space", "stars" ],
+    "char": "\ud83c\udf0c",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  stars: {
+    keywords: [ "night", "photo" ],
+    "char": "\ud83c\udf20",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  sparkler: {
+    keywords: [ "stars", "night", "shine" ],
+    "char": "\ud83c\udf87",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  fireworks: {
+    keywords: [ "photo", "festival", "carnival", "congratulations" ],
+    "char": "\ud83c\udf86",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  rainbow: {
+    keywords: [ "nature", "happy", "unicorn_face", "photo", "sky", "spring" ],
+    "char": "\ud83c\udf08",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  houses: {
+    keywords: [ "buildings", "photo" ],
+    "char": "\ud83c\udfd8",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  european_castle: {
+    keywords: [ "building", "royalty", "history" ],
+    "char": "\ud83c\udff0",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  japanese_castle: {
+    keywords: [ "photo", "building" ],
+    "char": "\ud83c\udfef",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  stadium: {
+    keywords: [ "photo", "place", "sports", "concert", "venue" ],
+    "char": "\ud83c\udfdf",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  statue_of_liberty: {
+    keywords: [ "american", "newyork" ],
+    "char": "\ud83d\uddfd",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  house: {
+    keywords: [ "building", "home" ],
+    "char": "\ud83c\udfe0",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  house_with_garden: {
+    keywords: [ "home", "plant", "nature" ],
+    "char": "\ud83c\udfe1",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  derelict_house: {
+    keywords: [ "abandon", "evict", "broken", "building" ],
+    "char": "\ud83c\udfda",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  office: {
+    keywords: [ "building", "bureau", "work" ],
+    "char": "\ud83c\udfe2",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  department_store: {
+    keywords: [ "building", "shopping", "mall" ],
+    "char": "\ud83c\udfec",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  post_office: {
+    keywords: [ "building", "envelope", "communication" ],
+    "char": "\ud83c\udfe3",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  european_post_office: {
+    keywords: [ "building", "email" ],
+    "char": "\ud83c\udfe4",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  hospital: {
+    keywords: [ "building", "health", "surgery", "doctor" ],
+    "char": "\ud83c\udfe5",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  bank: {
+    keywords: [ "building", "money", "sales", "cash", "business", "enterprise" ],
+    "char": "\ud83c\udfe6",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  hotel: {
+    keywords: [ "building", "accomodation", "checkin" ],
+    "char": "\ud83c\udfe8",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  convenience_store: {
+    keywords: [ "building", "shopping", "groceries" ],
+    "char": "\ud83c\udfea",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  school: {
+    keywords: [ "building", "student", "education", "learn", "teach" ],
+    "char": "\ud83c\udfeb",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  love_hotel: {
+    keywords: [ "like", "affection", "dating" ],
+    "char": "\ud83c\udfe9",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  wedding: {
+    keywords: [ "love", "like", "affection", "couple", "marriage", "bride", "groom" ],
+    "char": "\ud83d\udc92",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  classical_building: {
+    keywords: [ "art", "culture", "history" ],
+    "char": "\ud83c\udfdb",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  church: {
+    keywords: [ "building", "religion", "christ" ],
+    "char": "\u26ea",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  mosque: {
+    keywords: [ "islam", "worship", "minaret" ],
+    "char": "\ud83d\udd4c",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  synagogue: {
+    keywords: [ "judaism", "worship", "temple", "jewish" ],
+    "char": "\ud83d\udd4d",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  kaaba: {
+    keywords: [ "mecca", "mosque", "islam" ],
+    "char": "\ud83d\udd4b",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  shinto_shrine: {
+    keywords: [ "temple", "japan", "kyoto" ],
+    "char": "\u26e9",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  watch: {
+    keywords: [ "time", "accessories" ],
+    "char": "\u231a",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  iphone: {
+    keywords: [ "technology", "apple", "gadgets", "dial" ],
+    "char": "\ud83d\udcf1",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  calling: {
+    keywords: [ "iphone", "incoming" ],
+    "char": "\ud83d\udcf2",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  computer: {
+    keywords: [ "technology", "laptop", "screen", "display", "monitor" ],
+    "char": "\ud83d\udcbb",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  keyboard: {
+    keywords: [ "technology", "computer", "type", "input", "text" ],
+    "char": "\u2328",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  desktop_computer: {
+    keywords: [ "technology", "computing", "screen" ],
+    "char": "\ud83d\udda5",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  printer: {
+    keywords: [ "paper", "ink" ],
+    "char": "\ud83d\udda8",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  computer_mouse: {
+    keywords: [ "click" ],
+    "char": "\ud83d\uddb1",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  trackball: {
+    keywords: [ "technology", "trackpad" ],
+    "char": "\ud83d\uddb2",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  joystick: {
+    keywords: [ "game", "play" ],
+    "char": "\ud83d\udd79",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  clamp: {
+    keywords: [ "tool" ],
+    "char": "\ud83d\udddc",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  minidisc: {
+    keywords: [ "technology", "record", "data", "disk", "90s" ],
+    "char": "\ud83d\udcbd",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  floppy_disk: {
+    keywords: [ "oldschool", "technology", "save", "90s", "80s" ],
+    "char": "\ud83d\udcbe",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  cd: {
+    keywords: [ "technology", "dvd", "disk", "disc", "90s" ],
+    "char": "\ud83d\udcbf",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  dvd: {
+    keywords: [ "cd", "disk", "disc" ],
+    "char": "\ud83d\udcc0",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  vhs: {
+    keywords: [ "record", "video", "oldschool", "90s", "80s" ],
+    "char": "\ud83d\udcfc",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  camera: {
+    keywords: [ "gadgets", "photography" ],
+    "char": "\ud83d\udcf7",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  camera_flash: {
+    keywords: [ "photography", "gadgets" ],
+    "char": "\ud83d\udcf8",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  video_camera: {
+    keywords: [ "film", "record" ],
+    "char": "\ud83d\udcf9",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  movie_camera: {
+    keywords: [ "film", "record" ],
+    "char": "\ud83c\udfa5",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  film_projector: {
+    keywords: [ "video", "tape", "record", "movie" ],
+    "char": "\ud83d\udcfd",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  film_strip: {
+    keywords: [ "movie" ],
+    "char": "\ud83c\udf9e",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  telephone_receiver: {
+    keywords: [ "technology", "communication", "dial" ],
+    "char": "\ud83d\udcde",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  phone: {
+    keywords: [ "technology", "communication", "dial", "telephone" ],
+    "char": "\u260e\ufe0f",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  pager: {
+    keywords: [ "bbcall", "oldschool", "90s" ],
+    "char": "\ud83d\udcdf",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  fax: {
+    keywords: [ "communication", "technology" ],
+    "char": "\ud83d\udce0",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  tv: {
+    keywords: [ "technology", "program", "oldschool", "show", "television" ],
+    "char": "\ud83d\udcfa",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  radio: {
+    keywords: [ "communication", "music", "podcast", "program" ],
+    "char": "\ud83d\udcfb",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  studio_microphone: {
+    keywords: [ "sing", "recording", "artist", "talkshow" ],
+    "char": "\ud83c\udf99",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  level_slider: {
+    keywords: [ "scale" ],
+    "char": "\ud83c\udf9a",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  control_knobs: {
+    keywords: [ "dial" ],
+    "char": "\ud83c\udf9b",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  stopwatch: {
+    keywords: [ "time", "deadline" ],
+    "char": "\u23f1",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  timer_clock: {
+    keywords: [ "alarm" ],
+    "char": "\u23f2",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  alarm_clock: {
+    keywords: [ "time", "wake" ],
+    "char": "\u23f0",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  mantelpiece_clock: {
+    keywords: [ "time" ],
+    "char": "\ud83d\udd70",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  hourglass_flowing_sand: {
+    keywords: [ "oldschool", "time", "countdown" ],
+    "char": "\u23f3",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  hourglass: {
+    keywords: [ "time", "clock", "oldschool", "limit", "exam", "quiz", "test" ],
+    "char": "\u231b",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  satellite: {
+    keywords: [ "communication", "future", "radio", "space" ],
+    "char": "\ud83d\udce1",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  battery: {
+    keywords: [ "power", "energy", "sustain" ],
+    "char": "\ud83d\udd0b",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  electric_plug: {
+    keywords: [ "charger", "power" ],
+    "char": "\ud83d\udd0c",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  bulb: {
+    keywords: [ "light", "electricity", "idea" ],
+    "char": "\ud83d\udca1",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  flashlight: {
+    keywords: [ "dark", "camping", "sight", "night" ],
+    "char": "\ud83d\udd26",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  candle: {
+    keywords: [ "fire", "wax" ],
+    "char": "\ud83d\udd6f",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  wastebasket: {
+    keywords: [ "bin", "trash", "rubbish", "garbage", "toss" ],
+    "char": "\ud83d\uddd1",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  oil_drum: {
+    keywords: [ "barrell" ],
+    "char": "\ud83d\udee2",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  money_with_wings: {
+    keywords: [ "dollar", "bills", "payment", "sale" ],
+    "char": "\ud83d\udcb8",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  dollar: {
+    keywords: [ "money", "sales", "bill", "currency" ],
+    "char": "\ud83d\udcb5",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  yen: {
+    keywords: [ "money", "sales", "japanese", "dollar", "currency" ],
+    "char": "\ud83d\udcb4",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  euro: {
+    keywords: [ "money", "sales", "dollar", "currency" ],
+    "char": "\ud83d\udcb6",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  pound: {
+    keywords: [ "british", "sterling", "money", "sales", "bills", "uk", "england", "currency" ],
+    "char": "\ud83d\udcb7",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  moneybag: {
+    keywords: [ "dollar", "payment", "coins", "sale" ],
+    "char": "\ud83d\udcb0",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  credit_card: {
+    keywords: [ "money", "sales", "dollar", "bill", "payment", "shopping" ],
+    "char": "\ud83d\udcb3",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  gem: {
+    keywords: [ "blue", "ruby", "diamond", "jewelry" ],
+    "char": "\ud83d\udc8e",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  balance_scale: {
+    keywords: [ "law", "fairness", "weight" ],
+    "char": "\u2696",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  wrench: {
+    keywords: [ "tools", "diy", "ikea", "fix", "maintainer" ],
+    "char": "\ud83d\udd27",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  hammer: {
+    keywords: [ "tools", "build", "create" ],
+    "char": "\ud83d\udd28",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  hammer_and_pick: {
+    keywords: [ "tools", "build", "create" ],
+    "char": "\u2692",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  hammer_and_wrench: {
+    keywords: [ "tools", "build", "create" ],
+    "char": "\ud83d\udee0",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  pick: {
+    keywords: [ "tools", "dig" ],
+    "char": "\u26cf",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  nut_and_bolt: {
+    keywords: [ "handy", "tools", "fix" ],
+    "char": "\ud83d\udd29",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  gear: {
+    keywords: [ "cog" ],
+    "char": "\u2699",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  chains: {
+    keywords: [ "lock", "arrest" ],
+    "char": "\u26d3",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  gun: {
+    keywords: [ "violence", "weapon", "pistol", "revolver" ],
+    "char": "\ud83d\udd2b",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  bomb: {
+    keywords: [ "boom", "explode", "explosion", "terrorism" ],
+    "char": "\ud83d\udca3",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  hocho: {
+    keywords: [ "knife", "blade", "cutlery", "kitchen", "weapon" ],
+    "char": "\ud83d\udd2a",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  dagger: {
+    keywords: [ "weapon" ],
+    "char": "\ud83d\udde1",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  crossed_swords: {
+    keywords: [ "weapon" ],
+    "char": "\u2694",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  shield: {
+    keywords: [ "protection", "security" ],
+    "char": "\ud83d\udee1",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  smoking: {
+    keywords: [ "kills", "tobacco", "cigarette", "joint", "smoke" ],
+    "char": "\ud83d\udeac",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  skull_and_crossbones: {
+    keywords: [ "poison", "danger", "deadly", "scary", "death", "pirate", "evil" ],
+    "char": "\u2620",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  coffin: {
+    keywords: [ "vampire", "dead", "die", "death", "rip", "graveyard", "cemetery", "casket", "funeral", "box" ],
+    "char": "\u26b0",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  funeral_urn: {
+    keywords: [ "dead", "die", "death", "rip", "ashes" ],
+    "char": "\u26b1",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  amphora: {
+    keywords: [ "vase", "jar" ],
+    "char": "\ud83c\udffa",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  crystal_ball: {
+    keywords: [ "disco", "party", "magic", "circus", "fortune_teller" ],
+    "char": "\ud83d\udd2e",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  prayer_beads: {
+    keywords: [ "dhikr", "religious" ],
+    "char": "\ud83d\udcff",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  barber: {
+    keywords: [ "hair", "salon", "style" ],
+    "char": "\ud83d\udc88",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  alembic: {
+    keywords: [ "distilling", "science", "experiment", "chemistry" ],
+    "char": "\u2697",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  telescope: {
+    keywords: [ "stars", "space", "zoom", "science", "astronomy" ],
+    "char": "\ud83d\udd2d",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  microscope: {
+    keywords: [ "laboratory", "experiment", "zoomin", "science", "study" ],
+    "char": "\ud83d\udd2c",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  hole: {
+    keywords: [ "embarrassing" ],
+    "char": "\ud83d\udd73",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  pill: {
+    keywords: [ "health", "medicine", "doctor", "pharmacy", "drug" ],
+    "char": "\ud83d\udc8a",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  syringe: {
+    keywords: [ "health", "hospital", "drugs", "blood", "medicine", "needle", "doctor", "nurse" ],
+    "char": "\ud83d\udc89",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  thermometer: {
+    keywords: [ "weather", "temperature", "hot", "cold" ],
+    "char": "\ud83c\udf21",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  label: {
+    keywords: [ "sale", "tag" ],
+    "char": "\ud83c\udff7",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  bookmark: {
+    keywords: [ "favorite", "label", "save" ],
+    "char": "\ud83d\udd16",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  toilet: {
+    keywords: [ "restroom", "wc", "washroom", "bathroom", "potty" ],
+    "char": "\ud83d\udebd",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  shower: {
+    keywords: [ "clean", "water", "bathroom" ],
+    "char": "\ud83d\udebf",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  bathtub: {
+    keywords: [ "clean", "shower", "bathroom" ],
+    "char": "\ud83d\udec1",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  key: {
+    keywords: [ "lock", "door", "password" ],
+    "char": "\ud83d\udd11",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  old_key: {
+    keywords: [ "lock", "door", "password" ],
+    "char": "\ud83d\udddd",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  couch_and_lamp: {
+    keywords: [ "read", "chill" ],
+    "char": "\ud83d\udecb",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  sleeping_bed: {
+    keywords: [ "bed", "rest" ],
+    "char": "\ud83d\udecc",
+    fitzpatrick_scale: true,
+    category: "objects"
+  },
+  bed: {
+    keywords: [ "sleep", "rest" ],
+    "char": "\ud83d\udecf",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  door: {
+    keywords: [ "house", "entry", "exit" ],
+    "char": "\ud83d\udeaa",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  bellhop_bell: {
+    keywords: [ "service" ],
+    "char": "\ud83d\udece",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  framed_picture: {
+    keywords: [ "photography" ],
+    "char": "\ud83d\uddbc",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  world_map: {
+    keywords: [ "location", "direction" ],
+    "char": "\ud83d\uddfa",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  parasol_on_ground: {
+    keywords: [ "weather", "summer" ],
+    "char": "\u26f1",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  moyai: {
+    keywords: [ "rock", "easter island", "moai" ],
+    "char": "\ud83d\uddff",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  shopping: {
+    keywords: [ "mall", "buy", "purchase" ],
+    "char": "\ud83d\udecd",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  shopping_cart: {
+    keywords: [ "trolley" ],
+    "char": "\ud83d\uded2",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  balloon: {
+    keywords: [ "party", "celebration", "birthday", "circus" ],
+    "char": "\ud83c\udf88",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  flags: {
+    keywords: [ "fish", "japanese", "koinobori", "carp", "banner" ],
+    "char": "\ud83c\udf8f",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  ribbon: {
+    keywords: [ "decoration", "pink", "girl", "bowtie" ],
+    "char": "\ud83c\udf80",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  gift: {
+    keywords: [ "present", "birthday", "christmas", "xmas" ],
+    "char": "\ud83c\udf81",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  confetti_ball: {
+    keywords: [ "festival", "party", "birthday", "circus" ],
+    "char": "\ud83c\udf8a",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  tada: {
+    keywords: [ "party", "congratulations", "birthday", "magic", "circus", "celebration" ],
+    "char": "\ud83c\udf89",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  dolls: {
+    keywords: [ "japanese", "toy", "kimono" ],
+    "char": "\ud83c\udf8e",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  wind_chime: {
+    keywords: [ "nature", "ding", "spring", "bell" ],
+    "char": "\ud83c\udf90",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  crossed_flags: {
+    keywords: [ "japanese", "nation", "country", "border" ],
+    "char": "\ud83c\udf8c",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  izakaya_lantern: {
+    keywords: [ "light", "paper", "halloween", "spooky" ],
+    "char": "\ud83c\udfee",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  email: {
+    keywords: [ "letter", "postal", "inbox", "communication" ],
+    "char": "\u2709\ufe0f",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  envelope_with_arrow: {
+    keywords: [ "email", "communication" ],
+    "char": "\ud83d\udce9",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  incoming_envelope: {
+    keywords: [ "email", "inbox" ],
+    "char": "\ud83d\udce8",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  "e-mail": {
+    keywords: [ "communication", "inbox" ],
+    "char": "\ud83d\udce7",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  love_letter: {
+    keywords: [ "email", "like", "affection", "envelope", "valentines" ],
+    "char": "\ud83d\udc8c",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  postbox: {
+    keywords: [ "email", "letter", "envelope" ],
+    "char": "\ud83d\udcee",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  mailbox_closed: {
+    keywords: [ "email", "communication", "inbox" ],
+    "char": "\ud83d\udcea",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  mailbox: {
+    keywords: [ "email", "inbox", "communication" ],
+    "char": "\ud83d\udceb",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  mailbox_with_mail: {
+    keywords: [ "email", "inbox", "communication" ],
+    "char": "\ud83d\udcec",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  mailbox_with_no_mail: {
+    keywords: [ "email", "inbox" ],
+    "char": "\ud83d\udced",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  "package": {
+    keywords: [ "mail", "gift", "cardboard", "box", "moving" ],
+    "char": "\ud83d\udce6",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  postal_horn: {
+    keywords: [ "instrument", "music" ],
+    "char": "\ud83d\udcef",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  inbox_tray: {
+    keywords: [ "email", "documents" ],
+    "char": "\ud83d\udce5",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  outbox_tray: {
+    keywords: [ "inbox", "email" ],
+    "char": "\ud83d\udce4",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  scroll: {
+    keywords: [ "documents", "ancient", "history", "paper" ],
+    "char": "\ud83d\udcdc",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  page_with_curl: {
+    keywords: [ "documents", "office", "paper" ],
+    "char": "\ud83d\udcc3",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  bookmark_tabs: {
+    keywords: [ "favorite", "save", "order", "tidy" ],
+    "char": "\ud83d\udcd1",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  bar_chart: {
+    keywords: [ "graph", "presentation", "stats" ],
+    "char": "\ud83d\udcca",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  chart_with_upwards_trend: {
+    keywords: [ "graph", "presentation", "stats", "recovery", "business", "economics", "money", "sales", "good", "success" ],
+    "char": "\ud83d\udcc8",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  chart_with_downwards_trend: {
+    keywords: [ "graph", "presentation", "stats", "recession", "business", "economics", "money", "sales", "bad", "failure" ],
+    "char": "\ud83d\udcc9",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  page_facing_up: {
+    keywords: [ "documents", "office", "paper", "information" ],
+    "char": "\ud83d\udcc4",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  date: {
+    keywords: [ "calendar", "schedule" ],
+    "char": "\ud83d\udcc5",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  calendar: {
+    keywords: [ "schedule", "date", "planning" ],
+    "char": "\ud83d\udcc6",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  spiral_calendar: {
+    keywords: [ "date", "schedule", "planning" ],
+    "char": "\ud83d\uddd3",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  card_index: {
+    keywords: [ "business", "stationery" ],
+    "char": "\ud83d\udcc7",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  card_file_box: {
+    keywords: [ "business", "stationery" ],
+    "char": "\ud83d\uddc3",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  ballot_box: {
+    keywords: [ "election", "vote" ],
+    "char": "\ud83d\uddf3",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  file_cabinet: {
+    keywords: [ "filing", "organizing" ],
+    "char": "\ud83d\uddc4",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  clipboard: {
+    keywords: [ "stationery", "documents" ],
+    "char": "\ud83d\udccb",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  spiral_notepad: {
+    keywords: [ "memo", "stationery" ],
+    "char": "\ud83d\uddd2",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  file_folder: {
+    keywords: [ "documents", "business", "office" ],
+    "char": "\ud83d\udcc1",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  open_file_folder: {
+    keywords: [ "documents", "load" ],
+    "char": "\ud83d\udcc2",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  card_index_dividers: {
+    keywords: [ "organizing", "business", "stationery" ],
+    "char": "\ud83d\uddc2",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  newspaper_roll: {
+    keywords: [ "press", "headline" ],
+    "char": "\ud83d\uddde",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  newspaper: {
+    keywords: [ "press", "headline" ],
+    "char": "\ud83d\udcf0",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  notebook: {
+    keywords: [ "stationery", "record", "notes", "paper", "study" ],
+    "char": "\ud83d\udcd3",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  closed_book: {
+    keywords: [ "read", "library", "knowledge", "textbook", "learn" ],
+    "char": "\ud83d\udcd5",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  green_book: {
+    keywords: [ "read", "library", "knowledge", "study" ],
+    "char": "\ud83d\udcd7",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  blue_book: {
+    keywords: [ "read", "library", "knowledge", "learn", "study" ],
+    "char": "\ud83d\udcd8",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  orange_book: {
+    keywords: [ "read", "library", "knowledge", "textbook", "study" ],
+    "char": "\ud83d\udcd9",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  notebook_with_decorative_cover: {
+    keywords: [ "classroom", "notes", "record", "paper", "study" ],
+    "char": "\ud83d\udcd4",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  ledger: {
+    keywords: [ "notes", "paper" ],
+    "char": "\ud83d\udcd2",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  books: {
+    keywords: [ "literature", "library", "study" ],
+    "char": "\ud83d\udcda",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  open_book: {
+    keywords: [ "book", "read", "library", "knowledge", "literature", "learn", "study" ],
+    "char": "\ud83d\udcd6",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  link: {
+    keywords: [ "rings", "url" ],
+    "char": "\ud83d\udd17",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  paperclip: {
+    keywords: [ "documents", "stationery" ],
+    "char": "\ud83d\udcce",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  paperclips: {
+    keywords: [ "documents", "stationery" ],
+    "char": "\ud83d\udd87",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  scissors: {
+    keywords: [ "stationery", "cut" ],
+    "char": "\u2702\ufe0f",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  triangular_ruler: {
+    keywords: [ "stationery", "math", "architect", "sketch" ],
+    "char": "\ud83d\udcd0",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  straight_ruler: {
+    keywords: [ "stationery", "calculate", "length", "math", "school", "drawing", "architect", "sketch" ],
+    "char": "\ud83d\udccf",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  pushpin: {
+    keywords: [ "stationery", "mark", "here" ],
+    "char": "\ud83d\udccc",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  round_pushpin: {
+    keywords: [ "stationery", "location", "map", "here" ],
+    "char": "\ud83d\udccd",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  triangular_flag_on_post: {
+    keywords: [ "mark", "milestone", "place" ],
+    "char": "\ud83d\udea9",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  white_flag: {
+    keywords: [ "losing", "loser", "lost", "surrender", "give up", "fail" ],
+    "char": "\ud83c\udff3",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  black_flag: {
+    keywords: [ "pirate" ],
+    "char": "\ud83c\udff4",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  rainbow_flag: {
+    keywords: [ "flag", "rainbow", "pride", "gay", "lgbt", "glbt", "queer", "homosexual", "lesbian", "bisexual", "transgender" ],
+    "char": "\ud83c\udff3\ufe0f\u200d\ud83c\udf08",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  closed_lock_with_key: {
+    keywords: [ "security", "privacy" ],
+    "char": "\ud83d\udd10",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  lock: {
+    keywords: [ "security", "password", "padlock" ],
+    "char": "\ud83d\udd12",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  unlock: {
+    keywords: [ "privacy", "security" ],
+    "char": "\ud83d\udd13",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  lock_with_ink_pen: {
+    keywords: [ "security", "secret" ],
+    "char": "\ud83d\udd0f",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  pen: {
+    keywords: [ "stationery", "writing", "write" ],
+    "char": "\ud83d\udd8a",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  fountain_pen: {
+    keywords: [ "stationery", "writing", "write" ],
+    "char": "\ud83d\udd8b",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  black_nib: {
+    keywords: [ "pen", "stationery", "writing", "write" ],
+    "char": "\u2712\ufe0f",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  memo: {
+    keywords: [ "write", "documents", "stationery", "pencil", "paper", "writing", "legal", "exam", "quiz", "test", "study", "compose" ],
+    "char": "\ud83d\udcdd",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  pencil2: {
+    keywords: [ "stationery", "write", "paper", "writing", "school", "study" ],
+    "char": "\u270f\ufe0f",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  crayon: {
+    keywords: [ "drawing", "creativity" ],
+    "char": "\ud83d\udd8d",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  paintbrush: {
+    keywords: [ "drawing", "creativity", "art" ],
+    "char": "\ud83d\udd8c",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  mag: {
+    keywords: [ "search", "zoom", "find", "detective" ],
+    "char": "\ud83d\udd0d",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  mag_right: {
+    keywords: [ "search", "zoom", "find", "detective" ],
+    "char": "\ud83d\udd0e",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  heart: {
+    keywords: [ "love", "like", "valentines" ],
+    "char": "\u2764\ufe0f",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  orange_heart: {
+    keywords: [ "love", "like", "affection", "valentines" ],
+    "char": "\ud83e\udde1",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  yellow_heart: {
+    keywords: [ "love", "like", "affection", "valentines" ],
+    "char": "\ud83d\udc9b",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  green_heart: {
+    keywords: [ "love", "like", "affection", "valentines" ],
+    "char": "\ud83d\udc9a",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  blue_heart: {
+    keywords: [ "love", "like", "affection", "valentines" ],
+    "char": "\ud83d\udc99",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  purple_heart: {
+    keywords: [ "love", "like", "affection", "valentines" ],
+    "char": "\ud83d\udc9c",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  black_heart: {
+    keywords: [ "evil" ],
+    "char": "\ud83d\udda4",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  broken_heart: {
+    keywords: [ "sad", "sorry", "break", "heart", "heartbreak" ],
+    "char": "\ud83d\udc94",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  heavy_heart_exclamation: {
+    keywords: [ "decoration", "love" ],
+    "char": "\u2763",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  two_hearts: {
+    keywords: [ "love", "like", "affection", "valentines", "heart" ],
+    "char": "\ud83d\udc95",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  revolving_hearts: {
+    keywords: [ "love", "like", "affection", "valentines" ],
+    "char": "\ud83d\udc9e",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  heartbeat: {
+    keywords: [ "love", "like", "affection", "valentines", "pink", "heart" ],
+    "char": "\ud83d\udc93",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  heartpulse: {
+    keywords: [ "like", "love", "affection", "valentines", "pink" ],
+    "char": "\ud83d\udc97",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  sparkling_heart: {
+    keywords: [ "love", "like", "affection", "valentines" ],
+    "char": "\ud83d\udc96",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  cupid: {
+    keywords: [ "love", "like", "heart", "affection", "valentines" ],
+    "char": "\ud83d\udc98",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  gift_heart: {
+    keywords: [ "love", "valentines" ],
+    "char": "\ud83d\udc9d",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  heart_decoration: {
+    keywords: [ "purple-square", "love", "like" ],
+    "char": "\ud83d\udc9f",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  peace_symbol: {
+    keywords: [ "hippie" ],
+    "char": "\u262e",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  latin_cross: {
+    keywords: [ "christianity" ],
+    "char": "\u271d",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  star_and_crescent: {
+    keywords: [ "islam" ],
+    "char": "\u262a",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  om: {
+    keywords: [ "hinduism", "buddhism", "sikhism", "jainism" ],
+    "char": "\ud83d\udd49",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  wheel_of_dharma: {
+    keywords: [ "hinduism", "buddhism", "sikhism", "jainism" ],
+    "char": "\u2638",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  star_of_david: {
+    keywords: [ "judaism" ],
+    "char": "\u2721",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  six_pointed_star: {
+    keywords: [ "purple-square", "religion", "jewish", "hexagram" ],
+    "char": "\ud83d\udd2f",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  menorah: {
+    keywords: [ "hanukkah", "candles", "jewish" ],
+    "char": "\ud83d\udd4e",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  yin_yang: {
+    keywords: [ "balance" ],
+    "char": "\u262f",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  orthodox_cross: {
+    keywords: [ "suppedaneum", "religion" ],
+    "char": "\u2626",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  place_of_worship: {
+    keywords: [ "religion", "church", "temple", "prayer" ],
+    "char": "\ud83d\uded0",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  ophiuchus: {
+    keywords: [ "sign", "purple-square", "constellation", "astrology" ],
+    "char": "\u26ce",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  aries: {
+    keywords: [ "sign", "purple-square", "zodiac", "astrology" ],
+    "char": "\u2648",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  taurus: {
+    keywords: [ "purple-square", "sign", "zodiac", "astrology" ],
+    "char": "\u2649",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  gemini: {
+    keywords: [ "sign", "zodiac", "purple-square", "astrology" ],
+    "char": "\u264a",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  cancer: {
+    keywords: [ "sign", "zodiac", "purple-square", "astrology" ],
+    "char": "\u264b",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  leo: {
+    keywords: [ "sign", "purple-square", "zodiac", "astrology" ],
+    "char": "\u264c",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  virgo: {
+    keywords: [ "sign", "zodiac", "purple-square", "astrology" ],
+    "char": "\u264d",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  libra: {
+    keywords: [ "sign", "purple-square", "zodiac", "astrology" ],
+    "char": "\u264e",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  scorpius: {
+    keywords: [ "sign", "zodiac", "purple-square", "astrology", "scorpio" ],
+    "char": "\u264f",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  sagittarius: {
+    keywords: [ "sign", "zodiac", "purple-square", "astrology" ],
+    "char": "\u2650",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  capricorn: {
+    keywords: [ "sign", "zodiac", "purple-square", "astrology" ],
+    "char": "\u2651",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  aquarius: {
+    keywords: [ "sign", "purple-square", "zodiac", "astrology" ],
+    "char": "\u2652",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  pisces: {
+    keywords: [ "purple-square", "sign", "zodiac", "astrology" ],
+    "char": "\u2653",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  id: {
+    keywords: [ "purple-square", "words" ],
+    "char": "\ud83c\udd94",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  atom_symbol: {
+    keywords: [ "science", "physics", "chemistry" ],
+    "char": "\u269b",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  u7a7a: {
+    keywords: [ "kanji", "japanese", "chinese", "empty", "sky", "blue-square" ],
+    "char": "\ud83c\ude33",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  u5272: {
+    keywords: [ "cut", "divide", "chinese", "kanji", "pink-square" ],
+    "char": "\ud83c\ude39",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  radioactive: {
+    keywords: [ "nuclear", "danger" ],
+    "char": "\u2622",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  biohazard: {
+    keywords: [ "danger" ],
+    "char": "\u2623",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  mobile_phone_off: {
+    keywords: [ "mute", "orange-square", "silence", "quiet" ],
+    "char": "\ud83d\udcf4",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  vibration_mode: {
+    keywords: [ "orange-square", "phone" ],
+    "char": "\ud83d\udcf3",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  u6709: {
+    keywords: [ "orange-square", "chinese", "have", "kanji" ],
+    "char": "\ud83c\ude36",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  u7121: {
+    keywords: [ "nothing", "chinese", "kanji", "japanese", "orange-square" ],
+    "char": "\ud83c\ude1a",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  u7533: {
+    keywords: [ "chinese", "japanese", "kanji", "orange-square" ],
+    "char": "\ud83c\ude38",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  u55b6: {
+    keywords: [ "japanese", "opening hours", "orange-square" ],
+    "char": "\ud83c\ude3a",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  u6708: {
+    keywords: [ "chinese", "month", "moon", "japanese", "orange-square", "kanji" ],
+    "char": "\ud83c\ude37\ufe0f",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  eight_pointed_black_star: {
+    keywords: [ "orange-square", "shape", "polygon" ],
+    "char": "\u2734\ufe0f",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  vs: {
+    keywords: [ "words", "orange-square" ],
+    "char": "\ud83c\udd9a",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  accept: {
+    keywords: [ "ok", "good", "chinese", "kanji", "agree", "yes", "orange-circle" ],
+    "char": "\ud83c\ude51",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  white_flower: {
+    keywords: [ "japanese", "spring" ],
+    "char": "\ud83d\udcae",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  ideograph_advantage: {
+    keywords: [ "chinese", "kanji", "obtain", "get", "circle" ],
+    "char": "\ud83c\ude50",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  secret: {
+    keywords: [ "privacy", "chinese", "sshh", "kanji", "red-circle" ],
+    "char": "\u3299\ufe0f",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  congratulations: {
+    keywords: [ "chinese", "kanji", "japanese", "red-circle" ],
+    "char": "\u3297\ufe0f",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  u5408: {
+    keywords: [ "japanese", "chinese", "join", "kanji", "red-square" ],
+    "char": "\ud83c\ude34",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  u6e80: {
+    keywords: [ "full", "chinese", "japanese", "red-square", "kanji" ],
+    "char": "\ud83c\ude35",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  u7981: {
+    keywords: [ "kanji", "japanese", "chinese", "forbidden", "limit", "restricted", "red-square" ],
+    "char": "\ud83c\ude32",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  a: {
+    keywords: [ "red-square", "alphabet", "letter" ],
+    "char": "\ud83c\udd70\ufe0f",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  b: {
+    keywords: [ "red-square", "alphabet", "letter" ],
+    "char": "\ud83c\udd71\ufe0f",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  ab: {
+    keywords: [ "red-square", "alphabet" ],
+    "char": "\ud83c\udd8e",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  cl: {
+    keywords: [ "alphabet", "words", "red-square" ],
+    "char": "\ud83c\udd91",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  o2: {
+    keywords: [ "alphabet", "red-square", "letter" ],
+    "char": "\ud83c\udd7e\ufe0f",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  sos: {
+    keywords: [ "help", "red-square", "words", "emergency", "911" ],
+    "char": "\ud83c\udd98",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  no_entry: {
+    keywords: [ "limit", "security", "privacy", "bad", "denied", "stop", "circle" ],
+    "char": "\u26d4",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  name_badge: {
+    keywords: [ "fire", "forbid" ],
+    "char": "\ud83d\udcdb",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  no_entry_sign: {
+    keywords: [ "forbid", "stop", "limit", "denied", "disallow", "circle" ],
+    "char": "\ud83d\udeab",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  x: {
+    keywords: [ "no", "delete", "remove", "cancel" ],
+    "char": "\u274c",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  o: {
+    keywords: [ "circle", "round" ],
+    "char": "\u2b55",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  stop_sign: {
+    keywords: [ "stop" ],
+    "char": "\ud83d\uded1",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  anger: {
+    keywords: [ "angry", "mad" ],
+    "char": "\ud83d\udca2",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  hotsprings: {
+    keywords: [ "bath", "warm", "relax" ],
+    "char": "\u2668\ufe0f",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  no_pedestrians: {
+    keywords: [ "rules", "crossing", "walking", "circle" ],
+    "char": "\ud83d\udeb7",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  do_not_litter: {
+    keywords: [ "trash", "bin", "garbage", "circle" ],
+    "char": "\ud83d\udeaf",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  no_bicycles: {
+    keywords: [ "cyclist", "prohibited", "circle" ],
+    "char": "\ud83d\udeb3",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  "non-potable_water": {
+    keywords: [ "drink", "faucet", "tap", "circle" ],
+    "char": "\ud83d\udeb1",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  underage: {
+    keywords: [ "18", "drink", "pub", "night", "minor", "circle" ],
+    "char": "\ud83d\udd1e",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  no_mobile_phones: {
+    keywords: [ "iphone", "mute", "circle" ],
+    "char": "\ud83d\udcf5",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  exclamation: {
+    keywords: [ "heavy_exclamation_mark", "danger", "surprise", "punctuation", "wow", "warning" ],
+    "char": "\u2757",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  grey_exclamation: {
+    keywords: [ "surprise", "punctuation", "gray", "wow", "warning" ],
+    "char": "\u2755",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  question: {
+    keywords: [ "doubt", "confused" ],
+    "char": "\u2753",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  grey_question: {
+    keywords: [ "doubts", "gray", "huh", "confused" ],
+    "char": "\u2754",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  bangbang: {
+    keywords: [ "exclamation", "surprise" ],
+    "char": "\u203c\ufe0f",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  interrobang: {
+    keywords: [ "wat", "punctuation", "surprise" ],
+    "char": "\u2049\ufe0f",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  100: {
+    keywords: [ "score", "perfect", "numbers", "century", "exam", "quiz", "test", "pass", "hundred" ],
+    "char": "\ud83d\udcaf",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  low_brightness: {
+    keywords: [ "sun", "afternoon", "warm", "summer" ],
+    "char": "\ud83d\udd05",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  high_brightness: {
+    keywords: [ "sun", "light" ],
+    "char": "\ud83d\udd06",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  trident: {
+    keywords: [ "weapon", "spear" ],
+    "char": "\ud83d\udd31",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  fleur_de_lis: {
+    keywords: [ "decorative", "scout" ],
+    "char": "\u269c",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  part_alternation_mark: {
+    keywords: [ "graph", "presentation", "stats", "business", "economics", "bad" ],
+    "char": "\u303d\ufe0f",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  warning: {
+    keywords: [ "exclamation", "wip", "alert", "error", "problem", "issue" ],
+    "char": "\u26a0\ufe0f",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  children_crossing: {
+    keywords: [ "school", "warning", "danger", "sign", "driving", "yellow-diamond" ],
+    "char": "\ud83d\udeb8",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  beginner: {
+    keywords: [ "badge", "shield" ],
+    "char": "\ud83d\udd30",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  recycle: {
+    keywords: [ "arrow", "environment", "garbage", "trash" ],
+    "char": "\u267b\ufe0f",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  u6307: {
+    keywords: [ "chinese", "point", "green-square", "kanji" ],
+    "char": "\ud83c\ude2f",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  chart: {
+    keywords: [ "green-square", "graph", "presentation", "stats" ],
+    "char": "\ud83d\udcb9",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  sparkle: {
+    keywords: [ "stars", "green-square", "awesome", "good", "fireworks" ],
+    "char": "\u2747\ufe0f",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  eight_spoked_asterisk: {
+    keywords: [ "star", "sparkle", "green-square" ],
+    "char": "\u2733\ufe0f",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  negative_squared_cross_mark: {
+    keywords: [ "x", "green-square", "no", "deny" ],
+    "char": "\u274e",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  white_check_mark: {
+    keywords: [ "green-square", "ok", "agree", "vote", "election", "answer", "tick" ],
+    "char": "\u2705",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  diamond_shape_with_a_dot_inside: {
+    keywords: [ "jewel", "blue", "gem", "crystal", "fancy" ],
+    "char": "\ud83d\udca0",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  cyclone: {
+    keywords: [ "weather", "swirl", "blue", "cloud", "vortex", "spiral", "whirlpool", "spin", "tornado", "hurricane", "typhoon" ],
+    "char": "\ud83c\udf00",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  loop: {
+    keywords: [ "tape", "cassette" ],
+    "char": "\u27bf",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  globe_with_meridians: {
+    keywords: [ "earth", "international", "world", "internet", "interweb", "i18n" ],
+    "char": "\ud83c\udf10",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  m: {
+    keywords: [ "alphabet", "blue-circle", "letter" ],
+    "char": "\u24c2\ufe0f",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  atm: {
+    keywords: [ "money", "sales", "cash", "blue-square", "payment", "bank" ],
+    "char": "\ud83c\udfe7",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  sa: {
+    keywords: [ "japanese", "blue-square", "katakana" ],
+    "char": "\ud83c\ude02\ufe0f",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  passport_control: {
+    keywords: [ "custom", "blue-square" ],
+    "char": "\ud83d\udec2",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  customs: {
+    keywords: [ "passport", "border", "blue-square" ],
+    "char": "\ud83d\udec3",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  baggage_claim: {
+    keywords: [ "blue-square", "airport", "transport" ],
+    "char": "\ud83d\udec4",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  left_luggage: {
+    keywords: [ "blue-square", "travel" ],
+    "char": "\ud83d\udec5",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  wheelchair: {
+    keywords: [ "blue-square", "disabled", "a11y", "accessibility" ],
+    "char": "\u267f",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  no_smoking: {
+    keywords: [ "cigarette", "blue-square", "smell", "smoke" ],
+    "char": "\ud83d\udead",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  wc: {
+    keywords: [ "toilet", "restroom", "blue-square" ],
+    "char": "\ud83d\udebe",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  parking: {
+    keywords: [ "cars", "blue-square", "alphabet", "letter" ],
+    "char": "\ud83c\udd7f\ufe0f",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  potable_water: {
+    keywords: [ "blue-square", "liquid", "restroom", "cleaning", "faucet" ],
+    "char": "\ud83d\udeb0",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  mens: {
+    keywords: [ "toilet", "restroom", "wc", "blue-square", "gender", "male" ],
+    "char": "\ud83d\udeb9",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  womens: {
+    keywords: [ "purple-square", "woman", "female", "toilet", "loo", "restroom", "gender" ],
+    "char": "\ud83d\udeba",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  baby_symbol: {
+    keywords: [ "orange-square", "child" ],
+    "char": "\ud83d\udebc",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  restroom: {
+    keywords: [ "blue-square", "toilet", "refresh", "wc", "gender" ],
+    "char": "\ud83d\udebb",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  put_litter_in_its_place: {
+    keywords: [ "blue-square", "sign", "human", "info" ],
+    "char": "\ud83d\udeae",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  cinema: {
+    keywords: [ "blue-square", "record", "film", "movie", "curtain", "stage", "theater" ],
+    "char": "\ud83c\udfa6",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  signal_strength: {
+    keywords: [ "blue-square", "reception", "phone", "internet", "connection", "wifi", "bluetooth", "bars" ],
+    "char": "\ud83d\udcf6",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  koko: {
+    keywords: [ "blue-square", "here", "katakana", "japanese", "destination" ],
+    "char": "\ud83c\ude01",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  ng: {
+    keywords: [ "blue-square", "words", "shape", "icon" ],
+    "char": "\ud83c\udd96",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  ok: {
+    keywords: [ "good", "agree", "yes", "blue-square" ],
+    "char": "\ud83c\udd97",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  up: {
+    keywords: [ "blue-square", "above", "high" ],
+    "char": "\ud83c\udd99",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  cool: {
+    keywords: [ "words", "blue-square" ],
+    "char": "\ud83c\udd92",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  "new": {
+    keywords: [ "blue-square", "words", "start" ],
+    "char": "\ud83c\udd95",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  free: {
+    keywords: [ "blue-square", "words" ],
+    "char": "\ud83c\udd93",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  zero: {
+    keywords: [ "0", "numbers", "blue-square", "null" ],
+    "char": "0\ufe0f\u20e3",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  one: {
+    keywords: [ "blue-square", "numbers", "1" ],
+    "char": "1\ufe0f\u20e3",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  two: {
+    keywords: [ "numbers", "2", "prime", "blue-square" ],
+    "char": "2\ufe0f\u20e3",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  three: {
+    keywords: [ "3", "numbers", "prime", "blue-square" ],
+    "char": "3\ufe0f\u20e3",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  four: {
+    keywords: [ "4", "numbers", "blue-square" ],
+    "char": "4\ufe0f\u20e3",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  five: {
+    keywords: [ "5", "numbers", "blue-square", "prime" ],
+    "char": "5\ufe0f\u20e3",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  six: {
+    keywords: [ "6", "numbers", "blue-square" ],
+    "char": "6\ufe0f\u20e3",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  seven: {
+    keywords: [ "7", "numbers", "blue-square", "prime" ],
+    "char": "7\ufe0f\u20e3",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  eight: {
+    keywords: [ "8", "blue-square", "numbers" ],
+    "char": "8\ufe0f\u20e3",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  nine: {
+    keywords: [ "blue-square", "numbers", "9" ],
+    "char": "9\ufe0f\u20e3",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  keycap_ten: {
+    keywords: [ "numbers", "10", "blue-square" ],
+    "char": "\ud83d\udd1f",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  asterisk: {
+    keywords: [ "star", "keycap" ],
+    "char": "*\u20e3",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  1234: {
+    keywords: [ "numbers", "blue-square" ],
+    "char": "\ud83d\udd22",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  eject_button: {
+    keywords: [ "blue-square" ],
+    "char": "\u23cf\ufe0f",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  arrow_forward: {
+    keywords: [ "blue-square", "right", "direction", "play" ],
+    "char": "\u25b6\ufe0f",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  pause_button: {
+    keywords: [ "pause", "blue-square" ],
+    "char": "\u23f8",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  next_track_button: {
+    keywords: [ "forward", "next", "blue-square" ],
+    "char": "\u23ed",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  stop_button: {
+    keywords: [ "blue-square" ],
+    "char": "\u23f9",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  record_button: {
+    keywords: [ "blue-square" ],
+    "char": "\u23fa",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  play_or_pause_button: {
+    keywords: [ "blue-square", "play", "pause" ],
+    "char": "\u23ef",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  previous_track_button: {
+    keywords: [ "backward" ],
+    "char": "\u23ee",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  fast_forward: {
+    keywords: [ "blue-square", "play", "speed", "continue" ],
+    "char": "\u23e9",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  rewind: {
+    keywords: [ "play", "blue-square" ],
+    "char": "\u23ea",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  twisted_rightwards_arrows: {
+    keywords: [ "blue-square", "shuffle", "music", "random" ],
+    "char": "\ud83d\udd00",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  repeat: {
+    keywords: [ "loop", "record" ],
+    "char": "\ud83d\udd01",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  repeat_one: {
+    keywords: [ "blue-square", "loop" ],
+    "char": "\ud83d\udd02",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  arrow_backward: {
+    keywords: [ "blue-square", "left", "direction" ],
+    "char": "\u25c0\ufe0f",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  arrow_up_small: {
+    keywords: [ "blue-square", "triangle", "direction", "point", "forward", "top" ],
+    "char": "\ud83d\udd3c",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  arrow_down_small: {
+    keywords: [ "blue-square", "direction", "bottom" ],
+    "char": "\ud83d\udd3d",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  arrow_double_up: {
+    keywords: [ "blue-square", "direction", "top" ],
+    "char": "\u23eb",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  arrow_double_down: {
+    keywords: [ "blue-square", "direction", "bottom" ],
+    "char": "\u23ec",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  arrow_right: {
+    keywords: [ "blue-square", "next" ],
+    "char": "\u27a1\ufe0f",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  arrow_left: {
+    keywords: [ "blue-square", "previous", "back" ],
+    "char": "\u2b05\ufe0f",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  arrow_up: {
+    keywords: [ "blue-square", "continue", "top", "direction" ],
+    "char": "\u2b06\ufe0f",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  arrow_down: {
+    keywords: [ "blue-square", "direction", "bottom" ],
+    "char": "\u2b07\ufe0f",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  arrow_upper_right: {
+    keywords: [ "blue-square", "point", "direction", "diagonal", "northeast" ],
+    "char": "\u2197\ufe0f",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  arrow_lower_right: {
+    keywords: [ "blue-square", "direction", "diagonal", "southeast" ],
+    "char": "\u2198\ufe0f",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  arrow_lower_left: {
+    keywords: [ "blue-square", "direction", "diagonal", "southwest" ],
+    "char": "\u2199\ufe0f",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  arrow_upper_left: {
+    keywords: [ "blue-square", "point", "direction", "diagonal", "northwest" ],
+    "char": "\u2196\ufe0f",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  arrow_up_down: {
+    keywords: [ "blue-square", "direction", "way", "vertical" ],
+    "char": "\u2195\ufe0f",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  left_right_arrow: {
+    keywords: [ "shape", "direction", "horizontal", "sideways" ],
+    "char": "\u2194\ufe0f",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  arrows_counterclockwise: {
+    keywords: [ "blue-square", "sync", "cycle" ],
+    "char": "\ud83d\udd04",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  arrow_right_hook: {
+    keywords: [ "blue-square", "return", "rotate", "direction" ],
+    "char": "\u21aa\ufe0f",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  leftwards_arrow_with_hook: {
+    keywords: [ "back", "return", "blue-square", "undo", "enter" ],
+    "char": "\u21a9\ufe0f",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  arrow_heading_up: {
+    keywords: [ "blue-square", "direction", "top" ],
+    "char": "\u2934\ufe0f",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  arrow_heading_down: {
+    keywords: [ "blue-square", "direction", "bottom" ],
+    "char": "\u2935\ufe0f",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  hash: {
+    keywords: [ "symbol", "blue-square", "twitter" ],
+    "char": "#\ufe0f\u20e3",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  information_source: {
+    keywords: [ "blue-square", "alphabet", "letter" ],
+    "char": "\u2139\ufe0f",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  abc: {
+    keywords: [ "blue-square", "alphabet" ],
+    "char": "\ud83d\udd24",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  abcd: {
+    keywords: [ "blue-square", "alphabet" ],
+    "char": "\ud83d\udd21",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  capital_abcd: {
+    keywords: [ "alphabet", "words", "blue-square" ],
+    "char": "\ud83d\udd20",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  symbols: {
+    keywords: [ "blue-square", "music", "note", "ampersand", "percent", "glyphs", "characters" ],
+    "char": "\ud83d\udd23",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  musical_note: {
+    keywords: [ "score", "tone", "sound" ],
+    "char": "\ud83c\udfb5",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  notes: {
+    keywords: [ "music", "score" ],
+    "char": "\ud83c\udfb6",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  wavy_dash: {
+    keywords: [ "draw", "line", "moustache", "mustache", "squiggle", "scribble" ],
+    "char": "\u3030\ufe0f",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  curly_loop: {
+    keywords: [ "scribble", "draw", "shape", "squiggle" ],
+    "char": "\u27b0",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  heavy_check_mark: {
+    keywords: [ "ok", "nike", "answer", "yes", "tick" ],
+    "char": "\u2714\ufe0f",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  arrows_clockwise: {
+    keywords: [ "sync", "cycle", "round", "repeat" ],
+    "char": "\ud83d\udd03",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  heavy_plus_sign: {
+    keywords: [ "math", "calculation", "addition", "more", "increase" ],
+    "char": "\u2795",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  heavy_minus_sign: {
+    keywords: [ "math", "calculation", "subtract", "less" ],
+    "char": "\u2796",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  heavy_division_sign: {
+    keywords: [ "divide", "math", "calculation" ],
+    "char": "\u2797",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  heavy_multiplication_x: {
+    keywords: [ "math", "calculation" ],
+    "char": "\u2716\ufe0f",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  heavy_dollar_sign: {
+    keywords: [ "money", "sales", "payment", "currency", "buck" ],
+    "char": "\ud83d\udcb2",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  currency_exchange: {
+    keywords: [ "money", "sales", "dollar", "travel" ],
+    "char": "\ud83d\udcb1",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  copyright: {
+    keywords: [ "ip", "license", "circle", "law", "legal" ],
+    "char": "\xa9\ufe0f",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  registered: {
+    keywords: [ "alphabet", "circle" ],
+    "char": "\xae\ufe0f",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  tm: {
+    keywords: [ "trademark", "brand", "law", "legal" ],
+    "char": "\u2122\ufe0f",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  end: {
+    keywords: [ "words", "arrow" ],
+    "char": "\ud83d\udd1a",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  back: {
+    keywords: [ "arrow", "words", "return" ],
+    "char": "\ud83d\udd19",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  on: {
+    keywords: [ "arrow", "words" ],
+    "char": "\ud83d\udd1b",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  top: {
+    keywords: [ "words", "blue-square" ],
+    "char": "\ud83d\udd1d",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  soon: {
+    keywords: [ "arrow", "words" ],
+    "char": "\ud83d\udd1c",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  ballot_box_with_check: {
+    keywords: [ "ok", "agree", "confirm", "black-square", "vote", "election", "yes", "tick" ],
+    "char": "\u2611\ufe0f",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  radio_button: {
+    keywords: [ "input", "old", "music", "circle" ],
+    "char": "\ud83d\udd18",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  white_circle: {
+    keywords: [ "shape", "round" ],
+    "char": "\u26aa",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  black_circle: {
+    keywords: [ "shape", "button", "round" ],
+    "char": "\u26ab",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  red_circle: {
+    keywords: [ "shape", "error", "danger" ],
+    "char": "\ud83d\udd34",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  large_blue_circle: {
+    keywords: [ "shape", "icon", "button" ],
+    "char": "\ud83d\udd35",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  small_orange_diamond: {
+    keywords: [ "shape", "jewel", "gem" ],
+    "char": "\ud83d\udd38",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  small_blue_diamond: {
+    keywords: [ "shape", "jewel", "gem" ],
+    "char": "\ud83d\udd39",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  large_orange_diamond: {
+    keywords: [ "shape", "jewel", "gem" ],
+    "char": "\ud83d\udd36",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  large_blue_diamond: {
+    keywords: [ "shape", "jewel", "gem" ],
+    "char": "\ud83d\udd37",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  small_red_triangle: {
+    keywords: [ "shape", "direction", "up", "top" ],
+    "char": "\ud83d\udd3a",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  black_small_square: {
+    keywords: [ "shape", "icon" ],
+    "char": "\u25aa\ufe0f",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  white_small_square: {
+    keywords: [ "shape", "icon" ],
+    "char": "\u25ab\ufe0f",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  black_large_square: {
+    keywords: [ "shape", "icon", "button" ],
+    "char": "\u2b1b",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  white_large_square: {
+    keywords: [ "shape", "icon", "stone", "button" ],
+    "char": "\u2b1c",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  small_red_triangle_down: {
+    keywords: [ "shape", "direction", "bottom" ],
+    "char": "\ud83d\udd3b",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  black_medium_square: {
+    keywords: [ "shape", "button", "icon" ],
+    "char": "\u25fc\ufe0f",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  white_medium_square: {
+    keywords: [ "shape", "stone", "icon" ],
+    "char": "\u25fb\ufe0f",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  black_medium_small_square: {
+    keywords: [ "icon", "shape", "button" ],
+    "char": "\u25fe",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  white_medium_small_square: {
+    keywords: [ "shape", "stone", "icon", "button" ],
+    "char": "\u25fd",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  black_square_button: {
+    keywords: [ "shape", "input", "frame" ],
+    "char": "\ud83d\udd32",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  white_square_button: {
+    keywords: [ "shape", "input" ],
+    "char": "\ud83d\udd33",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  speaker: {
+    keywords: [ "sound", "volume", "silence", "broadcast" ],
+    "char": "\ud83d\udd08",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  sound: {
+    keywords: [ "volume", "speaker", "broadcast" ],
+    "char": "\ud83d\udd09",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  loud_sound: {
+    keywords: [ "volume", "noise", "noisy", "speaker", "broadcast" ],
+    "char": "\ud83d\udd0a",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  mute: {
+    keywords: [ "sound", "volume", "silence", "quiet" ],
+    "char": "\ud83d\udd07",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  mega: {
+    keywords: [ "sound", "speaker", "volume" ],
+    "char": "\ud83d\udce3",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  loudspeaker: {
+    keywords: [ "volume", "sound" ],
+    "char": "\ud83d\udce2",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  bell: {
+    keywords: [ "sound", "notification", "christmas", "xmas", "chime" ],
+    "char": "\ud83d\udd14",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  no_bell: {
+    keywords: [ "sound", "volume", "mute", "quiet", "silent" ],
+    "char": "\ud83d\udd15",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  black_joker: {
+    keywords: [ "poker", "cards", "game", "play", "magic" ],
+    "char": "\ud83c\udccf",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  mahjong: {
+    keywords: [ "game", "play", "chinese", "kanji" ],
+    "char": "\ud83c\udc04",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  spades: {
+    keywords: [ "poker", "cards", "suits", "magic" ],
+    "char": "\u2660\ufe0f",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  clubs: {
+    keywords: [ "poker", "cards", "magic", "suits" ],
+    "char": "\u2663\ufe0f",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  hearts: {
+    keywords: [ "poker", "cards", "magic", "suits" ],
+    "char": "\u2665\ufe0f",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  diamonds: {
+    keywords: [ "poker", "cards", "magic", "suits" ],
+    "char": "\u2666\ufe0f",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  flower_playing_cards: {
+    keywords: [ "game", "sunset", "red" ],
+    "char": "\ud83c\udfb4",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  thought_balloon: {
+    keywords: [ "bubble", "cloud", "speech", "thinking", "dream" ],
+    "char": "\ud83d\udcad",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  right_anger_bubble: {
+    keywords: [ "caption", "speech", "thinking", "mad" ],
+    "char": "\ud83d\uddef",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  speech_balloon: {
+    keywords: [ "bubble", "words", "message", "talk", "chatting" ],
+    "char": "\ud83d\udcac",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  left_speech_bubble: {
+    keywords: [ "words", "message", "talk", "chatting" ],
+    "char": "\ud83d\udde8",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  clock1: {
+    keywords: [ "time", "late", "early", "schedule" ],
+    "char": "\ud83d\udd50",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  clock2: {
+    keywords: [ "time", "late", "early", "schedule" ],
+    "char": "\ud83d\udd51",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  clock3: {
+    keywords: [ "time", "late", "early", "schedule" ],
+    "char": "\ud83d\udd52",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  clock4: {
+    keywords: [ "time", "late", "early", "schedule" ],
+    "char": "\ud83d\udd53",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  clock5: {
+    keywords: [ "time", "late", "early", "schedule" ],
+    "char": "\ud83d\udd54",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  clock6: {
+    keywords: [ "time", "late", "early", "schedule", "dawn", "dusk" ],
+    "char": "\ud83d\udd55",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  clock7: {
+    keywords: [ "time", "late", "early", "schedule" ],
+    "char": "\ud83d\udd56",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  clock8: {
+    keywords: [ "time", "late", "early", "schedule" ],
+    "char": "\ud83d\udd57",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  clock9: {
+    keywords: [ "time", "late", "early", "schedule" ],
+    "char": "\ud83d\udd58",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  clock10: {
+    keywords: [ "time", "late", "early", "schedule" ],
+    "char": "\ud83d\udd59",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  clock11: {
+    keywords: [ "time", "late", "early", "schedule" ],
+    "char": "\ud83d\udd5a",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  clock12: {
+    keywords: [ "time", "noon", "midnight", "midday", "late", "early", "schedule" ],
+    "char": "\ud83d\udd5b",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  clock130: {
+    keywords: [ "time", "late", "early", "schedule" ],
+    "char": "\ud83d\udd5c",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  clock230: {
+    keywords: [ "time", "late", "early", "schedule" ],
+    "char": "\ud83d\udd5d",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  clock330: {
+    keywords: [ "time", "late", "early", "schedule" ],
+    "char": "\ud83d\udd5e",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  clock430: {
+    keywords: [ "time", "late", "early", "schedule" ],
+    "char": "\ud83d\udd5f",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  clock530: {
+    keywords: [ "time", "late", "early", "schedule" ],
+    "char": "\ud83d\udd60",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  clock630: {
+    keywords: [ "time", "late", "early", "schedule" ],
+    "char": "\ud83d\udd61",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  clock730: {
+    keywords: [ "time", "late", "early", "schedule" ],
+    "char": "\ud83d\udd62",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  clock830: {
+    keywords: [ "time", "late", "early", "schedule" ],
+    "char": "\ud83d\udd63",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  clock930: {
+    keywords: [ "time", "late", "early", "schedule" ],
+    "char": "\ud83d\udd64",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  clock1030: {
+    keywords: [ "time", "late", "early", "schedule" ],
+    "char": "\ud83d\udd65",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  clock1130: {
+    keywords: [ "time", "late", "early", "schedule" ],
+    "char": "\ud83d\udd66",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  clock1230: {
+    keywords: [ "time", "late", "early", "schedule" ],
+    "char": "\ud83d\udd67",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  afghanistan: {
+    keywords: [ "af", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\udde6\ud83c\uddeb",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  aland_islands: {
+    keywords: [ "\xc5land", "islands", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\udde6\ud83c\uddfd",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  albania: {
+    keywords: [ "al", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\udde6\ud83c\uddf1",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  algeria: {
+    keywords: [ "dz", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\udde9\ud83c\uddff",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  american_samoa: {
+    keywords: [ "american", "ws", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\udde6\ud83c\uddf8",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  andorra: {
+    keywords: [ "ad", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\udde6\ud83c\udde9",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  angola: {
+    keywords: [ "ao", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\udde6\ud83c\uddf4",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  anguilla: {
+    keywords: [ "ai", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\udde6\ud83c\uddee",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  antarctica: {
+    keywords: [ "aq", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\udde6\ud83c\uddf6",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  antigua_barbuda: {
+    keywords: [ "antigua", "barbuda", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\udde6\ud83c\uddec",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  argentina: {
+    keywords: [ "ar", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\udde6\ud83c\uddf7",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  armenia: {
+    keywords: [ "am", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\udde6\ud83c\uddf2",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  aruba: {
+    keywords: [ "aw", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\udde6\ud83c\uddfc",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  australia: {
+    keywords: [ "au", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\udde6\ud83c\uddfa",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  austria: {
+    keywords: [ "at", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\udde6\ud83c\uddf9",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  azerbaijan: {
+    keywords: [ "az", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\udde6\ud83c\uddff",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  bahamas: {
+    keywords: [ "bs", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\udde7\ud83c\uddf8",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  bahrain: {
+    keywords: [ "bh", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\udde7\ud83c\udded",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  bangladesh: {
+    keywords: [ "bd", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\udde7\ud83c\udde9",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  barbados: {
+    keywords: [ "bb", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\udde7\ud83c\udde7",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  belarus: {
+    keywords: [ "by", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\udde7\ud83c\uddfe",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  belgium: {
+    keywords: [ "be", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\udde7\ud83c\uddea",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  belize: {
+    keywords: [ "bz", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\udde7\ud83c\uddff",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  benin: {
+    keywords: [ "bj", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\udde7\ud83c\uddef",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  bermuda: {
+    keywords: [ "bm", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\udde7\ud83c\uddf2",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  bhutan: {
+    keywords: [ "bt", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\udde7\ud83c\uddf9",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  bolivia: {
+    keywords: [ "bo", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\udde7\ud83c\uddf4",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  caribbean_netherlands: {
+    keywords: [ "bonaire", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\udde7\ud83c\uddf6",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  bosnia_herzegovina: {
+    keywords: [ "bosnia", "herzegovina", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\udde7\ud83c\udde6",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  botswana: {
+    keywords: [ "bw", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\udde7\ud83c\uddfc",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  brazil: {
+    keywords: [ "br", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\udde7\ud83c\uddf7",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  british_indian_ocean_territory: {
+    keywords: [ "british", "indian", "ocean", "territory", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddee\ud83c\uddf4",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  british_virgin_islands: {
+    keywords: [ "british", "virgin", "islands", "bvi", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddfb\ud83c\uddec",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  brunei: {
+    keywords: [ "bn", "darussalam", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\udde7\ud83c\uddf3",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  bulgaria: {
+    keywords: [ "bg", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\udde7\ud83c\uddec",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  burkina_faso: {
+    keywords: [ "burkina", "faso", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\udde7\ud83c\uddeb",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  burundi: {
+    keywords: [ "bi", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\udde7\ud83c\uddee",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  cape_verde: {
+    keywords: [ "cabo", "verde", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\udde8\ud83c\uddfb",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  cambodia: {
+    keywords: [ "kh", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddf0\ud83c\udded",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  cameroon: {
+    keywords: [ "cm", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\udde8\ud83c\uddf2",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  canada: {
+    keywords: [ "ca", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\udde8\ud83c\udde6",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  canary_islands: {
+    keywords: [ "canary", "islands", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddee\ud83c\udde8",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  cayman_islands: {
+    keywords: [ "cayman", "islands", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddf0\ud83c\uddfe",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  central_african_republic: {
+    keywords: [ "central", "african", "republic", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\udde8\ud83c\uddeb",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  chad: {
+    keywords: [ "td", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddf9\ud83c\udde9",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  chile: {
+    keywords: [ "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\udde8\ud83c\uddf1",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  cn: {
+    keywords: [ "china", "chinese", "prc", "flag", "country", "nation", "banner" ],
+    "char": "\ud83c\udde8\ud83c\uddf3",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  christmas_island: {
+    keywords: [ "christmas", "island", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\udde8\ud83c\uddfd",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  cocos_islands: {
+    keywords: [ "cocos", "keeling", "islands", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\udde8\ud83c\udde8",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  colombia: {
+    keywords: [ "co", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\udde8\ud83c\uddf4",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  comoros: {
+    keywords: [ "km", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddf0\ud83c\uddf2",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  congo_brazzaville: {
+    keywords: [ "congo", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\udde8\ud83c\uddec",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  congo_kinshasa: {
+    keywords: [ "congo", "democratic", "republic", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\udde8\ud83c\udde9",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  cook_islands: {
+    keywords: [ "cook", "islands", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\udde8\ud83c\uddf0",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  costa_rica: {
+    keywords: [ "costa", "rica", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\udde8\ud83c\uddf7",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  croatia: {
+    keywords: [ "hr", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\udded\ud83c\uddf7",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  cuba: {
+    keywords: [ "cu", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\udde8\ud83c\uddfa",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  curacao: {
+    keywords: [ "cura\xe7ao", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\udde8\ud83c\uddfc",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  cyprus: {
+    keywords: [ "cy", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\udde8\ud83c\uddfe",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  czech_republic: {
+    keywords: [ "cz", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\udde8\ud83c\uddff",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  denmark: {
+    keywords: [ "dk", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\udde9\ud83c\uddf0",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  djibouti: {
+    keywords: [ "dj", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\udde9\ud83c\uddef",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  dominica: {
+    keywords: [ "dm", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\udde9\ud83c\uddf2",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  dominican_republic: {
+    keywords: [ "dominican", "republic", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\udde9\ud83c\uddf4",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  ecuador: {
+    keywords: [ "ec", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddea\ud83c\udde8",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  egypt: {
+    keywords: [ "eg", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddea\ud83c\uddec",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  el_salvador: {
+    keywords: [ "el", "salvador", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddf8\ud83c\uddfb",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  equatorial_guinea: {
+    keywords: [ "equatorial", "gn", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddec\ud83c\uddf6",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  eritrea: {
+    keywords: [ "er", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddea\ud83c\uddf7",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  estonia: {
+    keywords: [ "ee", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddea\ud83c\uddea",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  ethiopia: {
+    keywords: [ "et", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddea\ud83c\uddf9",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  eu: {
+    keywords: [ "european", "union", "flag", "banner" ],
+    "char": "\ud83c\uddea\ud83c\uddfa",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  falkland_islands: {
+    keywords: [ "falkland", "islands", "malvinas", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddeb\ud83c\uddf0",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  faroe_islands: {
+    keywords: [ "faroe", "islands", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddeb\ud83c\uddf4",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  fiji: {
+    keywords: [ "fj", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddeb\ud83c\uddef",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  finland: {
+    keywords: [ "fi", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddeb\ud83c\uddee",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  fr: {
+    keywords: [ "banner", "flag", "nation", "france", "french", "country" ],
+    "char": "\ud83c\uddeb\ud83c\uddf7",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  french_guiana: {
+    keywords: [ "french", "guiana", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddec\ud83c\uddeb",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  french_polynesia: {
+    keywords: [ "french", "polynesia", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddf5\ud83c\uddeb",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  french_southern_territories: {
+    keywords: [ "french", "southern", "territories", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddf9\ud83c\uddeb",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  gabon: {
+    keywords: [ "ga", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddec\ud83c\udde6",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  gambia: {
+    keywords: [ "gm", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddec\ud83c\uddf2",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  georgia: {
+    keywords: [ "ge", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddec\ud83c\uddea",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  de: {
+    keywords: [ "german", "nation", "flag", "country", "banner" ],
+    "char": "\ud83c\udde9\ud83c\uddea",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  ghana: {
+    keywords: [ "gh", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddec\ud83c\udded",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  gibraltar: {
+    keywords: [ "gi", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddec\ud83c\uddee",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  greece: {
+    keywords: [ "gr", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddec\ud83c\uddf7",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  greenland: {
+    keywords: [ "gl", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddec\ud83c\uddf1",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  grenada: {
+    keywords: [ "gd", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddec\ud83c\udde9",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  guadeloupe: {
+    keywords: [ "gp", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddec\ud83c\uddf5",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  guam: {
+    keywords: [ "gu", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddec\ud83c\uddfa",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  guatemala: {
+    keywords: [ "gt", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddec\ud83c\uddf9",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  guernsey: {
+    keywords: [ "gg", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddec\ud83c\uddec",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  guinea: {
+    keywords: [ "gn", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddec\ud83c\uddf3",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  guinea_bissau: {
+    keywords: [ "gw", "bissau", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddec\ud83c\uddfc",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  guyana: {
+    keywords: [ "gy", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddec\ud83c\uddfe",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  haiti: {
+    keywords: [ "ht", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\udded\ud83c\uddf9",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  honduras: {
+    keywords: [ "hn", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\udded\ud83c\uddf3",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  hong_kong: {
+    keywords: [ "hong", "kong", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\udded\ud83c\uddf0",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  hungary: {
+    keywords: [ "hu", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\udded\ud83c\uddfa",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  iceland: {
+    keywords: [ "is", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddee\ud83c\uddf8",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  india: {
+    keywords: [ "in", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddee\ud83c\uddf3",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  indonesia: {
+    keywords: [ "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddee\ud83c\udde9",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  iran: {
+    keywords: [ "iran,", "islamic", "republic", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddee\ud83c\uddf7",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  iraq: {
+    keywords: [ "iq", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddee\ud83c\uddf6",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  ireland: {
+    keywords: [ "ie", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddee\ud83c\uddea",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  isle_of_man: {
+    keywords: [ "isle", "man", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddee\ud83c\uddf2",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  israel: {
+    keywords: [ "il", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddee\ud83c\uddf1",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  it: {
+    keywords: [ "italy", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddee\ud83c\uddf9",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  cote_divoire: {
+    keywords: [ "ivory", "coast", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\udde8\ud83c\uddee",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  jamaica: {
+    keywords: [ "jm", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddef\ud83c\uddf2",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  jp: {
+    keywords: [ "japanese", "nation", "flag", "country", "banner" ],
+    "char": "\ud83c\uddef\ud83c\uddf5",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  jersey: {
+    keywords: [ "je", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddef\ud83c\uddea",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  jordan: {
+    keywords: [ "jo", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddef\ud83c\uddf4",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  kazakhstan: {
+    keywords: [ "kz", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddf0\ud83c\uddff",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  kenya: {
+    keywords: [ "ke", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddf0\ud83c\uddea",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  kiribati: {
+    keywords: [ "ki", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddf0\ud83c\uddee",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  kosovo: {
+    keywords: [ "xk", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddfd\ud83c\uddf0",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  kuwait: {
+    keywords: [ "kw", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddf0\ud83c\uddfc",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  kyrgyzstan: {
+    keywords: [ "kg", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddf0\ud83c\uddec",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  laos: {
+    keywords: [ "lao", "democratic", "republic", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddf1\ud83c\udde6",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  latvia: {
+    keywords: [ "lv", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddf1\ud83c\uddfb",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  lebanon: {
+    keywords: [ "lb", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddf1\ud83c\udde7",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  lesotho: {
+    keywords: [ "ls", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddf1\ud83c\uddf8",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  liberia: {
+    keywords: [ "lr", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddf1\ud83c\uddf7",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  libya: {
+    keywords: [ "ly", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddf1\ud83c\uddfe",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  liechtenstein: {
+    keywords: [ "li", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddf1\ud83c\uddee",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  lithuania: {
+    keywords: [ "lt", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddf1\ud83c\uddf9",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  luxembourg: {
+    keywords: [ "lu", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddf1\ud83c\uddfa",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  macau: {
+    keywords: [ "macao", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddf2\ud83c\uddf4",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  macedonia: {
+    keywords: [ "macedonia,", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddf2\ud83c\uddf0",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  madagascar: {
+    keywords: [ "mg", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddf2\ud83c\uddec",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  malawi: {
+    keywords: [ "mw", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddf2\ud83c\uddfc",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  malaysia: {
+    keywords: [ "my", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddf2\ud83c\uddfe",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  maldives: {
+    keywords: [ "mv", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddf2\ud83c\uddfb",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  mali: {
+    keywords: [ "ml", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddf2\ud83c\uddf1",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  malta: {
+    keywords: [ "mt", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddf2\ud83c\uddf9",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  marshall_islands: {
+    keywords: [ "marshall", "islands", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddf2\ud83c\udded",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  martinique: {
+    keywords: [ "mq", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddf2\ud83c\uddf6",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  mauritania: {
+    keywords: [ "mr", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddf2\ud83c\uddf7",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  mauritius: {
+    keywords: [ "mu", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddf2\ud83c\uddfa",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  mayotte: {
+    keywords: [ "yt", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddfe\ud83c\uddf9",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  mexico: {
+    keywords: [ "mx", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddf2\ud83c\uddfd",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  micronesia: {
+    keywords: [ "micronesia,", "federated", "states", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddeb\ud83c\uddf2",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  moldova: {
+    keywords: [ "moldova,", "republic", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddf2\ud83c\udde9",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  monaco: {
+    keywords: [ "mc", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddf2\ud83c\udde8",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  mongolia: {
+    keywords: [ "mn", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddf2\ud83c\uddf3",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  montenegro: {
+    keywords: [ "me", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddf2\ud83c\uddea",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  montserrat: {
+    keywords: [ "ms", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddf2\ud83c\uddf8",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  morocco: {
+    keywords: [ "ma", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddf2\ud83c\udde6",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  mozambique: {
+    keywords: [ "mz", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddf2\ud83c\uddff",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  myanmar: {
+    keywords: [ "mm", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddf2\ud83c\uddf2",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  namibia: {
+    keywords: [ "na", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddf3\ud83c\udde6",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  nauru: {
+    keywords: [ "nr", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddf3\ud83c\uddf7",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  nepal: {
+    keywords: [ "np", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddf3\ud83c\uddf5",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  netherlands: {
+    keywords: [ "nl", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddf3\ud83c\uddf1",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  new_caledonia: {
+    keywords: [ "new", "caledonia", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddf3\ud83c\udde8",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  new_zealand: {
+    keywords: [ "new", "zealand", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddf3\ud83c\uddff",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  nicaragua: {
+    keywords: [ "ni", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddf3\ud83c\uddee",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  niger: {
+    keywords: [ "ne", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddf3\ud83c\uddea",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  nigeria: {
+    keywords: [ "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddf3\ud83c\uddec",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  niue: {
+    keywords: [ "nu", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddf3\ud83c\uddfa",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  norfolk_island: {
+    keywords: [ "norfolk", "island", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddf3\ud83c\uddeb",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  northern_mariana_islands: {
+    keywords: [ "northern", "mariana", "islands", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddf2\ud83c\uddf5",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  north_korea: {
+    keywords: [ "north", "korea", "nation", "flag", "country", "banner" ],
+    "char": "\ud83c\uddf0\ud83c\uddf5",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  norway: {
+    keywords: [ "no", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddf3\ud83c\uddf4",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  oman: {
+    keywords: [ "om_symbol", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddf4\ud83c\uddf2",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  pakistan: {
+    keywords: [ "pk", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddf5\ud83c\uddf0",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  palau: {
+    keywords: [ "pw", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddf5\ud83c\uddfc",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  palestinian_territories: {
+    keywords: [ "palestine", "palestinian", "territories", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddf5\ud83c\uddf8",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  panama: {
+    keywords: [ "pa", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddf5\ud83c\udde6",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  papua_new_guinea: {
+    keywords: [ "papua", "new", "guinea", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddf5\ud83c\uddec",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  paraguay: {
+    keywords: [ "py", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddf5\ud83c\uddfe",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  peru: {
+    keywords: [ "pe", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddf5\ud83c\uddea",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  philippines: {
+    keywords: [ "ph", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddf5\ud83c\udded",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  pitcairn_islands: {
+    keywords: [ "pitcairn", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddf5\ud83c\uddf3",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  poland: {
+    keywords: [ "pl", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddf5\ud83c\uddf1",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  portugal: {
+    keywords: [ "pt", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddf5\ud83c\uddf9",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  puerto_rico: {
+    keywords: [ "puerto", "rico", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddf5\ud83c\uddf7",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  qatar: {
+    keywords: [ "qa", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddf6\ud83c\udde6",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  reunion: {
+    keywords: [ "r\xe9union", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddf7\ud83c\uddea",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  romania: {
+    keywords: [ "ro", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddf7\ud83c\uddf4",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  ru: {
+    keywords: [ "russian", "federation", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddf7\ud83c\uddfa",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  rwanda: {
+    keywords: [ "rw", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddf7\ud83c\uddfc",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  st_barthelemy: {
+    keywords: [ "saint", "barth\xe9lemy", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\udde7\ud83c\uddf1",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  st_helena: {
+    keywords: [ "saint", "helena", "ascension", "tristan", "cunha", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddf8\ud83c\udded",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  st_kitts_nevis: {
+    keywords: [ "saint", "kitts", "nevis", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddf0\ud83c\uddf3",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  st_lucia: {
+    keywords: [ "saint", "lucia", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddf1\ud83c\udde8",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  st_pierre_miquelon: {
+    keywords: [ "saint", "pierre", "miquelon", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddf5\ud83c\uddf2",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  st_vincent_grenadines: {
+    keywords: [ "saint", "vincent", "grenadines", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddfb\ud83c\udde8",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  samoa: {
+    keywords: [ "ws", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddfc\ud83c\uddf8",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  san_marino: {
+    keywords: [ "san", "marino", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddf8\ud83c\uddf2",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  sao_tome_principe: {
+    keywords: [ "sao", "tome", "principe", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddf8\ud83c\uddf9",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  saudi_arabia: {
+    keywords: [ "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddf8\ud83c\udde6",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  senegal: {
+    keywords: [ "sn", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddf8\ud83c\uddf3",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  serbia: {
+    keywords: [ "rs", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddf7\ud83c\uddf8",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  seychelles: {
+    keywords: [ "sc", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddf8\ud83c\udde8",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  sierra_leone: {
+    keywords: [ "sierra", "leone", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddf8\ud83c\uddf1",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  singapore: {
+    keywords: [ "sg", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddf8\ud83c\uddec",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  sint_maarten: {
+    keywords: [ "sint", "maarten", "dutch", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddf8\ud83c\uddfd",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  slovakia: {
+    keywords: [ "sk", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddf8\ud83c\uddf0",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  slovenia: {
+    keywords: [ "si", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddf8\ud83c\uddee",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  solomon_islands: {
+    keywords: [ "solomon", "islands", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddf8\ud83c\udde7",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  somalia: {
+    keywords: [ "so", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddf8\ud83c\uddf4",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  south_africa: {
+    keywords: [ "south", "africa", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddff\ud83c\udde6",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  south_georgia_south_sandwich_islands: {
+    keywords: [ "south", "georgia", "sandwich", "islands", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddec\ud83c\uddf8",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  kr: {
+    keywords: [ "south", "korea", "nation", "flag", "country", "banner" ],
+    "char": "\ud83c\uddf0\ud83c\uddf7",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  south_sudan: {
+    keywords: [ "south", "sd", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddf8\ud83c\uddf8",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  es: {
+    keywords: [ "spain", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddea\ud83c\uddf8",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  sri_lanka: {
+    keywords: [ "sri", "lanka", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddf1\ud83c\uddf0",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  sudan: {
+    keywords: [ "sd", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddf8\ud83c\udde9",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  suriname: {
+    keywords: [ "sr", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddf8\ud83c\uddf7",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  swaziland: {
+    keywords: [ "sz", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddf8\ud83c\uddff",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  sweden: {
+    keywords: [ "se", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddf8\ud83c\uddea",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  switzerland: {
+    keywords: [ "ch", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\udde8\ud83c\udded",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  syria: {
+    keywords: [ "syrian", "arab", "republic", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddf8\ud83c\uddfe",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  taiwan: {
+    keywords: [ "tw", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddf9\ud83c\uddfc",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  tajikistan: {
+    keywords: [ "tj", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddf9\ud83c\uddef",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  tanzania: {
+    keywords: [ "tanzania,", "united", "republic", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddf9\ud83c\uddff",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  thailand: {
+    keywords: [ "th", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddf9\ud83c\udded",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  timor_leste: {
+    keywords: [ "timor", "leste", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddf9\ud83c\uddf1",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  togo: {
+    keywords: [ "tg", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddf9\ud83c\uddec",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  tokelau: {
+    keywords: [ "tk", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddf9\ud83c\uddf0",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  tonga: {
+    keywords: [ "to", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddf9\ud83c\uddf4",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  trinidad_tobago: {
+    keywords: [ "trinidad", "tobago", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddf9\ud83c\uddf9",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  tunisia: {
+    keywords: [ "tn", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddf9\ud83c\uddf3",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  tr: {
+    keywords: [ "turkey", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddf9\ud83c\uddf7",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  turkmenistan: {
+    keywords: [ "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddf9\ud83c\uddf2",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  turks_caicos_islands: {
+    keywords: [ "turks", "caicos", "islands", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddf9\ud83c\udde8",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  tuvalu: {
+    keywords: [ "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddf9\ud83c\uddfb",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  uganda: {
+    keywords: [ "ug", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddfa\ud83c\uddec",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  ukraine: {
+    keywords: [ "ua", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddfa\ud83c\udde6",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  united_arab_emirates: {
+    keywords: [ "united", "arab", "emirates", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\udde6\ud83c\uddea",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  uk: {
+    keywords: [ "united", "kingdom", "great", "britain", "northern", "ireland", "flag", "nation", "country", "banner", "british", "UK", "english", "england", "union jack" ],
+    "char": "\ud83c\uddec\ud83c\udde7",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  england: {
+    keywords: [ "flag", "english" ],
+    "char": "\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  scotland: {
+    keywords: [ "flag", "scottish" ],
+    "char": "\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc73\udb40\udc63\udb40\udc74\udb40\udc7f",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  wales: {
+    keywords: [ "flag", "welsh" ],
+    "char": "\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc77\udb40\udc6c\udb40\udc73\udb40\udc7f",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  us: {
+    keywords: [ "united", "states", "america", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddfa\ud83c\uddf8",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  us_virgin_islands: {
+    keywords: [ "virgin", "islands", "us", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddfb\ud83c\uddee",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  uruguay: {
+    keywords: [ "uy", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddfa\ud83c\uddfe",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  uzbekistan: {
+    keywords: [ "uz", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddfa\ud83c\uddff",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  vanuatu: {
+    keywords: [ "vu", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddfb\ud83c\uddfa",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  vatican_city: {
+    keywords: [ "vatican", "city", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddfb\ud83c\udde6",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  venezuela: {
+    keywords: [ "ve", "bolivarian", "republic", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddfb\ud83c\uddea",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  vietnam: {
+    keywords: [ "viet", "nam", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddfb\ud83c\uddf3",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  wallis_futuna: {
+    keywords: [ "wallis", "futuna", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddfc\ud83c\uddeb",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  western_sahara: {
+    keywords: [ "western", "sahara", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddea\ud83c\udded",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  yemen: {
+    keywords: [ "ye", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddfe\ud83c\uddea",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  zambia: {
+    keywords: [ "zm", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddff\ud83c\uddf2",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  zimbabwe: {
+    keywords: [ "zw", "flag", "nation", "country", "banner" ],
+    "char": "\ud83c\uddff\ud83c\uddfc",
+    fitzpatrick_scale: false,
+    category: "flags"
+  }
+});
\ No newline at end of file
diff --git a/admin/js/vendors/tinymce/js/tinymce/plugins/emoticons/js/emojis.min.js b/admin/js/vendors/tinymce/js/tinymce/plugins/emoticons/js/emojis.min.js
new file mode 100644 (file)
index 0000000..5e59213
--- /dev/null
@@ -0,0 +1,2 @@
+// NOTE: Source: npm package: emojilib, file:emojis.json
+window.tinymce.Resource.add("tinymce.plugins.emoticons",{grinning:{keywords:["face","smile","happy","joy",":D","grin"],"char":"\ud83d\ude00",fitzpatrick_scale:!1,category:"people"},grimacing:{keywords:["face","grimace","teeth"],"char":"\ud83d\ude2c",fitzpatrick_scale:!1,category:"people"},grin:{keywords:["face","happy","smile","joy","kawaii"],"char":"\ud83d\ude01",fitzpatrick_scale:!1,category:"people"},joy:{keywords:["face","cry","tears","weep","happy","happytears","haha"],"char":"\ud83d\ude02",fitzpatrick_scale:!1,category:"people"},rofl:{keywords:["face","rolling","floor","laughing","lol","haha"],"char":"\ud83e\udd23",fitzpatrick_scale:!1,category:"people"},smiley:{keywords:["face","happy","joy","haha",":D",":)","smile","funny"],"char":"\ud83d\ude03",fitzpatrick_scale:!1,category:"people"},smile:{keywords:["face","happy","joy","funny","haha","laugh","like",":D",":)"],"char":"\ud83d\ude04",fitzpatrick_scale:!1,category:"people"},sweat_smile:{keywords:["face","hot","happy","laugh","sweat","smile","relief"],"char":"\ud83d\ude05",fitzpatrick_scale:!1,category:"people"},laughing:{keywords:["happy","joy","lol","satisfied","haha","face","glad","XD","laugh"],"char":"\ud83d\ude06",fitzpatrick_scale:!1,category:"people"},innocent:{keywords:["face","angel","heaven","halo"],"char":"\ud83d\ude07",fitzpatrick_scale:!1,category:"people"},wink:{keywords:["face","happy","mischievous","secret",";)","smile","eye"],"char":"\ud83d\ude09",fitzpatrick_scale:!1,category:"people"},blush:{keywords:["face","smile","happy","flushed","crush","embarrassed","shy","joy"],"char":"\ud83d\ude0a",fitzpatrick_scale:!1,category:"people"},slightly_smiling_face:{keywords:["face","smile"],"char":"\ud83d\ude42",fitzpatrick_scale:!1,category:"people"},upside_down_face:{keywords:["face","flipped","silly","smile"],"char":"\ud83d\ude43",fitzpatrick_scale:!1,category:"people"},relaxed:{keywords:["face","blush","massage","happiness"],"char":"\u263a\ufe0f",fitzpatrick_scale:!1,category:"people"},yum:{keywords:["happy","joy","tongue","smile","face","silly","yummy","nom","delicious","savouring"],"char":"\ud83d\ude0b",fitzpatrick_scale:!1,category:"people"},relieved:{keywords:["face","relaxed","phew","massage","happiness"],"char":"\ud83d\ude0c",fitzpatrick_scale:!1,category:"people"},heart_eyes:{keywords:["face","love","like","affection","valentines","infatuation","crush","heart"],"char":"\ud83d\ude0d",fitzpatrick_scale:!1,category:"people"},kissing_heart:{keywords:["face","love","like","affection","valentines","infatuation","kiss"],"char":"\ud83d\ude18",fitzpatrick_scale:!1,category:"people"},kissing:{keywords:["love","like","face","3","valentines","infatuation","kiss"],"char":"\ud83d\ude17",fitzpatrick_scale:!1,category:"people"},kissing_smiling_eyes:{keywords:["face","affection","valentines","infatuation","kiss"],"char":"\ud83d\ude19",fitzpatrick_scale:!1,category:"people"},kissing_closed_eyes:{keywords:["face","love","like","affection","valentines","infatuation","kiss"],"char":"\ud83d\ude1a",fitzpatrick_scale:!1,category:"people"},stuck_out_tongue_winking_eye:{keywords:["face","prank","childish","playful","mischievous","smile","wink","tongue"],"char":"\ud83d\ude1c",fitzpatrick_scale:!1,category:"people"},zany:{keywords:["face","goofy","crazy"],"char":"\ud83e\udd2a",fitzpatrick_scale:!1,category:"people"},raised_eyebrow:{keywords:["face","distrust","scepticism","disapproval","disbelief","surprise"],"char":"\ud83e\udd28",fitzpatrick_scale:!1,category:"people"},monocle:{keywords:["face","stuffy","wealthy"],"char":"\ud83e\uddd0",fitzpatrick_scale:!1,category:"people"},stuck_out_tongue_closed_eyes:{keywords:["face","prank","playful","mischievous","smile","tongue"],"char":"\ud83d\ude1d",fitzpatrick_scale:!1,category:"people"},stuck_out_tongue:{keywords:["face","prank","childish","playful","mischievous","smile","tongue"],"char":"\ud83d\ude1b",fitzpatrick_scale:!1,category:"people"},money_mouth_face:{keywords:["face","rich","dollar","money"],"char":"\ud83e\udd11",fitzpatrick_scale:!1,category:"people"},nerd_face:{keywords:["face","nerdy","geek","dork"],"char":"\ud83e\udd13",fitzpatrick_scale:!1,category:"people"},sunglasses:{keywords:["face","cool","smile","summer","beach","sunglass"],"char":"\ud83d\ude0e",fitzpatrick_scale:!1,category:"people"},star_struck:{keywords:["face","smile","starry","eyes","grinning"],"char":"\ud83e\udd29",fitzpatrick_scale:!1,category:"people"},clown_face:{keywords:["face"],"char":"\ud83e\udd21",fitzpatrick_scale:!1,category:"people"},cowboy_hat_face:{keywords:["face","cowgirl","hat"],"char":"\ud83e\udd20",fitzpatrick_scale:!1,category:"people"},hugs:{keywords:["face","smile","hug"],"char":"\ud83e\udd17",fitzpatrick_scale:!1,category:"people"},smirk:{keywords:["face","smile","mean","prank","smug","sarcasm"],"char":"\ud83d\ude0f",fitzpatrick_scale:!1,category:"people"},no_mouth:{keywords:["face","hellokitty"],"char":"\ud83d\ude36",fitzpatrick_scale:!1,category:"people"},neutral_face:{keywords:["indifference","meh",":|","neutral"],"char":"\ud83d\ude10",fitzpatrick_scale:!1,category:"people"},expressionless:{keywords:["face","indifferent","-_-","meh","deadpan"],"char":"\ud83d\ude11",fitzpatrick_scale:!1,category:"people"},unamused:{keywords:["indifference","bored","straight face","serious","sarcasm","unimpressed","skeptical","dubious","side_eye"],"char":"\ud83d\ude12",fitzpatrick_scale:!1,category:"people"},roll_eyes:{keywords:["face","eyeroll","frustrated"],"char":"\ud83d\ude44",fitzpatrick_scale:!1,category:"people"},thinking:{keywords:["face","hmmm","think","consider"],"char":"\ud83e\udd14",fitzpatrick_scale:!1,category:"people"},lying_face:{keywords:["face","lie","pinocchio"],"char":"\ud83e\udd25",fitzpatrick_scale:!1,category:"people"},hand_over_mouth:{keywords:["face","whoops","shock","surprise"],"char":"\ud83e\udd2d",fitzpatrick_scale:!1,category:"people"},shushing:{keywords:["face","quiet","shhh"],"char":"\ud83e\udd2b",fitzpatrick_scale:!1,category:"people"},symbols_over_mouth:{keywords:["face","swearing","cursing","cussing","profanity","expletive"],"char":"\ud83e\udd2c",fitzpatrick_scale:!1,category:"people"},exploding_head:{keywords:["face","shocked","mind","blown"],"char":"\ud83e\udd2f",fitzpatrick_scale:!1,category:"people"},flushed:{keywords:["face","blush","shy","flattered"],"char":"\ud83d\ude33",fitzpatrick_scale:!1,category:"people"},disappointed:{keywords:["face","sad","upset","depressed",":("],"char":"\ud83d\ude1e",fitzpatrick_scale:!1,category:"people"},worried:{keywords:["face","concern","nervous",":("],"char":"\ud83d\ude1f",fitzpatrick_scale:!1,category:"people"},angry:{keywords:["mad","face","annoyed","frustrated"],"char":"\ud83d\ude20",fitzpatrick_scale:!1,category:"people"},rage:{keywords:["angry","mad","hate","despise"],"char":"\ud83d\ude21",fitzpatrick_scale:!1,category:"people"},pensive:{keywords:["face","sad","depressed","upset"],"char":"\ud83d\ude14",fitzpatrick_scale:!1,category:"people"},confused:{keywords:["face","indifference","huh","weird","hmmm",":/"],"char":"\ud83d\ude15",fitzpatrick_scale:!1,category:"people"},slightly_frowning_face:{keywords:["face","frowning","disappointed","sad","upset"],"char":"\ud83d\ude41",fitzpatrick_scale:!1,category:"people"},frowning_face:{keywords:["face","sad","upset","frown"],"char":"\u2639",fitzpatrick_scale:!1,category:"people"},persevere:{keywords:["face","sick","no","upset","oops"],"char":"\ud83d\ude23",fitzpatrick_scale:!1,category:"people"},confounded:{keywords:["face","confused","sick","unwell","oops",":S"],"char":"\ud83d\ude16",fitzpatrick_scale:!1,category:"people"},tired_face:{keywords:["sick","whine","upset","frustrated"],"char":"\ud83d\ude2b",fitzpatrick_scale:!1,category:"people"},weary:{keywords:["face","tired","sleepy","sad","frustrated","upset"],"char":"\ud83d\ude29",fitzpatrick_scale:!1,category:"people"},triumph:{keywords:["face","gas","phew","proud","pride"],"char":"\ud83d\ude24",fitzpatrick_scale:!1,category:"people"},open_mouth:{keywords:["face","surprise","impressed","wow","whoa",":O"],"char":"\ud83d\ude2e",fitzpatrick_scale:!1,category:"people"},scream:{keywords:["face","munch","scared","omg"],"char":"\ud83d\ude31",fitzpatrick_scale:!1,category:"people"},fearful:{keywords:["face","scared","terrified","nervous","oops","huh"],"char":"\ud83d\ude28",fitzpatrick_scale:!1,category:"people"},cold_sweat:{keywords:["face","nervous","sweat"],"char":"\ud83d\ude30",fitzpatrick_scale:!1,category:"people"},hushed:{keywords:["face","woo","shh"],"char":"\ud83d\ude2f",fitzpatrick_scale:!1,category:"people"},frowning:{keywords:["face","aw","what"],"char":"\ud83d\ude26",fitzpatrick_scale:!1,category:"people"},anguished:{keywords:["face","stunned","nervous"],"char":"\ud83d\ude27",fitzpatrick_scale:!1,category:"people"},cry:{keywords:["face","tears","sad","depressed","upset",":'("],"char":"\ud83d\ude22",fitzpatrick_scale:!1,category:"people"},disappointed_relieved:{keywords:["face","phew","sweat","nervous"],"char":"\ud83d\ude25",fitzpatrick_scale:!1,category:"people"},drooling_face:{keywords:["face"],"char":"\ud83e\udd24",fitzpatrick_scale:!1,category:"people"},sleepy:{keywords:["face","tired","rest","nap"],"char":"\ud83d\ude2a",fitzpatrick_scale:!1,category:"people"},sweat:{keywords:["face","hot","sad","tired","exercise"],"char":"\ud83d\ude13",fitzpatrick_scale:!1,category:"people"},sob:{keywords:["face","cry","tears","sad","upset","depressed"],"char":"\ud83d\ude2d",fitzpatrick_scale:!1,category:"people"},dizzy_face:{keywords:["spent","unconscious","xox","dizzy"],"char":"\ud83d\ude35",fitzpatrick_scale:!1,category:"people"},astonished:{keywords:["face","xox","surprised","poisoned"],"char":"\ud83d\ude32",fitzpatrick_scale:!1,category:"people"},zipper_mouth_face:{keywords:["face","sealed","zipper","secret"],"char":"\ud83e\udd10",fitzpatrick_scale:!1,category:"people"},nauseated_face:{keywords:["face","vomit","gross","green","sick","throw up","ill"],"char":"\ud83e\udd22",fitzpatrick_scale:!1,category:"people"},sneezing_face:{keywords:["face","gesundheit","sneeze","sick","allergy"],"char":"\ud83e\udd27",fitzpatrick_scale:!1,category:"people"},vomiting:{keywords:["face","sick"],"char":"\ud83e\udd2e",fitzpatrick_scale:!1,category:"people"},mask:{keywords:["face","sick","ill","disease"],"char":"\ud83d\ude37",fitzpatrick_scale:!1,category:"people"},face_with_thermometer:{keywords:["sick","temperature","thermometer","cold","fever"],"char":"\ud83e\udd12",fitzpatrick_scale:!1,category:"people"},face_with_head_bandage:{keywords:["injured","clumsy","bandage","hurt"],"char":"\ud83e\udd15",fitzpatrick_scale:!1,category:"people"},sleeping:{keywords:["face","tired","sleepy","night","zzz"],"char":"\ud83d\ude34",fitzpatrick_scale:!1,category:"people"},zzz:{keywords:["sleepy","tired","dream"],"char":"\ud83d\udca4",fitzpatrick_scale:!1,category:"people"},poop:{keywords:["hankey","shitface","fail","turd","shit"],"char":"\ud83d\udca9",fitzpatrick_scale:!1,category:"people"},smiling_imp:{keywords:["devil","horns"],"char":"\ud83d\ude08",fitzpatrick_scale:!1,category:"people"},imp:{keywords:["devil","angry","horns"],"char":"\ud83d\udc7f",fitzpatrick_scale:!1,category:"people"},japanese_ogre:{keywords:["monster","red","mask","halloween","scary","creepy","devil","demon","japanese","ogre"],"char":"\ud83d\udc79",fitzpatrick_scale:!1,category:"people"},japanese_goblin:{keywords:["red","evil","mask","monster","scary","creepy","japanese","goblin"],"char":"\ud83d\udc7a",fitzpatrick_scale:!1,category:"people"},skull:{keywords:["dead","skeleton","creepy","death"],"char":"\ud83d\udc80",fitzpatrick_scale:!1,category:"people"},ghost:{keywords:["halloween","spooky","scary"],"char":"\ud83d\udc7b",fitzpatrick_scale:!1,category:"people"},alien:{keywords:["UFO","paul","weird","outer_space"],"char":"\ud83d\udc7d",fitzpatrick_scale:!1,category:"people"},robot:{keywords:["computer","machine","bot"],"char":"\ud83e\udd16",fitzpatrick_scale:!1,category:"people"},smiley_cat:{keywords:["animal","cats","happy","smile"],"char":"\ud83d\ude3a",fitzpatrick_scale:!1,category:"people"},smile_cat:{keywords:["animal","cats","smile"],"char":"\ud83d\ude38",fitzpatrick_scale:!1,category:"people"},joy_cat:{keywords:["animal","cats","haha","happy","tears"],"char":"\ud83d\ude39",fitzpatrick_scale:!1,category:"people"},heart_eyes_cat:{keywords:["animal","love","like","affection","cats","valentines","heart"],"char":"\ud83d\ude3b",fitzpatrick_scale:!1,category:"people"},smirk_cat:{keywords:["animal","cats","smirk"],"char":"\ud83d\ude3c",fitzpatrick_scale:!1,category:"people"},kissing_cat:{keywords:["animal","cats","kiss"],"char":"\ud83d\ude3d",fitzpatrick_scale:!1,category:"people"},scream_cat:{keywords:["animal","cats","munch","scared","scream"],"char":"\ud83d\ude40",fitzpatrick_scale:!1,category:"people"},crying_cat_face:{keywords:["animal","tears","weep","sad","cats","upset","cry"],"char":"\ud83d\ude3f",fitzpatrick_scale:!1,category:"people"},pouting_cat:{keywords:["animal","cats"],"char":"\ud83d\ude3e",fitzpatrick_scale:!1,category:"people"},palms_up:{keywords:["hands","gesture","cupped","prayer"],"char":"\ud83e\udd32",fitzpatrick_scale:!0,category:"people"},raised_hands:{keywords:["gesture","hooray","yea","celebration","hands"],"char":"\ud83d\ude4c",fitzpatrick_scale:!0,category:"people"},clap:{keywords:["hands","praise","applause","congrats","yay"],"char":"\ud83d\udc4f",fitzpatrick_scale:!0,category:"people"},wave:{keywords:["hands","gesture","goodbye","solong","farewell","hello","hi","palm"],"char":"\ud83d\udc4b",fitzpatrick_scale:!0,category:"people"},call_me_hand:{keywords:["hands","gesture"],"char":"\ud83e\udd19",fitzpatrick_scale:!0,category:"people"},"+1":{keywords:["thumbsup","yes","awesome","good","agree","accept","cool","hand","like"],"char":"\ud83d\udc4d",fitzpatrick_scale:!0,category:"people"},"-1":{keywords:["thumbsdown","no","dislike","hand"],"char":"\ud83d\udc4e",fitzpatrick_scale:!0,category:"people"},facepunch:{keywords:["angry","violence","fist","hit","attack","hand"],"char":"\ud83d\udc4a",fitzpatrick_scale:!0,category:"people"},fist:{keywords:["fingers","hand","grasp"],"char":"\u270a",fitzpatrick_scale:!0,category:"people"},fist_left:{keywords:["hand","fistbump"],"char":"\ud83e\udd1b",fitzpatrick_scale:!0,category:"people"},fist_right:{keywords:["hand","fistbump"],"char":"\ud83e\udd1c",fitzpatrick_scale:!0,category:"people"},v:{keywords:["fingers","ohyeah","hand","peace","victory","two"],"char":"\u270c",fitzpatrick_scale:!0,category:"people"},ok_hand:{keywords:["fingers","limbs","perfect","ok","okay"],"char":"\ud83d\udc4c",fitzpatrick_scale:!0,category:"people"},raised_hand:{keywords:["fingers","stop","highfive","palm","ban"],"char":"\u270b",fitzpatrick_scale:!0,category:"people"},raised_back_of_hand:{keywords:["fingers","raised","backhand"],"char":"\ud83e\udd1a",fitzpatrick_scale:!0,category:"people"},open_hands:{keywords:["fingers","butterfly","hands","open"],"char":"\ud83d\udc50",fitzpatrick_scale:!0,category:"people"},muscle:{keywords:["arm","flex","hand","summer","strong","biceps"],"char":"\ud83d\udcaa",fitzpatrick_scale:!0,category:"people"},pray:{keywords:["please","hope","wish","namaste","highfive"],"char":"\ud83d\ude4f",fitzpatrick_scale:!0,category:"people"},handshake:{keywords:["agreement","shake"],"char":"\ud83e\udd1d",fitzpatrick_scale:!1,category:"people"},point_up:{keywords:["hand","fingers","direction","up"],"char":"\u261d",fitzpatrick_scale:!0,category:"people"},point_up_2:{keywords:["fingers","hand","direction","up"],"char":"\ud83d\udc46",fitzpatrick_scale:!0,category:"people"},point_down:{keywords:["fingers","hand","direction","down"],"char":"\ud83d\udc47",fitzpatrick_scale:!0,category:"people"},point_left:{keywords:["direction","fingers","hand","left"],"char":"\ud83d\udc48",fitzpatrick_scale:!0,category:"people"},point_right:{keywords:["fingers","hand","direction","right"],"char":"\ud83d\udc49",fitzpatrick_scale:!0,category:"people"},fu:{keywords:["hand","fingers","rude","middle","flipping"],"char":"\ud83d\udd95",fitzpatrick_scale:!0,category:"people"},raised_hand_with_fingers_splayed:{keywords:["hand","fingers","palm"],"char":"\ud83d\udd90",fitzpatrick_scale:!0,category:"people"},love_you:{keywords:["hand","fingers","gesture"],"char":"\ud83e\udd1f",fitzpatrick_scale:!0,category:"people"},metal:{keywords:["hand","fingers","evil_eye","sign_of_horns","rock_on"],"char":"\ud83e\udd18",fitzpatrick_scale:!0,category:"people"},crossed_fingers:{keywords:["good","lucky"],"char":"\ud83e\udd1e",fitzpatrick_scale:!0,category:"people"},vulcan_salute:{keywords:["hand","fingers","spock","star trek"],"char":"\ud83d\udd96",fitzpatrick_scale:!0,category:"people"},writing_hand:{keywords:["lower_left_ballpoint_pen","stationery","write","compose"],"char":"\u270d",fitzpatrick_scale:!0,category:"people"},selfie:{keywords:["camera","phone"],"char":"\ud83e\udd33",fitzpatrick_scale:!0,category:"people"},nail_care:{keywords:["beauty","manicure","finger","fashion","nail"],"char":"\ud83d\udc85",fitzpatrick_scale:!0,category:"people"},lips:{keywords:["mouth","kiss"],"char":"\ud83d\udc44",fitzpatrick_scale:!1,category:"people"},tongue:{keywords:["mouth","playful"],"char":"\ud83d\udc45",fitzpatrick_scale:!1,category:"people"},ear:{keywords:["face","hear","sound","listen"],"char":"\ud83d\udc42",fitzpatrick_scale:!0,category:"people"},nose:{keywords:["smell","sniff"],"char":"\ud83d\udc43",fitzpatrick_scale:!0,category:"people"},eye:{keywords:["face","look","see","watch","stare"],"char":"\ud83d\udc41",fitzpatrick_scale:!1,category:"people"},eyes:{keywords:["look","watch","stalk","peek","see"],"char":"\ud83d\udc40",fitzpatrick_scale:!1,category:"people"},brain:{keywords:["smart","intelligent"],"char":"\ud83e\udde0",fitzpatrick_scale:!1,category:"people"},bust_in_silhouette:{keywords:["user","person","human"],"char":"\ud83d\udc64",fitzpatrick_scale:!1,category:"people"},busts_in_silhouette:{keywords:["user","person","human","group","team"],"char":"\ud83d\udc65",fitzpatrick_scale:!1,category:"people"},speaking_head:{keywords:["user","person","human","sing","say","talk"],"char":"\ud83d\udde3",fitzpatrick_scale:!1,category:"people"},baby:{keywords:["child","boy","girl","toddler"],"char":"\ud83d\udc76",fitzpatrick_scale:!0,category:"people"},child:{keywords:["gender-neutral","young"],"char":"\ud83e\uddd2",fitzpatrick_scale:!0,category:"people"},boy:{keywords:["man","male","guy","teenager"],"char":"\ud83d\udc66",fitzpatrick_scale:!0,category:"people"},girl:{keywords:["female","woman","teenager"],"char":"\ud83d\udc67",fitzpatrick_scale:!0,category:"people"},adult:{keywords:["gender-neutral","person"],"char":"\ud83e\uddd1",fitzpatrick_scale:!0,category:"people"},man:{keywords:["mustache","father","dad","guy","classy","sir","moustache"],"char":"\ud83d\udc68",fitzpatrick_scale:!0,category:"people"},woman:{keywords:["female","girls","lady"],"char":"\ud83d\udc69",fitzpatrick_scale:!0,category:"people"},blonde_woman:{keywords:["woman","female","girl","blonde","person"],"char":"\ud83d\udc71\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},blonde_man:{keywords:["man","male","boy","blonde","guy","person"],"char":"\ud83d\udc71",fitzpatrick_scale:!0,category:"people"},bearded_person:{keywords:["person","bewhiskered"],"char":"\ud83e\uddd4",fitzpatrick_scale:!0,category:"people"},older_adult:{keywords:["human","elder","senior","gender-neutral"],"char":"\ud83e\uddd3",fitzpatrick_scale:!0,category:"people"},older_man:{keywords:["human","male","men","old","elder","senior"],"char":"\ud83d\udc74",fitzpatrick_scale:!0,category:"people"},older_woman:{keywords:["human","female","women","lady","old","elder","senior"],"char":"\ud83d\udc75",fitzpatrick_scale:!0,category:"people"},man_with_gua_pi_mao:{keywords:["male","boy","chinese"],"char":"\ud83d\udc72",fitzpatrick_scale:!0,category:"people"},woman_with_headscarf:{keywords:["female","hijab","mantilla","tichel"],"char":"\ud83e\uddd5",fitzpatrick_scale:!0,category:"people"},woman_with_turban:{keywords:["female","indian","hinduism","arabs","woman"],"char":"\ud83d\udc73\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},man_with_turban:{keywords:["male","indian","hinduism","arabs"],"char":"\ud83d\udc73",fitzpatrick_scale:!0,category:"people"},policewoman:{keywords:["woman","police","law","legal","enforcement","arrest","911","female"],"char":"\ud83d\udc6e\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},policeman:{keywords:["man","police","law","legal","enforcement","arrest","911"],"char":"\ud83d\udc6e",fitzpatrick_scale:!0,category:"people"},construction_worker_woman:{keywords:["female","human","wip","build","construction","worker","labor","woman"],"char":"\ud83d\udc77\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},construction_worker_man:{keywords:["male","human","wip","guy","build","construction","worker","labor"],"char":"\ud83d\udc77",fitzpatrick_scale:!0,category:"people"},guardswoman:{keywords:["uk","gb","british","female","royal","woman"],"char":"\ud83d\udc82\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},guardsman:{keywords:["uk","gb","british","male","guy","royal"],"char":"\ud83d\udc82",fitzpatrick_scale:!0,category:"people"},female_detective:{keywords:["human","spy","detective","female","woman"],"char":"\ud83d\udd75\ufe0f\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},male_detective:{keywords:["human","spy","detective"],"char":"\ud83d\udd75",fitzpatrick_scale:!0,category:"people"},woman_health_worker:{keywords:["doctor","nurse","therapist","healthcare","woman","human"],"char":"\ud83d\udc69\u200d\u2695\ufe0f",fitzpatrick_scale:!0,category:"people"},man_health_worker:{keywords:["doctor","nurse","therapist","healthcare","man","human"],"char":"\ud83d\udc68\u200d\u2695\ufe0f",fitzpatrick_scale:!0,category:"people"},woman_farmer:{keywords:["rancher","gardener","woman","human"],"char":"\ud83d\udc69\u200d\ud83c\udf3e",fitzpatrick_scale:!0,category:"people"},man_farmer:{keywords:["rancher","gardener","man","human"],"char":"\ud83d\udc68\u200d\ud83c\udf3e",fitzpatrick_scale:!0,category:"people"},woman_cook:{keywords:["chef","woman","human"],"char":"\ud83d\udc69\u200d\ud83c\udf73",fitzpatrick_scale:!0,category:"people"},man_cook:{keywords:["chef","man","human"],"char":"\ud83d\udc68\u200d\ud83c\udf73",fitzpatrick_scale:!0,category:"people"},woman_student:{keywords:["graduate","woman","human"],"char":"\ud83d\udc69\u200d\ud83c\udf93",fitzpatrick_scale:!0,category:"people"},man_student:{keywords:["graduate","man","human"],"char":"\ud83d\udc68\u200d\ud83c\udf93",fitzpatrick_scale:!0,category:"people"},woman_singer:{keywords:["rockstar","entertainer","woman","human"],"char":"\ud83d\udc69\u200d\ud83c\udfa4",fitzpatrick_scale:!0,category:"people"},man_singer:{keywords:["rockstar","entertainer","man","human"],"char":"\ud83d\udc68\u200d\ud83c\udfa4",fitzpatrick_scale:!0,category:"people"},woman_teacher:{keywords:["instructor","professor","woman","human"],"char":"\ud83d\udc69\u200d\ud83c\udfeb",fitzpatrick_scale:!0,category:"people"},man_teacher:{keywords:["instructor","professor","man","human"],"char":"\ud83d\udc68\u200d\ud83c\udfeb",fitzpatrick_scale:!0,category:"people"},woman_factory_worker:{keywords:["assembly","industrial","woman","human"],"char":"\ud83d\udc69\u200d\ud83c\udfed",fitzpatrick_scale:!0,category:"people"},man_factory_worker:{keywords:["assembly","industrial","man","human"],"char":"\ud83d\udc68\u200d\ud83c\udfed",fitzpatrick_scale:!0,category:"people"},woman_technologist:{keywords:["coder","developer","engineer","programmer","software","woman","human","laptop","computer"],"char":"\ud83d\udc69\u200d\ud83d\udcbb",fitzpatrick_scale:!0,category:"people"},man_technologist:{keywords:["coder","developer","engineer","programmer","software","man","human","laptop","computer"],"char":"\ud83d\udc68\u200d\ud83d\udcbb",fitzpatrick_scale:!0,category:"people"},woman_office_worker:{keywords:["business","manager","woman","human"],"char":"\ud83d\udc69\u200d\ud83d\udcbc",fitzpatrick_scale:!0,category:"people"},man_office_worker:{keywords:["business","manager","man","human"],"char":"\ud83d\udc68\u200d\ud83d\udcbc",fitzpatrick_scale:!0,category:"people"},woman_mechanic:{keywords:["plumber","woman","human","wrench"],"char":"\ud83d\udc69\u200d\ud83d\udd27",fitzpatrick_scale:!0,category:"people"},man_mechanic:{keywords:["plumber","man","human","wrench"],"char":"\ud83d\udc68\u200d\ud83d\udd27",fitzpatrick_scale:!0,category:"people"},woman_scientist:{keywords:["biologist","chemist","engineer","physicist","woman","human"],"char":"\ud83d\udc69\u200d\ud83d\udd2c",fitzpatrick_scale:!0,category:"people"},man_scientist:{keywords:["biologist","chemist","engineer","physicist","man","human"],"char":"\ud83d\udc68\u200d\ud83d\udd2c",fitzpatrick_scale:!0,category:"people"},woman_artist:{keywords:["painter","woman","human"],"char":"\ud83d\udc69\u200d\ud83c\udfa8",fitzpatrick_scale:!0,category:"people"},man_artist:{keywords:["painter","man","human"],"char":"\ud83d\udc68\u200d\ud83c\udfa8",fitzpatrick_scale:!0,category:"people"},woman_firefighter:{keywords:["fireman","woman","human"],"char":"\ud83d\udc69\u200d\ud83d\ude92",fitzpatrick_scale:!0,category:"people"},man_firefighter:{keywords:["fireman","man","human"],"char":"\ud83d\udc68\u200d\ud83d\ude92",fitzpatrick_scale:!0,category:"people"},woman_pilot:{keywords:["aviator","plane","woman","human"],"char":"\ud83d\udc69\u200d\u2708\ufe0f",fitzpatrick_scale:!0,category:"people"},man_pilot:{keywords:["aviator","plane","man","human"],"char":"\ud83d\udc68\u200d\u2708\ufe0f",fitzpatrick_scale:!0,category:"people"},woman_astronaut:{keywords:["space","rocket","woman","human"],"char":"\ud83d\udc69\u200d\ud83d\ude80",fitzpatrick_scale:!0,category:"people"},man_astronaut:{keywords:["space","rocket","man","human"],"char":"\ud83d\udc68\u200d\ud83d\ude80",fitzpatrick_scale:!0,category:"people"},woman_judge:{keywords:["justice","court","woman","human"],"char":"\ud83d\udc69\u200d\u2696\ufe0f",fitzpatrick_scale:!0,category:"people"},man_judge:{keywords:["justice","court","man","human"],"char":"\ud83d\udc68\u200d\u2696\ufe0f",fitzpatrick_scale:!0,category:"people"},mrs_claus:{keywords:["woman","female","xmas","mother christmas"],"char":"\ud83e\udd36",fitzpatrick_scale:!0,category:"people"},santa:{keywords:["festival","man","male","xmas","father christmas"],"char":"\ud83c\udf85",fitzpatrick_scale:!0,category:"people"},sorceress:{keywords:["woman","female","mage","witch"],"char":"\ud83e\uddd9\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},wizard:{keywords:["man","male","mage","sorcerer"],"char":"\ud83e\uddd9\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},woman_elf:{keywords:["woman","female"],"char":"\ud83e\udddd\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},man_elf:{keywords:["man","male"],"char":"\ud83e\udddd\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},woman_vampire:{keywords:["woman","female"],"char":"\ud83e\udddb\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},man_vampire:{keywords:["man","male","dracula"],"char":"\ud83e\udddb\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},woman_zombie:{keywords:["woman","female","undead","walking dead"],"char":"\ud83e\udddf\u200d\u2640\ufe0f",fitzpatrick_scale:!1,category:"people"},man_zombie:{keywords:["man","male","dracula","undead","walking dead"],"char":"\ud83e\udddf\u200d\u2642\ufe0f",fitzpatrick_scale:!1,category:"people"},woman_genie:{keywords:["woman","female"],"char":"\ud83e\uddde\u200d\u2640\ufe0f",fitzpatrick_scale:!1,category:"people"},man_genie:{keywords:["man","male"],"char":"\ud83e\uddde\u200d\u2642\ufe0f",fitzpatrick_scale:!1,category:"people"},mermaid:{keywords:["woman","female","merwoman","ariel"],"char":"\ud83e\udddc\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},merman:{keywords:["man","male","triton"],"char":"\ud83e\udddc\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},woman_fairy:{keywords:["woman","female"],"char":"\ud83e\uddda\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},man_fairy:{keywords:["man","male"],"char":"\ud83e\uddda\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},angel:{keywords:["heaven","wings","halo"],"char":"\ud83d\udc7c",fitzpatrick_scale:!0,category:"people"},pregnant_woman:{keywords:["baby"],"char":"\ud83e\udd30",fitzpatrick_scale:!0,category:"people"},breastfeeding:{keywords:["nursing","baby"],"char":"\ud83e\udd31",fitzpatrick_scale:!0,category:"people"},princess:{keywords:["girl","woman","female","blond","crown","royal","queen"],"char":"\ud83d\udc78",fitzpatrick_scale:!0,category:"people"},prince:{keywords:["boy","man","male","crown","royal","king"],"char":"\ud83e\udd34",fitzpatrick_scale:!0,category:"people"},bride_with_veil:{keywords:["couple","marriage","wedding","woman","bride"],"char":"\ud83d\udc70",fitzpatrick_scale:!0,category:"people"},man_in_tuxedo:{keywords:["couple","marriage","wedding","groom"],"char":"\ud83e\udd35",fitzpatrick_scale:!0,category:"people"},running_woman:{keywords:["woman","walking","exercise","race","running","female"],"char":"\ud83c\udfc3\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},running_man:{keywords:["man","walking","exercise","race","running"],"char":"\ud83c\udfc3",fitzpatrick_scale:!0,category:"people"},walking_woman:{keywords:["human","feet","steps","woman","female"],"char":"\ud83d\udeb6\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},walking_man:{keywords:["human","feet","steps"],"char":"\ud83d\udeb6",fitzpatrick_scale:!0,category:"people"},dancer:{keywords:["female","girl","woman","fun"],"char":"\ud83d\udc83",fitzpatrick_scale:!0,category:"people"},man_dancing:{keywords:["male","boy","fun","dancer"],"char":"\ud83d\udd7a",fitzpatrick_scale:!0,category:"people"},dancing_women:{keywords:["female","bunny","women","girls"],"char":"\ud83d\udc6f",fitzpatrick_scale:!1,category:"people"},dancing_men:{keywords:["male","bunny","men","boys"],"char":"\ud83d\udc6f\u200d\u2642\ufe0f",fitzpatrick_scale:!1,category:"people"},couple:{keywords:["pair","people","human","love","date","dating","like","affection","valentines","marriage"],"char":"\ud83d\udc6b",fitzpatrick_scale:!1,category:"people"},two_men_holding_hands:{keywords:["pair","couple","love","like","bromance","friendship","people","human"],"char":"\ud83d\udc6c",fitzpatrick_scale:!1,category:"people"},two_women_holding_hands:{keywords:["pair","friendship","couple","love","like","female","people","human"],"char":"\ud83d\udc6d",fitzpatrick_scale:!1,category:"people"},bowing_woman:{keywords:["woman","female","girl"],"char":"\ud83d\ude47\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},bowing_man:{keywords:["man","male","boy"],"char":"\ud83d\ude47",fitzpatrick_scale:!0,category:"people"},man_facepalming:{keywords:["man","male","boy","disbelief"],"char":"\ud83e\udd26",fitzpatrick_scale:!0,category:"people"},woman_facepalming:{keywords:["woman","female","girl","disbelief"],"char":"\ud83e\udd26\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},woman_shrugging:{keywords:["woman","female","girl","confused","indifferent","doubt"],"char":"\ud83e\udd37",fitzpatrick_scale:!0,category:"people"},man_shrugging:{keywords:["man","male","boy","confused","indifferent","doubt"],"char":"\ud83e\udd37\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},tipping_hand_woman:{keywords:["female","girl","woman","human","information"],"char":"\ud83d\udc81",fitzpatrick_scale:!0,category:"people"},tipping_hand_man:{keywords:["male","boy","man","human","information"],"char":"\ud83d\udc81\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},no_good_woman:{keywords:["female","girl","woman","nope"],"char":"\ud83d\ude45",fitzpatrick_scale:!0,category:"people"},no_good_man:{keywords:["male","boy","man","nope"],"char":"\ud83d\ude45\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},ok_woman:{keywords:["women","girl","female","pink","human","woman"],"char":"\ud83d\ude46",fitzpatrick_scale:!0,category:"people"},ok_man:{keywords:["men","boy","male","blue","human","man"],"char":"\ud83d\ude46\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},raising_hand_woman:{keywords:["female","girl","woman"],"char":"\ud83d\ude4b",fitzpatrick_scale:!0,category:"people"},raising_hand_man:{keywords:["male","boy","man"],"char":"\ud83d\ude4b\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},pouting_woman:{keywords:["female","girl","woman"],"char":"\ud83d\ude4e",fitzpatrick_scale:!0,category:"people"},pouting_man:{keywords:["male","boy","man"],"char":"\ud83d\ude4e\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},frowning_woman:{keywords:["female","girl","woman","sad","depressed","discouraged","unhappy"],"char":"\ud83d\ude4d",fitzpatrick_scale:!0,category:"people"},frowning_man:{keywords:["male","boy","man","sad","depressed","discouraged","unhappy"],"char":"\ud83d\ude4d\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},haircut_woman:{keywords:["female","girl","woman"],"char":"\ud83d\udc87",fitzpatrick_scale:!0,category:"people"},haircut_man:{keywords:["male","boy","man"],"char":"\ud83d\udc87\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},massage_woman:{keywords:["female","girl","woman","head"],"char":"\ud83d\udc86",fitzpatrick_scale:!0,category:"people"},massage_man:{keywords:["male","boy","man","head"],"char":"\ud83d\udc86\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},woman_in_steamy_room:{keywords:["female","woman","spa","steamroom","sauna"],"char":"\ud83e\uddd6\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},man_in_steamy_room:{keywords:["male","man","spa","steamroom","sauna"],"char":"\ud83e\uddd6\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},couple_with_heart_woman_man:{keywords:["pair","love","like","affection","human","dating","valentines","marriage"],"char":"\ud83d\udc91",fitzpatrick_scale:!1,category:"people"},couple_with_heart_woman_woman:{keywords:["pair","love","like","affection","human","dating","valentines","marriage"],"char":"\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d\udc69",fitzpatrick_scale:!1,category:"people"},couple_with_heart_man_man:{keywords:["pair","love","like","affection","human","dating","valentines","marriage"],"char":"\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc68",fitzpatrick_scale:!1,category:"people"},couplekiss_man_woman:{keywords:["pair","valentines","love","like","dating","marriage"],"char":"\ud83d\udc8f",fitzpatrick_scale:!1,category:"people"},couplekiss_woman_woman:{keywords:["pair","valentines","love","like","dating","marriage"],"char":"\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69",fitzpatrick_scale:!1,category:"people"},couplekiss_man_man:{keywords:["pair","valentines","love","like","dating","marriage"],"char":"\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68",fitzpatrick_scale:!1,category:"people"},family_man_woman_boy:{keywords:["home","parents","child","mom","dad","father","mother","people","human"],"char":"\ud83d\udc6a",fitzpatrick_scale:!1,category:"people"},family_man_woman_girl:{keywords:["home","parents","people","human","child"],"char":"\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67",fitzpatrick_scale:!1,category:"people"},family_man_woman_girl_boy:{keywords:["home","parents","people","human","children"],"char":"\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc66",fitzpatrick_scale:!1,category:"people"},family_man_woman_boy_boy:{keywords:["home","parents","people","human","children"],"char":"\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66",fitzpatrick_scale:!1,category:"people"},family_man_woman_girl_girl:{keywords:["home","parents","people","human","children"],"char":"\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc67",fitzpatrick_scale:!1,category:"people"},family_woman_woman_boy:{keywords:["home","parents","people","human","children"],"char":"\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc66",fitzpatrick_scale:!1,category:"people"},family_woman_woman_girl:{keywords:["home","parents","people","human","children"],"char":"\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67",fitzpatrick_scale:!1,category:"people"},family_woman_woman_girl_boy:{keywords:["home","parents","people","human","children"],"char":"\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc66",fitzpatrick_scale:!1,category:"people"},family_woman_woman_boy_boy:{keywords:["home","parents","people","human","children"],"char":"\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66",fitzpatrick_scale:!1,category:"people"},family_woman_woman_girl_girl:{keywords:["home","parents","people","human","children"],"char":"\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc67",fitzpatrick_scale:!1,category:"people"},family_man_man_boy:{keywords:["home","parents","people","human","children"],"char":"\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc66",fitzpatrick_scale:!1,category:"people"},family_man_man_girl:{keywords:["home","parents","people","human","children"],"char":"\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67",fitzpatrick_scale:!1,category:"people"},family_man_man_girl_boy:{keywords:["home","parents","people","human","children"],"char":"\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d\udc66",fitzpatrick_scale:!1,category:"people"},family_man_man_boy_boy:{keywords:["home","parents","people","human","children"],"char":"\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66",fitzpatrick_scale:!1,category:"people"},family_man_man_girl_girl:{keywords:["home","parents","people","human","children"],"char":"\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d\udc67",fitzpatrick_scale:!1,category:"people"},family_woman_boy:{keywords:["home","parent","people","human","child"],"char":"\ud83d\udc69\u200d\ud83d\udc66",fitzpatrick_scale:!1,category:"people"},family_woman_girl:{keywords:["home","parent","people","human","child"],"char":"\ud83d\udc69\u200d\ud83d\udc67",fitzpatrick_scale:!1,category:"people"},family_woman_girl_boy:{keywords:["home","parent","people","human","children"],"char":"\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc66",fitzpatrick_scale:!1,category:"people"},family_woman_boy_boy:{keywords:["home","parent","people","human","children"],"char":"\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66",fitzpatrick_scale:!1,category:"people"},family_woman_girl_girl:{keywords:["home","parent","people","human","children"],"char":"\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc67",fitzpatrick_scale:!1,category:"people"},family_man_boy:{keywords:["home","parent","people","human","child"],"char":"\ud83d\udc68\u200d\ud83d\udc66",fitzpatrick_scale:!1,category:"people"},family_man_girl:{keywords:["home","parent","people","human","child"],"char":"\ud83d\udc68\u200d\ud83d\udc67",fitzpatrick_scale:!1,category:"people"},family_man_girl_boy:{keywords:["home","parent","people","human","children"],"char":"\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d\udc66",fitzpatrick_scale:!1,category:"people"},family_man_boy_boy:{keywords:["home","parent","people","human","children"],"char":"\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66",fitzpatrick_scale:!1,category:"people"},family_man_girl_girl:{keywords:["home","parent","people","human","children"],"char":"\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d\udc67",fitzpatrick_scale:!1,category:"people"},coat:{keywords:["jacket"],"char":"\ud83e\udde5",fitzpatrick_scale:!1,category:"people"},womans_clothes:{keywords:["fashion","shopping_bags","female"],"char":"\ud83d\udc5a",fitzpatrick_scale:!1,category:"people"},tshirt:{keywords:["fashion","cloth","casual","shirt","tee"],"char":"\ud83d\udc55",fitzpatrick_scale:!1,category:"people"},jeans:{keywords:["fashion","shopping"],"char":"\ud83d\udc56",fitzpatrick_scale:!1,category:"people"},necktie:{keywords:["shirt","suitup","formal","fashion","cloth","business"],"char":"\ud83d\udc54",fitzpatrick_scale:!1,category:"people"},dress:{keywords:["clothes","fashion","shopping"],"char":"\ud83d\udc57",fitzpatrick_scale:!1,category:"people"},bikini:{keywords:["swimming","female","woman","girl","fashion","beach","summer"],"char":"\ud83d\udc59",fitzpatrick_scale:!1,category:"people"},kimono:{keywords:["dress","fashion","women","female","japanese"],"char":"\ud83d\udc58",fitzpatrick_scale:!1,category:"people"},lipstick:{keywords:["female","girl","fashion","woman"],"char":"\ud83d\udc84",fitzpatrick_scale:!1,category:"people"},kiss:{keywords:["face","lips","love","like","affection","valentines"],"char":"\ud83d\udc8b",fitzpatrick_scale:!1,category:"people"},footprints:{keywords:["feet","tracking","walking","beach"],"char":"\ud83d\udc63",fitzpatrick_scale:!1,category:"people"},high_heel:{keywords:["fashion","shoes","female","pumps","stiletto"],"char":"\ud83d\udc60",fitzpatrick_scale:!1,category:"people"},sandal:{keywords:["shoes","fashion","flip flops"],"char":"\ud83d\udc61",fitzpatrick_scale:!1,category:"people"},boot:{keywords:["shoes","fashion"],"char":"\ud83d\udc62",fitzpatrick_scale:!1,category:"people"},mans_shoe:{keywords:["fashion","male"],"char":"\ud83d\udc5e",fitzpatrick_scale:!1,category:"people"},athletic_shoe:{keywords:["shoes","sports","sneakers"],"char":"\ud83d\udc5f",fitzpatrick_scale:!1,category:"people"},socks:{keywords:["stockings","clothes"],"char":"\ud83e\udde6",fitzpatrick_scale:!1,category:"people"},gloves:{keywords:["hands","winter","clothes"],"char":"\ud83e\udde4",fitzpatrick_scale:!1,category:"people"},scarf:{keywords:["neck","winter","clothes"],"char":"\ud83e\udde3",fitzpatrick_scale:!1,category:"people"},womans_hat:{keywords:["fashion","accessories","female","lady","spring"],"char":"\ud83d\udc52",fitzpatrick_scale:!1,category:"people"},tophat:{keywords:["magic","gentleman","classy","circus"],"char":"\ud83c\udfa9",fitzpatrick_scale:!1,category:"people"},billed_hat:{keywords:["cap","baseball"],"char":"\ud83e\udde2",fitzpatrick_scale:!1,category:"people"},rescue_worker_helmet:{keywords:["construction","build"],"char":"\u26d1",fitzpatrick_scale:!1,category:"people"},mortar_board:{keywords:["school","college","degree","university","graduation","cap","hat","legal","learn","education"],"char":"\ud83c\udf93",fitzpatrick_scale:!1,category:"people"},crown:{keywords:["king","kod","leader","royalty","lord"],"char":"\ud83d\udc51",fitzpatrick_scale:!1,category:"people"},school_satchel:{keywords:["student","education","bag","backpack"],"char":"\ud83c\udf92",fitzpatrick_scale:!1,category:"people"},pouch:{keywords:["bag","accessories","shopping"],"char":"\ud83d\udc5d",fitzpatrick_scale:!1,category:"people"},purse:{keywords:["fashion","accessories","money","sales","shopping"],"char":"\ud83d\udc5b",fitzpatrick_scale:!1,category:"people"},handbag:{keywords:["fashion","accessory","accessories","shopping"],"char":"\ud83d\udc5c",fitzpatrick_scale:!1,category:"people"},briefcase:{keywords:["business","documents","work","law","legal","job","career"],"char":"\ud83d\udcbc",fitzpatrick_scale:!1,category:"people"},eyeglasses:{keywords:["fashion","accessories","eyesight","nerdy","dork","geek"],"char":"\ud83d\udc53",fitzpatrick_scale:!1,category:"people"},dark_sunglasses:{keywords:["face","cool","accessories"],"char":"\ud83d\udd76",fitzpatrick_scale:!1,category:"people"},ring:{keywords:["wedding","propose","marriage","valentines","diamond","fashion","jewelry","gem","engagement"],"char":"\ud83d\udc8d",fitzpatrick_scale:!1,category:"people"},closed_umbrella:{keywords:["weather","rain","drizzle"],"char":"\ud83c\udf02",fitzpatrick_scale:!1,category:"people"},dog:{keywords:["animal","friend","nature","woof","puppy","pet","faithful"],"char":"\ud83d\udc36",fitzpatrick_scale:!1,category:"animals_and_nature"},cat:{keywords:["animal","meow","nature","pet","kitten"],"char":"\ud83d\udc31",fitzpatrick_scale:!1,category:"animals_and_nature"},mouse:{keywords:["animal","nature","cheese_wedge","rodent"],"char":"\ud83d\udc2d",fitzpatrick_scale:!1,category:"animals_and_nature"},hamster:{keywords:["animal","nature"],"char":"\ud83d\udc39",fitzpatrick_scale:!1,category:"animals_and_nature"},rabbit:{keywords:["animal","nature","pet","spring","magic","bunny"],"char":"\ud83d\udc30",fitzpatrick_scale:!1,category:"animals_and_nature"},fox_face:{keywords:["animal","nature","face"],"char":"\ud83e\udd8a",fitzpatrick_scale:!1,category:"animals_and_nature"},bear:{keywords:["animal","nature","wild"],"char":"\ud83d\udc3b",fitzpatrick_scale:!1,category:"animals_and_nature"},panda_face:{keywords:["animal","nature","panda"],"char":"\ud83d\udc3c",fitzpatrick_scale:!1,category:"animals_and_nature"},koala:{keywords:["animal","nature"],"char":"\ud83d\udc28",fitzpatrick_scale:!1,category:"animals_and_nature"},tiger:{keywords:["animal","cat","danger","wild","nature","roar"],"char":"\ud83d\udc2f",fitzpatrick_scale:!1,category:"animals_and_nature"},lion:{keywords:["animal","nature"],"char":"\ud83e\udd81",fitzpatrick_scale:!1,category:"animals_and_nature"},cow:{keywords:["beef","ox","animal","nature","moo","milk"],"char":"\ud83d\udc2e",fitzpatrick_scale:!1,category:"animals_and_nature"},pig:{keywords:["animal","oink","nature"],"char":"\ud83d\udc37",fitzpatrick_scale:!1,category:"animals_and_nature"},pig_nose:{keywords:["animal","oink"],"char":"\ud83d\udc3d",fitzpatrick_scale:!1,category:"animals_and_nature"},frog:{keywords:["animal","nature","croak","toad"],"char":"\ud83d\udc38",fitzpatrick_scale:!1,category:"animals_and_nature"},squid:{keywords:["animal","nature","ocean","sea"],"char":"\ud83e\udd91",fitzpatrick_scale:!1,category:"animals_and_nature"},octopus:{keywords:["animal","creature","ocean","sea","nature","beach"],"char":"\ud83d\udc19",fitzpatrick_scale:!1,category:"animals_and_nature"},shrimp:{keywords:["animal","ocean","nature","seafood"],"char":"\ud83e\udd90",fitzpatrick_scale:!1,category:"animals_and_nature"},monkey_face:{keywords:["animal","nature","circus"],"char":"\ud83d\udc35",fitzpatrick_scale:!1,category:"animals_and_nature"},gorilla:{keywords:["animal","nature","circus"],"char":"\ud83e\udd8d",fitzpatrick_scale:!1,category:"animals_and_nature"},see_no_evil:{keywords:["monkey","animal","nature","haha"],"char":"\ud83d\ude48",fitzpatrick_scale:!1,category:"animals_and_nature"},hear_no_evil:{keywords:["animal","monkey","nature"],"char":"\ud83d\ude49",fitzpatrick_scale:!1,category:"animals_and_nature"},speak_no_evil:{keywords:["monkey","animal","nature","omg"],"char":"\ud83d\ude4a",fitzpatrick_scale:!1,category:"animals_and_nature"},monkey:{keywords:["animal","nature","banana","circus"],"char":"\ud83d\udc12",fitzpatrick_scale:!1,category:"animals_and_nature"},chicken:{keywords:["animal","cluck","nature","bird"],"char":"\ud83d\udc14",fitzpatrick_scale:!1,category:"animals_and_nature"},penguin:{keywords:["animal","nature"],"char":"\ud83d\udc27",fitzpatrick_scale:!1,category:"animals_and_nature"},bird:{keywords:["animal","nature","fly","tweet","spring"],"char":"\ud83d\udc26",fitzpatrick_scale:!1,category:"animals_and_nature"},baby_chick:{keywords:["animal","chicken","bird"],"char":"\ud83d\udc24",fitzpatrick_scale:!1,category:"animals_and_nature"},hatching_chick:{keywords:["animal","chicken","egg","born","baby","bird"],"char":"\ud83d\udc23",fitzpatrick_scale:!1,category:"animals_and_nature"},hatched_chick:{keywords:["animal","chicken","baby","bird"],"char":"\ud83d\udc25",fitzpatrick_scale:!1,category:"animals_and_nature"},duck:{keywords:["animal","nature","bird","mallard"],"char":"\ud83e\udd86",fitzpatrick_scale:!1,category:"animals_and_nature"},eagle:{keywords:["animal","nature","bird"],"char":"\ud83e\udd85",fitzpatrick_scale:!1,category:"animals_and_nature"},owl:{keywords:["animal","nature","bird","hoot"],"char":"\ud83e\udd89",fitzpatrick_scale:!1,category:"animals_and_nature"},bat:{keywords:["animal","nature","blind","vampire"],"char":"\ud83e\udd87",fitzpatrick_scale:!1,category:"animals_and_nature"},wolf:{keywords:["animal","nature","wild"],"char":"\ud83d\udc3a",fitzpatrick_scale:!1,category:"animals_and_nature"},boar:{keywords:["animal","nature"],"char":"\ud83d\udc17",fitzpatrick_scale:!1,category:"animals_and_nature"},horse:{keywords:["animal","brown","nature"],"char":"\ud83d\udc34",fitzpatrick_scale:!1,category:"animals_and_nature"},unicorn:{keywords:["animal","nature","mystical"],"char":"\ud83e\udd84",fitzpatrick_scale:!1,category:"animals_and_nature"},honeybee:{keywords:["animal","insect","nature","bug","spring","honey"],"char":"\ud83d\udc1d",fitzpatrick_scale:!1,category:"animals_and_nature"},bug:{keywords:["animal","insect","nature","worm"],"char":"\ud83d\udc1b",fitzpatrick_scale:!1,category:"animals_and_nature"},butterfly:{keywords:["animal","insect","nature","caterpillar"],"char":"\ud83e\udd8b",fitzpatrick_scale:!1,category:"animals_and_nature"},snail:{keywords:["slow","animal","shell"],"char":"\ud83d\udc0c",fitzpatrick_scale:!1,category:"animals_and_nature"},beetle:{keywords:["animal","insect","nature","ladybug"],"char":"\ud83d\udc1e",fitzpatrick_scale:!1,category:"animals_and_nature"},ant:{keywords:["animal","insect","nature","bug"],"char":"\ud83d\udc1c",fitzpatrick_scale:!1,category:"animals_and_nature"},grasshopper:{keywords:["animal","cricket","chirp"],"char":"\ud83e\udd97",fitzpatrick_scale:!1,category:"animals_and_nature"},spider:{keywords:["animal","arachnid"],"char":"\ud83d\udd77",fitzpatrick_scale:!1,category:"animals_and_nature"},scorpion:{keywords:["animal","arachnid"],"char":"\ud83e\udd82",fitzpatrick_scale:!1,category:"animals_and_nature"},crab:{keywords:["animal","crustacean"],"char":"\ud83e\udd80",fitzpatrick_scale:!1,category:"animals_and_nature"},snake:{keywords:["animal","evil","nature","hiss","python"],"char":"\ud83d\udc0d",fitzpatrick_scale:!1,category:"animals_and_nature"},lizard:{keywords:["animal","nature","reptile"],"char":"\ud83e\udd8e",fitzpatrick_scale:!1,category:"animals_and_nature"},"t-rex":{keywords:["animal","nature","dinosaur","tyrannosaurus","extinct"],"char":"\ud83e\udd96",fitzpatrick_scale:!1,category:"animals_and_nature"},sauropod:{keywords:["animal","nature","dinosaur","brachiosaurus","brontosaurus","diplodocus","extinct"],"char":"\ud83e\udd95",fitzpatrick_scale:!1,category:"animals_and_nature"},turtle:{keywords:["animal","slow","nature","tortoise"],"char":"\ud83d\udc22",fitzpatrick_scale:!1,category:"animals_and_nature"},tropical_fish:{keywords:["animal","swim","ocean","beach","nemo"],"char":"\ud83d\udc20",fitzpatrick_scale:!1,category:"animals_and_nature"},fish:{keywords:["animal","food","nature"],"char":"\ud83d\udc1f",fitzpatrick_scale:!1,category:"animals_and_nature"},blowfish:{keywords:["animal","nature","food","sea","ocean"],"char":"\ud83d\udc21",fitzpatrick_scale:!1,category:"animals_and_nature"},dolphin:{keywords:["animal","nature","fish","sea","ocean","flipper","fins","beach"],"char":"\ud83d\udc2c",fitzpatrick_scale:!1,category:"animals_and_nature"},shark:{keywords:["animal","nature","fish","sea","ocean","jaws","fins","beach"],"char":"\ud83e\udd88",fitzpatrick_scale:!1,category:"animals_and_nature"},whale:{keywords:["animal","nature","sea","ocean"],"char":"\ud83d\udc33",fitzpatrick_scale:!1,category:"animals_and_nature"},whale2:{keywords:["animal","nature","sea","ocean"],"char":"\ud83d\udc0b",fitzpatrick_scale:!1,category:"animals_and_nature"},crocodile:{keywords:["animal","nature","reptile","lizard","alligator"],"char":"\ud83d\udc0a",fitzpatrick_scale:!1,category:"animals_and_nature"},leopard:{keywords:["animal","nature"],"char":"\ud83d\udc06",fitzpatrick_scale:!1,category:"animals_and_nature"},zebra:{keywords:["animal","nature","stripes","safari"],"char":"\ud83e\udd93",fitzpatrick_scale:!1,category:"animals_and_nature"},tiger2:{keywords:["animal","nature","roar"],"char":"\ud83d\udc05",fitzpatrick_scale:!1,category:"animals_and_nature"},water_buffalo:{keywords:["animal","nature","ox","cow"],"char":"\ud83d\udc03",fitzpatrick_scale:!1,category:"animals_and_nature"},ox:{keywords:["animal","cow","beef"],"char":"\ud83d\udc02",fitzpatrick_scale:!1,category:"animals_and_nature"},cow2:{keywords:["beef","ox","animal","nature","moo","milk"],"char":"\ud83d\udc04",fitzpatrick_scale:!1,category:"animals_and_nature"},deer:{keywords:["animal","nature","horns","venison"],"char":"\ud83e\udd8c",fitzpatrick_scale:!1,category:"animals_and_nature"},dromedary_camel:{keywords:["animal","hot","desert","hump"],"char":"\ud83d\udc2a",fitzpatrick_scale:!1,category:"animals_and_nature"},camel:{keywords:["animal","nature","hot","desert","hump"],"char":"\ud83d\udc2b",fitzpatrick_scale:!1,category:"animals_and_nature"},giraffe:{keywords:["animal","nature","spots","safari"],"char":"\ud83e\udd92",fitzpatrick_scale:!1,category:"animals_and_nature"},elephant:{keywords:["animal","nature","nose","th","circus"],"char":"\ud83d\udc18",fitzpatrick_scale:!1,category:"animals_and_nature"},rhinoceros:{keywords:["animal","nature","horn"],"char":"\ud83e\udd8f",fitzpatrick_scale:!1,category:"animals_and_nature"},goat:{keywords:["animal","nature"],"char":"\ud83d\udc10",fitzpatrick_scale:!1,category:"animals_and_nature"},ram:{keywords:["animal","sheep","nature"],"char":"\ud83d\udc0f",fitzpatrick_scale:!1,category:"animals_and_nature"},sheep:{keywords:["animal","nature","wool","shipit"],"char":"\ud83d\udc11",fitzpatrick_scale:!1,category:"animals_and_nature"},racehorse:{keywords:["animal","gamble","luck"],"char":"\ud83d\udc0e",fitzpatrick_scale:!1,category:"animals_and_nature"},pig2:{keywords:["animal","nature"],"char":"\ud83d\udc16",fitzpatrick_scale:!1,category:"animals_and_nature"},rat:{keywords:["animal","mouse","rodent"],"char":"\ud83d\udc00",fitzpatrick_scale:!1,category:"animals_and_nature"},mouse2:{keywords:["animal","nature","rodent"],"char":"\ud83d\udc01",fitzpatrick_scale:!1,category:"animals_and_nature"},rooster:{keywords:["animal","nature","chicken"],"char":"\ud83d\udc13",fitzpatrick_scale:!1,category:"animals_and_nature"},turkey:{keywords:["animal","bird"],"char":"\ud83e\udd83",fitzpatrick_scale:!1,category:"animals_and_nature"},dove:{keywords:["animal","bird"],"char":"\ud83d\udd4a",fitzpatrick_scale:!1,category:"animals_and_nature"},dog2:{keywords:["animal","nature","friend","doge","pet","faithful"],"char":"\ud83d\udc15",fitzpatrick_scale:!1,category:"animals_and_nature"},poodle:{keywords:["dog","animal","101","nature","pet"],"char":"\ud83d\udc29",fitzpatrick_scale:!1,category:"animals_and_nature"},cat2:{keywords:["animal","meow","pet","cats"],"char":"\ud83d\udc08",fitzpatrick_scale:!1,category:"animals_and_nature"},rabbit2:{keywords:["animal","nature","pet","magic","spring"],"char":"\ud83d\udc07",fitzpatrick_scale:!1,category:"animals_and_nature"},chipmunk:{keywords:["animal","nature","rodent","squirrel"],"char":"\ud83d\udc3f",fitzpatrick_scale:!1,category:"animals_and_nature"},hedgehog:{keywords:["animal","nature","spiny"],"char":"\ud83e\udd94",fitzpatrick_scale:!1,category:"animals_and_nature"},paw_prints:{keywords:["animal","tracking","footprints","dog","cat","pet","feet"],"char":"\ud83d\udc3e",fitzpatrick_scale:!1,category:"animals_and_nature"},dragon:{keywords:["animal","myth","nature","chinese","green"],"char":"\ud83d\udc09",fitzpatrick_scale:!1,category:"animals_and_nature"},dragon_face:{keywords:["animal","myth","nature","chinese","green"],"char":"\ud83d\udc32",fitzpatrick_scale:!1,category:"animals_and_nature"},cactus:{keywords:["vegetable","plant","nature"],"char":"\ud83c\udf35",fitzpatrick_scale:!1,category:"animals_and_nature"},christmas_tree:{keywords:["festival","vacation","december","xmas","celebration"],"char":"\ud83c\udf84",fitzpatrick_scale:!1,category:"animals_and_nature"},evergreen_tree:{keywords:["plant","nature"],"char":"\ud83c\udf32",fitzpatrick_scale:!1,category:"animals_and_nature"},deciduous_tree:{keywords:["plant","nature"],"char":"\ud83c\udf33",fitzpatrick_scale:!1,category:"animals_and_nature"},palm_tree:{keywords:["plant","vegetable","nature","summer","beach","mojito","tropical"],"char":"\ud83c\udf34",fitzpatrick_scale:!1,category:"animals_and_nature"},seedling:{keywords:["plant","nature","grass","lawn","spring"],"char":"\ud83c\udf31",fitzpatrick_scale:!1,category:"animals_and_nature"},herb:{keywords:["vegetable","plant","medicine","weed","grass","lawn"],"char":"\ud83c\udf3f",fitzpatrick_scale:!1,category:"animals_and_nature"},shamrock:{keywords:["vegetable","plant","nature","irish","clover"],"char":"\u2618",fitzpatrick_scale:!1,category:"animals_and_nature"},four_leaf_clover:{keywords:["vegetable","plant","nature","lucky","irish"],"char":"\ud83c\udf40",fitzpatrick_scale:!1,category:"animals_and_nature"},bamboo:{keywords:["plant","nature","vegetable","panda","pine_decoration"],"char":"\ud83c\udf8d",fitzpatrick_scale:!1,category:"animals_and_nature"},tanabata_tree:{keywords:["plant","nature","branch","summer"],"char":"\ud83c\udf8b",fitzpatrick_scale:!1,category:"animals_and_nature"},leaves:{keywords:["nature","plant","tree","vegetable","grass","lawn","spring"],"char":"\ud83c\udf43",fitzpatrick_scale:!1,category:"animals_and_nature"},fallen_leaf:{keywords:["nature","plant","vegetable","leaves"],"char":"\ud83c\udf42",fitzpatrick_scale:!1,category:"animals_and_nature"},maple_leaf:{keywords:["nature","plant","vegetable","ca","fall"],"char":"\ud83c\udf41",fitzpatrick_scale:!1,category:"animals_and_nature"},ear_of_rice:{keywords:["nature","plant"],"char":"\ud83c\udf3e",fitzpatrick_scale:!1,category:"animals_and_nature"},hibiscus:{keywords:["plant","vegetable","flowers","beach"],"char":"\ud83c\udf3a",fitzpatrick_scale:!1,category:"animals_and_nature"},sunflower:{keywords:["nature","plant","fall"],"char":"\ud83c\udf3b",fitzpatrick_scale:!1,category:"animals_and_nature"},rose:{keywords:["flowers","valentines","love","spring"],"char":"\ud83c\udf39",fitzpatrick_scale:!1,category:"animals_and_nature"},wilted_flower:{keywords:["plant","nature","flower"],"char":"\ud83e\udd40",fitzpatrick_scale:!1,category:"animals_and_nature"},tulip:{keywords:["flowers","plant","nature","summer","spring"],"char":"\ud83c\udf37",fitzpatrick_scale:!1,category:"animals_and_nature"},blossom:{keywords:["nature","flowers","yellow"],"char":"\ud83c\udf3c",fitzpatrick_scale:!1,category:"animals_and_nature"},cherry_blossom:{keywords:["nature","plant","spring","flower"],"char":"\ud83c\udf38",fitzpatrick_scale:!1,category:"animals_and_nature"},bouquet:{keywords:["flowers","nature","spring"],"char":"\ud83d\udc90",fitzpatrick_scale:!1,category:"animals_and_nature"},mushroom:{keywords:["plant","vegetable"],"char":"\ud83c\udf44",fitzpatrick_scale:!1,category:"animals_and_nature"},chestnut:{keywords:["food","squirrel"],"char":"\ud83c\udf30",fitzpatrick_scale:!1,category:"animals_and_nature"},jack_o_lantern:{keywords:["halloween","light","pumpkin","creepy","fall"],"char":"\ud83c\udf83",fitzpatrick_scale:!1,category:"animals_and_nature"},shell:{keywords:["nature","sea","beach"],"char":"\ud83d\udc1a",fitzpatrick_scale:!1,category:"animals_and_nature"},spider_web:{keywords:["animal","insect","arachnid","silk"],"char":"\ud83d\udd78",fitzpatrick_scale:!1,category:"animals_and_nature"},earth_americas:{keywords:["globe","world","USA","international"],"char":"\ud83c\udf0e",fitzpatrick_scale:!1,category:"animals_and_nature"},earth_africa:{keywords:["globe","world","international"],"char":"\ud83c\udf0d",fitzpatrick_scale:!1,category:"animals_and_nature"},earth_asia:{keywords:["globe","world","east","international"],"char":"\ud83c\udf0f",fitzpatrick_scale:!1,category:"animals_and_nature"},full_moon:{keywords:["nature","yellow","twilight","planet","space","night","evening","sleep"],"char":"\ud83c\udf15",fitzpatrick_scale:!1,category:"animals_and_nature"},waning_gibbous_moon:{keywords:["nature","twilight","planet","space","night","evening","sleep","waxing_gibbous_moon"],"char":"\ud83c\udf16",fitzpatrick_scale:!1,category:"animals_and_nature"},last_quarter_moon:{keywords:["nature","twilight","planet","space","night","evening","sleep"],"char":"\ud83c\udf17",fitzpatrick_scale:!1,category:"animals_and_nature"},waning_crescent_moon:{keywords:["nature","twilight","planet","space","night","evening","sleep"],"char":"\ud83c\udf18",fitzpatrick_scale:!1,category:"animals_and_nature"},new_moon:{keywords:["nature","twilight","planet","space","night","evening","sleep"],"char":"\ud83c\udf11",fitzpatrick_scale:!1,category:"animals_and_nature"},waxing_crescent_moon:{keywords:["nature","twilight","planet","space","night","evening","sleep"],"char":"\ud83c\udf12",fitzpatrick_scale:!1,category:"animals_and_nature"},first_quarter_moon:{keywords:["nature","twilight","planet","space","night","evening","sleep"],"char":"\ud83c\udf13",fitzpatrick_scale:!1,category:"animals_and_nature"},waxing_gibbous_moon:{keywords:["nature","night","sky","gray","twilight","planet","space","evening","sleep"],"char":"\ud83c\udf14",fitzpatrick_scale:!1,category:"animals_and_nature"},new_moon_with_face:{keywords:["nature","twilight","planet","space","night","evening","sleep"],"char":"\ud83c\udf1a",fitzpatrick_scale:!1,category:"animals_and_nature"},full_moon_with_face:{keywords:["nature","twilight","planet","space","night","evening","sleep"],"char":"\ud83c\udf1d",fitzpatrick_scale:!1,category:"animals_and_nature"},first_quarter_moon_with_face:{keywords:["nature","twilight","planet","space","night","evening","sleep"],"char":"\ud83c\udf1b",fitzpatrick_scale:!1,category:"animals_and_nature"},last_quarter_moon_with_face:{keywords:["nature","twilight","planet","space","night","evening","sleep"],"char":"\ud83c\udf1c",fitzpatrick_scale:!1,category:"animals_and_nature"},sun_with_face:{keywords:["nature","morning","sky"],"char":"\ud83c\udf1e",fitzpatrick_scale:!1,category:"animals_and_nature"},crescent_moon:{keywords:["night","sleep","sky","evening","magic"],"char":"\ud83c\udf19",fitzpatrick_scale:!1,category:"animals_and_nature"},star:{keywords:["night","yellow"],"char":"\u2b50",fitzpatrick_scale:!1,category:"animals_and_nature"},star2:{keywords:["night","sparkle","awesome","good","magic"],"char":"\ud83c\udf1f",fitzpatrick_scale:!1,category:"animals_and_nature"},dizzy:{keywords:["star","sparkle","shoot","magic"],"char":"\ud83d\udcab",fitzpatrick_scale:!1,category:"animals_and_nature"},sparkles:{keywords:["stars","shine","shiny","cool","awesome","good","magic"],"char":"\u2728",fitzpatrick_scale:!1,category:"animals_and_nature"},comet:{keywords:["space"],"char":"\u2604",fitzpatrick_scale:!1,category:"animals_and_nature"},sunny:{keywords:["weather","nature","brightness","summer","beach","spring"],"char":"\u2600\ufe0f",fitzpatrick_scale:!1,category:"animals_and_nature"},sun_behind_small_cloud:{keywords:["weather"],"char":"\ud83c\udf24",fitzpatrick_scale:!1,category:"animals_and_nature"},partly_sunny:{keywords:["weather","nature","cloudy","morning","fall","spring"],"char":"\u26c5",fitzpatrick_scale:!1,category:"animals_and_nature"},sun_behind_large_cloud:{keywords:["weather"],"char":"\ud83c\udf25",fitzpatrick_scale:!1,category:"animals_and_nature"},sun_behind_rain_cloud:{keywords:["weather"],"char":"\ud83c\udf26",fitzpatrick_scale:!1,category:"animals_and_nature"},cloud:{keywords:["weather","sky"],"char":"\u2601\ufe0f",fitzpatrick_scale:!1,category:"animals_and_nature"},cloud_with_rain:{keywords:["weather"],"char":"\ud83c\udf27",fitzpatrick_scale:!1,category:"animals_and_nature"},cloud_with_lightning_and_rain:{keywords:["weather","lightning"],"char":"\u26c8",fitzpatrick_scale:!1,category:"animals_and_nature"},cloud_with_lightning:{keywords:["weather","thunder"],"char":"\ud83c\udf29",fitzpatrick_scale:!1,category:"animals_and_nature"},zap:{keywords:["thunder","weather","lightning bolt","fast"],"char":"\u26a1",fitzpatrick_scale:!1,category:"animals_and_nature"},fire:{keywords:["hot","cook","flame"],"char":"\ud83d\udd25",fitzpatrick_scale:!1,category:"animals_and_nature"},boom:{keywords:["bomb","explode","explosion","collision","blown"],"char":"\ud83d\udca5",fitzpatrick_scale:!1,category:"animals_and_nature"},snowflake:{keywords:["winter","season","cold","weather","christmas","xmas"],"char":"\u2744\ufe0f",fitzpatrick_scale:!1,category:"animals_and_nature"},cloud_with_snow:{keywords:["weather"],"char":"\ud83c\udf28",fitzpatrick_scale:!1,category:"animals_and_nature"},snowman:{keywords:["winter","season","cold","weather","christmas","xmas","frozen","without_snow"],"char":"\u26c4",fitzpatrick_scale:!1,category:"animals_and_nature"},snowman_with_snow:{keywords:["winter","season","cold","weather","christmas","xmas","frozen"],"char":"\u2603",fitzpatrick_scale:!1,category:"animals_and_nature"},wind_face:{keywords:["gust","air"],"char":"\ud83c\udf2c",fitzpatrick_scale:!1,category:"animals_and_nature"},dash:{keywords:["wind","air","fast","shoo","fart","smoke","puff"],"char":"\ud83d\udca8",fitzpatrick_scale:!1,category:"animals_and_nature"},tornado:{keywords:["weather","cyclone","twister"],"char":"\ud83c\udf2a",fitzpatrick_scale:!1,category:"animals_and_nature"},fog:{keywords:["weather"],"char":"\ud83c\udf2b",fitzpatrick_scale:!1,category:"animals_and_nature"},open_umbrella:{keywords:["weather","spring"],"char":"\u2602",fitzpatrick_scale:!1,category:"animals_and_nature"},umbrella:{keywords:["rainy","weather","spring"],"char":"\u2614",fitzpatrick_scale:!1,category:"animals_and_nature"},droplet:{keywords:["water","drip","faucet","spring"],"char":"\ud83d\udca7",fitzpatrick_scale:!1,category:"animals_and_nature"},sweat_drops:{keywords:["water","drip","oops"],"char":"\ud83d\udca6",fitzpatrick_scale:!1,category:"animals_and_nature"},ocean:{keywords:["sea","water","wave","nature","tsunami","disaster"],"char":"\ud83c\udf0a",fitzpatrick_scale:!1,category:"animals_and_nature"},green_apple:{keywords:["fruit","nature"],"char":"\ud83c\udf4f",fitzpatrick_scale:!1,category:"food_and_drink"},apple:{keywords:["fruit","mac","school"],"char":"\ud83c\udf4e",fitzpatrick_scale:!1,category:"food_and_drink"},pear:{keywords:["fruit","nature","food"],"char":"\ud83c\udf50",fitzpatrick_scale:!1,category:"food_and_drink"},tangerine:{keywords:["food","fruit","nature","orange"],"char":"\ud83c\udf4a",fitzpatrick_scale:!1,category:"food_and_drink"},lemon:{keywords:["fruit","nature"],"char":"\ud83c\udf4b",fitzpatrick_scale:!1,category:"food_and_drink"},banana:{keywords:["fruit","food","monkey"],"char":"\ud83c\udf4c",fitzpatrick_scale:!1,category:"food_and_drink"},watermelon:{keywords:["fruit","food","picnic","summer"],"char":"\ud83c\udf49",fitzpatrick_scale:!1,category:"food_and_drink"},grapes:{keywords:["fruit","food","wine"],"char":"\ud83c\udf47",fitzpatrick_scale:!1,category:"food_and_drink"},strawberry:{keywords:["fruit","food","nature"],"char":"\ud83c\udf53",fitzpatrick_scale:!1,category:"food_and_drink"},melon:{keywords:["fruit","nature","food"],"char":"\ud83c\udf48",fitzpatrick_scale:!1,category:"food_and_drink"},cherries:{keywords:["food","fruit"],"char":"\ud83c\udf52",fitzpatrick_scale:!1,category:"food_and_drink"},peach:{keywords:["fruit","nature","food"],"char":"\ud83c\udf51",fitzpatrick_scale:!1,category:"food_and_drink"},pineapple:{keywords:["fruit","nature","food"],"char":"\ud83c\udf4d",fitzpatrick_scale:!1,category:"food_and_drink"},coconut:{keywords:["fruit","nature","food","palm"],"char":"\ud83e\udd65",fitzpatrick_scale:!1,category:"food_and_drink"},kiwi_fruit:{keywords:["fruit","food"],"char":"\ud83e\udd5d",fitzpatrick_scale:!1,category:"food_and_drink"},avocado:{keywords:["fruit","food"],"char":"\ud83e\udd51",fitzpatrick_scale:!1,category:"food_and_drink"},broccoli:{keywords:["fruit","food","vegetable"],"char":"\ud83e\udd66",fitzpatrick_scale:!1,category:"food_and_drink"},tomato:{keywords:["fruit","vegetable","nature","food"],"char":"\ud83c\udf45",fitzpatrick_scale:!1,category:"food_and_drink"},eggplant:{keywords:["vegetable","nature","food","aubergine"],"char":"\ud83c\udf46",fitzpatrick_scale:!1,category:"food_and_drink"},cucumber:{keywords:["fruit","food","pickle"],"char":"\ud83e\udd52",fitzpatrick_scale:!1,category:"food_and_drink"},carrot:{keywords:["vegetable","food","orange"],"char":"\ud83e\udd55",fitzpatrick_scale:!1,category:"food_and_drink"},hot_pepper:{keywords:["food","spicy","chilli","chili"],"char":"\ud83c\udf36",fitzpatrick_scale:!1,category:"food_and_drink"},potato:{keywords:["food","tuber","vegatable","starch"],"char":"\ud83e\udd54",fitzpatrick_scale:!1,category:"food_and_drink"},corn:{keywords:["food","vegetable","plant"],"char":"\ud83c\udf3d",fitzpatrick_scale:!1,category:"food_and_drink"},sweet_potato:{keywords:["food","nature"],"char":"\ud83c\udf60",fitzpatrick_scale:!1,category:"food_and_drink"},peanuts:{keywords:["food","nut"],"char":"\ud83e\udd5c",fitzpatrick_scale:!1,category:"food_and_drink"},honey_pot:{keywords:["bees","sweet","kitchen"],"char":"\ud83c\udf6f",fitzpatrick_scale:!1,category:"food_and_drink"},croissant:{keywords:["food","bread","french"],"char":"\ud83e\udd50",fitzpatrick_scale:!1,category:"food_and_drink"},bread:{keywords:["food","wheat","breakfast","toast"],"char":"\ud83c\udf5e",fitzpatrick_scale:!1,category:"food_and_drink"},baguette_bread:{keywords:["food","bread","french"],"char":"\ud83e\udd56",fitzpatrick_scale:!1,category:"food_and_drink"},pretzel:{keywords:["food","bread","twisted"],"char":"\ud83e\udd68",fitzpatrick_scale:!1,category:"food_and_drink"},cheese:{keywords:["food","chadder"],"char":"\ud83e\uddc0",fitzpatrick_scale:!1,category:"food_and_drink"},egg:{keywords:["food","chicken","breakfast"],"char":"\ud83e\udd5a",fitzpatrick_scale:!1,category:"food_and_drink"},bacon:{keywords:["food","breakfast","pork","pig","meat"],"char":"\ud83e\udd53",fitzpatrick_scale:!1,category:"food_and_drink"},steak:{keywords:["food","cow","meat","cut","chop","lambchop","porkchop"],"char":"\ud83e\udd69",fitzpatrick_scale:!1,category:"food_and_drink"},pancakes:{keywords:["food","breakfast","flapjacks","hotcakes"],"char":"\ud83e\udd5e",fitzpatrick_scale:!1,category:"food_and_drink"},poultry_leg:{keywords:["food","meat","drumstick","bird","chicken","turkey"],"char":"\ud83c\udf57",fitzpatrick_scale:!1,category:"food_and_drink"},meat_on_bone:{keywords:["good","food","drumstick"],"char":"\ud83c\udf56",fitzpatrick_scale:!1,category:"food_and_drink"},fried_shrimp:{keywords:["food","animal","appetizer","summer"],"char":"\ud83c\udf64",fitzpatrick_scale:!1,category:"food_and_drink"},fried_egg:{keywords:["food","breakfast","kitchen","egg"],"char":"\ud83c\udf73",fitzpatrick_scale:!1,category:"food_and_drink"},hamburger:{keywords:["meat","fast food","beef","cheeseburger","mcdonalds","burger king"],"char":"\ud83c\udf54",fitzpatrick_scale:!1,category:"food_and_drink"},fries:{keywords:["chips","snack","fast food"],"char":"\ud83c\udf5f",fitzpatrick_scale:!1,category:"food_and_drink"},stuffed_flatbread:{keywords:["food","flatbread","stuffed","gyro"],"char":"\ud83e\udd59",fitzpatrick_scale:!1,category:"food_and_drink"},hotdog:{keywords:["food","frankfurter"],"char":"\ud83c\udf2d",fitzpatrick_scale:!1,category:"food_and_drink"},pizza:{keywords:["food","party"],"char":"\ud83c\udf55",fitzpatrick_scale:!1,category:"food_and_drink"},sandwich:{keywords:["food","lunch","bread"],"char":"\ud83e\udd6a",fitzpatrick_scale:!1,category:"food_and_drink"},canned_food:{keywords:["food","soup"],"char":"\ud83e\udd6b",fitzpatrick_scale:!1,category:"food_and_drink"},spaghetti:{keywords:["food","italian","noodle"],"char":"\ud83c\udf5d",fitzpatrick_scale:!1,category:"food_and_drink"},taco:{keywords:["food","mexican"],"char":"\ud83c\udf2e",fitzpatrick_scale:!1,category:"food_and_drink"},burrito:{keywords:["food","mexican"],"char":"\ud83c\udf2f",fitzpatrick_scale:!1,category:"food_and_drink"},green_salad:{keywords:["food","healthy","lettuce"],"char":"\ud83e\udd57",fitzpatrick_scale:!1,category:"food_and_drink"},shallow_pan_of_food:{keywords:["food","cooking","casserole","paella"],"char":"\ud83e\udd58",fitzpatrick_scale:!1,category:"food_and_drink"},ramen:{keywords:["food","japanese","noodle","chopsticks"],"char":"\ud83c\udf5c",fitzpatrick_scale:!1,category:"food_and_drink"},stew:{keywords:["food","meat","soup"],"char":"\ud83c\udf72",fitzpatrick_scale:!1,category:"food_and_drink"},fish_cake:{keywords:["food","japan","sea","beach","narutomaki","pink","swirl","kamaboko","surimi","ramen"],"char":"\ud83c\udf65",fitzpatrick_scale:!1,category:"food_and_drink"},fortune_cookie:{keywords:["food","prophecy"],"char":"\ud83e\udd60",fitzpatrick_scale:!1,category:"food_and_drink"},sushi:{keywords:["food","fish","japanese","rice"],"char":"\ud83c\udf63",fitzpatrick_scale:!1,category:"food_and_drink"},bento:{keywords:["food","japanese","box"],"char":"\ud83c\udf71",fitzpatrick_scale:!1,category:"food_and_drink"},curry:{keywords:["food","spicy","hot","indian"],"char":"\ud83c\udf5b",fitzpatrick_scale:!1,category:"food_and_drink"},rice_ball:{keywords:["food","japanese"],"char":"\ud83c\udf59",fitzpatrick_scale:!1,category:"food_and_drink"},rice:{keywords:["food","china","asian"],"char":"\ud83c\udf5a",fitzpatrick_scale:!1,category:"food_and_drink"},rice_cracker:{keywords:["food","japanese"],"char":"\ud83c\udf58",fitzpatrick_scale:!1,category:"food_and_drink"},oden:{keywords:["food","japanese"],"char":"\ud83c\udf62",fitzpatrick_scale:!1,category:"food_and_drink"},dango:{keywords:["food","dessert","sweet","japanese","barbecue","meat"],"char":"\ud83c\udf61",fitzpatrick_scale:!1,category:"food_and_drink"},shaved_ice:{keywords:["hot","dessert","summer"],"char":"\ud83c\udf67",fitzpatrick_scale:!1,category:"food_and_drink"},ice_cream:{keywords:["food","hot","dessert"],"char":"\ud83c\udf68",fitzpatrick_scale:!1,category:"food_and_drink"},icecream:{keywords:["food","hot","dessert","summer"],"char":"\ud83c\udf66",fitzpatrick_scale:!1,category:"food_and_drink"},pie:{keywords:["food","dessert","pastry"],"char":"\ud83e\udd67",fitzpatrick_scale:!1,category:"food_and_drink"},cake:{keywords:["food","dessert"],"char":"\ud83c\udf70",fitzpatrick_scale:!1,category:"food_and_drink"},birthday:{keywords:["food","dessert","cake"],"char":"\ud83c\udf82",fitzpatrick_scale:!1,category:"food_and_drink"},custard:{keywords:["dessert","food"],"char":"\ud83c\udf6e",fitzpatrick_scale:!1,category:"food_and_drink"},candy:{keywords:["snack","dessert","sweet","lolly"],"char":"\ud83c\udf6c",fitzpatrick_scale:!1,category:"food_and_drink"},lollipop:{keywords:["food","snack","candy","sweet"],"char":"\ud83c\udf6d",fitzpatrick_scale:!1,category:"food_and_drink"},chocolate_bar:{keywords:["food","snack","dessert","sweet"],"char":"\ud83c\udf6b",fitzpatrick_scale:!1,category:"food_and_drink"},popcorn:{keywords:["food","movie theater","films","snack"],"char":"\ud83c\udf7f",fitzpatrick_scale:!1,category:"food_and_drink"},dumpling:{keywords:["food","empanada","pierogi","potsticker"],"char":"\ud83e\udd5f",fitzpatrick_scale:!1,category:"food_and_drink"},doughnut:{keywords:["food","dessert","snack","sweet","donut"],"char":"\ud83c\udf69",fitzpatrick_scale:!1,category:"food_and_drink"},cookie:{keywords:["food","snack","oreo","chocolate","sweet","dessert"],"char":"\ud83c\udf6a",fitzpatrick_scale:!1,category:"food_and_drink"},milk_glass:{keywords:["beverage","drink","cow"],"char":"\ud83e\udd5b",fitzpatrick_scale:!1,category:"food_and_drink"},beer:{keywords:["relax","beverage","drink","drunk","party","pub","summer","alcohol","booze"],"char":"\ud83c\udf7a",fitzpatrick_scale:!1,category:"food_and_drink"},beers:{keywords:["relax","beverage","drink","drunk","party","pub","summer","alcohol","booze"],"char":"\ud83c\udf7b",fitzpatrick_scale:!1,category:"food_and_drink"},clinking_glasses:{keywords:["beverage","drink","party","alcohol","celebrate","cheers","wine","champagne","toast"],"char":"\ud83e\udd42",fitzpatrick_scale:!1,category:"food_and_drink"},wine_glass:{keywords:["drink","beverage","drunk","alcohol","booze"],"char":"\ud83c\udf77",fitzpatrick_scale:!1,category:"food_and_drink"},tumbler_glass:{keywords:["drink","beverage","drunk","alcohol","liquor","booze","bourbon","scotch","whisky","glass","shot"],"char":"\ud83e\udd43",fitzpatrick_scale:!1,category:"food_and_drink"},cocktail:{keywords:["drink","drunk","alcohol","beverage","booze","mojito"],"char":"\ud83c\udf78",fitzpatrick_scale:!1,category:"food_and_drink"},tropical_drink:{keywords:["beverage","cocktail","summer","beach","alcohol","booze","mojito"],"char":"\ud83c\udf79",fitzpatrick_scale:!1,category:"food_and_drink"},champagne:{keywords:["drink","wine","bottle","celebration"],"char":"\ud83c\udf7e",fitzpatrick_scale:!1,category:"food_and_drink"},sake:{keywords:["wine","drink","drunk","beverage","japanese","alcohol","booze"],"char":"\ud83c\udf76",fitzpatrick_scale:!1,category:"food_and_drink"},tea:{keywords:["drink","bowl","breakfast","green","british"],"char":"\ud83c\udf75",fitzpatrick_scale:!1,category:"food_and_drink"},cup_with_straw:{keywords:["drink","soda"],"char":"\ud83e\udd64",fitzpatrick_scale:!1,category:"food_and_drink"},coffee:{keywords:["beverage","caffeine","latte","espresso"],"char":"\u2615",fitzpatrick_scale:!1,category:"food_and_drink"},baby_bottle:{keywords:["food","container","milk"],"char":"\ud83c\udf7c",fitzpatrick_scale:!1,category:"food_and_drink"},spoon:{keywords:["cutlery","kitchen","tableware"],"char":"\ud83e\udd44",fitzpatrick_scale:!1,category:"food_and_drink"},fork_and_knife:{keywords:["cutlery","kitchen"],"char":"\ud83c\udf74",fitzpatrick_scale:!1,category:"food_and_drink"},plate_with_cutlery:{keywords:["food","eat","meal","lunch","dinner","restaurant"],"char":"\ud83c\udf7d",fitzpatrick_scale:!1,category:"food_and_drink"},bowl_with_spoon:{keywords:["food","breakfast","cereal","oatmeal","porridge"],"char":"\ud83e\udd63",fitzpatrick_scale:!1,category:"food_and_drink"},takeout_box:{keywords:["food","leftovers"],"char":"\ud83e\udd61",fitzpatrick_scale:!1,category:"food_and_drink"},chopsticks:{keywords:["food"],"char":"\ud83e\udd62",fitzpatrick_scale:!1,category:"food_and_drink"},soccer:{keywords:["sports","football"],"char":"\u26bd",fitzpatrick_scale:!1,category:"activity"},basketball:{keywords:["sports","balls","NBA"],"char":"\ud83c\udfc0",fitzpatrick_scale:!1,category:"activity"},football:{keywords:["sports","balls","NFL"],"char":"\ud83c\udfc8",fitzpatrick_scale:!1,category:"activity"},baseball:{keywords:["sports","balls"],"char":"\u26be",fitzpatrick_scale:!1,category:"activity"},tennis:{keywords:["sports","balls","green"],"char":"\ud83c\udfbe",fitzpatrick_scale:!1,category:"activity"},volleyball:{keywords:["sports","balls"],"char":"\ud83c\udfd0",fitzpatrick_scale:!1,category:"activity"},rugby_football:{keywords:["sports","team"],"char":"\ud83c\udfc9",fitzpatrick_scale:!1,category:"activity"},"8ball":{keywords:["pool","hobby","game","luck","magic"],"char":"\ud83c\udfb1",fitzpatrick_scale:!1,category:"activity"},golf:{keywords:["sports","business","flag","hole","summer"],"char":"\u26f3",fitzpatrick_scale:!1,category:"activity"},golfing_woman:{keywords:["sports","business","woman","female"],"char":"\ud83c\udfcc\ufe0f\u200d\u2640\ufe0f",fitzpatrick_scale:!1,category:"activity"},golfing_man:{keywords:["sports","business"],"char":"\ud83c\udfcc",fitzpatrick_scale:!0,category:"activity"},ping_pong:{keywords:["sports","pingpong"],"char":"\ud83c\udfd3",fitzpatrick_scale:!1,category:"activity"},badminton:{keywords:["sports"],"char":"\ud83c\udff8",fitzpatrick_scale:!1,category:"activity"},goal_net:{keywords:["sports"],"char":"\ud83e\udd45",fitzpatrick_scale:!1,category:"activity"},ice_hockey:{keywords:["sports"],"char":"\ud83c\udfd2",fitzpatrick_scale:!1,category:"activity"},field_hockey:{keywords:["sports"],"char":"\ud83c\udfd1",fitzpatrick_scale:!1,category:"activity"},cricket:{keywords:["sports"],"char":"\ud83c\udfcf",fitzpatrick_scale:!1,category:"activity"},ski:{keywords:["sports","winter","cold","snow"],"char":"\ud83c\udfbf",fitzpatrick_scale:!1,category:"activity"},skier:{keywords:["sports","winter","snow"],"char":"\u26f7",fitzpatrick_scale:!1,category:"activity"},snowboarder:{keywords:["sports","winter"],"char":"\ud83c\udfc2",fitzpatrick_scale:!0,category:"activity"},person_fencing:{keywords:["sports","fencing","sword"],"char":"\ud83e\udd3a",fitzpatrick_scale:!1,category:"activity"},women_wrestling:{keywords:["sports","wrestlers"],"char":"\ud83e\udd3c\u200d\u2640\ufe0f",fitzpatrick_scale:!1,category:"activity"},men_wrestling:{keywords:["sports","wrestlers"],"char":"\ud83e\udd3c\u200d\u2642\ufe0f",fitzpatrick_scale:!1,category:"activity"},woman_cartwheeling:{keywords:["gymnastics"],"char":"\ud83e\udd38\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"activity"},man_cartwheeling:{keywords:["gymnastics"],"char":"\ud83e\udd38\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"activity"},woman_playing_handball:{keywords:["sports"],"char":"\ud83e\udd3e\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"activity"},man_playing_handball:{keywords:["sports"],"char":"\ud83e\udd3e\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"activity"},ice_skate:{keywords:["sports"],"char":"\u26f8",fitzpatrick_scale:!1,category:"activity"},curling_stone:{keywords:["sports"],"char":"\ud83e\udd4c",fitzpatrick_scale:!1,category:"activity"},sled:{keywords:["sleigh","luge","toboggan"],"char":"\ud83d\udef7",fitzpatrick_scale:!1,category:"activity"},bow_and_arrow:{keywords:["sports"],"char":"\ud83c\udff9",fitzpatrick_scale:!1,category:"activity"},fishing_pole_and_fish:{keywords:["food","hobby","summer"],"char":"\ud83c\udfa3",fitzpatrick_scale:!1,category:"activity"},boxing_glove:{keywords:["sports","fighting"],"char":"\ud83e\udd4a",fitzpatrick_scale:!1,category:"activity"},martial_arts_uniform:{keywords:["judo","karate","taekwondo"],"char":"\ud83e\udd4b",fitzpatrick_scale:!1,category:"activity"},rowing_woman:{keywords:["sports","hobby","water","ship","woman","female"],"char":"\ud83d\udea3\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"activity"},rowing_man:{keywords:["sports","hobby","water","ship"],"char":"\ud83d\udea3",fitzpatrick_scale:!0,category:"activity"},climbing_woman:{keywords:["sports","hobby","woman","female","rock"],"char":"\ud83e\uddd7\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"activity"},climbing_man:{keywords:["sports","hobby","man","male","rock"],"char":"\ud83e\uddd7\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"activity"},swimming_woman:{keywords:["sports","exercise","human","athlete","water","summer","woman","female"],"char":"\ud83c\udfca\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"activity"},swimming_man:{keywords:["sports","exercise","human","athlete","water","summer"],"char":"\ud83c\udfca",fitzpatrick_scale:!0,category:"activity"},woman_playing_water_polo:{keywords:["sports","pool"],"char":"\ud83e\udd3d\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"activity"},man_playing_water_polo:{keywords:["sports","pool"],"char":"\ud83e\udd3d\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"activity"},woman_in_lotus_position:{keywords:["woman","female","meditation","yoga","serenity","zen","mindfulness"],"char":"\ud83e\uddd8\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"activity"},man_in_lotus_position:{keywords:["man","male","meditation","yoga","serenity","zen","mindfulness"],"char":"\ud83e\uddd8\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"activity"},surfing_woman:{keywords:["sports","ocean","sea","summer","beach","woman","female"],"char":"\ud83c\udfc4\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"activity"},surfing_man:{keywords:["sports","ocean","sea","summer","beach"],"char":"\ud83c\udfc4",fitzpatrick_scale:!0,category:"activity"},bath:{keywords:["clean","shower","bathroom"],"char":"\ud83d\udec0",fitzpatrick_scale:!0,category:"activity"},basketball_woman:{keywords:["sports","human","woman","female"],"char":"\u26f9\ufe0f\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"activity"},basketball_man:{keywords:["sports","human"],"char":"\u26f9",fitzpatrick_scale:!0,category:"activity"},weight_lifting_woman:{keywords:["sports","training","exercise","woman","female"],"char":"\ud83c\udfcb\ufe0f\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"activity"},weight_lifting_man:{keywords:["sports","training","exercise"],"char":"\ud83c\udfcb",fitzpatrick_scale:!0,category:"activity"},biking_woman:{keywords:["sports","bike","exercise","hipster","woman","female"],"char":"\ud83d\udeb4\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"activity"},biking_man:{keywords:["sports","bike","exercise","hipster"],"char":"\ud83d\udeb4",fitzpatrick_scale:!0,category:"activity"},mountain_biking_woman:{keywords:["transportation","sports","human","race","bike","woman","female"],"char":"\ud83d\udeb5\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"activity"},mountain_biking_man:{keywords:["transportation","sports","human","race","bike"],"char":"\ud83d\udeb5",fitzpatrick_scale:!0,category:"activity"},horse_racing:{keywords:["animal","betting","competition","gambling","luck"],"char":"\ud83c\udfc7",fitzpatrick_scale:!0,category:"activity"},business_suit_levitating:{keywords:["suit","business","levitate","hover","jump"],"char":"\ud83d\udd74",fitzpatrick_scale:!0,category:"activity"},trophy:{keywords:["win","award","contest","place","ftw","ceremony"],"char":"\ud83c\udfc6",fitzpatrick_scale:!1,category:"activity"},running_shirt_with_sash:{keywords:["play","pageant"],"char":"\ud83c\udfbd",fitzpatrick_scale:!1,category:"activity"},medal_sports:{keywords:["award","winning"],"char":"\ud83c\udfc5",fitzpatrick_scale:!1,category:"activity"},medal_military:{keywords:["award","winning","army"],"char":"\ud83c\udf96",fitzpatrick_scale:!1,category:"activity"},"1st_place_medal":{keywords:["award","winning","first"],"char":"\ud83e\udd47",fitzpatrick_scale:!1,category:"activity"},"2nd_place_medal":{keywords:["award","second"],"char":"\ud83e\udd48",fitzpatrick_scale:!1,category:"activity"},"3rd_place_medal":{keywords:["award","third"],"char":"\ud83e\udd49",fitzpatrick_scale:!1,category:"activity"},reminder_ribbon:{keywords:["sports","cause","support","awareness"],"char":"\ud83c\udf97",fitzpatrick_scale:!1,category:"activity"},rosette:{keywords:["flower","decoration","military"],"char":"\ud83c\udff5",fitzpatrick_scale:!1,category:"activity"},ticket:{keywords:["event","concert","pass"],"char":"\ud83c\udfab",fitzpatrick_scale:!1,category:"activity"},tickets:{keywords:["sports","concert","entrance"],"char":"\ud83c\udf9f",fitzpatrick_scale:!1,category:"activity"},performing_arts:{keywords:["acting","theater","drama"],"char":"\ud83c\udfad",fitzpatrick_scale:!1,category:"activity"},art:{keywords:["design","paint","draw","colors"],"char":"\ud83c\udfa8",fitzpatrick_scale:!1,category:"activity"},circus_tent:{keywords:["festival","carnival","party"],"char":"\ud83c\udfaa",fitzpatrick_scale:!1,category:"activity"},woman_juggling:{keywords:["juggle","balance","skill","multitask"],"char":"\ud83e\udd39\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"activity"},man_juggling:{keywords:["juggle","balance","skill","multitask"],"char":"\ud83e\udd39\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"activity"},microphone:{keywords:["sound","music","PA","sing","talkshow"],"char":"\ud83c\udfa4",fitzpatrick_scale:!1,category:"activity"},headphones:{keywords:["music","score","gadgets"],"char":"\ud83c\udfa7",fitzpatrick_scale:!1,category:"activity"},musical_score:{keywords:["treble","clef","compose"],"char":"\ud83c\udfbc",fitzpatrick_scale:!1,category:"activity"},musical_keyboard:{keywords:["piano","instrument","compose"],"char":"\ud83c\udfb9",fitzpatrick_scale:!1,category:"activity"},drum:{keywords:["music","instrument","drumsticks","snare"],"char":"\ud83e\udd41",fitzpatrick_scale:!1,category:"activity"},saxophone:{keywords:["music","instrument","jazz","blues"],"char":"\ud83c\udfb7",fitzpatrick_scale:!1,category:"activity"},trumpet:{keywords:["music","brass"],"char":"\ud83c\udfba",fitzpatrick_scale:!1,category:"activity"},guitar:{keywords:["music","instrument"],"char":"\ud83c\udfb8",fitzpatrick_scale:!1,category:"activity"},violin:{keywords:["music","instrument","orchestra","symphony"],"char":"\ud83c\udfbb",fitzpatrick_scale:!1,category:"activity"},clapper:{keywords:["movie","film","record"],"char":"\ud83c\udfac",fitzpatrick_scale:!1,category:"activity"},video_game:{keywords:["play","console","PS4","controller"],"char":"\ud83c\udfae",fitzpatrick_scale:!1,category:"activity"},space_invader:{keywords:["game","arcade","play"],"char":"\ud83d\udc7e",fitzpatrick_scale:!1,category:"activity"},dart:{keywords:["game","play","bar","target","bullseye"],"char":"\ud83c\udfaf",fitzpatrick_scale:!1,category:"activity"},game_die:{keywords:["dice","random","tabletop","play","luck"],"char":"\ud83c\udfb2",fitzpatrick_scale:!1,category:"activity"},slot_machine:{keywords:["bet","gamble","vegas","fruit machine","luck","casino"],"char":"\ud83c\udfb0",fitzpatrick_scale:!1,category:"activity"},bowling:{keywords:["sports","fun","play"],"char":"\ud83c\udfb3",fitzpatrick_scale:!1,category:"activity"},red_car:{keywords:["red","transportation","vehicle"],"char":"\ud83d\ude97",fitzpatrick_scale:!1,category:"travel_and_places"},taxi:{keywords:["uber","vehicle","cars","transportation"],"char":"\ud83d\ude95",fitzpatrick_scale:!1,category:"travel_and_places"},blue_car:{keywords:["transportation","vehicle"],"char":"\ud83d\ude99",fitzpatrick_scale:!1,category:"travel_and_places"},bus:{keywords:["car","vehicle","transportation"],"char":"\ud83d\ude8c",fitzpatrick_scale:!1,category:"travel_and_places"},trolleybus:{keywords:["bart","transportation","vehicle"],"char":"\ud83d\ude8e",fitzpatrick_scale:!1,category:"travel_and_places"},racing_car:{keywords:["sports","race","fast","formula","f1"],"char":"\ud83c\udfce",fitzpatrick_scale:!1,category:"travel_and_places"},police_car:{keywords:["vehicle","cars","transportation","law","legal","enforcement"],"char":"\ud83d\ude93",fitzpatrick_scale:!1,category:"travel_and_places"},ambulance:{keywords:["health","911","hospital"],"char":"\ud83d\ude91",fitzpatrick_scale:!1,category:"travel_and_places"},fire_engine:{keywords:["transportation","cars","vehicle"],"char":"\ud83d\ude92",fitzpatrick_scale:!1,category:"travel_and_places"},minibus:{keywords:["vehicle","car","transportation"],"char":"\ud83d\ude90",fitzpatrick_scale:!1,category:"travel_and_places"},truck:{keywords:["cars","transportation"],"char":"\ud83d\ude9a",fitzpatrick_scale:!1,category:"travel_and_places"},articulated_lorry:{keywords:["vehicle","cars","transportation","express"],"char":"\ud83d\ude9b",fitzpatrick_scale:!1,category:"travel_and_places"},tractor:{keywords:["vehicle","car","farming","agriculture"],"char":"\ud83d\ude9c",fitzpatrick_scale:!1,category:"travel_and_places"},kick_scooter:{keywords:["vehicle","kick","razor"],"char":"\ud83d\udef4",fitzpatrick_scale:!1,category:"travel_and_places"},motorcycle:{keywords:["race","sports","fast"],"char":"\ud83c\udfcd",fitzpatrick_scale:!1,category:"travel_and_places"},bike:{keywords:["sports","bicycle","exercise","hipster"],"char":"\ud83d\udeb2",fitzpatrick_scale:!1,category:"travel_and_places"},motor_scooter:{keywords:["vehicle","vespa","sasha"],"char":"\ud83d\udef5",fitzpatrick_scale:!1,category:"travel_and_places"},rotating_light:{keywords:["police","ambulance","911","emergency","alert","error","pinged","law","legal"],"char":"\ud83d\udea8",fitzpatrick_scale:!1,category:"travel_and_places"},oncoming_police_car:{keywords:["vehicle","law","legal","enforcement","911"],"char":"\ud83d\ude94",fitzpatrick_scale:!1,category:"travel_and_places"},oncoming_bus:{keywords:["vehicle","transportation"],"char":"\ud83d\ude8d",fitzpatrick_scale:!1,category:"travel_and_places"},oncoming_automobile:{keywords:["car","vehicle","transportation"],"char":"\ud83d\ude98",fitzpatrick_scale:!1,category:"travel_and_places"},oncoming_taxi:{keywords:["vehicle","cars","uber"],"char":"\ud83d\ude96",fitzpatrick_scale:!1,category:"travel_and_places"},aerial_tramway:{keywords:["transportation","vehicle","ski"],"char":"\ud83d\udea1",fitzpatrick_scale:!1,category:"travel_and_places"},mountain_cableway:{keywords:["transportation","vehicle","ski"],"char":"\ud83d\udea0",fitzpatrick_scale:!1,category:"travel_and_places"},suspension_railway:{keywords:["vehicle","transportation"],"char":"\ud83d\ude9f",fitzpatrick_scale:!1,category:"travel_and_places"},railway_car:{keywords:["transportation","vehicle"],"char":"\ud83d\ude83",fitzpatrick_scale:!1,category:"travel_and_places"},train:{keywords:["transportation","vehicle","carriage","public","travel"],"char":"\ud83d\ude8b",fitzpatrick_scale:!1,category:"travel_and_places"},monorail:{keywords:["transportation","vehicle"],"char":"\ud83d\ude9d",fitzpatrick_scale:!1,category:"travel_and_places"},bullettrain_side:{keywords:["transportation","vehicle"],"char":"\ud83d\ude84",fitzpatrick_scale:!1,category:"travel_and_places"},bullettrain_front:{keywords:["transportation","vehicle","speed","fast","public","travel"],"char":"\ud83d\ude85",fitzpatrick_scale:!1,category:"travel_and_places"},light_rail:{keywords:["transportation","vehicle"],"char":"\ud83d\ude88",fitzpatrick_scale:!1,category:"travel_and_places"},mountain_railway:{keywords:["transportation","vehicle"],"char":"\ud83d\ude9e",fitzpatrick_scale:!1,category:"travel_and_places"},steam_locomotive:{keywords:["transportation","vehicle","train"],"char":"\ud83d\ude82",fitzpatrick_scale:!1,category:"travel_and_places"},train2:{keywords:["transportation","vehicle"],"char":"\ud83d\ude86",fitzpatrick_scale:!1,category:"travel_and_places"},metro:{keywords:["transportation","blue-square","mrt","underground","tube"],"char":"\ud83d\ude87",fitzpatrick_scale:!1,category:"travel_and_places"},tram:{keywords:["transportation","vehicle"],"char":"\ud83d\ude8a",fitzpatrick_scale:!1,category:"travel_and_places"},station:{keywords:["transportation","vehicle","public"],"char":"\ud83d\ude89",fitzpatrick_scale:!1,category:"travel_and_places"},flying_saucer:{keywords:["transportation","vehicle","ufo"],"char":"\ud83d\udef8",fitzpatrick_scale:!1,category:"travel_and_places"},helicopter:{keywords:["transportation","vehicle","fly"],"char":"\ud83d\ude81",fitzpatrick_scale:!1,category:"travel_and_places"},small_airplane:{keywords:["flight","transportation","fly","vehicle"],"char":"\ud83d\udee9",fitzpatrick_scale:!1,category:"travel_and_places"},airplane:{keywords:["vehicle","transportation","flight","fly"],"char":"\u2708\ufe0f",fitzpatrick_scale:!1,category:"travel_and_places"},flight_departure:{keywords:["airport","flight","landing"],"char":"\ud83d\udeeb",fitzpatrick_scale:!1,category:"travel_and_places"},flight_arrival:{keywords:["airport","flight","boarding"],"char":"\ud83d\udeec",fitzpatrick_scale:!1,category:"travel_and_places"},sailboat:{keywords:["ship","summer","transportation","water","sailing"],"char":"\u26f5",fitzpatrick_scale:!1,category:"travel_and_places"},motor_boat:{keywords:["ship"],"char":"\ud83d\udee5",fitzpatrick_scale:!1,category:"travel_and_places"},speedboat:{keywords:["ship","transportation","vehicle","summer"],"char":"\ud83d\udea4",fitzpatrick_scale:!1,category:"travel_and_places"},ferry:{keywords:["boat","ship","yacht"],"char":"\u26f4",fitzpatrick_scale:!1,category:"travel_and_places"},passenger_ship:{keywords:["yacht","cruise","ferry"],"char":"\ud83d\udef3",fitzpatrick_scale:!1,category:"travel_and_places"},rocket:{keywords:["launch","ship","staffmode","NASA","outer space","outer_space","fly"],"char":"\ud83d\ude80",fitzpatrick_scale:!1,category:"travel_and_places"},artificial_satellite:{keywords:["communication","gps","orbit","spaceflight","NASA","ISS"],"char":"\ud83d\udef0",fitzpatrick_scale:!1,category:"travel_and_places"},seat:{keywords:["sit","airplane","transport","bus","flight","fly"],"char":"\ud83d\udcba",fitzpatrick_scale:!1,category:"travel_and_places"},canoe:{keywords:["boat","paddle","water","ship"],"char":"\ud83d\udef6",fitzpatrick_scale:!1,category:"travel_and_places"},anchor:{keywords:["ship","ferry","sea","boat"],"char":"\u2693",fitzpatrick_scale:!1,category:"travel_and_places"},construction:{keywords:["wip","progress","caution","warning"],"char":"\ud83d\udea7",fitzpatrick_scale:!1,category:"travel_and_places"},fuelpump:{keywords:["gas station","petroleum"],"char":"\u26fd",fitzpatrick_scale:!1,category:"travel_and_places"},busstop:{keywords:["transportation","wait"],"char":"\ud83d\ude8f",fitzpatrick_scale:!1,category:"travel_and_places"},vertical_traffic_light:{keywords:["transportation","driving"],"char":"\ud83d\udea6",fitzpatrick_scale:!1,category:"travel_and_places"},traffic_light:{keywords:["transportation","signal"],"char":"\ud83d\udea5",fitzpatrick_scale:!1,category:"travel_and_places"},checkered_flag:{keywords:["contest","finishline","race","gokart"],"char":"\ud83c\udfc1",fitzpatrick_scale:!1,category:"travel_and_places"},ship:{keywords:["transportation","titanic","deploy"],"char":"\ud83d\udea2",fitzpatrick_scale:!1,category:"travel_and_places"},ferris_wheel:{keywords:["photo","carnival","londoneye"],"char":"\ud83c\udfa1",fitzpatrick_scale:!1,category:"travel_and_places"},roller_coaster:{keywords:["carnival","playground","photo","fun"],"char":"\ud83c\udfa2",fitzpatrick_scale:!1,category:"travel_and_places"},carousel_horse:{keywords:["photo","carnival"],"char":"\ud83c\udfa0",fitzpatrick_scale:!1,category:"travel_and_places"},building_construction:{keywords:["wip","working","progress"],"char":"\ud83c\udfd7",fitzpatrick_scale:!1,category:"travel_and_places"},foggy:{keywords:["photo","mountain"],"char":"\ud83c\udf01",fitzpatrick_scale:!1,category:"travel_and_places"},tokyo_tower:{keywords:["photo","japanese"],"char":"\ud83d\uddfc",fitzpatrick_scale:!1,category:"travel_and_places"},factory:{keywords:["building","industry","pollution","smoke"],"char":"\ud83c\udfed",fitzpatrick_scale:!1,category:"travel_and_places"},fountain:{keywords:["photo","summer","water","fresh"],"char":"\u26f2",fitzpatrick_scale:!1,category:"travel_and_places"},rice_scene:{keywords:["photo","japan","asia","tsukimi"],"char":"\ud83c\udf91",fitzpatrick_scale:!1,category:"travel_and_places"},mountain:{keywords:["photo","nature","environment"],"char":"\u26f0",fitzpatrick_scale:!1,category:"travel_and_places"},mountain_snow:{keywords:["photo","nature","environment","winter","cold"],"char":"\ud83c\udfd4",fitzpatrick_scale:!1,category:"travel_and_places"},mount_fuji:{keywords:["photo","mountain","nature","japanese"],"char":"\ud83d\uddfb",fitzpatrick_scale:!1,category:"travel_and_places"},volcano:{keywords:["photo","nature","disaster"],"char":"\ud83c\udf0b",fitzpatrick_scale:!1,category:"travel_and_places"},japan:{keywords:["nation","country","japanese","asia"],"char":"\ud83d\uddfe",fitzpatrick_scale:!1,category:"travel_and_places"},camping:{keywords:["photo","outdoors","tent"],"char":"\ud83c\udfd5",fitzpatrick_scale:!1,category:"travel_and_places"},tent:{keywords:["photo","camping","outdoors"],"char":"\u26fa",fitzpatrick_scale:!1,category:"travel_and_places"},national_park:{keywords:["photo","environment","nature"],"char":"\ud83c\udfde",fitzpatrick_scale:!1,category:"travel_and_places"},motorway:{keywords:["road","cupertino","interstate","highway"],"char":"\ud83d\udee3",fitzpatrick_scale:!1,category:"travel_and_places"},railway_track:{keywords:["train","transportation"],"char":"\ud83d\udee4",fitzpatrick_scale:!1,category:"travel_and_places"},sunrise:{keywords:["morning","view","vacation","photo"],"char":"\ud83c\udf05",fitzpatrick_scale:!1,category:"travel_and_places"},sunrise_over_mountains:{keywords:["view","vacation","photo"],"char":"\ud83c\udf04",fitzpatrick_scale:!1,category:"travel_and_places"},desert:{keywords:["photo","warm","saharah"],"char":"\ud83c\udfdc",fitzpatrick_scale:!1,category:"travel_and_places"},beach_umbrella:{keywords:["weather","summer","sunny","sand","mojito"],"char":"\ud83c\udfd6",fitzpatrick_scale:!1,category:"travel_and_places"},desert_island:{keywords:["photo","tropical","mojito"],"char":"\ud83c\udfdd",fitzpatrick_scale:!1,category:"travel_and_places"},city_sunrise:{keywords:["photo","good morning","dawn"],"char":"\ud83c\udf07",fitzpatrick_scale:!1,category:"travel_and_places"},city_sunset:{keywords:["photo","evening","sky","buildings"],"char":"\ud83c\udf06",fitzpatrick_scale:!1,category:"travel_and_places"},cityscape:{keywords:["photo","night life","urban"],"char":"\ud83c\udfd9",fitzpatrick_scale:!1,category:"travel_and_places"},night_with_stars:{keywords:["evening","city","downtown"],"char":"\ud83c\udf03",fitzpatrick_scale:!1,category:"travel_and_places"},bridge_at_night:{keywords:["photo","sanfrancisco"],"char":"\ud83c\udf09",fitzpatrick_scale:!1,category:"travel_and_places"},milky_way:{keywords:["photo","space","stars"],"char":"\ud83c\udf0c",fitzpatrick_scale:!1,category:"travel_and_places"},stars:{keywords:["night","photo"],"char":"\ud83c\udf20",fitzpatrick_scale:!1,category:"travel_and_places"},sparkler:{keywords:["stars","night","shine"],"char":"\ud83c\udf87",fitzpatrick_scale:!1,category:"travel_and_places"},fireworks:{keywords:["photo","festival","carnival","congratulations"],"char":"\ud83c\udf86",fitzpatrick_scale:!1,category:"travel_and_places"},rainbow:{keywords:["nature","happy","unicorn_face","photo","sky","spring"],"char":"\ud83c\udf08",fitzpatrick_scale:!1,category:"travel_and_places"},houses:{keywords:["buildings","photo"],"char":"\ud83c\udfd8",fitzpatrick_scale:!1,category:"travel_and_places"},european_castle:{keywords:["building","royalty","history"],"char":"\ud83c\udff0",fitzpatrick_scale:!1,category:"travel_and_places"},japanese_castle:{keywords:["photo","building"],"char":"\ud83c\udfef",fitzpatrick_scale:!1,category:"travel_and_places"},stadium:{keywords:["photo","place","sports","concert","venue"],"char":"\ud83c\udfdf",fitzpatrick_scale:!1,category:"travel_and_places"},statue_of_liberty:{keywords:["american","newyork"],"char":"\ud83d\uddfd",fitzpatrick_scale:!1,category:"travel_and_places"},house:{keywords:["building","home"],"char":"\ud83c\udfe0",fitzpatrick_scale:!1,category:"travel_and_places"},house_with_garden:{keywords:["home","plant","nature"],"char":"\ud83c\udfe1",fitzpatrick_scale:!1,category:"travel_and_places"},derelict_house:{keywords:["abandon","evict","broken","building"],"char":"\ud83c\udfda",fitzpatrick_scale:!1,category:"travel_and_places"},office:{keywords:["building","bureau","work"],"char":"\ud83c\udfe2",fitzpatrick_scale:!1,category:"travel_and_places"},department_store:{keywords:["building","shopping","mall"],"char":"\ud83c\udfec",fitzpatrick_scale:!1,category:"travel_and_places"},post_office:{keywords:["building","envelope","communication"],"char":"\ud83c\udfe3",fitzpatrick_scale:!1,category:"travel_and_places"},european_post_office:{keywords:["building","email"],"char":"\ud83c\udfe4",fitzpatrick_scale:!1,category:"travel_and_places"},hospital:{keywords:["building","health","surgery","doctor"],"char":"\ud83c\udfe5",fitzpatrick_scale:!1,category:"travel_and_places"},bank:{keywords:["building","money","sales","cash","business","enterprise"],"char":"\ud83c\udfe6",fitzpatrick_scale:!1,category:"travel_and_places"},hotel:{keywords:["building","accomodation","checkin"],"char":"\ud83c\udfe8",fitzpatrick_scale:!1,category:"travel_and_places"},convenience_store:{keywords:["building","shopping","groceries"],"char":"\ud83c\udfea",fitzpatrick_scale:!1,category:"travel_and_places"},school:{keywords:["building","student","education","learn","teach"],"char":"\ud83c\udfeb",fitzpatrick_scale:!1,category:"travel_and_places"},love_hotel:{keywords:["like","affection","dating"],"char":"\ud83c\udfe9",fitzpatrick_scale:!1,category:"travel_and_places"},wedding:{keywords:["love","like","affection","couple","marriage","bride","groom"],"char":"\ud83d\udc92",fitzpatrick_scale:!1,category:"travel_and_places"},classical_building:{keywords:["art","culture","history"],"char":"\ud83c\udfdb",fitzpatrick_scale:!1,category:"travel_and_places"},church:{keywords:["building","religion","christ"],"char":"\u26ea",fitzpatrick_scale:!1,category:"travel_and_places"},mosque:{keywords:["islam","worship","minaret"],"char":"\ud83d\udd4c",fitzpatrick_scale:!1,category:"travel_and_places"},synagogue:{keywords:["judaism","worship","temple","jewish"],"char":"\ud83d\udd4d",fitzpatrick_scale:!1,category:"travel_and_places"},kaaba:{keywords:["mecca","mosque","islam"],"char":"\ud83d\udd4b",fitzpatrick_scale:!1,category:"travel_and_places"},shinto_shrine:{keywords:["temple","japan","kyoto"],"char":"\u26e9",fitzpatrick_scale:!1,category:"travel_and_places"},watch:{keywords:["time","accessories"],"char":"\u231a",fitzpatrick_scale:!1,category:"objects"},iphone:{keywords:["technology","apple","gadgets","dial"],"char":"\ud83d\udcf1",fitzpatrick_scale:!1,category:"objects"},calling:{keywords:["iphone","incoming"],"char":"\ud83d\udcf2",fitzpatrick_scale:!1,category:"objects"},computer:{keywords:["technology","laptop","screen","display","monitor"],"char":"\ud83d\udcbb",fitzpatrick_scale:!1,category:"objects"},keyboard:{keywords:["technology","computer","type","input","text"],"char":"\u2328",fitzpatrick_scale:!1,category:"objects"},desktop_computer:{keywords:["technology","computing","screen"],"char":"\ud83d\udda5",fitzpatrick_scale:!1,category:"objects"},printer:{keywords:["paper","ink"],"char":"\ud83d\udda8",fitzpatrick_scale:!1,category:"objects"},computer_mouse:{keywords:["click"],"char":"\ud83d\uddb1",fitzpatrick_scale:!1,category:"objects"},trackball:{keywords:["technology","trackpad"],"char":"\ud83d\uddb2",fitzpatrick_scale:!1,category:"objects"},joystick:{keywords:["game","play"],"char":"\ud83d\udd79",fitzpatrick_scale:!1,category:"objects"},clamp:{keywords:["tool"],"char":"\ud83d\udddc",fitzpatrick_scale:!1,category:"objects"},minidisc:{keywords:["technology","record","data","disk","90s"],"char":"\ud83d\udcbd",fitzpatrick_scale:!1,category:"objects"},floppy_disk:{keywords:["oldschool","technology","save","90s","80s"],"char":"\ud83d\udcbe",fitzpatrick_scale:!1,category:"objects"},cd:{keywords:["technology","dvd","disk","disc","90s"],"char":"\ud83d\udcbf",fitzpatrick_scale:!1,category:"objects"},dvd:{keywords:["cd","disk","disc"],"char":"\ud83d\udcc0",fitzpatrick_scale:!1,category:"objects"},vhs:{keywords:["record","video","oldschool","90s","80s"],"char":"\ud83d\udcfc",fitzpatrick_scale:!1,category:"objects"},camera:{keywords:["gadgets","photography"],"char":"\ud83d\udcf7",fitzpatrick_scale:!1,category:"objects"},camera_flash:{keywords:["photography","gadgets"],"char":"\ud83d\udcf8",fitzpatrick_scale:!1,category:"objects"},video_camera:{keywords:["film","record"],"char":"\ud83d\udcf9",fitzpatrick_scale:!1,category:"objects"},movie_camera:{keywords:["film","record"],"char":"\ud83c\udfa5",fitzpatrick_scale:!1,category:"objects"},film_projector:{keywords:["video","tape","record","movie"],"char":"\ud83d\udcfd",fitzpatrick_scale:!1,category:"objects"},film_strip:{keywords:["movie"],"char":"\ud83c\udf9e",fitzpatrick_scale:!1,category:"objects"},telephone_receiver:{keywords:["technology","communication","dial"],"char":"\ud83d\udcde",fitzpatrick_scale:!1,category:"objects"},phone:{keywords:["technology","communication","dial","telephone"],"char":"\u260e\ufe0f",fitzpatrick_scale:!1,category:"objects"},pager:{keywords:["bbcall","oldschool","90s"],"char":"\ud83d\udcdf",fitzpatrick_scale:!1,category:"objects"},fax:{keywords:["communication","technology"],"char":"\ud83d\udce0",fitzpatrick_scale:!1,category:"objects"},tv:{keywords:["technology","program","oldschool","show","television"],"char":"\ud83d\udcfa",fitzpatrick_scale:!1,category:"objects"},radio:{keywords:["communication","music","podcast","program"],"char":"\ud83d\udcfb",fitzpatrick_scale:!1,category:"objects"},studio_microphone:{keywords:["sing","recording","artist","talkshow"],"char":"\ud83c\udf99",fitzpatrick_scale:!1,category:"objects"},level_slider:{keywords:["scale"],"char":"\ud83c\udf9a",fitzpatrick_scale:!1,category:"objects"},control_knobs:{keywords:["dial"],"char":"\ud83c\udf9b",fitzpatrick_scale:!1,category:"objects"},stopwatch:{keywords:["time","deadline"],"char":"\u23f1",fitzpatrick_scale:!1,category:"objects"},timer_clock:{keywords:["alarm"],"char":"\u23f2",fitzpatrick_scale:!1,category:"objects"},alarm_clock:{keywords:["time","wake"],"char":"\u23f0",fitzpatrick_scale:!1,category:"objects"},mantelpiece_clock:{keywords:["time"],"char":"\ud83d\udd70",fitzpatrick_scale:!1,category:"objects"},hourglass_flowing_sand:{keywords:["oldschool","time","countdown"],"char":"\u23f3",fitzpatrick_scale:!1,category:"objects"},hourglass:{keywords:["time","clock","oldschool","limit","exam","quiz","test"],"char":"\u231b",fitzpatrick_scale:!1,category:"objects"},satellite:{keywords:["communication","future","radio","space"],"char":"\ud83d\udce1",fitzpatrick_scale:!1,category:"objects"},battery:{keywords:["power","energy","sustain"],"char":"\ud83d\udd0b",fitzpatrick_scale:!1,category:"objects"},electric_plug:{keywords:["charger","power"],"char":"\ud83d\udd0c",fitzpatrick_scale:!1,category:"objects"},bulb:{keywords:["light","electricity","idea"],"char":"\ud83d\udca1",fitzpatrick_scale:!1,category:"objects"},flashlight:{keywords:["dark","camping","sight","night"],"char":"\ud83d\udd26",fitzpatrick_scale:!1,category:"objects"},candle:{keywords:["fire","wax"],"char":"\ud83d\udd6f",fitzpatrick_scale:!1,category:"objects"},wastebasket:{keywords:["bin","trash","rubbish","garbage","toss"],"char":"\ud83d\uddd1",fitzpatrick_scale:!1,category:"objects"},oil_drum:{keywords:["barrell"],"char":"\ud83d\udee2",fitzpatrick_scale:!1,category:"objects"},money_with_wings:{keywords:["dollar","bills","payment","sale"],"char":"\ud83d\udcb8",fitzpatrick_scale:!1,category:"objects"},dollar:{keywords:["money","sales","bill","currency"],"char":"\ud83d\udcb5",fitzpatrick_scale:!1,category:"objects"},yen:{keywords:["money","sales","japanese","dollar","currency"],"char":"\ud83d\udcb4",fitzpatrick_scale:!1,category:"objects"},euro:{keywords:["money","sales","dollar","currency"],"char":"\ud83d\udcb6",fitzpatrick_scale:!1,category:"objects"},pound:{keywords:["british","sterling","money","sales","bills","uk","england","currency"],"char":"\ud83d\udcb7",fitzpatrick_scale:!1,category:"objects"},moneybag:{keywords:["dollar","payment","coins","sale"],"char":"\ud83d\udcb0",fitzpatrick_scale:!1,category:"objects"},credit_card:{keywords:["money","sales","dollar","bill","payment","shopping"],"char":"\ud83d\udcb3",fitzpatrick_scale:!1,category:"objects"},gem:{keywords:["blue","ruby","diamond","jewelry"],"char":"\ud83d\udc8e",fitzpatrick_scale:!1,category:"objects"},balance_scale:{keywords:["law","fairness","weight"],"char":"\u2696",fitzpatrick_scale:!1,category:"objects"},wrench:{keywords:["tools","diy","ikea","fix","maintainer"],"char":"\ud83d\udd27",fitzpatrick_scale:!1,category:"objects"},hammer:{keywords:["tools","build","create"],"char":"\ud83d\udd28",fitzpatrick_scale:!1,category:"objects"},hammer_and_pick:{keywords:["tools","build","create"],"char":"\u2692",fitzpatrick_scale:!1,category:"objects"},hammer_and_wrench:{keywords:["tools","build","create"],"char":"\ud83d\udee0",fitzpatrick_scale:!1,category:"objects"},pick:{keywords:["tools","dig"],"char":"\u26cf",fitzpatrick_scale:!1,category:"objects"},nut_and_bolt:{keywords:["handy","tools","fix"],"char":"\ud83d\udd29",fitzpatrick_scale:!1,category:"objects"},gear:{keywords:["cog"],"char":"\u2699",fitzpatrick_scale:!1,category:"objects"},chains:{keywords:["lock","arrest"],"char":"\u26d3",fitzpatrick_scale:!1,category:"objects"},gun:{keywords:["violence","weapon","pistol","revolver"],"char":"\ud83d\udd2b",fitzpatrick_scale:!1,category:"objects"},bomb:{keywords:["boom","explode","explosion","terrorism"],"char":"\ud83d\udca3",fitzpatrick_scale:!1,category:"objects"},hocho:{keywords:["knife","blade","cutlery","kitchen","weapon"],"char":"\ud83d\udd2a",fitzpatrick_scale:!1,category:"objects"},dagger:{keywords:["weapon"],"char":"\ud83d\udde1",fitzpatrick_scale:!1,category:"objects"},crossed_swords:{keywords:["weapon"],"char":"\u2694",fitzpatrick_scale:!1,category:"objects"},shield:{keywords:["protection","security"],"char":"\ud83d\udee1",fitzpatrick_scale:!1,category:"objects"},smoking:{keywords:["kills","tobacco","cigarette","joint","smoke"],"char":"\ud83d\udeac",fitzpatrick_scale:!1,category:"objects"},skull_and_crossbones:{keywords:["poison","danger","deadly","scary","death","pirate","evil"],"char":"\u2620",fitzpatrick_scale:!1,category:"objects"},coffin:{keywords:["vampire","dead","die","death","rip","graveyard","cemetery","casket","funeral","box"],"char":"\u26b0",fitzpatrick_scale:!1,category:"objects"},funeral_urn:{keywords:["dead","die","death","rip","ashes"],"char":"\u26b1",fitzpatrick_scale:!1,category:"objects"},amphora:{keywords:["vase","jar"],"char":"\ud83c\udffa",fitzpatrick_scale:!1,category:"objects"},crystal_ball:{keywords:["disco","party","magic","circus","fortune_teller"],"char":"\ud83d\udd2e",fitzpatrick_scale:!1,category:"objects"},prayer_beads:{keywords:["dhikr","religious"],"char":"\ud83d\udcff",fitzpatrick_scale:!1,category:"objects"},barber:{keywords:["hair","salon","style"],"char":"\ud83d\udc88",fitzpatrick_scale:!1,category:"objects"},alembic:{keywords:["distilling","science","experiment","chemistry"],"char":"\u2697",fitzpatrick_scale:!1,category:"objects"},telescope:{keywords:["stars","space","zoom","science","astronomy"],"char":"\ud83d\udd2d",fitzpatrick_scale:!1,category:"objects"},microscope:{keywords:["laboratory","experiment","zoomin","science","study"],"char":"\ud83d\udd2c",fitzpatrick_scale:!1,category:"objects"},hole:{keywords:["embarrassing"],"char":"\ud83d\udd73",fitzpatrick_scale:!1,category:"objects"},pill:{keywords:["health","medicine","doctor","pharmacy","drug"],"char":"\ud83d\udc8a",fitzpatrick_scale:!1,category:"objects"},syringe:{keywords:["health","hospital","drugs","blood","medicine","needle","doctor","nurse"],"char":"\ud83d\udc89",fitzpatrick_scale:!1,category:"objects"},thermometer:{keywords:["weather","temperature","hot","cold"],"char":"\ud83c\udf21",fitzpatrick_scale:!1,category:"objects"},label:{keywords:["sale","tag"],"char":"\ud83c\udff7",fitzpatrick_scale:!1,category:"objects"},bookmark:{keywords:["favorite","label","save"],"char":"\ud83d\udd16",fitzpatrick_scale:!1,category:"objects"},toilet:{keywords:["restroom","wc","washroom","bathroom","potty"],"char":"\ud83d\udebd",fitzpatrick_scale:!1,category:"objects"},shower:{keywords:["clean","water","bathroom"],"char":"\ud83d\udebf",fitzpatrick_scale:!1,category:"objects"},bathtub:{keywords:["clean","shower","bathroom"],"char":"\ud83d\udec1",fitzpatrick_scale:!1,category:"objects"},key:{keywords:["lock","door","password"],"char":"\ud83d\udd11",fitzpatrick_scale:!1,category:"objects"},old_key:{keywords:["lock","door","password"],"char":"\ud83d\udddd",fitzpatrick_scale:!1,category:"objects"},couch_and_lamp:{keywords:["read","chill"],"char":"\ud83d\udecb",fitzpatrick_scale:!1,category:"objects"},sleeping_bed:{keywords:["bed","rest"],"char":"\ud83d\udecc",fitzpatrick_scale:!0,category:"objects"},bed:{keywords:["sleep","rest"],"char":"\ud83d\udecf",fitzpatrick_scale:!1,category:"objects"},door:{keywords:["house","entry","exit"],"char":"\ud83d\udeaa",fitzpatrick_scale:!1,category:"objects"},bellhop_bell:{keywords:["service"],"char":"\ud83d\udece",fitzpatrick_scale:!1,category:"objects"},framed_picture:{keywords:["photography"],"char":"\ud83d\uddbc",fitzpatrick_scale:!1,category:"objects"},world_map:{keywords:["location","direction"],"char":"\ud83d\uddfa",fitzpatrick_scale:!1,category:"objects"},parasol_on_ground:{keywords:["weather","summer"],"char":"\u26f1",fitzpatrick_scale:!1,category:"objects"},moyai:{keywords:["rock","easter island","moai"],"char":"\ud83d\uddff",fitzpatrick_scale:!1,category:"objects"},shopping:{keywords:["mall","buy","purchase"],"char":"\ud83d\udecd",fitzpatrick_scale:!1,category:"objects"},shopping_cart:{keywords:["trolley"],"char":"\ud83d\uded2",fitzpatrick_scale:!1,category:"objects"},balloon:{keywords:["party","celebration","birthday","circus"],"char":"\ud83c\udf88",fitzpatrick_scale:!1,category:"objects"},flags:{keywords:["fish","japanese","koinobori","carp","banner"],"char":"\ud83c\udf8f",fitzpatrick_scale:!1,category:"objects"},ribbon:{keywords:["decoration","pink","girl","bowtie"],"char":"\ud83c\udf80",fitzpatrick_scale:!1,category:"objects"},gift:{keywords:["present","birthday","christmas","xmas"],"char":"\ud83c\udf81",fitzpatrick_scale:!1,category:"objects"},confetti_ball:{keywords:["festival","party","birthday","circus"],"char":"\ud83c\udf8a",fitzpatrick_scale:!1,category:"objects"},tada:{keywords:["party","congratulations","birthday","magic","circus","celebration"],"char":"\ud83c\udf89",fitzpatrick_scale:!1,category:"objects"},dolls:{keywords:["japanese","toy","kimono"],"char":"\ud83c\udf8e",fitzpatrick_scale:!1,category:"objects"},wind_chime:{keywords:["nature","ding","spring","bell"],"char":"\ud83c\udf90",fitzpatrick_scale:!1,category:"objects"},crossed_flags:{keywords:["japanese","nation","country","border"],"char":"\ud83c\udf8c",fitzpatrick_scale:!1,category:"objects"},izakaya_lantern:{keywords:["light","paper","halloween","spooky"],"char":"\ud83c\udfee",fitzpatrick_scale:!1,category:"objects"},email:{keywords:["letter","postal","inbox","communication"],"char":"\u2709\ufe0f",fitzpatrick_scale:!1,category:"objects"},envelope_with_arrow:{keywords:["email","communication"],"char":"\ud83d\udce9",fitzpatrick_scale:!1,category:"objects"},incoming_envelope:{keywords:["email","inbox"],"char":"\ud83d\udce8",fitzpatrick_scale:!1,category:"objects"},"e-mail":{keywords:["communication","inbox"],"char":"\ud83d\udce7",fitzpatrick_scale:!1,category:"objects"},love_letter:{keywords:["email","like","affection","envelope","valentines"],"char":"\ud83d\udc8c",fitzpatrick_scale:!1,category:"objects"},postbox:{keywords:["email","letter","envelope"],"char":"\ud83d\udcee",fitzpatrick_scale:!1,category:"objects"},mailbox_closed:{keywords:["email","communication","inbox"],"char":"\ud83d\udcea",fitzpatrick_scale:!1,category:"objects"},mailbox:{keywords:["email","inbox","communication"],"char":"\ud83d\udceb",fitzpatrick_scale:!1,category:"objects"},mailbox_with_mail:{keywords:["email","inbox","communication"],"char":"\ud83d\udcec",fitzpatrick_scale:!1,category:"objects"},mailbox_with_no_mail:{keywords:["email","inbox"],"char":"\ud83d\udced",fitzpatrick_scale:!1,category:"objects"},"package":{keywords:["mail","gift","cardboard","box","moving"],"char":"\ud83d\udce6",fitzpatrick_scale:!1,category:"objects"},postal_horn:{keywords:["instrument","music"],"char":"\ud83d\udcef",fitzpatrick_scale:!1,category:"objects"},inbox_tray:{keywords:["email","documents"],"char":"\ud83d\udce5",fitzpatrick_scale:!1,category:"objects"},outbox_tray:{keywords:["inbox","email"],"char":"\ud83d\udce4",fitzpatrick_scale:!1,category:"objects"},scroll:{keywords:["documents","ancient","history","paper"],"char":"\ud83d\udcdc",fitzpatrick_scale:!1,category:"objects"},page_with_curl:{keywords:["documents","office","paper"],"char":"\ud83d\udcc3",fitzpatrick_scale:!1,category:"objects"},bookmark_tabs:{keywords:["favorite","save","order","tidy"],"char":"\ud83d\udcd1",fitzpatrick_scale:!1,category:"objects"},bar_chart:{keywords:["graph","presentation","stats"],"char":"\ud83d\udcca",fitzpatrick_scale:!1,category:"objects"},chart_with_upwards_trend:{keywords:["graph","presentation","stats","recovery","business","economics","money","sales","good","success"],"char":"\ud83d\udcc8",fitzpatrick_scale:!1,category:"objects"},chart_with_downwards_trend:{keywords:["graph","presentation","stats","recession","business","economics","money","sales","bad","failure"],"char":"\ud83d\udcc9",fitzpatrick_scale:!1,category:"objects"},page_facing_up:{keywords:["documents","office","paper","information"],"char":"\ud83d\udcc4",fitzpatrick_scale:!1,category:"objects"},date:{keywords:["calendar","schedule"],"char":"\ud83d\udcc5",fitzpatrick_scale:!1,category:"objects"},calendar:{keywords:["schedule","date","planning"],"char":"\ud83d\udcc6",fitzpatrick_scale:!1,category:"objects"},spiral_calendar:{keywords:["date","schedule","planning"],"char":"\ud83d\uddd3",fitzpatrick_scale:!1,category:"objects"},card_index:{keywords:["business","stationery"],"char":"\ud83d\udcc7",fitzpatrick_scale:!1,category:"objects"},card_file_box:{keywords:["business","stationery"],"char":"\ud83d\uddc3",fitzpatrick_scale:!1,category:"objects"},ballot_box:{keywords:["election","vote"],"char":"\ud83d\uddf3",fitzpatrick_scale:!1,category:"objects"},file_cabinet:{keywords:["filing","organizing"],"char":"\ud83d\uddc4",fitzpatrick_scale:!1,category:"objects"},clipboard:{keywords:["stationery","documents"],"char":"\ud83d\udccb",fitzpatrick_scale:!1,category:"objects"},spiral_notepad:{keywords:["memo","stationery"],"char":"\ud83d\uddd2",fitzpatrick_scale:!1,category:"objects"},file_folder:{keywords:["documents","business","office"],"char":"\ud83d\udcc1",fitzpatrick_scale:!1,category:"objects"},open_file_folder:{keywords:["documents","load"],"char":"\ud83d\udcc2",fitzpatrick_scale:!1,category:"objects"},card_index_dividers:{keywords:["organizing","business","stationery"],"char":"\ud83d\uddc2",fitzpatrick_scale:!1,category:"objects"},newspaper_roll:{keywords:["press","headline"],"char":"\ud83d\uddde",fitzpatrick_scale:!1,category:"objects"},newspaper:{keywords:["press","headline"],"char":"\ud83d\udcf0",fitzpatrick_scale:!1,category:"objects"},notebook:{keywords:["stationery","record","notes","paper","study"],"char":"\ud83d\udcd3",fitzpatrick_scale:!1,category:"objects"},closed_book:{keywords:["read","library","knowledge","textbook","learn"],"char":"\ud83d\udcd5",fitzpatrick_scale:!1,category:"objects"},green_book:{keywords:["read","library","knowledge","study"],"char":"\ud83d\udcd7",fitzpatrick_scale:!1,category:"objects"},blue_book:{keywords:["read","library","knowledge","learn","study"],"char":"\ud83d\udcd8",fitzpatrick_scale:!1,category:"objects"},orange_book:{keywords:["read","library","knowledge","textbook","study"],"char":"\ud83d\udcd9",fitzpatrick_scale:!1,category:"objects"},notebook_with_decorative_cover:{keywords:["classroom","notes","record","paper","study"],"char":"\ud83d\udcd4",fitzpatrick_scale:!1,category:"objects"},ledger:{keywords:["notes","paper"],"char":"\ud83d\udcd2",fitzpatrick_scale:!1,category:"objects"},books:{keywords:["literature","library","study"],"char":"\ud83d\udcda",fitzpatrick_scale:!1,category:"objects"},open_book:{keywords:["book","read","library","knowledge","literature","learn","study"],"char":"\ud83d\udcd6",fitzpatrick_scale:!1,category:"objects"},link:{keywords:["rings","url"],"char":"\ud83d\udd17",fitzpatrick_scale:!1,category:"objects"},paperclip:{keywords:["documents","stationery"],"char":"\ud83d\udcce",fitzpatrick_scale:!1,category:"objects"},paperclips:{keywords:["documents","stationery"],"char":"\ud83d\udd87",fitzpatrick_scale:!1,category:"objects"},scissors:{keywords:["stationery","cut"],"char":"\u2702\ufe0f",fitzpatrick_scale:!1,category:"objects"},triangular_ruler:{keywords:["stationery","math","architect","sketch"],"char":"\ud83d\udcd0",fitzpatrick_scale:!1,category:"objects"},straight_ruler:{keywords:["stationery","calculate","length","math","school","drawing","architect","sketch"],"char":"\ud83d\udccf",fitzpatrick_scale:!1,category:"objects"},pushpin:{keywords:["stationery","mark","here"],"char":"\ud83d\udccc",fitzpatrick_scale:!1,category:"objects"},round_pushpin:{keywords:["stationery","location","map","here"],"char":"\ud83d\udccd",fitzpatrick_scale:!1,category:"objects"},triangular_flag_on_post:{keywords:["mark","milestone","place"],"char":"\ud83d\udea9",fitzpatrick_scale:!1,category:"objects"},white_flag:{keywords:["losing","loser","lost","surrender","give up","fail"],"char":"\ud83c\udff3",fitzpatrick_scale:!1,category:"objects"},black_flag:{keywords:["pirate"],"char":"\ud83c\udff4",fitzpatrick_scale:!1,category:"objects"},rainbow_flag:{keywords:["flag","rainbow","pride","gay","lgbt","glbt","queer","homosexual","lesbian","bisexual","transgender"],"char":"\ud83c\udff3\ufe0f\u200d\ud83c\udf08",fitzpatrick_scale:!1,category:"objects"},closed_lock_with_key:{keywords:["security","privacy"],"char":"\ud83d\udd10",fitzpatrick_scale:!1,category:"objects"},lock:{keywords:["security","password","padlock"],"char":"\ud83d\udd12",fitzpatrick_scale:!1,category:"objects"},unlock:{keywords:["privacy","security"],"char":"\ud83d\udd13",fitzpatrick_scale:!1,category:"objects"},lock_with_ink_pen:{keywords:["security","secret"],"char":"\ud83d\udd0f",fitzpatrick_scale:!1,category:"objects"},pen:{keywords:["stationery","writing","write"],"char":"\ud83d\udd8a",fitzpatrick_scale:!1,category:"objects"},fountain_pen:{keywords:["stationery","writing","write"],"char":"\ud83d\udd8b",fitzpatrick_scale:!1,category:"objects"},black_nib:{keywords:["pen","stationery","writing","write"],"char":"\u2712\ufe0f",fitzpatrick_scale:!1,category:"objects"},memo:{keywords:["write","documents","stationery","pencil","paper","writing","legal","exam","quiz","test","study","compose"],"char":"\ud83d\udcdd",fitzpatrick_scale:!1,category:"objects"},pencil2:{keywords:["stationery","write","paper","writing","school","study"],"char":"\u270f\ufe0f",fitzpatrick_scale:!1,category:"objects"},crayon:{keywords:["drawing","creativity"],"char":"\ud83d\udd8d",fitzpatrick_scale:!1,category:"objects"},paintbrush:{keywords:["drawing","creativity","art"],"char":"\ud83d\udd8c",fitzpatrick_scale:!1,category:"objects"},mag:{keywords:["search","zoom","find","detective"],"char":"\ud83d\udd0d",fitzpatrick_scale:!1,category:"objects"},mag_right:{keywords:["search","zoom","find","detective"],"char":"\ud83d\udd0e",fitzpatrick_scale:!1,category:"objects"},heart:{keywords:["love","like","valentines"],"char":"\u2764\ufe0f",fitzpatrick_scale:!1,category:"symbols"},orange_heart:{keywords:["love","like","affection","valentines"],"char":"\ud83e\udde1",fitzpatrick_scale:!1,category:"symbols"},yellow_heart:{keywords:["love","like","affection","valentines"],"char":"\ud83d\udc9b",fitzpatrick_scale:!1,category:"symbols"},green_heart:{keywords:["love","like","affection","valentines"],"char":"\ud83d\udc9a",fitzpatrick_scale:!1,category:"symbols"},blue_heart:{keywords:["love","like","affection","valentines"],"char":"\ud83d\udc99",fitzpatrick_scale:!1,category:"symbols"},purple_heart:{keywords:["love","like","affection","valentines"],"char":"\ud83d\udc9c",fitzpatrick_scale:!1,category:"symbols"},black_heart:{keywords:["evil"],"char":"\ud83d\udda4",fitzpatrick_scale:!1,category:"symbols"},broken_heart:{keywords:["sad","sorry","break","heart","heartbreak"],"char":"\ud83d\udc94",fitzpatrick_scale:!1,category:"symbols"},heavy_heart_exclamation:{keywords:["decoration","love"],"char":"\u2763",fitzpatrick_scale:!1,category:"symbols"},two_hearts:{keywords:["love","like","affection","valentines","heart"],"char":"\ud83d\udc95",fitzpatrick_scale:!1,category:"symbols"},revolving_hearts:{keywords:["love","like","affection","valentines"],"char":"\ud83d\udc9e",fitzpatrick_scale:!1,category:"symbols"},heartbeat:{keywords:["love","like","affection","valentines","pink","heart"],"char":"\ud83d\udc93",fitzpatrick_scale:!1,category:"symbols"},heartpulse:{keywords:["like","love","affection","valentines","pink"],"char":"\ud83d\udc97",fitzpatrick_scale:!1,category:"symbols"},sparkling_heart:{keywords:["love","like","affection","valentines"],"char":"\ud83d\udc96",fitzpatrick_scale:!1,category:"symbols"},cupid:{keywords:["love","like","heart","affection","valentines"],"char":"\ud83d\udc98",fitzpatrick_scale:!1,category:"symbols"},gift_heart:{keywords:["love","valentines"],"char":"\ud83d\udc9d",fitzpatrick_scale:!1,category:"symbols"},heart_decoration:{keywords:["purple-square","love","like"],"char":"\ud83d\udc9f",fitzpatrick_scale:!1,category:"symbols"},peace_symbol:{keywords:["hippie"],"char":"\u262e",fitzpatrick_scale:!1,category:"symbols"},latin_cross:{keywords:["christianity"],"char":"\u271d",fitzpatrick_scale:!1,category:"symbols"},star_and_crescent:{keywords:["islam"],"char":"\u262a",fitzpatrick_scale:!1,category:"symbols"},om:{keywords:["hinduism","buddhism","sikhism","jainism"],"char":"\ud83d\udd49",fitzpatrick_scale:!1,category:"symbols"},wheel_of_dharma:{keywords:["hinduism","buddhism","sikhism","jainism"],"char":"\u2638",fitzpatrick_scale:!1,category:"symbols"},star_of_david:{keywords:["judaism"],"char":"\u2721",fitzpatrick_scale:!1,category:"symbols"},six_pointed_star:{keywords:["purple-square","religion","jewish","hexagram"],"char":"\ud83d\udd2f",fitzpatrick_scale:!1,category:"symbols"},menorah:{keywords:["hanukkah","candles","jewish"],"char":"\ud83d\udd4e",fitzpatrick_scale:!1,category:"symbols"},yin_yang:{keywords:["balance"],"char":"\u262f",fitzpatrick_scale:!1,category:"symbols"},orthodox_cross:{keywords:["suppedaneum","religion"],"char":"\u2626",fitzpatrick_scale:!1,category:"symbols"},place_of_worship:{keywords:["religion","church","temple","prayer"],"char":"\ud83d\uded0",fitzpatrick_scale:!1,category:"symbols"},ophiuchus:{keywords:["sign","purple-square","constellation","astrology"],"char":"\u26ce",fitzpatrick_scale:!1,category:"symbols"},aries:{keywords:["sign","purple-square","zodiac","astrology"],"char":"\u2648",fitzpatrick_scale:!1,category:"symbols"},taurus:{keywords:["purple-square","sign","zodiac","astrology"],"char":"\u2649",fitzpatrick_scale:!1,category:"symbols"},gemini:{keywords:["sign","zodiac","purple-square","astrology"],"char":"\u264a",fitzpatrick_scale:!1,category:"symbols"},cancer:{keywords:["sign","zodiac","purple-square","astrology"],"char":"\u264b",fitzpatrick_scale:!1,category:"symbols"},leo:{keywords:["sign","purple-square","zodiac","astrology"],"char":"\u264c",fitzpatrick_scale:!1,category:"symbols"},virgo:{keywords:["sign","zodiac","purple-square","astrology"],"char":"\u264d",fitzpatrick_scale:!1,category:"symbols"},libra:{keywords:["sign","purple-square","zodiac","astrology"],"char":"\u264e",fitzpatrick_scale:!1,category:"symbols"},scorpius:{keywords:["sign","zodiac","purple-square","astrology","scorpio"],"char":"\u264f",fitzpatrick_scale:!1,category:"symbols"},sagittarius:{keywords:["sign","zodiac","purple-square","astrology"],"char":"\u2650",fitzpatrick_scale:!1,category:"symbols"},capricorn:{keywords:["sign","zodiac","purple-square","astrology"],"char":"\u2651",fitzpatrick_scale:!1,category:"symbols"},aquarius:{keywords:["sign","purple-square","zodiac","astrology"],"char":"\u2652",fitzpatrick_scale:!1,category:"symbols"},pisces:{keywords:["purple-square","sign","zodiac","astrology"],"char":"\u2653",fitzpatrick_scale:!1,category:"symbols"},id:{keywords:["purple-square","words"],"char":"\ud83c\udd94",fitzpatrick_scale:!1,category:"symbols"},atom_symbol:{keywords:["science","physics","chemistry"],"char":"\u269b",fitzpatrick_scale:!1,category:"symbols"},u7a7a:{keywords:["kanji","japanese","chinese","empty","sky","blue-square"],"char":"\ud83c\ude33",fitzpatrick_scale:!1,category:"symbols"},u5272:{keywords:["cut","divide","chinese","kanji","pink-square"],"char":"\ud83c\ude39",fitzpatrick_scale:!1,category:"symbols"},radioactive:{keywords:["nuclear","danger"],"char":"\u2622",fitzpatrick_scale:!1,category:"symbols"},biohazard:{keywords:["danger"],"char":"\u2623",fitzpatrick_scale:!1,category:"symbols"},mobile_phone_off:{keywords:["mute","orange-square","silence","quiet"],"char":"\ud83d\udcf4",fitzpatrick_scale:!1,category:"symbols"},vibration_mode:{keywords:["orange-square","phone"],"char":"\ud83d\udcf3",fitzpatrick_scale:!1,category:"symbols"},u6709:{keywords:["orange-square","chinese","have","kanji"],"char":"\ud83c\ude36",fitzpatrick_scale:!1,category:"symbols"},u7121:{keywords:["nothing","chinese","kanji","japanese","orange-square"],"char":"\ud83c\ude1a",fitzpatrick_scale:!1,category:"symbols"},u7533:{keywords:["chinese","japanese","kanji","orange-square"],"char":"\ud83c\ude38",fitzpatrick_scale:!1,category:"symbols"},u55b6:{keywords:["japanese","opening hours","orange-square"],"char":"\ud83c\ude3a",fitzpatrick_scale:!1,category:"symbols"},u6708:{keywords:["chinese","month","moon","japanese","orange-square","kanji"],"char":"\ud83c\ude37\ufe0f",fitzpatrick_scale:!1,category:"symbols"},eight_pointed_black_star:{keywords:["orange-square","shape","polygon"],"char":"\u2734\ufe0f",fitzpatrick_scale:!1,category:"symbols"},vs:{keywords:["words","orange-square"],"char":"\ud83c\udd9a",fitzpatrick_scale:!1,category:"symbols"},accept:{keywords:["ok","good","chinese","kanji","agree","yes","orange-circle"],"char":"\ud83c\ude51",fitzpatrick_scale:!1,category:"symbols"},white_flower:{keywords:["japanese","spring"],"char":"\ud83d\udcae",fitzpatrick_scale:!1,category:"symbols"},ideograph_advantage:{keywords:["chinese","kanji","obtain","get","circle"],"char":"\ud83c\ude50",fitzpatrick_scale:!1,category:"symbols"},secret:{keywords:["privacy","chinese","sshh","kanji","red-circle"],"char":"\u3299\ufe0f",fitzpatrick_scale:!1,category:"symbols"},congratulations:{keywords:["chinese","kanji","japanese","red-circle"],"char":"\u3297\ufe0f",fitzpatrick_scale:!1,category:"symbols"},u5408:{keywords:["japanese","chinese","join","kanji","red-square"],"char":"\ud83c\ude34",fitzpatrick_scale:!1,category:"symbols"},u6e80:{keywords:["full","chinese","japanese","red-square","kanji"],"char":"\ud83c\ude35",fitzpatrick_scale:!1,category:"symbols"},u7981:{keywords:["kanji","japanese","chinese","forbidden","limit","restricted","red-square"],"char":"\ud83c\ude32",fitzpatrick_scale:!1,category:"symbols"},a:{keywords:["red-square","alphabet","letter"],"char":"\ud83c\udd70\ufe0f",fitzpatrick_scale:!1,category:"symbols"},b:{keywords:["red-square","alphabet","letter"],"char":"\ud83c\udd71\ufe0f",fitzpatrick_scale:!1,category:"symbols"},ab:{keywords:["red-square","alphabet"],"char":"\ud83c\udd8e",fitzpatrick_scale:!1,category:"symbols"},cl:{keywords:["alphabet","words","red-square"],"char":"\ud83c\udd91",fitzpatrick_scale:!1,category:"symbols"},o2:{keywords:["alphabet","red-square","letter"],"char":"\ud83c\udd7e\ufe0f",fitzpatrick_scale:!1,category:"symbols"},sos:{keywords:["help","red-square","words","emergency","911"],"char":"\ud83c\udd98",fitzpatrick_scale:!1,category:"symbols"},no_entry:{keywords:["limit","security","privacy","bad","denied","stop","circle"],"char":"\u26d4",fitzpatrick_scale:!1,category:"symbols"},name_badge:{keywords:["fire","forbid"],"char":"\ud83d\udcdb",fitzpatrick_scale:!1,category:"symbols"},no_entry_sign:{keywords:["forbid","stop","limit","denied","disallow","circle"],"char":"\ud83d\udeab",fitzpatrick_scale:!1,category:"symbols"},x:{keywords:["no","delete","remove","cancel"],"char":"\u274c",fitzpatrick_scale:!1,category:"symbols"},o:{keywords:["circle","round"],"char":"\u2b55",fitzpatrick_scale:!1,category:"symbols"},stop_sign:{keywords:["stop"],"char":"\ud83d\uded1",fitzpatrick_scale:!1,category:"symbols"},anger:{keywords:["angry","mad"],"char":"\ud83d\udca2",fitzpatrick_scale:!1,category:"symbols"},hotsprings:{keywords:["bath","warm","relax"],"char":"\u2668\ufe0f",fitzpatrick_scale:!1,category:"symbols"},no_pedestrians:{keywords:["rules","crossing","walking","circle"],"char":"\ud83d\udeb7",fitzpatrick_scale:!1,category:"symbols"},do_not_litter:{keywords:["trash","bin","garbage","circle"],"char":"\ud83d\udeaf",fitzpatrick_scale:!1,category:"symbols"},no_bicycles:{keywords:["cyclist","prohibited","circle"],"char":"\ud83d\udeb3",fitzpatrick_scale:!1,category:"symbols"},"non-potable_water":{keywords:["drink","faucet","tap","circle"],"char":"\ud83d\udeb1",fitzpatrick_scale:!1,category:"symbols"},underage:{keywords:["18","drink","pub","night","minor","circle"],"char":"\ud83d\udd1e",fitzpatrick_scale:!1,category:"symbols"},no_mobile_phones:{keywords:["iphone","mute","circle"],"char":"\ud83d\udcf5",fitzpatrick_scale:!1,category:"symbols"},exclamation:{keywords:["heavy_exclamation_mark","danger","surprise","punctuation","wow","warning"],"char":"\u2757",fitzpatrick_scale:!1,category:"symbols"},grey_exclamation:{keywords:["surprise","punctuation","gray","wow","warning"],"char":"\u2755",fitzpatrick_scale:!1,category:"symbols"},question:{keywords:["doubt","confused"],"char":"\u2753",fitzpatrick_scale:!1,category:"symbols"},grey_question:{keywords:["doubts","gray","huh","confused"],"char":"\u2754",fitzpatrick_scale:!1,category:"symbols"},bangbang:{keywords:["exclamation","surprise"],"char":"\u203c\ufe0f",fitzpatrick_scale:!1,category:"symbols"},interrobang:{keywords:["wat","punctuation","surprise"],"char":"\u2049\ufe0f",fitzpatrick_scale:!1,category:"symbols"},100:{keywords:["score","perfect","numbers","century","exam","quiz","test","pass","hundred"],"char":"\ud83d\udcaf",fitzpatrick_scale:!1,category:"symbols"},low_brightness:{keywords:["sun","afternoon","warm","summer"],"char":"\ud83d\udd05",fitzpatrick_scale:!1,category:"symbols"},high_brightness:{keywords:["sun","light"],"char":"\ud83d\udd06",fitzpatrick_scale:!1,category:"symbols"},trident:{keywords:["weapon","spear"],"char":"\ud83d\udd31",fitzpatrick_scale:!1,category:"symbols"},fleur_de_lis:{keywords:["decorative","scout"],"char":"\u269c",fitzpatrick_scale:!1,category:"symbols"},part_alternation_mark:{keywords:["graph","presentation","stats","business","economics","bad"],"char":"\u303d\ufe0f",fitzpatrick_scale:!1,category:"symbols"},warning:{keywords:["exclamation","wip","alert","error","problem","issue"],"char":"\u26a0\ufe0f",fitzpatrick_scale:!1,category:"symbols"},children_crossing:{keywords:["school","warning","danger","sign","driving","yellow-diamond"],"char":"\ud83d\udeb8",fitzpatrick_scale:!1,category:"symbols"},beginner:{keywords:["badge","shield"],"char":"\ud83d\udd30",fitzpatrick_scale:!1,category:"symbols"},recycle:{keywords:["arrow","environment","garbage","trash"],"char":"\u267b\ufe0f",fitzpatrick_scale:!1,category:"symbols"},u6307:{keywords:["chinese","point","green-square","kanji"],"char":"\ud83c\ude2f",fitzpatrick_scale:!1,category:"symbols"},chart:{keywords:["green-square","graph","presentation","stats"],"char":"\ud83d\udcb9",fitzpatrick_scale:!1,category:"symbols"},sparkle:{keywords:["stars","green-square","awesome","good","fireworks"],"char":"\u2747\ufe0f",fitzpatrick_scale:!1,category:"symbols"},eight_spoked_asterisk:{keywords:["star","sparkle","green-square"],"char":"\u2733\ufe0f",fitzpatrick_scale:!1,category:"symbols"},negative_squared_cross_mark:{keywords:["x","green-square","no","deny"],"char":"\u274e",fitzpatrick_scale:!1,category:"symbols"},white_check_mark:{keywords:["green-square","ok","agree","vote","election","answer","tick"],"char":"\u2705",fitzpatrick_scale:!1,category:"symbols"},diamond_shape_with_a_dot_inside:{keywords:["jewel","blue","gem","crystal","fancy"],"char":"\ud83d\udca0",fitzpatrick_scale:!1,category:"symbols"},cyclone:{keywords:["weather","swirl","blue","cloud","vortex","spiral","whirlpool","spin","tornado","hurricane","typhoon"],"char":"\ud83c\udf00",fitzpatrick_scale:!1,category:"symbols"},loop:{keywords:["tape","cassette"],"char":"\u27bf",fitzpatrick_scale:!1,category:"symbols"},globe_with_meridians:{keywords:["earth","international","world","internet","interweb","i18n"],"char":"\ud83c\udf10",fitzpatrick_scale:!1,category:"symbols"},m:{keywords:["alphabet","blue-circle","letter"],"char":"\u24c2\ufe0f",fitzpatrick_scale:!1,category:"symbols"},atm:{keywords:["money","sales","cash","blue-square","payment","bank"],"char":"\ud83c\udfe7",fitzpatrick_scale:!1,category:"symbols"},sa:{keywords:["japanese","blue-square","katakana"],"char":"\ud83c\ude02\ufe0f",fitzpatrick_scale:!1,category:"symbols"},passport_control:{keywords:["custom","blue-square"],"char":"\ud83d\udec2",fitzpatrick_scale:!1,category:"symbols"},customs:{keywords:["passport","border","blue-square"],"char":"\ud83d\udec3",fitzpatrick_scale:!1,category:"symbols"},baggage_claim:{keywords:["blue-square","airport","transport"],"char":"\ud83d\udec4",fitzpatrick_scale:!1,category:"symbols"},left_luggage:{keywords:["blue-square","travel"],"char":"\ud83d\udec5",fitzpatrick_scale:!1,category:"symbols"},wheelchair:{keywords:["blue-square","disabled","a11y","accessibility"],"char":"\u267f",fitzpatrick_scale:!1,category:"symbols"},no_smoking:{keywords:["cigarette","blue-square","smell","smoke"],"char":"\ud83d\udead",fitzpatrick_scale:!1,category:"symbols"},wc:{keywords:["toilet","restroom","blue-square"],"char":"\ud83d\udebe",fitzpatrick_scale:!1,category:"symbols"},parking:{keywords:["cars","blue-square","alphabet","letter"],"char":"\ud83c\udd7f\ufe0f",fitzpatrick_scale:!1,category:"symbols"},potable_water:{keywords:["blue-square","liquid","restroom","cleaning","faucet"],"char":"\ud83d\udeb0",fitzpatrick_scale:!1,category:"symbols"},mens:{keywords:["toilet","restroom","wc","blue-square","gender","male"],"char":"\ud83d\udeb9",fitzpatrick_scale:!1,category:"symbols"},womens:{keywords:["purple-square","woman","female","toilet","loo","restroom","gender"],"char":"\ud83d\udeba",fitzpatrick_scale:!1,category:"symbols"},baby_symbol:{keywords:["orange-square","child"],"char":"\ud83d\udebc",fitzpatrick_scale:!1,category:"symbols"},restroom:{keywords:["blue-square","toilet","refresh","wc","gender"],"char":"\ud83d\udebb",fitzpatrick_scale:!1,category:"symbols"},put_litter_in_its_place:{keywords:["blue-square","sign","human","info"],"char":"\ud83d\udeae",fitzpatrick_scale:!1,category:"symbols"},cinema:{keywords:["blue-square","record","film","movie","curtain","stage","theater"],"char":"\ud83c\udfa6",fitzpatrick_scale:!1,category:"symbols"},signal_strength:{keywords:["blue-square","reception","phone","internet","connection","wifi","bluetooth","bars"],"char":"\ud83d\udcf6",fitzpatrick_scale:!1,category:"symbols"},koko:{keywords:["blue-square","here","katakana","japanese","destination"],"char":"\ud83c\ude01",fitzpatrick_scale:!1,category:"symbols"},ng:{keywords:["blue-square","words","shape","icon"],"char":"\ud83c\udd96",fitzpatrick_scale:!1,category:"symbols"},ok:{keywords:["good","agree","yes","blue-square"],"char":"\ud83c\udd97",fitzpatrick_scale:!1,category:"symbols"},up:{keywords:["blue-square","above","high"],"char":"\ud83c\udd99",fitzpatrick_scale:!1,category:"symbols"},cool:{keywords:["words","blue-square"],"char":"\ud83c\udd92",fitzpatrick_scale:!1,category:"symbols"},"new":{keywords:["blue-square","words","start"],"char":"\ud83c\udd95",fitzpatrick_scale:!1,category:"symbols"},free:{keywords:["blue-square","words"],"char":"\ud83c\udd93",fitzpatrick_scale:!1,category:"symbols"},zero:{keywords:["0","numbers","blue-square","null"],"char":"0\ufe0f\u20e3",fitzpatrick_scale:!1,category:"symbols"},one:{keywords:["blue-square","numbers","1"],"char":"1\ufe0f\u20e3",fitzpatrick_scale:!1,category:"symbols"},two:{keywords:["numbers","2","prime","blue-square"],"char":"2\ufe0f\u20e3",fitzpatrick_scale:!1,category:"symbols"},three:{keywords:["3","numbers","prime","blue-square"],"char":"3\ufe0f\u20e3",fitzpatrick_scale:!1,category:"symbols"},four:{keywords:["4","numbers","blue-square"],"char":"4\ufe0f\u20e3",fitzpatrick_scale:!1,category:"symbols"},five:{keywords:["5","numbers","blue-square","prime"],"char":"5\ufe0f\u20e3",fitzpatrick_scale:!1,category:"symbols"},six:{keywords:["6","numbers","blue-square"],"char":"6\ufe0f\u20e3",fitzpatrick_scale:!1,category:"symbols"},seven:{keywords:["7","numbers","blue-square","prime"],"char":"7\ufe0f\u20e3",fitzpatrick_scale:!1,category:"symbols"},eight:{keywords:["8","blue-square","numbers"],"char":"8\ufe0f\u20e3",fitzpatrick_scale:!1,category:"symbols"},nine:{keywords:["blue-square","numbers","9"],"char":"9\ufe0f\u20e3",fitzpatrick_scale:!1,category:"symbols"},keycap_ten:{keywords:["numbers","10","blue-square"],"char":"\ud83d\udd1f",fitzpatrick_scale:!1,category:"symbols"},asterisk:{keywords:["star","keycap"],"char":"*\u20e3",fitzpatrick_scale:!1,category:"symbols"},1234:{keywords:["numbers","blue-square"],"char":"\ud83d\udd22",fitzpatrick_scale:!1,category:"symbols"},eject_button:{keywords:["blue-square"],"char":"\u23cf\ufe0f",fitzpatrick_scale:!1,category:"symbols"},arrow_forward:{keywords:["blue-square","right","direction","play"],"char":"\u25b6\ufe0f",fitzpatrick_scale:!1,category:"symbols"},pause_button:{keywords:["pause","blue-square"],"char":"\u23f8",fitzpatrick_scale:!1,category:"symbols"},next_track_button:{keywords:["forward","next","blue-square"],"char":"\u23ed",fitzpatrick_scale:!1,category:"symbols"},stop_button:{keywords:["blue-square"],"char":"\u23f9",fitzpatrick_scale:!1,category:"symbols"},record_button:{keywords:["blue-square"],"char":"\u23fa",fitzpatrick_scale:!1,category:"symbols"},play_or_pause_button:{keywords:["blue-square","play","pause"],"char":"\u23ef",fitzpatrick_scale:!1,category:"symbols"},previous_track_button:{keywords:["backward"],"char":"\u23ee",fitzpatrick_scale:!1,category:"symbols"},fast_forward:{keywords:["blue-square","play","speed","continue"],"char":"\u23e9",fitzpatrick_scale:!1,category:"symbols"},rewind:{keywords:["play","blue-square"],"char":"\u23ea",fitzpatrick_scale:!1,category:"symbols"},twisted_rightwards_arrows:{keywords:["blue-square","shuffle","music","random"],"char":"\ud83d\udd00",fitzpatrick_scale:!1,category:"symbols"},repeat:{keywords:["loop","record"],"char":"\ud83d\udd01",fitzpatrick_scale:!1,category:"symbols"},repeat_one:{keywords:["blue-square","loop"],"char":"\ud83d\udd02",fitzpatrick_scale:!1,category:"symbols"},arrow_backward:{keywords:["blue-square","left","direction"],"char":"\u25c0\ufe0f",fitzpatrick_scale:!1,category:"symbols"},arrow_up_small:{keywords:["blue-square","triangle","direction","point","forward","top"],"char":"\ud83d\udd3c",fitzpatrick_scale:!1,category:"symbols"},arrow_down_small:{keywords:["blue-square","direction","bottom"],"char":"\ud83d\udd3d",fitzpatrick_scale:!1,category:"symbols"},arrow_double_up:{keywords:["blue-square","direction","top"],"char":"\u23eb",fitzpatrick_scale:!1,category:"symbols"},arrow_double_down:{keywords:["blue-square","direction","bottom"],"char":"\u23ec",fitzpatrick_scale:!1,category:"symbols"},arrow_right:{keywords:["blue-square","next"],"char":"\u27a1\ufe0f",fitzpatrick_scale:!1,category:"symbols"},arrow_left:{keywords:["blue-square","previous","back"],"char":"\u2b05\ufe0f",fitzpatrick_scale:!1,category:"symbols"},arrow_up:{keywords:["blue-square","continue","top","direction"],"char":"\u2b06\ufe0f",fitzpatrick_scale:!1,category:"symbols"},arrow_down:{keywords:["blue-square","direction","bottom"],"char":"\u2b07\ufe0f",fitzpatrick_scale:!1,category:"symbols"},arrow_upper_right:{keywords:["blue-square","point","direction","diagonal","northeast"],"char":"\u2197\ufe0f",fitzpatrick_scale:!1,category:"symbols"},arrow_lower_right:{keywords:["blue-square","direction","diagonal","southeast"],"char":"\u2198\ufe0f",fitzpatrick_scale:!1,category:"symbols"},arrow_lower_left:{keywords:["blue-square","direction","diagonal","southwest"],"char":"\u2199\ufe0f",fitzpatrick_scale:!1,category:"symbols"},arrow_upper_left:{keywords:["blue-square","point","direction","diagonal","northwest"],"char":"\u2196\ufe0f",fitzpatrick_scale:!1,category:"symbols"},arrow_up_down:{keywords:["blue-square","direction","way","vertical"],"char":"\u2195\ufe0f",fitzpatrick_scale:!1,category:"symbols"},left_right_arrow:{keywords:["shape","direction","horizontal","sideways"],"char":"\u2194\ufe0f",fitzpatrick_scale:!1,category:"symbols"},arrows_counterclockwise:{keywords:["blue-square","sync","cycle"],"char":"\ud83d\udd04",fitzpatrick_scale:!1,category:"symbols"},arrow_right_hook:{keywords:["blue-square","return","rotate","direction"],"char":"\u21aa\ufe0f",fitzpatrick_scale:!1,category:"symbols"},leftwards_arrow_with_hook:{keywords:["back","return","blue-square","undo","enter"],"char":"\u21a9\ufe0f",fitzpatrick_scale:!1,category:"symbols"},arrow_heading_up:{keywords:["blue-square","direction","top"],"char":"\u2934\ufe0f",fitzpatrick_scale:!1,category:"symbols"},arrow_heading_down:{keywords:["blue-square","direction","bottom"],"char":"\u2935\ufe0f",fitzpatrick_scale:!1,category:"symbols"},hash:{keywords:["symbol","blue-square","twitter"],"char":"#\ufe0f\u20e3",fitzpatrick_scale:!1,category:"symbols"},information_source:{keywords:["blue-square","alphabet","letter"],"char":"\u2139\ufe0f",fitzpatrick_scale:!1,category:"symbols"},abc:{keywords:["blue-square","alphabet"],"char":"\ud83d\udd24",fitzpatrick_scale:!1,category:"symbols"},abcd:{keywords:["blue-square","alphabet"],"char":"\ud83d\udd21",fitzpatrick_scale:!1,category:"symbols"},capital_abcd:{keywords:["alphabet","words","blue-square"],"char":"\ud83d\udd20",fitzpatrick_scale:!1,category:"symbols"},symbols:{keywords:["blue-square","music","note","ampersand","percent","glyphs","characters"],"char":"\ud83d\udd23",fitzpatrick_scale:!1,category:"symbols"},musical_note:{keywords:["score","tone","sound"],"char":"\ud83c\udfb5",fitzpatrick_scale:!1,category:"symbols"},notes:{keywords:["music","score"],"char":"\ud83c\udfb6",fitzpatrick_scale:!1,category:"symbols"},wavy_dash:{keywords:["draw","line","moustache","mustache","squiggle","scribble"],"char":"\u3030\ufe0f",fitzpatrick_scale:!1,category:"symbols"},curly_loop:{keywords:["scribble","draw","shape","squiggle"],"char":"\u27b0",fitzpatrick_scale:!1,category:"symbols"},heavy_check_mark:{keywords:["ok","nike","answer","yes","tick"],"char":"\u2714\ufe0f",fitzpatrick_scale:!1,category:"symbols"},arrows_clockwise:{keywords:["sync","cycle","round","repeat"],"char":"\ud83d\udd03",fitzpatrick_scale:!1,category:"symbols"},heavy_plus_sign:{keywords:["math","calculation","addition","more","increase"],"char":"\u2795",fitzpatrick_scale:!1,category:"symbols"},heavy_minus_sign:{keywords:["math","calculation","subtract","less"],"char":"\u2796",fitzpatrick_scale:!1,category:"symbols"},heavy_division_sign:{keywords:["divide","math","calculation"],"char":"\u2797",fitzpatrick_scale:!1,category:"symbols"},heavy_multiplication_x:{keywords:["math","calculation"],"char":"\u2716\ufe0f",fitzpatrick_scale:!1,category:"symbols"},heavy_dollar_sign:{keywords:["money","sales","payment","currency","buck"],"char":"\ud83d\udcb2",fitzpatrick_scale:!1,category:"symbols"},currency_exchange:{keywords:["money","sales","dollar","travel"],"char":"\ud83d\udcb1",fitzpatrick_scale:!1,category:"symbols"},copyright:{keywords:["ip","license","circle","law","legal"],"char":"\xa9\ufe0f",fitzpatrick_scale:!1,category:"symbols"},registered:{keywords:["alphabet","circle"],"char":"\xae\ufe0f",fitzpatrick_scale:!1,category:"symbols"},tm:{keywords:["trademark","brand","law","legal"],"char":"\u2122\ufe0f",fitzpatrick_scale:!1,category:"symbols"},end:{keywords:["words","arrow"],"char":"\ud83d\udd1a",fitzpatrick_scale:!1,category:"symbols"},back:{keywords:["arrow","words","return"],"char":"\ud83d\udd19",fitzpatrick_scale:!1,category:"symbols"},on:{keywords:["arrow","words"],"char":"\ud83d\udd1b",fitzpatrick_scale:!1,category:"symbols"},top:{keywords:["words","blue-square"],"char":"\ud83d\udd1d",fitzpatrick_scale:!1,category:"symbols"},soon:{keywords:["arrow","words"],"char":"\ud83d\udd1c",fitzpatrick_scale:!1,category:"symbols"},ballot_box_with_check:{keywords:["ok","agree","confirm","black-square","vote","election","yes","tick"],"char":"\u2611\ufe0f",fitzpatrick_scale:!1,category:"symbols"},radio_button:{keywords:["input","old","music","circle"],"char":"\ud83d\udd18",fitzpatrick_scale:!1,category:"symbols"},white_circle:{keywords:["shape","round"],"char":"\u26aa",fitzpatrick_scale:!1,category:"symbols"},black_circle:{keywords:["shape","button","round"],"char":"\u26ab",fitzpatrick_scale:!1,category:"symbols"},red_circle:{keywords:["shape","error","danger"],"char":"\ud83d\udd34",fitzpatrick_scale:!1,category:"symbols"},large_blue_circle:{keywords:["shape","icon","button"],"char":"\ud83d\udd35",fitzpatrick_scale:!1,category:"symbols"},small_orange_diamond:{keywords:["shape","jewel","gem"],"char":"\ud83d\udd38",fitzpatrick_scale:!1,category:"symbols"},small_blue_diamond:{keywords:["shape","jewel","gem"],"char":"\ud83d\udd39",fitzpatrick_scale:!1,category:"symbols"},large_orange_diamond:{keywords:["shape","jewel","gem"],"char":"\ud83d\udd36",fitzpatrick_scale:!1,category:"symbols"},large_blue_diamond:{keywords:["shape","jewel","gem"],"char":"\ud83d\udd37",fitzpatrick_scale:!1,category:"symbols"},small_red_triangle:{keywords:["shape","direction","up","top"],"char":"\ud83d\udd3a",fitzpatrick_scale:!1,category:"symbols"},black_small_square:{keywords:["shape","icon"],"char":"\u25aa\ufe0f",fitzpatrick_scale:!1,category:"symbols"},white_small_square:{keywords:["shape","icon"],"char":"\u25ab\ufe0f",fitzpatrick_scale:!1,category:"symbols"},black_large_square:{keywords:["shape","icon","button"],"char":"\u2b1b",fitzpatrick_scale:!1,category:"symbols"},white_large_square:{keywords:["shape","icon","stone","button"],"char":"\u2b1c",fitzpatrick_scale:!1,category:"symbols"},small_red_triangle_down:{keywords:["shape","direction","bottom"],"char":"\ud83d\udd3b",fitzpatrick_scale:!1,category:"symbols"},black_medium_square:{keywords:["shape","button","icon"],"char":"\u25fc\ufe0f",fitzpatrick_scale:!1,category:"symbols"},white_medium_square:{keywords:["shape","stone","icon"],"char":"\u25fb\ufe0f",fitzpatrick_scale:!1,category:"symbols"},black_medium_small_square:{keywords:["icon","shape","button"],"char":"\u25fe",fitzpatrick_scale:!1,category:"symbols"},white_medium_small_square:{keywords:["shape","stone","icon","button"],"char":"\u25fd",fitzpatrick_scale:!1,category:"symbols"},black_square_button:{keywords:["shape","input","frame"],"char":"\ud83d\udd32",fitzpatrick_scale:!1,category:"symbols"},white_square_button:{keywords:["shape","input"],"char":"\ud83d\udd33",fitzpatrick_scale:!1,category:"symbols"},speaker:{keywords:["sound","volume","silence","broadcast"],"char":"\ud83d\udd08",fitzpatrick_scale:!1,category:"symbols"},sound:{keywords:["volume","speaker","broadcast"],"char":"\ud83d\udd09",fitzpatrick_scale:!1,category:"symbols"},loud_sound:{keywords:["volume","noise","noisy","speaker","broadcast"],"char":"\ud83d\udd0a",fitzpatrick_scale:!1,category:"symbols"},mute:{keywords:["sound","volume","silence","quiet"],"char":"\ud83d\udd07",fitzpatrick_scale:!1,category:"symbols"},mega:{keywords:["sound","speaker","volume"],"char":"\ud83d\udce3",fitzpatrick_scale:!1,category:"symbols"},loudspeaker:{keywords:["volume","sound"],"char":"\ud83d\udce2",fitzpatrick_scale:!1,category:"symbols"},bell:{keywords:["sound","notification","christmas","xmas","chime"],"char":"\ud83d\udd14",fitzpatrick_scale:!1,category:"symbols"},no_bell:{keywords:["sound","volume","mute","quiet","silent"],"char":"\ud83d\udd15",fitzpatrick_scale:!1,category:"symbols"},black_joker:{keywords:["poker","cards","game","play","magic"],"char":"\ud83c\udccf",fitzpatrick_scale:!1,category:"symbols"},mahjong:{keywords:["game","play","chinese","kanji"],"char":"\ud83c\udc04",fitzpatrick_scale:!1,category:"symbols"},spades:{keywords:["poker","cards","suits","magic"],"char":"\u2660\ufe0f",fitzpatrick_scale:!1,category:"symbols"},clubs:{keywords:["poker","cards","magic","suits"],"char":"\u2663\ufe0f",fitzpatrick_scale:!1,category:"symbols"},hearts:{keywords:["poker","cards","magic","suits"],"char":"\u2665\ufe0f",fitzpatrick_scale:!1,category:"symbols"},diamonds:{keywords:["poker","cards","magic","suits"],"char":"\u2666\ufe0f",fitzpatrick_scale:!1,category:"symbols"},flower_playing_cards:{keywords:["game","sunset","red"],"char":"\ud83c\udfb4",fitzpatrick_scale:!1,category:"symbols"},thought_balloon:{keywords:["bubble","cloud","speech","thinking","dream"],"char":"\ud83d\udcad",fitzpatrick_scale:!1,category:"symbols"},right_anger_bubble:{keywords:["caption","speech","thinking","mad"],"char":"\ud83d\uddef",fitzpatrick_scale:!1,category:"symbols"},speech_balloon:{keywords:["bubble","words","message","talk","chatting"],"char":"\ud83d\udcac",fitzpatrick_scale:!1,category:"symbols"},left_speech_bubble:{keywords:["words","message","talk","chatting"],"char":"\ud83d\udde8",fitzpatrick_scale:!1,category:"symbols"},clock1:{keywords:["time","late","early","schedule"],"char":"\ud83d\udd50",fitzpatrick_scale:!1,category:"symbols"},clock2:{keywords:["time","late","early","schedule"],"char":"\ud83d\udd51",fitzpatrick_scale:!1,category:"symbols"},clock3:{keywords:["time","late","early","schedule"],"char":"\ud83d\udd52",fitzpatrick_scale:!1,category:"symbols"},clock4:{keywords:["time","late","early","schedule"],"char":"\ud83d\udd53",fitzpatrick_scale:!1,category:"symbols"},clock5:{keywords:["time","late","early","schedule"],"char":"\ud83d\udd54",fitzpatrick_scale:!1,category:"symbols"},clock6:{keywords:["time","late","early","schedule","dawn","dusk"],"char":"\ud83d\udd55",fitzpatrick_scale:!1,category:"symbols"},clock7:{keywords:["time","late","early","schedule"],"char":"\ud83d\udd56",fitzpatrick_scale:!1,category:"symbols"},clock8:{keywords:["time","late","early","schedule"],"char":"\ud83d\udd57",fitzpatrick_scale:!1,category:"symbols"},clock9:{keywords:["time","late","early","schedule"],"char":"\ud83d\udd58",fitzpatrick_scale:!1,category:"symbols"},clock10:{keywords:["time","late","early","schedule"],"char":"\ud83d\udd59",fitzpatrick_scale:!1,category:"symbols"},clock11:{keywords:["time","late","early","schedule"],"char":"\ud83d\udd5a",fitzpatrick_scale:!1,category:"symbols"},clock12:{keywords:["time","noon","midnight","midday","late","early","schedule"],"char":"\ud83d\udd5b",fitzpatrick_scale:!1,category:"symbols"},clock130:{keywords:["time","late","early","schedule"],"char":"\ud83d\udd5c",fitzpatrick_scale:!1,category:"symbols"},clock230:{keywords:["time","late","early","schedule"],"char":"\ud83d\udd5d",fitzpatrick_scale:!1,category:"symbols"},clock330:{keywords:["time","late","early","schedule"],"char":"\ud83d\udd5e",fitzpatrick_scale:!1,category:"symbols"},clock430:{keywords:["time","late","early","schedule"],"char":"\ud83d\udd5f",fitzpatrick_scale:!1,category:"symbols"},clock530:{keywords:["time","late","early","schedule"],"char":"\ud83d\udd60",fitzpatrick_scale:!1,category:"symbols"},clock630:{keywords:["time","late","early","schedule"],"char":"\ud83d\udd61",fitzpatrick_scale:!1,category:"symbols"},clock730:{keywords:["time","late","early","schedule"],"char":"\ud83d\udd62",fitzpatrick_scale:!1,category:"symbols"},clock830:{keywords:["time","late","early","schedule"],"char":"\ud83d\udd63",fitzpatrick_scale:!1,category:"symbols"},clock930:{keywords:["time","late","early","schedule"],"char":"\ud83d\udd64",fitzpatrick_scale:!1,category:"symbols"},clock1030:{keywords:["time","late","early","schedule"],"char":"\ud83d\udd65",fitzpatrick_scale:!1,category:"symbols"},clock1130:{keywords:["time","late","early","schedule"],"char":"\ud83d\udd66",fitzpatrick_scale:!1,category:"symbols"},clock1230:{keywords:["time","late","early","schedule"],"char":"\ud83d\udd67",fitzpatrick_scale:!1,category:"symbols"},afghanistan:{keywords:["af","flag","nation","country","banner"],"char":"\ud83c\udde6\ud83c\uddeb",fitzpatrick_scale:!1,category:"flags"},aland_islands:{keywords:["\xc5land","islands","flag","nation","country","banner"],"char":"\ud83c\udde6\ud83c\uddfd",fitzpatrick_scale:!1,category:"flags"},albania:{keywords:["al","flag","nation","country","banner"],"char":"\ud83c\udde6\ud83c\uddf1",fitzpatrick_scale:!1,category:"flags"},algeria:{keywords:["dz","flag","nation","country","banner"],"char":"\ud83c\udde9\ud83c\uddff",fitzpatrick_scale:!1,category:"flags"},american_samoa:{keywords:["american","ws","flag","nation","country","banner"],"char":"\ud83c\udde6\ud83c\uddf8",fitzpatrick_scale:!1,category:"flags"},andorra:{keywords:["ad","flag","nation","country","banner"],"char":"\ud83c\udde6\ud83c\udde9",fitzpatrick_scale:!1,category:"flags"},angola:{keywords:["ao","flag","nation","country","banner"],"char":"\ud83c\udde6\ud83c\uddf4",fitzpatrick_scale:!1,category:"flags"},anguilla:{keywords:["ai","flag","nation","country","banner"],"char":"\ud83c\udde6\ud83c\uddee",fitzpatrick_scale:!1,category:"flags"},antarctica:{keywords:["aq","flag","nation","country","banner"],"char":"\ud83c\udde6\ud83c\uddf6",fitzpatrick_scale:!1,category:"flags"},antigua_barbuda:{keywords:["antigua","barbuda","flag","nation","country","banner"],"char":"\ud83c\udde6\ud83c\uddec",fitzpatrick_scale:!1,category:"flags"},argentina:{keywords:["ar","flag","nation","country","banner"],"char":"\ud83c\udde6\ud83c\uddf7",fitzpatrick_scale:!1,category:"flags"},armenia:{keywords:["am","flag","nation","country","banner"],"char":"\ud83c\udde6\ud83c\uddf2",fitzpatrick_scale:!1,category:"flags"},aruba:{keywords:["aw","flag","nation","country","banner"],"char":"\ud83c\udde6\ud83c\uddfc",fitzpatrick_scale:!1,category:"flags"},australia:{keywords:["au","flag","nation","country","banner"],"char":"\ud83c\udde6\ud83c\uddfa",fitzpatrick_scale:!1,category:"flags"},austria:{keywords:["at","flag","nation","country","banner"],"char":"\ud83c\udde6\ud83c\uddf9",fitzpatrick_scale:!1,category:"flags"},azerbaijan:{keywords:["az","flag","nation","country","banner"],"char":"\ud83c\udde6\ud83c\uddff",fitzpatrick_scale:!1,category:"flags"},bahamas:{keywords:["bs","flag","nation","country","banner"],"char":"\ud83c\udde7\ud83c\uddf8",fitzpatrick_scale:!1,category:"flags"},bahrain:{keywords:["bh","flag","nation","country","banner"],"char":"\ud83c\udde7\ud83c\udded",fitzpatrick_scale:!1,category:"flags"},bangladesh:{keywords:["bd","flag","nation","country","banner"],"char":"\ud83c\udde7\ud83c\udde9",fitzpatrick_scale:!1,category:"flags"},barbados:{keywords:["bb","flag","nation","country","banner"],"char":"\ud83c\udde7\ud83c\udde7",fitzpatrick_scale:!1,category:"flags"},belarus:{keywords:["by","flag","nation","country","banner"],"char":"\ud83c\udde7\ud83c\uddfe",fitzpatrick_scale:!1,category:"flags"},belgium:{keywords:["be","flag","nation","country","banner"],"char":"\ud83c\udde7\ud83c\uddea",fitzpatrick_scale:!1,category:"flags"},belize:{keywords:["bz","flag","nation","country","banner"],"char":"\ud83c\udde7\ud83c\uddff",fitzpatrick_scale:!1,category:"flags"},benin:{keywords:["bj","flag","nation","country","banner"],"char":"\ud83c\udde7\ud83c\uddef",fitzpatrick_scale:!1,category:"flags"},bermuda:{keywords:["bm","flag","nation","country","banner"],"char":"\ud83c\udde7\ud83c\uddf2",fitzpatrick_scale:!1,category:"flags"},bhutan:{keywords:["bt","flag","nation","country","banner"],"char":"\ud83c\udde7\ud83c\uddf9",fitzpatrick_scale:!1,category:"flags"},bolivia:{keywords:["bo","flag","nation","country","banner"],"char":"\ud83c\udde7\ud83c\uddf4",fitzpatrick_scale:!1,category:"flags"},caribbean_netherlands:{keywords:["bonaire","flag","nation","country","banner"],"char":"\ud83c\udde7\ud83c\uddf6",fitzpatrick_scale:!1,category:"flags"},bosnia_herzegovina:{keywords:["bosnia","herzegovina","flag","nation","country","banner"],"char":"\ud83c\udde7\ud83c\udde6",fitzpatrick_scale:!1,category:"flags"},botswana:{keywords:["bw","flag","nation","country","banner"],"char":"\ud83c\udde7\ud83c\uddfc",fitzpatrick_scale:!1,category:"flags"},brazil:{keywords:["br","flag","nation","country","banner"],"char":"\ud83c\udde7\ud83c\uddf7",fitzpatrick_scale:!1,category:"flags"},british_indian_ocean_territory:{keywords:["british","indian","ocean","territory","flag","nation","country","banner"],"char":"\ud83c\uddee\ud83c\uddf4",fitzpatrick_scale:!1,category:"flags"},british_virgin_islands:{keywords:["british","virgin","islands","bvi","flag","nation","country","banner"],"char":"\ud83c\uddfb\ud83c\uddec",fitzpatrick_scale:!1,category:"flags"},brunei:{keywords:["bn","darussalam","flag","nation","country","banner"],"char":"\ud83c\udde7\ud83c\uddf3",fitzpatrick_scale:!1,category:"flags"},bulgaria:{keywords:["bg","flag","nation","country","banner"],"char":"\ud83c\udde7\ud83c\uddec",fitzpatrick_scale:!1,category:"flags"},burkina_faso:{keywords:["burkina","faso","flag","nation","country","banner"],"char":"\ud83c\udde7\ud83c\uddeb",fitzpatrick_scale:!1,category:"flags"},burundi:{keywords:["bi","flag","nation","country","banner"],"char":"\ud83c\udde7\ud83c\uddee",fitzpatrick_scale:!1,category:"flags"},cape_verde:{keywords:["cabo","verde","flag","nation","country","banner"],"char":"\ud83c\udde8\ud83c\uddfb",fitzpatrick_scale:!1,category:"flags"},cambodia:{keywords:["kh","flag","nation","country","banner"],"char":"\ud83c\uddf0\ud83c\udded",fitzpatrick_scale:!1,category:"flags"},cameroon:{keywords:["cm","flag","nation","country","banner"],"char":"\ud83c\udde8\ud83c\uddf2",fitzpatrick_scale:!1,category:"flags"},canada:{keywords:["ca","flag","nation","country","banner"],"char":"\ud83c\udde8\ud83c\udde6",fitzpatrick_scale:!1,category:"flags"},canary_islands:{keywords:["canary","islands","flag","nation","country","banner"],"char":"\ud83c\uddee\ud83c\udde8",fitzpatrick_scale:!1,category:"flags"},cayman_islands:{keywords:["cayman","islands","flag","nation","country","banner"],"char":"\ud83c\uddf0\ud83c\uddfe",fitzpatrick_scale:!1,category:"flags"},central_african_republic:{keywords:["central","african","republic","flag","nation","country","banner"],"char":"\ud83c\udde8\ud83c\uddeb",fitzpatrick_scale:!1,category:"flags"},chad:{keywords:["td","flag","nation","country","banner"],"char":"\ud83c\uddf9\ud83c\udde9",fitzpatrick_scale:!1,category:"flags"},chile:{keywords:["flag","nation","country","banner"],"char":"\ud83c\udde8\ud83c\uddf1",fitzpatrick_scale:!1,category:"flags"},cn:{keywords:["china","chinese","prc","flag","country","nation","banner"],"char":"\ud83c\udde8\ud83c\uddf3",fitzpatrick_scale:!1,category:"flags"},christmas_island:{keywords:["christmas","island","flag","nation","country","banner"],"char":"\ud83c\udde8\ud83c\uddfd",fitzpatrick_scale:!1,category:"flags"},cocos_islands:{keywords:["cocos","keeling","islands","flag","nation","country","banner"],"char":"\ud83c\udde8\ud83c\udde8",fitzpatrick_scale:!1,category:"flags"},colombia:{keywords:["co","flag","nation","country","banner"],"char":"\ud83c\udde8\ud83c\uddf4",fitzpatrick_scale:!1,category:"flags"},comoros:{keywords:["km","flag","nation","country","banner"],"char":"\ud83c\uddf0\ud83c\uddf2",fitzpatrick_scale:!1,category:"flags"},congo_brazzaville:{keywords:["congo","flag","nation","country","banner"],"char":"\ud83c\udde8\ud83c\uddec",fitzpatrick_scale:!1,category:"flags"},congo_kinshasa:{keywords:["congo","democratic","republic","flag","nation","country","banner"],"char":"\ud83c\udde8\ud83c\udde9",fitzpatrick_scale:!1,category:"flags"},cook_islands:{keywords:["cook","islands","flag","nation","country","banner"],"char":"\ud83c\udde8\ud83c\uddf0",fitzpatrick_scale:!1,category:"flags"},costa_rica:{keywords:["costa","rica","flag","nation","country","banner"],"char":"\ud83c\udde8\ud83c\uddf7",fitzpatrick_scale:!1,category:"flags"},croatia:{keywords:["hr","flag","nation","country","banner"],"char":"\ud83c\udded\ud83c\uddf7",fitzpatrick_scale:!1,category:"flags"},cuba:{keywords:["cu","flag","nation","country","banner"],"char":"\ud83c\udde8\ud83c\uddfa",fitzpatrick_scale:!1,category:"flags"},curacao:{keywords:["cura\xe7ao","flag","nation","country","banner"],"char":"\ud83c\udde8\ud83c\uddfc",fitzpatrick_scale:!1,category:"flags"},cyprus:{keywords:["cy","flag","nation","country","banner"],"char":"\ud83c\udde8\ud83c\uddfe",fitzpatrick_scale:!1,category:"flags"},czech_republic:{keywords:["cz","flag","nation","country","banner"],"char":"\ud83c\udde8\ud83c\uddff",fitzpatrick_scale:!1,category:"flags"},denmark:{keywords:["dk","flag","nation","country","banner"],"char":"\ud83c\udde9\ud83c\uddf0",fitzpatrick_scale:!1,category:"flags"},djibouti:{keywords:["dj","flag","nation","country","banner"],"char":"\ud83c\udde9\ud83c\uddef",fitzpatrick_scale:!1,category:"flags"},dominica:{keywords:["dm","flag","nation","country","banner"],"char":"\ud83c\udde9\ud83c\uddf2",fitzpatrick_scale:!1,category:"flags"},dominican_republic:{keywords:["dominican","republic","flag","nation","country","banner"],"char":"\ud83c\udde9\ud83c\uddf4",fitzpatrick_scale:!1,category:"flags"},ecuador:{keywords:["ec","flag","nation","country","banner"],"char":"\ud83c\uddea\ud83c\udde8",fitzpatrick_scale:!1,category:"flags"},egypt:{keywords:["eg","flag","nation","country","banner"],"char":"\ud83c\uddea\ud83c\uddec",fitzpatrick_scale:!1,category:"flags"},el_salvador:{keywords:["el","salvador","flag","nation","country","banner"],"char":"\ud83c\uddf8\ud83c\uddfb",fitzpatrick_scale:!1,category:"flags"},equatorial_guinea:{keywords:["equatorial","gn","flag","nation","country","banner"],"char":"\ud83c\uddec\ud83c\uddf6",fitzpatrick_scale:!1,category:"flags"},eritrea:{keywords:["er","flag","nation","country","banner"],"char":"\ud83c\uddea\ud83c\uddf7",fitzpatrick_scale:!1,category:"flags"},estonia:{keywords:["ee","flag","nation","country","banner"],"char":"\ud83c\uddea\ud83c\uddea",fitzpatrick_scale:!1,category:"flags"},ethiopia:{keywords:["et","flag","nation","country","banner"],"char":"\ud83c\uddea\ud83c\uddf9",fitzpatrick_scale:!1,category:"flags"},eu:{keywords:["european","union","flag","banner"],"char":"\ud83c\uddea\ud83c\uddfa",fitzpatrick_scale:!1,category:"flags"},falkland_islands:{keywords:["falkland","islands","malvinas","flag","nation","country","banner"],"char":"\ud83c\uddeb\ud83c\uddf0",fitzpatrick_scale:!1,category:"flags"},faroe_islands:{keywords:["faroe","islands","flag","nation","country","banner"],"char":"\ud83c\uddeb\ud83c\uddf4",fitzpatrick_scale:!1,category:"flags"},fiji:{keywords:["fj","flag","nation","country","banner"],"char":"\ud83c\uddeb\ud83c\uddef",fitzpatrick_scale:!1,category:"flags"},finland:{keywords:["fi","flag","nation","country","banner"],"char":"\ud83c\uddeb\ud83c\uddee",fitzpatrick_scale:!1,category:"flags"},fr:{keywords:["banner","flag","nation","france","french","country"],"char":"\ud83c\uddeb\ud83c\uddf7",fitzpatrick_scale:!1,category:"flags"},french_guiana:{keywords:["french","guiana","flag","nation","country","banner"],"char":"\ud83c\uddec\ud83c\uddeb",fitzpatrick_scale:!1,category:"flags"},french_polynesia:{keywords:["french","polynesia","flag","nation","country","banner"],"char":"\ud83c\uddf5\ud83c\uddeb",fitzpatrick_scale:!1,category:"flags"},french_southern_territories:{keywords:["french","southern","territories","flag","nation","country","banner"],"char":"\ud83c\uddf9\ud83c\uddeb",fitzpatrick_scale:!1,category:"flags"},gabon:{keywords:["ga","flag","nation","country","banner"],"char":"\ud83c\uddec\ud83c\udde6",fitzpatrick_scale:!1,category:"flags"},gambia:{keywords:["gm","flag","nation","country","banner"],"char":"\ud83c\uddec\ud83c\uddf2",fitzpatrick_scale:!1,category:"flags"},georgia:{keywords:["ge","flag","nation","country","banner"],"char":"\ud83c\uddec\ud83c\uddea",fitzpatrick_scale:!1,category:"flags"},de:{keywords:["german","nation","flag","country","banner"],"char":"\ud83c\udde9\ud83c\uddea",fitzpatrick_scale:!1,category:"flags"},ghana:{keywords:["gh","flag","nation","country","banner"],"char":"\ud83c\uddec\ud83c\udded",fitzpatrick_scale:!1,category:"flags"},gibraltar:{keywords:["gi","flag","nation","country","banner"],"char":"\ud83c\uddec\ud83c\uddee",fitzpatrick_scale:!1,category:"flags"},greece:{keywords:["gr","flag","nation","country","banner"],"char":"\ud83c\uddec\ud83c\uddf7",fitzpatrick_scale:!1,category:"flags"},greenland:{keywords:["gl","flag","nation","country","banner"],"char":"\ud83c\uddec\ud83c\uddf1",fitzpatrick_scale:!1,category:"flags"},grenada:{keywords:["gd","flag","nation","country","banner"],"char":"\ud83c\uddec\ud83c\udde9",fitzpatrick_scale:!1,category:"flags"},guadeloupe:{keywords:["gp","flag","nation","country","banner"],"char":"\ud83c\uddec\ud83c\uddf5",fitzpatrick_scale:!1,category:"flags"},guam:{keywords:["gu","flag","nation","country","banner"],"char":"\ud83c\uddec\ud83c\uddfa",fitzpatrick_scale:!1,category:"flags"},guatemala:{keywords:["gt","flag","nation","country","banner"],"char":"\ud83c\uddec\ud83c\uddf9",fitzpatrick_scale:!1,category:"flags"},guernsey:{keywords:["gg","flag","nation","country","banner"],"char":"\ud83c\uddec\ud83c\uddec",fitzpatrick_scale:!1,category:"flags"},guinea:{keywords:["gn","flag","nation","country","banner"],"char":"\ud83c\uddec\ud83c\uddf3",fitzpatrick_scale:!1,category:"flags"},guinea_bissau:{keywords:["gw","bissau","flag","nation","country","banner"],"char":"\ud83c\uddec\ud83c\uddfc",fitzpatrick_scale:!1,category:"flags"},guyana:{keywords:["gy","flag","nation","country","banner"],"char":"\ud83c\uddec\ud83c\uddfe",fitzpatrick_scale:!1,category:"flags"},haiti:{keywords:["ht","flag","nation","country","banner"],"char":"\ud83c\udded\ud83c\uddf9",fitzpatrick_scale:!1,category:"flags"},honduras:{keywords:["hn","flag","nation","country","banner"],"char":"\ud83c\udded\ud83c\uddf3",fitzpatrick_scale:!1,category:"flags"},hong_kong:{keywords:["hong","kong","flag","nation","country","banner"],"char":"\ud83c\udded\ud83c\uddf0",fitzpatrick_scale:!1,category:"flags"},hungary:{keywords:["hu","flag","nation","country","banner"],"char":"\ud83c\udded\ud83c\uddfa",fitzpatrick_scale:!1,category:"flags"},iceland:{keywords:["is","flag","nation","country","banner"],"char":"\ud83c\uddee\ud83c\uddf8",fitzpatrick_scale:!1,category:"flags"},india:{keywords:["in","flag","nation","country","banner"],"char":"\ud83c\uddee\ud83c\uddf3",fitzpatrick_scale:!1,category:"flags"},indonesia:{keywords:["flag","nation","country","banner"],"char":"\ud83c\uddee\ud83c\udde9",fitzpatrick_scale:!1,category:"flags"},iran:{keywords:["iran,","islamic","republic","flag","nation","country","banner"],"char":"\ud83c\uddee\ud83c\uddf7",fitzpatrick_scale:!1,category:"flags"},iraq:{keywords:["iq","flag","nation","country","banner"],"char":"\ud83c\uddee\ud83c\uddf6",fitzpatrick_scale:!1,category:"flags"},ireland:{keywords:["ie","flag","nation","country","banner"],"char":"\ud83c\uddee\ud83c\uddea",fitzpatrick_scale:!1,category:"flags"},isle_of_man:{keywords:["isle","man","flag","nation","country","banner"],"char":"\ud83c\uddee\ud83c\uddf2",fitzpatrick_scale:!1,category:"flags"},israel:{keywords:["il","flag","nation","country","banner"],"char":"\ud83c\uddee\ud83c\uddf1",fitzpatrick_scale:!1,category:"flags"},it:{keywords:["italy","flag","nation","country","banner"],"char":"\ud83c\uddee\ud83c\uddf9",fitzpatrick_scale:!1,category:"flags"},cote_divoire:{keywords:["ivory","coast","flag","nation","country","banner"],"char":"\ud83c\udde8\ud83c\uddee",fitzpatrick_scale:!1,category:"flags"},jamaica:{keywords:["jm","flag","nation","country","banner"],"char":"\ud83c\uddef\ud83c\uddf2",fitzpatrick_scale:!1,category:"flags"},jp:{keywords:["japanese","nation","flag","country","banner"],"char":"\ud83c\uddef\ud83c\uddf5",fitzpatrick_scale:!1,category:"flags"},jersey:{keywords:["je","flag","nation","country","banner"],"char":"\ud83c\uddef\ud83c\uddea",fitzpatrick_scale:!1,category:"flags"},jordan:{keywords:["jo","flag","nation","country","banner"],"char":"\ud83c\uddef\ud83c\uddf4",fitzpatrick_scale:!1,category:"flags"},kazakhstan:{keywords:["kz","flag","nation","country","banner"],"char":"\ud83c\uddf0\ud83c\uddff",fitzpatrick_scale:!1,category:"flags"},kenya:{keywords:["ke","flag","nation","country","banner"],"char":"\ud83c\uddf0\ud83c\uddea",fitzpatrick_scale:!1,category:"flags"},kiribati:{keywords:["ki","flag","nation","country","banner"],"char":"\ud83c\uddf0\ud83c\uddee",fitzpatrick_scale:!1,category:"flags"},kosovo:{keywords:["xk","flag","nation","country","banner"],"char":"\ud83c\uddfd\ud83c\uddf0",fitzpatrick_scale:!1,category:"flags"},kuwait:{keywords:["kw","flag","nation","country","banner"],"char":"\ud83c\uddf0\ud83c\uddfc",fitzpatrick_scale:!1,category:"flags"},kyrgyzstan:{keywords:["kg","flag","nation","country","banner"],"char":"\ud83c\uddf0\ud83c\uddec",fitzpatrick_scale:!1,category:"flags"},laos:{keywords:["lao","democratic","republic","flag","nation","country","banner"],"char":"\ud83c\uddf1\ud83c\udde6",fitzpatrick_scale:!1,category:"flags"},latvia:{keywords:["lv","flag","nation","country","banner"],"char":"\ud83c\uddf1\ud83c\uddfb",fitzpatrick_scale:!1,category:"flags"},lebanon:{keywords:["lb","flag","nation","country","banner"],"char":"\ud83c\uddf1\ud83c\udde7",fitzpatrick_scale:!1,category:"flags"},lesotho:{keywords:["ls","flag","nation","country","banner"],"char":"\ud83c\uddf1\ud83c\uddf8",fitzpatrick_scale:!1,category:"flags"},liberia:{keywords:["lr","flag","nation","country","banner"],"char":"\ud83c\uddf1\ud83c\uddf7",fitzpatrick_scale:!1,category:"flags"},libya:{keywords:["ly","flag","nation","country","banner"],"char":"\ud83c\uddf1\ud83c\uddfe",fitzpatrick_scale:!1,category:"flags"},liechtenstein:{keywords:["li","flag","nation","country","banner"],"char":"\ud83c\uddf1\ud83c\uddee",fitzpatrick_scale:!1,category:"flags"},lithuania:{keywords:["lt","flag","nation","country","banner"],"char":"\ud83c\uddf1\ud83c\uddf9",fitzpatrick_scale:!1,category:"flags"},luxembourg:{keywords:["lu","flag","nation","country","banner"],"char":"\ud83c\uddf1\ud83c\uddfa",fitzpatrick_scale:!1,category:"flags"},macau:{keywords:["macao","flag","nation","country","banner"],"char":"\ud83c\uddf2\ud83c\uddf4",fitzpatrick_scale:!1,category:"flags"},macedonia:{keywords:["macedonia,","flag","nation","country","banner"],"char":"\ud83c\uddf2\ud83c\uddf0",fitzpatrick_scale:!1,category:"flags"},madagascar:{keywords:["mg","flag","nation","country","banner"],"char":"\ud83c\uddf2\ud83c\uddec",fitzpatrick_scale:!1,category:"flags"},malawi:{keywords:["mw","flag","nation","country","banner"],"char":"\ud83c\uddf2\ud83c\uddfc",fitzpatrick_scale:!1,category:"flags"},malaysia:{keywords:["my","flag","nation","country","banner"],"char":"\ud83c\uddf2\ud83c\uddfe",fitzpatrick_scale:!1,category:"flags"},maldives:{keywords:["mv","flag","nation","country","banner"],"char":"\ud83c\uddf2\ud83c\uddfb",fitzpatrick_scale:!1,category:"flags"},mali:{keywords:["ml","flag","nation","country","banner"],"char":"\ud83c\uddf2\ud83c\uddf1",fitzpatrick_scale:!1,category:"flags"},malta:{keywords:["mt","flag","nation","country","banner"],"char":"\ud83c\uddf2\ud83c\uddf9",fitzpatrick_scale:!1,category:"flags"},marshall_islands:{keywords:["marshall","islands","flag","nation","country","banner"],"char":"\ud83c\uddf2\ud83c\udded",fitzpatrick_scale:!1,category:"flags"},martinique:{keywords:["mq","flag","nation","country","banner"],"char":"\ud83c\uddf2\ud83c\uddf6",fitzpatrick_scale:!1,category:"flags"},mauritania:{keywords:["mr","flag","nation","country","banner"],"char":"\ud83c\uddf2\ud83c\uddf7",fitzpatrick_scale:!1,category:"flags"},mauritius:{keywords:["mu","flag","nation","country","banner"],"char":"\ud83c\uddf2\ud83c\uddfa",fitzpatrick_scale:!1,category:"flags"},mayotte:{keywords:["yt","flag","nation","country","banner"],"char":"\ud83c\uddfe\ud83c\uddf9",fitzpatrick_scale:!1,category:"flags"},mexico:{keywords:["mx","flag","nation","country","banner"],"char":"\ud83c\uddf2\ud83c\uddfd",fitzpatrick_scale:!1,category:"flags"},micronesia:{keywords:["micronesia,","federated","states","flag","nation","country","banner"],"char":"\ud83c\uddeb\ud83c\uddf2",fitzpatrick_scale:!1,category:"flags"},moldova:{keywords:["moldova,","republic","flag","nation","country","banner"],"char":"\ud83c\uddf2\ud83c\udde9",fitzpatrick_scale:!1,category:"flags"},monaco:{keywords:["mc","flag","nation","country","banner"],"char":"\ud83c\uddf2\ud83c\udde8",fitzpatrick_scale:!1,category:"flags"},mongolia:{keywords:["mn","flag","nation","country","banner"],"char":"\ud83c\uddf2\ud83c\uddf3",fitzpatrick_scale:!1,category:"flags"},montenegro:{keywords:["me","flag","nation","country","banner"],"char":"\ud83c\uddf2\ud83c\uddea",fitzpatrick_scale:!1,category:"flags"},montserrat:{keywords:["ms","flag","nation","country","banner"],"char":"\ud83c\uddf2\ud83c\uddf8",fitzpatrick_scale:!1,category:"flags"},morocco:{keywords:["ma","flag","nation","country","banner"],"char":"\ud83c\uddf2\ud83c\udde6",fitzpatrick_scale:!1,category:"flags"},mozambique:{keywords:["mz","flag","nation","country","banner"],"char":"\ud83c\uddf2\ud83c\uddff",fitzpatrick_scale:!1,category:"flags"},myanmar:{keywords:["mm","flag","nation","country","banner"],"char":"\ud83c\uddf2\ud83c\uddf2",fitzpatrick_scale:!1,category:"flags"},namibia:{keywords:["na","flag","nation","country","banner"],"char":"\ud83c\uddf3\ud83c\udde6",fitzpatrick_scale:!1,category:"flags"},nauru:{keywords:["nr","flag","nation","country","banner"],"char":"\ud83c\uddf3\ud83c\uddf7",fitzpatrick_scale:!1,category:"flags"},nepal:{keywords:["np","flag","nation","country","banner"],"char":"\ud83c\uddf3\ud83c\uddf5",fitzpatrick_scale:!1,category:"flags"},netherlands:{keywords:["nl","flag","nation","country","banner"],"char":"\ud83c\uddf3\ud83c\uddf1",fitzpatrick_scale:!1,category:"flags"},new_caledonia:{keywords:["new","caledonia","flag","nation","country","banner"],"char":"\ud83c\uddf3\ud83c\udde8",fitzpatrick_scale:!1,category:"flags"},new_zealand:{keywords:["new","zealand","flag","nation","country","banner"],"char":"\ud83c\uddf3\ud83c\uddff",fitzpatrick_scale:!1,category:"flags"},nicaragua:{keywords:["ni","flag","nation","country","banner"],"char":"\ud83c\uddf3\ud83c\uddee",fitzpatrick_scale:!1,category:"flags"},niger:{keywords:["ne","flag","nation","country","banner"],"char":"\ud83c\uddf3\ud83c\uddea",fitzpatrick_scale:!1,category:"flags"},nigeria:{keywords:["flag","nation","country","banner"],"char":"\ud83c\uddf3\ud83c\uddec",fitzpatrick_scale:!1,category:"flags"},niue:{keywords:["nu","flag","nation","country","banner"],"char":"\ud83c\uddf3\ud83c\uddfa",fitzpatrick_scale:!1,category:"flags"},norfolk_island:{keywords:["norfolk","island","flag","nation","country","banner"],"char":"\ud83c\uddf3\ud83c\uddeb",fitzpatrick_scale:!1,category:"flags"},northern_mariana_islands:{keywords:["northern","mariana","islands","flag","nation","country","banner"],"char":"\ud83c\uddf2\ud83c\uddf5",fitzpatrick_scale:!1,category:"flags"},north_korea:{keywords:["north","korea","nation","flag","country","banner"],"char":"\ud83c\uddf0\ud83c\uddf5",fitzpatrick_scale:!1,category:"flags"},norway:{keywords:["no","flag","nation","country","banner"],"char":"\ud83c\uddf3\ud83c\uddf4",fitzpatrick_scale:!1,category:"flags"},oman:{keywords:["om_symbol","flag","nation","country","banner"],"char":"\ud83c\uddf4\ud83c\uddf2",fitzpatrick_scale:!1,category:"flags"},pakistan:{keywords:["pk","flag","nation","country","banner"],"char":"\ud83c\uddf5\ud83c\uddf0",fitzpatrick_scale:!1,category:"flags"},palau:{keywords:["pw","flag","nation","country","banner"],"char":"\ud83c\uddf5\ud83c\uddfc",fitzpatrick_scale:!1,category:"flags"},palestinian_territories:{keywords:["palestine","palestinian","territories","flag","nation","country","banner"],"char":"\ud83c\uddf5\ud83c\uddf8",fitzpatrick_scale:!1,category:"flags"},panama:{keywords:["pa","flag","nation","country","banner"],"char":"\ud83c\uddf5\ud83c\udde6",fitzpatrick_scale:!1,category:"flags"},papua_new_guinea:{keywords:["papua","new","guinea","flag","nation","country","banner"],"char":"\ud83c\uddf5\ud83c\uddec",fitzpatrick_scale:!1,category:"flags"},paraguay:{keywords:["py","flag","nation","country","banner"],"char":"\ud83c\uddf5\ud83c\uddfe",fitzpatrick_scale:!1,category:"flags"},peru:{keywords:["pe","flag","nation","country","banner"],"char":"\ud83c\uddf5\ud83c\uddea",fitzpatrick_scale:!1,category:"flags"},philippines:{keywords:["ph","flag","nation","country","banner"],"char":"\ud83c\uddf5\ud83c\udded",fitzpatrick_scale:!1,category:"flags"},pitcairn_islands:{keywords:["pitcairn","flag","nation","country","banner"],"char":"\ud83c\uddf5\ud83c\uddf3",fitzpatrick_scale:!1,category:"flags"},poland:{keywords:["pl","flag","nation","country","banner"],"char":"\ud83c\uddf5\ud83c\uddf1",fitzpatrick_scale:!1,category:"flags"},portugal:{keywords:["pt","flag","nation","country","banner"],"char":"\ud83c\uddf5\ud83c\uddf9",fitzpatrick_scale:!1,category:"flags"},puerto_rico:{keywords:["puerto","rico","flag","nation","country","banner"],"char":"\ud83c\uddf5\ud83c\uddf7",fitzpatrick_scale:!1,category:"flags"},qatar:{keywords:["qa","flag","nation","country","banner"],"char":"\ud83c\uddf6\ud83c\udde6",fitzpatrick_scale:!1,category:"flags"},reunion:{keywords:["r\xe9union","flag","nation","country","banner"],"char":"\ud83c\uddf7\ud83c\uddea",fitzpatrick_scale:!1,category:"flags"},romania:{keywords:["ro","flag","nation","country","banner"],"char":"\ud83c\uddf7\ud83c\uddf4",fitzpatrick_scale:!1,category:"flags"},ru:{keywords:["russian","federation","flag","nation","country","banner"],"char":"\ud83c\uddf7\ud83c\uddfa",fitzpatrick_scale:!1,category:"flags"},rwanda:{keywords:["rw","flag","nation","country","banner"],"char":"\ud83c\uddf7\ud83c\uddfc",fitzpatrick_scale:!1,category:"flags"},st_barthelemy:{keywords:["saint","barth\xe9lemy","flag","nation","country","banner"],"char":"\ud83c\udde7\ud83c\uddf1",fitzpatrick_scale:!1,category:"flags"},st_helena:{keywords:["saint","helena","ascension","tristan","cunha","flag","nation","country","banner"],"char":"\ud83c\uddf8\ud83c\udded",fitzpatrick_scale:!1,category:"flags"},st_kitts_nevis:{keywords:["saint","kitts","nevis","flag","nation","country","banner"],"char":"\ud83c\uddf0\ud83c\uddf3",fitzpatrick_scale:!1,category:"flags"},st_lucia:{keywords:["saint","lucia","flag","nation","country","banner"],"char":"\ud83c\uddf1\ud83c\udde8",fitzpatrick_scale:!1,category:"flags"},st_pierre_miquelon:{keywords:["saint","pierre","miquelon","flag","nation","country","banner"],"char":"\ud83c\uddf5\ud83c\uddf2",fitzpatrick_scale:!1,category:"flags"},st_vincent_grenadines:{keywords:["saint","vincent","grenadines","flag","nation","country","banner"],"char":"\ud83c\uddfb\ud83c\udde8",fitzpatrick_scale:!1,category:"flags"},samoa:{keywords:["ws","flag","nation","country","banner"],"char":"\ud83c\uddfc\ud83c\uddf8",fitzpatrick_scale:!1,category:"flags"},san_marino:{keywords:["san","marino","flag","nation","country","banner"],"char":"\ud83c\uddf8\ud83c\uddf2",fitzpatrick_scale:!1,category:"flags"},sao_tome_principe:{keywords:["sao","tome","principe","flag","nation","country","banner"],"char":"\ud83c\uddf8\ud83c\uddf9",fitzpatrick_scale:!1,category:"flags"},saudi_arabia:{keywords:["flag","nation","country","banner"],"char":"\ud83c\uddf8\ud83c\udde6",fitzpatrick_scale:!1,category:"flags"},senegal:{keywords:["sn","flag","nation","country","banner"],"char":"\ud83c\uddf8\ud83c\uddf3",fitzpatrick_scale:!1,category:"flags"},serbia:{keywords:["rs","flag","nation","country","banner"],"char":"\ud83c\uddf7\ud83c\uddf8",fitzpatrick_scale:!1,category:"flags"},seychelles:{keywords:["sc","flag","nation","country","banner"],"char":"\ud83c\uddf8\ud83c\udde8",fitzpatrick_scale:!1,category:"flags"},sierra_leone:{keywords:["sierra","leone","flag","nation","country","banner"],"char":"\ud83c\uddf8\ud83c\uddf1",fitzpatrick_scale:!1,category:"flags"},singapore:{keywords:["sg","flag","nation","country","banner"],"char":"\ud83c\uddf8\ud83c\uddec",fitzpatrick_scale:!1,category:"flags"},sint_maarten:{keywords:["sint","maarten","dutch","flag","nation","country","banner"],"char":"\ud83c\uddf8\ud83c\uddfd",fitzpatrick_scale:!1,category:"flags"},slovakia:{keywords:["sk","flag","nation","country","banner"],"char":"\ud83c\uddf8\ud83c\uddf0",fitzpatrick_scale:!1,category:"flags"},slovenia:{keywords:["si","flag","nation","country","banner"],"char":"\ud83c\uddf8\ud83c\uddee",fitzpatrick_scale:!1,category:"flags"},solomon_islands:{keywords:["solomon","islands","flag","nation","country","banner"],"char":"\ud83c\uddf8\ud83c\udde7",fitzpatrick_scale:!1,category:"flags"},somalia:{keywords:["so","flag","nation","country","banner"],"char":"\ud83c\uddf8\ud83c\uddf4",fitzpatrick_scale:!1,category:"flags"},south_africa:{keywords:["south","africa","flag","nation","country","banner"],"char":"\ud83c\uddff\ud83c\udde6",fitzpatrick_scale:!1,category:"flags"},south_georgia_south_sandwich_islands:{keywords:["south","georgia","sandwich","islands","flag","nation","country","banner"],"char":"\ud83c\uddec\ud83c\uddf8",fitzpatrick_scale:!1,category:"flags"},kr:{keywords:["south","korea","nation","flag","country","banner"],"char":"\ud83c\uddf0\ud83c\uddf7",fitzpatrick_scale:!1,category:"flags"},south_sudan:{keywords:["south","sd","flag","nation","country","banner"],"char":"\ud83c\uddf8\ud83c\uddf8",fitzpatrick_scale:!1,category:"flags"},es:{keywords:["spain","flag","nation","country","banner"],"char":"\ud83c\uddea\ud83c\uddf8",fitzpatrick_scale:!1,category:"flags"},sri_lanka:{keywords:["sri","lanka","flag","nation","country","banner"],"char":"\ud83c\uddf1\ud83c\uddf0",fitzpatrick_scale:!1,category:"flags"},sudan:{keywords:["sd","flag","nation","country","banner"],"char":"\ud83c\uddf8\ud83c\udde9",fitzpatrick_scale:!1,category:"flags"},suriname:{keywords:["sr","flag","nation","country","banner"],"char":"\ud83c\uddf8\ud83c\uddf7",fitzpatrick_scale:!1,category:"flags"},swaziland:{keywords:["sz","flag","nation","country","banner"],"char":"\ud83c\uddf8\ud83c\uddff",fitzpatrick_scale:!1,category:"flags"},sweden:{keywords:["se","flag","nation","country","banner"],"char":"\ud83c\uddf8\ud83c\uddea",fitzpatrick_scale:!1,category:"flags"},switzerland:{keywords:["ch","flag","nation","country","banner"],"char":"\ud83c\udde8\ud83c\udded",fitzpatrick_scale:!1,category:"flags"},syria:{keywords:["syrian","arab","republic","flag","nation","country","banner"],"char":"\ud83c\uddf8\ud83c\uddfe",fitzpatrick_scale:!1,category:"flags"},taiwan:{keywords:["tw","flag","nation","country","banner"],"char":"\ud83c\uddf9\ud83c\uddfc",fitzpatrick_scale:!1,category:"flags"},tajikistan:{keywords:["tj","flag","nation","country","banner"],"char":"\ud83c\uddf9\ud83c\uddef",fitzpatrick_scale:!1,category:"flags"},tanzania:{keywords:["tanzania,","united","republic","flag","nation","country","banner"],"char":"\ud83c\uddf9\ud83c\uddff",fitzpatrick_scale:!1,category:"flags"},thailand:{keywords:["th","flag","nation","country","banner"],"char":"\ud83c\uddf9\ud83c\udded",fitzpatrick_scale:!1,category:"flags"},timor_leste:{keywords:["timor","leste","flag","nation","country","banner"],"char":"\ud83c\uddf9\ud83c\uddf1",fitzpatrick_scale:!1,category:"flags"},togo:{keywords:["tg","flag","nation","country","banner"],"char":"\ud83c\uddf9\ud83c\uddec",fitzpatrick_scale:!1,category:"flags"},tokelau:{keywords:["tk","flag","nation","country","banner"],"char":"\ud83c\uddf9\ud83c\uddf0",fitzpatrick_scale:!1,category:"flags"},tonga:{keywords:["to","flag","nation","country","banner"],"char":"\ud83c\uddf9\ud83c\uddf4",fitzpatrick_scale:!1,category:"flags"},trinidad_tobago:{keywords:["trinidad","tobago","flag","nation","country","banner"],"char":"\ud83c\uddf9\ud83c\uddf9",fitzpatrick_scale:!1,category:"flags"},tunisia:{keywords:["tn","flag","nation","country","banner"],"char":"\ud83c\uddf9\ud83c\uddf3",fitzpatrick_scale:!1,category:"flags"},tr:{keywords:["turkey","flag","nation","country","banner"],"char":"\ud83c\uddf9\ud83c\uddf7",fitzpatrick_scale:!1,category:"flags"},turkmenistan:{keywords:["flag","nation","country","banner"],"char":"\ud83c\uddf9\ud83c\uddf2",fitzpatrick_scale:!1,category:"flags"},turks_caicos_islands:{keywords:["turks","caicos","islands","flag","nation","country","banner"],"char":"\ud83c\uddf9\ud83c\udde8",fitzpatrick_scale:!1,category:"flags"},tuvalu:{keywords:["flag","nation","country","banner"],"char":"\ud83c\uddf9\ud83c\uddfb",fitzpatrick_scale:!1,category:"flags"},uganda:{keywords:["ug","flag","nation","country","banner"],"char":"\ud83c\uddfa\ud83c\uddec",fitzpatrick_scale:!1,category:"flags"},ukraine:{keywords:["ua","flag","nation","country","banner"],"char":"\ud83c\uddfa\ud83c\udde6",fitzpatrick_scale:!1,category:"flags"},united_arab_emirates:{keywords:["united","arab","emirates","flag","nation","country","banner"],"char":"\ud83c\udde6\ud83c\uddea",fitzpatrick_scale:!1,category:"flags"},uk:{keywords:["united","kingdom","great","britain","northern","ireland","flag","nation","country","banner","british","UK","english","england","union jack"],"char":"\ud83c\uddec\ud83c\udde7",fitzpatrick_scale:!1,category:"flags"},england:{keywords:["flag","english"],"char":"\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f",fitzpatrick_scale:!1,category:"flags"},scotland:{keywords:["flag","scottish"],"char":"\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc73\udb40\udc63\udb40\udc74\udb40\udc7f",fitzpatrick_scale:!1,category:"flags"},wales:{keywords:["flag","welsh"],"char":"\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc77\udb40\udc6c\udb40\udc73\udb40\udc7f",fitzpatrick_scale:!1,category:"flags"},us:{keywords:["united","states","america","flag","nation","country","banner"],"char":"\ud83c\uddfa\ud83c\uddf8",fitzpatrick_scale:!1,category:"flags"},us_virgin_islands:{keywords:["virgin","islands","us","flag","nation","country","banner"],"char":"\ud83c\uddfb\ud83c\uddee",fitzpatrick_scale:!1,category:"flags"},uruguay:{keywords:["uy","flag","nation","country","banner"],"char":"\ud83c\uddfa\ud83c\uddfe",fitzpatrick_scale:!1,category:"flags"},uzbekistan:{keywords:["uz","flag","nation","country","banner"],"char":"\ud83c\uddfa\ud83c\uddff",fitzpatrick_scale:!1,category:"flags"},vanuatu:{keywords:["vu","flag","nation","country","banner"],"char":"\ud83c\uddfb\ud83c\uddfa",fitzpatrick_scale:!1,category:"flags"},vatican_city:{keywords:["vatican","city","flag","nation","country","banner"],"char":"\ud83c\uddfb\ud83c\udde6",fitzpatrick_scale:!1,category:"flags"},venezuela:{keywords:["ve","bolivarian","republic","flag","nation","country","banner"],"char":"\ud83c\uddfb\ud83c\uddea",fitzpatrick_scale:!1,category:"flags"},vietnam:{keywords:["viet","nam","flag","nation","country","banner"],"char":"\ud83c\uddfb\ud83c\uddf3",fitzpatrick_scale:!1,category:"flags"},wallis_futuna:{keywords:["wallis","futuna","flag","nation","country","banner"],"char":"\ud83c\uddfc\ud83c\uddeb",fitzpatrick_scale:!1,category:"flags"},western_sahara:{keywords:["western","sahara","flag","nation","country","banner"],"char":"\ud83c\uddea\ud83c\udded",fitzpatrick_scale:!1,category:"flags"},yemen:{keywords:["ye","flag","nation","country","banner"],"char":"\ud83c\uddfe\ud83c\uddea",fitzpatrick_scale:!1,category:"flags"},zambia:{keywords:["zm","flag","nation","country","banner"],"char":"\ud83c\uddff\ud83c\uddf2",fitzpatrick_scale:!1,category:"flags"},zimbabwe:{keywords:["zw","flag","nation","country","banner"],"char":"\ud83c\uddff\ud83c\uddfc",fitzpatrick_scale:!1,category:"flags"}});
\ No newline at end of file
diff --git a/admin/js/vendors/tinymce/js/tinymce/plugins/emoticons/plugin.min.js b/admin/js/vendors/tinymce/js/tinymce/plugins/emoticons/plugin.min.js
new file mode 100644 (file)
index 0000000..20630dc
--- /dev/null
@@ -0,0 +1,9 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ *
+ * Version: 5.1.5 (2019-12-19)
+ */
+!function(l){"use strict";function n(){}function i(n){return function(){return n}}function t(){return a}var e,r=tinymce.util.Tools.resolve("tinymce.PluginManager"),c=i(!1),u=i(!0),a=(e={fold:function(n,t){return n()},is:c,isSome:c,isNone:u,getOr:f,getOrThunk:s,getOrDie:function(n){throw new Error(n||"error: getOrDie called on none.")},getOrNull:i(null),getOrUndefined:i(undefined),or:f,orThunk:s,map:t,each:n,bind:t,exists:c,forall:u,filter:t,equals:o,equals_:o,toArray:function(){return[]},toString:i("none()")},Object.freeze&&Object.freeze(e),e);function o(n){return n.isNone()}function s(n){return n()}function f(n){return n}function m(n,t){return-1!==n.indexOf(t)}function g(n,t){return m(n.title.toLowerCase(),t)||function(n,t){for(var e=0,r=n.length;e<r;e++){if(t(n[e],e))return!0}return!1}(n.keywords,function(n){return m(n.toLowerCase(),t)})}function d(n,t,e){for(var r=[],o=t.toLowerCase(),i=e.fold(function(){return c},function(t){return function(n){return t<=n}}),u=0;u<n.length&&(0!==t.length&&!g(n[u],o)||(r.push({value:n[u]["char"],text:n[u].title,icon:n[u]["char"]}),!i(r.length)));u++);return r}function y(n,t){for(var e=P(n),r=0,o=e.length;r<o;r++){var i=e[r];t(n[i],i)}}function p(n,t){return function(n,t){return D.call(n,t)}(n,t)?n[t]:t}function v(n){return function(n,e){return S(n,function(n,t){return{k:t,v:e(n,t)}})}(q(n),function(n){return _({keywords:[],category:"user"},n)})}function h(e,o,n){var r=k(A.none()),u=k(A.none());e.on("init",function(){x.load(n,o).then(function(n){var t=v(e);!function(n){var o={},i=[];y(n,function(n,t){var e={title:t,keywords:n.keywords,"char":n["char"],category:p(I,n.category)},r=o[e.category]!==undefined?o[e.category]:[];o[e.category]=r.concat([e]),i.push(e)}),r.set(A.some(o)),u.set(A.some(i))}(_(n,t))},function(n){l.console.log("Failed to load emoticons: "+n),r.set(A.some({})),u.set(A.some([]))})});var i=function(){return u.get().getOr([])},c=function(){return r.get().isSome()&&u.get().isSome()};return{listCategories:function(){return[z].concat(P(r.get().getOr({})))},hasLoaded:c,waitForLoad:function(){return c()?N.resolve(!0):new N(function(n,t){var e=15,r=L.setInterval(function(){c()?(L.clearInterval(r),n(!0)):--e<0&&(l.console.log("Could not load emojis from url: "+o),L.clearInterval(r),t(!1))},100)})},listAll:i,listCategory:function(t){return t===z?i():r.get().bind(function(n){return A.from(n[t])}).getOr([])}}}var b,w,O=function(e){function n(){return o}function t(n){return n(e)}var r=i(e),o={fold:function(n,t){return t(e)},is:function(n){return e===n},isSome:u,isNone:c,getOr:r,getOrThunk:r,getOrDie:r,getOrNull:r,getOrUndefined:r,or:n,orThunk:n,map:function(n){return O(n(e))},each:function(n){n(e)},bind:t,exists:t,forall:t,filter:function(n){return n(e)?o:a},toArray:function(){return[e]},toString:function(){return"some("+e+")"},equals:function(n){return n.is(e)},equals_:function(n,t){return n.fold(c,function(n){return t(e,n)})}};return o},A={some:O,none:t,from:function(n){return null===n||n===undefined?a:O(n)}},j=(b="function",function(n){return function(n){if(null===n)return"null";var t=typeof n;return"object"==t&&(Array.prototype.isPrototypeOf(n)||n.constructor&&"Array"===n.constructor.name)?"array":"object"==t&&(String.prototype.isPrototypeOf(n)||n.constructor&&"String"===n.constructor.name)?"string":t}(n)===b}),C=Array.prototype.slice,k=(j(Array.from)&&Array.from,function(n){function t(){return e}var e=n;return{get:t,set:function(n){e=n},clone:function(){return k(t())}}}),T=Object.prototype.hasOwnProperty,_=(w=function(n,t){return t},function(){for(var n=new Array(arguments.length),t=0;t<n.length;t++)n[t]=arguments[t];if(0===n.length)throw new Error("Can't merge zero objects");for(var e={},r=0;r<n.length;r++){var o=n[r];for(var i in o)T.call(o,i)&&(e[i]=w(e[i],o[i]))}return e}),P=Object.keys,D=Object.hasOwnProperty,S=function(n,r){var o={};return y(n,function(n,t){var e=r(n,t);o[e.k]=e.v}),o},x=tinymce.util.Tools.resolve("tinymce.Resource"),L=tinymce.util.Tools.resolve("tinymce.util.Delay"),N=tinymce.util.Tools.resolve("tinymce.util.Promise"),E=function(n,t){return n.getParam("emoticons_database_url",t+"/js/emojis"+n.suffix+".js")},F=function(n){return n.getParam("emoticons_database_id","tinymce.plugins.emoticons","string")},q=function(n){return n.getParam("emoticons_append",{},"object")},z="All",I={symbols:"Symbols",people:"People",animals_and_nature:"Animals and Nature",food_and_drink:"Food and Drink",activity:"Activity",travel_and_places:"Travel and Places",objects:"Objects",flags:"Flags",user:"User Defined"},M="pattern",U=function(e,i){function n(){return{title:"Emoticons",size:"normal",body:{type:"tabpanel",tabs:function(n,t){for(var e=n.length,r=new Array(e),o=0;o<e;o++){var i=n[o];r[o]=t(i,o)}return r}(i.listCategories(),function(n){return{title:n,name:n,items:[o,c]}})},initialData:t,onTabChange:function(n,t){u.set(t.newTabName),r.throttle(n)},onChange:r.throttle,onAction:function(n,t){"results"===t.name&&(function(n,t){n.insertContent(t)}(e,t.value),n.close())},buttons:[{type:"cancel",text:"Close",primary:!0}]}}var t={pattern:"",results:d(i.listAll(),"",A.some(300))},u=k(z),r=function(e,r){var o=null;return{cancel:function(){null!==o&&(l.clearTimeout(o),o=null)},throttle:function(){for(var n=[],t=0;t<arguments.length;t++)n[t]=arguments[t];null!==o&&l.clearTimeout(o),o=l.setTimeout(function(){e.apply(null,n),o=null},r)}}}(function(n){!function(n){var t=n.getData(),e=u.get(),r=i.listCategory(e),o=d(r,t[M],e===z?A.some(300):A.none());n.setData({results:o})}(n)},200),o={label:"Search",type:"input",name:M},c={type:"collection",name:"results"},a=e.windowManager.open(n());a.focus(M),i.hasLoaded()||(a.block("Loading emoticons..."),i.waitForLoad().then(function(){a.redial(n()),r.throttle(a),a.focus(M),a.unblock()})["catch"](function(n){a.redial({title:"Emoticons",body:{type:"panel",items:[{type:"alertbanner",level:"error",icon:"warning",text:"<p>Could not load emoticons</p>"}]},buttons:[{type:"cancel",text:"Close",primary:!0}],initialData:{pattern:"",results:[]}}),a.focus(M),a.unblock()}))},R=function(n,t){function e(){return U(n,t)}n.ui.registry.addButton("emoticons",{tooltip:"Emoticons",icon:"emoji",onAction:e}),n.ui.registry.addMenuItem("emoticons",{text:"Emoticons...",icon:"emoji",onAction:e})};!function B(){r.add("emoticons",function(n,t){var e=E(n,t),r=F(n),o=h(n,e,r);R(n,o),function(r,o){r.ui.registry.addAutocompleter("emoticons",{ch:":",columns:"auto",minChars:2,fetch:function(t,e){return o.waitForLoad().then(function(){var n=o.listAll();return d(n,t,A.some(e))})},onAction:function(n,t,e){r.selection.setRng(t),r.insertContent(e),n.hide()}})}(n,o)})}()}(window);
\ No newline at end of file
diff --git a/admin/js/vendors/tinymce/js/tinymce/plugins/fullpage/plugin.min.js b/admin/js/vendors/tinymce/js/tinymce/plugins/fullpage/plugin.min.js
new file mode 100644 (file)
index 0000000..2e5e160
--- /dev/null
@@ -0,0 +1,9 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ *
+ * Version: 5.1.5 (2019-12-19)
+ */
+!function(m){"use strict";function f(t){return e({validate:!1,root_name:"#document"}).parse(t)}function g(t){return t.replace(/<\/?[A-Z]+/g,function(t){return t.toLowerCase()})}var o,i=function(t){function e(){return n}var n=t;return{get:e,set:function(t){n=t},clone:function(){return i(e())}}},t=tinymce.util.Tools.resolve("tinymce.PluginManager"),p=tinymce.util.Tools.resolve("tinymce.util.Tools"),e=tinymce.util.Tools.resolve("tinymce.html.DomParser"),h=tinymce.util.Tools.resolve("tinymce.html.Node"),y=tinymce.util.Tools.resolve("tinymce.html.Serializer"),v=function(t){return t.getParam("fullpage_hide_in_source_view")},r=function(t){return t.getParam("fullpage_default_xml_pi")},a=function(t){return t.getParam("fullpage_default_encoding")},c=function(t){return t.getParam("fullpage_default_font_family")},u=function(t){return t.getParam("fullpage_default_font_size")},s=function(t){return t.getParam("fullpage_default_text_color")},d=function(t){return t.getParam("fullpage_default_title")},_=function(t){return t.getParam("fullpage_default_doctype","<!DOCTYPE html>")},b=f,n=function(t,e){var n,i,l=f(e),r={};function o(t,e){return t.attr(e)||""}return r.fontface=c(t),r.fontsize=u(t),7===(n=l.firstChild).type&&(r.xml_pi=!0,(i=/encoding="([^"]+)"/.exec(n.value))&&(r.docencoding=i[1])),(n=l.getAll("#doctype")[0])&&(r.doctype="<!DOCTYPE"+n.value+">"),(n=l.getAll("title")[0])&&n.firstChild&&(r.title=n.firstChild.value),p.each(l.getAll("meta"),function(t){var e,n=t.attr("name"),i=t.attr("http-equiv");n?r[n.toLowerCase()]=t.attr("content"):"Content-Type"===i&&(e=/charset\s*=\s*(.*)\s*/gi.exec(t.attr("content")))&&(r.docencoding=e[1])}),(n=l.getAll("html")[0])&&(r.langcode=o(n,"lang")||o(n,"xml:lang")),r.stylesheets=[],p.each(l.getAll("link"),function(t){"stylesheet"===t.attr("rel")&&r.stylesheets.push(t.attr("href"))}),(n=l.getAll("body")[0])&&(r.langdir=o(n,"dir"),r.style=o(n,"style"),r.visited_color=o(n,"vlink"),r.link_color=o(n,"link"),r.active_color=o(n,"alink")),r},x=function(t,r,e){var o,n,i,a,l,c=t.dom;function u(t,e,n){t.attr(e,n||undefined)}function s(t){n.firstChild?n.insert(t,n.firstChild):n.append(t)}o=f(e),(n=o.getAll("head")[0])||(a=o.getAll("html")[0],n=new h("head",1),a.firstChild?a.insert(n,a.firstChild,!0):a.append(n)),a=o.firstChild,r.xml_pi?(l='version="1.0"',r.docencoding&&(l+=' encoding="'+r.docencoding+'"'),7!==a.type&&(a=new h("xml",7),o.insert(a,o.firstChild,!0)),a.value=l):a&&7===a.type&&a.remove(),a=o.getAll("#doctype")[0],r.doctype?(a||(a=new h("#doctype",10),r.xml_pi?o.insert(a,o.firstChild):s(a)),a.value=r.doctype.substring(9,r.doctype.length-1)):a&&a.remove(),a=null,p.each(o.getAll("meta"),function(t){"Content-Type"===t.attr("http-equiv")&&(a=t)}),r.docencoding?(a||((a=new h("meta",1)).attr("http-equiv","Content-Type"),a.shortEnded=!0,s(a)),a.attr("content","text/html; charset="+r.docencoding)):a&&a.remove(),a=o.getAll("title")[0],r.title?(a?a.empty():s(a=new h("title",1)),a.append(new h("#text",3)).value=r.title):a&&a.remove(),p.each("keywords,description,author,copyright,robots".split(","),function(t){var e,n,i=o.getAll("meta"),l=r[t];for(e=0;e<i.length;e++)if((n=i[e]).attr("name")===t)return void(l?n.attr("content",l):n.remove());l&&((a=new h("meta",1)).attr("name",t),a.attr("content",l),a.shortEnded=!0,s(a))});var d={};return p.each(o.getAll("link"),function(t){"stylesheet"===t.attr("rel")&&(d[t.attr("href")]=t)}),p.each(r.stylesheets,function(t){d[t]||((a=new h("link",1)).attr({rel:"stylesheet",text:"text/css",href:t}),a.shortEnded=!0,s(a)),delete d[t]}),p.each(d,function(t){t.remove()}),(a=o.getAll("body")[0])&&(u(a,"dir",r.langdir),u(a,"style",r.style),u(a,"vlink",r.visited_color),u(a,"link",r.link_color),u(a,"alink",r.active_color),c.setAttribs(t.getBody(),{style:r.style,dir:r.dir,vLink:r.visited_color,link:r.link_color,aLink:r.active_color})),(a=o.getAll("html")[0])&&(u(a,"lang",r.langcode),u(a,"xml:lang",r.langcode)),n.firstChild||n.remove(),(i=y({validate:!1,indent:!0,indent_before:"head,html,body,meta,title,script,link,style",indent_after:"head,html,body,meta,title,script,link,style"}).serialize(o)).substring(0,i.indexOf("</body>"))},C=Object.prototype.hasOwnProperty,k=(o=function(t,e){return e},function(){for(var t=new Array(arguments.length),e=0;e<t.length;e++)t[e]=arguments[e];if(0===t.length)throw new Error("Can't merge zero objects");for(var n={},i=0;i<t.length;i++){var l=t[i];for(var r in l)C.call(l,r)&&(n[r]=o(n[r],l[r]))}return n}),l=function(i,l){var r=n(i,l.get()),t=k({title:"",keywords:"",description:"",robots:"",author:"",docencoding:""},r);i.windowManager.open({title:"Metadata and Document Properties",size:"normal",body:{type:"panel",items:[{name:"title",type:"input",label:"Title"},{name:"keywords",type:"input",label:"Keywords"},{name:"description",type:"input",label:"Description"},{name:"robots",type:"input",label:"Robots"},{name:"author",type:"input",label:"Author"},{name:"docencoding",type:"input",label:"Encoding"}]},buttons:[{type:"cancel",name:"cancel",text:"Cancel"},{type:"submit",name:"save",text:"Save",primary:!0}],initialData:t,onSubmit:function(t){var e=t.getData(),n=x(i,p.extend(r,e),l.get());l.set(n),t.close()}})},w=function(t,e){t.addCommand("mceFullPageProperties",function(){l(t,e)})},A=function(t,e){return p.each(t,function(t){e=e.replace(t,function(t){return"\x3c!--mce:protected "+escape(t)+"--\x3e"})}),e},P=function(t){return t.replace(/<!--mce:protected ([\s\S]*?)-->/g,function(t,e){return unescape(e)})},T=p.each,O=function(t){var e,n="",i="";if(r(t)){var l=a(t);n+='<?xml version="1.0" encoding="'+(l||"ISO-8859-1")+'" ?>\n'}return n+=_(t),n+="\n<html>\n<head>\n",(e=d(t))&&(n+="<title>"+e+"</title>\n"),(e=a(t))&&(n+='<meta http-equiv="Content-Type" content="text/html; charset='+e+'" />\n'),(e=c(t))&&(i+="font-family: "+e+";"),(e=u(t))&&(i+="font-size: "+e+";"),(e=s(t))&&(i+="color: "+e+";"),n+="</head>\n<body"+(i?' style="'+i+'"':"")+">\n"},D=function(e,n,i){e.on("BeforeSetContent",function(t){!function(t,e,n,i){var l,r,o,a,c="",u=t.dom;if(!(i.selection||(o=A(t.settings.protect,i.content),"raw"===i.format&&e.get()||i.source_view&&v(t)))){0!==o.length||i.source_view||(o=p.trim(e.get())+"\n"+p.trim(o)+"\n"+p.trim(n.get())),-1!==(l=(o=o.replace(/<(\/?)BODY/gi,"<$1body")).indexOf("<body"))?(l=o.indexOf(">",l),e.set(g(o.substring(0,l+1))),-1===(r=o.indexOf("</body",l))&&(r=o.length),i.content=p.trim(o.substring(l+1,r)),n.set(g(o.substring(r)))):(e.set(O(t)),n.set("\n</body>\n</html>")),a=b(e.get()),T(a.getAll("style"),function(t){t.firstChild&&(c+=t.firstChild.value)});var s=a.getAll("body")[0];s&&u.setAttribs(t.getBody(),{style:s.attr("style")||"",dir:s.attr("dir")||"",vLink:s.attr("vlink")||"",link:s.attr("link")||"",aLink:s.attr("alink")||""}),u.remove("fullpage_styles");var d=t.getDoc().getElementsByTagName("head")[0];if(c)u.add(d,"style",{id:"fullpage_styles"}).appendChild(m.document.createTextNode(c));var f={};p.each(d.getElementsByTagName("link"),function(t){"stylesheet"===t.rel&&t.getAttribute("data-mce-fullpage")&&(f[t.href]=t)}),p.each(a.getAll("link"),function(t){var e=t.attr("href");if(!e)return!0;f[e]||"stylesheet"!==t.attr("rel")||u.add(d,"link",{rel:"stylesheet",text:"text/css",href:e,"data-mce-fullpage":"1"}),delete f[e]}),p.each(f,function(t){t.parentNode.removeChild(t)})}}(e,n,i,t)}),e.on("GetContent",function(t){!function(t,e,n,i){i.selection||i.source_view&&v(t)||(i.content=P(p.trim(e)+"\n"+p.trim(i.content)+"\n"+p.trim(n)))}(e,n.get(),i.get(),t)})},E=function(t){t.ui.registry.addButton("fullpage",{tooltip:"Metadata and document properties",icon:"document-properties",onAction:function(){t.execCommand("mceFullPageProperties")}}),t.ui.registry.addMenuItem("fullpage",{text:"Metadata and document properties",icon:"document-properties",onAction:function(){t.execCommand("mceFullPageProperties")}})};!function z(){t.add("fullpage",function(t){var e=i(""),n=i("");w(t,e),E(t),D(t,e,n)})}()}(window);
\ No newline at end of file
diff --git a/admin/js/vendors/tinymce/js/tinymce/plugins/fullscreen/plugin.min.js b/admin/js/vendors/tinymce/js/tinymce/plugins/fullscreen/plugin.min.js
new file mode 100644 (file)
index 0000000..c03217e
--- /dev/null
@@ -0,0 +1,9 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ *
+ * Version: 5.1.5 (2019-12-19)
+ */
+!function(l){"use strict";function e(){}function m(e){return function(){return e}}function n(){return s}var r,t=function(e){function n(){return r}var r=e;return{get:n,set:function(e){r=e},clone:function(){return t(n())}}},o=tinymce.util.Tools.resolve("tinymce.PluginManager"),i=function(e){return{isFullscreen:function(){return null!==e.get()}}},c=m(!1),u=m(!0),s=(r={fold:function(e,n){return e()},is:c,isSome:c,isNone:u,getOr:d,getOrThunk:a,getOrDie:function(e){throw new Error(e||"error: getOrDie called on none.")},getOrNull:m(null),getOrUndefined:m(undefined),or:d,orThunk:a,map:n,each:e,bind:n,exists:c,forall:u,filter:n,equals:f,equals_:f,toArray:function(){return[]},toString:m("none()")},Object.freeze&&Object.freeze(r),r);function f(e){return e.isNone()}function a(e){return e()}function d(e){return e}function h(n){return function(e){return function(e){if(null===e)return"null";var n=typeof e;return"object"==n&&(Array.prototype.isPrototypeOf(e)||e.constructor&&"Array"===e.constructor.name)?"array":"object"==n&&(String.prototype.isPrototypeOf(e)||e.constructor&&"String"===e.constructor.name)?"string":n}(e)===n}}function v(e,n){for(var r=e.length,t=new Array(r),o=0;o<r;o++){var i=e[o];t[o]=n(i,o)}return t}function g(e,n){for(var r=0,t=e.length;r<t;r++){n(e[r],r)}}function p(e,n){for(var r=[],t=0,o=e.length;t<o;t++){var i=e[t];n(i,t)&&r.push(i)}return r}function w(e,n){return function(e){for(var n=[],r=0,t=e.length;r<t;++r){if(!Y(e[r]))throw new Error("Arr.flatten item "+r+" was not an array, input: "+e);Q.apply(n,e[r])}return n}(v(e,n))}function y(e,n){return-1!==e.indexOf(n)}function S(e){return e.style!==undefined&&$(e.style.getPropertyValue)}function E(e,n,r){!function(e,n,r){if(!(X(r)||G(r)||K(r)))throw l.console.error("Invalid call to Attr.set. Key ",n,":: Value ",r,":: Element ",e),new Error("Attribute value was not simple");e.setAttribute(n,r+"")}(e.dom(),n,r)}function O(e,n){var r=e.dom().getAttribute(n);return null===r?undefined:r}function N(e,n){e.dom().removeAttribute(n)}function T(e,n){var r=e.dom();!function(e,n){for(var r=Z(e),t=0,o=r.length;t<o;t++){var i=r[t];n(e[i],i)}}(n,function(e,n){!function(e,n,r){if(!X(r))throw l.console.error("Invalid call to CSS.set. Property ",n,":: Value ",r,":: Element ",e),new Error("CSS value must be a string: "+r);S(e)&&e.style.setProperty(n,r)}(r,n,e)})}function x(e,n){var r=e.dom(),t=l.window.getComputedStyle(r).getPropertyValue(n),o=""!==t||function(e){var n=ie(e)?e.dom().parentNode:e.dom();return n!==undefined&&null!==n&&n.ownerDocument.body.contains(n)}(e)?t:ue(r,n);return null===o?undefined:o}function b(e,n){var r=function(e,n){for(var r=0;r<e.length;r++){var t=e[r];if(t.test(n))return t}return undefined}(e,n);if(!r)return{major:0,minor:0};function t(e){return Number(n.replace(r,"$"+e))}return se(t(1),t(2))}function C(e,n){return function(){return n===e}}function D(e,n){return function(){return n===e}}function A(e,n){var r=String(n).toLowerCase();return function(e,n){for(var r=0,t=e.length;r<t;r++){var o=e[r];if(n(o,r))return z.some(o)}return z.none()}(e,function(e){return e.search(r)})}function M(n){return function(e){return y(e,n)}}function _(){return xe.get()}function k(e,n,r){return 0!=(e.compareDocumentPosition(n)&r)}function F(e,n){var r=e.dom();if(r.nodeType!==Ce)return!1;var t=r;if(t.matches!==undefined)return t.matches(n);if(t.msMatchesSelector!==undefined)return t.msMatchesSelector(n);if(t.webkitMatchesSelector!==undefined)return t.webkitMatchesSelector(n);if(t.mozMatchesSelector!==undefined)return t.mozMatchesSelector(n);throw new Error("Browser lacks native selectors")}function R(e,n){var r=n===undefined?l.document:n.dom();return function(e){return e.nodeType!==Ce&&e.nodeType!==De||0===e.childElementCount}(r)?[]:v(r.querySelectorAll(e),ne.fromDom)}function L(n){return function(e){return z.from(e.dom().parentNode).map(ne.fromDom)}(n).map(Ae).map(function(e){return p(e,function(e){return!function(e,n){return e.dom()===n.dom()}(n,e)})}).getOr([])}function I(e,n,r,t){return{x:m(e),y:m(n),width:m(r),height:m(t),right:m(e+r),bottom:m(n+t)}}function P(e){var n=e===undefined?l.window:e,r=n.document,t=function(e){var n=e!==undefined?e.dom():l.document,r=n.body.scrollLeft||n.documentElement.scrollLeft,t=n.body.scrollTop||n.documentElement.scrollTop;return _e(r,t)}(ne.fromDom(r)),o=n.visualViewport;if(o!==undefined)return I(Math.max(o.pageLeft,t.left()),Math.max(o.pageTop,t.top()),o.width,o.height);var i=r.documentElement,u=i.clientWidth,c=i.clientHeight;return I(t.left(),t.top(),u,c)}function H(e,n,r){return p(function(e,n){for(var r=$(n)?n:c,t=e.dom(),o=[];null!==t.parentNode&&t.parentNode!==undefined;){var i=t.parentNode,u=ne.fromDom(i);if(o.push(u),!0===r(u))break;t=i}return o}(e,r),n)}function U(e,n){return function(e,n){return p(L(e),n)}(e,function(e){return F(e,n)})}function W(r,t){return function(n){n.setActive(null!==t.get());function e(e){return n.setActive(e.state)}return r.on("FullscreenStateChanged",e),function(){return r.off("FullscreenStateChanged",e)}}}var B,V,j,q=function(r){function e(){return o}function n(e){return e(r)}var t=m(r),o={fold:function(e,n){return n(r)},is:function(e){return r===e},isSome:u,isNone:c,getOr:t,getOrThunk:t,getOrDie:t,getOrNull:t,getOrUndefined:t,or:e,orThunk:e,map:function(e){return q(e(r))},each:function(e){e(r)},bind:n,exists:n,forall:n,filter:function(e){return e(r)?o:s},toArray:function(){return[r]},toString:function(){return"some("+r+")"},equals:function(e){return e.is(r)},equals_:function(e,n){return e.fold(c,function(e){return n(r,e)})}};return o},z={some:q,none:n,from:function(e){return null===e||e===undefined?s:q(e)}},X=h("string"),Y=h("array"),G=h("boolean"),$=h("function"),K=h("number"),J=Array.prototype.slice,Q=Array.prototype.push,Z=($(Array.from)&&Array.from,Object.keys),ee=function(e){if(null===e||e===undefined)throw new Error("Node cannot be null or undefined");return{dom:m(e)}},ne={fromHtml:function(e,n){var r=(n||l.document).createElement("div");if(r.innerHTML=e,!r.hasChildNodes()||1<r.childNodes.length)throw l.console.error("HTML does not have a single root node",e),new Error("HTML must have a single root node");return ee(r.childNodes[0])},fromTag:function(e,n){var r=(n||l.document).createElement(e);return ee(r)},fromText:function(e,n){var r=(n||l.document).createTextNode(e);return ee(r)},fromDom:ee,fromPoint:function(e,n,r){var t=e.dom();return z.from(t.elementFromPoint(n,r)).map(ee)}},re=(l.Node.ATTRIBUTE_NODE,l.Node.CDATA_SECTION_NODE,l.Node.COMMENT_NODE,l.Node.DOCUMENT_NODE),te=(l.Node.DOCUMENT_TYPE_NODE,l.Node.DOCUMENT_FRAGMENT_NODE,l.Node.ELEMENT_NODE),oe=l.Node.TEXT_NODE,ie=(l.Node.PROCESSING_INSTRUCTION_NODE,l.Node.ENTITY_REFERENCE_NODE,l.Node.ENTITY_NODE,l.Node.NOTATION_NODE,"undefined"!=typeof l.window?l.window:Function("return this;")(),B=oe,function(e){return function(e){return e.dom().nodeType}(e)===B}),ue=function(e,n){return S(e)?e.style.getPropertyValue(n):""},ce=function(){return se(0,0)},se=function(e,n){return{major:e,minor:n}},fe={nu:se,detect:function(e,n){var r=String(n).toLowerCase();return 0===e.length?ce():b(e,r)},unknown:ce},ae="Firefox",de=function(e){var n=e.current;return{current:n,version:e.version,isEdge:C("Edge",n),isChrome:C("Chrome",n),isIE:C("IE",n),isOpera:C("Opera",n),isFirefox:C(ae,n),isSafari:C("Safari",n)}},le={unknown:function(){return de({current:undefined,version:fe.unknown()})},nu:de,edge:m("Edge"),chrome:m("Chrome"),ie:m("IE"),opera:m("Opera"),firefox:m(ae),safari:m("Safari")},me="Windows",he="Android",ve="Solaris",ge="FreeBSD",pe=function(e){var n=e.current;return{current:n,version:e.version,isWindows:D(me,n),isiOS:D("iOS",n),isAndroid:D(he,n),isOSX:D("OSX",n),isLinux:D("Linux",n),isSolaris:D(ve,n),isFreeBSD:D(ge,n)}},we={unknown:function(){return pe({current:undefined,version:fe.unknown()})},nu:pe,windows:m(me),ios:m("iOS"),android:m(he),linux:m("Linux"),osx:m("OSX"),solaris:m(ve),freebsd:m(ge)},ye=function(e,r){return A(e,r).map(function(e){var n=fe.detect(e.versionRegexes,r);return{current:e.name,version:n}})},Se=function(e,r){return A(e,r).map(function(e){var n=fe.detect(e.versionRegexes,r);return{current:e.name,version:n}})},Ee=/.*?version\/\ ?([0-9]+)\.([0-9]+).*/,Oe=[{name:"Edge",versionRegexes:[/.*?edge\/ ?([0-9]+)\.([0-9]+)$/],search:function(e){return y(e,"edge/")&&y(e,"chrome")&&y(e,"safari")&&y(e,"applewebkit")}},{name:"Chrome",versionRegexes:[/.*?chrome\/([0-9]+)\.([0-9]+).*/,Ee],search:function(e){return y(e,"chrome")&&!y(e,"chromeframe")}},{name:"IE",versionRegexes:[/.*?msie\ ?([0-9]+)\.([0-9]+).*/,/.*?rv:([0-9]+)\.([0-9]+).*/],search:function(e){return y(e,"msie")||y(e,"trident")}},{name:"Opera",versionRegexes:[Ee,/.*?opera\/([0-9]+)\.([0-9]+).*/],search:M("opera")},{name:"Firefox",versionRegexes:[/.*?firefox\/\ ?([0-9]+)\.([0-9]+).*/],search:M("firefox")},{name:"Safari",versionRegexes:[Ee,/.*?cpu os ([0-9]+)_([0-9]+).*/],search:function(e){return(y(e,"safari")||y(e,"mobile/"))&&y(e,"applewebkit")}}],Ne=[{name:"Windows",search:M("win"),versionRegexes:[/.*?windows\ nt\ ?([0-9]+)\.([0-9]+).*/]},{name:"iOS",search:function(e){return y(e,"iphone")||y(e,"ipad")},versionRegexes:[/.*?version\/\ ?([0-9]+)\.([0-9]+).*/,/.*cpu os ([0-9]+)_([0-9]+).*/,/.*cpu iphone os ([0-9]+)_([0-9]+).*/]},{name:"Android",search:M("android"),versionRegexes:[/.*?android\ ?([0-9]+)\.([0-9]+).*/]},{name:"OSX",search:M("os x"),versionRegexes:[/.*?os\ x\ ?([0-9]+)_([0-9]+).*/]},{name:"Linux",search:M("linux"),versionRegexes:[]},{name:"Solaris",search:M("sunos"),versionRegexes:[]},{name:"FreeBSD",search:M("freebsd"),versionRegexes:[]}],Te={browsers:m(Oe),oses:m(Ne)},xe=t(function(e,n){var r=Te.browsers(),t=Te.oses(),o=ye(r,e).fold(le.unknown,le.nu),i=Se(t,e).fold(we.unknown,we.nu);return{browser:o,os:i,deviceType:function(e,n,r,t){var o=e.isiOS()&&!0===/ipad/i.test(r),i=e.isiOS()&&!o,u=e.isiOS()||e.isAndroid(),c=u||t("(pointer:coarse)"),s=o||!i&&u&&t("(min-device-width:768px)"),f=i||u&&!s,a=n.isSafari()&&e.isiOS()&&!1===/safari/i.test(r),d=!f&&!s&&!a;return{isiPad:m(o),isiPhone:m(i),isTablet:m(s),isPhone:m(f),isTouch:m(c),isAndroid:e.isAndroid,isiOS:e.isiOS,isWebView:m(a),isDesktop:m(d)}}(i,o,e,n)}}(l.navigator.userAgent,function(e){return l.window.matchMedia(e).matches})),be=function(e,n){return k(e,n,l.Node.DOCUMENT_POSITION_CONTAINED_BY)},Ce=te,De=re,Ae=(_().browser.isIE(),function(e){return v(e.dom().childNodes,ne.fromDom)}),Me=(function(){for(var e=[],n=0;n<arguments.length;n++)e[n]=arguments[n]}("element","offset"),function(r,t){return{left:m(r),top:m(t),translate:function(e,n){return Me(r+e,t+n)}}}),_e=Me,ke=(_().browser.isSafari(),function(e,n){e.fire("FullscreenStateChanged",{state:n})}),Fe=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),Re=tinymce.util.Tools.resolve("tinymce.Env"),Le=tinymce.util.Tools.resolve("tinymce.util.Delay"),Ie="data-ephox-mobile-fullscreen-style",Pe="position:absolute!important;",He="top:0!important;left:0!important;margin:0!important;padding:0!important;width:100%!important;height:100%!important;overflow:visible!important;",Ue=Re.os.isAndroid(),We=function(e,n){function r(t){return function(e){var n=O(e,"style"),r=n===undefined?"no-styles":n.trim();r!==t&&(E(e,Ie,r),E(e,"style",t))}}var t=function(e,n,r){return H(e,function(e){return F(e,n)},r)}(e,"*"),o=w(t,function(e){return U(e,"*:not(.tox-silver-sink)")}),i=function(e){var n=x(e,"background-color");return n!==undefined&&""!==n?"background-color:"+n+"!important":"background-color:rgb(255,255,255)!important;"}(n);g(o,r("display:none!important;")),g(t,r(Pe+He+i)),r((!0===Ue?"":Pe)+He+i)(e)},Be=function(){var e=function(e){return R(e)}("["+Ie+"]");g(e,function(e){var n=O(e,Ie);"no-styles"!==n?E(e,"style",n):N(e,"style"),N(e,Ie)})},Ve=Fe.DOM,je=l.window.visualViewport,qe=je===undefined?{bind:e,unbind:e}:(V=function(){var n=t(z.none());return{clear:function(){n.set(z.none())},set:function(e){n.set(z.some(e))},isSet:function(){return n.get().isSome()},on:function(e){n.get().each(e)}}}(),j=Le.throttle(function(){l.document.body.scrollTop=0,l.document.documentElement.scrollTop=0,l.window.requestAnimationFrame(function(){V.on(function(e){return T(e,{top:je.offsetTop+"px",left:je.offsetLeft+"px",height:je.height+"px",width:je.width+"px"})})})},50),{bind:function(e){V.set(e),j(),je.addEventListener("resize",j),je.addEventListener("scroll",j)},unbind:function(){V.on(function(){je.removeEventListener("scroll",j),je.removeEventListener("resize",j)}),V.clear()}}),ze=function(e,n){var r,t,o,i=l.document.body,u=l.document.documentElement;t=e.getContainer();var c=ne.fromDom(t),s=n.get(),f=ne.fromDom(e.getBody()),a=Re.deviceType.isTouch();if(r=t.style,o=e.getContentAreaContainer().firstChild.style,s)o.width=s.iframeWidth,o.height=s.iframeHeight,r.width=s.containerWidth,r.height=s.containerHeight,r.top=s.containerTop,r.left=s.containerLeft,a&&Be(),Ve.removeClass(i,"tox-fullscreen"),Ve.removeClass(u,"tox-fullscreen"),Ve.removeClass(t,"tox-fullscreen"),function(e){l.window.scrollTo(e.x,e.y)}(s.scrollPos),n.set(null),ke(e,!1),qe.unbind(),e.off("remove",qe.unbind);else{var d={scrollPos:function(){var e=P(l.window);return{x:e.x(),y:e.y()}}(),containerWidth:r.width,containerHeight:r.height,containerTop:r.top,containerLeft:r.left,iframeWidth:o.width,iframeHeight:o.height};a&&We(c,f),o.width=o.height="100%",r.width=r.height="",Ve.addClass(i,"tox-fullscreen"),Ve.addClass(u,"tox-fullscreen"),Ve.addClass(t,"tox-fullscreen"),qe.bind(c),e.on("remove",qe.unbind),n.set(d),ke(e,!0)}},Xe=function(e,n){e.addCommand("mceFullScreen",function(){ze(e,n)})},Ye=function(e,n){e.ui.registry.addToggleMenuItem("fullscreen",{text:"Fullscreen",shortcut:"Meta+Shift+F",onAction:function(){return e.execCommand("mceFullScreen")},onSetup:W(e,n)}),e.ui.registry.addToggleButton("fullscreen",{tooltip:"Fullscreen",icon:"fullscreen",onAction:function(){return e.execCommand("mceFullScreen")},onSetup:W(e,n)})};!function Ge(){o.add("fullscreen",function(e){var n=t(null);return e.settings.inline||(Xe(e,n),Ye(e,n),e.addShortcut("Meta+Shift+F","","mceFullScreen")),i(n)})}()}(window);
\ No newline at end of file
diff --git a/admin/js/vendors/tinymce/js/tinymce/plugins/help/plugin.min.js b/admin/js/vendors/tinymce/js/tinymce/plugins/help/plugin.min.js
new file mode 100644 (file)
index 0000000..e8db914
--- /dev/null
@@ -0,0 +1,9 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ *
+ * Version: 5.1.5 (2019-12-19)
+ */
+!function(){"use strict";function e(){}function r(e){return function(){return e}}var a=function(e){function t(){return n}var n=e;return{get:t,set:function(e){n=e},clone:function(){return a(t())}}},t=tinymce.util.Tools.resolve("tinymce.PluginManager"),i=function(e,t){e.addCommand("mceHelp",t)},s=function(e,t){e.ui.registry.addButton("help",{icon:"help",tooltip:"Help",onAction:t}),e.ui.registry.addMenuItem("help",{text:"Help",icon:"help",shortcut:"Alt+0",onAction:t})},c=function(){return(c=Object.assign||function(e){for(var t,n=1,o=arguments.length;n<o;n++)for(var a in t=arguments[n])Object.prototype.hasOwnProperty.call(t,a)&&(e[a]=t[a]);return e}).apply(this,arguments)};function l(o){for(var a=[],e=1;e<arguments.length;e++)a[e-1]=arguments[e];return function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];var n=a.concat(e);return o.apply(null,n)}}function n(){return m}var o,u=r(!1),h=r(!0),m=(o={fold:function(e,t){return e()},is:u,isSome:u,isNone:h,getOr:f,getOrThunk:d,getOrDie:function(e){throw new Error(e||"error: getOrDie called on none.")},getOrNull:r(null),getOrUndefined:r(undefined),or:f,orThunk:d,map:n,each:e,bind:n,exists:u,forall:h,filter:n,equals:p,equals_:p,toArray:function(){return[]},toString:r("none()")},Object.freeze&&Object.freeze(o),o);function p(e){return e.isNone()}function d(e){return e()}function f(e){return e}function g(e,t){return O.call(e,t)}function b(e,t){return-1<g(e,t)}function y(e,t){for(var n=e.length,o=new Array(n),a=0;a<n;a++){var r=e[a];o[a]=t(r,a)}return o}function k(e,o){return e.replace(/\$\{([^{}]*)\}/g,function(e,t){var n=o[t];return function(e){var t=typeof e;return"string"==t||"number"==t}(n)?n.toString():e})}function v(e){var t=F(e);return function(e,t){var n=g(e,t);return-1===n?x.none():x.some(n)}(t,"versions").each(function(e){t.splice(e,1),t.push("versions")}),{tabs:e,names:t}}function w(e,t){var n,o=H(),a=B(),r=D(e),i=L(),s=c(((n={})[o.name]=o,n[a.name]=a,n[r.name]=r,n[i.name]=i,n),t.get());return function(e){return x.from(e.getParam("help_tabs"))}(e).fold(function(){return v(s)},function(e){return function(e,t){var n={},o=y(e,function(e){return"string"==typeof e?(E(t,e)&&(n[e]=t[e]),e):(n[e.name]=e).name});return{tabs:n,names:o}}(e,s)})}function A(a,r){return function(){var e=w(a,r),t=e.tabs,n=e.names,o={type:"tabpanel",tabs:function(e){for(var t=[],n=function(e){t.push(e)},o=0;o<e.length;o++)e[o].each(n);return t}(y(n,function(e){return function(e,t){return E(e,t)?x.from(e[t]):x.none()}(t,e)}))};a.windowManager.open({title:"Help",size:"medium",body:o,buttons:[{type:"cancel",name:"close",text:"Close",primary:!0}],initialData:{}})}}var C,T=function(n){function e(){return a}function t(e){return e(n)}var o=r(n),a={fold:function(e,t){return t(n)},is:function(e){return n===e},isSome:h,isNone:u,getOr:o,getOrThunk:o,getOrDie:o,getOrNull:o,getOrUndefined:o,or:e,orThunk:e,map:function(e){return T(e(n))},each:function(e){e(n)},bind:t,exists:t,forall:t,filter:function(e){return e(n)?a:m},toArray:function(){return[n]},toString:function(){return"some("+n+")"},equals:function(e){return e.is(n)},equals_:function(e,t){return e.fold(u,function(e){return t(n,e)})}};return a},x={some:T,none:n,from:function(e){return null===e||e===undefined?m:T(e)}},P=(C="function",function(e){return function(e){if(null===e)return"null";var t=typeof e;return"object"==t&&(Array.prototype.isPrototypeOf(e)||e.constructor&&"Array"===e.constructor.name)?"array":"object"==t&&(String.prototype.isPrototypeOf(e)||e.constructor&&"String"===e.constructor.name)?"string":t}(e)===C}),M=Array.prototype.slice,O=Array.prototype.indexOf,F=(P(Array.from)&&Array.from,Object.keys),S=Object.hasOwnProperty,E=function(e,t){return S.call(e,t)},I=[{shortcuts:["Meta + B"],action:"Bold"},{shortcuts:["Meta + I"],action:"Italic"},{shortcuts:["Meta + U"],action:"Underline"},{shortcuts:["Meta + A"],action:"Select all"},{shortcuts:["Meta + Y","Meta + Shift + Z"],action:"Redo"},{shortcuts:["Meta + Z"],action:"Undo"},{shortcuts:["Access + 1"],action:"Header 1"},{shortcuts:["Access + 2"],action:"Header 2"},{shortcuts:["Access + 3"],action:"Header 3"},{shortcuts:["Access + 4"],action:"Header 4"},{shortcuts:["Access + 5"],action:"Header 5"},{shortcuts:["Access + 6"],action:"Header 6"},{shortcuts:["Access + 7"],action:"Paragraph"},{shortcuts:["Access + 8"],action:"Div"},{shortcuts:["Access + 9"],action:"Address"},{shortcuts:["Alt + 0"],action:"Open help dialog"},{shortcuts:["Alt + F9"],action:"Focus to menubar"},{shortcuts:["Alt + F10"],action:"Focus to toolbar"},{shortcuts:["Alt + F11"],action:"Focus to element path"},{shortcuts:["Ctrl + F9"],action:"Focus to contextual toolbar"},{shortcuts:["Shift + Enter"],action:"Open popup menu for split buttons"},{shortcuts:["Meta + K"],action:"Insert link (if link plugin activated)"},{shortcuts:["Meta + S"],action:"Save (if save plugin activated)"},{shortcuts:["Meta + F"],action:"Find (if searchreplace plugin activated)"},{shortcuts:["Meta + Shift + F"],action:"Switch to or from fullscreen mode"}],_=tinymce.util.Tools.resolve("tinymce.Env"),j=function(e){var n=_.mac?{alt:"&#x2325;",ctrl:"&#x2303;",shift:"&#x21E7;",meta:"&#x2318;",access:"&#x2303;&#x2325;"}:{meta:"Ctrl ",access:"Shift + Alt "},t=e.split("+"),o=y(t,function(e){var t=e.toLowerCase().trim();return E(n,t)?n[t]:e});return _.mac?o.join("").replace(/\s/,""):o.join("+")},H=function(){return{name:"shortcuts",title:"Handy Shortcuts",items:[{type:"table",header:["Action","Shortcut"],cells:y(I,function(e){var t=y(e.shortcuts,j).join(" or ");return[e.action,t]})}]}},U=tinymce.util.Tools.resolve("tinymce.util.I18n"),W=[{key:"advlist",name:"Advanced List"},{key:"anchor",name:"Anchor"},{key:"autolink",name:"Autolink"},{key:"autoresize",name:"Autoresize"},{key:"autosave",name:"Autosave"},{key:"bbcode",name:"BBCode"},{key:"charmap",name:"Character Map"},{key:"code",name:"Code"},{key:"codesample",name:"Code Sample"},{key:"colorpicker",name:"Color Picker"},{key:"directionality",name:"Directionality"},{key:"emoticons",name:"Emoticons"},{key:"fullpage",name:"Full Page"},{key:"fullscreen",name:"Full Screen"},{key:"help",name:"Help"},{key:"hr",name:"Horizontal Rule"},{key:"image",name:"Image"},{key:"imagetools",name:"Image Tools"},{key:"importcss",name:"Import CSS"},{key:"insertdatetime",name:"Insert Date/Time"},{key:"legacyoutput",name:"Legacy Output"},{key:"link",name:"Link"},{key:"lists",name:"Lists"},{key:"media",name:"Media"},{key:"nonbreaking",name:"Nonbreaking"},{key:"noneditable",name:"Noneditable"},{key:"pagebreak",name:"Page Break"},{key:"paste",name:"Paste"},{key:"preview",name:"Preview"},{key:"print",name:"Print"},{key:"save",name:"Save"},{key:"searchreplace",name:"Search and Replace"},{key:"spellchecker",name:"Spell Checker"},{key:"tabfocus",name:"Tab Focus"},{key:"table",name:"Table"},{key:"template",name:"Template"},{key:"textcolor",name:"Text Color"},{key:"textpattern",name:"Text Pattern"},{key:"toc",name:"Table of Contents"},{key:"visualblocks",name:"Visual Blocks"},{key:"visualchars",name:"Visual Characters"},{key:"wordcount",name:"Word Count"},{key:"advcode",name:"Advanced Code Editor*"},{key:"formatpainter",name:"Format Painter*"},{key:"powerpaste",name:"PowerPaste*"},{key:"tinydrive",name:"Tiny Drive*"},{key:"tinymcespellchecker",name:"Spell Checker Pro*"},{key:"a11ychecker",name:"Accessibility Checker*"},{key:"linkchecker",name:"Link Checker*"},{key:"mentions",name:"Mentions*"},{key:"mediaembed",name:"Enhanced Media Embed*"},{key:"checklist",name:"Checklist*"},{key:"casechange",name:"Case Change*"},{key:"permanentpen",name:"Permanent Pen*"},{key:"pageembed",name:"Page Embed*"},{key:"tinycomments",name:"Tiny Comments*"},{key:"advtable",name:"Advanced Tables*"},{key:"autocorrect",name:"Autocorrect*"}],D=function(e){function r(t,n){return function(e,t){for(var n=0,o=e.length;n<o;n++){var a=e[n];if(t(a,n))return x.some(a)}return x.none()}(W,function(e){return e.key===n}).fold(function(){var e=t.plugins[n].getMetadata;return"function"==typeof e?o(e()):n},function(e){return o({name:e.name,url:"https://www.tiny.cloud/docs/plugins/"+e.key})})}var t,n,o=l(k,'<a href="${url}" target="_blank" rel="noopener">${name}</a>');return{name:"plugins",title:"Plugins",items:[{type:"htmlpanel",presets:"document",html:[(n=e,null==n?"":'<div data-mce-tabstop="1" tabindex="-1">'+function(t){var e=function(e){var t=F(e.plugins);return e.settings.forced_plugins===undefined?t:function(e,t){for(var n=[],o=0,a=e.length;o<a;o++){var r=e[o];t(r,o)&&n.push(r)}return n}(t,function(n){return function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return!n.apply(null,e)}}(l(b,e.settings.forced_plugins)))}(t),n=y(e,function(e){return"<li>"+r(t,e)+"</li>"}),o=n.length,a=n.join("");return"<p><b>"+U.translate(["Plugins installed ({0}):",o])+"</b></p><ul>"+a+"</ul>"}(n)+"</div>"),(t=y(["Accessibility Checker","Advanced Code Editor","Advanced Tables","Case Change","Checklist","Tiny Comments","Tiny Drive","Enhanced Media Embed","Format Painter","Link Checker","Mentions","MoxieManager","Page Embed","Permanent Pen","PowerPaste","Spell Checker Pro"],function(e){return"<li>"+U.translate(e)+"</li>"}).join(""),'<div data-mce-tabstop="1" tabindex="-1"><p><b>'+U.translate("Premium plugins:")+"</b></p><ul>"+t+'<li style="list-style: none; margin-top: 1em;"><a href="https://www.tiny.cloud/pricing/?utm_campaign=editor_referral&utm_medium=help_dialog&utm_source=tinymce" target="_blank">'+U.translate("Learn more...")+"</a></li></ul></div>")].join("")}]}},N=tinymce.util.Tools.resolve("tinymce.EditorManager"),L=function(){var e,t,n='<a href="https://www.tinymce.com/docs/changelog/?utm_campaign=editor_referral&utm_medium=help_dialog&utm_source=tinymce" target="_blank">TinyMCE '+(e=N.majorVersion,t=N.minorVersion,0===e.indexOf("@")?"X.X.X":e+"."+t)+"</a>";return{name:"versions",title:"Version",items:[{type:"htmlpanel",html:"<p>"+U.translate(["You are using {0}",n])+"</p>",presets:"document"}]}},B=function(){return{name:"keyboardnav",title:"Keyboard Navigation",items:[{type:"htmlpanel",presets:"document",html:"<h1>Editor UI keyboard navigation</h1>\n\n<h2>Activating keyboard navigation</h2>\n\n<p>The sections of the outer UI of the editor - the menubar, toolbar, sidebar and footer - are all keyboard navigable. As such, there are multiple ways to activate keyboard navigation:</p>\n<ul>\n  <li>Focus the menubar: Alt + F9 (Windows) or &#x2325;F9 (MacOS)</li>\n  <li>Focus the toolbar: Alt + F10 (Windows) or &#x2325;F10 (MacOS)</li>\n  <li>Focus the footer: Alt + F11 (Windows) or &#x2325;F11 (MacOS)</li>\n</ul>\n\n<p>Focusing the menubar or toolbar will start keyboard navigation at the first item in the menubar or toolbar, which will be highlighted with a gray background. Focusing the footer will start keyboard navigation at the first item in the element path, which will be highlighted with an underline. </p>\n\n<h2>Moving between UI sections</h2>\n\n<p>When keyboard navigation is active, pressing tab will move the focus to the next major section of the UI, where applicable. These sections are:</p>\n<ul>\n  <li>the menubar</li>\n  <li>each group of the toolbar </li>\n  <li>the sidebar</li>\n  <li>the element path in the footer </li>\n  <li>the wordcount toggle button in the footer </li>\n  <li>the branding link in the footer </li>\n</ul>\n\n<p>Pressing shift + tab will move backwards through the same sections, except when moving from the footer to the toolbar. Focusing the element path then pressing shift + tab will move focus to the first toolbar group, not the last.</p>\n\n<h2>Moving within UI sections</h2>\n\n<p>Keyboard navigation within UI sections can usually be achieved using the left and right arrow keys. This includes:</p>\n<ul>\n  <li>moving between menus in the menubar</li>\n  <li>moving between buttons in a toolbar group</li>\n  <li>moving between items in the element path</li>\n</ul>\n\n<p>In all these UI sections, keyboard navigation will cycle within the section. For example, focusing the last button in a toolbar group then pressing right arrow will move focus to the first item in the same toolbar group. </p>\n\n<h1>Executing buttons</h1>\n\n<p>To execute a button, navigate the selection to the desired button and hit space or enter.</p>\n\n<h1>Opening, navigating and closing menus</h1>\n\n<p>When focusing a menubar button or a toolbar button with a menu, pressing space, enter or down arrow will open the menu. When the menu opens the first item will be selected. To move up or down the menu, press the up or down arrow key respectively. This is the same for submenus, which can also be opened and closed using the left and right arrow keys.</p>\n\n<p>To close any active menu, hit the escape key. When a menu is closed the selection will be restored to its previous selection. This also works for closing submenus.</p>\n\n<h1>Context toolbars and menus</h1>\n\n<p>To focus an open context toolbar such as the table context toolbar, press Ctrl + F9 (Windows) or &#x2303;F9 (MacOS).</p>\n\n<p>Context toolbar navigation is the same as toolbar navigation, and context menu navigation is the same as standard menu navigation.</p>\n\n<h1>Dialog navigation</h1>\n\n<p>There are two types of dialog UIs in TinyMCE: tabbed dialogs and non-tabbed dialogs.</p>\n\n<p>When a non-tabbed dialog is opened, the first interactive component in the dialog will be focused. Users can navigate between interactive components by pressing tab. This includes any footer buttons. Navigation will cycle back to the first dialog component if tab is pressed while focusing the last component in the dialog. Pressing shift + tab will navigate backwards.</p>\n\n<p>When a tabbed dialog is opened, the first button in the tab menu is focused. Pressing tab will navigate to the first interactive component in that tab, and will cycle through the tab\u2019s components, the footer buttons, then back to the tab button. To switch to another tab, focus the tab button for the current tab, then use the arrow keys to cycle through the tab buttons.</p>"}]}};!function z(){t.add("help",function(e){var t=a({}),n=function(n){return{addTab:function(e){var t=n.get();t[e.name]=e,n.set(t)}}}(t),o=A(e,t);return s(e,o),i(e,o),e.shortcuts.add("Alt+0","Open help dialog","mceHelp"),n})}()}();
\ No newline at end of file
diff --git a/admin/js/vendors/tinymce/js/tinymce/plugins/hr/plugin.min.js b/admin/js/vendors/tinymce/js/tinymce/plugins/hr/plugin.min.js
new file mode 100644 (file)
index 0000000..9024d43
--- /dev/null
@@ -0,0 +1,9 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ *
+ * Version: 5.1.5 (2019-12-19)
+ */
+!function(){"use strict";var n=tinymce.util.Tools.resolve("tinymce.PluginManager"),o=function(n){n.addCommand("InsertHorizontalRule",function(){n.execCommand("mceInsertContent",!1,"<hr />")})},t=function(n){n.ui.registry.addButton("hr",{icon:"horizontal-rule",tooltip:"Horizontal line",onAction:function(){return n.execCommand("InsertHorizontalRule")}}),n.ui.registry.addMenuItem("hr",{icon:"horizontal-rule",text:"Horizontal line",onAction:function(){return n.execCommand("InsertHorizontalRule")}})};!function e(){n.add("hr",function(n){o(n),t(n)})}()}();
\ No newline at end of file
diff --git a/admin/js/vendors/tinymce/js/tinymce/plugins/image/plugin.min.js b/admin/js/vendors/tinymce/js/tinymce/plugins/image/plugin.min.js
new file mode 100644 (file)
index 0000000..bced264
--- /dev/null
@@ -0,0 +1,9 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ *
+ * Version: 5.1.5 (2019-12-19)
+ */
+!function(s){"use strict";function o(){}function a(t){return function(){return t}}function t(t){return t}function e(){return l}var n,r=tinymce.util.Tools.resolve("tinymce.PluginManager"),u=a(!1),c=a(!0),l=(n={fold:function(t,e){return t()},is:u,isSome:u,isNone:c,getOr:d,getOrThunk:f,getOrDie:function(t){throw new Error(t||"error: getOrDie called on none.")},getOrNull:a(null),getOrUndefined:a(undefined),or:d,orThunk:f,map:e,each:o,bind:e,exists:u,forall:c,filter:e,equals:i,equals_:i,toArray:function(){return[]},toString:a("none()")},Object.freeze&&Object.freeze(n),n);function i(t){return t.isNone()}function f(t){return t()}function d(t){return t}function m(e){return function(t){return function(t){if(null===t)return"null";var e=typeof t;return"object"==e&&(Array.prototype.isPrototypeOf(t)||t.constructor&&"Array"===t.constructor.name)?"array":"object"==e&&(String.prototype.isPrototypeOf(t)||t.constructor&&"String"===t.constructor.name)?"string":e}(t)===e}}function v(t){for(var e=[],n=0,r=t.length;n<r;++n){if(!U(t[n]))throw new Error("Arr.flatten item "+n+" was not an array, input: "+t);S.apply(e,t[n])}return e}var p,g,h,y,b=function(n){function t(){return i}function e(t){return t(n)}var r=a(n),i={fold:function(t,e){return e(n)},is:function(t){return n===t},isSome:c,isNone:u,getOr:r,getOrThunk:r,getOrDie:r,getOrNull:r,getOrUndefined:r,or:t,orThunk:t,map:function(t){return b(t(n))},each:function(t){t(n)},bind:e,exists:e,forall:e,filter:function(t){return t(n)?i:l},toArray:function(){return[n]},toString:function(){return"some("+n+")"},equals:function(t){return t.is(n)},equals_:function(t,e){return t.fold(u,function(t){return e(n,t)})}};return i},w={some:b,none:e,from:function(t){return null===t||t===undefined?l:b(t)}},T=m("string"),_=m("object"),U=m("array"),x=m("boolean"),A=m("function"),I=Array.prototype.slice,S=Array.prototype.push,D=(A(Array.from)&&Array.from,function(){return(D=Object.assign||function(t){for(var e,n=1,r=arguments.length;n<r;n++)for(var i in e=arguments[n])Object.prototype.hasOwnProperty.call(e,i)&&(t[i]=e[i]);return t}).apply(this,arguments)}),O={},C={exports:O};p=undefined,g=O,h=C,y=undefined,function(t){"object"==typeof g&&void 0!==h?h.exports=t():"function"==typeof p&&p.amd?p([],t):("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).EphoxContactWrapper=t()}(function(){return function s(o,a,u){function c(e,t){if(!a[e]){if(!o[e]){var n="function"==typeof y&&y;if(!t&&n)return n(e,!0);if(l)return l(e,!0);var r=new Error("Cannot find module '"+e+"'");throw r.code="MODULE_NOT_FOUND",r}var i=a[e]={exports:{}};o[e][0].call(i.exports,function(t){return c(o[e][1][t]||t)},i,i.exports,s,o,a,u)}return a[e].exports}for(var l="function"==typeof y&&y,t=0;t<u.length;t++)c(u[t]);return c}({1:[function(t,e,n){var r,i,o=e.exports={};function a(){throw new Error("setTimeout has not been defined")}function u(){throw new Error("clearTimeout has not been defined")}function c(t){if(r===setTimeout)return setTimeout(t,0);if((r===a||!r)&&setTimeout)return r=setTimeout,setTimeout(t,0);try{return r(t,0)}catch(e){try{return r.call(null,t,0)}catch(e){return r.call(this,t,0)}}}!function(){try{r="function"==typeof setTimeout?setTimeout:a}catch(t){r=a}try{i="function"==typeof clearTimeout?clearTimeout:u}catch(t){i=u}}();var l,s=[],f=!1,d=-1;function m(){f&&l&&(f=!1,l.length?s=l.concat(s):d=-1,s.length&&p())}function p(){if(!f){var t=c(m);f=!0;for(var e=s.length;e;){for(l=s,s=[];++d<e;)l&&l[d].run();d=-1,e=s.length}l=null,f=!1,function n(t){if(i===clearTimeout)return clearTimeout(t);if((i===u||!i)&&clearTimeout)return i=clearTimeout,clearTimeout(t);try{return i(t)}catch(e){try{return i.call(null,t)}catch(e){return i.call(this,t)}}}(t)}}function g(t,e){this.fun=t,this.array=e}function h(){}o.nextTick=function(t){var e=new Array(arguments.length-1);if(1<arguments.length)for(var n=1;n<arguments.length;n++)e[n-1]=arguments[n];s.push(new g(t,e)),1!==s.length||f||c(p)},g.prototype.run=function(){this.fun.apply(null,this.array)},o.title="browser",o.browser=!0,o.env={},o.argv=[],o.version="",o.versions={},o.on=h,o.addListener=h,o.once=h,o.off=h,o.removeListener=h,o.removeAllListeners=h,o.emit=h,o.prependListener=h,o.prependOnceListener=h,o.listeners=function(t){return[]},o.binding=function(t){throw new Error("process.binding is not supported")},o.cwd=function(){return"/"},o.chdir=function(t){throw new Error("process.chdir is not supported")},o.umask=function(){return 0}},{}],2:[function(t,f,e){(function(e){function r(){}function o(t){if("object"!=typeof this)throw new TypeError("Promises must be constructed via new");if("function"!=typeof t)throw new TypeError("not a function");this._state=0,this._handled=!1,this._value=undefined,this._deferreds=[],s(t,this)}function i(r,i){for(;3===r._state;)r=r._value;0!==r._state?(r._handled=!0,o._immediateFn(function(){var t=1===r._state?i.onFulfilled:i.onRejected;if(null!==t){var e;try{e=t(r._value)}catch(n){return void u(i.promise,n)}a(i.promise,e)}else(1===r._state?a:u)(i.promise,r._value)})):r._deferreds.push(i)}function a(t,e){try{if(e===t)throw new TypeError("A promise cannot be resolved with itself.");if(e&&("object"==typeof e||"function"==typeof e)){var n=e.then;if(e instanceof o)return t._state=3,t._value=e,void c(t);if("function"==typeof n)return void s(function r(t,e){return function(){t.apply(e,arguments)}}(n,e),t)}t._state=1,t._value=e,c(t)}catch(i){u(t,i)}}function u(t,e){t._state=2,t._value=e,c(t)}function c(t){2===t._state&&0===t._deferreds.length&&o._immediateFn(function(){t._handled||o._unhandledRejectionFn(t._value)});for(var e=0,n=t._deferreds.length;e<n;e++)i(t,t._deferreds[e]);t._deferreds=null}function l(t,e,n){this.onFulfilled="function"==typeof t?t:null,this.onRejected="function"==typeof e?e:null,this.promise=n}function s(t,e){var n=!1;try{t(function(t){n||(n=!0,a(e,t))},function(t){n||(n=!0,u(e,t))})}catch(r){if(n)return;n=!0,u(e,r)}}var t,n;t=this,n=setTimeout,o.prototype["catch"]=function(t){return this.then(null,t)},o.prototype.then=function(t,e){var n=new this.constructor(r);return i(this,new l(t,e,n)),n},o.all=function(t){var c=Array.prototype.slice.call(t);return new o(function(i,o){if(0===c.length)return i([]);var a=c.length;function u(e,t){try{if(t&&("object"==typeof t||"function"==typeof t)){var n=t.then;if("function"==typeof n)return void n.call(t,function(t){u(e,t)},o)}c[e]=t,0==--a&&i(c)}catch(r){o(r)}}for(var t=0;t<c.length;t++)u(t,c[t])})},o.resolve=function(e){return e&&"object"==typeof e&&e.constructor===o?e:new o(function(t){t(e)})},o.reject=function(n){return new o(function(t,e){e(n)})},o.race=function(i){return new o(function(t,e){for(var n=0,r=i.length;n<r;n++)i[n].then(t,e)})},o._immediateFn="function"==typeof e?function(t){e(t)}:function(t){n(t,0)},o._unhandledRejectionFn=function(t){"undefined"!=typeof console&&console&&console.warn("Possible Unhandled Promise Rejection:",t)},o._setImmediateFn=function(t){o._immediateFn=t},o._setUnhandledRejectionFn=function(t){o._unhandledRejectionFn=t},void 0!==f&&f.exports?f.exports=o:t.Promise||(t.Promise=o)}).call(this,t("timers").setImmediate)},{timers:3}],3:[function(c,t,l){(function(t,e){var r=c("process/browser.js").nextTick,n=Function.prototype.apply,i=Array.prototype.slice,o={},a=0;function u(t,e){this._id=t,this._clearFn=e}l.setTimeout=function(){return new u(n.call(setTimeout,window,arguments),clearTimeout)},l.setInterval=function(){return new u(n.call(setInterval,window,arguments),clearInterval)},l.clearTimeout=l.clearInterval=function(t){t.close()},u.prototype.unref=u.prototype.ref=function(){},u.prototype.close=function(){this._clearFn.call(window,this._id)},l.enroll=function(t,e){clearTimeout(t._idleTimeoutId),t._idleTimeout=e},l.unenroll=function(t){clearTimeout(t._idleTimeoutId),t._idleTimeout=-1},l._unrefActive=l.active=function(t){clearTimeout(t._idleTimeoutId);var e=t._idleTimeout;0<=e&&(t._idleTimeoutId=setTimeout(function(){t._onTimeout&&t._onTimeout()},e))},l.setImmediate="function"==typeof t?t:function(t){var e=a++,n=!(arguments.length<2)&&i.call(arguments,1);return o[e]=!0,r(function(){o[e]&&(n?t.apply(null,n):t.call(null),l.clearImmediate(e))}),e},l.clearImmediate="function"==typeof e?e:function(t){delete o[t]}}).call(this,c("timers").setImmediate,c("timers").clearImmediate)},{"process/browser.js":1,timers:3}],4:[function(t,e,n){var r=t("promise-polyfill"),i="undefined"!=typeof window?window:Function("return this;")();e.exports={boltExport:i.Promise||r}},{"promise-polyfill":2}]},{},[4])(4)});function P(t){s.setTimeout(function(){throw t},0)}function E(t){return vt(mt(t))}function L(a){return function(){for(var t=new Array(arguments.length),e=0;e<t.length;e++)t[e]=arguments[e];if(0===t.length)throw new Error("Can't merge zero objects");for(var n={},r=0;r<t.length;r++){var i=t[r];for(var o in i)wt.call(i,o)&&(n[o]=a(n[o],i[o]))}return n}}function N(t){var e=t.imageList.map(function(t){return{name:"images",type:"selectbox",label:"Image list",items:t}}),n=t.classList.map(function(t){return{name:"classes",type:"selectbox",label:"Class",items:t}});return v([[{name:"src",type:"urlinput",filetype:"image",label:"Source"}],e.toArray(),t.hasDescription?[{name:"alt",type:"input",label:"Image description"}]:[],t.hasImageTitle?[{name:"title",type:"input",label:"Image title"}]:[],t.hasDimensions?[{name:"dimensions",type:"sizeinput"}]:[],[{type:"grid",columns:2,items:v([n.toArray(),t.hasImageCaption?[{type:"label",label:"Caption",items:[{type:"checkbox",name:"caption",label:"Show caption"}]}]:[]])}]])}function j(t,e){return Math.max(parseInt(t,10),parseInt(e,10))}function R(t){return t.style.marginLeft&&t.style.marginRight&&t.style.marginLeft===t.style.marginRight?Et(t.style.marginLeft):""}function F(t){return t.style.marginTop&&t.style.marginBottom&&t.style.marginTop===t.style.marginBottom?Et(t.style.marginTop):""}function k(t){return t.style.borderWidth?Et(t.style.borderWidth):""}function z(t,e){return t.hasAttribute(e)?t.getAttribute(e):""}function M(t,e){return t.style[e]?t.style[e]:""}function H(t){return null!==t.parentNode&&"FIGURE"===t.parentNode.nodeName}function B(t,e,n){t.setAttribute(e,n)}function G(t){H(t)?function(t){var e=t.parentNode;zt.insertAfter(t,e),zt.remove(e)}(t):function(t){var e=zt.create("figure",{"class":"image"});zt.insertAfter(e,t),e.appendChild(t),e.appendChild(zt.create("figcaption",{contentEditable:"true"},"Caption")),e.contentEditable="false"}(t)}function W(t,e){var n=t.getAttribute("style"),r=e(null!==n?n:"");0<r.length?(t.setAttribute("style",r),t.setAttribute("data-mce-style",r)):t.removeAttribute("style")}function q(t,r){return function(t,e,n){t.style[e]?(t.style[e]=Lt(n),W(t,r)):B(t,e,n)}}function $(t,e){return t.style[e]?Et(t.style[e]):z(t,e)}function J(t,e){var n=Lt(e);t.style.marginLeft=n,t.style.marginRight=n}function V(t,e){var n=Lt(e);t.style.marginTop=n,t.style.marginBottom=n}function X(t,e){var n=Lt(e);t.style.borderWidth=n}function Z(t,e){t.style.borderStyle=e}function K(t){return"FIGURE"===t.nodeName}function Q(t,e){var n=s.document.createElement("img");return B(n,"style",e.style),!R(n)&&""===e.hspace||J(n,e.hspace),!F(n)&&""===e.vspace||V(n,e.vspace),!k(n)&&""===e.border||X(n,e.border),!function(t){return M(t,"borderStyle")}(n)&&""===e.borderStyle||Z(n,e.borderStyle),t(n.getAttribute("style"))}function Y(t,e){return{src:z(e,"src"),alt:z(e,"alt"),title:z(e,"title"),width:$(e,"width"),height:$(e,"height"),"class":z(e,"class"),style:t(z(e,"style")),caption:H(e),hspace:R(e),vspace:F(e),border:k(e),borderStyle:M(e,"borderStyle")}}function tt(t,e,n,r,i){n[r]!==e[r]&&i(t,r,n[r])}function et(r,i){return function(t,e,n){r(t,n),W(t,i)}}function nt(t,e){var n=t.dom.styles.parse(e),r=Nt(n),i=t.dom.styles.parse(t.dom.styles.serialize(r));return t.dom.styles.serialize(i)}function rt(t){var e=t.selection.getNode(),n=t.dom.getParent(e,"figure.image");return n?t.dom.select("img",n)[0]:e&&("IMG"!==e.nodeName||kt(e))?null:e}function it(e,t){var n=e.dom,r=n.getParent(t.parentNode,function(t){return e.schema.getTextBlockElements()[t.nodeName]},e.getBody());return r?n.split(r,t):t}function ot(e,t){var n=function(t,e){var n=s.document.createElement("img");if(Mt(t,_t(e,{caption:!1}),n),B(n,"alt",e.alt),e.caption){var r=zt.create("figure",{"class":"image"});return r.appendChild(n),r.appendChild(zt.create("figcaption",{contentEditable:"true"},"Caption")),r.contentEditable="false",r}return n}(function(t){return nt(e,t)},t);e.dom.setAttrib(n,"data-mce-id","__mcenew"),e.focus(),e.selection.setContent(n.outerHTML);var r=e.dom.select('*[data-mce-id="__mcenew"]')[0];if(e.dom.setAttrib(r,"data-mce-id",null),K(r)){var i=it(e,r);e.selection.select(i)}else e.selection.select(r)}function at(t,e){var n=rt(t);n?e.src?function(e,t){var n=rt(e);if(Mt(function(t){return nt(e,t)},t,n),function(t,e){t.dom.setAttrib(e,"src",e.getAttribute("src"))}(e,n),K(n.parentNode)){var r=n.parentNode;it(e,r),e.selection.select(n.parentNode)}else e.selection.select(n),Rt(e,t,n)}(t,e):function(t,e){if(e){var n=t.dom.is(e.parentNode,"figure.image")?e.parentNode:e;t.dom.remove(n),t.focus(),t.nodeChanged(),t.dom.isEmpty(t.getBody())&&(t.setContent(""),t.selection.setCursorLocation())}}(t,n):e.src&&ot(t,e)}function ut(t){return T(t.value)?t.value:""}function ct(e){return void 0===e&&(e=ut),function(t){return t?w.from(t).map(function(t){return Bt(t,e)}):w.none()}}var lt=C.exports.boltExport,st=function(t){var n=w.none(),e=[],r=function(t){i()?a(t):e.push(t)},i=function(){return n.isSome()},o=function(t){!function(t,e){for(var n=0,r=t.length;n<r;n++){e(t[n],n)}}(t,a)},a=function(e){n.each(function(t){s.setTimeout(function(){e(t)},0)})};return t(function(t){n=w.some(t),o(e),e=[]}),{get:r,map:function(n){return st(function(e){r(function(t){e(n(t))})})},isReady:i}},ft={nu:st,pure:function(e){return st(function(t){t(e)})}},dt=function(n){function t(t){n().then(t,P)}return{map:function(t){return dt(function(){return n().then(t)})},bind:function(e){return dt(function(){return n().then(function(t){return e(t).toPromise()})})},anonBind:function(t){return dt(function(){return n().then(function(){return t.toPromise()})})},toLazy:function(){return ft.nu(t)},toCached:function(){var t=null;return dt(function(){return null===t&&(t=n()),t})},toPromise:n,get:t}},mt=function(t){return dt(function(){return new lt(t)})},pt=function(t){return dt(function(){return lt.resolve(t)})},gt=function(n){return{is:function(t){return n===t},isValue:c,isError:u,getOr:a(n),getOrThunk:a(n),getOrDie:a(n),or:function(t){return gt(n)},orThunk:function(t){return gt(n)},fold:function(t,e){return e(n)},map:function(t){return gt(t(n))},mapError:function(t){return gt(n)},each:function(t){t(n)},bind:function(t){return t(n)},exists:function(t){return t(n)},forall:function(t){return t(n)},toOption:function(){return w.some(n)}}},ht=function(n){return{is:u,isValue:u,isError:c,getOr:t,getOrThunk:function(t){return t()},getOrDie:function(){return function(t){return function(){throw new Error(t)}}(String(n))()},or:function(t){return t},orThunk:function(t){return t()},fold:function(t,e){return t(n)},map:function(t){return ht(n)},mapError:function(t){return ht(t(n))},each:o,bind:function(t){return ht(n)},exists:u,forall:c,toOption:w.none}},yt={value:gt,error:ht,fromOption:function(t,e){return t.fold(function(){return ht(e)},gt)}},vt=function(o){return D(D({},o),{toCached:function(){return vt(o.toCached())},bindFuture:function(e){return vt(o.bind(function(t){return t.fold(function(t){return pt(yt.error(t))},function(t){return e(t)})}))},bindResult:function(e){return vt(o.map(function(t){return t.bind(e)}))},mapResult:function(e){return vt(o.map(function(t){return t.map(e)}))},mapError:function(e){return vt(o.map(function(t){return t.mapError(e)}))},foldResult:function(e,n){return o.map(function(t){return t.fold(e,n)})},withTimeout:function(t,i){return vt(mt(function(e){var n=!1,r=s.setTimeout(function(){n=!0,e(yt.error(i()))},t);o.get(function(t){n||(s.clearTimeout(r),e(t))})}))}})},bt=E,wt=Object.prototype.hasOwnProperty,Tt=L(function(t,e){return _(t)&&_(e)?Tt(t,e):e}),_t=L(function(t,e){return e}),Ut=function(t){return{title:"General",name:"general",items:N(t)}},xt=N,At=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),It=tinymce.util.Tools.resolve("tinymce.util.Promise"),St=tinymce.util.Tools.resolve("tinymce.util.XHR"),Dt=function(t){return t.getParam("images_upload_url","","string")},Ot=function(t){return t.getParam("images_upload_handler",undefined,"function")},Ct={hasDimensions:function(t){return t.getParam("image_dimensions",!0,"boolean")},hasUploadTab:function(t){return t.getParam("image_uploadtab",!0,"boolean")},hasAdvTab:function(t){return t.getParam("image_advtab",!1,"boolean")},getPrependUrl:function(t){return t.getParam("image_prepend_url","","string")},getClassList:function(t){return t.getParam("image_class_list")},hasDescription:function(t){return t.getParam("image_description",!0,"boolean")},hasImageTitle:function(t){return t.getParam("image_title",!1,"boolean")},hasImageCaption:function(t){return t.getParam("image_caption",!1,"boolean")},getImageList:function(t){return t.getParam("image_list",!1)},hasUploadUrl:function(t){return!!Dt(t)},hasUploadHandler:function(t){return!!Ot(t)},getUploadUrl:Dt,getUploadHandler:Ot,getUploadBasePath:function(t){return t.getParam("images_upload_base_path",undefined,"string")},getUploadCredentials:function(t){return t.getParam("images_upload_credentials",!1,"boolean")}},Pt=function(t,e){function n(t){r.parentNode&&r.parentNode.removeChild(r),e(t)}var r=s.document.createElement("img");r.onload=function(){var t={width:j(r.width,r.clientWidth),height:j(r.height,r.clientHeight)};n(yt.value(t))},r.onerror=function(){n(yt.error("Failed to get image dimensions for: "+t))};var i=r.style;i.visibility="hidden",i.position="fixed",i.bottom=i.left="0px",i.width=i.height="auto",s.document.body.appendChild(r),r.src=t},Et=function(t){return t=t&&t.replace(/px$/,"")},Lt=function(t){return 0<t.length&&/^[0-9]+$/.test(t)&&(t+="px"),t},Nt=function(t){if(t.margin){var e=String(t.margin).split(" ");switch(e.length){case 1:t["margin-top"]=t["margin-top"]||e[0],t["margin-right"]=t["margin-right"]||e[0],t["margin-bottom"]=t["margin-bottom"]||e[0],t["margin-left"]=t["margin-left"]||e[0];break;case 2:t["margin-top"]=t["margin-top"]||e[0],t["margin-right"]=t["margin-right"]||e[1],t["margin-bottom"]=t["margin-bottom"]||e[0],t["margin-left"]=t["margin-left"]||e[1];break;case 3:t["margin-top"]=t["margin-top"]||e[0],t["margin-right"]=t["margin-right"]||e[1],t["margin-bottom"]=t["margin-bottom"]||e[2],t["margin-left"]=t["margin-left"]||e[1];break;case 4:t["margin-top"]=t["margin-top"]||e[0],t["margin-right"]=t["margin-right"]||e[1],t["margin-bottom"]=t["margin-bottom"]||e[2],t["margin-left"]=t["margin-left"]||e[3]}delete t.margin}return t},jt=function(t,e){var n=Ct.getImageList(t);"string"==typeof n?St.send({url:n,success:function(t){e(JSON.parse(t))}}):"function"==typeof n?n(e):e(n)},Rt=function(t,e,n){function r(){n.onload=n.onerror=null,t.selection&&(t.selection.select(n),t.nodeChanged())}n.onload=function(){e.width||e.height||!Ct.hasDimensions(t)||t.dom.setAttribs(n,{width:String(n.clientWidth),height:String(n.clientHeight)}),r()},n.onerror=r},Ft=function(r){return new It(function(t,e){var n=new s.FileReader;n.onload=function(){t(n.result)},n.onerror=function(){e(n.error.message)},n.readAsDataURL(r)})},kt=function(t){return"IMG"===t.nodeName&&(t.hasAttribute("data-mce-object")||t.hasAttribute("data-mce-placeholder"))},zt=At.DOM,Mt=function(t,e,n){var r=Y(t,n);tt(n,r,e,"caption",function(t,e,n){return G(t)}),tt(n,r,e,"src",B),tt(n,r,e,"alt",B),tt(n,r,e,"title",B),tt(n,r,e,"width",q(0,t)),tt(n,r,e,"height",q(0,t)),tt(n,r,e,"class",B),tt(n,r,e,"style",et(function(t,e){return B(t,"style",e)},t)),tt(n,r,e,"hspace",et(J,t)),tt(n,r,e,"vspace",et(V,t)),tt(n,r,e,"border",et(X,t)),tt(n,r,e,"borderStyle",et(Z,t))},Ht=tinymce.util.Tools.resolve("tinymce.util.Tools"),Bt=function(t,i){var o=[];return Ht.each(t,function(t){var e=T(t.text)?t.text:T(t.title)?t.title:"";if(t.menu!==undefined){var n=Bt(t.menu,i);o.push({text:e,items:n})}else{var r=i(t);o.push({text:e,value:r})}}),o},Gt=function(t,e){return function(t,e){for(var n=0;n<t.length;n++){var r=e(t[n],n);if(r.isSome())return r}return w.none()}(t,function(t){return function(t){return Object.prototype.hasOwnProperty.call(t,"items")}(t)?Gt(t.items,e):t.value===e?w.some(t):w.none()})},Wt=ct,qt=function(t){return ct(ut)(t)},$t=function(t,e){return t.bind(function(t){return Gt(t,e)})};function Jt(a){function e(t,e,n,r){var i,o;(i=new s.XMLHttpRequest).open("POST",a.url),i.withCredentials=a.credentials,i.upload.onprogress=function(t){r(t.loaded/t.total*100)},i.onerror=function(){n("Image upload failed due to a XHR Transport error. Code: "+i.status)},i.onload=function(){var t;i.status<200||300<=i.status?n("HTTP Error: "+i.status):(t=JSON.parse(i.responseText))&&"string"==typeof t.location?e(function(t,e){return t?t.replace(/\/$/,"")+"/"+e.replace(/^\//,""):e}(a.basePath,t.location)):n("Invalid JSON: "+i.responseText)},(o=new s.FormData).append("file",t.blob(),t.filename()),i.send(o)}return a=Ht.extend({credentials:!1,handler:e},a),{upload:function(t){return!a.url&&function(t){return t===e}(a.handler)?It.reject("Upload url missing from the settings."):function(r,i){return new It(function(t,e){try{i(r,t,e,o)}catch(n){e(n.message)}})}(t,a.handler)}}}function Vt(n){var r=Wt(function(t){return n.convertURL(t.value||t.url,"src")}),t=mt(function(e){jt(n,function(t){e(r(t).map(function(t){return v([[{text:"None",value:""}],t])}))})}),e=qt(Ct.getClassList(n)),i=Ct.hasAdvTab(n),o=Ct.hasUploadTab(n),a=Ct.hasUploadUrl(n),u=Ct.hasUploadHandler(n),c=function(e){var t=rt(e);return t?Y(function(t){return nt(e,t)},t):{src:"",alt:"",title:"",width:"",height:"","class":"",style:"",caption:!1,hspace:"",vspace:"",border:"",borderStyle:""}}(n),l=Ct.hasDescription(n),s=Ct.hasImageTitle(n),f=Ct.hasDimensions(n),d=Ct.hasImageCaption(n),m=Ct.getUploadUrl(n),p=Ct.getUploadBasePath(n),g=Ct.getUploadCredentials(n),h=Ct.getUploadHandler(n),y=w.some(Ct.getPrependUrl(n)).filter(function(t){return T(t)&&0<t.length});return t.map(function(t){return{image:c,imageList:t,classList:e,hasAdvTab:i,hasUploadTab:o,hasUploadUrl:a,hasUploadHandler:u,hasDescription:l,hasImageTitle:s,hasDimensions:f,hasImageCaption:d,url:m,basePath:p,credentials:g,handler:h,prependURL:y}})}function Xt(t){return{src:{value:t.src,meta:{}},images:t.src,alt:t.alt,title:t.title,dimensions:{width:t.width,height:t.height},classes:t["class"],caption:t.caption,style:t.style,vspace:t.vspace,border:t.border,hspace:t.hspace,borderstyle:t.borderStyle,fileinput:[]}}function Zt(t){return{src:t.src.value,alt:t.alt,title:t.title,width:t.dimensions.width,height:t.dimensions.height,"class":t.classes,style:t.style,caption:t.caption,hspace:t.hspace,vspace:t.vspace,border:t.border,borderStyle:t.borderstyle}}function Kt(t,e){var n=e.getData();(function(t,e){return/^(?:[a-zA-Z]+:)?\/\//.test(e)?w.none():t.prependURL.bind(function(t){return e.substring(0,t.length)!==t?w.some(t+e):w.none()})})(t,n.src.value).each(function(t){e.setData({src:{value:t,meta:n.src.meta}})})}function Qt(t,e){var n=e.getData(),r=n.src.meta;if(r!==undefined){var i=Tt({},n);!function(t,e,n){t.hasDescription&&T(n.alt)&&(e.alt=n.alt),t.hasImageTitle&&T(n.title)&&(e.title=n.title),t.hasDimensions&&(T(n.width)&&(e.dimensions.width=n.width),T(n.height)&&(e.dimensions.height=n.height)),T(n["class"])&&$t(t.classList,n["class"]).each(function(t){e.classes=t.value}),t.hasImageCaption&&x(n.caption)&&(e.caption=n.caption),t.hasAdvTab&&(T(n.vspace)&&(e.vspace=n.vspace),T(n.border)&&(e.border=n.border),T(n.hspace)&&(e.hspace=n.hspace),T(n.borderstyle)&&(e.borderstyle=n.borderstyle))}(t,i,r),e.setData(i)}}function Yt(t,e,n,r){Kt(e,r),Qt(e,r),function(t,e,n,r){var i=r.getData(),o=i.src.value,a=i.src.meta||{};a.width||a.height||!e.hasDimensions||t.imageSize(o).get(function(t){t.each(function(t){n.open&&r.setData({dimensions:t})})})}(t,e,n,r),function(t,e,n){var r=n.getData(),i=$t(t.imageList,r.src.value);e.prevImage=i,n.setData({images:i.map(function(t){return t.value}).getOr("")})}(e,n,r)}function te(t,e,n){var r=Nt(t(n.style)),i=Tt({},n);return i.vspace=function(t){return t["margin-top"]&&t["margin-bottom"]&&t["margin-top"]===t["margin-bottom"]?Et(String(t["margin-top"])):""}(r),i.hspace=function(t){return t["margin-right"]&&t["margin-left"]&&t["margin-right"]===t["margin-left"]?Et(String(t["margin-right"])):""}(r),i.border=function(t){return t["border-width"]?Et(String(t["border-width"])):""}(r),i.borderstyle=function(t){return t["border-style"]?String(t["border-style"]):""}(r),i.style=function(t,e,n){return e(t(e(n)))}(t,e,r),i}function ee(a,u,c,l){var t=l.getData();l.block("Uploading image"),function(t){return 0===t.length?w.none():w.some(t[0])}(t.fileinput).fold(function(){l.unblock()},function(n){function r(){l.unblock(),s.URL.revokeObjectURL(i)}var i=s.URL.createObjectURL(n),o=Jt({url:u.url,basePath:u.basePath,credentials:u.credentials,handler:u.handler});Ft(n).then(function(t){var e=a.createBlobCache(n,i,t);o.upload(e).then(function(t){l.setData({src:{value:t,meta:{}}}),l.showTab("general"),Yt(a,u,c,l),r()})["catch"](function(t){r(),a.alertErr(l,t)})})})}function ne(n,r,i){return function(t,e){"src"===e.name?Yt(n,r,i,t):"images"===e.name?function(t,e,n,r){var i=r.getData(),o=$t(e.imageList,i.images);o.each(function(t){""===i.alt||n.prevImage.map(function(t){return t.text===i.alt}).getOr(!1)?""===t.value?r.setData({src:t,alt:n.prevAlt}):r.setData({src:t,alt:t.text}):r.setData({src:t})}),n.prevImage=o,Yt(t,e,n,r)}(n,r,i,t):"alt"===e.name?i.prevAlt=t.getData().alt:"style"===e.name?function(t,e){var n=e.getData(),r=te(t.parseStyle,t.serializeStyle,n);e.setData(r)}(n,t):"vspace"===e.name||"hspace"===e.name||"border"===e.name||"borderstyle"===e.name?function(t,e,n){var r=Tt(Xt(e.image),n.getData()),i=Q(t.normalizeCss,Zt(r));n.setData({style:i})}(n,r,t):"fileinput"===e.name&&ee(n,r,i,t)}}function re(n){return function(t){var e=function(t){return{prevImage:$t(t.imageList,t.image.src),prevAlt:t.image.alt,open:!0}}(t);return{title:"Insert/Edit Image",size:"normal",body:function(t){return t.hasAdvTab||t.hasUploadUrl||t.hasUploadHandler?{type:"tabpanel",tabs:v([[Ut(t)],t.hasAdvTab?[ae(t)]:[],t.hasUploadTab&&(t.hasUploadUrl||t.hasUploadHandler)?[ue(t)]:[]])}:{type:"panel",items:xt(t)}}(t),buttons:[{type:"cancel",name:"cancel",text:"Cancel"},{type:"submit",name:"save",text:"Save",primary:!0}],initialData:Xt(t.image),onSubmit:n.onSubmit(t),onChange:ne(n,t,e),onClose:function(t){return function(){t.open=!1}}(e)}}}function ie(e){var t={onSubmit:function(r){return function(n){return function(t){var e=Tt(Xt(n.image),t.getData());r.undoManager.transact(function(){at(r,Zt(e))}),r.editorUpload.uploadImagesAuto(),t.close()}}}(e),imageSize:function(e){return function(t){return bt(function(n){Pt(e.documentBaseURI.toAbsolute(t),function(t){var e=t.map(function(t){return{width:String(t.width),height:String(t.height)}});n(e)})})}}(e),createBlobCache:function(r){return function(t,e,n){return r.editorUpload.blobCache.create({blob:t,blobUri:e,name:t.name?t.name.replace(/\.[^\.]+$/,""):null,base64:n.split(",")[1]})}}(e),alertErr:function(n){return function(t,e){n.windowManager.alert(e,t.close)}}(e),normalizeCss:function(e){return function(t){return nt(e,t)}}(e),parseStyle:function(e){return function(t){return e.dom.parseStyle(t)}}(e),serializeStyle:function(n){return function(t,e){return n.dom.serializeStyle(t,e)}}(e)};return{open:function(){return Vt(e).map(re(t)).get(function(t){e.windowManager.open(t)})}}}function oe(o){return function(t){for(var e,n=t.length,r=function(t){t.attr("contenteditable",o?"true":null)};n--;){var i=t[n];void 0,(e=i.attr("class"))&&/\bimage\b/.test(e)&&(i.attr("contenteditable",o?"false":null),Ht.each(i.getAll("figcaption"),r))}}}var ae=function(t){return{title:"Advanced",name:"advanced",items:[{type:"input",label:"Style",name:"style"},{type:"grid",columns:2,items:[{type:"input",label:"Vertical space",name:"vspace",inputMode:"numeric"},{type:"input",label:"Horizontal space",name:"hspace",inputMode:"numeric"},{type:"input",label:"Border width",name:"border",inputMode:"numeric"},{type:"selectbox",name:"borderstyle",label:"Border style",items:[{text:"Select...",value:""},{text:"Solid",value:"solid"},{text:"Dotted",value:"dotted"},{text:"Dashed",value:"dashed"},{text:"Double",value:"double"},{text:"Groove",value:"groove"},{text:"Ridge",value:"ridge"},{text:"Inset",value:"inset"},{text:"Outset",value:"outset"},{text:"None",value:"none"},{text:"Hidden",value:"hidden"}]}]}]}},ue=function(t){return{title:"Upload",name:"upload",items:[{type:"dropzone",name:"fileinput"}]}},ce=function(t){t.addCommand("mceImage",ie(t).open)},le=function(t){t.on("PreInit",function(){t.parser.addNodeFilter("figure",oe(!0)),t.serializer.addNodeFilter("figure",oe(!1))})},se=function(e){e.ui.registry.addToggleButton("image",{icon:"image",tooltip:"Insert/edit image",onAction:ie(e).open,onSetup:function(t){return e.selection.selectorChangedWithUnbind("img:not([data-mce-object],[data-mce-placeholder]),figure.image",t.setActive).unbind}}),e.ui.registry.addMenuItem("image",{icon:"image",text:"Image...",onAction:ie(e).open}),e.ui.registry.addContextMenu("image",{update:function(t){return K(t)||function(t){return"IMG"===t.nodeName}(t)&&!kt(t)?["image"]:[]}})};!function fe(){r.add("image",function(t){le(t),se(t),ce(t)})}()}(window);
\ No newline at end of file
diff --git a/admin/js/vendors/tinymce/js/tinymce/plugins/imagetools/plugin.min.js b/admin/js/vendors/tinymce/js/tinymce/plugins/imagetools/plugin.min.js
new file mode 100644 (file)
index 0000000..7624dac
--- /dev/null
@@ -0,0 +1,9 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ *
+ * Version: 5.1.5 (2019-12-19)
+ */
+!function(v){"use strict";function e(){}function n(){return c}var t,r=function(e){function n(){return t}var t=e;return{get:n,set:function(e){t=e},clone:function(){return r(n())}}},o=tinymce.util.Tools.resolve("tinymce.PluginManager"),i=tinymce.util.Tools.resolve("tinymce.util.Tools"),d=function(e){return function(){return e}},u=d(!1),a=d(!0),c=(t={fold:function(e,n){return e()},is:u,isSome:u,isNone:a,getOr:l,getOrThunk:f,getOrDie:function(e){throw new Error(e||"error: getOrDie called on none.")},getOrNull:d(null),getOrUndefined:d(undefined),or:l,orThunk:f,map:n,each:e,bind:n,exists:u,forall:a,filter:n,equals:s,equals_:s,toArray:function(){return[]},toString:d("none()")},Object.freeze&&Object.freeze(t),t);function s(e){return e.isNone()}function f(e){return e()}function l(e){return e}var m=function(t){function e(){return o}function n(e){return e(t)}var r=d(t),o={fold:function(e,n){return n(t)},is:function(e){return t===e},isSome:a,isNone:u,getOr:r,getOrThunk:r,getOrDie:r,getOrNull:r,getOrUndefined:r,or:e,orThunk:e,map:function(e){return m(e(t))},each:function(e){e(t)},bind:n,exists:n,forall:n,filter:function(e){return e(t)?o:c},toArray:function(){return[t]},toString:function(){return"some("+t+")"},equals:function(e){return e.is(t)},equals_:function(e,n){return e.fold(u,function(e){return n(t,e)})}};return o},p={some:m,none:n,from:function(e){return null===e||e===undefined?c:m(e)}};function h(e,n){return y(v.document.createElement("canvas"),e,n)}function g(e){var n=h(e.width,e.height);return w(n).drawImage(e,0,0),n}function w(e){return e.getContext("2d")}function y(e,n,t){return e.width=n,e.height=t,e}var b,E,O=window.Promise?window.Promise:(b=T.immediateFn||"function"==typeof window.setImmediate&&window.setImmediate||function(e){v.setTimeout(e,1)},E=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)},T.prototype["catch"]=function(e){return this.then(null,e)},T.prototype.then=function(t,r){var o=this;return new T(function(e,n){N.call(o,new R(t,r,e,n))})},T.all=function(){for(var e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];var c=Array.prototype.slice.call(1===e.length&&E(e[0])?e[0]:e);return new T(function(o,i){if(0===c.length)return o([]);var u=c.length;function a(n,e){try{if(e&&("object"==typeof e||"function"==typeof e)){var t=e.then;if("function"==typeof t)return void t.call(e,function(e){a(n,e)},i)}c[n]=e,0==--u&&o(c)}catch(r){i(r)}}for(var e=0;e<c.length;e++)a(e,c[e])})},T.resolve=function(n){return n&&"object"==typeof n&&n.constructor===T?n:new T(function(e){e(n)})},T.reject=function(t){return new T(function(e,n){n(t)})},T.race=function(o){return new T(function(e,n){for(var t=0,r=o;t<r.length;t++)r[t].then(e,n)})},T);function T(e){if("object"!=typeof this)throw new TypeError("Promises must be constructed via new");if("function"!=typeof e)throw new TypeError("not a function");this._state=null,this._value=null,this._deferreds=[],A(e,I(S,this),I(_,this))}function I(e,n){return function(){return e.apply(n,arguments)}}function N(r){var o=this;null!==this._state?b(function(){var e=o._state?r.onFulfilled:r.onRejected;if(null!==e){var n;try{n=e(o._value)}catch(t){return void r.reject(t)}r.resolve(n)}else(o._state?r.resolve:r.reject)(o._value)}):this._deferreds.push(r)}function S(e){try{if(e===this)throw new TypeError("A promise cannot be resolved with itself.");if(e&&("object"==typeof e||"function"==typeof e)){var n=e.then;if("function"==typeof n)return void A(I(n,e),I(S,this),I(_,this))}this._state=!0,this._value=e,x.call(this)}catch(t){_.call(this,t)}}function _(e){this._state=!1,this._value=e,x.call(this)}function x(){for(var e=0,n=this._deferreds;e<n.length;e++){var t=n[e];N.call(this,t)}this._deferreds=[]}function R(e,n,t,r){this.onFulfilled="function"==typeof e?e:null,this.onRejected="function"==typeof n?n:null,this.resolve=t,this.reject=r}function A(e,n,t){var r=!1;try{e(function(e){r||(r=!0,n(e))},function(e){r||(r=!0,t(e))})}catch(o){if(r)return;r=!0,t(o)}}function C(e){var n=e.src;return 0===n.indexOf("data:")?U(n):function t(r){return new O(function(e,t){var n=new v.XMLHttpRequest;n.open("GET",r,!0),n.responseType="blob",n.onload=function(){200===this.status&&e(this.response)},n.onerror=function(){var e,n=this;t(0===this.status?((e=new Error("No access to download image")).code=18,e.name="SecurityError",e):new Error("Error "+n.status+" downloading image"))},n.send()})}(n)}function D(a){return new O(function(e,n){var t=v.URL.createObjectURL(a),r=new v.Image,o=function(){r.removeEventListener("load",i),r.removeEventListener("error",u)};function i(){o(),e(r)}function u(){o(),n("Unable to load data of type "+a.type+": "+t)}r.addEventListener("load",i),r.addEventListener("error",u),r.src=t,r.complete&&i()})}function U(t){return new O(function(e,n){(function g(e){var n=e.split(","),t=/data:([^;]+)/.exec(n[0]);if(!t)return p.none();for(var r=t[1],o=n[1],i=v.atob(o),u=i.length,a=Math.ceil(u/1024),c=new Array(a),s=0;s<a;++s){for(var f=1024*s,l=Math.min(1024+f,u),d=new Array(l-f),m=f,h=0;m<l;++h,++m)d[h]=i[m].charCodeAt(0);c[s]=new Uint8Array(d)}return p.some(new v.Blob(c,{type:r}))})(t).fold(function(){n("uri is not base64: "+t)},e)})}function L(e,r,o){return r=r||"image/png",v.HTMLCanvasElement.prototype.toBlob?new O(function(n,t){e.toBlob(function(e){e?n(e):t()},r,o)}):U(e.toDataURL(r,o))}function k(e){return D(e).then(function(e){!function t(e){v.URL.revokeObjectURL(e.src)}(e);var n=h(function r(e){return e.naturalWidth||e.width}(e),function o(e){return e.naturalHeight||e.height}(e));return w(n).drawImage(e,0,0),n})}function j(e,n,t){var r=n.type;function o(n,t){return e.then(function(e){return function r(e,n,t){return n=n||"image/png",e.toDataURL(n,t)}(e,n,t)})}return{getType:d(r),toBlob:function i(){return O.resolve(n)},toDataURL:function u(){return t},toBase64:function a(){return t.split(",")[1]},toAdjustedBlob:function c(n,t){return e.then(function(e){return L(e,n,t)})},toAdjustedDataURL:o,toAdjustedBase64:function s(e,n){return o(e,n).then(function(e){return e.split(",")[1]})},toCanvas:function f(){return e.then(g)}}}function P(n){return function e(t){return new O(function(e){var n=new v.FileReader;n.onloadend=function(){e(n.result)},n.readAsDataURL(t)})}(n).then(function(e){return j(k(n),n,e)})}function M(n,e){return L(n,e).then(function(e){return j(O.resolve(n),e,n.toDataURL())})}function B(n,t){return n.toCanvas().then(function(e){return function a(e,n,t){var r=h(e.width,e.height),o=w(r),i=0,u=0;90!==(t=t<0?360+t:t)&&270!==t||y(r,r.height,r.width);90!==t&&180!==t||(i=r.width);270!==t&&180!==t||(u=r.height);return o.translate(i,u),o.rotate(t*Math.PI/180),o.drawImage(e,0,0),M(r,n)}(e,n.getType(),t)})}function F(n,t){return n.toCanvas().then(function(e){return function i(e,n,t){var r=h(e.width,e.height),o=w(r);"v"===t?(o.scale(1,-1),o.drawImage(e,0,-r.height)):(o.scale(-1,1),o.drawImage(e,-r.width,0));return M(r,n)}(e,n.getType(),t)})}function z(e){return P(e)}var H=tinymce.util.Tools.resolve("tinymce.util.Delay"),q=tinymce.util.Tools.resolve("tinymce.util.Promise"),$=tinymce.util.Tools.resolve("tinymce.util.URI");function X(e,n){for(var t=0,r=e.length;t<r;t++){var o=e[t];if(n(o,t))return p.some(o)}return p.none()}function W(e){return null!==e&&e!==undefined}function G(n){return"ImageProxy HTTP error: "+X(ue,function(e){return n===e.code}).fold(d("Unknown ImageProxy error"),function(e){return e.message})}function Y(e){var n=G(e);return q.reject(n)}function V(n){return X(ae,function(e){return e.type===n}).fold(d("Unknown service error"),function(e){return e.message})}function J(e,n){return re(n).then(function(e){var n=function(e){var n=ie(e),t=te(n,["error","type"]);return"ImageProxy Service error: "+(t?V(t):"Invalid JSON in service error message")}(e);return q.reject(n)})}function K(e,n){var t={"Content-Type":"application/json;charset=UTF-8","tiny-api-key":n};return oe(function(e,n){var t=-1===e.indexOf("?")?"?":"&";return/[?&]apiKey=/.test(e)||!n?e:e+t+"apiKey="+encodeURIComponent(n)}(e,n),t,!1).then(function(e){return e.status<200||300<=e.status?ce(e.status,e.blob):q.resolve(e.blob)})}var Q,Z={getImageSize:function wn(e){var n,t;function r(e){return/^[0-9\.]+px$/.test(e)}return n=e.style.width,t=e.style.height,n||t?r(n)&&r(t)?{w:parseInt(n,10),h:parseInt(t,10)}:null:(n=e.width,t=e.height,n&&t?{w:parseInt(n,10),h:parseInt(t,10)}:null)},setImageSize:function yn(e,n){var t,r;n&&(t=e.style.width,r=e.style.height,(t||r)&&(e.style.width=n.w+"px",e.style.height=n.h+"px",e.removeAttribute("data-mce-style")),t=e.width,r=e.height,(t||r)&&(e.setAttribute("width",n.w),e.setAttribute("height",n.h)))},getNaturalImageSize:function bn(e){return{w:e.naturalWidth,h:e.naturalHeight}}},ee=(Q="function",function(e){return function(e){if(null===e)return"null";var n=typeof e;return"object"==n&&(Array.prototype.isPrototypeOf(e)||e.constructor&&"Array"===e.constructor.name)?"array":"object"==n&&(String.prototype.isPrototypeOf(e)||e.constructor&&"String"===e.constructor.name)?"string":n}(e)===Q}),ne=Array.prototype.slice,te=(ee(Array.from)&&Array.from,function(e,n){var t;return t=n.reduce(function(e,n){return W(e)?e[n]:undefined},e),W(t)?t:null}),re=function(n){return new q(function(t){var e=new v.FileReader;e.onload=function(e){var n=e.target;t(n.result)},e.readAsText(n)})},oe=function(n,r,o){return new q(function(e){var t;(t=new v.XMLHttpRequest).onreadystatechange=function(){4===t.readyState&&e({status:t.status,blob:this.response})},t.open("GET",n,!0),t.withCredentials=o,i.each(r,function(e,n){t.setRequestHeader(n,e)}),t.responseType="blob",t.send()})},ie=function(e){var n;try{n=JSON.parse(e)}catch(t){}return n},ue=[{code:404,message:"Could not find Image Proxy"},{code:403,message:"Rejected request"},{code:0,message:"Incorrect Image Proxy URL"}],ae=[{type:"key_missing",message:"The request did not include an api key."},{type:"key_not_found",message:"The provided api key could not be found."},{type:"domain_not_trusted",message:"The api key is not valid for the request origins."}],ce=function(e,n){return function(e){return 400===e||403===e||500===e}(e)?J(0,n):Y(e)},se=Y;function fe(e,n,t){return n?K(e,n):function r(e,n){return oe(e,{},n).then(function(e){return e.status<200||300<=e.status?se(e.status):q.resolve(e.blob)})}(e,t)}function le(e,n,t){return 0!=(e.compareDocumentPosition(n)&t)}function de(e,n){var t=function(e,n){for(var t=0;t<e.length;t++){var r=e[t];if(r.test(n))return r}return undefined}(e,n);if(!t)return{major:0,minor:0};function r(e){return Number(n.replace(t,"$"+e))}return Ce(r(1),r(2))}function me(e,n){return function(){return n===e}}function he(e,n){return function(){return n===e}}function ge(e,n){var t=String(n).toLowerCase();return X(e,function(e){return e.search(t)})}function ve(e,n){return-1!==e.indexOf(n)}function pe(n){return function(e){return ve(e,n)}}function we(e,n){return function(e,n){return X(e.dom().childNodes,function(e){return n(Je.fromDom(e))}).map(Je.fromDom)}(e,function(e){return function(e,n){var t=e.dom();if(t.nodeType!==Qe)return!1;var r=t;if(r.matches!==undefined)return r.matches(n);if(r.msMatchesSelector!==undefined)return r.msMatchesSelector(n);if(r.webkitMatchesSelector!==undefined)return r.webkitMatchesSelector(n);if(r.mozMatchesSelector!==undefined)return r.mozMatchesSelector(n);throw new Error("Browser lacks native selectors")}(e,n)})}function ye(e){return we(Je.fromDom(e),"img")}function be(e,n){return e.dom.is(n,"figure")}function Ee(e,n){e.notificationManager.open({text:n,type:"error"})}function Oe(e){var n=e.selection.getNode();return be(e,n)?ye(n):p.some(Je.fromDom(n))}function Te(e,n){var t,r=n.src;return nn(e,n)?fe(n.src,null,function(e,n){return-1!==i.inArray(function(e){return e.getParam("imagetools_credentials_hosts",[],"string[]")}(e),new $(n.src).host)}(e,n)):en(e,n)?function(e){return C(e)}(n):(r=function(e){return e.getParam("imagetools_proxy")}(e),r+=(-1===r.indexOf("?")?"?":"&")+"url="+encodeURIComponent(n.src),t=function(e){return e.getParam("api_key",e.getParam("imagetools_api_key","","string"),"string")}(e),fe(r,t,!1))}function Ie(e,n){return function(e){return p.from(e.getParam("imagetools_fetch_image",null,"function"))}(e).fold(function(){return Te(e,n)},function(e){return e(n)})}function Ne(e,n){var t;return(t=e.editorUpload.blobCache.getByUri(n.src))?q.resolve(t.blob()):Ie(e,n)}function Se(e){H.clearTimeout(e.get())}function _e(i,u,a,c,s,f){return u.toBlob().then(function(e){var n,t,r,o;return r=i.editorUpload.blobCache,n=s.src,function(e){return e.getParam("images_reuse_filename",!1,"boolean")}(i)&&(t=(o=r.getByUri(n))?(n=o.uri(),o.name()):function(e,n){var t=n.match(/\/([^\/\?]+)?\.(?:jpeg|jpg|png|gif)(?:\?|$)/i);return t?e.dom.encode(t[1]):null}(i,n)),o=r.create({id:"imagetools"+Ze++,blob:e,base64:u.toBase64(),uri:n,name:t}),r.add(o),i.undoManager.transact(function(){i.$(s).on("load",function e(){i.$(s).off("load",e),i.nodeChanged(),a?i.editorUpload.uploadImagesAuto():(Se(c),function(e,n){var t=H.setEditorTimeout(e,function(){e.editorUpload.uploadImagesAuto()},function(e){return e.getParam("images_upload_timeout",3e4,"number")}(e));n.set(t)}(i,c))}),f&&i.$(s).attr({width:f.w,height:f.h}),i.$(s).attr({src:o.blobUri()}).removeAttr("data-mce-src")}),o})}function xe(t,r,e,o){return function(){return Oe(t).fold(function(){Ee(t,"Could not find selected image")},function(n){return t._scanForImages().then(function(){return Ne(t,n.dom())}).then(z).then(e).then(function(e){return _e(t,e,!1,r,n.dom(),o)},function(e){Ee(t,e)})})}}var Re=function(e,n){return le(e,n,v.Node.DOCUMENT_POSITION_CONTAINED_BY)},Ae=function(){return Ce(0,0)},Ce=function(e,n){return{major:e,minor:n}},De={nu:Ce,detect:function(e,n){var t=String(n).toLowerCase();return 0===e.length?Ae():de(e,t)},unknown:Ae},Ue="Firefox",Le=function(e){var n=e.current;return{current:n,version:e.version,isEdge:me("Edge",n),isChrome:me("Chrome",n),isIE:me("IE",n),isOpera:me("Opera",n),isFirefox:me(Ue,n),isSafari:me("Safari",n)}},ke={unknown:function(){return Le({current:undefined,version:De.unknown()})},nu:Le,edge:d("Edge"),chrome:d("Chrome"),ie:d("IE"),opera:d("Opera"),firefox:d(Ue),safari:d("Safari")},je="Windows",Pe="Android",Me="Solaris",Be="FreeBSD",Fe=function(e){var n=e.current;return{current:n,version:e.version,isWindows:he(je,n),isiOS:he("iOS",n),isAndroid:he(Pe,n),isOSX:he("OSX",n),isLinux:he("Linux",n),isSolaris:he(Me,n),isFreeBSD:he(Be,n)}},ze={unknown:function(){return Fe({current:undefined,version:De.unknown()})},nu:Fe,windows:d(je),ios:d("iOS"),android:d(Pe),linux:d("Linux"),osx:d("OSX"),solaris:d(Me),freebsd:d(Be)},He=function(e,t){return ge(e,t).map(function(e){var n=De.detect(e.versionRegexes,t);return{current:e.name,version:n}})},qe=function(e,t){return ge(e,t).map(function(e){var n=De.detect(e.versionRegexes,t);return{current:e.name,version:n}})},$e=/.*?version\/\ ?([0-9]+)\.([0-9]+).*/,Xe=[{name:"Edge",versionRegexes:[/.*?edge\/ ?([0-9]+)\.([0-9]+)$/],search:function(e){return ve(e,"edge/")&&ve(e,"chrome")&&ve(e,"safari")&&ve(e,"applewebkit")}},{name:"Chrome",versionRegexes:[/.*?chrome\/([0-9]+)\.([0-9]+).*/,$e],search:function(e){return ve(e,"chrome")&&!ve(e,"chromeframe")}},{name:"IE",versionRegexes:[/.*?msie\ ?([0-9]+)\.([0-9]+).*/,/.*?rv:([0-9]+)\.([0-9]+).*/],search:function(e){return ve(e,"msie")||ve(e,"trident")}},{name:"Opera",versionRegexes:[$e,/.*?opera\/([0-9]+)\.([0-9]+).*/],search:pe("opera")},{name:"Firefox",versionRegexes:[/.*?firefox\/\ ?([0-9]+)\.([0-9]+).*/],search:pe("firefox")},{name:"Safari",versionRegexes:[$e,/.*?cpu os ([0-9]+)_([0-9]+).*/],search:function(e){return(ve(e,"safari")||ve(e,"mobile/"))&&ve(e,"applewebkit")}}],We=[{name:"Windows",search:pe("win"),versionRegexes:[/.*?windows\ nt\ ?([0-9]+)\.([0-9]+).*/]},{name:"iOS",search:function(e){return ve(e,"iphone")||ve(e,"ipad")},versionRegexes:[/.*?version\/\ ?([0-9]+)\.([0-9]+).*/,/.*cpu os ([0-9]+)_([0-9]+).*/,/.*cpu iphone os ([0-9]+)_([0-9]+).*/]},{name:"Android",search:pe("android"),versionRegexes:[/.*?android\ ?([0-9]+)\.([0-9]+).*/]},{name:"OSX",search:pe("os x"),versionRegexes:[/.*?os\ x\ ?([0-9]+)_([0-9]+).*/]},{name:"Linux",search:pe("linux"),versionRegexes:[]},{name:"Solaris",search:pe("sunos"),versionRegexes:[]},{name:"FreeBSD",search:pe("freebsd"),versionRegexes:[]}],Ge={browsers:d(Xe),oses:d(We)},Ye=r(function(e,n){var t=Ge.browsers(),r=Ge.oses(),o=He(t,e).fold(ke.unknown,ke.nu),i=qe(r,e).fold(ze.unknown,ze.nu);return{browser:o,os:i,deviceType:function(e,n,t,r){var o=e.isiOS()&&!0===/ipad/i.test(t),i=e.isiOS()&&!o,u=e.isiOS()||e.isAndroid(),a=u||r("(pointer:coarse)"),c=o||!i&&u&&r("(min-device-width:768px)"),s=i||u&&!c,f=n.isSafari()&&e.isiOS()&&!1===/safari/i.test(t),l=!s&&!c&&!f;return{isiPad:d(o),isiPhone:d(i),isTablet:d(c),isPhone:d(s),isTouch:d(a),isAndroid:e.isAndroid,isiOS:e.isiOS,isWebView:d(f),isDesktop:d(l)}}(i,o,e,n)}}(v.navigator.userAgent,function(e){return v.window.matchMedia(e).matches})),Ve=function(e){if(null===e||e===undefined)throw new Error("Node cannot be null or undefined");return{dom:d(e)}},Je={fromHtml:function(e,n){var t=(n||v.document).createElement("div");if(t.innerHTML=e,!t.hasChildNodes()||1<t.childNodes.length)throw v.console.error("HTML does not have a single root node",e),new Error("HTML must have a single root node");return Ve(t.childNodes[0])},fromTag:function(e,n){var t=(n||v.document).createElement(e);return Ve(t)},fromText:function(e,n){var t=(n||v.document).createTextNode(e);return Ve(t)},fromDom:Ve,fromPoint:function(e,n,t){var r=e.dom();return p.from(r.elementFromPoint(n,t)).map(Ve)}},Ke=(v.Node.ATTRIBUTE_NODE,v.Node.CDATA_SECTION_NODE,v.Node.COMMENT_NODE,v.Node.DOCUMENT_NODE,v.Node.DOCUMENT_TYPE_NODE,v.Node.DOCUMENT_FRAGMENT_NODE,v.Node.ELEMENT_NODE),Qe=(v.Node.TEXT_NODE,v.Node.PROCESSING_INSTRUCTION_NODE,v.Node.ENTITY_REFERENCE_NODE,v.Node.ENTITY_NODE,v.Node.NOTATION_NODE,Ke),Ze=(Ye.get().browser.isIE(),"undefined"!=typeof v.window?v.window:Function("return this;")(),0),en=function(e,n){var t=n.src;return 0===t.indexOf("data:")||0===t.indexOf("blob:")||new $(t).host===e.documentBaseURI.host},nn=function(e,n){return-1!==i.inArray(function(e){return e.getParam("imagetools_cors_hosts",[],"string[]")}(e),new $(n.src).host)},tn=function(n,t,r){return function(){var e=Oe(n).fold(function(){return null},function(e){var n=Z.getImageSize(e.dom());return n?{w:n.h,h:n.w}:null});return xe(n,t,function(e){return function(e,n){return B(e,n)}(e,r)},e)()}},rn=function(e,n,t){return function(){return xe(e,n,function(e){return function(e,n){return F(e,n)}(e,t)})()}},on=function(n,e){function t(e){return function(e){return n.dom.is(e,"img:not([data-mce-object],[data-mce-placeholder])")}(e)&&(en(n,e)||nn(n,e)||n.settings.imagetools_proxy)}return be(n,e)?ye(e).map(function(e){return t(e.dom())?p.some(e.dom()):p.none()}):t(e)?p.some(e):p.none()},un=Se,an=Ne,cn=Oe,sn=function(n,t,r,o,i){return new q(function(e){(function(e){return D(e)})(i).then(function(e){var n=Z.getNaturalImageSize(e);return o.w===n.w&&o.h===n.h||Z.getImageSize(r)&&Z.setImageSize(r,n),v.URL.revokeObjectURL(e.src),i}).then(z).then(function(e){return _e(n,e,!0,t,r)},function(){})})},fn=d("save-state"),ln=d("disable"),dn=d("enable"),mn=function(i,u){return function(){var r=cn(i),o=r.map(function(e){return Z.getNaturalImageSize(e.dom())});cn(i).each(function(n){on(i,n.dom()).each(function(e){an(i,n.dom()).then(function(e){var n=function(e){return{blob:e,url:v.URL.createObjectURL(e)}}(e);i.windowManager.open(function(e){return{title:"Edit Image",size:"large",body:{type:"panel",items:[{type:"imagetools",name:"imagetools",label:"Edit Image",currentState:e}]},buttons:[{type:"cancel",name:"cancel",text:"Cancel"},{type:"submit",name:"save",text:"Save",primary:!0,disabled:!0}],onSubmit:function(e){var t=e.getData().imagetools.blob;r.each(function(n){o.each(function(e){sn(i,u,n.dom(),e,t)})}),e.close()},onCancel:function(){},onAction:function(e,n){switch(n.name){case fn():n.value?e.enable("save"):e.disable("save");break;case ln():e.disable("save"),e.disable("cancel");break;case dn():e.enable("cancel")}}}}(n))})})})}},hn=function(t,e){i.each({mceImageRotateLeft:tn(t,e,-90),mceImageRotateRight:tn(t,e,90),mceImageFlipVertical:rn(t,e,"v"),mceImageFlipHorizontal:rn(t,e,"h"),mceEditImage:mn(t,e)},function(e,n){t.addCommand(n,e)})},gn=function(t,r,o){t.on("NodeChange",function(e){var n=o.get();n&&n.src!==e.element.src&&(un(r),t.editorUpload.uploadImagesAuto(),o.set(null)),on(t,e.element).each(o.set)})},vn=function(r){function n(e){return function(){return r.execCommand(e)}}r.ui.registry.addButton("rotateleft",{tooltip:"Rotate counterclockwise",icon:"rotate-left",onAction:n("mceImageRotateLeft")}),r.ui.registry.addButton("rotateright",{tooltip:"Rotate clockwise",icon:"rotate-right",onAction:n("mceImageRotateRight")}),r.ui.registry.addButton("flipv",{tooltip:"Flip vertically",icon:"flip-vertically",onAction:n("mceImageFlipVertical")}),r.ui.registry.addButton("fliph",{tooltip:"Flip horizontally",icon:"flip-horizontally",onAction:n("mceImageFlipHorizontal")}),r.ui.registry.addButton("editimage",{tooltip:"Edit image",icon:"edit-image",onAction:n("mceEditImage"),onSetup:function(t){function e(){cn(r).each(function(e){var n=on(r,e.dom()).isNone();t.setDisabled(n)})}return r.on("NodeChange",e),function(){r.off("NodeChange",e)}}}),r.ui.registry.addButton("imageoptions",{tooltip:"Image options",icon:"image-options",onAction:n("mceImage")}),r.ui.registry.addContextMenu("imagetools",{update:function(e){return on(r,e).fold(function(){return[]},function(e){return[{text:"Edit image",icon:"edit-image",onAction:n("mceEditImage")}]})}})},pn=function(n){n.ui.registry.addContextToolbar("imagetools",{items:function(e){return e.getParam("imagetools_toolbar","rotateleft rotateright flipv fliph editimage imageoptions")}(n),predicate:function(e){return on(n,e).isSome()},position:"node",scope:"node"})};!function En(){o.add("imagetools",function(e){var n=r(0),t=r(null);hn(e,n),vn(e),pn(e),gn(e,n,t)})}()}(window);
\ No newline at end of file
diff --git a/admin/js/vendors/tinymce/js/tinymce/plugins/importcss/plugin.min.js b/admin/js/vendors/tinymce/js/tinymce/plugins/importcss/plugin.min.js
new file mode 100644 (file)
index 0000000..df28852
--- /dev/null
@@ -0,0 +1,9 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ *
+ * Version: 5.1.5 (2019-12-19)
+ */
+!function(){"use strict";function t(){}function n(t){return function(){return t}}function e(){return h}var r,o=tinymce.util.Tools.resolve("tinymce.PluginManager"),a=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),f=tinymce.util.Tools.resolve("tinymce.EditorManager"),l=tinymce.util.Tools.resolve("tinymce.Env"),m=tinymce.util.Tools.resolve("tinymce.util.Tools"),c=function(t){return t.getParam("importcss_merge_classes")},i=function(t){return t.getParam("importcss_exclusive")},p=function(t){return t.getParam("importcss_selector_converter")},g=function(t){return t.getParam("importcss_selector_filter")},y=function(t){return t.getParam("importcss_groups")},v=function(t){return t.getParam("importcss_append")},d=function(t){return t.getParam("importcss_file_filter")},u=n(!1),s=n(!0),h=(r={fold:function(t,n){return t()},is:u,isSome:u,isNone:s,getOr:O,getOrThunk:x,getOrDie:function(t){throw new Error(t||"error: getOrDie called on none.")},getOrNull:n(null),getOrUndefined:n(undefined),or:O,orThunk:x,map:e,each:t,bind:e,exists:u,forall:s,filter:e,equals:_,equals_:_,toArray:function(){return[]},toString:n("none()")},Object.freeze&&Object.freeze(r),r);function _(t){return t.isNone()}function x(t){return t()}function O(t){return t}function T(n){return function(t){return function(t){if(null===t)return"null";var n=typeof t;return"object"==n&&(Array.prototype.isPrototypeOf(t)||t.constructor&&"Array"===t.constructor.name)?"array":"object"==n&&(String.prototype.isPrototypeOf(t)||t.constructor&&"String"===t.constructor.name)?"string":n}(t)===n}}function b(t,n){return function(t){for(var n=[],e=0,r=t.length;e<r;++e){if(!w(t[e]))throw new Error("Arr.flatten item "+e+" was not an array, input: "+t);M.apply(n,t[e])}return n}(function(t,n){for(var e=t.length,r=new Array(e),o=0;o<e;o++){var i=t[o];r[o]=n(i,o)}return r}(t,n))}function k(n){return"string"==typeof n?function(t){return-1!==t.indexOf(n)}:n instanceof RegExp?function(t){return n.test(t)}:n}function S(i,t,u){var c=[],e={};function s(t,n){var e,r=t.href;if((r=function(t){var n=l.cacheSuffix;return"string"==typeof t&&(t=t.replace("?"+n,"").replace("&"+n,"")),t}(r))&&u(r,n)&&!function(t,n){var e=t.settings,r=!1!==e.skin&&(e.skin||"oxide");if(r){var o=e.skin_url?t.documentBaseURI.toAbsolute(e.skin_url):f.baseURL+"/skins/ui/"+r,i=f.baseURL+"/skins/content/";return n===o+"/content"+(t.inline?".inline":"")+".min.css"||-1!==n.indexOf(i)}return!1}(i,r)){m.each(t.imports,function(t){s(t,!0)});try{e=t.cssRules||t.rules}catch(o){}m.each(e,function(t){t.styleSheet?s(t.styleSheet,!0):t.selectorText&&m.each(t.selectorText.split(","),function(t){c.push(m.trim(t))})})}}m.each(i.contentCSS,function(t){e[t]=!0}),u=u||function(t,n){return n||e[t]};try{m.each(t.styleSheets,function(t){s(t)})}catch(n){}return c}function A(t,n){var e,r=/^(?:([a-z0-9\-_]+))?(\.[a-z0-9_\-\.]+)$/i.exec(n);if(r){var o=r[1],i=r[2].substr(1).split(".").join(" "),u=m.makeMap("a,img");return r[1]?(e={title:n},t.schema.getTextBlockElements()[o]?e.block=o:t.schema.getBlockElements()[o]||u[o.toLowerCase()]?e.selector=o:e.inline=o):r[2]&&(e={inline:"span",title:n.substr(1),classes:i}),!1!==c(t)?e.classes=i:e.attributes={"class":i},e}}function P(t,n){return null===n||!1!==i(t)}var w=T("array"),E=T("function"),I=Array.prototype.slice,M=Array.prototype.push,j=(E(Array.from)&&Array.from,A),D=function(s){s.on("init",function(t){function r(t,n){if(function(t,n,e,r){return!(P(t,e)?n in r:n in e.selectors)}(s,t,n,i)){!function(t,n,e,r){P(t,e)?r[n]=!0:e.selectors[n]=!0}(s,t,n,i);var e=function(t,n,e,r){return(r&&r.selector_converter?r.selector_converter:p(t)?p(t):function(){return A(t,e)}).call(n,e,r)}(s,s.plugins.importcss,t,n);if(e){var r=e.name||a.DOM.uniqueId();return s.formatter.register(r,e),m.extend({},{title:e.title,format:r})}}return null}var o=function(){var n=[],e=[],r={};return{addItemToGroup:function(t,n){r[t]?r[t].push(n):(e.push(t),r[t]=[n])},addItem:function(t){n.push(t)},toFormats:function(){return b(e,function(t){var n=r[t];return 0===n.length?[]:[{title:t,items:n}]}).concat(n)}}}(),i={},u=k(g(s)),c=function(t){return m.map(t,function(t){return m.extend({},t,{original:t,selectors:{},filter:k(t.filter),item:{text:t.title,menu:[]}})})}(y(s));m.each(S(s,s.getDoc(),k(d(s))),function(e){if(-1===e.indexOf(".mce-")&&(!u||u(e))){var t=function(t,n){return m.grep(t,function(t){return!t.filter||t.filter(n)})}(c,e);if(0<t.length)m.each(t,function(t){var n=r(e,t);n&&o.addItemToGroup(t.title,n)});else{var n=r(e,null);n&&o.addItem(n)}}});var n=o.toFormats();s.fire("addStyleModifications",{items:n,replace:!v(s)})})},R=function(n){return{convertSelectorToFormat:function(t){return j(n,t)}}};!function U(){o.add("importcss",function(t){return D(t),R(t)})}()}();
\ No newline at end of file
diff --git a/admin/js/vendors/tinymce/js/tinymce/plugins/insertdatetime/plugin.min.js b/admin/js/vendors/tinymce/js/tinymce/plugins/insertdatetime/plugin.min.js
new file mode 100644 (file)
index 0000000..584b6f8
--- /dev/null
@@ -0,0 +1,9 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ *
+ * Version: 5.1.5 (2019-12-19)
+ */
+!function(){"use strict";function n(e){return e.getParam("insertdatetime_timeformat",e.translate("%H:%M:%S"))}function r(e){return e.getParam("insertdatetime_formats",["%H:%M:%S","%Y-%m-%d","%I:%M:%S %p","%D"])}function a(e,t){if((e=""+e).length<t)for(var n=0;n<t-e.length;n++)e="0"+e;return e}function i(e,t,n){return n=n||new Date,t=(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=t.replace("%D","%m/%d/%Y")).replace("%r","%I:%M:%S %p")).replace("%Y",""+n.getFullYear())).replace("%y",""+n.getYear())).replace("%m",a(n.getMonth()+1,2))).replace("%d",a(n.getDate(),2))).replace("%H",""+a(n.getHours(),2))).replace("%M",""+a(n.getMinutes(),2))).replace("%S",""+a(n.getSeconds(),2))).replace("%I",""+((n.getHours()+11)%12+1))).replace("%p",n.getHours()<12?"AM":"PM")).replace("%B",""+e.translate(f[n.getMonth()]))).replace("%b",""+e.translate(d[n.getMonth()]))).replace("%A",""+e.translate(s[n.getDay()]))).replace("%a",""+e.translate(l[n.getDay()]))).replace("%%","%")}var e=tinymce.util.Tools.resolve("tinymce.PluginManager"),t=function(e){return e.getParam("insertdatetime_dateformat",e.translate("%Y-%m-%d"))},o=n,u=r,c=function(e){var t=r(e);return 0<t.length?t[0]:n(e)},m=function(e){return e.getParam("insertdatetime_element",!1)},l="Sun Mon Tue Wed Thu Fri Sat Sun".split(" "),s="Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sunday".split(" "),d="Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split(" "),f="January February March April May June July August September October November December".split(" "),p=function(e,t){if(m(e)){var n=i(e,t),r=void 0;r=/%[HMSIp]/.test(t)?i(e,"%Y-%m-%dT%H:%M"):i(e,"%Y-%m-%d");var a=e.dom.getParent(e.selection.getStart(),"time");a?function(e,t,n,r){var a=e.dom.create("time",{datetime:n},r);t.parentNode.insertBefore(a,t),e.dom.remove(t),e.selection.select(a,!0),e.selection.collapse(!1)}(e,a,r,n):e.insertContent('<time datetime="'+r+'">'+n+"</time>")}else e.insertContent(i(e,t))},g=i,y=function(e){e.addCommand("mceInsertDate",function(){p(e,t(e))}),e.addCommand("mceInsertTime",function(){p(e,o(e))})},M=tinymce.util.Tools.resolve("tinymce.util.Tools"),S=function(e){function t(){return n}var n=e;return{get:t,set:function(e){n=e},clone:function(){return S(t())}}},v=function(n){var t=u(n),r=S(c(n));n.ui.registry.addSplitButton("insertdatetime",{icon:"insert-time",tooltip:"Insert date/time",select:function(e){return e===r.get()},fetch:function(e){e(M.map(t,function(e){return{type:"choiceitem",text:g(n,e),value:e}}))},onAction:function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];p(n,r.get())},onItemAction:function(e,t){r.set(t),p(n,t)}});n.ui.registry.addNestedMenuItem("insertdatetime",{icon:"insert-time",text:"Date/time",getSubmenuItems:function(){return M.map(t,function(e){return{type:"menuitem",text:g(n,e),onAction:function(e){return function(){r.set(e),p(n,e)}}(e)}})}})};!function h(){e.add("insertdatetime",function(e){y(e),v(e)})}()}();
\ No newline at end of file
diff --git a/admin/js/vendors/tinymce/js/tinymce/plugins/legacyoutput/plugin.min.js b/admin/js/vendors/tinymce/js/tinymce/plugins/legacyoutput/plugin.min.js
new file mode 100644 (file)
index 0000000..df99090
--- /dev/null
@@ -0,0 +1,9 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ *
+ * Version: 5.1.5 (2019-12-19)
+ */
+!function(){"use strict";var e=tinymce.util.Tools.resolve("tinymce.PluginManager"),a=tinymce.util.Tools.resolve("tinymce.util.Tools"),t=function(e){return e.getParam("font_formats")},i=function(e){return e.getParam("fontsize_formats")},n=function(e,t){e.settings.fontsize_formats=t},l=function(e,t){e.settings.font_formats=t},s=function(e){return e.getParam("font_size_style_values","xx-small,x-small,small,medium,large,x-large,xx-large")},r=function(e,t){e.settings.inline_styles=t},o=function(e){!function(e){r(e,!1),i(e)||n(e,"8pt=1 10pt=2 12pt=3 14pt=4 18pt=5 24pt=6 36pt=7"),t(e)||l(e,"Andale Mono=andale mono,monospace;Arial=arial,helvetica,sans-serif;Arial Black=arial black,sans-serif;Book Antiqua=book antiqua,palatino,serif;Comic Sans MS=comic sans ms,sans-serif;Courier New=courier new,courier,monospace;Georgia=georgia,palatino,serif;Helvetica=helvetica,arial,sans-serif;Impact=impact,sans-serif;Symbol=symbol;Tahoma=tahoma,arial,helvetica,sans-serif;Terminal=terminal,monaco,monospace;Times New Roman=times new roman,times,serif;Trebuchet MS=trebuchet ms,geneva,sans-serif;Verdana=verdana,geneva,sans-serif;Webdings=webdings;Wingdings=wingdings,zapf dingbats")}(e),e.on("PreInit",function(){return function(e){var t="p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table",i=a.explode(s(e)),n=e.schema;e.formatter.register({alignleft:{selector:t,attributes:{align:"left"}},aligncenter:{selector:t,attributes:{align:"center"}},alignright:{selector:t,attributes:{align:"right"}},alignjustify:{selector:t,attributes:{align:"justify"}},bold:[{inline:"b",remove:"all"},{inline:"strong",remove:"all"},{inline:"span",styles:{fontWeight:"bold"}}],italic:[{inline:"i",remove:"all"},{inline:"em",remove:"all"},{inline:"span",styles:{fontStyle:"italic"}}],underline:[{inline:"u",remove:"all"},{inline:"span",styles:{textDecoration:"underline"},exact:!0}],strikethrough:[{inline:"strike",remove:"all"},{inline:"span",styles:{textDecoration:"line-through"},exact:!0}],fontname:{inline:"font",toggle:!1,attributes:{face:"%value"}},fontsize:{inline:"font",toggle:!1,attributes:{size:function(e){return a.inArray(i,e.value)+1}}},forecolor:{inline:"font",attributes:{color:"%value"},links:!0,remove_similar:!0,clear_child_styles:!0},hilitecolor:{inline:"font",styles:{backgroundColor:"%value"},links:!0,remove_similar:!0,clear_child_styles:!0}}),a.each("b,i,u,strike".split(","),function(e){n.addValidElements(e+"[*]")}),n.getElementRule("font")||n.addValidElements("font[face|size|color|style]"),a.each(t.split(","),function(e){var t=n.getElementRule(e);t&&(t.attributes.align||(t.attributes.align={},t.attributesOrder.push("align")))})}(e)})};!function c(){e.add("legacyoutput",function(e){o(e)})}()}();
\ No newline at end of file
diff --git a/admin/js/vendors/tinymce/js/tinymce/plugins/link/plugin.min.js b/admin/js/vendors/tinymce/js/tinymce/plugins/link/plugin.min.js
new file mode 100644 (file)
index 0000000..a17b394
--- /dev/null
@@ -0,0 +1,9 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ *
+ * Version: 5.1.5 (2019-12-19)
+ */
+!function(c){"use strict";function n(t){return function(n){return function(n){if(null===n)return"null";var t=typeof n;return"object"==t&&(Array.prototype.isPrototypeOf(n)||n.constructor&&"Array"===n.constructor.name)?"array":"object"==t&&(String.prototype.isPrototypeOf(n)||n.constructor&&"String"===n.constructor.name)?"string":t}(n)===t}}function u(){}function i(n){return function(){return n}}function t(){return A}var e,r=tinymce.util.Tools.resolve("tinymce.PluginManager"),o=tinymce.util.Tools.resolve("tinymce.util.VK"),a=n("string"),f=n("array"),l=n("boolean"),s=n("function"),d=function(n){var t=n.getParam("link_assume_external_targets",!1);return l(t)&&t?1:!a(t)||"http"!==t&&"https"!==t?0:t},m=function(n){return n.getParam("link_context_toolbar",!1,"boolean")},h=function(n){return n.getParam("link_list")},p=function(n){return n.getParam("default_link_target")},g=function(n){return n.getParam("target_list",!0)},v=function(n){return n.getParam("rel_list",[],"array")},y=function(n){return n.getParam("link_class_list",[],"array")},w=function(n){return n.getParam("link_title",!0,"boolean")},x=function(n){return n.getParam("allow_unsafe_link_target",!1,"boolean")},k=function(n){return n.getParam("link_quicklink",!1,"boolean")},b=function(n){var t=c.document.createElement("a");t.target="_blank",t.href=n,t.rel="noreferrer noopener";var e=c.document.createEvent("MouseEvents");e.initMouseEvent("click",!0,!0,c.window,0,0,0,0,0,!1,!1,!1,!1,0,null),function(n,t){c.document.body.appendChild(n),n.dispatchEvent(t),c.document.body.removeChild(n)}(t,e)},_=function(){return(_=Object.assign||function(n){for(var t,e=1,r=arguments.length;e<r;e++)for(var o in t=arguments[e])Object.prototype.hasOwnProperty.call(t,o)&&(n[o]=t[o]);return n}).apply(this,arguments)},T=i(!1),O=i(!0),A=(e={fold:function(n,t){return n()},is:T,isSome:T,isNone:O,getOr:N,getOrThunk:P,getOrDie:function(n){throw new Error(n||"error: getOrDie called on none.")},getOrNull:i(null),getOrUndefined:i(undefined),or:N,orThunk:P,map:t,each:u,bind:t,exists:T,forall:O,filter:t,equals:C,equals_:C,toArray:function(){return[]},toString:i("none()")},Object.freeze&&Object.freeze(e),e);function C(n){return n.isNone()}function P(n){return n()}function N(n){return n}function E(n,t){return-1<function(n,t){return Q.call(n,t)}(n,t)}function I(n,t){for(var e=0,r=n.length;e<r;e++){t(n[e],e)}}function S(n){for(var t=[],e=0,r=n.length;e<r;++e){if(!f(n[e]))throw new Error("Arr.flatten item "+e+" was not an array, input: "+n);Y.apply(t,n[e])}return t}function j(n,t){var e=function(n,t){for(var e=n.length,r=new Array(e),o=0;o<e;o++){var i=n[o];r[o]=t(i,o)}return r}(n,t);return S(e)}function F(n){return/^\w+:/i.test(n)}function L(n,t){var e,r,o=["noopener"],i=n?n.split(/\s+/):[],u=function(n){return n.filter(function(n){return-1===Z.inArray(o,n)})},c=t?0<(e=u(e=i)).length?e.concat(o):o:u(i);return 0<c.length?(r=c,Z.trim(r.sort().join(" "))):""}function R(n,t){return t=t||n.selection.getNode(),nn(t)?n.dom.select("a[href]",t)[0]:n.dom.getParent(t,"a[href]")}function D(n){return n&&"A"===n.nodeName&&!!n.href}function U(n){return function(n,t,e){return I(n,function(n){e=t(e,n)}),e}(["title","rel","class","target"],function(t,e){return n[e].each(function(n){t[e]=0<n.length?n:null}),t},{href:n.href})}function M(n,t){var e=_({},t);if(!(0<v(n).length)&&!1===x(n)){var r=L(e.rel,"_blank"===e.target);e.rel=r||null}return J.from(e.target).isNone()&&!1===g(n)&&(e.target=p(n)),e.href=function(n,t){return"http"!==t&&"https"!==t||F(n)?n:t+"://"+n}(e.href,d(n)),e}function z(n,t){for(var e=0;e<n.length;e++){var r=t(n[e],e);if(r.isSome())return r}return J.none()}function q(n){return a(n.value)?n.value:""}function K(t){return void 0===t&&(t=q),function(n){return J.from(n).map(function(n){return function(n,r){var o=[];return Z.each(n,function(n){var t=a(n.text)?n.text:a(n.title)?n.title:"";if(n.menu!==undefined);else{var e=r(n);o.push({text:t,value:e})}}),o}(n,t)})}}function B(t,n,e,r){var o=r[n],i=0<t.length;return o!==undefined?function(t,n){return z(n,function(n){return J.some(n).filter(function(n){return n.value===t})})}(o,e).map(function(n){return{url:{value:n.value,meta:{text:i?t:n.text,attach:u}},text:i?t:n.text}}):J.none()}var V,W,H,$,G=function(e){function n(){return o}function t(n){return n(e)}var r=i(e),o={fold:function(n,t){return t(e)},is:function(n){return e===n},isSome:O,isNone:T,getOr:r,getOrThunk:r,getOrDie:r,getOrNull:r,getOrUndefined:r,or:n,orThunk:n,map:function(n){return G(n(e))},each:function(n){n(e)},bind:t,exists:t,forall:t,filter:function(n){return n(e)?o:A},toArray:function(){return[e]},toString:function(){return"some("+e+")"},equals:function(n){return n.is(e)},equals_:function(n,t){return n.fold(T,function(n){return t(e,n)})}};return o},J={some:G,none:t,from:function(n){return null===n||n===undefined?A:G(n)}},X=Array.prototype.slice,Q=Array.prototype.indexOf,Y=Array.prototype.push,Z=(s(Array.from)&&Array.from,tinymce.util.Tools.resolve("tinymce.util.Tools")),nn=function(n){return n&&"FIGURE"===n.nodeName&&/\bimage\b/i.test(n.className)},tn=function(n,t){var e=n.dom.select("img",t)[0];if(e){var r=n.dom.getParents(e,"a[href]",t)[0];r&&(r.parentNode.insertBefore(e,r),n.dom.remove(r))}},en=function(n,t,e){var r=n.dom.select("img",t)[0];if(r){var o=n.dom.create("a",e);r.parentNode.insertBefore(o,r),o.appendChild(r)}},rn=function(n,t,e){var r=n.selection.getNode(),o=R(n,r),i=M(n,U(e));n.undoManager.transact(function(){e.href===t.href&&t.attach(),o?(n.focus(),function(n,t,e,r){e.each(function(n){t.hasOwnProperty("innerText")?t.innerText=n:t.textContent=n}),n.dom.setAttribs(t,r),n.selection.select(t)}(n,o,e.text,i)):function(t,n,e,r){nn(n)?en(t,n,r):e.fold(function(){t.execCommand("mceInsertLink",!1,r)},function(n){t.insertContent(t.dom.createHTML("a",r,t.dom.encode(n)))})}(n,r,e.text,i)})},on=function(e){e.undoManager.transact(function(){var n=e.selection.getNode();if(nn(n))tn(e,n);else{var t=e.dom.getParent(n,"a[href]",e.getBody());t&&e.dom.remove(t,!0)}e.focus()})},un=function(n){return 0<Z.grep(n,D).length},cn=function(n){var t=n.getAttribute("data-mce-href");return t||n.getAttribute("href")},an=function(n){return!(/</.test(n)&&(!/^<a [^>]+>[^<]+<\/a>$/.test(n)||-1===n.indexOf("href=")))},fn=R,ln=function(n,t){return function(n){return n.replace(/\uFEFF/g,"")}(t?t.innerText||t.textContent:n.getContent({format:"text"}))},sn=L,dn=F,mn={sanitize:function(n){return K(q)(n)},sanitizeWith:K,createUi:function(t,e){return function(n){return{name:t,type:"selectbox",label:e,items:n}}},getValue:q},hn=function(n){function t(){return e}var e=n;return{get:t,set:function(n){e=n},clone:function(){return hn(t())}}},pn=function(n,r){function e(n,t){var e=function(n,t){return"link"===t?n.catalogs.link:"anchor"===t?n.catalogs.anchor:J.none()}(r,t.name).getOr([]);return B(o.get(),t.name,e,n)}var o=hn(n.text);return{onChange:function(n,t){return"url"===t.name?function(n){if(o.get().length<=0){var t=n.url.meta.text!==undefined?n.url.meta.text:n.url.value;return J.some({text:t})}return J.none()}(n()):E(["anchor","link"],t.name)?e(n(),t):("text"===t.name&&o.set(n().text),J.none())}}},gn={},vn={exports:gn};V=undefined,W=gn,H=vn,$=undefined,function(n){"object"==typeof W&&void 0!==H?H.exports=n():"function"==typeof V&&V.amd?V([],n):("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).EphoxContactWrapper=n()}(function(){return function l(i,u,c){function a(t,n){if(!u[t]){if(!i[t]){var e="function"==typeof $&&$;if(!n&&e)return e(t,!0);if(f)return f(t,!0);var r=new Error("Cannot find module '"+t+"'");throw r.code="MODULE_NOT_FOUND",r}var o=u[t]={exports:{}};i[t][0].call(o.exports,function(n){return a(i[t][1][n]||n)},o,o.exports,l,i,u,c)}return u[t].exports}for(var f="function"==typeof $&&$,n=0;n<c.length;n++)a(c[n]);return a}({1:[function(n,t,e){var r,o,i=t.exports={};function u(){throw new Error("setTimeout has not been defined")}function c(){throw new Error("clearTimeout has not been defined")}function a(n){if(r===setTimeout)return setTimeout(n,0);if((r===u||!r)&&setTimeout)return r=setTimeout,setTimeout(n,0);try{return r(n,0)}catch(t){try{return r.call(null,n,0)}catch(t){return r.call(this,n,0)}}}!function(){try{r="function"==typeof setTimeout?setTimeout:u}catch(n){r=u}try{o="function"==typeof clearTimeout?clearTimeout:c}catch(n){o=c}}();var f,l=[],s=!1,d=-1;function m(){s&&f&&(s=!1,f.length?l=f.concat(l):d=-1,l.length&&h())}function h(){if(!s){var n=a(m);s=!0;for(var t=l.length;t;){for(f=l,l=[];++d<t;)f&&f[d].run();d=-1,t=l.length}f=null,s=!1,function e(n){if(o===clearTimeout)return clearTimeout(n);if((o===c||!o)&&clearTimeout)return o=clearTimeout,clearTimeout(n);try{return o(n)}catch(t){try{return o.call(null,n)}catch(t){return o.call(this,n)}}}(n)}}function p(n,t){this.fun=n,this.array=t}function g(){}i.nextTick=function(n){var t=new Array(arguments.length-1);if(1<arguments.length)for(var e=1;e<arguments.length;e++)t[e-1]=arguments[e];l.push(new p(n,t)),1!==l.length||s||a(h)},p.prototype.run=function(){this.fun.apply(null,this.array)},i.title="browser",i.browser=!0,i.env={},i.argv=[],i.version="",i.versions={},i.on=g,i.addListener=g,i.once=g,i.off=g,i.removeListener=g,i.removeAllListeners=g,i.emit=g,i.prependListener=g,i.prependOnceListener=g,i.listeners=function(n){return[]},i.binding=function(n){throw new Error("process.binding is not supported")},i.cwd=function(){return"/"},i.chdir=function(n){throw new Error("process.chdir is not supported")},i.umask=function(){return 0}},{}],2:[function(n,s,t){(function(t){function r(){}function i(n){if("object"!=typeof this)throw new TypeError("Promises must be constructed via new");if("function"!=typeof n)throw new TypeError("not a function");this._state=0,this._handled=!1,this._value=undefined,this._deferreds=[],l(n,this)}function o(r,o){for(;3===r._state;)r=r._value;0!==r._state?(r._handled=!0,i._immediateFn(function(){var n=1===r._state?o.onFulfilled:o.onRejected;if(null!==n){var t;try{t=n(r._value)}catch(e){return void c(o.promise,e)}u(o.promise,t)}else(1===r._state?u:c)(o.promise,r._value)})):r._deferreds.push(o)}function u(n,t){try{if(t===n)throw new TypeError("A promise cannot be resolved with itself.");if(t&&("object"==typeof t||"function"==typeof t)){var e=t.then;if(t instanceof i)return n._state=3,n._value=t,void a(n);if("function"==typeof e)return void l(function r(n,t){return function(){n.apply(t,arguments)}}(e,t),n)}n._state=1,n._value=t,a(n)}catch(o){c(n,o)}}function c(n,t){n._state=2,n._value=t,a(n)}function a(n){2===n._state&&0===n._deferreds.length&&i._immediateFn(function(){n._handled||i._unhandledRejectionFn(n._value)});for(var t=0,e=n._deferreds.length;t<e;t++)o(n,n._deferreds[t]);n._deferreds=null}function f(n,t,e){this.onFulfilled="function"==typeof n?n:null,this.onRejected="function"==typeof t?t:null,this.promise=e}function l(n,t){var e=!1;try{n(function(n){e||(e=!0,u(t,n))},function(n){e||(e=!0,c(t,n))})}catch(r){if(e)return;e=!0,c(t,r)}}var n,e;n=this,e=setTimeout,i.prototype["catch"]=function(n){return this.then(null,n)},i.prototype.then=function(n,t){var e=new this.constructor(r);return o(this,new f(n,t,e)),e},i.all=function(n){var a=Array.prototype.slice.call(n);return new i(function(o,i){if(0===a.length)return o([]);var u=a.length;function c(t,n){try{if(n&&("object"==typeof n||"function"==typeof n)){var e=n.then;if("function"==typeof e)return void e.call(n,function(n){c(t,n)},i)}a[t]=n,0==--u&&o(a)}catch(r){i(r)}}for(var n=0;n<a.length;n++)c(n,a[n])})},i.resolve=function(t){return t&&"object"==typeof t&&t.constructor===i?t:new i(function(n){n(t)})},i.reject=function(e){return new i(function(n,t){t(e)})},i.race=function(o){return new i(function(n,t){for(var e=0,r=o.length;e<r;e++)o[e].then(n,t)})},i._immediateFn="function"==typeof t?function(n){t(n)}:function(n){e(n,0)},i._unhandledRejectionFn=function(n){"undefined"!=typeof console&&console&&console.warn("Possible Unhandled Promise Rejection:",n)},i._setImmediateFn=function(n){i._immediateFn=n},i._setUnhandledRejectionFn=function(n){i._unhandledRejectionFn=n},void 0!==s&&s.exports?s.exports=i:n.Promise||(n.Promise=i)}).call(this,n("timers").setImmediate)},{timers:3}],3:[function(a,n,f){(function(n,t){var r=a("process/browser.js").nextTick,e=Function.prototype.apply,o=Array.prototype.slice,i={},u=0;function c(n,t){this._id=n,this._clearFn=t}f.setTimeout=function(){return new c(e.call(setTimeout,window,arguments),clearTimeout)},f.setInterval=function(){return new c(e.call(setInterval,window,arguments),clearInterval)},f.clearTimeout=f.clearInterval=function(n){n.close()},c.prototype.unref=c.prototype.ref=function(){},c.prototype.close=function(){this._clearFn.call(window,this._id)},f.enroll=function(n,t){clearTimeout(n._idleTimeoutId),n._idleTimeout=t},f.unenroll=function(n){clearTimeout(n._idleTimeoutId),n._idleTimeout=-1},f._unrefActive=f.active=function(n){clearTimeout(n._idleTimeoutId);var t=n._idleTimeout;0<=t&&(n._idleTimeoutId=setTimeout(function(){n._onTimeout&&n._onTimeout()},t))},f.setImmediate="function"==typeof n?n:function(n){var t=u++,e=!(arguments.length<2)&&o.call(arguments,1);return i[t]=!0,r(function(){i[t]&&(e?n.apply(null,e):n.call(null),f.clearImmediate(t))}),t},f.clearImmediate="function"==typeof t?t:function(n){delete i[n]}}).call(this,a("timers").setImmediate,a("timers").clearImmediate)},{"process/browser.js":1,timers:3}],4:[function(n,t,e){var r=n("promise-polyfill"),o="undefined"!=typeof window?window:Function("return this;")();t.exports={boltExport:o.Promise||r}},{"promise-polyfill":2}]},{},[4])(4)});function yn(n){c.setTimeout(function(){throw n},0)}function wn(n){var t=n.href;return 0<t.indexOf("@")&&-1===t.indexOf("//")&&-1===t.indexOf("mailto:")?J.some({message:"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?",preprocess:function(n){return _(_({},n),{href:"mailto:"+t})}}):J.none()}function xn(n,t,e){var r=n.getAttrib(t,e);return null!==r&&0<r.length?J.some(r):J.none()}function kn(n,t){return n.dom.getParent(t,"a[href]")}function bn(n){return kn(n,n.selection.getStart())}function _n(n,t){if(t){var e=cn(t);if(/^#/.test(e)){var r=n.$(e);r.length&&n.selection.scrollIntoView(r[0],!0)}else b(t.href)}}var Tn=vn.exports.boltExport,On=function(n){var e=J.none(),t=[],r=function(n){o()?u(n):t.push(n)},o=function(){return e.isSome()},i=function(n){I(n,u)},u=function(t){e.each(function(n){c.setTimeout(function(){t(n)},0)})};return n(function(n){e=J.some(n),i(t),t=[]}),{get:r,map:function(e){return On(function(t){r(function(n){t(e(n))})})},isReady:o}},An={nu:On,pure:function(t){return On(function(n){n(t)})}},Cn=function(e){function n(n){e().then(n,yn)}return{map:function(n){return Cn(function(){return e().then(n)})},bind:function(t){return Cn(function(){return e().then(function(n){return t(n).toPromise()})})},anonBind:function(n){return Cn(function(){return e().then(function(){return n.toPromise()})})},toLazy:function(){return An.nu(n)},toCached:function(){var n=null;return Cn(function(){return null===n&&(n=e()),n})},toPromise:e,get:n}},Pn=function(n){return Cn(function(){return new Tn(n)})},Nn=function(n){return Cn(function(){return Tn.resolve(n)})},En=tinymce.util.Tools.resolve("tinymce.util.Delay"),In=function(n,t,r){return z([wn,function(e){return function(n){var t=n.href;return 1===e&&!dn(t)||0===e&&/^\s*www[\.|\d\.]/i.test(t)?J.some({message:"The URL you entered seems to be an external link. Do you want to add the required http:// prefix?",preprocess:function(n){return _(_({},n),{href:"http://"+t})}}):J.none()}}(t)],function(n){return n(r)}).fold(function(){return Nn(r)},function(e){return Pn(function(t){!function(t,n,e){var r=t.selection.getRng();En.setEditorTimeout(t,function(){t.windowManager.confirm(n,function(n){t.selection.setRng(r),e(n)})})}(n,e.message,function(n){t(n?e.preprocess(r):r)})})})},Sn=function(n){var t=n.dom.select("a:not([href])"),e=j(t,function(n){var t=n.name||n.id;return t?[{text:t,value:"#"+t}]:[]});return 0<e.length?J.some([{text:"None",value:""}].concat(e)):J.none()},jn=function(n){var t=y(n);return 0<t.length?mn.sanitize(t):J.none()},Fn=tinymce.util.Tools.resolve("tinymce.util.XHR"),Ln=function(t){function e(n){return t.convertURL(n.value||n.url,"href")}var n=h(t);return Pn(function(t){a(n)?Fn.send({url:n,success:function(n){return t(function(n){try{return J.some(JSON.parse(n))}catch(t){return J.none()}}(n))},error:function(n){return t(J.none())}}):s(n)?n(function(n){return t(J.some(n))}):t(J.from(n))}).map(function(n){return n.bind(mn.sanitizeWith(e)).map(function(n){return 0<n.length?[{text:"None",value:""}].concat(n):n})})},Rn=function(n,t){var e=v(n);if(0<e.length){var r=t.is("_blank");return(!1===x(n)?mn.sanitizeWith(function(n){return sn(mn.getValue(n),r)}):mn.sanitize)(e)}return J.none()},Dn=[{text:"Current window",value:""},{text:"New window",value:"_blank"}],Un=function(n){var t=g(n);return f(t)?mn.sanitize(t).orThunk(function(){return J.some(Dn)}):!1===t?J.none():J.some(Dn)},Mn=function(e,r){return Ln(e).map(function(n){var t=function(n,t){var e=n.dom,r=an(n.selection.getContent())?J.some(ln(n.selection,t)):J.none(),o=t?J.some(e.getAttrib(t,"href")):J.none(),i=t?J.from(e.getAttrib(t,"target")):J.none(),u=xn(e,t,"rel"),c=xn(e,t,"class");return{url:o,text:r,title:xn(e,t,"title"),target:i,rel:u,linkClass:c}}(e,r);return{anchor:t,catalogs:{targets:Un(e),rels:Rn(e,t.target),classes:jn(e),anchor:Sn(e),link:n},optNode:J.from(r),flags:{titleEnabled:w(e)}}})},zn=function(t){(function(n){var t=fn(n);return Mn(n,t)})(t).map(function(n){return function(n,t,e){var r=n.anchor.text.map(function(){return{name:"text",type:"input",label:"Text to display"}}).toArray(),o=n.flags.titleEnabled?[{name:"title",type:"input",label:"Title"}]:[],i=function(n,t){return{url:{value:n.anchor.url.getOr(""),meta:{attach:function(){},text:n.anchor.url.fold(function(){return""},function(){return n.anchor.text.getOr("")}),original:{value:n.anchor.url.getOr("")}}},text:n.anchor.text.getOr(""),title:n.anchor.title.getOr(""),anchor:n.anchor.url.getOr(""),link:n.anchor.url.getOr(""),rel:n.anchor.rel.getOr(""),target:n.anchor.target.or(t).getOr(""),linkClass:n.anchor.linkClass.getOr("")}}(n,J.from(p(e))),u=pn(i,n),c=n.catalogs;return{title:"Insert/Edit Link",size:"normal",body:{type:"panel",items:S([[{name:"url",type:"urlinput",filetype:"file",label:"URL"}],r,o,function(n){for(var t=[],e=function(n){t.push(n)},r=0;r<n.length;r++)n[r].each(e);return t}([c.anchor.map(mn.createUi("anchor","Anchors")),c.rels.map(mn.createUi("rel","Rel")),c.targets.map(mn.createUi("target","Open link in...")),c.link.map(mn.createUi("link","Link list")),c.classes.map(mn.createUi("linkClass","Class"))])])},buttons:[{type:"cancel",name:"cancel",text:"Cancel"},{type:"submit",name:"save",text:"Save",primary:!0}],initialData:i,onChange:function(t,n){var e=n.name;u.onChange(t.getData,{name:e}).each(function(n){t.setData(n)})},onSubmit:t}}(n,function(i,u,c){return function(n){var e=n.getData();if(!e.url.value)return on(i),void n.close();function t(t){return J.from(e[t]).filter(function(n){return!u.anchor[t].is(n)})}var r={href:e.url.value,text:t("text"),target:t("target"),rel:t("rel"),"class":t("linkClass"),title:t("title")},o={href:e.url.value,attach:e.url.meta!==undefined&&e.url.meta.attach?e.url.meta.attach:function(){}};In(i,c,r).get(function(n){rn(i,o,n)}),n.close()}}(t,n,d(t)),t)}).get(function(n){t.windowManager.open(n)})},qn=function(n){return function(){zn(n)}},Kn=function(n){return function(){_n(n,bn(n))}},Bn=function(e){e.on("click",function(n){var t=kn(e,n.target);t&&o.metaKeyPressed(n)&&(n.preventDefault(),_n(e,t))}),e.on("keydown",function(n){var t=bn(e);t&&13===n.keyCode&&function(n){return!0===n.altKey&&!1===n.shiftKey&&!1===n.ctrlKey&&!1===n.metaKey}(n)&&(n.preventDefault(),_n(e,t))})},Vn=function(e){return function(t){function n(n){return t.setActive(!e.readonly&&!!fn(e,n.element))}return e.on("NodeChange",n),function(){return e.off("NodeChange",n)}}},Wn=function(e){return function(t){t.setDisabled(!un(e.dom.getParents(e.selection.getStart())));function n(n){return t.setDisabled(!un(n.parents))}return e.on("NodeChange",n),function(){return e.off("NodeChange",n)}}},Hn=function(n){n.addCommand("mceLink",function(){k(n)?n.fire("contexttoolbar-show",{toolbarKey:"quicklink"}):qn(n)()})},$n=function(n){n.addShortcut("Meta+K","",function(){n.execCommand("mceLink")})},Gn=function(n){n.ui.registry.addToggleButton("link",{icon:"link",tooltip:"Insert/edit link",onAction:qn(n),onSetup:Vn(n)}),n.ui.registry.addButton("openlink",{icon:"new-tab",tooltip:"Open link",onAction:Kn(n),onSetup:Wn(n)}),n.ui.registry.addButton("unlink",{icon:"unlink",tooltip:"Remove link",onAction:function(){return on(n)},onSetup:Wn(n)})},Jn=function(n){n.ui.registry.addMenuItem("openlink",{text:"Open link",icon:"new-tab",onAction:Kn(n),onSetup:Wn(n)}),n.ui.registry.addMenuItem("link",{icon:"link",text:"Link...",shortcut:"Meta+K",onAction:qn(n)}),n.ui.registry.addMenuItem("unlink",{icon:"unlink",text:"Remove link",onAction:function(){return on(n)},onSetup:Wn(n)})},Xn=function(t){t.ui.registry.addContextMenu("link",{update:function(n){return un(t.dom.getParents(n,"a"))?"link unlink openlink":"link"}})},Qn=function(i){function n(n){var t=i.selection.getNode();return n.setDisabled(!fn(i,t)),function(){}}i.ui.registry.addContextForm("quicklink",{launch:{type:"contextformtogglebutton",icon:"link",tooltip:"Link",onSetup:Vn(i)},label:"Link",predicate:function(n){return!!fn(i,n)&&m(i)},initValue:function(){var n=fn(i);return n?cn(n):""},commands:[{type:"contextformtogglebutton",icon:"link",tooltip:"Link",primary:!0,onSetup:function(n){var t=i.selection.getNode();return n.setActive(!!fn(i,t)),Vn(i)(n)},onAction:function(n){var t=fn(i),e=n.getValue();if(t)i.dom.setAttrib(t,"href",e),function(n){n.selection.collapse(!1)}(i),n.hide();else{var r={href:e,attach:function(){}},o=an(i.selection.getContent())?J.some(ln(i.selection,t)).filter(function(n){return 0<n.length}).or(J.from(e)):J.none();rn(i,r,{href:e,text:o,title:J.none(),rel:J.none(),target:J.none(),"class":J.none()}),n.hide()}}},{type:"contextformbutton",icon:"unlink",tooltip:"Remove link",onSetup:n,onAction:function(n){on(i),n.hide()}},{type:"contextformbutton",icon:"new-tab",tooltip:"Open link",onSetup:n,onAction:function(n){Kn(i)(),n.hide()}}]})};!function Yn(){r.add("link",function(n){Gn(n),Jn(n),Xn(n),Qn(n),Bn(n),Hn(n),$n(n)})}()}(window);
\ No newline at end of file
diff --git a/admin/js/vendors/tinymce/js/tinymce/plugins/lists/plugin.min.js b/admin/js/vendors/tinymce/js/tinymce/plugins/lists/plugin.min.js
new file mode 100644 (file)
index 0000000..5510bb5
--- /dev/null
@@ -0,0 +1,9 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ *
+ * Version: 5.1.5 (2019-12-19)
+ */
+!function(r){"use strict";function e(){}function l(e){return function(){return e}}function t(t){return function(){for(var e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];return!t.apply(null,e)}}function n(){return a}var o,i=tinymce.util.Tools.resolve("tinymce.PluginManager"),u=l(!1),s=l(!0),a=(o={fold:function(e,n){return e()},is:u,isSome:u,isNone:s,getOr:d,getOrThunk:f,getOrDie:function(e){throw new Error(e||"error: getOrDie called on none.")},getOrNull:l(null),getOrUndefined:l(undefined),or:d,orThunk:f,map:n,each:e,bind:n,exists:u,forall:s,filter:n,equals:c,equals_:c,toArray:function(){return[]},toString:l("none()")},Object.freeze&&Object.freeze(o),o);function c(e){return e.isNone()}function f(e){return e()}function d(e){return e}function m(n){return function(e){return function(e){if(null===e)return"null";var n=typeof e;return"object"==n&&(Array.prototype.isPrototypeOf(e)||e.constructor&&"Array"===e.constructor.name)?"array":"object"==n&&(String.prototype.isPrototypeOf(e)||e.constructor&&"String"===e.constructor.name)?"string":n}(e)===n}}function g(e,n){for(var t=e.length,r=new Array(t),o=0;o<t;o++){var i=e[o];r[o]=n(i,o)}return r}function p(e,n){for(var t=0,r=e.length;t<r;t++){n(e[t],t)}}function v(e,n){for(var t=[],r=0,o=e.length;r<o;r++){var i=e[r];n(i,r)&&t.push(i)}return t}function h(e,n,t){return p(e,function(e){t=n(t,e)}),t}function N(e,n){for(var t=0,r=e.length;t<r;t++){var o=e[t];if(n(o,t))return $e.some(o)}return $e.none()}function y(e,n){return function(e){for(var n=[],t=0,r=e.length;t<r;++t){if(!We(e[t]))throw new Error("Arr.flatten item "+t+" was not an array, input: "+e);Qe.apply(n,e[t])}return n}(g(e,n))}function S(e){return 0===e.length?$e.none():$e.some(e[0])}function O(e){return 0===e.length?$e.none():$e.some(e[e.length-1])}function C(e,n,t){return 0!=(e.compareDocumentPosition(n)&t)}function b(e,n){var t=function(e,n){for(var t=0;t<e.length;t++){var r=e[t];if(r.test(n))return r}return undefined}(e,n);if(!t)return{major:0,minor:0};function r(e){return Number(n.replace(t,"$"+e))}return Ze(r(1),r(2))}function L(e,n){return function(){return n===e}}function T(e,n){return function(){return n===e}}function D(e,n){var t=String(n).toLowerCase();return N(e,function(e){return e.search(t)})}function E(e,n){return-1!==e.indexOf(n)}function w(n){return function(e){return E(e,n)}}function k(e,n){return e.dom()===n.dom()}function A(e,n,t){return e.isSome()&&n.isSome()?$e.some(t(e.getOrDie(),n.getOrDie())):$e.none()}function x(e){return $e.from(e.dom().parentNode).map(bn.fromDom)}function R(e){return g(e.dom().childNodes,bn.fromDom)}function I(e,n){var t=e.dom().childNodes;return $e.from(t[n]).map(bn.fromDom)}function _(e){return I(e,0)}function B(e){return I(e,e.dom().childNodes.length-1)}function P(n,t){x(n).each(function(e){e.dom().insertBefore(t.dom(),n.dom())})}function M(e,n){e.dom().appendChild(n.dom())}function U(n,e){p(e,function(e){M(n,e)})}function F(e){var n=e.dom();null!==n.parentNode&&n.parentNode.removeChild(n)}function j(e,n,t){return e.fire("ListMutation",{action:n,element:t})}function H(e,n){return function(e,n){for(var t=n!==undefined&&null!==n?n:Rn,r=0;r<e.length&&t!==undefined&&null!==t;++r)t=t[e[r]];return t}(e.split("."),n)}function $(e){return e&&"BR"===e.nodeName}function q(e){var n=e.selection.getStart(!0);return e.dom.getParent(n,"OL,UL,DL",Yn(e,n))}function W(e){var n=e.selection.getSelectedBlocks();return Pn.grep(function(t,e){var n=Pn.map(e,function(e){var n=t.dom.getParent(e,"li,dd,dt",Yn(t,e));return n||e});return Bn.unique(n)}(e,n),function(e){return Hn(e)})}function V(e,n){var t=e.dom.getParents(n,"ol,ul",Yn(e,n));return O(t)}function z(e,n){var t,r,o,i,u=e.dom,s=e.schema.getBlockElements(),a=u.createFragment();if(e.settings.forced_root_block&&(o=e.settings.forced_root_block),o&&((r=u.create(o)).tagName===e.settings.forced_root_block&&u.setAttribs(r,e.settings.forced_root_block_attrs),zn(n.firstChild,s)||a.appendChild(r)),n)for(;t=n.firstChild;){var c=t.nodeName;i||"SPAN"===c&&"bookmark"===t.getAttribute("data-mce-type")||(i=!0),zn(t,s)?(a.appendChild(t),r=null):o?(r||(r=u.create(o),a.appendChild(r)),r.appendChild(t)):a.appendChild(t)}return e.settings.forced_root_block?i||r.appendChild(u.create("br",{"data-mce-bogus":"1"})):a.appendChild(u.create("br")),a}function K(e){return e.dom().nodeName.toLowerCase()}function X(e,n){var t=e.dom();!function(e,n){for(var t=xn(e),r=0,o=t.length;r<o;r++){var i=t[r];n(e[i],i)}}(n,function(e,n){!function(e,n,t){if(!(qe(t)||Ve(t)||Ke(t)))throw r.console.error("Invalid call to Attr.set. Key ",n,":: Value ",t,":: Element ",e),new Error("Attribute value was not simple");e.setAttribute(n,t+"")}(t,n,e)})}function Q(e){return h(e.dom().attributes,function(e,n){return e[n.name]=n.value,e},{})}function Y(e,n,t){if(!qe(t))throw r.console.error("Invalid call to CSS.set. Property ",n,":: Value ",t,":: Element ",e),new Error("CSS value must be a string: "+t);!function(e){return e.style!==undefined&&ze(e.style.getPropertyValue)}(e)||e.style.setProperty(n,t)}function G(e){return function(e,n){return bn.fromDom(e.dom().cloneNode(n))}(e,!0)}function J(e,n){var t=function(e,n){var t=bn.fromTag(n),r=Q(e);return X(t,r),t}(e,n);P(e,t);var r=R(e);return U(t,r),F(e),t}function Z(e,n){M(e.item,n.list)}function ee(n,e,t){var r=e.slice(0,t.depth);return O(r).each(function(e){!function(e,n){M(e.list,n),e.item=n}(e,function(e,n,t){var r=bn.fromTag("li",e);return X(r,n),U(r,t),r}(n,t.itemAttributes,t.content)),function(e,n){K(e.list)!==n.listType&&(e.list=J(e.list,n.listType)),X(e.list,n.listAttributes)}(e,t)}),r}function ne(e,n,t){var r=function(e,n,t){for(var r,o,i,u=[],s=0;s<t;s++)u.push((r=e,o=n.listType,void 0,i={list:bn.fromTag(o,r),item:bn.fromTag("li",r)},M(i.list,i.item),i));return u}(e,t,t.depth-n.length);return function(e){for(var n=1;n<e.length;n++)Z(e[n-1],e[n])}(r),function(e,n){for(var t=0;t<e.length-1;t++)r=e[t].item,o="list-style-type",i="none",void 0,u=r.dom(),Y(u,o,i);var r,o,i,u;O(e).each(function(e){X(e.list,n.listAttributes),X(e.item,n.itemAttributes),U(e.item,n.content)})}(r,t),function(e,n){A(O(e),S(n),Z)}(n,r),n.concat(r)}function te(e){return En(e,"OL,UL")}function re(e){return _(e).map(te).getOr(!1)}function oe(e){return 0<e.depth}function ie(e){return e.isSelected}function ue(e){var n=R(e),t=function(e){return B(e).map(te).getOr(!1)}(e)?n.slice(0,-1):n;return g(t,G)}function se(t){p(t,function(n,e){(function(e,n){for(var t=e[n].depth,r=n-1;0<=r;r--){if(e[r].depth===t)return $e.some(e[r]);if(e[r].depth<t)break}return $e.none()})(t,e).each(function(e){!function(e,n){e.listType=n.listType,e.listAttributes=nt({},n.listAttributes)}(n,e)})})}function ae(t,r,o,i){return _(i).filter(te).fold(function(){r.each(function(e){k(e.start,i)&&o.set(!0)});var e=function(n,t,r){return x(n).filter(Zn).map(function(e){return{depth:t,isSelected:r,content:ue(n),itemAttributes:Q(n),listAttributes:Q(e),listType:K(e)}})}(i,t,o.get());r.each(function(e){k(e.end,i)&&o.set(!1)});var n=B(i).filter(te).map(function(e){return tt(t,r,o,e)}).getOr([]);return e.toArray().concat(n)},function(e){return tt(t,r,o,e)})}function ce(t,e){return g(e,function(e){var n=function(e,n){var t=(n||r.document).createDocumentFragment();return p(e,function(e){t.appendChild(e.dom())}),bn.fromDom(t)}(e.content);return bn.fromDom(z(t,n.dom()))})}function fe(e,n){return se(n),function(t,e){var n=h(e,function(e,n){return n.depth>e.length?ne(t,e,n):ee(t,e,n)},[]);return S(n).map(function(e){return e.list})}(e.contentDocument,n).toArray()}function de(e){var n=g(Jn.getSelectedListItems(e),bn.fromDom);return A(N(n,t(re)),N(function(e){var n=Xe.call(e,0);return n.reverse(),n}(n),t(re)),function(e,n){return{start:e,end:n}})}function le(t,e,r){var n=function(e,n){var t=Ge(!1);return g(e,function(e){return{sourceList:e,entries:tt(0,n,t,e)}})}(e,de(t));p(n,function(e){!function(e,n){p(v(e,ie),function(e){return function(e,n){switch(e){case"Indent":n.depth++;break;case"Outdent":n.depth--;break;case"Flatten":n.depth=0}}(n,e)})}(e.entries,r);var n=function(n,e){return y(function(e,n){if(0===e.length)return[];for(var t=n(e[0]),r=[],o=[],i=0,u=e.length;i<u;i++){var s=e[i],a=n(s);a!==t&&(r.push(o),o=[]),t=a,o.push(s)}return 0!==o.length&&r.push(o),r}(e,oe),function(e){return S(e).map(oe).getOr(!1)?fe(n,e):ce(n,e)})}(t,e.entries);p(n,function(e){j(t,"Indent"===r?"IndentList":"OutdentList",e.dom())}),function(n,e){p(e,function(e){P(n,e)})}(e.sourceList,n),F(e.sourceList)})}function me(e){En(e,"dt")&&J(e,"dd")}function ge(n,e,t){p(t,"Indent"===e?me:function(e){return function(n,t){En(t,"dd")?J(t,"dt"):En(t,"dt")&&x(t).each(function(e){return it(n,e.dom(),t.dom())})}(n,e)})}function pe(e,n){if(Mn(e))return{container:e,offset:n};var t=wn.getNode(e,n);return Mn(t)?{container:t,offset:n>=e.childNodes.length?t.data.length:0}:t.previousSibling&&Mn(t.previousSibling)?{container:t.previousSibling,offset:t.previousSibling.data.length}:t.nextSibling&&Mn(t.nextSibling)?{container:t.nextSibling,offset:0}:{container:e,offset:n}}function ve(e,n){var t=g(Jn.getSelectedListRoots(e),bn.fromDom),r=g(Jn.getSelectedDlItems(e),bn.fromDom),o=!1;if(t.length||r.length){var i=e.selection.getBookmark();le(e,t,n),ge(e,n,r),e.selection.moveToBookmark(i),e.selection.setRng(ut(e.selection.getRng())),e.nodeChanged(),o=!0}return o}function he(e){return ve(e,"Indent")}function Ne(e){return ve(e,"Outdent")}function ye(e){return ve(e,"Flatten")}function Se(e){return/\btox\-/.test(e.className)}function Oe(e){switch(e){case"UL":return"ToggleUlList";case"OL":return"ToggleOlList";case"DL":return"ToggleDLList"}}function Ce(t,e){Pn.each(e,function(e,n){t.setAttribute(n,e)})}function be(e,n,t){!function(e,n,t){var r=t["list-style-type"]?t["list-style-type"]:null;e.setStyle(n,"list-style-type",r)}(e,n,t),function(e,n,t){Ce(n,t["list-attributes"]),Pn.each(e.select("li",n),function(e){Ce(e,t["list-item-attributes"])})}(e,n,t)}function Le(e,n,t,r){var o,i;for(o=n[t?"startContainer":"endContainer"],i=n[t?"startOffset":"endOffset"],1===o.nodeType&&(o=o.childNodes[Math.min(i,o.childNodes.length-1)]||o),!t&&qn(o.nextSibling)&&(o=o.nextSibling);o.parentNode!==r;){if(Vn(e,o))return o;if(/^(TD|TH)$/.test(o.parentNode.nodeName))return o;o=o.parentNode}return o}function Te(r,o,i){void 0===i&&(i={});var e,n=r.selection.getRng(!0),u="LI",t=Jn.getClosestListRootElm(r,r.selection.getStart(!0)),s=r.dom;"false"!==s.getContentEditable(r.selection.getNode())&&("DL"===(o=o.toUpperCase())&&(u="DT"),e=ct(n),Pn.each(function(t,e,r){for(var o,i=[],u=t.dom,n=Le(t,e,!0,r),s=Le(t,e,!1,r),a=[],c=n;c&&(a.push(c),c!==s);c=c.nextSibling);return Pn.each(a,function(e){if(Vn(t,e))return i.push(e),void(o=null);if(u.isBlock(e)||qn(e))return qn(e)&&u.remove(e),void(o=null);var n=e.nextSibling;st.isBookmarkNode(e)&&(Vn(t,n)||!n&&e.parentNode===r)?o=null:(o||(o=u.create("p"),e.parentNode.insertBefore(o,e),i.push(o)),o.appendChild(e))}),i}(r,n,t),function(e){var n,t;(t=e.previousSibling)&&Un(t)&&t.nodeName===o&&function(e,n,t){var r=e.getStyle(n,"list-style-type"),o=t?t["list-style-type"]:"";return r===(o=null===o?"":o)}(s,t,i)?(n=t,e=s.rename(e,u),t.appendChild(e)):(n=s.create(o),e.parentNode.insertBefore(n,e),n.appendChild(e),e=s.rename(e,u)),function(t,r,e){Pn.each(e,function(e){var n;return t.setStyle(r,((n={})[e]="",n))})}(s,e,["margin","margin-right","margin-bottom","margin-left","margin-top","padding","padding-right","padding-bottom","padding-left","padding-top"]),be(s,n,i),dt(r.dom,n)}),r.selection.setRng(ft(e)))}function De(e,n,t){return function(e,n){return e&&n&&Un(e)&&e.nodeName===n.nodeName}(n,t)&&function(e,n,t){return e.getStyle(n,"list-style-type",!0)===e.getStyle(t,"list-style-type",!0)}(e,n,t)&&function(e,n){return e.className===n.className}(n,t)}function Ee(n,e,t,r,o){if(e.nodeName!==r||lt(o)){var i=ct(n.selection.getRng(!0));Pn.each([e].concat(t),function(e){!function(e,n,t,r){if(n.nodeName!==t){var o=e.dom.rename(n,t);be(e.dom,o,r),j(e,Oe(t),o)}else be(e.dom,n,r),j(e,Oe(t),n)}(n,e,r,o)}),n.selection.setRng(ft(i))}else ye(n)}function we(e,n){var t,r=n.parentNode;"LI"===r.nodeName&&r.firstChild===n&&((t=r.previousSibling)&&"LI"===t.nodeName?(t.appendChild(n),Xn(e,r)&&gt.remove(r)):gt.setStyle(r,"listStyleType","none")),Un(r)&&(t=r.previousSibling)&&"LI"===t.nodeName&&t.appendChild(n)}function ke(e,n,t,r){var o=n.startContainer,i=n.startOffset;if(Mn(o)&&(t?i<o.data.length:0<i))return o;var u=e.schema.getNonEmptyElements();1===o.nodeType&&(o=wn.getNode(o,i));var s=new kn(o,r);for(t&&Kn(e.dom,o)&&s.next();o=s[t?"next":"prev2"]();){if("LI"===o.nodeName&&!o.hasChildNodes())return o;if(u[o.nodeName])return o;if(Mn(o)&&0<o.data.length)return o}}function Ae(e,n){var t=n.childNodes;return 1===t.length&&!Un(t[0])&&e.isBlock(t[0])}function xe(e,n,t){var r,o;if(o=Ae(e,t)?t.firstChild:t,function(e,n){Ae(e,n)&&e.remove(n.firstChild,!0)}(e,n),!Xn(e,n,!0))for(;r=n.firstChild;)o.appendChild(r)}function Re(n,e,t){var r,o,i=e.parentNode;if(Qn(n,e)&&Qn(n,t)){Un(t.lastChild)&&(o=t.lastChild),i===t.lastChild&&qn(i.previousSibling)&&n.remove(i.previousSibling),(r=t.lastChild)&&qn(r)&&e.hasChildNodes()&&n.remove(r),Xn(n,t,!0)&&n.$(t).empty(),xe(n,e,t),o&&t.appendChild(o);var u=Dn(bn.fromDom(t),bn.fromDom(e))?n.getParents(e,Un,t):[];n.remove(e),p(u,function(e){Xn(n,e)&&e!==n.getRoot()&&n.remove(e)})}}function Ie(e,n,t,r){var o=e.dom;if(o.isEmpty(r))!function(e,n,t){e.dom.$(t).empty(),Re(e.dom,n,t),e.selection.setCursorLocation(t)}(e,t,r);else{var i=ct(n);Re(o,t,r),e.selection.setRng(ft(i))}}function _e(e,n){var t=e.dom,r=e.selection,o=r.getStart(),i=Jn.getClosestListRootElm(e,o),u=t.getParent(r.getStart(),"LI",i);if(u){var s=u.parentNode;if(s===e.getBody()&&Xn(t,s))return!0;var a=ut(r.getRng()),c=t.getParent(ke(e,a,n,i),"LI",i);if(c&&c!==u)return e.undoManager.transact(function(){n?Ie(e,a,c,u):Wn(u)?Ne(e):function(e,n,t,r){var o=ct(n);Re(e.dom,t,r);var i=ft(o);e.selection.setRng(i)}(e,a,u,c)}),!0;if(!c&&!n&&0===a.startOffset&&0===a.endOffset)return e.undoManager.transact(function(){ye(e)}),!0}return!1}function Be(e,n){return _e(e,n)||function(e,n){var t=e.dom,r=e.selection.getStart(),o=Jn.getClosestListRootElm(e,r),i=t.getParent(r,t.isBlock,o);if(i&&t.isEmpty(i)){var u=ut(e.selection.getRng()),s=t.getParent(ke(e,u,n,o),"LI",o);if(s)return e.undoManager.transact(function(){!function(e,n,t){var r=e.getParent(n.parentNode,e.isBlock,t);e.remove(n),r&&e.isEmpty(r)&&e.remove(r)}(t,i,o),mt.mergeWithAdjacentLists(t,s.parentNode),e.selection.select(s,!0),e.selection.collapse(n)}),!0}return!1}(e,n)}function Pe(e,n){return e.selection.isCollapsed()?Be(e,n):function(e){var n=e.selection.getStart(),t=Jn.getClosestListRootElm(e,n);return!!(e.dom.getParent(n,"LI,DT,DD",t)||0<Jn.getSelectedListItems(e).length)&&(e.undoManager.transact(function(){e.execCommand("Delete"),pt(e.dom,e.getBody())}),!0)}(e)}function Me(n,t){return function(){var e=n.dom.getParent(n.selection.getStart(),"UL,OL,DL");return e&&e.nodeName===t}}function Ue(n,i){return function(o){function e(e){var n=function(e,n){for(var t=0;t<e.length;t++){if(n(e[t]))return t}return-1}(e.parents,$n),t=-1!==n?e.parents.slice(0,n):e.parents,r=Pn.grep(t,Un);o.setActive(0<r.length&&r[0].nodeName===i&&!Se(r[0]))}return n.on("NodeChange",e),function(){return n.off("NodeChange",e)}}}var Fe,je,He=function(t){function e(){return o}function n(e){return e(t)}var r=l(t),o={fold:function(e,n){return n(t)},is:function(e){return t===e},isSome:s,isNone:u,getOr:r,getOrThunk:r,getOrDie:r,getOrNull:r,getOrUndefined:r,or:e,orThunk:e,map:function(e){return He(e(t))},each:function(e){e(t)},bind:n,exists:n,forall:n,filter:function(e){return e(t)?o:a},toArray:function(){return[t]},toString:function(){return"some("+t+")"},equals:function(e){return e.is(t)},equals_:function(e,n){return e.fold(u,function(e){return n(t,e)})}};return o},$e={some:He,none:n,from:function(e){return null===e||e===undefined?a:He(e)}},qe=m("string"),We=m("array"),Ve=m("boolean"),ze=m("function"),Ke=m("number"),Xe=Array.prototype.slice,Qe=Array.prototype.push,Ye=(ze(Array.from)&&Array.from,function(e,n){return C(e,n,r.Node.DOCUMENT_POSITION_CONTAINED_BY)}),Ge=function(e){function n(){return t}var t=e;return{get:n,set:function(e){t=e},clone:function(){return Ge(n())}}},Je=function(){return Ze(0,0)},Ze=function(e,n){return{major:e,minor:n}},en={nu:Ze,detect:function(e,n){var t=String(n).toLowerCase();return 0===e.length?Je():b(e,t)},unknown:Je},nn="Edge",tn="Chrome",rn="Opera",on="Firefox",un="Safari",sn=function(e){var n=e.current;return{current:n,version:e.version,isEdge:L(nn,n),isChrome:L(tn,n),isIE:L("IE",n),isOpera:L(rn,n),isFirefox:L(on,n),isSafari:L(un,n)}},an={unknown:function(){return sn({current:undefined,version:en.unknown()})},nu:sn,edge:l(nn),chrome:l(tn),ie:l("IE"),opera:l(rn),firefox:l(on),safari:l(un)},cn="Windows",fn="Android",dn="Solaris",ln="FreeBSD",mn=function(e){var n=e.current;return{current:n,version:e.version,isWindows:T(cn,n),isiOS:T("iOS",n),isAndroid:T(fn,n),isOSX:T("OSX",n),isLinux:T("Linux",n),isSolaris:T(dn,n),isFreeBSD:T(ln,n)}},gn={unknown:function(){return mn({current:undefined,version:en.unknown()})},nu:mn,windows:l(cn),ios:l("iOS"),android:l(fn),linux:l("Linux"),osx:l("OSX"),solaris:l(dn),freebsd:l(ln)},pn=function(e,t){return D(e,t).map(function(e){var n=en.detect(e.versionRegexes,t);return{current:e.name,version:n}})},vn=function(e,t){return D(e,t).map(function(e){var n=en.detect(e.versionRegexes,t);return{current:e.name,version:n}})},hn=/.*?version\/\ ?([0-9]+)\.([0-9]+).*/,Nn=[{name:"Edge",versionRegexes:[/.*?edge\/ ?([0-9]+)\.([0-9]+)$/],search:function(e){return E(e,"edge/")&&E(e,"chrome")&&E(e,"safari")&&E(e,"applewebkit")}},{name:"Chrome",versionRegexes:[/.*?chrome\/([0-9]+)\.([0-9]+).*/,hn],search:function(e){return E(e,"chrome")&&!E(e,"chromeframe")}},{name:"IE",versionRegexes:[/.*?msie\ ?([0-9]+)\.([0-9]+).*/,/.*?rv:([0-9]+)\.([0-9]+).*/],search:function(e){return E(e,"msie")||E(e,"trident")}},{name:"Opera",versionRegexes:[hn,/.*?opera\/([0-9]+)\.([0-9]+).*/],search:w("opera")},{name:"Firefox",versionRegexes:[/.*?firefox\/\ ?([0-9]+)\.([0-9]+).*/],search:w("firefox")},{name:"Safari",versionRegexes:[hn,/.*?cpu os ([0-9]+)_([0-9]+).*/],search:function(e){return(E(e,"safari")||E(e,"mobile/"))&&E(e,"applewebkit")}}],yn=[{name:"Windows",search:w("win"),versionRegexes:[/.*?windows\ nt\ ?([0-9]+)\.([0-9]+).*/]},{name:"iOS",search:function(e){return E(e,"iphone")||E(e,"ipad")},versionRegexes:[/.*?version\/\ ?([0-9]+)\.([0-9]+).*/,/.*cpu os ([0-9]+)_([0-9]+).*/,/.*cpu iphone os ([0-9]+)_([0-9]+).*/]},{name:"Android",search:w("android"),versionRegexes:[/.*?android\ ?([0-9]+)\.([0-9]+).*/]},{name:"OSX",search:w("os x"),versionRegexes:[/.*?os\ x\ ?([0-9]+)_([0-9]+).*/]},{name:"Linux",search:w("linux"),versionRegexes:[]},{name:"Solaris",search:w("sunos"),versionRegexes:[]},{name:"FreeBSD",search:w("freebsd"),versionRegexes:[]}],Sn={browsers:l(Nn),oses:l(yn)},On=Ge(function(e,n){var t=Sn.browsers(),r=Sn.oses(),o=pn(t,e).fold(an.unknown,an.nu),i=vn(r,e).fold(gn.unknown,gn.nu);return{browser:o,os:i,deviceType:function(e,n,t,r){var o=e.isiOS()&&!0===/ipad/i.test(t),i=e.isiOS()&&!o,u=e.isiOS()||e.isAndroid(),s=u||r("(pointer:coarse)"),a=o||!i&&u&&r("(min-device-width:768px)"),c=i||u&&!a,f=n.isSafari()&&e.isiOS()&&!1===/safari/i.test(t),d=!c&&!a&&!f;return{isiPad:l(o),isiPhone:l(i),isTablet:l(a),isPhone:l(c),isTouch:l(s),isAndroid:e.isAndroid,isiOS:e.isiOS,isWebView:l(f),isDesktop:l(d)}}(i,o,e,n)}}(r.navigator.userAgent,function(e){return r.window.matchMedia(e).matches})),Cn=function(e){if(null===e||e===undefined)throw new Error("Node cannot be null or undefined");return{dom:l(e)}},bn={fromHtml:function(e,n){var t=(n||r.document).createElement("div");if(t.innerHTML=e,!t.hasChildNodes()||1<t.childNodes.length)throw r.console.error("HTML does not have a single root node",e),new Error("HTML must have a single root node");return Cn(t.childNodes[0])},fromTag:function(e,n){var t=(n||r.document).createElement(e);return Cn(t)},fromText:function(e,n){var t=(n||r.document).createTextNode(e);return Cn(t)},fromDom:Cn,fromPoint:function(e,n,t){var r=e.dom();return $e.from(r.elementFromPoint(n,t)).map(Cn)}},Ln=(r.Node.ATTRIBUTE_NODE,r.Node.CDATA_SECTION_NODE,r.Node.COMMENT_NODE,r.Node.DOCUMENT_NODE,r.Node.DOCUMENT_TYPE_NODE,r.Node.DOCUMENT_FRAGMENT_NODE,r.Node.ELEMENT_NODE),Tn=(r.Node.TEXT_NODE,r.Node.PROCESSING_INSTRUCTION_NODE,r.Node.ENTITY_REFERENCE_NODE,r.Node.ENTITY_NODE,r.Node.NOTATION_NODE,Ln),Dn=On.get().browser.isIE()?function(e,n){return Ye(e.dom(),n.dom())}:function(e,n){var t=e.dom(),r=n.dom();return t!==r&&t.contains(r)},En=function(e,n){var t=e.dom();if(t.nodeType!==Tn)return!1;var r=t;if(r.matches!==undefined)return r.matches(n);if(r.msMatchesSelector!==undefined)return r.msMatchesSelector(n);if(r.webkitMatchesSelector!==undefined)return r.webkitMatchesSelector(n);if(r.mozMatchesSelector!==undefined)return r.mozMatchesSelector(n);throw new Error("Browser lacks native selectors")},wn=tinymce.util.Tools.resolve("tinymce.dom.RangeUtils"),kn=tinymce.util.Tools.resolve("tinymce.dom.TreeWalker"),An=tinymce.util.Tools.resolve("tinymce.util.VK"),xn=Object.keys,Rn=(function(){for(var e=[],n=0;n<arguments.length;n++)e[n]=arguments[n]}("element","offset"),"undefined"!=typeof r.window?r.window:Function("return this;")()),In=function(e,n){var t=function(e,n){return H(e,n)}(e,n);if(t===undefined||null===t)throw new Error(e+" not available on this browser");return t},_n=function(e){return function(e){return In("HTMLElement",e)}(H("ownerDocument.defaultView",e)).prototype.isPrototypeOf(e)},Bn=tinymce.util.Tools.resolve("tinymce.dom.DomQuery"),Pn=tinymce.util.Tools.resolve("tinymce.util.Tools"),Mn=function(e){return e&&3===e.nodeType},Un=function(e){return e&&/^(OL|UL|DL)$/.test(e.nodeName)},Fn=function(e){return e&&/^(OL|UL)$/.test(e.nodeName)},jn=function(e){return e&&/^(DT|DD)$/.test(e.nodeName)},Hn=function(e){return e&&/^(LI|DT|DD)$/.test(e.nodeName)},$n=function(e){return e&&/^(TH|TD)$/.test(e.nodeName)},qn=$,Wn=function(e){return e.parentNode.firstChild===e},Vn=function(e,n){return n&&!!e.schema.getTextBlockElements()[n.nodeName]},zn=function(e,n){return e&&e.nodeName in n},Kn=function(e,n){return!!$(n)&&!(!e.isBlock(n.nextSibling)||$(n.previousSibling))},Xn=function(e,n,t){var r=e.isEmpty(n);return!(t&&0<e.select("span[data-mce-type=bookmark]",n).length)&&r},Qn=function(e,n){return e.isChildOf(n,e.getRoot())},Yn=function(e,n){var t=e.dom.getParents(n,"TD,TH");return 0<t.length?t[0]:e.getBody()},Gn=function(n,e){var t=g(e,function(e){return V(n,e).getOr(e)});return Bn.unique(t)},Jn={isList:function(e){var n=q(e);return _n(n)},getParentList:q,getSelectedSubLists:function(e){var n=q(e),t=e.selection.getSelectedBlocks();return function(e,n){return e&&1===n.length&&n[0]===e}(n,t)?function(e){return Pn.grep(e.querySelectorAll("ol,ul,dl"),function(e){return Un(e)})}(n):Pn.grep(t,function(e){return Un(e)&&n!==e})},getSelectedListItems:W,getClosestListRootElm:Yn,getSelectedDlItems:function(e){return v(W(e),jn)},getSelectedListRoots:function(e){var n=function(e){var n=V(e,e.selection.getStart()),t=v(e.selection.getSelectedBlocks(),Fn);return n.toArray().concat(t)}(e);return Gn(e,n)}},Zn=(Fe=Ln,function(e){return function(e){return e.dom().nodeType}(e)===Fe}),et=Object.prototype.hasOwnProperty,nt=(je=function(e,n){return n},function(){for(var e=new Array(arguments.length),n=0;n<e.length;n++)e[n]=arguments[n];if(0===e.length)throw new Error("Can't merge zero objects");for(var t={},r=0;r<e.length;r++){var o=e[r];for(var i in o)et.call(o,i)&&(t[i]=je(t[i],o[i]))}return t}),tt=function(n,t,r,e){return y(R(e),function(e){return(te(e)?tt:ae)(n+1,t,r,e)})},rt=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),ot=rt.DOM,it=function(e,n,t){var r,o,i,u,s,a;for(i=ot.select('span[data-mce-type="bookmark"]',n),s=z(e,t),(r=ot.createRng()).setStartAfter(t),r.setEndAfter(n),u=(o=r.extractContents()).firstChild;u;u=u.firstChild)if("LI"===u.nodeName&&e.dom.isEmpty(u)){ot.remove(u);break}e.dom.isEmpty(o)||ot.insertAfter(o,n),ot.insertAfter(s,n),Xn(e.dom,t.parentNode)&&(a=t.parentNode,Pn.each(i,function(e){a.parentNode.insertBefore(e,t.parentNode)}),ot.remove(a)),ot.remove(t),Xn(e.dom,n)&&ot.remove(n)},ut=function(e){var n=e.cloneRange(),t=pe(e.startContainer,e.startOffset);n.setStart(t.container,t.offset);var r=pe(e.endContainer,e.endOffset);return n.setEnd(r.container,r.offset),n},st=tinymce.util.Tools.resolve("tinymce.dom.BookmarkManager"),at=rt.DOM,ct=function(o){function e(e){var n,t,r;t=o[e?"startContainer":"endContainer"],r=o[e?"startOffset":"endOffset"],1===t.nodeType&&(n=at.create("span",{"data-mce-type":"bookmark"}),t.hasChildNodes()?(r=Math.min(r,t.childNodes.length-1),e?t.insertBefore(n,t.childNodes[r]):at.insertAfter(n,t.childNodes[r])):t.appendChild(n),t=n,r=0),i[e?"startContainer":"endContainer"]=t,i[e?"startOffset":"endOffset"]=r}var i={};return e(!0),o.collapsed||e(),i},ft=function(o){function e(e){var n,t,r;n=r=o[e?"startContainer":"endContainer"],t=o[e?"startOffset":"endOffset"],n&&(1===n.nodeType&&(t=function(e){for(var n=e.parentNode.firstChild,t=0;n;){if(n===e)return t;1===n.nodeType&&"bookmark"===n.getAttribute("data-mce-type")||t++,n=n.nextSibling}return-1}(n),n=n.parentNode,at.remove(r),!n.hasChildNodes()&&at.isBlock(n)&&n.appendChild(at.create("br"))),o[e?"startContainer":"endContainer"]=n,o[e?"startOffset":"endOffset"]=t)}e(!0),e();var n=at.createRng();return n.setStart(o.startContainer,o.startOffset),o.endContainer&&n.setEnd(o.endContainer,o.endOffset),ut(n)},dt=function(e,n){var t,r;if(t=n.nextSibling,De(e,n,t)){for(;r=t.firstChild;)n.appendChild(r);e.remove(t)}if(t=n.previousSibling,De(e,n,t)){for(;r=t.lastChild;)n.insertBefore(r,n.firstChild);e.remove(t)}},lt=function(e){return"list-style-type"in e},mt={toggleList:function(e,n,t){var r=Jn.getParentList(e),o=Jn.getSelectedSubLists(e);t=t||{},r&&0<o.length?Ee(e,r,o,n,t):function(e,n,t,r){if(n!==e.getBody())if(n)if(n.nodeName!==t||lt(r)||Se(n)){var o=ct(e.selection.getRng(!0));be(e.dom,n,r);var i=e.dom.rename(n,t);dt(e.dom,i),e.selection.setRng(ft(o)),j(e,Oe(t),i)}else ye(e);else Te(e,t,r),j(e,Oe(t),n)}(e,r,n,t)},mergeWithAdjacentLists:dt},gt=rt.DOM,pt=function(n,e){Pn.each(Pn.grep(n.select("ol,ul",e)),function(e){we(n,e)})},vt=function(n){n.on("keydown",function(e){e.keyCode===An.BACKSPACE?Pe(n,!1)&&e.preventDefault():e.keyCode===An.DELETE&&Pe(n,!0)&&e.preventDefault()})},ht=Pe,Nt=function(n){return{backspaceDelete:function(e){ht(n,e)}}},yt=function(t){t.on("BeforeExecCommand",function(e){var n=e.command.toLowerCase();"indent"===n?he(t):"outdent"===n&&Ne(t)}),t.addCommand("InsertUnorderedList",function(e,n){mt.toggleList(t,"UL",n)}),t.addCommand("InsertOrderedList",function(e,n){mt.toggleList(t,"OL",n)}),t.addCommand("InsertDefinitionList",function(e,n){mt.toggleList(t,"DL",n)}),t.addCommand("RemoveList",function(){ye(t)}),t.addQueryStateHandler("InsertUnorderedList",Me(t,"UL")),t.addQueryStateHandler("InsertOrderedList",Me(t,"OL")),t.addQueryStateHandler("InsertDefinitionList",Me(t,"DL"))},St=function(e){return e.getParam("lists_indent_on_tab",!0)},Ot=function(e){St(e)&&function(n){n.on("keydown",function(e){e.keyCode!==An.TAB||An.metaKeyPressed(e)||n.undoManager.transact(function(){(e.shiftKey?Ne(n):he(n))&&e.preventDefault()})})}(e),vt(e)},Ct=function(n){function e(e){return function(){return n.execCommand(e)}}var t,r,o;r="advlist",o=(t=n).settings.plugins?t.settings.plugins:"",-1===Pn.inArray(o.split(/[ ,]/),r)&&(n.ui.registry.addToggleButton("numlist",{icon:"ordered-list",active:!1,tooltip:"Numbered list",onAction:e("InsertOrderedList"),onSetup:Ue(n,"OL")}),n.ui.registry.addToggleButton("bullist",{icon:"unordered-list",active:!1,tooltip:"Bullet list",onAction:e("InsertUnorderedList"),onSetup:Ue(n,"UL")}))};!function bt(){i.add("lists",function(e){return Ot(e),Ct(e),yt(e),Nt(e)})}()}(window);
\ No newline at end of file
diff --git a/admin/js/vendors/tinymce/js/tinymce/plugins/media/plugin.min.js b/admin/js/vendors/tinymce/js/tinymce/plugins/media/plugin.min.js
new file mode 100644 (file)
index 0000000..66d7bde
--- /dev/null
@@ -0,0 +1,9 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ *
+ * Version: 5.1.5 (2019-12-19)
+ */
+!function(){"use strict";function e(){}function o(e){return function(){return e}}function t(){return u}var r,n=tinymce.util.Tools.resolve("tinymce.PluginManager"),d=function(){return(d=Object.assign||function(e){for(var t,r=1,n=arguments.length;r<n;r++)for(var i in t=arguments[r])Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e}).apply(this,arguments)},a=o(!1),c=o(!0),u=(r={fold:function(e,t){return e()},is:a,isSome:a,isNone:c,getOr:l,getOrThunk:s,getOrDie:function(e){throw new Error(e||"error: getOrDie called on none.")},getOrNull:o(null),getOrUndefined:o(undefined),or:l,orThunk:s,map:t,each:e,bind:t,exists:a,forall:c,filter:t,equals:i,equals_:i,toArray:function(){return[]},toString:o("none()")},Object.freeze&&Object.freeze(r),r);function i(e){return e.isNone()}function s(e){return e()}function l(e){return e}function m(t){return function(e){return function(e){if(null===e)return"null";var t=typeof e;return"object"==t&&(Array.prototype.isPrototypeOf(e)||e.constructor&&"Array"===e.constructor.name)?"array":"object"==t&&(String.prototype.isPrototypeOf(e)||e.constructor&&"String"===e.constructor.name)?"string":t}(e)===t}}function f(e,t){for(var r=0,n=e.length;r<n;r++){t(e[r],r)}}function h(e,t){return G(e,t)?E(e[t]):D()}function p(t){return function(e){return e?function(e){return e.replace(/px$/,"")}(e.style[t]):""}}function g(r){return function(e,t){e&&(e.style[r]=function(e){return/^[0-9.]+$/.test(e)?e+"px":e}(t))}}function v(e,t){if(e)for(var r=0;r<e.length;r++)if(-1!==t.indexOf(e[r].filter))return e[r]}function b(e){return ae.getAttrib(e,"data-ephox-embed-iri")}function w(e,t){return function(e){var t=ae.createFragment(e);return""!==b(t.firstChild)}(t)?function(e){var t=ae.createFragment(e).firstChild;return{type:"ephox-embed-iri",source1:b(t),source2:"",poster:"",width:oe.getMaxWidth(t),height:oe.getMaxHeight(t)}}(t):function(n,e){var i={};return ne({validate:!1,allow_conditional_comments:!0,start:function(e,t){if(i.source1||"param"!==e||(i.source1=t.map.movie),"iframe"!==e&&"object"!==e&&"embed"!==e&&"video"!==e&&"audio"!==e||(i.type||(i.type=e),i=re.extend(t.map,i)),"script"===e){var r=v(n,t.map.src);if(!r)return;i={type:"script",source1:t.map.src,width:String(r.width),height:String(r.height)}}"source"===e&&(i.source1?i.source2||(i.source2=t.map.src):i.source1=t.map.src),"img"!==e||i.poster||(i.poster=t.map.src)}}).parse(e),i.source1=i.source1||i.src||i.data,i.source2=i.source2||"",i.poster=i.poster||"",i}(e,t)}function y(e,t){var r,n,i,o;for(r in t)if(i=""+t[r],e.map[r])for(n=e.length;n--;)(o=e[n]).name===r&&(i?(e.map[r]=i,o.value=i):(delete e.map[r],e.splice(n,1)));else i&&(e.push({name:r,value:i}),e.map[r]=i)}function x(e,t){var r=me.createFragment(e).firstChild;return oe.setMaxWidth(r,t.width),oe.setMaxHeight(r,t.height),function(e){var t=se();return ne(t).parse(e),t.getContent()}(r.outerHTML)}function j(r,e){var n=re.extend({},e);if(!n.source1&&(re.extend(n,w(J(r),n.embed)),!n.source1))return"";n.source2||(n.source2=""),n.poster||(n.poster=""),n.source1=r.convertURL(n.source1,"source"),n.source2=r.convertURL(n.source2,"source"),n.source1mime=ue(n.source1),n.source2mime=ue(n.source2),n.poster=r.convertURL(n.poster,"poster");var t=function(t){var e=fe.filter(function(e){return e.regex.test(t)});return 0<e.length?re.extend({},e[0],{url:function(e,t){for(var r=e.regex.exec(t),n=e.url,i=function(e){n=n.replace("$"+e,function(){return r[e]?r[e]:""})},o=0;o<r.length;o++)i(o);return n.replace(/\?$/,"")}(e[0],t)}):null}(n.source1);if(t&&(n.source1=t.url,n.type=t.type,n.allowFullscreen=t.allowFullscreen,n.width=n.width||String(t.w),n.height=n.height||String(t.h)),n.embed)return de(n.embed,n,!0);var i=v(J(r),n.source1);i&&(n.type="script",n.width=String(i.width),n.height=String(i.height));var o=K(r),a=Q(r);return n.width=n.width||"300",n.height=n.height||"150",re.each(n,function(e,t){n[t]=r.dom.encode(""+e)}),"iframe"===n.type?function(e){var t=e.allowFullscreen?' allowFullscreen="1"':"";return'<iframe src="'+e.source1+'" width="'+e.width+'" height="'+e.height+'"'+t+"></iframe>"}(n):"application/x-shockwave-flash"===n.source1mime?function(e){var t='<object data="'+e.source1+'" width="'+e.width+'" height="'+e.height+'" type="application/x-shockwave-flash">';return e.poster&&(t+='<img src="'+e.poster+'" width="'+e.width+'" height="'+e.height+'" />'),t+="</object>"}(n):-1!==n.source1mime.indexOf("audio")?function(e,t){return t?t(e):'<audio controls="controls" src="'+e.source1+'">'+(e.source2?'\n<source src="'+e.source2+'"'+(e.source2mime?' type="'+e.source2mime+'"':"")+" />\n":"")+"</audio>"}(n,o):"script"===n.type?function(e){return'<script src="'+e.source1+'"><\/script>'}(n):function(e,t){return t?t(e):'<video width="'+e.width+'" height="'+e.height+'"'+(e.poster?' poster="'+e.poster+'"':"")+' controls="controls">\n<source src="'+e.source1+'"'+(e.source1mime?' type="'+e.source1mime+'"':"")+" />\n"+(e.source2?'<source src="'+e.source2+'"'+(e.source2mime?' type="'+e.source2mime+'"':"")+" />\n":"")+"</video>"}(n,a)}function O(t){return function(e){return j(t,e)}}function A(e){var r=q(e,{source1:e.source1.value,source2:h(e,"source2").bind(function(e){return h(e,"value")}).getOr(""),poster:h(e,"poster").bind(function(e){return h(e,"value")}).getOr("")});return h(e,"dimensions").each(function(e){f(["width","height"],function(t){h(e,t).each(function(e){return r[t]=e})})}),r}function S(e){var n=q(e,{source1:{value:h(e,"source1").getOr("")},source2:{value:h(e,"source2").getOr("")},poster:{value:h(e,"poster").getOr("")}});return f(["width","height"],function(r){h(e,r).each(function(e){var t=n.dimensions||{};t[r]=e,n.dimensions=t})}),n}function _(r){return function(e){var t=e&&e.msg?"Media embed handler error: "+e.msg:"Media embed handler threw unknown error.";r.notificationManager.open({type:"error",text:t})}}function C(e,t){return w(J(e),t)}function M(i,o){return function(e){if(N(e.url)&&0<e.url.trim().length){var t=e.html,r=C(o,t),n=d(d({},r),{source1:e.url,embed:t});i.setData(S(n))}}}function F(e,t){var r=e.dom.select("img[data-mce-object]");e.insertContent(t),function(e,t){for(var r=e.dom.select("img[data-mce-object]"),n=0;n<t.length;n++)for(var i=r.length-1;0<=i;i--)t[n]===r[i]&&r.splice(i,1);e.selection.select(r[0])}(e,r),e.nodeChanged()}function P(e,t){var r,n=t.name;return(r=new ye("img",1)).shortEnded=!0,Oe(e,t,r),r.attr({width:t.attr("width")||"300",height:t.attr("height")||("audio"===n?"30":"150"),style:t.attr("style"),src:xe.transparentSrc,"data-mce-object":n,"class":"mce-object mce-object-"+n}),r}function k(e,t){var r,n,i,o=t.name;return(r=new ye("span",1)).attr({contentEditable:"false",style:t.attr("style"),"data-mce-object":o,"class":"mce-preview-object mce-object-"+o}),Oe(e,t,r),(n=new ye(o,1)).attr({src:t.attr("src"),allowfullscreen:t.attr("allowfullscreen"),style:t.attr("style"),"class":t.attr("class"),width:t.attr("width"),height:t.attr("height"),frameborder:"0"}),(i=new ye("span",1)).attr("class","mce-shim"),r.append(n),r.append(i),r}function T(e){for(;e=e.parent;)if(e.attr("data-ephox-embed-iri")||(void 0,(t=e.attr("class"))&&/\btiny-pageembed\b/.test(t)))return!0;var t;return!1}var $,z=function(r){function e(){return i}function t(e){return e(r)}var n=o(r),i={fold:function(e,t){return t(r)},is:function(e){return r===e},isSome:c,isNone:a,getOr:n,getOrThunk:n,getOrDie:n,getOrNull:n,getOrUndefined:n,or:e,orThunk:e,map:function(e){return z(e(r))},each:function(e){e(r)},bind:t,exists:t,forall:t,filter:function(e){return e(r)?i:u},toArray:function(){return[r]},toString:function(){return"some("+r+")"},equals:function(e){return e.is(r)},equals_:function(e,t){return e.fold(a,function(e){return t(r,e)})}};return i},D=t,E=function(e){return null===e||e===undefined?u:z(e)},N=m("string"),U=m("array"),R=m("function"),L=Array.prototype.slice,W=Array.prototype.push,H=(R(Array.from)&&Array.from,function(e){function t(){return r}var r=e;return{get:t,set:function(e){r=e},clone:function(){return H(t())}}}),I=Object.prototype.hasOwnProperty,q=($=function(e,t){return t},function(){for(var e=new Array(arguments.length),t=0;t<e.length;t++)e[t]=arguments[t];if(0===e.length)throw new Error("Can't merge zero objects");for(var r={},n=0;n<e.length;n++){var i=e[n];for(var o in i)I.call(i,o)&&(r[o]=$(r[o],i[o]))}return r}),B=Object.hasOwnProperty,G=function(e,t){return B.call(e,t)},J=function(e){return e.getParam("media_scripts")},K=function(e){return e.getParam("audio_template_callback")},Q=function(e){return e.getParam("video_template_callback")},V=function(e){return e.getParam("media_live_embeds",!0)},X=function(e){return e.getParam("media_filter_html",!0)},Y=function(e){return e.getParam("media_url_resolver")},Z=function(e){return e.getParam("media_alt_source",!0)},ee=function(e){return e.getParam("media_poster",!0)},te=function(e){return e.getParam("media_dimensions",!0)},re=tinymce.util.Tools.resolve("tinymce.util.Tools"),ne=tinymce.util.Tools.resolve("tinymce.html.SaxParser"),ie=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),oe={getMaxWidth:p("maxWidth"),getMaxHeight:p("maxHeight"),setMaxWidth:g("maxWidth"),setMaxHeight:g("maxHeight")},ae=ie.DOM,ce=tinymce.util.Tools.resolve("tinymce.util.Promise"),ue=function(e){var t={mp3:"audio/mpeg",m4a:"audio/x-m4a",wav:"audio/wav",mp4:"video/mp4",webm:"video/webm",ogg:"video/ogg",swf:"application/x-shockwave-flash"}[e.toLowerCase().split(".").pop()];return t||""},se=tinymce.util.Tools.resolve("tinymce.html.Writer"),le=tinymce.util.Tools.resolve("tinymce.html.Schema"),me=ie.DOM,de=function(e,t,r){return function(e){var t=me.createFragment(e);return""!==me.getAttrib(t.firstChild,"data-ephox-embed-iri")}(e)?x(e,t):function(e,i,o){var a,c=se(),u=0;return ne({validate:!1,allow_conditional_comments:!0,comment:function(e){c.comment(e)},cdata:function(e){c.cdata(e)},text:function(e,t){c.text(e,t)},start:function(e,t,r){switch(e){case"video":case"object":case"embed":case"img":case"iframe":i.height!==undefined&&i.width!==undefined&&y(t,{width:i.width,height:i.height})}if(o)switch(e){case"video":y(t,{poster:i.poster,src:""}),i.source2&&y(t,{src:""});break;case"iframe":y(t,{src:i.source1});break;case"source":if(++u<=2&&(y(t,{src:i["source"+u],type:i["source"+u+"mime"]}),!i["source"+u]))return;break;case"img":if(!i.poster)return;a=!0}c.start(e,t,r)},end:function(e){if("video"===e&&o)for(var t=1;t<=2;t++)if(i["source"+t]){var r=[];r.map={},u<t&&(y(r,{src:i["source"+t],type:i["source"+t+"mime"]}),c.start("source",r,!0))}if(i.poster&&"object"===e&&o&&!a){var n=[];n.map={},y(n,{src:i.poster,width:i.width,height:i.height}),c.start("img",n,!0)}c.end(e)}},le({})).parse(e),c.getContent()}(e,t,r)},fe=[{regex:/youtu\.be\/([\w\-_\?&=.]+)/i,type:"iframe",w:560,h:314,url:"//www.youtube.com/embed/$1",allowFullscreen:!0},{regex:/youtube\.com(.+)v=([^&]+)(&([a-z0-9&=\-_]+))?/i,type:"iframe",w:560,h:314,url:"//www.youtube.com/embed/$2?$4",allowFullscreen:!0},{regex:/youtube.com\/embed\/([a-z0-9\?&=\-_]+)/i,type:"iframe",w:560,h:314,url:"//www.youtube.com/embed/$1",allowFullscreen:!0},{regex:/vimeo\.com\/([0-9]+)/,type:"iframe",w:425,h:350,url:"//player.vimeo.com/video/$1?title=0&byline=0&portrait=0&color=8dc7dc",allowFullscreen:!0},{regex:/vimeo\.com\/(.*)\/([0-9]+)/,type:"iframe",w:425,h:350,url:"//player.vimeo.com/video/$2?title=0&amp;byline=0",allowFullscreen:!0},{regex:/maps\.google\.([a-z]{2,3})\/maps\/(.+)msid=(.+)/,type:"iframe",w:425,h:350,url:'//maps.google.com/maps/ms?msid=$2&output=embed"',allowFullscreen:!1},{regex:/dailymotion\.com\/video\/([^_]+)/,type:"iframe",w:480,h:270,url:"//www.dailymotion.com/embed/video/$1",allowFullscreen:!0},{regex:/dai\.ly\/([^_]+)/,type:"iframe",w:480,h:270,url:"//www.dailymotion.com/embed/video/$1",allowFullscreen:!0}],he={},pe=function(e,t){var r=Y(e);return r?function(n,i,o){return new ce(function(t,e){function r(e){return e.html&&(he[n.source1]=e),t({url:n.source1,html:e.html?e.html:i(n)})}he[n.source1]?r(he[n.source1]):o({url:n.source1},r,e)})}(t,O(e),r):function(t,r){return new ce(function(e){e({html:r(t),url:t.source1})})}(t,O(e))},ge=function(e){return he.hasOwnProperty(e)},ve=function(n){function i(e){return A(e.getData())}var e=function(e){var t=e.selection.getNode(),r=function(e){return e.getAttribute("data-mce-object")||e.getAttribute("data-ephox-embed-iri")}(t)?e.serializer.serialize(t,{selection:!0}):"";return q({embed:r},w(J(e),r))}(n),r=H(e),t=S(e),o={title:"General",name:"general",items:function(e){for(var t=[],r=0,n=e.length;r<n;++r){if(!U(e[r]))throw new Error("Arr.flatten item "+r+" was not an array, input: "+e);W.apply(t,e[r])}return t}([[{name:"source1",type:"urlinput",filetype:"media",label:"Source"}],te(n)?[{type:"sizeinput",name:"dimensions",label:"Constrain proportions",constrain:!0}]:[]])},a={title:"Embed",items:[{type:"textarea",name:"embed",label:"Paste your embed code below:"}]},c=[];Z(n)&&c.push({name:"source2",type:"urlinput",filetype:"media",label:"Alternative source URL"}),ee(n)&&c.push({name:"poster",type:"urlinput",filetype:"image",label:"Media poster (Image URL)"});var u={title:"Advanced",name:"advanced",items:c},s=[o,a];0<c.length&&s.push(u);var l={type:"tabpanel",tabs:s},m=n.windowManager.open({title:"Insert/Edit Media",size:"normal",body:l,buttons:[{type:"cancel",name:"cancel",text:"Cancel"},{type:"submit",name:"save",text:"Save",primary:!0}],onSubmit:function(e){var t=i(e);!function(e,t,r){t.embed=de(t.embed,t),t.embed&&(e.source1===t.source1||ge(t.source1))?F(r,t.embed):pe(r,t).then(function(e){F(r,e.html)})["catch"](_(r))}(r.get(),t,n),e.close()},onChange:function(e,t){switch(t.name){case"source1":!function(e,t){var r=i(t);e.source1!==r.source1&&(M(m,n)({url:r.source1,html:""}),pe(n,r).then(M(m,n))["catch"](_(n)))}(r.get(),e);break;case"embed":!function(e){var t=A(e.getData()),r=C(n,t.embed);e.setData(S(r))}(e);break;case"dimensions":case"poster":!function(e){var t=i(e),r=j(n,t);e.setData(S(d(d({},t),{embed:r})))}(e)}r.set(i(e))},initialData:t})},be=function(e){return{showDialog:function(){ve(e)}}},we=function(e){e.addCommand("mceMedia",function(){ve(e)})},ye=tinymce.util.Tools.resolve("tinymce.html.Node"),xe=tinymce.util.Tools.resolve("tinymce.Env"),je=function(i,e){if(!1===X(i))return e;var o,a=se();return ne({validate:!1,allow_conditional_comments:!1,comment:function(e){a.comment(e)},cdata:function(e){a.cdata(e)},text:function(e,t){a.text(e,t)},start:function(e,t,r){if(o=!0,"script"!==e&&"noscript"!==e){for(var n=0;n<t.length;n++){if(0===t[n].name.indexOf("on"))return;"style"===t[n].name&&(t[n].value=i.dom.serializeStyle(i.dom.parseStyle(t[n].value),e))}a.start(e,t,r),o=!1}},end:function(e){o||a.end(e)}},le({})).parse(e),a.getContent()},Oe=function(e,t,r){var n,i,o,a,c;for(a=(o=t.attributes).length;a--;)n=o[a].name,i=o[a].value,"width"!==n&&"height"!==n&&"style"!==n&&("data"!==n&&"src"!==n||(i=e.convertURL(i,n)),r.attr("data-mce-p-"+n,i));(c=t.firstChild&&t.firstChild.value)&&(r.attr("data-mce-html",escape(je(e,c))),r.firstChild=null)},Ae=function(i){return function(e){for(var t,r,n=e.length;n--;)(t=e[n]).parent&&(t.parent.attr("data-mce-object")||"script"===t.name&&!(r=v(J(i),t.attr("src")))||(r&&(r.width&&t.attr("width",r.width.toString()),r.height&&t.attr("height",r.height.toString())),"iframe"===t.name&&V(i)&&xe.ceFalse?T(t)||t.replace(k(i,t)):T(t)||t.replace(P(i,t))))}},Se=function(d){d.on("preInit",function(){var t=d.schema.getSpecialElements();re.each("video audio iframe object".split(" "),function(e){t[e]=new RegExp("</"+e+"[^>]*>","gi")});var r=d.schema.getBoolAttrs();re.each("webkitallowfullscreen mozallowfullscreen allowfullscreen".split(" "),function(e){r[e]={}}),d.parser.addNodeFilter("iframe,video,audio,object,embed,script",Ae(d)),d.serializer.addAttributeFilter("data-mce-object",function(e,t){for(var r,n,i,o,a,c,u,s,l=e.length;l--;)if((r=e[l]).parent){for(u=r.attr(t),n=new ye(u,1),"audio"!==u&&"script"!==u&&((s=r.attr("class"))&&-1!==s.indexOf("mce-preview-object")?n.attr({width:r.firstChild.attr("width"),height:r.firstChild.attr("height")}):n.attr({width:r.attr("width"),height:r.attr("height")})),n.attr({style:r.attr("style")}),i=(o=r.attributes).length;i--;){var m=o[i].name;0===m.indexOf("data-mce-p-")&&n.attr(m.substr(11),o[i].value)}"script"===u&&n.attr("type","text/javascript"),(a=r.attr("data-mce-html"))&&((c=new ye("#text",3)).raw=!0,c.value=je(d,unescape(a)),n.append(c)),r.replace(n)}})}),d.on("SetContent",function(){d.$("span.mce-preview-object").each(function(e,t){var r=d.$(t);0===r.find("span.mce-shim").length&&r.append('<span class="mce-shim"></span>')})})},_e=function(e){e.on("ResolveName",function(e){var t;1===e.target.nodeType&&(t=e.target.getAttribute("data-mce-object"))&&(e.name=t)})},Ce=function(t){t.on("click keyup touchend",function(){var e=t.selection.getNode();e&&t.dom.hasClass(e,"mce-preview-object")&&t.dom.getAttrib(e,"data-mce-selected")&&e.setAttribute("data-mce-selected","2")}),t.on("ObjectSelected",function(e){var t=e.target.getAttribute("data-mce-object");"audio"!==t&&"script"!==t||e.preventDefault()}),t.on("ObjectResized",function(e){var t,r=e.target;r.getAttribute("data-mce-object")&&(t=r.getAttribute("data-mce-html"))&&(t=unescape(t),r.setAttribute("data-mce-html",escape(de(t,{width:String(e.width),height:String(e.height)}))))})},Me=function(e){e.ui.registry.addToggleButton("media",{tooltip:"Insert/edit media",icon:"embed",onAction:function(){e.execCommand("mceMedia")},onSetup:function(t,r){return function(e){return t.selection.selectorChangedWithUnbind(r.join(","),e.setActive).unbind}}(e,["img[data-mce-object]","span[data-mce-object]","div[data-ephox-embed-iri]"])}),e.ui.registry.addMenuItem("media",{icon:"embed",text:"Media...",onAction:function(){e.execCommand("mceMedia")}})};!function Fe(){n.add("media",function(e){return we(e),Me(e),_e(e),Se(e),Ce(e),be(e)})}()}();
\ No newline at end of file
diff --git a/admin/js/vendors/tinymce/js/tinymce/plugins/nonbreaking/plugin.min.js b/admin/js/vendors/tinymce/js/tinymce/plugins/nonbreaking/plugin.min.js
new file mode 100644 (file)
index 0000000..dec526b
--- /dev/null
@@ -0,0 +1,9 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ *
+ * Version: 5.1.5 (2019-12-19)
+ */
+!function(){"use strict";function o(n,e){for(var t="",o=0;o<e;o++)t+=n;return t}var n=tinymce.util.Tools.resolve("tinymce.PluginManager"),i=function(n){var e=n.getParam("nonbreaking_force_tab",0);return"boolean"==typeof e?!0===e?3:0:e},a=function(n){return n.getParam("nonbreaking_wrap",!0,"boolean")},r=function(n,e){var t=a(n)||n.plugins.visualchars?'<span class="'+(function(n){return!!n.plugins.visualchars&&n.plugins.visualchars.isEnabled()}(n)?"mce-nbsp-wrap mce-nbsp":"mce-nbsp-wrap")+'" contenteditable="false">'+o("&nbsp;",e)+"</span>":o("&nbsp;",e);n.undoManager.transact(function(){return n.insertContent(t)})},e=function(n){n.addCommand("mceNonBreaking",function(){r(n,1)})},c=tinymce.util.Tools.resolve("tinymce.util.VK"),t=function(e){var t=i(e);0<t&&e.on("keydown",function(n){if(n.keyCode===c.TAB&&!n.isDefaultPrevented()){if(n.shiftKey)return;n.preventDefault(),n.stopImmediatePropagation(),r(e,t)}})},u=function(n){n.ui.registry.addButton("nonbreaking",{icon:"non-breaking",tooltip:"Nonbreaking space",onAction:function(){return n.execCommand("mceNonBreaking")}}),n.ui.registry.addMenuItem("nonbreaking",{icon:"non-breaking",text:"Nonbreaking space",onAction:function(){return n.execCommand("mceNonBreaking")}})};!function s(){n.add("nonbreaking",function(n){e(n),u(n),t(n)})}()}();
\ No newline at end of file
diff --git a/admin/js/vendors/tinymce/js/tinymce/plugins/noneditable/plugin.min.js b/admin/js/vendors/tinymce/js/tinymce/plugins/noneditable/plugin.min.js
new file mode 100644 (file)
index 0000000..d87286d
--- /dev/null
@@ -0,0 +1,9 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ *
+ * Version: 5.1.5 (2019-12-19)
+ */
+!function(){"use strict";function c(n){return function(t){return-1!==(" "+t.attr("class")+" ").indexOf(n)}}function l(i,o,c){return function(t){var n=arguments,e=n[n.length-2],r=0<e?o.charAt(e-1):"";if('"'===r)return t;if(">"===r){var a=o.lastIndexOf("<",e);if(-1!==a)if(-1!==o.substring(a,e).indexOf('contenteditable="false"'))return t}return'<span class="'+c+'" data-mce-content="'+i.dom.encode(n[0])+'">'+i.dom.encode("string"==typeof n[1]?n[1]:n[0])+"</span>"}}var t=tinymce.util.Tools.resolve("tinymce.PluginManager"),u=tinymce.util.Tools.resolve("tinymce.util.Tools"),f=function(t){return t.getParam("noneditable_noneditable_class","mceNonEditable")},s=function(t){return t.getParam("noneditable_editable_class","mceEditable")},d=function(t){var n=t.getParam("noneditable_regexp",[]);return n&&n.constructor===RegExp?[n]:n},n=function(n){var t,e,r="contenteditable";t=" "+u.trim(s(n))+" ",e=" "+u.trim(f(n))+" ";var a=c(t),i=c(e),o=d(n);n.on("PreInit",function(){0<o.length&&n.on("BeforeSetContent",function(t){!function(t,n,e){var r=n.length,a=e.content;if("raw"!==e.format){for(;r--;)a=a.replace(n[r],l(t,a,f(t)));e.content=a}}(n,o,t)}),n.parser.addAttributeFilter("class",function(t){for(var n,e=t.length;e--;)n=t[e],a(n)?n.attr(r,"true"):i(n)&&n.attr(r,"false")}),n.serializer.addAttributeFilter(r,function(t){for(var n,e=t.length;e--;)n=t[e],(a(n)||i(n))&&(0<o.length&&n.attr("data-mce-content")?(n.name="#text",n.type=3,n.raw=!0,n.value=n.attr("data-mce-content")):n.attr(r,null))})})};!function e(){t.add("noneditable",function(t){n(t)})}()}();
\ No newline at end of file
diff --git a/admin/js/vendors/tinymce/js/tinymce/plugins/pagebreak/plugin.min.js b/admin/js/vendors/tinymce/js/tinymce/plugins/pagebreak/plugin.min.js
new file mode 100644 (file)
index 0000000..6dd0bac
--- /dev/null
@@ -0,0 +1,9 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ *
+ * Version: 5.1.5 (2019-12-19)
+ */
+!function(){"use strict";function e(){return"mce-pagebreak"}function a(){return'<img src="'+t.transparentSrc+'" class="mce-pagebreak" data-mce-resize="false" data-mce-placeholder />'}var n=tinymce.util.Tools.resolve("tinymce.PluginManager"),t=tinymce.util.Tools.resolve("tinymce.Env"),r=function(e){return e.getParam("pagebreak_separator","\x3c!-- pagebreak --\x3e")},i=function(e){return e.getParam("pagebreak_split_block",!1)},o=function(o){var c=r(o),n=new RegExp(c.replace(/[\?\.\*\[\]\(\)\{\}\+\^\$\:]/g,function(e){return"\\"+e}),"gi");o.on("BeforeSetContent",function(e){e.content=e.content.replace(n,a())}),o.on("PreInit",function(){o.serializer.addNodeFilter("img",function(e){for(var n,a,t=e.length;t--;)if((a=(n=e[t]).attr("class"))&&-1!==a.indexOf("mce-pagebreak")){var r=n.parent;if(o.schema.getBlockElements()[r.name]&&i(o)){r.type=3,r.value=c,r.raw=!0,n.remove();continue}n.type=3,n.value=c,n.raw=!0}})})},c=a,u=e,g=function(e){e.addCommand("mcePageBreak",function(){e.settings.pagebreak_split_block?e.insertContent("<p>"+c()+"</p>"):e.insertContent(c())})},m=function(n){n.on("ResolveName",function(e){"IMG"===e.target.nodeName&&n.dom.hasClass(e.target,u())&&(e.name="pagebreak")})},s=function(e){e.ui.registry.addButton("pagebreak",{icon:"page-break",tooltip:"Page break",onAction:function(){return e.execCommand("mcePageBreak")}}),e.ui.registry.addMenuItem("pagebreak",{text:"Page break",icon:"page-break",onAction:function(){return e.execCommand("mcePageBreak")}})};!function l(){n.add("pagebreak",function(e){g(e),s(e),o(e),m(e)})}()}();
\ No newline at end of file
diff --git a/admin/js/vendors/tinymce/js/tinymce/plugins/paste/plugin.min.js b/admin/js/vendors/tinymce/js/tinymce/plugins/paste/plugin.min.js
new file mode 100644 (file)
index 0000000..1b4d0bb
--- /dev/null
@@ -0,0 +1,9 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ *
+ * Version: 5.1.5 (2019-12-19)
+ */
+!function(f){"use strict";function t(){}function i(t){return function(){return t}}function e(){return v}var n,d=function(t){function e(){return n}var n=t;return{get:e,set:function(t){n=t},clone:function(){return d(e())}}},r=tinymce.util.Tools.resolve("tinymce.PluginManager"),u=function(t){return!(!/(^|[ ,])powerpaste([, ]|$)/.test(t.settings.plugins)||!r.get("powerpaste"))&&("undefined"!=typeof f.window.console&&f.window.console.log&&f.window.console.log("PowerPaste is incompatible with Paste plugin! Remove 'paste' from the 'plugins' option."),!0)},a=function(t,e){return{clipboard:t,quirks:e}},s=function(t,e,n,r){return t.fire("PastePreProcess",{content:e,internal:n,wordContent:r})},c=function(t,e,n,r){return t.fire("PastePostProcess",{node:e,internal:n,wordContent:r})},o=function(t,e){return t.fire("PastePlainTextToggle",{state:e})},m=function(t,e){return t.fire("paste",{ieFake:e})},l=function(t,e){"text"===e.pasteFormat.get()?(e.pasteFormat.set("html"),o(t,!1)):(e.pasteFormat.set("text"),o(t,!0)),t.focus()},p=function(t,n){t.addCommand("mceTogglePlainTextPaste",function(){l(t,n)}),t.addCommand("mceInsertClipboardContent",function(t,e){e.content&&n.pasteHtml(e.content,e.internal),e.text&&n.pasteText(e.text)})},g=i(!1),h=i(!0),v=(n={fold:function(t,e){return t()},is:g,isSome:g,isNone:h,getOr:w,getOrThunk:b,getOrDie:function(t){throw new Error(t||"error: getOrDie called on none.")},getOrNull:i(null),getOrUndefined:i(undefined),or:w,orThunk:b,map:e,each:t,bind:e,exists:g,forall:h,filter:e,equals:y,equals_:y,toArray:function(){return[]},toString:i("none()")},Object.freeze&&Object.freeze(n),n);function y(t){return t.isNone()}function b(t){return t()}function w(t){return t}function x(t,e){for(var n=t.length,r=new Array(n),o=0;o<n;o++){var i=t[o];r[o]=e(i,o)}return r}function _(t,e){for(var n=0,r=t.length;n<r;n++){e(t[n],n)}}var P,T,D,C,k,F=function(n){function t(){return o}function e(t){return t(n)}var r=i(n),o={fold:function(t,e){return e(n)},is:function(t){return n===t},isSome:h,isNone:g,getOr:r,getOrThunk:r,getOrDie:r,getOrNull:r,getOrUndefined:r,or:t,orThunk:t,map:function(t){return F(t(n))},each:function(t){t(n)},bind:e,exists:e,forall:e,filter:function(t){return t(n)?o:v},toArray:function(){return[n]},toString:function(){return"some("+n+")"},equals:function(t){return t.is(n)},equals_:function(t,e){return t.fold(g,function(t){return e(n,t)})}};return o},S={some:F,none:e,from:function(t){return null===t||t===undefined?v:F(t)}},E=(P="function",function(t){return function(t){if(null===t)return"null";var e=typeof t;return"object"==e&&(Array.prototype.isPrototypeOf(t)||t.constructor&&"Array"===t.constructor.name)?"array":"object"==e&&(String.prototype.isPrototypeOf(t)||t.constructor&&"String"===t.constructor.name)?"string":e}(t)===P}),I=Array.prototype.slice,R=E(Array.from)?Array.from:function(t){return I.call(t)},O={},A={exports:O};T=undefined,D=O,C=A,k=undefined,function(t){"object"==typeof D&&void 0!==C?C.exports=t():"function"==typeof T&&T.amd?T([],t):("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).EphoxContactWrapper=t()}(function(){return function l(i,u,a){function s(e,t){if(!u[e]){if(!i[e]){var n="function"==typeof k&&k;if(!t&&n)return n(e,!0);if(c)return c(e,!0);var r=new Error("Cannot find module '"+e+"'");throw r.code="MODULE_NOT_FOUND",r}var o=u[e]={exports:{}};i[e][0].call(o.exports,function(t){return s(i[e][1][t]||t)},o,o.exports,l,i,u,a)}return u[e].exports}for(var c="function"==typeof k&&k,t=0;t<a.length;t++)s(a[t]);return s}({1:[function(t,e,n){var r,o,i=e.exports={};function u(){throw new Error("setTimeout has not been defined")}function a(){throw new Error("clearTimeout has not been defined")}function s(t){if(r===setTimeout)return setTimeout(t,0);if((r===u||!r)&&setTimeout)return r=setTimeout,setTimeout(t,0);try{return r(t,0)}catch(e){try{return r.call(null,t,0)}catch(e){return r.call(this,t,0)}}}!function(){try{r="function"==typeof setTimeout?setTimeout:u}catch(t){r=u}try{o="function"==typeof clearTimeout?clearTimeout:a}catch(t){o=a}}();var c,l=[],f=!1,d=-1;function m(){f&&c&&(f=!1,c.length?l=c.concat(l):d=-1,l.length&&p())}function p(){if(!f){var t=s(m);f=!0;for(var e=l.length;e;){for(c=l,l=[];++d<e;)c&&c[d].run();d=-1,e=l.length}c=null,f=!1,function n(t){if(o===clearTimeout)return clearTimeout(t);if((o===a||!o)&&clearTimeout)return o=clearTimeout,clearTimeout(t);try{return o(t)}catch(e){try{return o.call(null,t)}catch(e){return o.call(this,t)}}}(t)}}function g(t,e){this.fun=t,this.array=e}function h(){}i.nextTick=function(t){var e=new Array(arguments.length-1);if(1<arguments.length)for(var n=1;n<arguments.length;n++)e[n-1]=arguments[n];l.push(new g(t,e)),1!==l.length||f||s(p)},g.prototype.run=function(){this.fun.apply(null,this.array)},i.title="browser",i.browser=!0,i.env={},i.argv=[],i.version="",i.versions={},i.on=h,i.addListener=h,i.once=h,i.off=h,i.removeListener=h,i.removeAllListeners=h,i.emit=h,i.prependListener=h,i.prependOnceListener=h,i.listeners=function(t){return[]},i.binding=function(t){throw new Error("process.binding is not supported")},i.cwd=function(){return"/"},i.chdir=function(t){throw new Error("process.chdir is not supported")},i.umask=function(){return 0}},{}],2:[function(t,f,e){(function(e){function r(){}function i(t){if("object"!=typeof this)throw new TypeError("Promises must be constructed via new");if("function"!=typeof t)throw new TypeError("not a function");this._state=0,this._handled=!1,this._value=undefined,this._deferreds=[],l(t,this)}function o(r,o){for(;3===r._state;)r=r._value;0!==r._state?(r._handled=!0,i._immediateFn(function(){var t=1===r._state?o.onFulfilled:o.onRejected;if(null!==t){var e;try{e=t(r._value)}catch(n){return void a(o.promise,n)}u(o.promise,e)}else(1===r._state?u:a)(o.promise,r._value)})):r._deferreds.push(o)}function u(t,e){try{if(e===t)throw new TypeError("A promise cannot be resolved with itself.");if(e&&("object"==typeof e||"function"==typeof e)){var n=e.then;if(e instanceof i)return t._state=3,t._value=e,void s(t);if("function"==typeof n)return void l(function r(t,e){return function(){t.apply(e,arguments)}}(n,e),t)}t._state=1,t._value=e,s(t)}catch(o){a(t,o)}}function a(t,e){t._state=2,t._value=e,s(t)}function s(t){2===t._state&&0===t._deferreds.length&&i._immediateFn(function(){t._handled||i._unhandledRejectionFn(t._value)});for(var e=0,n=t._deferreds.length;e<n;e++)o(t,t._deferreds[e]);t._deferreds=null}function c(t,e,n){this.onFulfilled="function"==typeof t?t:null,this.onRejected="function"==typeof e?e:null,this.promise=n}function l(t,e){var n=!1;try{t(function(t){n||(n=!0,u(e,t))},function(t){n||(n=!0,a(e,t))})}catch(r){if(n)return;n=!0,a(e,r)}}var t,n;t=this,n=setTimeout,i.prototype["catch"]=function(t){return this.then(null,t)},i.prototype.then=function(t,e){var n=new this.constructor(r);return o(this,new c(t,e,n)),n},i.all=function(t){var s=Array.prototype.slice.call(t);return new i(function(o,i){if(0===s.length)return o([]);var u=s.length;function a(e,t){try{if(t&&("object"==typeof t||"function"==typeof t)){var n=t.then;if("function"==typeof n)return void n.call(t,function(t){a(e,t)},i)}s[e]=t,0==--u&&o(s)}catch(r){i(r)}}for(var t=0;t<s.length;t++)a(t,s[t])})},i.resolve=function(e){return e&&"object"==typeof e&&e.constructor===i?e:new i(function(t){t(e)})},i.reject=function(n){return new i(function(t,e){e(n)})},i.race=function(o){return new i(function(t,e){for(var n=0,r=o.length;n<r;n++)o[n].then(t,e)})},i._immediateFn="function"==typeof e?function(t){e(t)}:function(t){n(t,0)},i._unhandledRejectionFn=function(t){"undefined"!=typeof console&&console&&console.warn("Possible Unhandled Promise Rejection:",t)},i._setImmediateFn=function(t){i._immediateFn=t},i._setUnhandledRejectionFn=function(t){i._unhandledRejectionFn=t},void 0!==f&&f.exports?f.exports=i:t.Promise||(t.Promise=i)}).call(this,t("timers").setImmediate)},{timers:3}],3:[function(s,t,c){(function(t,e){var r=s("process/browser.js").nextTick,n=Function.prototype.apply,o=Array.prototype.slice,i={},u=0;function a(t,e){this._id=t,this._clearFn=e}c.setTimeout=function(){return new a(n.call(setTimeout,window,arguments),clearTimeout)},c.setInterval=function(){return new a(n.call(setInterval,window,arguments),clearInterval)},c.clearTimeout=c.clearInterval=function(t){t.close()},a.prototype.unref=a.prototype.ref=function(){},a.prototype.close=function(){this._clearFn.call(window,this._id)},c.enroll=function(t,e){clearTimeout(t._idleTimeoutId),t._idleTimeout=e},c.unenroll=function(t){clearTimeout(t._idleTimeoutId),t._idleTimeout=-1},c._unrefActive=c.active=function(t){clearTimeout(t._idleTimeoutId);var e=t._idleTimeout;0<=e&&(t._idleTimeoutId=setTimeout(function(){t._onTimeout&&t._onTimeout()},e))},c.setImmediate="function"==typeof t?t:function(t){var e=u++,n=!(arguments.length<2)&&o.call(arguments,1);return i[e]=!0,r(function(){i[e]&&(n?t.apply(null,n):t.call(null),c.clearImmediate(e))}),e},c.clearImmediate="function"==typeof e?e:function(t){delete i[t]}}).call(this,s("timers").setImmediate,s("timers").clearImmediate)},{"process/browser.js":1,timers:3}],4:[function(t,e,n){var r=t("promise-polyfill"),o="undefined"!=typeof window?window:Function("return this;")();e.exports={boltExport:o.Promise||r}},{"promise-polyfill":2}]},{},[4])(4)});function j(t){f.setTimeout(function(){throw t},0)}function M(i,t){return t(function(n){var r=[],o=0;0===i.length?n([]):_(i,function(t,e){t.get(function(e){return function(t){r[e]=t,++o>=i.length&&n(r)}}(e))})})}function L(t,e){return function(t){return M(t,z)}(x(t,e))}function N(t){return t.replace(/\r?\n/g,"<br>")}function B(t,e,n){var r=t.split(/\n\n/),o=function(t,e){var n,r=[],o="<"+t;if("object"==typeof e){for(n in e)e.hasOwnProperty(n)&&r.push(n+'="'+et.encodeAllRaw(e[n])+'"');r.length&&(o+=" "+r.join(" "))}return o+">"}(e,n),i="</"+e+">",u=q.map(r,function(t){return t.split(/\n/).join("<br />")});return 1===u.length?u[0]:q.map(u,function(t){return o+t+i}).join("")}var H=A.exports.boltExport,$=function(t){var n=S.none(),e=[],r=function(t){o()?u(t):e.push(t)},o=function(){return n.isSome()},i=function(t){_(t,u)},u=function(e){n.each(function(t){f.setTimeout(function(){e(t)},0)})};return t(function(t){n=S.some(t),i(e),e=[]}),{get:r,map:function(n){return $(function(e){r(function(t){e(n(t))})})},isReady:o}},W={nu:$,pure:function(e){return $(function(t){t(e)})}},U=function(n){function t(t){n().then(t,j)}return{map:function(t){return U(function(){return n().then(t)})},bind:function(e){return U(function(){return n().then(function(t){return e(t).toPromise()})})},anonBind:function(t){return U(function(){return n().then(function(){return t.toPromise()})})},toLazy:function(){return W.nu(t)},toCached:function(){var t=null;return U(function(){return null===t&&(t=n()),t})},toPromise:n,get:t}},z=function(t){return U(function(){return new H(t)})},V=tinymce.util.Tools.resolve("tinymce.Env"),K=tinymce.util.Tools.resolve("tinymce.util.Delay"),q=tinymce.util.Tools.resolve("tinymce.util.Tools"),G=tinymce.util.Tools.resolve("tinymce.util.VK"),X="x-tinymce/html",Y="\x3c!-- "+X+" --\x3e",Z=function(t){return Y+t},J=function(t){return t.replace(Y,"")},Q=function(t){return-1!==t.indexOf(Y)},tt=function(){return X},et=tinymce.util.Tools.resolve("tinymce.html.Entities"),nt=function(t){return!/<(?:\/?(?!(?:div|p|br|span)>)\w+|(?:(?!(?:span style="white-space:\s?pre;?">)|br\s?\/>))\w+\s[^>]+)>/i.test(t)},rt=function(t,e,n){return e?B(t,!0===e?"p":e,n):N(t)},ot=tinymce.util.Tools.resolve("tinymce.html.DomParser"),it=tinymce.util.Tools.resolve("tinymce.html.Serializer"),ut=tinymce.util.Tools.resolve("tinymce.html.Node"),at=tinymce.util.Tools.resolve("tinymce.html.Schema"),st={shouldBlockDrop:function(t){return t.getParam("paste_block_drop",!1)},shouldPasteDataImages:function(t){return t.getParam("paste_data_images",!1)},shouldFilterDrop:function(t){return t.getParam("paste_filter_drop",!0)},getPreProcess:function(t){return t.getParam("paste_preprocess")},getPostProcess:function(t){return t.getParam("paste_postprocess")},getWebkitStyles:function(t){return t.getParam("paste_webkit_styles")},shouldRemoveWebKitStyles:function(t){return t.getParam("paste_remove_styles_if_webkit",!0)},shouldMergeFormats:function(t){return t.getParam("paste_merge_formats",!0)},isSmartPasteEnabled:function(t){return t.getParam("smart_paste",!0)},isPasteAsTextEnabled:function(t){return t.getParam("paste_as_text",!1)},getRetainStyleProps:function(t){return t.getParam("paste_retain_style_properties")},getWordValidElements:function(t){return t.getParam("paste_word_valid_elements","-strong/b,-em/i,-u,-span,-p,-ol,-ul,-li,-h1,-h2,-h3,-h4,-h5,-h6,-p/div,-a[href|name],sub,sup,strike,br,del,table[width],tr,td[colspan|rowspan|width],th[colspan|rowspan|width],thead,tfoot,tbody")},shouldConvertWordFakeLists:function(t){return t.getParam("paste_convert_word_fake_lists",!0)},shouldUseDefaultFilters:function(t){return t.getParam("paste_enable_default_filters",!0)}};function ct(e,t){return q.each(t,function(t){e=t.constructor===RegExp?e.replace(t,""):e.replace(t[0],t[1])}),e}var lt={filter:ct,innerText:function se(t){var e=at(),n=ot({},e),r="",o=e.getShortEndedElements(),i=q.makeMap("script noscript style textarea video audio iframe object"," "),u=e.getBlockElements();return t=ct(t,[/<!\[[^\]]+\]>/g]),function a(t){var e=t.name,n=t;if("br"!==e){if("wbr"!==e)if(o[e]&&(r+=" "),i[e])r+=" ";else{if(3===t.type&&(r+=t.value),!t.shortEnded&&(t=t.firstChild))for(;a(t),t=t.next;);u[e]&&n.next&&(r+="\n","p"===e&&(r+="\n"))}}else r+="\n"}(n.parse(t)),r},trimHtml:function ce(t){return t=ct(t,[/^[\s\S]*<body[^>]*>\s*|\s*<\/body[^>]*>[\s\S]*$/gi,/<!--StartFragment-->|<!--EndFragment-->/g,[/( ?)<span class="Apple-converted-space">\u00a0<\/span>( ?)/g,function r(t,e,n){return e||n?"\xa0":" "}],/<br class="Apple-interchange-newline">/g,/<br>$/i])},createIdGenerator:function le(t){var e=0;return function(){return t+e++}},isMsEdge:function(){return-1!==f.navigator.userAgent.indexOf(" Edge/")}};function ft(e){var n,t;return t=[/^[IVXLMCD]{1,2}\.[ \u00a0]/,/^[ivxlmcd]{1,2}\.[ \u00a0]/,/^[a-z]{1,2}[\.\)][ \u00a0]/,/^[A-Z]{1,2}[\.\)][ \u00a0]/,/^[0-9]+\.[ \u00a0]/,/^[\u3007\u4e00\u4e8c\u4e09\u56db\u4e94\u516d\u4e03\u516b\u4e5d]+\.[ \u00a0]/,/^[\u58f1\u5f10\u53c2\u56db\u4f0d\u516d\u4e03\u516b\u4e5d\u62fe]+\.[ \u00a0]/],e=e.replace(/^[\u00a0 ]+/,""),q.each(t,function(t){if(t.test(e))return!(n=!0)}),n}function dt(t){var i,u,a=1;function n(t){var e="";if(3===t.type)return t.value;if(t=t.firstChild)for(;e+=n(t),t=t.next;);return e}function s(t,e){if(3===t.type&&e.test(t.value))return t.value=t.value.replace(e,""),!1;if(t=t.firstChild)do{if(!s(t,e))return!1}while(t=t.next);return!0}function e(t,e,n){var r=t._listLevel||a;r!==a&&(i=r<a?i&&i.parent.parent:(u=i,null)),i&&i.name===e?i.append(t):(u=u||i,i=new ut(e,1),1<n&&i.attr("start",""+n),t.wrap(i)),t.name="li",a<r&&u&&u.lastChild.append(i),a=r,function o(t){if(t._listIgnore)t.remove();else if(t=t.firstChild)for(;o(t),t=t.next;);}(t),s(t,/^\u00a0+/),s(t,/^\s*([\u2022\u00b7\u00a7\u25CF]|\w+\.)/),s(t,/^\u00a0+/)}for(var r=[],o=t.firstChild;null!=o;)if(r.push(o),null!==(o=o.walk()))for(;void 0!==o&&o.parent!==t;)o=o.walk();for(var c=0;c<r.length;c++)if("p"===(t=r[c]).name&&t.firstChild){var l=n(t);if(/^[\s\u00a0]*[\u2022\u00b7\u00a7\u25CF]\s*/.test(l)){e(t,"ul");continue}if(ft(l)){var f=/([0-9]+)\./.exec(l),d=1;f&&(d=parseInt(f[1],10)),e(t,"ol",d);continue}if(t._listLevel){e(t,"ul",1);continue}i=null}else u=i,i=null}function mt(n,r,o,i){var u,a={},t=n.dom.parseStyle(i);return q.each(t,function(t,e){switch(e){case"mso-list":(u=/\w+ \w+([0-9]+)/i.exec(i))&&(o._listLevel=parseInt(u[1],10)),/Ignore/i.test(t)&&o.firstChild&&(o._listIgnore=!0,o.firstChild._listIgnore=!0);break;case"horiz-align":e="text-align";break;case"vert-align":e="vertical-align";break;case"font-color":case"mso-foreground":e="color";break;case"mso-background":case"mso-highlight":e="background";break;case"font-weight":case"font-style":return void("normal"!==t&&(a[e]=t));case"mso-element":if(/^(comment|comment-list)$/i.test(t))return void o.remove()}0!==e.indexOf("mso-comment")?0!==e.indexOf("mso-")&&("all"===st.getRetainStyleProps(n)||r&&r[e])&&(a[e]=t):o.remove()}),/(bold)/i.test(a["font-weight"])&&(delete a["font-weight"],o.wrap(new ut("b",1))),/(italic)/i.test(a["font-style"])&&(delete a["font-style"],o.wrap(new ut("i",1))),(a=n.dom.serializeStyle(a,o.name))||null}function pt(t,e){return{content:t,cancelled:e}}function gt(t,e,n,r){var o=s(t,e,n,r),i=function(t,e){var n=ot({},t.schema);n.addNodeFilter("meta",function(t){q.each(t,function(t){return t.remove()})});var r=n.parse(e,{forced_root_block:!1,isRootContent:!0});return it({validate:t.settings.validate},t.schema).serialize(r)}(t,o.content);return t.hasEventListeners("PastePostProcess")&&!o.isDefaultPrevented()?function(t,e,n,r){var o=t.dom.create("div",{style:"display:none"},e),i=c(t,o,n,r);return pt(i.node.innerHTML,i.isDefaultPrevented())}(t,i,n,r):pt(i,o.isDefaultPrevented())}function ht(t,e){return t.insertContent(e,{merge:st.shouldMergeFormats(t),paste:!0}),!0}function vt(t){return/^https?:\/\/[\w\?\-\/+=.&%@~#]+$/i.test(t)}function yt(t){return vt(t)&&/.(gif|jpe?g|png)$/.test(t)}function bt(t,e,n){return!(!1!==t.selection.isCollapsed()||!vt(e))&&function(t,e,n){return t.undoManager.extra(function(){n(t,e)},function(){t.execCommand("mceInsertLink",!1,e)}),!0}(t,e,n)}function wt(t,e,n){return!!yt(e)&&function(t,e,n){return t.undoManager.extra(function(){n(t,e)},function(){t.insertContent('<img src="'+e+'">')}),!0}(t,e,n)}function xt(t){return"\n"===t||"\r"===t}function _t(n){return function(t,e,n){return _(t,function(t){n=e(n,t)}),n}(n,function(t,e){return function(t){return-1!==" \f\t\x0B".indexOf(t)}(e)||"\xa0"===e?t.pcIsSpace||""===t.str||t.str.length===n.length-1||function(t,e){return e<t.length&&0<=e&&xt(t[e])}(n,t.str.length+1)?{pcIsSpace:!1,str:t.str+"\xa0"}:{pcIsSpace:!0,str:t.str+" "}:{pcIsSpace:xt(e),str:t.str+e}},{pcIsSpace:!1,str:""}).str}function Pt(t,e,n,r){var o=Vt(t,e,n);!1===o.cancelled&&qt(t,o.content,r)}function Tt(t,e,n){var r=n||Q(e);Pt(t,J(e),r,!1)}function Dt(t,e){var n=t.dom.encode(e).replace(/\r\n/g,"\n"),r=_t(n),o=rt(r,t.settings.forced_root_block,t.settings.forced_root_block_attrs);Pt(t,o,!1,!0)}function Ct(t){var e={};if(t){if(t.getData){var n=t.getData("Text");n&&0<n.length&&-1===n.indexOf("data:text/mce-internal,")&&(e["text/plain"]=n)}if(t.types)for(var r=0;r<t.types.length;r++){var o=t.types[r];try{e[o]=t.getData(o)}catch(i){e[o]=""}}}return e}function kt(t,e){return e in t&&0<t[e].length}function Ft(t){return kt(t,"text/html")||kt(t,"text/plain")}function St(e,t,n){var r=function(t){return"paste"===t.type}(t)?t.clipboardData:t.dataTransfer;if(e.settings.paste_data_images&&r){var o=function(t){var e=t.items?x(R(t.items),function(t){return t.getAsFile()}):[],n=t.files?R(t.files):[];return function(t,e){for(var n=[],r=0,o=t.length;r<o;r++){var i=t[r];e(i,r)&&n.push(i)}return n}(0<e.length?e:n,function(t){return/^image\/(jpeg|png|gif|bmp)$/.test(t.type)})}(r);if(0<o.length)return t.preventDefault(),function(t){return L(t,function(r){return z(function(t){var e=r.getAsFile?r.getAsFile():r,n=new window.FileReader;n.onload=function(){t({blob:e,uri:n.result})},n.readAsDataURL(e)})})}(o).get(function(t){n&&e.selection.setRng(n),_(t,function(t){!function(t,e){var n=function(t){var e;return-1!==(e=t.indexOf(","))?t.substr(e+1):null}(e.uri),r=Gt(),o=t.settings.images_reuse_filename&&e.blob.name?function(t,e){var n=e.match(/([\s\S]+?)\.(?:jpeg|jpg|png|gif)$/i);return n?t.dom.encode(n[1]):null}(t,e.blob.name):r,i=new f.Image;if(i.src=e.uri,function(t,e){return!t.images_dataimg_filter||t.images_dataimg_filter(e)}(t.settings,i)){var u,a=t.editorUpload.blobCache,s=void 0;(u=a.findFirst(function(t){return t.base64()===n}))?s=u:(s=a.create(r,e.blob,n,o),a.add(s)),Tt(t,'<img src="'+s.blobUri()+'">',!1)}else Tt(t,'<img src="'+e.uri+'">',!1)}(e,t)})}),!0}return!1}function Et(t){return G.metaKeyPressed(t)&&86===t.keyCode||t.shiftKey&&45===t.keyCode}function It(a,s,i){var u,c=function(){var e=d(S.none());return{clear:function(){e.set(S.none())},set:function(t){e.set(S.some(t))},isSet:function(){return e.get().isSome()},on:function(t){e.get().each(t)}}}();function l(t,e,n,r){var o,i,u;kt(t,"text/html")?o=t["text/html"]:(o=s.getHtml(),r=r||Q(o),s.isDefaultContent(o)&&(n=!0)),o=lt.trimHtml(o),s.remove(),i=!1===r&&nt(o),u=Kt(o),o.length&&(!i||u)||(n=!0),(n||u)&&(o=kt(t,"text/plain")&&i?t["text/plain"]:lt.innerText(o)),s.isDefaultContent(o)?e||a.windowManager.alert("Please use Ctrl+V/Cmd+V keyboard shortcuts to paste contents."):n?Dt(a,o):Tt(a,o,r)}a.on("keydown",function(t){function e(t){Et(t)&&!t.isDefaultPrevented()&&s.remove()}if(Et(t)&&!t.isDefaultPrevented()){if((u=t.shiftKey&&86===t.keyCode)&&V.webkit&&-1!==f.navigator.userAgent.indexOf("Version/"))return;if(t.stopImmediatePropagation(),c.set(t),window.setTimeout(function(){c.clear()},100),V.ie&&u)return t.preventDefault(),void m(a,!0);s.remove(),s.create(),a.once("keyup",e),a.once("paste",function(){a.off("keyup",e)})}}),a.on("paste",function(t){var e=c.isSet(),n=function(t,e){var n=Ct(e.clipboardData||t.getDoc().dataTransfer);return lt.isMsEdge()?q.extend(n,{"text/html":""}):n}(a,t),r="text"===i.get()||u,o=kt(n,tt());u=!1,t.isDefaultPrevented()||function(t){var e=t.clipboardData;return-1!==f.navigator.userAgent.indexOf("Android")&&e&&e.items&&0===e.items.length}(t)?s.remove():Ft(n)||!St(a,t,s.getLastRng()||a.selection.getRng())?(e||t.preventDefault(),!V.ie||e&&!t.ieFake||kt(n,"text/html")||(s.create(),a.dom.bind(s.getEl(),"paste",function(t){t.stopPropagation()}),a.getDoc().execCommand("Paste",!1,null),n["text/html"]=s.getHtml()),kt(n,"text/html")?(t.preventDefault(),o=o||Q(n["text/html"]),l(n,e,r,o)):K.setEditorTimeout(a,function(){l(n,e,r,o)},0)):s.remove()})}function Rt(t){return V.ie&&t.inline?f.document.body:t.getBody()}function Ot(e,t,n){!function(t){return Rt(t)!==t.getBody()}(e)||e.dom.bind(t,"paste keyup",function(t){Yt(e,n)||e.fire("paste")})}function At(t,e){return e===t}function jt(t){var e=d(null),n="%MCEPASTEBIN%";return{create:function(){return function(t,e,n){var r,o=t.dom,i=t.getBody();e.set(t.selection.getRng()),r=t.dom.add(Rt(t),"div",{id:"mcepastebin","class":"mce-pastebin",contentEditable:!0,"data-mce-bogus":"all",style:"position: fixed; top: 50%; width: 10px; height: 10px; overflow: hidden; opacity: 0"},n),(V.ie||V.gecko)&&o.setStyle(r,"left","rtl"===o.getStyle(i,"direction",!0)?65535:-65535),o.bind(r,"beforedeactivate focusin focusout",function(t){t.stopPropagation()}),Ot(t,r,n),r.focus(),t.selection.select(r,!0)}(t,e,n)},remove:function(){return function(t,e){if(Xt(t)){for(var n=void 0,r=e.get();n=t.dom.get("mcepastebin");)t.dom.remove(n),t.dom.unbind(n);r&&t.selection.setRng(r)}e.set(null)}(t,e)},getEl:function(){return Xt(t)},getHtml:function(){return function(n){function e(t,e){t.appendChild(e),n.dom.remove(e,!0)}var r,t,o,i,u;for(t=q.grep(Rt(n).childNodes,function(t){return"mcepastebin"===t.id}),r=t.shift(),q.each(t,function(t){e(r,t)}),o=(i=n.dom.select("div[id=mcepastebin]",r)).length-1;0<=o;o--)u=n.dom.create("div"),r.insertBefore(u,i[o]),e(u,i[o]);return r?r.innerHTML:""}(t)},getLastRng:function(){return function(t){return t.get()}(e)},isDefault:function(){return Yt(t,n)},isDefaultContent:function(t){return At(n,t)}}}function Mt(n,t){var e=jt(n);return n.on("PreInit",function(){return function(u,t,e){var a;It(u,t,e),u.parser.addNodeFilter("img",function(t,e,n){function r(t){t.attr("data-mce-object")||a===V.transparentSrc||t.remove()}var o;if(!u.settings.paste_data_images&&((o=n).data&&!0===o.data.paste))for(var i=t.length;i--;)(a=t[i].attr("src"))&&(0===a.indexOf("webkit-fake-url")?r(t[i]):u.settings.allow_html_data_urls||0!==a.indexOf("data:")||r(t[i]))})}(n,e,t)}),{pasteFormat:t,pasteHtml:function(t,e){return Tt(n,t,e)},pasteText:function(t){return Dt(n,t)},pasteImageData:function(t,e){return St(n,t,e)},getDataTransferItems:Ct,hasHtmlOrText:Ft,hasContentType:kt}}function Lt(t,e,n){if(!function(t){return!1===V.iOS&&t!==undefined&&"function"==typeof t.setData&&!0!==lt.isMsEdge()}(t))return!1;try{return t.clearData(),t.setData("text/html",e),t.setData("text/plain",n),t.setData(tt(),e),!0}catch(r){return!1}}function Nt(t,e,n,r){Lt(t.clipboardData,e.html,e.text)?(t.preventDefault(),r()):n(e.html,r)}function Bt(a){return function(t,e){var n=Z(t),r=a.dom.create("div",{contenteditable:"false","data-mce-bogus":"all"}),o=a.dom.create("div",{contenteditable:"true"},n);a.dom.setStyles(r,{position:"fixed",top:"0",left:"-3000px",width:"1000px",overflow:"hidden"}),r.appendChild(o),a.dom.add(a.getBody(),r);var i=a.selection.getRng();o.focus();var u=a.dom.createRng();u.selectNodeContents(o),a.selection.setRng(u),K.setTimeout(function(){a.selection.setRng(i),r.parentNode.removeChild(r),e()},0)}}function Ht(t){return{html:t.selection.getContent({contextual:!0}),text:t.selection.getContent({format:"text"})}}function $t(t){return!t.selection.isCollapsed()||function(t){return!!t.dom.getParent(t.selection.getStart(),"td[data-mce-selected],th[data-mce-selected]",t.getBody())}(t)}function Wt(t,e){return Jt.getCaretRangeFromPoint(e.clientX,e.clientY,t.getDoc())}function Ut(t,e){t.focus(),t.selection.setRng(e)}var zt={preProcess:function(t,e){return st.shouldUseDefaultFilters(t)?function(r,t){var e,o;(e=st.getRetainStyleProps(r))&&(o=q.makeMap(e.split(/[, ]/))),t=lt.filter(t,[/<br class="?Apple-interchange-newline"?>/gi,/<b[^>]+id="?docs-internal-[^>]*>/gi,/<!--[\s\S]+?-->/gi,/<(!|script[^>]*>.*?<\/script(?=[>\s])|\/?(\?xml(:\w+)?|img|meta|link|style|\w:\w+)(?=[\s\/>]))[^>]*>/gi,[/<(\/?)s>/gi,"<$1strike>"],[/&nbsp;/gi,"\xa0"],[/<span\s+style\s*=\s*"\s*mso-spacerun\s*:\s*yes\s*;?\s*"\s*>([\s\u00a0]*)<\/span>/gi,function(t,e){return 0<e.length?e.replace(/./," ").slice(Math.floor(e.length/2)).split("").join("\xa0"):""}]]);var n=st.getWordValidElements(r),i=at({valid_elements:n,valid_children:"-li[p]"});q.each(i.elements,function(t){t.attributes["class"]||(t.attributes["class"]={},t.attributesOrder.push("class")),t.attributes.style||(t.attributes.style={},t.attributesOrder.push("style"))});var u=ot({},i);u.addAttributeFilter("style",function(t){for(var e,n=t.length;n--;)(e=t[n]).attr("style",mt(r,o,e,e.attr("style"))),"span"===e.name&&e.parent&&!e.attributes.length&&e.unwrap()}),u.addAttributeFilter("class",function(t){for(var e,n,r=t.length;r--;)n=(e=t[r]).attr("class"),/^(MsoCommentReference|MsoCommentText|msoDel)$/i.test(n)&&e.remove(),e.attr("class",null)}),u.addNodeFilter("del",function(t){for(var e=t.length;e--;)t[e].remove()}),u.addNodeFilter("a",function(t){for(var e,n,r,o=t.length;o--;)if(n=(e=t[o]).attr("href"),r=e.attr("name"),n&&-1!==n.indexOf("#_msocom_"))e.remove();else if(n&&0===n.indexOf("file://")&&(n=(n=n.split("#")[1])&&"#"+n),n||r){if(r&&!/^_?(?:toc|edn|ftn)/i.test(r)){e.unwrap();continue}e.attr({href:n,name:r})}else e.unwrap()});var a=u.parse(t);return st.shouldConvertWordFakeLists(r)&&dt(a),t=it({validate:r.settings.validate},i).serialize(a)}(t,e):e},isWordContent:function fe(t){return/<font face="Times New Roman"|class="?Mso|style="[^"]*\bmso-|style='[^'']*\bmso-|w:WordDocument/i.test(t)||/class="OutlineElement/.test(t)||/id="?docs\-internal\-guid\-/.test(t)}},Vt=function(t,e,n){var r=zt.isWordContent(e),o=r?zt.preProcess(t,e):e;return gt(t,o,n,r)},Kt=yt,qt=function(t,e,n){n||!1===st.isSmartPasteEnabled(t)?ht(t,e):function(e,n){q.each([bt,wt,ht],function(t){return!0!==t(e,n,ht)})}(t,e)},Gt=lt.createIdGenerator("mceclip"),Xt=function(t){return t.dom.get("mcepastebin")},Yt=function(t,e){var n=Xt(t);return function(t){return t&&"mcepastebin"===t.id}(n)&&At(e,n.innerHTML)},Zt=function(t){t.on("cut",function(e){return function(t){$t(e)&&Nt(t,Ht(e),Bt(e),function(){if(V.browser.isChrome()){var t=e.selection.getRng();K.setEditorTimeout(e,function(){e.selection.setRng(t),e.execCommand("Delete")},0)}else e.execCommand("Delete")})}}(t)),t.on("copy",function(e){return function(t){$t(e)&&Nt(t,Ht(e),Bt(e),function(){})}}(t))},Jt=tinymce.util.Tools.resolve("tinymce.dom.RangeUtils"),Qt=function(i,u,a){st.shouldBlockDrop(i)&&i.on("dragend dragover draggesture dragdrop drop drag",function(t){t.preventDefault(),t.stopPropagation()}),st.shouldPasteDataImages(i)||i.on("drop",function(t){var e=t.dataTransfer;e&&e.files&&0<e.files.length&&t.preventDefault()}),i.on("drop",function(t){var e,n;if(n=Wt(i,t),!t.isDefaultPrevented()&&!a.get()){e=u.getDataTransferItems(t.dataTransfer);var r=u.hasContentType(e,tt());if((u.hasHtmlOrText(e)&&!function(t){var e=t["text/plain"];return!!e&&0===e.indexOf("file://")}(e)||!u.pasteImageData(t,n))&&n&&st.shouldFilterDrop(i)){var o=e["mce-internal"]||e["text/html"]||e["text/plain"];o&&(t.preventDefault(),K.setEditorTimeout(i,function(){i.undoManager.transact(function(){e["mce-internal"]&&i.execCommand("Delete"),Ut(i,n),o=lt.trimHtml(o),e["text/html"]?u.pasteHtml(o,r):u.pasteText(o)})}))}}}),i.on("dragstart",function(t){a.set(!0)}),i.on("dragover dragend",function(t){st.shouldPasteDataImages(i)&&!1===a.get()&&(t.preventDefault(),Ut(i,Wt(i,t))),"dragend"===t.type&&a.set(!1)})},te=function(t){var e=t.plugins.paste,n=st.getPreProcess(t);n&&t.on("PastePreProcess",function(t){n.call(e,e,t)});var r=st.getPostProcess(t);r&&t.on("PastePostProcess",function(t){r.call(e,e,t)})};function ee(e,n){e.on("PastePreProcess",function(t){t.content=n(e,t.content,t.internal,t.wordContent)})}function ne(t,e){if(!zt.isWordContent(e))return e;var n=[];q.each(t.schema.getBlockElements(),function(t,e){n.push(e)});var r=new RegExp("(?:<br>&nbsp;[\\s\\r\\n]+|<br>)*(<\\/?("+n.join("|")+")[^>]*>)(?:<br>&nbsp;[\\s\\r\\n]+|<br>)*","g");return e=lt.filter(e,[[r,"$1"]]),e=lt.filter(e,[[/<br><br>/g,"<BR><BR>"],[/<br>/g," "],[/<BR><BR>/g,"<br>"]])}function re(t,e,n,r){if(r||n)return e;var c,o=st.getWebkitStyles(t);if(!1===st.shouldRemoveWebKitStyles(t)||"all"===o)return e;if(o&&(c=o.split(/[, ]/)),c){var l=t.dom,f=t.selection.getNode();e=e.replace(/(<[^>]+) style="([^"]*)"([^>]*>)/gi,function(t,e,n,r){var o=l.parseStyle(l.decode(n)),i={};if("none"===c)return e+r;for(var u=0;u<c.length;u++){var a=o[c[u]],s=l.getStyle(f,c[u],!0);/color/.test(c[u])&&(a=l.toHex(a),s=l.toHex(s)),s!==a&&(i[c[u]]=a)}return(i=l.serializeStyle(i,"span"))?e+' style="'+i+'"'+r:e+r})}else e=e.replace(/(<[^>]+) style="([^"]*)"([^>]*>)/gi,"$1$3");return e=e.replace(/(<[^>]+) data-mce-style="([^"]+)"([^>]*>)/gi,function(t,e,n,r){return e+' style="'+n+'"'+r})}function oe(n,t){n.$("a",t).find("font,u").each(function(t,e){n.dom.remove(e,!0)})}function ie(n,r){return function(e){e.setActive("text"===r.pasteFormat.get());function t(t){return e.setActive(t.state)}return n.on("PastePlainTextToggle",t),function(){return n.off("PastePlainTextToggle",t)}}}var ue=function(t){V.webkit&&ee(t,re),V.ie&&(ee(t,ne),function r(e,n){e.on("PastePostProcess",function(t){n(e,t.node)})}(t,oe))},ae=function(t,e){t.ui.registry.addToggleButton("pastetext",{active:!1,icon:"paste-text",tooltip:"Paste as text",onAction:function(){return t.execCommand("mceTogglePlainTextPaste")},onSetup:ie(t,e)}),t.ui.registry.addToggleMenuItem("pastetext",{text:"Paste as text",onAction:function(){return t.execCommand("mceTogglePlainTextPaste")},onSetup:ie(t,e)})};!function de(){r.add("paste",function(t){if(!1===u(t)){var e=d(!1),n=d(st.isPasteAsTextEnabled(t)?"text":"html"),r=Mt(t,n),o=ue(t);return ae(t,r),p(t,r),te(t),Zt(t),Qt(t,r,e),a(r,o)}})}()}(window);
\ No newline at end of file
diff --git a/admin/js/vendors/tinymce/js/tinymce/plugins/preview/plugin.min.js b/admin/js/vendors/tinymce/js/tinymce/plugins/preview/plugin.min.js
new file mode 100644 (file)
index 0000000..da4b784
--- /dev/null
@@ -0,0 +1,9 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ *
+ * Version: 5.1.5 (2019-12-19)
+ */
+!function(){"use strict";var e=tinymce.util.Tools.resolve("tinymce.PluginManager"),l=tinymce.util.Tools.resolve("tinymce.util.Tools"),m=function(e){return e.getParam("content_style","")},u=function(e){return e.getParam("content_css_cors",!1,"boolean")},y=tinymce.util.Tools.resolve("tinymce.Env"),n=function(t){var n="",i=t.dom.encode,e=m(t);n+='<base href="'+i(t.documentBaseURI.getURI())+'">',e&&(n+='<style type="text/css">'+e+"</style>");var o=u(t)?' crossorigin="anonymous"':"";l.each(t.contentCSS,function(e){n+='<link type="text/css" rel="stylesheet" href="'+i(t.documentBaseURI.toAbsolute(e))+'"'+o+">"});var r=t.settings.body_id||"tinymce";-1!==r.indexOf("=")&&(r=(r=t.getParam("body_id","","hash"))[t.id]||r);var a=t.settings.body_class||"";-1!==a.indexOf("=")&&(a=(a=t.getParam("body_class","","hash"))[t.id]||"");var c='<script>document.addEventListener && document.addEventListener("click", function(e) {for (var elm = e.target; elm; elm = elm.parentNode) {if (elm.nodeName === "A" && !('+(y.mac?"e.metaKey":"e.ctrlKey && !e.altKey")+")) {e.preventDefault();}}}, false);<\/script> ",s=t.getBody().dir,d=s?' dir="'+i(s)+'"':"";return"<!DOCTYPE html><html><head>"+n+'</head><body id="'+i(r)+'" class="mce-content-body '+i(a)+'"'+d+">"+t.getContent()+c+"</body></html>"},t=function(e){e.addCommand("mcePreview",function(){!function(e){var t=n(e);e.windowManager.open({title:"Preview",size:"large",body:{type:"panel",items:[{name:"preview",type:"iframe",sandboxed:!0}]},buttons:[{type:"cancel",name:"close",text:"Close",primary:!0}],initialData:{preview:t}}).focus("close")}(e)})},i=function(e){e.ui.registry.addButton("preview",{icon:"preview",tooltip:"Preview",onAction:function(){return e.execCommand("mcePreview")}}),e.ui.registry.addMenuItem("preview",{icon:"preview",text:"Preview",onAction:function(){return e.execCommand("mcePreview")}})};!function o(){e.add("preview",function(e){t(e),i(e)})}()}();
\ No newline at end of file
diff --git a/admin/js/vendors/tinymce/js/tinymce/plugins/print/plugin.min.js b/admin/js/vendors/tinymce/js/tinymce/plugins/print/plugin.min.js
new file mode 100644 (file)
index 0000000..43e7ca2
--- /dev/null
@@ -0,0 +1,9 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ *
+ * Version: 5.1.5 (2019-12-19)
+ */
+!function(){"use strict";var n=tinymce.util.Tools.resolve("tinymce.PluginManager"),t=tinymce.util.Tools.resolve("tinymce.Env"),i=function(n){n.addCommand("mcePrint",function(){t.browser.isIE()?n.getDoc().execCommand("print",!1,null):n.getWin().print()})},e=function(n){n.ui.registry.addButton("print",{icon:"print",tooltip:"Print",onAction:function(){return n.execCommand("mcePrint")}}),n.ui.registry.addMenuItem("print",{text:"Print...",icon:"print",onAction:function(){return n.execCommand("mcePrint")}})};!function o(){n.add("print",function(n){i(n),e(n),n.addShortcut("Meta+P","","mcePrint")})}()}();
\ No newline at end of file
diff --git a/admin/js/vendors/tinymce/js/tinymce/plugins/quickbars/plugin.min.js b/admin/js/vendors/tinymce/js/tinymce/plugins/quickbars/plugin.min.js
new file mode 100644 (file)
index 0000000..8abc4ba
--- /dev/null
@@ -0,0 +1,9 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ *
+ * Version: 5.1.5 (2019-12-19)
+ */
+!function(u){"use strict";function e(){}function l(e){return function(){return e}}function n(){return p}var r,t=tinymce.util.Tools.resolve("tinymce.PluginManager"),i=0,o=function(e,n,r){e.plugins.table?e.plugins.table.insertTable(n,r):function(r,t,o){r.undoManager.transact(function(){var e,n;r.insertContent(function(e,n){var r,t,o;for(o='<table data-mce-id="mce" style="width: 100%">',o+="<tbody>",t=0;t<n;t++){for(o+="<tr>",r=0;r<e;r++)o+="<td><br></td>";o+="</tr>"}return o+="</tbody>",o+="</table>"}(t,o)),(e=function(e){return e.dom.select("*[data-mce-id]")[0]}(r)).removeAttribute("data-mce-id"),n=r.dom.select("td,th",e),r.selection.setCursorLocation(n[0],0)})}(e,n,r)},c=function(e,n,r){var t,o;o=(t=e.editorUpload.blobCache).create(function(e){var n=(new Date).getTime();return e+"_"+Math.floor(1e9*Math.random())+ ++i+String(n)}("mceu"),r,n),t.add(o),e.insertContent(e.dom.createHTML("img",{src:o.blobUri()}))},s=tinymce.util.Tools.resolve("tinymce.util.Promise"),a=function(r){return new s(function(e){var n=new u.FileReader;n.onloadend=function(){e(n.result.split(",")[1])},n.readAsDataURL(r)})},f=tinymce.util.Tools.resolve("tinymce.Env"),d=tinymce.util.Tools.resolve("tinymce.util.Delay"),m=function(i){return new s(function(r){var t=u.document.createElement("input");t.type="file",t.style.position="fixed",t.style.left="0",t.style.top="0",t.style.opacity="0.001",u.document.body.appendChild(t);t.addEventListener("change",function(e){r(Array.prototype.slice.call(e.target.files))});var o=function(e){function n(){r([]),t.parentNode.removeChild(t)}f.os.isAndroid()&&"remove"!==e.type?d.setEditorTimeout(i,n,0):n(),i.off("focusin remove",o)};i.on("focusin remove",o),t.click()})},g=function(r){r.ui.registry.addButton("quickimage",{icon:"image",tooltip:"Insert image",onAction:function(){m(r).then(function(e){if(0<e.length){var n=e[0];a(n).then(function(e){c(r,e,n)})}})}}),r.ui.registry.addButton("quicktable",{icon:"table",tooltip:"Insert table",onAction:function(){o(r,2,2)}})},v=l(!1),h=l(!0),p=(r={fold:function(e,n){return e()},is:v,isSome:v,isNone:h,getOr:b,getOrThunk:O,getOrDie:function(e){throw new Error(e||"error: getOrDie called on none.")},getOrNull:l(null),getOrUndefined:l(undefined),or:b,orThunk:O,map:n,each:e,bind:n,exists:v,forall:h,filter:n,equals:N,equals_:N,toArray:function(){return[]},toString:l("none()")},Object.freeze&&Object.freeze(r),r);function N(e){return e.isNone()}function O(e){return e()}function b(e){return e}function E(n){return function(e){return function(e){if(null===e)return"null";var n=typeof e;return"object"==n&&(Array.prototype.isPrototypeOf(e)||e.constructor&&"Array"===e.constructor.name)?"array":"object"==n&&(String.prototype.isPrototypeOf(e)||e.constructor&&"String"===e.constructor.name)?"string":n}(e)===n}}var w=function(r){function e(){return o}function n(e){return e(r)}var t=l(r),o={fold:function(e,n){return n(r)},is:function(e){return r===e},isSome:h,isNone:v,getOr:t,getOrThunk:t,getOrDie:t,getOrNull:t,getOrUndefined:t,or:e,orThunk:e,map:function(e){return w(e(r))},each:function(e){e(r)},bind:n,exists:n,forall:n,filter:function(e){return e(r)?o:p},toArray:function(){return[r]},toString:function(){return"some("+r+")"},equals:function(e){return e.is(r)},equals_:function(e,n){return e.fold(v,function(e){return n(r,e)})}};return o},T={some:w,none:n,from:function(e){return null===e||e===undefined?p:w(e)}},y=function(e){if(null===e||e===undefined)throw new Error("Node cannot be null or undefined");return{dom:l(e)}},S={fromHtml:function(e,n){var r=(n||u.document).createElement("div");if(r.innerHTML=e,!r.hasChildNodes()||1<r.childNodes.length)throw u.console.error("HTML does not have a single root node",e),new Error("HTML must have a single root node");return y(r.childNodes[0])},fromTag:function(e,n){var r=(n||u.document).createElement(e);return y(r)},fromText:function(e,n){var r=(n||u.document).createTextNode(e);return y(r)},fromDom:y,fromPoint:function(e,n,r){var t=e.dom();return T.from(t.elementFromPoint(n,r)).map(y)}},x=(u.Node.ATTRIBUTE_NODE,u.Node.CDATA_SECTION_NODE,u.Node.COMMENT_NODE,u.Node.DOCUMENT_NODE,u.Node.DOCUMENT_TYPE_NODE,u.Node.DOCUMENT_FRAGMENT_NODE,u.Node.ELEMENT_NODE),D=(u.Node.TEXT_NODE,u.Node.PROCESSING_INSTRUCTION_NODE,u.Node.ENTITY_REFERENCE_NODE,u.Node.ENTITY_NODE,u.Node.NOTATION_NODE,"undefined"!=typeof u.window?u.window:Function("return this;")(),E("string")),k=E("object"),_=E("array"),C=E("boolean"),A=E("undefined"),M=E("function"),R=Array.prototype.slice;M(Array.from)&&Array.from;function I(e,n,r,t,o){return e(r,t)?T.some(r):M(o)&&o(r)?T.none():n(r,t,o)}function q(e,n,r){return 0!=(e.compareDocumentPosition(n)&r)}function L(e,n){var r=function(e,n){for(var r=0;r<e.length;r++){var t=e[r];if(t.test(n))return t}return undefined}(e,n);if(!r)return{major:0,minor:0};function t(e){return Number(n.replace(r,"$"+e))}return V(t(1),t(2))}function P(e,n){return function(){return n===e}}function F(e,n){return function(){return n===e}}function U(e,n){var r=String(n).toLowerCase();return function(e,n){for(var r=0,t=e.length;r<t;r++){var o=e[r];if(n(o,r))return T.some(o)}return T.none()}(e,function(e){return e.search(r)})}function B(e,n){return-1!==e.indexOf(n)}function j(n){return function(e){return B(e,n)}}function H(e,n){var r=e.dom();if(r.nodeType!==me)return!1;var t=r;if(t.matches!==undefined)return t.matches(n);if(t.msMatchesSelector!==undefined)return t.msMatchesSelector(n);if(t.webkitMatchesSelector!==undefined)return t.webkitMatchesSelector(n);if(t.mozMatchesSelector!==undefined)return t.mozMatchesSelector(n);throw new Error("Browser lacks native selectors")}function X(e,n,r){for(var t=e.dom(),o=M(r)?r:l(!1);t.parentNode;){t=t.parentNode;var i=S.fromDom(t);if(n(i))return T.some(i);if(o(i))break}return T.none()}function z(e,n,r){return X(e,function(e){return H(e,n)},r)}var G,W=function(e,n){return q(e,n,u.Node.DOCUMENT_POSITION_CONTAINED_BY)},Y=function(e){function n(){return r}var r=e;return{get:n,set:function(e){r=e},clone:function(){return Y(n())}}},$=function(){return V(0,0)},V=function(e,n){return{major:e,minor:n}},J={nu:V,detect:function(e,n){var r=String(n).toLowerCase();return 0===e.length?$():L(e,r)},unknown:$},K="Firefox",Q=function(e){var n=e.current;return{current:n,version:e.version,isEdge:P("Edge",n),isChrome:P("Chrome",n),isIE:P("IE",n),isOpera:P("Opera",n),isFirefox:P(K,n),isSafari:P("Safari",n)}},Z={unknown:function(){return Q({current:undefined,version:J.unknown()})},nu:Q,edge:l("Edge"),chrome:l("Chrome"),ie:l("IE"),opera:l("Opera"),firefox:l(K),safari:l("Safari")},ee="Windows",ne="Android",re="Solaris",te="FreeBSD",oe=function(e){var n=e.current;return{current:n,version:e.version,isWindows:F(ee,n),isiOS:F("iOS",n),isAndroid:F(ne,n),isOSX:F("OSX",n),isLinux:F("Linux",n),isSolaris:F(re,n),isFreeBSD:F(te,n)}},ie={unknown:function(){return oe({current:undefined,version:J.unknown()})},nu:oe,windows:l(ee),ios:l("iOS"),android:l(ne),linux:l("Linux"),osx:l("OSX"),solaris:l(re),freebsd:l(te)},ue=function(e,r){return U(e,r).map(function(e){var n=J.detect(e.versionRegexes,r);return{current:e.name,version:n}})},ce=function(e,r){return U(e,r).map(function(e){var n=J.detect(e.versionRegexes,r);return{current:e.name,version:n}})},se=/.*?version\/\ ?([0-9]+)\.([0-9]+).*/,ae=[{name:"Edge",versionRegexes:[/.*?edge\/ ?([0-9]+)\.([0-9]+)$/],search:function(e){return B(e,"edge/")&&B(e,"chrome")&&B(e,"safari")&&B(e,"applewebkit")}},{name:"Chrome",versionRegexes:[/.*?chrome\/([0-9]+)\.([0-9]+).*/,se],search:function(e){return B(e,"chrome")&&!B(e,"chromeframe")}},{name:"IE",versionRegexes:[/.*?msie\ ?([0-9]+)\.([0-9]+).*/,/.*?rv:([0-9]+)\.([0-9]+).*/],search:function(e){return B(e,"msie")||B(e,"trident")}},{name:"Opera",versionRegexes:[se,/.*?opera\/([0-9]+)\.([0-9]+).*/],search:j("opera")},{name:"Firefox",versionRegexes:[/.*?firefox\/\ ?([0-9]+)\.([0-9]+).*/],search:j("firefox")},{name:"Safari",versionRegexes:[se,/.*?cpu os ([0-9]+)_([0-9]+).*/],search:function(e){return(B(e,"safari")||B(e,"mobile/"))&&B(e,"applewebkit")}}],fe=[{name:"Windows",search:j("win"),versionRegexes:[/.*?windows\ nt\ ?([0-9]+)\.([0-9]+).*/]},{name:"iOS",search:function(e){return B(e,"iphone")||B(e,"ipad")},versionRegexes:[/.*?version\/\ ?([0-9]+)\.([0-9]+).*/,/.*cpu os ([0-9]+)_([0-9]+).*/,/.*cpu iphone os ([0-9]+)_([0-9]+).*/]},{name:"Android",search:j("android"),versionRegexes:[/.*?android\ ?([0-9]+)\.([0-9]+).*/]},{name:"OSX",search:j("os x"),versionRegexes:[/.*?os\ x\ ?([0-9]+)_([0-9]+).*/]},{name:"Linux",search:j("linux"),versionRegexes:[]},{name:"Solaris",search:j("sunos"),versionRegexes:[]},{name:"FreeBSD",search:j("freebsd"),versionRegexes:[]}],de={browsers:l(ae),oses:l(fe)},le=Y(function(e,n){var r=de.browsers(),t=de.oses(),o=ue(r,e).fold(Z.unknown,Z.nu),i=ce(t,e).fold(ie.unknown,ie.nu);return{browser:o,os:i,deviceType:function(e,n,r,t){var o=e.isiOS()&&!0===/ipad/i.test(r),i=e.isiOS()&&!o,u=e.isiOS()||e.isAndroid(),c=u||t("(pointer:coarse)"),s=o||!i&&u&&t("(min-device-width:768px)"),a=i||u&&!s,f=n.isSafari()&&e.isiOS()&&!1===/safari/i.test(r),d=!a&&!s&&!f;return{isiPad:l(o),isiPhone:l(i),isTablet:l(s),isPhone:l(a),isTouch:l(c),isAndroid:e.isAndroid,isiOS:e.isiOS,isWebView:l(f),isDesktop:l(d)}}(i,o,e,n)}}(u.navigator.userAgent,function(e){return u.window.matchMedia(e).matches})),me=x,ge=(le.get().browser.isIE(),{getToolbarItemsOr:(G=D,function(e,n,r){return function(e,n){if(!n(e))throw new Error("Default value doesn't match requested type.")}(r,G),function(e,n){if(_(e)||k(e))throw new Error("expected a string but found: "+e);return A(e)?n:C(e)?!1===e?"":n:e}(e.getParam(n,r),r)})}),ve=function(e){return ge.getToolbarItemsOr(e,"quickbars_selection_toolbar","bold italic | quicklink h2 h3 blockquote")},he=function(e){return ge.getToolbarItemsOr(e,"quickbars_insert_toolbar","quickimage quicktable")},pe=function(o){var e=he(o);0<e.trim().length&&o.ui.registry.addContextToolbar("quickblock",{predicate:function(e){function n(e){return e.dom()===o.getBody()}var r=S.fromDom(e),t=o.schema.getTextBlockElements();return function(e,n,r){return I(H,z,e,n,r)}(r,"table",n).fold(function(){return function(e,n,r){return I(function(e,n){return n(e)},X,e,n,r)}(r,function(e){return function(e){return e.dom().nodeName.toLowerCase()}(e)in t&&o.dom.isEmpty(e.dom())},n).isSome()},function(){return!1})},items:e,position:"line",scope:"editor"})},Ne=function(n){n.ui.registry.addContextToolbar("imageselection",{predicate:function(e){return"IMG"===e.nodeName||"FIGURE"===e.nodeName&&/image/i.test(e.className)},items:"alignleft aligncenter alignright",position:"node"});var e=ve(n);0<e.trim().length&&n.ui.registry.addContextToolbar("textselection",{predicate:function(e){return!n.selection.isCollapsed()},items:e,position:"selection"})};!function Oe(){t.add("quickbars",function(e){g(e),pe(e),Ne(e)})}()}(window);
\ No newline at end of file
diff --git a/admin/js/vendors/tinymce/js/tinymce/plugins/save/plugin.min.js b/admin/js/vendors/tinymce/js/tinymce/plugins/save/plugin.min.js
new file mode 100644 (file)
index 0000000..1d8daa7
--- /dev/null
@@ -0,0 +1,9 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ *
+ * Version: 5.1.5 (2019-12-19)
+ */
+!function(){"use strict";function t(n,e){n.notificationManager.open({text:e,type:"error"})}function e(t){return function(n){function e(){n.setDisabled(a(t)&&!t.isDirty())}return t.on("NodeChange dirty",e),function(){return t.off("NodeChange dirty",e)}}}var n=tinymce.util.Tools.resolve("tinymce.PluginManager"),o=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),i=tinymce.util.Tools.resolve("tinymce.util.Tools"),a=function(n){return n.getParam("save_enablewhendirty",!0)},c=function(n){return!!n.getParam("save_onsavecallback")},r=function(n){return!!n.getParam("save_oncancelcallback")},u=function(n){var e;if(e=o.DOM.getParent(n.id,"form"),!a(n)||n.isDirty()){if(n.save(),c(n))return n.execCallback("save_onsavecallback",n),void n.nodeChanged();e?(n.setDirty(!1),e.onsubmit&&!e.onsubmit()||("function"==typeof e.submit?e.submit():t(n,"Error: Form submit field collision.")),n.nodeChanged()):t(n,"Error: No form element found.")}},l=function(n){var e=i.trim(n.startContent);r(n)?n.execCallback("save_oncancelcallback",n):n.resetContent(e)},s=function(n){n.addCommand("mceSave",function(){u(n)}),n.addCommand("mceCancel",function(){l(n)})},d=function(n){n.ui.registry.addButton("save",{icon:"save",tooltip:"Save",disabled:!0,onAction:function(){return n.execCommand("mceSave")},onSetup:e(n)}),n.ui.registry.addButton("cancel",{icon:"cancel",tooltip:"Cancel",disabled:!0,onAction:function(){return n.execCommand("mceCancel")},onSetup:e(n)}),n.addShortcut("Meta+S","","mceSave")};!function m(){n.add("save",function(n){d(n),s(n)})}()}();
\ No newline at end of file
diff --git a/admin/js/vendors/tinymce/js/tinymce/plugins/searchreplace/plugin.min.js b/admin/js/vendors/tinymce/js/tinymce/plugins/searchreplace/plugin.min.js
new file mode 100644 (file)
index 0000000..6913d57
--- /dev/null
@@ -0,0 +1,9 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ *
+ * Version: 5.1.5 (2019-12-19)
+ */
+!function(){"use strict";var l=function(e){function t(){return n}var n=e;return{get:t,set:function(e){n=e},clone:function(){return l(t())}}},e=tinymce.util.Tools.resolve("tinymce.PluginManager"),g=function(){return(g=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var o in t=arguments[n])Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o]);return e}).apply(this,arguments)},p=tinymce.util.Tools.resolve("tinymce.util.Tools");function x(e){return e&&1===e.nodeType&&"false"===e.contentEditable}function h(e){var t=e.getAttribute("data-mce-index");return"number"==typeof t?""+t:t}function v(e){var t=e.parentNode;e.firstChild&&t.insertBefore(e.firstChild,e),e.parentNode.removeChild(e)}function c(e,t){var n,r=[];if((n=p.toArray(e.getBody().getElementsByTagName("span"))).length)for(var o=0;o<n.length;o++){var a=h(n[o]);null!==a&&a.length&&a===t.toString()&&r.push(n[o])}return r}function u(e,t,n){var r=t.get(),o=r.index,a=e.dom;(n=!1!==n)?o+1===r.count?o=0:o++:o-1==-1?o=r.count-1:o--,a.removeClass(c(e,r.index),"mce-match-marker-selected");var i=c(e,o);return i.length?(a.addClass(c(e,o),"mce-match-marker-selected"),e.selection.scrollIntoView(i[0]),o):-1}function y(e,t){var n=t.parentNode;e.remove(t),e.isEmpty(n)&&e.remove(n)}function f(e,t,n,r,o){var a=function(e,t){var n=e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&").replace(/\s/g,"[^\\S\\r\\n]");return t?"\\b"+n+"\\b":n}(n,o),i=function(e,t,n){var r,o;return(o=e.dom.create("span",{"data-mce-bogus":1})).className="mce-match-marker",r=e.getBody(),C(e,t,!1),d.findAndReplaceDOMText(n,r,o,!1,e.schema)}(e,t,new RegExp(a,r?"g":"gi"));if(i){var c=u(e,t,!0);t.set({index:c,count:i,text:n,matchCase:r,wholeWord:o})}return i}function b(e,t){var n=u(e,t,!0);t.set(g(g({},t.get()),{index:n}))}function N(e,t){var n=u(e,t,!1);t.set(g(g({},t.get()),{index:n}))}function w(e){var t=h(e);return null!==t&&0<t.length}function m(e,t,n,r,o){var a,i,c,u,d,s=t.get(),l=s.index,f=l;for(r=!1!==r,c=e.getBody(),i=p.grep(p.toArray(c.getElementsByTagName("span")),w),a=0;a<i.length;a++){var m=h(i[a]);if(u=d=parseInt(m,10),o||u===s.index){for(n.length?(i[a].firstChild.nodeValue=n,v(i[a])):y(e.dom,i[a]);i[++a];){if((u=parseInt(h(i[a]),10))!==d){a--;break}y(e.dom,i[a])}r&&f--}else l<d&&i[a].setAttribute("data-mce-index",String(d-1))}return t.set(g(g({},s),{count:o?0:s.count-1,index:f})),r?b(e,t):N(e,t),!o&&0<t.get().count}function t(){}function a(e){return function(){return e}}function n(){return T}var r,d={findAndReplaceDOMText:function W(e,t,n,r,o){var a,i,h,f,m,g,c=[],u=0;function d(e,t){if(t=t||0,!e[0])throw new Error("findAndReplaceDOMText cannot handle zero-length matches");var n=e.index;if(0<t){var r=e[t];if(!r)throw new Error("Invalid capture group");n+=e[0].indexOf(r),e[0]=r}return[n,n+e[0].length,[e[0]]]}if(h=t.ownerDocument,f=o.getBlockElements(),m=o.getWhiteSpaceElements(),g=o.getShortEndedElements(),i=function s(e){var t;if(3===e.nodeType)return e.data;if(m[e.nodeName]&&!f[e.nodeName])return"";if(t="",x(e))return"\n";if((f[e.nodeName]||g[e.nodeName])&&(t+="\n"),e=e.firstChild)for(;t+=s(e),e=e.nextSibling;);return t}(t)){if(e.global)for(;a=e.exec(i);)c.push(d(a,r));else a=i.match(e),c.push(d(a,r));return c.length&&(u=c.length,function p(e,t,n){var r,o,a,i,c=[],u=0,d=e,s=t.shift(),l=0;e:for(;;){if((f[d.nodeName]||g[d.nodeName]||x(d))&&u++,3===d.nodeType&&(!o&&d.length+u>=s[1]?(o=d,i=s[1]-u):r&&c.push(d),!r&&d.length+u>s[0]&&(r=d,a=s[0]-u),u+=d.length),r&&o){if(d=n({startNode:r,startNodeIndex:a,endNode:o,endNodeIndex:i,innerNodes:c,match:s[2],matchIndex:l}),u-=o.length-i,o=r=null,c=[],l++,!(s=t.shift()))break}else if(m[d.nodeName]&&!f[d.nodeName]||!d.firstChild){if(d.nextSibling){d=d.nextSibling;continue}}else if(!x(d)){d=d.firstChild;continue}for(;;){if(d.nextSibling){d=d.nextSibling;break}if(d.parentNode===e)break e;d=d.parentNode}}}(t,c,function l(e){var p;if("function"!=typeof e){var r=e.nodeType?e:h.createElement(e);p=function(e,t){var n=r.cloneNode(!1);return n.setAttribute("data-mce-index",t),e&&n.appendChild(h.createTextNode(e)),n}}else p=e;return function(e){var t,n,r,o=e.startNode,a=e.endNode,i=e.matchIndex;if(o===a){var c=o;r=c.parentNode,0<e.startNodeIndex&&(t=h.createTextNode(c.data.substring(0,e.startNodeIndex)),r.insertBefore(t,c));var u=p(e.match[0],i);return r.insertBefore(u,c),e.endNodeIndex<c.length&&(n=h.createTextNode(c.data.substring(e.endNodeIndex)),r.insertBefore(n,c)),c.parentNode.removeChild(c),u}t=h.createTextNode(o.data.substring(0,e.startNodeIndex)),n=h.createTextNode(a.data.substring(e.endNodeIndex));for(var d=p(o.data.substring(e.startNodeIndex),i),s=0,l=e.innerNodes.length;s<l;++s){var f=e.innerNodes[s],m=p(f.data,i);f.parentNode.replaceChild(m,f)}var g=p(a.data.substring(0,e.endNodeIndex),i);return(r=o.parentNode).insertBefore(t,o),r.insertBefore(d,o),r.removeChild(o),(r=a.parentNode).insertBefore(g,a),r.insertBefore(n,a),r.removeChild(a),g}}(n))),u}}},C=function(e,t,n){var r,o,a,i,c=t.get();for(o=p.toArray(e.getBody().getElementsByTagName("span")),r=0;r<o.length;r++){var u=h(o[r]);null!==u&&u.length&&(u===c.index.toString()&&(a=a||o[r].firstChild,i=o[r].firstChild),v(o[r]))}if(t.set(g(g({},c),{index:-1,count:0,text:""})),a&&i){var d=e.dom.createRng();return d.setStart(a,0),d.setEnd(i,i.data.length),!1!==n&&e.selection.setRng(d),d}},o=function(r,o){return{done:function(e){return C(r,o,e)},find:function(e,t,n){return f(r,o,e,t,n)},next:function(){return b(r,o)},prev:function(){return N(r,o)},replace:function(e,t,n){return m(r,o,e,t,n)}}},i=a(!1),s=a(!0),T=(r={fold:function(e,t){return e()},is:i,isSome:i,isNone:s,getOr:A,getOrThunk:O,getOrDie:function(e){throw new Error(e||"error: getOrDie called on none.")},getOrNull:a(null),getOrUndefined:a(undefined),or:A,orThunk:O,map:n,each:t,bind:n,exists:i,forall:s,filter:n,equals:S,equals_:S,toArray:function(){return[]},toString:a("none()")},Object.freeze&&Object.freeze(r),r);function S(e){return e.isNone()}function O(e){return e()}function A(e){return e}function k(e,t){return function(){F(e,t)}}var B,I=function(n){function e(){return o}function t(e){return e(n)}var r=a(n),o={fold:function(e,t){return t(n)},is:function(e){return n===e},isSome:s,isNone:i,getOr:r,getOrThunk:r,getOrDie:r,getOrNull:r,getOrUndefined:r,or:e,orThunk:e,map:function(e){return I(e(n))},each:function(e){e(n)},bind:t,exists:t,forall:t,filter:function(e){return e(n)?o:T},toArray:function(){return[n]},toString:function(){return"some("+n+")"},equals:function(e){return e.is(n)},equals_:function(e,t){return e.fold(i,function(e){return t(n,e)})}};return o},E={some:I,none:n,from:function(e){return null===e||e===undefined?T:I(e)}},M=(B="function",function(e){return function(e){if(null===e)return"null";var t=typeof e;return"object"==t&&(Array.prototype.isPrototypeOf(e)||e.constructor&&"Array"===e.constructor.name)?"array":"object"==t&&(String.prototype.isPrototypeOf(e)||e.constructor&&"String"===e.constructor.name)?"string":t}(e)===B}),D=Array.prototype.slice,R=(M(Array.from)&&Array.from,tinymce.util.Tools.resolve("tinymce.Env")),F=function(a,i){var e=function(){var t=l(E.none());return{clear:function(){t.set(E.none())},set:function(e){t.set(E.some(e))},isSet:function(){return t.get().isSome()},on:function(e){t.get().each(e)}}}();a.undoManager.add();var t=p.trim(a.selection.getContent({format:"text"}));function c(e){(function(e,t){return 1<t.get().count}(0,i)?e.enable:e.disable)("next"),(function(e,t){return 1<t.get().count}(0,i)?e.enable:e.disable)("prev")}function u(e,t){!function(e,t){for(var n=0,r=e.length;n<r;n++){t(e[n],n)}}(["replace","replaceall","prev","next"],t?e.disable:e.enable)}function r(e,t){R.browser.isSafari()&&R.deviceType.isTouch()&&("find"===t||"replace"===t||"replaceall"===t)&&e.focus(t)}function d(e){C(a,i,!1),u(e,!0),c(e)}function o(e){var t=e.getData(),n=i.get();if(t.findtext.length){if(n.text===t.findtext&&n.matchCase===t.matchcase&&n.wholeWord===t.wholewords)b(a,i);else{var r=f(a,i,t.findtext,t.matchcase,t.wholewords);r<=0&&!function o(e){a.windowManager.alert("Could not find the specified string.",function(){e.focus("findtext")})}(e),u(e,0===r)}c(e)}else d(e)}var n=i.get(),s={title:"Find and Replace",size:"normal",body:{type:"panel",items:[{type:"bar",items:[{type:"input",name:"findtext",placeholder:"Find",maximized:!0,inputMode:"search"},{type:"button",name:"prev",text:"Previous",icon:"action-prev",disabled:!0,borderless:!0},{type:"button",name:"next",text:"Next",icon:"action-next",disabled:!0,borderless:!0}]},{type:"input",name:"replacetext",placeholder:"Replace with",inputMode:"search"}]},buttons:[{type:"menu",name:"options",icon:"preferences",tooltip:"Preferences",align:"start",items:[{type:"togglemenuitem",name:"matchcase",text:"Match case"},{type:"togglemenuitem",name:"wholewords",text:"Find whole words only"}]},{type:"custom",name:"find",text:"Find",primary:!0},{type:"custom",name:"replace",text:"Replace",disabled:!0},{type:"custom",name:"replaceall",text:"Replace All",disabled:!0}],initialData:{findtext:t,replacetext:"",wholewords:n.wholeWord,matchcase:n.matchCase},onChange:function(e,t){"findtext"===t.name&&0<i.get().count&&d(e)},onAction:function(e,t){var n=e.getData();switch(t.name){case"find":o(e);break;case"replace":m(a,i,n.replacetext)?c(e):d(e);break;case"replaceall":m(a,i,n.replacetext,!0,!0),d(e);break;case"prev":N(a,i),c(e);break;case"next":b(a,i),c(e);break;case"matchcase":case"wholewords":!function(e){var t=e.getData(),n=i.get();i.set(g(g({},n),{matchCase:t.matchcase,wholeWord:t.wholewords}))}(e),d(e)}r(e,t.name)},onSubmit:function(e){o(e),r(e,"find")},onClose:function(){a.focus(),C(a,i),a.undoManager.add()}};e.set(a.windowManager.open(s,{inline:"toolbar"}))},j=function(e,t){e.addCommand("SearchReplace",function(){F(e,t)})},P=function(e,t){e.ui.registry.addMenuItem("searchreplace",{text:"Find and replace...",shortcut:"Meta+F",onAction:k(e,t),icon:"search"}),e.ui.registry.addButton("searchreplace",{tooltip:"Find and replace",onAction:k(e,t),icon:"search"}),e.shortcuts.add("Meta+F","",k(e,t))};!function z(){e.add("searchreplace",function(e){var t=l({index:-1,count:0,text:"",matchCase:!1,wholeWord:!1});return j(e,t),P(e,t),o(e,t)})}()}();
\ No newline at end of file
diff --git a/admin/js/vendors/tinymce/js/tinymce/plugins/spellchecker/plugin.min.js b/admin/js/vendors/tinymce/js/tinymce/plugins/spellchecker/plugin.min.js
new file mode 100644 (file)
index 0000000..848c83a
--- /dev/null
@@ -0,0 +1,9 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ *
+ * Version: 5.1.5 (2019-12-19)
+ */
+!function(t){"use strict";var a=function(e){function t(){return n}var n=e;return{get:t,set:function(e){n=e},clone:function(){return a(t())}}},n=tinymce.util.Tools.resolve("tinymce.PluginManager"),c=function(e){return!(!/(^|[ ,])tinymcespellchecker([, ]|$)/.test(e.settings.plugins)||!n.get("tinymcespellchecker"))&&("undefined"!=typeof t.window.console&&t.window.console.log&&t.window.console.log("Spell Checker Pro is incompatible with Spell Checker plugin! Remove 'spellchecker' from the 'plugins' option."),!0)},l=tinymce.util.Tools.resolve("tinymce.util.Tools"),u=tinymce.util.Tools.resolve("tinymce.util.URI"),d=tinymce.util.Tools.resolve("tinymce.util.XHR"),f=function(e){return e.fire("SpellcheckStart")},o=function(e){return e.fire("SpellcheckEnd")},g=function(e){return e.getParam("spellchecker_languages","English=en,Danish=da,Dutch=nl,Finnish=fi,French=fr_FR,German=de,Italian=it,Polish=pl,Portuguese=pt_BR,Spanish=es,Swedish=sv")},s=function(e){var t=e.getParam("language","en");return e.getParam("spellchecker_language",t)},h=function(e){return e.getParam("spellchecker_rpc_url")},p=function(e){return e.getParam("spellchecker_callback")},m=function(e){var t=new RegExp('[^\\s!"#$%&()*+,-./:;<=>?@[\\]^_{|}`\xa7\xa9\xab\xae\xb1\xb6\xb7\xb8\xbb\xbc\xbd\xbe\xbf\xd7\xf7\xa4\u201d\u201c\u201e\xa0\u2002\u2003\u2009]+',"g");return e.getParam("spellchecker_wordchar_pattern",t)};function b(e){return e&&1===e.nodeType&&"false"===e.contentEditable}function r(a,r){var n,o,g,h,p,i=[],v=r.dom;function c(e,t){if(!e[0])throw new Error("findAndReplaceDOMText cannot handle zero-length matches");return{start:e.index,end:e.index+e[0].length,text:e[0],data:t}}function s(e){var t=a.getElementsByTagName("*"),n=[];e="number"==typeof e?""+e:null;for(var r=0;r<t.length;r++){var o=t[r],i=o.getAttribute("data-mce-index");null!==i&&i.length&&-1!==o.className.indexOf("mce-spellchecker-word")&&(i!==e&&null!==e||n.push(o))}return n}function u(e){for(var t=i.length;t--;)if(i[t]===e)return t;return-1}function e(e){for(var t=0,n=i.length;t<n&&!1!==e(i[t],t);t++);return this}function t(e){var t,n,r=s(e?u(e):null);for(t=r.length;t--;)(n=r[t]).parentNode.insertBefore(n.firstChild,n),n.parentNode.removeChild(n);return this}function l(e){var t=s(u(e)),n=r.dom.createRng();return n.setStartBefore(t[0]),n.setEndAfter(t[t.length-1]),n}return g=r.schema.getBlockElements(),h=r.schema.getWhiteSpaceElements(),p=r.schema.getShortEndedElements(),{text:o=function d(e){var t;if(3===e.nodeType)return e.data;if(h[e.nodeName]&&!g[e.nodeName])return"";if(b(e))return"\n";if(t="",(g[e.nodeName]||p[e.nodeName])&&(t+="\n"),e=e.firstChild)for(;t+=d(e),e=e.nextSibling;);return t}(a),matches:i,each:e,filter:function f(n){var r=[];return e(function(e,t){n(e,t)&&r.push(e)}),i=r,this},reset:function m(){return i.splice(0,i.length),t(),this},matchFromElement:function x(e){return i[e.getAttribute("data-mce-index")]},elementFromMatch:function k(e){return s(u(e))[0]},find:function N(e,t){if(o&&e.global)for(;n=e.exec(o);)i.push(c(n,t));return this},add:function y(e,t,n){return i.push({start:e,end:e+t,text:o.substr(e,t),data:n}),this},wrap:function S(e){return i.length&&function f(e,t,n){var r,o,i,a,c,s=[],u=0,l=e,d=0;(t=t.slice(0)).sort(function(e,t){return e.start-t.start}),c=t.shift();e:for(;;){if((g[l.nodeName]||p[l.nodeName]||b(l))&&u++,3===l.nodeType&&(!o&&l.length+u>=c.end?(o=l,a=c.end-u):r&&s.push(l),!r&&l.length+u>c.start&&(r=l,i=c.start-u),u+=l.length),r&&o){if(l=n({startNode:r,startNodeIndex:i,endNode:o,endNodeIndex:a,innerNodes:s,match:c.text,matchIndex:d}),u-=o.length-a,o=r=null,s=[],d++,!(c=t.shift()))break}else if(h[l.nodeName]&&!g[l.nodeName]||!l.firstChild){if(l.nextSibling){l=l.nextSibling;continue}}else if(!b(l)){l=l.firstChild;continue}for(;;){if(l.nextSibling){l=l.nextSibling;break}if(l.parentNode===e)break e;l=l.parentNode}}}(a,i,function t(o){function m(e,t){var n=i[t];n.stencil||(n.stencil=o(n));var r=n.stencil.cloneNode(!1);return r.setAttribute("data-mce-index",t),e&&r.appendChild(v.doc.createTextNode(e)),r}return function(e){var t,n,r,o=e.startNode,i=e.endNode,a=e.matchIndex,c=v.doc;if(o===i){var s=o;r=s.parentNode,0<e.startNodeIndex&&(t=c.createTextNode(s.data.substring(0,e.startNodeIndex)),r.insertBefore(t,s));var u=m(e.match,a);return r.insertBefore(u,s),e.endNodeIndex<s.length&&(n=c.createTextNode(s.data.substring(e.endNodeIndex)),r.insertBefore(n,s)),s.parentNode.removeChild(s),u}t=c.createTextNode(o.data.substring(0,e.startNodeIndex)),n=c.createTextNode(i.data.substring(e.endNodeIndex));for(var l=m(o.data.substring(e.startNodeIndex),a),d=0,f=e.innerNodes.length;d<f;++d){var g=e.innerNodes[d],h=m(g.data,a);g.parentNode.replaceChild(h,g)}var p=m(i.data.substring(0,e.endNodeIndex),a);return(r=o.parentNode).insertBefore(t,o),r.insertBefore(l,o),r.removeChild(o),(r=i.parentNode).insertBefore(p,i),r.insertBefore(n,i),r.removeChild(i),p}}(e)),this},unwrap:t,replace:function w(e,t){var n=l(e);return n.deleteContents(),0<t.length&&n.insertNode(r.dom.doc.createTextNode(t)),n},rangeFromMatch:l,indexOf:u}}function v(e,t){if(!t.get()){var n=r(e.getBody(),e);t.set(n)}return t.get()}function x(e,t,n,r,o,i,a){var c=p(e);(c||function(a,c,s){return function(e,t,r,o){var n={method:e,lang:s.get()},i="";n["addToDictionary"===e?"word":"text"]=t,l.each(n,function(e,t){i&&(i+="&"),i+=t+"="+encodeURIComponent(e)}),d.send({url:new u(c).toAbsolute(h(a)),type:"post",content_type:"application/x-www-form-urlencoded",data:i,success:function(e){var t=JSON.parse(e);if(t)t.error?o(t.error):r(t);else{var n=a.translate("Server response wasn't proper JSON.");o(n)}},error:function(){var e=a.translate("The spelling service was not found: (")+h(a)+a.translate(")");o(e)}})}}(e,t,n)).call(e.plugins.spellchecker,r,o,i,a)}function k(e,t,n){e.dom.select("span.mce-spellchecker-word").length||y(e,t,n)}function N(e){var t=e.getAttribute("data-mce-index");return"number"==typeof t?""+t:t}var y=function(e,t,n){var r=e.selection.getBookmark();if(v(e,n).reset(),e.selection.moveToBookmark(r),n.set(null),t.get())return t.set(!1),o(e),!0},S=function(t,e,n,r,o){var i=!!o.dictionary,a=o.words;if(t.setProgressState(!1),function(e){for(var t in e)return!1;return!0}(a)){var c=t.translate("No misspellings found.");return t.notificationManager.open({text:c,type:"info"}),void e.set(!1)}r.set({suggestions:a,hasDictionarySupport:i});var s=t.selection.getBookmark();v(t,n).find(m(t)).filter(function(e){return!!a[e.text]}).wrap(function(e){return t.dom.create("span",{"class":"mce-spellchecker-word","aria-invalid":"spelling","data-mce-bogus":1,"data-mce-word":e.text})}),t.selection.moveToBookmark(s),e.set(!0),f(t)},w={spellcheck:function(t,e,n,r,o,i){if(!y(t,n,r)){t.setProgressState(!0),x(t,e,i,"spellcheck",v(t,r).text,function(e){S(t,n,r,o,e)},function(e){t.notificationManager.open({text:e,type:"error"}),t.setProgressState(!1),y(t,n,r)}),t.focus()}},checkIfFinished:k,addToDictionary:function(t,e,n,r,o,i,a){t.setProgressState(!0),x(t,e,o,"addToDictionary",i,function(){t.setProgressState(!1),t.dom.remove(a,!0),k(t,n,r)},function(e){t.notificationManager.open({text:e,type:"error"}),t.setProgressState(!1)})},ignoreWord:function(t,e,n,r,o,i){t.selection.collapse(),i?l.each(t.dom.select("span.mce-spellchecker-word"),function(e){e.getAttribute("data-mce-word")===r&&t.dom.remove(e,!0)}):t.dom.remove(o,!0),k(t,e,n)},findSpansByIndex:function(e,t){var n,r=[];if((n=l.toArray(e.getBody().getElementsByTagName("span"))).length)for(var o=0;o<n.length;o++){var i=N(n[o]);null!==i&&i.length&&i===t.toString()&&r.push(n[o])}return r},getElmIndex:N,markErrors:S},T=function(t,n,r,o,e,i){return{getTextMatcher:function(){return o.get()},getWordCharPattern:function(){return m(t)},markErrors:function(e){w.markErrors(t,n,o,r,e)},getLanguage:function(){return e.get()}}},I=function(e,t,n,r,o,i){e.addCommand("mceSpellCheck",function(){w.spellcheck(e,t,n,r,o,i)})},B=function(){return(B=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var o in t=arguments[n])Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o]);return e}).apply(this,arguments)},A="SpellcheckStart SpellcheckEnd",E=function(n,e,r,t,o,i){function a(){w.spellcheck(n,e,r,t,i,o)}var c=function(e,t){var n=[];return l.each(t,function(e){n.push({selectable:!0,text:e.name,data:e.value})}),n}(0,function(e){return l.map(g(e).split(","),function(e){return{name:(e=e.split("="))[0],value:e[1]}})}(n)),s={tooltip:"Spellcheck",onAction:a,icon:"spell-check",onSetup:function(e){function t(){e.setActive(r.get())}return n.on(A,t),function(){n.off(A,t)}}},u=B(B({},s),{type:"splitbutton",select:function(e){return e===o.get()},fetch:function(e){e(l.map(c,function(e){return{type:"choiceitem",value:e.data,text:e.text}}))},onItemAction:function(e,t){o.set(t)}});1<c.length?n.ui.registry.addSplitButton("spellchecker",u):n.ui.registry.addToggleButton("spellchecker",s),n.ui.registry.addToggleMenuItem("spellchecker",{text:"Spellcheck",onSetup:function(e){e.setActive(r.get());function t(){e.setActive(r.get())}return n.on(A,t),function(){n.off(A,t)}},onAction:a})},C=function(o,i,a,c,s,u){o.ui.registry.addContextMenu("spellchecker",{update:function(e){var t=e;if("mce-spellchecker-word"!==t.className)return[];var n=w.findSpansByIndex(o,w.getElmIndex(t));if(0<n.length){var r=o.dom.createRng();return r.setStartBefore(n[0]),r.setEndAfter(n[n.length-1]),o.selection.setRng(r),function(t,e,n,r,o,i,a,c){var s=[],u=n.get().suggestions[a];return l.each(u,function(e){s.push({text:e,onAction:function(){t.insertContent(t.dom.encode(e)),t.dom.remove(c),w.checkIfFinished(t,r,o)}})}),n.get().hasDictionarySupport&&(s.push({type:"separator"}),s.push({text:"Add to dictionary",onAction:function(){w.addToDictionary(t,e,r,o,i,a,c)}})),s.push.apply(s,[{type:"separator"},{text:"Ignore",onAction:function(){w.ignoreWord(t,r,o,a,c)}},{text:"Ignore all",onAction:function(){w.ignoreWord(t,r,o,a,c,!0)}}]),s}(o,i,a,c,s,u,t.getAttribute("data-mce-word"),n)}}})};!function e(){n.add("spellchecker",function(e,t){if(!1===c(e)){var n=a(!1),r=a(s(e)),o=a(null),i=a(null);return E(e,t,n,o,r,i),C(e,t,i,n,o,r),I(e,t,n,o,i,r),T(e,n,i,o,r,t)}})}()}(window);
\ No newline at end of file
diff --git a/admin/js/vendors/tinymce/js/tinymce/plugins/tabfocus/plugin.min.js b/admin/js/vendors/tinymce/js/tinymce/plugins/tabfocus/plugin.min.js
new file mode 100644 (file)
index 0000000..59a41b1
--- /dev/null
@@ -0,0 +1,9 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ *
+ * Version: 5.1.5 (2019-12-19)
+ */
+!function(c){"use strict";function t(e){e.keyCode!==d.TAB||e.ctrlKey||e.altKey||e.metaKey||e.preventDefault()}var e=tinymce.util.Tools.resolve("tinymce.PluginManager"),n=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),s=tinymce.util.Tools.resolve("tinymce.EditorManager"),a=tinymce.util.Tools.resolve("tinymce.Env"),y=tinymce.util.Tools.resolve("tinymce.util.Delay"),f=tinymce.util.Tools.resolve("tinymce.util.Tools"),d=tinymce.util.Tools.resolve("tinymce.util.VK"),m=function(e){return e.getParam("tab_focus",function(e){return e.getParam("tabfocus_elements",":prev,:next")}(e))},v=n.DOM,i=function(r){function e(n){var i,o,e,l;if(!(n.keyCode!==d.TAB||n.ctrlKey||n.altKey||n.metaKey||n.isDefaultPrevented())&&(1===(e=f.explode(m(r))).length&&(e[1]=e[0],e[0]=":prev"),o=n.shiftKey?":prev"===e[0]?u(-1):v.get(e[0]):":next"===e[1]?u(1):v.get(e[1]))){var t=s.get(o.id||o.name);o.id&&t?t.focus():y.setTimeout(function(){a.webkit||c.window.focus(),o.focus()},10),n.preventDefault()}function u(e){function t(e){return/INPUT|TEXTAREA|BUTTON/.test(e.tagName)&&s.get(n.id)&&-1!==e.tabIndex&&function t(e){return"BODY"===e.nodeName||"hidden"!==e.type&&"none"!==e.style.display&&"hidden"!==e.style.visibility&&t(e.parentNode)}(e)}if(o=v.select(":input:enabled,*[tabindex]:not(iframe)"),f.each(o,function(e,t){if(e.id===r.id)return i=t,!1}),0<e){for(l=i+1;l<o.length;l++)if(t(o[l]))return o[l]}else for(l=i-1;0<=l;l--)if(t(o[l]))return o[l];return null}}r.on("init",function(){r.inline&&v.setAttrib(r.getBody(),"tabIndex",null),r.on("keyup",t),a.gecko?r.on("keypress keydown",e):r.on("keydown",e)})};!function o(){e.add("tabfocus",function(e){i(e)})}()}(window);
\ No newline at end of file
diff --git a/admin/js/vendors/tinymce/js/tinymce/plugins/table/plugin.min.js b/admin/js/vendors/tinymce/js/tinymce/plugins/table/plugin.min.js
new file mode 100644 (file)
index 0000000..173a4db
--- /dev/null
@@ -0,0 +1,9 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ *
+ * Version: 5.1.5 (2019-12-19)
+ */
+!function(f){"use strict";function o(e){return e}var R=function(e){function n(){return t}var t=e;return{get:n,set:function(e){t=e},clone:function(){return R(n())}}},T=function(){},O=function(t,r){return function(){for(var e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];return t(r.apply(null,e))}},D=function(e){return function(){return e}};function b(r){for(var o=[],e=1;e<arguments.length;e++)o[e-1]=arguments[e];return function(){for(var e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];var t=o.concat(e);return r.apply(null,t)}}function d(t){return function(){for(var e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];return!t.apply(null,e)}}function e(){return u}var n,s=D(!1),i=D(!0),u=(n={fold:function(e,n){return e()},is:s,isSome:s,isNone:i,getOr:c,getOrThunk:r,getOrDie:function(e){throw new Error(e||"error: getOrDie called on none.")},getOrNull:D(null),getOrUndefined:D(undefined),or:c,orThunk:r,map:e,each:T,bind:e,exists:s,forall:i,filter:e,equals:t,equals_:t,toArray:function(){return[]},toString:D("none()")},Object.freeze&&Object.freeze(n),n);function t(e){return e.isNone()}function r(e){return e()}function c(e){return e}function a(n){return function(e){return function(e){if(null===e)return"null";var n=typeof e;return"object"==n&&(Array.prototype.isPrototypeOf(e)||e.constructor&&"Array"===e.constructor.name)?"array":"object"==n&&(String.prototype.isPrototypeOf(e)||e.constructor&&"String"===e.constructor.name)?"string":n}(e)===n}}function l(e,n){return-1<function(e,n){return Ue.call(e,n)}(e,n)}function m(e,n){for(var t=0,r=e.length;t<r;t++){if(n(e[t],t))return!0}return!1}function g(e,n){for(var t=e.length,r=new Array(t),o=0;o<t;o++){var i=e[o];r[o]=n(i,o)}return r}function p(e,n){for(var t=0,r=e.length;t<r;t++){n(e[t],t)}}function h(e,n){for(var t=[],r=0,o=e.length;r<o;r++){var i=e[r];n(i,r)&&t.push(i)}return t}function v(e,n,t){return function(e,n){for(var t=e.length-1;0<=t;t--){n(e[t],t)}}(e,function(e){t=n(t,e)}),t}function w(e,n,t){return p(e,function(e){t=n(t,e)}),t}function y(e,n){for(var t=0,r=e.length;t<r;t++){var o=e[t];if(n(o,t))return Me.some(o)}return Me.none()}function C(e,n){for(var t=0,r=e.length;t<r;t++){if(n(e[t],t))return Me.some(t)}return Me.none()}function S(e){for(var n=[],t=0,r=e.length;t<r;++t){if(!Le(e[t]))throw new Error("Arr.flatten item "+t+" was not an array, input: "+e);qe.apply(n,e[t])}return n}function x(e,n){var t=g(e,n);return S(t)}function A(e,n){for(var t=0,r=e.length;t<r;++t){if(!0!==n(e[t],t))return!1}return!0}function E(e){var n=Fe.call(e,0);return n.reverse(),n}function N(e,n){for(var t=Ve(e),r=0,o=t.length;r<o;r++){var i=t[r];n(e[i],i)}}function k(e,t){return Ye(e,function(e,n){return{k:n,v:t(e,n)}})}function I(e,n){return Ke(e,n)?Me.from(e[n]):Me.none()}function B(){for(var n=[],e=0;e<arguments.length;e++)n[e]=arguments[e];return function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];if(n.length!==t.length)throw new Error('Wrong number of arguments to struct. Expected "['+n.length+']", got '+t.length+" arguments");var r={};return p(n,function(e,n){r[e]=D(t[n])}),r}}function P(e){return e.slice(0).sort()}function M(e,n){throw new Error("All required keys ("+P(e).join(", ")+") were not specified. Specified keys were: "+P(n).join(", ")+".")}function W(e){throw new Error("Unsupported keys for object: "+P(e).join(", "))}function _(n,e){if(!Le(e))throw new Error("The "+n+" fields must be an array. Was: "+e+".");p(e,function(e){if(!_e(e))throw new Error("The value "+e+" in the "+n+" fields was not a string.")})}function L(e){var t=P(e);y(t,function(e,n){return n<t.length-1&&e===t[n+1]}).each(function(e){throw new Error("The field: "+e+" occurs more than once in the combined fields: ["+t.join(", ")+"].")})}function j(e){return e.dom().nodeType}function z(n){return function(e){return j(e)===n}}function H(e){return j(e)===$e||"#comment"===en(e)}function F(e,n,t){if(!(_e(t)||je(t)||He(t)))throw f.console.error("Invalid call to Attr.set. Key ",n,":: Value ",t,":: Element ",e),new Error("Attribute value was not simple");e.setAttribute(n,t+"")}function U(e,n,t){F(e.dom(),n,t)}function q(e,n){var t=e.dom();N(n,function(e,n){F(t,n,e)})}function V(e,n){var t=e.dom().getAttribute(n);return null===t?undefined:t}function G(e,n){var t=e.dom();return!(!t||!t.hasAttribute)&&t.hasAttribute(n)}function Y(e,n){e.dom().removeAttribute(n)}function K(e){return w(e.dom().attributes,function(e,n){return e[n.name]=n.value,e},{})}function X(e,n,t){return""===n||!(e.length<n.length)&&e.substr(t,t+n.length)===n}function $(e,n){return-1!==e.indexOf(n)}function J(e,n){return X(e,n,0)}function Q(e){return e.style!==undefined&&ze(e.style.getPropertyValue)}function Z(t){var r,o=!1;return function(){for(var e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];return o||(o=!0,r=t.apply(null,e)),r}}function ee(e){var n=tn(e)?e.dom().parentNode:e.dom();return n!==undefined&&null!==n&&n.ownerDocument.body.contains(n)}function ne(e,n,t){if(!_e(t))throw f.console.error("Invalid call to CSS.set. Property ",n,":: Value ",t,":: Element ",e),new Error("CSS value must be a string: "+t);Q(e)&&e.style.setProperty(n,t)}function te(e,n,t){var r=e.dom();ne(r,n,t)}function re(e,n){var t=e.dom();N(n,function(e,n){ne(t,n,e)})}function oe(e,n){var t=e.dom(),r=f.window.getComputedStyle(t).getPropertyValue(n),o=""!==r||ee(e)?r:an(t,n);return null===o?undefined:o}function ie(e,n){var t=e.dom(),r=an(t,n);return Me.from(r).filter(function(e){return 0<e.length})}function ue(e,n){!function(e,n){Q(e)&&e.style.removeProperty(n)}(e.dom(),n),G(e,"style")&&""===function(e){return e.replace(/^\s+|\s+$/g,"")}(V(e,"style"))&&Y(e,"style")}function ce(e,n,t){return 0!=(e.compareDocumentPosition(n)&t)}function ae(e,n){var t=function(e,n){for(var t=0;t<e.length;t++){var r=e[t];if(r.test(n))return r}return undefined}(e,n);if(!t)return{major:0,minor:0};function r(e){return Number(n.replace(t,"$"+e))}return dn(r(1),r(2))}function le(e,n){return function(){return n===e}}function fe(e,n){return function(){return n===e}}function se(e,n){var t=String(n).toLowerCase();return y(e,function(e){return e.search(t)})}function de(n){return function(e){return $(e,n)}}function me(){return En.get()}function ge(e,n){var t=e.dom();if(t.nodeType!==Nn)return!1;var r=t;if(r.matches!==undefined)return r.matches(n);if(r.msMatchesSelector!==undefined)return r.msMatchesSelector(n);if(r.webkitMatchesSelector!==undefined)return r.webkitMatchesSelector(n);if(r.mozMatchesSelector!==undefined)return r.mozMatchesSelector(n);throw new Error("Browser lacks native selectors")}function pe(e){return e.nodeType!==Nn&&e.nodeType!==kn||0===e.childElementCount}function he(e){return on.fromDom(e.dom().ownerDocument)}function ve(e){return Me.from(e.dom().parentNode).map(on.fromDom)}function be(e,n){for(var t=ze(n)?n:s,r=e.dom(),o=[];null!==r.parentNode&&r.parentNode!==undefined;){var i=r.parentNode,u=on.fromDom(i);if(o.push(u),!0===t(u))break;r=i}return o}function we(e){return Me.from(e.dom().previousSibling).map(on.fromDom)}function ye(e){return Me.from(e.dom().nextSibling).map(on.fromDom)}function Ce(e){return g(e.dom().childNodes,on.fromDom)}function Se(e,n){var t=e.dom().childNodes;return Me.from(t[n]).map(on.fromDom)}function xe(n,t){ve(n).each(function(e){e.dom().insertBefore(t.dom(),n.dom())})}function Re(e,n){ye(e).fold(function(){ve(e).each(function(e){Mn(e,n)})},function(e){xe(e,n)})}function Te(n,t){(function(e){return Se(e,0)})(n).fold(function(){Mn(n,t)},function(e){n.dom().insertBefore(t.dom(),e.dom())})}function Oe(e,n){xe(e,n),Mn(n,e)}function De(r,o){p(o,function(e,n){var t=0===n?r:o[n-1];Re(t,e)})}function Ae(n,e){p(e,function(e){Mn(n,e)})}function Ee(e){e.dom().textContent="",p(Ce(e),function(e){Wn(e)})}function Ne(e){var n=Ce(e);0<n.length&&function(n,e){p(e,function(e){xe(n,e)})}(e,n),Wn(e)}function ke(e,n,t){return function(e,n,t){return h(be(e,t),n)}(e,function(e){return ge(e,n)},t)}function Ie(e,n){return function(e,n){return h(Ce(e),n)}(e,function(e){return ge(e,n)})}function Be(e,n){return function(e,n){var t=n===undefined?f.document:n.dom();return pe(t)?[]:g(t.querySelectorAll(e),on.fromDom)}(n,e)}var Pe=function(t){function e(){return o}function n(e){return e(t)}var r=D(t),o={fold:function(e,n){return n(t)},is:function(e){return t===e},isSome:i,isNone:s,getOr:r,getOrThunk:r,getOrDie:r,getOrNull:r,getOrUndefined:r,or:e,orThunk:e,map:function(e){return Pe(e(t))},each:function(e){e(t)},bind:n,exists:n,forall:n,filter:function(e){return e(t)?o:u},toArray:function(){return[t]},toString:function(){return"some("+t+")"},equals:function(e){return e.is(t)},equals_:function(e,n){return e.fold(s,function(e){return n(t,e)})}};return o},Me={some:Pe,none:e,from:function(e){return null===e||e===undefined?u:Pe(e)}},We=tinymce.util.Tools.resolve("tinymce.PluginManager"),_e=a("string"),Le=a("array"),je=a("boolean"),ze=a("function"),He=a("number"),Fe=Array.prototype.slice,Ue=Array.prototype.indexOf,qe=Array.prototype.push,Ve=(ze(Array.from)&&Array.from,Object.keys),Ge=Object.hasOwnProperty,Ye=function(e,r){var o={};return N(e,function(e,n){var t=r(e,n);o[t.k]=t.v}),o},Ke=function(e,n){return Ge.call(e,n)},Xe=function(o,i){var u=o.concat(i);if(0===u.length)throw new Error("You must specify at least one required or optional field.");return _("required",o),_("optional",i),L(u),function(n){var t=Ve(n);A(o,function(e){return l(t,e)})||M(o,t);var e=h(t,function(e){return!l(u,e)});0<e.length&&W(e);var r={};return p(o,function(e){r[e]=D(n[e])}),p(i,function(e){r[e]=D(Object.prototype.hasOwnProperty.call(n,e)?Me.some(n[e]):Me.none())}),r}},$e=(f.Node.ATTRIBUTE_NODE,f.Node.CDATA_SECTION_NODE,f.Node.COMMENT_NODE),Je=f.Node.DOCUMENT_NODE,Qe=(f.Node.DOCUMENT_TYPE_NODE,f.Node.DOCUMENT_FRAGMENT_NODE,f.Node.ELEMENT_NODE),Ze=f.Node.TEXT_NODE,en=(f.Node.PROCESSING_INSTRUCTION_NODE,f.Node.ENTITY_REFERENCE_NODE,f.Node.ENTITY_NODE,f.Node.NOTATION_NODE,"undefined"!=typeof f.window?f.window:Function("return this;")(),function(e){return e.dom().nodeName.toLowerCase()}),nn=z(Qe),tn=z(Ze),rn=function(e){if(null===e||e===undefined)throw new Error("Node cannot be null or undefined");return{dom:D(e)}},on={fromHtml:function(e,n){var t=(n||f.document).createElement("div");if(t.innerHTML=e,!t.hasChildNodes()||1<t.childNodes.length)throw f.console.error("HTML does not have a single root node",e),new Error("HTML must have a single root node");return rn(t.childNodes[0])},fromTag:function(e,n){var t=(n||f.document).createElement(e);return rn(t)},fromText:function(e,n){var t=(n||f.document).createTextNode(e);return rn(t)},fromDom:rn,fromPoint:function(e,n,t){var r=e.dom();return Me.from(r.elementFromPoint(n,t)).map(rn)}},un=Z(function(){return cn(on.fromDom(f.document))}),cn=function(e){var n=e.dom().body;if(null===n||n===undefined)throw new Error("Body is not available yet");return on.fromDom(n)},an=function(e,n){return Q(e)?e.style.getPropertyValue(n):""},ln=function(e,n){return ce(e,n,f.Node.DOCUMENT_POSITION_CONTAINED_BY)},fn=function(){return(fn=Object.assign||function(e){for(var n,t=1,r=arguments.length;t<r;t++)for(var o in n=arguments[t])Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o]);return e}).apply(this,arguments)},sn=function(){return dn(0,0)},dn=function(e,n){return{major:e,minor:n}},mn={nu:dn,detect:function(e,n){var t=String(n).toLowerCase();return 0===e.length?sn():ae(e,t)},unknown:sn},gn="Firefox",pn=function(e){var n=e.current;return{current:n,version:e.version,isEdge:le("Edge",n),isChrome:le("Chrome",n),isIE:le("IE",n),isOpera:le("Opera",n),isFirefox:le(gn,n),isSafari:le("Safari",n)}},hn={unknown:function(){return pn({current:undefined,version:mn.unknown()})},nu:pn,edge:D("Edge"),chrome:D("Chrome"),ie:D("IE"),opera:D("Opera"),firefox:D(gn),safari:D("Safari")},vn="Windows",bn="Android",wn="Solaris",yn="FreeBSD",Cn=function(e){var n=e.current;return{current:n,version:e.version,isWindows:fe(vn,n),isiOS:fe("iOS",n),isAndroid:fe(bn,n),isOSX:fe("OSX",n),isLinux:fe("Linux",n),isSolaris:fe(wn,n),isFreeBSD:fe(yn,n)}},Sn={unknown:function(){return Cn({current:undefined,version:mn.unknown()})},nu:Cn,windows:D(vn),ios:D("iOS"),android:D(bn),linux:D("Linux"),osx:D("OSX"),solaris:D(wn),freebsd:D(yn)},xn=function(e,t){return se(e,t).map(function(e){var n=mn.detect(e.versionRegexes,t);return{current:e.name,version:n}})},Rn=function(e,t){return se(e,t).map(function(e){var n=mn.detect(e.versionRegexes,t);return{current:e.name,version:n}})},Tn=/.*?version\/\ ?([0-9]+)\.([0-9]+).*/,On=[{name:"Edge",versionRegexes:[/.*?edge\/ ?([0-9]+)\.([0-9]+)$/],search:function(e){return $(e,"edge/")&&$(e,"chrome")&&$(e,"safari")&&$(e,"applewebkit")}},{name:"Chrome",versionRegexes:[/.*?chrome\/([0-9]+)\.([0-9]+).*/,Tn],search:function(e){return $(e,"chrome")&&!$(e,"chromeframe")}},{name:"IE",versionRegexes:[/.*?msie\ ?([0-9]+)\.([0-9]+).*/,/.*?rv:([0-9]+)\.([0-9]+).*/],search:function(e){return $(e,"msie")||$(e,"trident")}},{name:"Opera",versionRegexes:[Tn,/.*?opera\/([0-9]+)\.([0-9]+).*/],search:de("opera")},{name:"Firefox",versionRegexes:[/.*?firefox\/\ ?([0-9]+)\.([0-9]+).*/],search:de("firefox")},{name:"Safari",versionRegexes:[Tn,/.*?cpu os ([0-9]+)_([0-9]+).*/],search:function(e){return($(e,"safari")||$(e,"mobile/"))&&$(e,"applewebkit")}}],Dn=[{name:"Windows",search:de("win"),versionRegexes:[/.*?windows\ nt\ ?([0-9]+)\.([0-9]+).*/]},{name:"iOS",search:function(e){return $(e,"iphone")||$(e,"ipad")},versionRegexes:[/.*?version\/\ ?([0-9]+)\.([0-9]+).*/,/.*cpu os ([0-9]+)_([0-9]+).*/,/.*cpu iphone os ([0-9]+)_([0-9]+).*/]},{name:"Android",search:de("android"),versionRegexes:[/.*?android\ ?([0-9]+)\.([0-9]+).*/]},{name:"OSX",search:de("os x"),versionRegexes:[/.*?os\ x\ ?([0-9]+)_([0-9]+).*/]},{name:"Linux",search:de("linux"),versionRegexes:[]},{name:"Solaris",search:de("sunos"),versionRegexes:[]},{name:"FreeBSD",search:de("freebsd"),versionRegexes:[]}],An={browsers:D(On),oses:D(Dn)},En=R(function(e,n){var t=An.browsers(),r=An.oses(),o=xn(t,e).fold(hn.unknown,hn.nu),i=Rn(r,e).fold(Sn.unknown,Sn.nu);return{browser:o,os:i,deviceType:function(e,n,t,r){var o=e.isiOS()&&!0===/ipad/i.test(t),i=e.isiOS()&&!o,u=e.isiOS()||e.isAndroid(),c=u||r("(pointer:coarse)"),a=o||!i&&u&&r("(min-device-width:768px)"),l=i||u&&!a,f=n.isSafari()&&e.isiOS()&&!1===/safari/i.test(t),s=!l&&!a&&!f;return{isiPad:D(o),isiPhone:D(i),isTablet:D(a),isPhone:D(l),isTouch:D(c),isAndroid:e.isAndroid,isiOS:e.isiOS,isWebView:D(f),isDesktop:D(s)}}(i,o,e,n)}}(f.navigator.userAgent,function(e){return f.window.matchMedia(e).matches})),Nn=Qe,kn=Je,In=function(e,n){return e.dom()===n.dom()},Bn=me().browser.isIE()?function(e,n){return ln(e.dom(),n.dom())}:function(e,n){var t=e.dom(),r=n.dom();return t!==r&&t.contains(r)},Pn=ge,Mn=(B("element","offset"),function(e,n){e.dom().appendChild(n.dom())}),Wn=function(e){var n=e.dom();null!==n.parentNode&&n.parentNode.removeChild(n)},_n=(B("width","height"),B("width","height"),B("rows","columns")),Ln=B("row","column"),jn=(B("x","y"),B("element","rowspan","colspan")),zn=B("element","rowspan","colspan","isNew"),Hn=B("element","rowspan","colspan","row","column"),Fn=B("element","cells","section"),Un=B("element","isNew"),qn=B("element","cells","section","isNew"),Vn=B("cells","section"),Gn=B("details","section"),Yn=B("startRow","startCol","finishRow","finishCol"),Kn=function(e,n){var t=[];return p(Ce(e),function(e){n(e)&&(t=t.concat([e])),t=t.concat(Kn(e,n))}),t};function Xn(e,n,t,r,o){return e(t,r)?Me.some(t):ze(o)&&o(t)?Me.none():n(t,r,o)}function $n(e,n,t){for(var r=e.dom(),o=ze(t)?t:D(!1);r.parentNode;){r=r.parentNode;var i=on.fromDom(r);if(n(i))return Me.some(i);if(o(i))break}return Me.none()}function Jn(e,n,t){return $n(e,function(e){return ge(e,n)},t)}function Qn(e,n){return function(e,n){return y(e.dom().childNodes,function(e){return n(on.fromDom(e))}).map(on.fromDom)}(e,function(e){return ge(e,n)})}function Zn(e,n){return function(e,n){var t=n===undefined?f.document:n.dom();return pe(t)?Me.none():Me.from(t.querySelector(e)).map(on.fromDom)}(n,e)}function et(e,n,t){return Xn(ge,Jn,e,n,t)}function nt(e,n,t){return void 0===t&&(t=s),t(n)?Me.none():l(e,en(n))?Me.some(n):Jn(n,e.join(","),function(e){return ge(e,"table")||t(e)})}function tt(n,e){return ve(e).map(function(e){return Ie(e,n)})}function rt(e,n){return parseInt(V(e,n),10)}function ot(e,n){return e+","+n}var it=function(e,n,t){return x(Ce(e),function(e){return ge(e,n)?t(e)?[e]:[]:it(e,n,t)})},ut={firstLayer:function(e,n){return it(e,n,D(!0))},filterFirstLayer:it},ct=b(tt,"th,td"),at=b(tt,"tr"),lt={cell:function(e,n){return nt(["td","th"],e,n)},firstCell:function(e){return Zn(e,"th,td")},cells:function(e){return ut.firstLayer(e,"th,td")},neighbourCells:ct,table:function(e,n){return et(e,"table",n)},row:function(e,n){return nt(["tr"],e,n)},rows:function(e){return ut.firstLayer(e,"tr")},notCell:function(e,n){return nt(["caption","tr","tbody","tfoot","thead"],e,n)},neighbourRows:at,attr:rt,grid:function(e,n,t){var r=rt(e,n),o=rt(e,t);return _n(r,o)}},ft=function(e){var n=lt.rows(e);return g(n,function(e){var n=e,t=ve(n).map(function(e){var n=en(e);return"tfoot"===n||"thead"===n||"tbody"===n?n:"tbody"}).getOr("tbody"),r=g(lt.cells(e),function(e){var n=G(e,"rowspan")?parseInt(V(e,"rowspan"),10):1,t=G(e,"colspan")?parseInt(V(e,"colspan"),10):1;return jn(e,n,t)});return Fn(n,r,t)})},st=function(e,t){return g(e,function(e){var n=g(lt.cells(e),function(e){var n=G(e,"rowspan")?parseInt(V(e,"rowspan"),10):1,t=G(e,"colspan")?parseInt(V(e,"colspan"),10):1;return jn(e,n,t)});return Fn(e,n,t.section())})},dt=function(e,n){var t=x(e.all(),function(e){return e.cells()});return h(t,n)},mt={generate:function(e){var l={},n=[],t=e.length,f=0;p(e,function(e,c){var a=[];p(e.cells(),function(e){for(var n=0;l[ot(c,n)]!==undefined;)n++;for(var t=Hn(e.element(),e.rowspan(),e.colspan(),c,n),r=0;r<e.colspan();r++)for(var o=0;o<e.rowspan();o++){var i=n+r,u=ot(c+o,i);l[u]=t,f=Math.max(f,i+1)}a.push(t)}),n.push(Fn(e.element(),a,e.section()))});var r=_n(t,f);return{grid:D(r),access:D(l),all:D(n)}},getAt:function(e,n,t){var r=e.access()[ot(n,t)];return r!==undefined?Me.some(r):Me.none()},findItem:function(e,n,t){var r=dt(e,function(e){return t(n,e.element())});return 0<r.length?Me.some(r[0]):Me.none()},filterItems:dt,justCells:function(e){var n=g(e.all(),function(e){return e.cells()});return S(n)}},gt=B("minRow","minCol","maxRow","maxCol"),pt=function(e,n){function t(e){return ge(e.element(),n)}var r=ft(e),o=mt.generate(r),i=function(e,i){var n=e.grid().columns(),u=e.grid().rows(),c=n,a=0,l=0;return N(e.access(),function(e){if(i(e)){var n=e.row(),t=n+e.rowspan()-1,r=e.column(),o=r+e.colspan()-1;n<u?u=n:a<t&&(a=t),r<c?c=r:l<o&&(l=o)}}),gt(u,c,a,l)}(o,t),u="th:not("+n+"),td:not("+n+")",c=ut.filterFirstLayer(e,"th,td",function(e){return ge(e,u)});return p(c,Wn),function(e,n,t,r){for(var o,i,u,c=n.grid().columns(),a=n.grid().rows(),l=0;l<a;l++)for(var f=!1,s=0;s<c;s++){if(!(l<t.minRow()||l>t.maxRow()||s<t.minCol()||s>t.maxCol()))mt.getAt(n,l,s).filter(r).isNone()?(o=f,void 0,i=e[l].element(),u=on.fromTag("td"),Mn(u,on.fromTag("br")),(o?Mn:Te)(i,u)):f=!0}}(r,o,i,t),function(e,n){var t=h(ut.firstLayer(e,"tr"),function(e){return 0===e.dom().childElementCount});p(t,Wn),n.minCol()!==n.maxCol()&&n.minRow()!==n.maxRow()||p(ut.firstLayer(e,"th,td"),function(e){Y(e,"rowspan"),Y(e,"colspan")}),Y(e,"width"),Y(e,"height"),ue(e,"width"),ue(e,"height")}(e,i),e};function ht(e){return Bt.get(e)}function vt(e){return Bt.getOption(e)}function bt(e,n){Bt.set(e,n)}function wt(e){return"img"===en(e)?1:vt(e).fold(function(){return Ce(e).length},function(e){return e.length})}function yt(e){return function(e){return vt(e).filter(function(e){return 0!==e.trim().length||-1<e.indexOf("\xa0")}).isSome()}(e)||l(Pt,en(e))}function Ct(e){return function(e,o){var i=function(e){for(var n=0;n<e.childNodes.length;n++){var t=on.fromDom(e.childNodes[n]);if(o(t))return Me.some(t);var r=i(e.childNodes[n]);if(r.isSome())return r}return Me.none()};return i(e.dom())}(e,yt)}function St(e){return Mt(e,yt)}function xt(e,n){return on.fromDom(e.dom().cloneNode(n))}function Rt(e){return xt(e,!1)}function Tt(e){return xt(e,!0)}function Ot(e,n){var t=function(e,n){var t=on.fromTag(n),r=K(e);return q(t,r),t}(e,n),r=Ce(Tt(e));return Ae(t,r),t}function Dt(){var e=on.fromTag("td");return Mn(e,on.fromTag("br")),e}function At(e,n,t){var r=Ot(e,n);return N(t,function(e,n){null===e?Y(r,n):U(r,n,e)}),r}function Et(e){return e}function Nt(e){return function(){return on.fromTag("tr",e.dom())}}function kt(e,n){return n.column()>=e.startCol()&&n.column()+n.colspan()-1<=e.finishCol()&&n.row()>=e.startRow()&&n.row()+n.rowspan()-1<=e.finishRow()}function It(e,n,t){var r=mt.findItem(e,n,In),o=mt.findItem(e,t,In);return r.bind(function(n){return o.map(function(e){return function(e,n){return Yn(Math.min(e.row(),n.row()),Math.min(e.column(),n.column()),Math.max(e.row()+e.rowspan()-1,n.row()+n.rowspan()-1),Math.max(e.column()+e.colspan()-1,n.column()+n.colspan()-1))}(n,e)})})}var Bt=function Qf(t,r){var n=function(e){return t(e)?Me.from(e.dom().nodeValue):Me.none()};return{get:function(e){if(!t(e))throw new Error("Can only get "+r+" value of a "+r+" node");return n(e).getOr("")},getOption:n,set:function(e,n){if(!t(e))throw new Error("Can only set raw "+r+" value of a "+r+" node");e.dom().nodeValue=n}}}(tn,"text"),Pt=["img","br"],Mt=function(e,i){var u=function(e){for(var n=Ce(e),t=n.length-1;0<=t;t--){var r=n[t];if(i(r))return Me.some(r);var o=u(r);if(o.isSome())return o}return Me.none()};return u(e)},Wt={cellOperations:function(i,e,u){return{row:Nt(e),cell:function(e){var n=he(e.element()),t=on.fromTag(en(e.element()),n.dom()),r=u.getOr(["strong","em","b","i","span","font","h1","h2","h3","h4","h5","h6","p","div"]),o=0<r.length?function(r,o,i){return Ct(r).map(function(e){var n=i.join(","),t=ke(e,n,function(e){return In(e,r)});return v(t,function(e,n){var t=Rt(n);return Y(t,"contenteditable"),Mn(e,t),t},o)}).getOr(o)}(e.element(),t,r):t;return Mn(o,on.fromTag("br")),function(e,n){var t=e.dom(),r=n.dom();Q(t)&&Q(r)&&(r.style.cssText=t.style.cssText)}(e.element(),t),ue(t,"height"),1!==e.colspan()&&ue(e.element(),"width"),i(e.element(),t),t},replace:At,gap:Dt}},paste:function(e){return{row:Nt(e),cell:Dt,replace:Et,gap:Dt}}},_t=function(e,n){var t=n.column(),r=n.column()+n.colspan()-1,o=n.row(),i=n.row()+n.rowspan()-1;return t<=e.finishCol()&&r>=e.startCol()&&o<=e.finishRow()&&i>=e.startRow()},Lt=function(e,n){for(var t=!0,r=b(kt,n),o=n.startRow();o<=n.finishRow();o++)for(var i=n.startCol();i<=n.finishCol();i++)t=t&&mt.getAt(e,o,i).exists(r);return t?Me.some(n):Me.none()},jt=It,zt=function(n,e,t){return It(n,e,t).bind(function(e){return Lt(n,e)})},Ht=function(r,e,o,i){return mt.findItem(r,e,In).bind(function(e){var n=0<o?e.row()+e.rowspan()-1:e.row(),t=0<i?e.column()+e.colspan()-1:e.column();return mt.getAt(r,n+o,t+i).map(function(e){return e.element()})})},Ft=function(t,e,n){return jt(t,e,n).map(function(e){var n=mt.filterItems(t,b(_t,e));return g(n,function(e){return e.element()})})},Ut=function(e,n){return mt.findItem(e,n,function(e,n){return Bn(n,e)}).map(function(e){return e.element()})},qt=function(e){var n=ft(e);return mt.generate(n)},Vt=function(t,r,o){return lt.table(t).bind(function(e){var n=qt(e);return Ht(n,t,r,o)})},Gt=function(e,n,t){var r=qt(e);return Ft(r,n,t)},Yt=function(e,n,t,r,o){var i=qt(e),u=In(e,t)?Me.some(n):Ut(i,n),c=In(e,o)?Me.some(r):Ut(i,r);return u.bind(function(n){return c.bind(function(e){return Ft(i,n,e)})})},Kt=function(e,n,t){var r=qt(e);return zt(r,n,t)},Xt=["body","p","div","article","aside","figcaption","figure","footer","header","nav","section","ol","ul","li","table","thead","tbody","tfoot","caption","tr","td","th","h1","h2","h3","h4","h5","h6","blockquote","pre","address"];function $t(){return{up:D({selector:Jn,closest:et,predicate:$n,all:be}),down:D({selector:Be,predicate:Kn}),styles:D({get:oe,getRaw:ie,set:te,remove:ue}),attrs:D({get:V,set:U,remove:Y,copyTo:function(e,n){var t=K(e);q(n,t)}}),insert:D({before:xe,after:Re,afterAll:De,append:Mn,appendAll:Ae,prepend:Te,wrap:Oe}),remove:D({unwrap:Ne,remove:Wn}),create:D({nu:on.fromTag,clone:function(e){return on.fromDom(e.dom().cloneNode(!1))},text:on.fromText}),query:D({comparePosition:function(e,n){return e.dom().compareDocumentPosition(n.dom())},prevSibling:we,nextSibling:ye}),property:D({children:Ce,name:en,parent:ve,document:function(e){return e.dom().ownerDocument},isText:tn,isComment:H,isElement:nn,getText:ht,setText:bt,isBoundary:function(e){return!!nn(e)&&("body"===en(e)||l(Xt,en(e)))},isEmptyTag:function(e){return!!nn(e)&&l(["br","img","hr","input"],en(e))}}),eq:In,is:Pn}}function Jt(e,n,t){var r=e.property().children(n);return C(r,b(e.eq,t)).map(function(e){return{before:D(r.slice(0,e)),after:D(r.slice(e+1))}})}function Qt(e,n){return b(e.eq,n)}function Zt(n,e,t,r){function o(n){return C(n,r).fold(function(){return n},function(e){return n.slice(0,e+1)})}void 0===r&&(r=s);var i=[e].concat(n.up().all(e)),u=[t].concat(n.up().all(t)),c=o(i),a=o(u),l=y(c,function(e){return m(a,Qt(n,e))});return{firstpath:D(c),secondpath:D(a),shared:D(l)}}function er(e){return Jn(e,"table")}function nr(c,a,r){function l(n){return function(e){return r!==undefined&&r(e)||In(e,n)}}return In(c,a)?Me.some(sr.create({boxes:Me.some([c]),start:c,finish:a})):er(c).bind(function(u){return er(a).bind(function(i){if(In(u,i))return Me.some(sr.create({boxes:Gt(u,c,a),start:c,finish:a}));if(Bn(u,i)){var e=0<(n=ke(a,"td,th",l(u))).length?n[n.length-1]:a;return Me.some(sr.create({boxes:Yt(u,c,u,a,i),start:c,finish:e}))}if(Bn(i,u)){var n,t=0<(n=ke(c,"td,th",l(i))).length?n[n.length-1]:c;return Me.some(sr.create({boxes:Yt(i,c,u,a,i),start:c,finish:t}))}return fr.ancestors(c,a).shared().bind(function(e){return et(e,"table",r).bind(function(e){var n=ke(a,"td,th",l(e)),t=0<n.length?n[n.length-1]:a,r=ke(c,"td,th",l(e)),o=0<r.length?r[r.length-1]:c;return Me.some(sr.create({boxes:Yt(e,c,u,a,i),start:o,finish:t}))})})})})}function tr(e,n){return Rr.cata(n.get(),D([]),o,D([e]))}function rr(e){return{element:D(e),mergable:Me.none,unmergable:Me.none,selection:D([e])}}var or=B("left","right"),ir=B("first","second","splits"),ur=function(r,o,e,n){var t=o(r,e);return v(n,function(e,n){var t=o(r,n);return cr(r,e,t)},t)},cr=function(n,e,t){return e.bind(function(e){return t.filter(b(n.eq,e))})},ar={sharedOne:function(e,n,t){return 0<t.length?function(e,n,t,r){return r(e,n,t[0],t.slice(1))}(e,n,t,ur):Me.none()},subset:function(n,e,t){var r=Zt(n,e,t);return r.shared().bind(function(e){return function(o,i,e,n){var u=o.property().children(i);if(o.eq(i,e[0]))return Me.some([e[0]]);if(o.eq(i,n[0]))return Me.some([n[0]]);function t(e){var n=E(e),t=C(n,Qt(o,i)).getOr(-1),r=t<n.length-1?n[t+1]:n[t];return C(u,Qt(o,r))}var r=t(e),c=t(n);return r.bind(function(r){return c.map(function(e){var n=Math.min(r,e),t=Math.max(r,e);return u.slice(n,t+1)})})}(n,e,r.firstpath(),r.secondpath())})},ancestors:Zt,breakToLeft:function(t,r,o){return Jt(t,r,o).map(function(e){var n=t.create().clone(r);return t.insert().appendAll(n,e.before().concat([o])),t.insert().appendAll(r,e.after()),t.insert().before(r,n),or(n,r)})},breakToRight:function(t,r,e){return Jt(t,r,e).map(function(e){var n=t.create().clone(r);return t.insert().appendAll(n,e.after()),t.insert().after(r,n),or(r,n)})},breakPath:function(i,e,u,c){var a=function(e,n,o){var t=ir(e,Me.none(),o);return u(e)?ir(e,n,o):i.property().parent(e).bind(function(r){return c(i,r,e).map(function(e){var n=[{first:e.left,second:e.right}],t=u(r)?r:e.left();return a(t,Me.some(e.right()),o.concat(n))})}).getOr(t)};return a(e,Me.none(),[])}},lr=$t(),fr={sharedOne:function(t,e){return ar.sharedOne(lr,function(e,n){return t(n)},e)},subset:function(e,n){return ar.subset(lr,e,n)},ancestors:function(e,n,t){return ar.ancestors(lr,e,n,t)},breakToLeft:function(e,n){return ar.breakToLeft(lr,e,n)},breakToRight:function(e,n){return ar.breakToRight(lr,e,n)},breakPath:function(e,n,r){return ar.breakPath(lr,e,n,function(e,n,t){return r(n,t)})}},sr={create:Xe(["boxes","start","finish"],[])},dr=nr,mr=function(e,n){var t=Be(e,n);return 0<t.length?Me.some(t):Me.none()},gr=function(e,n,t,r,o){return function(e,n){return y(e,function(e){return ge(e,n)})}(e,o).bind(function(e){return Vt(e,n,t).bind(function(e){return function(n,t){return Jn(n,"table").bind(function(e){return Zn(e,t).bind(function(e){return nr(e,n).bind(function(n){return n.boxes().map(function(e){return{boxes:D(e),start:D(n.start()),finish:D(n.finish())}})})})})}(e,r)})})},pr=function(e,n,r){return Zn(e,n).bind(function(t){return Zn(e,r).bind(function(n){return fr.sharedOne(er,[t,n]).map(function(e){return{first:D(t),last:D(n),table:D(e)}})})})},hr=function(e,n){return mr(e,n)},vr=function(o,e,n){return pr(o,e,n).bind(function(t){function e(e){return In(o,e)}var n=Jn(t.first(),"thead,tfoot,tbody,table",e),r=Jn(t.last(),"thead,tfoot,tbody,table",e);return n.bind(function(n){return r.bind(function(e){return In(n,e)?Kt(t.table(),t.first(),t.last()):Me.none()})})})},br="data-mce-selected",wr="data-mce-first-selected",yr="data-mce-last-selected",Cr={selected:D(br),selectedSelector:D("td[data-mce-selected],th[data-mce-selected]"),attributeSelector:D("[data-mce-selected]"),firstSelected:D(wr),firstSelectedSelector:D("td[data-mce-first-selected],th[data-mce-first-selected]"),lastSelected:D(yr),lastSelectedSelector:D("td[data-mce-last-selected],th[data-mce-last-selected]")},Sr=function(u){if(!Le(u))throw new Error("cases must be an array");if(0===u.length)throw new Error("there must be at least one case");var c=[],t={};return p(u,function(e,r){var n=Ve(e);if(1!==n.length)throw new Error("one and only one name per case");var o=n[0],i=e[o];if(t[o]!==undefined)throw new Error("duplicate key detected:"+o);if("cata"===o)throw new Error("cannot have a case named cata (sorry)");if(!Le(i))throw new Error("case arguments must be an array");c.push(o),t[o]=function(){var e=arguments.length;if(e!==i.length)throw new Error("Wrong number of arguments to case "+o+". Expected "+i.length+" ("+i+"), got "+e);for(var t=new Array(e),n=0;n<t.length;n++)t[n]=arguments[n];return{fold:function(){if(arguments.length!==u.length)throw new Error("Wrong number of arguments to fold. Expected "+u.length+", got "+arguments.length);return arguments[r].apply(null,t)},match:function(e){var n=Ve(e);if(c.length!==n.length)throw new Error("Wrong number of arguments to match. Expected: "+c.join(",")+"\nActual: "+n.join(","));if(!A(c,function(e){return l(n,e)}))throw new Error("Not all branches were specified when using match. Specified: "+n.join(", ")+"\nRequired: "+c.join(", "));return e[o].apply(null,t)},log:function(e){f.console.log(e,{constructors:c,constructor:o,params:t})}}}}),t},xr=Sr([{none:[]},{multiple:["elements"]},{single:["selection"]}]),Rr={cata:function(e,n,t,r){return e.fold(n,t,r)},none:xr.none,multiple:xr.multiple,single:xr.single},Tr=function(t,e){return Rr.cata(e.get(),Me.none,function(n,e){return 0===n.length?Me.none():vr(t,Cr.firstSelectedSelector(),Cr.lastSelectedSelector()).bind(function(e){return 1<n.length?Me.some({bounds:D(e),cells:D(n)}):Me.none()})},Me.none)},Or=function(e,n){var t=tr(e,n);return 0<t.length&&A(t,function(e){return G(e,"rowspan")&&1<parseInt(V(e,"rowspan"),10)||G(e,"colspan")&&1<parseInt(V(e,"colspan"),10)})?Me.some(t):Me.none()},Dr=tr,Ar=B("element","clipboard","generators"),Er={noMenu:rr,forMenu:function(e,n,t){return{element:D(t),mergable:D(Tr(n,e)),unmergable:D(Or(t,e)),selection:D(Dr(t,e))}},notCell:function(e){return rr(e)},paste:Ar,pasteRows:function(e,n,t,r,o){return{element:D(t),mergable:Me.none,unmergable:Me.none,selection:D(Dr(t,e)),clipboard:D(r),generators:D(o)}}},Nr={registerEvents:function(c,e,a,l){c.on("BeforeGetContent",function(n){!0===n.selection&&Rr.cata(e.get(),T,function(e){n.preventDefault(),function(e){return lt.table(e[0]).map(Tt).map(function(e){return[pt(e,Cr.attributeSelector())]})}(e).each(function(e){n.content="text"===n.format?function(e){return g(e,function(e){return e.dom().innerText}).join("")}(e):function(n,e){return g(e,function(e){return n.selection.serializer.serialize(e.dom(),{})}).join("")}(c,e)})},T)}),c.on("BeforeSetContent",function(u){!0===u.selection&&!0===u.paste&&Me.from(c.dom.getParent(c.selection.getStart(),"th,td")).each(function(e){var i=on.fromDom(e);lt.table(i).each(function(n){var e=h(function(e,n){var t=(n||f.document).createElement("div");return t.innerHTML=e,Ce(on.fromDom(t))}(u.content),function(e){return"meta"!==en(e)});if(1===e.length&&"table"===en(e[0])){u.preventDefault();var t=on.fromDom(c.getDoc()),r=Wt.paste(t),o=Er.paste(i,e[0],r);a.pasteCells(n,o).each(function(e){c.selection.setRng(e),c.focus(),l.clear(n)})}})})})}};function kr(r,o){function e(e){var n=o(e);if(n<=0||null===n){var t=oe(e,r);return parseFloat(t)||0}return n}function i(o,e){return w(e,function(e,n){var t=oe(o,n),r=t===undefined?0:parseInt(t,10);return isNaN(r)?e:e+r},0)}return{set:function(e,n){if(!He(n)&&!n.match(/^[0-9]+$/))throw new Error(r+".set accepts only positive integer values. Value was "+n);var t=e.dom();Q(t)&&(t.style[r]=n+"px")},get:e,getOuter:e,aggregate:i,max:function(e,n,t){var r=i(e,t);return r<n?n-r:0}}}function Ir(e){return Qr.get(e)}function Br(e){return Qr.getOuter(e)}function Pr(e){return Zr.get(e)}function Mr(e){return Zr.getOuter(e)}function Wr(e,n,t){return function(e,n){var t=parseFloat(e);return isNaN(t)?n:t}(oe(e,n),t)}function _r(e,n){te(e,"height",n+"px")}function Lr(e,n,t,r){var o=parseInt(e,10);return function(e,n){return X(e,n,e.length-n.length)}(e,"%")&&"table"!==en(n)?function(e,t,r,n){var o=lt.table(e).map(function(e){var n=r(e);return Math.floor(t/100*n)}).getOr(t);return n(e,o),o}(n,o,t,r):o}function jr(e){var n=function(e){return ie(e,"height").getOrThunk(function(){return no(e)+"px"})}(e);return n?Lr(n,e,Ir,_r):Ir(e)}function zr(e){return ie(e,"width").fold(function(){return Me.from(V(e,"width"))},function(e){return Me.some(e)})}function Hr(e,n){return e/n.pixelWidth()*100}function Fr(e,n){return e!==undefined?e:n!==undefined?n:0}function Ur(e){var n=e.dom().ownerDocument,t=n.body,r=n.defaultView,o=n.documentElement;if(t===e.dom())return lo(t.offsetLeft,t.offsetTop);var i=Fr(r.pageYOffset,o.scrollTop),u=Fr(r.pageXOffset,o.scrollLeft),c=Fr(o.clientTop,t.clientTop),a=Fr(o.clientLeft,t.clientLeft);return fo(e).translate(u-a,i-c)}function qr(e){return Ur(e).left()+Mr(e)}function Vr(e){return Ur(e).left()}function Gr(e,n){return mo(e,Vr(n))}function Yr(e,n){return mo(e,qr(n))}function Kr(e){return Ur(e).top()}function Xr(e,n){return so(e,Kr(n))}function $r(e,n){return so(e,Kr(n)+Br(n))}function Jr(t,n,r){if(0===r.length)return[];var e=g(r.slice(1),function(e,n){return e.map(function(e){return t(n,e)})}),o=r[r.length-1].map(function(e){return n(r.length-1,e)});return e.concat([o])}var Qr=kr("height",function(e){var n=e.dom();return ee(e)?n.getBoundingClientRect().height:n.offsetHeight}),Zr=kr("width",function(e){return e.dom().offsetWidth}),eo=me(),no=function(e){return eo.browser.isIE()||eo.browser.isEdge()?function(e){var n=Wr(e,"padding-top",0),t=Wr(e,"padding-bottom",0),r=Wr(e,"border-top-width",0),o=Wr(e,"border-bottom-width",0),i=e.dom().getBoundingClientRect().height;return"border-box"===oe(e,"box-sizing")?i:i-n-t-(r+o)}(e):Wr(e,"height",Ir(e))},to=/(\d+(\.\d+)?)(\w|%)*/,ro=/(\d+(\.\d+)?)%/,oo=/(\d+(\.\d+)?)px|em/,io=function(e,n){return G(e,n)?parseInt(V(e,n),10):1},uo={percentageBasedSizeRegex:D(ro),pixelBasedSizeRegex:D(oo),setPixelWidth:function(e,n){te(e,"width",n+"px")},setPercentageWidth:function(e,n){te(e,"width",n+"%")},setHeight:_r,getPixelWidth:function(n,t){return zr(n).fold(function(){return Pr(n)},function(e){return function(e,n,t){var r=oo.exec(n);if(null!==r)return parseInt(r[1],10);var o=ro.exec(n);return null===o?Pr(e):function(e,n){return e/100*n.pixelWidth()}(parseFloat(o[1]),t)}(n,e,t)})},getPercentageWidth:function(n,t){return zr(n).fold(function(){var e=Pr(n);return Hr(e,t)},function(e){return function(e,n,t){var r=ro.exec(n);if(null!==r)return parseFloat(r[1]);var o=Pr(e);return Hr(o,t)}(n,e,t)})},getGenericWidth:function(e){return zr(e).bind(function(e){var n=to.exec(e);return null!==n?Me.some({width:D(parseFloat(n[1])),unit:D(n[3])}):Me.none()})},setGenericWidth:function(e,n,t){te(e,"width",n+t)},getHeight:function(e){return function(e,n,t){return t(e)/io(e,n)}(e,"rowspan",jr)},getRawWidth:zr},co=function(t,r){uo.getGenericWidth(t).each(function(e){var n=e.width()/2;uo.setGenericWidth(t,n,e.unit()),uo.setGenericWidth(r,n,e.unit())})},ao=function(t,r){return{left:D(t),top:D(r),translate:function(e,n){return ao(t+e,r+n)}}},lo=ao,fo=function(e){var n=e.dom(),t=n.ownerDocument.body;return t===n?lo(t.offsetLeft,t.offsetTop):ee(e)?function(e){var n=e.getBoundingClientRect();return lo(n.left,n.top)}(n):lo(0,0)},so=B("row","y"),mo=B("col","x"),go={height:{delta:o,positions:function(e){return Jr(Xr,$r,e)},edge:Kr},rtl:{delta:function(e){return-e},edge:qr,positions:function(e){return Jr(Yr,Gr,e)}},ltr:{delta:o,edge:Vr,positions:function(e){return Jr(Gr,Yr,e)}}},po={ltr:go.ltr,rtl:go.rtl};function ho(n){function t(e){return n(e).isRtl()?po.rtl:po.ltr}return{delta:function(e,n){return t(n).delta(e,n)},edge:function(e){return t(e).edge(e)},positions:function(e,n){return t(n).positions(e,n)}}}function vo(e){for(var n=[],t=function(e){n.push(e)},r=0;r<e.length;r++)e[r].each(t);return n}function bo(e,n){for(var t=0;t<e.length;t++){var r=n(e[t],t);if(r.isSome())return r}return Me.none()}function wo(e,n,t,r){t===r?Y(e,n):U(e,n,t)}function yo(e,n){var t=V(e,n);return t===undefined||""===t?[]:t.split(" ")}function Co(e){return e.dom().classList!==undefined}function So(e,n){return function(e,n,t){var r=yo(e,n).concat([t]);return U(e,n,r.join(" ")),!0}(e,"class",n)}function xo(e,n){return function(e,n,t){var r=h(yo(e,n),function(e){return e!==t});return 0<r.length?U(e,n,r.join(" ")):Y(e,n),!1}(e,"class",n)}function Ro(e,n){Co(e)?e.dom().classList.add(n):So(e,n)}function To(e){0===(Co(e)?e.dom().classList:function(e){return yo(e,"class")}(e)).length&&Y(e,"class")}function Oo(e,n){return Co(e)&&e.dom().classList.contains(n)}function Do(e,n){for(var t=[],r=e;r<n;r++)t.push(r);return t}function Ao(n,t){if(t<0||t>=n.length-1)return Me.none();var e=n[t].fold(function(){var e=E(n.slice(0,t));return bo(e,function(e,n){return e.map(function(e){return{value:e,delta:n+1}})})},function(e){return Me.some({value:e,delta:0})}),r=n[t+1].fold(function(){var e=n.slice(t+1);return bo(e,function(e,n){return e.map(function(e){return{value:e,delta:n+1}})})},function(e){return Me.some({value:e,delta:1})});return e.bind(function(t){return r.map(function(e){var n=e.delta+t.delta;return Math.abs(e.value-t.value)/n})})}function Eo(e){var n=e.replace(/\./g,"-");return{resolve:function(e){return n+"-"+e}}}function No(e){var n=Be(e.parent(),"."+iu);p(n,Wn)}function ko(t,e,r){var o=t.origin();p(e,function(e,n){e.each(function(e){var n=r(o,e);Ro(n,iu),Mn(t.parent(),n)})})}function Io(e,n,t,r,o,i){var u=Ur(n);!function(e,n,r,o){ko(e,n,function(e,n){var t=ou(n.row(),r.left()-e.left(),n.y()-e.top(),o,7);return Ro(t,uu),t})}(e,0<t.length?o.positions(t,n):[],u,Mr(n)),function(e,n,r,o){ko(e,n,function(e,n){var t=ru(n.col(),n.x()-e.left(),r.top()-e.top(),7,o);return Ro(t,cu),t})}(e,0<r.length?i.positions(r,n):[],u,Br(n))}function Bo(e,n){var t=Be(e.parent(),"."+iu);p(t,n)}function Po(e,n){return e.cells()[n]}function Mo(e,n){if(0===e.length)return 0;var t=e[0];return C(e,function(e){return!n(t.element(),e.element())}).fold(function(){return e.length},function(e){return e})}function Wo(e,t){return g(e,function(e){var n=function(e){return bo(e,function(e){return ve(e.element()).map(function(e){var n=ve(e).isNone();return Un(e,n)})}).getOrThunk(function(){return Un(t.row(),!0)})}(e.details());return qn(n.element(),e.details(),e.section(),n.isNew())})}function _o(e,n){var t=vu(e,In);return Wo(t,n)}function Lo(e,n){var t=S(g(e.all(),function(e){return e.cells()}));return y(t,function(e){return In(n,e.element())})}function jo(c,a,l,f,s){return function(t,r,e,o,i){var n=ft(r),u=mt.generate(n);return a(u,e).map(function(e){var n=function(e,n){return bu(e,n,!1)}(u,o),t=c(n,e,In,s(o)),r=_o(t.grid(),o);return{grid:D(r),cursor:t.cursor}}).fold(function(){return Me.none()},function(e){var n=Ji(r,e.grid());return l(r,e.grid(),i),f(r),au(t,r,go.height,i),Me.some({cursor:e.cursor,newRows:n.newRows,newCells:n.newCells})})}}function zo(n,e){return lt.cell(e.element()).bind(function(e){return Lo(n,e)})}function Ho(n,e){var t=g(e.selection(),function(e){return lt.cell(e).bind(function(e){return Lo(n,e)})}),r=vo(t);return 0<r.length?Me.some({cells:r,generators:e.generators,clipboard:e.clipboard}):Me.none()}function Fo(n,e){var t=g(e.selection(),function(e){return lt.cell(e).bind(function(e){return Lo(n,e)})}),r=vo(t);return 0<r.length?Me.some(r):Me.none()}function Uo(e,n){return g(e,function(){return Un(n.cell(),!0)})}function qo(n,e,t){return n.concat(function(e,n){for(var t=[],r=0;r<e;r++)t.push(n(r));return t}(e,function(e){return pu.setCells(n[n.length-1],Uo(n[n.length-1].cells(),t))}))}function Vo(e,n,t){return g(e,function(e){return pu.setCells(e,e.cells().concat(Uo(Do(0,n),t)))})}function Go(e,t,r,n){return g(e,function(e){return pu.mapCells(e,function(e){return function(n){return m(t,function(e){return r(n.element(),e.element())})}(e)?Un(n(e.element(),r),!0):e})})}function Yo(e,n,t,r){return pu.getCellElement(e[n],t)!==undefined&&0<n&&r(pu.getCellElement(e[n-1],t),pu.getCellElement(e[n],t))}function Ko(e,n,t){return 0<n&&t(pu.getCellElement(e,n-1),pu.getCellElement(e,n))}function Xo(e,n){return G(e,n)&&1<parseInt(V(e,n),10)}function $o(e,n,t){return ie(e,n).fold(function(){return t(e)+"px"},function(e){return e})}function Jo(e,n){return $o(e,"width",function(e){return uo.getPixelWidth(e,n)})}function Qo(e){return $o(e,"height",uo.getHeight)}function Zo(e,n,t,r,o){var i=eu(e),u=g(i,function(e){return e.map(n.edge)});return g(i,function(e,n){return e.filter(d(Hu.hasColspan)).fold(function(){var e=Ao(u,n);return r(e)},function(e){return t(e,o)})})}function ei(e){return e.map(function(e){return e+"px"}).getOr("")}function ni(e,n,t,r){var o=nu(e),i=g(o,function(e){return e.map(n.edge)});return g(o,function(e,n){return e.filter(d(Hu.hasRowspan)).fold(function(){var e=Ao(i,n);return r(e)},function(e){return t(e)})})}function ti(e,n,t){for(var r=0,o=e;o<n;o++)r+=t[o]!==undefined?t[o]:0;return r}function ri(e){var n=o;return{width:D(e),pixelWidth:D(e),getWidths:Fu.getPixelWidths,getCellDelta:n,singleColumnWidth:function(e,n){return[Math.max(Hu.minWidth(),e+n)-e]},minCellWidth:Hu.minWidth,setElementWidth:uo.setPixelWidth,setTableWidth:function(e,n,t){var r=v(n,function(e,n){return e+n},0);uo.setPixelWidth(e,r)}}}function oi(e,n){var t=uo.percentageBasedSizeRegex().exec(n);if(null!==t)return function(e,n){var o=parseFloat(e),t=Pr(n);return{width:D(o),pixelWidth:D(t),getWidths:Fu.getPercentageWidths,getCellDelta:function(e){return e/t*100},singleColumnWidth:function(e,n){return[100-e]},minCellWidth:function(){return Hu.minWidth()/t*100},setElementWidth:uo.setPercentageWidth,setTableWidth:function(e,n,t){var r=t/100*o;uo.setPercentageWidth(e,o+r)}}}(t[1],e);var r=uo.pixelBasedSizeRegex().exec(n);if(null!==r){var o=parseInt(r[1],10);return ri(o)}var i=Pr(e);return ri(i)}function ii(e){return mt.generate(e)}function ui(e){var n=ft(e);return ii(n)}function ci(n,e){var t=h(e,function(e){return!l(n,e)});0<t.length&&W(t)}function ai(e){return function(e,n){return $u(e,n,{validate:ze,label:"function"})}(ci,e)}function li(e){var n=G(e,"colspan")?parseInt(V(e,"colspan"),10):1,t=G(e,"rowspan")?parseInt(V(e,"rowspan"),10):1;return{element:D(e),colspan:D(n),rowspan:D(t)}}function fi(e,n){var t=e.property().name(n);return l(nc,t)}function si(e,n){return l(["br","img","hr","input"],e.property().name(n))}function di(e){0===lt.cells(e).length&&Wn(e)}function mi(e,n,t){return sc(e,n,t).orThunk(function(){return sc(e,0,0)})}function gi(e,n,t){return fc(e,sc(e,n,t))}function pi(e){return w(e,function(e,n){return m(e,function(e){return e.row()===n.row()})?e:e.concat([n])},[]).sort(function(e,n){return e.row()-n.row()})}function hi(e){return w(e,function(e,n){return m(e,function(e){return e.column()===n.column()})?e:e.concat([n])},[]).sort(function(e,n){return e.column()-n.column()})}function vi(e,n,t){var r=st(e,t),o=mt.generate(r);return bu(o,n,!0)}function bi(e){return e.getBoundingClientRect().width}function wi(e){return e.getBoundingClientRect().height}function yi(e){return/^[0-9]+$/.test(e)&&(e+="px"),e}function Ci(e){var n=Be(e,"td[data-mce-style],th[data-mce-style]");Y(e,"data-mce-style"),p(n,function(e){Y(e,"data-mce-style")})}function Si(e){return e.getParam("table_default_attributes",yc,"object")}function xi(e){return e.getParam("table_default_styles",wc,"object")}function Ri(e){return e.getParam("table_cell_advtab",!0,"boolean")}function Ti(e){return e.getParam("table_row_advtab",!0,"boolean")}function Oi(e){return e.getParam("table_advtab",!0,"boolean")}function Di(e){return e.getParam("table_style_by_css",!1,"boolean")}function Ai(e){return e.getParam("table_class_list",[],"array")}function Ei(e){return!1===e.getParam("table_responsive_width")}function Ni(e,n){return e.fire("newrow",{node:n})}function ki(e,n){return e.fire("newcell",{node:n})}function Ii(e,n,t,r){e.fire("ObjectResizeStart",{target:n,width:t,height:r})}function Bi(e,n,t,r){e.fire("ObjectResized",{target:n,width:t,height:r})}function Pi(n,e){function t(e){return J(e,"rgb")?n.toHex(e):e}return{borderwidth:ie(on.fromDom(e),"border-width").getOr(""),borderstyle:ie(on.fromDom(e),"border-style").getOr(""),bordercolor:ie(on.fromDom(e),"border-color").map(t).getOr(""),backgroundcolor:ie(on.fromDom(e),"background-color").map(t).getOr("")}}function Mi(e,n,t,r,o){var i={};return Dc.each(e.split(" "),function(e){r.formatter.matchNode(o,n+e)&&(i[t]=e)}),i[t]||(i[t]=""),i}function Wi(e,n){e.setAttrib("scope",n.scope),e.setAttrib("class",n["class"]),e.setStyle("width",yi(n.width)),e.setStyle("height",yi(n.height))}function _i(e,n){e.setStyle("background-color",n.backgroundcolor),e.setStyle("border-color",n.bordercolor),e.setStyle("border-style",n.borderstyle),e.setStyle("border-width",yi(n.borderwidth))}function Li(e,n,t){var r=e.dom,o=t.celltype&&n[0].nodeName.toLowerCase()!==t.celltype?r.rename(n[0],t.celltype):n[0],i=qc.normal(r,o);Wi(i,t),Ri(e)&&_i(i,t),Nc(e,o),kc(e,o),t.halign&&Ac(e,o,t.halign),t.valign&&Ec(e,o,t.valign)}function ji(t,e,r){var o=t.dom;Dc.each(e,function(e){r.celltype&&e.nodeName.toLowerCase()!==r.celltype&&(e=o.rename(e,r.celltype));var n=qc.ifTruthy(o,e);Wi(n,r),Ri(t)&&_i(n,r),r.halign&&Ac(t,e,r.halign),r.valign&&Ec(t,e,r.valign)})}function zi(e,n,t){var r=t.getData();t.close(),e.undoManager.transact(function(){(1===n.length?Li:ji)(e,n,r),e.focus()})}function Hi(t,e,r,n){var o=t.dom,i=n.getData();n.close();var u=1===e.length?qc.normal:qc.ifTruthy;t.undoManager.transact(function(){Dc.each(e,function(e){i.type!==e.parentNode.nodeName.toLowerCase()&&function(e,n,t){var r=e.getParent(n,"table"),o=n.parentNode,i=e.select(t,r)[0];i||(i=e.create(t),r.firstChild?"CAPTION"===r.firstChild.nodeName?e.insertAfter(i,r.firstChild):r.insertBefore(i,r.firstChild):r.appendChild(i)),i.appendChild(n),o.hasChildNodes()||e.remove(o)}(t.dom,e,i.type);var n=u(o,e);n.setAttrib("scope",i.scope),n.setAttrib("class",i["class"]),n.setStyle("height",yi(i.height)),Ti(t)&&function(e,n){e.setStyle("background-color",n.backgroundcolor),e.setStyle("border-color",n.bordercolor),e.setStyle("border-style",n.borderstyle)}(n,i),i.align!==r.align&&(Nc(t,e),Ac(t,e,i.align))}),t.focus()})}function Fi(e,n,t,r,o){void 0===o&&(o=Qc);var i=on.fromTag("table");re(i,o.styles),q(i,o.attributes);var u=on.fromTag("tbody");Mn(i,u);for(var c=[],a=0;a<e;a++){for(var l=on.fromTag("tr"),f=0;f<n;f++){var s=a<t||f<r?on.fromTag("th"):on.fromTag("td");f<r&&U(s,"scope","row"),a<t&&U(s,"scope","col"),Mn(s,on.fromTag("br")),o.percentages&&te(s,"width",100/n+"%"),Mn(l,s)}c.push(l)}return Ae(u,c),i}function Ui(e,n){e.selection.select(n.dom(),!0),e.selection.collapse(!0)}function qi(t,r,e){var o,i=t.dom,u=e.getData();e.close(),""===u["class"]&&delete u["class"],t.undoManager.transact(function(){if(!r){var e=parseInt(u.cols,10)||1,n=parseInt(u.rows,10)||1;r=Zc(t,e,n)}!function(e,n,t){var r=e.dom,o={},i={};if(o["class"]=t["class"],i.height=yi(t.height),r.getAttrib(n,"width")&&!Di(e)?o.width=function(e){return e?e.replace(/px$/,""):""}(t.width):i.width=yi(t.width),Di(e)?(i["border-width"]=yi(t.border),i["border-spacing"]=yi(t.cellspacing)):(o.border=t.border,o.cellpadding=t.cellpadding,o.cellspacing=t.cellspacing),Di(e)&&n.children)for(var u=0;u<n.children.length;u++)na(r,n.children[u],{"border-width":yi(t.border),padding:yi(t.cellpadding)}),Oi(e)&&na(r,n.children[u],{"border-color":t.bordercolor});Oi(e)&&(i["background-color"]=t.backgroundcolor,i["border-color"]=t.bordercolor,i["border-style"]=t.borderstyle),o.style=r.serializeStyle($c(xi(e),i)),r.setAttribs(n,$c(Si(e),o))}(t,r,u),(o=i.select("caption",r)[0])&&!u.caption&&i.remove(o),!o&&u.caption&&((o=i.create("caption")).innerHTML=Jc.ie?"\xa0":'<br data-mce-bogus="1"/>',r.insertBefore(o,r.firstChild)),""===u.align?Nc(t,r):Ac(t,r,u.align),t.focus(),t.addVisual()})}function Vi(n){return function(e){return Me.from(e.dom.getParent(e.selection.getStart(),n)).map(on.fromDom)}}function Gi(e){function n(){e.stopPropagation()}function t(){e.preventDefault()}var r=on.fromDom(e.target),o=O(t,n);return function(e,n,t,r,o,i,u){return{target:D(e),x:D(n),y:D(t),stop:r,prevent:o,kill:i,raw:D(u)}}(r,e.clientX,e.clientY,n,t,o,e)}function Yi(e,n,t,r,o){var i=function(n,t){return function(e){n(e)&&t(Gi(e))}}(t,r);return e.dom().addEventListener(n,i,o),{unbind:b(sa,e,n,i,o)}}function Ki(e,n,t){return function(e,n,t,r){return Yi(e,n,t,r,!1)}(e,n,da,t)}var Xi,$i=function(e){var n=ft(e);return mt.generate(n).grid()},Ji=function(o,e){function n(e,n){0<e.length?function(e,n){var t=Qn(o,n).getOrThunk(function(){var e=on.fromTag(n,he(o).dom());return Mn(o,e),e});Ee(t);var r=g(e,function(e){e.isNew()&&i.push(e.element());var n=e.element();return Ee(n),p(e.cells(),function(e){e.isNew()&&u.push(e.element()),wo(e.element(),"colspan",e.colspan(),1),wo(e.element(),"rowspan",e.rowspan(),1),Mn(n,e.element())}),n});Ae(t,r)}(e,n):function(e){Qn(o,e).each(Wn)}(n)}var i=[],u=[],t=[],r=[],c=[];return p(e,function(e){switch(e.section()){case"thead":t.push(e);break;case"tbody":r.push(e);break;case"tfoot":c.push(e)}}),n(t,"thead"),n(r,"tbody"),n(c,"tfoot"),{newRows:D(i),newCells:D(u)}},Qi=function(e){return g(e,function(e){var t=Rt(e.element());return p(e.cells(),function(e){var n=Tt(e.element());wo(n,"colspan",e.colspan(),1),wo(n,"rowspan",e.rowspan(),1),Mn(t,n)}),t})},Zi=function(e,n,t){var r=e();return y(r,n).orThunk(function(){return Me.from(r[0]).orThunk(t)}).map(function(e){return e.element()})},eu=function(t){var e=t.grid(),n=Do(0,e.columns()),r=Do(0,e.rows());return g(n,function(n){return Zi(function(){return x(r,function(e){return mt.getAt(t,e,n).filter(function(e){return e.column()===n}).fold(D([]),function(e){return[e]})})},function(e){return 1===e.colspan()},function(){return mt.getAt(t,0,n)})})},nu=function(t){var e=t.grid(),n=Do(0,e.rows()),r=Do(0,e.columns());return g(n,function(n){return Zi(function(){return x(r,function(e){return mt.getAt(t,n,e).filter(function(e){return e.row()===n}).fold(D([]),function(e){return[e]})})},function(e){return 1===e.rowspan()},function(){return mt.getAt(t,n,0)})})},tu={resolve:Eo("ephox-snooker").resolve},ru=function(e,n,t,r,o){var i=on.fromTag("div");return re(i,{position:"absolute",left:n-r/2+"px",top:t+"px",height:o+"px",width:r+"px"}),q(i,{"data-column":e,role:"presentation"}),i},ou=function(e,n,t,r,o){var i=on.fromTag("div");return re(i,{position:"absolute",left:n+"px",top:t-o/2+"px",height:o+"px",width:r+"px"}),q(i,{"data-row":e,role:"presentation"}),i},iu=tu.resolve("resizer-bar"),uu=tu.resolve("resizer-rows"),cu=tu.resolve("resizer-cols"),au=function(e,n,t,r){No(e);var o=ft(n),i=mt.generate(o),u=nu(i),c=eu(i);Io(e,n,u,c,t,r)},lu=function(e){Bo(e,function(e){te(e,"display","none")})},fu=function(e){Bo(e,function(e){te(e,"display","block")})},su=No,du=function(e){return Oo(e,uu)},mu=function(e){return Oo(e,cu)},gu=function(e,n){return Vn(n,e.section())},pu={addCell:function(e,n,t){var r=e.cells(),o=r.slice(0,n),i=r.slice(n),u=o.concat([t]).concat(i);return gu(e,u)},setCells:gu,mutateCell:function(e,n,t){e.cells()[n]=t},getCell:Po,getCellElement:function(e,n){return Po(e,n).element()},mapCells:function(e,n){var t=e.cells(),r=g(t,n);return Vn(r,e.section())},cellLength:function(e){return e.cells().length}},hu=function(e,n,t,r){var o=function(e,n){return e[n]}(e,n).cells().slice(t),i=Mo(o,r),u=function(e,n){return g(e,function(e){return pu.getCell(e,n)})}(e,t).slice(n),c=Mo(u,r);return{colspan:D(i),rowspan:D(c)}},vu=function(o,i){var u=g(o,function(e,n){return g(e.cells(),function(e,n){return!1})});return g(o,function(e,r){var n=x(e.cells(),function(e,n){if(!1!==u[r][n])return[];var t=hu(o,r,n,i);return function(e,n,t,r){for(var o=e;o<e+t;o++)for(var i=n;i<n+r;i++)u[o][i]=!0}(r,n,t.rowspan(),t.colspan()),[zn(e.element(),t.rowspan(),t.colspan(),e.isNew())]});return Gn(n,e.section())})},bu=function(e,n,t){for(var r=[],o=0;o<e.grid().rows();o++){for(var i=[],u=0;u<e.grid().columns();u++){var c=mt.getAt(e,o,u).map(function(e){return Un(e.element(),t)}).getOrThunk(function(){return Un(n.gap(),!0)});i.push(c)}var a=Vn(i,e.all()[o].section());r.push(a)}return r},wu=function(t){return{is:function(e){return t===e},isValue:i,isError:s,getOr:D(t),getOrThunk:D(t),getOrDie:D(t),or:function(e){return wu(t)},orThunk:function(e){return wu(t)},fold:function(e,n){return n(t)},map:function(e){return wu(e(t))},mapError:function(e){return wu(t)},each:function(e){e(t)},bind:function(e){return e(t)},exists:function(e){return e(t)},forall:function(e){return e(t)},toOption:function(){return Me.some(t)}}},yu=function(t){return{is:s,isValue:s,isError:i,getOr:o,getOrThunk:function(e){return e()},getOrDie:function(){return function(e){return function(){throw new Error(e)}}(String(t))()},or:function(e){return e},orThunk:function(e){return e()},fold:function(e,n){return e(t)},map:function(e){return yu(t)},mapError:function(e){return yu(e(t))},each:T,bind:function(e){return yu(t)},exists:s,forall:i,toOption:Me.none}},Cu={value:wu,error:yu,fromOption:function(e,n){return e.fold(function(){return yu(n)},wu)}},Su=function(e,n,t){if(e.row()>=n.length||e.column()>pu.cellLength(n[0]))return Cu.error("invalid start address out of table bounds, row: "+e.row()+", column: "+e.column());var r=n.slice(e.row()),o=r[0].cells().slice(e.column()),i=pu.cellLength(t[0]),u=t.length;return Cu.value({rowDelta:D(r.length-u),colDelta:D(o.length-i)})},xu=function(e,n){var t=pu.cellLength(e[0]),r=pu.cellLength(n[0]);return{rowDelta:D(0),colDelta:D(t-r)}},Ru=function(e,n,t){var r=n.colDelta()<0?Vo:o;return(n.rowDelta()<0?qo:o)(r(e,Math.abs(n.colDelta()),t),Math.abs(n.rowDelta()),t)},Tu=function(e,n,t,r){if(0===e.length)return e;for(var o=n.startRow();o<=n.finishRow();o++)for(var i=n.startCol();i<=n.finishCol();i++)pu.mutateCell(e[o],i,Un(r(),!1));return e},Ou=function(e,n,t,r){for(var o=!0,i=0;i<e.length;i++)for(var u=0;u<pu.cellLength(e[0]);u++){var c=t(pu.getCellElement(e[i],u),n);!0===c&&!1===o?pu.mutateCell(e[i],u,Un(r(),!0)):!0===c&&(o=!1)}return e},Du=function(i,t,u,c){if(0<t&&t<i.length){var e=function(e,t){return w(e,function(e,n){return m(e,function(e){return t(e.element(),n.element())})?e:e.concat([n])},[])}(i[t-1].cells(),u);p(e,function(r){for(var o=Me.none(),e=function(t){for(var e=function(n){var e=i[t].cells()[n];u(e.element(),r.element())&&(o.isNone()&&(o=Me.some(c())),o.each(function(e){pu.mutateCell(i[t],n,Un(e,!0))}))},n=0;n<pu.cellLength(i[0]);n++)e(n)},n=t;n<i.length;n++)e(n)})}return i},Au=function(t,r,o,i,u){return Su(t,r,o).map(function(e){var n=Ru(r,e,i);return function(e,n,t,r,o){for(var i,u,c,a,l,f=e.row(),s=e.column(),d=f+t.length,m=s+pu.cellLength(t[0]),g=f;g<d;g++)for(var p=s;p<m;p++){i=n,u=g,c=p,l=a=void 0,a=b(o,pu.getCell(i[u],c).element()),l=i[u],1<i.length&&1<pu.cellLength(l)&&(0<c&&a(pu.getCellElement(l,c-1))||c<l.cells().length-1&&a(pu.getCellElement(l,c+1))||0<u&&a(pu.getCellElement(i[u-1],c))||u<i.length-1&&a(pu.getCellElement(i[u+1],c)))&&Ou(n,pu.getCellElement(n[g],p),o,r.cell);var h=pu.getCellElement(t[g-f],p-s),v=r.replace(h);pu.mutateCell(n[g],p,Un(v,!0))}return n}(t,n,o,i,u)})},Eu=function(e,n,t,r,o){Du(n,e,o,r.cell);var i=xu(t,n),u=Ru(t,i,r),c=xu(n,u),a=Ru(n,c,r);return a.slice(0,e).concat(u).concat(a.slice(e,a.length))},Nu=function(t,r,e,o,i){var n=t.slice(0,r),u=t.slice(r),c=pu.mapCells(t[e],function(e,n){return 0<r&&r<t.length&&o(pu.getCellElement(t[r-1],n),pu.getCellElement(t[r],n))?pu.getCell(t[r],n):Un(i(e.element(),o),!0)});return n.concat([c]).concat(u)},ku=function(e,t,r,o,i){return g(e,function(e){var n=0<t&&t<pu.cellLength(e)&&o(pu.getCellElement(e,t-1),pu.getCellElement(e,t))?pu.getCell(e,t):Un(i(pu.getCellElement(e,r),o),!0);return pu.addCell(e,t,n)})},Iu=function(e,r,o,i,u){var c=o+1;return g(e,function(e,n){var t=n===r?Un(u(pu.getCellElement(e,o),i),!0):pu.getCell(e,o);return pu.addCell(e,c,t)})},Bu=function(e,n,t,r,o){var i=n+1,u=e.slice(0,i),c=e.slice(i),a=pu.mapCells(e[n],function(e,n){return n===t?Un(o(e.element(),r),!0):e});return u.concat([a]).concat(c)},Pu=function(e,n,t){return e.slice(0,n).concat(e.slice(t+1))},Mu=function(e,t,r){var n=g(e,function(e){var n=e.cells().slice(0,t).concat(e.cells().slice(r+1));return Vn(n,e.section())});return h(n,function(e){return 0<e.cells().length})},Wu=function(t,r,o,e){var n=x(t,function(e,n){return Yo(t,n,r,o)||Ko(e,r,o)?[]:[pu.getCell(e,r)]});return Go(t,n,o,e)},_u=function(t,r,o,e){var i=t[r],n=x(i.cells(),function(e,n){return Yo(t,r,n,o)||Ko(i,n,o)?[]:[e]});return Go(t,n,o,e)},Lu=Sr([{none:[]},{only:["index"]},{left:["index","next"]},{middle:["prev","index","next"]},{right:["prev","index"]}]),ju=fn({},Lu),zu=function(e,n,i,u){function c(e){return g(e,D(0))}function r(e,n){if(0<=i){var t=Math.max(u.minCellWidth(),a[n]-i);return c(a.slice(0,e)).concat([i,t-a[n]]).concat(c(a.slice(n+1)))}var r=Math.max(u.minCellWidth(),a[e]+i),o=a[e]-r;return c(a.slice(0,e)).concat([r-a[e],o]).concat(c(a.slice(n+1)))}var a=e.slice(0),t=function(e,n){return 0===e.length?ju.none():1===e.length?ju.only(0):0===n?ju.left(0,1):n===e.length-1?ju.right(n-1,n):0<n&&n<e.length-1?ju.middle(n-1,n,n+1):ju.none()}(e,n),o=D(c(a)),l=r;return t.fold(o,function(e){return u.singleColumnWidth(a[e],i)},l,function(e,n,t){return r(n,t)},function(e,n){if(0<=i)return c(a.slice(0,n)).concat([i]);var t=Math.max(u.minCellWidth(),a[n]+i);return c(a.slice(0,n)).concat([t-a[n]])})},Hu={hasColspan:function(e){return Xo(e,"colspan")},hasRowspan:function(e){return Xo(e,"rowspan")},minWidth:D(10),minHeight:D(10),getInt:function(e,n){return parseInt(oe(e,n),10)}},Fu={getRawWidths:function(e,n,t){return Zo(e,n,Jo,ei,t)},getPixelWidths:function(e,n,t){return Zo(e,n,uo.getPixelWidth,function(e){return e.getOrThunk(t.minCellWidth)},t)},getPercentageWidths:function(e,n,t){return Zo(e,n,uo.getPercentageWidth,function(e){return e.fold(function(){return t.minCellWidth()},function(e){return e/t.pixelWidth()*100})},t)},getPixelHeights:function(e,n){return ni(e,n,uo.getHeight,function(e){return e.getOrThunk(Hu.minHeight)})},getRawHeights:function(e,n){return ni(e,n,Qo,ei)}},Uu=function(e,t){var n=mt.justCells(e);return g(n,function(e){var n=ti(e.column(),e.column()+e.colspan(),t);return{element:e.element,width:D(n),colspan:e.colspan}})},qu=function(e,t){var n=mt.justCells(e);return g(n,function(e){var n=ti(e.row(),e.row()+e.rowspan(),t);return{element:e.element,height:D(n),rowspan:e.rowspan}})},Vu=function(e,t){return g(e.all(),function(e,n){return{element:e.element,height:D(t[n])}})},Gu=function(n){return uo.getRawWidth(n).fold(function(){var e=Pr(n);return ri(e)},function(e){return oi(n,e)})},Yu=function(e,n,t,r){var o=Gu(e),i=o.getCellDelta(n),u=ui(e),c=o.getWidths(u,r,o),a=zu(c,t,i,o),l=g(a,function(e,n){return e+c[n]}),f=Uu(u,l);p(f,function(e){o.setElementWidth(e.element(),e.width())}),t===u.grid().columns()-1&&o.setTableWidth(e,l,i)},Ku=function(e,t,r,n){var o=ui(e),i=Fu.getPixelHeights(o,n),u=g(i,function(e,n){return r===n?Math.max(t+e,Hu.minHeight()):e}),c=qu(o,u),a=Vu(o,u);p(a,function(e){uo.setHeight(e.element(),e.height())}),p(c,function(e){uo.setHeight(e.element(),e.height())});var l=function(e){return v(e,function(e,n){return e+n},0)}(u);uo.setHeight(e,l)},Xu=function(e,n,t){var r=Gu(e),o=ii(n),i=r.getWidths(o,t,r),u=Uu(o,i);p(u,function(e){r.setElementWidth(e.element(),e.width())}),0<u.length&&r.setTableWidth(e,i,r.getCellDelta(0))},$u=function(r,o,i){if(0===o.length)throw new Error("You must specify at least one required field.");return _("required",o),L(o),function(n){var t=Ve(n);A(o,function(e){return l(t,e)})||M(o,t),r(o,t);var e=h(o,function(e){return!i.validate(n[e],e)});return 0<e.length&&function(e,n){throw new Error("All values need to be of type: "+n+". Keys ("+P(e).join(", ")+") were not.")}(e,i.label),n}},Ju=ai(["cell","row","replace","gap"]),Qu=function(n,t){void 0===t&&(t=li),Ju(n);function r(e){return function(e){return n.cell(e)}(t(e))}function o(e){var n=r(e);return i.get().isNone()&&i.set(Me.some(n)),u=Me.some({item:e,replacement:n}),n}var i=R(Me.none()),u=Me.none();return{getOrInit:function(n,t){return u.fold(function(){return o(n)},function(e){return t(n,e.item)?e.replacement:o(n)})},cursor:i.get}},Zu=function(c,a){return function(r){var o=R(Me.none());Ju(r);function i(e){var n={scope:c},t=r.replace(e,a,n);return u.push({item:e,sub:t}),o.get().isNone()&&o.set(Me.some(t)),t}var u=[];return{replaceOrInit:function(n,t){return function(n,t){return y(u,function(e){return t(e.item,n)})}(n,t).fold(function(){return i(n)},function(e){return t(n,e.item)?e.sub:i(n)})},cursor:o.get}}},ec=function(t){Ju(t);var e=R(Me.none());return{combine:function(n){return e.get().isNone()&&e.set(Me.some(n)),function(){var e=t.cell({element:D(n),colspan:D(1),rowspan:D(1)});return ue(e,"width"),ue(n,"width"),e}},cursor:e.get}},nc=["body","p","div","article","aside","figcaption","figure","footer","header","nav","section","ol","ul","table","thead","tfoot","tbody","caption","tr","td","th","h1","h2","h3","h4","h5","h6","blockquote","pre","address"],tc=fi,rc=function(e,n){var t=e.property().name(n);return l(["ol","ul"],t)},oc=si,ic=$t(),uc=function(e){return tc(ic,e)},cc=function(e){return rc(ic,e)},ac=function(e){return oc(ic,e)},lc=function(e){function o(e){return"br"===en(e)}function t(r){return St(r).bind(function(n){var t=function(e){return ye(e).map(function(e){return!!uc(e)||!!ac(e)&&"img"!==en(e)}).getOr(!1)}(n);return ve(n).map(function(e){return!0===t||function(e){return"li"===en(e)||$n(e,cc).isSome()}(e)||o(n)||uc(e)&&!In(r,e)?[]:[on.fromTag("br")]})}).getOr([])}var n,r=0===(n=x(e,function(e){var n=Ce(e);return function(e){return A(e,function(e){return o(e)||tn(e)&&0===ht(e).trim().length})}(n)?[]:n.concat(t(e))})).length?[on.fromTag("br")]:n;Ee(e[0]),Ae(e[0],r)},fc=B("grid","cursor"),sc=function(e,n,t){return Me.from(e[n]).bind(function(e){return Me.from(e.cells()[t]).bind(function(e){return Me.from(e.element())})})},dc=Xu,mc={insertRowBefore:jo(function(e,n,t,r){var o=n.row(),i=n.row(),u=Nu(e,i,o,t,r.getOrInit);return gi(u,i,n.column())},zo,T,T,Qu),insertRowsBefore:jo(function(e,n,t,r){var o=n[0].row(),i=n[0].row(),u=pi(n),c=w(u,function(e,n){return Nu(e,i,o,t,r.getOrInit)},e);return gi(c,i,n[0].column())},Fo,T,T,Qu),insertRowAfter:jo(function(e,n,t,r){var o=n.row(),i=n.row()+n.rowspan(),u=Nu(e,i,o,t,r.getOrInit);return gi(u,i,n.column())},zo,T,T,Qu),insertRowsAfter:jo(function(e,n,t,r){var o=pi(n),i=o[o.length-1].row(),u=o[o.length-1].row()+o[o.length-1].rowspan(),c=w(o,function(e,n){return Nu(e,u,i,t,r.getOrInit)},e);return gi(c,u,n[0].column())},Fo,T,T,Qu),insertColumnBefore:jo(function(e,n,t,r){var o=n.column(),i=n.column(),u=ku(e,i,o,t,r.getOrInit);return gi(u,n.row(),i)},zo,dc,T,Qu),insertColumnsBefore:jo(function(e,n,t,r){var o=hi(n),i=o[0].column(),u=o[0].column(),c=w(o,function(e,n){return ku(e,u,i,t,r.getOrInit)},e);return gi(c,n[0].row(),u)},Fo,dc,T,Qu),insertColumnAfter:jo(function(e,n,t,r){var o=n.column(),i=n.column()+n.colspan(),u=ku(e,i,o,t,r.getOrInit);return gi(u,n.row(),i)},zo,dc,T,Qu),insertColumnsAfter:jo(function(e,n,t,r){var o=n[n.length-1].column(),i=n[n.length-1].column()+n[n.length-1].colspan(),u=hi(n),c=w(u,function(e,n){return ku(e,i,o,t,r.getOrInit)},e);return gi(c,n[0].row(),i)},Fo,dc,T,Qu),splitCellIntoColumns:jo(function(e,n,t,r){var o=Iu(e,n.row(),n.column(),t,r.getOrInit);return gi(o,n.row(),n.column())},zo,dc,T,Qu),splitCellIntoRows:jo(function(e,n,t,r){var o=Bu(e,n.row(),n.column(),t,r.getOrInit);return gi(o,n.row(),n.column())},zo,T,T,Qu),eraseColumns:jo(function(e,n,t,r){var o=hi(n),i=Mu(e,o[0].column(),o[o.length-1].column()),u=mi(i,n[0].row(),n[0].column());return fc(i,u)},Fo,dc,di,Qu),eraseRows:jo(function(e,n,t,r){var o=pi(n),i=Pu(e,o[0].row(),o[o.length-1].row()),u=mi(i,n[0].row(),n[0].column());return fc(i,u)},Fo,T,di,Qu),makeColumnHeader:jo(function(e,n,t,r){var o=Wu(e,n.column(),t,r.replaceOrInit);return gi(o,n.row(),n.column())},zo,T,T,Zu("row","th")),unmakeColumnHeader:jo(function(e,n,t,r){var o=Wu(e,n.column(),t,r.replaceOrInit);return gi(o,n.row(),n.column())},zo,T,T,Zu(null,"td")),makeRowHeader:jo(function(e,n,t,r){var o=_u(e,n.row(),t,r.replaceOrInit);return gi(o,n.row(),n.column())},zo,T,T,Zu("col","th")),unmakeRowHeader:jo(function(e,n,t,r){var o=_u(e,n.row(),t,r.replaceOrInit);return gi(o,n.row(),n.column())},zo,T,T,Zu(null,"td")),mergeCells:jo(function(e,n,t,r){var o=n.cells();lc(o);var i=Tu(e,n.bounds(),t,D(o[0]));return fc(i,Me.from(o[0]))},function(e,n){return n.mergable()},T,T,ec),unmergeCells:jo(function(e,n,t,r){var o=v(n,function(e,n){return Ou(e,n,t,r.combine(n))},e);return fc(o,Me.from(n[0]))},function(e,n){return n.unmergable()},dc,T,ec),pasteCells:jo(function(e,t,n,r){var o,i,u,c,a=(o=t.clipboard(),i=t.generators(),u=ft(o),c=mt.generate(u),bu(c,i,!0)),l=Ln(t.row(),t.column());return Au(l,e,a,t.generators(),n).fold(function(){return fc(e,Me.some(t.element()))},function(e){var n=mi(e,t.row(),t.column());return fc(e,n)})},function(n,t){return lt.cell(t.element()).bind(function(e){return Lo(n,e).map(function(e){return fn(fn({},e),{generators:t.generators,clipboard:t.clipboard})})})},dc,T,Qu),pasteRowsBefore:jo(function(e,n,t,r){var o=e[n.cells[0].row()],i=n.cells[0].row(),u=vi(n.clipboard(),n.generators(),o),c=Eu(i,e,u,n.generators(),t),a=mi(c,n.cells[0].row(),n.cells[0].column());return fc(c,a)},Ho,T,T,Qu),pasteRowsAfter:jo(function(e,n,t,r){var o=e[n.cells[0].row()],i=n.cells[n.cells.length-1].row()+n.cells[n.cells.length-1].rowspan(),u=vi(n.clipboard(),n.generators(),o),c=Eu(i,e,u,n.generators(),t),a=mi(c,n.cells[0].row(),n.cells[0].column());return fc(c,a)},Ho,T,T,Qu)},gc=function(e){return on.fromDom(e.getBody())},pc=function(n){return function(e){return In(e,gc(n))}},hc={isRtl:D(!1)},vc={isRtl:D(!0)},bc={directionAt:function(e){return"rtl"===function(e){return"rtl"===oe(e,"direction")?"rtl":"ltr"}(e)?vc:hc}},wc={"border-collapse":"collapse",width:"100%"},yc={border:"1"},Cc=function(e){return e.getParam("table_tab_navigation",!0,"boolean")},Sc=function(e){var n=e.getParam("table_clone_elements");return _e(n)?Me.some(n.split(/[ ,]/)):Array.isArray(n)?Me.some(n):Me.none()},xc=function(e,n,t,r,o){e.fire("TableSelectionChange",{cells:n,start:t,finish:r,otherCells:o})},Rc=function(e){e.fire("TableSelectionClear")},Tc=function(f,e){function t(e){return"table"===en(gc(e))}function n(u,c,a,l){return function(e,n){Ci(e);var t=l(),r=on.fromDom(f.getDoc()),o=ho(bc.directionAt),i=Wt.cellOperations(a,r,s);return c(e)?u(t,e,n,i,o).bind(function(e){return p(e.newRows(),function(e){Ni(f,e.dom())}),p(e.newCells(),function(e){ki(f,e.dom())}),e.cursor().map(function(e){var n=f.dom.createRng();return n.setStart(e.dom(),0),n.setEnd(e.dom(),0),n})}):Me.none()}}var s=Sc(f);return{deleteRow:n(mc.eraseRows,function(e){var n=$i(e);return!1===t(f)||1<n.rows()},T,e),deleteColumn:n(mc.eraseColumns,function(e){var n=$i(e);return!1===t(f)||1<n.columns()},T,e),insertRowsBefore:n(mc.insertRowsBefore,i,T,e),insertRowsAfter:n(mc.insertRowsAfter,i,T,e),insertColumnsBefore:n(mc.insertColumnsBefore,i,co,e),insertColumnsAfter:n(mc.insertColumnsAfter,i,co,e),mergeCells:n(mc.mergeCells,i,T,e),unmergeCells:n(mc.unmergeCells,i,T,e),pasteRowsBefore:n(mc.pasteRowsBefore,i,T,e),pasteRowsAfter:n(mc.pasteRowsAfter,i,T,e),pasteCells:n(mc.pasteCells,i,T,e)}},Oc=function(e,n,r){var t=ft(e),o=mt.generate(t);return Fo(o,n).map(function(e){var n=bu(o,r,!1).slice(e[0].row(),e[e.length-1].row()+e[e.length-1].rowspan()),t=_o(n,r);return Qi(t)})},Dc=tinymce.util.Tools.resolve("tinymce.util.Tools"),Ac=function(e,n,t){t&&e.formatter.apply("align"+t,{},n)},Ec=function(e,n,t){t&&e.formatter.apply("valign"+t,{},n)},Nc=function(n,t){Dc.each("left center right".split(" "),function(e){n.formatter.remove("align"+e,{},t)})},kc=function(n,t){Dc.each("top middle bottom".split(" "),function(e){n.formatter.remove("valign"+e,{},t)})},Ic=function(o,e,i){var n;return n=function(e,n){for(var t=0;t<n.length;t++){var r=o.getStyle(n[t],i);if(void 0===e&&(e=r),e!==r)return""}return e}(n,o.select("td,th",e))},Bc=b(Mi,"left center right"),Pc=b(Mi,"top middle bottom"),Mc=function(e,r,n){var o=function(e,t){return t=t||[],Dc.each(e,function(e){var n={text:e.text||e.title};e.menu?n.menu=o(e.menu):(n.value=e.value,r&&r(n)),t.push(n)}),t};return o(e,n||[])},Wc=function(e){var o=e[0],n=e.slice(1),t=Ve(o);return p(n,function(e){p(t,function(r){N(e,function(e,n){var t=o[r];""!==t&&r===n&&t!==e&&(o[r]="")})})}),o},_c=function(e){var n=[{name:"borderstyle",type:"selectbox",label:"Border style",items:[{text:"Select...",value:""},{text:"Solid",value:"solid"},{text:"Dotted",value:"dotted"},{text:"Dashed",value:"dashed"},{text:"Double",value:"double"},{text:"Groove",value:"groove"},{text:"Ridge",value:"ridge"},{text:"Inset",value:"inset"},{text:"Outset",value:"outset"},{text:"None",value:"none"},{text:"Hidden",value:"hidden"}]},{name:"bordercolor",type:"colorinput",label:"Border color"},{name:"backgroundcolor",type:"colorinput",label:"Background color"}];return{title:"Advanced",name:"advanced",items:"cell"===e?[{name:"borderwidth",type:"input",label:"Border width"}].concat(n):n}},Lc=function(e,n,t){var r,o,i,u=e.dom;return fn(fn({width:u.getStyle(n,"width")||u.getAttrib(n,"width"),height:u.getStyle(n,"height")||u.getAttrib(n,"height"),cellspacing:u.getStyle(n,"border-spacing")||u.getAttrib(n,"cellspacing"),cellpadding:u.getAttrib(n,"cellpadding")||Ic(e.dom,n,"padding"),border:(r=u,o=n,i=ie(on.fromDom(o),"border-width"),Di(e)&&i.isSome()?i.getOr(""):r.getAttrib(o,"border")||Ic(e.dom,o,"border-width")||Ic(e.dom,o,"border")),caption:!!u.select("caption",n)[0],"class":u.getAttrib(n,"class","")},Bc("align","align",e,n)),t?Pi(u,n):{})},jc=function(e,n,t){var r=e.dom;return fn(fn({height:r.getStyle(n,"height")||r.getAttrib(n,"height"),scope:r.getAttrib(n,"scope"),"class":r.getAttrib(n,"class",""),align:"",type:n.parentNode.nodeName.toLowerCase()},Bc("align","align",e,n)),t?Pi(r,n):{})},zc=function(e,n,t){var r=e.dom;return fn(fn(fn({width:r.getStyle(n,"width")||r.getAttrib(n,"width"),height:r.getStyle(n,"height")||r.getAttrib(n,"height"),scope:r.getAttrib(n,"scope"),celltype:n.nodeName.toLowerCase(),"class":r.getAttrib(n,"class","")},Bc("align","halign",e,n)),Pc("valign","valign",e,n)),t?Pi(r,n):{})},Hc=function(e,n){var t,r,o,i,u=xi(e),c=Si(e),a=e.dom,l=n?(t=a,r=I(u,"border-style").getOr(""),o=I(u,"border-color").getOr(""),i=I(u,"background-color").getOr(""),{borderstyle:r,bordercolor:f(o),backgroundcolor:f(i)}):{};function f(e){return J(e,"rgb")?t.toHex(e):e}var s,d,m;return fn(fn(fn(fn(fn(fn({},{height:"",width:"100%",cellspacing:"",cellpadding:"",caption:!1,"class":"",align:"",border:""}),u),c),l),(m=u["border-width"],Di(e)&&m?{border:m}:I(c,"border").fold(function(){return{}},function(e){return{border:e}}))),(s=I(u,"border-spacing").or(I(c,"cellspacing")).fold(function(){return{}},function(e){return{cellspacing:e}}),d=I(u,"border-padding").or(I(c,"cellpadding")).fold(function(){return{}},function(e){return{cellpadding:e}}),fn(fn({},s),d)))},Fc=[{name:"width",type:"input",label:"Width"},{name:"height",type:"input",label:"Height"},{name:"celltype",type:"selectbox",label:"Cell type",items:[{text:"Cell",value:"td"},{text:"Header cell",value:"th"}]},{name:"scope",type:"selectbox",label:"Scope",items:[{text:"None",value:""},{text:"Row",value:"row"},{text:"Column",value:"col"},{text:"Row group",value:"rowgroup"},{text:"Column group",value:"colgroup"}]},{name:"halign",type:"selectbox",label:"H Align",items:[{text:"None",value:""},{text:"Left",value:"left"},{text:"Center",value:"center"},{text:"Right",value:"right"}]},{name:"valign",type:"selectbox",label:"V Align",items:[{text:"None",value:""},{text:"Top",value:"top"},{text:"Middle",value:"middle"},{text:"Bottom",value:"bottom"}]}],Uc=function(e){return function(n){var e=function(e){return e.getParam("table_cell_class_list",[],"array")}(n),t=Mc(e,function(e){e.value&&(e.textStyle=function(){return n.formatter.getCssText({block:"tr",classes:[e.value]})})});return 0<e.length?Me.some({name:"class",type:"selectbox",label:"Class",items:t}):Me.none()}(e).fold(function(){return Fc},function(e){return Fc.concat(e)})},qc={normal:function(t,r){return{setAttrib:function(e,n){t.setAttrib(r,e,n)},setStyle:function(e,n){t.setStyle(r,e,n)}}},ifTruthy:function(t,r){return{setAttrib:function(e,n){n&&t.setAttrib(r,e,n)},setStyle:function(e,n){n&&t.setStyle(r,e,n)}}}},Vc=function(n){var e,t=[];if(t=n.dom.select("td[data-mce-selected],th[data-mce-selected]"),e=n.dom.getParent(n.selection.getStart(),"td,th"),!t.length&&e&&t.push(e),e=e||t[0]){var r=Dc.map(t,function(e){return zc(n,e,Ri(n))}),o=Wc(r),i={type:"tabpanel",tabs:[{title:"General",name:"general",items:Uc(n)},_c("cell")]},u={type:"panel",items:[{type:"grid",columns:2,items:Uc(n)}]};n.windowManager.open({title:"Cell Properties",size:"normal",body:Ri(n)?i:u,buttons:[{type:"cancel",name:"cancel",text:"Cancel"},{type:"submit",name:"save",text:"Save",primary:!0}],initialData:o,onSubmit:b(zi,n,t)})}},Gc=[{type:"selectbox",name:"type",label:"Row type",items:[{text:"Header",value:"thead"},{text:"Body",value:"tbody"},{text:"Footer",value:"tfoot"}]},{type:"selectbox",name:"align",label:"Alignment",items:[{text:"None",value:""},{text:"Left",value:"left"},{text:"Center",value:"center"},{text:"Right",value:"right"}]},{label:"Height",name:"height",type:"input"}],Yc=function(e){return function(n){var e=function(e){return e.getParam("table_row_class_list",[],"array")}(n),t=Mc(e,function(e){e.value&&(e.textStyle=function(){return n.formatter.getCssText({block:"tr",classes:[e.value]})})});return 0<e.length?Me.some({name:"class",type:"selectbox",label:"Class",items:t}):Me.none()}(e).fold(function(){return Gc},function(e){return Gc.concat(e)})},Kc=function(n){var e,t,r=n.dom,o=[];if((e=r.getParent(n.selection.getStart(),"table"))&&(t=r.getParent(n.selection.getStart(),"td,th"),Dc.each(e.rows,function(n){Dc.each(n.cells,function(e){if((r.getAttrib(e,"data-mce-selected")||e===t)&&o.indexOf(n)<0)return o.push(n),!1})}),o[0])){var i=Dc.map(o,function(e){return jc(n,e,Ti(n))}),u=Wc(i),c={type:"tabpanel",tabs:[{title:"General",name:"general",items:Yc(n)},_c("row")]},a={type:"panel",items:[{type:"grid",columns:2,items:Yc(n)}]};n.windowManager.open({title:"Row Properties",size:"normal",body:Ti(n)?c:a,buttons:[{type:"cancel",name:"cancel",text:"Cancel"},{type:"submit",name:"save",text:"Save",primary:!0}],initialData:u,onSubmit:b(Hi,n,o,u)})}},Xc=Object.prototype.hasOwnProperty,$c=(Xi=function(e,n){return n},function(){for(var e=new Array(arguments.length),n=0;n<e.length;n++)e[n]=arguments[n];if(0===e.length)throw new Error("Can't merge zero objects");for(var t={},r=0;r<e.length;r++){var o=e[r];for(var i in o)Xc.call(o,i)&&(t[i]=Xi(t[i],o[i]))}return t}),Jc=tinymce.util.Tools.resolve("tinymce.Env"),Qc={styles:{"border-collapse":"collapse",width:"100%"},attributes:{border:"1"},percentages:!0},Zc=function(n,e,t){var r=xi(n),o={styles:r,attributes:Si(n),percentages:function(e){return _e(e)&&-1!==e.indexOf("%")}(r.width)&&!Ei(n)},i=Fi(t,e,0,0,o);U(i,"data-mce-id","__mce");var u=function(e){var n=on.fromTag("div"),t=on.fromDom(e.dom().cloneNode(!0));return Mn(n,t),function(e){return e.dom().innerHTML}(n)}(i);return n.insertContent(u),Zn(gc(n),'table[data-mce-id="__mce"]').map(function(e){return Ei(n)&&te(e,"width",oe(e,"width")),Y(e,"data-mce-id"),function(n,e){p(Be(e,"tr"),function(e){Ni(n,e.dom()),p(Be(e,"th,td"),function(e){ki(n,e.dom())})})}(n,e),function(e,n){Zn(n,"td,th").each(b(Ui,e))}(n,e),e.dom()}).getOr(null)},ea=function(n,e,t){var r=t?[{type:"input",name:"cols",label:"Cols",inputMode:"numeric"},{type:"input",name:"rows",label:"Rows",inputMode:"numeric"}]:[],o=function(e){return e.getParam("table_appearance_options",!0,"boolean")}(n)?[{type:"input",name:"cellspacing",label:"Cell spacing",inputMode:"numeric"},{type:"input",name:"cellpadding",label:"Cell padding",inputMode:"numeric"},{type:"input",name:"border",label:"Border width"},{type:"label",label:"Caption",items:[{type:"checkbox",name:"caption",label:"Show caption"}]}]:[],i=e?[{type:"selectbox",name:"class",label:"Class",items:Mc(Ai(n),function(e){e.value&&(e.textStyle=function(){return n.formatter.getCssText({block:"table",classes:[e.value]})})})}]:[];return r.concat([{type:"input",name:"width",label:"Width"},{type:"input",name:"height",label:"Height"}]).concat(o).concat([{type:"selectbox",name:"align",label:"Alignment",items:[{text:"None",value:""},{text:"Left",value:"left"},{text:"Center",value:"center"},{text:"Right",value:"right"}]}]).concat(i)},na=function(e,n,t,r){if("TD"===n.tagName||"TH"===n.tagName)_e(t)?e.setStyle(n,t,r):e.setStyle(n,t);else if(n.children)for(var o=0;o<n.children.length;o++)na(e,n.children[o],t,r)},ta=function(e,n){var t,r=e.dom,o=Hc(e,Oi(e));!1===n?(t=r.getParent(e.selection.getStart(),"table"))?o=Lc(e,t,Oi(e)):Oi(e)&&(o.borderstyle="",o.bordercolor="",o.backgroundcolor=""):(o.cols="1",o.rows="1",Oi(e)&&(o.borderstyle="",o.bordercolor="",o.backgroundcolor=""));var i=0<Ai(e).length;i&&o["class"]&&(o["class"]=o["class"].replace(/\s*mce\-item\-table\s*/g,""));var u={type:"grid",columns:2,items:ea(e,i,n)},c=Oi(e)?{type:"tabpanel",tabs:[{title:"General",name:"general",items:[u]},_c("table")]}:{type:"panel",items:[u]};e.windowManager.open({title:"Table Properties",size:"normal",body:c,onSubmit:b(qi,e,t),buttons:[{type:"cancel",name:"cancel",text:"Cancel"},{type:"submit",name:"save",text:"Save",primary:!0}],initialData:o})},ra=Vi("th,td"),oa=Vi("th,td,caption"),ia=Dc.each,ua={registerCommands:function(c,n,a,l,t){function f(e){return lt.table(e,s)}function i(e){return{width:bi(e.dom()),height:bi(e.dom())}}function r(o){ra(c).each(function(r){f(r).each(function(n){var e=Er.forMenu(l,n,r),t=i(n);o(n,e).each(function(e){!function(e,n,t){var r=i(t);n.width===r.width&&n.height===r.height||(Ii(e,t.dom(),n.width,n.height),Bi(e,t.dom(),r.width,r.height))}(c,t,n),c.selection.setRng(e),c.focus(),a.clear(n),Ci(n)})})})}function o(e){return ra(c).map(function(o){return f(o).bind(function(e){var n=on.fromDom(c.getDoc()),t=Er.forMenu(l,e,o),r=Wt.cellOperations(T,n,Me.none());return Oc(e,t,r)})})}function u(u){t.get().each(function(e){var i=g(e,function(e){return Tt(e)});ra(c).each(function(o){f(o).each(function(n){var e=on.fromDom(c.getDoc()),t=Wt.paste(e),r=Er.pasteRows(l,n,o,i,t);u(n,r).each(function(e){c.selection.setRng(e),c.focus(),a.clear(n)})})})})}var s=pc(c);ia({mceTableSplitCells:function(){r(n.unmergeCells)},mceTableMergeCells:function(){r(n.mergeCells)},mceTableInsertRowBefore:function(){r(n.insertRowsBefore)},mceTableInsertRowAfter:function(){r(n.insertRowsAfter)},mceTableInsertColBefore:function(){r(n.insertColumnsBefore)},mceTableInsertColAfter:function(){r(n.insertColumnsAfter)},mceTableDeleteCol:function(){r(n.deleteColumn)},mceTableDeleteRow:function(){r(n.deleteRow)},mceTableCutRow:function(e){o().each(function(e){t.set(e),r(n.deleteRow)})},mceTableCopyRow:function(e){o().each(function(e){t.set(e)})},mceTablePasteRowBefore:function(e){u(n.pasteRowsBefore)},mceTablePasteRowAfter:function(e){u(n.pasteRowsAfter)},mceTableDelete:function(){oa(c).each(function(e){lt.table(e,s).filter(d(s)).each(function(e){var n=on.fromText("");if(Re(e,n),Wn(e),c.dom.isEmpty(c.getBody()))c.setContent(""),c.selection.setCursorLocation();else{var t=c.dom.createRng();t.setStart(n.dom(),0),t.setEnd(n.dom(),0),c.selection.setRng(t),c.nodeChanged()}})})}},function(e,n){c.addCommand(n,e)}),ia({mceInsertTable:b(ta,c,!0),mceTableProps:b(ta,c,!1),mceTableRowProps:b(Kc,c),mceTableCellProps:b(Vc,c)},function(e,n){c.addCommand(n,function(){e()})})}},ca=function(e){var n=Me.from(e.dom().documentElement).map(on.fromDom).getOr(e);return{parent:D(n),view:D(e),origin:D(lo(0,0))}},aa=function(e,n){return{parent:D(n),view:D(e),origin:D(lo(0,0))}},la=function(e){var r=B.apply(null,e),o=[];return{bind:function(e){if(e===undefined)throw new Error("Event bind error: undefined handler");o.push(e)},unbind:function(n){o=h(o,function(e){return e!==n})},trigger:function(){for(var e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];var t=r.apply(null,e);p(o,function(e){e(t)})}}},fa={create:function(e){return{registry:k(e,function(e){return{bind:e.bind,unbind:e.unbind}}),trigger:k(e,function(e){return e.trigger})}}},sa=function(e,n,t,r){e.dom().removeEventListener(n,t,r)},da=D(!0),ma={resolve:Eo("ephox-dragster").resolve},ga=ai(["compare","extract","mutate","sink"]),pa=ai(["element","start","stop","destroy"]),ha=ai(["forceDrop","drop","move","delayDrop"]),va=ga({compare:function(e,n){return lo(n.left()-e.left(),n.top()-e.top())},extract:function(e){return Me.some(lo(e.x(),e.y()))},sink:function(e,n){var t=function(e){var n=$c({layerClass:ma.resolve("blocker")},e),t=on.fromTag("div");U(t,"role","presentation"),re(t,{position:"fixed",left:"0px",top:"0px",width:"100%",height:"100%"}),Ro(t,ma.resolve("blocker")),Ro(t,n.layerClass);return{element:function(){return t},destroy:function(){Wn(t)}}}(n),r=Ki(t.element(),"mousedown",e.forceDrop),o=Ki(t.element(),"mouseup",e.drop),i=Ki(t.element(),"mousemove",e.move),u=Ki(t.element(),"mouseout",e.delayDrop);return pa({element:t.element,start:function(e){Mn(e,t.element())},stop:function(){Wn(t.element())},destroy:function(){t.destroy(),o.unbind(),i.unbind(),u.unbind(),r.unbind()}})},mutate:function(e,n){e.mutate(n.left(),n.top())}});function ba(){var r=Me.none(),t=fa.create({move:la(["info"])});return{onEvent:function(e,n){n.extract(e).each(function(e){(function(n,t){var e=r.map(function(e){return n.compare(e,t)});return r=Me.some(t),e})(n,e).each(function(e){t.trigger.move(e)})})},reset:function(){r=Me.none()},events:t.registry}}function wa(){var e=function r(){return{onEvent:T,reset:T}}(),n=ba(),t=e;return{on:function(){t.reset(),t=n},off:function(){t.reset(),t=e},isOn:function(){return t===n},onEvent:function(e,n){t.onEvent(e,n)},events:n.events}}function ya(){var t=fa.create({drag:la(["xDelta","yDelta","target"])}),r=Me.none(),e=function(){var t=fa.create({drag:la(["xDelta","yDelta"])});return{mutate:function(e,n){t.trigger.drag(e,n)},events:t.registry}}();return e.events.drag.bind(function(n){r.each(function(e){t.trigger.drag(n.xDelta(),n.yDelta(),e)})}),{assign:function(e){r=Me.some(e)},get:function(){return r},mutate:e.mutate,events:t.registry}}function Ca(e){return"true"===V(e,"contenteditable")}function Sa(o,n,i){function e(e,n){return Me.from(V(e,n))}var t=ya(),r=vl(t,{}),u=Me.none();function c(e,n){return Hu.getInt(e,n)-parseInt(V(e,"data-initial-"+n),10)}function a(e,n){m.trigger.startAdjust(),t.assign(e),U(e,"data-initial-"+n,parseInt(oe(e,n),10)),Ro(e,bl),te(e,"opacity","0.2"),r.go(o.parent())}function l(e){return In(e,o.view())}function f(e){return et(e,"table",l).filter(function(e){return function(e,n){return et(e,"[contenteditable]",n)}(e,l).exists(Ca)})}t.events.drag.bind(function(t){e(t.target(),"data-row").each(function(e){var n=Hu.getInt(t.target(),"top");te(t.target(),"top",n+t.yDelta()+"px")}),e(t.target(),"data-column").each(function(e){var n=Hu.getInt(t.target(),"left");te(t.target(),"left",n+t.xDelta()+"px")})}),r.events.stop.bind(function(){t.get().each(function(r){u.each(function(t){e(r,"data-row").each(function(e){var n=c(r,"top");Y(r,"data-initial-top"),m.trigger.adjustHeight(t,n,parseInt(e,10))}),e(r,"data-column").each(function(e){var n=c(r,"left");Y(r,"data-initial-left"),m.trigger.adjustWidth(t,n,parseInt(e,10))}),au(o,t,i,n)})})});var s=Ki(o.parent(),"mousedown",function(e){du(e.target())&&a(e.target(),"top"),mu(e.target())&&a(e.target(),"left")}),d=Ki(o.view(),"mouseover",function(e){f(e.target()).fold(function(){ee(e.target())&&su(o)},function(e){u=Me.some(e),au(o,e,i,n)})}),m=fa.create({adjustHeight:la(["table","delta","row"]),adjustWidth:la(["table","delta","column"]),startAdjust:la([])});return{destroy:function(){s.unbind(),d.unbind(),r.destroy(),su(o)},refresh:function(e){au(o,e,i,n)},on:r.on,off:r.off,hideBars:b(lu,o),showBars:b(fu,o),events:m.registry}}function xa(e,n){return bi(e.dom())/bi(n.dom())*100+"%"}function Ra(t,e){return lt.table(t,e).bind(function(e){var n=lt.cells(e);return C(n,function(e){return In(t,e)}).map(function(e){return{index:D(e),all:D(n)}})})}function Ta(e,n,t){var r=e.document.createRange();return function(t,e){e.fold(function(e){t.setStartBefore(e.dom())},function(e,n){t.setStart(e.dom(),n)},function(e){t.setStartAfter(e.dom())})}(r,n),function(t,e){e.fold(function(e){t.setEndBefore(e.dom())},function(e,n){t.setEnd(e.dom(),n)},function(e){t.setEndAfter(e.dom())})}(r,t),r}function Oa(e,n,t,r,o){var i=e.document.createRange();return i.setStart(n.dom(),t),i.setEnd(r.dom(),o),i}function Da(e){return{left:D(e.left),top:D(e.top),right:D(e.right),bottom:D(e.bottom),width:D(e.width),height:D(e.height)}}function Aa(e,n,t){return n(on.fromDom(t.startContainer),t.startOffset,on.fromDom(t.endContainer),t.endOffset)}function Ea(e,n){return function(e,n){var t=n.ltr();return t.collapsed?n.rtl().filter(function(e){return!1===e.collapsed}).map(function(e){return Bl.rtl(on.fromDom(e.endContainer),e.endOffset,on.fromDom(e.startContainer),e.startOffset)}).getOrThunk(function(){return Aa(0,Bl.ltr,t)}):Aa(0,Bl.ltr,t)}(0,function(o,e){return e.match({domRange:function(e){return{ltr:D(e),rtl:Me.none}},relative:function(e,n){return{ltr:Z(function(){return Ta(o,e,n)}),rtl:Z(function(){return Me.some(Ta(o,n,e))})}},exact:function(e,n,t,r){return{ltr:Z(function(){return Oa(o,e,n,t,r)}),rtl:Z(function(){return Me.some(Oa(o,t,r,e,n))})}}})}(e,n))}function Na(e,n,t){return n>=e.left&&n<=e.right&&t>=e.top&&t<=e.bottom}function ka(t,r,e,n,o){function i(e){var n=t.dom().createRange();return n.setStart(r.dom(),e),n.collapse(!0),n}var u=ht(r).length,c=function(e,n,t,r,o){if(0===o)return 0;if(n===r)return o-1;for(var i=r,u=1;u<o;u++){var c=e(u),a=Math.abs(n-c.left);if(t<=c.bottom){if(t<c.top||i<a)return u-1;i=a}}return 0}(function(e){return i(e).getBoundingClientRect()},e,n,o.right,u);return i(c)}function Ia(e,n){return n-e.left<e.right-n}function Ba(e,n,t){var r=e.dom().createRange();return r.selectNode(n.dom()),r.collapse(t),r}function Pa(n,e,t){var r=n.dom().createRange();r.selectNode(e.dom());var o=r.getBoundingClientRect(),i=Ia(o,t);return(!0===i?Ct:St)(e).map(function(e){return Ba(n,e,i)})}function Ma(e,n,t){var r=n.dom().getBoundingClientRect(),o=Ia(r,t);return Me.some(Ba(e,n,o))}function Wa(e,n,t,r){var o=e.dom().createRange();o.selectNode(n.dom());var i=o.getBoundingClientRect();return function(e,n,t,r){var o=e.dom().createRange();o.selectNode(n.dom());var i=o.getBoundingClientRect(),u=Math.max(i.left,Math.min(i.right,t)),c=Math.max(i.top,Math.min(i.bottom,r));return Ml(e,n,u,c)}(e,n,Math.max(i.left,Math.min(i.right,t)),Math.max(i.top,Math.min(i.bottom,r)))}function _a(e,n){var t=en(e);return"input"===t?El.after(e):l(["br","img"],t)?0===n?El.before(e):El.after(e):El.on(e,n)}function La(e,n){var t=e.fold(El.before,_a,El.after),r=n.fold(El.before,_a,El.after);return kl.relative(t,r)}function ja(e,n,t,r){var o=_a(e,n),i=_a(t,r);return kl.relative(o,i)}function za(e,n,t,r){var o=function(e,n,t,r){var o=he(e).dom().createRange();return o.setStart(e.dom(),n),o.setEnd(t.dom(),r),o}(e,n,t,r),i=In(e,t)&&n===r;return o.collapsed&&!i}function Ha(e,n){Me.from(e.getSelection()).each(function(e){e.removeAllRanges(),e.addRange(n)})}function Fa(e,n,t,r,o){var i=Oa(e,n,t,r,o);Ha(e,i)}function Ua(u,e){return Ea(u,e).match({ltr:function(e,n,t,r){Fa(u,e,n,t,r)},rtl:function(e,n,t,r){var o=u.getSelection();if(o.setBaseAndExtent)o.setBaseAndExtent(e.dom(),n,t.dom(),r);else if(o.extend)try{!function(e,n,t,r,o,i){n.collapse(t.dom(),r),n.extend(o.dom(),i)}(0,o,e,n,t,r)}catch(i){Fa(u,t,r,e,n)}else Fa(u,t,r,e,n)}})}function qa(e,n,t,r,o){var i=ja(n,t,r,o);Ua(e,i)}function Va(e,n,t){var r=La(n,t);Ua(e,r)}function Ga(e){function n(e,n,t,r){return Oa(o,e,n,t,r)}var o=kl.getWin(e).dom(),t=function(e){return e.match({domRange:function(e){var n=on.fromDom(e.startContainer),t=on.fromDom(e.endContainer);return ja(n,e.startOffset,t,e.endOffset)},relative:La,exact:ja})}(e);return Ea(o,t).match({ltr:n,rtl:n})}function Ya(e){var n=on.fromDom(e.anchorNode),t=on.fromDom(e.focusNode);return za(n,e.anchorOffset,t,e.focusOffset)?Me.some(Dl.create(n,e.anchorOffset,t,e.focusOffset)):function(e){if(0<e.rangeCount){var n=e.getRangeAt(0),t=e.getRangeAt(e.rangeCount-1);return Me.some(Dl.create(on.fromDom(n.startContainer),n.startOffset,on.fromDom(t.endContainer),t.endOffset))}return Me.none()}(e)}function Ka(e,n){var t=function(e,n){var t=e.document.createRange();return Il(t,n),t}(e,n);Ha(e,t)}function Xa(e){return function(e){return Me.from(e.getSelection()).filter(function(e){return 0<e.rangeCount}).bind(Ya)}(e).map(function(e){return kl.exact(e.start(),e.soffset(),e.finish(),e.foffset())})}function $a(e,n){return function(e){var n=e.getClientRects(),t=0<n.length?n[0]:e.getBoundingClientRect();return 0<t.width||0<t.height?Me.some(t).map(Da):Me.none()}(Pl(e,n))}function Ja(e,n,t){return function(e,n,t){var r=on.fromDom(e.document);return Wl(r,n,t).map(function(e){return Dl.create(on.fromDom(e.startContainer),e.startOffset,on.fromDom(e.endContainer),e.endOffset)})}(e,n,t)}function Qa(e,n,t,r){return Ll(e,n,Tl(t),r)}function Za(e,n,t,r){return Ll(e,n,Ol(t),r)}function el(e,n){var t=kl.exact(n,0,n,0);return Ga(t)}function nl(e,n){return function(e){return 0===e.length?Me.none():Me.some(e[e.length-1])}(Be(n,"tr")).bind(function(e){return Zn(e,"td,th").map(function(e){return el(0,e)})})}function tl(e,n,t,r){return void 0===r&&(r=Yl),e.property().parent(n).map(function(e){return Gl(e,r)})}function rl(n){return function(e){return 0===n.property().children(e).length}}function ol(e,n){return function(e,n,t){return ef(e,n,rl(e),t)}(tf,e,n)}function il(e,n){return function(e,n,t){return nf(e,n,rl(e),t)}(tf,e,n)}function ul(e){return et(e,"tr")}function cl(e){return"br"===en(e)}function al(n,e,t,r){return function(e,n){return Se(e,n).filter(cl).orThunk(function(){return Se(e,n-1).filter(cl)})}(e,t).bind(function(e){return r.traverse(e).fold(function(){return lf(e,r.gather,n).map(r.relative)},function(e){return function(r){return ve(r).bind(function(n){var t=Ce(n);return af(t,r).map(function(e){return cf(n,t,r,e)})})}(e).map(function(e){return El.on(e.parent(),e.index())})})})}function ll(e){return mf.nu({left:e.left,top:e.top,right:e.right,bottom:e.bottom})}function fl(e,n){return Me.some(e.getRect(n))}function sl(n,e,t){return function(e,n,t){return Xn(function(e,n){return n(e)},$n,e,n,t)}(e,uc).fold(D(!1),function(e){return pf(n,e).exists(function(e){return function(e,n){return e.left()<n.left()||Math.abs(n.right()-e.left())<1||e.left()>n.right()}(t,e)})})}function dl(n,t,e){var r=n.move(e,5),o=wf(t,n,e,r,100).getOr(r);return function(e,n,t){return e.point(n)>t.getInnerHeight()?Me.some(e.point(n)-t.getInnerHeight()):e.point(n)<0?Me.some(-e.point(n)):Me.none()}(n,o,t).fold(function(){return t.situsFromPoint(o.left(),n.point(o))},function(e){return t.scrollBy(0,e),t.situsFromPoint(o.left(),n.point(o)-e)})}function ml(e,n){return function(e,n,t){return $n(e,n,t).isSome()}(e,function(e){return ve(e).exists(function(e){return In(e,n)})})}function gl(n,r,o,e,i){return et(e,"td,th",r).bind(function(t){return et(t,"table",r).bind(function(e){return ml(i,e)?Of(n,r,o).bind(function(n){return et(n.finish(),"td,th",r).map(function(e){return{start:D(t),finish:D(e),range:D(n)}})}):Me.none()})})}function pl(e,n){return et(e,"td,th",n)}var hl=function(n,t,e){function r(){l.stop(),u.isOn()&&(u.off(),i.trigger.stop())}var o=!1,i=fa.create({start:la([]),stop:la([])}),u=wa(),c=function(t,r){var o=null;return{cancel:function(){null!==o&&(f.clearTimeout(o),o=null)},throttle:function(){for(var e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];null!==o&&f.clearTimeout(o),o=f.setTimeout(function(){t.apply(null,e),o=null},r)}}}(r,200);u.events.move.bind(function(e){t.mutate(n,e.info())});function a(t){return function(){for(var e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];o&&t.apply(null,e)}}var l=t.sink(ha({forceDrop:r,drop:a(r),move:a(function(e){c.cancel(),u.onEvent(e,t)}),delayDrop:a(c.throttle)}),e);return{element:l.element,go:function(e){l.start(e),u.on(),i.trigger.start()},on:function(){o=!0},off:function(){o=!1},destroy:function(){l.destroy()},events:i.registry}},vl=function(e,n){void 0===n&&(n={});var t=n.mode!==undefined?n.mode:va;return hl(e,t,n)},bl=tu.resolve("resizer-bar-dragging"),wl=function(e,t){var r=go.height,n=Sa(e,t,r),o=fa.create({beforeResize:la(["table"]),afterResize:la(["table"]),startDrag:la([])});return n.events.adjustHeight.bind(function(e){o.trigger.beforeResize(e.table());var n=r.delta(e.delta(),e.table());Ku(e.table(),n,e.row(),r),o.trigger.afterResize(e.table())}),n.events.startAdjust.bind(function(e){o.trigger.startDrag()}),n.events.adjustWidth.bind(function(e){o.trigger.beforeResize(e.table());var n=t.delta(e.delta(),e.table());Yu(e.table(),n,e.column(),t),o.trigger.afterResize(e.table())}),{on:n.on,off:n.off,hideBars:n.hideBars,showBars:n.showBars,destroy:n.destroy,events:o.registry}},yl=function(e,n){return e.inline?aa(gc(e),function(){var e=on.fromTag("div");return re(e,{position:"static",height:"0",width:"0",padding:"0",margin:"0",border:"0"}),Mn(un(),e),e}()):ca(on.fromDom(e.getDoc()))},Cl=function(e,n){e.inline&&Wn(n.parent())},Sl=function(u){function c(e){return"TABLE"===e.nodeName}function r(e){var n=u.dom.getStyle(e,"width")||u.dom.getAttrib(e,"width");return Me.from(n).filter(function(e){return 0<e.length})}function e(){return i}var a,l,o=Me.none(),i=Me.none(),f=Me.none(),s=/(\d+(\.\d+)?)%/;return u.on("init",function(){var e=ho(bc.directionAt),n=yl(u);if(f=Me.some(n),function(e){var n=e.getParam("object_resizing",!0);return _e(n)?"table"===n:n}(u)&&function(e){return e.getParam("table_resize_bars",!0,"boolean")}(u)){var t=wl(n,e);t.on(),t.events.startDrag.bind(function(e){o=Me.some(u.selection.getRng())}),t.events.beforeResize.bind(function(e){var n=e.table().dom();Ii(u,n,bi(n),wi(n))}),t.events.afterResize.bind(function(e){var n=e.table(),t=n.dom();Ci(n),o.each(function(e){u.selection.setRng(e),u.focus()}),Bi(u,t,bi(t),wi(t)),u.undoManager.add()}),i=Me.some(t)}}),u.on("ObjectResizeStart",function(e){var n=e.target;if(c(n)){var t=r(n).map(function(e){return s.test(e)}).getOr(!1);t&&Ei(u)?function(e){te(on.fromDom(e),"width",bi(e).toString()+"px")}(n):!t&&function(e){return!0===e.getParam("table_responsive_width")}(u)&&function(e){var n=on.fromDom(e);ve(n).map(function(e){return xa(n,e)}).each(function(e){te(n,"width",e),p(Be(n,"tr"),function(n){p(Ce(n),function(e){te(e,"width",xa(e,n))})})})}(n),a=e.width,l=r(n).getOr("")}}),u.on("ObjectResized",function(e){var n=e.target;if(c(n)){var t=n;if(s.test(l)){var r=parseFloat(s.exec(l)[1]),o=e.width*r/a;u.dom.setStyle(t,"width",o+"%")}else{var i=[];Dc.each(t.rows,function(e){Dc.each(e.cells,function(e){var n=u.dom.getStyle(e,"width",!0);i.push({cell:e,width:n})})}),Dc.each(i,function(e){u.dom.setStyle(e.cell,"width",e.width),u.dom.setAttrib(e.cell,"width",null)})}}}),u.on("SwitchMode",function(){e().each(function(e){u.readonly?e.hideBars():e.showBars()})}),{lazyResize:e,lazyWire:function(){return f.getOr(ca(on.fromDom(u.getBody())))},destroy:function(){i.each(function(e){e.destroy()}),f.each(function(e){Cl(u,e)})}}},xl=Sr([{none:["current"]},{first:["current"]},{middle:["current","target"]},{last:["current"]}]),Rl=fn(fn({},xl),{none:function(e){return void 0===e&&(e=undefined),xl.none(e)}}),Tl=function(n,e){return Ra(n,e).fold(function(){return Rl.none(n)},function(e){return e.index()+1<e.all().length?Rl.middle(n,e.all()[e.index()+1]):Rl.last(n)})},Ol=function(n,e){return Ra(n,e).fold(function(){return Rl.none()},function(e){return 0<=e.index()-1?Rl.middle(n,e.all()[e.index()-1]):Rl.first(n)})},Dl={create:B("start","soffset","finish","foffset")},Al=Sr([{before:["element"]},{on:["element","offset"]},{after:["element"]}]),El={before:Al.before,on:Al.on,after:Al.after,cata:function(e,n,t,r){return e.fold(n,t,r)},getStart:function(e){return e.fold(o,o,o)}},Nl=Sr([{domRange:["rng"]},{relative:["startSitu","finishSitu"]},{exact:["start","soffset","finish","foffset"]}]),kl={domRange:Nl.domRange,relative:Nl.relative,exact:Nl.exact,exactFromRange:function(e){return Nl.exact(e.start(),e.soffset(),e.finish(),e.foffset())},getWin:function(e){return function(e){return on.fromDom(e.dom().ownerDocument.defaultView)}(function(e){return e.match({domRange:function(e){return on.fromDom(e.startContainer)},relative:function(e,n){return El.getStart(e)},exact:function(e,n,t,r){return e}})}(e))},range:Dl.create},Il=function(e,n){e.selectNodeContents(n.dom())},Bl=Sr([{ltr:["start","soffset","finish","foffset"]},{rtl:["start","soffset","finish","foffset"]}]),Pl=function(i,e){return Ea(i,e).match({ltr:function(e,n,t,r){var o=i.document.createRange();return o.setStart(e.dom(),n),o.setEnd(t.dom(),r),o},rtl:function(e,n,t,r){var o=i.document.createRange();return o.setStart(t.dom(),r),o.setEnd(e.dom(),n),o}})},Ml=function(e,n,t,r){return tn(n)?function(n,t,r,o){var e=n.dom().createRange();e.selectNode(t.dom());var i=e.getClientRects();return bo(i,function(e){return Na(e,r,o)?Me.some(e):Me.none()}).map(function(e){return ka(n,t,r,o,e)})}(e,n,t,r):function(n,e,t,r){var o=n.dom().createRange(),i=Ce(e);return bo(i,function(e){return o.selectNode(e.dom()),Na(o.getBoundingClientRect(),t,r)?Ml(n,e,t,r):Me.none()})}(e,n,t,r)},Wl=document.caretPositionFromPoint?function(t,e,n){return Me.from(t.dom().caretPositionFromPoint(e,n)).bind(function(e){if(null===e.offsetNode)return Me.none();var n=t.dom().createRange();return n.setStart(e.offsetNode,e.offset),n.collapse(),Me.some(n)})}:document.caretRangeFromPoint?function(e,n,t){return Me.from(e.dom().caretRangeFromPoint(n,t))}:function(t,r,o){return on.fromPoint(t,r,o).bind(function(e){function n(){return function(e,n,t){return(0===Ce(n).length?Ma:Pa)(e,n,t)}(t,e,r)}return 0===Ce(e).length?n():Wa(t,e,r,o).orThunk(n)})},_l=tinymce.util.Tools.resolve("tinymce.util.VK"),Ll=function(r,e,n,o,t){return n.fold(Me.none,Me.none,function(e,n){return Ct(n).map(function(e){return el(0,e)})},function(t){return lt.table(t,e).bind(function(e){var n=Er.noMenu(t);return r.undoManager.transact(function(){o.insertRowsAfter(e,n)}),nl(0,e)})})},jl=["table","li","dl"],zl={handle:function(n,t,r,o){if(n.keyCode===_l.TAB){var i=gc(t),u=function(e){var n=en(e);return In(e,i)||l(jl,n)},e=t.selection.getRng();if(e.collapsed){var c=on.fromDom(e.startContainer);lt.cell(c,u).each(function(e){n.preventDefault(),(n.shiftKey?Za:Qa)(t,u,e,r,o).each(function(e){t.selection.setRng(e)})})}}}},Hl={create:B("selection","kill")},Fl=function(e,n,t,r){return{start:D(El.on(e,n)),finish:D(El.on(t,r))}},Ul={convertToRange:function(e,n){var t=Pl(e,n);return Dl.create(on.fromDom(t.startContainer),t.startOffset,on.fromDom(t.endContainer),t.endOffset)},makeSitus:Fl},ql=function(t,e,r,n,o){return In(r,n)?Me.none():dr(r,n,e).bind(function(e){var n=e.boxes().getOr([]);return 0<n.length?(o(t,n,e.start(),e.finish()),Me.some(Hl.create(Me.some(Ul.makeSitus(r,0,r,wt(r))),!0))):Me.none()})},Vl={sync:function(t,r,e,n,o,i,u){return In(e,o)&&n===i?Me.none():et(e,"td,th",r).bind(function(n){return et(o,"td,th",r).bind(function(e){return ql(t,r,n,e,u)})})},detect:ql,update:function(e,n,t,r,o){return gr(r,e,n,o.firstSelectedSelector(),o.lastSelectedSelector()).map(function(e){return o.clearBeforeUpdate(t),o.selectRange(t,e.boxes(),e.start(),e.finish()),e.boxes()})}},Gl=B("item","mode"),Yl=function(e,n,t,r){return void 0===r&&(r=Kl),t.sibling(e,n).map(function(e){return Gl(e,r)})},Kl=function(e,n,t,r){void 0===r&&(r=Kl);var o=e.property().children(n);return t.first(o).map(function(e){return Gl(e,r)})},Xl=[{current:tl,next:Yl,fallback:Me.none()},{current:Yl,next:Kl,fallback:Me.some(tl)},{current:Kl,next:Kl,fallback:Me.some(Yl)}],$l=function(n,t,r,o,e){return void 0===e&&(e=Xl),y(e,function(e){return e.current===r}).bind(function(e){return e.current(n,t,o,e.next).orThunk(function(){return e.fallback.bind(function(e){return $l(n,t,e,o)})})})},Jl=function(){return{sibling:function(e,n){return e.query().prevSibling(n)},first:function(e){return 0<e.length?Me.some(e[e.length-1]):Me.none()}}},Ql=function(){return{sibling:function(e,n){return e.query().nextSibling(n)},first:function(e){return 0<e.length?Me.some(e[0]):Me.none()}}},Zl=function(n,e,t,r,o,i){return $l(n,e,r,o).bind(function(e){return i(e.item())?Me.none():t(e.item())?Me.some(e.item()):Zl(n,e.item(),t,e.mode(),o,i)})},ef=function(e,n,t,r){return Zl(e,n,t,Yl,Jl(),r)},nf=function(e,n,t,r){return Zl(e,n,t,Yl,Ql(),r)},tf=$t(),rf=B("element","offset"),of=(B("element","deltaOffset"),B("element","start","finish"),B("begin","end"),B("element","text"),Sr([{none:["message"]},{success:[]},{failedUp:["cell"]},{failedDown:["cell"]}])),uf=fn(fn({},of),{verify:function(t,n,e,r,o,i,u){return et(r,"td,th",u).bind(function(e){return et(n,"td,th",u).map(function(n){return In(e,n)?In(r,e)&&wt(e)===o?i(n):of.none("in same cell"):fr.sharedOne(ul,[e,n]).fold(function(){return function(e,n,t){var r=e.getRect(n),o=e.getRect(t);return o.right>r.left&&o.left<r.right}(t,n,e)?of.success():i(n)},function(e){return i(n)})})}).getOr(of.none("default"))},cata:function(e,n,t,r,o){return e.fold(n,t,r,o)}}),cf=(B("ancestor","descendants","element","index"),B("parent","children","element","index")),af=function(e,n){return C(e,b(In,n))},lf=function(e,n,t){return n(e,t).bind(function(e){return tn(e)&&0===ht(e).trim().length?lf(e,n,t):Me.some(e)})},ff=function(e,n,t,r){return(cl(n)?function(e,n,t){return t.traverse(n).orThunk(function(){return lf(n,t.gather,e)}).map(t.relative)}(e,n,r):al(e,n,t,r)).map(function(e){return{start:D(e),finish:D(e)}})},sf=function(e){return uf.cata(e,function(e){return Me.none()},function(){return Me.none()},function(e){return Me.some(rf(e,0))},function(e){return Me.some(rf(e,wt(e)))})},df=Xe(["left","top","right","bottom"],[]),mf={nu:df,moveUp:function(e,n){return df({left:e.left(),top:e.top()-n,right:e.right(),bottom:e.bottom()-n})},moveDown:function(e,n){return df({left:e.left(),top:e.top()+n,right:e.right(),bottom:e.bottom()+n})},moveBottomTo:function(e,n){var t=e.bottom()-e.top();return df({left:e.left(),top:n-t,right:e.right(),bottom:n})},moveTopTo:function(e,n){var t=e.bottom()-e.top();return df({left:e.left(),top:n,right:e.right(),bottom:n+t})},getTop:function(e){return e.top()},getBottom:function(e){return e.bottom()},translate:function(e,n,t){return df({left:e.left()+n,top:e.top()+t,right:e.right()+n,bottom:e.bottom()+t})},toString:function(e){return"("+e.left()+", "+e.top()+") -> ("+e.right()+", "+e.bottom()+")"}},gf=function(e,n,t){return nn(n)?fl(e,n).map(ll):tn(n)?function(e,n,t){return 0<=t&&t<wt(n)?e.getRangedRect(n,t,n,t+1):0<t?e.getRangedRect(n,t-1,n,t):Me.none()}(e,n,t).map(ll):Me.none()},pf=function(e,n){return nn(n)?fl(e,n).map(ll):tn(n)?e.getRangedRect(n,0,n,wt(n)).map(ll):Me.none()},hf=Sr([{none:[]},{retry:["caret"]}]),vf={point:mf.getTop,adjuster:function(e,n,t,r,o){var i=mf.moveUp(o,5);return Math.abs(t.top()-r.top())<1?hf.retry(i):t.bottom()<o.top()?hf.retry(i):t.bottom()===o.top()?hf.retry(mf.moveUp(o,1)):sl(e,n,o)?hf.retry(mf.translate(i,5,0)):hf.none()},move:mf.moveUp,gather:ol},bf={point:mf.getBottom,adjuster:function(e,n,t,r,o){var i=mf.moveDown(o,5);return Math.abs(t.bottom()-r.bottom())<1?hf.retry(i):t.top()>o.bottom()?hf.retry(i):t.top()===o.bottom()?hf.retry(mf.moveDown(o,1)):sl(e,n,o)?hf.retry(mf.translate(i,5,0)):hf.none()},move:mf.moveDown,gather:il},wf=function(t,r,o,i,u){return 0===u?Me.some(i):function(e,n,t){return e.elementFromPoint(n,t).filter(function(e){return"table"===en(e)}).isSome()}(t,i.left(),r.point(i))?function(e,n,t,r,o){return wf(e,n,t,n.move(r,5),o)}(t,r,o,i,u-1):t.situsFromPoint(i.left(),r.point(i)).bind(function(e){return e.start().fold(Me.none,function(n){return pf(t,n).bind(function(e){return r.adjuster(t,n,e,o,i).fold(Me.none,function(e){return wf(t,r,o,e,u-1)})}).orThunk(function(){return Me.some(i)})},Me.none)})},yf={tryUp:b(dl,vf),tryDown:b(dl,bf),ieTryUp:function(e,n){return e.situsFromPoint(n.left(),n.top()-5)},ieTryDown:function(e,n){return e.situsFromPoint(n.left(),n.bottom()+5)},getJumpSize:D(5)},Cf=me(),Sf=function(r,o,i,u,c,a){return 0===a?Me.none():Tf(r,o,i,u,c).bind(function(e){var n=r.fromSitus(e),t=uf.verify(r,i,u,n.finish(),n.foffset(),c.failure,o);return uf.cata(t,function(){return Me.none()},function(){return Me.some(e)},function(e){return In(i,e)&&0===u?xf(r,i,u,mf.moveUp,c):Sf(r,o,e,0,c,a-1)},function(e){return In(i,e)&&u===wt(e)?xf(r,i,u,mf.moveDown,c):Sf(r,o,e,wt(e),c,a-1)})})},xf=function(n,e,t,r,o){return gf(n,e,t).bind(function(e){return Rf(n,o,r(e,yf.getJumpSize()))})},Rf=function(e,n,t){return Cf.browser.isChrome()||Cf.browser.isSafari()||Cf.browser.isFirefox()||Cf.browser.isEdge()?n.otherRetry(e,t):Cf.browser.isIE()?n.ieRetry(e,t):Me.none()},Tf=function(n,e,t,r,o){return gf(n,t,r).bind(function(e){return Rf(n,o,e)})},Of=function(n,t,r){return function(o,i,u){return o.getSelection().bind(function(r){return ff(i,r.finish(),r.foffset(),u).fold(function(){return Me.some(rf(r.finish(),r.foffset()))},function(e){var n=o.fromSitus(e),t=uf.verify(o,r.finish(),r.foffset(),n.finish(),n.foffset(),u.failure,i);return sf(t)})})}(n,t,r).bind(function(e){return Sf(n,t,e.element(),e.offset(),r,20).map(n.fromSitus)})},Df=me(),Af=function(e,n,t,r,o,i){return Df.browser.isIE()?Me.none():i(r,n).orThunk(function(){return gl(e,n,t,r,o).map(function(e){var n=e.range();return Hl.create(Me.some(Ul.makeSitus(n.start(),n.soffset(),n.finish(),n.foffset())),!0)})})},Ef=function(e,n,t,r,o,i,u){return gl(e,t,r,o,i).bind(function(e){return Vl.detect(n,t,e.start(),e.finish(),u)})},Nf=function(e,r){return et(e,"tr",r).bind(function(t){return et(t,"table",r).bind(function(e){var n=Be(e,"tr");return In(t,n[0])?function(e,n,t){return ef(tf,e,n,t)}(e,function(e){return St(e).isSome()},r).map(function(e){var n=wt(e);return Hl.create(Me.some(Ul.makeSitus(e,n,e,n)),!0)}):Me.none()})})},kf=function(e,r){return et(e,"tr",r).bind(function(t){return et(t,"table",r).bind(function(e){var n=Be(e,"tr");return In(t,n[n.length-1])?function(e,n,t){return nf(tf,e,n,t)}(e,function(e){return Ct(e).isSome()},r).map(function(e){return Hl.create(Me.some(Ul.makeSitus(e,0,e,0)),!0)}):Me.none()})})};function If(n){return function(e){return e===n}}function Bf(c){return{elementFromPoint:function(e,n){return on.fromPoint(on.fromDom(c.document),e,n)},getRect:function(e){return e.dom().getBoundingClientRect()},getRangedRect:function(e,n,t,r){var o=kl.exact(e,n,t,r);return $a(c,o).map(jf)},getSelection:function(){return Xa(c).map(function(e){return Ul.convertToRange(c,e)})},fromSitus:function(e){var n=kl.relative(e.start(),e.finish());return Ul.convertToRange(c,n)},situsFromPoint:function(e,n){return Ja(c,e,n).map(function(e){return Fl(e.start(),e.soffset(),e.finish(),e.foffset())})},clearSelection:function(){!function(e){e.getSelection().removeAllRanges()}(c)},collapseSelection:function(u){void 0===u&&(u=!1),Xa(c).each(function(e){return e.fold(function(e){return e.collapse(u)},function(e,n){var t=u?e:n;Va(c,t,t)},function(e,n,t,r){var o=u?e:t,i=u?n:r;qa(c,o,i,o,i)})})},setSelection:function(e){qa(c,e.start(),e.soffset(),e.finish(),e.foffset())},setRelativeSelection:function(e,n){Va(c,e,n)},selectContents:function(e){Ka(c,e)},getInnerHeight:function(){return c.innerHeight},getScrollY:function(){return function(e){var n=e!==undefined?e.dom():f.document,t=n.body.scrollLeft||n.documentElement.scrollLeft,r=n.body.scrollTop||n.documentElement.scrollTop;return lo(t,r)}(on.fromDom(c.document)).top()},scrollBy:function(e,n){!function(e,n,t){(t!==undefined?t.dom():f.document).defaultView.scrollBy(e,n)}(e,n,on.fromDom(c.document))}}}function Pf(n,e){p(e,function(e){!function(e,n){Co(e)?e.dom().classList.remove(n):xo(e,n);To(e)}(n,e)})}var Mf={down:{traverse:ye,gather:il,relative:El.before,otherRetry:yf.tryDown,ieRetry:yf.ieTryDown,failure:uf.failedDown},up:{traverse:we,gather:ol,relative:El.before,otherRetry:yf.tryUp,ieRetry:yf.ieTryUp,failure:uf.failedUp}},Wf=If(38),_f=If(40),Lf={ltr:{isBackward:If(37),isForward:If(39)},rtl:{isBackward:If(39),isForward:If(37)},isUp:Wf,isDown:_f,isNavigation:function(e){return 37<=e&&e<=40}},jf=function(e){return{left:e.left(),top:e.top(),right:e.right(),bottom:e.bottom(),width:e.width(),height:e.height()}},zf=(me().browser.isSafari(),B("rows","cols")),Hf={mouse:function(e,n,t,r){var o=function c(o,i,n,u){function t(){r=Me.none()}var r=Me.none();return{mousedown:function(e){u.clear(i),r=pl(e.target(),n)},mouseover:function(e){r.each(function(r){u.clearBeforeUpdate(i),pl(e.target(),n).each(function(t){dr(r,t,n).each(function(e){var n=e.boxes().getOr([]);(1<n.length||1===n.length&&!In(r,t))&&(u.selectRange(i,n,e.start(),e.finish()),o.selectContents(t))})})})},mouseup:function(e){r.each(t)}}}(Bf(e),n,t,r);return{mousedown:o.mousedown,mouseover:o.mouseover,mouseup:o.mouseup}},keyboard:function(e,l,f,s){function d(){return s.clear(l),Me.none()}var m=Bf(e);return{keydown:function(e,n,t,r,o,i){var u=e.raw(),c=u.which,a=!0===u.shiftKey;return mr(l,s.selectedSelector()).fold(function(){return Lf.isDown(c)&&a?b(Ef,m,l,f,Mf.down,r,n,s.selectRange):Lf.isUp(c)&&a?b(Ef,m,l,f,Mf.up,r,n,s.selectRange):Lf.isDown(c)?b(Af,m,f,Mf.down,r,n,kf):Lf.isUp(c)?b(Af,m,f,Mf.up,r,n,Nf):Me.none},function(n){function e(e){return function(){return bo(e,function(e){return Vl.update(e.rows(),e.cols(),l,n,s)}).fold(function(){return pr(l,s.firstSelectedSelector(),s.lastSelectedSelector()).map(function(e){var n=Lf.isDown(c)||i.isForward(c)?El.after:El.before;return m.setRelativeSelection(El.on(e.first(),0),n(e.table())),s.clear(l),Hl.create(Me.none(),!0)})},function(e){return Me.some(Hl.create(Me.none(),!0))})}}return Lf.isDown(c)&&a?e([zf(1,0)]):Lf.isUp(c)&&a?e([zf(-1,0)]):i.isBackward(c)&&a?e([zf(0,-1),zf(-1,0)]):i.isForward(c)&&a?e([zf(0,1),zf(1,0)]):Lf.isNavigation(c)&&!1==a?d:Me.none})()},keyup:function(t,r,o,i,u){return mr(l,s.selectedSelector()).fold(function(){var e=t.raw(),n=e.which;return!1==(!0===e.shiftKey)?Me.none():Lf.isNavigation(n)?Vl.sync(l,f,r,o,i,u,s.selectRange):Me.none()},Me.none)}}},external:function(e,r,n,o){var i=Bf(e);return function(e,t){o.clearBeforeUpdate(r),dr(e,t,n).each(function(e){var n=e.boxes().getOr([]);o.selectRange(r,n,e.start(),e.finish()),i.selectContents(t),i.collapseSelection()})}}},Ff={byClass:function(o){function i(e){var n=Be(e,o.selectedSelector());p(n,t)}var u=function(n){return function(e){Ro(e,n)}}(o.selected()),t=function(n){return function(e){Pf(e,n)}}([o.selected(),o.lastSelected(),o.firstSelected()]);return{clearBeforeUpdate:i,clear:i,selectRange:function(e,n,t,r){i(e),p(n,u),Ro(t,o.firstSelected()),Ro(r,o.lastSelected())},selectedSelector:o.selectedSelector,firstSelectedSelector:o.firstSelectedSelector,lastSelectedSelector:o.lastSelectedSelector}},byAttr:function(o,i,n){function t(e){Y(e,o.selected()),Y(e,o.firstSelected()),Y(e,o.lastSelected())}function u(e){U(e,o.selected(),"1")}function c(e){r(e),n()}var r=function(e){var n=Be(e,o.selectedSelector());p(n,t)};return{clearBeforeUpdate:r,clear:c,selectRange:function(e,n,t,r){c(e),p(n,u),U(t,o.firstSelected(),"1"),U(r,o.lastSelected(),"1"),i(n,t,r)},selectedSelector:o.selectedSelector,firstSelectedSelector:o.firstSelectedSelector,lastSelectedSelector:o.lastSelectedSelector}}},Uf={getOtherCells:function(e,n,t){var r=ft(e),o=mt.generate(r);return Fo(o,n).map(function(e){var n=bu(o,t,!1);return{upOrLeftCells:function(e,t,n){var r=e.slice(0,t[t.length-1].row()+1),o=_o(r,n);return x(o,function(e){var n=e.cells().slice(0,t[t.length-1].column()+1);return g(n,function(e){return e.element()})})}(n,e,t),downOrRightCells:function(e,t,n){var r=e.slice(t[0].row()+t[0].rowspan()-1,e.length),o=_o(r,n);return x(o,function(e){var n=e.cells().slice(t[0].column()+t[0].colspan()-1,+e.cells().length);return g(n,function(e){return e.element()})})}(n,e,t)}})}},qf=function(e){return!1===Oo(on.fromDom(e.target),"ephox-snooker-resizer-bar")};function Vf(w,y,e){var C=Xe(["mousedown","mouseover","mouseup","keyup","keydown"],[]),S=Me.none(),a=Sc(w),x=Ff.byAttr(Cr,function(i,u,c){e.targets().each(function(o){lt.table(u).each(function(e){var n=on.fromDom(w.getDoc()),t=Wt.cellOperations(T,n,a),r=Uf.getOtherCells(e,o,t);xc(w,i,u,c,r)})})},function(){Rc(w)});w.on("init",function(e){var r=w.getWin(),o=gc(w),n=pc(w),t=Hf.mouse(r,o,n,x),c=Hf.keyboard(r,o,n,x),i=Hf.external(r,o,n,x);w.on("TableSelectorChange",function(e){i(e.start,e.finish)});function a(e,n){!function(e){return!0===e.raw().shiftKey}(e)||(n.kill()&&e.kill(),n.selection().each(function(e){var n=kl.relative(e.start(),e.finish()),t=Pl(r,n);w.selection.setRng(t)}))}function u(e){var n=v(e);if(n.raw().shiftKey&&Lf.isNavigation(n.raw().which)){var t=w.selection.getRng(),r=on.fromDom(t.startContainer),o=on.fromDom(t.endContainer);c.keyup(n,r,t.startOffset,o,t.endOffset).each(function(e){a(n,e)})}}function l(e){var n=v(e);y().each(function(e){e.hideBars()});var t=w.selection.getRng(),r=on.fromDom(w.selection.getStart()),o=on.fromDom(t.startContainer),i=on.fromDom(t.endContainer),u=bc.directionAt(r).isRtl()?Lf.rtl:Lf.ltr;c.keydown(n,o,t.startOffset,i,t.endOffset,u).each(function(e){a(n,e)}),y().each(function(e){e.showBars()})}function f(e){return e.hasOwnProperty("x")&&e.hasOwnProperty("y")}function s(e){return 0===e.button}function d(e){s(e)&&qf(e)&&t.mousedown(v(e))}function m(e){(function(e){return e.buttons===undefined||0!=(1&e.buttons)})(e)&&qf(e)&&t.mouseover(v(e))}function g(e){s(e)&&qf(e)&&t.mouseup(v(e))}var p,h,v=function(e){function n(){e.stopPropagation()}function t(){e.preventDefault()}var r=on.fromDom(e.target),o=O(t,n);return{target:D(r),x:D(f(e)?e.x:null),y:D(f(e)?e.y:null),stop:n,prevent:t,kill:o,raw:D(e)}},b=(p=R(on.fromDom(o)),h=R(0),{touchEnd:function(e){var n=on.fromDom(e.target);if("td"===en(n)||"th"===en(n)){var t=p.get(),r=h.get();In(t,n)&&e.timeStamp-r<300&&(e.preventDefault(),i(n,n))}p.set(n),h.set(e.timeStamp)}});w.on("mousedown",d),w.on("mouseover",m),w.on("mouseup",g),w.on("touchend",b.touchEnd),w.on("keyup",u),w.on("keydown",l),w.on("NodeChange",function(){var e=w.selection,n=on.fromDom(e.getStart()),t=on.fromDom(e.getEnd());fr.sharedOne(lt.table,[n,t]).fold(function(){x.clear(o)},T)}),S=Me.some(C({mousedown:d,mouseover:m,mouseup:g,keyup:u,keydown:l}))});return{clear:x.clear,destroy:function(){S.each(function(e){})}}}var Gf=function(n){return{get:function(){var e=gc(n);return hr(e,Cr.selectedSelector()).fold(function(){return n.selection.getStart()===undefined?Rr.none():Rr.single(n.selection)},function(e){return Rr.multiple(e)})}}},Yf=function(e,t){function n(){return oa(e).bind(function(n){return lt.table(n).map(function(e){return"caption"===en(n)?Er.notCell(n):Er.forMenu(t,e,n)})})}function r(){i.set(Z(n)()),p(u.get(),function(e){return e()})}function o(n,t){function r(){return i.get().fold(function(){n.setDisabled(!0)},function(e){n.setDisabled(t(e))})}return r(),u.set(u.get().concat([r])),function(){u.set(h(u.get(),function(e){return e!==r}))}}var i=R(Me.none()),u=R([]);return e.on("NodeChange TableSelectorChange",r),{onSetupTable:function(e){return o(e,function(e){return!1})},onSetupCellOrRow:function(e){return o(e,function(e){return"caption"===en(e.element())})},onSetupMergeable:function(e){return o(e,function(e){return e.mergable().isNone()})},onSetupUnmergeable:function(e){return o(e,function(e){return e.unmergable().isNone()})},resetTargets:r,targets:function(){return i.get()}}},Kf={addButtons:function(n,e){n.ui.registry.addMenuButton("table",{tooltip:"Table",icon:"table",fetch:function(e){return e("inserttable | cell row column | advtablesort | tableprops deletetable")}});function t(e){return function(){return n.execCommand(e)}}n.ui.registry.addButton("tableprops",{tooltip:"Table properties",onAction:t("mceTableProps"),icon:"table",onSetup:e.onSetupTable}),n.ui.registry.addButton("tabledelete",{tooltip:"Delete table",onAction:t("mceTableDelete"),icon:"table-delete-table",onSetup:e.onSetupTable}),n.ui.registry.addButton("tablecellprops",{tooltip:"Cell properties",onAction:t("mceTableCellProps"),icon:"table-cell-properties",onSetup:e.onSetupCellOrRow}),n.ui.registry.addButton("tablemergecells",{tooltip:"Merge cells",onAction:t("mceTableMergeCells"),icon:"table-merge-cells",onSetup:e.onSetupMergeable}),n.ui.registry.addButton("tablesplitcells",{tooltip:"Split cell",onAction:t("mceTableSplitCells"),icon:"table-split-cells",onSetup:e.onSetupUnmergeable}),n.ui.registry.addButton("tableinsertrowbefore",{tooltip:"Insert row before",onAction:t("mceTableInsertRowBefore"),icon:"table-insert-row-above",onSetup:e.onSetupCellOrRow}),n.ui.registry.addButton("tableinsertrowafter",{tooltip:"Insert row after",onAction:t("mceTableInsertRowAfter"),icon:"table-insert-row-after",onSetup:e.onSetupCellOrRow}),n.ui.registry.addButton("tabledeleterow",{tooltip:"Delete row",onAction:t("mceTableDeleteRow"),icon:"table-delete-row",onSetup:e.onSetupCellOrRow}),n.ui.registry.addButton("tablerowprops",{tooltip:"Row properties",onAction:t("mceTableRowProps"),icon:"table-row-properties",onSetup:e.onSetupCellOrRow}),n.ui.registry.addButton("tableinsertcolbefore",{tooltip:"Insert column before",onAction:t("mceTableInsertColBefore"),icon:"table-insert-column-before",onSetup:e.onSetupCellOrRow}),n.ui.registry.addButton("tableinsertcolafter",{tooltip:"Insert column after",onAction:t("mceTableInsertColAfter"),icon:"table-insert-column-after",onSetup:e.onSetupCellOrRow}),n.ui.registry.addButton("tabledeletecol",{tooltip:"Delete column",onAction:t("mceTableDeleteCol"),icon:"table-delete-column",onSetup:e.onSetupCellOrRow}),n.ui.registry.addButton("tablecutrow",{tooltip:"Cut row",onAction:t("mceTableCutRow"),icon:"temporary-placeholder",onSetup:e.onSetupCellOrRow}),n.ui.registry.addButton("tablecopyrow",{tooltip:"Copy row",onAction:t("mceTableCopyRow"),icon:"temporary-placeholder",onSetup:e.onSetupCellOrRow}),n.ui.registry.addButton("tablepasterowbefore",{tooltip:"Paste row before",onAction:t("mceTablePasteRowBefore"),icon:"temporary-placeholder",onSetup:e.onSetupCellOrRow}),n.ui.registry.addButton("tablepasterowafter",{tooltip:"Paste row after",onAction:t("mceTablePasteRowAfter"),icon:"temporary-placeholder",onSetup:e.onSetupCellOrRow}),n.ui.registry.addButton("tableinsertdialog",{tooltip:"Insert table",onAction:t("mceInsertTable"),icon:"table"})},addToolbars:function(n){var e=function(e){return e.getParam("table_toolbar","tableprops tabledelete | tableinsertrowbefore tableinsertrowafter tabledeleterow | tableinsertcolbefore tableinsertcolafter tabledeletecol")}(n);0<e.length&&n.ui.registry.addContextToolbar("table",{predicate:function(e){return n.dom.is(e,"table")&&n.getBody().contains(e)},items:e,scope:"node",position:"node"})}},Xf={addMenuItems:function(r,e){function n(e){return function(){return r.execCommand(e)}}function t(e){var n=e.numRows,t=e.numColumns;r.undoManager.transact(function(){Zc(r,t,n)}),r.addVisual()}var o={text:"Table properties",onSetup:e.onSetupTable,onAction:n("mceTableProps")},i={text:"Delete table",icon:"table-delete-table",onSetup:e.onSetupTable,onAction:n("mceTableDelete")},u=[{type:"menuitem",text:"Insert row before",icon:"table-insert-row-above",onAction:n("mceTableInsertRowBefore"),onSetup:e.onSetupCellOrRow},{type:"menuitem",text:"Insert row after",icon:"table-insert-row-after",onAction:n("mceTableInsertRowAfter"),onSetup:e.onSetupCellOrRow},{type:"menuitem",text:"Delete row",icon:"table-delete-row",onAction:n("mceTableDeleteRow"),onSetup:e.onSetupCellOrRow},{type:"menuitem",text:"Row properties",icon:"table-row-properties",onAction:n("mceTableRowProps"),onSetup:e.onSetupCellOrRow},{type:"separator"},{type:"menuitem",text:"Cut row",onAction:n("mceTableCutRow"),onSetup:e.onSetupCellOrRow},{type:"menuitem",text:"Copy row",onAction:n("mceTableCopyRow"),onSetup:e.onSetupCellOrRow},{type:"menuitem",text:"Paste row before",onAction:n("mceTablePasteRowBefore"),onSetup:e.onSetupCellOrRow},{type:"menuitem",text:"Paste row after",onAction:n("mceTablePasteRowAfter"),onSetup:e.onSetupCellOrRow}],c={type:"nestedmenuitem",text:"Row",getSubmenuItems:function(){return u}},a=[{type:"menuitem",text:"Insert column before",icon:"table-insert-column-before",onAction:n("mceTableInsertColBefore"),onSetup:e.onSetupCellOrRow},{type:"menuitem",text:"Insert column after",icon:"table-insert-column-after",onAction:n("mceTableInsertColAfter"),onSetup:e.onSetupCellOrRow},{type:"menuitem",text:"Delete column",icon:"table-delete-column",onAction:n("mceTableDeleteCol"),onSetup:e.onSetupCellOrRow}],l={type:"nestedmenuitem",text:"Column",getSubmenuItems:function(){return a}},f=[{type:"menuitem",text:"Cell properties",icon:"table-cell-properties",onAction:n("mceTableCellProps"),onSetup:e.onSetupCellOrRow},{type:"menuitem",text:"Merge cells",icon:"table-merge-cells",onAction:n("mceTableMergeCells"),onSetup:e.onSetupMergeable},{type:"menuitem",text:"Split cell",icon:"table-split-cells",onAction:n("mceTableSplitCells"),onSetup:e.onSetupUnmergeable}],s={type:"nestedmenuitem",text:"Cell",getSubmenuItems:function(){return f}};!1===function(e){return e.getParam("table_grid",!0,"boolean")}(r)?r.ui.registry.addMenuItem("inserttable",{text:"Table",icon:"table",onAction:n("mceInsertTable")}):r.ui.registry.addNestedMenuItem("inserttable",{text:"Table",icon:"table",getSubmenuItems:function(){return[{type:"fancymenuitem",fancytype:"inserttable",onAction:t}]}}),r.ui.registry.addMenuItem("inserttabledialog",{text:"Insert table",icon:"table",onAction:n("mceInsertTable")}),r.ui.registry.addMenuItem("tableprops",o),r.ui.registry.addMenuItem("deletetable",i),r.ui.registry.addNestedMenuItem("row",c),r.ui.registry.addNestedMenuItem("column",l),r.ui.registry.addNestedMenuItem("cell",s),r.ui.registry.addContextMenu("table",{update:function(){return e.resetTargets(),e.targets().fold(function(){return""},function(e){return"caption"===en(e.element())?"tableprops deletetable":"cell row column | advtablesort | tableprops deletetable"})}})}},$f=function(t,n,e,r){return{insertTable:function(e,n){return Zc(t,e,n)},setClipboardRows:function(e){return function(e,n){var t=g(e,on.fromDom);n.set(Me.from(t))}(e,n)},getClipboardRows:function(){return function(e){return e.get().fold(function(){},function(e){return g(e,function(e){return e.dom()})})}(n)},resizeHandler:e,selectionTargets:r}};function Jf(n){var e=Gf(n),t=Yf(n,e),r=Sl(n),o=Vf(n,r.lazyResize,t),i=Tc(n,r.lazyWire),u=R(Me.none());return ua.registerCommands(n,i,o,e,u),Nr.registerEvents(n,e,i,o),Xf.addMenuItems(n,t),Kf.addButtons(n,t),Kf.addToolbars(n),n.on("PreInit",function(){n.serializer.addTempAttr(Cr.firstSelected()),n.serializer.addTempAttr(Cr.lastSelected())}),Cc(n)&&n.on("keydown",function(e){zl.handle(e,n,i,r.lazyWire)}),n.on("remove",function(){r.destroy(),o.destroy()}),$f(n,u,r,t)}!function Zf(){We.add("table",Jf)}()}(window);
\ No newline at end of file
diff --git a/admin/js/vendors/tinymce/js/tinymce/plugins/template/plugin.min.js b/admin/js/vendors/tinymce/js/tinymce/plugins/template/plugin.min.js
new file mode 100644 (file)
index 0000000..be01bd1
--- /dev/null
@@ -0,0 +1,9 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ *
+ * Version: 5.1.5 (2019-12-19)
+ */
+!function(){"use strict";function e(){}function a(e){return function(){return e}}var t=tinymce.util.Tools.resolve("tinymce.PluginManager");function c(e,t){if((e=""+e).length<t)for(var n=0;n<t-e.length;n++)e="0"+e;return e}function i(n,e){return p.each(e,function(e,t){"function"==typeof e&&(e=e(t)),n=n.replace(new RegExp("\\{\\$"+t+"\\}","g"),e)}),n}function l(e,t){var r=e.dom,o=h(e);p.each(r.select("*",t),function(n){p.each(o,function(e,t){r.hasClass(n,t)&&"function"==typeof o[t]&&o[t](n)})})}function s(e,t){return new RegExp("\\b"+t+"\\b","g").test(e.className)}function n(){return w}var r,u=a(!1),f=a(!0),p=tinymce.util.Tools.resolve("tinymce.util.Tools"),o=tinymce.util.Tools.resolve("tinymce.util.XHR"),m=function(e){return e.getParam("template_cdate_classes","cdate")},d=function(e){return e.getParam("template_mdate_classes","mdate")},g=function(e){return e.getParam("template_selected_content_classes","selcontent")},y=function(e){return e.getParam("template_preview_replace_values")},h=function(e){return e.getParam("template_replace_values")},v=function(e){return e.templates},b=function(e){return e.getParam("template_cdate_format",e.translate("%Y-%m-%d"))},O=function(e){return e.getParam("template_mdate_format",e.translate("%Y-%m-%d"))},T=function(e,t,n){var r="Sun Mon Tue Wed Thu Fri Sat Sun".split(" "),o="Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sunday".split(" "),a="Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split(" "),u="January February March April May June July August September October November December".split(" ");return n=n||new Date,t=(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=t.replace("%D","%m/%d/%Y")).replace("%r","%I:%M:%S %p")).replace("%Y",""+n.getFullYear())).replace("%y",""+n.getYear())).replace("%m",c(n.getMonth()+1,2))).replace("%d",c(n.getDate(),2))).replace("%H",""+c(n.getHours(),2))).replace("%M",""+c(n.getMinutes(),2))).replace("%S",""+c(n.getSeconds(),2))).replace("%I",""+((n.getHours()+11)%12+1))).replace("%p",n.getHours()<12?"AM":"PM")).replace("%B",""+e.translate(u[n.getMonth()]))).replace("%b",""+e.translate(a[n.getMonth()]))).replace("%A",""+e.translate(o[n.getDay()]))).replace("%a",""+e.translate(r[n.getDay()]))).replace("%%","%")},M=function(t,n){return function(){var e=v(t);"function"!=typeof e?"string"==typeof e?o.send({url:e,success:function(e){n(JSON.parse(e))}}):n(e):e(n)}},S=i,_=l,x=function(t,e,n){var r,o,a=t.dom,u=t.selection.getContent();n=i(n,h(t)),r=a.create("div",null,n),(o=a.select(".mceTmpl",r))&&0<o.length&&(r=a.create("div",null)).appendChild(o[0].cloneNode(!0)),p.each(a.select("*",r),function(e){s(e,m(t).replace(/\s+/g,"|"))&&(e.innerHTML=T(t,b(t))),s(e,d(t).replace(/\s+/g,"|"))&&(e.innerHTML=T(t,O(t))),s(e,g(t).replace(/\s+/g,"|"))&&(e.innerHTML=u)}),l(t,r),t.execCommand("mceInsertContent",!1,r.innerHTML),t.addVisual()},P=function(e){e.addCommand("mceInsertTemplate",function t(r){for(var o=[],e=1;e<arguments.length;e++)o[e-1]=arguments[e];return function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];var n=o.concat(e);return r.apply(null,n)}}(x,e))},A=function(r){r.on("PreProcess",function(e){var t=r.dom,n=O(r);p.each(t.select("div",e.node),function(e){t.hasClass(e,"mceTmpl")&&(p.each(t.select("*",e),function(e){t.hasClass(e,r.getParam("template_mdate_classes","mdate").replace(/\s+/g,"|"))&&(e.innerHTML=T(r,n))}),_(r,e))})})},w=(r={fold:function(e,t){return e()},is:u,isSome:u,isNone:f,getOr:N,getOrThunk:C,getOrDie:function(e){throw new Error(e||"error: getOrDie called on none.")},getOrNull:a(null),getOrUndefined:a(undefined),or:N,orThunk:C,map:n,each:e,bind:n,exists:u,forall:f,filter:n,equals:D,equals_:D,toArray:function(){return[]},toString:a("none()")},Object.freeze&&Object.freeze(r),r);function D(e){return e.isNone()}function C(e){return e()}function N(e){return e}function H(e){return e.replace(/["'<>&]/g,function(e){return function(e,t){return B(e,t)?L.from(e[t]):L.none()}(E,e).getOr(e)})}function k(t){return function(e){R(t,e)}}var I,J=function(n){function e(){return o}function t(e){return e(n)}var r=a(n),o={fold:function(e,t){return t(n)},is:function(e){return n===e},isSome:f,isNone:u,getOr:r,getOrThunk:r,getOrDie:r,getOrNull:r,getOrUndefined:r,or:e,orThunk:e,map:function(e){return J(e(n))},each:function(e){e(n)},bind:t,exists:t,forall:t,filter:function(e){return e(n)?o:w},toArray:function(){return[n]},toString:function(){return"some("+n+")"},equals:function(e){return e.is(n)},equals_:function(e,t){return e.fold(u,function(e){return t(n,e)})}};return o},L={some:J,none:n,from:function(e){return null===e||e===undefined?w:J(e)}},Y=(I="function",function(e){return function(e){if(null===e)return"null";var t=typeof e;return"object"==t&&(Array.prototype.isPrototypeOf(e)||e.constructor&&"Array"===e.constructor.name)?"array":"object"==t&&(String.prototype.isPrototypeOf(e)||e.constructor&&"String"===e.constructor.name)?"string":t}(e)===I}),j=Array.prototype.slice,q=(Y(Array.from)&&Array.from,tinymce.util.Tools.resolve("tinymce.util.Promise")),F=Object.hasOwnProperty,B=function(e,t){return F.call(e,t)},E={'"':"&quot;","<":"&lt;",">":"&gt;","&":"&amp;","'":"&#039;"},R=function(i,t){function e(e){return function(e,t){for(var n=e.length,r=new Array(n),o=0;o<n;o++){var a=e[o];r[o]=t(a,o)}return r}(e,function(e){return{text:e.text,value:e.text}})}function a(e,t){return function(e,t){for(var n=0,r=e.length;n<r;n++){var o=e[n];if(t(o,n))return L.some(o)}return L.none()}(e,function(e){return e.text===t})}function l(e){return new q(function(t,n){e.value.url.fold(function(){return t(e.value.content.getOr(""))},function(e){return o.send({url:e,success:function(e){t(e)},error:function(e){n(e)}})})})}(function(){if(t&&0!==t.length)return L.from(p.map(t,function(e,t){function n(e){return e.url!==undefined}return{selected:0===t,text:e.title,value:{url:n(e)?L.from(e.url):L.none(),content:n(e)?L.none():L.from(e.content),description:e.description}}}));var e=i.translate("No templates defined.");return i.notificationManager.open({text:e,type:"info"}),L.none()})().each(function(n){function u(e,t){return{title:"Insert Template",size:"large",body:{type:"panel",items:e},initialData:t,buttons:[{type:"cancel",name:"cancel",text:"Cancel"},{type:"submit",name:"save",text:"Save",primary:!0}],onSubmit:function(n){return function(t){var e=t.getData();a(n,e.template).each(function(e){l(e).then(function(e){x(i,!1,e),t.close()})})}}(n),onChange:function(r,o){return function(n,e){if("template"===e.name){var t=n.getData().template;a(r,t).each(function(t){n.block("Loading..."),l(t).then(function(e){o(n,t,e),n.unblock()})})}}}(n,r)}}var c=e(n),r=function(e,t,n){var r=function(t,e){if(-1===e.indexOf("<html>")){var n="";p.each(t.contentCSS,function(e){n+='<link type="text/css" rel="stylesheet" href="'+t.documentBaseURI.toAbsolute(e)+'">'});var r=t.settings.body_class||"";-1!==r.indexOf("=")&&(r=(r=t.getParam("body_class","","hash"))[t.id]||"");var o=t.dom.encode,a=t.getBody().dir,u=a?' dir="'+o(a)+'"':"";e="<!DOCTYPE html><html><head>"+n+'</head><body class="'+o(r)+'"'+u+">"+e+"</body></html>"}return S(e,y(t))}(i,n),o=[{type:"selectbox",name:"template",label:"Templates",items:c},{type:"htmlpanel",html:'<p aria-live="polite">'+H(t.value.description)+"</p>"},{label:"Preview",type:"iframe",name:"preview",sandboxed:!1}],a={template:t.text,preview:r};e.unblock(),e.redial(u(o,a)),e.focus("template")},t=i.windowManager.open(u([],{template:"",preview:""}));t.block("Loading..."),l(n[0]).then(function(e){r(t,n[0],e)})})},z=function(e){e.ui.registry.addButton("template",{icon:"template",tooltip:"Insert template",onAction:M(e.settings,k(e))}),e.ui.registry.addMenuItem("template",{icon:"template",text:"Insert template...",onAction:M(e.settings,k(e))})};!function U(){t.add("template",function(e){z(e),P(e),A(e)})}()}();
\ No newline at end of file
diff --git a/admin/js/vendors/tinymce/js/tinymce/plugins/textcolor/plugin.min.js b/admin/js/vendors/tinymce/js/tinymce/plugins/textcolor/plugin.min.js
new file mode 100644 (file)
index 0000000..8739023
--- /dev/null
@@ -0,0 +1,9 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ *
+ * Version: 5.1.5 (2019-12-19)
+ */
+!function(o){"use strict";var i=tinymce.util.Tools.resolve("tinymce.PluginManager");!function n(){i.add("textcolor",function(){o.console.warn("Text color plugin is now built in to the core editor, please remove it from your editor configuration")})}()}(window);
\ No newline at end of file
diff --git a/admin/js/vendors/tinymce/js/tinymce/plugins/textpattern/plugin.min.js b/admin/js/vendors/tinymce/js/tinymce/plugins/textpattern/plugin.min.js
new file mode 100644 (file)
index 0000000..0a346c8
--- /dev/null
@@ -0,0 +1,9 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ *
+ * Version: 5.1.5 (2019-12-19)
+ */
+!function(f){"use strict";var r=function(t){function n(){return e}var e=t;return{get:n,set:function(t){e=t},clone:function(){return r(n())}}},t=tinymce.util.Tools.resolve("tinymce.PluginManager"),u=function(){return(u=Object.assign||function(t){for(var n,e=1,r=arguments.length;e<r;e++)for(var o in n=arguments[e])Object.prototype.hasOwnProperty.call(n,o)&&(t[o]=n[o]);return t}).apply(this,arguments)};function n(){}function a(t){return function(){return t}}function o(t){return t}function e(){return l}var i,c=a(!1),s=a(!0),l=(i={fold:function(t,n){return t()},is:c,isSome:c,isNone:s,getOr:g,getOrThunk:m,getOrDie:function(t){throw new Error(t||"error: getOrDie called on none.")},getOrNull:a(null),getOrUndefined:a(undefined),or:g,orThunk:m,map:e,each:n,bind:e,exists:c,forall:s,filter:e,equals:d,equals_:d,toArray:function(){return[]},toString:a("none()")},Object.freeze&&Object.freeze(i),i);function d(t){return t.isNone()}function m(t){return t()}function g(t){return t}function p(n){return function(t){return function(t){if(null===t)return"null";var n=typeof t;return"object"==n&&(Array.prototype.isPrototypeOf(t)||t.constructor&&"Array"===t.constructor.name)?"array":"object"==n&&(String.prototype.isPrototypeOf(t)||t.constructor&&"String"===t.constructor.name)?"string":n}(t)===n}}function h(t,n){return-1<function(t,n){return lt.call(t,n)}(t,n)}function v(t,n){for(var e=t.length,r=new Array(e),o=0;o<e;o++){var a=t[o];r[o]=n(a,o)}return r}function y(t,n){for(var e=0,r=t.length;e<r;e++){n(t[e],e)}}function b(t,n){for(var e=[],r=0,o=t.length;r<o;r++){var a=t[r];n(a,r)&&e.push(a)}return e}function k(t,n,e){return function(t,n){for(var e=t.length-1;0<=e;e--){n(t[e],e)}}(t,function(t){e=n(e,t)}),e}function O(t,n){for(var e=0,r=t.length;e<r;++e){if(!0!==n(t[e],e))return!1}return!0}function w(t){var n=[],e=[];return y(t,function(t){t.fold(function(t){n.push(t)},function(t){e.push(t)})}),{errors:n,values:e}}function x(t){return"inline-command"===t.type||"inline-format"===t.type}function C(t){return"block-command"===t.type||"block-format"===t.type}function E(t){return function(t,n){var e=st.call(t,0);return e.sort(n),e}(t,function(t,n){return t.start.length===n.start.length?0:t.start.length>n.start.length?-1:1})}function T(o){function a(t){return yt.error({message:t,pattern:o})}function t(t,n,e){if(o.format===undefined)return o.cmd!==undefined?it(o.cmd)?yt.value(e(o.cmd,o.value)):a(t+" pattern has non-string `cmd` parameter"):a(t+" pattern is missing both `format` and `cmd` parameters");var r=void 0;if(ft(o.format)){if(!O(o.format,it))return a(t+" pattern has non-string items in the `format` array");r=o.format}else{if(!it(o.format))return a(t+" pattern has non-string `format` parameter");r=[o.format]}return yt.value(n(r))}if(!ut(o))return a("Raw pattern is not an object");if(!it(o.start))return a("Raw pattern is missing `start` parameter");if(o.end===undefined)return o.replacement!==undefined?it(o.replacement)?0===o.start.length?a("Replacement pattern has empty `start` parameter"):yt.value({type:"inline-command",start:"",end:o.start,cmd:"mceInsertContent",value:o.replacement}):a("Replacement pattern has non-string `replacement` parameter"):0===o.start.length?a("Block pattern has empty `start` parameter"):t("Block",function(t){return{type:"block-format",start:o.start,format:t[0]}},function(t,n){return{type:"block-command",start:o.start,cmd:t,value:n}});if(!it(o.end))return a("Inline pattern has non-string `end` parameter");if(0===o.start.length&&0===o.end.length)return a("Inline pattern has empty `start` and `end` parameters");var e=o.start,r=o.end;return 0===r.length&&(r=e,e=""),t("Inline",function(t){return{type:"inline-format",start:e,end:r,format:t}},function(t,n){return{type:"inline-command",start:e,end:r,cmd:t,value:n}})}function R(t){return"block-command"===t.type?{start:t.start,cmd:t.cmd,value:t.value}:"block-format"===t.type?{start:t.start,format:t.format}:"inline-command"===t.type?"mceInsertContent"===t.cmd&&""===t.start?{start:t.end,replacement:t.value}:{start:t.start,end:t.end,cmd:t.cmd,value:t.value}:"inline-format"===t.type?{start:t.start,end:t.end,format:1===t.format.length?t.format[0]:t.format}:void 0}function N(t){return{inlinePatterns:b(t,x),blockPatterns:E(b(t,C))}}function P(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];var e=kt.console;e&&(e.error?e.error.apply(e,t):e.log.apply(e,t))}function S(t){var n=function(t,n){return gt(t,n)?at.from(t[n]):at.none()}(t,"textpattern_patterns").getOr(Ot);if(!ft(n))return P("The setting textpattern_patterns should be an array"),{inlinePatterns:[],blockPatterns:[]};var e=w(v(n,T));return y(e.errors,function(t){return P(t.message,t.pattern)}),N(e.values)}function M(t){var n=t.getParam("forced_root_block","p");return!1===n?"":!0===n?"p":n}function A(t){return t.nodeType===f.Node.TEXT_NODE}function j(t,n,e,r){void 0===r&&(r=!0);var o=n.startContainer.parentNode,a=n.endContainer.parentNode;n.deleteContents(),r&&!e(n.startContainer)&&(A(n.startContainer)&&0===n.startContainer.data.length&&t.remove(n.startContainer),A(n.endContainer)&&0===n.endContainer.data.length&&t.remove(n.endContainer),Tt(t,o,e),o!==a&&Tt(t,a,e))}function B(t,n){var e=n.get(t);return ft(e)&&function(t){return 0===t.length?at.none():at.some(t[0])}(e).exists(function(t){return gt(t,"block")})}function D(t){return 0===t.start.length}function I(t,n){var e=at.from(t.dom.getParent(n.startContainer,t.dom.isBlock));return""===M(t)?e.orThunk(function(){return at.some(t.getBody())}):e}function _(t,n){return{element:t,offset:n}}function U(t,n){function e(t){for(var n=r[t]();n&&n.nodeType!==f.Node.TEXT_NODE;)n=r[t]();return n&&n.nodeType===f.Node.TEXT_NODE?at.some(n):at.none()}var r=new Et(t,n);return{next:function(){return e("next")},prev:function(){return e("prev")},prev2:function(){return e("prev2")}}}function q(t,n,e){return A(t)&&0<=n?at.some(_(t,n)):U(t,e).prev().map(function(t){return _(t,t.data.length)})}function L(t,n,e){if(A(n)&&(e<0||e>n.data.length))return[];for(var r=[e],o=n;o!==t&&o.parentNode;){for(var a=o.parentNode,i=0;i<a.childNodes.length;i++)if(a.childNodes[i]===o){r.push(i);break}o=a}return o===t?r.reverse():[]}function V(t,n,e,r,o){return{start:L(t,n,e),end:L(t,r,o)}}function W(t,n){var e=n.slice(),r=e.pop();return function(t,n,e){return y(t,function(t){e=n(e,t)}),e}(e,function(t,n){return t.bind(function(t){return at.from(t.childNodes[n])})},at.some(t)).bind(function(t){return A(t)&&0<=r&&t.data.length,at.some({node:t,offset:r})})}function X(n,e){return W(n,e.start).bind(function(t){var o=t.node,a=t.offset;return W(n,e.end).map(function(t){var n=t.node,e=t.offset,r=f.document.createRange();return r.setStart(o,a),r.setEnd(n,e),r})})}function z(r,o,t){U(o,o).next().each(function(e){Nt(e,t.start.length,o).each(function(t){var n=r.createRng();n.setStart(e,0),n.setEnd(t.element,t.offset),j(r,n,function(t){return t===o})})})}function F(t,n){var e=n.replace("\xa0"," ");return function(t,n){for(var e=0,r=t.length;e<r;e++){var o=t[e];if(n(o,e))return at.some(o)}return at.none()}(t,function(t){return 0===n.indexOf(t.start)||0===e.indexOf(t.start)})}function G(n,t){if(0!==t.length){var e=n.selection.getBookmark();y(t,function(t){return function(n,t){var e=n.dom,r=t.pattern,o=X(e.getRoot(),t.range).getOrDie("Unable to resolve path range");return I(n,o).each(function(t){"block-format"===r.type?B(r.format,n.formatter)&&n.undoManager.transact(function(){z(n.dom,t,r),n.formatter.apply(r.format)}):"block-command"===r.type&&n.undoManager.transact(function(){z(n.dom,t,r),n.execCommand(r.cmd,!1,r.value)})}),!0}(n,t)}),n.selection.moveToBookmark(e)}}function H(t,n){return t.create("span",{"data-mce-type":"bookmark",id:n})}function J(t,n){var e=t.createRng();return e.setStartAfter(n.start),e.setEndBefore(n.end),e}function K(t,n,e){var r=X(t.getRoot(),e).getOrDie("Unable to resolve path range"),o=r.startContainer,a=r.endContainer,i=0===r.endOffset?a:a.splitText(r.endOffset),u=0===r.startOffset?o:o.splitText(r.startOffset);return{prefix:n,end:i.parentNode.insertBefore(H(t,n+"-end"),i),start:u.parentNode.insertBefore(H(t,n+"-start"),u)}}function Q(t,n,e){Tt(t,t.get(n.prefix+"-end"),e),Tt(t,t.get(n.prefix+"-start"),e)}function Y(t,e,n,r,o,a){if(void 0===a&&(a=!1),0!==e.start.length||a)return q(n,r,o).bind(function(n){return function(t,n,e,r,o){var a=new Et(n,o);return Mt(t,n,at.some(e),r,a.prev,at.none())}(t,n.element,n.offset,function(f,c,s){return function(e,r,t,n){if(r===c)return e.abort();var o=t.substring(0,n.getOr(t.length)),a=o.lastIndexOf(s.charAt(s.length-1)),i=o.lastIndexOf(s);if(-1===i)return-1!==a?Rt(r,a+1-s.length,c).fold(function(){return e.kontinue()},function(t){var n=f.createRng();return n.setStart(t.element,t.offset),n.setEnd(r,a+1),n.toString()===s?e.finish(n):e.kontinue()}):e.kontinue();var u=f.createRng();return u.setStart(r,i),u.setEnd(r,i+s.length),e.finish(u)}}(t,o,e.start),o).fold(at.none,at.none,at.some).bind(function(t){if(a){if(t.endContainer===n.element&&t.endOffset===n.offset)return at.none();if(0===n.offset&&t.endContainer.textContent.length===t.endOffset)return at.none()}return at.some(t)})});var i=t.createRng();return i.setStart(n,r),i.setEnd(n,r),at.some(i)}function Z(a,i,u){var f=a.dom,c=f.getRoot(),s=u.pattern,l=u.position.element,d=u.position.offset;return Rt(l,d-u.pattern.end.length,i).bind(function(t){var e=V(c,t.element,t.offset,l,d);if(D(s))return at.some({matches:[{pattern:s,startRng:e,endRng:e}],position:t});var n=jt(a,u.remainingPatterns,t.element,t.offset,i),r=n.getOr({matches:[],position:t}),o=r.position;return Y(f,s,o.element,o.offset,i,n.isNone()).map(function(t){var n=function(t,n){return V(t,n.startContainer,n.startOffset,n.endContainer,n.endOffset)}(c,t);return{matches:r.matches.concat([{pattern:s,startRng:n,endRng:e}]),position:_(t.startContainer,t.startOffset)}})})}function $(n,t,e){n.selection.setRng(e),"inline-format"===t.type?y(t.format,function(t){n.formatter.apply(t)}):n.execCommand(t.cmd,!1,t.value)}function tt(o,t){var a=function(t){var n=(new Date).getTime();return t+"_"+Math.floor(1e9*Math.random())+ ++At+String(n)}("mce_textpattern"),i=k(t,function(t,n){var e=K(o,a+"_end"+t.length,n.endRng);return t.concat([u(u({},n),{endMarker:e})])},[]);return k(i,function(t,n){var e=i.length-t.length-1,r=D(n.pattern)?n.endMarker:K(o,a+"_start"+e,n.startRng);return t.concat([u(u({},n),{startMarker:r})])},[])}function nt(e,r,o){var a=e.selection.getRng();return!1===a.collapsed?[]:I(e,a).bind(function(t){var n=a.startOffset-(o?1:0);return jt(e,r,a.startContainer,n,t)}).fold(function(){return[]},function(t){return t.matches})}function et(r,t){if(0!==t.length){var o=r.dom,n=r.selection.getBookmark(),e=tt(o,t);y(e,function(t){function n(t){return t===e}var e=o.getParent(t.startMarker.start,o.isBlock);D(t.pattern)?function(t,n,e,r){var o=J(t.dom,e);j(t.dom,o,r),$(t,n,o)}(r,t.pattern,t.endMarker,n):function(t,n,e,r,o){var a=t.dom,i=J(a,r),u=J(a,e);j(a,u,o),j(a,i,o);var f={prefix:e.prefix,start:e.end,end:r.start},c=J(a,f);$(t,n,c)}(r,t.pattern,t.startMarker,t.endMarker,n),Q(o,t.endMarker,n),Q(o,t.startMarker,n)}),r.selection.moveToBookmark(n)}}function rt(t,n,e){for(var r=0;r<t.length;r++)if(e(t[r],n))return!0}var ot=function(e){function t(){return o}function n(t){return t(e)}var r=a(e),o={fold:function(t,n){return n(e)},is:function(t){return e===t},isSome:s,isNone:c,getOr:r,getOrThunk:r,getOrDie:r,getOrNull:r,getOrUndefined:r,or:t,orThunk:t,map:function(t){return ot(t(e))},each:function(t){t(e)},bind:n,exists:n,forall:n,filter:function(t){return t(e)?o:l},toArray:function(){return[e]},toString:function(){return"some("+e+")"},equals:function(t){return t.is(e)},equals_:function(t,n){return t.fold(c,function(t){return n(e,t)})}};return o},at={some:ot,none:e,from:function(t){return null===t||t===undefined?l:ot(t)}},it=p("string"),ut=p("object"),ft=p("array"),ct=p("function"),st=Array.prototype.slice,lt=Array.prototype.indexOf,dt=(ct(Array.from)&&Array.from,Object.keys),mt=Object.hasOwnProperty,gt=function(t,n){return mt.call(t,n)},pt=function(i){if(!ft(i))throw new Error("cases must be an array");if(0===i.length)throw new Error("there must be at least one case");var u=[],e={};return y(i,function(t,r){var n=dt(t);if(1!==n.length)throw new Error("one and only one name per case");var o=n[0],a=t[o];if(e[o]!==undefined)throw new Error("duplicate key detected:"+o);if("cata"===o)throw new Error("cannot have a case named cata (sorry)");if(!ft(a))throw new Error("case arguments must be an array");u.push(o),e[o]=function(){var t=arguments.length;if(t!==a.length)throw new Error("Wrong number of arguments to case "+o+". Expected "+a.length+" ("+a+"), got "+t);for(var e=new Array(t),n=0;n<e.length;n++)e[n]=arguments[n];return{fold:function(){if(arguments.length!==i.length)throw new Error("Wrong number of arguments to fold. Expected "+i.length+", got "+arguments.length);return arguments[r].apply(null,e)},match:function(t){var n=dt(t);if(u.length!==n.length)throw new Error("Wrong number of arguments to match. Expected: "+u.join(",")+"\nActual: "+n.join(","));if(!O(u,function(t){return h(n,t)}))throw new Error("Not all branches were specified when using match. Specified: "+n.join(", ")+"\nRequired: "+u.join(", "));return t[o].apply(null,e)},log:function(t){f.console.log(t,{constructors:u,constructor:o,params:e})}}}}),e},ht=(pt([{bothErrors:["error1","error2"]},{firstError:["error1","value2"]},{secondError:["value1","error2"]},{bothValues:["value1","value2"]}]),function(e){return{is:function(t){return e===t},isValue:s,isError:c,getOr:a(e),getOrThunk:a(e),getOrDie:a(e),or:function(t){return ht(e)},orThunk:function(t){return ht(e)},fold:function(t,n){return n(e)},map:function(t){return ht(t(e))},mapError:function(t){return ht(e)},each:function(t){t(e)},bind:function(t){return t(e)},exists:function(t){return t(e)},forall:function(t){return t(e)},toOption:function(){return at.some(e)}}}),vt=function(e){return{is:c,isValue:c,isError:s,getOr:o,getOrThunk:function(t){return t()},getOrDie:function(){return function(t){return function(){throw new Error(t)}}(String(e))()},or:function(t){return t},orThunk:function(t){return t()},fold:function(t,n){return t(e)},map:function(t){return vt(e)},mapError:function(t){return vt(t(e))},each:n,bind:function(t){return vt(e)},exists:c,forall:s,toOption:at.none}},yt={value:ht,error:vt,fromOption:function(t,n){return t.fold(function(){return vt(n)},ht)}},bt=function(r){return{setPatterns:function(t){var n=w(v(t,T));if(0<n.errors.length){var e=n.errors[0];throw new Error(e.message+":\n"+JSON.stringify(e.pattern,null,2))}r.set(N(n.values))},getPatterns:function(){return function f(){for(var t=0,n=0,e=arguments.length;n<e;n++)t+=arguments[n].length;var r=Array(t),o=0;for(n=0;n<e;n++)for(var a=arguments[n],i=0,u=a.length;i<u;i++,o++)r[o]=a[i];return r}(v(r.get().inlinePatterns,R),v(r.get().blockPatterns,R))}}},kt="undefined"!=typeof f.window?f.window:Function("return this;")(),Ot=[{start:"*",end:"*",format:"italic"},{start:"**",end:"**",format:"bold"},{start:"#",format:"h1"},{start:"##",format:"h2"},{start:"###",format:"h3"},{start:"####",format:"h4"},{start:"#####",format:"h5"},{start:"######",format:"h6"},{start:"1. ",cmd:"InsertOrderedList"},{start:"* ",cmd:"InsertUnorderedList"},{start:"- ",cmd:"InsertUnorderedList"}],wt=tinymce.util.Tools.resolve("tinymce.util.Delay"),xt=tinymce.util.Tools.resolve("tinymce.util.VK"),Ct=tinymce.util.Tools.resolve("tinymce.util.Tools"),Et=tinymce.util.Tools.resolve("tinymce.dom.TreeWalker"),Tt=function(t,n,e){if(n&&t.isEmpty(n)&&!e(n)){var r=n.parentNode;t.remove(n),Tt(t,r,e)}},Rt=function(t,e,r){if(!A(t))return at.none();var n=t.textContent;return 0<=e&&e<=n.length?at.some(_(t,e)):U(t,r).prev().bind(function(t){var n=t.textContent;return Rt(t,e+n.length,r)})},Nt=function(t,n,e){if(!A(t))return at.none();var r=t.textContent;return n<=r.length?at.some(_(t,n)):U(t,e).next().bind(function(t){return Nt(t,n-r.length,e)})},Pt=pt([{aborted:[]},{edge:["element"]},{success:["info"]}]),St=pt([{abort:[]},{kontinue:[]},{finish:["info"]}]),Mt=function(n,e,t,r,o,a){function i(){return a.fold(Pt.aborted,Pt.edge)}function u(){var t=o();return t?Mt(n,t,at.none(),r,o,at.some(e)):i()}if(function(t,n){return t.isBlock(n)||h(["BR","IMG","HR","INPUT"],n.nodeName)||"false"===t.getContentEditable(n)}(n,e))return i();if(A(e)){var f=e.textContent;return r(St,e,f,t).fold(Pt.aborted,function(){return u()},Pt.success)}return u()},At=0,jt=function(c,s,l,d,m){var g=c.dom;return q(l,d,g.getRoot()).bind(function(t){var n=g.createRng();n.setStart(m,0),n.setEnd(l,d);for(var e,r,o=n.toString(),a=0;a<s.length;a++){var i=s[a];if(e=o,r=i.end,function(t,n,e){return""===n||!(t.length<n.length)&&t.substr(e,e+n.length)===n}(e,r,e.length-r.length)){var u=s.slice();u.splice(a,1);var f=Z(c,m,{pattern:i,remainingPatterns:u,position:t});if(f.isSome())return f}}return at.none()})},Bt=function(e,t){if(!e.selection.isCollapsed())return!1;var r=nt(e,t.inlinePatterns,!1),o=function(r,t){var o=r.dom,n=r.selection.getRng();return I(r,n).filter(function(t){var n=M(r),e=""===n&&o.is(t,"body")||o.is(t,n);return null!==t&&e}).bind(function(n){var e=n.textContent;return F(t,e).map(function(t){return Ct.trim(e).length===t.start.length?[]:[{pattern:t,range:V(o.getRoot(),n,0,n,0)}]})}).getOr([])}(e,t.blockPatterns);return(0<o.length||0<r.length)&&(e.undoManager.add(),e.undoManager.extra(function(){e.execCommand("mceInsertNewLine")},function(){e.insertContent("\ufeff"),et(e,r),G(e,o);var t=e.selection.getRng(),n=q(t.startContainer,t.startOffset,e.dom.getRoot());e.execCommand("mceInsertNewLine"),n.each(function(t){"\ufeff"===t.element.data.charAt(t.offset-1)&&(t.element.deleteData(t.offset-1,1),Tt(e.dom,t.element.parentNode,function(t){return t===e.dom.getRoot()}))})}),!0)},Dt=function(t,n){var e=nt(t,n.inlinePatterns,!0);0<e.length&&t.undoManager.transact(function(){et(t,e)})},It=function(t,n){return rt(t,n,function(t,n){return t.charCodeAt(0)===n.charCode})},_t=function(t,n){return rt(t,n,function(t,n){return t===n.keyCode&&!1===xt.modifierPressed(n)})},Ut=function(n,e){var r=[",",".",";",":","!","?"],o=[32];n.on("keydown",function(t){13!==t.keyCode||xt.modifierPressed(t)||Bt(n,e.get())&&t.preventDefault()},!0),n.on("keyup",function(t){_t(o,t)&&Dt(n,e.get())}),n.on("keypress",function(t){It(r,t)&&wt.setEditorTimeout(n,function(){Dt(n,e.get())})})};!function qt(){t.add("textpattern",function(t){var n=r(S(t.settings));return Ut(t,n),bt(n)})}()}(window);
\ No newline at end of file
diff --git a/admin/js/vendors/tinymce/js/tinymce/plugins/toc/plugin.min.js b/admin/js/vendors/tinymce/js/tinymce/plugins/toc/plugin.min.js
new file mode 100644 (file)
index 0000000..b77709c
--- /dev/null
@@ -0,0 +1,9 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ *
+ * Version: 5.1.5 (2019-12-19)
+ */
+!function(){"use strict";function e(n){return function(t){function e(){return t.setDisabled(n.readonly||!v.hasHeaders(n))}return e(),n.on("LoadContent SetContent change",e),function(){return n.on("LoadContent SetContent change",e)}}}var t=tinymce.util.Tools.resolve("tinymce.PluginManager"),u=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),l=tinymce.util.Tools.resolve("tinymce.util.I18n"),i=tinymce.util.Tools.resolve("tinymce.util.Tools"),c=function(t){return t.getParam("toc_class","mce-toc")},d=function(t){var e=t.getParam("toc_header","h2");return/^h[1-6]$/.test(e)?e:"h2"},a=function(t){var e=parseInt(t.getParam("toc_depth","3"),10);return 1<=e&&e<=9?e:3},s=function(e){var n=0;return function(){var t=(new Date).getTime().toString(32);return e+t+(n++).toString(32)}}("mcetoc_"),f=function f(t){var e,n=[];for(e=1;e<=t;e++)n.push("h"+e);return n.join(",")},m=function(n){var o=c(n),t=d(n),e=f(a(n)),r=n.$(e);return r.length&&/^h[1-9]$/i.test(t)&&(r=r.filter(function(t,e){return!n.dom.hasClass(e.parentNode,o)})),i.map(r,function(t){return{id:t.id?t.id:s(),level:parseInt(t.nodeName.replace(/^H/i,""),10),title:n.$.text(t),element:t}})},o=function(t){var e,n,o,r,i="",c=m(t),a=function(t){var e,n=9;for(e=0;e<t.length;e++)if(t[e].level<n&&(n=t[e].level),1===n)return n;return n}(c)-1;if(!c.length)return"";for(i+=function(t,e){var n="</"+t+">";return"<"+t+' contenteditable="true">'+u.DOM.encode(e)+n}(d(t),l.translate("Table of Contents")),e=0;e<c.length;e++){if((o=c[e]).element.id=o.id,r=c[e+1]&&c[e+1].level,a===o.level)i+="<li>";else for(n=a;n<o.level;n++)i+="<ul><li>";if(i+='<a href="#'+o.id+'">'+o.title+"</a>",r!==o.level&&r)for(n=o.level;r<n;n--)i+="</li></ul><li>";else i+="</li>",r||(i+="</ul>");a=o.level}return i},r=function(t){var e=c(t),n=t.$("."+e);n.length&&t.undoManager.transact(function(){n.html(o(t))})},v={hasHeaders:function(t){return 0<m(t).length},insertToc:function(t){var e=c(t),n=t.$("."+e);!function(t,e){return!e.length||0<t.dom.getParents(e[0],".mce-offscreen-selection").length}(t,n)?r(t):t.insertContent(function(t){var e=o(t);return'<div class="'+t.dom.encode(c(t))+'" contenteditable="false">'+e+"</div>"}(t))},updateToc:r},n=function(t){t.addCommand("mceInsertToc",function(){v.insertToc(t)}),t.addCommand("mceUpdateToc",function(){v.updateToc(t)})},g=function(t){var n=t.$,o=c(t);t.on("PreProcess",function(t){var e=n("."+o,t.node);e.length&&(e.removeAttr("contentEditable"),e.find("[contenteditable]").removeAttr("contentEditable"))}),t.on("SetContent",function(){var t=n("."+o);t.length&&(t.attr("contentEditable",!1),t.children(":first-child").attr("contentEditable",!0))})},h=function(t){t.ui.registry.addButton("toc",{icon:"toc",tooltip:"Table of contents",onAction:function(){return t.execCommand("mceInsertToc")},onSetup:e(t)}),t.ui.registry.addButton("tocupdate",{icon:"reload",tooltip:"Update",onAction:function(){return t.execCommand("mceUpdateToc")}}),t.ui.registry.addMenuItem("toc",{icon:"toc",text:"Table of contents",onAction:function(){return t.execCommand("mceInsertToc")},onSetup:e(t)}),t.ui.registry.addContextToolbar("toc",{items:"tocupdate",predicate:function(e){return function(t){return t&&e.dom.is(t,"."+c(e))&&e.getBody().contains(t)}}(t),scope:"node",position:"node"})};!function p(){t.add("toc",function(t){n(t),h(t),g(t)})}()}();
\ No newline at end of file
diff --git a/admin/js/vendors/tinymce/js/tinymce/plugins/visualblocks/plugin.min.js b/admin/js/vendors/tinymce/js/tinymce/plugins/visualblocks/plugin.min.js
new file mode 100644 (file)
index 0000000..d17bebf
--- /dev/null
@@ -0,0 +1,9 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ *
+ * Version: 5.1.5 (2019-12-19)
+ */
+!function(){"use strict";function n(n,e){return function(o){o.setActive(e.get());function t(t){return o.setActive(t.state)}return n.on("VisualBlocks",t),function(){return n.off("VisualBlocks",t)}}}var e=function(t){function o(){return n}var n=t;return{get:o,set:function(t){n=t},clone:function(){return e(o())}}},t=tinymce.util.Tools.resolve("tinymce.PluginManager"),i=function(t,o){t.fire("VisualBlocks",{state:o})},u=function(t,o,n){t.dom.toggleClass(t.getBody(),"mce-visualblocks"),n.set(!n.get()),i(t,n.get())},c=function(t,o,n){t.addCommand("mceVisualBlocks",function(){u(t,o,n)})},s=function(t){return t.getParam("visualblocks_default_state",!1,"boolean")},l=function(o,t,n){o.on("PreviewFormats AfterPreviewFormats",function(t){n.get()&&o.dom.toggleClass(o.getBody(),"mce-visualblocks","afterpreviewformats"===t.type)}),o.on("init",function(){s(o)&&u(o,t,n)}),o.on("remove",function(){o.dom.removeClass(o.getBody(),"mce-visualblocks")})},r=function(t,o){t.ui.registry.addToggleButton("visualblocks",{icon:"visualblocks",tooltip:"Show blocks",onAction:function(){return t.execCommand("mceVisualBlocks")},onSetup:n(t,o)}),t.ui.registry.addToggleMenuItem("visualblocks",{text:"Show blocks",onAction:function(){return t.execCommand("mceVisualBlocks")},onSetup:n(t,o)})};!function o(){t.add("visualblocks",function(t,o){var n=e(!1);c(t,o,n),r(t,n),l(t,o,n)})}()}();
\ No newline at end of file
diff --git a/admin/js/vendors/tinymce/js/tinymce/plugins/visualchars/plugin.min.js b/admin/js/vendors/tinymce/js/tinymce/plugins/visualchars/plugin.min.js
new file mode 100644 (file)
index 0000000..43dfd61
--- /dev/null
@@ -0,0 +1,9 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ *
+ * Version: 5.1.5 (2019-12-19)
+ */
+!function(r){"use strict";function n(){}function u(n){return function(){return n}}function e(){return l}var t,o=function(n){function e(){return t}var t=n;return{get:e,set:function(n){t=n},clone:function(){return o(e())}}},i=tinymce.util.Tools.resolve("tinymce.PluginManager"),c=function(n){return{isEnabled:function(){return n.get()}}},a=function(n,e){return n.fire("VisualChars",{state:e})},f=u(!1),s=u(!0),l=(t={fold:function(n,e){return n()},is:f,isSome:f,isNone:s,getOr:g,getOrThunk:m,getOrDie:function(n){throw new Error(n||"error: getOrDie called on none.")},getOrNull:u(null),getOrUndefined:u(undefined),or:g,orThunk:m,map:e,each:n,bind:e,exists:f,forall:s,filter:e,equals:d,equals_:d,toArray:function(){return[]},toString:u("none()")},Object.freeze&&Object.freeze(t),t);function d(n){return n.isNone()}function m(n){return n()}function g(n){return n}function N(e){return function(n){return function(n){if(null===n)return"null";var e=typeof n;return"object"==e&&(Array.prototype.isPrototypeOf(n)||n.constructor&&"Array"===n.constructor.name)?"array":"object"==e&&(String.prototype.isPrototypeOf(n)||n.constructor&&"String"===n.constructor.name)?"string":e}(n)===e}}function v(n,e){for(var t=0,r=n.length;t<r;t++){e(n[t],t)}}function h(n){return n.dom().nodeValue}function p(n,e,t){!function(n,e,t){if(!(L(t)||P(t)||R(t)))throw r.console.error("Invalid call to Attr.set. Key ",e,":: Value ",t,":: Element ",n),new Error("Attribute value was not simple");n.setAttribute(e,t+"")}(n.dom(),e,t)}function E(n,e){n.dom().removeAttribute(e)}function T(n,e){var t=function(n,e){var t=n.dom().getAttribute(e);return null===t?undefined:t}(n,e);return t===undefined||""===t?[]:t.split(" ")}function O(n){return n.dom().classList!==undefined}function y(n,e){return function(n,e,t){var r=T(n,e).concat([t]);return p(n,e,r.join(" ")),!0}(n,"class",e)}function b(n,e){return function(n,e,t){var r=function(n,e){for(var t=[],r=0,o=n.length;r<o;r++){var u=n[r];e(u,r)&&t.push(u)}return t}(T(n,e),function(n){return n!==t});return 0<r.length?p(n,e,r.join(" ")):E(n,e),!1}(n,"class",e)}function D(n){0===(O(n)?n.dom().classList:function(n){return T(n,"class")}(n)).length&&E(n,"class")}function C(n,e){var t,r="";for(t in n)r+=t;return new RegExp("["+r+"]",e?"g":"")}function A(n){var e,t="";for(e in n)t&&(t+=","),t+="span.mce-"+n[e];return t}function _(n){return"span"===n.nodeName.toLowerCase()&&n.classList.contains("mce-nbsp-wrap")}function w(u,n){var e=W.filterDescendants(F.fromDom(n),W.isMatch);v(e,function(n){var e=n.dom().parentNode;if(_(e))!function(n,e){O(n)?n.dom().classList.add(e):y(n,e)}(F.fromDom(e),H.nbspClass);else{for(var t=W.replaceWithSpans(u.dom.encode(h(n))),r=u.dom.create("div",null,t),o=void 0;o=r.lastChild;)u.dom.insertAfter(o,n.dom());u.dom.remove(n.dom())}})}function M(e,n){var t=e.dom.select(H.selector,n);v(t,function(n){_(n)?function(n,e){O(n)?n.dom().classList.remove(e):b(n,e);D(n)}(F.fromDom(n),H.nbspClass):e.dom.remove(n,!0)})}function S(t,r){return function(e){e.setActive(r.get());function n(n){return e.setActive(n.state)}return t.on("VisualChars",n),function(){return t.off("VisualChars",n)}}}var k,x=function(t){function n(){return o}function e(n){return n(t)}var r=u(t),o={fold:function(n,e){return e(t)},is:function(n){return t===n},isSome:s,isNone:f,getOr:r,getOrThunk:r,getOrDie:r,getOrNull:r,getOrUndefined:r,or:n,orThunk:n,map:function(n){return x(n(t))},each:function(n){n(t)},bind:e,exists:e,forall:e,filter:function(n){return n(t)?o:l},toArray:function(){return[t]},toString:function(){return"some("+t+")"},equals:function(n){return n.is(t)},equals_:function(n,e){return n.fold(f,function(n){return e(t,n)})}};return o},I=function(n){return null===n||n===undefined?l:x(n)},L=N("string"),P=N("boolean"),B=N("function"),R=N("number"),V=Array.prototype.slice,U=(B(Array.from)&&Array.from,r.Node.ATTRIBUTE_NODE,r.Node.CDATA_SECTION_NODE,r.Node.COMMENT_NODE,r.Node.DOCUMENT_NODE,r.Node.DOCUMENT_TYPE_NODE,r.Node.DOCUMENT_FRAGMENT_NODE,r.Node.ELEMENT_NODE,r.Node.TEXT_NODE),j=(r.Node.PROCESSING_INSTRUCTION_NODE,r.Node.ENTITY_REFERENCE_NODE,r.Node.ENTITY_NODE,r.Node.NOTATION_NODE,"undefined"!=typeof r.window?r.window:Function("return this;")(),k=U,function(n){return function(n){return n.dom().nodeType}(n)===k}),q=function(n){if(null===n||n===undefined)throw new Error("Node cannot be null or undefined");return{dom:u(n)}},F={fromHtml:function(n,e){var t=(e||r.document).createElement("div");if(t.innerHTML=n,!t.hasChildNodes()||1<t.childNodes.length)throw r.console.error("HTML does not have a single root node",n),new Error("HTML must have a single root node");return q(t.childNodes[0])},fromTag:function(n,e){var t=(e||r.document).createElement(n);return q(t)},fromText:function(n,e){var t=(e||r.document).createTextNode(n);return q(t)},fromDom:q,fromPoint:function(n,e,t){var r=n.dom();return I(r.elementFromPoint(e,t)).map(q)}},G={"\xa0":"nbsp","\xad":"shy"},H={charMap:G,regExp:C(G),regExpGlobal:C(G,!0),selector:A(G),nbspClass:"mce-nbsp",charMapToRegExp:C,charMapToSelector:A},Y=function(n){return'<span data-mce-bogus="1" class="mce-'+H.charMap[n]+'">'+n+"</span>"},z=function(n,e){var t=[],r=function(n,e){for(var t=n.length,r=new Array(t),o=0;o<t;o++){var u=n[o];r[o]=e(u,o)}return r}(n.dom().childNodes,F.fromDom);return v(r,function(n){e(n)&&(t=t.concat([n])),t=t.concat(z(n,e))}),t},W={isMatch:function(n){var e=h(n);return j(n)&&e!==undefined&&H.regExp.test(e)},filterDescendants:z,findParentElm:function(n,e){for(;n.parentNode;){if(n.parentNode===e)return n;n=n.parentNode}},replaceWithSpans:function(n){return n.replace(H.regExpGlobal,Y)}},K=w,X=M,J=function(n){var e=n.getBody(),t=n.selection.getBookmark(),r=W.findParentElm(n.selection.getNode(),e);r=r!==undefined?r:e,M(n,r),w(n,r),n.selection.moveToBookmark(t)},Q=function(n,e){var t,r=n.getBody(),o=n.selection;e.set(!e.get()),a(n,e.get()),t=o.getBookmark(),!0===e.get()?K(n,r):X(n,r),o.moveToBookmark(t)},Z=function(n,e){n.addCommand("mceVisualChars",function(){Q(n,e)})},$=tinymce.util.Tools.resolve("tinymce.util.Delay"),nn=function(e,t){var r=$.debounce(function(){J(e)},300);!1!==e.settings.forced_root_block&&e.on("keydown",function(n){!0===t.get()&&(13===n.keyCode?J(e):r())})},en=function(n){return n.getParam("visualchars_default_state",!1)},tn=function(e,t){e.on("init",function(){var n=!en(e);t.set(n),Q(e,t)})};!function rn(){i.add("visualchars",function(n){var e=o(!1);return Z(n,e),function(n,e){n.ui.registry.addToggleButton("visualchars",{tooltip:"Show invisible characters",icon:"visualchars",onAction:function(){return n.execCommand("mceVisualChars")},onSetup:S(n,e)}),n.ui.registry.addToggleMenuItem("visualchars",{text:"Show invisible characters",onAction:function(){return n.execCommand("mceVisualChars")},onSetup:S(n,e)})}(n,e),nn(n,e),tn(n,e),c(e)})}()}(window);
\ No newline at end of file
diff --git a/admin/js/vendors/tinymce/js/tinymce/plugins/wordcount/plugin.min.js b/admin/js/vendors/tinymce/js/tinymce/plugins/wordcount/plugin.min.js
new file mode 100644 (file)
index 0000000..f6f1fca
--- /dev/null
@@ -0,0 +1,9 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ *
+ * Version: 5.1.5 (2019-12-19)
+ */
+!function(){"use strict";function t(){}function n(t){return function(){return t}}function r(t){return t}function e(){return U}var o,u=tinymce.util.Tools.resolve("tinymce.PluginManager"),i=n(!1),c=n(!0),a=function(){return(a=Object.assign||function(t){for(var n,e=1,r=arguments.length;e<r;e++)for(var o in n=arguments[e])Object.prototype.hasOwnProperty.call(n,o)&&(t[o]=n[o]);return t}).apply(this,arguments)},f="[-'\\.\u2018\u2019\u2024\ufe52\uff07\uff0e]",s="[:\xb7\xb7\u05f4\u2027\ufe13\ufe55\uff1a]",l="[\xb1+*/,;;\u0589\u060c\u060d\u066c\u07f8\u2044\ufe10\ufe14\ufe50\ufe54\uff0c\uff1b]",g="[0-9\u0660-\u0669\u066b\u06f0-\u06f9\u07c0-\u07c9\u0966-\u096f\u09e6-\u09ef\u0a66-\u0a6f\u0ae6-\u0aef\u0b66-\u0b6f\u0be6-\u0bef\u0c66-\u0c6f\u0ce6-\u0cef\u0d66-\u0d6f\u0e50-\u0e59\u0ed0-\u0ed9\u0f20-\u0f29\u1040-\u1049\u1090-\u1099\u17e0-\u17e9\u1810-\u1819\u1946-\u194f\u19d0-\u19d9\u1a80-\u1a89\u1a90-\u1a99\u1b50-\u1b59\u1bb0-\u1bb9\u1c40-\u1c49\u1c50-\u1c59\ua620-\ua629\ua8d0-\ua8d9\ua900-\ua909\ua9d0-\ua9d9\uaa50-\uaa59\uabf0-\uabf9]",p="\\r",d="\\n",h="[\x0B\f\x85\u2028\u2029]",y="[\u0300-\u036f\u0483-\u0489\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u065f\u0670\u06d6-\u06dc\u06df-\u06e4\u06e7\u06e8\u06ea-\u06ed\u0711\u0730-\u074a\u07a6-\u07b0\u07eb-\u07f3\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0859-\u085b\u0900-\u0903\u093a-\u093c\u093e-\u094f\u0951-\u0957\u0962\u0963\u0981-\u0983\u09bc\u09be-\u09c4\u09c7\u09c8\u09cb-\u09cd\u09d7\u09e2\u09e3\u0a01-\u0a03\u0a3c\u0a3e-\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a70\u0a71\u0a75\u0a81-\u0a83\u0abc\u0abe-\u0ac5\u0ac7-\u0ac9\u0acb-\u0acd\u0ae2\u0ae3\u0b01-\u0b03\u0b3c\u0b3e-\u0b44\u0b47\u0b48\u0b4b-\u0b4d\u0b56\u0b57\u0b62\u0b63\u0b82\u0bbe-\u0bc2\u0bc6-\u0bc8\u0bca-\u0bcd\u0bd7\u0c01-\u0c03\u0c3e-\u0c44\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0c82\u0c83\u0cbc\u0cbe-\u0cc4\u0cc6-\u0cc8\u0cca-\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0d02\u0d03\u0d3e-\u0d44\u0d46-\u0d48\u0d4a-\u0d4d\u0d57\u0d62\u0d63\u0d82\u0d83\u0dca\u0dcf-\u0dd4\u0dd6\u0dd8-\u0ddf\u0df2\u0df3\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0eb1\u0eb4-\u0eb9\u0ebb\u0ebc\u0ec8-\u0ecd\u0f18\u0f19\u0f35\u0f37\u0f39\u0f3e\u0f3f\u0f71-\u0f84\u0f86\u0f87\u0f8d-\u0f97\u0f99-\u0fbc\u0fc6\u102b-\u103e\u1056-\u1059\u105e-\u1060\u1062-\u1064\u1067-\u106d\u1071-\u1074\u1082-\u108d\u108f\u109a-\u109d\u135d-\u135f\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17b6-\u17d3\u17dd\u180b-\u180d\u18a9\u1920-\u192b\u1930-\u193b\u19b0-\u19c0\u19c8\u19c9\u1a17-\u1a1b\u1a55-\u1a5e\u1a60-\u1a7c\u1a7f\u1b00-\u1b04\u1b34-\u1b44\u1b6b-\u1b73\u1b80-\u1b82\u1ba1-\u1baa\u1be6-\u1bf3\u1c24-\u1c37\u1cd0-\u1cd2\u1cd4-\u1ce8\u1ced\u1cf2\u1dc0-\u1de6\u1dfc-\u1dff\u200c\u200d\u20d0-\u20f0\u2cef-\u2cf1\u2d7f\u2de0-\u2dff\u302a-\u302f\u3099\u309a\ua66f-\ua672\ua67c\ua67d\ua6f0\ua6f1\ua802\ua806\ua80b\ua823-\ua827\ua880\ua881\ua8b4-\ua8c4\ua8e0-\ua8f1\ua926-\ua92d\ua947-\ua953\ua980-\ua983\ua9b3-\ua9c0\uaa29-\uaa36\uaa43\uaa4c\uaa4d\uaa7b\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uabe3-\uabea\uabec\uabed\ufb1e\ufe00-\ufe0f\ufe20-\ufe26\uff9e\uff9f]",C="[\xad\u0600-\u0603\u06dd\u070f\u17b4\u17b5\u200e\u200f\u202a-\u202e\u2060-\u2064\u206a-\u206f\ufeff\ufff9-\ufffb]",v="[\u3031-\u3035\u309b\u309c\u30a0-\u30fa\u30fc-\u30ff\u31f0-\u31ff\u32d0-\u32fe\u3300-\u3357\uff66-\uff9d]",w="[=_\u203f\u2040\u2054\ufe33\ufe34\ufe4d-\ufe4f\uff3f\u2200-\u22ff<>]",m="[!-#%-*,-\\/:;?@\\[-\\]_{}\xa1\xab\xb7\xbb\xbf;\xb7\u055a-\u055f\u0589\u058a\u05be\u05c0\u05c3\u05c6\u05f3\u05f4\u0609\u060a\u060c\u060d\u061b\u061e\u061f\u066a-\u066d\u06d4\u0700-\u070d\u07f7-\u07f9\u0830-\u083e\u085e\u0964\u0965\u0970\u0df4\u0e4f\u0e5a\u0e5b\u0f04-\u0f12\u0f3a-\u0f3d\u0f85\u0fd0-\u0fd4\u0fd9\u0fda\u104a-\u104f\u10fb\u1361-\u1368\u1400\u166d\u166e\u169b\u169c\u16eb-\u16ed\u1735\u1736\u17d4-\u17d6\u17d8-\u17da\u1800-\u180a\u1944\u1945\u1a1e\u1a1f\u1aa0-\u1aa6\u1aa8-\u1aad\u1b5a-\u1b60\u1bfc-\u1bff\u1c3b-\u1c3f\u1c7e\u1c7f\u1cd3\u2010-\u2027\u2030-\u2043\u2045-\u2051\u2053-\u205e\u207d\u207e\u208d\u208e\u3008\u3009\u2768-\u2775\u27c5\u27c6\u27e6-\u27ef\u2983-\u2998\u29d8-\u29db\u29fc\u29fd\u2cf9-\u2cfc\u2cfe\u2cff\u2d70\u2e00-\u2e2e\u2e30\u2e31\u3001-\u3003\u3008-\u3011\u3014-\u301f\u3030\u303d\u30a0\u30fb\ua4fe\ua4ff\ua60d-\ua60f\ua673\ua67e\ua6f2-\ua6f7\ua874-\ua877\ua8ce\ua8cf\ua8f8-\ua8fa\ua92e\ua92f\ua95f\ua9c1-\ua9cd\ua9de\ua9df\uaa5c-\uaa5f\uaade\uaadf\uabeb\ufd3e\ufd3f\ufe10-\ufe19\ufe30-\ufe52\ufe54-\ufe61\ufe63\ufe68\ufe6a\ufe6b\uff01-\uff03\uff05-\uff0a\uff0c-\uff0f\uff1a\uff1b\uff1f\uff20\uff3b-\uff3d\uff3f\uff5b\uff5d\uff5f-\uff65]",b=0,E=1,S=2,x=3,W=4,R=5,O=6,A=7,j=8,D=9,T=10,k=11,P=12,B=13,F=[new RegExp("[A-Za-z\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0370-\u0374\u0376\u0377\u037a-\u037d\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u048a-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05d0-\u05ea\u05f0-\u05f3\u0620-\u064a\u066e\u066f\u0671-\u06d3\u06d5\u06e5\u06e6\u06ee\u06ef\u06fa-\u06fc\u06ff\u0710\u0712-\u072f\u074d-\u07a5\u07b1\u07ca-\u07ea\u07f4\u07f5\u07fa\u0800-\u0815\u081a\u0824\u0828\u0840-\u0858\u0904-\u0939\u093d\u0950\u0958-\u0961\u0971-\u0977\u0979-\u097f\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bd\u09ce\u09dc\u09dd\u09df-\u09e1\u09f0\u09f1\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a59-\u0a5c\u0a5e\u0a72-\u0a74\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abd\u0ad0\u0ae0\u0ae1\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3d\u0b5c\u0b5d\u0b5f-\u0b61\u0b71\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bd0\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c33\u0c35-\u0c39\u0c3d\u0c58\u0c59\u0c60\u0c61\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbd\u0cde\u0ce0\u0ce1\u0cf1\u0cf2\u0d05-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d\u0d4e\u0d60\u0d61\u0d7a-\u0d7f\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0f00\u0f40-\u0f47\u0f49-\u0f6c\u0f88-\u0f8c\u10a0-\u10c5\u10d0-\u10fa\u10fc\u1100-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u1380-\u138f\u13a0-\u13f4\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f0\u1700-\u170c\u170e-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176c\u176e-\u1770\u1820-\u1877\u1880-\u18a8\u18aa\u18b0-\u18f5\u1900-\u191c\u1a00-\u1a16\u1b05-\u1b33\u1b45-\u1b4b\u1b83-\u1ba0\u1bae\u1baf\u1bc0-\u1be5\u1c00-\u1c23\u1c4d-\u1c4f\u1c5a-\u1c7d\u1ce9-\u1cec\u1cee-\u1cf1\u1d00-\u1dbf\u1e00-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u2071\u207f\u2090-\u209c\u2102\u2107\u210a-\u2113\u2115\u2119-\u211d\u2124\u2126\u2128\u212a-\u212d\u212f-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u24b6-\u24e9\u2c00-\u2c2e\u2c30-\u2c5e\u2c60-\u2ce4\u2ceb-\u2cee\u2d00-\u2d25\u2d30-\u2d65\u2d6f\u2d80-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u2e2f\u3005\u303b\u303c\u3105-\u312d\u3131-\u318e\u31a0-\u31ba\ua000-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua61f\ua62a\ua62b\ua640-\ua66e\ua67f-\ua697\ua6a0-\ua6ef\ua717-\ua71f\ua722-\ua788\ua78b-\ua78e\ua790\ua791\ua7a0-\ua7a9\ua7fa-\ua801\ua803-\ua805\ua807-\ua80a\ua80c-\ua822\ua840-\ua873\ua882-\ua8b3\ua8f2-\ua8f7\ua8fb\ua90a-\ua925\ua930-\ua946\ua960-\ua97c\ua984-\ua9b2\ua9cf\uaa00-\uaa28\uaa40-\uaa42\uaa44-\uaa4b\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uabc0-\uabe2\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\ufb00-\ufb06\ufb13-\ufb17\ufb1d\ufb1f-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe70-\ufe74\ufe76-\ufefc\uff21-\uff3a\uff41-\uff5a\uffa0-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc]"),new RegExp(f),new RegExp(s),new RegExp(l),new RegExp(g),new RegExp(p),new RegExp(d),new RegExp(h),new RegExp(y),new RegExp(C),new RegExp(v),new RegExp(w),new RegExp("@")],N=new RegExp("^"+m+"$"),U=(o={fold:function(t,n){return t()},is:i,isSome:i,isNone:c,getOr:M,getOrThunk:z,getOrDie:function(t){throw new Error(t||"error: getOrDie called on none.")},getOrNull:n(null),getOrUndefined:n(undefined),or:M,orThunk:z,map:e,each:t,bind:e,exists:i,forall:c,filter:e,equals:_,equals_:_,toArray:function(){return[]},toString:n("none()")},Object.freeze&&Object.freeze(o),o);function _(t){return t.isNone()}function z(t){return t()}function M(t){return t}function q(t){for(var n=ot,e=rt.length,r=0;r<e;++r){var o=rt[r];if(o&&o.test(t)){n=r;break}}return n}function $(t){return function(t,n){for(var e=t.length,r=new Array(e),o=0;o<e;o++){var u=t[o];r[o]=n(u,o)}return r}(t,function(e){var r={};return function(t){if(r[t])return r[t];var n=e(t);return r[t]=n}}(q))}function I(t,n){var e=function(t,n){var e;for(e=n;e<t.length&&!ut.test(t[e]);e++);return e}(t,n+1);return"://"===t.slice(n+1,e).join("").substr(0,3)?e:n}function Z(t,n){for(var e,r=n.getBlockElements(),o=n.getShortEndedElements(),u=[],i="",c=new at(t,t);t=c.next();)3===t.nodeType?i+=t.data:(r[(e=t).nodeName]||o[e.nodeName])&&i.length&&(u.push(i),i="");return i.length&&u.push(i),u}function G(t){return t.replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,"_").length}function H(t,n){var e=Z(t,n).join("\n");return ct(e.split(""),r).length}function J(t,n){var e=Z(t,n).join("");return G(e)}function K(t,n){var e=Z(t,n).join("").replace(/\s/g,"");return G(e)}function L(t,n){return function(){return n(t.getBody(),t.schema)}}function Q(t,n){return function(){return n(t.selection.getRng().cloneContents(),t.schema)}}function V(t){return L(t,H)}function X(t,n){!function(t,n){t.fire("wordCountUpdate",{wordCount:{words:n.body.getWordCount(),characters:n.body.getCharacterCount(),charactersWithoutSpaces:n.body.getCharacterCountWithoutSpaces()}})}(t,n)}function Y(t,n){t.windowManager.open({title:"Word Count",body:{type:"panel",items:[{type:"table",header:["Count","Document","Selection"],cells:[["Words",String(n.body.getWordCount()),String(n.selection.getWordCount())],["Characters (no spaces)",String(n.body.getCharacterCountWithoutSpaces()),String(n.selection.getCharacterCountWithoutSpaces())],["Characters",String(n.body.getCharacterCount()),String(n.selection.getCharacterCount())]]}]},buttons:[{type:"cancel",name:"close",text:"Close",primary:!0}]})}var tt,nt=(tt="function",function(t){return function(t){if(null===t)return"null";var n=typeof t;return"object"==n&&(Array.prototype.isPrototypeOf(t)||t.constructor&&"Array"===t.constructor.name)?"array":"object"==n&&(String.prototype.isPrototypeOf(t)||t.constructor&&"String"===t.constructor.name)?"string":n}(t)===tt}),et=Array.prototype.slice,rt=(nt(Array.from)&&Array.from,F),ot=B,ut=/^\s+$/,it=N,ct=function(t,n,e){e=a(a({},{includeWhitespace:!1,includePunctuation:!1}),e);for(var r=[],o=[],u=0;u<t.length;u++){var i=n(t[u]);"\ufeff"!==i&&(r.push(t[u]),o.push(i))}return function(t,n,e,r){for(var o,u,i,c,a,f,s,l=[],g=[],p=0;p<e.length;++p)if(g.push(t[p]),a=c=void 0,f=(u=e)[i=p],s=u[i+1],!(i<0||i>u.length-1&&0!==i||f===b&&s===b||(a=u[i+2],f===b&&(s===S||s===E||s===P)&&a===b||(c=u[i-1],(f===S||f===E||s===P)&&s===b&&c===b||!(f!==W&&f!==b||s!==W&&s!==b)||(f===x||f===E)&&s===W&&c===W||f===W&&(s===x||s===E)&&a===W||f===j||f===D||c===j||c===D||s===j||s===D||f===R&&s===O||f!==A&&f!==R&&f!==O&&s!==A&&s!==R&&s!==O&&(f===T&&s===T||s===k&&(f===b||f===W||f===T||f===k)||f===k&&(s===b||s===W||s===T)||f===P))))){var d=n[p];if((r.includeWhitespace||!ut.test(d))&&(r.includePunctuation||!it.test(d))){var h=p-g.length+1,y=p+1,C=n.slice(h,y).join("");if("http"===(o=C)||"https"===o){var v=I(n,p),w=t.slice(y,v);Array.prototype.push.apply(g,w),p=v}l.push(g)}g=[]}return l}(r,o,$(o),e)},at=tinymce.util.Tools.resolve("tinymce.dom.TreeWalker"),ft=tinymce.util.Tools.resolve("tinymce.util.Delay");!function st(e){void 0===e&&(e=300),u.add("wordcount",function(t){var n=function(t){return{body:{getWordCount:V(t),getCharacterCount:L(t,J),getCharacterCountWithoutSpaces:L(t,K)},selection:{getWordCount:Q(t,H),getCharacterCount:Q(t,J),getCharacterCountWithoutSpaces:Q(t,K)},getCount:V(t)}}(t);return function(t,n){t.ui.registry.addButton("wordcount",{tooltip:"Word count",icon:"character-count",onAction:function(){return Y(t,n)}}),t.ui.registry.addMenuItem("wordcount",{text:"Word count",icon:"character-count",onAction:function(){return Y(t,n)}})}(t,n),function(t,n,e){var r=ft.debounce(function(){return X(t,n)},e);t.on("init",function(){X(t,n),ft.setEditorTimeout(t,function(){t.on("SetContent BeforeAddUndo Undo Redo keyup",r)},0)})}(t,n,e),n})}()}();
\ No newline at end of file
diff --git a/admin/js/vendors/tinymce/js/tinymce/skins/content/dark/content.min.css b/admin/js/vendors/tinymce/js/tinymce/skins/content/dark/content.min.css
new file mode 100644 (file)
index 0000000..764ae9a
--- /dev/null
@@ -0,0 +1,7 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ */
+body{background-color:#2f3742;color:#dfe0e4;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen,Ubuntu,Cantarell,'Open Sans','Helvetica Neue',sans-serif;line-height:1.4;margin:1rem}a{color:#4099ff}table{border-collapse:collapse}table td,table th{border:1px solid #6d737b;padding:.4rem}figure{display:table;margin:1rem auto}figure figcaption{color:#8a8f97;display:block;margin-top:.25rem;text-align:center}hr{border-color:#6d737b;border-style:solid;border-width:1px 0 0 0}code{background-color:#6d737b;border-radius:3px;padding:.1rem .2rem}td[data-mce-selected],th[data-mce-selected]{color:#333}.mce-content-body:not([dir=rtl]) blockquote{border-left:2px solid #6d737b;margin-left:1.5rem;padding-left:1rem}.mce-content-body[dir=rtl] blockquote{border-right:2px solid #6d737b;margin-right:1.5rem;padding-right:1rem}
diff --git a/admin/js/vendors/tinymce/js/tinymce/skins/content/default/content.min.css b/admin/js/vendors/tinymce/js/tinymce/skins/content/default/content.min.css
new file mode 100644 (file)
index 0000000..d122f02
--- /dev/null
@@ -0,0 +1,12 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ */
+body{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen,Ubuntu,Cantarell,'Open Sans','Helvetica Neue',sans-serif;line-height:1.4;margin:1rem}table{border-collapse:collapse}table td,table th{border:1px solid #ccc;padding:.4rem}figure{display:table;margin:1rem auto}figure figcaption{color:#999;display:block;margin-top:.25rem;text-align:center}
+hr{border-color:#ccc;border-style:solid;border-width:1px 0 0 0}
+code{background-color:#e8e8e8;border-radius:3px;padding:.1rem .2rem}
+.mce-content-body:not([dir=rtl]) 
+blockquote{border-left:2px solid #ccc;margin-left:1.5rem;padding-left:1rem}
+.mce-content-body[dir=rtl] blockquote{border-right:2px solid #ccc;margin-right:1.5rem;padding-right:1rem}
diff --git a/admin/js/vendors/tinymce/js/tinymce/skins/content/document/content.min.css b/admin/js/vendors/tinymce/js/tinymce/skins/content/document/content.min.css
new file mode 100644 (file)
index 0000000..8346c96
--- /dev/null
@@ -0,0 +1,7 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ */
+@media screen{html{background:#f4f4f4}}body{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen,Ubuntu,Cantarell,'Open Sans','Helvetica Neue',sans-serif}@media screen{body{background-color:#fff;box-shadow:0 0 4px rgba(0,0,0,.15);box-sizing:border-box;margin:1rem auto 0;max-width:820px;min-height:calc(100vh - 1rem);padding:4rem 6rem 6rem 6rem}}table{border-collapse:collapse}table td,table th{border:1px solid #ccc;padding:.4rem}figure figcaption{color:#999;margin-top:.25rem;text-align:center}hr{border-color:#ccc;border-style:solid;border-width:1px 0 0 0}.mce-content-body:not([dir=rtl]) blockquote{border-left:2px solid #ccc;margin-left:1.5rem;padding-left:1rem}.mce-content-body[dir=rtl] blockquote{border-right:2px solid #ccc;margin-right:1.5rem;padding-right:1rem}
diff --git a/admin/js/vendors/tinymce/js/tinymce/skins/content/writer/content.min.css b/admin/js/vendors/tinymce/js/tinymce/skins/content/writer/content.min.css
new file mode 100644 (file)
index 0000000..2983791
--- /dev/null
@@ -0,0 +1,7 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ */
+body{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen,Ubuntu,Cantarell,'Open Sans','Helvetica Neue',sans-serif;line-height:1.4;margin:1rem auto;max-width:900px}table{border-collapse:collapse}table td,table th{border:1px solid #ccc;padding:.4rem}figure{display:table;margin:1rem auto}figure figcaption{color:#999;display:block;margin-top:.25rem;text-align:center}hr{border-color:#ccc;border-style:solid;border-width:1px 0 0 0}code{background-color:#e8e8e8;border-radius:3px;padding:.1rem .2rem}.mce-content-body:not([dir=rtl]) blockquote{border-left:2px solid #ccc;margin-left:1.5rem;padding-left:1rem}.mce-content-body[dir=rtl] blockquote{border-right:2px solid #ccc;margin-right:1.5rem;padding-right:1rem}
diff --git a/admin/js/vendors/tinymce/js/tinymce/skins/ui/oxide-dark/content.inline.min.css b/admin/js/vendors/tinymce/js/tinymce/skins/ui/oxide-dark/content.inline.min.css
new file mode 100644 (file)
index 0000000..961196d
--- /dev/null
@@ -0,0 +1,7 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ */
+.mce-content-body .mce-item-anchor{background:transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'8'%20height%3D'12'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20d%3D'M0%200L8%200%208%2012%204.09117821%209%200%2012z'%2F%3E%3C%2Fsvg%3E%0A") no-repeat center;cursor:default;display:inline-block;height:12px!important;padding:0 2px;-webkit-user-modify:read-only;-moz-user-modify:read-only;-webkit-user-select:all;-moz-user-select:all;-ms-user-select:all;user-select:all;width:8px!important}.mce-content-body .mce-item-anchor[data-mce-selected]{outline-offset:1px}.tox-comments-visible .tox-comment{background-color:#fff0b7}.tox-comments-visible .tox-comment--active{background-color:#ffe168}.tox-checklist>li:not(.tox-checklist--hidden){list-style:none;margin:.25em 0}.tox-checklist>li:not(.tox-checklist--hidden)::before{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-unchecked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2215%22%20height%3D%2215%22%20x%3D%22.5%22%20y%3D%22.5%22%20fill-rule%3D%22nonzero%22%20stroke%3D%22%234C4C4C%22%20rx%3D%222%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A");background-size:100%;content:'';cursor:pointer;height:1em;margin-left:-1.5em;margin-top:.125em;position:absolute;width:1em}.tox-checklist li:not(.tox-checklist--hidden).tox-checklist--checked::before{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-checked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2216%22%20height%3D%2216%22%20fill%3D%22%234099FF%22%20fill-rule%3D%22nonzero%22%20rx%3D%222%22%2F%3E%3Cpath%20id%3D%22Path%22%20fill%3D%22%23FFF%22%20fill-rule%3D%22nonzero%22%20d%3D%22M11.5703186%2C3.14417309%20C11.8516238%2C2.73724603%2012.4164781%2C2.62829933%2012.83558%2C2.89774797%20C13.260121%2C3.17069355%2013.3759736%2C3.72932262%2013.0909105%2C4.14168582%20L7.7580587%2C11.8560195%20C7.43776896%2C12.3193404%206.76483983%2C12.3852142%206.35607322%2C11.9948725%20L3.02491697%2C8.8138662%20C2.66090143%2C8.46625845%202.65798871%2C7.89594698%203.01850234%2C7.54483354%20C3.373942%2C7.19866177%203.94940006%2C7.19592841%204.30829608%2C7.5386474%20L6.85276923%2C9.9684299%20L11.5703186%2C3.14417309%20Z%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A")}[dir=rtl] .tox-checklist>li:not(.tox-checklist--hidden)::before{margin-left:0;margin-right:-1.5em}code[class*=language-],pre[class*=language-]{color:#000;background:0 0;text-shadow:0 1px #fff;font-family:Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;tab-size:4;-webkit-hyphens:none;-ms-hyphens:none;hyphens:none}code[class*=language-] ::-moz-selection,code[class*=language-]::-moz-selection,pre[class*=language-] ::-moz-selection,pre[class*=language-]::-moz-selection{text-shadow:none;background:#b3d4fc}code[class*=language-] ::selection,code[class*=language-]::selection,pre[class*=language-] ::selection,pre[class*=language-]::selection{text-shadow:none;background:#b3d4fc}@media print{code[class*=language-],pre[class*=language-]{text-shadow:none}}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#f5f2f0}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#708090}.token.punctuation{color:#999}.namespace{opacity:.7}.token.boolean,.token.constant,.token.deleted,.token.number,.token.property,.token.symbol,.token.tag{color:#905}.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string{color:#690}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url{color:#9a6e3a;background:hsla(0,0%,100%,.5)}.token.atrule,.token.attr-value,.token.keyword{color:#07a}.token.class-name,.token.function{color:#dd4a68}.token.important,.token.regex,.token.variable{color:#e90}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.mce-content-body{overflow-wrap:break-word;word-wrap:break-word}.mce-content-body .mce-visual-caret{background-color:#000;background-color:currentcolor;position:absolute}.mce-content-body .mce-visual-caret-hidden{display:none}.mce-content-body [data-mce-caret]{left:-1000px;margin:0;padding:0;position:absolute;right:auto;top:0}.mce-content-body .mce-offscreen-selection{left:-9999999999px;max-width:1000000px;position:absolute}.mce-content-body [contentEditable=false]{cursor:default}.mce-content-body [contentEditable=true]{cursor:text}.tox-cursor-format-painter{cursor:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%3E%0A%20%20%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M15%2C6%20C15%2C5.45%2014.55%2C5%2014%2C5%20L6%2C5%20C5.45%2C5%205%2C5.45%205%2C6%20L5%2C10%20C5%2C10.55%205.45%2C11%206%2C11%20L14%2C11%20C14.55%2C11%2015%2C10.55%2015%2C10%20L15%2C9%20L16%2C9%20L16%2C12%20L9%2C12%20L9%2C19%20C9%2C19.55%209.45%2C20%2010%2C20%20L11%2C20%20C11.55%2C20%2012%2C19.55%2012%2C19%20L12%2C14%20L18%2C14%20L18%2C7%20L15%2C7%20L15%2C6%20Z%22%2F%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M1%2C1%20L8.25%2C1%20C8.66421356%2C1%209%2C1.33578644%209%2C1.75%20L9%2C1.75%20C9%2C2.16421356%208.66421356%2C2.5%208.25%2C2.5%20L2.5%2C2.5%20L2.5%2C8.25%20C2.5%2C8.66421356%202.16421356%2C9%201.75%2C9%20L1.75%2C9%20C1.33578644%2C9%201%2C8.66421356%201%2C8.25%20L1%2C1%20Z%22%2F%3E%0A%20%20%3C%2Fg%3E%0A%3C%2Fsvg%3E%0A"),default}.mce-content-body figure.align-left{float:left}.mce-content-body figure.align-right{float:right}.mce-content-body figure.image.align-center{display:table;margin-left:auto;margin-right:auto}.mce-preview-object{border:1px solid gray;display:inline-block;line-height:0;margin:0 2px 0 2px;position:relative}.mce-preview-object .mce-shim{background:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);height:100%;left:0;position:absolute;top:0;width:100%}.mce-preview-object[data-mce-selected="2"] .mce-shim{display:none}.mce-object{background:transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%3E%3Cpath%20d%3D%22M4%203h16a1%201%200%200%201%201%201v16a1%201%200%200%201-1%201H4a1%201%200%200%201-1-1V4a1%201%200%200%201%201-1zm1%202v14h14V5H5zm4.79%202.565l5.64%204.028a.5.5%200%200%201%200%20.814l-5.64%204.028a.5.5%200%200%201-.79-.407V7.972a.5.5%200%200%201%20.79-.407z%22%2F%3E%3C%2Fsvg%3E%0A") no-repeat center;border:1px dashed #aaa}.mce-pagebreak{border:1px dashed #aaa;cursor:default;display:block;height:5px;margin-top:15px;page-break-before:always;width:100%}@media print{.mce-pagebreak{border:0}}.tiny-pageembed .mce-shim{background:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);height:100%;left:0;position:absolute;top:0;width:100%}.tiny-pageembed[data-mce-selected="2"] .mce-shim{display:none}.tiny-pageembed{display:inline-block;position:relative}.tiny-pageembed--16by9,.tiny-pageembed--1by1,.tiny-pageembed--21by9,.tiny-pageembed--4by3{display:block;overflow:hidden;padding:0;position:relative;width:100%}.tiny-pageembed--16by9::before,.tiny-pageembed--1by1::before,.tiny-pageembed--21by9::before,.tiny-pageembed--4by3::before{content:"";display:block}.tiny-pageembed--21by9::before{padding-top:42.857143%}.tiny-pageembed--16by9::before{padding-top:56.25%}.tiny-pageembed--4by3::before{padding-top:75%}.tiny-pageembed--1by1::before{padding-top:100%}.tiny-pageembed--16by9 iframe,.tiny-pageembed--1by1 iframe,.tiny-pageembed--21by9 iframe,.tiny-pageembed--4by3 iframe{border:0;height:100%;left:0;position:absolute;top:0;width:100%}.mce-content-body div.mce-resizehandle{background-color:#4099ff;border-color:#4099ff;border-style:solid;border-width:1px;box-sizing:border-box;height:10px;position:absolute;width:10px;z-index:10000}.mce-content-body div.mce-resizehandle:hover{background-color:#4099ff}.mce-content-body div.mce-resizehandle:nth-of-type(1){cursor:nwse-resize}.mce-content-body div.mce-resizehandle:nth-of-type(2){cursor:nesw-resize}.mce-content-body div.mce-resizehandle:nth-of-type(3){cursor:nwse-resize}.mce-content-body div.mce-resizehandle:nth-of-type(4){cursor:nesw-resize}.mce-content-body .mce-clonedresizable{opacity:.5;outline:1px dashed #000;position:absolute;z-index:10000}.mce-content-body .mce-resize-helper{background:#555;background:rgba(0,0,0,.75);border:1px;border-radius:3px;color:#fff;display:none;font-family:sans-serif;font-size:12px;line-height:14px;margin:5px 10px;padding:5px;position:absolute;white-space:nowrap;z-index:10001}.mce-match-marker{background:#aaa;color:#fff}.mce-match-marker-selected{background:#39f;color:#fff}.mce-content-body img[data-mce-selected],.mce-content-body table[data-mce-selected]{outline:3px solid #b4d7ff}.mce-content-body hr[data-mce-selected]{outline:3px solid #b4d7ff;outline-offset:1px}.mce-content-body [contentEditable=false] [contentEditable=true]:focus{outline:3px solid #b4d7ff}.mce-content-body [contentEditable=false] [contentEditable=true]:hover{outline:3px solid #b4d7ff}.mce-content-body [contentEditable=false][data-mce-selected]{cursor:not-allowed;outline:3px solid #b4d7ff}.mce-content-body.mce-content-readonly [contentEditable=true]:focus,.mce-content-body.mce-content-readonly [contentEditable=true]:hover{outline:0}.mce-content-body [data-mce-selected=inline-boundary]{background-color:#b4d7ff}.mce-content-body .mce-edit-focus{outline:3px solid #b4d7ff}.mce-content-body td[data-mce-selected],.mce-content-body th[data-mce-selected]{background-color:#b4d7ff!important}.mce-content-body td[data-mce-selected]::-moz-selection,.mce-content-body th[data-mce-selected]::-moz-selection{background:0 0}.mce-content-body td[data-mce-selected]::selection,.mce-content-body th[data-mce-selected]::selection{background:0 0}.mce-content-body td[data-mce-selected] *,.mce-content-body th[data-mce-selected] *{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.mce-content-body img::-moz-selection{background:0 0}.mce-content-body img::selection{background:0 0}.ephox-snooker-resizer-bar{background-color:#b4d7ff;opacity:0}.ephox-snooker-resizer-cols{cursor:col-resize}.ephox-snooker-resizer-rows{cursor:row-resize}.ephox-snooker-resizer-bar.ephox-snooker-resizer-bar-dragging{opacity:1}.mce-spellchecker-word{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%23ff0000'%20fill%3D'none'%20stroke-linecap%3D'round'%20stroke-opacity%3D'.75'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A");background-position:0 calc(100% + 1px);background-repeat:repeat-x;background-size:auto 6px;cursor:default;height:2rem}.mce-spellchecker-grammar{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%2300A835'%20fill%3D'none'%20stroke-linecap%3D'round'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A");background-position:0 calc(100% + 1px);background-repeat:repeat-x;background-size:auto 6px;cursor:default}.mce-toc{border:1px solid gray}.mce-toc h2{margin:4px}.mce-toc li{list-style-type:none}.mce-item-table,.mce-item-table caption,.mce-item-table td,.mce-item-table th{border:1px dashed #bbb}.mce-visualblocks address,.mce-visualblocks article,.mce-visualblocks aside,.mce-visualblocks blockquote,.mce-visualblocks div:not([data-mce-bogus]),.mce-visualblocks dl,.mce-visualblocks figcaption,.mce-visualblocks figure,.mce-visualblocks h1,.mce-visualblocks h2,.mce-visualblocks h3,.mce-visualblocks h4,.mce-visualblocks h5,.mce-visualblocks h6,.mce-visualblocks hgroup,.mce-visualblocks ol,.mce-visualblocks p,.mce-visualblocks pre,.mce-visualblocks section,.mce-visualblocks ul{background-repeat:no-repeat;border:1px dashed #bbb;margin-left:3px;padding-top:10px}.mce-visualblocks p{background-image:url(data:image/gif;base64,R0lGODlhCQAJAJEAAAAAAP///7u7u////yH5BAEAAAMALAAAAAAJAAkAAAIQnG+CqCN/mlyvsRUpThG6AgA7)}.mce-visualblocks h1{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGu1JuxHoAfRNRW3TWXyF2YiRUAOw==)}.mce-visualblocks h2{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8Hybbx4oOuqgTynJd6bGlWg3DkJzoaUAAAOw==)}.mce-visualblocks h3{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIZjI8Hybbx4oOuqgTynJf2Ln2NOHpQpmhAAQA7)}.mce-visualblocks h4{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxInR0zqeAdhtJlXwV1oCll2HaWgAAOw==)}.mce-visualblocks h5{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjane4iq5GlW05GgIkIZUAAAOw==)}.mce-visualblocks h6{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjan04jep1iZ1XRlAo5bVgAAOw==)}.mce-visualblocks div:not([data-mce-bogus]){background-image:url(data:image/gif;base64,R0lGODlhEgAKAIABALu7u////yH5BAEAAAEALAAAAAASAAoAAAIfjI9poI0cgDywrhuxfbrzDEbQM2Ei5aRjmoySW4pAAQA7)}.mce-visualblocks section{background-image:url(data:image/gif;base64,R0lGODlhKAAKAIABALu7u////yH5BAEAAAEALAAAAAAoAAoAAAI5jI+pywcNY3sBWHdNrplytD2ellDeSVbp+GmWqaDqDMepc8t17Y4vBsK5hDyJMcI6KkuYU+jpjLoKADs=)}.mce-visualblocks article{background-image:url(data:image/gif;base64,R0lGODlhKgAKAIABALu7u////yH5BAEAAAEALAAAAAAqAAoAAAI6jI+pywkNY3wG0GBvrsd2tXGYSGnfiF7ikpXemTpOiJScasYoDJJrjsG9gkCJ0ag6KhmaIe3pjDYBBQA7)}.mce-visualblocks blockquote{background-image:url(data:image/gif;base64,R0lGODlhPgAKAIABALu7u////yH5BAEAAAEALAAAAAA+AAoAAAJPjI+py+0Knpz0xQDyuUhvfoGgIX5iSKZYgq5uNL5q69asZ8s5rrf0yZmpNkJZzFesBTu8TOlDVAabUyatguVhWduud3EyiUk45xhTTgMBBQA7)}.mce-visualblocks address{background-image:url(data:image/gif;base64,R0lGODlhLQAKAIABALu7u////yH5BAEAAAEALAAAAAAtAAoAAAI/jI+pywwNozSP1gDyyZcjb3UaRpXkWaXmZW4OqKLhBmLs+K263DkJK7OJeifh7FicKD9A1/IpGdKkyFpNmCkAADs=)}.mce-visualblocks pre{background-image:url(data:image/gif;base64,R0lGODlhFQAKAIABALu7uwAAACH5BAEAAAEALAAAAAAVAAoAAAIjjI+ZoN0cgDwSmnpz1NCueYERhnibZVKLNnbOq8IvKpJtVQAAOw==)}.mce-visualblocks figure{background-image:url(data:image/gif;base64,R0lGODlhJAAKAIAAALu7u////yH5BAEAAAEALAAAAAAkAAoAAAI0jI+py+2fwAHUSFvD3RlvG4HIp4nX5JFSpnZUJ6LlrM52OE7uSWosBHScgkSZj7dDKnWAAgA7)}.mce-visualblocks figcaption{border:1px dashed #bbb}.mce-visualblocks hgroup{background-image:url(data:image/gif;base64,R0lGODlhJwAKAIABALu7uwAAACH5BAEAAAEALAAAAAAnAAoAAAI3jI+pywYNI3uB0gpsRtt5fFnfNZaVSYJil4Wo03Hv6Z62uOCgiXH1kZIIJ8NiIxRrAZNMZAtQAAA7)}.mce-visualblocks aside{background-image:url(data:image/gif;base64,R0lGODlhHgAKAIABAKqqqv///yH5BAEAAAEALAAAAAAeAAoAAAItjI+pG8APjZOTzgtqy7I3f1yehmQcFY4WKZbqByutmW4aHUd6vfcVbgudgpYCADs=)}.mce-visualblocks ul{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIAAALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGuYnqUVSjvw26DzzXiqIDlVwAAOw==)}.mce-visualblocks ol{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybH6HHt0qourxC6CvzXieHyeWQAAOw==)}.mce-visualblocks dl{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybEOnmOvUoWznTqeuEjNSCqeGRUAOw==)}.mce-visualblocks:not([dir=rtl]) address,.mce-visualblocks:not([dir=rtl]) article,.mce-visualblocks:not([dir=rtl]) aside,.mce-visualblocks:not([dir=rtl]) blockquote,.mce-visualblocks:not([dir=rtl]) div:not([data-mce-bogus]),.mce-visualblocks:not([dir=rtl]) dl,.mce-visualblocks:not([dir=rtl]) figcaption,.mce-visualblocks:not([dir=rtl]) figure,.mce-visualblocks:not([dir=rtl]) h1,.mce-visualblocks:not([dir=rtl]) h2,.mce-visualblocks:not([dir=rtl]) h3,.mce-visualblocks:not([dir=rtl]) h4,.mce-visualblocks:not([dir=rtl]) h5,.mce-visualblocks:not([dir=rtl]) h6,.mce-visualblocks:not([dir=rtl]) hgroup,.mce-visualblocks:not([dir=rtl]) ol,.mce-visualblocks:not([dir=rtl]) p,.mce-visualblocks:not([dir=rtl]) pre,.mce-visualblocks:not([dir=rtl]) section,.mce-visualblocks:not([dir=rtl]) ul{margin-left:3px}.mce-visualblocks[dir=rtl] address,.mce-visualblocks[dir=rtl] article,.mce-visualblocks[dir=rtl] aside,.mce-visualblocks[dir=rtl] blockquote,.mce-visualblocks[dir=rtl] div:not([data-mce-bogus]),.mce-visualblocks[dir=rtl] dl,.mce-visualblocks[dir=rtl] figcaption,.mce-visualblocks[dir=rtl] figure,.mce-visualblocks[dir=rtl] h1,.mce-visualblocks[dir=rtl] h2,.mce-visualblocks[dir=rtl] h3,.mce-visualblocks[dir=rtl] h4,.mce-visualblocks[dir=rtl] h5,.mce-visualblocks[dir=rtl] h6,.mce-visualblocks[dir=rtl] hgroup,.mce-visualblocks[dir=rtl] ol,.mce-visualblocks[dir=rtl] p,.mce-visualblocks[dir=rtl] pre,.mce-visualblocks[dir=rtl] section,.mce-visualblocks[dir=rtl] ul{background-position-x:right;margin-right:3px}.mce-nbsp,.mce-shy{background:#aaa}.mce-shy::after{content:'-'}
diff --git a/admin/js/vendors/tinymce/js/tinymce/skins/ui/oxide-dark/content.min.css b/admin/js/vendors/tinymce/js/tinymce/skins/ui/oxide-dark/content.min.css
new file mode 100644 (file)
index 0000000..019c112
--- /dev/null
@@ -0,0 +1,7 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ */
+.mce-content-body .mce-item-anchor{background:transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'8'%20height%3D'12'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20d%3D'M0%200L8%200%208%2012%204.09117821%209%200%2012z'%20fill%3D%22%23cccccc%22%2F%3E%3C%2Fsvg%3E%0A") no-repeat center;cursor:default;display:inline-block;height:12px!important;padding:0 2px;-webkit-user-modify:read-only;-moz-user-modify:read-only;-webkit-user-select:all;-moz-user-select:all;-ms-user-select:all;user-select:all;width:8px!important}.mce-content-body .mce-item-anchor[data-mce-selected]{outline-offset:1px}.tox-comments-visible .tox-comment{background-color:#fff0b7}.tox-comments-visible .tox-comment--active{background-color:#ffe168}.tox-checklist>li:not(.tox-checklist--hidden){list-style:none;margin:.25em 0}.tox-checklist>li:not(.tox-checklist--hidden)::before{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-unchecked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2215%22%20height%3D%2215%22%20x%3D%22.5%22%20y%3D%22.5%22%20fill-rule%3D%22nonzero%22%20stroke%3D%22%236d737b%22%20rx%3D%222%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A");background-size:100%;content:'';cursor:pointer;height:1em;margin-left:-1.5em;margin-top:.125em;position:absolute;width:1em}.tox-checklist li:not(.tox-checklist--hidden).tox-checklist--checked::before{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-checked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2216%22%20height%3D%2216%22%20fill%3D%22%234099FF%22%20fill-rule%3D%22nonzero%22%20rx%3D%222%22%2F%3E%3Cpath%20id%3D%22Path%22%20fill%3D%22%23FFF%22%20fill-rule%3D%22nonzero%22%20d%3D%22M11.5703186%2C3.14417309%20C11.8516238%2C2.73724603%2012.4164781%2C2.62829933%2012.83558%2C2.89774797%20C13.260121%2C3.17069355%2013.3759736%2C3.72932262%2013.0909105%2C4.14168582%20L7.7580587%2C11.8560195%20C7.43776896%2C12.3193404%206.76483983%2C12.3852142%206.35607322%2C11.9948725%20L3.02491697%2C8.8138662%20C2.66090143%2C8.46625845%202.65798871%2C7.89594698%203.01850234%2C7.54483354%20C3.373942%2C7.19866177%203.94940006%2C7.19592841%204.30829608%2C7.5386474%20L6.85276923%2C9.9684299%20L11.5703186%2C3.14417309%20Z%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A")}[dir=rtl] .tox-checklist>li:not(.tox-checklist--hidden)::before{margin-left:0;margin-right:-1.5em}code[class*=language-],pre[class*=language-]{color:#f8f8f2;background:0 0;text-shadow:0 1px rgba(0,0,0,.3);font-family:Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;tab-size:4;-webkit-hyphens:none;-ms-hyphens:none;hyphens:none}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto;border-radius:.3em}:not(pre)>code[class*=language-],pre[class*=language-]{background:#282a36}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#6272a4}.token.punctuation{color:#f8f8f2}.namespace{opacity:.7}.token.constant,.token.deleted,.token.property,.token.symbol,.token.tag{color:#ff79c6}.token.boolean,.token.number{color:#bd93f9}.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string{color:#50fa7b}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url,.token.variable{color:#f8f8f2}.token.atrule,.token.attr-value,.token.class-name,.token.function{color:#f1fa8c}.token.keyword{color:#8be9fd}.token.important,.token.regex{color:#ffb86c}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.mce-content-body{overflow-wrap:break-word;word-wrap:break-word}.mce-content-body .mce-visual-caret{background-color:#000;background-color:currentcolor;position:absolute}.mce-content-body .mce-visual-caret-hidden{display:none}.mce-content-body [data-mce-caret]{left:-1000px;margin:0;padding:0;position:absolute;right:auto;top:0}.mce-content-body .mce-offscreen-selection{left:-9999999999px;max-width:1000000px;position:absolute}.mce-content-body [contentEditable=false]{cursor:default}.mce-content-body [contentEditable=true]{cursor:text}.tox-cursor-format-painter{cursor:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%3E%0A%20%20%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M15%2C6%20C15%2C5.45%2014.55%2C5%2014%2C5%20L6%2C5%20C5.45%2C5%205%2C5.45%205%2C6%20L5%2C10%20C5%2C10.55%205.45%2C11%206%2C11%20L14%2C11%20C14.55%2C11%2015%2C10.55%2015%2C10%20L15%2C9%20L16%2C9%20L16%2C12%20L9%2C12%20L9%2C19%20C9%2C19.55%209.45%2C20%2010%2C20%20L11%2C20%20C11.55%2C20%2012%2C19.55%2012%2C19%20L12%2C14%20L18%2C14%20L18%2C7%20L15%2C7%20L15%2C6%20Z%22%2F%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M1%2C1%20L8.25%2C1%20C8.66421356%2C1%209%2C1.33578644%209%2C1.75%20L9%2C1.75%20C9%2C2.16421356%208.66421356%2C2.5%208.25%2C2.5%20L2.5%2C2.5%20L2.5%2C8.25%20C2.5%2C8.66421356%202.16421356%2C9%201.75%2C9%20L1.75%2C9%20C1.33578644%2C9%201%2C8.66421356%201%2C8.25%20L1%2C1%20Z%22%2F%3E%0A%20%20%3C%2Fg%3E%0A%3C%2Fsvg%3E%0A"),default}.mce-content-body figure.align-left{float:left}.mce-content-body figure.align-right{float:right}.mce-content-body figure.image.align-center{display:table;margin-left:auto;margin-right:auto}.mce-preview-object{border:1px solid gray;display:inline-block;line-height:0;margin:0 2px 0 2px;position:relative}.mce-preview-object .mce-shim{background:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);height:100%;left:0;position:absolute;top:0;width:100%}.mce-preview-object[data-mce-selected="2"] .mce-shim{display:none}.mce-object{background:transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%3E%3Cpath%20d%3D%22M4%203h16a1%201%200%200%201%201%201v16a1%201%200%200%201-1%201H4a1%201%200%200%201-1-1V4a1%201%200%200%201%201-1zm1%202v14h14V5H5zm4.79%202.565l5.64%204.028a.5.5%200%200%201%200%20.814l-5.64%204.028a.5.5%200%200%201-.79-.407V7.972a.5.5%200%200%201%20.79-.407z%22%20fill%3D%22%23cccccc%22%2F%3E%3C%2Fsvg%3E%0A") no-repeat center;border:1px dashed #aaa}.mce-pagebreak{border:1px dashed #aaa;cursor:default;display:block;height:5px;margin-top:15px;page-break-before:always;width:100%}@media print{.mce-pagebreak{border:0}}.tiny-pageembed .mce-shim{background:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);height:100%;left:0;position:absolute;top:0;width:100%}.tiny-pageembed[data-mce-selected="2"] .mce-shim{display:none}.tiny-pageembed{display:inline-block;position:relative}.tiny-pageembed--16by9,.tiny-pageembed--1by1,.tiny-pageembed--21by9,.tiny-pageembed--4by3{display:block;overflow:hidden;padding:0;position:relative;width:100%}.tiny-pageembed--16by9::before,.tiny-pageembed--1by1::before,.tiny-pageembed--21by9::before,.tiny-pageembed--4by3::before{content:"";display:block}.tiny-pageembed--21by9::before{padding-top:42.857143%}.tiny-pageembed--16by9::before{padding-top:56.25%}.tiny-pageembed--4by3::before{padding-top:75%}.tiny-pageembed--1by1::before{padding-top:100%}.tiny-pageembed--16by9 iframe,.tiny-pageembed--1by1 iframe,.tiny-pageembed--21by9 iframe,.tiny-pageembed--4by3 iframe{border:0;height:100%;left:0;position:absolute;top:0;width:100%}.mce-content-body div.mce-resizehandle{background-color:#4099ff;border-color:#4099ff;border-style:solid;border-width:1px;box-sizing:border-box;height:10px;position:absolute;width:10px;z-index:10000}.mce-content-body div.mce-resizehandle:hover{background-color:#4099ff}.mce-content-body div.mce-resizehandle:nth-of-type(1){cursor:nwse-resize}.mce-content-body div.mce-resizehandle:nth-of-type(2){cursor:nesw-resize}.mce-content-body div.mce-resizehandle:nth-of-type(3){cursor:nwse-resize}.mce-content-body div.mce-resizehandle:nth-of-type(4){cursor:nesw-resize}.mce-content-body .mce-clonedresizable{opacity:.5;outline:1px dashed #000;position:absolute;z-index:10000}.mce-content-body .mce-resize-helper{background:#555;background:rgba(0,0,0,.75);border:1px;border-radius:3px;color:#fff;display:none;font-family:sans-serif;font-size:12px;line-height:14px;margin:5px 10px;padding:5px;position:absolute;white-space:nowrap;z-index:10001}.mce-match-marker{background:#aaa;color:#fff}.mce-match-marker-selected{background:#39f;color:#fff}.mce-content-body img[data-mce-selected],.mce-content-body table[data-mce-selected]{outline:3px solid #4099ff}.mce-content-body hr[data-mce-selected]{outline:3px solid #4099ff;outline-offset:1px}.mce-content-body [contentEditable=false] [contentEditable=true]:focus{outline:3px solid #4099ff}.mce-content-body [contentEditable=false] [contentEditable=true]:hover{outline:3px solid #4099ff}.mce-content-body [contentEditable=false][data-mce-selected]{cursor:not-allowed;outline:3px solid #4099ff}.mce-content-body.mce-content-readonly [contentEditable=true]:focus,.mce-content-body.mce-content-readonly [contentEditable=true]:hover{outline:0}.mce-content-body [data-mce-selected=inline-boundary]{background-color:#4099ff}.mce-content-body .mce-edit-focus{outline:3px solid #4099ff}.mce-content-body td[data-mce-selected],.mce-content-body th[data-mce-selected]{background-color:#b4d7ff!important}.mce-content-body td[data-mce-selected]::-moz-selection,.mce-content-body th[data-mce-selected]::-moz-selection{background:0 0}.mce-content-body td[data-mce-selected]::selection,.mce-content-body th[data-mce-selected]::selection{background:0 0}.mce-content-body td[data-mce-selected] *,.mce-content-body th[data-mce-selected] *{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.mce-content-body img::-moz-selection{background:0 0}.mce-content-body img::selection{background:0 0}.ephox-snooker-resizer-bar{background-color:#4099ff;opacity:0}.ephox-snooker-resizer-cols{cursor:col-resize}.ephox-snooker-resizer-rows{cursor:row-resize}.ephox-snooker-resizer-bar.ephox-snooker-resizer-bar-dragging{opacity:1}.mce-spellchecker-word{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%23ff0000'%20fill%3D'none'%20stroke-linecap%3D'round'%20stroke-opacity%3D'.75'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A");background-position:0 calc(100% + 1px);background-repeat:repeat-x;background-size:auto 6px;cursor:default;height:2rem}.mce-spellchecker-grammar{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%2300A835'%20fill%3D'none'%20stroke-linecap%3D'round'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A");background-position:0 calc(100% + 1px);background-repeat:repeat-x;background-size:auto 6px;cursor:default}.mce-toc{border:1px solid gray}.mce-toc h2{margin:4px}.mce-toc li{list-style-type:none}.mce-item-table,.mce-item-table caption,.mce-item-table td,.mce-item-table th{border:1px dashed #bbb}.mce-visualblocks address,.mce-visualblocks article,.mce-visualblocks aside,.mce-visualblocks blockquote,.mce-visualblocks div:not([data-mce-bogus]),.mce-visualblocks dl,.mce-visualblocks figcaption,.mce-visualblocks figure,.mce-visualblocks h1,.mce-visualblocks h2,.mce-visualblocks h3,.mce-visualblocks h4,.mce-visualblocks h5,.mce-visualblocks h6,.mce-visualblocks hgroup,.mce-visualblocks ol,.mce-visualblocks p,.mce-visualblocks pre,.mce-visualblocks section,.mce-visualblocks ul{background-repeat:no-repeat;border:1px dashed #bbb;margin-left:3px;padding-top:10px}.mce-visualblocks p{background-image:url(data:image/gif;base64,R0lGODlhCQAJAJEAAAAAAP///7u7u////yH5BAEAAAMALAAAAAAJAAkAAAIQnG+CqCN/mlyvsRUpThG6AgA7)}.mce-visualblocks h1{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGu1JuxHoAfRNRW3TWXyF2YiRUAOw==)}.mce-visualblocks h2{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8Hybbx4oOuqgTynJd6bGlWg3DkJzoaUAAAOw==)}.mce-visualblocks h3{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIZjI8Hybbx4oOuqgTynJf2Ln2NOHpQpmhAAQA7)}.mce-visualblocks h4{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxInR0zqeAdhtJlXwV1oCll2HaWgAAOw==)}.mce-visualblocks h5{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjane4iq5GlW05GgIkIZUAAAOw==)}.mce-visualblocks h6{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjan04jep1iZ1XRlAo5bVgAAOw==)}.mce-visualblocks div:not([data-mce-bogus]){background-image:url(data:image/gif;base64,R0lGODlhEgAKAIABALu7u////yH5BAEAAAEALAAAAAASAAoAAAIfjI9poI0cgDywrhuxfbrzDEbQM2Ei5aRjmoySW4pAAQA7)}.mce-visualblocks section{background-image:url(data:image/gif;base64,R0lGODlhKAAKAIABALu7u////yH5BAEAAAEALAAAAAAoAAoAAAI5jI+pywcNY3sBWHdNrplytD2ellDeSVbp+GmWqaDqDMepc8t17Y4vBsK5hDyJMcI6KkuYU+jpjLoKADs=)}.mce-visualblocks article{background-image:url(data:image/gif;base64,R0lGODlhKgAKAIABALu7u////yH5BAEAAAEALAAAAAAqAAoAAAI6jI+pywkNY3wG0GBvrsd2tXGYSGnfiF7ikpXemTpOiJScasYoDJJrjsG9gkCJ0ag6KhmaIe3pjDYBBQA7)}.mce-visualblocks blockquote{background-image:url(data:image/gif;base64,R0lGODlhPgAKAIABALu7u////yH5BAEAAAEALAAAAAA+AAoAAAJPjI+py+0Knpz0xQDyuUhvfoGgIX5iSKZYgq5uNL5q69asZ8s5rrf0yZmpNkJZzFesBTu8TOlDVAabUyatguVhWduud3EyiUk45xhTTgMBBQA7)}.mce-visualblocks address{background-image:url(data:image/gif;base64,R0lGODlhLQAKAIABALu7u////yH5BAEAAAEALAAAAAAtAAoAAAI/jI+pywwNozSP1gDyyZcjb3UaRpXkWaXmZW4OqKLhBmLs+K263DkJK7OJeifh7FicKD9A1/IpGdKkyFpNmCkAADs=)}.mce-visualblocks pre{background-image:url(data:image/gif;base64,R0lGODlhFQAKAIABALu7uwAAACH5BAEAAAEALAAAAAAVAAoAAAIjjI+ZoN0cgDwSmnpz1NCueYERhnibZVKLNnbOq8IvKpJtVQAAOw==)}.mce-visualblocks figure{background-image:url(data:image/gif;base64,R0lGODlhJAAKAIAAALu7u////yH5BAEAAAEALAAAAAAkAAoAAAI0jI+py+2fwAHUSFvD3RlvG4HIp4nX5JFSpnZUJ6LlrM52OE7uSWosBHScgkSZj7dDKnWAAgA7)}.mce-visualblocks figcaption{border:1px dashed #bbb}.mce-visualblocks hgroup{background-image:url(data:image/gif;base64,R0lGODlhJwAKAIABALu7uwAAACH5BAEAAAEALAAAAAAnAAoAAAI3jI+pywYNI3uB0gpsRtt5fFnfNZaVSYJil4Wo03Hv6Z62uOCgiXH1kZIIJ8NiIxRrAZNMZAtQAAA7)}.mce-visualblocks aside{background-image:url(data:image/gif;base64,R0lGODlhHgAKAIABAKqqqv///yH5BAEAAAEALAAAAAAeAAoAAAItjI+pG8APjZOTzgtqy7I3f1yehmQcFY4WKZbqByutmW4aHUd6vfcVbgudgpYCADs=)}.mce-visualblocks ul{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIAAALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGuYnqUVSjvw26DzzXiqIDlVwAAOw==)}.mce-visualblocks ol{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybH6HHt0qourxC6CvzXieHyeWQAAOw==)}.mce-visualblocks dl{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybEOnmOvUoWznTqeuEjNSCqeGRUAOw==)}.mce-visualblocks:not([dir=rtl]) address,.mce-visualblocks:not([dir=rtl]) article,.mce-visualblocks:not([dir=rtl]) aside,.mce-visualblocks:not([dir=rtl]) blockquote,.mce-visualblocks:not([dir=rtl]) div:not([data-mce-bogus]),.mce-visualblocks:not([dir=rtl]) dl,.mce-visualblocks:not([dir=rtl]) figcaption,.mce-visualblocks:not([dir=rtl]) figure,.mce-visualblocks:not([dir=rtl]) h1,.mce-visualblocks:not([dir=rtl]) h2,.mce-visualblocks:not([dir=rtl]) h3,.mce-visualblocks:not([dir=rtl]) h4,.mce-visualblocks:not([dir=rtl]) h5,.mce-visualblocks:not([dir=rtl]) h6,.mce-visualblocks:not([dir=rtl]) hgroup,.mce-visualblocks:not([dir=rtl]) ol,.mce-visualblocks:not([dir=rtl]) p,.mce-visualblocks:not([dir=rtl]) pre,.mce-visualblocks:not([dir=rtl]) section,.mce-visualblocks:not([dir=rtl]) ul{margin-left:3px}.mce-visualblocks[dir=rtl] address,.mce-visualblocks[dir=rtl] article,.mce-visualblocks[dir=rtl] aside,.mce-visualblocks[dir=rtl] blockquote,.mce-visualblocks[dir=rtl] div:not([data-mce-bogus]),.mce-visualblocks[dir=rtl] dl,.mce-visualblocks[dir=rtl] figcaption,.mce-visualblocks[dir=rtl] figure,.mce-visualblocks[dir=rtl] h1,.mce-visualblocks[dir=rtl] h2,.mce-visualblocks[dir=rtl] h3,.mce-visualblocks[dir=rtl] h4,.mce-visualblocks[dir=rtl] h5,.mce-visualblocks[dir=rtl] h6,.mce-visualblocks[dir=rtl] hgroup,.mce-visualblocks[dir=rtl] ol,.mce-visualblocks[dir=rtl] p,.mce-visualblocks[dir=rtl] pre,.mce-visualblocks[dir=rtl] section,.mce-visualblocks[dir=rtl] ul{background-position-x:right;margin-right:3px}.mce-nbsp,.mce-shy{background:#aaa}.mce-shy::after{content:'-'}body{font-family:sans-serif}table{border-collapse:collapse}
diff --git a/admin/js/vendors/tinymce/js/tinymce/skins/ui/oxide-dark/content.mobile.min.css b/admin/js/vendors/tinymce/js/tinymce/skins/ui/oxide-dark/content.mobile.min.css
new file mode 100644 (file)
index 0000000..35f7dc0
--- /dev/null
@@ -0,0 +1,7 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ */
+.tinymce-mobile-unfocused-selections .tinymce-mobile-unfocused-selection{background-color:green;display:inline-block;opacity:.5;position:absolute}body{-webkit-text-size-adjust:none}body img{max-width:96vw}body table img{max-width:95%}body{font-family:sans-serif}table{border-collapse:collapse}
diff --git a/admin/js/vendors/tinymce/js/tinymce/skins/ui/oxide-dark/fonts/tinymce-mobile.woff b/admin/js/vendors/tinymce/js/tinymce/skins/ui/oxide-dark/fonts/tinymce-mobile.woff
new file mode 100644 (file)
index 0000000..1e3be03
Binary files /dev/null and b/admin/js/vendors/tinymce/js/tinymce/skins/ui/oxide-dark/fonts/tinymce-mobile.woff differ
diff --git a/admin/js/vendors/tinymce/js/tinymce/skins/ui/oxide-dark/skin.min.css b/admin/js/vendors/tinymce/js/tinymce/skins/ui/oxide-dark/skin.min.css
new file mode 100644 (file)
index 0000000..b110a57
--- /dev/null
@@ -0,0 +1,7 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ */
+.tox{box-sizing:content-box;color:#2a3746;cursor:auto;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:16px;font-style:normal;font-weight:400;line-height:normal;-webkit-tap-highlight-color:transparent;text-decoration:none;text-shadow:none;text-transform:none;vertical-align:initial;white-space:normal}.tox :not(svg){box-sizing:inherit;color:inherit;cursor:inherit;direction:inherit;font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;line-height:inherit;-webkit-tap-highlight-color:inherit;text-align:inherit;text-decoration:inherit;text-shadow:inherit;text-transform:inherit;vertical-align:inherit;white-space:inherit}.tox :not(svg){background:0 0;border:0;float:none;height:auto;margin:0;max-width:none;outline:0;padding:0;position:static;width:auto}.tox:not([dir=rtl]){direction:ltr;text-align:left}.tox[dir=rtl]{direction:rtl;text-align:right}.tox-tinymce{border:1px solid #000;border-radius:0;box-shadow:none;box-sizing:border-box;display:flex;flex-direction:column;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;overflow:hidden;position:relative;visibility:inherit!important}.tox-tinymce-inline{border:none;box-shadow:none}.tox-tinymce-inline .tox-editor-header{border:1px solid #000;border-bottom:0;border-radius:0;box-shadow:none}.tox-tinymce-aux{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;z-index:1300}.tox-tinymce :focus,.tox-tinymce-aux :focus{outline:0}button::-moz-focus-inner{border:0}.tox .accessibility-issue__header{align-items:center;display:flex;margin-bottom:4px}.tox .accessibility-issue__description{align-items:stretch;border:1px solid #000;border-radius:3px;display:flex;justify-content:space-between}.tox .accessibility-issue__description>div{padding-bottom:4px}.tox .accessibility-issue__description>div>div{align-items:center;display:flex;margin-bottom:4px}.tox .accessibility-issue__description>:last-child:not(:only-child){border-color:#000;border-style:solid}.tox .accessibility-issue__repair{margin-top:16px}.tox .accessibility-issue--info .accessibility-issue__description{background-color:rgba(32,122,183,.5);border-color:#207ab7;color:#fff}.tox .accessibility-issue--info .accessibility-issue__description>:last-child{border-color:#207ab7}.tox .accessibility-issue--info h2{color:#fff}.tox .accessibility-issue--info .tox-icon svg{fill:#fff}.tox .accessibility-issue--info a .tox-icon{color:#fff}.tox .accessibility-issue--warn .accessibility-issue__description{background-color:rgba(255,165,0,.5);border-color:rgba(255,165,0,.8);color:#fff}.tox .accessibility-issue--warn .accessibility-issue__description>:last-child{border-color:rgba(255,165,0,.8)}.tox .accessibility-issue--warn h2{color:#fff}.tox .accessibility-issue--warn .tox-icon svg{fill:#fff}.tox .accessibility-issue--warn a .tox-icon{color:#fff}.tox .accessibility-issue--error .accessibility-issue__description{background-color:rgba(204,0,0,.5);border-color:rgba(204,0,0,.8);color:#fff}.tox .accessibility-issue--error .accessibility-issue__description>:last-child{border-color:rgba(204,0,0,.8)}.tox .accessibility-issue--error h2{color:#fff}.tox .accessibility-issue--error .tox-icon svg{fill:#fff}.tox .accessibility-issue--error a .tox-icon{color:#fff}.tox .accessibility-issue--success .accessibility-issue__description{background-color:rgba(120,171,70,.5);border-color:rgba(120,171,70,.8);color:#fff}.tox .accessibility-issue--success .accessibility-issue__description>:last-child{border-color:rgba(120,171,70,.8)}.tox .accessibility-issue--success h2{color:#fff}.tox .accessibility-issue--success .tox-icon svg{fill:#fff}.tox .accessibility-issue--success a .tox-icon{color:#fff}.tox .tox-dialog__body-content .accessibility-issue__header h1,.tox .tox-dialog__body-content .tox-form__group .accessibility-issue__description h2{margin-top:0}.tox:not([dir=rtl]) .accessibility-issue__header .tox-button{margin-left:4px}.tox:not([dir=rtl]) .accessibility-issue__header>:nth-last-child(2){margin-left:auto}.tox:not([dir=rtl]) .accessibility-issue__description{padding:4px 4px 4px 8px}.tox:not([dir=rtl]) .accessibility-issue__description>:last-child{border-left-width:1px;padding-left:4px}.tox[dir=rtl] .accessibility-issue__header .tox-button{margin-right:4px}.tox[dir=rtl] .accessibility-issue__header>:nth-last-child(2){margin-right:auto}.tox[dir=rtl] .accessibility-issue__description{padding:4px 8px 4px 4px}.tox[dir=rtl] .accessibility-issue__description>:last-child{border-right-width:1px;padding-right:4px}.tox .tox-anchorbar{display:flex;flex:0 0 auto}.tox .tox-bar{display:flex;flex:0 0 auto}.tox .tox-button{background-color:#207ab7;background-image:none;background-position:none;background-repeat:none;border-color:#207ab7;border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;color:#fff;cursor:pointer;display:inline-block;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:14px;font-weight:700;letter-spacing:1;line-height:24px;margin:0;outline:0;padding:4px 16px;text-align:center;text-decoration:none;text-transform:capitalize;white-space:nowrap}.tox .tox-button[disabled]{background-color:#207ab7;background-image:none;border-color:#207ab7;box-shadow:none;color:rgba(255,255,255,.5);cursor:not-allowed}.tox .tox-button:focus:not(:disabled){background-color:#1c6ca1;background-image:none;border-color:#1c6ca1;box-shadow:none;color:#fff}.tox .tox-button:hover:not(:disabled){background-color:#1c6ca1;background-image:none;border-color:#1c6ca1;box-shadow:none;color:#fff}.tox .tox-button:active:not(:disabled){background-color:#185d8c;background-image:none;border-color:#185d8c;box-shadow:none;color:#fff}.tox .tox-button--secondary{background-color:#3d546f;background-image:none;background-position:none;background-repeat:none;border-color:#3d546f;border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;color:#fff;outline:0;padding:4px 16px;text-decoration:none;text-transform:capitalize}.tox .tox-button--secondary[disabled]{background-color:#3d546f;background-image:none;border-color:#3d546f;box-shadow:none;color:rgba(255,255,255,.5)}.tox .tox-button--secondary:focus:not(:disabled){background-color:#34485f;background-image:none;border-color:#34485f;box-shadow:none;color:#fff}.tox .tox-button--secondary:hover:not(:disabled){background-color:#34485f;background-image:none;border-color:#34485f;box-shadow:none;color:#fff}.tox .tox-button--secondary:active:not(:disabled){background-color:#2b3b4e;background-image:none;border-color:#2b3b4e;box-shadow:none;color:#fff}.tox .tox-button--icon,.tox .tox-button.tox-button--icon,.tox .tox-button.tox-button--secondary.tox-button--icon{padding:4px}.tox .tox-button--icon .tox-icon svg,.tox .tox-button.tox-button--icon .tox-icon svg,.tox .tox-button.tox-button--secondary.tox-button--icon .tox-icon svg{display:block;fill:currentColor}.tox .tox-button-link{background:0;border:none;box-sizing:border-box;cursor:pointer;display:inline-block;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:16px;font-weight:400;line-height:1.3;margin:0;padding:0;white-space:nowrap}.tox .tox-button-link--sm{font-size:14px}.tox .tox-button--naked{background-color:transparent;border-color:transparent;box-shadow:unset;color:#fff}.tox .tox-button--naked[disabled]{background-color:#3d546f;border-color:#3d546f;box-shadow:none;color:rgba(255,255,255,.5)}.tox .tox-button--naked:hover:not(:disabled){background-color:#34485f;border-color:#34485f;box-shadow:none;color:#fff}.tox .tox-button--naked:focus:not(:disabled){background-color:#34485f;border-color:#34485f;box-shadow:none;color:#fff}.tox .tox-button--naked:active:not(:disabled){background-color:#2b3b4e;border-color:#2b3b4e;box-shadow:none;color:#fff}.tox .tox-button--naked .tox-icon svg{fill:currentColor}.tox .tox-button--naked.tox-button--icon:hover:not(:disabled){color:#fff}.tox .tox-checkbox{align-items:center;border-radius:3px;cursor:pointer;display:flex;height:36px;min-width:36px}.tox .tox-checkbox__input{height:1px;overflow:hidden;position:absolute;top:auto;width:1px}.tox .tox-checkbox__icons{align-items:center;border-radius:3px;box-shadow:0 0 0 2px transparent;box-sizing:content-box;display:flex;height:24px;justify-content:center;padding:calc(4px - 1px);width:24px}.tox .tox-checkbox__icons .tox-checkbox-icon__unchecked svg{display:block;fill:rgba(255,255,255,.2)}.tox .tox-checkbox__icons .tox-checkbox-icon__indeterminate svg{display:none;fill:#207ab7}.tox .tox-checkbox__icons .tox-checkbox-icon__checked svg{display:none;fill:#207ab7}.tox .tox-checkbox--disabled{color:rgba(255,255,255,.5);cursor:not-allowed}.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__checked svg{fill:rgba(255,255,255,.5)}.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__unchecked svg{fill:rgba(255,255,255,.5)}.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__indeterminate svg{fill:rgba(255,255,255,.5)}.tox input.tox-checkbox__input:checked+.tox-checkbox__icons .tox-checkbox-icon__unchecked svg{display:none}.tox input.tox-checkbox__input:checked+.tox-checkbox__icons .tox-checkbox-icon__checked svg{display:block}.tox input.tox-checkbox__input:indeterminate+.tox-checkbox__icons .tox-checkbox-icon__unchecked svg{display:none}.tox input.tox-checkbox__input:indeterminate+.tox-checkbox__icons .tox-checkbox-icon__indeterminate svg{display:block}.tox input.tox-checkbox__input:focus+.tox-checkbox__icons{border-radius:3px;box-shadow:inset 0 0 0 1px #207ab7;padding:calc(4px - 1px)}.tox:not([dir=rtl]) .tox-checkbox__label{margin-left:4px}.tox:not([dir=rtl]) .tox-checkbox__input{left:-10000px}.tox:not([dir=rtl]) .tox-bar .tox-checkbox{margin-left:4px}.tox[dir=rtl] .tox-checkbox__label{margin-right:4px}.tox[dir=rtl] .tox-checkbox__input{right:-10000px}.tox[dir=rtl] .tox-bar .tox-checkbox{margin-right:4px}.tox .tox-collection--toolbar .tox-collection__group{display:flex;padding:0}.tox .tox-collection--grid .tox-collection__group{display:flex;flex-wrap:wrap;max-height:208px;overflow-x:hidden;overflow-y:auto;padding:0}.tox .tox-collection--list .tox-collection__group{border-bottom-width:0;border-color:#1a1a1a;border-left-width:0;border-right-width:0;border-style:solid;border-top-width:1px;padding:4px 0}.tox .tox-collection--list .tox-collection__group:first-child{border-top-width:0}.tox .tox-collection__group-heading{background-color:#333;color:#fff;cursor:default;font-size:12px;font-style:normal;font-weight:400;margin-bottom:4px;margin-top:-4px;padding:4px 8px;text-transform:none;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.tox .tox-collection__item{align-items:center;color:#fff;cursor:pointer;display:flex;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.tox .tox-collection--list .tox-collection__item{padding:4px 8px}.tox .tox-collection--toolbar .tox-collection__item{border-radius:3px;padding:4px}.tox .tox-collection--grid .tox-collection__item{border-radius:3px;padding:4px}.tox .tox-collection--list .tox-collection__item--enabled{background-color:inherit;color:contrast(inherit,#2a3746,#fff)}.tox .tox-collection--list .tox-collection__item--active{background-color:#4a5562}.tox .tox-collection--toolbar .tox-collection__item--enabled{background-color:#757d87;color:#fff}.tox .tox-collection--toolbar .tox-collection__item--active{background-color:#4a5562}.tox .tox-collection--grid .tox-collection__item--enabled{background-color:#757d87;color:#fff}.tox .tox-collection--grid .tox-collection__item--active{background-color:#4a5562}.tox .tox-collection--list .tox-collection__item--active:not(.tox-collection__item--state-disabled){color:#fff}.tox .tox-collection--toolbar .tox-collection__item--active:not(.tox-collection__item--state-disabled){color:#fff}.tox .tox-collection--grid .tox-collection__item--active:not(.tox-collection__item--state-disabled){color:#fff}.tox .tox-collection__item--state-disabled{background-color:transparent;color:rgba(255,255,255,.5);cursor:not-allowed}.tox .tox-collection__item-icon{align-items:center;display:flex;height:24px;justify-content:center;width:24px}.tox .tox-collection__item-icon svg{fill:currentColor}.tox .tox-collection--toolbar-lg .tox-collection__item-icon{height:48px;width:48px}.tox .tox-collection__item-label{color:currentColor;display:inline-block;flex:1;-ms-flex-preferred-size:auto;font-size:14px;font-style:normal;font-weight:400;line-height:24px;text-transform:none;word-break:break-all}.tox .tox-collection__item-accessory{color:rgba(255,255,255,.5);display:inline-block;font-size:14px;height:24px;line-height:24px;text-transform:normal}.tox .tox-collection__item-caret{align-items:center;display:flex;min-height:24px}.tox .tox-collection__item-caret::after{content:'';font-size:0;min-height:inherit}.tox .tox-collection__item-caret svg{fill:#fff}.tox .tox-collection__item[role=menuitemcheckbox]:not(.tox-collection__item--enabled) .tox-collection__item-checkmark svg{display:none}.tox .tox-collection--horizontal{background-color:#2b3b4e;border:1px solid #1a1a1a;border-radius:3px;box-shadow:0 1px 3px rgba(0,0,0,.15);display:flex;flex:0 0 auto;flex-shrink:0;flex-wrap:nowrap;margin-bottom:0;overflow-x:auto;padding:0}.tox .tox-collection--horizontal .tox-collection__group{align-items:center;display:flex;flex-wrap:nowrap;margin:0;padding:0 4px}.tox .tox-collection--horizontal .tox-collection__item{height:34px;margin:2px 0 3px 0;padding:0 4px}.tox .tox-collection--horizontal .tox-collection__item-label{white-space:nowrap}.tox .tox-collection--horizontal .tox-collection__item-caret{margin-left:4px}.tox:not([dir=rtl]) .tox-collection--horizontal .tox-collection__group:not(:last-of-type){border-right:1px solid #000}.tox:not([dir=rtl]) .tox-collection--list .tox-collection__item>:not(:first-child){margin-left:8px}.tox:not([dir=rtl]) .tox-collection--list .tox-collection__item-label:first-child{margin-left:4px}.tox:not([dir=rtl]) .tox-collection__item-accessory{margin-left:16px;text-align:right}.tox:not([dir=rtl]) .tox-collection .tox-collection__item-caret{margin-left:16px}.tox[dir=rtl] .tox-collection--horizontal .tox-collection__group:not(:last-of-type){border-left:1px solid #000}.tox[dir=rtl] .tox-collection--list .tox-collection__item>:not(:first-child){margin-right:8px}.tox[dir=rtl] .tox-collection--list .tox-collection__item-label:first-child{margin-right:4px}.tox[dir=rtl] .tox-collection__item-icon-rtl .tox-collection__item-icon svg{transform:rotateY(180deg)}.tox[dir=rtl] .tox-collection__item-accessory{margin-right:16px;text-align:left}.tox[dir=rtl] .tox-collection .tox-collection__item-caret{margin-right:16px;transform:rotateY(180deg)}.tox[dir=rtl] .tox-collection--horizontal .tox-collection__item-caret{margin-right:4px}.tox .tox-color-picker-container{display:flex;flex-direction:row;height:225px;margin:0}.tox .tox-sv-palette{box-sizing:border-box;display:flex;height:100%}.tox .tox-sv-palette-spectrum{height:100%}.tox .tox-sv-palette,.tox .tox-sv-palette-spectrum{width:225px}.tox .tox-sv-palette-thumb{background:0 0;border:1px solid #000;border-radius:50%;box-sizing:content-box;height:12px;position:absolute;width:12px}.tox .tox-sv-palette-inner-thumb{border:1px solid #fff;border-radius:50%;height:10px;position:absolute;width:10px}.tox .tox-hue-slider{box-sizing:border-box;height:100%;width:25px}.tox .tox-hue-slider-spectrum{background:linear-gradient(to bottom,red,#ff0080,#f0f,#8000ff,#00f,#0080ff,#0ff,#00ff80,#0f0,#80ff00,#ff0,#ff8000,red);height:100%;width:100%}.tox .tox-hue-slider,.tox .tox-hue-slider-spectrum{width:20px}.tox .tox-hue-slider-thumb{background:#fff;border:1px solid #000;box-sizing:content-box;height:4px;width:100%}.tox .tox-rgb-form{display:flex;flex-direction:column;justify-content:space-between}.tox .tox-rgb-form div{align-items:center;display:flex;justify-content:space-between;margin-bottom:5px;width:inherit}.tox .tox-rgb-form input{width:6em}.tox .tox-rgb-form input.tox-invalid{border:1px solid red!important}.tox .tox-rgb-form .tox-rgba-preview{border:1px solid #000;flex-grow:2;margin-bottom:0}.tox:not([dir=rtl]) .tox-sv-palette{margin-right:15px}.tox:not([dir=rtl]) .tox-hue-slider{margin-right:15px}.tox:not([dir=rtl]) .tox-hue-slider-thumb{margin-left:-1px}.tox:not([dir=rtl]) .tox-rgb-form label{margin-right:.5em}.tox[dir=rtl] .tox-sv-palette{margin-left:15px}.tox[dir=rtl] .tox-hue-slider{margin-left:15px}.tox[dir=rtl] .tox-hue-slider-thumb{margin-right:-1px}.tox[dir=rtl] .tox-rgb-form label{margin-left:.5em}.tox .tox-toolbar .tox-swatches,.tox .tox-toolbar__overflow .tox-swatches,.tox .tox-toolbar__primary .tox-swatches{margin:2px 0 3px 4px}.tox .tox-collection--list .tox-collection__group .tox-swatches-menu{border:0;margin:-4px 0}.tox .tox-swatches__row{display:flex}.tox .tox-swatch{height:30px;transition:transform .15s,box-shadow .15s;width:30px}.tox .tox-swatch:focus,.tox .tox-swatch:hover{box-shadow:0 0 0 1px rgba(127,127,127,.3) inset;transform:scale(.8)}.tox .tox-swatch--remove{align-items:center;display:flex;justify-content:center}.tox .tox-swatch--remove svg path{stroke:#e74c3c}.tox .tox-swatches__picker-btn{align-items:center;background-color:transparent;border:0;cursor:pointer;display:flex;height:30px;justify-content:center;outline:0;padding:0;width:30px}.tox .tox-swatches__picker-btn svg{height:24px;width:24px}.tox .tox-swatches__picker-btn:hover{background:#4a5562}.tox:not([dir=rtl]) .tox-swatches__picker-btn{margin-left:auto}.tox[dir=rtl] .tox-swatches__picker-btn{margin-right:auto}.tox .tox-comment-thread{background:#2b3b4e;position:relative}.tox .tox-comment-thread>:not(:first-child){margin-top:8px}.tox .tox-comment{background:#2b3b4e;border:1px solid #000;border-radius:3px;box-shadow:0 4px 8px 0 rgba(42,55,70,.1);padding:8px 8px 16px 8px;position:relative}.tox .tox-comment__header{align-items:center;color:#fff;display:flex;justify-content:space-between}.tox .tox-comment__date{color:rgba(255,255,255,.5);font-size:12px}.tox .tox-comment__body{color:#fff;font-size:14px;font-style:normal;font-weight:400;line-height:1.3;margin-top:8px;position:relative;text-transform:initial}.tox .tox-comment__body textarea{resize:none;white-space:normal;width:100%}.tox .tox-comment__expander{padding-top:8px}.tox .tox-comment__expander p{color:rgba(255,255,255,.5);font-size:14px;font-style:normal}.tox .tox-comment__body p{margin:0}.tox .tox-comment__buttonspacing{padding-top:16px;text-align:center}.tox .tox-comment-thread__overlay::after{background:#2b3b4e;bottom:0;content:"";display:flex;left:0;opacity:.9;position:absolute;right:0;top:0;z-index:5}.tox .tox-comment__reply{display:flex;flex-shrink:0;flex-wrap:wrap;justify-content:flex-end;margin-top:8px}.tox .tox-comment__reply>:first-child{margin-bottom:8px;width:100%}.tox .tox-comment__edit{display:flex;flex-wrap:wrap;justify-content:flex-end;margin-top:16px}.tox .tox-comment__gradient::after{background:linear-gradient(rgba(43,59,78,0),#2b3b4e);bottom:0;content:"";display:block;height:5em;margin-top:-40px;position:absolute;width:100%}.tox .tox-comment__overlay{background:#2b3b4e;bottom:0;display:flex;flex-direction:column;flex-grow:1;left:0;opacity:.9;position:absolute;right:0;text-align:center;top:0;z-index:5}.tox .tox-comment__loading-text{align-items:center;color:#fff;display:flex;flex-direction:column;position:relative}.tox .tox-comment__loading-text>div{padding-bottom:16px}.tox .tox-comment__overlaytext{bottom:0;flex-direction:column;font-size:14px;left:0;padding:1em;position:absolute;right:0;top:0;z-index:10}.tox .tox-comment__overlaytext p{background-color:#2b3b4e;box-shadow:0 0 8px 8px #2b3b4e;color:#fff;text-align:center}.tox .tox-comment__overlaytext div:nth-of-type(2){font-size:.8em}.tox .tox-comment__busy-spinner{align-items:center;background-color:#2b3b4e;bottom:0;display:flex;justify-content:center;left:0;position:absolute;right:0;top:0;z-index:20}.tox .tox-comment__scroll{display:flex;flex-direction:column;flex-shrink:1;overflow:auto}.tox .tox-conversations{margin:8px}.tox:not([dir=rtl]) .tox-comment__edit{margin-left:8px}.tox:not([dir=rtl]) .tox-comment__buttonspacing>:last-child,.tox:not([dir=rtl]) .tox-comment__edit>:last-child,.tox:not([dir=rtl]) .tox-comment__reply>:last-child{margin-left:8px}.tox[dir=rtl] .tox-comment__edit{margin-right:8px}.tox[dir=rtl] .tox-comment__buttonspacing>:last-child,.tox[dir=rtl] .tox-comment__edit>:last-child,.tox[dir=rtl] .tox-comment__reply>:last-child{margin-right:8px}.tox .tox-user{align-items:center;display:flex}.tox .tox-user__avatar svg{fill:rgba(255,255,255,.5)}.tox .tox-user__name{color:rgba(255,255,255,.5);font-size:12px;font-style:normal;font-weight:700;text-transform:uppercase}.tox:not([dir=rtl]) .tox-user__avatar svg{margin-right:8px}.tox:not([dir=rtl]) .tox-user__avatar+.tox-user__name{margin-left:8px}.tox[dir=rtl] .tox-user__avatar svg{margin-left:8px}.tox[dir=rtl] .tox-user__avatar+.tox-user__name{margin-right:8px}.tox .tox-dialog-wrap{align-items:center;bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:1100}.tox .tox-dialog-wrap__backdrop{background-color:rgba(34,47,62,.75);bottom:0;left:0;position:absolute;right:0;top:0;z-index:1}.tox .tox-dialog-wrap__backdrop--opaque{background-color:#222f3e}.tox .tox-dialog{background-color:#2b3b4e;border-color:#000;border-radius:3px;border-style:solid;border-width:1px;box-shadow:0 16px 16px -10px rgba(42,55,70,.15),0 0 40px 1px rgba(42,55,70,.15);display:flex;flex-direction:column;max-height:100%;max-width:480px;overflow:hidden;position:relative;width:95vw;z-index:2}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox .tox-dialog{align-self:flex-start;margin:8px auto;width:calc(100vw - 16px)}}.tox .tox-dialog-inline{z-index:1100}.tox .tox-dialog__header{align-items:center;background-color:#2b3b4e;border-bottom:none;color:#fff;display:flex;font-size:16px;justify-content:space-between;padding:8px 16px 0 16px;position:relative}.tox .tox-dialog__header .tox-button{z-index:1}.tox .tox-dialog__draghandle{cursor:grab;height:100%;left:0;position:absolute;top:0;width:100%}.tox .tox-dialog__draghandle:active{cursor:grabbing}.tox .tox-dialog__dismiss{margin-left:auto}.tox .tox-dialog__title{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:20px;font-style:normal;font-weight:400;line-height:1.3;margin:0;text-transform:normal}.tox .tox-dialog__body{color:#fff;display:flex;flex:1;-ms-flex-preferred-size:auto;font-size:16px;font-style:normal;font-weight:400;line-height:1.3;min-width:0;text-align:left;text-transform:normal}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox .tox-dialog__body{flex-direction:column}}.tox .tox-dialog__body-nav{align-items:flex-start;display:flex;flex-direction:column;padding:16px 16px}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox .tox-dialog__body-nav{flex-direction:row;-webkit-overflow-scrolling:touch;overflow-x:auto;padding-bottom:0}}.tox .tox-dialog__body-nav-item{border-bottom:2px solid transparent;color:rgba(255,255,255,.5);display:inline-block;font-size:14px;line-height:1.3;margin-bottom:8px;text-decoration:none;white-space:nowrap}.tox .tox-dialog__body-nav-item:focus{background-color:rgba(32,122,183,.1)}.tox .tox-dialog__body-nav-item--active{border-bottom:2px solid #207ab7;color:#207ab7}.tox .tox-dialog__body-content{box-sizing:border-box;display:flex;flex:1;flex-direction:column;-ms-flex-preferred-size:auto;max-height:650px;overflow:auto;-webkit-overflow-scrolling:touch;padding:16px 16px}.tox .tox-dialog__body-content>*{margin-bottom:0;margin-top:16px}.tox .tox-dialog__body-content>:first-child{margin-top:0}.tox .tox-dialog__body-content>:last-child{margin-bottom:0}.tox .tox-dialog__body-content>:only-child{margin-bottom:0;margin-top:0}.tox .tox-dialog__body-content a{color:#207ab7;cursor:pointer;text-decoration:none}.tox .tox-dialog__body-content a:focus,.tox .tox-dialog__body-content a:hover{color:#185d8c;text-decoration:none}.tox .tox-dialog__body-content a:active{color:#185d8c;text-decoration:none}.tox .tox-dialog__body-content ul{display:block;list-style-type:disc;margin-bottom:16px;-webkit-margin-end:0;margin-inline-end:0;-webkit-margin-start:0;margin-inline-start:0;-webkit-padding-start:2.5rem;padding-inline-start:2.5rem}.tox .tox-dialog__body-content .tox-form__group h1{font-size:20px;font-weight:700;margin-bottom:16px;margin-top:2rem}.tox .tox-dialog__body-content .tox-form__group h2{font-size:16px;font-weight:700;margin-bottom:16px;margin-top:2rem}.tox .tox-dialog__body-content .tox-form__group p{margin-bottom:16px}.tox .tox-dialog__body-content .tox-form__group h1:first-child,.tox .tox-dialog__body-content .tox-form__group h2:first-child,.tox .tox-dialog__body-content .tox-form__group p:first-child{margin-top:0}.tox .tox-dialog__body-content .tox-form__group h1:last-child,.tox .tox-dialog__body-content .tox-form__group h2:last-child,.tox .tox-dialog__body-content .tox-form__group p:last-child{margin-bottom:0}.tox .tox-dialog__body-content .tox-form__group h1:only-child,.tox .tox-dialog__body-content .tox-form__group h2:only-child,.tox .tox-dialog__body-content .tox-form__group p:only-child{margin-bottom:0;margin-top:0}.tox .tox-dialog--width-lg{height:650px;max-width:1200px}.tox .tox-dialog--width-md{max-width:800px}.tox .tox-dialog--width-md .tox-dialog__body-content{overflow:auto}.tox .tox-dialog__body-content--centered{text-align:center}.tox .tox-dialog__footer{align-items:center;background-color:#2b3b4e;border-top:1px solid #000;display:flex;justify-content:space-between;padding:8px 16px}.tox .tox-dialog__footer-end,.tox .tox-dialog__footer-start{display:flex}.tox .tox-dialog__busy-spinner{align-items:center;background-color:rgba(34,47,62,.75);bottom:0;display:flex;justify-content:center;left:0;position:absolute;right:0;top:0;z-index:3}.tox .tox-dialog__table{border-collapse:collapse;width:100%}.tox .tox-dialog__table thead th{font-weight:700;padding-bottom:8px}.tox .tox-dialog__table tbody tr{border-bottom:1px solid #000}.tox .tox-dialog__table tbody tr:last-child{border-bottom:none}.tox .tox-dialog__table td{padding-bottom:8px;padding-top:8px}.tox .tox-dialog__popups{position:absolute;width:100%;z-index:1100}.tox .tox-dialog__body-iframe{display:flex;flex:1;flex-direction:column;-ms-flex-preferred-size:auto}.tox .tox-dialog__body-iframe .tox-navobj{display:flex;flex:1;-ms-flex-preferred-size:auto}.tox .tox-dialog__body-iframe .tox-navobj :nth-child(2){flex:1;-ms-flex-preferred-size:auto;height:100%}.tox .tox-dialog-dock-fadeout{opacity:0;visibility:hidden}.tox .tox-dialog-dock-fadein{opacity:1;visibility:visible}.tox .tox-dialog-dock-transition{transition:visibility 0s linear .3s,opacity .3s ease}.tox .tox-dialog-dock-transition.tox-dialog-dock-fadein{transition-delay:0s}body.tox-dialog__disable-scroll{overflow:hidden}.tox.tox-platform-ie .tox-dialog-wrap{position:-ms-device-fixed}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox:not([dir=rtl]) .tox-dialog__body-nav{margin-right:0}}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox:not([dir=rtl]) .tox-dialog__body-nav-item:not(:first-child){margin-left:8px}}.tox:not([dir=rtl]) .tox-dialog__footer .tox-dialog__footer-end>*,.tox:not([dir=rtl]) .tox-dialog__footer .tox-dialog__footer-start>*{margin-left:8px}.tox[dir=rtl] .tox-dialog__body{text-align:right}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox[dir=rtl] .tox-dialog__body-nav{margin-left:0}}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox[dir=rtl] .tox-dialog__body-nav-item:not(:first-child){margin-right:8px}}.tox[dir=rtl] .tox-dialog__footer .tox-dialog__footer-end>*,.tox[dir=rtl] .tox-dialog__footer .tox-dialog__footer-start>*{margin-right:8px}.tox .tox-dropzone-container{display:flex;flex:1;-ms-flex-preferred-size:auto}.tox .tox-dropzone{align-items:center;background:#fff;border:2px dashed #000;box-sizing:border-box;display:flex;flex-direction:column;flex-grow:1;justify-content:center;min-height:100px;padding:10px}.tox .tox-dropzone p{color:rgba(255,255,255,.5);margin:0 0 16px 0}.tox .tox-edit-area{display:flex;flex:1;-ms-flex-preferred-size:auto;overflow:hidden;position:relative}.tox .tox-edit-area__iframe{background-color:#fff;border:0;box-sizing:border-box;flex:1;-ms-flex-preferred-size:auto;height:100%;position:absolute;width:100%}.tox.tox-inline-edit-area{border:1px dotted #000}.tox .tox-editor-container{display:flex;flex:1 1 auto;flex-direction:column;overflow:hidden}.tox .tox-editor-header{z-index:1}.tox-editor-dock-fadeout{opacity:0;visibility:hidden}.tox-editor-dock-fadein{opacity:1;visibility:visible}.tox-editor-dock-transition{transition:visibility 0s linear .25s,opacity .25s ease}.tox-editor-dock-transition.tox-editor-dock-fadein{transition-delay:0s}.tox .tox-control-wrap{flex:1;position:relative}.tox .tox-control-wrap:not(.tox-control-wrap--status-invalid) .tox-control-wrap__status-icon-invalid,.tox .tox-control-wrap:not(.tox-control-wrap--status-unknown) .tox-control-wrap__status-icon-unknown,.tox .tox-control-wrap:not(.tox-control-wrap--status-valid) .tox-control-wrap__status-icon-valid{display:none}.tox .tox-control-wrap svg{display:block}.tox .tox-control-wrap__status-icon-wrap{position:absolute;top:50%;transform:translateY(-50%)}.tox .tox-control-wrap__status-icon-invalid svg{fill:#c00}.tox .tox-control-wrap__status-icon-unknown svg{fill:orange}.tox .tox-control-wrap__status-icon-valid svg{fill:green}.tox:not([dir=rtl]) .tox-control-wrap--status-invalid .tox-textfield,.tox:not([dir=rtl]) .tox-control-wrap--status-unknown .tox-textfield,.tox:not([dir=rtl]) .tox-control-wrap--status-valid .tox-textfield{padding-right:32px}.tox:not([dir=rtl]) .tox-control-wrap__status-icon-wrap{right:4px}.tox[dir=rtl] .tox-control-wrap--status-invalid .tox-textfield,.tox[dir=rtl] .tox-control-wrap--status-unknown .tox-textfield,.tox[dir=rtl] .tox-control-wrap--status-valid .tox-textfield{padding-left:32px}.tox[dir=rtl] .tox-control-wrap__status-icon-wrap{left:4px}.tox .tox-autocompleter{max-width:25em}.tox .tox-autocompleter .tox-menu{max-width:25em}.tox .tox-autocompleter .tox-autocompleter-highlight{font-weight:700}.tox .tox-color-input{display:flex}.tox .tox-color-input .tox-textfield{border-radius:3px 0 0 3px;display:flex}.tox .tox-color-input span{border-color:rgba(42,55,70,.2);border-radius:0 3px 3px 0;border-style:solid;border-width:1px 1px 1px 0;box-shadow:none;box-sizing:border-box;cursor:pointer;display:flex;width:35px}.tox .tox-color-input span:focus{border-color:#207ab7}.tox[dir=rtl] .tox-color-input .tox-textfield{border-radius:0 3px 3px 0}.tox[dir=rtl] .tox-color-input span{border-radius:3px 0 0 3px;border-width:1px 0 1px 1px}.tox .tox-label,.tox .tox-toolbar-label{color:rgba(255,255,255,.5);display:block;font-size:14px;font-style:normal;font-weight:400;line-height:1.3;padding:0 8px 0 0;text-transform:normal;white-space:nowrap}.tox .tox-toolbar-label{padding:0 8px}.tox[dir=rtl] .tox-label{padding:0 0 0 8px}.tox .tox-form{display:flex;flex:1;flex-direction:column;-ms-flex-preferred-size:auto}.tox .tox-form__group{box-sizing:border-box;margin-bottom:4px}.tox .tox-form-group--maximize{flex:1}.tox .tox-form__group--error{color:#c00}.tox .tox-form__group--collection{display:flex}.tox .tox-form__grid{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:space-between}.tox .tox-form__grid--2col>.tox-form__group{width:calc(50% - (8px / 2))}.tox .tox-form__grid--3col>.tox-form__group{width:calc(100% / 3 - (8px / 2))}.tox .tox-form__grid--4col>.tox-form__group{width:calc(25% - (8px / 2))}.tox .tox-form__controls-h-stack{align-items:center;display:flex}.tox .tox-form__group--inline{align-items:center;display:flex}.tox .tox-form__group--stretched{display:flex;flex:1;flex-direction:column;-ms-flex-preferred-size:auto}.tox .tox-form__group--stretched .tox-textarea{flex:1;-ms-flex-preferred-size:auto}.tox .tox-form__group--stretched .tox-navobj{display:flex;flex:1;-ms-flex-preferred-size:auto}.tox .tox-form__group--stretched .tox-navobj :nth-child(2){flex:1;-ms-flex-preferred-size:auto;height:100%}.tox:not([dir=rtl]) .tox-form__controls-h-stack>:not(:first-child){margin-left:4px}.tox[dir=rtl] .tox-form__controls-h-stack>:not(:first-child){margin-right:4px}.tox .tox-lock.tox-locked .tox-lock-icon__unlock,.tox .tox-lock:not(.tox-locked) .tox-lock-icon__lock{display:none}.tox .tox-selectfield select,.tox .tox-textarea,.tox .tox-textfield,.tox .tox-toolbar-textfield{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#2b3b4e;border-color:#000;border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;color:#fff;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:16px;line-height:24px;margin:0;outline:0;padding:5px 4.75px;resize:none;width:100%}.tox .tox-textarea[disabled],.tox .tox-textfield[disabled]{background-color:#222f3e;color:rgba(255,255,255,.85);cursor:not-allowed}.tox .tox-selectfield select:focus,.tox .tox-textarea:focus,.tox .tox-textfield:focus{border-color:#207ab7;box-shadow:none;outline:0}.tox .tox-toolbar-textfield{border-width:0;margin-bottom:3px;margin-top:2px;max-width:250px}.tox .tox-naked-btn{background-color:transparent;border:0;border-color:transparent;box-shadow:unset;color:#207ab7;cursor:pointer;display:block;margin:0;padding:0}.tox .tox-naked-btn svg{display:block;fill:#fff}.tox:not([dir=rtl]) .tox-toolbar-textfield+*{margin-left:4px}.tox[dir=rtl] .tox-toolbar-textfield+*{margin-right:4px}.tox .tox-selectfield{cursor:pointer;position:relative}.tox .tox-selectfield select[disabled]{background-color:#19232e;color:rgba(255,255,255,.85);cursor:not-allowed}.tox .tox-selectfield select::-ms-expand{display:none}.tox .tox-selectfield svg{pointer-events:none;position:absolute;top:50%;transform:translateY(-50%)}.tox:not([dir=rtl]) .tox-selectfield select[size="0"],.tox:not([dir=rtl]) .tox-selectfield select[size="1"]{padding-right:24px}.tox:not([dir=rtl]) .tox-selectfield svg{right:8px}.tox[dir=rtl] .tox-selectfield select[size="0"],.tox[dir=rtl] .tox-selectfield select[size="1"]{padding-left:24px}.tox[dir=rtl] .tox-selectfield svg{left:8px}.tox .tox-textarea{-webkit-appearance:textarea;-moz-appearance:textarea;appearance:textarea;white-space:pre-wrap}.tox-fullscreen{border:0;height:100%;left:0;margin:0;overflow:hidden;-ms-scroll-chaining:none;overscroll-behavior:none;padding:0;position:fixed;top:0;touch-action:pinch-zoom;width:100%}.tox-fullscreen .tox.tox-tinymce.tox-fullscreen .tox-statusbar__resize-handle{display:none}.tox-fullscreen .tox.tox-tinymce.tox-fullscreen{z-index:1200}.tox-fullscreen .tox.tox-tinymce-aux{z-index:1201}.tox .tox-image-tools{width:100%}.tox .tox-image-tools__toolbar{align-items:center;display:flex;justify-content:center}.tox .tox-image-tools__image{background-color:#666;height:380px;overflow:auto;position:relative;width:100%}.tox .tox-image-tools__image,.tox .tox-image-tools__image+.tox-image-tools__toolbar{margin-top:8px}.tox .tox-image-tools__image-bg{background:url(data:image/gif;base64,R0lGODdhDAAMAIABAMzMzP///ywAAAAADAAMAAACFoQfqYeabNyDMkBQb81Uat85nxguUAEAOw==)}.tox .tox-image-tools__toolbar>.tox-spacer{flex:1;-ms-flex-preferred-size:auto}.tox .tox-croprect-block{background:#000;opacity:.5;position:absolute;zoom:1}.tox .tox-croprect-handle{border:2px solid #fff;height:20px;left:0;position:absolute;top:0;width:20px}.tox .tox-croprect-handle-move{border:0;cursor:move;position:absolute}.tox .tox-croprect-handle-nw{border-width:2px 0 0 2px;cursor:nw-resize;left:100px;margin:-2px 0 0 -2px;top:100px}.tox .tox-croprect-handle-ne{border-width:2px 2px 0 0;cursor:ne-resize;left:200px;margin:-2px 0 0 -20px;top:100px}.tox .tox-croprect-handle-sw{border-width:0 0 2px 2px;cursor:sw-resize;left:100px;margin:-20px 2px 0 -2px;top:200px}.tox .tox-croprect-handle-se{border-width:0 2px 2px 0;cursor:se-resize;left:200px;margin:-20px 0 0 -20px;top:200px}.tox:not([dir=rtl]) .tox-image-tools__toolbar>.tox-slider:not(:first-of-type){margin-left:8px}.tox:not([dir=rtl]) .tox-image-tools__toolbar>.tox-button+.tox-slider{margin-left:32px}.tox:not([dir=rtl]) .tox-image-tools__toolbar>.tox-slider+.tox-button{margin-left:32px}.tox[dir=rtl] .tox-image-tools__toolbar>.tox-slider:not(:first-of-type){margin-right:8px}.tox[dir=rtl] .tox-image-tools__toolbar>.tox-button+.tox-slider{margin-right:32px}.tox[dir=rtl] .tox-image-tools__toolbar>.tox-slider+.tox-button{margin-right:32px}.tox .tox-insert-table-picker{display:flex;flex-wrap:wrap;width:169px}.tox .tox-insert-table-picker>div{border-color:#000;border-style:solid;border-width:0 1px 1px 0;box-sizing:content-box;height:16px;width:16px}.tox .tox-collection--list .tox-collection__group .tox-insert-table-picker{margin:-4px 0}.tox .tox-insert-table-picker .tox-insert-table-picker__selected{background-color:rgba(32,122,183,.5);border-color:rgba(32,122,183,.5)}.tox .tox-insert-table-picker__label{color:#fff;display:block;font-size:14px;padding:4px;text-align:center;width:100%}.tox:not([dir=rtl]) .tox-insert-table-picker>div:nth-child(10n){border-right:0}.tox[dir=rtl] .tox-insert-table-picker>div:nth-child(10n+1){border-right:0}.tox .tox-menu{background-color:#2b3b4e;border:1px solid #000;border-radius:3px;box-shadow:0 4px 8px 0 rgba(42,55,70,.1);display:inline-block;overflow:hidden;vertical-align:top;z-index:1150}.tox .tox-menu.tox-collection.tox-collection--list{padding:0}.tox .tox-menu.tox-collection.tox-collection--toolbar{padding:4px}.tox .tox-menu.tox-collection.tox-collection--grid{padding:4px}.tox .tox-menu__label blockquote,.tox .tox-menu__label code,.tox .tox-menu__label h1,.tox .tox-menu__label h2,.tox .tox-menu__label h3,.tox .tox-menu__label h4,.tox .tox-menu__label h5,.tox .tox-menu__label h6,.tox .tox-menu__label p{margin:0}.tox .tox-menubar{background:url("data:image/svg+xml;charset=utf8,%3Csvg height='39px' viewBox='0 0 40 39px' width='40' xmlns='http://www.w3.org/2000/svg'%3E%3Crect x='0' y='38px' width='100' height='1' fill='%23000000'/%3E%3C/svg%3E") left 0 top 0 #222f3e;background-color:#222f3e;display:flex;flex:0 0 auto;flex-shrink:0;flex-wrap:wrap;padding:0 4px 0 4px}.tox .tox-mbtn{align-items:center;background:0 0;border:0;border-radius:3px;box-shadow:none;color:#fff;display:flex;flex:0 0 auto;font-size:14px;font-style:normal;font-weight:400;height:34px;justify-content:center;margin:2px 0 3px 0;outline:0;overflow:hidden;padding:0 4px;text-transform:normal;width:auto}.tox .tox-mbtn[disabled]{background-color:none;border:0;box-shadow:none;color:rgba(255,255,255,.5);cursor:not-allowed}.tox .tox-mbtn:focus:not(:disabled){background:#4a5562;border:0;box-shadow:none;color:#fff}.tox .tox-mbtn--active{background:#757d87;border:0;box-shadow:none;color:#fff}.tox .tox-mbtn:hover:not(:disabled):not(.tox-mbtn--active){background:#4a5562;border:0;box-shadow:none;color:#fff}.tox .tox-mbtn__select-label{cursor:default;font-weight:400;margin:0 4px}.tox .tox-mbtn[disabled] .tox-mbtn__select-label{cursor:not-allowed}.tox .tox-mbtn__select-chevron{align-items:center;display:flex;justify-content:center;width:16px;display:none}.tox .tox-notification{border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;display:-ms-grid;display:grid;font-size:14px;font-weight:400;-ms-grid-columns:minmax(40px,1fr) auto minmax(40px,1fr);grid-template-columns:minmax(40px,1fr) auto minmax(40px,1fr);margin-top:4px;opacity:0;padding:4px;transition:transform .1s ease-in,opacity 150ms ease-in}.tox .tox-notification p{font-size:14px;font-weight:400}.tox .tox-notification a{text-decoration:underline}.tox .tox-notification--in{opacity:1}.tox .tox-notification--success{background-color:#e4eeda;border-color:#d7e6c8;color:#fff}.tox .tox-notification--success p{color:#fff}.tox .tox-notification--success a{color:#547831}.tox .tox-notification--success svg{fill:#fff}.tox .tox-notification--error{background-color:#f8dede;border-color:#f2bfbf;color:#fff}.tox .tox-notification--error p{color:#fff}.tox .tox-notification--error a{color:#c00}.tox .tox-notification--error svg{fill:#fff}.tox .tox-notification--warn,.tox .tox-notification--warning{background-color:#fffaea;border-color:#ffe89d;color:#fff}.tox .tox-notification--warn p,.tox .tox-notification--warning p{color:#fff}.tox .tox-notification--warn a,.tox .tox-notification--warning a{color:#fff}.tox .tox-notification--warn svg,.tox .tox-notification--warning svg{fill:#fff}.tox .tox-notification--info{background-color:#d9edf7;border-color:#779ecb;color:#fff}.tox .tox-notification--info p{color:#fff}.tox .tox-notification--info a{color:#fff}.tox .tox-notification--info svg{fill:#fff}.tox .tox-notification__body{-ms-grid-row-align:center;align-self:center;color:#fff;font-size:14px;-ms-grid-column-span:1;grid-column-end:3;-ms-grid-column:2;grid-column-start:2;-ms-grid-row-span:1;grid-row-end:2;-ms-grid-row:1;grid-row-start:1;text-align:center;white-space:normal;word-break:break-all;word-break:break-word}.tox .tox-notification__body>*{margin:0}.tox .tox-notification__body>*+*{margin-top:1rem}.tox .tox-notification__icon{-ms-grid-row-align:center;align-self:center;-ms-grid-column-span:1;grid-column-end:2;-ms-grid-column:1;grid-column-start:1;-ms-grid-row-span:1;grid-row-end:2;-ms-grid-row:1;grid-row-start:1;-ms-grid-column-align:end;justify-self:end}.tox .tox-notification__icon svg{display:block}.tox .tox-notification__dismiss{-ms-grid-row-align:start;align-self:start;-ms-grid-column-span:1;grid-column-end:4;-ms-grid-column:3;grid-column-start:3;-ms-grid-row-span:1;grid-row-end:2;-ms-grid-row:1;grid-row-start:1;-ms-grid-column-align:end;justify-self:end}.tox .tox-notification .tox-progress-bar{-ms-grid-column-span:3;grid-column-end:4;-ms-grid-column:1;grid-column-start:1;-ms-grid-row-span:1;grid-row-end:3;-ms-grid-row:2;grid-row-start:2;-ms-grid-column-align:center;justify-self:center}.tox .tox-pop{display:inline-block;position:relative}.tox .tox-pop--resizing{transition:width .1s ease}.tox .tox-pop--resizing .tox-toolbar{flex-wrap:nowrap}.tox .tox-pop__dialog{background-color:#222f3e;border:1px solid #000;border-radius:3px;box-shadow:0 1px 3px rgba(0,0,0,.15);min-width:0;overflow:hidden}.tox .tox-pop__dialog>:not(.tox-toolbar){margin:4px 4px 4px 8px}.tox .tox-pop__dialog .tox-toolbar{background-color:transparent;margin-bottom:-1px}.tox .tox-pop::after,.tox .tox-pop::before{border-style:solid;content:'';display:block;height:0;position:absolute;width:0}.tox .tox-pop.tox-pop--bottom::after,.tox .tox-pop.tox-pop--bottom::before{left:50%;top:100%}.tox .tox-pop.tox-pop--bottom::after{border-color:#222f3e transparent transparent transparent;border-width:8px;margin-left:-8px;margin-top:-1px}.tox .tox-pop.tox-pop--bottom::before{border-color:#000 transparent transparent transparent;border-width:9px;margin-left:-9px}.tox .tox-pop.tox-pop--top::after,.tox .tox-pop.tox-pop--top::before{left:50%;top:0;transform:translateY(-100%)}.tox .tox-pop.tox-pop--top::after{border-color:transparent transparent #222f3e transparent;border-width:8px;margin-left:-8px;margin-top:1px}.tox .tox-pop.tox-pop--top::before{border-color:transparent transparent #000 transparent;border-width:9px;margin-left:-9px}.tox .tox-pop.tox-pop--left::after,.tox .tox-pop.tox-pop--left::before{left:0;top:calc(50% - 1px);transform:translateY(-50%)}.tox .tox-pop.tox-pop--left::after{border-color:transparent #222f3e transparent transparent;border-width:8px;margin-left:-15px}.tox .tox-pop.tox-pop--left::before{border-color:transparent #000 transparent transparent;border-width:10px;margin-left:-19px}.tox .tox-pop.tox-pop--right::after,.tox .tox-pop.tox-pop--right::before{left:100%;top:calc(50% + 1px);transform:translateY(-50%)}.tox .tox-pop.tox-pop--right::after{border-color:transparent transparent transparent #222f3e;border-width:8px;margin-left:-1px}.tox .tox-pop.tox-pop--right::before{border-color:transparent transparent transparent #000;border-width:10px;margin-left:-1px}.tox .tox-pop.tox-pop--align-left::after,.tox .tox-pop.tox-pop--align-left::before{left:20px}.tox .tox-pop.tox-pop--align-right::after,.tox .tox-pop.tox-pop--align-right::before{left:calc(100% - 20px)}.tox .tox-sidebar-wrap{display:flex;flex-direction:row;flex-grow:1;-ms-flex-preferred-size:0;min-height:0}.tox .tox-sidebar{background-color:#222f3e;display:flex;flex-direction:row;justify-content:flex-end}.tox .tox-sidebar__slider{display:flex;overflow:hidden}.tox .tox-sidebar__pane-container{display:flex}.tox .tox-sidebar__pane{display:flex}.tox .tox-sidebar--sliding-closed{opacity:0}.tox .tox-sidebar--sliding-open{opacity:1}.tox .tox-sidebar--sliding-growing,.tox .tox-sidebar--sliding-shrinking{transition:width .5s ease,opacity .5s ease}.tox .tox-selector{background-color:#4099ff;border-color:#4099ff;border-style:solid;border-width:1px;box-sizing:border-box;display:inline-block;height:10px;position:absolute;width:10px}.tox.tox-platform-touch .tox-selector{height:12px;width:12px}.tox .tox-slider{align-items:center;display:flex;flex:1;-ms-flex-preferred-size:auto;height:24px;justify-content:center;position:relative}.tox .tox-slider__rail{background-color:transparent;border:1px solid #000;border-radius:3px;height:10px;min-width:120px;width:100%}.tox .tox-slider__handle{background-color:#207ab7;border:2px solid #185d8c;border-radius:3px;box-shadow:none;height:24px;left:50%;position:absolute;top:50%;transform:translateX(-50%) translateY(-50%);width:14px}.tox .tox-source-code{overflow:auto}.tox .tox-spinner{display:flex}.tox .tox-spinner>div{animation:tam-bouncing-dots 1.5s ease-in-out 0s infinite both;background-color:rgba(255,255,255,.5);border-radius:100%;height:8px;width:8px}.tox .tox-spinner>div:nth-child(1){animation-delay:-.32s}.tox .tox-spinner>div:nth-child(2){animation-delay:-.16s}@keyframes tam-bouncing-dots{0%,100%,80%{transform:scale(0)}40%{transform:scale(1)}}.tox:not([dir=rtl]) .tox-spinner>div:not(:first-child){margin-left:4px}.tox[dir=rtl] .tox-spinner>div:not(:first-child){margin-right:4px}.tox .tox-statusbar{align-items:center;background-color:#222f3e;border-top:1px solid #000;color:#fff;display:flex;flex:0 0 auto;font-size:12px;font-weight:400;height:18px;overflow:hidden;padding:0 8px;position:relative;text-transform:uppercase}.tox .tox-statusbar__text-container{display:flex;flex:1 1 auto;justify-content:flex-end;overflow:hidden}.tox .tox-statusbar__path{display:flex;flex:1 1 auto;margin-right:auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tox .tox-statusbar__path>*{display:inline;white-space:nowrap}.tox .tox-statusbar__wordcount{flex:0 0 auto;margin-left:1ch}.tox .tox-statusbar a,.tox .tox-statusbar__path-item,.tox .tox-statusbar__wordcount{color:#fff;text-decoration:none}.tox .tox-statusbar a:focus,.tox .tox-statusbar a:hover,.tox .tox-statusbar__path-item:focus,.tox .tox-statusbar__path-item:hover,.tox .tox-statusbar__wordcount:focus,.tox .tox-statusbar__wordcount:hover{cursor:pointer;text-decoration:underline}.tox .tox-statusbar__resize-handle{align-items:flex-end;align-self:stretch;cursor:nwse-resize;display:flex;flex:0 0 auto;justify-content:flex-end;margin-left:auto;margin-right:-8px;padding-left:1ch}.tox .tox-statusbar__resize-handle svg{display:block;fill:#fff}.tox:not([dir=rtl]) .tox-statusbar__path>*{margin-right:4px}.tox:not([dir=rtl]) .tox-statusbar__branding{margin-left:1ch}.tox[dir=rtl] .tox-statusbar{flex-direction:row-reverse}.tox[dir=rtl] .tox-statusbar__path>*{margin-left:4px}.tox .tox-throbber{z-index:1400}.tox .tox-throbber__busy-spinner{align-items:center;background-color:rgba(34,47,62,.6);bottom:0;display:flex;justify-content:center;left:0;position:absolute;right:0;top:0}.tox .tox-tbtn{align-items:center;background:0 0;border:0;border-radius:3px;box-shadow:none;color:#fff;display:flex;flex:0 0 auto;font-size:14px;font-style:normal;font-weight:400;height:34px;justify-content:center;margin:2px 0 3px 0;outline:0;overflow:hidden;padding:0;text-transform:normal;width:34px}.tox .tox-tbtn svg{display:block;fill:#fff}.tox .tox-tbtn.tox-tbtn-more{padding-left:5px;padding-right:5px;width:inherit}.tox .tox-tbtn:focus{background:#4a5562;border:0;box-shadow:none}.tox .tox-tbtn:hover{background:#4a5562;border:0;box-shadow:none;color:#fff}.tox .tox-tbtn:hover svg{fill:#fff}.tox .tox-tbtn:active{background:#757d87;border:0;box-shadow:none;color:#fff}.tox .tox-tbtn:active svg{fill:#fff}.tox .tox-tbtn--disabled,.tox .tox-tbtn--disabled:hover,.tox .tox-tbtn:disabled,.tox .tox-tbtn:disabled:hover{background:0 0;border:0;box-shadow:none;color:rgba(255,255,255,.5);cursor:not-allowed}.tox .tox-tbtn--disabled svg,.tox .tox-tbtn--disabled:hover svg,.tox .tox-tbtn:disabled svg,.tox .tox-tbtn:disabled:hover svg{fill:rgba(255,255,255,.5)}.tox .tox-tbtn--enabled,.tox .tox-tbtn--enabled:hover{background:#757d87;border:0;box-shadow:none;color:#fff}.tox .tox-tbtn--enabled:hover>*,.tox .tox-tbtn--enabled>*{transform:none}.tox .tox-tbtn--enabled svg,.tox .tox-tbtn--enabled:hover svg{fill:#fff}.tox .tox-tbtn:focus:not(.tox-tbtn--disabled){color:#fff}.tox .tox-tbtn:focus:not(.tox-tbtn--disabled) svg{fill:#fff}.tox .tox-tbtn:active>*{transform:none}.tox .tox-tbtn--md{height:51px;width:51px}.tox .tox-tbtn--lg{flex-direction:column;height:68px;width:68px}.tox .tox-tbtn--return{-ms-grid-row-align:stretch;align-self:stretch;height:unset;width:16px}.tox .tox-tbtn--labeled{padding:0 4px;width:unset}.tox .tox-tbtn__vlabel{display:block;font-size:10px;font-weight:400;letter-spacing:-.025em;margin-bottom:4px;white-space:nowrap}.tox .tox-tbtn--select{margin:2px 0 3px 0;padding:0 4px;width:auto}.tox .tox-tbtn__select-label{cursor:default;font-weight:400;margin:0 4px}.tox .tox-tbtn__select-chevron{align-items:center;display:flex;justify-content:center;width:16px}.tox .tox-tbtn__select-chevron svg{fill:rgba(255,255,255,.5)}.tox .tox-tbtn--bespoke .tox-tbtn__select-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:7em}.tox .tox-split-button{border:0;border-radius:3px;box-sizing:border-box;display:flex;margin:2px 0 3px 0;overflow:hidden}.tox .tox-split-button:hover{box-shadow:0 0 0 1px #4a5562 inset}.tox .tox-split-button:focus{background:#4a5562;box-shadow:none;color:#fff}.tox .tox-split-button>*{border-radius:0}.tox .tox-split-button__chevron{width:16px}.tox .tox-split-button__chevron svg{fill:rgba(255,255,255,.5)}.tox .tox-split-button .tox-tbtn{margin:0}.tox.tox-platform-touch .tox-split-button .tox-tbtn:first-child{width:30px}.tox.tox-platform-touch .tox-split-button__chevron{width:20px}.tox .tox-split-button.tox-tbtn--disabled .tox-tbtn:focus,.tox .tox-split-button.tox-tbtn--disabled .tox-tbtn:hover,.tox .tox-split-button.tox-tbtn--disabled:focus,.tox .tox-split-button.tox-tbtn--disabled:hover{background:0 0;box-shadow:none;color:rgba(255,255,255,.5)}.tox .tox-toolbar-overlord{background-color:#222f3e}.tox .tox-toolbar,.tox .tox-toolbar__overflow,.tox .tox-toolbar__primary{background:url("data:image/svg+xml;charset=utf8,%3Csvg height='39px' viewBox='0 0 40 39px' width='40' xmlns='http://www.w3.org/2000/svg'%3E%3Crect x='0' y='38px' width='100' height='1' fill='%23000000'/%3E%3C/svg%3E") left 0 top 0 #222f3e;background-color:#222f3e;display:flex;flex:0 0 auto;flex-shrink:0;flex-wrap:wrap;padding:0 0}.tox .tox-toolbar__overflow.tox-toolbar__overflow--closed{height:0;opacity:0;padding-bottom:0;padding-top:0;visibility:hidden}.tox .tox-toolbar__overflow--growing{transition:height .3s ease,opacity .2s linear .1s}.tox .tox-toolbar__overflow--shrinking{transition:opacity .3s ease,height .2s linear .1s,visibility 0s linear .3s}.tox .tox-toolbar--scrolling{flex-wrap:nowrap;overflow-x:auto}.tox .tox-pop .tox-toolbar{border-width:0}.tox .tox-toolbar--no-divider{background-image:none}.tox.tox-tinymce-aux .tox-toolbar__overflow{background-color:#222f3e;border:1px solid #000;border-radius:3px;box-shadow:0 1px 3px rgba(0,0,0,.15)}.tox[dir=rtl] .tox-tbtn__icon-rtl svg{transform:rotateY(180deg)}.tox .tox-toolbar__group{align-items:center;display:flex;flex-wrap:wrap;margin:0 0;padding:0 4px 0 4px}.tox .tox-toolbar__group--pull-right{margin-left:auto}.tox .tox-toolbar--scrolling .tox-toolbar__group{flex-shrink:0;flex-wrap:nowrap}.tox:not([dir=rtl]) .tox-toolbar__group:not(:last-of-type){border-right:1px solid #000}.tox[dir=rtl] .tox-toolbar__group:not(:last-of-type){border-left:1px solid #000}.tox .tox-tooltip{display:inline-block;padding:8px;position:relative}.tox .tox-tooltip__body{background-color:#3d546f;border-radius:3px;box-shadow:0 2px 4px rgba(42,55,70,.3);color:rgba(255,255,255,.75);font-size:14px;font-style:normal;font-weight:400;padding:4px 8px;text-transform:normal}.tox .tox-tooltip__arrow{position:absolute}.tox .tox-tooltip--down .tox-tooltip__arrow{border-left:8px solid transparent;border-right:8px solid transparent;border-top:8px solid #3d546f;bottom:0;left:50%;position:absolute;transform:translateX(-50%)}.tox .tox-tooltip--up .tox-tooltip__arrow{border-bottom:8px solid #3d546f;border-left:8px solid transparent;border-right:8px solid transparent;left:50%;position:absolute;top:0;transform:translateX(-50%)}.tox .tox-tooltip--right .tox-tooltip__arrow{border-bottom:8px solid transparent;border-left:8px solid #3d546f;border-top:8px solid transparent;position:absolute;right:0;top:50%;transform:translateY(-50%)}.tox .tox-tooltip--left .tox-tooltip__arrow{border-bottom:8px solid transparent;border-right:8px solid #3d546f;border-top:8px solid transparent;left:0;position:absolute;top:50%;transform:translateY(-50%)}.tox .tox-well{border:1px solid #000;border-radius:3px;padding:8px;width:100%}.tox .tox-well>:first-child{margin-top:0}.tox .tox-well>:last-child{margin-bottom:0}.tox .tox-well>:only-child{margin:0}.tox .tox-custom-editor{border:1px solid #000;border-radius:3px;display:flex;height:525px}.tox .tox-dialog-loading::before{background-color:rgba(0,0,0,.5);content:"";height:100%;position:absolute;width:100%;z-index:1000}.tox .tox-tab{cursor:pointer}.tox .tox-dialog__content-js{display:flex;flex:1;-ms-flex-preferred-size:auto}.tox .tox-dialog__body-content .tox-collection{display:flex;flex:1;-ms-flex-preferred-size:auto}.tox .tox-image-tools-edit-panel{height:60px}.tox .tox-image-tools__sidebar{height:60px}
diff --git a/admin/js/vendors/tinymce/js/tinymce/skins/ui/oxide-dark/skin.mobile.min.css b/admin/js/vendors/tinymce/js/tinymce/skins/ui/oxide-dark/skin.mobile.min.css
new file mode 100644 (file)
index 0000000..3a45cac
--- /dev/null
@@ -0,0 +1,7 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ */
+.tinymce-mobile-outer-container{all:initial;display:block}.tinymce-mobile-outer-container *{border:0;box-sizing:initial;cursor:inherit;float:none;line-height:1;margin:0;outline:0;padding:0;-webkit-tap-highlight-color:transparent;text-shadow:none;white-space:nowrap}.tinymce-mobile-icon-arrow-back::before{content:"\e5cd"}.tinymce-mobile-icon-image::before{content:"\e412"}.tinymce-mobile-icon-cancel-circle::before{content:"\e5c9"}.tinymce-mobile-icon-full-dot::before{content:"\e061"}.tinymce-mobile-icon-align-center::before{content:"\e234"}.tinymce-mobile-icon-align-left::before{content:"\e236"}.tinymce-mobile-icon-align-right::before{content:"\e237"}.tinymce-mobile-icon-bold::before{content:"\e238"}.tinymce-mobile-icon-italic::before{content:"\e23f"}.tinymce-mobile-icon-unordered-list::before{content:"\e241"}.tinymce-mobile-icon-ordered-list::before{content:"\e242"}.tinymce-mobile-icon-font-size::before{content:"\e245"}.tinymce-mobile-icon-underline::before{content:"\e249"}.tinymce-mobile-icon-link::before{content:"\e157"}.tinymce-mobile-icon-unlink::before{content:"\eca2"}.tinymce-mobile-icon-color::before{content:"\e891"}.tinymce-mobile-icon-previous::before{content:"\e314"}.tinymce-mobile-icon-next::before{content:"\e315"}.tinymce-mobile-icon-large-font::before,.tinymce-mobile-icon-style-formats::before{content:"\e264"}.tinymce-mobile-icon-undo::before{content:"\e166"}.tinymce-mobile-icon-redo::before{content:"\e15a"}.tinymce-mobile-icon-removeformat::before{content:"\e239"}.tinymce-mobile-icon-small-font::before{content:"\e906"}.tinymce-mobile-format-matches::after,.tinymce-mobile-icon-readonly-back::before{content:"\e5ca"}.tinymce-mobile-icon-small-heading::before{content:"small"}.tinymce-mobile-icon-large-heading::before{content:"large"}.tinymce-mobile-icon-large-heading::before,.tinymce-mobile-icon-small-heading::before{font-family:sans-serif;font-size:80%}.tinymce-mobile-mask-edit-icon::before{content:"\e254"}.tinymce-mobile-icon-back::before{content:"\e5c4"}.tinymce-mobile-icon-heading::before{content:"Headings";font-family:sans-serif;font-size:80%;font-weight:700}.tinymce-mobile-icon-h1::before{content:"H1";font-weight:700}.tinymce-mobile-icon-h2::before{content:"H2";font-weight:700}.tinymce-mobile-icon-h3::before{content:"H3";font-weight:700}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask{align-items:center;display:flex;justify-content:center;background:rgba(51,51,51,.5);height:100%;position:absolute;top:0;width:100%}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container{align-items:center;border-radius:50%;display:flex;flex-direction:column;font-family:sans-serif;font-size:1em;justify-content:space-between}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .mixin-menu-item{align-items:center;display:flex;justify-content:center;border-radius:50%;height:2.1em;width:2.1em}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section{align-items:center;display:flex;justify-content:center;flex-direction:column;font-size:1em}@media only screen and (min-device-width:700px){.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section{font-size:1.2em}}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section .tinymce-mobile-mask-tap-icon{align-items:center;display:flex;justify-content:center;border-radius:50%;height:2.1em;width:2.1em;background-color:#fff;color:#207ab7}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section .tinymce-mobile-mask-tap-icon::before{content:"\e900";font-family:tinymce-mobile,sans-serif}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section:not(.tinymce-mobile-mask-tap-icon-selected) .tinymce-mobile-mask-tap-icon{z-index:2}.tinymce-mobile-android-container.tinymce-mobile-android-maximized{background:#fff;border:none;bottom:0;display:flex;flex-direction:column;left:0;position:fixed;right:0;top:0}.tinymce-mobile-android-container:not(.tinymce-mobile-android-maximized){position:relative}.tinymce-mobile-android-container .tinymce-mobile-editor-socket{display:flex;flex-grow:1}.tinymce-mobile-android-container .tinymce-mobile-editor-socket iframe{display:flex!important;flex-grow:1;height:auto!important}.tinymce-mobile-android-scroll-reload{overflow:hidden}:not(.tinymce-mobile-readonly-mode)>.tinymce-mobile-android-selection-context-toolbar{margin-top:23px}.tinymce-mobile-toolstrip{background:#fff;display:flex;flex:0 0 auto;z-index:1}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar{align-items:center;background-color:#fff;border-bottom:1px solid #ccc;display:flex;flex:1;height:2.5em;width:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group{align-items:center;display:flex;height:100%;flex-shrink:1}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group>div{align-items:center;display:flex;height:100%;flex:1}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group.tinymce-mobile-exit-container{background:#f44336}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group.tinymce-mobile-toolbar-scrollable-group{flex-grow:1}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item{padding-left:.5em;padding-right:.5em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item.tinymce-mobile-toolbar-button{align-items:center;display:flex;height:80%;margin-left:2px;margin-right:2px}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item.tinymce-mobile-toolbar-button.tinymce-mobile-toolbar-button-selected{background:#c8cbcf;color:#ccc}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group:first-of-type,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group:last-of-type{background:#207ab7;color:#eceff1}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group{align-items:center;display:flex;height:100%;flex:1;padding-bottom:.4em;padding-top:.4em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog{display:flex;min-height:1.5em;overflow:hidden;padding-left:0;padding-right:0;position:relative;width:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain{display:flex;height:100%;transition:left cubic-bezier(.4,0,1,1) .15s;width:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen{display:flex;flex:0 0 auto;justify-content:space-between;width:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen input{font-family:Sans-serif}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-input-container{display:flex;flex-grow:1;position:relative}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-input-container .tinymce-mobile-input-container-x{-ms-grid-row-align:center;align-self:center;background:inherit;border:none;border-radius:50%;color:#888;font-size:.6em;font-weight:700;height:100%;padding-right:2px;position:absolute;right:0}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-input-container.tinymce-mobile-input-container-empty .tinymce-mobile-input-container-x{display:none}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-next,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-previous{align-items:center;display:flex}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-next::before,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-previous::before{align-items:center;display:flex;font-weight:700;height:100%;padding-left:.5em;padding-right:.5em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-next.tinymce-mobile-toolbar-navigation-disabled::before,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-previous.tinymce-mobile-toolbar-navigation-disabled::before{visibility:hidden}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-dot-item{color:#ccc;font-size:10px;line-height:10px;margin:0 2px;padding-top:3px}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-dot-item.tinymce-mobile-dot-active{color:#c8cbcf}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-large-font::before,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-large-heading::before{margin-left:.5em;margin-right:.9em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-small-font::before,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-small-heading::before{margin-left:.9em;margin-right:.5em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider{display:flex;flex:1;margin-left:0;margin-right:0;padding:.28em 0;position:relative}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-size-container{align-items:center;display:flex;flex-grow:1;height:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-size-container .tinymce-mobile-slider-size-line{background:#ccc;display:flex;flex:1;height:.2em;margin-bottom:.3em;margin-top:.3em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container{padding-left:2em;padding-right:2em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-slider-gradient-container{align-items:center;display:flex;flex-grow:1;height:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-slider-gradient-container .tinymce-mobile-slider-gradient{background:linear-gradient(to right,red 0,#feff00 17%,#0f0 33%,#00feff 50%,#00f 67%,#ff00fe 83%,red 100%);display:flex;flex:1;height:.2em;margin-bottom:.3em;margin-top:.3em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-hue-slider-black{background:#000;height:.2em;margin-bottom:.3em;margin-top:.3em;width:1.2em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-hue-slider-white{background:#fff;height:.2em;margin-bottom:.3em;margin-top:.3em;width:1.2em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-thumb{align-items:center;background-clip:padding-box;background-color:#455a64;border:.5em solid rgba(136,136,136,0);border-radius:3em;bottom:0;color:#fff;display:flex;height:.5em;justify-content:center;left:-10px;margin:auto;position:absolute;top:0;transition:border 120ms cubic-bezier(.39,.58,.57,1);width:.5em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-thumb.tinymce-mobile-thumb-active{border:.5em solid rgba(136,136,136,.39)}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serializer-wrapper,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group>div{align-items:center;display:flex;height:100%;flex:1}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serializer-wrapper{flex-direction:column;justify-content:center}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item{align-items:center;display:flex}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item:not(.tinymce-mobile-serialised-dialog){height:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-dot-container{display:flex}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input{background:#fff;border:none;border-radius:0;color:#455a64;flex-grow:1;font-size:.85em;padding-bottom:.1em;padding-left:5px;padding-top:.1em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input::-webkit-input-placeholder{color:#888}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input::placeholder{color:#888}.tinymce-mobile-dropup{background:#fff;display:flex;overflow:hidden;width:100%}.tinymce-mobile-dropup.tinymce-mobile-dropup-shrinking{transition:height .3s ease-out}.tinymce-mobile-dropup.tinymce-mobile-dropup-growing{transition:height .3s ease-in}.tinymce-mobile-dropup.tinymce-mobile-dropup-closed{flex-grow:0}.tinymce-mobile-dropup.tinymce-mobile-dropup-open:not(.tinymce-mobile-dropup-growing){flex-grow:1}.tinymce-mobile-ios-container .tinymce-mobile-dropup:not(.tinymce-mobile-dropup-closed){min-height:200px}@media only screen and (orientation:landscape){.tinymce-mobile-dropup:not(.tinymce-mobile-dropup-closed){min-height:200px}}@media only screen and (min-device-width :320px) and (max-device-width :568px) and (orientation :landscape){.tinymce-mobile-ios-container .tinymce-mobile-dropup:not(.tinymce-mobile-dropup-closed){min-height:150px}}.tinymce-mobile-styles-menu{font-family:sans-serif;outline:4px solid #000;overflow:hidden;position:relative;width:100%}.tinymce-mobile-styles-menu [role=menu]{display:flex;flex-direction:column;height:100%;position:absolute;width:100%}.tinymce-mobile-styles-menu [role=menu].transitioning{transition:transform .5s ease-in-out}.tinymce-mobile-styles-menu .tinymce-mobile-styles-item{border-bottom:1px solid #ddd;color:#455a64;cursor:pointer;display:flex;padding:1em 1em;position:relative}.tinymce-mobile-styles-menu .tinymce-mobile-styles-collapser .tinymce-mobile-styles-collapse-icon::before{color:#455a64;content:"\e314";font-family:tinymce-mobile,sans-serif}.tinymce-mobile-styles-menu .tinymce-mobile-styles-item.tinymce-mobile-styles-item-is-menu::after{color:#455a64;content:"\e315";font-family:tinymce-mobile,sans-serif;padding-left:1em;padding-right:1em;position:absolute;right:0}.tinymce-mobile-styles-menu .tinymce-mobile-styles-item.tinymce-mobile-format-matches::after{font-family:tinymce-mobile,sans-serif;padding-left:1em;padding-right:1em;position:absolute;right:0}.tinymce-mobile-styles-menu .tinymce-mobile-styles-collapser,.tinymce-mobile-styles-menu .tinymce-mobile-styles-separator{align-items:center;background:#fff;border-top:#455a64;color:#455a64;display:flex;min-height:2.5em;padding-left:1em;padding-right:1em}.tinymce-mobile-styles-menu [data-transitioning-destination=before][data-transitioning-state],.tinymce-mobile-styles-menu [data-transitioning-state=before]{transform:translate(-100%)}.tinymce-mobile-styles-menu [data-transitioning-destination=current][data-transitioning-state],.tinymce-mobile-styles-menu [data-transitioning-state=current]{transform:translate(0)}.tinymce-mobile-styles-menu [data-transitioning-destination=after][data-transitioning-state],.tinymce-mobile-styles-menu [data-transitioning-state=after]{transform:translate(100%)}@font-face{font-family:tinymce-mobile;font-style:normal;font-weight:400;src:url(fonts/tinymce-mobile.woff?8x92w3) format('woff')}@media (min-device-width:700px){.tinymce-mobile-outer-container,.tinymce-mobile-outer-container input{font-size:25px}}@media (max-device-width:700px){.tinymce-mobile-outer-container,.tinymce-mobile-outer-container input{font-size:18px}}.tinymce-mobile-icon{font-family:tinymce-mobile,sans-serif}.mixin-flex-and-centre{align-items:center;display:flex;justify-content:center}.mixin-flex-bar{align-items:center;display:flex;height:100%}.tinymce-mobile-outer-container .tinymce-mobile-editor-socket iframe{background-color:#fff;width:100%}.tinymce-mobile-editor-socket .tinymce-mobile-mask-edit-icon{background-color:#207ab7;border-radius:50%;bottom:1em;color:#fff;font-size:1em;height:2.1em;position:fixed;right:2em;width:2.1em;align-items:center;display:flex;justify-content:center}@media only screen and (min-device-width:700px){.tinymce-mobile-editor-socket .tinymce-mobile-mask-edit-icon{font-size:1.2em}}.tinymce-mobile-outer-container:not(.tinymce-mobile-fullscreen-maximized) .tinymce-mobile-editor-socket{height:300px;overflow:hidden}.tinymce-mobile-outer-container:not(.tinymce-mobile-fullscreen-maximized) .tinymce-mobile-editor-socket iframe{height:100%}.tinymce-mobile-outer-container:not(.tinymce-mobile-fullscreen-maximized) .tinymce-mobile-toolstrip{display:none}input[type=file]::-webkit-file-upload-button{display:none}@media only screen and (min-device-width :320px) and (max-device-width :568px) and (orientation :landscape){.tinymce-mobile-ios-container .tinymce-mobile-editor-socket .tinymce-mobile-mask-edit-icon{bottom:50%}}
diff --git a/admin/js/vendors/tinymce/js/tinymce/skins/ui/oxide/content.inline.min.css b/admin/js/vendors/tinymce/js/tinymce/skins/ui/oxide/content.inline.min.css
new file mode 100644 (file)
index 0000000..961196d
--- /dev/null
@@ -0,0 +1,7 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ */
+.mce-content-body .mce-item-anchor{background:transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'8'%20height%3D'12'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20d%3D'M0%200L8%200%208%2012%204.09117821%209%200%2012z'%2F%3E%3C%2Fsvg%3E%0A") no-repeat center;cursor:default;display:inline-block;height:12px!important;padding:0 2px;-webkit-user-modify:read-only;-moz-user-modify:read-only;-webkit-user-select:all;-moz-user-select:all;-ms-user-select:all;user-select:all;width:8px!important}.mce-content-body .mce-item-anchor[data-mce-selected]{outline-offset:1px}.tox-comments-visible .tox-comment{background-color:#fff0b7}.tox-comments-visible .tox-comment--active{background-color:#ffe168}.tox-checklist>li:not(.tox-checklist--hidden){list-style:none;margin:.25em 0}.tox-checklist>li:not(.tox-checklist--hidden)::before{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-unchecked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2215%22%20height%3D%2215%22%20x%3D%22.5%22%20y%3D%22.5%22%20fill-rule%3D%22nonzero%22%20stroke%3D%22%234C4C4C%22%20rx%3D%222%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A");background-size:100%;content:'';cursor:pointer;height:1em;margin-left:-1.5em;margin-top:.125em;position:absolute;width:1em}.tox-checklist li:not(.tox-checklist--hidden).tox-checklist--checked::before{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-checked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2216%22%20height%3D%2216%22%20fill%3D%22%234099FF%22%20fill-rule%3D%22nonzero%22%20rx%3D%222%22%2F%3E%3Cpath%20id%3D%22Path%22%20fill%3D%22%23FFF%22%20fill-rule%3D%22nonzero%22%20d%3D%22M11.5703186%2C3.14417309%20C11.8516238%2C2.73724603%2012.4164781%2C2.62829933%2012.83558%2C2.89774797%20C13.260121%2C3.17069355%2013.3759736%2C3.72932262%2013.0909105%2C4.14168582%20L7.7580587%2C11.8560195%20C7.43776896%2C12.3193404%206.76483983%2C12.3852142%206.35607322%2C11.9948725%20L3.02491697%2C8.8138662%20C2.66090143%2C8.46625845%202.65798871%2C7.89594698%203.01850234%2C7.54483354%20C3.373942%2C7.19866177%203.94940006%2C7.19592841%204.30829608%2C7.5386474%20L6.85276923%2C9.9684299%20L11.5703186%2C3.14417309%20Z%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A")}[dir=rtl] .tox-checklist>li:not(.tox-checklist--hidden)::before{margin-left:0;margin-right:-1.5em}code[class*=language-],pre[class*=language-]{color:#000;background:0 0;text-shadow:0 1px #fff;font-family:Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;tab-size:4;-webkit-hyphens:none;-ms-hyphens:none;hyphens:none}code[class*=language-] ::-moz-selection,code[class*=language-]::-moz-selection,pre[class*=language-] ::-moz-selection,pre[class*=language-]::-moz-selection{text-shadow:none;background:#b3d4fc}code[class*=language-] ::selection,code[class*=language-]::selection,pre[class*=language-] ::selection,pre[class*=language-]::selection{text-shadow:none;background:#b3d4fc}@media print{code[class*=language-],pre[class*=language-]{text-shadow:none}}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#f5f2f0}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#708090}.token.punctuation{color:#999}.namespace{opacity:.7}.token.boolean,.token.constant,.token.deleted,.token.number,.token.property,.token.symbol,.token.tag{color:#905}.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string{color:#690}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url{color:#9a6e3a;background:hsla(0,0%,100%,.5)}.token.atrule,.token.attr-value,.token.keyword{color:#07a}.token.class-name,.token.function{color:#dd4a68}.token.important,.token.regex,.token.variable{color:#e90}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.mce-content-body{overflow-wrap:break-word;word-wrap:break-word}.mce-content-body .mce-visual-caret{background-color:#000;background-color:currentcolor;position:absolute}.mce-content-body .mce-visual-caret-hidden{display:none}.mce-content-body [data-mce-caret]{left:-1000px;margin:0;padding:0;position:absolute;right:auto;top:0}.mce-content-body .mce-offscreen-selection{left:-9999999999px;max-width:1000000px;position:absolute}.mce-content-body [contentEditable=false]{cursor:default}.mce-content-body [contentEditable=true]{cursor:text}.tox-cursor-format-painter{cursor:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%3E%0A%20%20%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M15%2C6%20C15%2C5.45%2014.55%2C5%2014%2C5%20L6%2C5%20C5.45%2C5%205%2C5.45%205%2C6%20L5%2C10%20C5%2C10.55%205.45%2C11%206%2C11%20L14%2C11%20C14.55%2C11%2015%2C10.55%2015%2C10%20L15%2C9%20L16%2C9%20L16%2C12%20L9%2C12%20L9%2C19%20C9%2C19.55%209.45%2C20%2010%2C20%20L11%2C20%20C11.55%2C20%2012%2C19.55%2012%2C19%20L12%2C14%20L18%2C14%20L18%2C7%20L15%2C7%20L15%2C6%20Z%22%2F%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M1%2C1%20L8.25%2C1%20C8.66421356%2C1%209%2C1.33578644%209%2C1.75%20L9%2C1.75%20C9%2C2.16421356%208.66421356%2C2.5%208.25%2C2.5%20L2.5%2C2.5%20L2.5%2C8.25%20C2.5%2C8.66421356%202.16421356%2C9%201.75%2C9%20L1.75%2C9%20C1.33578644%2C9%201%2C8.66421356%201%2C8.25%20L1%2C1%20Z%22%2F%3E%0A%20%20%3C%2Fg%3E%0A%3C%2Fsvg%3E%0A"),default}.mce-content-body figure.align-left{float:left}.mce-content-body figure.align-right{float:right}.mce-content-body figure.image.align-center{display:table;margin-left:auto;margin-right:auto}.mce-preview-object{border:1px solid gray;display:inline-block;line-height:0;margin:0 2px 0 2px;position:relative}.mce-preview-object .mce-shim{background:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);height:100%;left:0;position:absolute;top:0;width:100%}.mce-preview-object[data-mce-selected="2"] .mce-shim{display:none}.mce-object{background:transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%3E%3Cpath%20d%3D%22M4%203h16a1%201%200%200%201%201%201v16a1%201%200%200%201-1%201H4a1%201%200%200%201-1-1V4a1%201%200%200%201%201-1zm1%202v14h14V5H5zm4.79%202.565l5.64%204.028a.5.5%200%200%201%200%20.814l-5.64%204.028a.5.5%200%200%201-.79-.407V7.972a.5.5%200%200%201%20.79-.407z%22%2F%3E%3C%2Fsvg%3E%0A") no-repeat center;border:1px dashed #aaa}.mce-pagebreak{border:1px dashed #aaa;cursor:default;display:block;height:5px;margin-top:15px;page-break-before:always;width:100%}@media print{.mce-pagebreak{border:0}}.tiny-pageembed .mce-shim{background:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);height:100%;left:0;position:absolute;top:0;width:100%}.tiny-pageembed[data-mce-selected="2"] .mce-shim{display:none}.tiny-pageembed{display:inline-block;position:relative}.tiny-pageembed--16by9,.tiny-pageembed--1by1,.tiny-pageembed--21by9,.tiny-pageembed--4by3{display:block;overflow:hidden;padding:0;position:relative;width:100%}.tiny-pageembed--16by9::before,.tiny-pageembed--1by1::before,.tiny-pageembed--21by9::before,.tiny-pageembed--4by3::before{content:"";display:block}.tiny-pageembed--21by9::before{padding-top:42.857143%}.tiny-pageembed--16by9::before{padding-top:56.25%}.tiny-pageembed--4by3::before{padding-top:75%}.tiny-pageembed--1by1::before{padding-top:100%}.tiny-pageembed--16by9 iframe,.tiny-pageembed--1by1 iframe,.tiny-pageembed--21by9 iframe,.tiny-pageembed--4by3 iframe{border:0;height:100%;left:0;position:absolute;top:0;width:100%}.mce-content-body div.mce-resizehandle{background-color:#4099ff;border-color:#4099ff;border-style:solid;border-width:1px;box-sizing:border-box;height:10px;position:absolute;width:10px;z-index:10000}.mce-content-body div.mce-resizehandle:hover{background-color:#4099ff}.mce-content-body div.mce-resizehandle:nth-of-type(1){cursor:nwse-resize}.mce-content-body div.mce-resizehandle:nth-of-type(2){cursor:nesw-resize}.mce-content-body div.mce-resizehandle:nth-of-type(3){cursor:nwse-resize}.mce-content-body div.mce-resizehandle:nth-of-type(4){cursor:nesw-resize}.mce-content-body .mce-clonedresizable{opacity:.5;outline:1px dashed #000;position:absolute;z-index:10000}.mce-content-body .mce-resize-helper{background:#555;background:rgba(0,0,0,.75);border:1px;border-radius:3px;color:#fff;display:none;font-family:sans-serif;font-size:12px;line-height:14px;margin:5px 10px;padding:5px;position:absolute;white-space:nowrap;z-index:10001}.mce-match-marker{background:#aaa;color:#fff}.mce-match-marker-selected{background:#39f;color:#fff}.mce-content-body img[data-mce-selected],.mce-content-body table[data-mce-selected]{outline:3px solid #b4d7ff}.mce-content-body hr[data-mce-selected]{outline:3px solid #b4d7ff;outline-offset:1px}.mce-content-body [contentEditable=false] [contentEditable=true]:focus{outline:3px solid #b4d7ff}.mce-content-body [contentEditable=false] [contentEditable=true]:hover{outline:3px solid #b4d7ff}.mce-content-body [contentEditable=false][data-mce-selected]{cursor:not-allowed;outline:3px solid #b4d7ff}.mce-content-body.mce-content-readonly [contentEditable=true]:focus,.mce-content-body.mce-content-readonly [contentEditable=true]:hover{outline:0}.mce-content-body [data-mce-selected=inline-boundary]{background-color:#b4d7ff}.mce-content-body .mce-edit-focus{outline:3px solid #b4d7ff}.mce-content-body td[data-mce-selected],.mce-content-body th[data-mce-selected]{background-color:#b4d7ff!important}.mce-content-body td[data-mce-selected]::-moz-selection,.mce-content-body th[data-mce-selected]::-moz-selection{background:0 0}.mce-content-body td[data-mce-selected]::selection,.mce-content-body th[data-mce-selected]::selection{background:0 0}.mce-content-body td[data-mce-selected] *,.mce-content-body th[data-mce-selected] *{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.mce-content-body img::-moz-selection{background:0 0}.mce-content-body img::selection{background:0 0}.ephox-snooker-resizer-bar{background-color:#b4d7ff;opacity:0}.ephox-snooker-resizer-cols{cursor:col-resize}.ephox-snooker-resizer-rows{cursor:row-resize}.ephox-snooker-resizer-bar.ephox-snooker-resizer-bar-dragging{opacity:1}.mce-spellchecker-word{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%23ff0000'%20fill%3D'none'%20stroke-linecap%3D'round'%20stroke-opacity%3D'.75'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A");background-position:0 calc(100% + 1px);background-repeat:repeat-x;background-size:auto 6px;cursor:default;height:2rem}.mce-spellchecker-grammar{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%2300A835'%20fill%3D'none'%20stroke-linecap%3D'round'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A");background-position:0 calc(100% + 1px);background-repeat:repeat-x;background-size:auto 6px;cursor:default}.mce-toc{border:1px solid gray}.mce-toc h2{margin:4px}.mce-toc li{list-style-type:none}.mce-item-table,.mce-item-table caption,.mce-item-table td,.mce-item-table th{border:1px dashed #bbb}.mce-visualblocks address,.mce-visualblocks article,.mce-visualblocks aside,.mce-visualblocks blockquote,.mce-visualblocks div:not([data-mce-bogus]),.mce-visualblocks dl,.mce-visualblocks figcaption,.mce-visualblocks figure,.mce-visualblocks h1,.mce-visualblocks h2,.mce-visualblocks h3,.mce-visualblocks h4,.mce-visualblocks h5,.mce-visualblocks h6,.mce-visualblocks hgroup,.mce-visualblocks ol,.mce-visualblocks p,.mce-visualblocks pre,.mce-visualblocks section,.mce-visualblocks ul{background-repeat:no-repeat;border:1px dashed #bbb;margin-left:3px;padding-top:10px}.mce-visualblocks p{background-image:url(data:image/gif;base64,R0lGODlhCQAJAJEAAAAAAP///7u7u////yH5BAEAAAMALAAAAAAJAAkAAAIQnG+CqCN/mlyvsRUpThG6AgA7)}.mce-visualblocks h1{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGu1JuxHoAfRNRW3TWXyF2YiRUAOw==)}.mce-visualblocks h2{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8Hybbx4oOuqgTynJd6bGlWg3DkJzoaUAAAOw==)}.mce-visualblocks h3{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIZjI8Hybbx4oOuqgTynJf2Ln2NOHpQpmhAAQA7)}.mce-visualblocks h4{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxInR0zqeAdhtJlXwV1oCll2HaWgAAOw==)}.mce-visualblocks h5{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjane4iq5GlW05GgIkIZUAAAOw==)}.mce-visualblocks h6{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjan04jep1iZ1XRlAo5bVgAAOw==)}.mce-visualblocks div:not([data-mce-bogus]){background-image:url(data:image/gif;base64,R0lGODlhEgAKAIABALu7u////yH5BAEAAAEALAAAAAASAAoAAAIfjI9poI0cgDywrhuxfbrzDEbQM2Ei5aRjmoySW4pAAQA7)}.mce-visualblocks section{background-image:url(data:image/gif;base64,R0lGODlhKAAKAIABALu7u////yH5BAEAAAEALAAAAAAoAAoAAAI5jI+pywcNY3sBWHdNrplytD2ellDeSVbp+GmWqaDqDMepc8t17Y4vBsK5hDyJMcI6KkuYU+jpjLoKADs=)}.mce-visualblocks article{background-image:url(data:image/gif;base64,R0lGODlhKgAKAIABALu7u////yH5BAEAAAEALAAAAAAqAAoAAAI6jI+pywkNY3wG0GBvrsd2tXGYSGnfiF7ikpXemTpOiJScasYoDJJrjsG9gkCJ0ag6KhmaIe3pjDYBBQA7)}.mce-visualblocks blockquote{background-image:url(data:image/gif;base64,R0lGODlhPgAKAIABALu7u////yH5BAEAAAEALAAAAAA+AAoAAAJPjI+py+0Knpz0xQDyuUhvfoGgIX5iSKZYgq5uNL5q69asZ8s5rrf0yZmpNkJZzFesBTu8TOlDVAabUyatguVhWduud3EyiUk45xhTTgMBBQA7)}.mce-visualblocks address{background-image:url(data:image/gif;base64,R0lGODlhLQAKAIABALu7u////yH5BAEAAAEALAAAAAAtAAoAAAI/jI+pywwNozSP1gDyyZcjb3UaRpXkWaXmZW4OqKLhBmLs+K263DkJK7OJeifh7FicKD9A1/IpGdKkyFpNmCkAADs=)}.mce-visualblocks pre{background-image:url(data:image/gif;base64,R0lGODlhFQAKAIABALu7uwAAACH5BAEAAAEALAAAAAAVAAoAAAIjjI+ZoN0cgDwSmnpz1NCueYERhnibZVKLNnbOq8IvKpJtVQAAOw==)}.mce-visualblocks figure{background-image:url(data:image/gif;base64,R0lGODlhJAAKAIAAALu7u////yH5BAEAAAEALAAAAAAkAAoAAAI0jI+py+2fwAHUSFvD3RlvG4HIp4nX5JFSpnZUJ6LlrM52OE7uSWosBHScgkSZj7dDKnWAAgA7)}.mce-visualblocks figcaption{border:1px dashed #bbb}.mce-visualblocks hgroup{background-image:url(data:image/gif;base64,R0lGODlhJwAKAIABALu7uwAAACH5BAEAAAEALAAAAAAnAAoAAAI3jI+pywYNI3uB0gpsRtt5fFnfNZaVSYJil4Wo03Hv6Z62uOCgiXH1kZIIJ8NiIxRrAZNMZAtQAAA7)}.mce-visualblocks aside{background-image:url(data:image/gif;base64,R0lGODlhHgAKAIABAKqqqv///yH5BAEAAAEALAAAAAAeAAoAAAItjI+pG8APjZOTzgtqy7I3f1yehmQcFY4WKZbqByutmW4aHUd6vfcVbgudgpYCADs=)}.mce-visualblocks ul{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIAAALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGuYnqUVSjvw26DzzXiqIDlVwAAOw==)}.mce-visualblocks ol{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybH6HHt0qourxC6CvzXieHyeWQAAOw==)}.mce-visualblocks dl{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybEOnmOvUoWznTqeuEjNSCqeGRUAOw==)}.mce-visualblocks:not([dir=rtl]) address,.mce-visualblocks:not([dir=rtl]) article,.mce-visualblocks:not([dir=rtl]) aside,.mce-visualblocks:not([dir=rtl]) blockquote,.mce-visualblocks:not([dir=rtl]) div:not([data-mce-bogus]),.mce-visualblocks:not([dir=rtl]) dl,.mce-visualblocks:not([dir=rtl]) figcaption,.mce-visualblocks:not([dir=rtl]) figure,.mce-visualblocks:not([dir=rtl]) h1,.mce-visualblocks:not([dir=rtl]) h2,.mce-visualblocks:not([dir=rtl]) h3,.mce-visualblocks:not([dir=rtl]) h4,.mce-visualblocks:not([dir=rtl]) h5,.mce-visualblocks:not([dir=rtl]) h6,.mce-visualblocks:not([dir=rtl]) hgroup,.mce-visualblocks:not([dir=rtl]) ol,.mce-visualblocks:not([dir=rtl]) p,.mce-visualblocks:not([dir=rtl]) pre,.mce-visualblocks:not([dir=rtl]) section,.mce-visualblocks:not([dir=rtl]) ul{margin-left:3px}.mce-visualblocks[dir=rtl] address,.mce-visualblocks[dir=rtl] article,.mce-visualblocks[dir=rtl] aside,.mce-visualblocks[dir=rtl] blockquote,.mce-visualblocks[dir=rtl] div:not([data-mce-bogus]),.mce-visualblocks[dir=rtl] dl,.mce-visualblocks[dir=rtl] figcaption,.mce-visualblocks[dir=rtl] figure,.mce-visualblocks[dir=rtl] h1,.mce-visualblocks[dir=rtl] h2,.mce-visualblocks[dir=rtl] h3,.mce-visualblocks[dir=rtl] h4,.mce-visualblocks[dir=rtl] h5,.mce-visualblocks[dir=rtl] h6,.mce-visualblocks[dir=rtl] hgroup,.mce-visualblocks[dir=rtl] ol,.mce-visualblocks[dir=rtl] p,.mce-visualblocks[dir=rtl] pre,.mce-visualblocks[dir=rtl] section,.mce-visualblocks[dir=rtl] ul{background-position-x:right;margin-right:3px}.mce-nbsp,.mce-shy{background:#aaa}.mce-shy::after{content:'-'}
diff --git a/admin/js/vendors/tinymce/js/tinymce/skins/ui/oxide/content.min.css b/admin/js/vendors/tinymce/js/tinymce/skins/ui/oxide/content.min.css
new file mode 100644 (file)
index 0000000..2a32f2f
--- /dev/null
@@ -0,0 +1,7 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ */
+.mce-content-body .mce-item-anchor{background:transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'8'%20height%3D'12'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20d%3D'M0%200L8%200%208%2012%204.09117821%209%200%2012z'%2F%3E%3C%2Fsvg%3E%0A") no-repeat center;cursor:default;display:inline-block;height:12px!important;padding:0 2px;-webkit-user-modify:read-only;-moz-user-modify:read-only;-webkit-user-select:all;-moz-user-select:all;-ms-user-select:all;user-select:all;width:8px!important}.mce-content-body .mce-item-anchor[data-mce-selected]{outline-offset:1px}.tox-comments-visible .tox-comment{background-color:#fff0b7}.tox-comments-visible .tox-comment--active{background-color:#ffe168}.tox-checklist>li:not(.tox-checklist--hidden){list-style:none;margin:.25em 0}.tox-checklist>li:not(.tox-checklist--hidden)::before{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-unchecked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2215%22%20height%3D%2215%22%20x%3D%22.5%22%20y%3D%22.5%22%20fill-rule%3D%22nonzero%22%20stroke%3D%22%234C4C4C%22%20rx%3D%222%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A");background-size:100%;content:'';cursor:pointer;height:1em;margin-left:-1.5em;margin-top:.125em;position:absolute;width:1em}.tox-checklist li:not(.tox-checklist--hidden).tox-checklist--checked::before{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-checked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2216%22%20height%3D%2216%22%20fill%3D%22%234099FF%22%20fill-rule%3D%22nonzero%22%20rx%3D%222%22%2F%3E%3Cpath%20id%3D%22Path%22%20fill%3D%22%23FFF%22%20fill-rule%3D%22nonzero%22%20d%3D%22M11.5703186%2C3.14417309%20C11.8516238%2C2.73724603%2012.4164781%2C2.62829933%2012.83558%2C2.89774797%20C13.260121%2C3.17069355%2013.3759736%2C3.72932262%2013.0909105%2C4.14168582%20L7.7580587%2C11.8560195%20C7.43776896%2C12.3193404%206.76483983%2C12.3852142%206.35607322%2C11.9948725%20L3.02491697%2C8.8138662%20C2.66090143%2C8.46625845%202.65798871%2C7.89594698%203.01850234%2C7.54483354%20C3.373942%2C7.19866177%203.94940006%2C7.19592841%204.30829608%2C7.5386474%20L6.85276923%2C9.9684299%20L11.5703186%2C3.14417309%20Z%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A")}[dir=rtl] .tox-checklist>li:not(.tox-checklist--hidden)::before{margin-left:0;margin-right:-1.5em}code[class*=language-],pre[class*=language-]{color:#000;background:0 0;text-shadow:0 1px #fff;font-family:Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;tab-size:4;-webkit-hyphens:none;-ms-hyphens:none;hyphens:none}code[class*=language-] ::-moz-selection,code[class*=language-]::-moz-selection,pre[class*=language-] ::-moz-selection,pre[class*=language-]::-moz-selection{text-shadow:none;background:#b3d4fc}code[class*=language-] ::selection,code[class*=language-]::selection,pre[class*=language-] ::selection,pre[class*=language-]::selection{text-shadow:none;background:#b3d4fc}@media print{code[class*=language-],pre[class*=language-]{text-shadow:none}}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#f5f2f0}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#708090}.token.punctuation{color:#999}.namespace{opacity:.7}.token.boolean,.token.constant,.token.deleted,.token.number,.token.property,.token.symbol,.token.tag{color:#905}.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string{color:#690}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url{color:#9a6e3a;background:hsla(0,0%,100%,.5)}.token.atrule,.token.attr-value,.token.keyword{color:#07a}.token.class-name,.token.function{color:#dd4a68}.token.important,.token.regex,.token.variable{color:#e90}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.mce-content-body{overflow-wrap:break-word;word-wrap:break-word}.mce-content-body .mce-visual-caret{background-color:#000;background-color:currentcolor;position:absolute}.mce-content-body .mce-visual-caret-hidden{display:none}.mce-content-body [data-mce-caret]{left:-1000px;margin:0;padding:0;position:absolute;right:auto;top:0}.mce-content-body .mce-offscreen-selection{left:-9999999999px;max-width:1000000px;position:absolute}.mce-content-body [contentEditable=false]{cursor:default}.mce-content-body [contentEditable=true]{cursor:text}.tox-cursor-format-painter{cursor:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%3E%0A%20%20%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M15%2C6%20C15%2C5.45%2014.55%2C5%2014%2C5%20L6%2C5%20C5.45%2C5%205%2C5.45%205%2C6%20L5%2C10%20C5%2C10.55%205.45%2C11%206%2C11%20L14%2C11%20C14.55%2C11%2015%2C10.55%2015%2C10%20L15%2C9%20L16%2C9%20L16%2C12%20L9%2C12%20L9%2C19%20C9%2C19.55%209.45%2C20%2010%2C20%20L11%2C20%20C11.55%2C20%2012%2C19.55%2012%2C19%20L12%2C14%20L18%2C14%20L18%2C7%20L15%2C7%20L15%2C6%20Z%22%2F%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M1%2C1%20L8.25%2C1%20C8.66421356%2C1%209%2C1.33578644%209%2C1.75%20L9%2C1.75%20C9%2C2.16421356%208.66421356%2C2.5%208.25%2C2.5%20L2.5%2C2.5%20L2.5%2C8.25%20C2.5%2C8.66421356%202.16421356%2C9%201.75%2C9%20L1.75%2C9%20C1.33578644%2C9%201%2C8.66421356%201%2C8.25%20L1%2C1%20Z%22%2F%3E%0A%20%20%3C%2Fg%3E%0A%3C%2Fsvg%3E%0A"),default}.mce-content-body figure.align-left{float:left}.mce-content-body figure.align-right{float:right}.mce-content-body figure.image.align-center{display:table;margin-left:auto;margin-right:auto}.mce-preview-object{border:1px solid gray;display:inline-block;line-height:0;margin:0 2px 0 2px;position:relative}.mce-preview-object .mce-shim{background:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);height:100%;left:0;position:absolute;top:0;width:100%}.mce-preview-object[data-mce-selected="2"] .mce-shim{display:none}.mce-object{background:transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%3E%3Cpath%20d%3D%22M4%203h16a1%201%200%200%201%201%201v16a1%201%200%200%201-1%201H4a1%201%200%200%201-1-1V4a1%201%200%200%201%201-1zm1%202v14h14V5H5zm4.79%202.565l5.64%204.028a.5.5%200%200%201%200%20.814l-5.64%204.028a.5.5%200%200%201-.79-.407V7.972a.5.5%200%200%201%20.79-.407z%22%2F%3E%3C%2Fsvg%3E%0A") no-repeat center;border:1px dashed #aaa}.mce-pagebreak{border:1px dashed #aaa;cursor:default;display:block;height:5px;margin-top:15px;page-break-before:always;width:100%}@media print{.mce-pagebreak{border:0}}.tiny-pageembed .mce-shim{background:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);height:100%;left:0;position:absolute;top:0;width:100%}.tiny-pageembed[data-mce-selected="2"] .mce-shim{display:none}.tiny-pageembed{display:inline-block;position:relative}.tiny-pageembed--16by9,.tiny-pageembed--1by1,.tiny-pageembed--21by9,.tiny-pageembed--4by3{display:block;overflow:hidden;padding:0;position:relative;width:100%}.tiny-pageembed--16by9::before,.tiny-pageembed--1by1::before,.tiny-pageembed--21by9::before,.tiny-pageembed--4by3::before{content:"";display:block}.tiny-pageembed--21by9::before{padding-top:42.857143%}.tiny-pageembed--16by9::before{padding-top:56.25%}.tiny-pageembed--4by3::before{padding-top:75%}.tiny-pageembed--1by1::before{padding-top:100%}.tiny-pageembed--16by9 iframe,.tiny-pageembed--1by1 iframe,.tiny-pageembed--21by9 iframe,.tiny-pageembed--4by3 iframe{border:0;height:100%;left:0;position:absolute;top:0;width:100%}.mce-content-body div.mce-resizehandle{background-color:#4099ff;border-color:#4099ff;border-style:solid;border-width:1px;box-sizing:border-box;height:10px;position:absolute;width:10px;z-index:10000}.mce-content-body div.mce-resizehandle:hover{background-color:#4099ff}.mce-content-body div.mce-resizehandle:nth-of-type(1){cursor:nwse-resize}.mce-content-body div.mce-resizehandle:nth-of-type(2){cursor:nesw-resize}.mce-content-body div.mce-resizehandle:nth-of-type(3){cursor:nwse-resize}.mce-content-body div.mce-resizehandle:nth-of-type(4){cursor:nesw-resize}.mce-content-body .mce-clonedresizable{opacity:.5;outline:1px dashed #000;position:absolute;z-index:10000}.mce-content-body .mce-resize-helper{background:#555;background:rgba(0,0,0,.75);border:1px;border-radius:3px;color:#fff;display:none;font-family:sans-serif;font-size:12px;line-height:14px;margin:5px 10px;padding:5px;position:absolute;white-space:nowrap;z-index:10001}.mce-match-marker{background:#aaa;color:#fff}.mce-match-marker-selected{background:#39f;color:#fff}.mce-content-body img[data-mce-selected],.mce-content-body table[data-mce-selected]{outline:3px solid #b4d7ff}.mce-content-body hr[data-mce-selected]{outline:3px solid #b4d7ff;outline-offset:1px}.mce-content-body [contentEditable=false] [contentEditable=true]:focus{outline:3px solid #b4d7ff}.mce-content-body [contentEditable=false] [contentEditable=true]:hover{outline:3px solid #b4d7ff}.mce-content-body [contentEditable=false][data-mce-selected]{cursor:not-allowed;outline:3px solid #b4d7ff}.mce-content-body.mce-content-readonly [contentEditable=true]:focus,.mce-content-body.mce-content-readonly [contentEditable=true]:hover{outline:0}.mce-content-body [data-mce-selected=inline-boundary]{background-color:#b4d7ff}.mce-content-body .mce-edit-focus{outline:3px solid #b4d7ff}.mce-content-body td[data-mce-selected],.mce-content-body th[data-mce-selected]{background-color:#b4d7ff!important}.mce-content-body td[data-mce-selected]::-moz-selection,.mce-content-body th[data-mce-selected]::-moz-selection{background:0 0}.mce-content-body td[data-mce-selected]::selection,.mce-content-body th[data-mce-selected]::selection{background:0 0}.mce-content-body td[data-mce-selected] *,.mce-content-body th[data-mce-selected] *{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.mce-content-body img::-moz-selection{background:0 0}.mce-content-body img::selection{background:0 0}.ephox-snooker-resizer-bar{background-color:#b4d7ff;opacity:0}.ephox-snooker-resizer-cols{cursor:col-resize}.ephox-snooker-resizer-rows{cursor:row-resize}.ephox-snooker-resizer-bar.ephox-snooker-resizer-bar-dragging{opacity:1}.mce-spellchecker-word{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%23ff0000'%20fill%3D'none'%20stroke-linecap%3D'round'%20stroke-opacity%3D'.75'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A");background-position:0 calc(100% + 1px);background-repeat:repeat-x;background-size:auto 6px;cursor:default;height:2rem}.mce-spellchecker-grammar{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%2300A835'%20fill%3D'none'%20stroke-linecap%3D'round'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A");background-position:0 calc(100% + 1px);background-repeat:repeat-x;background-size:auto 6px;cursor:default}.mce-toc{border:1px solid gray}.mce-toc h2{margin:4px}.mce-toc li{list-style-type:none}.mce-item-table,.mce-item-table caption,.mce-item-table td,.mce-item-table th{border:1px dashed #bbb}.mce-visualblocks address,.mce-visualblocks article,.mce-visualblocks aside,.mce-visualblocks blockquote,.mce-visualblocks div:not([data-mce-bogus]),.mce-visualblocks dl,.mce-visualblocks figcaption,.mce-visualblocks figure,.mce-visualblocks h1,.mce-visualblocks h2,.mce-visualblocks h3,.mce-visualblocks h4,.mce-visualblocks h5,.mce-visualblocks h6,.mce-visualblocks hgroup,.mce-visualblocks ol,.mce-visualblocks p,.mce-visualblocks pre,.mce-visualblocks section,.mce-visualblocks ul{background-repeat:no-repeat;border:1px dashed #bbb;margin-left:3px;padding-top:10px}.mce-visualblocks p{background-image:url(data:image/gif;base64,R0lGODlhCQAJAJEAAAAAAP///7u7u////yH5BAEAAAMALAAAAAAJAAkAAAIQnG+CqCN/mlyvsRUpThG6AgA7)}.mce-visualblocks h1{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGu1JuxHoAfRNRW3TWXyF2YiRUAOw==)}.mce-visualblocks h2{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8Hybbx4oOuqgTynJd6bGlWg3DkJzoaUAAAOw==)}.mce-visualblocks h3{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIZjI8Hybbx4oOuqgTynJf2Ln2NOHpQpmhAAQA7)}.mce-visualblocks h4{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxInR0zqeAdhtJlXwV1oCll2HaWgAAOw==)}.mce-visualblocks h5{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjane4iq5GlW05GgIkIZUAAAOw==)}.mce-visualblocks h6{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjan04jep1iZ1XRlAo5bVgAAOw==)}.mce-visualblocks div:not([data-mce-bogus]){background-image:url(data:image/gif;base64,R0lGODlhEgAKAIABALu7u////yH5BAEAAAEALAAAAAASAAoAAAIfjI9poI0cgDywrhuxfbrzDEbQM2Ei5aRjmoySW4pAAQA7)}.mce-visualblocks section{background-image:url(data:image/gif;base64,R0lGODlhKAAKAIABALu7u////yH5BAEAAAEALAAAAAAoAAoAAAI5jI+pywcNY3sBWHdNrplytD2ellDeSVbp+GmWqaDqDMepc8t17Y4vBsK5hDyJMcI6KkuYU+jpjLoKADs=)}.mce-visualblocks article{background-image:url(data:image/gif;base64,R0lGODlhKgAKAIABALu7u////yH5BAEAAAEALAAAAAAqAAoAAAI6jI+pywkNY3wG0GBvrsd2tXGYSGnfiF7ikpXemTpOiJScasYoDJJrjsG9gkCJ0ag6KhmaIe3pjDYBBQA7)}.mce-visualblocks blockquote{background-image:url(data:image/gif;base64,R0lGODlhPgAKAIABALu7u////yH5BAEAAAEALAAAAAA+AAoAAAJPjI+py+0Knpz0xQDyuUhvfoGgIX5iSKZYgq5uNL5q69asZ8s5rrf0yZmpNkJZzFesBTu8TOlDVAabUyatguVhWduud3EyiUk45xhTTgMBBQA7)}.mce-visualblocks address{background-image:url(data:image/gif;base64,R0lGODlhLQAKAIABALu7u////yH5BAEAAAEALAAAAAAtAAoAAAI/jI+pywwNozSP1gDyyZcjb3UaRpXkWaXmZW4OqKLhBmLs+K263DkJK7OJeifh7FicKD9A1/IpGdKkyFpNmCkAADs=)}.mce-visualblocks pre{background-image:url(data:image/gif;base64,R0lGODlhFQAKAIABALu7uwAAACH5BAEAAAEALAAAAAAVAAoAAAIjjI+ZoN0cgDwSmnpz1NCueYERhnibZVKLNnbOq8IvKpJtVQAAOw==)}.mce-visualblocks figure{background-image:url(data:image/gif;base64,R0lGODlhJAAKAIAAALu7u////yH5BAEAAAEALAAAAAAkAAoAAAI0jI+py+2fwAHUSFvD3RlvG4HIp4nX5JFSpnZUJ6LlrM52OE7uSWosBHScgkSZj7dDKnWAAgA7)}.mce-visualblocks figcaption{border:1px dashed #bbb}.mce-visualblocks hgroup{background-image:url(data:image/gif;base64,R0lGODlhJwAKAIABALu7uwAAACH5BAEAAAEALAAAAAAnAAoAAAI3jI+pywYNI3uB0gpsRtt5fFnfNZaVSYJil4Wo03Hv6Z62uOCgiXH1kZIIJ8NiIxRrAZNMZAtQAAA7)}.mce-visualblocks aside{background-image:url(data:image/gif;base64,R0lGODlhHgAKAIABAKqqqv///yH5BAEAAAEALAAAAAAeAAoAAAItjI+pG8APjZOTzgtqy7I3f1yehmQcFY4WKZbqByutmW4aHUd6vfcVbgudgpYCADs=)}.mce-visualblocks ul{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIAAALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGuYnqUVSjvw26DzzXiqIDlVwAAOw==)}.mce-visualblocks ol{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybH6HHt0qourxC6CvzXieHyeWQAAOw==)}.mce-visualblocks dl{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybEOnmOvUoWznTqeuEjNSCqeGRUAOw==)}.mce-visualblocks:not([dir=rtl]) address,.mce-visualblocks:not([dir=rtl]) article,.mce-visualblocks:not([dir=rtl]) aside,.mce-visualblocks:not([dir=rtl]) blockquote,.mce-visualblocks:not([dir=rtl]) div:not([data-mce-bogus]),.mce-visualblocks:not([dir=rtl]) dl,.mce-visualblocks:not([dir=rtl]) figcaption,.mce-visualblocks:not([dir=rtl]) figure,.mce-visualblocks:not([dir=rtl]) h1,.mce-visualblocks:not([dir=rtl]) h2,.mce-visualblocks:not([dir=rtl]) h3,.mce-visualblocks:not([dir=rtl]) h4,.mce-visualblocks:not([dir=rtl]) h5,.mce-visualblocks:not([dir=rtl]) h6,.mce-visualblocks:not([dir=rtl]) hgroup,.mce-visualblocks:not([dir=rtl]) ol,.mce-visualblocks:not([dir=rtl]) p,.mce-visualblocks:not([dir=rtl]) pre,.mce-visualblocks:not([dir=rtl]) section,.mce-visualblocks:not([dir=rtl]) ul{margin-left:3px}.mce-visualblocks[dir=rtl] address,.mce-visualblocks[dir=rtl] article,.mce-visualblocks[dir=rtl] aside,.mce-visualblocks[dir=rtl] blockquote,.mce-visualblocks[dir=rtl] div:not([data-mce-bogus]),.mce-visualblocks[dir=rtl] dl,.mce-visualblocks[dir=rtl] figcaption,.mce-visualblocks[dir=rtl] figure,.mce-visualblocks[dir=rtl] h1,.mce-visualblocks[dir=rtl] h2,.mce-visualblocks[dir=rtl] h3,.mce-visualblocks[dir=rtl] h4,.mce-visualblocks[dir=rtl] h5,.mce-visualblocks[dir=rtl] h6,.mce-visualblocks[dir=rtl] hgroup,.mce-visualblocks[dir=rtl] ol,.mce-visualblocks[dir=rtl] p,.mce-visualblocks[dir=rtl] pre,.mce-visualblocks[dir=rtl] section,.mce-visualblocks[dir=rtl] ul{background-position-x:right;margin-right:3px}.mce-nbsp,.mce-shy{background:#aaa}.mce-shy::after{content:'-'}body{font-family:sans-serif}table{border-collapse:collapse}
diff --git a/admin/js/vendors/tinymce/js/tinymce/skins/ui/oxide/content.mobile.min.css b/admin/js/vendors/tinymce/js/tinymce/skins/ui/oxide/content.mobile.min.css
new file mode 100644 (file)
index 0000000..35f7dc0
--- /dev/null
@@ -0,0 +1,7 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ */
+.tinymce-mobile-unfocused-selections .tinymce-mobile-unfocused-selection{background-color:green;display:inline-block;opacity:.5;position:absolute}body{-webkit-text-size-adjust:none}body img{max-width:96vw}body table img{max-width:95%}body{font-family:sans-serif}table{border-collapse:collapse}
diff --git a/admin/js/vendors/tinymce/js/tinymce/skins/ui/oxide/fonts/tinymce-mobile.woff b/admin/js/vendors/tinymce/js/tinymce/skins/ui/oxide/fonts/tinymce-mobile.woff
new file mode 100644 (file)
index 0000000..1e3be03
Binary files /dev/null and b/admin/js/vendors/tinymce/js/tinymce/skins/ui/oxide/fonts/tinymce-mobile.woff differ
diff --git a/admin/js/vendors/tinymce/js/tinymce/skins/ui/oxide/skin.min.css b/admin/js/vendors/tinymce/js/tinymce/skins/ui/oxide/skin.min.css
new file mode 100644 (file)
index 0000000..0feda24
--- /dev/null
@@ -0,0 +1,7 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ */
+.tox{box-sizing:content-box;color:#222f3e;cursor:auto;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:16px;font-style:normal;font-weight:400;line-height:normal;-webkit-tap-highlight-color:transparent;text-decoration:none;text-shadow:none;text-transform:none;vertical-align:initial;white-space:normal}.tox :not(svg){box-sizing:inherit;color:inherit;cursor:inherit;direction:inherit;font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;line-height:inherit;-webkit-tap-highlight-color:inherit;text-align:inherit;text-decoration:inherit;text-shadow:inherit;text-transform:inherit;vertical-align:inherit;white-space:inherit}.tox :not(svg){background:0 0;border:0;float:none;height:auto;margin:0;max-width:none;outline:0;padding:0;position:static;width:auto}.tox:not([dir=rtl]){direction:ltr;text-align:left}.tox[dir=rtl]{direction:rtl;text-align:right}.tox-tinymce{border:1px solid #ccc;border-radius:0;box-shadow:none;box-sizing:border-box;display:flex;flex-direction:column;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;overflow:hidden;position:relative;visibility:inherit!important}.tox-tinymce-inline{border:none;box-shadow:none}.tox-tinymce-inline .tox-editor-header{border:1px solid #ccc;border-bottom:0;border-radius:0;box-shadow:none}.tox-tinymce-aux{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;z-index:1300}.tox-tinymce :focus,.tox-tinymce-aux :focus{outline:0}button::-moz-focus-inner{border:0}.tox .accessibility-issue__header{align-items:center;display:flex;margin-bottom:4px}.tox .accessibility-issue__description{align-items:stretch;border:1px solid #ccc;border-radius:3px;display:flex;justify-content:space-between}.tox .accessibility-issue__description>div{padding-bottom:4px}.tox .accessibility-issue__description>div>div{align-items:center;display:flex;margin-bottom:4px}.tox .accessibility-issue__description>:last-child:not(:only-child){border-color:#ccc;border-style:solid}.tox .accessibility-issue__repair{margin-top:16px}.tox .accessibility-issue--info .accessibility-issue__description{background-color:rgba(32,122,183,.1);border-color:rgba(32,122,183,.4);color:#222f3e}.tox .accessibility-issue--info .accessibility-issue__description>:last-child{border-color:rgba(32,122,183,.4)}.tox .accessibility-issue--info h2{color:#207ab7}.tox .accessibility-issue--info .tox-icon svg{fill:#207ab7}.tox .accessibility-issue--info a .tox-icon{color:#207ab7}.tox .accessibility-issue--warn .accessibility-issue__description{background-color:rgba(255,165,0,.1);border-color:rgba(255,165,0,.5);color:#222f3e}.tox .accessibility-issue--warn .accessibility-issue__description>:last-child{border-color:rgba(255,165,0,.5)}.tox .accessibility-issue--warn h2{color:#cc8500}.tox .accessibility-issue--warn .tox-icon svg{fill:#cc8500}.tox .accessibility-issue--warn a .tox-icon{color:#cc8500}.tox .accessibility-issue--error .accessibility-issue__description{background-color:rgba(204,0,0,.1);border-color:rgba(204,0,0,.4);color:#222f3e}.tox .accessibility-issue--error .accessibility-issue__description>:last-child{border-color:rgba(204,0,0,.4)}.tox .accessibility-issue--error h2{color:#c00}.tox .accessibility-issue--error .tox-icon svg{fill:#c00}.tox .accessibility-issue--error a .tox-icon{color:#c00}.tox .accessibility-issue--success .accessibility-issue__description{background-color:rgba(120,171,70,.1);border-color:rgba(120,171,70,.4);color:#222f3e}.tox .accessibility-issue--success .accessibility-issue__description>:last-child{border-color:rgba(120,171,70,.4)}.tox .accessibility-issue--success h2{color:#78ab46}.tox .accessibility-issue--success .tox-icon svg{fill:#78ab46}.tox .accessibility-issue--success a .tox-icon{color:#78ab46}.tox .tox-dialog__body-content .accessibility-issue__header h1,.tox .tox-dialog__body-content .tox-form__group .accessibility-issue__description h2{margin-top:0}.tox:not([dir=rtl]) .accessibility-issue__header .tox-button{margin-left:4px}.tox:not([dir=rtl]) .accessibility-issue__header>:nth-last-child(2){margin-left:auto}.tox:not([dir=rtl]) .accessibility-issue__description{padding:4px 4px 4px 8px}.tox:not([dir=rtl]) .accessibility-issue__description>:last-child{border-left-width:1px;padding-left:4px}.tox[dir=rtl] .accessibility-issue__header .tox-button{margin-right:4px}.tox[dir=rtl] .accessibility-issue__header>:nth-last-child(2){margin-right:auto}.tox[dir=rtl] .accessibility-issue__description{padding:4px 8px 4px 4px}.tox[dir=rtl] .accessibility-issue__description>:last-child{border-right-width:1px;padding-right:4px}.tox .tox-anchorbar{display:flex;flex:0 0 auto}.tox .tox-bar{display:flex;flex:0 0 auto}.tox .tox-button{background-color:#207ab7;background-image:none;background-position:none;background-repeat:none;border-color:#207ab7;border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;color:#fff;cursor:pointer;display:inline-block;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:14px;font-weight:700;letter-spacing:1;line-height:24px;margin:0;outline:0;padding:4px 16px;text-align:center;text-decoration:none;text-transform:capitalize;white-space:nowrap}.tox .tox-button[disabled]{background-color:#207ab7;background-image:none;border-color:#207ab7;box-shadow:none;color:rgba(255,255,255,.5);cursor:not-allowed}.tox .tox-button:focus:not(:disabled){background-color:#1c6ca1;background-image:none;border-color:#1c6ca1;box-shadow:none;color:#fff}.tox .tox-button:hover:not(:disabled){background-color:#1c6ca1;background-image:none;border-color:#1c6ca1;box-shadow:none;color:#fff}.tox .tox-button:active:not(:disabled){background-color:#185d8c;background-image:none;border-color:#185d8c;box-shadow:none;color:#fff}.tox .tox-button--secondary{background-color:#f0f0f0;background-image:none;background-position:none;background-repeat:none;border-color:#f0f0f0;border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;color:#222f3e;outline:0;padding:4px 16px;text-decoration:none;text-transform:capitalize}.tox .tox-button--secondary[disabled]{background-color:#f0f0f0;background-image:none;border-color:#f0f0f0;box-shadow:none;color:rgba(34,47,62,.5)}.tox .tox-button--secondary:focus:not(:disabled){background-color:#e3e3e3;background-image:none;border-color:#e3e3e3;box-shadow:none;color:#222f3e}.tox .tox-button--secondary:hover:not(:disabled){background-color:#e3e3e3;background-image:none;border-color:#e3e3e3;box-shadow:none;color:#222f3e}.tox .tox-button--secondary:active:not(:disabled){background-color:#d6d6d6;background-image:none;border-color:#d6d6d6;box-shadow:none;color:#222f3e}.tox .tox-button--icon,.tox .tox-button.tox-button--icon,.tox .tox-button.tox-button--secondary.tox-button--icon{padding:4px}.tox .tox-button--icon .tox-icon svg,.tox .tox-button.tox-button--icon .tox-icon svg,.tox .tox-button.tox-button--secondary.tox-button--icon .tox-icon svg{display:block;fill:currentColor}.tox .tox-button-link{background:0;border:none;box-sizing:border-box;cursor:pointer;display:inline-block;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:16px;font-weight:400;line-height:1.3;margin:0;padding:0;white-space:nowrap}.tox .tox-button-link--sm{font-size:14px}.tox .tox-button--naked{background-color:transparent;border-color:transparent;box-shadow:unset;color:#222f3e}.tox .tox-button--naked[disabled]{background-color:#f0f0f0;border-color:#f0f0f0;box-shadow:none;color:rgba(34,47,62,.5)}.tox .tox-button--naked:hover:not(:disabled){background-color:#e3e3e3;border-color:#e3e3e3;box-shadow:none;color:#222f3e}.tox .tox-button--naked:focus:not(:disabled){background-color:#e3e3e3;border-color:#e3e3e3;box-shadow:none;color:#222f3e}.tox .tox-button--naked:active:not(:disabled){background-color:#d6d6d6;border-color:#d6d6d6;box-shadow:none;color:#222f3e}.tox .tox-button--naked .tox-icon svg{fill:currentColor}.tox .tox-button--naked.tox-button--icon:hover:not(:disabled){color:#222f3e}.tox .tox-checkbox{align-items:center;border-radius:3px;cursor:pointer;display:flex;height:36px;min-width:36px}.tox .tox-checkbox__input{height:1px;overflow:hidden;position:absolute;top:auto;width:1px}.tox .tox-checkbox__icons{align-items:center;border-radius:3px;box-shadow:0 0 0 2px transparent;box-sizing:content-box;display:flex;height:24px;justify-content:center;padding:calc(4px - 1px);width:24px}.tox .tox-checkbox__icons .tox-checkbox-icon__unchecked svg{display:block;fill:rgba(34,47,62,.3)}.tox .tox-checkbox__icons .tox-checkbox-icon__indeterminate svg{display:none;fill:#207ab7}.tox .tox-checkbox__icons .tox-checkbox-icon__checked svg{display:none;fill:#207ab7}.tox .tox-checkbox--disabled{color:rgba(34,47,62,.5);cursor:not-allowed}.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__checked svg{fill:rgba(34,47,62,.5)}.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__unchecked svg{fill:rgba(34,47,62,.5)}.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__indeterminate svg{fill:rgba(34,47,62,.5)}.tox input.tox-checkbox__input:checked+.tox-checkbox__icons .tox-checkbox-icon__unchecked svg{display:none}.tox input.tox-checkbox__input:checked+.tox-checkbox__icons .tox-checkbox-icon__checked svg{display:block}.tox input.tox-checkbox__input:indeterminate+.tox-checkbox__icons .tox-checkbox-icon__unchecked svg{display:none}.tox input.tox-checkbox__input:indeterminate+.tox-checkbox__icons .tox-checkbox-icon__indeterminate svg{display:block}.tox input.tox-checkbox__input:focus+.tox-checkbox__icons{border-radius:3px;box-shadow:inset 0 0 0 1px #207ab7;padding:calc(4px - 1px)}.tox:not([dir=rtl]) .tox-checkbox__label{margin-left:4px}.tox:not([dir=rtl]) .tox-checkbox__input{left:-10000px}.tox:not([dir=rtl]) .tox-bar .tox-checkbox{margin-left:4px}.tox[dir=rtl] .tox-checkbox__label{margin-right:4px}.tox[dir=rtl] .tox-checkbox__input{right:-10000px}.tox[dir=rtl] .tox-bar .tox-checkbox{margin-right:4px}.tox .tox-collection--toolbar .tox-collection__group{display:flex;padding:0}.tox .tox-collection--grid .tox-collection__group{display:flex;flex-wrap:wrap;max-height:208px;overflow-x:hidden;overflow-y:auto;padding:0}.tox .tox-collection--list .tox-collection__group{border-bottom-width:0;border-color:#ccc;border-left-width:0;border-right-width:0;border-style:solid;border-top-width:1px;padding:4px 0}.tox .tox-collection--list .tox-collection__group:first-child{border-top-width:0}.tox .tox-collection__group-heading{background-color:#e6e6e6;color:rgba(34,47,62,.7);cursor:default;font-size:12px;font-style:normal;font-weight:400;margin-bottom:4px;margin-top:-4px;padding:4px 8px;text-transform:none;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.tox .tox-collection__item{align-items:center;color:#222f3e;cursor:pointer;display:flex;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.tox .tox-collection--list .tox-collection__item{padding:4px 8px}.tox .tox-collection--toolbar .tox-collection__item{border-radius:3px;padding:4px}.tox .tox-collection--grid .tox-collection__item{border-radius:3px;padding:4px}.tox .tox-collection--list .tox-collection__item--enabled{background-color:inherit;color:contrast(inherit,#222f3e,#fff)}.tox .tox-collection--list .tox-collection__item--active{background-color:#dee0e2}.tox .tox-collection--toolbar .tox-collection__item--enabled{background-color:#c8cbcf;color:#222f3e}.tox .tox-collection--toolbar .tox-collection__item--active{background-color:#dee0e2}.tox .tox-collection--grid .tox-collection__item--enabled{background-color:#c8cbcf;color:#222f3e}.tox .tox-collection--grid .tox-collection__item--active{background-color:#dee0e2}.tox .tox-collection--list .tox-collection__item--active:not(.tox-collection__item--state-disabled){color:#222f3e}.tox .tox-collection--toolbar .tox-collection__item--active:not(.tox-collection__item--state-disabled){color:#222f3e}.tox .tox-collection--grid .tox-collection__item--active:not(.tox-collection__item--state-disabled){color:#222f3e}.tox .tox-collection__item--state-disabled{background-color:transparent;color:rgba(34,47,62,.5);cursor:not-allowed}.tox .tox-collection__item-icon{align-items:center;display:flex;height:24px;justify-content:center;width:24px}.tox .tox-collection__item-icon svg{fill:currentColor}.tox .tox-collection--toolbar-lg .tox-collection__item-icon{height:48px;width:48px}.tox .tox-collection__item-label{color:currentColor;display:inline-block;flex:1;-ms-flex-preferred-size:auto;font-size:14px;font-style:normal;font-weight:400;line-height:24px;text-transform:none;word-break:break-all}.tox .tox-collection__item-accessory{color:rgba(34,47,62,.7);display:inline-block;font-size:14px;height:24px;line-height:24px;text-transform:normal}.tox .tox-collection__item-caret{align-items:center;display:flex;min-height:24px}.tox .tox-collection__item-caret::after{content:'';font-size:0;min-height:inherit}.tox .tox-collection__item-caret svg{fill:#222f3e}.tox .tox-collection__item[role=menuitemcheckbox]:not(.tox-collection__item--enabled) .tox-collection__item-checkmark svg{display:none}.tox .tox-collection--horizontal{background-color:#fff;border:1px solid #ccc;border-radius:3px;box-shadow:0 1px 3px rgba(0,0,0,.15);display:flex;flex:0 0 auto;flex-shrink:0;flex-wrap:nowrap;margin-bottom:0;overflow-x:auto;padding:0}.tox .tox-collection--horizontal .tox-collection__group{align-items:center;display:flex;flex-wrap:nowrap;margin:0;padding:0 4px}.tox .tox-collection--horizontal .tox-collection__item{height:34px;margin:2px 0 3px 0;padding:0 4px}.tox .tox-collection--horizontal .tox-collection__item-label{white-space:nowrap}.tox .tox-collection--horizontal .tox-collection__item-caret{margin-left:4px}.tox:not([dir=rtl]) .tox-collection--horizontal .tox-collection__group:not(:last-of-type){border-right:1px solid #ccc}.tox:not([dir=rtl]) .tox-collection--list .tox-collection__item>:not(:first-child){margin-left:8px}.tox:not([dir=rtl]) .tox-collection--list .tox-collection__item-label:first-child{margin-left:4px}.tox:not([dir=rtl]) .tox-collection__item-accessory{margin-left:16px;text-align:right}.tox:not([dir=rtl]) .tox-collection .tox-collection__item-caret{margin-left:16px}.tox[dir=rtl] .tox-collection--horizontal .tox-collection__group:not(:last-of-type){border-left:1px solid #ccc}.tox[dir=rtl] .tox-collection--list .tox-collection__item>:not(:first-child){margin-right:8px}.tox[dir=rtl] .tox-collection--list .tox-collection__item-label:first-child{margin-right:4px}.tox[dir=rtl] .tox-collection__item-icon-rtl .tox-collection__item-icon svg{transform:rotateY(180deg)}.tox[dir=rtl] .tox-collection__item-accessory{margin-right:16px;text-align:left}.tox[dir=rtl] .tox-collection .tox-collection__item-caret{margin-right:16px;transform:rotateY(180deg)}.tox[dir=rtl] .tox-collection--horizontal .tox-collection__item-caret{margin-right:4px}.tox .tox-color-picker-container{display:flex;flex-direction:row;height:225px;margin:0}.tox .tox-sv-palette{box-sizing:border-box;display:flex;height:100%}.tox .tox-sv-palette-spectrum{height:100%}.tox .tox-sv-palette,.tox .tox-sv-palette-spectrum{width:225px}.tox .tox-sv-palette-thumb{background:0 0;border:1px solid #000;border-radius:50%;box-sizing:content-box;height:12px;position:absolute;width:12px}.tox .tox-sv-palette-inner-thumb{border:1px solid #fff;border-radius:50%;height:10px;position:absolute;width:10px}.tox .tox-hue-slider{box-sizing:border-box;height:100%;width:25px}.tox .tox-hue-slider-spectrum{background:linear-gradient(to bottom,red,#ff0080,#f0f,#8000ff,#00f,#0080ff,#0ff,#00ff80,#0f0,#80ff00,#ff0,#ff8000,red);height:100%;width:100%}.tox .tox-hue-slider,.tox .tox-hue-slider-spectrum{width:20px}.tox .tox-hue-slider-thumb{background:#fff;border:1px solid #000;box-sizing:content-box;height:4px;width:100%}.tox .tox-rgb-form{display:flex;flex-direction:column;justify-content:space-between}.tox .tox-rgb-form div{align-items:center;display:flex;justify-content:space-between;margin-bottom:5px;width:inherit}.tox .tox-rgb-form input{width:6em}.tox .tox-rgb-form input.tox-invalid{border:1px solid red!important}.tox .tox-rgb-form .tox-rgba-preview{border:1px solid #000;flex-grow:2;margin-bottom:0}.tox:not([dir=rtl]) .tox-sv-palette{margin-right:15px}.tox:not([dir=rtl]) .tox-hue-slider{margin-right:15px}.tox:not([dir=rtl]) .tox-hue-slider-thumb{margin-left:-1px}.tox:not([dir=rtl]) .tox-rgb-form label{margin-right:.5em}.tox[dir=rtl] .tox-sv-palette{margin-left:15px}.tox[dir=rtl] .tox-hue-slider{margin-left:15px}.tox[dir=rtl] .tox-hue-slider-thumb{margin-right:-1px}.tox[dir=rtl] .tox-rgb-form label{margin-left:.5em}.tox .tox-toolbar .tox-swatches,.tox .tox-toolbar__overflow .tox-swatches,.tox .tox-toolbar__primary .tox-swatches{margin:2px 0 3px 4px}.tox .tox-collection--list .tox-collection__group .tox-swatches-menu{border:0;margin:-4px 0}.tox .tox-swatches__row{display:flex}.tox .tox-swatch{height:30px;transition:transform .15s,box-shadow .15s;width:30px}.tox .tox-swatch:focus,.tox .tox-swatch:hover{box-shadow:0 0 0 1px rgba(127,127,127,.3) inset;transform:scale(.8)}.tox .tox-swatch--remove{align-items:center;display:flex;justify-content:center}.tox .tox-swatch--remove svg path{stroke:#e74c3c}.tox .tox-swatches__picker-btn{align-items:center;background-color:transparent;border:0;cursor:pointer;display:flex;height:30px;justify-content:center;outline:0;padding:0;width:30px}.tox .tox-swatches__picker-btn svg{height:24px;width:24px}.tox .tox-swatches__picker-btn:hover{background:#dee0e2}.tox:not([dir=rtl]) .tox-swatches__picker-btn{margin-left:auto}.tox[dir=rtl] .tox-swatches__picker-btn{margin-right:auto}.tox .tox-comment-thread{background:#fff;position:relative}.tox .tox-comment-thread>:not(:first-child){margin-top:8px}.tox .tox-comment{background:#fff;border:1px solid #ccc;border-radius:3px;box-shadow:0 4px 8px 0 rgba(34,47,62,.1);padding:8px 8px 16px 8px;position:relative}.tox .tox-comment__header{align-items:center;color:#222f3e;display:flex;justify-content:space-between}.tox .tox-comment__date{color:rgba(34,47,62,.7);font-size:12px}.tox .tox-comment__body{color:#222f3e;font-size:14px;font-style:normal;font-weight:400;line-height:1.3;margin-top:8px;position:relative;text-transform:initial}.tox .tox-comment__body textarea{resize:none;white-space:normal;width:100%}.tox .tox-comment__expander{padding-top:8px}.tox .tox-comment__expander p{color:rgba(34,47,62,.7);font-size:14px;font-style:normal}.tox .tox-comment__body p{margin:0}.tox .tox-comment__buttonspacing{padding-top:16px;text-align:center}.tox .tox-comment-thread__overlay::after{background:#fff;bottom:0;content:"";display:flex;left:0;opacity:.9;position:absolute;right:0;top:0;z-index:5}.tox .tox-comment__reply{display:flex;flex-shrink:0;flex-wrap:wrap;justify-content:flex-end;margin-top:8px}.tox .tox-comment__reply>:first-child{margin-bottom:8px;width:100%}.tox .tox-comment__edit{display:flex;flex-wrap:wrap;justify-content:flex-end;margin-top:16px}.tox .tox-comment__gradient::after{background:linear-gradient(rgba(255,255,255,0),#fff);bottom:0;content:"";display:block;height:5em;margin-top:-40px;position:absolute;width:100%}.tox .tox-comment__overlay{background:#fff;bottom:0;display:flex;flex-direction:column;flex-grow:1;left:0;opacity:.9;position:absolute;right:0;text-align:center;top:0;z-index:5}.tox .tox-comment__loading-text{align-items:center;color:#222f3e;display:flex;flex-direction:column;position:relative}.tox .tox-comment__loading-text>div{padding-bottom:16px}.tox .tox-comment__overlaytext{bottom:0;flex-direction:column;font-size:14px;left:0;padding:1em;position:absolute;right:0;top:0;z-index:10}.tox .tox-comment__overlaytext p{background-color:#fff;box-shadow:0 0 8px 8px #fff;color:#222f3e;text-align:center}.tox .tox-comment__overlaytext div:nth-of-type(2){font-size:.8em}.tox .tox-comment__busy-spinner{align-items:center;background-color:#fff;bottom:0;display:flex;justify-content:center;left:0;position:absolute;right:0;top:0;z-index:20}.tox .tox-comment__scroll{display:flex;flex-direction:column;flex-shrink:1;overflow:auto}.tox .tox-conversations{margin:8px}.tox:not([dir=rtl]) .tox-comment__edit{margin-left:8px}.tox:not([dir=rtl]) .tox-comment__buttonspacing>:last-child,.tox:not([dir=rtl]) .tox-comment__edit>:last-child,.tox:not([dir=rtl]) .tox-comment__reply>:last-child{margin-left:8px}.tox[dir=rtl] .tox-comment__edit{margin-right:8px}.tox[dir=rtl] .tox-comment__buttonspacing>:last-child,.tox[dir=rtl] .tox-comment__edit>:last-child,.tox[dir=rtl] .tox-comment__reply>:last-child{margin-right:8px}.tox .tox-user{align-items:center;display:flex}.tox .tox-user__avatar svg{fill:rgba(34,47,62,.7)}.tox .tox-user__name{color:rgba(34,47,62,.7);font-size:12px;font-style:normal;font-weight:700;text-transform:uppercase}.tox:not([dir=rtl]) .tox-user__avatar svg{margin-right:8px}.tox:not([dir=rtl]) .tox-user__avatar+.tox-user__name{margin-left:8px}.tox[dir=rtl] .tox-user__avatar svg{margin-left:8px}.tox[dir=rtl] .tox-user__avatar+.tox-user__name{margin-right:8px}.tox .tox-dialog-wrap{align-items:center;bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:1100}.tox .tox-dialog-wrap__backdrop{background-color:rgba(255,255,255,.75);bottom:0;left:0;position:absolute;right:0;top:0;z-index:1}.tox .tox-dialog-wrap__backdrop--opaque{background-color:#fff}.tox .tox-dialog{background-color:#fff;border-color:#ccc;border-radius:3px;border-style:solid;border-width:1px;box-shadow:0 16px 16px -10px rgba(34,47,62,.15),0 0 40px 1px rgba(34,47,62,.15);display:flex;flex-direction:column;max-height:100%;max-width:480px;overflow:hidden;position:relative;width:95vw;z-index:2}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox .tox-dialog{align-self:flex-start;margin:8px auto;width:calc(100vw - 16px)}}.tox .tox-dialog-inline{z-index:1100}.tox .tox-dialog__header{align-items:center;background-color:#fff;border-bottom:none;color:#222f3e;display:flex;font-size:16px;justify-content:space-between;padding:8px 16px 0 16px;position:relative}.tox .tox-dialog__header .tox-button{z-index:1}.tox .tox-dialog__draghandle{cursor:grab;height:100%;left:0;position:absolute;top:0;width:100%}.tox .tox-dialog__draghandle:active{cursor:grabbing}.tox .tox-dialog__dismiss{margin-left:auto}.tox .tox-dialog__title{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:20px;font-style:normal;font-weight:400;line-height:1.3;margin:0;text-transform:normal}.tox .tox-dialog__body{color:#222f3e;display:flex;flex:1;-ms-flex-preferred-size:auto;font-size:16px;font-style:normal;font-weight:400;line-height:1.3;min-width:0;text-align:left;text-transform:normal}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox .tox-dialog__body{flex-direction:column}}.tox .tox-dialog__body-nav{align-items:flex-start;display:flex;flex-direction:column;padding:16px 16px}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox .tox-dialog__body-nav{flex-direction:row;-webkit-overflow-scrolling:touch;overflow-x:auto;padding-bottom:0}}.tox .tox-dialog__body-nav-item{border-bottom:2px solid transparent;color:rgba(34,47,62,.7);display:inline-block;font-size:14px;line-height:1.3;margin-bottom:8px;text-decoration:none;white-space:nowrap}.tox .tox-dialog__body-nav-item:focus{background-color:rgba(32,122,183,.1)}.tox .tox-dialog__body-nav-item--active{border-bottom:2px solid #207ab7;color:#207ab7}.tox .tox-dialog__body-content{box-sizing:border-box;display:flex;flex:1;flex-direction:column;-ms-flex-preferred-size:auto;max-height:650px;overflow:auto;-webkit-overflow-scrolling:touch;padding:16px 16px}.tox .tox-dialog__body-content>*{margin-bottom:0;margin-top:16px}.tox .tox-dialog__body-content>:first-child{margin-top:0}.tox .tox-dialog__body-content>:last-child{margin-bottom:0}.tox .tox-dialog__body-content>:only-child{margin-bottom:0;margin-top:0}.tox .tox-dialog__body-content a{color:#207ab7;cursor:pointer;text-decoration:none}.tox .tox-dialog__body-content a:focus,.tox .tox-dialog__body-content a:hover{color:#185d8c;text-decoration:none}.tox .tox-dialog__body-content a:active{color:#185d8c;text-decoration:none}.tox .tox-dialog__body-content ul{display:block;list-style-type:disc;margin-bottom:16px;-webkit-margin-end:0;margin-inline-end:0;-webkit-margin-start:0;margin-inline-start:0;-webkit-padding-start:2.5rem;padding-inline-start:2.5rem}.tox .tox-dialog__body-content .tox-form__group h1{font-size:20px;font-weight:700;margin-bottom:16px;margin-top:2rem}.tox .tox-dialog__body-content .tox-form__group h2{font-size:16px;font-weight:700;margin-bottom:16px;margin-top:2rem}.tox .tox-dialog__body-content .tox-form__group p{margin-bottom:16px}.tox .tox-dialog__body-content .tox-form__group h1:first-child,.tox .tox-dialog__body-content .tox-form__group h2:first-child,.tox .tox-dialog__body-content .tox-form__group p:first-child{margin-top:0}.tox .tox-dialog__body-content .tox-form__group h1:last-child,.tox .tox-dialog__body-content .tox-form__group h2:last-child,.tox .tox-dialog__body-content .tox-form__group p:last-child{margin-bottom:0}.tox .tox-dialog__body-content .tox-form__group h1:only-child,.tox .tox-dialog__body-content .tox-form__group h2:only-child,.tox .tox-dialog__body-content .tox-form__group p:only-child{margin-bottom:0;margin-top:0}.tox .tox-dialog--width-lg{height:650px;max-width:1200px}.tox .tox-dialog--width-md{max-width:800px}.tox .tox-dialog--width-md .tox-dialog__body-content{overflow:auto}.tox .tox-dialog__body-content--centered{text-align:center}.tox .tox-dialog__footer{align-items:center;background-color:#fff;border-top:1px solid #ccc;display:flex;justify-content:space-between;padding:8px 16px}.tox .tox-dialog__footer-end,.tox .tox-dialog__footer-start{display:flex}.tox .tox-dialog__busy-spinner{align-items:center;background-color:rgba(255,255,255,.75);bottom:0;display:flex;justify-content:center;left:0;position:absolute;right:0;top:0;z-index:3}.tox .tox-dialog__table{border-collapse:collapse;width:100%}.tox .tox-dialog__table thead th{font-weight:700;padding-bottom:8px}.tox .tox-dialog__table tbody tr{border-bottom:1px solid #ccc}.tox .tox-dialog__table tbody tr:last-child{border-bottom:none}.tox .tox-dialog__table td{padding-bottom:8px;padding-top:8px}.tox .tox-dialog__popups{position:absolute;width:100%;z-index:1100}.tox .tox-dialog__body-iframe{display:flex;flex:1;flex-direction:column;-ms-flex-preferred-size:auto}.tox .tox-dialog__body-iframe .tox-navobj{display:flex;flex:1;-ms-flex-preferred-size:auto}.tox .tox-dialog__body-iframe .tox-navobj :nth-child(2){flex:1;-ms-flex-preferred-size:auto;height:100%}.tox .tox-dialog-dock-fadeout{opacity:0;visibility:hidden}.tox .tox-dialog-dock-fadein{opacity:1;visibility:visible}.tox .tox-dialog-dock-transition{transition:visibility 0s linear .3s,opacity .3s ease}.tox .tox-dialog-dock-transition.tox-dialog-dock-fadein{transition-delay:0s}body.tox-dialog__disable-scroll{overflow:hidden}.tox.tox-platform-ie .tox-dialog-wrap{position:-ms-device-fixed}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox:not([dir=rtl]) .tox-dialog__body-nav{margin-right:0}}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox:not([dir=rtl]) .tox-dialog__body-nav-item:not(:first-child){margin-left:8px}}.tox:not([dir=rtl]) .tox-dialog__footer .tox-dialog__footer-end>*,.tox:not([dir=rtl]) .tox-dialog__footer .tox-dialog__footer-start>*{margin-left:8px}.tox[dir=rtl] .tox-dialog__body{text-align:right}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox[dir=rtl] .tox-dialog__body-nav{margin-left:0}}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox[dir=rtl] .tox-dialog__body-nav-item:not(:first-child){margin-right:8px}}.tox[dir=rtl] .tox-dialog__footer .tox-dialog__footer-end>*,.tox[dir=rtl] .tox-dialog__footer .tox-dialog__footer-start>*{margin-right:8px}.tox .tox-dropzone-container{display:flex;flex:1;-ms-flex-preferred-size:auto}.tox .tox-dropzone{align-items:center;background:#fff;border:2px dashed #ccc;box-sizing:border-box;display:flex;flex-direction:column;flex-grow:1;justify-content:center;min-height:100px;padding:10px}.tox .tox-dropzone p{color:rgba(34,47,62,.7);margin:0 0 16px 0}.tox .tox-edit-area{display:flex;flex:1;-ms-flex-preferred-size:auto;overflow:hidden;position:relative}.tox .tox-edit-area__iframe{background-color:#fff;border:0;box-sizing:border-box;flex:1;-ms-flex-preferred-size:auto;height:100%;position:absolute;width:100%}.tox.tox-inline-edit-area{border:1px dotted #ccc}.tox .tox-editor-container{display:flex;flex:1 1 auto;flex-direction:column;overflow:hidden}.tox .tox-editor-header{z-index:1}.tox-editor-dock-fadeout{opacity:0;visibility:hidden}.tox-editor-dock-fadein{opacity:1;visibility:visible}.tox-editor-dock-transition{transition:visibility 0s linear .25s,opacity .25s ease}.tox-editor-dock-transition.tox-editor-dock-fadein{transition-delay:0s}.tox .tox-control-wrap{flex:1;position:relative}.tox .tox-control-wrap:not(.tox-control-wrap--status-invalid) .tox-control-wrap__status-icon-invalid,.tox .tox-control-wrap:not(.tox-control-wrap--status-unknown) .tox-control-wrap__status-icon-unknown,.tox .tox-control-wrap:not(.tox-control-wrap--status-valid) .tox-control-wrap__status-icon-valid{display:none}.tox .tox-control-wrap svg{display:block}.tox .tox-control-wrap__status-icon-wrap{position:absolute;top:50%;transform:translateY(-50%)}.tox .tox-control-wrap__status-icon-invalid svg{fill:#c00}.tox .tox-control-wrap__status-icon-unknown svg{fill:orange}.tox .tox-control-wrap__status-icon-valid svg{fill:green}.tox:not([dir=rtl]) .tox-control-wrap--status-invalid .tox-textfield,.tox:not([dir=rtl]) .tox-control-wrap--status-unknown .tox-textfield,.tox:not([dir=rtl]) .tox-control-wrap--status-valid .tox-textfield{padding-right:32px}.tox:not([dir=rtl]) .tox-control-wrap__status-icon-wrap{right:4px}.tox[dir=rtl] .tox-control-wrap--status-invalid .tox-textfield,.tox[dir=rtl] .tox-control-wrap--status-unknown .tox-textfield,.tox[dir=rtl] .tox-control-wrap--status-valid .tox-textfield{padding-left:32px}.tox[dir=rtl] .tox-control-wrap__status-icon-wrap{left:4px}.tox .tox-autocompleter{max-width:25em}.tox .tox-autocompleter .tox-menu{max-width:25em}.tox .tox-autocompleter .tox-autocompleter-highlight{font-weight:700}.tox .tox-color-input{display:flex}.tox .tox-color-input .tox-textfield{border-radius:3px 0 0 3px;display:flex}.tox .tox-color-input span{border-color:rgba(34,47,62,.2);border-radius:0 3px 3px 0;border-style:solid;border-width:1px 1px 1px 0;box-shadow:none;box-sizing:border-box;cursor:pointer;display:flex;width:35px}.tox .tox-color-input span:focus{border-color:#207ab7}.tox[dir=rtl] .tox-color-input .tox-textfield{border-radius:0 3px 3px 0}.tox[dir=rtl] .tox-color-input span{border-radius:3px 0 0 3px;border-width:1px 0 1px 1px}.tox .tox-label,.tox .tox-toolbar-label{color:rgba(34,47,62,.7);display:block;font-size:14px;font-style:normal;font-weight:400;line-height:1.3;padding:0 8px 0 0;text-transform:normal;white-space:nowrap}.tox .tox-toolbar-label{padding:0 8px}.tox[dir=rtl] .tox-label{padding:0 0 0 8px}.tox .tox-form{display:flex;flex:1;flex-direction:column;-ms-flex-preferred-size:auto}.tox .tox-form__group{box-sizing:border-box;margin-bottom:4px}.tox .tox-form-group--maximize{flex:1}.tox .tox-form__group--error{color:#c00}.tox .tox-form__group--collection{display:flex}.tox .tox-form__grid{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:space-between}.tox .tox-form__grid--2col>.tox-form__group{width:calc(50% - (8px / 2))}.tox .tox-form__grid--3col>.tox-form__group{width:calc(100% / 3 - (8px / 2))}.tox .tox-form__grid--4col>.tox-form__group{width:calc(25% - (8px / 2))}.tox .tox-form__controls-h-stack{align-items:center;display:flex}.tox .tox-form__group--inline{align-items:center;display:flex}.tox .tox-form__group--stretched{display:flex;flex:1;flex-direction:column;-ms-flex-preferred-size:auto}.tox .tox-form__group--stretched .tox-textarea{flex:1;-ms-flex-preferred-size:auto}.tox .tox-form__group--stretched .tox-navobj{display:flex;flex:1;-ms-flex-preferred-size:auto}.tox .tox-form__group--stretched .tox-navobj :nth-child(2){flex:1;-ms-flex-preferred-size:auto;height:100%}.tox:not([dir=rtl]) .tox-form__controls-h-stack>:not(:first-child){margin-left:4px}.tox[dir=rtl] .tox-form__controls-h-stack>:not(:first-child){margin-right:4px}.tox .tox-lock.tox-locked .tox-lock-icon__unlock,.tox .tox-lock:not(.tox-locked) .tox-lock-icon__lock{display:none}.tox .tox-selectfield select,.tox .tox-textarea,.tox .tox-textfield,.tox .tox-toolbar-textfield{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:#ccc;border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;color:#222f3e;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:16px;line-height:24px;margin:0;outline:0;padding:5px 4.75px;resize:none;width:100%}.tox .tox-textarea[disabled],.tox .tox-textfield[disabled]{background-color:#f2f2f2;color:rgba(34,47,62,.85);cursor:not-allowed}.tox .tox-selectfield select:focus,.tox .tox-textarea:focus,.tox .tox-textfield:focus{border-color:#207ab7;box-shadow:none;outline:0}.tox .tox-toolbar-textfield{border-width:0;margin-bottom:3px;margin-top:2px;max-width:250px}.tox .tox-naked-btn{background-color:transparent;border:0;border-color:transparent;box-shadow:unset;color:#207ab7;cursor:pointer;display:block;margin:0;padding:0}.tox .tox-naked-btn svg{display:block;fill:#222f3e}.tox:not([dir=rtl]) .tox-toolbar-textfield+*{margin-left:4px}.tox[dir=rtl] .tox-toolbar-textfield+*{margin-right:4px}.tox .tox-selectfield{cursor:pointer;position:relative}.tox .tox-selectfield select[disabled]{background-color:#f2f2f2;color:rgba(34,47,62,.85);cursor:not-allowed}.tox .tox-selectfield select::-ms-expand{display:none}.tox .tox-selectfield svg{pointer-events:none;position:absolute;top:50%;transform:translateY(-50%)}.tox:not([dir=rtl]) .tox-selectfield select[size="0"],.tox:not([dir=rtl]) .tox-selectfield select[size="1"]{padding-right:24px}.tox:not([dir=rtl]) .tox-selectfield svg{right:8px}.tox[dir=rtl] .tox-selectfield select[size="0"],.tox[dir=rtl] .tox-selectfield select[size="1"]{padding-left:24px}.tox[dir=rtl] .tox-selectfield svg{left:8px}.tox .tox-textarea{-webkit-appearance:textarea;-moz-appearance:textarea;appearance:textarea;white-space:pre-wrap}.tox-fullscreen{border:0;height:100%;left:0;margin:0;overflow:hidden;-ms-scroll-chaining:none;overscroll-behavior:none;padding:0;position:fixed;top:0;touch-action:pinch-zoom;width:100%}.tox-fullscreen .tox.tox-tinymce.tox-fullscreen .tox-statusbar__resize-handle{display:none}.tox-fullscreen .tox.tox-tinymce.tox-fullscreen{z-index:1200}.tox-fullscreen .tox.tox-tinymce-aux{z-index:1201}.tox .tox-image-tools{width:100%}.tox .tox-image-tools__toolbar{align-items:center;display:flex;justify-content:center}.tox .tox-image-tools__image{background-color:#666;height:380px;overflow:auto;position:relative;width:100%}.tox .tox-image-tools__image,.tox .tox-image-tools__image+.tox-image-tools__toolbar{margin-top:8px}.tox .tox-image-tools__image-bg{background:url(data:image/gif;base64,R0lGODdhDAAMAIABAMzMzP///ywAAAAADAAMAAACFoQfqYeabNyDMkBQb81Uat85nxguUAEAOw==)}.tox .tox-image-tools__toolbar>.tox-spacer{flex:1;-ms-flex-preferred-size:auto}.tox .tox-croprect-block{background:#000;opacity:.5;position:absolute;zoom:1}.tox .tox-croprect-handle{border:2px solid #fff;height:20px;left:0;position:absolute;top:0;width:20px}.tox .tox-croprect-handle-move{border:0;cursor:move;position:absolute}.tox .tox-croprect-handle-nw{border-width:2px 0 0 2px;cursor:nw-resize;left:100px;margin:-2px 0 0 -2px;top:100px}.tox .tox-croprect-handle-ne{border-width:2px 2px 0 0;cursor:ne-resize;left:200px;margin:-2px 0 0 -20px;top:100px}.tox .tox-croprect-handle-sw{border-width:0 0 2px 2px;cursor:sw-resize;left:100px;margin:-20px 2px 0 -2px;top:200px}.tox .tox-croprect-handle-se{border-width:0 2px 2px 0;cursor:se-resize;left:200px;margin:-20px 0 0 -20px;top:200px}.tox:not([dir=rtl]) .tox-image-tools__toolbar>.tox-slider:not(:first-of-type){margin-left:8px}.tox:not([dir=rtl]) .tox-image-tools__toolbar>.tox-button+.tox-slider{margin-left:32px}.tox:not([dir=rtl]) .tox-image-tools__toolbar>.tox-slider+.tox-button{margin-left:32px}.tox[dir=rtl] .tox-image-tools__toolbar>.tox-slider:not(:first-of-type){margin-right:8px}.tox[dir=rtl] .tox-image-tools__toolbar>.tox-button+.tox-slider{margin-right:32px}.tox[dir=rtl] .tox-image-tools__toolbar>.tox-slider+.tox-button{margin-right:32px}.tox .tox-insert-table-picker{display:flex;flex-wrap:wrap;width:169px}.tox .tox-insert-table-picker>div{border-color:#ccc;border-style:solid;border-width:0 1px 1px 0;box-sizing:content-box;height:16px;width:16px}.tox .tox-collection--list .tox-collection__group .tox-insert-table-picker{margin:-4px 0}.tox .tox-insert-table-picker .tox-insert-table-picker__selected{background-color:rgba(32,122,183,.5);border-color:rgba(32,122,183,.5)}.tox .tox-insert-table-picker__label{color:rgba(34,47,62,.7);display:block;font-size:14px;padding:4px;text-align:center;width:100%}.tox:not([dir=rtl]) .tox-insert-table-picker>div:nth-child(10n){border-right:0}.tox[dir=rtl] .tox-insert-table-picker>div:nth-child(10n+1){border-right:0}.tox .tox-menu{background-color:#fff;border:1px solid #ccc;border-radius:3px;box-shadow:0 4px 8px 0 rgba(34,47,62,.1);display:inline-block;overflow:hidden;vertical-align:top;z-index:1150}.tox .tox-menu.tox-collection.tox-collection--list{padding:0}.tox .tox-menu.tox-collection.tox-collection--toolbar{padding:4px}.tox .tox-menu.tox-collection.tox-collection--grid{padding:4px}.tox .tox-menu__label blockquote,.tox .tox-menu__label code,.tox .tox-menu__label h1,.tox .tox-menu__label h2,.tox .tox-menu__label h3,.tox .tox-menu__label h4,.tox .tox-menu__label h5,.tox .tox-menu__label h6,.tox .tox-menu__label p{margin:0}.tox .tox-menubar{background:url("data:image/svg+xml;charset=utf8,%3Csvg height='39px' viewBox='0 0 40 39px' width='40' xmlns='http://www.w3.org/2000/svg'%3E%3Crect x='0' y='38px' width='100' height='1' fill='%23cccccc'/%3E%3C/svg%3E") left 0 top 0 #fff;background-color:#fff;display:flex;flex:0 0 auto;flex-shrink:0;flex-wrap:wrap;padding:0 4px 0 4px}.tox .tox-mbtn{align-items:center;background:0 0;border:0;border-radius:3px;box-shadow:none;color:#222f3e;display:flex;flex:0 0 auto;font-size:14px;font-style:normal;font-weight:400;height:34px;justify-content:center;margin:2px 0 3px 0;outline:0;overflow:hidden;padding:0 4px;text-transform:normal;width:auto}.tox .tox-mbtn[disabled]{background-color:none;border:0;box-shadow:none;color:rgba(34,47,62,.5);cursor:not-allowed}.tox .tox-mbtn:focus:not(:disabled){background:#dee0e2;border:0;box-shadow:none;color:#222f3e}.tox .tox-mbtn--active{background:#c8cbcf;border:0;box-shadow:none;color:#222f3e}.tox .tox-mbtn:hover:not(:disabled):not(.tox-mbtn--active){background:#dee0e2;border:0;box-shadow:none;color:#222f3e}.tox .tox-mbtn__select-label{cursor:default;font-weight:400;margin:0 4px}.tox .tox-mbtn[disabled] .tox-mbtn__select-label{cursor:not-allowed}.tox .tox-mbtn__select-chevron{align-items:center;display:flex;justify-content:center;width:16px;display:none}.tox .tox-notification{border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;display:-ms-grid;display:grid;font-size:14px;font-weight:400;-ms-grid-columns:minmax(40px,1fr) auto minmax(40px,1fr);grid-template-columns:minmax(40px,1fr) auto minmax(40px,1fr);margin-top:4px;opacity:0;padding:4px;transition:transform .1s ease-in,opacity 150ms ease-in}.tox .tox-notification p{font-size:14px;font-weight:400}.tox .tox-notification a{text-decoration:underline}.tox .tox-notification--in{opacity:1}.tox .tox-notification--success{background-color:#e4eeda;border-color:#d7e6c8;color:#222f3e}.tox .tox-notification--success p{color:#222f3e}.tox .tox-notification--success a{color:#547831}.tox .tox-notification--success svg{fill:#222f3e}.tox .tox-notification--error{background-color:#f8dede;border-color:#f2bfbf;color:#222f3e}.tox .tox-notification--error p{color:#222f3e}.tox .tox-notification--error a{color:#c00}.tox .tox-notification--error svg{fill:#222f3e}.tox .tox-notification--warn,.tox .tox-notification--warning{background-color:#fffaea;border-color:#ffe89d;color:#222f3e}.tox .tox-notification--warn p,.tox .tox-notification--warning p{color:#222f3e}.tox .tox-notification--warn a,.tox .tox-notification--warning a{color:#222f3e}.tox .tox-notification--warn svg,.tox .tox-notification--warning svg{fill:#222f3e}.tox .tox-notification--info{background-color:#d9edf7;border-color:#779ecb;color:#222f3e}.tox .tox-notification--info p{color:#222f3e}.tox .tox-notification--info a{color:#222f3e}.tox .tox-notification--info svg{fill:#222f3e}.tox .tox-notification__body{-ms-grid-row-align:center;align-self:center;color:#222f3e;font-size:14px;-ms-grid-column-span:1;grid-column-end:3;-ms-grid-column:2;grid-column-start:2;-ms-grid-row-span:1;grid-row-end:2;-ms-grid-row:1;grid-row-start:1;text-align:center;white-space:normal;word-break:break-all;word-break:break-word}.tox .tox-notification__body>*{margin:0}.tox .tox-notification__body>*+*{margin-top:1rem}.tox .tox-notification__icon{-ms-grid-row-align:center;align-self:center;-ms-grid-column-span:1;grid-column-end:2;-ms-grid-column:1;grid-column-start:1;-ms-grid-row-span:1;grid-row-end:2;-ms-grid-row:1;grid-row-start:1;-ms-grid-column-align:end;justify-self:end}.tox .tox-notification__icon svg{display:block}.tox .tox-notification__dismiss{-ms-grid-row-align:start;align-self:start;-ms-grid-column-span:1;grid-column-end:4;-ms-grid-column:3;grid-column-start:3;-ms-grid-row-span:1;grid-row-end:2;-ms-grid-row:1;grid-row-start:1;-ms-grid-column-align:end;justify-self:end}.tox .tox-notification .tox-progress-bar{-ms-grid-column-span:3;grid-column-end:4;-ms-grid-column:1;grid-column-start:1;-ms-grid-row-span:1;grid-row-end:3;-ms-grid-row:2;grid-row-start:2;-ms-grid-column-align:center;justify-self:center}.tox .tox-pop{display:inline-block;position:relative}.tox .tox-pop--resizing{transition:width .1s ease}.tox .tox-pop--resizing .tox-toolbar{flex-wrap:nowrap}.tox .tox-pop__dialog{background-color:#fff;border:1px solid #ccc;border-radius:3px;box-shadow:0 1px 3px rgba(0,0,0,.15);min-width:0;overflow:hidden}.tox .tox-pop__dialog>:not(.tox-toolbar){margin:4px 4px 4px 8px}.tox .tox-pop__dialog .tox-toolbar{background-color:transparent;margin-bottom:-1px}.tox .tox-pop::after,.tox .tox-pop::before{border-style:solid;content:'';display:block;height:0;position:absolute;width:0}.tox .tox-pop.tox-pop--bottom::after,.tox .tox-pop.tox-pop--bottom::before{left:50%;top:100%}.tox .tox-pop.tox-pop--bottom::after{border-color:#fff transparent transparent transparent;border-width:8px;margin-left:-8px;margin-top:-1px}.tox .tox-pop.tox-pop--bottom::before{border-color:#ccc transparent transparent transparent;border-width:9px;margin-left:-9px}.tox .tox-pop.tox-pop--top::after,.tox .tox-pop.tox-pop--top::before{left:50%;top:0;transform:translateY(-100%)}.tox .tox-pop.tox-pop--top::after{border-color:transparent transparent #fff transparent;border-width:8px;margin-left:-8px;margin-top:1px}.tox .tox-pop.tox-pop--top::before{border-color:transparent transparent #ccc transparent;border-width:9px;margin-left:-9px}.tox .tox-pop.tox-pop--left::after,.tox .tox-pop.tox-pop--left::before{left:0;top:calc(50% - 1px);transform:translateY(-50%)}.tox .tox-pop.tox-pop--left::after{border-color:transparent #fff transparent transparent;border-width:8px;margin-left:-15px}.tox .tox-pop.tox-pop--left::before{border-color:transparent #ccc transparent transparent;border-width:10px;margin-left:-19px}.tox .tox-pop.tox-pop--right::after,.tox .tox-pop.tox-pop--right::before{left:100%;top:calc(50% + 1px);transform:translateY(-50%)}.tox .tox-pop.tox-pop--right::after{border-color:transparent transparent transparent #fff;border-width:8px;margin-left:-1px}.tox .tox-pop.tox-pop--right::before{border-color:transparent transparent transparent #ccc;border-width:10px;margin-left:-1px}.tox .tox-pop.tox-pop--align-left::after,.tox .tox-pop.tox-pop--align-left::before{left:20px}.tox .tox-pop.tox-pop--align-right::after,.tox .tox-pop.tox-pop--align-right::before{left:calc(100% - 20px)}.tox .tox-sidebar-wrap{display:flex;flex-direction:row;flex-grow:1;-ms-flex-preferred-size:0;min-height:0}.tox .tox-sidebar{background-color:#fff;display:flex;flex-direction:row;justify-content:flex-end}.tox .tox-sidebar__slider{display:flex;overflow:hidden}.tox .tox-sidebar__pane-container{display:flex}.tox .tox-sidebar__pane{display:flex}.tox .tox-sidebar--sliding-closed{opacity:0}.tox .tox-sidebar--sliding-open{opacity:1}.tox .tox-sidebar--sliding-growing,.tox .tox-sidebar--sliding-shrinking{transition:width .5s ease,opacity .5s ease}.tox .tox-selector{background-color:#4099ff;border-color:#4099ff;border-style:solid;border-width:1px;box-sizing:border-box;display:inline-block;height:10px;position:absolute;width:10px}.tox.tox-platform-touch .tox-selector{height:12px;width:12px}.tox .tox-slider{align-items:center;display:flex;flex:1;-ms-flex-preferred-size:auto;height:24px;justify-content:center;position:relative}.tox .tox-slider__rail{background-color:transparent;border:1px solid #ccc;border-radius:3px;height:10px;min-width:120px;width:100%}.tox .tox-slider__handle{background-color:#207ab7;border:2px solid #185d8c;border-radius:3px;box-shadow:none;height:24px;left:50%;position:absolute;top:50%;transform:translateX(-50%) translateY(-50%);width:14px}.tox .tox-source-code{overflow:auto}.tox .tox-spinner{display:flex}.tox .tox-spinner>div{animation:tam-bouncing-dots 1.5s ease-in-out 0s infinite both;background-color:rgba(34,47,62,.7);border-radius:100%;height:8px;width:8px}.tox .tox-spinner>div:nth-child(1){animation-delay:-.32s}.tox .tox-spinner>div:nth-child(2){animation-delay:-.16s}@keyframes tam-bouncing-dots{0%,100%,80%{transform:scale(0)}40%{transform:scale(1)}}.tox:not([dir=rtl]) .tox-spinner>div:not(:first-child){margin-left:4px}.tox[dir=rtl] .tox-spinner>div:not(:first-child){margin-right:4px}.tox .tox-statusbar{align-items:center;background-color:#fff;border-top:1px solid #ccc;color:rgba(34,47,62,.7);display:flex;flex:0 0 auto;font-size:12px;font-weight:400;height:18px;overflow:hidden;padding:0 8px;position:relative;text-transform:uppercase}.tox .tox-statusbar__text-container{display:flex;flex:1 1 auto;justify-content:flex-end;overflow:hidden}.tox .tox-statusbar__path{display:flex;flex:1 1 auto;margin-right:auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tox .tox-statusbar__path>*{display:inline;white-space:nowrap}.tox .tox-statusbar__wordcount{flex:0 0 auto;margin-left:1ch}.tox .tox-statusbar a,.tox .tox-statusbar__path-item,.tox .tox-statusbar__wordcount{color:rgba(34,47,62,.7);text-decoration:none}.tox .tox-statusbar a:focus,.tox .tox-statusbar a:hover,.tox .tox-statusbar__path-item:focus,.tox .tox-statusbar__path-item:hover,.tox .tox-statusbar__wordcount:focus,.tox .tox-statusbar__wordcount:hover{cursor:pointer;text-decoration:underline}.tox .tox-statusbar__resize-handle{align-items:flex-end;align-self:stretch;cursor:nwse-resize;display:flex;flex:0 0 auto;justify-content:flex-end;margin-left:auto;margin-right:-8px;padding-left:1ch}.tox .tox-statusbar__resize-handle svg{display:block;fill:rgba(34,47,62,.7)}.tox:not([dir=rtl]) .tox-statusbar__path>*{margin-right:4px}.tox:not([dir=rtl]) .tox-statusbar__branding{margin-left:1ch}.tox[dir=rtl] .tox-statusbar{flex-direction:row-reverse}.tox[dir=rtl] .tox-statusbar__path>*{margin-left:4px}.tox .tox-throbber{z-index:1400}.tox .tox-throbber__busy-spinner{align-items:center;background-color:rgba(255,255,255,.6);bottom:0;display:flex;justify-content:center;left:0;position:absolute;right:0;top:0}.tox .tox-tbtn{align-items:center;background:0 0;border:0;border-radius:3px;box-shadow:none;color:#222f3e;display:flex;flex:0 0 auto;font-size:14px;font-style:normal;font-weight:400;height:34px;justify-content:center;margin:2px 0 3px 0;outline:0;overflow:hidden;padding:0;text-transform:normal;width:34px}.tox .tox-tbtn svg{display:block;fill:#222f3e}.tox .tox-tbtn.tox-tbtn-more{padding-left:5px;padding-right:5px;width:inherit}.tox .tox-tbtn:focus{background:#dee0e2;border:0;box-shadow:none}.tox .tox-tbtn:hover{background:#dee0e2;border:0;box-shadow:none;color:#222f3e}.tox .tox-tbtn:hover svg{fill:#222f3e}.tox .tox-tbtn:active{background:#c8cbcf;border:0;box-shadow:none;color:#222f3e}.tox .tox-tbtn:active svg{fill:#222f3e}.tox .tox-tbtn--disabled,.tox .tox-tbtn--disabled:hover,.tox .tox-tbtn:disabled,.tox .tox-tbtn:disabled:hover{background:0 0;border:0;box-shadow:none;color:rgba(34,47,62,.5);cursor:not-allowed}.tox .tox-tbtn--disabled svg,.tox .tox-tbtn--disabled:hover svg,.tox .tox-tbtn:disabled svg,.tox .tox-tbtn:disabled:hover svg{fill:rgba(34,47,62,.5)}.tox .tox-tbtn--enabled,.tox .tox-tbtn--enabled:hover{background:#c8cbcf;border:0;box-shadow:none;color:#222f3e}.tox .tox-tbtn--enabled:hover>*,.tox .tox-tbtn--enabled>*{transform:none}.tox .tox-tbtn--enabled svg,.tox .tox-tbtn--enabled:hover svg{fill:#222f3e}.tox .tox-tbtn:focus:not(.tox-tbtn--disabled){color:#222f3e}.tox .tox-tbtn:focus:not(.tox-tbtn--disabled) svg{fill:#222f3e}.tox .tox-tbtn:active>*{transform:none}.tox .tox-tbtn--md{height:51px;width:51px}.tox .tox-tbtn--lg{flex-direction:column;height:68px;width:68px}.tox .tox-tbtn--return{-ms-grid-row-align:stretch;align-self:stretch;height:unset;width:16px}.tox .tox-tbtn--labeled{padding:0 4px;width:unset}.tox .tox-tbtn__vlabel{display:block;font-size:10px;font-weight:400;letter-spacing:-.025em;margin-bottom:4px;white-space:nowrap}.tox .tox-tbtn--select{margin:2px 0 3px 0;padding:0 4px;width:auto}.tox .tox-tbtn__select-label{cursor:default;font-weight:400;margin:0 4px}.tox .tox-tbtn__select-chevron{align-items:center;display:flex;justify-content:center;width:16px}.tox .tox-tbtn__select-chevron svg{fill:rgba(34,47,62,.5)}.tox .tox-tbtn--bespoke .tox-tbtn__select-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:7em}.tox .tox-split-button{border:0;border-radius:3px;box-sizing:border-box;display:flex;margin:2px 0 3px 0;overflow:hidden}.tox .tox-split-button:hover{box-shadow:0 0 0 1px #dee0e2 inset}.tox .tox-split-button:focus{background:#dee0e2;box-shadow:none;color:#222f3e}.tox .tox-split-button>*{border-radius:0}.tox .tox-split-button__chevron{width:16px}.tox .tox-split-button__chevron svg{fill:rgba(34,47,62,.5)}.tox .tox-split-button .tox-tbtn{margin:0}.tox.tox-platform-touch .tox-split-button .tox-tbtn:first-child{width:30px}.tox.tox-platform-touch .tox-split-button__chevron{width:20px}.tox .tox-split-button.tox-tbtn--disabled .tox-tbtn:focus,.tox .tox-split-button.tox-tbtn--disabled .tox-tbtn:hover,.tox .tox-split-button.tox-tbtn--disabled:focus,.tox .tox-split-button.tox-tbtn--disabled:hover{background:0 0;box-shadow:none;color:rgba(34,47,62,.5)}.tox .tox-toolbar-overlord{background-color:#fff}.tox .tox-toolbar,.tox .tox-toolbar__overflow,.tox .tox-toolbar__primary{background:url("data:image/svg+xml;charset=utf8,%3Csvg height='39px' viewBox='0 0 40 39px' width='40' xmlns='http://www.w3.org/2000/svg'%3E%3Crect x='0' y='38px' width='100' height='1' fill='%23cccccc'/%3E%3C/svg%3E") left 0 top 0 #fff;background-color:#fff;display:flex;flex:0 0 auto;flex-shrink:0;flex-wrap:wrap;padding:0 0}.tox .tox-toolbar__overflow.tox-toolbar__overflow--closed{height:0;opacity:0;padding-bottom:0;padding-top:0;visibility:hidden}.tox .tox-toolbar__overflow--growing{transition:height .3s ease,opacity .2s linear .1s}.tox .tox-toolbar__overflow--shrinking{transition:opacity .3s ease,height .2s linear .1s,visibility 0s linear .3s}.tox .tox-toolbar--scrolling{flex-wrap:nowrap;overflow-x:auto}.tox .tox-pop .tox-toolbar{border-width:0}.tox .tox-toolbar--no-divider{background-image:none}.tox.tox-tinymce-aux .tox-toolbar__overflow{background-color:#fff;border:1px solid #ccc;border-radius:3px;box-shadow:0 1px 3px rgba(0,0,0,.15)}.tox[dir=rtl] .tox-tbtn__icon-rtl svg{transform:rotateY(180deg)}.tox .tox-toolbar__group{align-items:center;display:flex;flex-wrap:wrap;margin:0 0;padding:0 4px 0 4px}.tox .tox-toolbar__group--pull-right{margin-left:auto}.tox .tox-toolbar--scrolling .tox-toolbar__group{flex-shrink:0;flex-wrap:nowrap}.tox:not([dir=rtl]) .tox-toolbar__group:not(:last-of-type){border-right:1px solid #ccc}.tox[dir=rtl] .tox-toolbar__group:not(:last-of-type){border-left:1px solid #ccc}.tox .tox-tooltip{display:inline-block;padding:8px;position:relative}.tox .tox-tooltip__body{background-color:#222f3e;border-radius:3px;box-shadow:0 2px 4px rgba(34,47,62,.3);color:rgba(255,255,255,.75);font-size:14px;font-style:normal;font-weight:400;padding:4px 8px;text-transform:normal}.tox .tox-tooltip__arrow{position:absolute}.tox .tox-tooltip--down .tox-tooltip__arrow{border-left:8px solid transparent;border-right:8px solid transparent;border-top:8px solid #222f3e;bottom:0;left:50%;position:absolute;transform:translateX(-50%)}.tox .tox-tooltip--up .tox-tooltip__arrow{border-bottom:8px solid #222f3e;border-left:8px solid transparent;border-right:8px solid transparent;left:50%;position:absolute;top:0;transform:translateX(-50%)}.tox .tox-tooltip--right .tox-tooltip__arrow{border-bottom:8px solid transparent;border-left:8px solid #222f3e;border-top:8px solid transparent;position:absolute;right:0;top:50%;transform:translateY(-50%)}.tox .tox-tooltip--left .tox-tooltip__arrow{border-bottom:8px solid transparent;border-right:8px solid #222f3e;border-top:8px solid transparent;left:0;position:absolute;top:50%;transform:translateY(-50%)}.tox .tox-well{border:1px solid #ccc;border-radius:3px;padding:8px;width:100%}.tox .tox-well>:first-child{margin-top:0}.tox .tox-well>:last-child{margin-bottom:0}.tox .tox-well>:only-child{margin:0}.tox .tox-custom-editor{border:1px solid #ccc;border-radius:3px;display:flex;height:525px}.tox .tox-dialog-loading::before{background-color:rgba(0,0,0,.5);content:"";height:100%;position:absolute;width:100%;z-index:1000}.tox .tox-tab{cursor:pointer}.tox .tox-dialog__content-js{display:flex;flex:1;-ms-flex-preferred-size:auto}.tox .tox-dialog__body-content .tox-collection{display:flex;flex:1;-ms-flex-preferred-size:auto}.tox .tox-image-tools-edit-panel{height:60px}.tox .tox-image-tools__sidebar{height:60px}
diff --git a/admin/js/vendors/tinymce/js/tinymce/skins/ui/oxide/skin.mobile.min.css b/admin/js/vendors/tinymce/js/tinymce/skins/ui/oxide/skin.mobile.min.css
new file mode 100644 (file)
index 0000000..3a45cac
--- /dev/null
@@ -0,0 +1,7 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ */
+.tinymce-mobile-outer-container{all:initial;display:block}.tinymce-mobile-outer-container *{border:0;box-sizing:initial;cursor:inherit;float:none;line-height:1;margin:0;outline:0;padding:0;-webkit-tap-highlight-color:transparent;text-shadow:none;white-space:nowrap}.tinymce-mobile-icon-arrow-back::before{content:"\e5cd"}.tinymce-mobile-icon-image::before{content:"\e412"}.tinymce-mobile-icon-cancel-circle::before{content:"\e5c9"}.tinymce-mobile-icon-full-dot::before{content:"\e061"}.tinymce-mobile-icon-align-center::before{content:"\e234"}.tinymce-mobile-icon-align-left::before{content:"\e236"}.tinymce-mobile-icon-align-right::before{content:"\e237"}.tinymce-mobile-icon-bold::before{content:"\e238"}.tinymce-mobile-icon-italic::before{content:"\e23f"}.tinymce-mobile-icon-unordered-list::before{content:"\e241"}.tinymce-mobile-icon-ordered-list::before{content:"\e242"}.tinymce-mobile-icon-font-size::before{content:"\e245"}.tinymce-mobile-icon-underline::before{content:"\e249"}.tinymce-mobile-icon-link::before{content:"\e157"}.tinymce-mobile-icon-unlink::before{content:"\eca2"}.tinymce-mobile-icon-color::before{content:"\e891"}.tinymce-mobile-icon-previous::before{content:"\e314"}.tinymce-mobile-icon-next::before{content:"\e315"}.tinymce-mobile-icon-large-font::before,.tinymce-mobile-icon-style-formats::before{content:"\e264"}.tinymce-mobile-icon-undo::before{content:"\e166"}.tinymce-mobile-icon-redo::before{content:"\e15a"}.tinymce-mobile-icon-removeformat::before{content:"\e239"}.tinymce-mobile-icon-small-font::before{content:"\e906"}.tinymce-mobile-format-matches::after,.tinymce-mobile-icon-readonly-back::before{content:"\e5ca"}.tinymce-mobile-icon-small-heading::before{content:"small"}.tinymce-mobile-icon-large-heading::before{content:"large"}.tinymce-mobile-icon-large-heading::before,.tinymce-mobile-icon-small-heading::before{font-family:sans-serif;font-size:80%}.tinymce-mobile-mask-edit-icon::before{content:"\e254"}.tinymce-mobile-icon-back::before{content:"\e5c4"}.tinymce-mobile-icon-heading::before{content:"Headings";font-family:sans-serif;font-size:80%;font-weight:700}.tinymce-mobile-icon-h1::before{content:"H1";font-weight:700}.tinymce-mobile-icon-h2::before{content:"H2";font-weight:700}.tinymce-mobile-icon-h3::before{content:"H3";font-weight:700}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask{align-items:center;display:flex;justify-content:center;background:rgba(51,51,51,.5);height:100%;position:absolute;top:0;width:100%}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container{align-items:center;border-radius:50%;display:flex;flex-direction:column;font-family:sans-serif;font-size:1em;justify-content:space-between}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .mixin-menu-item{align-items:center;display:flex;justify-content:center;border-radius:50%;height:2.1em;width:2.1em}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section{align-items:center;display:flex;justify-content:center;flex-direction:column;font-size:1em}@media only screen and (min-device-width:700px){.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section{font-size:1.2em}}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section .tinymce-mobile-mask-tap-icon{align-items:center;display:flex;justify-content:center;border-radius:50%;height:2.1em;width:2.1em;background-color:#fff;color:#207ab7}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section .tinymce-mobile-mask-tap-icon::before{content:"\e900";font-family:tinymce-mobile,sans-serif}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section:not(.tinymce-mobile-mask-tap-icon-selected) .tinymce-mobile-mask-tap-icon{z-index:2}.tinymce-mobile-android-container.tinymce-mobile-android-maximized{background:#fff;border:none;bottom:0;display:flex;flex-direction:column;left:0;position:fixed;right:0;top:0}.tinymce-mobile-android-container:not(.tinymce-mobile-android-maximized){position:relative}.tinymce-mobile-android-container .tinymce-mobile-editor-socket{display:flex;flex-grow:1}.tinymce-mobile-android-container .tinymce-mobile-editor-socket iframe{display:flex!important;flex-grow:1;height:auto!important}.tinymce-mobile-android-scroll-reload{overflow:hidden}:not(.tinymce-mobile-readonly-mode)>.tinymce-mobile-android-selection-context-toolbar{margin-top:23px}.tinymce-mobile-toolstrip{background:#fff;display:flex;flex:0 0 auto;z-index:1}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar{align-items:center;background-color:#fff;border-bottom:1px solid #ccc;display:flex;flex:1;height:2.5em;width:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group{align-items:center;display:flex;height:100%;flex-shrink:1}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group>div{align-items:center;display:flex;height:100%;flex:1}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group.tinymce-mobile-exit-container{background:#f44336}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group.tinymce-mobile-toolbar-scrollable-group{flex-grow:1}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item{padding-left:.5em;padding-right:.5em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item.tinymce-mobile-toolbar-button{align-items:center;display:flex;height:80%;margin-left:2px;margin-right:2px}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item.tinymce-mobile-toolbar-button.tinymce-mobile-toolbar-button-selected{background:#c8cbcf;color:#ccc}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group:first-of-type,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group:last-of-type{background:#207ab7;color:#eceff1}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group{align-items:center;display:flex;height:100%;flex:1;padding-bottom:.4em;padding-top:.4em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog{display:flex;min-height:1.5em;overflow:hidden;padding-left:0;padding-right:0;position:relative;width:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain{display:flex;height:100%;transition:left cubic-bezier(.4,0,1,1) .15s;width:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen{display:flex;flex:0 0 auto;justify-content:space-between;width:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen input{font-family:Sans-serif}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-input-container{display:flex;flex-grow:1;position:relative}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-input-container .tinymce-mobile-input-container-x{-ms-grid-row-align:center;align-self:center;background:inherit;border:none;border-radius:50%;color:#888;font-size:.6em;font-weight:700;height:100%;padding-right:2px;position:absolute;right:0}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-input-container.tinymce-mobile-input-container-empty .tinymce-mobile-input-container-x{display:none}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-next,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-previous{align-items:center;display:flex}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-next::before,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-previous::before{align-items:center;display:flex;font-weight:700;height:100%;padding-left:.5em;padding-right:.5em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-next.tinymce-mobile-toolbar-navigation-disabled::before,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-previous.tinymce-mobile-toolbar-navigation-disabled::before{visibility:hidden}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-dot-item{color:#ccc;font-size:10px;line-height:10px;margin:0 2px;padding-top:3px}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-dot-item.tinymce-mobile-dot-active{color:#c8cbcf}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-large-font::before,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-large-heading::before{margin-left:.5em;margin-right:.9em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-small-font::before,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-small-heading::before{margin-left:.9em;margin-right:.5em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider{display:flex;flex:1;margin-left:0;margin-right:0;padding:.28em 0;position:relative}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-size-container{align-items:center;display:flex;flex-grow:1;height:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-size-container .tinymce-mobile-slider-size-line{background:#ccc;display:flex;flex:1;height:.2em;margin-bottom:.3em;margin-top:.3em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container{padding-left:2em;padding-right:2em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-slider-gradient-container{align-items:center;display:flex;flex-grow:1;height:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-slider-gradient-container .tinymce-mobile-slider-gradient{background:linear-gradient(to right,red 0,#feff00 17%,#0f0 33%,#00feff 50%,#00f 67%,#ff00fe 83%,red 100%);display:flex;flex:1;height:.2em;margin-bottom:.3em;margin-top:.3em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-hue-slider-black{background:#000;height:.2em;margin-bottom:.3em;margin-top:.3em;width:1.2em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-hue-slider-white{background:#fff;height:.2em;margin-bottom:.3em;margin-top:.3em;width:1.2em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-thumb{align-items:center;background-clip:padding-box;background-color:#455a64;border:.5em solid rgba(136,136,136,0);border-radius:3em;bottom:0;color:#fff;display:flex;height:.5em;justify-content:center;left:-10px;margin:auto;position:absolute;top:0;transition:border 120ms cubic-bezier(.39,.58,.57,1);width:.5em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-thumb.tinymce-mobile-thumb-active{border:.5em solid rgba(136,136,136,.39)}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serializer-wrapper,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group>div{align-items:center;display:flex;height:100%;flex:1}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serializer-wrapper{flex-direction:column;justify-content:center}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item{align-items:center;display:flex}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item:not(.tinymce-mobile-serialised-dialog){height:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-dot-container{display:flex}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input{background:#fff;border:none;border-radius:0;color:#455a64;flex-grow:1;font-size:.85em;padding-bottom:.1em;padding-left:5px;padding-top:.1em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input::-webkit-input-placeholder{color:#888}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input::placeholder{color:#888}.tinymce-mobile-dropup{background:#fff;display:flex;overflow:hidden;width:100%}.tinymce-mobile-dropup.tinymce-mobile-dropup-shrinking{transition:height .3s ease-out}.tinymce-mobile-dropup.tinymce-mobile-dropup-growing{transition:height .3s ease-in}.tinymce-mobile-dropup.tinymce-mobile-dropup-closed{flex-grow:0}.tinymce-mobile-dropup.tinymce-mobile-dropup-open:not(.tinymce-mobile-dropup-growing){flex-grow:1}.tinymce-mobile-ios-container .tinymce-mobile-dropup:not(.tinymce-mobile-dropup-closed){min-height:200px}@media only screen and (orientation:landscape){.tinymce-mobile-dropup:not(.tinymce-mobile-dropup-closed){min-height:200px}}@media only screen and (min-device-width :320px) and (max-device-width :568px) and (orientation :landscape){.tinymce-mobile-ios-container .tinymce-mobile-dropup:not(.tinymce-mobile-dropup-closed){min-height:150px}}.tinymce-mobile-styles-menu{font-family:sans-serif;outline:4px solid #000;overflow:hidden;position:relative;width:100%}.tinymce-mobile-styles-menu [role=menu]{display:flex;flex-direction:column;height:100%;position:absolute;width:100%}.tinymce-mobile-styles-menu [role=menu].transitioning{transition:transform .5s ease-in-out}.tinymce-mobile-styles-menu .tinymce-mobile-styles-item{border-bottom:1px solid #ddd;color:#455a64;cursor:pointer;display:flex;padding:1em 1em;position:relative}.tinymce-mobile-styles-menu .tinymce-mobile-styles-collapser .tinymce-mobile-styles-collapse-icon::before{color:#455a64;content:"\e314";font-family:tinymce-mobile,sans-serif}.tinymce-mobile-styles-menu .tinymce-mobile-styles-item.tinymce-mobile-styles-item-is-menu::after{color:#455a64;content:"\e315";font-family:tinymce-mobile,sans-serif;padding-left:1em;padding-right:1em;position:absolute;right:0}.tinymce-mobile-styles-menu .tinymce-mobile-styles-item.tinymce-mobile-format-matches::after{font-family:tinymce-mobile,sans-serif;padding-left:1em;padding-right:1em;position:absolute;right:0}.tinymce-mobile-styles-menu .tinymce-mobile-styles-collapser,.tinymce-mobile-styles-menu .tinymce-mobile-styles-separator{align-items:center;background:#fff;border-top:#455a64;color:#455a64;display:flex;min-height:2.5em;padding-left:1em;padding-right:1em}.tinymce-mobile-styles-menu [data-transitioning-destination=before][data-transitioning-state],.tinymce-mobile-styles-menu [data-transitioning-state=before]{transform:translate(-100%)}.tinymce-mobile-styles-menu [data-transitioning-destination=current][data-transitioning-state],.tinymce-mobile-styles-menu [data-transitioning-state=current]{transform:translate(0)}.tinymce-mobile-styles-menu [data-transitioning-destination=after][data-transitioning-state],.tinymce-mobile-styles-menu [data-transitioning-state=after]{transform:translate(100%)}@font-face{font-family:tinymce-mobile;font-style:normal;font-weight:400;src:url(fonts/tinymce-mobile.woff?8x92w3) format('woff')}@media (min-device-width:700px){.tinymce-mobile-outer-container,.tinymce-mobile-outer-container input{font-size:25px}}@media (max-device-width:700px){.tinymce-mobile-outer-container,.tinymce-mobile-outer-container input{font-size:18px}}.tinymce-mobile-icon{font-family:tinymce-mobile,sans-serif}.mixin-flex-and-centre{align-items:center;display:flex;justify-content:center}.mixin-flex-bar{align-items:center;display:flex;height:100%}.tinymce-mobile-outer-container .tinymce-mobile-editor-socket iframe{background-color:#fff;width:100%}.tinymce-mobile-editor-socket .tinymce-mobile-mask-edit-icon{background-color:#207ab7;border-radius:50%;bottom:1em;color:#fff;font-size:1em;height:2.1em;position:fixed;right:2em;width:2.1em;align-items:center;display:flex;justify-content:center}@media only screen and (min-device-width:700px){.tinymce-mobile-editor-socket .tinymce-mobile-mask-edit-icon{font-size:1.2em}}.tinymce-mobile-outer-container:not(.tinymce-mobile-fullscreen-maximized) .tinymce-mobile-editor-socket{height:300px;overflow:hidden}.tinymce-mobile-outer-container:not(.tinymce-mobile-fullscreen-maximized) .tinymce-mobile-editor-socket iframe{height:100%}.tinymce-mobile-outer-container:not(.tinymce-mobile-fullscreen-maximized) .tinymce-mobile-toolstrip{display:none}input[type=file]::-webkit-file-upload-button{display:none}@media only screen and (min-device-width :320px) and (max-device-width :568px) and (orientation :landscape){.tinymce-mobile-ios-container .tinymce-mobile-editor-socket .tinymce-mobile-mask-edit-icon{bottom:50%}}
diff --git a/admin/js/vendors/tinymce/js/tinymce/themes/mobile/theme.min.js b/admin/js/vendors/tinymce/js/tinymce/themes/mobile/theme.min.js
new file mode 100644 (file)
index 0000000..cfcbc5a
--- /dev/null
@@ -0,0 +1,9 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ *
+ * Version: 5.1.5 (2019-12-19)
+ */
+!function(l){"use strict";var x=function(){return(x=Object.assign||function(n){for(var e,t=1,r=arguments.length;t<r;t++)for(var o in e=arguments[t])Object.prototype.hasOwnProperty.call(e,o)&&(n[o]=e[o]);return n}).apply(this,arguments)};function u(n,e){var t={};for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&e.indexOf(r)<0&&(t[r]=n[r]);if(null!=n&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(r=Object.getOwnPropertySymbols(n);o<r.length;o++)e.indexOf(r[o])<0&&Object.prototype.propertyIsEnumerable.call(n,r[o])&&(t[r[o]]=n[r[o]])}return t}function w(){}function y(n){return n}var i=function(t,r){return function(){for(var n=[],e=0;e<arguments.length;e++)n[e]=arguments[e];return t(r.apply(null,n))}},b=function(n){return function(){return n}};function d(r){for(var o=[],n=1;n<arguments.length;n++)o[n-1]=arguments[n];return function(){for(var n=[],e=0;e<arguments.length;e++)n[e]=arguments[e];var t=o.concat(n);return r.apply(null,t)}}function m(t){return function(){for(var n=[],e=0;e<arguments.length;e++)n[e]=arguments[e];return!t.apply(null,n)}}function o(n){return function(){throw new Error(n)}}function t(n){return n()}function n(){return f}var e,c=b(!1),a=b(!0),f=(e={fold:function(n,e){return n()},is:c,isSome:c,isNone:a,getOr:g,getOrThunk:s,getOrDie:function(n){throw new Error(n||"error: getOrDie called on none.")},getOrNull:b(null),getOrUndefined:b(undefined),or:g,orThunk:s,map:n,each:w,bind:n,exists:c,forall:a,filter:n,equals:r,equals_:r,toArray:function(){return[]},toString:b("none()")},Object.freeze&&Object.freeze(e),e);function r(n){return n.isNone()}function s(n){return n()}function g(n){return n}function S(n,t){return jn(n,function(n,e){return{k:e,v:t(n,e)}})}function p(n,e){return Vn.call(n,e)}function h(n,e){var t=function(n,e){for(var t=0;t<n.length;t++){var r=n[t];if(r.test(e))return r}return undefined}(n,e);if(!t)return{major:0,minor:0};function r(n){return Number(e.replace(t,"$"+n))}return zn(r(1),r(2))}function v(n,e){return function(){return e===n}}function T(n,e){return function(){return e===n}}function O(e){return function(n){return function(n){if(null===n)return"null";var e=typeof n;return"object"==e&&(Array.prototype.isPrototypeOf(n)||n.constructor&&"Array"===n.constructor.name)?"array":"object"==e&&(String.prototype.isPrototypeOf(n)||n.constructor&&"String"===n.constructor.name)?"string":e}(n)===e}}function k(n,e){return-1<function(n,e){return se.call(n,e)}(n,e)}function E(n,e){for(var t=0,r=n.length;t<r;t++){if(e(n[t],t))return!0}return!1}function C(n,e){for(var t=0,r=n.length;t<r;t++){e(n[t],t)}}function D(n,e){for(var t=[],r=0,o=n.length;r<o;r++){var i=n[r];e(i,r)&&t.push(i)}return t}function M(n,e,t){return function(n,e){for(var t=n.length-1;0<=t;t--){e(n[t],t)}}(n,function(n){t=e(t,n)}),t}function I(n,e,t){return C(n,function(n){t=e(t,n)}),t}function R(n,e){for(var t=0,r=n.length;t<r;t++){var o=n[t];if(e(o,t))return Fn.some(o)}return Fn.none()}function A(n,e){for(var t=0,r=n.length;t<r;t++){if(e(n[t],t))return Fn.some(t)}return Fn.none()}function F(n){for(var e=[],t=0,r=n.length;t<r;++t){if(!ie(n[t]))throw new Error("Arr.flatten item "+t+" was not an array, input: "+n);le.apply(e,n[t])}return e}function B(n,e){var t=de(n,e);return F(t)}function V(n,e){for(var t=0,r=n.length;t<r;++t){if(!0!==e(n[t],t))return!1}return!0}function N(n){var e=fe.call(n,0);return e.reverse(),e}function j(n,e){return D(n,function(n){return!k(e,n)})}function _(n){return[n]}function P(n,e){var t=String(e).toLowerCase();return R(n,function(n){return n.search(t)})}function H(n,e){return-1!==n.indexOf(e)}function z(e){return function(n){return H(n,e)}}function L(){return be.get()}function G(n,e){Ye(n,n.element(),e,{})}function U(n,e,t){Ye(n,n.element(),e,t)}function $(n){G(n,Pe())}function W(n,e,t){Ye(n,e,t,{})}function X(t){var r,o=!1;return function(){for(var n=[],e=0;e<arguments.length;e++)n[e]=arguments[e];return o||(o=!0,r=t.apply(null,n)),r}}function q(n){return n.dom().nodeName.toLowerCase()}function Y(e){return function(n){return function(n){return n.dom().nodeType}(n)===e}}function K(n){var e=tt(n)?n.dom().parentNode:n.dom();return e!==undefined&&null!==e&&e.ownerDocument.body.contains(e)}function J(){for(var e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];return function(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];if(e.length!==t.length)throw new Error('Wrong number of arguments to struct. Expected "['+e.length+']", got '+t.length+" arguments");var r={};return C(e,function(n,e){r[n]=b(t[e])}),r}}function Q(n){return n.slice(0).sort()}function Z(e,n){if(!ie(n))throw new Error("The "+e+" fields must be an array. Was: "+n+".");C(n,function(n){if(!re(n))throw new Error("The value "+n+" in the "+e+" fields was not a string.")})}function nn(o,i){var u=o.concat(i);if(0===u.length)throw new Error("You must specify at least one required or optional field.");return Z("required",o),Z("optional",i),function(n){var t=Q(n);R(t,function(n,e){return e<t.length-1&&n===t[e+1]}).each(function(n){throw new Error("The field: "+n+" occurs more than once in the combined fields: ["+t.join(", ")+"].")})}(u),function(e){var t=Bn(e);V(o,function(n){return k(t,n)})||function(n,e){throw new Error("All required keys ("+Q(n).join(", ")+") were not specified. Specified keys were: "+Q(e).join(", ")+".")}(o,t);var n=D(t,function(n){return!k(u,n)});0<n.length&&function(n){throw new Error("Unsupported keys for object: "+Q(n).join(", "))}(n);var r={};return C(o,function(n){r[n]=b(e[n])}),C(i,function(n){r[n]=b(Object.prototype.hasOwnProperty.call(e,n)?Fn.some(e[n]):Fn.none())}),r}}function en(n,e,t){return 0!=(n.compareDocumentPosition(e)&t)}function tn(n,e){var t=n.dom();if(t.nodeType!==ut)return!1;var r=t;if(r.matches!==undefined)return r.matches(e);if(r.msMatchesSelector!==undefined)return r.msMatchesSelector(e);if(r.webkitMatchesSelector!==undefined)return r.webkitMatchesSelector(e);if(r.mozMatchesSelector!==undefined)return r.mozMatchesSelector(e);throw new Error("Browser lacks native selectors")}function rn(n){return n.nodeType!==ut&&n.nodeType!==ct||0===n.childElementCount}function on(n,e){var t=e===undefined?l.document:e.dom();return rn(t)?[]:de(t.querySelectorAll(n),Je.fromDom)}function un(n,e){var t=e===undefined?l.document:e.dom();return rn(t)?Fn.none():Fn.from(t.querySelector(n)).map(Je.fromDom)}function cn(n,e){return n.dom()===e.dom()}function an(n){return Je.fromDom(n.dom().ownerDocument)}function fn(n){return Fn.from(n.dom().parentNode).map(Je.fromDom)}function sn(n,e){var t=n.dom().childNodes;return Fn.from(t[e]).map(Je.fromDom)}function ln(e,t){fn(e).each(function(n){n.dom().insertBefore(t.dom(),e.dom())})}function dn(n,e){(function(n){return Fn.from(n.dom().nextSibling).map(Je.fromDom)})(n).fold(function(){fn(n).each(function(n){ft(n,e)})},function(n){ln(n,e)})}function mn(e,t){(function(n){return sn(n,0)})(e).fold(function(){ft(e,t)},function(n){e.dom().insertBefore(t.dom(),n.dom())})}function gn(e,n){C(n,function(n){ft(e,n)})}function pn(n){n.dom().textContent="",C(at(n),function(n){st(n)})}function hn(n,e){ft(n.element(),e.element())}function vn(e,n){var t=e.components();!function(n){C(n.components(),function(n){return st(n.element())}),pn(n.element()),n.syncComponents()}(e);var r=j(t,n);C(r,function(n){lt(n),e.getSystem().removeFromWorld(n)}),C(n,function(n){n.getSystem().isConnected()?hn(e,n):(e.getSystem().addToWorld(n),hn(e,n),K(e.element())&&dt(n)),e.syncComponents()})}function yn(e){var n=fn(e.element()).bind(function(n){return e.getSystem().getByDom(n).toOption()});!function(n){lt(n),st(n.element()),n.getSystem().removeFromWorld(n)}(e),n.each(function(n){n.syncComponents()})}function bn(u){return function(){for(var n=new Array(arguments.length),e=0;e<n.length;e++)n[e]=arguments[e];if(0===n.length)throw new Error("Can't merge zero objects");for(var t={},r=0;r<n.length;r++){var o=n[r];for(var i in o)bt.call(o,i)&&(t[i]=u(t[i],o[i]))}return t}}function xn(n){return St.defaultedThunk(b(n))}function wn(e){return function(n){return p(n,e)?Fn.from(n[e]):Fn.none()}}function Sn(n,e){return wn(e)(n)}function Tn(n,e){var t={};return t[n]=e,t}function On(n,e){return function(n,t){var r={};return Nn(n,function(n,e){k(t,e)||(r[e]=n)}),r}(n,e)}function kn(n,e){return function(e,t){return function(n){return p(n,e)?n[e]:t}}(n,e)}function En(n,e){return Tn(n,e)}function Cn(n){return function(n){var e={};return C(n,function(n){e[n.key]=n.value}),e}(n)}function Dn(n,e){var t=function(n){var e=[],t=[];return C(n,function(n){n.fold(function(n){e.push(n)},function(n){t.push(n)})}),{errors:e,values:t}}(n);return 0<t.errors.length?function(n){return vt.error(F(n))}(t.errors):function(n,e){return 0===n.length?vt.value(e):vt.value(xt(e,wt.apply(undefined,n)))}(t.values,e)}function Mn(n,e){return function(n,e){return p(n,e)&&n[e]!==undefined&&null!==n[e]}(n,e)}var In,Rn,An=function(t){function n(){return o}function e(n){return n(t)}var r=b(t),o={fold:function(n,e){return e(t)},is:function(n){return t===n},isSome:a,isNone:c,getOr:r,getOrThunk:r,getOrDie:r,getOrNull:r,getOrUndefined:r,or:n,orThunk:n,map:function(n){return An(n(t))},each:function(n){n(t)},bind:e,exists:e,forall:e,filter:function(n){return n(t)?o:f},toArray:function(){return[t]},toString:function(){return"some("+t+")"},equals:function(n){return n.is(t)},equals_:function(n,e){return n.fold(c,function(n){return e(t,n)})}};return o},Fn={some:An,none:n,from:function(n){return null===n||n===undefined?f:An(n)}},Bn=Object.keys,Vn=Object.hasOwnProperty,Nn=function(n,e){for(var t=Bn(n),r=0,o=t.length;r<o;r++){var i=t[r];e(n[i],i)}},jn=function(n,r){var o={};return Nn(n,function(n,e){var t=r(n,e);o[t.k]=t.v}),o},_n=function(n,t){var r=[];return Nn(n,function(n,e){r.push(t(n,e))}),r},Pn=function(n){function e(){return t}var t=n;return{get:e,set:function(n){t=n},clone:function(){return Pn(e())}}},Hn=function(){return zn(0,0)},zn=function(n,e){return{major:n,minor:e}},Ln={nu:zn,detect:function(n,e){var t=String(e).toLowerCase();return 0===n.length?Hn():h(n,t)},unknown:Hn},Gn="Edge",Un="Chrome",$n="Opera",Wn="Firefox",Xn="Safari",qn=function(n){var e=n.current;return{current:e,version:n.version,isEdge:v(Gn,e),isChrome:v(Un,e),isIE:v("IE",e),isOpera:v($n,e),isFirefox:v(Wn,e),isSafari:v(Xn,e)}},Yn={unknown:function(){return qn({current:undefined,version:Ln.unknown()})},nu:qn,edge:b(Gn),chrome:b(Un),ie:b("IE"),opera:b($n),firefox:b(Wn),safari:b(Xn)},Kn="Windows",Jn="Android",Qn="Linux",Zn="Solaris",ne="FreeBSD",ee=function(n){var e=n.current;return{current:e,version:n.version,isWindows:T(Kn,e),isiOS:T("iOS",e),isAndroid:T(Jn,e),isOSX:T("OSX",e),isLinux:T(Qn,e),isSolaris:T(Zn,e),isFreeBSD:T(ne,e)}},te={unknown:function(){return ee({current:undefined,version:Ln.unknown()})},nu:ee,windows:b(Kn),ios:b("iOS"),android:b(Jn),linux:b(Qn),osx:b("OSX"),solaris:b(Zn),freebsd:b(ne)},re=O("string"),oe=O("object"),ie=O("array"),ue=O("boolean"),ce=O("function"),ae=O("number"),fe=Array.prototype.slice,se=Array.prototype.indexOf,le=Array.prototype.push,de=function(n,e){for(var t=n.length,r=new Array(t),o=0;o<t;o++){var i=n[o];r[o]=e(i,o)}return r},me=(ce(Array.from)&&Array.from,function(n,t){return P(n,t).map(function(n){var e=Ln.detect(n.versionRegexes,t);return{current:n.name,version:e}})}),ge=function(n,t){return P(n,t).map(function(n){var e=Ln.detect(n.versionRegexes,t);return{current:n.name,version:e}})},pe=/.*?version\/\ ?([0-9]+)\.([0-9]+).*/,he=[{name:"Edge",versionRegexes:[/.*?edge\/ ?([0-9]+)\.([0-9]+)$/],search:function(n){return H(n,"edge/")&&H(n,"chrome")&&H(n,"safari")&&H(n,"applewebkit")}},{name:"Chrome",versionRegexes:[/.*?chrome\/([0-9]+)\.([0-9]+).*/,pe],search:function(n){return H(n,"chrome")&&!H(n,"chromeframe")}},{name:"IE",versionRegexes:[/.*?msie\ ?([0-9]+)\.([0-9]+).*/,/.*?rv:([0-9]+)\.([0-9]+).*/],search:function(n){return H(n,"msie")||H(n,"trident")}},{name:"Opera",versionRegexes:[pe,/.*?opera\/([0-9]+)\.([0-9]+).*/],search:z("opera")},{name:"Firefox",versionRegexes:[/.*?firefox\/\ ?([0-9]+)\.([0-9]+).*/],search:z("firefox")},{name:"Safari",versionRegexes:[pe,/.*?cpu os ([0-9]+)_([0-9]+).*/],search:function(n){return(H(n,"safari")||H(n,"mobile/"))&&H(n,"applewebkit")}}],ve=[{name:"Windows",search:z("win"),versionRegexes:[/.*?windows\ nt\ ?([0-9]+)\.([0-9]+).*/]},{name:"iOS",search:function(n){return H(n,"iphone")||H(n,"ipad")},versionRegexes:[/.*?version\/\ ?([0-9]+)\.([0-9]+).*/,/.*cpu os ([0-9]+)_([0-9]+).*/,/.*cpu iphone os ([0-9]+)_([0-9]+).*/]},{name:"Android",search:z("android"),versionRegexes:[/.*?android\ ?([0-9]+)\.([0-9]+).*/]},{name:"OSX",search:z("os x"),versionRegexes:[/.*?os\ x\ ?([0-9]+)_([0-9]+).*/]},{name:"Linux",search:z("linux"),versionRegexes:[]},{name:"Solaris",search:z("sunos"),versionRegexes:[]},{name:"FreeBSD",search:z("freebsd"),versionRegexes:[]}],ye={browsers:b(he),oses:b(ve)},be=Pn(function(n,e){var t=ye.browsers(),r=ye.oses(),o=me(t,n).fold(Yn.unknown,Yn.nu),i=ge(r,n).fold(te.unknown,te.nu);return{browser:o,os:i,deviceType:function(n,e,t,r){var o=n.isiOS()&&!0===/ipad/i.test(t),i=n.isiOS()&&!o,u=n.isiOS()||n.isAndroid(),c=u||r("(pointer:coarse)"),a=o||!i&&u&&r("(min-device-width:768px)"),f=i||u&&!a,s=e.isSafari()&&n.isiOS()&&!1===/safari/i.test(t),l=!f&&!a&&!s;return{isiPad:b(o),isiPhone:b(i),isTablet:b(a),isPhone:b(f),isTouch:b(c),isAndroid:n.isAndroid,isiOS:n.isiOS,isWebView:b(s),isDesktop:b(l)}}(i,o,n,e)}}(l.navigator.userAgent,function(n){return l.window.matchMedia(n).matches})),xe=b("touchstart"),we=b("touchmove"),Se=b("touchend"),Te=b("mousedown"),Oe=b("mousemove"),ke=b("mouseup"),Ee=b("mouseover"),Ce=b("keydown"),De=b("keyup"),Me=b("input"),Ie=b("change"),Re=b("click"),Ae=b("transitionend"),Fe=b("selectstart"),Be={tap:b("alloy.tap")},Ve=b("alloy.focus"),Ne=b("alloy.blur.post"),je=b("alloy.paste.post"),_e=b("alloy.receive"),Pe=b("alloy.execute"),He=b("alloy.focus.item"),ze=Be.tap,Le=b("alloy.longpress"),Ge=b("alloy.system.init"),Ue=b("alloy.system.attached"),$e=b("alloy.system.detached"),We=b("alloy.focusmanager.shifted"),Xe=b("alloy.highlight"),qe=b("alloy.dehighlight"),Ye=function(n,e,t,r){var o=x({target:e},r);n.getSystem().triggerEvent(t,e,S(o,b))},Ke=function(n){if(null===n||n===undefined)throw new Error("Node cannot be null or undefined");return{dom:b(n)}},Je={fromHtml:function(n,e){var t=(e||l.document).createElement("div");if(t.innerHTML=n,!t.hasChildNodes()||1<t.childNodes.length)throw l.console.error("HTML does not have a single root node",n),new Error("HTML must have a single root node");return Ke(t.childNodes[0])},fromTag:function(n,e){var t=(e||l.document).createElement(n);return Ke(t)},fromText:function(n,e){var t=(e||l.document).createTextNode(n);return Ke(t)},fromDom:Ke,fromPoint:function(n,e,t){var r=n.dom();return Fn.from(r.elementFromPoint(e,t)).map(Ke)}},Qe=(l.Node.ATTRIBUTE_NODE,l.Node.CDATA_SECTION_NODE,l.Node.COMMENT_NODE,l.Node.DOCUMENT_NODE),Ze=(l.Node.DOCUMENT_TYPE_NODE,l.Node.DOCUMENT_FRAGMENT_NODE,l.Node.ELEMENT_NODE),nt=l.Node.TEXT_NODE,et=(l.Node.PROCESSING_INSTRUCTION_NODE,l.Node.ENTITY_REFERENCE_NODE,l.Node.ENTITY_NODE,l.Node.NOTATION_NODE,"undefined"!=typeof l.window?l.window:Function("return this;")(),Y(Ze)),tt=Y(nt),rt=X(function(){return ot(Je.fromDom(l.document))}),ot=function(n){var e=n.dom().body;if(null===e||e===undefined)throw new Error("Body is not available yet");return Je.fromDom(e)},it=function(n,e){return en(n,e,l.Node.DOCUMENT_POSITION_CONTAINED_BY)},ut=Ze,ct=Qe,at=(L().browser.isIE(),function(n){return de(n.dom().childNodes,Je.fromDom)}),ft=(J("element","offset"),function(n,e){n.dom().appendChild(e.dom())}),st=function(n){var e=n.dom();null!==e.parentNode&&e.parentNode.removeChild(e)},lt=function(n){G(n,$e());var e=n.components();C(e,lt)},dt=function(n){var e=n.components();C(e,dt),G(n,Ue())},mt=function(n,e,t){n.getSystem().addToWorld(e),t(n.element(),e.element()),K(n.element())&&dt(e),n.syncComponents()},gt=function(n,e,t){t(n,e.element());var r=at(e.element());C(r,function(n){e.getByDom(n).each(dt)})},pt=function(t){return{is:function(n){return t===n},isValue:a,isError:c,getOr:b(t),getOrThunk:b(t),getOrDie:b(t),or:function(n){return pt(t)},orThunk:function(n){return pt(t)},fold:function(n,e){return e(t)},map:function(n){return pt(n(t))},mapError:function(n){return pt(t)},each:function(n){n(t)},bind:function(n){return n(t)},exists:function(n){return n(t)},forall:function(n){return n(t)},toOption:function(){return Fn.some(t)}}},ht=function(t){return{is:c,isValue:c,isError:a,getOr:y,getOrThunk:function(n){return n()},getOrDie:function(){return o(String(t))()},or:function(n){return n},orThunk:function(n){return n()},fold:function(n,e){return n(t)},map:function(n){return ht(t)},mapError:function(n){return ht(n(t))},each:w,bind:function(n){return ht(t)},exists:c,forall:a,toOption:Fn.none}},vt={value:pt,error:ht,fromOption:function(n,e){return n.fold(function(){return ht(e)},pt)}},yt=function(u){if(!ie(u))throw new Error("cases must be an array");if(0===u.length)throw new Error("there must be at least one case");var c=[],t={};return C(u,function(n,r){var e=Bn(n);if(1!==e.length)throw new Error("one and only one name per case");var o=e[0],i=n[o];if(t[o]!==undefined)throw new Error("duplicate key detected:"+o);if("cata"===o)throw new Error("cannot have a case named cata (sorry)");if(!ie(i))throw new Error("case arguments must be an array");c.push(o),t[o]=function(){var n=arguments.length;if(n!==i.length)throw new Error("Wrong number of arguments to case "+o+". Expected "+i.length+" ("+i+"), got "+n);for(var t=new Array(n),e=0;e<t.length;e++)t[e]=arguments[e];return{fold:function(){if(arguments.length!==u.length)throw new Error("Wrong number of arguments to fold. Expected "+u.length+", got "+arguments.length);return arguments[r].apply(null,t)},match:function(n){var e=Bn(n);if(c.length!==e.length)throw new Error("Wrong number of arguments to match. Expected: "+c.join(",")+"\nActual: "+e.join(","));if(!V(c,function(n){return k(e,n)}))throw new Error("Not all branches were specified when using match. Specified: "+e.join(", ")+"\nRequired: "+c.join(", "));return n[o].apply(null,t)},log:function(n){l.console.log(n,{constructors:c,constructor:o,params:t})}}}}),t},bt=Object.prototype.hasOwnProperty,xt=bn(function(n,e){return oe(n)&&oe(e)?xt(n,e):e}),wt=bn(function(n,e){return e}),St=yt([{strict:[]},{defaultedThunk:["fallbackThunk"]},{asOption:[]},{asDefaultedOptionThunk:["fallbackThunk"]},{mergeWithThunk:["baseThunk"]}]),Tt=St.strict,Ot=St.asOption,kt=St.defaultedThunk,Et=St.mergeWithThunk,Ct=(yt([{bothErrors:["error1","error2"]},{firstError:["error1","value2"]},{secondError:["value1","error2"]},{bothValues:["value1","value2"]}]),function(n){return wn(n)}),Dt=function(n,e){return Sn(n,e)};(Rn=In=In||{})[Rn.Error=0]="Error",Rn[Rn.Value=1]="Value";function Mt(n,e,t){return n.stype===In.Error?e(n.serror):t(n.svalue)}function It(n){return{stype:In.Value,svalue:n}}function Rt(n){return{stype:In.Error,serror:n}}function At(n){return i(dr,F)(n)}function Ft(n){return oe(n)&&100<Bn(n).length?" removed due to size":JSON.stringify(n,null,2)}function Bt(n,e){return dr([{path:n,getErrorInfo:e}])}function Vt(n,e,t){return Sn(e,t).fold(function(){return function(n,e,t){return Bt(n,function(){return'Could not find valid *strict* value for "'+e+'" in '+Ft(t)})}(n,t,e)},sr)}function Nt(n,e,t){var r=Sn(n,e).fold(function(){return t(n)},y);return sr(r)}function jt(u,c,n,a){return n.fold(function(r,t,n,o){function i(n){var e=o.extract(u.concat([r]),a,n);return pr(e,function(n){return Tn(t,a(n))})}function e(n){return n.fold(function(){var n=Tn(t,a(Fn.none()));return sr(n)},function(n){var e=o.extract(u.concat([r]),a,n);return pr(e,function(n){return Tn(t,a(Fn.some(n)))})})}return n.fold(function(){return mr(Vt(u,c,r),i)},function(n){return mr(Nt(c,r,n),i)},function(){return mr(function(n,e){return sr(Sn(n,e))}(c,r),e)},function(n){return mr(function(e,n,t){var r=Sn(e,n).map(function(n){return!0===n?t(e):n});return sr(r)}(c,r,n),e)},function(n){var e=n(c),t=pr(Nt(c,r,b({})),function(n){return xt(e,n)});return mr(t,i)})},function(n,e){var t=e(c);return sr(Tn(n,a(t)))})}function _t(r){return{extract:function(e,n,t){return gr(r(t,n),function(n){return function(n,e){return Bt(n,function(){return e})}(e,n)})},toString:function(){return"val"},toDsl:function(){return br.itemOf(r)}}}function Pt(n){var i=Sr(n),u=M(n,function(e,n){return n.fold(function(n){return xt(e,En(n,!0))},b(e))},{});return{extract:function(n,e,t){var r=ue(t)?[]:function(e){var n=Bn(e);return D(n,function(n){return Mn(e,n)})}(t),o=D(r,function(n){return!Mn(u,n)});return 0===o.length?i.extract(n,e,t):function(n,e){return Bt(n,function(){return"There are unsupported fields: ["+e.join(", ")+"] specified"})}(n,o)},toString:i.toString,toDsl:i.toDsl}}function Ht(t,i){function u(n,e){return function(o){return{extract:function(t,r,n){var e=de(n,function(n,e){return o.extract(t.concat(["["+e+"]"]),r,n)});return yr(e)},toString:function(){return"array("+o.toString()+")"},toDsl:function(){return br.arrOf(o)}}}(_t(t)).extract(n,y,e)}return{extract:function(t,r,o){var n=Bn(o),e=u(t,n);return mr(e,function(n){var e=de(n,function(n){return wr.field(n,n,Tt(),i)});return Sr(e).extract(t,r,o)})},toString:function(){return"setOf("+i.toString()+")"},toDsl:function(){return br.setOf(t,i)}}}function zt(e,t,r,n,o){return Dt(n,o).fold(function(){return function(n,e,t){return Bt(n,function(){return'The chosen schema: "'+t+'" did not exist in branches: '+Ft(e)})}(e,n,o)},function(n){return n.extract(e.concat(["branch: "+o]),t,r)})}function Lt(n,o){return{extract:function(e,t,r){return Dt(r,n).fold(function(){return function(n,e){return Bt(n,function(){return'Choice schema did not contain choice key: "'+e+'"'})}(e,n)},function(n){return zt(e,t,r,o,n)})},toString:function(){return"chooseOn("+n+"). Possible values: "+Bn(o)},toDsl:function(){return br.choiceOf(n,o)}}}function Gt(e){return _t(function(n){return e(n).fold(dr,sr)})}function Ut(e,n){return Ht(function(n){return ar(e(n))},n)}function $t(n,e,t){return fr(function(n,e,t,r){var o=e.extract([n],t,r);return hr(o,function(n){return{input:r,errors:n}})}(n,e,y,t))}function Wt(n){return n.fold(function(n){throw new Error(Cr(n))},y)}function Xt(n,e,t){return Wt($t(n,e,t))}function qt(n,e){return Lt(n,S(e,Sr))}function Yt(n){return kr(n,n,Tt(),Tr())}function Kt(n,e){return kr(n,n,Tt(),e)}function Jt(n,e){return kr(n,n,Tt(),Sr(e))}function Qt(n){return kr(n,n,Ot(),Tr())}function Zt(n,e){return kr(n,n,Ot(),e)}function nr(n,e){return Zt(n,Sr(e))}function er(n,e){return Zt(n,Pt(e))}function tr(n,e){return kr(n,n,xn(e),Tr())}function rr(n,e,t){return kr(n,n,xn(e),t)}function or(n,e){return Or(n,e)}function ir(n,e){return cn(n.element(),e.event().target())}var ur,cr,ar=function(n){return n.fold(Rt,It)},fr=function(n){return Mt(n,vt.error,vt.value)},sr=It,lr=function(n){var e=[],t=[];return C(n,function(n){Mt(n,function(n){return t.push(n)},function(n){return e.push(n)})}),{values:e,errors:t}},dr=Rt,mr=function(n,e){return n.stype===In.Value?e(n.svalue):n},gr=function(n,e){return n.stype===In.Error?e(n.serror):n},pr=function(n,e){return n.stype===In.Value?{stype:In.Value,svalue:e(n.svalue)}:n},hr=function(n,e){return n.stype===In.Error?{stype:In.Error,serror:e(n.serror)}:n},vr=function(n,e){var t=lr(n);return 0<t.errors.length?At(t.errors):function(n,e){return 0<n.length?sr(xt(e,wt.apply(undefined,n))):sr(e)}(t.values,e)},yr=function(n){var e=lr(n);return 0<e.errors.length?At(e.errors):sr(e.values)},br=yt([{setOf:["validator","valueType"]},{arrOf:["valueType"]},{objOf:["fields"]},{itemOf:["validator"]},{choiceOf:["key","branches"]},{thunk:["description"]},{func:["args","outputSchema"]}]),xr=yt([{field:["name","presence","type"]},{state:["name"]}]),wr=yt([{field:["key","okey","presence","prop"]},{state:["okey","instantiator"]}]),Sr=function(r){return{extract:function(n,e,t){return function(e,t,n,r){var o=de(n,function(n){return jt(e,t,n,r)});return vr(o,{})}(n,t,r,e)},toString:function(){return"obj{\n"+de(r,function(n){return n.fold(function(n,e,t,r){return n+" -> "+r.toString()},function(n,e){return"state("+n+")"})}).join("\n")+"}"},toDsl:function(){return br.objOf(de(r,function(n){return n.fold(function(n,e,t,r){return xr.field(n,t,r)},function(n,e){return xr.state(n)})}))}}},Tr=b(_t(sr)),Or=wr.state,kr=wr.field,Er=_t(sr),Cr=function(n){return"Errors: \n"+function(n){var e=10<n.length?n.slice(0,10).concat([{path:[],getErrorInfo:function(){return"... (only showing first ten failures)"}}]):n;return de(e,function(n){return"Failed path: ("+n.path.join(" > ")+")\n"+n.getErrorInfo()})}(n.errors)+"\n\nInput object: "+Ft(n.input)},Dr=b(Er),Mr=(ur=ce,cr="function",_t(function(n){var e=typeof n;return ur(n)?sr(n):dr("Expected type: "+cr+" but got: "+e)}));function Ir(n,e,t,r,o){return n(t,r)?Fn.some(t):ce(o)&&o(t)?Fn.none():e(t,r,o)}function Rr(n,e,t){for(var r=n.dom(),o=ce(t)?t:b(!1);r.parentNode;){r=r.parentNode;var i=Je.fromDom(r);if(e(i))return Fn.some(i);if(o(i))break}return Fn.none()}function Ar(n,e,t){return Ir(function(n,e){return e(n)},Rr,n,e,t)}function Fr(n,o){var i=function(n){for(var e=0;e<n.childNodes.length;e++){var t=Je.fromDom(n.childNodes[e]);if(o(t))return Fn.some(t);var r=i(n.childNodes[e]);if(r.isSome())return r}return Fn.none()};return i(n.dom())}function Br(n){if(!Mn(n,"can")&&!Mn(n,"abort")&&!Mn(n,"run"))throw new Error("EventHandler defined by: "+JSON.stringify(n,null,2)+" does not have can, abort, or run!");return Xt("Extracting event.handler",Pt([tr("can",b(!0)),tr("abort",b(!1)),tr("run",w)]),n)}function Vr(t){var n=function(e,r){return function(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];return I(e,function(n,e){return n&&r(e).apply(undefined,t)},!0)}}(t,function(n){return n.can}),e=function(e,r){return function(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];return I(e,function(n,e){return n||r(e).apply(undefined,t)},!1)}}(t,function(n){return n.abort});return Br({can:n,abort:e,run:function(){for(var e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];C(t,function(n){n.run.apply(undefined,e)})}})}function Nr(n){return Cn(n)}function jr(n,e){return{key:n,value:Br({abort:e})}}function _r(n,e){return{key:n,value:Br({run:e})}}function Pr(n,t,r){return{key:n,value:Br({run:function(n,e){t.apply(undefined,[n,e].concat(r))}})}}function Hr(n){return function(t){return{key:n,value:Br({run:function(n,e){ir(n,e)&&t(n,e)}})}}}function zr(n,e,t){return function(t,r){return _r(t,function(n,e){n.getSystem().getByUid(r).each(function(n){!function(n,e,t,r){n.getSystem().triggerEvent(t,e,r.event())}(n,n.element(),t,e)})})}(n,e.partUids[t])}function Lr(n){return _r(n,function(n,e){e.cut()})}function Gr(n,e){var t=n.toString(),r=t.indexOf(")")+1,o=t.indexOf("("),i=t.substring(o+1,r-1).split(/,\s*/);return n.toFunctionAnnotation=function(){return{name:e,parameters:Io(i)}},n}function Ur(n){return{classes:n.classes!==undefined?n.classes:[],attributes:n.attributes!==undefined?n.attributes:{},styles:n.styles!==undefined?n.styles:{}}}function $r(t,r,o){return Do(function(n,e){o(n,t,r)})}function Wr(o,i,u){return function(n,e,t){var r=t.toString(),o=r.indexOf(")")+1,i=r.indexOf("("),u=r.substring(i+1,o-1).split(/,\s*/);return n.toFunctionAnnotation=function(){return{name:e,parameters:Io(u.slice(0,1).concat(u.slice(3)))}},n}(function(t){for(var n=[],e=1;e<arguments.length;e++)n[e-1]=arguments[e];var r=[t].concat(n);return t.config({name:b(o)}).fold(function(){throw new Error("We could not find any behaviour configuration for: "+o+". Using API: "+u)},function(n){var e=Array.prototype.slice.call(r,1);return i.apply(undefined,[t,n.config,n.state].concat(e))})},u,i)}function Xr(n){return{key:n,value:undefined}}function qr(n){var e=Xt("Creating behaviour: "+n.name,Vo,n);return function(n,e,t,r,o,i){var u=Pt(n),c=nr(e,[er("config",n)]);return Ro(u,c,e,t,r,o,i)}(e.fields,e.name,e.active,e.apis,e.extra,e.state)}function Yr(n,e,t){if(!(re(t)||ue(t)||ae(t)))throw l.console.error("Invalid call to Attr.set. Key ",e,":: Value ",t,":: Element ",n),new Error("Attribute value was not simple");n.setAttribute(e,t+"")}function Kr(n,e,t){Yr(n.dom(),e,t)}function Jr(n,e){var t=n.dom();Nn(e,function(n,e){Yr(t,e,n)})}function Qr(n,e){var t=n.dom().getAttribute(e);return null===t?undefined:t}function Zr(n,e){var t=n.dom();return!(!t||!t.hasAttribute)&&t.hasAttribute(e)}function no(n,e){n.dom().removeAttribute(e)}function eo(n,e){var t=Qr(n,e);return t===undefined||""===t?[]:t.split(" ")}function to(n){return n.dom().classList!==undefined}function ro(n,e){return function(n,e,t){var r=eo(n,e).concat([t]);return Kr(n,e,r.join(" ")),!0}(n,"class",e)}function oo(n,e){return function(n,e,t){var r=D(eo(n,e),function(n){return n!==t});return 0<r.length?Kr(n,e,r.join(" ")):no(n,e),!1}(n,"class",e)}function io(n,e){to(n)?n.dom().classList.add(e):ro(n,e)}function uo(n){0===(to(n)?n.dom().classList:function(n){return eo(n,"class")}(n)).length&&no(n,"class")}function co(n,e){to(n)?n.dom().classList.remove(e):oo(n,e),uo(n)}function ao(n,e){return to(n)&&n.dom().classList.contains(e)}function fo(n,e,t){co(n,t),io(n,e)}function so(n){n.dom().focus()}function lo(n){n.dom().blur()}function mo(n){var e=n!==undefined?n.dom():l.document;return Fn.from(e.activeElement).map(Je.fromDom)}function go(e){return mo(an(e)).filter(function(n){return e.dom().contains(n.dom())})}function po(n){return n.dom().innerHTML}function ho(n,e){var t=an(n).dom(),r=Je.fromDom(t.createDocumentFragment()),o=function(n,e){var t=(e||l.document).createElement("div");return t.innerHTML=n,at(Je.fromDom(t))}(e,t);gn(r,o),pn(n),ft(n,r)}function vo(n){return function(n,e){return Je.fromDom(n.dom().cloneNode(e))}(n,!1)}function yo(n){return function(n){var e=Je.fromTag("div"),t=Je.fromDom(n.dom().cloneNode(!0));return ft(e,t),po(e)}(vo(n))}function bo(n){return yo(n)}function xo(n){for(var e=[],t=function(n){e.push(n)},r=0;r<n.length;r++)n[r].each(t);return e}function wo(n,e){for(var t=0;t<n.length;t++){var r=e(n[t],t);if(r.isSome())return r}return Fn.none()}var So,To,Oo,ko=function(n,e,t){return Ar(n,function(n){return e(n).isSome()},t).bind(e)},Eo=Hr(Ue()),Co=Hr($e()),Do=Hr(Ge()),Mo=(So=Pe(),function(n){return _r(So,n)}),Io=function(n){return de(n,function(n){return function(n,e){return function(n,e,t){return""===e||!(n.length<e.length)&&n.substr(t,t+e.length)===e}(n,e,n.length-e.length)}(n,"/*")?n.substring(0,n.length-"/*".length):n})},Ro=function(t,n,r,o,e,i,u){function c(n){return Mn(n,r)?n[r]():Fn.none()}var a=S(e,function(n,e){return Wr(r,n,e)}),f=S(i,function(n,e){return Gr(n,e)}),s=x(x(x({},f),a),{revoke:d(Xr,r),config:function(n){var e=Xt(r+"-config",t,n);return{key:r,value:{config:e,me:s,configAsRaw:X(function(){return Xt(r+"-config",t,n)}),initialConfig:n,state:u}}},schema:function(){return n},exhibit:function(n,t){return c(n).bind(function(e){return Dt(o,"exhibit").map(function(n){return n(t,e.config,e.state)})}).getOr(Ur({}))},name:function(){return r},handlers:function(n){return c(n).map(function(n){return kn("events",function(n,e){return{}})(o)(n.config,n.state)}).getOr({})}});return s},Ao={init:function(){return Fo({readState:function(){return"No State required"}})}},Fo=function(n){return n},Bo=function(n){return Cn(n)},Vo=Pt([Yt("fields"),Yt("name"),tr("active",{}),tr("apis",{}),tr("state",Ao),tr("extra",{})]),No=Pt([Yt("branchKey"),Yt("branches"),Yt("name"),tr("active",{}),tr("apis",{}),tr("state",Ao),tr("extra",{})]),jo=b(undefined),_o=/* */Object.freeze({toAlpha:function(n,e,t){fo(n.element(),e.alpha,e.omega)},toOmega:function(n,e,t){fo(n.element(),e.omega,e.alpha)},isAlpha:function(n,e,t){return ao(n.element(),e.alpha)},isOmega:function(n,e,t){return ao(n.element(),e.omega)},clear:function(n,e,t){co(n.element(),e.alpha),co(n.element(),e.omega)}}),Po=[Yt("alpha"),Yt("omega")],Ho=qr({fields:Po,name:"swapping",apis:_o}),zo=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),Lo=tinymce.util.Tools.resolve("tinymce.ThemeManager"),Go=function(n){var e=l.document.createElement("a");e.target="_blank",e.href=n.href,e.rel="noreferrer noopener";var t=l.document.createEvent("MouseEvents");t.initMouseEvent("click",!0,!0,l.window,0,0,0,0,0,!1,!1,!1,!1,0,null),l.document.body.appendChild(e),e.dispatchEvent(t),l.document.body.removeChild(e)},Uo={formatChanged:b("formatChanged"),orientationChanged:b("orientationChanged"),dropupDismissed:b("dropupDismissed")},$o=/* */Object.freeze({events:function(e){return Nr([_r(_e(),function(o,i){var u=e.channels,n=function(n,e){return e.universal()?n:D(n,function(n){return k(e.channels(),n)})}(Bn(u),i);C(n,function(n){var e=u[n],t=e.schema,r=Xt("channel["+n+"] data\nReceiver: "+bo(o.element()),t,i.data());e.onReceive(o,r)})})])}}),Wo="unknown";(Oo=To=To||{})[Oo.STOP=0]="STOP",Oo[Oo.NORMAL=1]="NORMAL",Oo[Oo.LOGGING=2]="LOGGING";function Xo(e,n,t){switch(Dt(yi.get(),e).orThunk(function(){var n=Bn(yi.get());return wo(n,function(n){return-1<e.indexOf(n)?Fn.some(yi.get()[n]):Fn.none()})}).getOr(To.NORMAL)){case To.NORMAL:return t(xi());case To.LOGGING:var r=function(e,t){var r=[],o=(new Date).getTime();return{logEventCut:function(n,e,t){r.push({outcome:"cut",target:e,purpose:t})},logEventStopped:function(n,e,t){r.push({outcome:"stopped",target:e,purpose:t})},logNoParent:function(n,e,t){r.push({outcome:"no-parent",target:e,purpose:t})},logEventNoHandlers:function(n,e){r.push({outcome:"no-handlers-left",target:e})},logEventResponse:function(n,e,t){r.push({outcome:"response",purpose:t,target:e})},write:function(){var n=(new Date).getTime();k(["mousemove","mouseover","mouseout",Ge()],e)||l.console.log(e,{event:e,time:n-o,target:t.dom(),sequence:de(r,function(n){return k(["cut","stopped","response"],n.outcome)?"{"+n.purpose+"} "+n.outcome+" at ("+bo(n.target)+")":n.outcome})})}}}(e,n),o=t(r);return r.write(),o;case To.STOP:return!0}}function qo(n,e,t){return Xo(n,e,t)}function Yo(n,e,t){return function(){var n=new Error;if(n.stack===undefined)return;var e=n.stack.split("\n");R(e,function(e){return 0<e.indexOf("alloy")&&!E(bi,function(n){return-1<e.indexOf(n)})}).getOr(Wo)}(),kr(e,e,t,Gt(function(t){return vt.value(function(){for(var n=[],e=0;e<arguments.length;e++)n[e]=arguments[e];return t.apply(undefined,n)})}))}function Ko(n){return Yo(0,n,xn(w))}function Jo(n){return Yo(0,n,xn(Fn.none))}function Qo(n){return Yo(0,n,Tt())}function Zo(n){return Yo(0,n,Tt())}function ni(n,e){return or(n,b(e))}function ei(n){return or(n,y)}function ti(n,e,t){var r=e.aria;r.update(n,r,t.get())}function ri(e,n,t){n.toggleClass.each(function(n){t.get()?io(e.element(),n):co(e.element(),n)})}function oi(n,e,t){Di(n,e,t,!t.get())}function ii(n,e,t){t.set(!0),ri(n,e,t),ti(n,e,t)}function ui(n,e,t){t.set(!1),ri(n,e,t),ti(n,e,t)}function ci(n,e,t){Di(n,e,t,e.selected)}function ai(){function n(n,e){e.stop(),$(n)}return[_r(Re(),n),_r(ze(),n),Lr(xe()),Lr(Te())]}function fi(n,e){e.ignore||(so(n.element()),e.onFocus(n))}function si(n){return n.style!==undefined&&ce(n.style.getPropertyValue)}function li(n,e,t){if(!re(t))throw l.console.error("Invalid call to CSS.set. Property ",e,":: Value ",t,":: Element ",n),new Error("CSS value must be a string: "+t);si(n)&&n.style.setProperty(e,t)}function di(n,e){var t=n.dom();Nn(e,function(n,e){li(t,e,n)})}function mi(n,e){var t=n.dom(),r=l.window.getComputedStyle(t).getPropertyValue(e),o=""!==r||K(n)?r:Ui(t,e);return null===o?undefined:o}function gi(n,e){var t=n.dom(),r=Ui(t,e);return Fn.from(r).filter(function(n){return 0<n.length})}function pi(n,e){!function(n,e){si(n)&&n.style.removeProperty(e)}(n.dom(),e),Zr(n,"style")&&""===function(n){return n.replace(/^\s+|\s+$/g,"")}(Qr(n,"style"))&&no(n,"style")}function hi(n){return n.dom().offsetWidth}var vi,yi=Pn({}),bi=["alloy/data/Fields","alloy/debugging/Debugging"],xi=b({logEventCut:w,logEventStopped:w,logNoParent:w,logEventNoHandlers:w,logEventResponse:w,write:w}),wi=b([Yt("menu"),Yt("selectedMenu")]),Si=b([Yt("item"),Yt("selectedItem")]),Ti=(b(Sr(Si().concat(wi()))),b(Sr(Si()))),Oi=Jt("initSize",[Yt("numColumns"),Yt("numRows")]),ki=b(Oi),Ei=[Kt("channels",Ut(vt.value,Pt([Qo("onReceive"),tr("schema",Dr())])))],Ci=qr({fields:Ei,name:"receiving",active:$o}),Di=function(n,e,t,r){(r?ii:ui)(n,e,t)},Mi=/* */Object.freeze({onLoad:ci,toggle:oi,isOn:function(n,e,t){return t.get()},on:ii,off:ui,set:Di}),Ii=/* */Object.freeze({exhibit:function(n,e,t){return Ur({})},events:function(n,e){var t=function(e,t,r){return Mo(function(n){r(n,e,t)})}(n,e,oi),r=$r(n,e,ci);return Nr(F([n.toggleOnExecute?[t]:[],[r]]))}}),Ri=function(n,e,t){Kr(n.element(),"aria-expanded",t)},Ai=[tr("selected",!1),Qt("toggleClass"),tr("toggleOnExecute",!0),rr("aria",{mode:"none"},qt("mode",{pressed:[tr("syncWithExpanded",!1),ni("update",function(n,e,t){Kr(n.element(),"aria-pressed",t),e.syncWithExpanded&&Ri(n,e,t)})],checked:[ni("update",function(n,e,t){Kr(n.element(),"aria-checked",t)})],expanded:[ni("update",Ri)],selected:[ni("update",function(n,e,t){Kr(n.element(),"aria-selected",t)})],none:[ni("update",w)]}))],Fi=qr({fields:Ai,name:"toggling",active:Ii,apis:Mi,state:(vi=!1,{init:function(){var e=Pn(vi);return{get:function(){return e.get()},set:function(n){return e.set(n)},clear:function(){return e.set(vi)},readState:function(){return e.get()}}}})}),Bi=function(t,r){return Ci.config({channels:En(Uo.formatChanged(),{onReceive:function(n,e){e.command===t&&r(n,e.state)}})})},Vi=function(n){return Ci.config({channels:En(Uo.orientationChanged(),{onReceive:n})})},Ni=function(n,e){return{key:n,value:{onReceive:e}}},ji="tinymce-mobile",_i={resolve:function(n){return ji+"-"+n},prefix:b(ji)},Pi=/* */Object.freeze({focus:fi,blur:function(n,e){e.ignore||lo(n.element())},isFocused:function(n){return function(n){var e=an(n).dom();return n.dom()===e.activeElement}(n.element())}}),Hi=/* */Object.freeze({exhibit:function(n,e){var t=e.ignore?{}:{attributes:{tabindex:"-1"}};return Ur(t)},events:function(t){return Nr([_r(Ve(),function(n,e){fi(n,t),e.stop()})].concat(t.stopMousedown?[_r(Te(),function(n,e){e.event().prevent()})]:[]))}}),zi=[Ko("onFocus"),tr("stopMousedown",!1),tr("ignore",!1)],Li=qr({fields:zi,name:"focusing",active:Hi,apis:Pi}),Gi=function(n,e,t){var r=n.dom();li(r,e,t)},Ui=function(n,e){return si(n)?n.style.getPropertyValue(e):""};function $i(r,o){function n(n){var e=o(n);if(e<=0||null===e){var t=mi(n,r);return parseFloat(t)||0}return e}function i(o,n){return I(n,function(n,e){var t=mi(o,e),r=t===undefined?0:parseInt(t,10);return isNaN(r)?n:n+r},0)}return{set:function(n,e){if(!ae(e)&&!e.match(/^[0-9]+$/))throw new Error(r+".set accepts only positive integer values. Value was "+e);var t=n.dom();si(t)&&(t.style[r]=e+"px")},get:n,getOuter:n,aggregate:i,max:function(n,e,t){var r=i(n,t);return r<e?e-r:0}}}function Wi(n){return yu.get(n)}function Xi(n,e,t){return D(function(n,e){for(var t=ce(e)?e:c,r=n.dom(),o=[];null!==r.parentNode&&r.parentNode!==undefined;){var i=r.parentNode,u=Je.fromDom(i);if(o.push(u),!0===t(u))break;r=i}return o}(n,t),e)}function qi(n,e){return D(function(e){return fn(e).map(at).map(function(n){return D(n,function(n){return!cn(e,n)})}).getOr([])}(n),e)}function Yi(n,e){return on(e,n)}function Ki(n){return un(n)}function Ji(n,e,t){return Rr(n,function(n){return tn(n,e)},t)}function Qi(n,e){return un(e,n)}function Zi(n,e,t){return Ir(tn,Ji,n,e,t)}function nu(n,e,t){var r=N(n.slice(0,e)),o=N(n.slice(e+1));return R(r.concat(o),t)}function eu(n,e,t){var r=N(n.slice(0,e));return R(r,t)}function tu(n,e,t){var r=n.slice(0,e),o=n.slice(e+1);return R(o.concat(r),t)}function ru(n,e,t){var r=n.slice(e+1);return R(r,t)}function ou(t){return function(n){var e=n.raw();return k(t,e.which)}}function iu(n){return function(e){return V(n,function(n){return n(e)})}}function uu(n){return!0===n.raw().shiftKey}function cu(n){return!0===n.raw().ctrlKey}function au(n,e){return{matches:n,classification:e}}function fu(n,e,t,r){var o=n+e;return r<o?t:o<t?r:o}function su(n,e,t){return n<=e?e:t<=n?t:n}function lu(t,r,n,o){var e=Yi(t.element(),"."+r.highlightClass);C(e,function(e){E(o,function(n){return n.element()===e})||(co(e,r.highlightClass),t.getSystem().getByDom(e).each(function(n){r.onDehighlight(t,n),G(n,qe())}))})}function du(n,e,t,r){lu(n,e,0,[r]),xu(n,e,t,r)||(io(r.element(),e.highlightClass),e.onHighlight(n,r),G(r,Xe()))}function mu(t,e,n,r){var o=Yi(t.element(),"."+e.itemClass);return A(o,function(n){return ao(n,e.highlightClass)}).bind(function(n){var e=fu(n,r,0,o.length-1);return t.getSystem().getByDom(o[e]).toOption()})}function gu(n,e,t){e.exists(function(e){return t.exists(function(n){return cn(n,e)})})||U(n,We(),{prevFocus:e,newFocus:t})}function pu(){function o(n){return go(n.element())}return{get:o,set:function(n,e){var t=o(n);n.getSystem().triggerFocus(e,n.element());var r=o(n);gu(n,t,r)}}}var hu,vu,yu=$i("height",function(n){var e=n.dom();return K(n)?e.getBoundingClientRect().height:e.offsetHeight}),bu=m(uu),xu=function(n,e,t,r){return ao(r.element(),e.highlightClass)},wu=function(n,e,t,r){var o=Yi(n.element(),"."+e.itemClass);return Fn.from(o[r]).fold(function(){return vt.error("No element found with index "+r)},n.getSystem().getByDom)},Su=function(e,n,t){return Qi(e.element(),"."+n.itemClass).bind(function(n){return e.getSystem().getByDom(n).toOption()})},Tu=function(e,n,t){var r=Yi(e.element(),"."+n.itemClass);return(0<r.length?Fn.some(r[r.length-1]):Fn.none()).bind(function(n){return e.getSystem().getByDom(n).toOption()})},Ou=function(e,n,t){var r=Yi(e.element(),"."+n.itemClass);return xo(de(r,function(n){return e.getSystem().getByDom(n).toOption()}))},ku=/* */Object.freeze({dehighlightAll:function(n,e,t){return lu(n,e,0,[])},dehighlight:function(n,e,t,r){xu(n,e,t,r)&&(co(r.element(),e.highlightClass),e.onDehighlight(n,r),G(r,qe()))},highlight:du,highlightFirst:function(e,t,r){Su(e,t).each(function(n){du(e,t,r,n)})},highlightLast:function(e,t,r){Tu(e,t).each(function(n){du(e,t,r,n)})},highlightAt:function(e,t,r,n){wu(e,t,r,n).fold(function(n){throw new Error(n)},function(n){du(e,t,r,n)})},highlightBy:function(e,t,r,n){var o=Ou(e,t);R(o,n).each(function(n){du(e,t,r,n)})},isHighlighted:xu,getHighlighted:function(e,n,t){return Qi(e.element(),"."+n.highlightClass).bind(function(n){return e.getSystem().getByDom(n).toOption()})},getFirst:Su,getLast:Tu,getPrevious:function(n,e,t){return mu(n,e,0,-1)},getNext:function(n,e,t){return mu(n,e,0,1)},getCandidates:Ou}),Eu=[Yt("highlightClass"),Yt("itemClass"),Ko("onHighlight"),Ko("onDehighlight")],Cu=qr({fields:Eu,name:"highlighting",apis:ku});(vu=hu=hu||{}).OnFocusMode="onFocus",vu.OnEnterOrSpaceMode="onEnterOrSpace",vu.OnApiMode="onApi";function Du(n,e,t,i,u){function c(e,t,n,r,o){return function(n,e){return R(n,function(n){return n.matches(e)}).map(function(n){return n.classification})}(n(e,t,r,o),t.event()).bind(function(n){return n(e,t,r,o)})}var r={schema:function(){return n.concat([tr("focusManager",pu()),rr("focusInside","onFocus",Gt(function(n){return k(["onFocus","onEnterOrSpace","onApi"],n)?vt.value(n):vt.error("Invalid value for focusInside")})),ni("handler",r),ni("state",e),ni("sendFocusIn",u)])},processKey:c,toEvents:function(r,o){var n=r.focusInside!==hu.OnFocusMode?Fn.none():u(r).map(function(t){return _r(Ve(),function(n,e){t(n,r,o),e.stop()})});return Nr(n.toArray().concat([_r(Ce(),function(n,e){c(n,e,t,r,o).fold(function(){!function(e,t){var n=ou([32].concat([13]))(t.event());r.focusInside===hu.OnEnterOrSpaceMode&&n&&ir(e,t)&&u(r).each(function(n){n(e,r,o),t.stop()})}(n,e)},function(n){e.stop()})}),_r(De(),function(n,e){c(n,e,i,r,o).each(function(n){e.stop()})})]))}};return r}function Mu(n){function i(n,e){var t=n.visibilitySelector.bind(function(n){return Zi(e,n)}).getOr(e);return 0<Wi(t)}function e(e,t){(function(n,e){var t=Yi(n.element(),e.selector),r=D(t,function(n){return i(e,n)});return Fn.from(r[e.firstTabstop])})(e,t).each(function(n){t.focusManager.set(e,n)})}function u(e,n,t,r,o){return o(n,t,function(n){return function(n,e){return i(n,e)&&n.useTabstopAt(e)}(r,n)}).fold(function(){return r.cyclic?Fn.some(!0):Fn.none()},function(n){return r.focusManager.set(e,n),Fn.some(!0)})}function c(e,n,t,r){var o=Yi(e.element(),t.selector);return function(n,e){return e.focusManager.get(n).bind(function(n){return Zi(n,e.selector)})}(e,t).bind(function(n){return A(o,d(cn,n)).bind(function(n){return u(e,o,n,t,r)})})}var t=[Qt("onEscape"),Qt("onEnter"),tr("selector",'[data-alloy-tabstop="true"]:not(:disabled)'),tr("firstTabstop",0),tr("useTabstopAt",b(!0)),Qt("visibilitySelector")].concat([n]),r=b([au(iu([uu,ou([9])]),function(n,e,t,r){var o=t.cyclic?nu:eu;return c(n,0,t,o)}),au(ou([9]),function(n,e,t,r){var o=t.cyclic?tu:ru;return c(n,0,t,o)}),au(ou([27]),function(e,t,n,r){return n.onEscape.bind(function(n){return n(e,t)})}),au(iu([bu,ou([13])]),function(e,t,n,r){return n.onEnter.bind(function(n){return n(e,t)})})]),o=b([]);return Du(t,Ao.init,r,o,function(){return Fn.some(e)})}function Iu(n){return"input"===q(n)&&"radio"!==Qr(n,"type")||"textarea"===q(n)}function Ru(n,e,t){return Iu(t)&&ou([32])(e.event())?Fn.none():function(n,e,t){return W(n,t,Pe()),Fn.some(!0)}(n,0,t)}function Au(n,e){return Fn.some(!0)}function Fu(n,e,t){return t.execute(n,e,n.element())}function Bu(n){var t=Pn(Fn.none());return Fo({readState:function(){return t.get().map(function(n){return{numRows:n.numRows(),numColumns:n.numColumns()}}).getOr({numRows:"?",numColumns:"?"})},setGridSize:function(n,e){t.set(Fn.some({numRows:b(n),numColumns:b(e)}))},getNumRows:function(){return t.get().map(function(n){return n.numRows()})},getNumColumns:function(){return t.get().map(function(n){return n.numColumns()})}})}function Vu(e,t){return function(n){return"rtl"===Yc(n)?t:e}}function Nu(i){return function(n,e,t,r){var o=i(n.element());return Kc(o,n,e,t,r)}}function ju(n,e){var t=Vu(n,e);return Nu(t)}function _u(n,e){var t=Vu(e,n);return Nu(t)}function Pu(o){return function(n,e,t,r){return Kc(o,n,e,t,r)}}function Hu(n){return!function(n){return n.offsetWidth<=0&&n.offsetHeight<=0}(n.dom())}function zu(n,e,t){var r=d(cn,e),o=Yi(n,t);return function(e,n){return A(e,n).map(function(n){return na({index:n,candidates:e})})}(D(o,Hu),r)}function Lu(n,e){return A(n,function(n){return cn(e,n)})}function Gu(t,n,r,e){return e(Math.floor(n/r),n%r).bind(function(n){var e=n.row()*r+n.column();return 0<=e&&e<t.length?Fn.some(t[e]):Fn.none()})}function Uu(o,n,i,u,c){return Gu(o,n,u,function(n,e){var t=n===i-1?o.length-n*u:u,r=fu(e,c,0,t-1);return Fn.some({row:b(n),column:b(r)})})}function $u(i,n,u,c,a){return Gu(i,n,c,function(n,e){var t=fu(n,a,0,u-1),r=t===u-1?i.length-t*c:c,o=su(e,0,r-1);return Fn.some({row:b(t),column:b(o)})})}function Wu(e,t,n){Qi(e.element(),t.selector).each(function(n){t.focusManager.set(e,n)})}function Xu(o){return function(n,e,t,r){return zu(n,e,t.selector).bind(function(n){return o(n.candidates(),n.index(),r.getNumRows().getOr(t.initSize.numRows),r.getNumColumns().getOr(t.initSize.numColumns))})}}function qu(n,e,t,r){return t.captureTab?Fn.some(!0):Fn.none()}function Yu(n,e,t,o){var i=function(n,e,t){var r=fu(e,o,0,t.length-1);return r===n?Fn.none():function(n){return"button"===q(n)&&"disabled"===Qr(n,"disabled")}(t[r])?i(n,r,t):Fn.from(t[r])};return zu(n,t,e).bind(function(n){var e=n.index(),t=n.candidates();return i(e,e,t)})}function Ku(e,t,r){return function(n,e){return e.focusManager.get(n).bind(function(n){return Zi(n,e.selector)})}(e,r).bind(function(n){return r.execute(e,t,n)})}function Ju(e,t){t.getInitial(e).orThunk(function(){return Qi(e.element(),t.selector)}).each(function(n){t.focusManager.set(e,n)})}function Qu(n,e,t){return Yu(n,t.selector,e,-1)}function Zu(n,e,t){return Yu(n,t.selector,e,1)}function nc(r){return function(n,e,t){return r(n,e,t).bind(function(){return t.executeOnMove?Ku(n,e,t):Fn.some(!0)})}}function ec(n,e,t,r){return t.onEscape(n,e)}function tc(n,e,t){return Fn.from(n[e]).bind(function(n){return Fn.from(n[t]).map(function(n){return da({rowIndex:e,columnIndex:t,cell:n})})})}function rc(n,e,t,r){var o=n[e].length,i=fu(t,r,0,o-1);return tc(n,e,i)}function oc(n,e,t,r){var o=fu(t,r,0,n.length-1),i=n[o].length,u=su(e,0,i-1);return tc(n,o,u)}function ic(n,e,t,r){var o=n[e].length,i=su(t+r,0,o-1);return tc(n,e,i)}function uc(n,e,t,r){var o=su(t+r,0,n.length-1),i=n[o].length,u=su(e,0,i-1);return tc(n,o,u)}function cc(e,t){t.previousSelector(e).orThunk(function(){var n=t.selectors;return Qi(e.element(),n.cell)}).each(function(n){t.focusManager.set(e,n)})}function ac(n,e){return function(o,t,i){var u=i.cycles?n:e;return Zi(t,i.selectors.row).bind(function(n){var e=Yi(n,i.selectors.cell);return Lu(e,t).bind(function(t){var r=Yi(o,i.selectors.row);return Lu(r,n).bind(function(n){var e=function(n,e){return de(n,function(n){return Yi(n,e.selectors.cell)})}(r,i);return u(e,n,t).map(function(n){return n.cell()})})})})}}function fc(e,t,r){return r.focusManager.get(e).bind(function(n){return r.execute(e,t,n)})}function sc(e,t){Qi(e.element(),t.selector).each(function(n){t.focusManager.set(e,n)})}function lc(n,e,t){return Yu(n,t.selector,e,-1)}function dc(n,e,t){return Yu(n,t.selector,e,1)}function mc(e,n){return function(n,e,t){return rr(n,e,Sr(t))}(e,{},de(n,function(n){return function(e,t){return kr(e,e,Ot(),_t(function(n){return dr("The field: "+e+" is forbidden. "+t)}))}(n.name(),"Cannot configure "+n.name()+" for "+e)}).concat([or("dump",y)]))}function gc(n){return n.dump}function pc(n,e){return x(x({},n.dump),Bo(e))}function hc(n,e,t,r){return t.uiType===_a?function(n,e,t,r){return n.exists(function(n){return n!==t.owner})?Pa.single(!0,b(t)):Dt(r,t.name).fold(function(){throw new Error("Unknown placeholder component: "+t.name+"\nKnown: ["+Bn(r)+"]\nNamespace: "+n.getOr("none")+"\nSpec: "+JSON.stringify(t,null,2))},function(n){return n.replace()})}(n,0,t,r):Pa.single(!1,b(t))}function vc(e,t,n,r){var o=S(r,function(n,e){return function(n,e){var t=!1;return{name:b(n),required:function(){return e.fold(function(n,e){return n},function(n,e){return n})},used:function(){return t},replace:function(){if(!0===t)throw new Error("Trying to use the same placeholder more than once: "+n);return t=!0,e}}}(e,n)}),i=function(e,t,n,r){return B(n,function(n){return Ha(e,t,n,r)})}(e,t,n,o);return Nn(o,function(n){if(!1===n.used()&&n.required())throw new Error("Placeholder: "+n.name()+" was not found in components list\nNamespace: "+e.getOr("none")+"\nComponents: "+JSON.stringify(t.components,null,2))}),i}function yc(n){var e=(new Date).getTime();return n+"_"+Math.floor(1e9*Math.random())+ ++Ua+String(e)}function bc(n){function e(n){return n.name}return n.fold(e,e,e,e)}function xc(t,r){return function(n){var e=Xt("Converting part type",r,n);return t(e)}}function wc(n,e,t,r){return xt(e.defaults(n,t,r),t,{uid:n.partUids[e.name]},e.overrides(n,t,r))}function Sc(o,n){var e={};return C(n,function(n){(function(n){return n.fold(Fn.some,Fn.none,Fn.some,Fn.some)})(n).each(function(t){var r=cf(o,t.pname);e[t.name]=function(n){var e=Xt("Part: "+t.name+" in "+o,Sr(t.schema),n);return x(x({},r),{config:n,validated:e})}})}),e}function Tc(n,e,t){return function(n,t,e){var i={},r={};return C(e,function(n){n.fold(function(r){i[r.pname]=za(!0,function(n,e,t){return r.factory.sketch(wc(n,r,e,t))})},function(n){var e=t.parts[n.name];r[n.name]=b(n.factory.sketch(wc(t,n,e[uf()]),e))},function(r){i[r.pname]=za(!1,function(n,e,t){return r.factory.sketch(wc(n,r,e,t))})},function(o){i[o.pname]=La(!0,function(e,n,t){var r=e[o.name];return de(r,function(n){return o.factory.sketch(xt(o.defaults(e,n,t),n,o.overrides(e,n)))})})})}),{internals:b(i),externals:b(r)}}(0,e,t)}function Oc(n,e,t){return vc(Fn.some(n),e,e.components,t)}function kc(n,e,t){var r=e.partUids[t];return n.getSystem().getByUid(r).toOption()}function Ec(n,e,t){return kc(n,e,t).getOrDie("Could not find part: "+t)}function Cc(e,n){var t=function(n){return de(n,bc)}(n);return Cn(de(t,function(n){return{key:n,value:e+"-"+n}}))}function Dc(e){return kr("partUids","partUids",Et(function(n){return Cc(n.uid,e)}),Dr())}function Mc(n){return En(af,n)}function Ic(r){return function(n,e){var t=e.toString(),r=t.indexOf(")")+1,o=t.indexOf("("),i=t.substring(o+1,r-1).split(/,\s*/);return n.toFunctionAnnotation=function(){return{name:"OVERRIDE",parameters:Io(i.slice(1))}},n}(function(n){for(var e=[],t=1;t<arguments.length;t++)e[t-1]=arguments[t];return r.apply(undefined,[n.getApis()].concat([n].concat(e)))},r)}function Rc(n){return yc(n)}function Ac(n,e,t,r,o){var i=function(n,e){return(0<n.length?[Jt("parts",n)]:[]).concat([Yt("uid"),tr("dom",{}),tr("components",[]),ei("originalSpec"),tr("debug.sketcher",{})]).concat(e)}(r,o);return Xt(n+" [SpecSchema]",Pt(i.concat(e)),t)}function Fc(n,e,t,r,o){var i=pf(o),u=function(n){return B(n,function(n){return n.fold(Fn.none,Fn.some,Fn.none,Fn.none).map(function(n){return Jt(n.name,n.schema.concat([ei(uf())]))}).toArray()})}(t),c=Dc(t),a=Ac(n,e,i,u,[c]),f=Tc(0,a,t);return r(a,Oc(n,a,f.internals()),i,f.externals())}var Bc,Vc,Nc,jc,_c,Pc,Hc,zc,Lc,Gc,Uc=Mu(or("cyclic",b(!1))),$c=Mu(or("cyclic",b(!0))),Wc=[tr("execute",Ru),tr("useSpace",!1),tr("useEnter",!0),tr("useControlEnter",!1),tr("useDown",!1)],Xc=Du(Wc,Ao.init,function(n,e,t,r){var o=t.useSpace&&!Iu(n.element())?[32]:[],i=t.useEnter?[13]:[],u=t.useDown?[40]:[],c=o.concat(i).concat(u);return[au(ou(c),Fu)].concat(t.useControlEnter?[au(iu([cu,ou([13])]),Fu)]:[])},function(n,e,t,r){return t.useSpace&&!Iu(n.element())?[au(ou([32]),Au)]:[]},function(){return Fn.none()}),qc=/* */Object.freeze({flatgrid:Bu,init:function(n){return n.state(n)}}),Yc=function(n){return"rtl"===mi(n,"direction")?"rtl":"ltr"},Kc=function(e,t,n,r,o){return r.focusManager.get(t).bind(function(n){return e(t.element(),n,r,o)}).map(function(n){return r.focusManager.set(t,n),!0})},Jc=Pu,Qc=Pu,Zc=Pu,na=nn(["index","candidates"],[]),ea=[Yt("selector"),tr("execute",Ru),Jo("onEscape"),tr("captureTab",!1),ki()],ta=Xu(function(n,e,t,r){return Uu(n,e,t,r,-1)}),ra=Xu(function(n,e,t,r){return Uu(n,e,t,r,1)}),oa=Xu(function(n,e,t,r){return $u(n,e,t,r,-1)}),ia=Xu(function(n,e,t,r){return $u(n,e,t,r,1)}),ua=b([au(ou([37]),ju(ta,ra)),au(ou([39]),_u(ta,ra)),au(ou([38]),Jc(oa)),au(ou([40]),Qc(ia)),au(iu([uu,ou([9])]),qu),au(iu([bu,ou([9])]),qu),au(ou([27]),function(n,e,t,r){return t.onEscape(n,e)}),au(ou([32].concat([13])),function(e,t,r,n){return function(n,e){return e.focusManager.get(n).bind(function(n){return Zi(n,e.selector)})}(e,r).bind(function(n){return r.execute(e,t,n)})})]),ca=b([au(ou([32]),Au)]),aa=Du(ea,Bu,ua,ca,function(){return Fn.some(Wu)}),fa=[Yt("selector"),tr("getInitial",Fn.none),tr("execute",Ru),Jo("onEscape"),tr("executeOnMove",!1),tr("allowVertical",!0)],sa=b([au(ou([32]),Au)]),la=Du(fa,Ao.init,function(n,e,t,r){var o=[37].concat(t.allowVertical?[38]:[]),i=[39].concat(t.allowVertical?[40]:[]);return[au(ou(o),nc(ju(Qu,Zu))),au(ou(i),nc(_u(Qu,Zu))),au(ou([13]),Ku),au(ou([32]),Ku),au(ou([27]),ec)]},sa,function(){return Fn.some(Ju)}),da=nn(["rowIndex","columnIndex","cell"],[]),ma=[Jt("selectors",[Yt("row"),Yt("cell")]),tr("cycles",!0),tr("previousSelector",Fn.none),tr("execute",Ru)],ga=ac(function(n,e,t){return rc(n,e,t,-1)},function(n,e,t){return ic(n,e,t,-1)}),pa=ac(function(n,e,t){return rc(n,e,t,1)},function(n,e,t){return ic(n,e,t,1)}),ha=ac(function(n,e,t){return oc(n,t,e,-1)},function(n,e,t){return uc(n,t,e,-1)}),va=ac(function(n,e,t){return oc(n,t,e,1)},function(n,e,t){return uc(n,t,e,1)}),ya=b([au(ou([37]),ju(ga,pa)),au(ou([39]),_u(ga,pa)),au(ou([38]),Jc(ha)),au(ou([40]),Qc(va)),au(ou([32].concat([13])),function(e,t,r){return go(e.element()).bind(function(n){return r.execute(e,t,n)})})]),ba=b([au(ou([32]),Au)]),xa=Du(ma,Ao.init,ya,ba,function(){return Fn.some(cc)}),wa=[Yt("selector"),tr("execute",Ru),tr("moveOnTab",!1)],Sa=b([au(ou([38]),Zc(lc)),au(ou([40]),Zc(dc)),au(iu([uu,ou([9])]),function(n,e,t){return t.moveOnTab?Zc(lc)(n,e,t):Fn.none()}),au(iu([bu,ou([9])]),function(n,e,t){return t.moveOnTab?Zc(dc)(n,e,t):Fn.none()}),au(ou([13]),fc),au(ou([32]),fc)]),Ta=b([au(ou([32]),Au)]),Oa=Du(wa,Ao.init,Sa,Ta,function(){return Fn.some(sc)}),ka=[Jo("onSpace"),Jo("onEnter"),Jo("onShiftEnter"),Jo("onLeft"),Jo("onRight"),Jo("onTab"),Jo("onShiftTab"),Jo("onUp"),Jo("onDown"),Jo("onEscape"),tr("stopSpaceKeyup",!1),Qt("focusIn")],Ea=Du(ka,Ao.init,function(n,e,t){return[au(ou([32]),t.onSpace),au(iu([bu,ou([13])]),t.onEnter),au(iu([uu,ou([13])]),t.onShiftEnter),au(iu([uu,ou([9])]),t.onShiftTab),au(iu([bu,ou([9])]),t.onTab),au(ou([38]),t.onUp),au(ou([40]),t.onDown),au(ou([37]),t.onLeft),au(ou([39]),t.onRight),au(ou([32]),t.onSpace),au(ou([27]),t.onEscape)]},function(n,e,t){return t.stopSpaceKeyup?[au(ou([32]),Au)]:[]},function(n){return n.focusIn}),Ca=Uc.schema(),Da=$c.schema(),Ma=la.schema(),Ia=aa.schema(),Ra=xa.schema(),Aa=Xc.schema(),Fa=Oa.schema(),Ba=Ea.schema(),Va=(Gc=Xt("Creating behaviour: "+(Lc={branchKey:"mode",branches:/* */Object.freeze({acyclic:Ca,cyclic:Da,flow:Ma,flatgrid:Ia,matrix:Ra,execution:Aa,menu:Fa,special:Ba}),name:"keying",active:{events:function(n,e){return n.handler.toEvents(n,e)}},apis:{focusIn:function(e,t,r){t.sendFocusIn(t).fold(function(){e.getSystem().triggerFocus(e.element(),e.element())},function(n){n(e,t,r)})},setGridSize:function(n,e,t,r,o){Mn(t,"setGridSize")?t.setGridSize(r,o):l.console.error("Layout does not support setGridSize")}},state:qc}).name,No,Lc),Bc=qt(Gc.branchKey,Gc.branches),Vc=Gc.name,Nc=Gc.active,jc=Gc.apis,_c=Gc.extra,Pc=Gc.state,zc=nr(Vc,[Zt("config",Hc=Bc)]),Ro(Hc,zc,Vc,Nc,jc,_c,Pc)),Na=mc,ja=pc,_a="placeholder",Pa=yt([{single:["required","valueThunk"]},{multiple:["required","valueThunks"]}]),Ha=function(i,u,c,a){return hc(i,0,c,a).fold(function(n,e){var t=e(u,c.config,c.validated),r=Dt(t,"components").getOr([]),o=B(r,function(n){return Ha(i,u,n,a)});return[x(x({},t),{components:o})]},function(n,e){var t=e(u,c.config,c.validated);return c.validated.preprocess.getOr(y)(t)})},za=Pa.single,La=Pa.multiple,Ga=b(_a),Ua=0,$a=yt([{required:["data"]},{external:["data"]},{optional:["data"]},{group:["data"]}]),Wa=tr("factory",{sketch:y}),Xa=tr("schema",[]),qa=Yt("name"),Ya=kr("pname","pname",kt(function(n){return"<alloy."+yc(n.name)+">"}),Dr()),Ka=or("schema",function(){return[Qt("preprocess")]}),Ja=tr("defaults",b({})),Qa=tr("overrides",b({})),Za=Sr([Wa,Xa,qa,Ya,Ja,Qa]),nf=Sr([Wa,Xa,qa,Ya,Ja,Qa]),ef=Sr([Wa,Ka,qa,Yt("unit"),Ya,Ja,Qa]),tf=xc($a.required,Za),rf=xc($a.optional,nf),of=xc($a.group,ef),uf=b("entirety"),cf=function(n,e){return{uiType:Ga(),owner:n,name:e}},af=yc("alloy-premade"),ff=b("alloy-id-"),sf=b("data-alloy-id"),lf=ff(),df=sf(),mf=function(n,e){Object.defineProperty(n.dom(),df,{value:e,writable:!0})},gf=function(n){var e=et(n)?n.dom()[df]:null;return Fn.from(e)},pf=function(n){return n.hasOwnProperty("uid")?n:x(x({},n),{uid:Rc("uid")})};function hf(n){var e=Xt("Sketcher for "+n.name,Hs,n),t=S(e.apis,Ic),r=S(e.extraApis,function(n,e){return Gr(n,e)});return x(x({name:b(e.name),partFields:b([]),configFields:b(e.configFields),sketch:function(n){return function(n,e,t,r){var o=pf(r);return t(Ac(n,e,o,[],[]),o)}(e.name,e.configFields,e.factory,n)}},t),r)}function vf(n){var e=Xt("Sketcher for "+n.name,zs,n),t=Sc(e.name,e.partFields),r=S(e.apis,Ic),o=S(e.extraApis,function(n,e){return Gr(n,e)});return x(x({name:b(e.name),partFields:b(e.partFields),configFields:b(e.configFields),sketch:function(n){return Fc(e.name,e.configFields,e.partFields,e.factory,n)},parts:b(t)},r),o)}function yf(n){var e=Je.fromHtml(n),t=at(e),r=function(n){var e=n.dom().attributes!==undefined?n.dom().attributes:[];return I(e,function(n,e){var t;return"class"===e.name?n:x(x({},n),((t={})[e.name]=e.value,t))},{})}(e),o=function(n){return Array.prototype.slice.call(n.dom().classList,0)}(e),i=0===t.length?{}:{innerHtml:po(e)};return x({tag:q(e),classes:o,attributes:r},i)}function bf(n){return{dom:Us(n)}}function xf(n){return Bo([Fi.config({toggleClass:_i.resolve("toolbar-button-selected"),toggleOnExecute:!1,aria:{mode:"pressed"}}),Bi(n,function(n,e){(e?Fi.on:Fi.off)(n)})])}function wf(n,e){var t=e.ui.registry.getAll().icons;return Fn.from(t[n]).fold(function(){return Us('<span class="${prefix}-toolbar-button ${prefix}-toolbar-group-item ${prefix}-icon-'+n+' ${prefix}-icon"></span>')},function(n){return Us('<span class="${prefix}-toolbar-button ${prefix}-toolbar-group-item">'+n+"</span>")})}function Sf(e){return rf({name:e+"-edge",overrides:function(n){return n.model.manager.edgeActions[e].fold(function(){return{}},function(r){return{events:Nr([Pr(xe(),r,[n]),Pr(Te(),r,[n]),Pr(Oe(),function(n,e,t){t.mouseIsDown.get()&&r(n,t)},[n])])}})}})}function Tf(n,e,t){e.store.manager.onLoad(n,e,t)}function Of(n,e,t){e.store.manager.onUnload(n,e,t)}function kf(){var n=Pn(null);return Fo({set:n.set,get:n.get,isNotSet:function(){return null===n.get()},clear:function(){n.set(null)},readState:function(){return{mode:"memory",value:n.get()}}})}function Ef(){var i=Pn({}),u=Pn({});return Fo({readState:function(){return{mode:"dataset",dataByValue:i.get(),dataByText:u.get()}},lookup:function(n){return Dt(i.get(),n).orThunk(function(){return Dt(u.get(),n)})},update:function(n){var e=i.get(),t=u.get(),r={},o={};C(n,function(e){r[e.value]=e,Dt(e,"meta").each(function(n){Dt(n,"text").each(function(n){o[n]=e})})}),i.set(x(x({},e),r)),u.set(x(x({},t),o))},clear:function(){i.set({}),u.set({})}})}function Cf(n,e,t,r){var o=e.store;t.update([r]),o.setValue(n,r),e.onSetValue(n,r)}function Df(n,e){sl.set(n,e)}function Mf(n){return sl.get(n)}function If(n){var e=n.event().raw();if(function(n){return-1!==n.type.indexOf("touch")}(e)){var t=e;return t.touches!==undefined&&1===t.touches.length?Fn.some(t.touches[0]).map(function(n){return dl(n.clientX,n.clientY)}):Fn.none()}var r=e;return r.clientX!==undefined?Fn.some(r).map(function(n){return dl(n.clientX,n.clientY)}):Fn.none()}function Rf(n){return n.model.minX}function Af(n){return n.model.minY}function Ff(n){return n.model.minX-1}function Bf(n){return n.model.minY-1}function Vf(n){return n.model.maxX}function Nf(n){return n.model.maxY}function jf(n){return n.model.maxX+1}function _f(n){return n.model.maxY+1}function Pf(n,e,t){return e(n)-t(n)}function Hf(n){return Pf(n,Vf,Rf)}function zf(n){return Pf(n,Nf,Af)}function Lf(n){return Hf(n)/2}function Gf(n){return zf(n)/2}function Uf(n){return n.stepSize}function $f(n){return n.snapToGrid}function Wf(n){return n.snapStart}function Xf(n){return n.rounded}function qf(n,e){return n[e+"-edge"]!==undefined}function Yf(n){return qf(n,"left")}function Kf(n){return qf(n,"right")}function Jf(n){return qf(n,"top")}function Qf(n){return qf(n,"bottom")}function Zf(n){return n.model.value.get()}function ns(n){return{x:b(n)}}function es(n){return{y:b(n)}}function ts(n,e){return{x:b(n),y:b(e)}}function rs(n,e){U(n,ml(),{value:e})}function os(n,e,t,r){return n<e?n:t<n?t:n===e?e-1:Math.max(e,n-r)}function is(n,e,t,r){return t<n?n:n<e?e:n===t?t+1:Math.min(t,n+r)}function us(n,e,t){return Math.max(e,Math.min(t,n))}function cs(n){var e=n.min,t=n.max,r=n.range,o=n.value,i=n.step,u=n.snap,c=n.snapStart,a=n.rounded,f=n.hasMinEdge,s=n.hasMaxEdge,l=n.minBound,d=n.maxBound,m=n.screenRange,g=f?e-1:e,p=s?t+1:t;if(o<l)return g;if(d<o)return p;var h=function(n,e,t){return Math.min(t,Math.max(n,e))-e}(o,l,d),v=us(h/m*r+e,g,p);return u&&e<=v&&v<=t?function(u,t,c,a,n){return n.fold(function(){var n=u-t,e=Math.round(n/a)*a;return us(t+e,t-1,c+1)},function(n){var e=(u-n)%a,t=Math.round(e/a),r=Math.floor((u-n)/a),o=Math.floor((c-n)/a),i=n+Math.min(o,r+t)*a;return Math.max(n,i)})}(v,e,t,i,c):a?Math.round(v):v}function as(n){var e=n.min,t=n.max,r=n.range,o=n.value,i=n.hasMinEdge,u=n.hasMaxEdge,c=n.maxBound,a=n.maxOffset,f=n.centerMinEdge,s=n.centerMaxEdge;return o<e?i?0:f:t<o?u?c:s:(o-e)/r*a}function fs(n){return n.element().dom().getBoundingClientRect()}function ss(n,e){return n[e]}function ls(n){var e=fs(n);return ss(e,gl)}function ds(n){var e=fs(n);return ss(e,"right")}function ms(n){var e=fs(n);return ss(e,"top")}function gs(n){var e=fs(n);return ss(e,"bottom")}function ps(n){var e=fs(n);return ss(e,"width")}function hs(n){var e=fs(n);return ss(e,"height")}function vs(n,e,t){return(n+e)/2-t}function ys(n,e){var t=fs(n),r=fs(e),o=ss(t,gl),i=ss(t,"right"),u=ss(r,gl);return vs(o,i,u)}function bs(n,e){var t=fs(n),r=fs(e),o=ss(t,"top"),i=ss(t,"bottom"),u=ss(r,"top");return vs(o,i,u)}function xs(n,e){U(n,ml(),{value:e})}function ws(n){return{x:b(n)}}function Ss(n,e,t){var r={min:Rf(e),max:Vf(e),range:Hf(e),value:t,step:Uf(e),snap:$f(e),snapStart:Wf(e),rounded:Xf(e),hasMinEdge:Yf(e),hasMaxEdge:Kf(e),minBound:ls(n),maxBound:ds(n),screenRange:ps(n)};return cs(r)}function Ts(t){return function(n,e){return function(n,e,t){var r=(0<n?is:os)(Zf(t).x(),Rf(t),Vf(t),Uf(t));return xs(e,ws(r)),Fn.some(r)}(t,n,e).map(function(){return!0})}}function Os(n,e,t,r,o,i){var u=function(e,n,t,r,o){var i=ps(e),u=r.bind(function(n){return Fn.some(ys(n,e))}).getOr(0),c=o.bind(function(n){return Fn.some(ys(n,e))}).getOr(i),a={min:Rf(n),max:Vf(n),range:Hf(n),value:t,hasMinEdge:Yf(n),hasMaxEdge:Kf(n),minBound:ls(e),minOffset:0,maxBound:ds(e),maxOffset:i,centerMinEdge:u,centerMaxEdge:c};return as(a)}(e,i,t,r,o);return ls(e)-ls(n)+u}function ks(n,e){U(n,ml(),{value:e})}function Es(n){return{y:b(n)}}function Cs(n,e,t){var r={min:Af(e),max:Nf(e),range:zf(e),value:t,step:Uf(e),snap:$f(e),snapStart:Wf(e),rounded:Xf(e),hasMinEdge:Jf(e),hasMaxEdge:Qf(e),minBound:ms(n),maxBound:gs(n),screenRange:hs(n)};return cs(r)}function Ds(t){return function(n,e){return function(n,e,t){var r=(0<n?is:os)(Zf(t).y(),Af(t),Nf(t),Uf(t));return ks(e,Es(r)),Fn.some(r)}(t,n,e).map(function(){return!0})}}function Ms(n,e,t,r,o,i){var u=function(e,n,t,r,o){var i=hs(e),u=r.bind(function(n){return Fn.some(bs(n,e))}).getOr(0),c=o.bind(function(n){return Fn.some(bs(n,e))}).getOr(i),a={min:Af(n),max:Nf(n),range:zf(n),value:t,hasMinEdge:Jf(n),hasMaxEdge:Qf(n),minBound:ms(e),minOffset:0,maxBound:gs(e),maxOffset:i,centerMinEdge:u,centerMaxEdge:c};return as(a)}(e,i,t,r,o);return ms(e)-ms(n)+u}function Is(n,e){U(n,ml(),{value:e})}function Rs(n,e){return{x:b(n),y:b(e)}}function As(t,r){return function(n,e){return function(n,e,t,r){var o=0<n?is:os,i=e?Zf(r).x():o(Zf(r).x(),Rf(r),Vf(r),Uf(r)),u=e?o(Zf(r).y(),Af(r),Nf(r),Uf(r)):Zf(r).y();return Is(t,Rs(i,u)),Fn.some(i)}(t,r,n,e).map(function(){return!0})}}function Fs(e,t,r,n){return Ws.forToolbar(t,function(){var n=r();e.setContextToolbar([{label:t+" group",items:n}])},{},n)}function Bs(n){return[function(o){function i(n){return n<0?"black":360<n?"white":"hsl("+n+", 100%, 50%)"}return Vl.sketch({dom:Us('<div class="${prefix}-slider ${prefix}-hue-slider-container"></div>'),components:[Vl.parts()["left-edge"](bf('<div class="${prefix}-hue-slider-black"></div>')),Vl.parts().spectrum({dom:Us('<div class="${prefix}-slider-gradient-container"></div>'),components:[bf('<div class="${prefix}-slider-gradient"></div>')],behaviours:Bo([Fi.config({toggleClass:_i.resolve("thumb-active")})])}),Vl.parts()["right-edge"](bf('<div class="${prefix}-hue-slider-white"></div>')),Vl.parts().thumb({dom:Us('<div class="${prefix}-slider-thumb"></div>'),behaviours:Bo([Fi.config({toggleClass:_i.resolve("thumb-active")})])})],onChange:function(n,e,t){var r=i(t.x());Gi(e.element(),"background-color",r),o.onChange(n,e,r)},onDragStart:function(n,e){Fi.on(e)},onDragEnd:function(n,e){Fi.off(e)},onInit:function(n,e,t,r){var o=i(r.x());Gi(e.element(),"background-color",o)},stepSize:10,model:{mode:"x",minX:0,maxX:360,getInitialValue:function(){return{x:function(){return o.getInitialValue()}}}},sliderBehaviours:Bo([Vi(Vl.refresh)])})}(n)]}function Vs(n){var e=n.selection.getStart(),t=Je.fromDom(e),r=Je.fromDom(n.getBody()),o=function(e,n){return(et(n)?Fn.some(n):fn(n).filter(et)).map(function(n){return Ar(n,function(n){return gi(n,"font-size").isSome()},e).bind(function(n){return gi(n,"font-size")}).getOrThunk(function(){return mi(n,"font-size")})}).getOr("")}(function(n){return cn(r,n)},t);return R(Pl,function(n){return o===n}).getOr("medium")}function Ns(n){return[bf('<span class="${prefix}-toolbar-button ${prefix}-icon-small-font ${prefix}-icon"></span>'),function(n){return _l({onChange:n.onChange,sizes:zl,category:"font",getInitialValue:n.getInitialValue})}(n),bf('<span class="${prefix}-toolbar-button ${prefix}-icon-large-font ${prefix}-icon"></span>')]}function js(n){var e=function t(n){return n.uid!==undefined}(n)&&Mn(n,"uid")?n.uid:Rc("memento");return{get:function(n){return n.getSystem().getByUid(e).getOrDie()},getOpt:function(n){return n.getSystem().getByUid(e).toOption()},asSpec:function(){return x(x({},n),{uid:e})}}}var _s,Ps,Hs=Pt([Yt("name"),Yt("factory"),Yt("configFields"),tr("apis",{}),tr("extraApis",{})]),zs=Pt([Yt("name"),Yt("factory"),Yt("configFields"),Yt("partFields"),tr("apis",{}),tr("extraApis",{})]),Ls=hf({name:"Button",factory:function(n){function t(e){return Dt(n.dom,"attributes").bind(function(n){return Dt(n,e)})}var e=function(n){return Nr(F([n.map(function(t){return Mo(function(n,e){t(n),e.stop()})}).toArray(),ai()]))}(n.action),r=n.dom.tag;return{uid:n.uid,dom:n.dom,components:n.components,events:e,behaviours:ja(n.buttonBehaviours,[Li.config({}),Va.config({mode:"execution",useSpace:!0,useEnter:!0})]),domModification:{attributes:function(){if("button"!==r)return{role:t("role").getOr("button")};var n=t("type").getOr("button"),e=t("role").map(function(n){return{role:n}}).getOr({});return x({type:n},e)}()},eventOrder:n.eventOrder}},configFields:[tr("uid",undefined),Yt("dom"),tr("components",[]),Na("buttonBehaviours",[Li,Va]),Qt("action"),Qt("role"),tr("eventOrder",{})]}),Gs=qr({fields:[],name:"unselecting",active:/* */Object.freeze({events:function(n){return Nr([jr(Fe(),b(!0))])},exhibit:function(n,e){return Ur({styles:{"-webkit-user-select":"none","user-select":"none","-ms-user-select":"none","-moz-user-select":"-moz-none"},attributes:{unselectable:"on"}})}})}),Us=function(n){var e=function(n,r){return n.replace(/\$\{([^{}]*)\}/g,function(n,e){var t=r[e];return function(n){var e=typeof n;return"string"==e||"number"==e}(t)?t.toString():n})}(n,{prefix:_i.prefix()});return yf(e)},$s=function(n,e,t,r){return Ls.sketch({dom:wf(n,r),action:e,buttonBehaviours:xt(Bo([Gs.config({})]),t)})},Ws={forToolbar:$s,forToolbarCommand:function(n,e){return $s(e,function(){n.execCommand(e)},{},n)},forToolbarStateAction:function(n,e,t,r){var o=xf(t);return $s(e,r,o,n)},forToolbarStateCommand:function(n,e){var t=xf(e);return $s(e,function(){n.execCommand(e)},t,n)},getToolbarIconButton:wf},Xs=rf({schema:[Yt("dom")],name:"label"}),qs=Sf("top-left"),Ys=Sf("top"),Ks=Sf("top-right"),Js=Sf("right"),Qs=Sf("bottom-right"),Zs=Sf("bottom"),nl=Sf("bottom-left"),el=[Xs,Sf("left"),Js,Ys,Zs,qs,Ks,nl,Qs,tf({name:"thumb",defaults:b({dom:{styles:{position:"absolute"}}}),overrides:function(n){return{events:Nr([zr(xe(),n,"spectrum"),zr(we(),n,"spectrum"),zr(Se(),n,"spectrum"),zr(Te(),n,"spectrum"),zr(Oe(),n,"spectrum"),zr(ke(),n,"spectrum")])}}}),tf({schema:[or("mouseIsDown",function(){return Pn(!1)})],name:"spectrum",overrides:function(t){function r(e,n){return o.getValueFromEvent(n).map(function(n){return o.setValueFrom(e,t,n)})}var o=t.model.manager;return{behaviours:Bo([Va.config({mode:"special",onLeft:function(n){return o.onLeft(n,t)},onRight:function(n){return o.onRight(n,t)},onUp:function(n){return o.onUp(n,t)},onDown:function(n){return o.onDown(n,t)}}),Li.config({})]),events:Nr([_r(xe(),r),_r(we(),r),_r(Te(),r),_r(Oe(),function(n,e){t.mouseIsDown.get()&&r(n,e)})])}}})],tl=/* */Object.freeze({onLoad:Tf,onUnload:Of,setValue:function(n,e,t,r){e.store.manager.setValue(n,e,t,r)},getValue:function(n,e,t){return e.store.manager.getValue(n,e,t)},getState:function(n,e,t){return t}}),rl=/* */Object.freeze({events:function(t,r){var n=t.resetOnDom?[Eo(function(n,e){Tf(n,t,r)}),Co(function(n,e){Of(n,t,r)})]:[$r(t,r,Tf)];return Nr(n)}}),ol=/* */Object.freeze({memory:kf,dataset:Ef,manual:function(){return Fo({readState:function(){}})},init:function(n){return n.store.manager.state(n)}}),il=[Qt("initialValue"),Yt("getFallbackEntry"),Yt("getDataKey"),Yt("setValue"),ni("manager",{setValue:Cf,getValue:function(n,e,t){var r=e.store,o=r.getDataKey(n);return t.lookup(o).fold(function(){return r.getFallbackEntry(o)},function(n){return n})},onLoad:function(e,t,r){t.store.initialValue.each(function(n){Cf(e,t,r,n)})},onUnload:function(n,e,t){t.clear()},state:Ef})],ul=[Yt("getValue"),tr("setValue",w),Qt("initialValue"),ni("manager",{setValue:function(n,e,t,r){e.store.setValue(n,r),e.onSetValue(n,r)},getValue:function(n,e,t){return e.store.getValue(n)},onLoad:function(e,t,n){t.store.initialValue.each(function(n){t.store.setValue(e,n)})},onUnload:w,state:Ao.init})],cl=[Qt("initialValue"),ni("manager",{setValue:function(n,e,t,r){t.set(r),e.onSetValue(n,r)},getValue:function(n,e,t){return t.get()},onLoad:function(n,e,t){e.store.initialValue.each(function(n){t.isNotSet()&&t.set(n)})},onUnload:function(n,e,t){t.clear()},state:kf})],al=[rr("store",{mode:"memory"},qt("mode",{memory:cl,manual:ul,dataset:il})),Ko("onSetValue"),tr("resetOnDom",!1)],fl=qr({fields:al,name:"representing",active:rl,apis:tl,extra:{setValueFrom:function(n,e){var t=fl.getValue(e);fl.setValue(n,t)}},state:ol}),sl=$i("width",function(n){return n.dom().offsetWidth}),ll=function(t,r){return{left:b(t),top:b(r),translate:function(n,e){return ll(t+n,r+e)}}},dl=ll,ml=b("slider.change.value"),gl="left",pl=Ts(-1),hl=Ts(1),vl=Fn.none,yl=Fn.none,bl={"top-left":Fn.none(),top:Fn.none(),"top-right":Fn.none(),right:Fn.some(function(n,e){rs(n,ns(jf(e)))}),"bottom-right":Fn.none(),bottom:Fn.none(),"bottom-left":Fn.none(),left:Fn.some(function(n,e){rs(n,ns(Ff(e)))})},xl=/* */Object.freeze({setValueFrom:function(n,e,t){var r=Ss(n,e,t),o=ws(r);return xs(n,o),r},setToMin:function(n,e){var t=Rf(e);xs(n,ws(t))},setToMax:function(n,e){var t=Vf(e);xs(n,ws(t))},findValueOfOffset:Ss,getValueFromEvent:function(n){return If(n).map(function(n){return n.left()})},findPositionOfValue:Os,setPositionFromValue:function(n,e,t,r){var o=Zf(t),i=Os(n,r.getSpectrum(n),o.x(),r.getLeftEdge(n),r.getRightEdge(n),t),u=Mf(e.element())/2;Gi(e.element(),"left",i-u+"px")},onLeft:pl,onRight:hl,onUp:vl,onDown:yl,edgeActions:bl}),wl=Fn.none,Sl=Fn.none,Tl=Ds(-1),Ol=Ds(1),kl={"top-left":Fn.none(),top:Fn.some(function(n,e){rs(n,es(Bf(e)))}),"top-right":Fn.none(),right:Fn.none(),"bottom-right":Fn.none(),bottom:Fn.some(function(n,e){rs(n,es(_f(e)))}),"bottom-left":Fn.none(),left:Fn.none()},El=/* */Object.freeze({setValueFrom:function(n,e,t){var r=Cs(n,e,t),o=Es(r);return ks(n,o),r},setToMin:function(n,e){var t=Af(e);ks(n,Es(t))},setToMax:function(n,e){var t=Nf(e);ks(n,Es(t))},findValueOfOffset:Cs,getValueFromEvent:function(n){return If(n).map(function(n){return n.top()})},findPositionOfValue:Ms,setPositionFromValue:function(n,e,t,r){var o=Zf(t),i=Ms(n,r.getSpectrum(n),o.y(),r.getTopEdge(n),r.getBottomEdge(n),t),u=Wi(e.element())/2;Gi(e.element(),"top",i-u+"px")},onLeft:wl,onRight:Sl,onUp:Tl,onDown:Ol,edgeActions:kl}),Cl=As(-1,!1),Dl=As(1,!1),Ml=As(-1,!0),Il=As(1,!0),Rl={"top-left":Fn.some(function(n,e){rs(n,ts(Ff(e),Bf(e)))}),top:Fn.some(function(n,e){rs(n,ts(Lf(e),Bf(e)))}),"top-right":Fn.some(function(n,e){rs(n,ts(jf(e),Bf(e)))}),right:Fn.some(function(n,e){rs(n,ts(jf(e),Gf(e)))}),"bottom-right":Fn.some(function(n,e){rs(n,ts(jf(e),_f(e)))}),bottom:Fn.some(function(n,e){rs(n,ts(Lf(e),_f(e)))}),"bottom-left":Fn.some(function(n,e){rs(n,ts(Ff(e),_f(e)))}),left:Fn.some(function(n,e){rs(n,ts(Ff(e),Gf(e)))})},Al=/* */Object.freeze({setValueFrom:function(n,e,t){var r=Ss(n,e,t.left()),o=Cs(n,e,t.top()),i=Rs(r,o);return Is(n,i),i},setToMin:function(n,e){var t=Rf(e),r=Af(e);Is(n,Rs(t,r))},setToMax:function(n,e){var t=Vf(e),r=Nf(e);Is(n,Rs(t,r))},getValueFromEvent:function(n){return If(n)},setPositionFromValue:function(n,e,t,r){var o=Zf(t),i=Os(n,r.getSpectrum(n),o.x(),r.getLeftEdge(n),r.getRightEdge(n),t),u=Ms(n,r.getSpectrum(n),o.y(),r.getTopEdge(n),r.getBottomEdge(n),t),c=Mf(e.element())/2,a=Wi(e.element())/2;Gi(e.element(),"left",i-c+"px"),Gi(e.element(),"top",u-a+"px")},onLeft:Cl,onRight:Dl,onUp:Ml,onDown:Il,edgeActions:Rl}),Fl=[tr("stepSize",1),tr("onChange",w),tr("onChoose",w),tr("onInit",w),tr("onDragStart",w),tr("onDragEnd",w),tr("snapToGrid",!1),tr("rounded",!0),Qt("snapStart"),Kt("model",qt("mode",{x:[tr("minX",0),tr("maxX",100),or("value",function(n){return Pn(n.mode.minX)}),Yt("getInitialValue"),ni("manager",xl)],y:[tr("minY",0),tr("maxY",100),or("value",function(n){return Pn(n.mode.minY)}),Yt("getInitialValue"),ni("manager",El)],xy:[tr("minX",0),tr("maxX",100),tr("minY",0),tr("maxY",100),or("value",function(n){return Pn({x:b(n.mode.minX),y:b(n.mode.minY)})}),Yt("getInitialValue"),ni("manager",Al)]})),mc("sliderBehaviours",[Va,fl]),or("mouseIsDown",function(){return Pn(!1)})],Bl=b("mouse.released"),Vl=vf({name:"Slider",configFields:Fl,partFields:el,factory:function(i,n,e,t){function u(n){return Ec(n,i,"thumb")}function c(n){return Ec(n,i,"spectrum")}function r(n){return kc(n,i,"left-edge")}function o(n){return kc(n,i,"right-edge")}function a(n){return kc(n,i,"top-edge")}function f(n){return kc(n,i,"bottom-edge")}function s(n,e){v.setPositionFromValue(n,e,i,{getLeftEdge:r,getRightEdge:o,getTopEdge:a,getBottomEdge:f,getSpectrum:c})}function l(n,e){h.value.set(e);var t=u(n);return s(n,t),i.onChange(n,t,e),Fn.some(!0)}function d(t){var n=i.mouseIsDown.get();i.mouseIsDown.set(!1),n&&kc(t,i,"thumb").each(function(n){var e=h.value.get();i.onChoose(t,n,e)})}function m(n,e){e.stop(),i.mouseIsDown.set(!0),i.onDragStart(n,u(n))}function g(n,e){e.stop(),i.onDragEnd(n,u(n)),d(n)}var p,h=i.model,v=h.manager;return{uid:i.uid,dom:i.dom,components:n,behaviours:pc(i.sliderBehaviours,[Va.config({mode:"special",focusIn:function(n){return kc(n,i,"spectrum").map(Va.focusIn).map(b(!0))}}),fl.config({store:{mode:"manual",getValue:function(n){return h.value.get()}}}),Ci.config({channels:(p={},p[Bl()]={onReceive:d},p)})]),events:Nr([_r(ml(),function(n,e){l(n,e.event().value())}),Eo(function(n,e){var t=h.getInitialValue();h.value.set(t);var r=u(n);s(n,r);var o=c(n);i.onInit(n,r,o,h.value.get())}),_r(xe(),m),_r(Se(),g),_r(Te(),m),_r(ke(),g)]),apis:{resetToMin:function(n){v.setToMin(n,i)},resetToMax:function(n){v.setToMax(n,i)},changeValue:l,refresh:s},domModification:{styles:{position:"relative"}}}},apis:{resetToMin:function(n,e){n.resetToMin(e)},resetToMax:function(n,e){n.resetToMax(e)},refresh:function(n,e){n.refresh(e)}}}),Nl=function(n,r){var e={onChange:function(n,e,t){r.undoManager.transact(function(){r.formatter.apply("forecolor",{value:t}),r.nodeChanged()})},getInitialValue:function(){return-1}};return Fs(n,"color-levels",function(){return Bs(e)},r)},jl=Pt([Yt("getInitialValue"),Yt("onChange"),Yt("category"),Yt("sizes")]),_l=function(n){var o=Xt("SizeSlider",jl,n);return Vl.sketch({dom:{tag:"div",classes:[_i.resolve("slider-"+o.category+"-size-container"),_i.resolve("slider"),_i.resolve("slider-size-container")]},onChange:function(n,e,t){var r=t.x();!function(n){return 0<=n&&n<o.sizes.length}(r)||o.onChange(r)},onDragStart:function(n,e){Fi.on(e)},onDragEnd:function(n,e){Fi.off(e)},model:{mode:"x",minX:0,maxX:o.sizes.length-1,getInitialValue:function(){return{x:function(){return o.getInitialValue()}}}},stepSize:1,snapToGrid:!0,sliderBehaviours:Bo([Vi(Vl.refresh)]),components:[Vl.parts().spectrum({dom:Us('<div class="${prefix}-slider-size-container"></div>'),components:[bf('<div class="${prefix}-slider-size-line"></div>')]}),Vl.parts().thumb({dom:Us('<div class="${prefix}-slider-thumb"></div>'),behaviours:Bo([Fi.config({toggleClass:_i.resolve("thumb-active")})])})]})},Pl=["9px","10px","11px","12px","14px","16px","18px","20px","24px","32px","36px"],Hl={candidates:b(Pl),get:function(n){return function(e){return A(Pl,function(n){return n===e})}(Vs(n)).getOr(2)},apply:function(e,n){(function(n){return Fn.from(Pl[n])})(n).each(function(n){!function(n,e){Vs(n)!==e&&n.execCommand("fontSize",!1,e)}(e,n)})}},zl=Hl.candidates(),Ll=window.Promise?window.Promise:(_s=Gl.immediateFn||"function"==typeof window.setImmediate&&window.setImmediate||function(n){l.setTimeout(n,1)},Ps=Array.isArray||function(n){return"[object Array]"===Object.prototype.toString.call(n)},Gl.prototype["catch"]=function(n){return this.then(null,n)},Gl.prototype.then=function(t,r){var o=this;return new Gl(function(n,e){$l.call(o,new Yl(t,r,n,e))})},Gl.all=function(){for(var n=[],e=0;e<arguments.length;e++)n[e]=arguments[e];var a=Array.prototype.slice.call(1===n.length&&Ps(n[0])?n[0]:n);return new Gl(function(o,i){if(0===a.length)return o([]);var u=a.length;function c(e,n){try{if(n&&("object"==typeof n||"function"==typeof n)){var t=n.then;if("function"==typeof t)return void t.call(n,function(n){c(e,n)},i)}a[e]=n,0==--u&&o(a)}catch(r){i(r)}}for(var n=0;n<a.length;n++)c(n,a[n])})},Gl.resolve=function(e){return e&&"object"==typeof e&&e.constructor===Gl?e:new Gl(function(n){n(e)})},Gl.reject=function(t){return new Gl(function(n,e){e(t)})},Gl.race=function(o){return new Gl(function(n,e){for(var t=0,r=o;t<r.length;t++)r[t].then(n,e)})},Gl);function Gl(n){if("object"!=typeof this)throw new TypeError("Promises must be constructed via new");if("function"!=typeof n)throw new TypeError("not a function");this._state=null,this._value=null,this._deferreds=[],Kl(n,Ul(Wl,this),Ul(Xl,this))}function Ul(n,e){return function(){return n.apply(e,arguments)}}function $l(r){var o=this;null!==this._state?_s(function(){var n=o._state?r.onFulfilled:r.onRejected;if(null!==n){var e;try{e=n(o._value)}catch(t){return void r.reject(t)}r.resolve(e)}else(o._state?r.resolve:r.reject)(o._value)}):this._deferreds.push(r)}function Wl(n){try{if(n===this)throw new TypeError("A promise cannot be resolved with itself.");if(n&&("object"==typeof n||"function"==typeof n)){var e=n.then;if("function"==typeof e)return void Kl(Ul(e,n),Ul(Wl,this),Ul(Xl,this))}this._state=!0,this._value=n,ql.call(this)}catch(t){Xl.call(this,t)}}function Xl(n){this._state=!1,this._value=n,ql.call(this)}function ql(){for(var n=0,e=this._deferreds;n<e.length;n++){var t=e[n];$l.call(this,t)}this._deferreds=[]}function Yl(n,e,t,r){this.onFulfilled="function"==typeof n?n:null,this.onRejected="function"==typeof e?e:null,this.resolve=t,this.reject=r}function Kl(n,e,t){var r=!1;try{n(function(n){r||(r=!0,e(n))},function(n){r||(r=!0,t(n))})}catch(o){if(r)return;r=!0,t(o)}}function Jl(n){return function e(t){return new Ll(function(n){var e=new l.FileReader;e.onloadend=function(){n(e.result)},e.readAsDataURL(t)})}(n).then(function(n){return n.split(",")[1]})}function Ql(o,i){(function(n){return Jl(n)})(i).then(function(r){o.undoManager.transact(function(){var n=o.editorUpload.blobCache,e=n.create(yc("mceu"),i,r);n.add(e);var t=o.dom.createHTML("img",{src:e.blobUri()});o.insertContent(t)})})}function Zl(t){var e=js({dom:{tag:"input",attributes:{accept:"image/*",type:"file",title:""},styles:{visibility:"hidden",position:"absolute"}},events:Nr([Lr(Re()),_r(Ie(),function(n,e){(function(n){var e=n.event(),t=e.raw().target.files||e.raw().dataTransfer.files;return Fn.from(t[0])})(e).each(function(n){Ql(t,n)})})])});return Ls.sketch({dom:Ws.getToolbarIconButton("image",t),components:[e.asSpec()],action:function(n){e.get(n).element().dom().click()}})}function nd(n){return n.dom().textContent}function ed(n){return 0<n.length}function td(n){return n===undefined||null===n?"":n}function rd(n,e,t){return t.text.toOption().filter(ed).fold(function(){return function(n){return Qr(n,"href")===nd(n)}(n)?Fn.some(e):Fn.none()},Fn.some)}function od(n,e){var t=e.selection.getRng();n(),e.selection.setRng(t)}function id(n){return n.dom().value}function ud(n,e){if(e===undefined)throw new Error("Value.set was undefined");n.dom().value=e}function cd(n){return x(x({},function(n){return Bo([Li.config({onFocus:!1===n.selectOnFocus?w:function(n){var e=n.element(),t=id(e);e.dom().setSelectionRange(0,t.length)}})])}(n)),pc(n.inputBehaviours,[fl.config({store:{mode:"manual",initialValue:n.data.getOr(undefined),getValue:function(n){return id(n.element())},setValue:function(n,e){id(n.element())!==e&&ud(n.element(),e)}},onSetValue:n.onSetValue})]))}function ad(n,e){var t=js(pm.sketch({inputAttributes:{placeholder:bm.translate(e)},onSetValue:function(n,e){G(n,Me())},inputBehaviours:Bo([lm.config({find:Fn.some}),ym.config({}),Va.config({mode:"execution"})]),selectOnFocus:!1})),r=js(Ls.sketch({dom:Us('<button class="${prefix}-input-container-x ${prefix}-icon-cancel-circle ${prefix}-icon"></button>'),action:function(n){var e=t.get(n);fl.setValue(e,"")}}));return{name:n,spec:dm.sketch({dom:Us('<div class="${prefix}-input-container"></div>'),components:[t.asSpec(),r.asSpec()],containerBehaviours:Bo([Fi.config({toggleClass:_i.resolve("input-container-empty")}),lm.config({find:function(n){return Fn.some(t.get(n))}}),am("input-clearing",[_r(Me(),function(n){var e=t.get(n);(0<fl.getValue(e).length?Fi.off:Fi.on)(n)})])])})}}function fd(n,e,t){e.disabled&&wm(n,e)}function sd(n,e){return!0===e.useNative&&k(xm,q(n.element()))}function ld(n){Kr(n.element(),"disabled","disabled")}function dd(n){no(n.element(),"disabled")}function md(n){Kr(n.element(),"aria-disabled","true")}function gd(n){Kr(n.element(),"aria-disabled","false")}function pd(e,n,t){n.disableClass.each(function(n){co(e.element(),n)}),(sd(e,n)?dd:gd)(e),n.onEnabled(e)}function hd(n,e){return sd(n,e)?function(n){return Zr(n.element(),"disabled")}(n):function(n){return"true"===Qr(n.element(),"aria-disabled")}(n)}function vd(n){return"<alloy.field."+n+">"}function yd(){function e(){t.get().each(function(n){n.destroy()})}var t=Pn(Fn.none());return{clear:function(){e(),t.set(Fn.none())},isSet:function(){return t.get().isSome()},set:function(n){e(),t.set(Fn.some(n))},run:function(n){t.get().each(n)}}}function bd(){var e=Pn(Fn.none());return{clear:function(){e.set(Fn.none())},set:function(n){e.set(Fn.some(n))},isSet:function(){return e.get().isSome()},on:function(n){e.get().each(n)}}}function xd(n){function r(e,n,t){return Ls.sketch({dom:Us('<span class="${prefix}-icon-'+n+' ${prefix}-icon"></span>'),action:function(n){U(n,u,{direction:e})},buttonBehaviours:Bo([km.config({disableClass:_i.resolve("toolbar-navigation-disabled"),disabled:!t})])})}function o(n,o){var i=Yi(n.element(),"."+_i.resolve("serialised-dialog-screen"));Qi(n.element(),"."+_i.resolve("serialised-dialog-chain")).each(function(r){0<=c.state.currentScreen.get()+o&&c.state.currentScreen.get()+o<i.length&&(gi(r,"left").each(function(n){var e=parseInt(n,10),t=Mf(i[0]);Gi(r,"left",e-o*t+"px")}),c.state.currentScreen.set(c.state.currentScreen.get()+o))})}function i(e){var n=Yi(e.element(),"input");Fn.from(n[c.state.currentScreen.get()]).each(function(n){e.getSystem().getByDom(n).each(function(n){!function(n,e){n.getSystem().triggerFocus(e,n.element())}(e,n.element())})});var t=f.get(e);Cu.highlightAt(t,c.state.currentScreen.get())}var u="navigateEvent",e=Sr([Yt("fields"),tr("maxFieldIndex",n.fields.length-1),Yt("onExecute"),Yt("getInitialValue"),or("state",function(){return{dialogSwipeState:bd(),currentScreen:Pn(0)}})]),c=Xt("SerialisedDialog",e,n),a=js(Dm(function(t){return{dom:Us('<div class="${prefix}-serialised-dialog"></div>'),components:[dm.sketch({dom:Us('<div class="${prefix}-serialised-dialog-chain" style="left: 0px; position: absolute;"></div>'),components:de(c.fields,function(n,e){return e<=c.maxFieldIndex?dm.sketch({dom:Us('<div class="${prefix}-serialised-dialog-screen"></div>'),components:[r(-1,"previous",0<e),t.field(n.name,n.spec),r(1,"next",e<c.maxFieldIndex)]}):t.field(n.name,n.spec)})})],formBehaviours:Bo([Vi(function(n,e){!function(n,e){Qi(n.element(),"."+_i.resolve("serialised-dialog-chain")).each(function(n){Gi(n,"left",-c.state.currentScreen.get()*e.width+"px")})}(n,e)}),Va.config({mode:"special",focusIn:function(n){i(n)},onTab:function(n){return o(n,1),Fn.some(!0)},onShiftTab:function(n){return o(n,-1),Fn.some(!0)}}),am("form-events",[Eo(function(e,n){c.state.currentScreen.set(0),c.state.dialogSwipeState.clear();var t=f.get(e);Cu.highlightFirst(t),c.getInitialValue(e).each(function(n){fl.setValue(e,n)})}),Mo(c.onExecute),_r(Ae(),function(n,e){"left"===e.event().raw().propertyName&&i(n)}),_r(u,function(n,e){var t=e.event().direction();o(n,t)})])])}})),f=js({dom:Us('<div class="${prefix}-dot-container"></div>'),behaviours:Bo([Cu.config({highlightClass:_i.resolve("dot-active"),itemClass:_i.resolve("dot-item")})]),components:B(c.fields,function(n,e){return e<=c.maxFieldIndex?[bf('<div class="${prefix}-dot-item ${prefix}-icon-full-dot ${prefix}-icon"></div>')]:[]})});return{dom:Us('<div class="${prefix}-serializer-wrapper"></div>'),components:[a.asSpec(),f.asSpec()],behaviours:Bo([Va.config({mode:"special",focusIn:function(n){var e=a.get(n);Va.focusIn(e)}}),am("serializer-wrapper-events",[_r(xe(),function(n,e){var t=e.event();c.state.dialogSwipeState.set(Mm(t.raw().touches[0].clientX))}),_r(we(),function(n,e){var t=e.event();c.state.dialogSwipeState.on(function(n){e.event().prevent(),c.state.dialogSwipeState.set(Im(n,t.raw().touches[0].clientX))})}),_r(Se(),function(r){c.state.dialogSwipeState.on(function(n){var e=a.get(r),t=-1*Rm(n);o(e,t)})})])])}}function wd(e){function n(n){return function(){throw new Error("The component must be in a context to send: "+n+"\n"+bo(e().element())+" is not in context.")}}return{debugInfo:b("fake"),triggerEvent:n("triggerEvent"),triggerFocus:n("triggerFocus"),triggerEscape:n("triggerEscape"),build:n("build"),addToWorld:n("addToWorld"),removeFromWorld:n("removeFromWorld"),addToGui:n("addToGui"),removeFromGui:n("removeFromGui"),getByUid:n("getByUid"),getByDom:n("getByDom"),broadcast:n("broadcast"),broadcastOn:n("broadcastOn"),broadcastEvent:n("broadcastEvent"),isConnected:b(!1)}}function Sd(n,o){var i={};return Nn(n,function(n,r){Nn(n,function(n,e){var t=kn(e,[])(i);i[e]=t.concat([o(r,n)])})}),i}function Td(n){return n.cHandler}function Od(n,e){return{name:b(n),handler:b(e)}}function kd(n,e,t){var r=x(x({},t),function(n,e){var t={};return C(n,function(n){t[n.name()]=n.handlers(e)}),t}(e,n));return Sd(r,Od)}function Ed(n){var i=function(n){return ce(n)?{can:b(!0),abort:b(!1),run:n}:n}(n);return function(n,e){for(var t=[],r=2;r<arguments.length;r++)t[r-2]=arguments[r];var o=[n,e].concat(t);i.abort.apply(undefined,o)?e.stop():i.can.apply(undefined,o)&&i.run.apply(undefined,o)}}function Cd(n,e,t){var r=e[t];return r?function(u,c,n,a){var e=n.slice(0);try{var t=e.sort(function(n,e){var t=n[c](),r=e[c](),o=a.indexOf(t),i=a.indexOf(r);if(-1===o)throw new Error("The ordering for "+u+" does not have an entry for "+t+".\nOrder specified: "+JSON.stringify(a,null,2));if(-1===i)throw new Error("The ordering for "+u+" does not have an entry for "+r+".\nOrder specified: "+JSON.stringify(a,null,2));return o<i?-1:i<o?1:0});return vt.value(t)}catch(r){return vt.error([r])}}("Event: "+t,"name",n,r).map(function(n){var e=de(n,function(n){return n.handler()});return Vr(e)}):function(n,e){return vt.error(["The event ("+n+') has more than one behaviour that listens to it.\nWhen this occurs, you must specify an event ordering for the behaviours in your spec (e.g. [ "listing", "toggling" ]).\nThe behaviours that can trigger it are: '+JSON.stringify(de(e,function(n){return n.name()}),null,2)])}(t,n)}function Dd(n){return $t("custom.definition",Sr([kr("dom","dom",Tt(),Sr([Yt("tag"),tr("styles",{}),tr("classes",[]),tr("attributes",{}),Qt("value"),Qt("innerHtml")])),Yt("components"),Yt("uid"),tr("events",{}),tr("apis",{}),kr("eventOrder","eventOrder",function(n){return St.mergeWithThunk(b(n))}({"alloy.execute":["disabling","alloy.base.behaviour","toggling","typeaheadevents"],"alloy.focus":["alloy.base.behaviour","focusing","keying"],"alloy.system.init":["alloy.base.behaviour","disabling","toggling","representing"],input:["alloy.base.behaviour","representing","streaming","invalidating"],"alloy.system.detached":["alloy.base.behaviour","representing","item-events","tooltipping"],mousedown:["focusing","alloy.base.behaviour","item-type-events"],touchstart:["focusing","alloy.base.behaviour","item-type-events"],mouseover:["item-type-events","tooltipping"]}),Dr()),Qt("domModification")]),n)}function Md(e,n){C(n,function(n){io(e,n)})}function Id(e,n){C(n,function(n){co(e,n)})}function Rd(n,e){return function(e,n){var t=de(n,function(n){return nr(n.name(),[Yt("config"),tr("state",Ao)])}),r=$t("component.behaviours",Sr(t),e.behaviours).fold(function(n){throw new Error(Cr(n)+"\nComplete spec:\n"+JSON.stringify(e,null,2))},function(n){return n});return{list:n,data:S(r,function(n){var e=n.map(function(n){return{config:n.config,state:n.state.init(n.config)}});return function(){return e}})}}(n,e)}function Ad(n){var e=function(n){var e=kn("behaviours",{})(n),t=D(Bn(e),function(n){return e[n]!==undefined});return de(t,function(n){return e[n].me})}(n);return Rd(n,e)}function Fd(n,e,t){var r=function(n){return x(x({},n.dom),{uid:n.uid,domChildren:de(n.components,function(n){return n.element()})})}(n),o=function(n){return n.domModification.fold(function(){return Ur({})},Ur)}(n),i={"alloy.base.modification":o};return function(n,e){return x(x({},n),{attributes:x(x({},n.attributes),e.attributes),styles:x(x({},n.styles),e.styles),classes:n.classes.concat(e.classes)})}(r,0<e.length?function(e,n,t,r){var o=x({},n);C(t,function(n){o[n.name()]=n.exhibit(e,r)});function i(n){return M(n,function(n,e){return x(x({},e.modification),n)},{})}var u=Sd(o,function(n,e){return{name:n,modification:e}}),c=M(u.classes,function(n,e){return e.modification.concat(n)},[]),a=i(u.attributes),f=i(u.styles);return Ur({classes:c,attributes:a,styles:f})}(t,i,e,r):o)}function Bd(n,e,t){var r={"alloy.base.behaviour":function(n){return n.events}(n)};return function(n,e,t,r){var o=kd(n,t,r);return Pm(o,e)}(t,n.eventOrder,e,r).getOrDie()}function Vd(t){function n(){return s}var r=Pn(jm),e=Wt(Dd(t)),o=Ad(t),i=function(n){return n.list}(o),u=function(n){return n.data}(o),c=function(n){var e=Je.fromTag(n.tag);Jr(e,n.attributes),Md(e,n.classes),di(e,n.styles),n.innerHtml.each(function(n){return ho(e,n)});var t=n.domChildren;return gn(e,t),n.value.each(function(n){ud(e,n)}),n.uid,mf(e,n.uid),e}(Fd(e,i,u)),a=Bd(e,i,u),f=Pn(e.components),s={getSystem:r.get,config:function(n){var e=u;return(ce(e[n.name()])?e[n.name()]:function(){throw new Error("Could not find "+n.name()+" in "+JSON.stringify(t,null,2))})()},hasConfigured:function(n){return ce(u[n.name()])},spec:b(t),readState:function(n){return u[n]().map(function(n){return n.state.readState()}).getOr("not enabled")},getApis:function(){return e.apis},connect:function(n){r.set(n)},disconnect:function(){r.set(wd(n))},element:b(c),syncComponents:function(){var n=at(c),e=B(n,function(n){return r.get().getByDom(n).fold(function(){return[]},function(n){return[n]})});f.set(e)},components:f.get,events:b(a)};return s}function Nd(n){var e=Nm(n),t=e.events,r=u(e,["events"]),o=function(n){var e=kn("components",[])(n);return de(e,Lm)}(r),i=x(x({},r),{events:x(x({},Vm),t),components:o});return vt.value(Vd(i))}function jd(n){var e=Je.fromText(n);return Hm({element:e})}function _d(n){(go(n.element()).isNone()||Li.isFocused(n))&&(Li.isFocused(n)||Li.focus(n),U(n,Um,{item:n}))}function Pd(n){U(n,$m,{item:n})}function Hd(n,e,t,r){var o=n.getSystem().build(r);mt(n,o,t)}function zd(n,e,t,r){var o=rg(n);R(o,function(n){return cn(r.element(),n.element())}).each(yn)}function Ld(e,n,t,r,o){var i=rg(e);return Fn.from(i[r]).map(function(n){return zd(e,0,0,n),o.each(function(n){Hd(e,0,function(n,e){!function(n,e,t){sn(n,t).fold(function(){ft(n,e)},function(n){ln(n,e)})}(n,e,r)},n)}),n})}function Gd(n,e){var t={};Nn(n,function(n,e){C(n,function(n){t[n]=e})});var r=e,o=function(n){return jn(n,function(n,e){return{k:n,v:e}})}(e),i=S(o,function(n,e){return[e].concat(ig(t,r,o,e))});return S(t,function(n){return Dt(i,n).getOr([n])})}function Ud(n,e,t,r){return Dt(e.routes,r.start).bind(function(n){return Dt(n,r.destination)})}function $d(t,r,n){(function(e,t,r){return lg(e,t).bind(function(n){return sg(e,t,r,n)})})(t,r,n).each(function(n){var e=n.transition;co(t.element(),e.transitionClass),no(t.element(),r.destinationAttr)})}function Wd(n,e,t,r){$d(n,e,t),Zr(n.element(),e.stateAttr)&&Qr(n.element(),e.stateAttr)!==r&&e.onFinish(n,r),Kr(n.element(),e.stateAttr,r)}function Xd(n){return Dt(n,"format").getOr(n.title)}function qd(n){return Mn(n,"items")?function(n){var e=xt(On(n,["items"]),{menu:!0}),t=wg(n.items);return{item:e,menus:xt(t.menus,En(n.title,t.items)),expansions:xt(t.expansions,En(n.title,n.title))}}(n):{item:n,menus:{},expansions:{}}}function Yd(n){var e=n.replace(/\|/g," ").trim();return 0<e.length?e.split(/\s+/):[]}function Kd(n){var e=n.toolbar!==undefined?n.toolbar:kg;return ie(e)?Eg(e):Yd(e)}function Jd(n){function e(){n.stopPropagation()}function t(){n.preventDefault()}var r=Je.fromDom(n.target),o=i(t,e);return function(n,e,t,r,o,i,u){return{target:b(n),x:b(e),y:b(t),stop:r,prevent:o,kill:i,raw:b(u)}}(r,n.clientX,n.clientY,e,t,o,n)}function Qd(n,e,t,r,o){var i=function(e,t){return function(n){e(n)&&t(Jd(n))}}(t,r);return n.dom().addEventListener(e,i,o),{unbind:d(Mg,n,e,i,o)}}function Zd(n,e,t){return function(n,e,t,r){return Qd(n,e,t,r,!1)}(n,e,Ig,t)}function nm(n,e,t){return function(n,e,t,r){return Qd(n,e,t,r,!0)}(n,e,Ig,t)}function em(n){var e=n.matchMedia("(orientation: portrait)").matches;return{isPortrait:b(e)}}var tm,rm,om=function(n){var e=Je.fromDom(n.selection.getStart());return Zi(e,"a")},im={getInfo:function(n){return om(n).fold(function(){return function(n){return{url:"",text:n.selection.getContent({format:"text"}),title:"",target:"",link:Fn.none()}}(n)},function(n){return function(n){var e=nd(n),t=Qr(n,"href"),r=Qr(n,"title"),o=Qr(n,"target");return{url:td(t),text:e!==t?td(e):"",title:td(r),target:td(o),link:Fn.some(n)}}(n)})},applyInfo:function(e,o){o.url.toOption().filter(ed).fold(function(){!function(e,n){n.link.bind(y).each(function(n){e.execCommand("unlink")})}(e,o)},function(t){var r=function(n,e){var t={};return t.href=n,e.title.toOption().filter(ed).each(function(n){t.title=n}),e.target.toOption().filter(ed).each(function(n){t.target=n}),t}(t,o);o.link.bind(y).fold(function(){var n=o.text.toOption().filter(ed).getOr(t);e.insertContent(e.dom.createHTML("a",r,e.dom.encode(n)))},function(e){var n=rd(e,t,o);Jr(e,r),n.each(function(n){!function(n,e){n.dom().textContent=e}(e,n)})})})},query:om},um=L(),cm=function(n,e){(um.os.isAndroid()?od:t)(e,n)},am=function(n,e){return{key:n,value:{config:{},me:function(n,e){var t=Nr(e);return qr({fields:[Yt("enabled")],name:n,active:{events:b(t)}})}(n,e),configAsRaw:b({}),initialConfig:{},state:Ao}}},fm=/* */Object.freeze({getCurrent:function(n,e,t){return e.find(n)}}),sm=[Yt("find")],lm=qr({fields:sm,name:"composing",apis:fm}),dm=hf({name:"Container",factory:function(n){var e=n.dom,t=e.attributes,r=u(e,["attributes"]);return{uid:n.uid,dom:x({tag:"div",attributes:x({role:"presentation"},t)},r),components:n.components,behaviours:gc(n.containerBehaviours),events:n.events,domModification:n.domModification,eventOrder:n.eventOrder}},configFields:[tr("components",[]),mc("containerBehaviours",[]),tr("events",{}),tr("domModification",{}),tr("eventOrder",{})]}),mm=hf({name:"DataField",factory:function(t){return{uid:t.uid,dom:t.dom,behaviours:ja(t.dataBehaviours,[fl.config({store:{mode:"memory",initialValue:t.getInitialValue()}}),lm.config({find:Fn.some})]),events:Nr([Eo(function(n,e){fl.setValue(n,t.getInitialValue())})])}},configFields:[Yt("uid"),Yt("dom"),Yt("getInitialValue"),Na("dataBehaviours",[fl,lm])]}),gm=b([Qt("data"),tr("inputAttributes",{}),tr("inputStyles",{}),tr("tag","input"),tr("inputClasses",[]),Ko("onSetValue"),tr("styles",{}),tr("eventOrder",{}),mc("inputBehaviours",[fl,Li]),tr("selectOnFocus",!0)]),pm=hf({name:"Input",configFields:gm(),factory:function(n,e){return{uid:n.uid,dom:function(n){return{tag:n.tag,attributes:x({type:"text"},n.inputAttributes),styles:n.inputStyles,classes:n.inputClasses}}(n),components:[],behaviours:cd(n),eventOrder:n.eventOrder}}}),hm=/* */Object.freeze({exhibit:function(n,e){return Ur({attributes:Cn([{key:e.tabAttr,value:"true"}])})}}),vm=[tr("tabAttr","data-alloy-tabstop")],ym=qr({fields:vm,name:"tabstopping",active:hm}),bm=tinymce.util.Tools.resolve("tinymce.util.I18n"),xm=["input","button","textarea","select"],wm=function(e,n,t){n.disableClass.each(function(n){io(e.element(),n)}),(sd(e,n)?ld:md)(e),n.onDisabled(e)},Sm=/* */Object.freeze({enable:pd,disable:wm,isDisabled:hd,onLoad:fd,set:function(n,e,t,r){(r?wm:pd)(n,e,t)}}),Tm=/* */Object.freeze({exhibit:function(n,e,t){return Ur({classes:e.disabled?e.disableClass.map(_).getOr([]):[]})},events:function(t,n){return Nr([jr(Pe(),function(n,e){return hd(n,t)}),$r(t,n,fd)])}}),Om=[tr("disabled",!1),tr("useNative",!0),Qt("disableClass"),Ko("onDisabled"),Ko("onEnabled")],km=qr({fields:Om,name:"disabling",active:Tm,apis:Sm}),Em=[mc("formBehaviours",[fl])],Cm=function(r,n,e){return{uid:r.uid,dom:r.dom,components:n,behaviours:pc(r.formBehaviours,[fl.config({store:{mode:"manual",getValue:function(n){var e=function(n,e){var t=n.getSystem();return S(e.partUids,function(n,e){return b(t.getByUid(n))})}(n,r);return S(e,function(n,e){return n().bind(function(n){return function(n,e){return n.fold(function(){return vt.error(e)},vt.value)}(lm.getCurrent(n),"missing current")}).map(fl.getValue)})},setValue:function(t,n){Nn(n,function(e,n){kc(t,r,n).each(function(n){lm.getCurrent(n).each(function(n){fl.setValue(n,e)})})})}}})]),apis:{getField:function(n,e){return kc(n,r,e).bind(lm.getCurrent)}}}},Dm=(Ic(function(n,e,t){return n.getField(e,t)}),function(n){var t,e=(t=[],{field:function(n,e){return t.push(n),function(n,e,t){return{uiType:Ga(),owner:n,name:e,config:t,validated:{}}}("form",vd(n),e)},record:function(){return t}}),r=n(e),o=e.record(),i=de(o,function(n){return tf({name:n,pname:vd(n)})});return Fc("form",Em,i,Cm,r)}),Mm=function(n){return{xValue:n,points:[]}},Im=function(n,e){if(e===n.xValue)return n;var t=0<e-n.xValue?1:-1,r={direction:t,xValue:e};return{xValue:e,points:(0===n.points.length?[]:n.points[n.points.length-1].direction===t?n.points.slice(0,n.points.length-1):n.points).concat([r])}},Rm=function(n){if(0===n.points.length)return 0;var e=n.points[0].direction,t=n.points[n.points.length-1].direction;return-1===e&&-1===t?-1:1===e&&1===t?1:0},Am=X(function(t,r){return[{label:"the link group",items:[xd({fields:[ad("url","Type or paste URL"),ad("text","Link text"),ad("title","Link title"),ad("target","Link target"),function(n){return{name:n,spec:mm.sketch({dom:{tag:"span",styles:{display:"none"}},getInitialValue:function(){return Fn.none()}})}}("link")],maxFieldIndex:["url","text","title","target"].length-1,getInitialValue:function(){return Fn.some(im.getInfo(r))},onExecute:function(n){var e=fl.getValue(n);im.applyInfo(r,e),t.restoreToolbar(),r.focus()}})]}]}),Fm=[{title:"Headings",items:[{title:"Heading 1",format:"h1"},{title:"Heading 2",format:"h2"},{title:"Heading 3",format:"h3"},{title:"Heading 4",format:"h4"},{title:"Heading 5",format:"h5"},{title:"Heading 6",format:"h6"}]},{title:"Inline",items:[{title:"Bold",icon:"bold",format:"bold"},{title:"Italic",icon:"italic",format:"italic"},{title:"Underline",icon:"underline",format:"underline"},{title:"Strikethrough",icon:"strikethrough",format:"strikethrough"},{title:"Superscript",icon:"superscript",format:"superscript"},{title:"Subscript",icon:"subscript",format:"subscript"},{title:"Code",icon:"code",format:"code"}]},{title:"Blocks",items:[{title:"Paragraph",format:"p"},{title:"Blockquote",format:"blockquote"},{title:"Div",format:"div"},{title:"Pre",format:"pre"}]},{title:"Alignment",items:[{title:"Left",icon:"alignleft",format:"alignleft"},{title:"Center",icon:"aligncenter",format:"aligncenter"},{title:"Right",icon:"alignright",format:"alignright"},{title:"Justify",icon:"alignjustify",format:"alignjustify"}]}],Bm=Nr([(tm=Ve(),rm=function(n,e){var t=e.event().originator(),r=e.event().target();return!function(n,e,t){return cn(e,n.element())&&!cn(e,t)}(n,t,r)||(l.console.warn(Ve()+" did not get interpreted by the desired target. \nOriginator: "+bo(t)+"\nTarget: "+bo(r)+"\nCheck the "+Ve()+" event handlers"),!1)},{key:tm,value:Br({can:rm})})]),Vm=/* */Object.freeze({events:Bm}),Nm=y,jm=wd(),_m=function(n,e){return function(n,e){return{cHandler:n,purpose:b(e)}}(d.apply(undefined,[n.handler].concat(e)),n.purpose())},Pm=function(n,i){var e=_n(n,function(r,o){return(1===r.length?vt.value(r[0].handler()):Cd(r,i,o)).map(function(n){var e=Ed(n),t=1<r.length?D(i[o],function(e){return E(r,function(n){return n.name()===e})}).join(" > "):r[0].name();return En(o,function(n,e){return{handler:n,purpose:b(e)}}(e,t))})});return Dn(e,{})},Hm=function(n){var e=Xt("external.component",Pt([Yt("element"),Qt("uid")]),n),t=Pn(wd());e.uid.each(function(n){mf(e.element,n)});var r={getSystem:t.get,config:Fn.none,hasConfigured:b(!1),connect:function(n){t.set(n)},disconnect:function(){t.set(wd(function(){return r}))},getApis:function(){return{}},element:b(e.element),spec:b(n),readState:b("No state"),syncComponents:w,components:b([]),events:b({})};return Mc(r)},zm=Rc,Lm=function(e){return function(n){return Dt(n,af)}(e).fold(function(){var n=e.hasOwnProperty("uid")?e:x({uid:zm("")},e);return Nd(n).getOrDie()},function(n){return n})},Gm=Mc,Um="alloy.item-hover",$m="alloy.item-focus",Wm=b(Um),Xm=b($m),qm=[Yt("data"),Yt("components"),Yt("dom"),tr("hasSubmenu",!1),Qt("toggling"),Na("itemBehaviours",[Fi,Li,Va,fl]),tr("ignoreFocus",!1),tr("domModification",{}),ni("builder",function(n){return{dom:n.dom,domModification:x(x({},n.domModification),{attributes:x(x(x({role:n.toggling.isSome()?"menuitemcheckbox":"menuitem"},n.domModification.attributes),{"aria-haspopup":n.hasSubmenu}),n.hasSubmenu?{"aria-expanded":!1}:{})}),behaviours:ja(n.itemBehaviours,[n.toggling.fold(Fi.revoke,function(n){return Fi.config(x({aria:{mode:"checked"}},n))}),Li.config({ignore:n.ignoreFocus,stopMousedown:n.ignoreFocus,onFocus:function(n){Pd(n)}}),Va.config({mode:"execution"}),fl.config({store:{mode:"memory",initialValue:n.data}}),am("item-type-events",function a(){for(var n=0,e=0,t=arguments.length;e<t;e++)n+=arguments[e].length;var r=Array(n),o=0;for(e=0;e<t;e++)for(var i=arguments[e],u=0,c=i.length;u<c;u++,o++)r[o]=i[u];return r}(ai(),[_r(Ee(),_d),_r(He(),Li.focus)]))]),components:n.components,eventOrder:n.eventOrder}}),tr("eventOrder",{})],Ym=[Yt("dom"),Yt("components"),ni("builder",function(n){return{dom:n.dom,components:n.components,events:Nr([function(n){return _r(n,function(n,e){e.stop()})}(He())])}})],Km=b([tf({name:"widget",overrides:function(e){return{behaviours:Bo([fl.config({store:{mode:"manual",getValue:function(n){return e.data},setValue:function(){}}})])}}})]),Jm=[Yt("uid"),Yt("data"),Yt("components"),Yt("dom"),tr("autofocus",!1),tr("ignoreFocus",!1),Na("widgetBehaviours",[fl,Li,Va]),tr("domModification",{}),Dc(Km()),ni("builder",function(t){function r(n){return kc(n,t,"widget").map(function(n){return Va.focusIn(n),n})}function n(n,e){return Iu(e.event().target())||t.autofocus&&e.setSource(n.element()),Fn.none()}var e=Tc(0,t,Km()),o=Oc("item-widget",t,e.internals());return{dom:t.dom,components:o,domModification:t.domModification,events:Nr([Mo(function(n,e){r(n).each(function(n){e.stop()})}),_r(Ee(),_d),_r(He(),function(n,e){t.autofocus?r(n):Li.focus(n)})]),behaviours:ja(t.widgetBehaviours,[fl.config({store:{mode:"memory",initialValue:t.data}}),Li.config({ignore:t.ignoreFocus,onFocus:function(n){Pd(n)}}),Va.config({mode:"special",focusIn:t.autofocus?function(n){r(n)}:jo(),onLeft:n,onRight:n,onEscape:function(n,e){return Li.isFocused(n)||t.autofocus?(t.autofocus&&e.setSource(n.element()),Fn.none()):(Li.focus(n),Fn.some(!0))}})])}})],Qm=qt("type",{widget:Jm,item:qm,separator:Ym}),Zm=b([of({factory:{sketch:function(n){var e=Xt("menu.spec item",Qm,n);return e.builder(e)}},name:"items",unit:"item",defaults:function(n,e){return e.hasOwnProperty("uid")?e:x(x({},e),{uid:Rc("item")})},overrides:function(n,e){return{type:e.type,ignoreFocus:n.fakeFocus,domModification:{classes:[n.markers.item]}}}})]),ng=b([Yt("value"),Yt("items"),Yt("dom"),Yt("components"),tr("eventOrder",{}),mc("menuBehaviours",[Cu,fl,lm,Va]),rr("movement",{mode:"menu",moveOnTab:!0},qt("mode",{grid:[ki(),ni("config",function(n,e){return{mode:"flatgrid",selector:"."+n.markers.item,initSize:{numColumns:e.initSize.numColumns,numRows:e.initSize.numRows},focusManager:n.focusManager}})],matrix:[ni("config",function(n,e){return{mode:"matrix",selectors:{row:e.rowSelector,cell:"."+n.markers.item},focusManager:n.focusManager}}),Yt("rowSelector")],menu:[tr("moveOnTab",!0),ni("config",function(n,e){return{mode:"menu",selector:"."+n.markers.item,moveOnTab:e.moveOnTab,focusManager:n.focusManager}})]})),Kt("markers",Ti()),tr("fakeFocus",!1),tr("focusManager",pu()),Ko("onHighlight")]),eg=b("alloy.menu-focus"),tg=vf({name:"Menu",configFields:ng(),partFields:Zm(),factory:function(n,e,t,r){return{uid:n.uid,dom:n.dom,markers:n.markers,behaviours:pc(n.menuBehaviours,[Cu.config({highlightClass:n.markers.selectedItem,itemClass:n.markers.item,onHighlight:n.onHighlight}),fl.config({store:{mode:"memory",initialValue:n.value}}),lm.config({find:Fn.some}),Va.config(n.movement.config(n,n.movement))]),events:Nr([_r(Xm(),function(e,t){var n=t.event();e.getSystem().getByDom(n.target()).each(function(n){Cu.highlight(e,n),t.stop(),U(e,eg(),{menu:e,item:n})})}),_r(Wm(),function(n,e){var t=e.event().item();Cu.highlight(n,t)})]),components:e,eventOrder:n.eventOrder,domModification:{attributes:{role:"menu"}}}}}),rg=function(n,e){return n.components()},og=qr({fields:[],name:"replacing",apis:/* */Object.freeze({append:function(n,e,t,r){Hd(n,0,ft,r)},prepend:function(n,e,t,r){Hd(n,0,mn,r)},remove:zd,replaceAt:Ld,replaceBy:function(e,n,t,r,o){var i=rg(e);return A(i,r).bind(function(n){return Ld(e,0,0,n,o)})},set:function(e,n,t,r){!function(n,t){var r=an(t),e=mo(r).bind(function(e){function n(n){return cn(e,n)}return n(t)?Fn.some(t):Fr(t,n)}),o=n(t);e.each(function(e){mo(r).filter(function(n){return cn(n,e)}).fold(function(){so(e)},w)})}(function(){var n=de(r,e.getSystem().build);vn(e,n)},e.element())},contents:rg})}),ig=function(t,r,o,n){return Dt(o,n).bind(function(n){return Dt(t,n).bind(function(n){var e=ig(t,r,o,n);return Fn.some([n].concat(e))})}).getOr([])},ug=function(n){return"prepared"===n.type?Fn.some(n.menu):Fn.none()},cg={init:function(){function o(t){return function(n,e){for(var t=Bn(n),r=0,o=t.length;r<o;r++){var i=t[r],u=n[i];if(e(u,i,n))return Fn.some(u)}return Fn.none()}(i.get(),function(n,e){return n===t})}var i=Pn({}),u=Pn({}),c=Pn({}),a=Pn(Fn.none()),f=Pn({}),s=function(n){return e(n).bind(ug)},e=function(n){return Dt(u.get(),n)},t=function(n){return Dt(i.get(),n)};return{setMenuBuilt:function(n,e){var t;u.set(x(x({},u.get()),((t={})[n]={type:"prepared",menu:e},t)))},setContents:function(n,e,t,r){a.set(Fn.some(n)),i.set(t),u.set(e),f.set(r);var o=Gd(r,t);c.set(o)},expand:function(t){return Dt(i.get(),t).map(function(n){var e=Dt(c.get(),t).getOr([]);return[n].concat(e)})},refresh:function(n){return Dt(c.get(),n)},collapse:function(n){return Dt(c.get(),n).bind(function(n){return 1<n.length?Fn.some(n.slice(1)):Fn.none()})},lookupMenu:e,lookupItem:t,otherMenus:function(n){var e=f.get();return j(Bn(e),n)},getPrimary:function(){return a.get().bind(s)},getMenus:function(){return u.get()},clear:function(){i.set({}),u.set({}),c.set({}),a.set(Fn.none())},isClear:function(){return a.get().isNone()},getTriggeringPath:function(n,r){var e=D(t(n).toArray(),function(n){return s(n).isSome()});return Dt(c.get(),n).bind(function(n){var t=N(e.concat(n));return function(n){for(var e=[],t=0;t<n.length;t++){var r=n[t];if(!r.isSome())return Fn.none();e.push(r.getOrDie())}return Fn.some(e)}(B(t,function(n,e){return function(n,t,r){return s(n).bind(function(e){return o(n).bind(function(n){return t(n).map(function(n){return{triggeredMenu:e,triggeringItem:n,triggeringPath:r}})})})}(n,r,t.slice(0,e+1)).fold(function(){return a.get().is(n)?[]:[Fn.none()]},function(n){return[Fn.some(n)]})}))})}}},extractPreparedMenu:ug},ag=b("collapse-item"),fg=hf({name:"TieredMenu",configFields:[Zo("onExecute"),Zo("onEscape"),Qo("onOpenMenu"),Qo("onOpenSubmenu"),Qo("onRepositionMenu"),Ko("onCollapseMenu"),tr("highlightImmediately",!0),Jt("data",[Yt("primary"),Yt("menus"),Yt("expansions")]),tr("fakeFocus",!1),Ko("onHighlight"),Ko("onHover"),Jt("markers",[Yt("backgroundMenu")].concat(wi()).concat(Si())),Yt("dom"),tr("navigateOnHover",!0),tr("stayInDom",!1),mc("tmenuBehaviours",[Va,Cu,lm,og]),tr("eventOrder",{})],apis:{collapseMenu:function(n,e){n.collapseMenu(e)},highlightPrimary:function(n,e){n.highlightPrimary(e)},repositionMenus:function(n,e){n.repositionMenus(e)}},factory:function(c,n){function r(r,o,n){return S(n,function(n,e){function t(){return tg.sketch(x(x({dom:n.dom},n),{value:e,items:n.items,markers:c.markers,fakeFocus:c.fakeFocus,onHighlight:c.onHighlight,focusManager:c.fakeFocus?function(){function o(n){return Cu.getHighlighted(n).map(function(n){return n.element()})}return{get:o,set:function(e,n){var t=o(e);e.getSystem().getByDom(n).fold(w,function(n){Cu.highlight(e,n)});var r=o(e);gu(e,t,r)}}}():pu()}))}return e===o?{type:"prepared",menu:r.getSystem().build(t())}:{type:"notbuilt",nbMenu:t}})}function a(n){return fl.getValue(n).value}function u(e,n){Cu.highlight(e,n),Cu.getHighlighted(n).orThunk(function(){return Cu.getFirst(n)}).each(function(n){W(e,n.element(),He())})}function f(e,n){return xo(de(n,function(n){return e.lookupMenu(n).bind(function(n){return"prepared"===n.type?Fn.some(n.menu):Fn.none()})}))}function s(e,n,t){var r=f(n,n.otherMenus(t));C(r,function(n){Id(n.element(),[c.markers.backgroundMenu]),c.stayInDom||og.remove(e,n)})}function l(n,r){var e=function(r){return o.get().getOrThunk(function(){var t={},n=Yi(r.element(),"."+c.markers.item),e=D(n,function(n){return"true"===Qr(n,"aria-haspopup")});return C(e,function(n){r.getSystem().getByDom(n).each(function(n){var e=a(n);t[e]=n})}),o.set(Fn.some(t)),t})}(n);Nn(e,function(n,e){var t=k(r,e);Kr(n.element(),"aria-expanded",t)})}function d(r,o,i){return Fn.from(i[0]).bind(function(n){return o.lookupMenu(n).bind(function(n){if("notbuilt"===n.type)return Fn.none();var e=n.menu,t=f(o,i.slice(1));return C(t,function(n){io(n.element(),c.markers.backgroundMenu)}),K(e.element())||og.append(r,Gm(e)),Id(e.element(),[c.markers.backgroundMenu]),u(r,e),s(r,o,i),Fn.some(e)})})}var m,e,o=Pn(Fn.none()),g=cg.init(),i=function(n){return S(c.data.menus,function(n,e){return B(n.items,function(n){return"separator"===n.type?[]:[n.data.value]})})};(e=m=m||{})[e.HighlightSubmenu=0]="HighlightSubmenu",e[e.HighlightParent=1]="HighlightParent";function p(o,i,u){void 0===u&&(u=m.HighlightSubmenu);var n=a(i);return g.expand(n).bind(function(r){return l(o,r),Fn.from(r[0]).bind(function(t){return g.lookupMenu(t).bind(function(n){var e=function(n,e,t){if("notbuilt"!==t.type)return t.menu;var r=n.getSystem().build(t.nbMenu());return g.setMenuBuilt(e,r),r}(o,t,n);return K(e.element())||og.append(o,Gm(e)),c.onOpenSubmenu(o,i,e,N(r)),u===m.HighlightSubmenu?(Cu.highlightFirst(e),d(o,g,r)):(Cu.dehighlightAll(e),Fn.some(i))})})})}function h(e,t){var n=a(t);return g.collapse(n).bind(function(n){return l(e,n),d(e,g,n).map(function(n){return c.onCollapseMenu(e,t,n),n})})}function t(t){return function(e,n){return Zi(n.getSource(),"."+c.markers.item).bind(function(n){return e.getSystem().getByDom(n).toOption().bind(function(n){return t(e,n).map(function(){return!0})})})}}function v(n){return Cu.getHighlighted(n).bind(Cu.getHighlighted)}var y=Nr([_r(eg(),function(t,r){var n=r.event().item();g.lookupItem(a(n)).each(function(){var n=r.event().menu();Cu.highlight(t,n);var e=a(r.event().item());g.refresh(e).each(function(n){return s(t,g,n)})})}),Mo(function(e,n){var t=n.event().target();e.getSystem().getByDom(t).each(function(n){0===a(n).indexOf("collapse-item")&&h(e,n),p(e,n,m.HighlightSubmenu).fold(function(){c.onExecute(e,n)},function(){})})}),Eo(function(e,n){(function(n){var e=r(n,c.data.primary,c.data.menus),t=i();return g.setContents(c.data.primary,e,c.data.expansions,t),g.getPrimary()})(e).each(function(n){og.append(e,Gm(n)),c.onOpenMenu(e,n),c.highlightImmediately&&u(e,n)})})].concat(c.navigateOnHover?[_r(Wm(),function(n,e){var t=e.event().item();!function(e,n){var t=a(n);g.refresh(t).bind(function(n){return l(e,n),d(e,g,n)})}(n,t),p(n,t,m.HighlightParent),c.onHover(n,t)})]:[])),b={collapseMenu:function(e){v(e).each(function(n){h(e,n)})},highlightPrimary:function(e){g.getPrimary().each(function(n){u(e,n)})},repositionMenus:function(r){g.getPrimary().bind(function(e){return v(r).bind(function(n){var e=a(n),t=function(n){return _n(n,function(n){return n})}(g.getMenus()),r=xo(de(t,cg.extractPreparedMenu));return g.getTriggeringPath(e,function(n){return function(n,e,t){return wo(e,function(n){if(!n.getSystem().isConnected())return Fn.none();var e=Cu.getCandidates(n);return R(e,function(n){return a(n)===t})})}(0,r,n)})}).map(function(n){return{primary:e,triggeringPath:n}})}).fold(function(){(function(n){return Fn.from(n.components()[0]).filter(function(n){return"menu"===Qr(n.element(),"role")})})(r).each(function(n){c.onRepositionMenu(r,n,[])})},function(n){var e=n.primary,t=n.triggeringPath;c.onRepositionMenu(r,e,t)})}};return{uid:c.uid,dom:c.dom,markers:c.markers,behaviours:pc(c.tmenuBehaviours,[Va.config({mode:"special",onRight:t(function(n,e){return Iu(e.element())?Fn.none():p(n,e,m.HighlightSubmenu)}),onLeft:t(function(n,e){return Iu(e.element())?Fn.none():h(n,e)}),onEscape:t(function(n,e){return h(n,e).orThunk(function(){return c.onEscape(n,e).map(function(){return n})})}),focusIn:function(e,n){g.getPrimary().each(function(n){W(e,n.element(),He())})}}),Cu.config({highlightClass:c.markers.selectedMenu,itemClass:c.markers.menu}),lm.config({find:function(n){return Cu.getHighlighted(n)}}),og.config({})]),eventOrder:c.eventOrder,apis:b,events:y}},extraApis:{tieredData:function(n,e,t){return{primary:n,menus:e,expansions:t}},singleData:function(n,e){return{primary:n,menus:En(n,e),expansions:{}}},collapseItem:function(n){return{value:yc(ag()),meta:{text:n}}}}}),sg=function(n,e,t,r){return Ud(0,e,0,r).bind(function(e){return e.transition.map(function(n){return{transition:n,route:e}})})},lg=function(n,e,t){var r=n.element();return Zr(r,e.destinationAttr)?Fn.some({start:Qr(n.element(),e.stateAttr),destination:Qr(n.element(),e.destinationAttr)}):Fn.none()},dg=/* */Object.freeze({findRoute:Ud,disableTransition:$d,getCurrentRoute:lg,jumpTo:Wd,progressTo:function(t,r,o,i){!function(n,e){Zr(n.element(),e.destinationAttr)&&(Kr(n.element(),e.stateAttr,Qr(n.element(),e.destinationAttr)),no(n.element(),e.destinationAttr))}(t,r);var n=function(n,e,t,r){return{start:Qr(n.element(),e.stateAttr),destination:r}}(t,r,0,i);sg(t,r,o,n).fold(function(){Wd(t,r,o,i)},function(n){$d(t,r,o);var e=n.transition;io(t.element(),e.transitionClass),Kr(t.element(),r.destinationAttr,i)})},getState:function(n,e,t){var r=n.element();return Zr(r,e.stateAttr)?Fn.some(Qr(r,e.stateAttr)):Fn.none()}}),mg=/* */Object.freeze({events:function(o,i){return Nr([_r(Ae(),function(t,n){var r=n.event().raw();lg(t,o).each(function(e){Ud(0,o,0,e).each(function(n){n.transition.each(function(n){r.propertyName===n.property&&(Wd(t,o,i,e.destination),o.onTransition(t,e))})})})}),Eo(function(n,e){Wd(n,o,i,o.initialState)})])}}),gg=[tr("destinationAttr","data-transitioning-destination"),tr("stateAttr","data-transitioning-state"),Yt("initialState"),Ko("onTransition"),Ko("onFinish"),Kt("routes",Ut(vt.value,Ut(vt.value,Pt([er("transition",[Yt("property"),Yt("transitionClass")])]))))],pg=qr({fields:gg,name:"transitioning",active:mg,apis:dg,extra:{createRoutes:function(n){var r={};return Nn(n,function(n,e){var t=e.split("<->");r[t[0]]=En(t[1],n),r[t[1]]=En(t[0],n)}),r},createBistate:function(n,e,t){return Cn([{key:n,value:En(e,t)},{key:e,value:En(n,t)}])},createTristate:function(n,e,t,r){return Cn([{key:n,value:Cn([{key:e,value:r},{key:t,value:r}])},{key:e,value:Cn([{key:n,value:r},{key:t,value:r}])},{key:t,value:Cn([{key:n,value:r},{key:e,value:r}])}])}}}),hg=_i.resolve("scrollable"),vg={register:function(n){io(n,hg)},deregister:function(n){co(n,hg)},scrollable:b(hg)},yg=function(n,e,t,r,o){return{data:{value:n,text:e},type:"item",dom:{tag:"div",classes:o?[_i.resolve("styles-item-is-menu")]:[]},toggling:{toggleOnExecute:!1,toggleClass:_i.resolve("format-matches"),selected:t},itemBehaviours:Bo(o?[]:[Bi(n,function(n,e){(e?Fi.on:Fi.off)(n)})]),components:[{dom:{tag:"div",attributes:{style:r},innerHtml:e}}]}},bg=function(n,e,t,r){return{value:n,dom:{tag:"div"},components:[Ls.sketch({dom:{tag:"div",classes:[_i.resolve("styles-collapser")]},components:r?[{dom:{tag:"span",classes:[_i.resolve("styles-collapse-icon")]}},jd(n)]:[jd(n)],action:function(n){if(r){var e=t().get(n);fg.collapseMenu(e)}}}),{dom:{tag:"div",classes:[_i.resolve("styles-menu-items-container")]},components:[tg.parts().items({})],behaviours:Bo([am("adhoc-scrollable-menu",[Eo(function(n,e){Gi(n.element(),"overflow-y","auto"),Gi(n.element(),"-webkit-overflow-scrolling","touch"),vg.register(n.element())}),Co(function(n){pi(n.element(),"overflow-y"),pi(n.element(),"-webkit-overflow-scrolling"),vg.deregister(n.element())})])])}],items:e,menuBehaviours:Bo([pg.config({initialState:"after",routes:pg.createTristate("before","current","after",{transition:{property:"transform",transitionClass:"transitioning"}})})])}},xg=function(r){var n=function(r,o){var n=bg("Styles",[].concat(de(r.items,function(n){return yg(Xd(n),n.title,n.isSelected(),n.getPreview(),Mn(r.expansions,Xd(n)))})),o,!1),e=S(r.menus,function(n,e){var t=de(n,function(n){return yg(Xd(n),n.title,n.isSelected!==undefined&&n.isSelected(),n.getPreview!==undefined?n.getPreview():"",Mn(r.expansions,Xd(n)))});return bg(e,t,o,!0)}),t=xt(e,En("styles",n));return{tmenu:fg.tieredData("styles",t,r.expansions)}}(r.formats,function(){return e}),e=js(fg.sketch({dom:{tag:"div",classes:[_i.resolve("styles-menu")]},components:[],fakeFocus:!0,stayInDom:!0,onExecute:function(n,e){var t=fl.getValue(e);return r.handle(e,t.value),Fn.none()},onEscape:function(){return Fn.none()},onOpenMenu:function(n,e){var t=Mf(n.element());Df(e.element(),t),pg.jumpTo(e,"current")},onOpenSubmenu:function(n,e,t){var r=Mf(n.element()),o=Ji(e.element(),'[role="menu"]').getOrDie("hacky"),i=n.getSystem().getByDom(o).getOrDie();Df(t.element(),r),pg.progressTo(i,"before"),pg.jumpTo(t,"after"),pg.progressTo(t,"current")},onCollapseMenu:function(n,e,t){var r=Ji(e.element(),'[role="menu"]').getOrDie("hacky"),o=n.getSystem().getByDom(r).getOrDie();pg.progressTo(o,"after"),pg.progressTo(t,"current")},navigateOnHover:!1,highlightImmediately:!0,data:n.tmenu,markers:{backgroundMenu:_i.resolve("styles-background-menu"),menu:_i.resolve("styles-menu"),selectedMenu:_i.resolve("styles-selected-menu"),item:_i.resolve("styles-item"),selectedItem:_i.resolve("styles-selected-item")}}));return e.asSpec()},wg=function(n){return M(n,function(n,e){var t=qd(e);return{menus:xt(n.menus,t.menus),items:[t.item].concat(n.items),expansions:xt(n.expansions,t.expansions)}},{menus:{},expansions:{},items:[]})},Sg={expand:wg},Tg=function(r,n){function o(n){return function(){return r.formatter.match(n)}}function i(n){return function(){return r.formatter.getCssText(n)}}var e=Dt(n,"style_formats").getOr(Fm),t=function(n){return de(n,function(n){if(Mn(n,"items")){var e=t(n.items);return xt(function(n){return xt(n,{isSelected:b(!1),getPreview:b("")})}(n),{items:e})}return Mn(n,"format")?function(n){return xt(n,{isSelected:o(n.format),getPreview:i(n.format)})}(n):function(n){var e=yc(n.title),t=xt(n,{format:e,isSelected:o(e),getPreview:i(e)});return r.formatter.register(e,t),t}(n)})};return t(e)},Og=function(t,n,r){var e=function(e,n){var t=function(n){return B(n,function(n){return n.items===undefined?!Mn(n,"format")||e.formatter.canApply(n.format)?[n]:[]:0<t(n.items).length?[n]:[]})},r=t(n);return Sg.expand(r)}(t,n);return xg({formats:e,handle:function(n,e){t.undoManager.transact(function(){Fi.isOn(n)?t.formatter.remove(e):t.formatter.apply(e)}),r()}})},kg=["undo","bold","italic","link","image","bullist","styleselect"],Eg=function(n){return B(n,function(n){return ie(n)?Eg(n):Yd(n)})},Cg=function(e,r){function n(n){return function(){return Ws.forToolbarCommand(r,n)}}function t(n){return function(){return Ws.forToolbarStateCommand(r,n)}}function o(n,e,t){return function(){return Ws.forToolbarStateAction(r,n,e,t)}}function i(){return Og(r,h,function(){r.fire("scrollIntoView")})}function u(n,e){return{isSupported:function(){var e=r.ui.registry.getAll().buttons;return n.forall(function(n){return Mn(e,n)})},sketch:e}}var c=n("undo"),a=n("redo"),f=t("bold"),s=t("italic"),l=t("underline"),d=n("removeformat"),m=o("unlink","link",function(){r.execCommand("unlink",null,!1)}),g=o("unordered-list","ul",function(){r.execCommand("InsertUnorderedList",null,!1)}),p=o("ordered-list","ol",function(){r.execCommand("InsertOrderedList",null,!1)}),h=Tg(r,r.settings);return{undo:u(Fn.none(),c),redo:u(Fn.none(),a),bold:u(Fn.none(),f),italic:u(Fn.none(),s),underline:u(Fn.none(),l),removeformat:u(Fn.none(),d),link:u(Fn.none(),function(){return function(e,t){return Ws.forToolbarStateAction(t,"link","link",function(){var n=Am(e,t);e.setContextToolbar(n),cm(t,function(){e.focusToolbar()}),im.query(t).each(function(n){t.selection.select(n.dom())})})}(e,r)}),unlink:u(Fn.none(),m),image:u(Fn.none(),function(){return Zl(r)}),bullist:u(Fn.some("bullist"),g),numlist:u(Fn.some("numlist"),p),fontsizeselect:u(Fn.none(),function(){return function(n,e){var t={onChange:function(n){Hl.apply(e,n)},getInitialValue:function(){return Hl.get(e)}};return Fs(n,"font-size",function(){return Ns(t)},e)}(e,r)}),forecolor:u(Fn.none(),function(){return Nl(e,r)}),styleselect:u(Fn.none(),function(){return Ws.forToolbar("style-formats",function(n){r.fire("toReading"),e.dropup().appear(i,Fi.on,n)},Bo([Fi.config({toggleClass:_i.resolve("toolbar-button-selected"),toggleOnExecute:!1,aria:{mode:"pressed"}}),Ci.config({channels:Cn([Ni(Uo.orientationChanged(),Fi.off),Ni(Uo.dropupDismissed(),Fi.off)])})]),r)})}},Dg=function(n,t){var e=Kd(n),r={};return B(e,function(n){var e=!Mn(r,n)&&Mn(t,n)&&t[n].isSupported()?[t[n].sketch()]:[];return r[n]=!0,e})},Mg=function(n,e,t,r){n.dom().removeEventListener(e,t,r)},Ig=b(!0),Rg=tinymce.util.Tools.resolve("tinymce.util.Delay"),Ag=em,Fg=function(r,e){var n=Je.fromDom(r),o=null,t=Zd(n,"orientationchange",function(){Rg.clearInterval(o);var n=em(r);e.onChange(n),i(function(){e.onReady(n)})}),i=function(n){Rg.clearInterval(o);var e=r.innerHeight,t=0;o=Rg.setInterval(function(){e!==r.innerHeight?(Rg.clearInterval(o),n(Fn.some(r.innerHeight))):20<t&&(Rg.clearInterval(o),n(Fn.none())),t++},50)};return{onAdjustment:i,destroy:function(){t.unbind()}}},Bg=function(n){var e=L().os.isiOS(),t=em(n).isPortrait();return e&&!t?n.screen.height:n.screen.width};function Vg(n){var e=n.raw();return e.touches===undefined||1!==e.touches.length?Fn.none():Fn.some(e.touches[0])}function Ng(t){var r=Pn(Fn.none()),o=Pn(!1),i=function n(t,r){var o=null;return{cancel:function(){null!==o&&(l.clearTimeout(o),o=null)},schedule:function(){for(var n=[],e=0;e<arguments.length;e++)n[e]=arguments[e];o=l.setTimeout(function(){t.apply(null,n),o=null},r)}}}(function(n){t.triggerEvent(Le(),n),o.set(!0)},400),u=Cn([{key:xe(),value:function(t){return Vg(t).each(function(n){i.cancel();var e={x:b(n.clientX),y:b(n.clientY),target:t.target};i.schedule(t),o.set(!1),r.set(Fn.some(e))}),Fn.none()}},{key:we(),value:function(n){return i.cancel(),Vg(n).each(function(e){r.get().each(function(n){!function(n,e){var t=Math.abs(n.clientX-e.x()),r=Math.abs(n.clientY-e.y());return 5<t||5<r}(e,n)||r.set(Fn.none())})}),Fn.none()}},{key:Se(),value:function(e){i.cancel();return r.get().filter(function(n){return cn(n.target(),e.target())}).map(function(n){return o.get()?(e.prevent(),!1):t.triggerEvent(ze(),e)})}}]);return{fireIfReady:function(e,n){return Dt(u,n).bind(function(n){return n(e)})}}}var jg=function(t){var e=Ng({triggerEvent:function(n,e){t.onTapContent(e)}});return{fireTouchstart:function(n){e.fireIfReady(n,"touchstart")},onTouchend:function(){return Zd(t.body(),"touchend",function(n){e.fireIfReady(n,"touchend")})},onTouchmove:function(){return Zd(t.body(),"touchmove",function(n){e.fireIfReady(n,"touchmove")})}}},_g=6<=L().os.version.major,Pg=function(r,e,t){function o(n){return!cn(n.start(),n.finish())||n.soffset()!==n.foffset()}function n(){var n=r.doc().dom().hasFocus()&&r.getSelection().exists(o);t.getByDom(e).each(!0===(n||mo(u).filter(function(n){return"input"===q(n)}).exists(function(n){return n.dom().selectionStart!==n.dom().selectionEnd}))?Fi.on:Fi.off)}var i=jg(r),u=an(e),c=[Zd(r.body(),"touchstart",function(n){r.onTouchContent(),i.fireTouchstart(n)}),i.onTouchmove(),i.onTouchend(),Zd(e,"touchstart",function(n){r.onTouchToolstrip()}),r.onToReading(function(){lo(r.body())}),r.onToEditing(w),r.onScrollToCursor(function(n){n.preventDefault(),r.getCursorBox().each(function(n){var e=r.win(),t=n.top()>e.innerHeight||n.bottom()>e.innerHeight?n.bottom()-e.innerHeight+50:0;0!=t&&e.scrollTo(e.pageXOffset,e.pageYOffset+t)})})].concat(!0==_g?[]:[Zd(Je.fromDom(r.win()),"blur",function(){t.getByDom(e).each(Fi.off)}),Zd(u,"select",n),Zd(r.doc(),"selectionchange",n)]);return{destroy:function(){C(c,function(n){n.unbind()})}}},Hg=function(n,e){var t=parseInt(Qr(n,e),10);return isNaN(t)?0:t};function zg(n){return Cp.getOption(n)}function Lg(n){return function(n){return zg(n).filter(function(n){return 0!==n.trim().length||-1<n.indexOf("\xa0")}).isSome()}(n)||k(Dp,q(n))}function Gg(n,e,t){var r=n.document.createRange();return function(t,n){n.fold(function(n){t.setStartBefore(n.dom())},function(n,e){t.setStart(n.dom(),e)},function(n){t.setStartAfter(n.dom())})}(r,e),function(t,n){n.fold(function(n){t.setEndBefore(n.dom())},function(n,e){t.setEnd(n.dom(),e)},function(n){t.setEndAfter(n.dom())})}(r,t),r}function Ug(n,e,t,r,o){var i=n.document.createRange();return i.setStart(e.dom(),t),i.setEnd(r.dom(),o),i}function $g(n){return{left:b(n.left),top:b(n.top),right:b(n.right),bottom:b(n.bottom),width:b(n.width),height:b(n.height)}}function Wg(n,e,t){return e(Je.fromDom(t.startContainer),t.startOffset,Je.fromDom(t.endContainer),t.endOffset)}function Xg(n,e){return function(n,e){var t=e.ltr();return t.collapsed?e.rtl().filter(function(n){return!1===n.collapsed}).map(function(n){return Bp.rtl(Je.fromDom(n.endContainer),n.endOffset,Je.fromDom(n.startContainer),n.startOffset)}).getOrThunk(function(){return Wg(0,Bp.ltr,t)}):Wg(0,Bp.ltr,t)}(0,function(o,n){return n.match({domRange:function(n){return{ltr:b(n),rtl:Fn.none}},relative:function(n,e){return{ltr:X(function(){return Gg(o,n,e)}),rtl:X(function(){return Fn.some(Gg(o,e,n))})}},exact:function(n,e,t,r){return{ltr:X(function(){return Ug(o,n,e,t,r)}),rtl:X(function(){return Fn.some(Ug(o,t,r,n,e))})}}})}(n,e))}function qg(n,e,t){return e>=n.left&&e<=n.right&&t>=n.top&&t<=n.bottom}function Yg(t,r,n,e,o){function i(n){var e=t.dom().createRange();return e.setStart(r.dom(),n),e.collapse(!0),e}var u=function(n){return Cp.get(n)}(r).length,c=function(n,e,t,r,o){if(0===o)return 0;if(e===r)return o-1;for(var i=r,u=1;u<o;u++){var c=n(u),a=Math.abs(e-c.left);if(t<=c.bottom){if(t<c.top||i<a)return u-1;i=a}}return 0}(function(n){return i(n).getBoundingClientRect()},n,e,o.right,u);return i(c)}function Kg(n){return Fr(n,Lg)}function Jg(n){return Np(n,Lg)}function Qg(n,e){return e-n.left<n.right-e}function Zg(n,e,t){var r=n.dom().createRange();return r.selectNode(e.dom()),r.collapse(t),r}function np(e,n,t){var r=e.dom().createRange();r.selectNode(n.dom());var o=r.getBoundingClientRect(),i=Qg(o,t);return(!0===i?Kg:Jg)(n).map(function(n){return Zg(e,n,i)})}function ep(n,e,t){var r=e.dom().getBoundingClientRect(),o=Qg(r,t);return Fn.some(Zg(n,e,o))}function tp(n,e,t,r){var o=n.dom().createRange();o.selectNode(e.dom());var i=o.getBoundingClientRect();return function(n,e,t,r){var o=n.dom().createRange();o.selectNode(e.dom());var i=o.getBoundingClientRect(),u=Math.max(i.left,Math.min(i.right,t)),c=Math.max(i.top,Math.min(i.bottom,r));return Vp(n,e,u,c)}(n,e,Math.max(i.left,Math.min(i.right,t)),Math.max(i.top,Math.min(i.bottom,r)))}function rp(n,e){var t=q(n);return"input"===t?Rp.after(n):k(["br","img"],t)?0===e?Rp.before(n):Rp.after(n):Rp.on(n,e)}function op(n,e,t,r){var o=function(n,e,t,r){var o=an(n).dom().createRange();return o.setStart(n.dom(),e),o.setEnd(t.dom(),r),o}(n,e,t,r),i=cn(n,t)&&e===r;return o.collapsed&&!i}function ip(n,e,t,r,o){!function(n,e){Fn.from(n.getSelection()).each(function(n){n.removeAllRanges(),n.addRange(e)})}(n,Ug(n,e,t,r,o))}function up(n,e,t,r,o){!function(u,n){Xg(u,n).match({ltr:function(n,e,t,r){ip(u,n,e,t,r)},rtl:function(n,e,t,r){var o=u.getSelection();if(o.setBaseAndExtent)o.setBaseAndExtent(n.dom(),e,t.dom(),r);else if(o.extend)try{!function(n,e,t,r,o,i){e.collapse(t.dom(),r),e.extend(o.dom(),i)}(0,o,n,e,t,r)}catch(i){ip(u,t,r,n,e)}else ip(u,t,r,n,e)}})}(n,function(n,e,t,r){var o=rp(n,e),i=rp(t,r);return Fp.relative(o,i)}(e,t,r,o))}function cp(n){var e=Je.fromDom(n.anchorNode),t=Je.fromDom(n.focusNode);return op(e,n.anchorOffset,t,n.focusOffset)?Fn.some(Mp.create(e,n.anchorOffset,t,n.focusOffset)):function(n){if(0<n.rangeCount){var e=n.getRangeAt(0),t=n.getRangeAt(n.rangeCount-1);return Fn.some(Mp.create(Je.fromDom(e.startContainer),e.startOffset,Je.fromDom(t.endContainer),t.endOffset))}return Fn.none()}(n)}function ap(n){return Fn.from(n.getSelection()).filter(function(n){return 0<n.rangeCount}).bind(cp)}function fp(n,e){return function(n){var e=n.getClientRects(),t=0<e.length?e[0]:n.getBoundingClientRect();return 0<t.width||0<t.height?Fn.some(t).map($g):Fn.none()}(function(i,n){return Xg(i,n).match({ltr:function(n,e,t,r){var o=i.document.createRange();return o.setStart(n.dom(),e),o.setEnd(t.dom(),r),o},rtl:function(n,e,t,r){var o=i.document.createRange();return o.setStart(t.dom(),r),o.setEnd(n.dom(),e),o}})}(n,e))}function sp(n){return{left:n.left,top:n.top,right:n.right,bottom:n.bottom,width:b(2),height:n.height}}function lp(n){return{left:b(n.left),top:b(n.top),right:b(n.right),bottom:b(n.bottom),width:b(n.width),height:b(n.height)}}function dp(t){if(t.collapsed){var r=Je.fromDom(t.startContainer);return fn(r).bind(function(n){var e=Fp.exact(r,t.startOffset,n,function(n){return"img"===q(n)?1:zg(n).fold(function(){return at(n).length},function(n){return n.length})}(n));return fp(t.startContainer.ownerDocument.defaultView,e).map(sp).map(_)}).getOr([])}return de(t.getClientRects(),lp)}function mp(n,e){Kr(n,Pp,e)}function gp(n){return{top:b(n.top()),bottom:b(n.top()+n.height())}}function pp(n,e){var t=function(n){return Hg(n,Pp)}(e),r=n.innerHeight;return r<t?Fn.some(t-r):Fn.none()}function hp(n){return Fn.some(Je.fromDom(n.dom().contentWindow.document.body))}function vp(n){return Fn.some(Je.fromDom(n.dom().contentWindow.document))}function yp(n){return Fn.from(n.dom().contentWindow)}function bp(n){return yp(n).bind(ap)}function xp(n){return n.getFrame()}function wp(n,t){return function(e){return e[n].getOrThunk(function(){var n=xp(e);return function(){return t(n)}})()}}function Sp(n,e,t,r){return n[t].getOrThunk(function(){return function(n){return Zd(e,r,n)}})}function Tp(n){return{left:b(n.left),top:b(n.top),right:b(n.right),bottom:b(n.bottom),width:b(n.width),height:b(n.height)}}function Op(t,r){var o=null;return{cancel:function(){null!==o&&(l.clearTimeout(o),o=null)},throttle:function(){for(var n=[],e=0;e<arguments.length;e++)n[e]=arguments[e];null!==o&&l.clearTimeout(o),o=l.setTimeout(function(){t.apply(null,n),o=null},r)}}}function kp(n){return"true"===Qr(n,ih)?function(n){return 0<n.dom().scrollLeft||function(n){n.dom().scrollLeft=1;var e=0!==n.dom().scrollLeft;return n.dom().scrollLeft=0,e}(n)}(n):function(n){return 0<n.dom().scrollTop||function(n){n.dom().scrollTop=1;var e=0!==n.dom().scrollTop;return n.dom().scrollTop=0,e}(n)}(n)}var Ep,Cp=function oy(t,r){var e=function(n){return t(n)?Fn.from(n.dom().nodeValue):Fn.none()};return{get:function(n){if(!t(n))throw new Error("Can only get "+r+" value of a "+r+" node");return e(n).getOr("")},getOption:e,set:function(n,e){if(!t(n))throw new Error("Can only set raw "+r+" value of a "+r+" node");n.dom().nodeValue=e}}}(tt,"text"),Dp=["img","br"],Mp={create:J("start","soffset","finish","foffset")},Ip=yt([{before:["element"]},{on:["element","offset"]},{after:["element"]}]),Rp={before:Ip.before,on:Ip.on,after:Ip.after,cata:function(n,e,t,r){return n.fold(e,t,r)},getStart:function(n){return n.fold(y,y,y)}},Ap=yt([{domRange:["rng"]},{relative:["startSitu","finishSitu"]},{exact:["start","soffset","finish","foffset"]}]),Fp={domRange:Ap.domRange,relative:Ap.relative,exact:Ap.exact,exactFromRange:function(n){return Ap.exact(n.start(),n.soffset(),n.finish(),n.foffset())},getWin:function(n){return function(n){return Je.fromDom(n.dom().ownerDocument.defaultView)}(function(n){return n.match({domRange:function(n){return Je.fromDom(n.startContainer)},relative:function(n,e){return Rp.getStart(n)},exact:function(n,e,t,r){return n}})}(n))},range:Mp.create},Bp=yt([{ltr:["start","soffset","finish","foffset"]},{rtl:["start","soffset","finish","foffset"]}]),Vp=function(n,e,t,r){return tt(e)?function(e,t,r,o){var n=e.dom().createRange();n.selectNode(t.dom());var i=n.getClientRects();return wo(i,function(n){return qg(n,r,o)?Fn.some(n):Fn.none()}).map(function(n){return Yg(e,t,r,o,n)})}(n,e,t,r):function(e,n,t,r){var o=e.dom().createRange(),i=at(n);return wo(i,function(n){return o.selectNode(n.dom()),qg(o.getBoundingClientRect(),t,r)?Vp(e,n,t,r):Fn.none()})}(n,e,t,r)},Np=function(n,i){var u=function(n){for(var e=at(n),t=e.length-1;0<=t;t--){var r=e[t];if(i(r))return Fn.some(r);var o=u(r);if(o.isSome())return o}return Fn.none()};return u(n)},jp=(document.caretPositionFromPoint||document.caretRangeFromPoint,function(n){var e=n.getSelection();return e!==undefined&&0<e.rangeCount?dp(e.getRangeAt(0)):[]}),_p=function(n){n.focus();var e=Je.fromDom(n.document.body);(mo().exists(function(n){return k(["input","textarea"],q(n))})?function(n){Rg.setTimeout(function(){n()},0)}:t)(function(){mo().each(lo),so(e)})},Pp="data-"+_i.resolve("last-outer-height"),Hp=function(n,r){var e=Je.fromDom(r.document.body),t=Zd(Je.fromDom(n),"resize",function(){pp(n,e).each(function(t){(function(n){var e=jp(n);return 0<e.length?Fn.some(e[0]).map(gp):Fn.none()})(r).each(function(n){var e=function(n,e,t){return e.top()>n.innerHeight||e.bottom()>n.innerHeight?Math.min(t,e.bottom()-n.innerHeight+50):0}(r,n,t);0!==e&&r.scrollTo(r.pageXOffset,r.pageYOffset+e)})}),mp(e,n.innerHeight)});mp(e,n.innerHeight);return{toEditing:function(){_p(r)},destroy:function(){t.unbind()}}},zp={getBody:wp("getBody",hp),getDoc:wp("getDoc",vp),getWin:wp("getWin",yp),getSelection:wp("getSelection",bp),getFrame:xp,getActiveApi:function(c){var a=xp(c);return hp(a).bind(function(u){return vp(a).bind(function(i){return yp(a).map(function(o){var n=Je.fromDom(i.dom().documentElement),e=c.getCursorBox.getOrThunk(function(){return function(){return function(n){return ap(n).map(function(n){return Fp.exact(n.start(),n.soffset(),n.finish(),n.foffset())})}(o).bind(function(n){return fp(o,n).orThunk(function(){return function(n){return ap(n).filter(function(n){return cn(n.start(),n.finish())&&n.soffset()===n.foffset()}).bind(function(n){var e=n.start().dom().getBoundingClientRect();return 0<e.width||0<e.height?Fn.some(e).map(Tp):Fn.none()})}(o)})})}}),t=c.setSelection.getOrThunk(function(){return function(n,e,t,r){up(o,n,e,t,r)}}),r=c.clearSelection.getOrThunk(function(){return function(){!function(n){n.getSelection().removeAllRanges()}(o)}});return{body:b(u),doc:b(i),win:b(o),html:b(n),getSelection:d(bp,a),setSelection:t,clearSelection:r,frame:b(a),onKeyup:Sp(c,i,"onKeyup","keyup"),onNodeChanged:Sp(c,i,"onNodeChanged","SelectionChange"),onDomChanged:c.onDomChanged,onScrollToCursor:c.onScrollToCursor,onScrollToElement:c.onScrollToElement,onToReading:c.onToReading,onToEditing:c.onToEditing,onToolbarScrollStart:c.onToolbarScrollStart,onTouchContent:c.onTouchContent,onTapContent:c.onTapContent,onTouchToolstrip:c.onTouchToolstrip,getCursorBox:e}})})})}},Lp="data-ephox-mobile-fullscreen-style",Gp="position:absolute!important;",Up="top:0!important;left:0!important;margin:0!important;padding:0!important;width:100%!important;height:100%!important;overflow:visible!important;",$p=L().os.isAndroid(),Wp=function(n,e){function t(r){return function(n){var e=Qr(n,"style"),t=e===undefined?"no-styles":e.trim();t!==r&&(Kr(n,Lp,t),Kr(n,"style",r))}}var r=function(n,e,t){return Xi(n,function(n){return tn(n,e)},t)}(n,"*"),o=B(r,function(n){return function(n,e){return qi(n,function(n){return tn(n,e)})}(n,"*")}),i=function(n){var e=mi(n,"background-color");return e!==undefined&&""!==e?"background-color:"+e+"!important":"background-color:rgb(255,255,255)!important;"}(e);C(o,t("display:none!important;")),C(r,t(Gp+Up+i)),t((!0===$p?"":Gp)+Up+i)(n)},Xp=function(){var n=function(n){return on(n)}("["+Lp+"]");C(n,function(n){var e=Qr(n,Lp);"no-styles"!==e?Kr(n,"style",e):no(n,"style"),no(n,Lp)})},qp=function(){var e=Ki("head").getOrDie(),n=Ki('meta[name="viewport"]').getOrThunk(function(){var n=Je.fromTag("meta");return Kr(n,"name","viewport"),ft(e,n),n}),t=Qr(n,"content");return{maximize:function(){Kr(n,"content","width=device-width, initial-scale=1.0, user-scalable=no, maximum-scale=1.0")},restore:function(){t!==undefined&&null!==t&&0<t.length?Kr(n,"content",t):Kr(n,"content","user-scalable=yes")}}},Yp=function(e,n){var t=qp(),r=yd(),o=yd();return{enter:function(){n.hide(),io(e.container,_i.resolve("fullscreen-maximized")),io(e.container,_i.resolve("android-maximized")),t.maximize(),io(e.body,_i.resolve("android-scroll-reload")),r.set(Hp(e.win,zp.getWin(e.editor).getOrDie("no"))),zp.getActiveApi(e.editor).each(function(n){Wp(e.container,n.body()),o.set(Pg(n,e.toolstrip,e.alloy))})},exit:function(){t.restore(),n.show(),co(e.container,_i.resolve("fullscreen-maximized")),co(e.container,_i.resolve("android-maximized")),Xp(),co(e.body,_i.resolve("android-scroll-reload")),o.clear(),r.clear()}}},Kp=function(n,e){var t=js(dm.sketch({dom:Us('<div aria-hidden="true" class="${prefix}-mask-tap-icon"></div>'),containerBehaviours:Bo([Fi.config({toggleClass:_i.resolve("mask-tap-icon-selected"),toggleOnExecute:!1})])})),r=function(t,r){var o=null;return{cancel:function(){null!==o&&(l.clearTimeout(o),o=null)},throttle:function(){for(var n=[],e=0;e<arguments.length;e++)n[e]=arguments[e];null===o&&(o=l.setTimeout(function(){t.apply(null,n),o=null},r))}}}(n,200);return dm.sketch({dom:Us('<div class="${prefix}-disabled-mask"></div>'),components:[dm.sketch({dom:Us('<div class="${prefix}-content-container"></div>'),components:[Ls.sketch({dom:Us('<div class="${prefix}-content-tap-section"></div>'),components:[t.asSpec()],action:function(n){r.throttle()},buttonBehaviours:Bo([Fi.config({toggleClass:_i.resolve("mask-tap-icon-selected")})])})]})]})},Jp=Sr([Jt("editor",[Yt("getFrame"),Qt("getBody"),Qt("getDoc"),Qt("getWin"),Qt("getSelection"),Qt("setSelection"),Qt("clearSelection"),Qt("cursorSaver"),Qt("onKeyup"),Qt("onNodeChanged"),Qt("getCursorBox"),Yt("onDomChanged"),tr("onTouchContent",w),tr("onTapContent",w),tr("onTouchToolstrip",w),tr("onScrollToCursor",b({unbind:w})),tr("onScrollToElement",b({unbind:w})),tr("onToEditing",b({unbind:w})),tr("onToReading",b({unbind:w})),tr("onToolbarScrollStart",y)]),Yt("socket"),Yt("toolstrip"),Yt("dropup"),Yt("toolbar"),Yt("container"),Yt("alloy"),or("win",function(n){return an(n.socket).dom().defaultView}),or("body",function(n){return Je.fromDom(n.socket.dom().ownerDocument.body)}),tr("translate",y),tr("setReadOnly",w),tr("readOnlyOnInit",b(!0))]),Qp=function(n){var e=Xt("Getting AndroidWebapp schema",Jp,n);Gi(e.toolstrip,"width","100%");var t=Lm(Kp(function(){e.setReadOnly(e.readOnlyOnInit()),o.enter()},e.translate));e.alloy.add(t);var r={show:function(){e.alloy.add(t)},hide:function(){e.alloy.remove(t)}};ft(e.container,t.element());var o=Yp(e,r);return{setReadOnly:e.setReadOnly,refreshStructure:w,enter:o.enter,exit:o.exit,destroy:w}},Zp=b([Yt("dom"),tr("shell",!0),mc("toolbarBehaviours",[og])]),nh=b([rf({name:"groups",overrides:function(n){return{behaviours:Bo([og.config({})])}}})]),eh=vf({name:"Toolbar",configFields:Zp(),partFields:nh(),factory:function(e,n,t,r){var o=function(n){return e.shell?Fn.some(n):kc(n,e,"groups")},i=e.shell?{behaviours:[og.config({})],components:[]}:{behaviours:[],components:n};return{uid:e.uid,dom:e.dom,components:i.components,behaviours:pc(e.toolbarBehaviours,i.behaviours),apis:{setGroups:function(n,e){o(n).fold(function(){throw l.console.error("Toolbar was defined to not be a shell, but no groups container was specified in components"),new Error("Toolbar was defined to not be a shell, but no groups container was specified in components")},function(n){og.set(n,e)})}},domModification:{attributes:{role:"group"}}}},apis:{setGroups:function(n,e,t){n.setGroups(e,t)}}}),th=b([Yt("items"),(Ep=["itemSelector"],Jt("markers",de(Ep,Yt))),mc("tgroupBehaviours",[Va])]),rh=b([of({name:"items",unit:"item"})]),oh=vf({name:"ToolbarGroup",configFields:th(),partFields:rh(),factory:function(n,e,t,r){return{uid:n.uid,dom:n.dom,components:e,behaviours:pc(n.tgroupBehaviours,[Va.config({mode:"flow",selector:n.markers.itemSelector})]),domModification:{attributes:{role:"toolbar"}}}}}),ih="data-"+_i.resolve("horizontal-scroll"),uh={exclusive:function(n,e){return Zd(n,"touchmove",function(n){Zi(n.target(),e).filter(kp).fold(function(){n.raw().preventDefault()},w)})},markAsHorizontal:function(n){Kr(n,ih,"true")}};function ch(){function e(n){var e=!0===n.scrollable?"${prefix}-toolbar-scrollable-group":"";return{dom:Us('<div aria-label="'+n.label+'" class="${prefix}-toolbar-group '+e+'"></div>'),tgroupBehaviours:Bo([am("adhoc-scrollable-toolbar",!0===n.scrollable?[Do(function(n,e){Gi(n.element(),"overflow-x","auto"),uh.markAsHorizontal(n.element()),vg.register(n.element())})]:[])]),components:[dm.sketch({components:[oh.parts().items({})]})],markers:{itemSelector:"."+_i.resolve("toolbar-group-item")},items:n.items}}function t(){eh.setGroups(r,o.get()),Fi.off(r)}var r=Lm(eh.sketch({dom:Us('<div class="${prefix}-toolbar"></div>'),components:[eh.parts().groups({})],toolbarBehaviours:Bo([Fi.config({toggleClass:_i.resolve("context-toolbar"),toggleOnExecute:!1,aria:{mode:"none"}}),Va.config({mode:"cyclic"})]),shell:!0})),n=Lm(dm.sketch({dom:{classes:[_i.resolve("toolstrip")]},components:[Gm(r)],containerBehaviours:Bo([Fi.config({toggleClass:_i.resolve("android-selection-context-toolbar"),toggleOnExecute:!1})])})),o=Pn([]);return{wrapper:b(n),toolbar:b(r),createGroups:function(n){return de(n,i(oh.sketch,e))},setGroups:function(n){o.set(n),t()},setContextToolbar:function(n){Fi.on(r),eh.setGroups(r,n)},restoreToolbar:function(){Fi.isOn(r)&&t()},refresh:function(){},focus:function(){Va.focusIn(r)}}}function ah(n,e){og.append(n,Gm(e))}function fh(n,e){og.remove(n,e)}function sh(e,n){return n.getAnimationRoot.fold(function(){return e.element()},function(n){return n(e)})}function lh(n){return n.dimension.property}function dh(n,e){return n.dimension.getDimension(e)}function mh(n,e){var t=sh(n,e);Id(t,[e.shrinkingClass,e.growingClass])}function gh(n,e){co(n.element(),e.openClass),io(n.element(),e.closedClass),Gi(n.element(),lh(e),"0px"),hi(n.element())}function ph(n,e){co(n.element(),e.closedClass),io(n.element(),e.openClass),pi(n.element(),lh(e))}function hh(n,e,t,r){t.setCollapsed(),Gi(n.element(),lh(e),dh(e,n.element())),hi(n.element()),mh(n,e),gh(n,e),e.onStartShrink(n),e.onShrunk(n)}function vh(n,e,t,r){var o=r.getOrThunk(function(){return dh(e,n.element())});t.setCollapsed(),Gi(n.element(),lh(e),o),hi(n.element());var i=sh(n,e);co(i,e.growingClass),io(i,e.shrinkingClass),gh(n,e),e.onStartShrink(n)}function yh(n,e,t){var r=dh(e,n.element());("0px"===r?hh:vh)(n,e,t,Fn.some(r))}function bh(n,e,t){var r=sh(n,e),o=ao(r,e.shrinkingClass),i=dh(e,n.element());ph(n,e);var u=dh(e,n.element());(o?function(){Gi(n.element(),lh(e),i),hi(n.element())}:function(){gh(n,e)})(),co(r,e.shrinkingClass),io(r,e.growingClass),ph(n,e),Gi(n.element(),lh(e),u),t.setExpanded(),e.onStartGrow(n)}function xh(n,e,t){var r=sh(n,e);return!0===ao(r,e.growingClass)}function wh(n,e,t){var r=sh(n,e);return!0===ao(r,e.shrinkingClass)}function Sh(e,t){var r=Lm(dm.sketch({dom:{tag:"div",classes:[_i.resolve("dropup")]},components:[],containerBehaviours:Bo([og.config({}),Vh.config({closedClass:_i.resolve("dropup-closed"),openClass:_i.resolve("dropup-open"),shrinkingClass:_i.resolve("dropup-shrinking"),growingClass:_i.resolve("dropup-growing"),dimension:{property:"height"},onShrunk:function(n){e(),t(),og.set(n,[])},onGrown:function(n){e(),t()}}),Vi(function(n,e){o(w)})])})),o=function(n){l.window.requestAnimationFrame(function(){n(),Vh.shrink(r)})};return{appear:function(n,e,t){!0===Vh.hasShrunk(r)&&!1===Vh.isTransitioning(r)&&l.window.requestAnimationFrame(function(){e(t),og.set(r,[n()]),Vh.grow(r)})},disappear:o,component:b(r),element:r.element}}function Th(n){return 8===n.raw().which&&!k(["input","textarea"],q(n.target()))&&!function(n,e,t){return Zi(n,e,t).isSome()}(n.target(),'[contenteditable="true"]')}function Oh(e,n){var t=Xt("Getting GUI events settings",jh,n),r=Ng(t),o=de(["touchstart","touchmove","touchend","touchcancel","gesturestart","mousedown","mouseup","mouseover","mousemove","mouseout","click"].concat(["selectstart","input","contextmenu","change","transitionend","drag","dragstart","dragend","dragenter","dragleave","dragover","drop","keyup"]),function(n){return Zd(e,n,function(e){r.fireIfReady(e,n).each(function(n){n&&e.kill()}),t.triggerEvent(n,e)&&e.kill()})}),i=Pn(Fn.none()),u=Zd(e,"paste",function(e){r.fireIfReady(e,"paste").each(function(n){n&&e.kill()}),t.triggerEvent("paste",e)&&e.kill(),i.set(Fn.some(l.setTimeout(function(){t.triggerEvent(je(),e)},0)))}),c=Zd(e,"keydown",function(n){t.triggerEvent("keydown",n)?n.kill():!0===t.stopBackspace&&Th(n)&&n.prevent()}),a=function(n,e){return Nh?nm(n,"focus",e):Zd(n,"focusin",e)}(e,function(n){t.triggerEvent("focusin",n)&&n.kill()}),f=Pn(Fn.none()),s=function(n,e){return Nh?nm(n,"blur",e):Zd(n,"focusout",e)}(e,function(n){t.triggerEvent("focusout",n)&&n.kill(),f.set(Fn.some(l.setTimeout(function(){t.triggerEvent(Ne(),n)},0)))});return{unbind:function(){C(o,function(n){n.unbind()}),c.unbind(),a.unbind(),s.unbind(),u.unbind(),i.get().each(l.clearTimeout),f.get().each(l.clearTimeout)}}}function kh(n,e){var t=Dt(n,"target").map(function(n){return n()}).getOr(e);return Pn(t)}function Eh(n,r,e,t,o,i){var u=n(r,t),c=function(n,e){var t=Pn(!1),r=Pn(!1);return{stop:function(){t.set(!0)},cut:function(){r.set(!0)},isStopped:t.get,isCut:r.get,event:b(n),setSource:e.set,getSource:e.get}}(e,o);return u.fold(function(){return i.logEventNoHandlers(r,t),_h.complete()},function(e){var t=e.descHandler();return Td(t)(c),c.isStopped()?(i.logEventStopped(r,e.element(),t.purpose()),_h.stopped()):c.isCut()?(i.logEventCut(r,e.element(),t.purpose()),_h.complete()):fn(e.element()).fold(function(){return i.logNoParent(r,e.element(),t.purpose()),_h.complete()},function(n){return i.logEventResponse(r,e.element(),t.purpose()),_h.resume(n)})})}function Ch(n,e,t){var r=function(n){var e=Pn(!1);return{stop:function(){e.set(!0)},cut:w,isStopped:e.get,isCut:b(!1),event:b(n),setSource:o("Cannot set source of a broadcasted event"),getSource:o("Cannot get source of a broadcasted event")}}(e);return C(n,function(n){var e=n.descHandler();Td(e)(r)}),r.isStopped()}var Dh,Mh=function(n){return Lm(Ls.sketch({dom:Us('<div class="${prefix}-mask-edit-icon ${prefix}-icon"></div>'),action:function(){n.run(function(n){n.setReadOnly(!1)})}}))},Ih=function(){return Lm(dm.sketch({dom:Us('<div class="${prefix}-editor-socket"></div>'),components:[],containerBehaviours:Bo([og.config({})])}))},Rh=function(n,e,t,r){(!0===t?Ho.toAlpha:Ho.toOmega)(r),(t?ah:fh)(n,e)},Ah=/* */Object.freeze({refresh:function(n,e,t){if(t.isExpanded()){pi(n.element(),lh(e));var r=dh(e,n.element());Gi(n.element(),lh(e),r)}},grow:function(n,e,t){t.isExpanded()||bh(n,e,t)},shrink:function(n,e,t){t.isExpanded()&&yh(n,e,t)},immediateShrink:function(n,e,t){t.isExpanded()&&hh(n,e,t)},hasGrown:function(n,e,t){return t.isExpanded()},hasShrunk:function(n,e,t){return t.isCollapsed()},isGrowing:xh,isShrinking:wh,isTransitioning:function(n,e,t){return!0===xh(n,e)||!0===wh(n,e)},toggleGrow:function(n,e,t){(t.isExpanded()?yh:bh)(n,e,t)},disableTransitions:mh}),Fh=/* */Object.freeze({exhibit:function(n,e){var t=e.expanded;return Ur(t?{classes:[e.openClass],styles:{}}:{classes:[e.closedClass],styles:En(e.dimension.property,"0px")})},events:function(t,r){return Nr([function(n,e){return Hr(n)(e)}(Ae(),function(n,e){e.event().raw().propertyName===t.dimension.property&&(mh(n,t),r.isExpanded()&&pi(n.element(),t.dimension.property),(r.isExpanded()?t.onGrown:t.onShrunk)(n))})])}}),Bh=[Yt("closedClass"),Yt("openClass"),Yt("shrinkingClass"),Yt("growingClass"),Qt("getAnimationRoot"),Ko("onShrunk"),Ko("onStartShrink"),Ko("onGrown"),Ko("onStartGrow"),tr("expanded",!1),Kt("dimension",qt("property",{width:[ni("property","width"),ni("getDimension",function(n){return Mf(n)+"px"})],height:[ni("property","height"),ni("getDimension",function(n){return Wi(n)+"px"})]}))],Vh=qr({fields:Bh,name:"sliding",active:Fh,apis:Ah,state:/* */Object.freeze({init:function(n){var e=Pn(n.expanded);return Fo({isExpanded:function(){return!0===e.get()},isCollapsed:function(){return!1===e.get()},setCollapsed:d(e.set,!1),setExpanded:d(e.set,!0),readState:function(){return"expanded: "+e.get()}})}})}),Nh=L().browser.isFirefox(),jh=Pt([(Dh="triggerEvent",Kt(Dh,Mr)),tr("stopBackspace",!0)]),_h=yt([{stopped:[]},{resume:["element"]},{complete:[]}]),Ph=function(e,t,r,n,o,i){return Eh(e,t,r,n,o,i).fold(function(){return!0},function(n){return Ph(e,t,r,n,o,i)},function(){return!1})},Hh=function(n,e,t,r,o){var i=kh(t,r);return Ph(n,e,t,r,i,o)},zh=J("element","descHandler"),Lh=function(n,e){return{id:b(n),descHandler:b(e)}};function Gh(){var i={};return{registerId:function(r,o,n){Nn(n,function(n,e){var t=i[e]!==undefined?i[e]:{};t[o]=_m(n,r),i[e]=t})},unregisterId:function(t){Nn(i,function(n,e){n.hasOwnProperty(t)&&delete n[t]})},filterByType:function(n){return Dt(i,n).map(function(n){return _n(n,function(n,e){return Lh(e,n)})}).getOr([])},find:function(n,e,t){var r=Ct(e)(i);return ko(t,function(n){return function(t,r){return gf(r).fold(function(){return Fn.none()},function(n){var e=Ct(n);return t.bind(e).map(function(n){return zh(r,n)})})}(r,n)},n)}}}function Uh(){function r(n){var e=n.element();return gf(e).fold(function(){return function(n,e){var t=yc(lf+n);return mf(e,t),t}("uid-",n.element())},function(n){return n})}var o=Gh(),i={},u=function(n){gf(n.element()).each(function(n){delete i[n],o.unregisterId(n)})};return{find:function(n,e,t){return o.find(n,e,t)},filter:function(n){return o.filterByType(n)},register:function(n){var e=r(n);Mn(i,e)&&function(n,e){var t=i[e];if(t!==n)throw new Error('The tagId "'+e+'" is already used by: '+bo(t.element())+"\nCannot use it for: "+bo(n.element())+"\nThe conflicting element is"+(K(t.element())?" ":" not ")+"already in the DOM");u(n)}(n,e);var t=[n];o.registerId(t,e,n.events()),i[e]=n},unregister:u,getById:function(n){return Ct(n)(i)}}}var $h=function(t){function r(e){return fn(t.element()).fold(function(){return!0},function(n){return cn(e,n)})}function o(n,e){return u.find(r,n,e)}function i(t){var n=u.filter(_e());C(n,function(n){var e=n.descHandler();Td(e)(t)})}var u=Uh(),n=Oh(t.element(),{triggerEvent:function(e,t){return qo(e,t.target(),function(n){return function(n,e,t,r){var o=t.target();return Hh(n,e,t,o,r)}(o,e,t,n)})}}),c={debugInfo:b("real"),triggerEvent:function(e,t,r){qo(e,t,function(n){Hh(o,e,r,t,n)})},triggerFocus:function(e,t){gf(e).fold(function(){so(e)},function(n){qo(Ve(),e,function(n){!function(n,e,t,r,o){var i=kh(t,r);Eh(n,e,t,r,i,o)}(o,Ve(),{originator:b(t),kill:w,prevent:w,target:b(e)},e,n)})})},triggerEscape:function(n,e){c.triggerEvent("keydown",n.element(),e.event())},getByUid:function(n){return g(n)},getByDom:function(n){return p(n)},build:Lm,addToGui:function(n){f(n)},removeFromGui:function(n){s(n)},addToWorld:function(n){e(n)},removeFromWorld:function(n){a(n)},broadcast:function(n){l(n)},broadcastOn:function(n,e){d(n,e)},broadcastEvent:function(n,e){m(n,e)},isConnected:b(!0)},e=function(n){n.connect(c),tt(n.element())||(u.register(n),C(n.components(),e),c.triggerEvent(Ge(),n.element(),{target:b(n.element())}))},a=function(n){tt(n.element())||(C(n.components(),a),u.unregister(n)),n.disconnect()},f=function(n){!function(n,e){mt(n,e,ft)}(t,n)},s=function(n){yn(n)},l=function(n){i({universal:b(!0),data:b(n)})},d=function(n,e){i({universal:b(!1),channels:b(n),data:b(e)})},m=function(n,e){var t=u.filter(n);return Ch(t,e)},g=function(n){return u.getById(n).fold(function(){return vt.error(new Error('Could not find component with uid: "'+n+'" in system.'))},vt.value)},p=function(n){var e=gf(n).getOr("not found");return g(e)};return e(t),{root:b(t),element:t.element,destroy:function(){n.unbind(),st(t.element())},add:f,remove:s,getByUid:g,getByDom:p,addToWorld:e,removeFromWorld:a,broadcast:l,broadcastOn:d,broadcastEvent:m}},Wh=b(_i.resolve("readonly-mode")),Xh=b(_i.resolve("edit-mode"));function qh(n){var e=Lm(dm.sketch({dom:{classes:[_i.resolve("outer-container")].concat(n.classes)},containerBehaviours:Bo([Ho.config({alpha:Wh(),omega:Xh()})])}));return $h(e)}var Yh=function(n,e){var t=Je.fromTag("input");di(t,{opacity:"0",position:"absolute",top:"-1000px",left:"-1000px"}),ft(n,t),so(t),e(t),st(t)},Kh=function(n){var e=n.getSelection();if(0<e.rangeCount){var t=e.getRangeAt(0),r=n.document.createRange();r.setStart(t.startContainer,t.startOffset),r.setEnd(t.endContainer,t.endOffset),e.removeAllRanges(),e.addRange(r)}},Jh=function(n,e){mo().each(function(n){cn(n,e)||lo(n)}),n.focus(),so(Je.fromDom(n.document.body)),Kh(n)},Qh={stubborn:function(n,e,t,r){function o(){Jh(e,r)}var i=Zd(t,"keydown",function(n){k(["input","textarea"],q(n.target()))||o()});return{toReading:function(){Yh(n,lo)},toEditing:o,onToolbarTouch:function(){},destroy:function(){i.unbind()}}},timid:function(n,e,t,r){function o(){lo(r)}return{toReading:function(){o()},toEditing:function(){Jh(e,r)},onToolbarTouch:function(){o()},destroy:w}}},Zh=function(e,r,t,o,n){function i(){r.run(function(n){n.refreshSelection()})}function u(n,e){var t=n-o.dom().scrollTop;r.run(function(n){n.scrollIntoView(t,t+e)})}function c(){r.run(function(n){n.clearSelection()})}function a(){e.getCursorBox().each(function(n){u(n.top(),n.height())}),r.run(function(n){n.syncHeight()})}var f=jg(e),s=Op(a,300),l=[e.onKeyup(function(){c(),s.throttle()}),e.onNodeChanged(i),e.onDomChanged(s.throttle),e.onDomChanged(i),e.onScrollToCursor(function(n){n.preventDefault(),s.throttle()}),e.onScrollToElement(function(n){n.element(),u(r,o)}),e.onToEditing(function(){r.run(function(n){n.toEditing()})}),e.onToReading(function(){r.run(function(n){n.toReading()})}),Zd(e.doc(),"touchend",function(n){cn(e.html(),n.target())||cn(e.body(),n.target())}),Zd(t,"transitionend",function(n){"height"===n.raw().propertyName&&function(){var e=Wi(t);r.run(function(n){n.setViewportOffset(e)}),i(),a()}()}),nm(t,"touchstart",function(n){r.run(function(n){n.highlightSelection()}),function(e){r.run(function(n){n.onToolbarTouch(e)})}(n),e.onTouchToolstrip()}),Zd(e.body(),"touchstart",function(n){c(),e.onTouchContent(),f.fireTouchstart(n)}),f.onTouchmove(),f.onTouchend(),Zd(e.body(),"click",function(n){n.kill()}),Zd(t,"touchmove",function(){e.onToolbarScrollStart()})];return{destroy:function(){C(l,function(n){n.unbind()})}}};var nv,ev,tv,rv,ov={},iv={exports:ov};nv=undefined,ev=ov,tv=iv,rv=undefined,function(n){"object"==typeof ev&&void 0!==tv?tv.exports=n():"function"==typeof nv&&nv.amd?nv([],n):("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).EphoxContactWrapper=n()}(function(){return function s(i,u,c){function a(e,n){if(!u[e]){if(!i[e]){var t="function"==typeof rv&&rv;if(!n&&t)return t(e,!0);if(f)return f(e,!0);var r=new Error("Cannot find module '"+e+"'");throw r.code="MODULE_NOT_FOUND",r}var o=u[e]={exports:{}};i[e][0].call(o.exports,function(n){return a(i[e][1][n]||n)},o,o.exports,s,i,u,c)}return u[e].exports}for(var f="function"==typeof rv&&rv,n=0;n<c.length;n++)a(c[n]);return a}({1:[function(n,e,t){var r,o,i=e.exports={};function u(){throw new Error("setTimeout has not been defined")}function c(){throw new Error("clearTimeout has not been defined")}function a(n){if(r===setTimeout)return setTimeout(n,0);if((r===u||!r)&&setTimeout)return r=setTimeout,setTimeout(n,0);try{return r(n,0)}catch(e){try{return r.call(null,n,0)}catch(e){return r.call(this,n,0)}}}!function(){try{r="function"==typeof setTimeout?setTimeout:u}catch(n){r=u}try{o="function"==typeof clearTimeout?clearTimeout:c}catch(n){o=c}}();var f,s=[],l=!1,d=-1;function m(){l&&f&&(l=!1,f.length?s=f.concat(s):d=-1,s.length&&g())}function g(){if(!l){var n=a(m);l=!0;for(var e=s.length;e;){for(f=s,s=[];++d<e;)f&&f[d].run();d=-1,e=s.length}f=null,l=!1,function t(n){if(o===clearTimeout)return clearTimeout(n);if((o===c||!o)&&clearTimeout)return o=clearTimeout,clearTimeout(n);try{return o(n)}catch(e){try{return o.call(null,n)}catch(e){return o.call(this,n)}}}(n)}}function p(n,e){this.fun=n,this.array=e}function h(){}i.nextTick=function(n){var e=new Array(arguments.length-1);if(1<arguments.length)for(var t=1;t<arguments.length;t++)e[t-1]=arguments[t];s.push(new p(n,e)),1!==s.length||l||a(g)},p.prototype.run=function(){this.fun.apply(null,this.array)},i.title="browser",i.browser=!0,i.env={},i.argv=[],i.version="",i.versions={},i.on=h,i.addListener=h,i.once=h,i.off=h,i.removeListener=h,i.removeAllListeners=h,i.emit=h,i.prependListener=h,i.prependOnceListener=h,i.listeners=function(n){return[]},i.binding=function(n){throw new Error("process.binding is not supported")},i.cwd=function(){return"/"},i.chdir=function(n){throw new Error("process.chdir is not supported")},i.umask=function(){return 0}},{}],2:[function(n,l,e){(function(e){function r(){}function i(n){if("object"!=typeof this)throw new TypeError("Promises must be constructed via new");if("function"!=typeof n)throw new TypeError("not a function");this._state=0,this._handled=!1,this._value=undefined,this._deferreds=[],s(n,this)}function o(r,o){for(;3===r._state;)r=r._value;0!==r._state?(r._handled=!0,i._immediateFn(function(){var n=1===r._state?o.onFulfilled:o.onRejected;if(null!==n){var e;try{e=n(r._value)}catch(t){return void c(o.promise,t)}u(o.promise,e)}else(1===r._state?u:c)(o.promise,r._value)})):r._deferreds.push(o)}function u(n,e){try{if(e===n)throw new TypeError("A promise cannot be resolved with itself.");if(e&&("object"==typeof e||"function"==typeof e)){var t=e.then;if(e instanceof i)return n._state=3,n._value=e,void a(n);if("function"==typeof t)return void s(function r(n,e){return function(){n.apply(e,arguments)}}(t,e),n)}n._state=1,n._value=e,a(n)}catch(o){c(n,o)}}function c(n,e){n._state=2,n._value=e,a(n)}function a(n){2===n._state&&0===n._deferreds.length&&i._immediateFn(function(){n._handled||i._unhandledRejectionFn(n._value)});for(var e=0,t=n._deferreds.length;e<t;e++)o(n,n._deferreds[e]);n._deferreds=null}function f(n,e,t){this.onFulfilled="function"==typeof n?n:null,this.onRejected="function"==typeof e?e:null,this.promise=t}function s(n,e){var t=!1;try{n(function(n){t||(t=!0,u(e,n))},function(n){t||(t=!0,c(e,n))})}catch(r){if(t)return;t=!0,c(e,r)}}var n,t;n=this,t=setTimeout,i.prototype["catch"]=function(n){return this.then(null,n)},i.prototype.then=function(n,e){var t=new this.constructor(r);return o(this,new f(n,e,t)),t},i.all=function(n){var a=Array.prototype.slice.call(n);return new i(function(o,i){if(0===a.length)return o([]);var u=a.length;function c(e,n){try{if(n&&("object"==typeof n||"function"==typeof n)){var t=n.then;if("function"==typeof t)return void t.call(n,function(n){c(e,n)},i)}a[e]=n,0==--u&&o(a)}catch(r){i(r)}}for(var n=0;n<a.length;n++)c(n,a[n])})},i.resolve=function(e){return e&&"object"==typeof e&&e.constructor===i?e:new i(function(n){n(e)})},i.reject=function(t){return new i(function(n,e){e(t)})},i.race=function(o){return new i(function(n,e){for(var t=0,r=o.length;t<r;t++)o[t].then(n,e)})},i._immediateFn="function"==typeof e?function(n){e(n)}:function(n){t(n,0)},i._unhandledRejectionFn=function(n){"undefined"!=typeof console&&console&&console.warn("Possible Unhandled Promise Rejection:",n)},i._setImmediateFn=function(n){i._immediateFn=n},i._setUnhandledRejectionFn=function(n){i._unhandledRejectionFn=n},void 0!==l&&l.exports?l.exports=i:n.Promise||(n.Promise=i)}).call(this,n("timers").setImmediate)},{timers:3}],3:[function(a,n,f){(function(n,e){var r=a("process/browser.js").nextTick,t=Function.prototype.apply,o=Array.prototype.slice,i={},u=0;function c(n,e){this._id=n,this._clearFn=e}f.setTimeout=function(){return new c(t.call(setTimeout,window,arguments),clearTimeout)},f.setInterval=function(){return new c(t.call(setInterval,window,arguments),clearInterval)},f.clearTimeout=f.clearInterval=function(n){n.close()},c.prototype.unref=c.prototype.ref=function(){},c.prototype.close=function(){this._clearFn.call(window,this._id)},f.enroll=function(n,e){clearTimeout(n._idleTimeoutId),n._idleTimeout=e},f.unenroll=function(n){clearTimeout(n._idleTimeoutId),n._idleTimeout=-1},f._unrefActive=f.active=function(n){clearTimeout(n._idleTimeoutId);var e=n._idleTimeout;0<=e&&(n._idleTimeoutId=setTimeout(function(){n._onTimeout&&n._onTimeout()},e))},f.setImmediate="function"==typeof n?n:function(n){var e=u++,t=!(arguments.length<2)&&o.call(arguments,1);return i[e]=!0,r(function(){i[e]&&(t?n.apply(null,t):n.call(null),f.clearImmediate(e))}),e},f.clearImmediate="function"==typeof e?e:function(n){delete i[n]}}).call(this,a("timers").setImmediate,a("timers").clearImmediate)},{"process/browser.js":1,timers:3}],4:[function(n,e,t){var r=n("promise-polyfill"),o="undefined"!=typeof window?window:Function("return this;")();e.exports={boltExport:o.Promise||r}},{"promise-polyfill":2}]},{},[4])(4)});function uv(n){l.setTimeout(function(){throw n},0)}function cv(n,e,t){return Math.abs(n-e)<=t?Fn.none():n<e?Fn.some(n+t):Fn.some(n-t)}function av(e,t){return wo([{width:320,height:480,keyboard:{portrait:300,landscape:240}},{width:320,height:568,keyboard:{portrait:300,landscape:240}},{width:375,height:667,keyboard:{portrait:305,landscape:240}},{width:414,height:736,keyboard:{portrait:320,landscape:240}},{width:768,height:1024,keyboard:{portrait:320,landscape:400}},{width:1024,height:1366,keyboard:{portrait:380,landscape:460}}],function(n){return function(n,e){return n?Fn.some(e):Fn.none()}(e<=n.width&&t<=n.height,n.keyboard)}).getOr({portrait:t/5,landscape:e/4})}function fv(n){var e=Ag(n).isPortrait(),t=function(n){return av(n.screen.width,n.screen.height)}(n),r=e?t.portrait:t.landscape;return(e?n.screen.height:n.screen.width)-n.innerHeight>r?0:r}function sv(n,e){var t=an(n).dom().defaultView;return Wi(n)+Wi(e)-fv(t)}function lv(n){return Hg(n,Mv)}function dv(n,e){var t=function(n){return Qr(n,Iv)}(n);return Dv.fixed(n,t,e)}function mv(n,e){return Dv.scroller(n,e)}function gv(n){var e=lv(n);return("true"===Qr(n,Rv)?mv:dv)(n,e)}function pv(n,e,t){var r=an(n).dom().defaultView.innerHeight;return Kr(n,Av,r+"px"),r-e-t}function hv(n){var e=gi(n,"top").getOr("0");return parseInt(e,10)}function vv(n){return parseInt(n.dom().scrollTop,10)}function yv(n,e){var t=e+Vv(n)+"px";Gi(n,"top",t)}var bv=iv.exports.boltExport,xv=function(n){var t=Fn.none(),e=[],r=function(n){o()?u(n):e.push(n)},o=function(){return t.isSome()},i=function(n){C(n,u)},u=function(e){t.each(function(n){l.setTimeout(function(){e(n)},0)})};return n(function(n){t=Fn.some(n),i(e),e=[]}),{get:r,map:function(t){return xv(function(e){r(function(n){e(t(n))})})},isReady:o}},wv={nu:xv,pure:function(e){return xv(function(n){n(e)})}},Sv=function(t){function n(n){t().then(n,uv)}return{map:function(n){return Sv(function(){return t().then(n)})},bind:function(e){return Sv(function(){return t().then(function(n){return e(n).toPromise()})})},anonBind:function(n){return Sv(function(){return t().then(function(){return n.toPromise()})})},toLazy:function(){return wv.nu(n)},toCached:function(){var n=null;return Sv(function(){return null===n&&(n=t()),n})},toPromise:t,get:n}},Tv=function(n){return Sv(function(){return new bv(n)})},Ov=function(n){return Sv(function(){return bv.resolve(n)})},kv=function(){var f=null;return{animate:function(r,o,n,i,e,t){function u(n){c=!0,e(n)}var c=!1;Rg.clearInterval(f);function a(n){Rg.clearInterval(f),u(n)}f=Rg.setInterval(function(){var t=r();cv(t,o,n).fold(function(){Rg.clearInterval(f),u(o)},function(n){if(i(n,a),!c){var e=r();(e!==n||Math.abs(e-o)>Math.abs(t-o))&&(Rg.clearInterval(f),u(o))}})},t)}}},Ev=sv,Cv=function(n,e,t){var r=sv(e,t),o=Wi(e)+Wi(t)-r;Gi(n,"padding-bottom",o+"px")},Dv=yt([{fixed:["element","property","offsetY"]},{scroller:["element","offsetY"]}]),Mv="data-"+_i.resolve("position-y-fixed"),Iv="data-"+_i.resolve("y-property"),Rv="data-"+_i.resolve("scrolling"),Av="data-"+_i.resolve("last-window-height"),Fv=function(n){var e=Yi(n,"["+Mv+"]");return de(e,gv)},Bv=function(r,o,i,u){function n(){var n=t.innerHeight;return function(n){return Hg(n,Av)}(r)<n}function e(){if(d){var n=Wi(i),e=Wi(u),t=pv(r,n,e);Kr(r,Mv,n+"px"),Gi(r,"height",t+"px"),Cv(o,r,u)}}var t=an(r).dom().defaultView,c=function(n){var e=Qr(n,"style");di(n,{position:"absolute",top:"0px"}),Kr(n,Mv,"0px"),Kr(n,Iv,"top");return{restore:function(){Kr(n,"style",e||""),no(n,Mv),no(n,Iv)}}}(i),a=Wi(i),f=Wi(u),s=function(n,e,t){var r=Qr(t,"style");vg.register(t),di(t,{position:"absolute",height:e+"px",width:"100%",top:n+"px"}),Kr(t,Mv,n+"px"),Kr(t,Rv,"true"),Kr(t,Iv,"top");return{restore:function(){vg.deregister(t),Kr(t,"style",r||""),no(t,Mv),no(t,Rv),no(t,Iv)}}}(a,pv(r,a,f),r),l=function(n){var e=Qr(n,"style");di(n,{position:"absolute",bottom:"0px"}),Kr(n,Mv,"0px"),Kr(n,Iv,"bottom");return{restore:function(){Kr(n,"style",e||""),no(n,Mv),no(n,Iv)}}}(u),d=!0;return Cv(o,r,u),{setViewportOffset:function(n){Kr(r,Mv,n+"px"),e()},isExpanding:n,isShrinking:m(n),refresh:e,restore:function(){d=!1,c.restore(),s.restore(),l.restore()}}},Vv=lv,Nv=kv(),jv="data-"+_i.resolve("last-scroll-top"),_v=function(t,r,o){return Tv(function(n){var e=d(vv,t);Nv.animate(e,r,15,function(n){t.dom().scrollTop=n,Gi(t,"top",hv(t)+15+"px")},function(){t.dom().scrollTop=r,Gi(t,"top",o+"px"),n(r)},10)})},Pv=function(o,i){return Tv(function(n){var e=d(vv,o);Kr(o,jv,e());var t=Math.abs(i-e()),r=Math.ceil(t/10);Nv.animate(e,i,r,function(n,e){Hg(o,jv)!==o.dom().scrollTop?e(o.dom().scrollTop):(o.dom().scrollTop=n,Kr(o,jv,n))},function(){o.dom().scrollTop=i,Kr(o,jv,i),n(i)},10)})},Hv=function(i,u){return Tv(function(n){function e(n){Gi(i,"top",n+"px")}var t=d(hv,i),r=Math.abs(u-t()),o=Math.ceil(r/10);Nv.animate(t,u,o,e,function(){e(u),n(u)},10)})},zv=function(e,t,r){var o=an(e).dom().defaultView;return Tv(function(n){yv(e,r),yv(t,r),o.scrollTo(0,r),n(r)})};function Lv(i,n){return n(function(t){var r=[],o=0;0===i.length?t([]):C(i,function(n,e){n.get(function(e){return function(n){r[e]=n,++o>=i.length&&t(r)}}(e))})})}function Gv(n,r){return n.fold(function(n,e,t){return function(n,e,t,r){return Gi(n,e,t+r+"px"),Ov(r)}(n,e,r,t)},function(n,e){return function(n,e,t){var r=e+t,o=gi(n,"top").getOr(t),i=r-parseInt(o,10),u=n.dom().scrollTop+i;return _v(n,u,r)}(n,r,e)})}function Uv(e,t,n,r,o,i){var u=function f(t){var r=Pn(wv.pure({}));return{start:function(e){var n=wv.nu(function(n){return t(e).get(n)});r.set(n)},idle:function(n){r.get().get(function(){n()})}}}(function(n){return zv(e,t,n)}),c=Op(function(){u.idle(function(){Wv(n,r.pageYOffset).get(function(){(function(){var n=jp(i);return Fn.from(n[0]).bind(function(n){var e=n.top()-t.dom().scrollTop;return e>r.innerHeight+5||e<-5?Fn.some({top:b(e),bottom:b(e+n.height())}):Fn.none()})})().each(function(n){t.dom().scrollTop=t.dom().scrollTop+n.top()}),u.start(0),o.refresh()})})},1e3),a=Zd(Je.fromDom(r),"scroll",function(){r.pageYOffset<0||c.throttle()});return Wv(n,r.pageYOffset).get(y),{unbind:a.unbind}}var $v=function(n,e,t,r,o){var i=Ev(e,t),u=d(Kh,n);i<r||i<o?Pv(e,e.dom().scrollTop-i+o).get(u):r<0&&Pv(e,e.dom().scrollTop+r).get(u)},Wv=function(n,e){var t=Fv(n);return function(n){return Lv(n,Tv)}(de(t,function(n){return Gv(n,e)}))},Xv=function(n){var t=n.cWin(),e=n.ceBody(),r=n.socket(),o=n.toolstrip(),i=n.toolbar(),u=n.contentElement(),c=n.keyboardType(),a=n.outerWindow(),f=n.dropup(),s=Bv(r,e,o,f),l=c(n.outerBody(),t,rt(),u,o,i),d=Fg(a,{onChange:w,onReady:s.refresh});d.onAdjustment(function(){s.refresh()});var m=Zd(Je.fromDom(a),"resize",function(){s.isExpanding()&&s.refresh()}),g=Uv(o,r,n.outerBody(),a,s,t),p=function v(t,e){var n=t.document,r=Je.fromTag("div");function o(n){var e=Je.fromTag("span");return Md(e,[_i.resolve("layer-editor"),_i.resolve("unfocused-selection")]),di(e,{left:n.left()+"px",top:n.top()+"px",width:n.width()+"px",height:n.height()+"px"}),e}io(r,_i.resolve("unfocused-selections")),ft(Je.fromDom(n.documentElement),r);var i=Zd(r,"touchstart",function(n){n.prevent(),Jh(t,e),u()}),u=function(){pn(r)};return{update:function(){u();var n=jp(t),e=de(n,o);gn(r,e)},isActive:function(){return 0<at(r).length},destroy:function(){i.unbind(),st(r)},clear:u}}(t,u),h=function(){p.clear()};return{toEditing:function(){l.toEditing(),h()},toReading:function(){l.toReading()},onToolbarTouch:function(n){l.onToolbarTouch(n)},refreshSelection:function(){p.isActive()&&p.update()},clearSelection:h,highlightSelection:function(){p.update()},scrollIntoView:function(n,e){$v(t,r,f,n,e)},updateToolbarPadding:w,setViewportOffset:function(n){s.setViewportOffset(n),Hv(r,n).get(y)},syncHeight:function(){Gi(u,"height",u.dom().contentWindow.document.body.scrollHeight+"px")},refreshStructure:s.refresh,destroy:function(){s.restore(),d.destroy(),g.unbind(),m.unbind(),l.destroy(),p.destroy(),Yh(rt(),lo)}}},qv=function(r,n){var o=qp(),i=bd(),u=bd(),c=yd(),a=yd();return{enter:function(){n.hide();var t=Je.fromDom(l.document);zp.getActiveApi(r.editor).each(function(n){i.set({socketHeight:gi(r.socket,"height"),iframeHeight:gi(n.frame(),"height"),outerScroll:l.document.body.scrollTop}),u.set({exclusives:uh.exclusive(t,"."+vg.scrollable())}),io(r.container,_i.resolve("fullscreen-maximized")),Wp(r.container,n.body()),o.maximize(),Gi(r.socket,"overflow","scroll"),Gi(r.socket,"-webkit-overflow-scrolling","touch"),so(n.body());var e=nn(["cWin","ceBody","socket","toolstrip","toolbar","dropup","contentElement","cursor","keyboardType","isScrolling","outerWindow","outerBody"],[]);c.set(Xv(e({cWin:n.win(),ceBody:n.body(),socket:r.socket,toolstrip:r.toolstrip,toolbar:r.toolbar,dropup:r.dropup.element(),contentElement:n.frame(),cursor:w,outerBody:r.body,outerWindow:r.win,keyboardType:Qh.stubborn,isScrolling:function(){return u.get().exists(function(n){return n.socket.isScrolling()})}}))),c.run(function(n){n.syncHeight()}),a.set(Zh(n,c,r.toolstrip,r.socket,r.dropup))})},refreshStructure:function(){c.run(function(n){n.refreshStructure()})},exit:function(){o.restore(),a.clear(),c.clear(),n.show(),i.on(function(n){n.socketHeight.each(function(n){Gi(r.socket,"height",n)}),n.iframeHeight.each(function(n){Gi(r.editor.getFrame(),"height",n)}),l.document.body.scrollTop=n.scrollTop}),i.clear(),u.on(function(n){n.exclusives.unbind()}),u.clear(),co(r.container,_i.resolve("fullscreen-maximized")),Xp(),vg.deregister(r.toolbar),pi(r.socket,"overflow"),pi(r.socket,"-webkit-overflow-scrolling"),lo(r.editor.getFrame()),zp.getActiveApi(r.editor).each(function(n){n.clearSelection()})}}},Yv=function(n){var e=Xt("Getting IosWebapp schema",Jp,n);Gi(e.toolstrip,"width","100%"),Gi(e.container,"position","relative");var t=Lm(Kp(function(){e.setReadOnly(e.readOnlyOnInit()),o.enter()},e.translate));e.alloy.add(t);var r={show:function(){e.alloy.add(t)},hide:function(){e.alloy.remove(t)}},o=qv(e,r);return{setReadOnly:e.setReadOnly,refreshStructure:o.refreshStructure,enter:o.enter,exit:o.exit,destroy:w}};function Kv(n,e,t){n.system().broadcastOn([Uo.formatChanged()],{command:e,state:t})}function Jv(m){return{getNotificationManagerImpl:function(){return{open:b({progressBar:{value:w},close:w,text:w,getEl:b(null),moveTo:w,moveRel:w,settings:{}}),close:w,reposition:w,getArgs:b({})}},renderUI:function(){var n=m.getElement(),e=Zv(m);!1===function(n){return!1===n.settings.skin}(m)?(m.contentCSS.push(e.content),zo.DOM.styleSheetLoader.load(e.ui,ey(m))):ey(m)();function t(){m.fire("ScrollIntoView")}var f=L().os.isAndroid()?function c(n){var e=qh({classes:[_i.resolve("android-container")]}),t=ch(),r=yd(),o=Mh(r),i=Ih(),u=Sh(w,n);return e.add(t.wrapper()),e.add(i),e.add(u.component()),{system:b(e),element:e.element,init:function(n){r.set(Qp(n))},exit:function(){r.run(function(n){n.exit(),og.remove(i,o)})},setToolbarGroups:function(n){var e=t.createGroups(n);t.setGroups(e)},setContextToolbar:function(n){var e=t.createGroups(n);t.setContextToolbar(e)},focusToolbar:function(){t.focus()},restoreToolbar:function(){t.restoreToolbar()},updateMode:function(n){Rh(i,o,n,e.root())},socket:b(i),dropup:b(u)}}(t):function a(n){var e=qh({classes:[_i.resolve("ios-container")]}),t=ch(),r=yd(),o=Mh(r),i=Ih(),u=Sh(function(){r.run(function(n){n.refreshStructure()})},n);return e.add(t.wrapper()),e.add(i),e.add(u.component()),{system:b(e),element:e.element,init:function(n){r.set(Yv(n))},exit:function(){r.run(function(n){og.remove(i,o),n.exit()})},setToolbarGroups:function(n){var e=t.createGroups(n);t.setGroups(e)},setContextToolbar:function(n){var e=t.createGroups(n);t.setContextToolbar(e)},focusToolbar:function(){t.focus()},restoreToolbar:function(){t.restoreToolbar()},updateMode:function(n){Rh(i,o,n,e.root())},socket:b(i),dropup:b(u)}}(t);!function(n,e){gt(n,e,dn)}(Je.fromDom(n),f.system());function s(n,e,t,r){!1===r&&m.selection.collapse();var o=i(n,e,t);f.setToolbarGroups(!0===r?o.readOnly:o.main),m.setMode(!0===r?"readonly":"design"),m.fire(!0===r?ty():ry()),f.updateMode(r)}function l(n,e){return m.on(n,e),{unbind:function(){m.off(n)}}}var r=n.ownerDocument.defaultView,d=Fg(r,{onChange:function(){f.system().broadcastOn([Uo.orientationChanged()],{width:Bg(r)})},onReady:w}),i=function(n,e,t){var r=n.get();return{readOnly:r.backToMask.concat(e.get()),main:r.backToMask.concat(t.get())}};return m.on("init",function(){f.init({editor:{getFrame:function(){return Je.fromDom(m.contentAreaContainer.querySelector("iframe"))},onDomChanged:function(){return{unbind:w}},onToReading:function(n){return l(ty(),n)},onToEditing:function(n){return l(ry(),n)},onScrollToCursor:function(e){m.on("ScrollIntoView",function(n){e(n)});return{unbind:function(){m.off("ScrollIntoView"),d.destroy()}}},onTouchToolstrip:function(){n()},onTouchContent:function(){(function(n){return go(n).bind(function(n){return f.system().getByDom(n).toOption()})})(Je.fromDom(m.editorContainer.querySelector("."+_i.resolve("toolbar")))).each($),f.restoreToolbar(),n()},onTapContent:function(n){var e=n.target();if("img"===q(e))m.selection.select(e.dom()),n.kill();else if("a"===q(e)){f.system().getByDom(Je.fromDom(m.editorContainer)).each(function(n){Ho.isAlpha(n)&&Go(e.dom())})}}},container:Je.fromDom(m.editorContainer),socket:Je.fromDom(m.contentAreaContainer),toolstrip:Je.fromDom(m.editorContainer.querySelector("."+_i.resolve("toolstrip"))),toolbar:Je.fromDom(m.editorContainer.querySelector("."+_i.resolve("toolbar"))),dropup:f.dropup(),alloy:f.system(),translate:w,setReadOnly:function(n){s(a,c,u,n)},readOnlyOnInit:function(){return!1}});var n=function(){f.dropup().disappear(function(){f.system().broadcastOn([Uo.dropupDismissed()],{})})},e={label:"The first group",scrollable:!1,items:[Ws.forToolbar("back",function(){m.selection.collapse(),f.exit()},{},m)]},t={label:"Back to read only",scrollable:!1,items:[Ws.forToolbar("readonly-back",function(){s(a,c,u,!0)},{},m)]},r=Cg(f,m),o=Dg(m.settings,r),i={label:"The extra group",scrollable:!1,items:[]},u=Pn([{label:"the action group",scrollable:!0,items:o},i]),c=Pn([{label:"The read only mode group",scrollable:!0,items:[]},i]),a=Pn({backToMask:[e],backToReadOnly:[t]});ny(f,m)}),m.on("remove",function(){f.exit()}),m.on("detach",function(){!function(e){var n=at(e.element());C(n,function(n){e.getByDom(n).each(lt)}),st(e.element())}(f.system()),f.system().destroy()}),{iframeContainer:f.socket().element().dom(),editorContainer:f.element().dom()}}}}var Qv=tinymce.util.Tools.resolve("tinymce.EditorManager"),Zv=function(n){var e=Dt(n.settings,"skin_url").fold(function(){return Qv.baseURL+"/skins/ui/oxide"},function(n){return n});return{content:e+"/content.mobile.min.css",ui:e+"/skin.mobile.min.css"}},ny=function(r,n){var e=Bn(n.formatter.get());C(e,function(e){n.formatter.formatChanged(e,function(n){Kv(r,e,n)})}),C(["ul","ol"],function(t){n.selection.selectorChanged(t,function(n,e){Kv(r,t,n)})})},ey=(b(["x-small","small","medium","large","x-large"]),function(n){function e(){n._skinLoaded=!0,n.fire("SkinLoaded")}return function(){n.initialized?e():n.on("init",e)}}),ty=b("toReading"),ry=b("toEditing");!function iy(){Lo.add("mobile",Jv)}()}(window);
\ No newline at end of file
diff --git a/admin/js/vendors/tinymce/js/tinymce/themes/silver/theme.min.js b/admin/js/vendors/tinymce/js/tinymce/themes/silver/theme.min.js
new file mode 100644 (file)
index 0000000..3a12a69
--- /dev/null
@@ -0,0 +1,9 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ *
+ * Version: 5.1.5 (2019-12-19)
+ */
+!function(v){"use strict";function Z(){}function i(e,o){return function(){for(var n=[],t=0;t<arguments.length;t++)n[t]=arguments[t];return e(o.apply(null,n))}}function l(n){return n}var nn=function(n){return function(){return n}};function d(o){for(var r=[],n=1;n<arguments.length;n++)r[n-1]=arguments[n];return function(){for(var n=[],t=0;t<arguments.length;t++)n[t]=arguments[t];var e=r.concat(n);return o.apply(null,e)}}function b(e){return function(){for(var n=[],t=0;t<arguments.length;t++)n[t]=arguments[t];return!e.apply(null,n)}}function r(n){return function(){throw new Error(n)}}var u=nn(!1),a=nn(!0),n=tinymce.util.Tools.resolve("tinymce.ThemeManager"),N=function(){return(N=Object.assign||function(n){for(var t,e=1,o=arguments.length;e<o;e++)for(var r in t=arguments[e])Object.prototype.hasOwnProperty.call(t,r)&&(n[r]=t[r]);return n}).apply(this,arguments)};function c(n,t){var e={};for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&t.indexOf(o)<0&&(e[o]=n[o]);if(null!=n&&"function"==typeof Object.getOwnPropertySymbols){var r=0;for(o=Object.getOwnPropertySymbols(n);r<o.length;r++)t.indexOf(o[r])<0&&Object.prototype.propertyIsEnumerable.call(n,o[r])&&(e[o[r]]=n[o[r]])}return e}function g(){for(var n=0,t=0,e=arguments.length;t<e;t++)n+=arguments[t].length;var o=Array(n),r=0;for(t=0;t<e;t++)for(var i=arguments[t],u=0,a=i.length;u<a;u++,r++)o[r]=i[u];return o}function t(){return s}var e,s=(e={fold:function(n,t){return n()},is:u,isSome:u,isNone:a,getOr:m,getOrThunk:f,getOrDie:function(n){throw new Error(n||"error: getOrDie called on none.")},getOrNull:nn(null),getOrUndefined:nn(undefined),or:m,orThunk:f,map:t,each:Z,bind:t,exists:u,forall:a,filter:t,equals:o,equals_:o,toArray:function(){return[]},toString:nn("none()")},Object.freeze&&Object.freeze(e),e);function o(n){return n.isNone()}function f(n){return n()}function m(n){return n}function p(t){return function(n){return function(n){if(null===n)return"null";var t=typeof n;return"object"==t&&(Array.prototype.isPrototypeOf(n)||n.constructor&&"Array"===n.constructor.name)?"array":"object"==t&&(String.prototype.isPrototypeOf(n)||n.constructor&&"String"===n.constructor.name)?"string":t}(n)===t}}function h(n,t){if(fn(n)){for(var e=0,o=n.length;e<o;++e)if(!0!==t(n[e]))return!1;return!0}return!1}function y(n,t){return pn.call(n,t)}function x(n,t){for(var e=0,o=n.length;e<o;e++){if(t(n[e],e))return!0}return!1}function w(n,t){for(var e=[],o=0;o<n.length;o+=t){var r=gn.call(n,o,o+t);e.push(r)}return e}function S(n,t){for(var e=n.length,o=new Array(e),r=0;r<e;r++){var i=n[r];o[r]=t(i,r)}return o}function C(n,t){for(var e=[],o=0,r=n.length;o<r;o++){var i=n[o];t(i,o)&&e.push(i)}return e}function k(n,t,e){return function(n,t){for(var e=n.length-1;0<=e;e--){t(n[e],e)}}(n,function(n){e=t(e,n)}),e}function O(n,t,e){return bn(n,function(n){e=t(e,n)}),e}function E(n,t){for(var e=0,o=n.length;e<o;e++){var r=n[e];if(t(r,e))return on.some(r)}return on.none()}function T(n,t){for(var e=0,o=n.length;e<o;e++){if(t(n[e],e))return on.some(e)}return on.none()}function H(n){for(var t=[],e=0,o=n.length;e<o;++e){if(!fn(n[e]))throw new Error("Arr.flatten item "+e+" was not an array, input: "+n);hn.apply(t,n[e])}return t}function B(n,t){var e=S(n,t);return H(e)}function D(n,t){for(var e=0,o=n.length;e<o;++e){if(!0!==t(n[e],e))return!1}return!0}function A(n){var t=gn.call(n,0);return t.reverse(),t}function _(n,t){return C(n,function(n){return!vn(t,n)})}function M(n){return[n]}function F(n){return 0===n.length?on.none():on.some(n[n.length-1])}function P(n,e){return kn(n,function(n,t){return{k:t,v:e(n,t)}})}function I(n,t){for(var e=wn(n),o=0,r=e.length;o<r;o++){var i=e[o],u=n[i];if(t(u,i,n))return on.some(u)}return on.none()}function R(n){return On(n,function(n){return n})}function V(n,t){return En(n,t)?on.from(n[t]):on.none()}function z(u){return function(){for(var n=new Array(arguments.length),t=0;t<n.length;t++)n[t]=arguments[t];if(0===n.length)throw new Error("Can't merge zero objects");for(var e={},o=0;o<n.length;o++){var r=n[o];for(var i in r)Bn.call(r,i)&&(e[i]=u(e[i],r[i]))}return e}}function L(e){var o,r=!1;return function(){for(var n=[],t=0;t<arguments.length;t++)n[t]=arguments[t];return r||(r=!0,o=e.apply(null,n)),o}}function j(n){return _n.defaultedThunk(nn(n))}function U(t){return function(n){return En(n,t)?on.from(n[t]):on.none()}}function W(n,t){return U(t)(n)}function G(n,t){var e={};return e[n]=t,e}function X(n,t){return function(n,e){var o={};return Cn(n,function(n,t){vn(e,t)||(o[t]=n)}),o}(n,t)}function Y(n,t){return function(t,e){return function(n){return En(n,t)?n[t]:e}}(n,t)}function q(n,t){return G(n,t)}function K(n){return function(n){var t={};return bn(n,function(n){t[n.key]=n.value}),t}(n)}function J(n,t){var e=function(n){var t=[],e=[];return bn(n,function(n){n.fold(function(n){t.push(n)},function(n){e.push(n)})}),{errors:t,values:e}}(n);return 0<e.errors.length?function(n){return an.error(H(n))}(e.errors):function(n,t){return 0===n.length?an.value(t):an.value(Dn(t,An.apply(undefined,n)))}(e.values,t)}function $(n,t){return function(n,t){return En(n,t)&&n[t]!==undefined&&null!==n[t]}(n,t)}var Q,tn,en=function(e){function n(){return r}function t(n){return n(e)}var o=nn(e),r={fold:function(n,t){return t(e)},is:function(n){return e===n},isSome:a,isNone:u,getOr:o,getOrThunk:o,getOrDie:o,getOrNull:o,getOrUndefined:o,or:n,orThunk:n,map:function(n){return en(n(e))},each:function(n){n(e)},bind:t,exists:t,forall:t,filter:function(n){return n(e)?r:s},toArray:function(){return[e]},toString:function(){return"some("+e+")"},equals:function(n){return n.is(e)},equals_:function(n,t){return n.fold(u,function(n){return t(e,n)})}};return r},on={some:en,none:t,from:function(n){return null===n||n===undefined?s:en(n)}},rn=function(e){return{is:function(n){return e===n},isValue:a,isError:u,getOr:nn(e),getOrThunk:nn(e),getOrDie:nn(e),or:function(n){return rn(e)},orThunk:function(n){return rn(e)},fold:function(n,t){return t(e)},map:function(n){return rn(n(e))},mapError:function(n){return rn(e)},each:function(n){n(e)},bind:function(n){return n(e)},exists:function(n){return n(e)},forall:function(n){return n(e)},toOption:function(){return on.some(e)}}},un=function(e){return{is:u,isValue:u,isError:a,getOr:l,getOrThunk:function(n){return n()},getOrDie:function(){return r(String(e))()},or:function(n){return n},orThunk:function(n){return n()},fold:function(n,t){return n(e)},map:function(n){return un(e)},mapError:function(n){return un(n(e))},each:Z,bind:function(n){return un(e)},exists:u,forall:a,toOption:on.none}},an={value:rn,error:un,fromOption:function(n,t){return n.fold(function(){return un(t)},rn)}},cn=p("string"),sn=p("object"),fn=p("array"),ln=p("boolean"),dn=p("function"),mn=p("number"),gn=Array.prototype.slice,pn=Array.prototype.indexOf,hn=Array.prototype.push,vn=function(n,t){return-1<y(n,t)},bn=function(n,t){for(var e=0,o=n.length;e<o;e++){t(n[e],e)}},yn=function(n){return 0===n.length?on.none():on.some(n[0])},xn=dn(Array.from)?Array.from:function(n){return gn.call(n)},wn=Object.keys,Sn=Object.hasOwnProperty,Cn=function(n,t){for(var e=wn(n),o=0,r=e.length;o<r;o++){var i=e[o];t(n[i],i)}},kn=function(n,o){var r={};return Cn(n,function(n,t){var e=o(n,t);r[e.k]=e.v}),r},On=function(n,e){var o=[];return Cn(n,function(n,t){o.push(e(n,t))}),o},En=function(n,t){return Sn.call(n,t)},Tn=function(u){if(!fn(u))throw new Error("cases must be an array");if(0===u.length)throw new Error("there must be at least one case");var a=[],e={};return bn(u,function(n,o){var t=wn(n);if(1!==t.length)throw new Error("one and only one name per case");var r=t[0],i=n[r];if(e[r]!==undefined)throw new Error("duplicate key detected:"+r);if("cata"===r)throw new Error("cannot have a case named cata (sorry)");if(!fn(i))throw new Error("case arguments must be an array");a.push(r),e[r]=function(){var n=arguments.length;if(n!==i.length)throw new Error("Wrong number of arguments to case "+r+". Expected "+i.length+" ("+i+"), got "+n);for(var e=new Array(n),t=0;t<e.length;t++)e[t]=arguments[t];return{fold:function(){if(arguments.length!==u.length)throw new Error("Wrong number of arguments to fold. Expected "+u.length+", got "+arguments.length);return arguments[o].apply(null,e)},match:function(n){var t=wn(n);if(a.length!==t.length)throw new Error("Wrong number of arguments to match. Expected: "+a.join(",")+"\nActual: "+t.join(","));if(!D(a,function(n){return vn(t,n)}))throw new Error("Not all branches were specified when using match. Specified: "+t.join(", ")+"\nRequired: "+a.join(", "));return n[r].apply(null,e)},log:function(n){v.console.log(n,{constructors:a,constructor:r,params:e})}}}}),e},Bn=Object.prototype.hasOwnProperty,Dn=z(function(n,t){return sn(n)&&sn(t)?Dn(n,t):t}),An=z(function(n,t){return t}),_n=Tn([{strict:[]},{defaultedThunk:["fallbackThunk"]},{asOption:[]},{asDefaultedOptionThunk:["fallbackThunk"]},{mergeWithThunk:["baseThunk"]}]),Mn=_n.strict,Fn=_n.asOption,In=_n.defaultedThunk,Rn=_n.mergeWithThunk,Vn=(Tn([{bothErrors:["error1","error2"]},{firstError:["error1","value2"]},{secondError:["value1","error2"]},{bothValues:["value1","value2"]}]),function(n){return U(n)}),Nn=function(n,t){return W(n,t)};(tn=Q=Q||{})[tn.Error=0]="Error",tn[tn.Value=1]="Value";function Hn(n,t,e){return n.stype===Q.Error?t(n.serror):e(n.svalue)}function Pn(n){return{stype:Q.Value,svalue:n}}function zn(n){return{stype:Q.Error,serror:n}}function Ln(n){return i(qt,H)(n)}function jn(n){return sn(n)&&100<wn(n).length?" removed due to size":JSON.stringify(n,null,2)}function Un(n,t){return qt([{path:n,getErrorInfo:t}])}function Wn(n,t,e){return W(t,e).fold(function(){return function(n,t,e){return Un(n,function(){return'Could not find valid *strict* value for "'+t+'" in '+jn(e)})}(n,e,t)},Xt)}function Gn(n,t,e){var o=W(n,t).fold(function(){return e(n)},l);return Xt(o)}function Xn(u,a,n,c){return n.fold(function(o,e,n,r){function i(n){var t=r.extract(u.concat([o]),c,n);return $t(t,function(n){return G(e,c(n))})}function t(n){return n.fold(function(){var n=G(e,c(on.none()));return Xt(n)},function(n){var t=r.extract(u.concat([o]),c,n);return $t(t,function(n){return G(e,c(on.some(n)))})})}return n.fold(function(){return Kt(Wn(u,a,o),i)},function(n){return Kt(Gn(a,o,n),i)},function(){return Kt(function(n,t){return Xt(W(n,t))}(a,o),t)},function(n){return Kt(function(t,n,e){var o=W(t,n).map(function(n){return!0===n?e(t):n});return Xt(o)}(a,o,n),t)},function(n){var t=n(a),e=$t(Gn(a,o,nn({})),function(n){return Dn(t,n)});return Kt(e,i)})},function(n,t){var e=t(a);return Xt(G(n,c(e)))})}function Yn(o){return{extract:function(t,n,e){return Jt(o(e,n),function(n){return function(n,t){return Un(n,function(){return t})}(t,n)})},toString:function(){return"val"},toDsl:function(){return te.itemOf(o)}}}function qn(n){var i=re(n),u=k(n,function(t,n){return n.fold(function(n){return Dn(t,q(n,!0))},nn(t))},{});return{extract:function(n,t,e){var o=ln(e)?[]:function(t){var n=wn(t);return C(n,function(n){return $(t,n)})}(e),r=C(o,function(n){return!$(u,n)});return 0===r.length?i.extract(n,t,e):function(n,t){return Un(n,function(){return"There are unsupported fields: ["+t.join(", ")+"] specified"})}(n,r)},toString:i.toString,toDsl:i.toDsl}}function Kn(r){return{extract:function(e,o,n){var t=S(n,function(n,t){return r.extract(e.concat(["["+t+"]"]),o,n)});return ne(t)},toString:function(){return"array("+r.toString()+")"},toDsl:function(){return te.arrOf(r)}}}function Jn(i,u){return{extract:function(e,o,r){var n=wn(r),t=function(n,t){return Kn(Yn(i)).extract(n,l,t)}(e,n);return Kt(t,function(n){var t=S(n,function(n){return oe.field(n,n,Mn(),u)});return re(t).extract(e,o,r)})},toString:function(){return"setOf("+u.toString()+")"},toDsl:function(){return te.setOf(i,u)}}}function $n(t,e,o,n,r){return Nn(n,r).fold(function(){return function(n,t,e){return Un(n,function(){return'The chosen schema: "'+e+'" did not exist in branches: '+jn(t)})}(t,n,r)},function(n){return n.extract(t.concat(["branch: "+r]),e,o)})}function Qn(n,r){return{extract:function(t,e,o){return Nn(o,n).fold(function(){return function(n,t){return Un(n,function(){return'Choice schema did not contain choice key: "'+t+'"'})}(t,n)},function(n){return $n(t,e,o,r,n)})},toString:function(){return"chooseOn("+n+"). Possible values: "+wn(r)},toDsl:function(){return te.choiceOf(n,r)}}}function Zn(t){return Yn(function(n){return t(n).fold(qt,Xt)})}function nt(t,n){return Jn(function(n){return Wt(t(n))},n)}function tt(n,t,e){return Gt(function(n,t,e,o){var r=t.extract([n],e,o);return Qt(r,function(n){return{input:o,errors:n}})}(n,t,l,e))}function et(n){return n.fold(function(n){throw new Error(le(n))},l)}function ot(n,t,e){return et(tt(n,t,e))}function rt(n,t){return Qn(n,t)}function it(n,t){return Qn(n,P(t,re))}function ut(e,o){return Yn(function(n){var t=typeof n;return e(n)?Xt(n):qt("Expected type: "+o+" but got: "+t)})}function at(t){return Zn(function(n){return vn(t,n)?an.value(n):an.error('Unsupported value: "'+n+'", choose one of "'+t.join(", ")+'".')})}function ct(n){return ce(n,n,Mn(),ie())}function st(n,t){return ce(n,n,Mn(),t)}function ft(n){return st(n,ge)}function lt(n,t){return ce(n,n,Mn(),at(t))}function dt(n){return st(n,he)}function mt(n,t){return ce(n,n,Mn(),re(t))}function gt(n,t){return ce(n,n,Mn(),ue(t))}function pt(n,t){return ce(n,n,Mn(),Kn(t))}function ht(n){return ce(n,n,Fn(),ie())}function vt(n,t){return ce(n,n,Fn(),t)}function bt(n){return vt(n,me)}function yt(n){return vt(n,ge)}function xt(n){return vt(n,he)}function wt(n,t){return vt(n,re(t))}function St(n,t){return ce(n,n,j(t),ie())}function Ct(n,t,e){return ce(n,n,j(t),e)}function kt(n,t){return Ct(n,t,me)}function Ot(n,t){return Ct(n,t,ge)}function Et(n,t,e){return Ct(n,t,at(e))}function Tt(n,t){return Ct(n,t,pe)}function Bt(n,t){return Ct(n,t,he)}function Dt(n,t,e){return Ct(n,t,re(e))}function At(n,t){return ae(n,t)}function _t(n,t,e){return 0!=(n.compareDocumentPosition(t)&e)}function Mt(n,t){var e=function(n,t){for(var e=0;e<n.length;e++){var o=n[e];if(o.test(t))return o}return undefined}(n,t);if(!e)return{major:0,minor:0};function o(n){return Number(t.replace(e,"$"+n))}return ke(o(1),o(2))}function Ft(n,t){return function(){return t===n}}function It(n,t){return function(){return t===n}}function Rt(n,t){var e=String(t).toLowerCase();return E(n,function(n){return n.search(e)})}function Vt(n,t){return-1!==n.indexOf(t)}function Nt(t){return function(n){return Vt(n,t)}}function Ht(){return Le.get()}function Pt(n,t){var e=n.dom();if(e.nodeType!==Ge)return!1;var o=e;if(o.matches!==undefined)return o.matches(t);if(o.msMatchesSelector!==undefined)return o.msMatchesSelector(t);if(o.webkitMatchesSelector!==undefined)return o.webkitMatchesSelector(t);if(o.mozMatchesSelector!==undefined)return o.mozMatchesSelector(t);throw new Error("Browser lacks native selectors")}function zt(n){return n.nodeType!==Ge&&n.nodeType!==Xe||0===n.childElementCount}function Lt(n,t){var e=t===undefined?v.document:t.dom();return zt(e)?[]:S(e.querySelectorAll(n),we.fromDom)}function jt(n,t){return n.dom()===t.dom()}function Ut(n,t){return jt(n.element(),t.event().target())}var Wt=function(n){return n.fold(zn,Pn)},Gt=function(n){return Hn(n,an.error,an.value)},Xt=Pn,Yt=function(n){var t=[],e=[];return bn(n,function(n){Hn(n,function(n){return e.push(n)},function(n){return t.push(n)})}),{values:t,errors:e}},qt=zn,Kt=function(n,t){return n.stype===Q.Value?t(n.svalue):n},Jt=function(n,t){return n.stype===Q.Error?t(n.serror):n},$t=function(n,t){return n.stype===Q.Value?{stype:Q.Value,svalue:t(n.svalue)}:n},Qt=function(n,t){return n.stype===Q.Error?{stype:Q.Error,serror:t(n.serror)}:n},Zt=function(n,t){var e=Yt(n);return 0<e.errors.length?Ln(e.errors):function(n,t){return 0<n.length?Xt(Dn(t,An.apply(undefined,n))):Xt(t)}(e.values,t)},ne=function(n){var t=Yt(n);return 0<t.errors.length?Ln(t.errors):Xt(t.values)},te=Tn([{setOf:["validator","valueType"]},{arrOf:["valueType"]},{objOf:["fields"]},{itemOf:["validator"]},{choiceOf:["key","branches"]},{thunk:["description"]},{func:["args","outputSchema"]}]),ee=Tn([{field:["name","presence","type"]},{state:["name"]}]),oe=Tn([{field:["key","okey","presence","prop"]},{state:["okey","instantiator"]}]),re=function(o){return{extract:function(n,t,e){return function(t,e,n,o){var r=S(n,function(n){return Xn(t,e,n,o)});return Zt(r,{})}(n,e,o,t)},toString:function(){return"obj{\n"+S(o,function(n){return n.fold(function(n,t,e,o){return n+" -> "+o.toString()},function(n,t){return"state("+n+")"})}).join("\n")+"}"},toDsl:function(){return te.objOf(S(o,function(n){return n.fold(function(n,t,e,o){return ee.field(n,e,o)},function(n,t){return ee.state(n)})}))}}},ie=nn(Yn(Xt)),ue=i(Kn,re),ae=oe.state,ce=oe.field,se=Yn(Xt),fe=function(o){return{extract:function(n,t,e){return o().extract(n,t,e)},toString:function(){return o().toString()},toDsl:function(){return o().toDsl()}}},le=function(n){return"Errors: \n"+function(n){var t=10<n.length?n.slice(0,10).concat([{path:[],getErrorInfo:function(){return"... (only showing first ten failures)"}}]):n;return S(t,function(n){return"Failed path: ("+n.path.join(" > ")+")\n"+n.getErrorInfo()})}(n.errors)+"\n\nInput object: "+jn(n.input)},de=nn(se),me=ut(mn,"number"),ge=ut(cn,"string"),pe=ut(ln,"boolean"),he=ut(dn,"function"),ve=function(t){function n(n,t){for(var e=n.next();!e.done;){if(!t(e.value))return!1;e=n.next()}return!0}if(Object(t)!==t)return!0;switch({}.toString.call(t).slice(8,-1)){case"Boolean":case"Number":case"String":case"Date":case"RegExp":case"Blob":case"FileList":case"ImageData":case"ImageBitmap":case"ArrayBuffer":return!0;case"Array":case"Object":return Object.keys(t).every(function(n){return ve(t[n])});case"Map":return n(t.keys(),ve)&&n(t.values(),ve);case"Set":return n(t.keys(),ve);default:return!1}},be=Yn(function(n){return ve(n)?Xt(n):qt("Expected value to be acceptable for sending via postMessage")}),ye=function(n){function t(){return e}var e=n;return{get:t,set:function(n){e=n},clone:function(){return ye(t())}}},xe=function(n){if(null===n||n===undefined)throw new Error("Node cannot be null or undefined");return{dom:nn(n)}},we={fromHtml:function(n,t){var e=(t||v.document).createElement("div");if(e.innerHTML=n,!e.hasChildNodes()||1<e.childNodes.length)throw v.console.error("HTML does not have a single root node",n),new Error("HTML must have a single root node");return xe(e.childNodes[0])},fromTag:function(n,t){var e=(t||v.document).createElement(n);return xe(e)},fromText:function(n,t){var e=(t||v.document).createTextNode(n);return xe(e)},fromDom:xe,fromPoint:function(n,t,e){var o=n.dom();return on.from(o.elementFromPoint(t,e)).map(xe)}},Se=function(n,t){return _t(n,t,v.Node.DOCUMENT_POSITION_CONTAINED_BY)},Ce=function(){return ke(0,0)},ke=function(n,t){return{major:n,minor:t}},Oe={nu:ke,detect:function(n,t){var e=String(t).toLowerCase();return 0===n.length?Ce():Mt(n,e)},unknown:Ce},Ee="Firefox",Te=function(n){var t=n.current;return{current:t,version:n.version,isEdge:Ft("Edge",t),isChrome:Ft("Chrome",t),isIE:Ft("IE",t),isOpera:Ft("Opera",t),isFirefox:Ft(Ee,t),isSafari:Ft("Safari",t)}},Be={unknown:function(){return Te({current:undefined,version:Oe.unknown()})},nu:Te,edge:nn("Edge"),chrome:nn("Chrome"),ie:nn("IE"),opera:nn("Opera"),firefox:nn(Ee),safari:nn("Safari")},De="Windows",Ae="Android",_e="Solaris",Me="FreeBSD",Fe=function(n){var t=n.current;return{current:t,version:n.version,isWindows:It(De,t),isiOS:It("iOS",t),isAndroid:It(Ae,t),isOSX:It("OSX",t),isLinux:It("Linux",t),isSolaris:It(_e,t),isFreeBSD:It(Me,t)}},Ie={unknown:function(){return Fe({current:undefined,version:Oe.unknown()})},nu:Fe,windows:nn(De),ios:nn("iOS"),android:nn(Ae),linux:nn("Linux"),osx:nn("OSX"),solaris:nn(_e),freebsd:nn(Me)},Re=function(n,e){return Rt(n,e).map(function(n){var t=Oe.detect(n.versionRegexes,e);return{current:n.name,version:t}})},Ve=function(n,e){return Rt(n,e).map(function(n){var t=Oe.detect(n.versionRegexes,e);return{current:n.name,version:t}})},Ne=/.*?version\/\ ?([0-9]+)\.([0-9]+).*/,He=[{name:"Edge",versionRegexes:[/.*?edge\/ ?([0-9]+)\.([0-9]+)$/],search:function(n){return Vt(n,"edge/")&&Vt(n,"chrome")&&Vt(n,"safari")&&Vt(n,"applewebkit")}},{name:"Chrome",versionRegexes:[/.*?chrome\/([0-9]+)\.([0-9]+).*/,Ne],search:function(n){return Vt(n,"chrome")&&!Vt(n,"chromeframe")}},{name:"IE",versionRegexes:[/.*?msie\ ?([0-9]+)\.([0-9]+).*/,/.*?rv:([0-9]+)\.([0-9]+).*/],search:function(n){return Vt(n,"msie")||Vt(n,"trident")}},{name:"Opera",versionRegexes:[Ne,/.*?opera\/([0-9]+)\.([0-9]+).*/],search:Nt("opera")},{name:"Firefox",versionRegexes:[/.*?firefox\/\ ?([0-9]+)\.([0-9]+).*/],search:Nt("firefox")},{name:"Safari",versionRegexes:[Ne,/.*?cpu os ([0-9]+)_([0-9]+).*/],search:function(n){return(Vt(n,"safari")||Vt(n,"mobile/"))&&Vt(n,"applewebkit")}}],Pe=[{name:"Windows",search:Nt("win"),versionRegexes:[/.*?windows\ nt\ ?([0-9]+)\.([0-9]+).*/]},{name:"iOS",search:function(n){return Vt(n,"iphone")||Vt(n,"ipad")},versionRegexes:[/.*?version\/\ ?([0-9]+)\.([0-9]+).*/,/.*cpu os ([0-9]+)_([0-9]+).*/,/.*cpu iphone os ([0-9]+)_([0-9]+).*/]},{name:"Android",search:Nt("android"),versionRegexes:[/.*?android\ ?([0-9]+)\.([0-9]+).*/]},{name:"OSX",search:Nt("os x"),versionRegexes:[/.*?os\ x\ ?([0-9]+)_([0-9]+).*/]},{name:"Linux",search:Nt("linux"),versionRegexes:[]},{name:"Solaris",search:Nt("sunos"),versionRegexes:[]},{name:"FreeBSD",search:Nt("freebsd"),versionRegexes:[]}],ze={browsers:nn(He),oses:nn(Pe)},Le=ye(function(n,t){var e=ze.browsers(),o=ze.oses(),r=Re(e,n).fold(Be.unknown,Be.nu),i=Ve(o,n).fold(Ie.unknown,Ie.nu);return{browser:r,os:i,deviceType:function(n,t,e,o){var r=n.isiOS()&&!0===/ipad/i.test(e),i=n.isiOS()&&!r,u=n.isiOS()||n.isAndroid(),a=u||o("(pointer:coarse)"),c=r||!i&&u&&o("(min-device-width:768px)"),s=i||u&&!c,f=t.isSafari()&&n.isiOS()&&!1===/safari/i.test(e),l=!s&&!c&&!f;return{isiPad:nn(r),isiPhone:nn(i),isTablet:nn(c),isPhone:nn(s),isTouch:nn(a),isAndroid:n.isAndroid,isiOS:n.isiOS,isWebView:nn(f),isDesktop:nn(l)}}(i,r,n,t)}}(v.navigator.userAgent,function(n){return v.window.matchMedia(n).matches})),je=(v.Node.ATTRIBUTE_NODE,v.Node.CDATA_SECTION_NODE,v.Node.COMMENT_NODE,v.Node.DOCUMENT_NODE),Ue=(v.Node.DOCUMENT_TYPE_NODE,v.Node.DOCUMENT_FRAGMENT_NODE,v.Node.ELEMENT_NODE),We=v.Node.TEXT_NODE,Ge=(v.Node.PROCESSING_INSTRUCTION_NODE,v.Node.ENTITY_REFERENCE_NODE,v.Node.ENTITY_NODE,v.Node.NOTATION_NODE,Ue),Xe=je,Ye=Ht().browser.isIE()?function(n,t){return Se(n.dom(),t.dom())}:function(n,t){var e=n.dom(),o=t.dom();return e!==o&&e.contains(o)};function qe(n,t,e,o,r){return n(e,o)?on.some(e):dn(r)&&r(e)?on.none():t(e,o,r)}function Ke(n){return n.dom().nodeName.toLowerCase()}function Je(t){return function(n){return function(n){return n.dom().nodeType}(n)===t}}"undefined"!=typeof v.window?v.window:Function("return this;")();function $e(n){var t=Pr(n)?n.dom().parentNode:n.dom();return t!==undefined&&null!==t&&t.ownerDocument.body.contains(t)}function Qe(n,t,e){for(var o=n.dom(),r=dn(e)?e:nn(!1);o.parentNode;){o=o.parentNode;var i=we.fromDom(o);if(t(i))return on.some(i);if(r(i))break}return on.none()}function Ze(n,t,e){return qe(function(n,t){return t(n)},Qe,n,t,e)}function no(n,r){var i=function(n){for(var t=0;t<n.childNodes.length;t++){var e=we.fromDom(n.childNodes[t]);if(r(e))return on.some(e);var o=i(n.childNodes[t]);if(o.isSome())return o}return on.none()};return i(n.dom())}function to(n){if(!$(n,"can")&&!$(n,"abort")&&!$(n,"run"))throw new Error("EventHandler defined by: "+JSON.stringify(n,null,2)+" does not have can, abort, or run!");return ot("Extracting event.handler",qn([St("can",nn(!0)),St("abort",nn(!1)),St("run",Z)]),n)}function eo(e){var n=function(t,o){return function(){for(var e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];return O(t,function(n,t){return n&&o(t).apply(undefined,e)},!0)}}(e,function(n){return n.can}),t=function(t,o){return function(){for(var e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];return O(t,function(n,t){return n||o(t).apply(undefined,e)},!1)}}(e,function(n){return n.abort});return to({can:n,abort:t,run:function(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];bn(e,function(n){n.run.apply(undefined,t)})}})}function oo(n,t){Fi(n,n.element(),t,{})}function ro(n,t,e){Fi(n,n.element(),t,e)}function io(n){oo(n,di())}function uo(n,t,e){Fi(n,t,e,{})}function ao(n,t,e,o){n.getSystem().triggerEvent(e,t,o.event())}function co(n){return K(n)}function so(n,t){return{key:n,value:to({abort:t})}}function fo(n){return{key:n,value:to({run:function(n,t){t.event().prevent()}})}}function lo(n,t){return{key:n,value:to({run:t})}}function mo(n,e,o){return{key:n,value:to({run:function(n,t){e.apply(undefined,[n,t].concat(o))}})}}function go(n){return function(e){return{key:n,value:to({run:function(n,t){Ut(n,t)&&e(n,t)}})}}}function po(n,t,e){return function(e,o){return lo(e,function(n,t){n.getSystem().getByUid(o).each(function(n){ao(n,n.element(),e,t)})})}(n,t.partUids[e])}function ho(n,r){return lo(n,function(t,n){var e=n.event(),o=t.getSystem().getByDom(e.target()).fold(function(){return jr(e.target(),function(n){return t.getSystem().getByDom(n).toOption()},nn(!1)).getOr(t)},function(n){return n});r(t,o,n)})}function vo(n){return lo(n,function(n,t){t.cut()})}function bo(n,t){return go(n)(t)}function yo(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];return function(){for(var e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];if(t.length!==e.length)throw new Error('Wrong number of arguments to struct. Expected "['+t.length+']", got '+e.length+" arguments");var o={};return bn(t,function(n,t){o[n]=nn(e[t])}),o}}function xo(n){return n.slice(0).sort()}function wo(t,n){if(!fn(n))throw new Error("The "+t+" fields must be an array. Was: "+n+".");bn(n,function(n){if(!cn(n))throw new Error("The value "+n+" in the "+t+" fields was not a string.")})}function So(r,i){var u=r.concat(i);if(0===u.length)throw new Error("You must specify at least one required or optional field.");return wo("required",r),wo("optional",i),function(n){var e=xo(n);E(e,function(n,t){return t<e.length-1&&n===e[t+1]}).each(function(n){throw new Error("The field: "+n+" occurs more than once in the combined fields: ["+e.join(", ")+"].")})}(u),function(t){var e=wn(t);D(r,function(n){return vn(e,n)})||function(n,t){throw new Error("All required keys ("+xo(n).join(", ")+") were not specified. Specified keys were: "+xo(t).join(", ")+".")}(r,e);var n=C(e,function(n){return!vn(u,n)});0<n.length&&function(n){throw new Error("Unsupported keys for object: "+xo(n).join(", "))}(n);var o={};return bn(r,function(n){o[n]=nn(t[n])}),bn(i,function(n){o[n]=nn(Object.prototype.hasOwnProperty.call(t,n)?on.some(t[n]):on.none())}),o}}function Co(n){return we.fromDom(n.dom().ownerDocument)}function ko(n){return we.fromDom(n.dom().ownerDocument.documentElement)}function Oo(n){return we.fromDom(n.dom().ownerDocument.defaultView)}function Eo(n){return on.from(n.dom().parentNode).map(we.fromDom)}function To(n){return on.from(n.dom().offsetParent).map(we.fromDom)}function Bo(n){return S(n.dom().childNodes,we.fromDom)}function Do(n,t){var e=n.dom().childNodes;return on.from(e[t]).map(we.fromDom)}function Ao(t,e){Eo(t).each(function(n){n.dom().insertBefore(e.dom(),t.dom())})}function _o(n,t){(function(n){return on.from(n.dom().nextSibling).map(we.fromDom)})(n).fold(function(){Eo(n).each(function(n){Hi(n,t)})},function(n){Ao(n,t)})}function Mo(t,e){(function(n){return Do(n,0)})(t).fold(function(){Hi(t,e)},function(n){t.dom().insertBefore(e.dom(),n.dom())})}function Fo(t,n){bn(n,function(n){Hi(t,n)})}function Io(n){n.dom().textContent="",bn(Bo(n),function(n){Pi(n)})}function Ro(n){var t=Bo(n);0<t.length&&function(t,n){bn(n,function(n){Ao(t,n)})}(n,t),Pi(n)}function Vo(n){return n.dom().innerHTML}function No(n,t){var e=Co(n).dom(),o=we.fromDom(e.createDocumentFragment()),r=function(n,t){var e=(t||v.document).createElement("div");return e.innerHTML=n,Bo(we.fromDom(e))}(t,e);Fo(o,r),Io(n),Hi(n,o)}function Ho(n,t,e){if(!(cn(e)||ln(e)||mn(e)))throw v.console.error("Invalid call to Attr.set. Key ",t,":: Value ",e,":: Element ",n),new Error("Attribute value was not simple");n.setAttribute(t,e+"")}function Po(n,t,e){Ho(n.dom(),t,e)}function zo(n,t){var e=n.dom().getAttribute(t);return null===e?undefined:e}function Lo(n,t){var e=n.dom();return!(!e||!e.hasAttribute)&&e.hasAttribute(t)}function jo(n,t){n.dom().removeAttribute(t)}function Uo(n){return function(n,t){return we.fromDom(n.dom().cloneNode(t))}(n,!1)}function Wo(n){return function(n){var t=we.fromTag("div"),e=we.fromDom(n.dom().cloneNode(!0));return Hi(t,e),Vo(t)}(Uo(n))}function Go(n){return Wo(n)}function Xo(n){var t=(new Date).getTime();return n+"_"+Math.floor(1e9*Math.random())+ ++ji+String(t)}function Yo(n){return Xo(n)}function qo(t){function n(n){return function(){throw new Error("The component must be in a context to send: "+n+"\n"+Go(t().element())+" is not in context.")}}return{debugInfo:nn("fake"),triggerEvent:n("triggerEvent"),triggerFocus:n("triggerFocus"),triggerEscape:n("triggerEscape"),build:n("build"),addToWorld:n("addToWorld"),removeFromWorld:n("removeFromWorld"),addToGui:n("addToGui"),removeFromGui:n("removeFromGui"),getByUid:n("getByUid"),getByDom:n("getByDom"),broadcast:n("broadcast"),broadcastOn:n("broadcastOn"),broadcastEvent:n("broadcastEvent"),isConnected:nn(!1)}}function Ko(n,t){var e=n.toString(),o=e.indexOf(")")+1,r=e.indexOf("("),i=e.substring(r+1,o-1).split(/,\s*/);return n.toFunctionAnnotation=function(){return{name:t,parameters:$i(i)}},n}function Jo(n){return q(Qi,n)}function $o(o){return function(n,t){var e=t.toString(),o=e.indexOf(")")+1,r=e.indexOf("("),i=e.substring(r+1,o-1).split(/,\s*/);return n.toFunctionAnnotation=function(){return{name:"OVERRIDE",parameters:$i(i.slice(1))}},n}(function(n){for(var t=[],e=1;e<arguments.length;e++)t[e-1]=arguments[e];return o.apply(undefined,[n.getApis()].concat([n].concat(t)))},o)}function Qo(n,r){var i={};return Cn(n,function(n,o){Cn(n,function(n,t){var e=Y(t,[])(i);i[t]=e.concat([r(o,n)])})}),i}function Zo(n){return{classes:n.classes!==undefined?n.classes:[],attributes:n.attributes!==undefined?n.attributes:{},styles:n.styles!==undefined?n.styles:{}}}function nr(n){return n.cHandler}function tr(n,t){return{name:nn(n),handler:nn(t)}}function er(n,t,e){var o=N(N({},e),function(n,t){var e={};return bn(n,function(n){e[n.name()]=n.handlers(t)}),e}(t,n));return Qo(o,tr)}function or(n){var i=function(n){return dn(n)?{can:nn(!0),abort:nn(!1),run:n}:n}(n);return function(n,t){for(var e=[],o=2;o<arguments.length;o++)e[o-2]=arguments[o];var r=[n,t].concat(e);i.abort.apply(undefined,r)?t.stop():i.can.apply(undefined,r)&&i.run.apply(undefined,r)}}function rr(n,t,e){var o=t[e];return o?function(u,a,n,c){var t=n.slice(0);try{var e=t.sort(function(n,t){var e=n[a](),o=t[a](),r=c.indexOf(e),i=c.indexOf(o);if(-1===r)throw new Error("The ordering for "+u+" does not have an entry for "+e+".\nOrder specified: "+JSON.stringify(c,null,2));if(-1===i)throw new Error("The ordering for "+u+" does not have an entry for "+o+".\nOrder specified: "+JSON.stringify(c,null,2));return r<i?-1:i<r?1:0});return an.value(e)}catch(o){return an.error([o])}}("Event: "+e,"name",n,o).map(function(n){var t=S(n,function(n){return n.handler()});return eo(t)}):function(n,t){return an.error(["The event ("+n+') has more than one behaviour that listens to it.\nWhen this occurs, you must specify an event ordering for the behaviours in your spec (e.g. [ "listing", "toggling" ]).\nThe behaviours that can trigger it are: '+JSON.stringify(S(t,function(n){return n.name()}),null,2)])}(e,n)}function ir(n){return tt("custom.definition",re([ce("dom","dom",Mn(),re([ct("tag"),St("styles",{}),St("classes",[]),St("attributes",{}),ht("value"),ht("innerHtml")])),ct("components"),ct("uid"),St("events",{}),St("apis",{}),ce("eventOrder","eventOrder",function(n){return _n.mergeWithThunk(nn(n))}({"alloy.execute":["disabling","alloy.base.behaviour","toggling","typeaheadevents"],"alloy.focus":["alloy.base.behaviour","focusing","keying"],"alloy.system.init":["alloy.base.behaviour","disabling","toggling","representing"],input:["alloy.base.behaviour","representing","streaming","invalidating"],"alloy.system.detached":["alloy.base.behaviour","representing","item-events","tooltipping"],mousedown:["focusing","alloy.base.behaviour","item-type-events"],touchstart:["focusing","alloy.base.behaviour","item-type-events"],mouseover:["item-type-events","tooltipping"]}),de()),ht("domModification")]),n)}function ur(n,t){var e=zo(n,t);return e===undefined||""===e?[]:e.split(" ")}function ar(n){return n.dom().classList!==undefined}function cr(n,t){return function(n,t,e){var o=ur(n,t).concat([e]);return Po(n,t,o.join(" ")),!0}(n,"class",t)}function sr(n,t){return function(n,t,e){var o=C(ur(n,t),function(n){return n!==e});return 0<o.length?Po(n,t,o.join(" ")):jo(n,t),!1}(n,"class",t)}function fr(n,t){ar(n)?n.dom().classList.add(t):cr(n,t)}function lr(n){0===(ar(n)?n.dom().classList:function(n){return ur(n,"class")}(n)).length&&jo(n,"class")}function dr(n,t){ar(n)?n.dom().classList.remove(t):sr(n,t),lr(n)}function mr(n,t){return ar(n)&&n.dom().classList.contains(t)}function gr(t,n){bn(n,function(n){fr(t,n)})}function pr(t,n){bn(n,function(n){dr(t,n)})}function hr(n){return n.style!==undefined&&dn(n.style.getPropertyValue)}function vr(n,t,e){if(!cn(e))throw v.console.error("Invalid call to CSS.set. Property ",t,":: Value ",e,":: Element ",n),new Error("CSS value must be a string: "+e);hr(n)&&n.style.setProperty(t,e)}function br(n,t){hr(n)&&n.style.removeProperty(t)}function yr(n,t,e){var o=n.dom();vr(o,t,e)}function xr(n,t){var e=n.dom();Cn(t,function(n,t){vr(e,t,n)})}function wr(n,t){var e=n.dom(),o=v.window.getComputedStyle(e).getPropertyValue(t),r=""!==o||$e(n)?o:ou(e,t);return null===r?undefined:r}function Sr(n,t){var e=n.dom(),o=ou(e,t);return on.from(o).filter(function(n){return 0<n.length})}function Cr(n,t,e){var o=we.fromTag(n);return yr(o,t,e),Sr(o,t).isSome()}function kr(n,t){var e=n.dom();br(e,t),Lo(n,"style")&&""===function(n){return n.replace(/^\s+|\s+$/g,"")}(zo(n,"style"))&&jo(n,"style")}function Or(n){return n.dom().offsetWidth}function Er(n){return n.dom().value}function Tr(n,t){if(t===undefined)throw new Error("Value.set was undefined");n.dom().value=t}function Br(n){var t=we.fromTag(n.tag);!function(n,t){var e=n.dom();Cn(t,function(n,t){Ho(e,t,n)})}(t,n.attributes),gr(t,n.classes),xr(t,n.styles),n.innerHtml.each(function(n){return No(t,n)});var e=n.domChildren;return Fo(t,e),n.value.each(function(n){Tr(t,n)}),n.uid,Yi(t,n.uid),t}function Dr(n,t){return function(t,n){var e=S(n,function(n){return wt(n.name(),[ct("config"),St("state",Zi)])}),o=tt("component.behaviours",re(e),t.behaviours).fold(function(n){throw new Error(le(n)+"\nComplete spec:\n"+JSON.stringify(t,null,2))},function(n){return n});return{list:n,data:P(o,function(n){var t=n.map(function(n){return{config:n.config,state:n.state.init(n.config)}});return function(){return t}})}}(n,t)}function Ar(n){var t=function(n){var t=Y("behaviours",{})(n),e=C(wn(t),function(n){return t[n]!==undefined});return S(e,function(n){return t[n].me})}(n);return Dr(n,t)}function _r(n,t,e){var o=function(n){return N(N({},n.dom),{uid:n.uid,domChildren:S(n.components,function(n){return n.element()})})}(n),r=function(n){return n.domModification.fold(function(){return Zo({})},Zo)}(n),i={"alloy.base.modification":r};return function(n,t){return N(N({},n),{attributes:N(N({},n.attributes),t.attributes),styles:N(N({},n.styles),t.styles),classes:n.classes.concat(t.classes)})}(o,0<t.length?function(t,n,e,o){var r=N({},n);bn(e,function(n){r[n.name()]=n.exhibit(t,o)});function i(n){return k(n,function(n,t){return N(N({},t.modification),n)},{})}var u=Qo(r,function(n,t){return{name:n,modification:t}}),a=k(u.classes,function(n,t){return t.modification.concat(n)},[]),c=i(u.attributes),s=i(u.styles);return Zo({classes:a,attributes:c,styles:s})}(e,i,t,o):r)}function Mr(n,t,e){var o={"alloy.base.behaviour":function(n){return n.events}(n)};return function(n,t,e,o){var r=er(n,e,o);return eu(r,t)}(e,n.eventOrder,t,o).getOrDie()}function Fr(n){var t=Ki(n),e=t.events,o=c(t,["events"]),r=function(n){var t=Y("components",[])(n);return S(t,uu)}(o),i=N(N({},o),{events:N(N({},Li),e),components:r});return an.value(function(e){function n(){return l}var o=ye(Ji),t=et(ir(e)),r=Ar(e),i=function(n){return n.list}(r),u=function(n){return n.data}(r),a=_r(t,i,u),c=Br(a),s=Mr(t,i,u),f=ye(t.components),l={getSystem:o.get,config:function(n){var t=u;return(dn(t[n.name()])?t[n.name()]:function(){throw new Error("Could not find "+n.name()+" in "+JSON.stringify(e,null,2))})()},hasConfigured:function(n){return dn(u[n.name()])},spec:nn(e),readState:function(n){return u[n]().map(function(n){return n.state.readState()}).getOr("not enabled")},getApis:function(){return t.apis},connect:function(n){o.set(n)},disconnect:function(){o.set(qo(n))},element:nn(c),syncComponents:function(){var n=Bo(c),t=B(n,function(n){return o.get().getByDom(n).fold(function(){return[]},function(n){return[n]})});f.set(t)},components:f.get,events:nn(s)};return l}(i))}function Ir(n){var t=we.fromText(n);return ru({element:t})}var Rr,Vr,Nr,Hr=Je(Ue),Pr=Je(We),zr=L(function(){return Lr(we.fromDom(v.document))}),Lr=function(n){var t=n.dom().body;if(null===t||t===undefined)throw new Error("Body is not available yet");return we.fromDom(t)},jr=function(n,t,e){return Ze(n,function(n){return t(n).isSome()},e).bind(t)},Ur=nn("touchstart"),Wr=nn("touchmove"),Gr=nn("touchend"),Xr=nn("touchcancel"),Yr=nn("mousedown"),qr=nn("mousemove"),Kr=nn("mouseout"),Jr=nn("mouseup"),$r=nn("mouseover"),Qr=nn("focusin"),Zr=nn("focusout"),ni=nn("keydown"),ti=nn("keyup"),ei=nn("input"),oi=nn("change"),ri=nn("click"),ii=nn("transitionend"),ui=nn("selectstart"),ai={tap:nn("alloy.tap")},ci=nn("alloy.focus"),si=nn("alloy.blur.post"),fi=nn("alloy.paste.post"),li=nn("alloy.receive"),di=nn("alloy.execute"),mi=nn("alloy.focus.item"),gi=ai.tap,pi=nn("alloy.longpress"),hi=nn("alloy.sandbox.close"),vi=nn("alloy.typeahead.cancel"),bi=nn("alloy.system.init"),yi=nn("alloy.system.touchmove"),xi=nn("alloy.system.touchend"),wi=nn("alloy.system.scroll"),Si=nn("alloy.system.resize"),Ci=nn("alloy.system.attached"),ki=nn("alloy.system.detached"),Oi=nn("alloy.system.dismissRequested"),Ei=nn("alloy.system.repositionRequested"),Ti=nn("alloy.focusmanager.shifted"),Bi=nn("alloy.slotcontainer.visibility"),Di=nn("alloy.change.tab"),Ai=nn("alloy.dismiss.tab"),_i=nn("alloy.highlight"),Mi=nn("alloy.dehighlight"),Fi=function(n,t,e,o){var r=N({target:t},o);n.getSystem().triggerEvent(e,t,P(r,nn))},Ii=go(Ci()),Ri=go(ki()),Vi=go(bi()),Ni=(Rr=di(),function(n){return lo(Rr,n)}),Hi=(yo("element","offset"),function(n,t){n.dom().appendChild(t.dom())}),Pi=function(n){var t=n.dom();null!==t.parentNode&&t.parentNode.removeChild(t)},zi=co([(Vr=ci(),Nr=function(n,t){var e=t.event().originator(),o=t.event().target();return!function(n,t,e){return jt(t,n.element())&&!jt(t,e)}(n,e,o)||(v.console.warn(ci()+" did not get interpreted by the desired target. \nOriginator: "+Go(e)+"\nTarget: "+Go(o)+"\nCheck the "+ci()+" event handlers"),!1)},{key:Vr,value:to({can:Nr})})]),Li=/* */Object.freeze({events:zi}),ji=0,Ui=nn("alloy-id-"),Wi=nn("data-alloy-id"),Gi=Ui(),Xi=Wi(),Yi=function(n,t){Object.defineProperty(n.dom(),Xi,{value:t,writable:!0})},qi=function(n){var t=Hr(n)?n.dom()[Xi]:null;return on.from(t)},Ki=l,Ji=qo(),$i=function(n){return S(n,function(n){return function(n,t){return function(n,t,e){return""===t||!(n.length<t.length)&&n.substr(e,e+t.length)===t}(n,t,n.length-t.length)}(n,"/*")?n.substring(0,n.length-"/*".length):n})},Qi=Xo("alloy-premade"),Zi={init:function(){return nu({readState:function(){return"No State required"}})}},nu=function(n){return n},tu=function(n,t){return function(n,t){return{cHandler:n,purpose:nn(t)}}(d.apply(undefined,[n.handler].concat(t)),n.purpose())},eu=function(n,i){var t=On(n,function(o,r){return(1===o.length?an.value(o[0].handler()):rr(o,i,r)).map(function(n){var t=or(n),e=1<o.length?C(i[r],function(t){return x(o,function(n){return n.name()===t})}).join(" > "):o[0].name();return q(r,function(n,t){return{handler:n,purpose:nn(t)}}(t,e))})});return J(t,{})},ou=function(n,t){return hr(n)?n.style.getPropertyValue(t):""},ru=function(n){var t=ot("external.component",qn([ct("element"),ht("uid")]),n),e=ye(qo());t.uid.each(function(n){Yi(t.element,n)});var o={getSystem:e.get,config:on.none,hasConfigured:nn(!1),connect:function(n){e.set(n)},disconnect:function(){e.set(qo(function(){return o}))},getApis:function(){return{}},element:nn(t.element),spec:nn(n),readState:nn("No state"),syncComponents:Z,components:nn([]),events:nn({})};return Jo(o)},iu=Yo,uu=function(t){return function(n){return Nn(n,Qi)}(t).fold(function(){var n=t.hasOwnProperty("uid")?t:N({uid:iu("")},t);return Fr(n).getOrDie()},function(n){return n})},au=Jo;function cu(o,r){function n(n){var t=r(n);if(t<=0||null===t){var e=wr(n,o);return parseFloat(e)||0}return t}function i(r,n){return O(n,function(n,t){var e=wr(r,t),o=e===undefined?0:parseInt(e,10);return isNaN(o)?n:n+o},0)}return{set:function(n,t){if(!mn(t)&&!t.match(/^[0-9]+$/))throw new Error(o+".set accepts only positive integer values. Value was "+t);var e=n.dom();hr(e)&&(e.style[o]=t+"px")},get:n,getOuter:n,aggregate:i,max:function(n,t,e){var o=i(n,e);return o<t?t-o:0}}}function su(n){return Mu.get(n)}function fu(n){return Mu.getOuter(n)}function lu(n,t){return n!==undefined?n:t!==undefined?t:0}function du(n){var t=n.dom().ownerDocument,e=t.body,o=t.defaultView,r=t.documentElement;if(e===n.dom())return Iu(e.offsetLeft,e.offsetTop);var i=lu(o.pageYOffset,r.scrollTop),u=lu(o.pageXOffset,r.scrollLeft),a=lu(r.clientTop,e.clientTop),c=lu(r.clientLeft,e.clientLeft);return Ru(n).translate(u-c,i-a)}function mu(n){return Vu.get(n)}function gu(n){return Vu.getOuter(n)}function pu(n){var t=n!==undefined?n.dom():v.document,e=t.body.scrollLeft||t.documentElement.scrollLeft,o=t.body.scrollTop||t.documentElement.scrollTop;return Iu(e,o)}function hu(n,t,e,o){return{x:nn(n),y:nn(t),width:nn(e),height:nn(o),right:nn(n+e),bottom:nn(t+o)}}function vu(n){var t=n===undefined?v.window:n,e=t.document,o=pu(we.fromDom(e)),r=t.visualViewport;if(r!==undefined)return hu(Math.max(r.pageLeft,o.left()),Math.max(r.pageTop,o.top()),r.width,r.height);var i=e.documentElement,u=i.clientWidth,a=i.clientHeight;return hu(o.left(),o.top(),u,a)}function bu(o){var n=we.fromDom(v.document),r=pu(n);return function(n,t){var e=t.owner(n),o=Nu(t,e);return on.some(o)}(o,Hu).fold(d(du,o),function(n){var t=Ru(o),e=k(n,function(n,t){var e=Ru(t);return{left:n.left+e.left(),top:n.top+e.top()}},{left:0,top:0});return Iu(e.left+t.left()+r.left(),e.top+t.top()+r.top())})}function yu(n,t,e,o){return{x:nn(n),y:nn(t),width:nn(e),height:nn(o),right:nn(n+e),bottom:nn(t+o)}}function xu(n){var t=du(n),e=gu(n),o=fu(n);return yu(t.left(),t.top(),e,o)}function wu(n){var t=bu(n),e=gu(n),o=fu(n);return yu(t.left(),t.top(),e,o)}function Su(){return vu(v.window)}function Cu(n,t,e){return Qe(n,function(n){return Pt(n,t)},e)}function ku(n,t){return function(n,t){var e=t===undefined?v.document:t.dom();return zt(e)?on.none():on.from(e.querySelector(n)).map(we.fromDom)}(t,n)}function Ou(n,t,e){return qe(Pt,Cu,n,t,e)}function Eu(){var t=Xo("aria-owns");return{id:nn(t),link:function(n){Po(n,"aria-owns",t)},unlink:function(n){jo(n,"aria-owns")}}}function Tu(t,n){return function(n){return Ze(n,function(n){if(!Hr(n))return!1;var t=zo(n,"id");return t!==undefined&&-1<t.indexOf("aria-owns")}).bind(function(n){var t=zo(n,"id"),e=Co(n);return ku(e,'[aria-owns="'+t+'"]')})}(n).exists(function(n){return Lu(t,n)})}function Bu(n){for(var t=[],e=function(n){t.push(n)},o=0;o<n.length;o++)n[o].each(e);return t}function Du(n,t){for(var e=0;e<n.length;e++){var o=t(n[e],e);if(o.isSome())return o}return on.none()}var Au,_u,Mu=cu("height",function(n){var t=n.dom();return $e(n)?t.getBoundingClientRect().height:t.offsetHeight}),Fu=function(e,o){return{left:nn(e),top:nn(o),translate:function(n,t){return Fu(e+n,o+t)}}},Iu=Fu,Ru=function(n){var t=n.dom(),e=t.ownerDocument.body;return e===t?Iu(e.offsetLeft,e.offsetTop):$e(n)?function(n){var t=n.getBoundingClientRect();return Iu(t.left,t.top)}(t):Iu(0,0)},Vu=cu("width",function(n){return n.dom().offsetWidth}),Nu=(Ht().browser.isSafari(),function(o,n){return o.view(n).fold(nn([]),function(n){var t=o.owner(n),e=Nu(o,t);return[n].concat(e)})}),Hu=/* */Object.freeze({view:function(n){return(n.dom()===v.document?on.none():on.from(n.dom().defaultView.frameElement)).map(we.fromDom)},owner:function(n){return Co(n)}}),Pu=yo("point","width","height"),zu=yo("x","y","width","height"),Lu=function(t,n){return function(n,t,e){return Ze(n,t,e).isSome()}(n,function(n){return jt(n,t.element())},nn(!1))||Tu(t,n)},ju="unknown";(_u=Au=Au||{})[_u.STOP=0]="STOP",_u[_u.NORMAL=1]="NORMAL",_u[_u.LOGGING=2]="LOGGING";function Uu(t,n,e){switch(Nn(Pa.get(),t).orThunk(function(){var n=wn(Pa.get());return Du(n,function(n){return-1<t.indexOf(n)?on.some(Pa.get()[n]):on.none()})}).getOr(Au.NORMAL)){case Au.NORMAL:return e(La());case Au.LOGGING:var o=function(t,e){var o=[],r=(new Date).getTime();return{logEventCut:function(n,t,e){o.push({outcome:"cut",target:t,purpose:e})},logEventStopped:function(n,t,e){o.push({outcome:"stopped",target:t,purpose:e})},logNoParent:function(n,t,e){o.push({outcome:"no-parent",target:t,purpose:e})},logEventNoHandlers:function(n,t){o.push({outcome:"no-handlers-left",target:t})},logEventResponse:function(n,t,e){o.push({outcome:"response",purpose:e,target:t})},write:function(){var n=(new Date).getTime();vn(["mousemove","mouseover","mouseout",bi()],t)||v.console.log(t,{event:t,time:n-r,target:e.dom(),sequence:S(o,function(n){return vn(["cut","stopped","response"],n.outcome)?"{"+n.purpose+"} "+n.outcome+" at ("+Go(n.target)+")":n.outcome})})}}}(t,n),r=e(o);return o.write(),r;case Au.STOP:return!0}}function Wu(n,t,e){return Uu(n,t,e)}function Gu(){return mt("markers",[ct("backgroundMenu")].concat(ja()).concat(Ua()))}function Xu(n){return mt("markers",S(n,ct))}function Yu(n,t,e){return function(){var n=new Error;if(n.stack===undefined)return;var t=n.stack.split("\n");E(t,function(t){return 0<t.indexOf("alloy")&&!x(za,function(n){return-1<t.indexOf(n)})}).getOr(ju)}(),ce(t,t,e,Zn(function(e){return an.value(function(){for(var n=[],t=0;t<arguments.length;t++)n[t]=arguments[t];return e.apply(undefined,n)})}))}function qu(n){return Yu(0,n,j(Z))}function Ku(n){return Yu(0,n,j(on.none))}function Ju(n){return Yu(0,n,Mn())}function $u(n){return Yu(0,n,Mn())}function Qu(n,t){return At(n,nn(t))}function Zu(n){return At(n,l)}function na(n){return n.x()}function ta(n,t){return n.x()+n.width()/2-t.width()/2}function ea(n,t){return n.x()+n.width()-t.width()}function oa(n,t){return n.y()-t.height()}function ra(n){return n.y()+n.height()}function ia(n,t){return n.y()+n.height()/2-t.height()/2}function ua(n,t,e){return Ya(na(n),ra(n),e.southeast(),Ka(),"layout-se")}function aa(n,t,e){return Ya(ea(n,t),ra(n),e.southwest(),Ja(),"layout-sw")}function ca(n,t,e){return Ya(na(n),oa(n,t),e.northeast(),$a(),"layout-ne")}function sa(n,t,e){return Ya(ea(n,t),oa(n,t),e.northwest(),Qa(),"layout-nw")}function fa(n,t,e){return Ya(function(n){return n.x()+n.width()}(n),ia(n,t),e.east(),tc(),"layout-e")}function la(n,t,e){return Ya(function(n,t){return n.x()-t.width()}(n,t),ia(n,t),e.west(),ec(),"layout-w")}function da(){return[ua,aa,ca,sa,rc,oc]}function ma(){return[aa,ua,sa,ca,rc,oc]}function ga(e,o,r){return Vi(function(n,t){r(n,e,o)})}function pa(n,t,e,o,r,i){var u=qn(n),a=wt(t,[function(n,t){return vt(n,qn(t))}("config",n)]);return ic(u,a,t,e,o,r,i)}function ha(r,i,u){return function(n,t,e){var o=e.toString(),r=o.indexOf(")")+1,i=o.indexOf("("),u=o.substring(i+1,r-1).split(/,\s*/);return n.toFunctionAnnotation=function(){return{name:t,parameters:$i(u.slice(0,1).concat(u.slice(3)))}},n}(function(e){for(var n=[],t=1;t<arguments.length;t++)n[t-1]=arguments[t];var o=[e].concat(n);return e.config({name:nn(r)}).fold(function(){throw new Error("We could not find any behaviour configuration for: "+r+". Using API: "+u)},function(n){var t=Array.prototype.slice.call(o,1);return i.apply(undefined,[e,n.config,n.state].concat(t))})},u,i)}function va(n){return{key:n,value:undefined}}function ba(n){return K(n)}function ya(n){var t=ot("Creating behaviour: "+n.name,uc,n);return pa(t.fields,t.name,t.active,t.apis,t.extra,t.state)}function xa(n){var t=ot("Creating behaviour: "+n.name,ac,n);return function(n,t,e,o,r,i){var u=n,a=wt(t,[vt("config",n)]);return ic(u,a,t,e,o,r,i)}(it(t.branchKey,t.branches),t.name,t.active,t.apis,t.extra,t.state)}function wa(n){n.dom().focus()}function Sa(n){var t=n!==undefined?n.dom():v.document;return on.from(t.activeElement).map(we.fromDom)}function Ca(t){return Sa(Co(t)).filter(function(n){return t.dom().contains(n.dom())})}function ka(n,e){var o=Co(e),t=Sa(o).bind(function(t){function n(n){return jt(t,n)}return n(e)?on.some(e):no(e,n)}),r=n(e);return t.each(function(t){Sa(o).filter(function(n){return jt(n,t)}).fold(function(){wa(t)},Z)}),r}function Oa(n,t,e){function r(n){return Nn(e,n).getOr([])}function o(n,t,e){var o=_(mc,e);return{offset:function(){return Iu(n,t)},classesOn:function(){return B(e,r)},classesOff:function(){return B(o,r)}}}return{southeast:function(){return o(-n,t,["top","alignLeft"])},southwest:function(){return o(n,t,["top","alignRight"])},south:function(){return o(-n/2,t,["top","alignCentre"])},northeast:function(){return o(-n,-t,["bottom","alignLeft"])},northwest:function(){return o(n,-t,["bottom","alignRight"])},north:function(){return o(-n/2,-t,["bottom","alignCentre"])},east:function(){return o(n,-t/2,["valignCentre","left"])},west:function(){return o(-n,-t/2,["valignCentre","right"])},innerNorthwest:function(){return o(-n,t,["top","alignRight"])},innerNortheast:function(){return o(n,t,["top","alignLeft"])},innerNorth:function(){return o(-n/2,t,["top","alignCentre"])},innerSouthwest:function(){return o(-n,-t,["bottom","alignRight"])},innerSoutheast:function(){return o(n,-t,["bottom","alignLeft"])},innerSouth:function(){return o(-n/2,-t,["bottom","alignCentre"])},innerWest:function(){return o(n,-t/2,["valignCentre","right"])},innerEast:function(){return o(-n,-t/2,["valignCentre","left"])}}}function Ea(){return Oa(0,0,{})}function Ta(n,t,e,o,r,i){var u=t.x()-e,a=t.y()-o,c=r-(u+t.width()),s=i-(a+t.height()),f=on.some(u),l=on.some(a),d=on.some(c),m=on.some(s),g=on.none();return function(n,t,e,o,r,i,u,a,c){return n.fold(t,e,o,r,i,u,a,c)}(t.direction(),function(){return pc(n,f,l,g,g)},function(){return pc(n,g,l,d,g)},function(){return pc(n,f,g,g,m)},function(){return pc(n,g,g,d,m)},function(){return pc(n,f,l,g,g)},function(){return pc(n,f,g,g,m)},function(){return pc(n,f,l,g,g)},function(){return pc(n,g,l,d,g)})}function Ba(n,t){var e=d(bu,t),o=n.fold(e,e,function(){var n=pu();return bu(t).translate(-n.left(),-n.top())}),r=gu(t),i=fu(t);return yu(o.left(),o.top(),r,i)}function Da(n){return n}function Aa(t,e){return function(n){return"rtl"===xc(n)?e:t}}function _a(){return wt("layouts",[ct("onLtr"),ct("onRtl")])}function Ma(t,n,e,o){var r=n.layouts.map(function(n){return n.onLtr(t)}).getOr(e),i=n.layouts.map(function(n){return n.onRtl(t)}).getOr(o);return Aa(r,i)(t)}function Fa(n,t,e){var o=n.document.createRange();return function(e,n){n.fold(function(n){e.setStartBefore(n.dom())},function(n,t){e.setStart(n.dom(),t)},function(n){e.setStartAfter(n.dom())})}(o,t),function(e,n){n.fold(function(n){e.setEndBefore(n.dom())},function(n,t){e.setEnd(n.dom(),t)},function(n){e.setEndAfter(n.dom())})}(o,e),o}function Ia(n,t,e,o,r){var i=n.document.createRange();return i.setStart(t.dom(),e),i.setEnd(o.dom(),r),i}function Ra(n){return{left:nn(n.left),top:nn(n.top),right:nn(n.right),bottom:nn(n.bottom),width:nn(n.width),height:nn(n.height)}}function Va(n,t,e){return t(we.fromDom(e.startContainer),e.startOffset,we.fromDom(e.endContainer),e.endOffset)}function Na(n,t){return function(n,t){var e=t.ltr();return e.collapsed?t.rtl().filter(function(n){return!1===n.collapsed}).map(function(n){return Bc.rtl(we.fromDom(n.endContainer),n.endOffset,we.fromDom(n.startContainer),n.startOffset)}).getOrThunk(function(){return Va(0,Bc.ltr,e)}):Va(0,Bc.ltr,e)}(0,function(r,n){return n.match({domRange:function(n){return{ltr:nn(n),rtl:on.none}},relative:function(n,t){return{ltr:L(function(){return Fa(r,n,t)}),rtl:L(function(){return on.some(Fa(r,t,n))})}},exact:function(n,t,e,o){return{ltr:L(function(){return Ia(r,n,t,e,o)}),rtl:L(function(){return on.some(Ia(r,e,o,n,t))})}}})}(n,t))}function Ha(n,t,e){return t>=n.left&&t<=n.right&&e>=n.top&&e<=n.bottom}var Pa=ye({}),za=["alloy/data/Fields","alloy/debugging/Debugging"],La=nn({logEventCut:Z,logEventStopped:Z,logNoParent:Z,logEventNoHandlers:Z,logEventResponse:Z,write:Z}),ja=nn([ct("menu"),ct("selectedMenu")]),Ua=nn([ct("item"),ct("selectedItem")]),Wa=(nn(re(Ua().concat(ja()))),nn(re(Ua()))),Ga=mt("initSize",[ct("numColumns"),ct("numRows")]),Xa=nn(Ga),Ya=yo("x","y","bubble","direction","label"),qa=Tn([{southeast:[]},{southwest:[]},{northeast:[]},{northwest:[]},{south:[]},{north:[]},{east:[]},{west:[]}]),Ka=qa.southeast,Ja=qa.southwest,$a=qa.northeast,Qa=qa.northwest,Za=qa.south,nc=qa.north,tc=qa.east,ec=qa.west,oc=function(n,t,e){return Ya(ta(n,t),oa(n,t),e.north(),nc(),"layout-n")},rc=function(n,t,e){return Ya(ta(n,t),ra(n),e.south(),Za(),"layout-s")},ic=function(e,n,o,r,t,i,u){function a(n){return $(n,o)?n[o]():on.none()}var c=P(t,function(n,t){return ha(o,n,t)}),s=P(i,function(n,t){return Ko(n,t)}),f=N(N(N({},s),c),{revoke:d(va,o),config:function(n){var t=ot(o+"-config",e,n);return{key:o,value:{config:t,me:f,configAsRaw:L(function(){return ot(o+"-config",e,n)}),initialConfig:n,state:u}}},schema:function(){return n},exhibit:function(n,e){return a(n).bind(function(t){return Nn(r,"exhibit").map(function(n){return n(e,t.config,t.state)})}).getOr(Zo({}))},name:function(){return o},handlers:function(n){return a(n).map(function(n){return Y("events",function(n,t){return{}})(r)(n.config,n.state)}).getOr({})}});return f},uc=qn([ct("fields"),ct("name"),St("active",{}),St("apis",{}),St("state",Zi),St("extra",{})]),ac=qn([ct("branchKey"),ct("branches"),ct("name"),St("active",{}),St("apis",{}),St("state",Zi),St("extra",{})]),cc=nn(undefined),sc=/* */Object.freeze({events:function(t){return co([lo(li(),function(r,i){var u=t.channels,n=function(n,t){return t.universal()?n:C(n,function(n){return vn(t.channels(),n)})}(wn(u),i);bn(n,function(n){var t=u[n],e=t.schema,o=ot("channel["+n+"] data\nReceiver: "+Go(r.element()),e,i.data());t.onReceive(r,o)})})])}}),fc=[st("channels",nt(an.value,qn([Ju("onReceive"),St("schema",de())])))],lc=ya({fields:fc,name:"receiving",active:sc}),dc=/* */Object.freeze({exhibit:function(n,t){return Zo({classes:[],styles:t.useFixed()?{}:{position:"relative"}})}}),mc=["valignCentre","alignLeft","alignRight","alignCentre","top","bottom","left","right"],gc=So(["x","y","width","height","maxHeight","maxWidth","direction","classes","label","candidateYforTest"],[]),pc=yo("position","left","top","right","bottom"),hc=Tn([{none:[]},{relative:["x","y","width","height"]},{fixed:["x","y","width","height"]}]),vc=function(n,t,e){var o=Iu(t,e);return n.fold(nn(o),nn(o),function(){var n=pu();return o.translate(-n.left(),-n.top())})},bc=hc.relative,yc=hc.fixed,xc=function(n){return"rtl"===wr(n,"direction")?"rtl":"ltr"},wc=[ct("hotspot"),ht("bubble"),St("overrides",{}),_a(),Qu("placement",function(n,t,e){var o=t.hotspot,r=Ba(e,o.element()),i=Ma(n.element(),t,da(),ma());return on.some(Da({anchorBox:r,bubble:t.bubble.getOr(Ea()),overrides:t.overrides,layouts:i,placer:on.none()}))})],Sc=[ct("x"),ct("y"),St("height",0),St("width",0),St("bubble",Ea()),St("overrides",{}),_a(),Qu("placement",function(n,t,e){var o=vc(e,t.x,t.y),r=yu(o.left(),o.top(),t.width,t.height),i=Ma(n.element(),t,[ua,aa,ca,sa,rc,oc,fa,la],[aa,ua,sa,ca,rc,oc,fa,la]);return on.some(Da({anchorBox:r,bubble:t.bubble,overrides:t.overrides,layouts:i,placer:on.none()}))})],Cc={create:yo("start","soffset","finish","foffset")},kc=Tn([{before:["element"]},{on:["element","offset"]},{after:["element"]}]),Oc=(kc.before,kc.on,kc.after,function(n){return n.fold(l,l,l)}),Ec=Tn([{domRange:["rng"]},{relative:["startSitu","finishSitu"]},{exact:["start","soffset","finish","foffset"]}]),Tc={domRange:Ec.domRange,relative:Ec.relative,exact:Ec.exact,exactFromRange:function(n){return Ec.exact(n.start(),n.soffset(),n.finish(),n.foffset())},getWin:function(n){var t=function(n){return n.match({domRange:function(n){return we.fromDom(n.startContainer)},relative:function(n,t){return Oc(n)},exact:function(n,t,e,o){return n}})}(n);return Oo(t)},range:Cc.create},Bc=Tn([{ltr:["start","soffset","finish","foffset"]},{rtl:["start","soffset","finish","foffset"]}]);function Dc(n){return rf.get(n)}function Ac(n){return rf.getOption(n)}function _c(e,o,n,t,r){function i(n){var t=e.dom().createRange();return t.setStart(o.dom(),n),t.collapse(!0),t}var u=Dc(o).length,a=function(n,t,e,o,r){if(0===r)return 0;if(t===o)return r-1;for(var i=o,u=1;u<r;u++){var a=n(u),c=Math.abs(t-a.left);if(e<=a.bottom){if(e<a.top||i<c)return u-1;i=c}}return 0}(function(n){return i(n).getBoundingClientRect()},n,t,r.right,u);return i(a)}function Mc(n){return function(n){return Ac(n).filter(function(n){return 0!==n.trim().length||-1<n.indexOf("\xa0")}).isSome()}(n)||vn(af,Ke(n))}function Fc(n){return no(n,Mc)}function Ic(n){return cf(n,Mc)}function Rc(n,t){return t-n.left<n.right-t}function Vc(n,t,e){var o=n.dom().createRange();return o.selectNode(t.dom()),o.collapse(e),o}function Nc(t,n,e){var o=t.dom().createRange();o.selectNode(n.dom());var r=o.getBoundingClientRect(),i=Rc(r,e);return(!0===i?Fc:Ic)(n).map(function(n){return Vc(t,n,i)})}function Hc(n,t,e){var o=t.dom().getBoundingClientRect(),r=Rc(o,e);return on.some(Vc(n,t,r))}function Pc(n,t,e,o){var r=n.dom().createRange();r.selectNode(t.dom());var i=r.getBoundingClientRect();return function(n,t,e,o){var r=n.dom().createRange();r.selectNode(t.dom());var i=r.getBoundingClientRect(),u=Math.max(i.left,Math.min(i.right,e)),a=Math.max(i.top,Math.min(i.bottom,o));return uf(n,t,u,a)}(n,t,Math.max(i.left,Math.min(i.right,e)),Math.max(i.top,Math.min(i.bottom,o)))}function zc(n,t){return Lt(t,n)}function Lc(n,t,e,o){var r=function(n,t,e,o){var r=Co(n).dom().createRange();return r.setStart(n.dom(),t),r.setEnd(e.dom(),o),r}(n,t,e,o),i=jt(n,e)&&t===o;return r.collapsed&&!i}function jc(n){var t=we.fromDom(n.anchorNode),e=we.fromDom(n.focusNode);return Lc(t,n.anchorOffset,e,n.focusOffset)?on.some(Cc.create(t,n.anchorOffset,e,n.focusOffset)):function(n){if(0<n.rangeCount){var t=n.getRangeAt(0),e=n.getRangeAt(n.rangeCount-1);return on.some(Cc.create(we.fromDom(t.startContainer),t.startOffset,we.fromDom(e.endContainer),e.endOffset))}return on.none()}(n)}function Uc(n,t){return function(n){var t=n.getClientRects(),e=0<t.length?t[0]:n.getBoundingClientRect();return 0<e.width||0<e.height?on.some(e).map(Ra):on.none()}(function(i,n){return Na(i,n).match({ltr:function(n,t,e,o){var r=i.document.createRange();return r.setStart(n.dom(),t),r.setEnd(e.dom(),o),r},rtl:function(n,t,e,o){var r=i.document.createRange();return r.setStart(e.dom(),o),r.setEnd(n.dom(),t),r}})}(n,t))}function Wc(n){return n.fold(function(n){return n},function(n,t,e){return n.translate(-t,-e)})}function Gc(n){return n.fold(function(n){return n},function(n,t,e){return n})}function Xc(n){return O(n,function(n,t){return n.translate(t.left(),t.top())},Iu(0,0))}function Yc(n){var t=S(n,Gc);return Xc(t)}function qc(n,t,e){var o=Co(n.element()),r=pu(o),i=function(o,n,t){var e=Oo(t.root).dom();return on.from(e.frameElement).map(we.fromDom).filter(function(n){var t=Co(n),e=Co(o.element());return jt(t,e)}).map(du)}(n,0,e).getOr(r);return df(i,r.left(),r.top())}function Kc(n,t){return Pr(n)?pf(n,t):function(n,t){var e=Bo(n);if(0===e.length)return sf(n,t);if(t<e.length)return sf(e[t],0);var o=e[e.length-1],r=Pr(o)?Dc(o).length:Bo(o).length;return sf(o,r)}(n,t)}function Jc(n,t){return t.getSelection.getOrThunk(function(){return function(){return function(n){return on.from(n.getSelection()).filter(function(n){return 0<n.rangeCount}).bind(jc)}(n)}})().map(function(n){var t=Kc(n.start(),n.soffset()),e=Kc(n.finish(),n.foffset());return Tc.range(t.element(),t.offset(),e.element(),e.offset())})}function $c(n){return n.x()+n.width()}function Qc(n,t){return n.x()-t.width()}function Zc(n,t){return n.y()-t.height()+n.height()}function ns(n){return n.y()}function ts(n,t,e){return Ya($c(n),ns(n),e.southeast(),Ka(),"link-layout-se")}function es(n,t,e){return Ya(Qc(n,t),ns(n),e.southwest(),Ja(),"link-layout-sw")}function os(n,t,e){return Ya($c(n),Zc(n,t),e.northeast(),$a(),"link-layout-ne")}function rs(n,t,e){return Ya(Qc(n,t),Zc(n,t),e.northwest(),Qa(),"link-layout-nw")}function is(n,t,e,o){var r=n+t;return o<r?e:r<e?o:r}function us(n,t,e){return n<=t?t:e<=n?e:n}function as(n,t,e,o){var r=n.x(),i=n.y(),u=n.bubble().offset().left(),a=n.bubble().offset().top(),c=o.y(),s=o.bottom(),f=o.x(),l=o.right(),d=i+a,m=function(n,t,e,o,r){var i=r.x(),u=r.y(),a=r.width(),c=r.height(),s=i<=n,f=u<=t,l=s&&f,d=n+e<=i+a&&t+o<=u+c,m=Math.abs(Math.min(e,s?i+a-n:i-(n+e))),g=Math.abs(Math.min(o,f?u+c-t:u-(t+o)));return{originInBounds:l,sizeInBounds:d,limitX:us(n,r.x(),r.right()),limitY:us(t,r.y(),r.bottom()),deltaW:m,deltaH:g}}(r+u,d,t,e,o),g=m.originInBounds,p=m.sizeInBounds,h=m.limitX,v=m.limitY,b=m.deltaW,y=m.deltaH,x=nn(v+y-c),w=nn(s-v),S=function(n,t,e,o){return n.fold(t,t,o,o,t,o,e,e)}(n.direction(),w,w,x),C=nn(h+b-f),k=nn(l-h),O=function(n,t,e,o){return n.fold(t,o,t,o,e,e,t,o)}(n.direction(),k,k,C),E=gc({x:h,y:v,width:b,height:y,maxHeight:S,maxWidth:O,direction:n.direction(),classes:{on:n.bubble().classesOn(),off:n.bubble().classesOff()},label:n.label(),candidateYforTest:d});return g&&p?wf.fit(E):wf.nofit(E,b,y)}function cs(n,t,e,o){kr(t,"max-height"),kr(t,"max-width");var r=function(n){return{width:nn(gu(n)),height:nn(fu(n))}}(t);return function(n,e,u,a,c){function o(n,o,r,i){var t=n(e,u,a);return as(t,s,f,c).fold(wf.fit,function(n,t,e){return i<e||r<t?wf.nofit(n,t,e):wf.nofit(o,r,i)})}var s=u.width(),f=u.height();return O(n,function(n,t){var e=d(o,t);return n.fold(wf.fit,e)},wf.nofit(gc({x:e.x(),y:e.y(),width:u.width(),height:u.height(),maxHeight:u.height(),maxWidth:u.width(),direction:Ka(),classes:{on:[],off:[]},label:"none",candidateYforTest:e.y()}),-1,-1)).fold(l,l)}(o.preference(),n,r,e,o.bounds())}function ss(n,t,e){function o(n){return n+"px"}var r=function(n,r){return n.fold(function(){return pc("absolute",on.some(r.x()),on.some(r.y()),on.none(),on.none())},function(n,t,e,o){return Ta("absolute",r,n,t,e,o)},function(n,t,e,o){return Ta("fixed",r,n,t,e,o)})}(e.origin(),t);!function(n,t){var e=n.dom();Cn(t,function(n,t){n.fold(function(){br(e,t)},function(n){vr(e,t,n)})})}(n,{position:on.some(r.position()),left:r.left().map(o),top:r.top().map(o),right:r.right().map(o),bottom:r.bottom().map(o)})}function fs(n,t){!function(n,t){var e=Mu.max(n,t,["margin-top","border-top-width","padding-top","padding-bottom","border-bottom-width","margin-bottom"]);yr(n,"max-height",e+"px")}(n,Math.floor(t))}function ls(n,t,e){return n[t]===undefined?e:n[t]}function ds(n,t,e,o,r,i){var u=ls(i,"maxHeightFunction",Sf()),a=ls(i,"maxWidthFunction",Z),c=n.anchorBox(),s=n.origin(),f=kf({bounds:function(o,n){return n.fold(function(){return o.fold(Su,Su,yu)},function(e){return o.fold(e,e,function(){var n=e(),t=vc(o,n.x(),n.y());return yu(t.left(),t.top(),n.width(),n.height())})})}(s,r),origin:s,preference:o,maxHeightFunction:u,maxWidthFunction:a});Of(c,t,e,f)}function ms(n,t,e,o,r){var i=function(n,t){return xf(n,t)}(e.anchorBox,t);ds(i,r.element(),e.bubble,e.layouts,o,e.overrides)}function gs(n,t){Hi(n.element(),t.element())}function ps(t,n){var e=t.components();!function(n){bn(n.components(),function(n){return Pi(n.element())}),Io(n.element()),n.syncComponents()}(t);var o=_(e,n);bn(o,function(n){_f(n),t.getSystem().removeFromWorld(n)}),bn(n,function(n){n.getSystem().isConnected()?gs(t,n):(t.getSystem().addToWorld(n),gs(t,n),$e(t.element())&&Mf(n)),t.syncComponents()})}function hs(n,t){Ff(n,t,Hi)}function vs(n){_f(n),Pi(n.element()),n.getSystem().removeFromWorld(n)}function bs(t){var n=Eo(t.element()).bind(function(n){return t.getSystem().getByDom(n).toOption()});vs(t),n.each(function(n){n.syncComponents()})}function ys(n){var t=n.components();bn(t,vs),Io(n.element()),n.syncComponents()}function xs(n,t){If(n,t,Hi)}function ws(t){var n=Bo(t.element());bn(n,function(n){t.getByDom(n).each(_f)}),Pi(t.element())}function Ss(t,n,e,o){e.get().each(function(n){ys(t)});var r=n.getAttachPoint(t);hs(r,t);var i=t.getSystem().build(o);return hs(t,i),e.set(i),i}function Cs(n,t,e,o){var r=Ss(n,t,e,o);return t.onOpen(n,r),r}function ks(t,e,o){o.get().each(function(n){ys(t),bs(t),e.onClose(t,n),o.clear()})}function Os(n,t,e){return e.isOpen()}function Es(n){var t,e=ot("Dismissal",Wf,n);return(t={})[Lf()]={schema:qn([ct("target")]),onReceive:function(t,n){zf.isOpen(t)&&(zf.isPartOf(t,n.target)||e.isExtraPart(t,n.target)||e.fireEventInstead.fold(function(){return zf.close(t)},function(n){return oo(t,n.event)}))}},t}function Ts(n){var t,e=ot("Reposition",Gf,n);return(t={})[jf()]={onReceive:function(t){zf.isOpen(t)&&e.fireEventInstead.fold(function(){return e.doReposition(t)},function(n){return oo(t,n.event)})}},t}function Bs(n,t,e){t.store.manager.onLoad(n,t,e)}function Ds(n,t,e){t.store.manager.onUnload(n,t,e)}function As(){var n=ye(null);return nu({set:n.set,get:n.get,isNotSet:function(){return null===n.get()},clear:function(){n.set(null)},readState:function(){return{mode:"memory",value:n.get()}}})}function _s(){var i=ye({}),u=ye({});return nu({readState:function(){return{mode:"dataset",dataByValue:i.get(),dataByText:u.get()}},lookup:function(n){return Nn(i.get(),n).orThunk(function(){return Nn(u.get(),n)})},update:function(n){var t=i.get(),e=u.get(),o={},r={};bn(n,function(t){o[t.value]=t,Nn(t,"meta").each(function(n){Nn(n,"text").each(function(n){r[n]=t})})}),i.set(N(N({},t),o)),u.set(N(N({},e),r))},clear:function(){i.set({}),u.set({})}})}function Ms(n,t,e,o){var r=t.store;e.update([o]),r.setValue(n,o),t.onSetValue(n,o)}function Fs(t,n){return Dt(t,{},S(n,function(n){return function(t,e){return ce(t,t,Fn(),Yn(function(n){return qt("The field: "+t+" is forbidden. "+e)}))}(n.name(),"Cannot configure "+n.name()+" for "+t)}).concat([At("dump",l)]))}function Is(n){return n.dump}function Rs(n,t){return N(N({},n.dump),ba(t))}function Vs(n,t,e,o){return e.uiType===el?function(n,t,e,o){return n.exists(function(n){return n!==e.owner})?ol.single(!0,nn(e)):Nn(o,e.name).fold(function(){throw new Error("Unknown placeholder component: "+e.name+"\nKnown: ["+wn(o)+"]\nNamespace: "+n.getOr("none")+"\nSpec: "+JSON.stringify(e,null,2))},function(n){return n.replace()})}(n,0,e,o):ol.single(!1,nn(e))}function Ns(t,e,n,o){var r=P(o,function(n,t){return function(n,t){var e=!1;return{name:nn(n),required:function(){return t.fold(function(n,t){return n},function(n,t){return n})},used:function(){return e},replace:function(){if(!0===e)throw new Error("Trying to use the same placeholder more than once: "+n);return e=!0,t}}}(t,n)}),i=function(t,e,n,o){return B(n,function(n){return rl(t,e,n,o)})}(t,e,n,r);return Cn(r,function(n){if(!1===n.used()&&n.required())throw new Error("Placeholder: "+n.name()+" was not found in components list\nNamespace: "+t.getOr("none")+"\nComponents: "+JSON.stringify(e.components,null,2))}),i}function Hs(n){return n.fold(on.some,on.none,on.some,on.some)}function Ps(n){function t(n){return n.name}return n.fold(t,t,t,t)}function zs(e,o){return function(n){var t=ot("Converting part type",o,n);return e(t)}}function Ls(n,t,e,o){return Dn(t.defaults(n,e,o),e,{uid:n.partUids[t.name]},t.overrides(n,e,o))}function js(r,n){var t={};return bn(n,function(n){Hs(n).each(function(e){var o=El(r,e.pname);t[e.name]=function(n){var t=ot("Part: "+e.name+" in "+r,re(e.schema),n);return N(N({},o),{config:n,validated:t})}})}),t}function Us(n,t,e){return{uiType:al(),owner:n,name:t,config:e,validated:{}}}function Ws(n){return B(n,function(n){return n.fold(on.none,on.some,on.none,on.none).map(function(n){return mt(n.name,n.schema.concat([Zu(kl())]))}).toArray()})}function Gs(n){return S(n,Ps)}function Xs(n,t,e){return function(n,e,t){var i={},o={};return bn(t,function(n){n.fold(function(o){i[o.pname]=il(!0,function(n,t,e){return o.factory.sketch(Ls(n,o,t,e))})},function(n){var t=e.parts[n.name];o[n.name]=nn(n.factory.sketch(Ls(e,n,t[kl()]),t))},function(o){i[o.pname]=il(!1,function(n,t,e){return o.factory.sketch(Ls(n,o,t,e))})},function(r){i[r.pname]=ul(!0,function(t,n,e){var o=t[r.name];return S(o,function(n){return r.factory.sketch(Dn(r.defaults(t,n,e),n,r.overrides(t,n)))})})})}),{internals:nn(i),externals:nn(o)}}(0,t,e)}function Ys(n,t,e){return Ns(on.some(n),t,t.components,e)}function qs(n,t,e){var o=t.partUids[e];return n.getSystem().getByUid(o).toOption()}function Ks(n,t,e){return qs(n,t,e).getOrDie("Could not find part: "+e)}function Js(n,t,e){var o={},r=t.partUids,i=n.getSystem();return bn(e,function(n){o[n]=nn(i.getByUid(r[n]))}),o}function $s(n,t){var e=n.getSystem();return P(t.partUids,function(n,t){return nn(e.getByUid(n))})}function Qs(n){return wn(n.partUids)}function Zs(n,t,e){var o={},r=t.partUids,i=n.getSystem();return bn(e,function(n){o[n]=nn(i.getByUid(r[n]).getOrDie())}),o}function nf(t,n){var e=Gs(n);return K(S(e,function(n){return{key:n,value:t+"-"+n}}))}function tf(t){return ce("partUids","partUids",Rn(function(n){return nf(n.uid,t)}),de())}function ef(n,t,e,o,r){var i=function(n,t){return(0<n.length?[mt("parts",n)]:[]).concat([ct("uid"),St("dom",{}),St("components",[]),Zu("originalSpec"),St("debug.sketcher",{})]).concat(t)}(o,r);return ot(n+" [SpecSchema]",qn(i.concat(t)),e)}function of(n,t,e,o,r){var i=Bl(r),u=Ws(e),a=tf(e),c=ef(n,t,i,u,[a]),s=Xs(0,c,e);return o(c,Ys(n,c,s.internals()),i,s.externals())}var rf=function rI(e,o){var t=function(n){return e(n)?on.from(n.dom().nodeValue):on.none()};return{get:function(n){if(!e(n))throw new Error("Can only get "+o+" value of a "+o+" node");return t(n).getOr("")},getOption:t,set:function(n,t){if(!e(n))throw new Error("Can only set raw "+o+" value of a "+o+" node");n.dom().nodeValue=t}}}(Pr,"text"),uf=function(n,t,e,o){return Pr(t)?function(t,e,o,r){var n=t.dom().createRange();n.selectNode(e.dom());var i=n.getClientRects();return Du(i,function(n){return Ha(n,o,r)?on.some(n):on.none()}).map(function(n){return _c(t,e,o,r,n)})}(n,t,e,o):function(t,n,e,o){var r=t.dom().createRange(),i=Bo(n);return Du(i,function(n){return r.selectNode(n.dom()),Ha(r.getBoundingClientRect(),e,o)?uf(t,n,e,o):on.none()})}(n,t,e,o)},af=["img","br"],cf=function(n,i){var u=function(n){for(var t=Bo(n),e=t.length-1;0<=e;e--){var o=t[e];if(i(o))return on.some(o);var r=u(o);if(r.isSome())return r}return on.none()};return u(n)},sf=(document.caretPositionFromPoint||document.caretRangeFromPoint,yo("element","offset")),ff=Tn([{screen:["point"]},{absolute:["point","scrollLeft","scrollTop"]}]),lf=ff.screen,df=ff.absolute,mf=function(n,t,e,o){var r=n,i=t,u=e,a=o;n<0&&(r=0,u=e+n),t<0&&(i=0,a=o+t);var c=lf(Iu(r,i));return on.some(Pu(c,u,a))},gf=function(n,i,u,a,c){return n.map(function(n){var t=[i,n.point()],e=function(n,t,e,o){return n.fold(t,e,o)}(a,function(){return Yc(t)},function(){return Yc(t)},function(){return function(n){var t=S(n,Wc);return Xc(t)}(t)}),o=zu(e.left(),e.top(),n.width(),n.height()),r=Ma(c,u,u.showAbove?[ca,sa,ua,aa,oc,rc]:[ua,aa,ca,sa,rc,rc],u.showAbove?[sa,ca,aa,ua,oc,rc]:[aa,ua,sa,ca,rc,oc]);return Da({anchorBox:o,bubble:u.bubble.getOr(Ea()),overrides:u.overrides,layouts:r,placer:on.none()})})},pf=yo("element","offset"),hf=[ht("getSelection"),ct("root"),ht("bubble"),_a(),St("overrides",{}),St("showAbove",!1),Qu("placement",function(n,t,e){var o=Oo(t.root).dom(),r=qc(n,0,t),i=Jc(o,t).bind(function(n){return Uc(o,Tc.exactFromRange(n)).orThunk(function(){var t=we.fromText("\ufeff");return Ao(n.start(),t),Uc(o,Tc.exact(t,0,t,1)).map(function(n){return Pi(t),n})}).bind(function(n){return mf(n.left(),n.top(),n.width(),n.height())})}),u=Jc(o,t).bind(function(n){return Hr(n.start())?on.some(n.start()):Eo(n.start())}).getOr(n.element());return gf(i,r,t,e,u)})],vf=[ct("node"),ct("root"),ht("bubble"),_a(),St("overrides",{}),St("showAbove",!1),Qu("placement",function(r,i,u){var a=qc(r,0,i);return i.node.bind(function(n){var t=n.dom().getBoundingClientRect(),e=mf(t.left,t.top,t.width,t.height),o=i.node.getOr(r.element());return gf(e,a,i,u,o)})})],bf=[ct("item"),_a(),St("overrides",{}),Qu("placement",function(n,t,e){var o=Ba(e,t.item.element()),r=Ma(n.element(),t,[ts,es,os,rs],[es,ts,rs,os]);return on.some(Da({anchorBox:o,bubble:Ea(),overrides:t.overrides,layouts:r,placer:on.none()}))})],yf=it("anchor",{selection:hf,node:vf,hotspot:wc,submenu:bf,makeshift:Sc}),xf=yo("anchorBox","origin"),wf=Tn([{fit:["reposition"]},{nofit:["reposition","deltaW","deltaH"]}]),Sf=nn(function(n,t){fs(n,t),xr(n,{"overflow-x":"hidden","overflow-y":"auto"})}),Cf=nn(function(n,t){fs(n,t)}),kf=So(["bounds","origin","preference","maxHeightFunction","maxWidthFunction"],[]),Of=function(n,t,e,o){var r=cs(n,t,e,o);ss(t,r,o),function(n,t){var e=t.classes();pr(n,e.off),gr(n,e.on)}(t,r),function(n,t,e){e.maxHeightFunction()(n,t.maxHeight())}(t,r,o),function(n,t,e){e.maxWidthFunction()(n,t.maxWidth())}(t,r,o)},Ef=function(n,t,e,o,r,i){var u=i.map(xu);return Tf(n,t,e,o,r,u)},Tf=function(r,i,n,t,u,a){var c=ot("positioning anchor.info",yf,t);ka(function(){yr(u.element(),"position","fixed");var n=Sr(u.element(),"visibility");yr(u.element(),"visibility","hidden");var t=i.useFixed()?function(){var n=v.document.documentElement;return yc(0,0,n.clientWidth,n.clientHeight)}():function(n){var t=du(n.element()),e=n.element().dom().getBoundingClientRect();return bc(t.left(),t.top(),e.width,e.height)}(r),e=c.placement,o=a.map(nn).or(i.getBounds);e(r,c,t).each(function(n){n.placer.getOr(ms)(r,t,n,o,u)}),n.fold(function(){kr(u.element(),"visibility")},function(n){yr(u.element(),"visibility",n)}),Sr(u.element(),"left").isNone()&&Sr(u.element(),"top").isNone()&&Sr(u.element(),"right").isNone()&&Sr(u.element(),"bottom").isNone()&&Sr(u.element(),"position").is("fixed")&&kr(u.element(),"position")},u.element())},Bf=/* */Object.freeze({position:function(n,t,e,o,r){Ef(n,t,e,o,r,on.none())},positionWithin:Ef,positionWithinBounds:Tf,getMode:function(n,t,e){return t.useFixed()?"fixed":"absolute"}}),Df=[St("useFixed",u),ht("getBounds")],Af=ya({fields:Df,name:"positioning",active:dc,apis:Bf}),_f=function(n){oo(n,ki());var t=n.components();bn(t,_f)},Mf=function(n){var t=n.components();bn(t,Mf),oo(n,Ci())},Ff=function(n,t,e){n.getSystem().addToWorld(t),e(n.element(),t.element()),$e(n.element())&&Mf(t),n.syncComponents()},If=function(n,t,e){e(n,t.element());var o=Bo(t.element());bn(o,function(n){t.getByDom(n).each(Mf)})},Rf=function(n,t,e){var o=t.getAttachPoint(n);yr(n.element(),"position",Af.getMode(o)),function(t,n,e,o){Sr(t.element(),n).fold(function(){jo(t.element(),e)},function(n){Po(t.element(),e,n)}),yr(t.element(),n,o)}(n,"visibility",t.cloakVisibilityAttr,"hidden")},Vf=function(n,t,e){!function(t){return x(["top","left","right","bottom"],function(n){return Sr(t,n).isSome()})}(n.element())&&kr(n.element(),"position"),function(n,t,e){if(Lo(n.element(),e)){var o=zo(n.element(),e);yr(n.element(),t,o)}else kr(n.element(),t)}(n,"visibility",t.cloakVisibilityAttr)},Nf=/* */Object.freeze({cloak:Rf,decloak:Vf,open:Cs,openWhileCloaked:function(n,t,e,o,r){Rf(n,t),Cs(n,t,e,o),r(),Vf(n,t)},close:ks,isOpen:Os,isPartOf:function(t,e,n,o){return Os(0,0,n)&&n.get().exists(function(n){return e.isPartOf(t,n,o)})},getState:function(n,t,e){return e.get()},setContent:function(n,t,e,o){return e.get().map(function(){return Ss(n,t,e,o)})}}),Hf=/* */Object.freeze({events:function(e,o){return co([lo(hi(),function(n,t){ks(n,e,o)})])}}),Pf=[qu("onOpen"),qu("onClose"),ct("isPartOf"),ct("getAttachPoint"),St("cloakVisibilityAttr","data-precloak-visibility")],zf=ya({fields:Pf,name:"sandboxing",active:Hf,apis:Nf,state:/* */Object.freeze({init:function(){var t=ye(on.none()),n=nn("not-implemented");return nu({readState:n,isOpen:function(){return t.get().isSome()},clear:function(){t.set(on.none())},set:function(n){t.set(on.some(n))},get:function(n){return t.get()}})}})}),Lf=nn("dismiss.popups"),jf=nn("reposition.popups"),Uf=nn("mouse.released"),Wf=qn([St("isExtraPart",nn(!1)),wt("fireEventInstead",[St("event",Oi())])]),Gf=qn([St("isExtraPart",nn(!1)),wt("fireEventInstead",[St("event",Ei())]),dt("doReposition")]),Xf=/* */Object.freeze({onLoad:Bs,onUnload:Ds,setValue:function(n,t,e,o){t.store.manager.setValue(n,t,e,o)},getValue:function(n,t,e){return t.store.manager.getValue(n,t,e)},getState:function(n,t,e){return e}}),Yf=/* */Object.freeze({events:function(e,o){var n=e.resetOnDom?[Ii(function(n,t){Bs(n,e,o)}),Ri(function(n,t){Ds(n,e,o)})]:[ga(e,o,Bs)];return co(n)}}),qf=/* */Object.freeze({memory:As,dataset:_s,manual:function(){return nu({readState:function(){}})},init:function(n){return n.store.manager.state(n)}}),Kf=[ht("initialValue"),ct("getFallbackEntry"),ct("getDataKey"),ct("setValue"),Qu("manager",{setValue:Ms,getValue:function(n,t,e){var o=t.store,r=o.getDataKey(n);return e.lookup(r).fold(function(){return o.getFallbackEntry(r)},function(n){return n})},onLoad:function(t,e,o){e.store.initialValue.each(function(n){Ms(t,e,o,n)})},onUnload:function(n,t,e){e.clear()},state:_s})],Jf=[ct("getValue"),St("setValue",Z),ht("initialValue"),Qu("manager",{setValue:function(n,t,e,o){t.store.setValue(n,o),t.onSetValue(n,o)},getValue:function(n,t,e){return t.store.getValue(n)},onLoad:function(t,e,n){e.store.initialValue.each(function(n){e.store.setValue(t,n)})},onUnload:Z,state:Zi.init})],$f=[ht("initialValue"),Qu("manager",{setValue:function(n,t,e,o){e.set(o),t.onSetValue(n,o)},getValue:function(n,t,e){return e.get()},onLoad:function(n,t,e){t.store.initialValue.each(function(n){e.isNotSet()&&e.set(n)})},onUnload:function(n,t,e){e.clear()},state:As})],Qf=[Ct("store",{mode:"memory"},it("mode",{memory:$f,manual:Jf,dataset:Kf})),qu("onSetValue"),St("resetOnDom",!1)],Zf=ya({fields:Qf,name:"representing",active:Yf,apis:Xf,extra:{setValueFrom:function(n,t){var e=Zf.getValue(t);Zf.setValue(n,e)}},state:qf}),nl=Fs,tl=Rs,el="placeholder",ol=Tn([{single:["required","valueThunk"]},{multiple:["required","valueThunks"]}]),rl=function(i,u,a,c){return Vs(i,0,a,c).fold(function(n,t){var e=t(u,a.config,a.validated),o=Nn(e,"components").getOr([]),r=B(o,function(n){return rl(i,u,n,c)});return[N(N({},e),{components:r})]},function(n,t){var e=t(u,a.config,a.validated);return a.validated.preprocess.getOr(l)(e)})},il=ol.single,ul=ol.multiple,al=nn(el),cl=Tn([{required:["data"]},{external:["data"]},{optional:["data"]},{group:["data"]}]),sl=St("factory",{sketch:l}),fl=St("schema",[]),ll=ct("name"),dl=ce("pname","pname",In(function(n){return"<alloy."+Xo(n.name)+">"}),de()),ml=At("schema",function(){return[ht("preprocess")]}),gl=St("defaults",nn({})),pl=St("overrides",nn({})),hl=re([sl,fl,ll,dl,gl,pl]),vl=re([sl,fl,ll,gl,pl]),bl=re([sl,fl,ll,dl,gl,pl]),yl=re([sl,ml,ll,ct("unit"),dl,gl,pl]),xl=zs(cl.required,hl),wl=zs(cl.external,vl),Sl=zs(cl.optional,bl),Cl=zs(cl.group,yl),kl=nn("entirety"),Ol=/* */Object.freeze({required:xl,external:wl,optional:Sl,group:Cl,asNamedPart:Hs,name:Ps,asCommon:function(n){return n.fold(l,l,l,l)},original:kl}),El=function(n,t){return{uiType:al(),owner:n,name:t}},Tl=/* */Object.freeze({generate:js,generateOne:Us,schemas:Ws,names:Gs,substitutes:Xs,components:Ys,defaultUids:nf,defaultUidsSchema:tf,getAllParts:$s,getAllPartNames:Qs,getPart:qs,getPartOrDie:Ks,getParts:Js,getPartsOrDie:Zs}),Bl=function(n){return n.hasOwnProperty("uid")?n:N(N({},n),{uid:Yo("uid")})};function Dl(n){var t=ot("Sketcher for "+n.name,Kl,n),e=P(t.apis,$o),o=P(t.extraApis,function(n,t){return Ko(n,t)});return N(N({name:nn(t.name),partFields:nn([]),configFields:nn(t.configFields),sketch:function(n){return function(n,t,e,o){var r=Bl(o);return e(ef(n,t,r,[],[]),r)}(t.name,t.configFields,t.factory,n)}},e),o)}function Al(n){var t=ot("Sketcher for "+n.name,Jl,n),e=js(t.name,t.partFields),o=P(t.apis,$o),r=P(t.extraApis,function(n,t){return Ko(n,t)});return N(N({name:nn(t.name),partFields:nn(t.partFields),configFields:nn(t.configFields),sketch:function(n){return of(t.name,t.configFields,t.partFields,t.factory,n)},parts:nn(e)},o),r)}function _l(n){return"input"===Ke(n)&&"radio"!==zo(n,"type")||"textarea"===Ke(n)}function Ml(e,o,n,r){var t=zc(e.element(),"."+o.highlightClass);bn(t,function(t){x(r,function(n){return n.element()===t})||(dr(t,o.highlightClass),e.getSystem().getByDom(t).each(function(n){o.onDehighlight(e,n),oo(n,Mi())}))})}function Fl(n,t,e,o){Ml(n,t,0,[o]),nd(n,t,e,o)||(fr(o.element(),t.highlightClass),t.onHighlight(n,o),oo(o,_i()))}function Il(e,t,n,o){var r=zc(e.element(),"."+t.itemClass);return T(r,function(n){return mr(n,t.highlightClass)}).bind(function(n){var t=is(n,o,0,r.length-1);return e.getSystem().getByDom(r[t]).toOption()})}function Rl(n,t,e){var o=A(n.slice(0,t)),r=A(n.slice(t+1));return E(o.concat(r),e)}function Vl(n,t,e){var o=A(n.slice(0,t));return E(o,e)}function Nl(n,t,e){var o=n.slice(0,t),r=n.slice(t+1);return E(r.concat(o),e)}function Hl(n,t,e){var o=n.slice(t+1);return E(o,e)}function Pl(e){return function(n){var t=n.raw();return vn(e,t.which)}}function zl(n){return function(t){return D(n,function(n){return n(t)})}}function Ll(n){return!0===n.raw().shiftKey}function jl(n){return!0===n.raw().ctrlKey}function Ul(n,t){return{matches:n,classification:t}}function Wl(n,t,e){t.exists(function(t){return e.exists(function(n){return jt(n,t)})})||ro(n,Ti(),{prevFocus:t,newFocus:e})}function Gl(){function r(n){return Ca(n.element())}return{get:r,set:function(n,t){var e=r(n);n.getSystem().triggerFocus(t,n.element());var o=r(n);Wl(n,e,o)}}}function Xl(){function r(n){return ad.getHighlighted(n).map(function(n){return n.element()})}return{get:r,set:function(t,n){var e=r(t);t.getSystem().getByDom(n).fold(Z,function(n){ad.highlight(t,n)});var o=r(t);Wl(t,e,o)}}}var Yl,ql,Kl=qn([ct("name"),ct("factory"),ct("configFields"),St("apis",{}),St("extraApis",{})]),Jl=qn([ct("name"),ct("factory"),ct("configFields"),ct("partFields"),St("apis",{}),St("extraApis",{})]),$l=/* */Object.freeze({getCurrent:function(n,t,e){return t.find(n)}}),Ql=[ct("find")],Zl=ya({fields:Ql,name:"composing",apis:$l}),nd=function(n,t,e,o){return mr(o.element(),t.highlightClass)},td=function(n,t,e,o){var r=zc(n.element(),"."+t.itemClass);return on.from(r[o]).fold(function(){return an.error("No element found with index "+o)},n.getSystem().getByDom)},ed=function(t,n,e){return ku(t.element(),"."+n.itemClass).bind(function(n){return t.getSystem().getByDom(n).toOption()})},od=function(t,n,e){var o=zc(t.element(),"."+n.itemClass);return(0<o.length?on.some(o[o.length-1]):on.none()).bind(function(n){return t.getSystem().getByDom(n).toOption()})},rd=function(t,n,e){var o=zc(t.element(),"."+n.itemClass);return Bu(S(o,function(n){return t.getSystem().getByDom(n).toOption()}))},id=/* */Object.freeze({dehighlightAll:function(n,t,e){return Ml(n,t,0,[])},dehighlight:function(n,t,e,o){nd(n,t,e,o)&&(dr(o.element(),t.highlightClass),t.onDehighlight(n,o),oo(o,Mi()))},highlight:Fl,highlightFirst:function(t,e,o){ed(t,e).each(function(n){Fl(t,e,o,n)})},highlightLast:function(t,e,o){od(t,e).each(function(n){Fl(t,e,o,n)})},highlightAt:function(t,e,o,n){td(t,e,o,n).fold(function(n){throw new Error(n)},function(n){Fl(t,e,o,n)})},highlightBy:function(t,e,o,n){var r=rd(t,e);E(r,n).each(function(n){Fl(t,e,o,n)})},isHighlighted:nd,getHighlighted:function(t,n,e){return ku(t.element(),"."+n.highlightClass).bind(function(n){return t.getSystem().getByDom(n).toOption()})},getFirst:ed,getLast:od,getPrevious:function(n,t,e){return Il(n,t,0,-1)},getNext:function(n,t,e){return Il(n,t,0,1)},getCandidates:rd}),ud=[ct("highlightClass"),ct("itemClass"),qu("onHighlight"),qu("onDehighlight")],ad=ya({fields:ud,name:"highlighting",apis:id}),cd=b(Ll);(ql=Yl=Yl||{}).OnFocusMode="onFocus",ql.OnEnterOrSpaceMode="onEnterOrSpace",ql.OnApiMode="onApi";function sd(n,t,e,i,u){function a(t,e,n,o,r){return function(n,t){return E(n,function(n){return n.matches(t)}).map(function(n){return n.classification})}(n(t,e,o,r),e.event()).bind(function(n){return n(t,e,o,r)})}var o={schema:function(){return n.concat([St("focusManager",Gl()),Ct("focusInside","onFocus",Zn(function(n){return vn(["onFocus","onEnterOrSpace","onApi"],n)?an.value(n):an.error("Invalid value for focusInside")})),Qu("handler",o),Qu("state",t),Qu("sendFocusIn",u)])},processKey:a,toEvents:function(o,r){var n=o.focusInside!==Yl.OnFocusMode?on.none():u(o).map(function(e){return lo(ci(),function(n,t){e(n,o,r),t.stop()})});return co(n.toArray().concat([lo(ni(),function(n,t){a(n,t,e,o,r).fold(function(){!function(t,e){var n=Pl([32].concat([13]))(e.event());o.focusInside===Yl.OnEnterOrSpaceMode&&n&&Ut(t,e)&&u(o).each(function(n){n(t,o,r),e.stop()})}(n,t)},function(n){t.stop()})}),lo(ti(),function(n,t){a(n,t,i,o,r).each(function(n){t.stop()})})]))}};return o}function fd(n){function i(n,t){var e=n.visibilitySelector.bind(function(n){return Ou(t,n)}).getOr(t);return 0<su(e)}function t(t,e){(function(n,t){var e=zc(n.element(),t.selector),o=C(e,function(n){return i(t,n)});return on.from(o[t.firstTabstop])})(t,e).each(function(n){e.focusManager.set(t,n)})}function u(t,n,e,o,r){return r(n,e,function(n){return function(n,t){return i(n,t)&&n.useTabstopAt(t)}(o,n)}).fold(function(){return o.cyclic?on.some(!0):on.none()},function(n){return o.focusManager.set(t,n),on.some(!0)})}function a(t,n,e,o){var r=zc(t.element(),e.selector);return function(n,t){return t.focusManager.get(n).bind(function(n){return Ou(n,t.selector)})}(t,e).bind(function(n){return T(r,d(jt,n)).bind(function(n){return u(t,r,n,e,o)})})}var e=[ht("onEscape"),ht("onEnter"),St("selector",'[data-alloy-tabstop="true"]:not(:disabled)'),St("firstTabstop",0),St("useTabstopAt",nn(!0)),ht("visibilitySelector")].concat([n]),o=nn([Ul(zl([Ll,Pl([9])]),function(n,t,e,o){var r=e.cyclic?Rl:Vl;return a(n,0,e,r)}),Ul(Pl([9]),function(n,t,e,o){var r=e.cyclic?Nl:Hl;return a(n,0,e,r)}),Ul(Pl([27]),function(t,e,n,o){return n.onEscape.bind(function(n){return n(t,e)})}),Ul(zl([cd,Pl([13])]),function(t,e,n,o){return n.onEnter.bind(function(n){return n(t,e)})})]),r=nn([]);return sd(e,Zi.init,o,r,function(){return on.some(t)})}function ld(n,t,e){return _l(e)&&Pl([32])(t.event())?on.none():function(n,t,e){return uo(n,e,di()),on.some(!0)}(n,0,e)}function dd(n,t){return on.some(!0)}function md(n,t,e){return e.execute(n,t,n.element())}function gd(n){var e=ye(on.none());return nu({readState:function(){return e.get().map(function(n){return{numRows:n.numRows(),numColumns:n.numColumns()}}).getOr({numRows:"?",numColumns:"?"})},setGridSize:function(n,t){e.set(on.some({numRows:nn(n),numColumns:nn(t)}))},getNumRows:function(){return e.get().map(function(n){return n.numRows()})},getNumColumns:function(){return e.get().map(function(n){return n.numColumns()})}})}function pd(i){return function(n,t,e,o){var r=i(n.element());return Em(r,n,t,e,o)}}function hd(n,t){var e=Aa(n,t);return pd(e)}function vd(n,t){var e=Aa(t,n);return pd(e)}function bd(r){return function(n,t,e,o){return Em(r,n,t,e,o)}}function yd(n){return!function(n){return n.offsetWidth<=0&&n.offsetHeight<=0}(n.dom())}function xd(n,t,e){var o=d(jt,t),r=zc(n,e);return function(t,n){return T(t,n).map(function(n){return Am({index:n,candidates:t})})}(C(r,yd),o)}function wd(n,t){return T(n,function(n){return jt(t,n)})}function Sd(e,n,o,t){return t(Math.floor(n/o),n%o).bind(function(n){var t=n.row()*o+n.column();return 0<=t&&t<e.length?on.some(e[t]):on.none()})}function Cd(r,n,i,u,a){return Sd(r,n,u,function(n,t){var e=n===i-1?r.length-n*u:u,o=is(t,a,0,e-1);return on.some({row:nn(n),column:nn(o)})})}function kd(i,n,u,a,c){return Sd(i,n,a,function(n,t){var e=is(n,c,0,u-1),o=e===u-1?i.length-e*a:a,r=us(t,0,o-1);return on.some({row:nn(e),column:nn(r)})})}function Od(t,e,n){ku(t.element(),e.selector).each(function(n){e.focusManager.set(t,n)})}function Ed(r){return function(n,t,e,o){return xd(n,t,e.selector).bind(function(n){return r(n.candidates(),n.index(),o.getNumRows().getOr(e.initSize.numRows),o.getNumColumns().getOr(e.initSize.numColumns))})}}function Td(n,t,e,o){return e.captureTab?on.some(!0):on.none()}function Bd(n,t,e,r){var i=function(n,t,e){var o=is(t,r,0,e.length-1);return o===n?on.none():function(n){return"button"===Ke(n)&&"disabled"===zo(n,"disabled")}(e[o])?i(n,o,e):on.from(e[o])};return xd(n,e,t).bind(function(n){var t=n.index(),e=n.candidates();return i(t,t,e)})}function Dd(t,e,o){return function(n,t){return t.focusManager.get(n).bind(function(n){return Ou(n,t.selector)})}(t,o).bind(function(n){return o.execute(t,e,n)})}function Ad(t,e){e.getInitial(t).orThunk(function(){return ku(t.element(),e.selector)}).each(function(n){e.focusManager.set(t,n)})}function _d(n,t,e){return Bd(n,e.selector,t,-1)}function Md(n,t,e){return Bd(n,e.selector,t,1)}function Fd(o){return function(n,t,e){return o(n,t,e).bind(function(){return e.executeOnMove?Dd(n,t,e):on.some(!0)})}}function Id(n,t,e,o){return e.onEscape(n,t)}function Rd(n,t,e){return on.from(n[t]).bind(function(n){return on.from(n[e]).map(function(n){return jm({rowIndex:t,columnIndex:e,cell:n})})})}function Vd(n,t,e,o){var r=n[t].length,i=is(e,o,0,r-1);return Rd(n,t,i)}function Nd(n,t,e,o){var r=is(e,o,0,n.length-1),i=n[r].length,u=us(t,0,i-1);return Rd(n,r,u)}function Hd(n,t,e,o){var r=n[t].length,i=us(e+o,0,r-1);return Rd(n,t,i)}function Pd(n,t,e,o){var r=us(e+o,0,n.length-1),i=n[r].length,u=us(t,0,i-1);return Rd(n,r,u)}function zd(t,e){e.previousSelector(t).orThunk(function(){var n=e.selectors;return ku(t.element(),n.cell)}).each(function(n){e.focusManager.set(t,n)})}function Ld(n,t){return function(r,e,i){var u=i.cycles?n:t;return Ou(e,i.selectors.row).bind(function(n){var t=zc(n,i.selectors.cell);return wd(t,e).bind(function(e){var o=zc(r,i.selectors.row);return wd(o,n).bind(function(n){var t=function(n,t){return S(n,function(n){return zc(n,t.selectors.cell)})}(o,i);return u(t,n,e).map(function(n){return n.cell()})})})})}}function jd(t,e,o){return o.focusManager.get(t).bind(function(n){return o.execute(t,e,n)})}function Ud(t,e){ku(t.element(),e.selector).each(function(n){e.focusManager.set(t,n)})}function Wd(n,t,e){return Bd(n,e.selector,t,-1)}function Gd(n,t,e){return Bd(n,e.selector,t,1)}function Xd(n,t,e,o){var r=n.getSystem().build(o);Ff(n,r,e)}function Yd(n,t,e,o){var r=dg(n);E(r,function(n){return jt(o.element(),n.element())}).each(bs)}function qd(t,n,e,o,r){var i=dg(t);return on.from(i[o]).map(function(n){return Yd(t,0,0,n),r.each(function(n){Xd(t,0,function(n,t){!function(n,t,e){Do(n,e).fold(function(){Hi(n,t)},function(n){Ao(n,t)})}(n,t,o)},n)}),n})}function Kd(n,t){return{key:n,value:{config:{},me:function(n,t){var e=co(t);return ya({fields:[ct("enabled")],name:n,active:{events:nn(e)}})}(n,t),configAsRaw:nn({}),initialConfig:{},state:Zi}}}function Jd(n,t){t.ignore||(wa(n.element()),t.onFocus(n))}function $d(n,t,e){var o=t.aria;o.update(n,o,e.get())}function Qd(t,n,e){n.toggleClass.each(function(n){e.get()?fr(t.element(),n):dr(t.element(),n)})}function Zd(n,t,e){bg(n,t,e,!e.get())}function nm(n,t,e){e.set(!0),Qd(n,t,e),$d(n,t,e)}function tm(n,t,e){e.set(!1),Qd(n,t,e),$d(n,t,e)}function em(n,t,e){bg(n,t,e,t.selected)}function om(){function n(n,t){t.stop(),io(n)}return[lo(ri(),n),lo(gi(),n),vo(Ur()),vo(Yr())]}function rm(n){return co(H([n.map(function(e){return Ni(function(n,t){e(n),t.stop()})}).toArray(),om()]))}function im(n){(Ca(n.element()).isNone()||vg.isFocused(n))&&(vg.isFocused(n)||vg.focus(n),ro(n,kg,{item:n}))}function um(n){ro(n,Og,{item:n})}function am(n,t){var e={};Cn(n,function(n,t){bn(n,function(n){e[n]=t})});var o=t,r=function(n){return kn(n,function(n,t){return{k:n,v:t}})}(t),i=P(r,function(n,t){return[t].concat(Ng(e,o,r,t))});return P(e,function(n){return Nn(i,n).getOr([n])})}function cm(n){return n.x()}function sm(n,t){return n.x()+n.width()/2-t.width()/2}function fm(n,t){return n.x()+n.width()-t.width()}function lm(n){return n.y()}function dm(n,t){return n.y()+n.height()-t.height()}function mm(n,t,e){return Ya(cm(n),dm(n,t),e.innerSoutheast(),Ka(),"layout-se")}function gm(n,t,e){return Ya(fm(n,t),dm(n,t),e.innerSouthwest(),Ja(),"layout-sw")}function pm(n,t,e){return Ya(cm(n),lm(n),e.innerNortheast(),$a(),"layout-ne")}function hm(n,t,e){return Ya(fm(n,t),lm(n),e.innerNorthwest(),Qa(),"layout-nw")}function vm(n){var t=function e(n){return n.uid!==undefined}(n)&&$(n,"uid")?n.uid:Yo("memento");return{get:function(n){return n.getSystem().getByUid(t).getOrDie()},getOpt:function(n){return n.getSystem().getByUid(t).toOption()},asSpec:function(){return N(N({},n),{uid:t})}}}function bm(n){return on.from(n()["temporary-placeholder"]).getOr("!not found!")}function ym(n,t){return on.from(t()[n]).getOrThunk(function(){return bm(t)})}var xm,wm=fd(At("cyclic",nn(!1))),Sm=fd(At("cyclic",nn(!0))),Cm=[St("execute",ld),St("useSpace",!1),St("useEnter",!0),St("useControlEnter",!1),St("useDown",!1)],km=sd(Cm,Zi.init,function(n,t,e,o){var r=e.useSpace&&!_l(n.element())?[32]:[],i=e.useEnter?[13]:[],u=e.useDown?[40]:[],a=r.concat(i).concat(u);return[Ul(Pl(a),md)].concat(e.useControlEnter?[Ul(zl([jl,Pl([13])]),md)]:[])},function(n,t,e,o){return e.useSpace&&!_l(n.element())?[Ul(Pl([32]),dd)]:[]},function(){return on.none()}),Om=/* */Object.freeze({flatgrid:gd,init:function(n){return n.state(n)}}),Em=function(t,e,n,o,r){return o.focusManager.get(e).bind(function(n){return t(e.element(),n,o,r)}).map(function(n){return o.focusManager.set(e,n),!0})},Tm=bd,Bm=bd,Dm=bd,Am=So(["index","candidates"],[]),_m=[ct("selector"),St("execute",ld),Ku("onEscape"),St("captureTab",!1),Xa()],Mm=Ed(function(n,t,e,o){return Cd(n,t,e,o,-1)}),Fm=Ed(function(n,t,e,o){return Cd(n,t,e,o,1)}),Im=Ed(function(n,t,e,o){return kd(n,t,e,o,-1)}),Rm=Ed(function(n,t,e,o){return kd(n,t,e,o,1)}),Vm=nn([Ul(Pl([37]),hd(Mm,Fm)),Ul(Pl([39]),vd(Mm,Fm)),Ul(Pl([38]),Tm(Im)),Ul(Pl([40]),Bm(Rm)),Ul(zl([Ll,Pl([9])]),Td),Ul(zl([cd,Pl([9])]),Td),Ul(Pl([27]),function(n,t,e,o){return e.onEscape(n,t)}),Ul(Pl([32].concat([13])),function(t,e,o,n){return function(n,t){return t.focusManager.get(n).bind(function(n){return Ou(n,t.selector)})}(t,o).bind(function(n){return o.execute(t,e,n)})})]),Nm=nn([Ul(Pl([32]),dd)]),Hm=sd(_m,gd,Vm,Nm,function(){return on.some(Od)}),Pm=[ct("selector"),St("getInitial",on.none),St("execute",ld),Ku("onEscape"),St("executeOnMove",!1),St("allowVertical",!0)],zm=nn([Ul(Pl([32]),dd)]),Lm=sd(Pm,Zi.init,function(n,t,e,o){var r=[37].concat(e.allowVertical?[38]:[]),i=[39].concat(e.allowVertical?[40]:[]);return[Ul(Pl(r),Fd(hd(_d,Md))),Ul(Pl(i),Fd(vd(_d,Md))),Ul(Pl([13]),Dd),Ul(Pl([32]),Dd),Ul(Pl([27]),Id)]},zm,function(){return on.some(Ad)}),jm=So(["rowIndex","columnIndex","cell"],[]),Um=[mt("selectors",[ct("row"),ct("cell")]),St("cycles",!0),St("previousSelector",on.none),St("execute",ld)],Wm=Ld(function(n,t,e){return Vd(n,t,e,-1)},function(n,t,e){return Hd(n,t,e,-1)}),Gm=Ld(function(n,t,e){return Vd(n,t,e,1)},function(n,t,e){return Hd(n,t,e,1)}),Xm=Ld(function(n,t,e){return Nd(n,e,t,-1)},function(n,t,e){return Pd(n,e,t,-1)}),Ym=Ld(function(n,t,e){return Nd(n,e,t,1)},function(n,t,e){return Pd(n,e,t,1)}),qm=nn([Ul(Pl([37]),hd(Wm,Gm)),Ul(Pl([39]),vd(Wm,Gm)),Ul(Pl([38]),Tm(Xm)),Ul(Pl([40]),Bm(Ym)),Ul(Pl([32].concat([13])),function(t,e,o){return Ca(t.element()).bind(function(n){return o.execute(t,e,n)})})]),Km=nn([Ul(Pl([32]),dd)]),Jm=sd(Um,Zi.init,qm,Km,function(){return on.some(zd)}),$m=[ct("selector"),St("execute",ld),St("moveOnTab",!1)],Qm=nn([Ul(Pl([38]),Dm(Wd)),Ul(Pl([40]),Dm(Gd)),Ul(zl([Ll,Pl([9])]),function(n,t,e){return e.moveOnTab?Dm(Wd)(n,t,e):on.none()}),Ul(zl([cd,Pl([9])]),function(n,t,e){return e.moveOnTab?Dm(Gd)(n,t,e):on.none()}),Ul(Pl([13]),jd),Ul(Pl([32]),jd)]),Zm=nn([Ul(Pl([32]),dd)]),ng=sd($m,Zi.init,Qm,Zm,function(){return on.some(Ud)}),tg=[Ku("onSpace"),Ku("onEnter"),Ku("onShiftEnter"),Ku("onLeft"),Ku("onRight"),Ku("onTab"),Ku("onShiftTab"),Ku("onUp"),Ku("onDown"),Ku("onEscape"),St("stopSpaceKeyup",!1),ht("focusIn")],eg=sd(tg,Zi.init,function(n,t,e){return[Ul(Pl([32]),e.onSpace),Ul(zl([cd,Pl([13])]),e.onEnter),Ul(zl([Ll,Pl([13])]),e.onShiftEnter),Ul(zl([Ll,Pl([9])]),e.onShiftTab),Ul(zl([cd,Pl([9])]),e.onTab),Ul(Pl([38]),e.onUp),Ul(Pl([40]),e.onDown),Ul(Pl([37]),e.onLeft),Ul(Pl([39]),e.onRight),Ul(Pl([32]),e.onSpace),Ul(Pl([27]),e.onEscape)]},function(n,t,e){return e.stopSpaceKeyup?[Ul(Pl([32]),dd)]:[]},function(n){return n.focusIn}),og=wm.schema(),rg=Sm.schema(),ig=Lm.schema(),ug=Hm.schema(),ag=Jm.schema(),cg=km.schema(),sg=ng.schema(),fg=eg.schema(),lg=xa({branchKey:"mode",branches:/* */Object.freeze({acyclic:og,cyclic:rg,flow:ig,flatgrid:ug,matrix:ag,execution:cg,menu:sg,special:fg}),name:"keying",active:{events:function(n,t){return n.handler.toEvents(n,t)}},apis:{focusIn:function(t,e,o){e.sendFocusIn(e).fold(function(){t.getSystem().triggerFocus(t.element(),t.element())},function(n){n(t,e,o)})},setGridSize:function(n,t,e,o,r){$(e,"setGridSize")?e.setGridSize(o,r):v.console.error("Layout does not support setGridSize")}},state:Om}),dg=function(n,t){return n.components()},mg=ya({fields:[],name:"replacing",apis:/* */Object.freeze({append:function(n,t,e,o){Xd(n,0,Hi,o)},prepend:function(n,t,e,o){Xd(n,0,Mo,o)},remove:Yd,replaceAt:qd,replaceBy:function(t,n,e,o,r){var i=dg(t);return T(i,o).bind(function(n){return qd(t,0,0,n,r)})},set:function(t,n,e,o){ka(function(){var n=S(o,t.getSystem().build);ps(t,n)},t.element())},contents:dg})}),gg=/* */Object.freeze({focus:Jd,blur:function(n,t){t.ignore||function(n){n.dom().blur()}(n.element())},isFocused:function(n){return function(n){var t=Co(n).dom();return n.dom()===t.activeElement}(n.element())}}),pg=/* */Object.freeze({exhibit:function(n,t){var e=t.ignore?{}:{attributes:{tabindex:"-1"}};return Zo(e)},events:function(e){return co([lo(ci(),function(n,t){Jd(n,e),t.stop()})].concat(e.stopMousedown?[lo(Yr(),function(n,t){t.event().prevent()})]:[]))}}),hg=[qu("onFocus"),St("stopMousedown",!1),St("ignore",!1)],vg=ya({fields:hg,name:"focusing",active:pg,apis:gg}),bg=function(n,t,e,o){(o?nm:tm)(n,t,e)},yg=/* */Object.freeze({onLoad:em,toggle:Zd,isOn:function(n,t,e){return e.get()},on:nm,off:tm,set:bg}),xg=/* */Object.freeze({exhibit:function(n,t,e){return Zo({})},events:function(n,t){var e=function(t,e,o){return Ni(function(n){o(n,t,e)})}(n,t,Zd),o=ga(n,t,em);return co(H([n.toggleOnExecute?[e]:[],[o]]))}}),wg=function(n,t,e){Po(n.element(),"aria-expanded",e)},Sg=[St("selected",!1),ht("toggleClass"),St("toggleOnExecute",!0),Ct("aria",{mode:"none"},it("mode",{pressed:[St("syncWithExpanded",!1),Qu("update",function(n,t,e){Po(n.element(),"aria-pressed",e),t.syncWithExpanded&&wg(n,t,e)})],checked:[Qu("update",function(n,t,e){Po(n.element(),"aria-checked",e)})],expanded:[Qu("update",wg)],selected:[Qu("update",function(n,t,e){Po(n.element(),"aria-selected",e)})],none:[Qu("update",Z)]}))],Cg=ya({fields:Sg,name:"toggling",active:xg,apis:yg,state:(xm=!1,{init:function(){var t=ye(xm);return{get:function(){return t.get()},set:function(n){return t.set(n)},clear:function(){return t.set(xm)},readState:function(){return t.get()}}}})}),kg="alloy.item-hover",Og="alloy.item-focus",Eg=nn(kg),Tg=nn(Og),Bg=[ct("data"),ct("components"),ct("dom"),St("hasSubmenu",!1),ht("toggling"),nl("itemBehaviours",[Cg,vg,lg,Zf]),St("ignoreFocus",!1),St("domModification",{}),Qu("builder",function(n){return{dom:n.dom,domModification:N(N({},n.domModification),{attributes:N(N(N({role:n.toggling.isSome()?"menuitemcheckbox":"menuitem"},n.domModification.attributes),{"aria-haspopup":n.hasSubmenu}),n.hasSubmenu?{"aria-expanded":!1}:{})}),behaviours:tl(n.itemBehaviours,[n.toggling.fold(Cg.revoke,function(n){return Cg.config(N({aria:{mode:"checked"}},n))}),vg.config({ignore:n.ignoreFocus,stopMousedown:n.ignoreFocus,onFocus:function(n){um(n)}}),lg.config({mode:"execution"}),Zf.config({store:{mode:"memory",initialValue:n.data}}),Kd("item-type-events",g(om(),[lo($r(),im),lo(mi(),vg.focus)]))]),components:n.components,eventOrder:n.eventOrder}}),St("eventOrder",{})],Dg=[ct("dom"),ct("components"),Qu("builder",function(n){return{dom:n.dom,components:n.components,events:co([function(n){return lo(n,function(n,t){t.stop()})}(mi())])}})],Ag=nn([xl({name:"widget",overrides:function(t){return{behaviours:ba([Zf.config({store:{mode:"manual",getValue:function(n){return t.data},setValue:function(){}}})])}}})]),_g=[ct("uid"),ct("data"),ct("components"),ct("dom"),St("autofocus",!1),St("ignoreFocus",!1),nl("widgetBehaviours",[Zf,vg,lg]),St("domModification",{}),tf(Ag()),Qu("builder",function(e){function o(n){return qs(n,e,"widget").map(function(n){return lg.focusIn(n),n})}function n(n,t){return _l(t.event().target())||e.autofocus&&t.setSource(n.element()),on.none()}var t=Xs(0,e,Ag()),r=Ys("item-widget",e,t.internals());return{dom:e.dom,components:r,domModification:e.domModification,events:co([Ni(function(n,t){o(n).each(function(n){t.stop()})}),lo($r(),im),lo(mi(),function(n,t){e.autofocus?o(n):vg.focus(n)})]),behaviours:tl(e.widgetBehaviours,[Zf.config({store:{mode:"memory",initialValue:e.data}}),vg.config({ignore:e.ignoreFocus,onFocus:function(n){um(n)}}),lg.config({mode:"special",focusIn:e.autofocus?function(n){o(n)}:cc(),onLeft:n,onRight:n,onEscape:function(n,t){return vg.isFocused(n)||e.autofocus?(e.autofocus&&t.setSource(n.element()),on.none()):(vg.focus(n),on.some(!0))}})])}})],Mg=it("type",{widget:_g,item:Bg,separator:Dg}),Fg=nn([Cl({factory:{sketch:function(n){var t=ot("menu.spec item",Mg,n);return t.builder(t)}},name:"items",unit:"item",defaults:function(n,t){return t.hasOwnProperty("uid")?t:N(N({},t),{uid:Yo("item")})},overrides:function(n,t){return{type:t.type,ignoreFocus:n.fakeFocus,domModification:{classes:[n.markers.item]}}}})]),Ig=nn([ct("value"),ct("items"),ct("dom"),ct("components"),St("eventOrder",{}),Fs("menuBehaviours",[ad,Zf,Zl,lg]),Ct("movement",{mode:"menu",moveOnTab:!0},it("mode",{grid:[Xa(),Qu("config",function(n,t){return{mode:"flatgrid",selector:"."+n.markers.item,initSize:{numColumns:t.initSize.numColumns,numRows:t.initSize.numRows},focusManager:n.focusManager}})],matrix:[Qu("config",function(n,t){return{mode:"matrix",selectors:{row:t.rowSelector,cell:"."+n.markers.item},focusManager:n.focusManager}}),ct("rowSelector")],menu:[St("moveOnTab",!0),Qu("config",function(n,t){return{mode:"menu",selector:"."+n.markers.item,moveOnTab:t.moveOnTab,focusManager:n.focusManager}})]})),st("markers",Wa()),St("fakeFocus",!1),St("focusManager",Gl()),qu("onHighlight")]),Rg=nn("alloy.menu-focus"),Vg=Al({name:"Menu",configFields:Ig(),partFields:Fg(),factory:function(n,t,e,o){return{uid:n.uid,dom:n.dom,markers:n.markers,behaviours:Rs(n.menuBehaviours,[ad.config({highlightClass:n.markers.selectedItem,itemClass:n.markers.item,onHighlight:n.onHighlight}),Zf.config({store:{mode:"memory",initialValue:n.value}}),Zl.config({find:on.some}),lg.config(n.movement.config(n,n.movement))]),events:co([lo(Tg(),function(t,e){var n=e.event();t.getSystem().getByDom(n.target()).each(function(n){ad.highlight(t,n),e.stop(),ro(t,Rg(),{menu:t,item:n})})}),lo(Eg(),function(n,t){var e=t.event().item();ad.highlight(n,e)})]),components:t,eventOrder:n.eventOrder,domModification:{attributes:{role:"menu"}}}}}),Ng=function(e,o,r,n){return Nn(r,n).bind(function(n){return Nn(e,n).bind(function(n){var t=Ng(e,o,r,n);return on.some([n].concat(t))})}).getOr([])},Hg=function(n){return"prepared"===n.type?on.some(n.menu):on.none()},Pg={init:function(){function r(n,e,o){return f(n).bind(function(t){return function(e){return I(i.get(),function(n,t){return n===e})}(n).bind(function(n){return e(n).map(function(n){return{triggeredMenu:t,triggeringItem:n,triggeringPath:o}})})})}var i=ye({}),u=ye({}),a=ye({}),c=ye(on.none()),s=ye({}),f=function(n){return t(n).bind(Hg)},t=function(n){return Nn(u.get(),n)},e=function(n){return Nn(i.get(),n)};return{setMenuBuilt:function(n,t){var e;u.set(N(N({},u.get()),((e={})[n]={type:"prepared",menu:t},e)))},setContents:function(n,t,e,o){c.set(on.some(n)),i.set(e),u.set(t),s.set(o);var r=am(o,e);a.set(r)},expand:function(e){return Nn(i.get(),e).map(function(n){var t=Nn(a.get(),e).getOr([]);return[n].concat(t)})},refresh:function(n){return Nn(a.get(),n)},collapse:function(n){return Nn(a.get(),n).bind(function(n){return 1<n.length?on.some(n.slice(1)):on.none()})},lookupMenu:t,lookupItem:e,otherMenus:function(n){var t=s.get();return _(wn(t),n)},getPrimary:function(){return c.get().bind(f)},getMenus:function(){return u.get()},clear:function(){i.set({}),u.set({}),a.set({}),c.set(on.none())},isClear:function(){return c.get().isNone()},getTriggeringPath:function(n,o){var t=C(e(n).toArray(),function(n){return f(n).isSome()});return Nn(a.get(),n).bind(function(n){var e=A(t.concat(n));return function(n){for(var t=[],e=0;e<n.length;e++){var o=n[e];if(!o.isSome())return on.none();t.push(o.getOrDie())}return on.some(t)}(B(e,function(n,t){return r(n,o,e.slice(0,t+1)).fold(function(){return c.get().is(n)?[]:[on.none()]},function(n){return[on.some(n)]})}))})}}},extractPreparedMenu:Hg},zg=nn("collapse-item"),Lg=Dl({name:"TieredMenu",configFields:[$u("onExecute"),$u("onEscape"),Ju("onOpenMenu"),Ju("onOpenSubmenu"),Ju("onRepositionMenu"),qu("onCollapseMenu"),St("highlightImmediately",!0),mt("data",[ct("primary"),ct("menus"),ct("expansions")]),St("fakeFocus",!1),qu("onHighlight"),qu("onHover"),Gu(),ct("dom"),St("navigateOnHover",!0),St("stayInDom",!1),Fs("tmenuBehaviours",[lg,ad,Zl,mg]),St("eventOrder",{})],apis:{collapseMenu:function(n,t){n.collapseMenu(t)},highlightPrimary:function(n,t){n.highlightPrimary(t)},repositionMenus:function(n,t){n.repositionMenus(t)}},factory:function(a,n){function e(n){var t=function(o,r,n){return P(n,function(n,t){function e(){return Vg.sketch(N(N({dom:n.dom},n),{value:t,items:n.items,markers:a.markers,fakeFocus:a.fakeFocus,onHighlight:a.onHighlight,focusManager:a.fakeFocus?Xl():Gl()}))}return t===r?{type:"prepared",menu:o.getSystem().build(e())}:{type:"notbuilt",nbMenu:e}})}(n,a.data.primary,a.data.menus),e=o();return g.setContents(a.data.primary,t,a.data.expansions,e),g.getPrimary()}function c(n){return Zf.getValue(n).value}function u(t,n){ad.highlight(t,n),ad.getHighlighted(n).orThunk(function(){return ad.getFirst(n)}).each(function(n){uo(t,n.element(),mi())})}function s(t,n){return Bu(S(n,function(n){return t.lookupMenu(n).bind(function(n){return"prepared"===n.type?on.some(n.menu):on.none()})}))}function f(t,n,e){var o=s(n,n.otherMenus(e));bn(o,function(n){pr(n.element(),[a.markers.backgroundMenu]),a.stayInDom||mg.remove(t,n)})}function l(n,o){var t=function(o){return r.get().getOrThunk(function(){var e={},n=zc(o.element(),"."+a.markers.item),t=C(n,function(n){return"true"===zo(n,"aria-haspopup")});return bn(t,function(n){o.getSystem().getByDom(n).each(function(n){var t=c(n);e[t]=n})}),r.set(on.some(e)),e})}(n);Cn(t,function(n,t){var e=vn(o,t);Po(n.element(),"aria-expanded",e)})}function d(o,r,i){return on.from(i[0]).bind(function(n){return r.lookupMenu(n).bind(function(n){if("notbuilt"===n.type)return on.none();var t=n.menu,e=s(r,i.slice(1));return bn(e,function(n){fr(n.element(),a.markers.backgroundMenu)}),$e(t.element())||mg.append(o,au(t)),pr(t.element(),[a.markers.backgroundMenu]),u(o,t),f(o,r,i),on.some(t)})})}var m,t,r=ye(on.none()),g=Pg.init(),o=function(n){return P(a.data.menus,function(n,t){return B(n.items,function(n){return"separator"===n.type?[]:[n.data.value]})})};(t=m=m||{})[t.HighlightSubmenu=0]="HighlightSubmenu",t[t.HighlightParent=1]="HighlightParent";function i(r,i,u){void 0===u&&(u=m.HighlightSubmenu);var n=c(i);return g.expand(n).bind(function(o){return l(r,o),on.from(o[0]).bind(function(e){return g.lookupMenu(e).bind(function(n){var t=function(n,t,e){if("notbuilt"!==e.type)return e.menu;var o=n.getSystem().build(e.nbMenu());return g.setMenuBuilt(t,o),o}(r,e,n);return $e(t.element())||mg.append(r,au(t)),a.onOpenSubmenu(r,i,t,A(o)),u===m.HighlightSubmenu?(ad.highlightFirst(t),d(r,g,o)):(ad.dehighlightAll(t),on.some(i))})})})}function p(t,e){var n=c(e);return g.collapse(n).bind(function(n){return l(t,n),d(t,g,n).map(function(n){return a.onCollapseMenu(t,e,n),n})})}function h(e){return function(t,n){return Ou(n.getSource(),"."+a.markers.item).bind(function(n){return t.getSystem().getByDom(n).toOption().bind(function(n){return e(t,n).map(function(){return!0})})})}}function v(n){return ad.getHighlighted(n).bind(ad.getHighlighted)}var b=co([lo(Rg(),function(e,o){var n=o.event().item();g.lookupItem(c(n)).each(function(){var n=o.event().menu();ad.highlight(e,n);var t=c(o.event().item());g.refresh(t).each(function(n){return f(e,g,n)})})}),Ni(function(t,n){var e=n.event().target();t.getSystem().getByDom(e).each(function(n){0===c(n).indexOf("collapse-item")&&p(t,n),i(t,n,m.HighlightSubmenu).fold(function(){a.onExecute(t,n)},function(){})})}),Ii(function(t,n){e(t).each(function(n){mg.append(t,au(n)),a.onOpenMenu(t,n),a.highlightImmediately&&u(t,n)})})].concat(a.navigateOnHover?[lo(Eg(),function(n,t){var e=t.event().item();!function(t,n){var e=c(n);g.refresh(e).bind(function(n){return l(t,n),d(t,g,n)})}(n,e),i(n,e,m.HighlightParent),a.onHover(n,e)})]:[])),y={collapseMenu:function(t){v(t).each(function(n){p(t,n)})},highlightPrimary:function(t){g.getPrimary().each(function(n){u(t,n)})},repositionMenus:function(o){g.getPrimary().bind(function(t){return v(o).bind(function(n){var t=c(n),e=R(g.getMenus()),o=Bu(S(e,Pg.extractPreparedMenu));return g.getTriggeringPath(t,function(n){return function(n,t,e){return Du(t,function(n){if(!n.getSystem().isConnected())return on.none();var t=ad.getCandidates(n);return E(t,function(n){return c(n)===e})})}(0,o,n)})}).map(function(n){return{primary:t,triggeringPath:n}})}).fold(function(){(function(n){return on.from(n.components()[0]).filter(function(n){return"menu"===zo(n.element(),"role")})})(o).each(function(n){a.onRepositionMenu(o,n,[])})},function(n){var t=n.primary,e=n.triggeringPath;a.onRepositionMenu(o,t,e)})}};return{uid:a.uid,dom:a.dom,markers:a.markers,behaviours:Rs(a.tmenuBehaviours,[lg.config({mode:"special",onRight:h(function(n,t){return _l(t.element())?on.none():i(n,t,m.HighlightSubmenu)}),onLeft:h(function(n,t){return _l(t.element())?on.none():p(n,t)}),onEscape:h(function(n,t){return p(n,t).orThunk(function(){return a.onEscape(n,t).map(function(){return n})})}),focusIn:function(t,n){g.getPrimary().each(function(n){uo(t,n.element(),mi())})}}),ad.config({highlightClass:a.markers.selectedMenu,itemClass:a.markers.menu}),Zl.config({find:function(n){return ad.getHighlighted(n)}}),mg.config({})]),eventOrder:a.eventOrder,apis:y,events:b}},extraApis:{tieredData:function(n,t,e){return{primary:n,menus:t,expansions:e}},singleData:function(n,t){return{primary:n,menus:q(n,t),expansions:{}}},collapseItem:function(n){return{value:Xo(zg()),meta:{text:n}}}}}),jg=Dl({name:"InlineView",configFields:[ct("lazySink"),qu("onShow"),qu("onHide"),xt("onEscape"),Fs("inlineBehaviours",[zf,Zf,lc]),wt("fireDismissalEventInstead",[St("event",Oi())]),wt("fireRepositionEventInstead",[St("event",Ei())]),St("getRelated",on.none),St("eventOrder",on.none)],factory:function(i,n){function t(e){zf.isOpen(e)&&Zf.getValue(e).each(function(n){switch(n.mode){case"menu":zf.getState(e).each(function(n){Lg.repositionMenus(n)});break;case"position":var t=i.lazySink(e).getOrDie();Af.positionWithinBounds(t,n.anchor,e,n.getBounds())}})}var o=function(n,t,e,o){r(n,t,e,function(){return o.map(function(n){return xu(n)})})},r=function(n,t,e,o){var r=i.lazySink(n).getOrDie();zf.openWhileCloaked(n,e,function(){return Af.positionWithinBounds(r,t,n,o())}),Zf.setValue(n,on.some({mode:"position",anchor:t,getBounds:o}))},u=function(n,t,e,o){var r=function(n,t,r,e,i){function u(){return n.lazySink(t)}function a(n){return function(n){return 2===n.length}(n)?o:{}}var o="horizontal"===e.type?{layouts:{onLtr:function(){return da()},onRtl:function(){return ma()}}}:{};return Lg.sketch({dom:{tag:"div"},data:e.data,markers:e.menu.markers,onEscape:function(){return zf.close(t),n.onEscape.map(function(n){return n(t)}),on.some(!0)},onExecute:function(){return on.some(!0)},onOpenMenu:function(n,t){Af.positionWithinBounds(u().getOrDie(),r,t,i())},onOpenSubmenu:function(n,t,e,o){var r=u().getOrDie();Af.position(r,N({anchor:"submenu",item:t},a(o)),e)},onRepositionMenu:function(n,t,e){var o=u().getOrDie();Af.positionWithinBounds(o,r,t,i()),bn(e,function(n){var t=a(n.triggeringPath);Af.position(o,N({anchor:"submenu",item:n.triggeringItem},t),n.triggeredMenu)})}})}(i,n,t,e,o);zf.open(n,r),Zf.setValue(n,on.some({mode:"menu",menu:r}))},e={setContent:function(n,t){zf.setContent(n,t)},showAt:function(n,t,e){o(n,t,e,on.none())},showWithin:o,showWithinBounds:r,showMenuAt:function(n,t,e){u(n,t,e,function(){return on.none()})},showMenuWithinBounds:u,hide:function(n){Zf.setValue(n,on.none()),zf.close(n)},getContent:function(n){return zf.getState(n)},reposition:t,isOpen:zf.isOpen};return{uid:i.uid,dom:i.dom,behaviours:Rs(i.inlineBehaviours,[zf.config({isPartOf:function(n,t,e){return Lu(t,e)||function(n,t){return i.getRelated(n).exists(function(n){return Lu(n,t)})}(n,e)},getAttachPoint:function(n){return i.lazySink(n).getOrDie()},onOpen:function(n){i.onShow(n)},onClose:function(n){i.onHide(n)}}),Zf.config({store:{mode:"memory",initialValue:on.none()}}),lc.config({channels:N(N({},Es(N({isExtraPart:nn(!1)},i.fireDismissalEventInstead.map(function(n){return{fireEventInstead:{event:n.event}}}).getOr({})))),Ts(N(N({isExtraPart:nn(!1)},i.fireRepositionEventInstead.map(function(n){return{fireEventInstead:{event:n.event}}}).getOr({})),{doReposition:t})))})]),eventOrder:i.eventOrder,apis:e}},apis:{showAt:function(n,t,e,o){n.showAt(t,e,o)},showWithin:function(n,t,e,o,r){n.showWithin(t,e,o,r)},showWithinBounds:function(n,t,e,o,r){n.showWithinBounds(t,e,o,r)},showMenuAt:function(n,t,e,o){n.showMenuAt(t,e,o)},showMenuWithinBounds:function(n,t,e,o,r){n.showMenuWithinBounds(t,e,o,r)},hide:function(n,t){n.hide(t)},isOpen:function(n,t){return n.isOpen(t)},getContent:function(n,t){return n.getContent(t)},setContent:function(n,t,e){n.setContent(t,e)},reposition:function(n,t){n.reposition(t)}}}),Ug=function(n,t,e){return Ya(sm(n,t),lm(n),e.innerNorth(),nc(),"layout-n")},Wg=function(n,t,e){return Ya(sm(n,t),dm(n,t),e.innerSouth(),Za(),"layout-s")},Gg=Dl({name:"Button",factory:function(n){function e(t){return Nn(n.dom,"attributes").bind(function(n){return Nn(n,t)})}var t=rm(n.action),o=n.dom.tag;return{uid:n.uid,dom:n.dom,components:n.components,events:t,behaviours:tl(n.buttonBehaviours,[vg.config({}),lg.config({mode:"execution",useSpace:!0,useEnter:!0})]),domModification:{attributes:function(){if("button"!==o)return{role:e("role").getOr("button")};var n=e("type").getOr("button"),t=e("role").map(function(n){return{role:n}}).getOr({});return N({type:n},t)}()},eventOrder:n.eventOrder}},configFields:[St("uid",undefined),ct("dom"),St("components",[]),nl("buttonBehaviours",[vg,lg]),ht("action"),ht("role"),St("eventOrder",{})]}),Xg={success:"checkmark",error:"warning",err:"error",warning:"warning",warn:"warning",info:"info"},Yg=Dl({name:"Notification",factory:function(t){function e(n){return{dom:{tag:"div",classes:["tox-bar"],attributes:{style:"width: "+n+"%"}}}}function o(n){return{dom:{tag:"div",classes:["tox-text"],innerHtml:n+"%"}}}var r=vm({dom:{tag:"p",innerHtml:t.translationProvider(t.text)},behaviours:ba([mg.config({})])}),i=vm({dom:{tag:"div",classes:t.progress?["tox-progress-bar","tox-progress-indicator"]:["tox-progress-bar"]},components:[{dom:{tag:"div",classes:["tox-bar-container"]},components:[e(0)]},o(0)],behaviours:ba([mg.config({})])}),n={updateProgress:function(n,t){n.getSystem().isConnected()&&i.getOpt(n).each(function(n){mg.set(n,[{dom:{tag:"div",classes:["tox-bar-container"]},components:[e(t)]},o(t)])})},updateText:function(n,t){if(n.getSystem().isConnected()){var e=r.get(n);mg.set(e,[Ir(t)])}}},u=H([t.icon.toArray(),t.level.toArray(),t.level.bind(function(n){return on.from(Xg[n])}).toArray()]);return{uid:t.uid,dom:{tag:"div",attributes:{role:"alert"},classes:t.level.map(function(n){return["tox-notification","tox-notification--in","tox-notification--"+n]}).getOr(["tox-notification","tox-notification--in"])},components:[{dom:{tag:"div",classes:["tox-notification__icon"],innerHtml:function(n,t){return Du(n,function(n){return on.from(t()[n])}).getOrThunk(function(){return bm(t)})}(u,t.iconProvider)}},{dom:{tag:"div",classes:["tox-notification__body"]},components:[r.asSpec()],behaviours:ba([mg.config({})])}].concat(t.progress?[i.asSpec()]:[]).concat(Gg.sketch({dom:{tag:"button",classes:["tox-notification__dismiss","tox-button","tox-button--naked","tox-button--icon"]},components:[{dom:{tag:"div",classes:["tox-icon"],innerHtml:ym("close",t.iconProvider),attributes:{"aria-label":t.translationProvider("Close")}}}],action:function(n){t.onAction(n)}})),apis:n}},configFields:[ht("level"),ct("progress"),ct("icon"),ct("onAction"),ct("text"),ct("iconProvider"),ct("translationProvider")],apis:{updateProgress:function(n,t,e){n.updateProgress(t,e)},updateText:function(n,t,e){n.updateText(t,e)}}}),qg=tinymce.util.Tools.resolve("tinymce.util.Delay");function Kg(n,u,o){var a=u.backstage;return{open:function(n,t){function e(){t(),jg.hide(i)}var r=uu(Yg.sketch({text:n.text,level:vn(["success","error","warning","warn","info"],n.type)?n.type:undefined,progress:!0===n.progressBar,icon:on.from(n.icon),onAction:e,iconProvider:a.shared.providers.icons,translationProvider:a.shared.providers.translate})),i=uu(jg.sketch({dom:{tag:"div",classes:["tox-notifications-container"]},lazySink:u.backstage.shared.getSink,fireDismissalEventInstead:{}}));return o.add(i),0<n.timeout&&qg.setTimeout(function(){e()},n.timeout),{close:e,moveTo:function(n,t){jg.showAt(i,{anchor:"makeshift",x:n,y:t},au(r))},moveRel:function(n,t){if("banner"!==t){var e=function(n){switch(n){case"bc-bc":return Wg;case"tc-tc":return Ug;case"tc-bc":return oc;case"bc-tc":default:return rc}}(t),o={anchor:"node",root:zr(),node:on.some(we.fromDom(n)),layouts:{onRtl:function(){return[e]},onLtr:function(){return[e]}}};jg.showAt(i,o,au(r))}else jg.showAt(i,u.backstage.shared.anchors.banner(),au(r))},text:function(n){Yg.updateText(r,n)},settings:n,getEl:function(){return r.element().dom()},progressBar:{value:function(n){Yg.updateProgress(r,n)}}}},close:function(n){n.close()},reposition:function(n){!function(n){bn(n,function(n){return n.moveTo(0,0)})}(n),function(e){0<e.length&&(yn(e).each(function(n){return n.moveRel(null,"banner")}),bn(e,function(n,t){0<t&&n.moveRel(e[t-1].getEl(),"bc-tc")}))}(n)},getArgs:function(n){return n.settings}}}function Jg(e,o){var r=null;return{cancel:function(){null!==r&&(v.clearTimeout(r),r=null)},throttle:function(){for(var n=[],t=0;t<arguments.length;t++)n[t]=arguments[t];null!==r&&v.clearTimeout(r),r=v.setTimeout(function(){e.apply(null,n),r=null},o)}}}function $g(n,t,e,o,r){var i=new Ap(t,r||n.getRoot());return Fp(n,t,on.some(e),o,i.prev,on.none())}function Qg(t,e){return Ip(we.fromDom(t.selection.getNode())).getOrThunk(function(){var n=we.fromHtml('<span data-mce-autocompleter="1" data-mce-bogus="1"></span>',t.getDoc());return Hi(n,we.fromDom(e.extractContents())),e.insertNode(n.dom()),Eo(n).each(function(n){return n.dom().normalize()}),Ic(n).map(function(n){t.selection.setCursorLocation(n.dom(),function(n){return"img"===Ke(n)?1:Ac(n).fold(function(){return Bo(n).length},function(n){return n.length})}(n))}),n})}function Zg(n,t){return n.toString().substring(t.length).replace(/\u00A0/g," ").replace(/\uFEFF/g,"")}function np(n,u,a,c){return void 0===c&&(c=0),function(n){return n.collapsed&&3===n.startContainer.nodeType}(u)?$g(n,u.startContainer,u.startOffset,function(e,o,r,n){var i=n.getOr(r.length);return function(n,t,e,o){var r;for(r=t-1;0<=r;r--){var i=n.charAt(r);if(Rp.test(i))return on.none();if(i===e)break}return-1===r||t-r<o?on.none():on.some(n.substring(r+1,t))}(r,i,a,1).fold(function(){return r.match(Rp)?e.abort():e.kontinue()},function(n){var t=u.cloneRange();return t.setStart(o,i-n.length-1),t.setEnd(u.endContainer,u.endOffset),r.length<c?e.abort():e.finish({text:Zg(t,a),range:t,triggerChar:a})})}).fold(on.none,on.none,on.some):on.none()}function tp(e,n,o,t){return void 0===t&&(t=0),Ip(we.fromDom(n.startContainer)).fold(function(){return np(e,n,o,t)},function(n){var t=e.createRng();return t.selectNode(n.dom()),on.some({range:t,text:Zg(t,o),triggerChar:o})})}function ep(n,t){return{element:n,offset:t}}function op(t,e){var n=e(),o=t.selection.getRng();return function(t,e,n){return Du(n.triggerChars,function(n){return tp(t,e,n)})}(t.dom,o,n).bind(function(n){return zp(t,e,n)})}function rp(n){var t=n.ui.registry.getAll().popups,e=P(t,function(n){return function(n){return tt("Autocompleter",Up,n)}(n).fold(function(n){throw new Error(le(n))},function(n){return n})}),o=function(n){var t={};return bn(n,function(n){t[n]={}}),wn(t)}(On(e,function(n){return n.ch})),r=R(e);return{dataset:e,triggerChars:o,lookupByChar:function(t){return C(r,function(n){return n.ch===t})}}}function ip(n,o,t){var r=zc(n.element(),"."+t);if(0<r.length){var e=T(r,function(n){var t=n.dom().getBoundingClientRect().top,e=r[0].dom().getBoundingClientRect().top;return Math.abs(t-e)>o}).getOr(r.length);return on.some({numColumns:e,numRows:Math.ceil(r.length/e)})}return on.none()}function up(n,t){return ba([Kd(n,t)])}function ap(n,t,e){n.getSystem().broadcastOn([Zp],{})}function cp(n){var t=we.fromHtml(n),e=Bo(t),o=function(n){var t=n.dom().attributes!==undefined?n.dom().attributes:[];return O(t,function(n,t){var e;return"class"===t.name?n:N(N({},n),((e={})[t.name]=t.value,e))},{})}(t),r=function(n){return Array.prototype.slice.call(n.dom().classList,0)}(t),i=0===e.length?{}:{innerHtml:Vo(t)};return N({tag:Ke(t),classes:r,attributes:o},i)}function sp(n){return Nn(ch,n).getOr(ih)}function fp(n){return{dom:{tag:"div",classes:[fh],innerHtml:n}}}function lp(n){return{dom:{tag:"div",classes:[lh]},components:[Ir(rh.translate(n))]}}function dp(n,t){return{dom:{tag:"div",classes:[lh]},components:[{dom:{tag:n.tag,attributes:{style:n.styleAttr}},components:[Ir(rh.translate(t))]}]}}function mp(n){return{dom:{tag:"div",classes:["tox-collection__item-accessory"],innerHtml:ph(n)}}}function gp(n){return{dom:{tag:"div",classes:[fh,"tox-collection__item-checkmark"],innerHtml:ym("checkmark",n)}}}function pp(n,t,e,o,r){var i=e?n.checkMark.orThunk(function(){return t.or(on.some("")).map(fp)}):on.none(),u=n.ariaLabel.map(function(n){return{attributes:{title:rh.translate(n)}}}).getOr({});return{dom:An({tag:"div",classes:[ih,uh].concat(r?["tox-collection__item-icon-rtl"]:[])},u),optComponents:[i,n.htmlContent.fold(function(){return n.textContent.map(o)},function(n){return on.some(function(n){return{dom:{tag:"div",classes:[lh],innerHtml:n}}}(n))}),n.shortcutContent.map(mp),n.caret]}}function hp(n,t,e,o){void 0===o&&(o=on.none());var r=rh.isRtl()&&n.iconContent.exists(function(n){return vn(vh,n)}),i=n.iconContent.map(function(n){return rh.isRtl()&&vn(hh,n)?n+"-rtl":n}).map(function(n){return function(n,t,e){return on.from(t()[n]).or(e).getOrThunk(function(){return bm(t)})}(n,t.icons,o)}),u=on.from(n.meta).fold(function(){return lp},function(n){return En(n,"style")?d(dp,n.style):lp});return"color"===n.presets?function(n,t,e,o){var r,i,u;return{dom:(r=ah,i=e.getOr(""),u=n.map(function(n){return' title="'+o.translate(n)+'"'}).getOr(""),cp("custom"===t?'<button class="'+r+' tox-swatches__picker-btn"'+u+">"+i+"</button>":"remove"===t?'<div class="'+r+' tox-swatch--remove"'+u+">"+i+"</div>":'<div class="'+r+'" style="background-color: '+t+'" data-mce-color="'+t+'"'+u+"></div>")),optComponents:[]}}(n.ariaLabel,n.value,i,t):pp(n,i,e,u,r)}function vp(n,t,e){t.disabled&&yh(n,t)}function bp(n,t){return!0===t.useNative&&vn(bh,Ke(n.element()))}function yp(n){Po(n.element(),"disabled","disabled")}function xp(n){jo(n.element(),"disabled")}function wp(n){Po(n.element(),"aria-disabled","true")}function Sp(n){Po(n.element(),"aria-disabled","false")}function Cp(t,n,e){n.disableClass.each(function(n){dr(t.element(),n)}),(bp(t,n)?xp:Sp)(t),n.onEnabled(t)}function kp(n,t){return bp(n,t)?function(n){return Lo(n.element(),"disabled")}(n):function(n){return"true"===zo(n.element(),"aria-disabled")}(n)}function Op(n,t){var e=n.getApi(t);return function(n){n(e)}}function Ep(e,o){return Ii(function(n){Op(e,n)(function(n){var t=e.onSetup(n);null!==t&&t!==undefined&&o.set(t)})})}function Tp(t,e){return Ri(function(n){return Op(t,n)(e.get())})}var Bp,Dp,Ap=tinymce.util.Tools.resolve("tinymce.dom.TreeWalker"),_p=Tn([{aborted:[]},{edge:["element"]},{success:["info"]}]),Mp=Tn([{abort:[]},{kontinue:[]},{finish:["info"]}]),Fp=function(t,e,n,o,r,i){function u(){return i.fold(_p.aborted,_p.edge)}function a(){var n=r();return n?Fp(t,n,on.none(),o,r,on.some(e)):u()}if(function(n,t){return n.isBlock(t)||vn(["BR","IMG","HR","INPUT"],t.nodeName)||"false"===n.getContentEditable(t)}(t,e))return u();if(function(n){return n.nodeType===v.Node.TEXT_NODE}(e)){var c=e.textContent;return o(Mp,e,c,n).fold(_p.aborted,function(){return a()},_p.success)}return a()},Ip=function(n){return Ou(n,"[data-mce-autocompleter]")},Rp=/[\u00a0 \t\r\n]/,Vp=function(e,n){n.on("keypress compositionend",e.onKeypress.throttle),n.on("remove",e.onKeypress.cancel);function o(n,t){ro(n,ni(),{raw:t})}n.on("keydown",function(t){function n(){return e.getView().bind(ad.getHighlighted)}8===t.which&&e.onKeypress.throttle(t),e.isActive()&&(27===t.which&&e.cancelIfNecessary(),e.isMenuOpen()?13===t.which?(n().each(io),t.preventDefault()):40===t.which?(n().fold(function(){e.getView().each(ad.highlightFirst)},function(n){o(n,t)}),t.preventDefault(),t.stopImmediatePropagation()):37!==t.which&&38!==t.which&&39!==t.which||n().each(function(n){o(n,t),t.preventDefault(),t.stopImmediatePropagation()}):13!==t.which&&38!==t.which&&40!==t.which||e.cancelIfNecessary())}),n.on("NodeChange",function(n){e.isActive()&&!e.isProcessingAction()&&Ip(we.fromDom(n.element)).isNone()&&e.cancelIfNecessary()})},Np=tinymce.util.Tools.resolve("tinymce.util.Promise"),Hp=function(n){if(function(n){return n.nodeType===v.Node.TEXT_NODE}(n))return ep(n,n.data.length);var t=n.childNodes;return 0<t.length?Hp(t[t.length-1]):ep(n,t.length)},Pp=function(n,t){var e=n.childNodes;return 0<e.length&&t<e.length?Pp(e[t],0):0<e.length&&function(n){return n.nodeType===v.Node.ELEMENT_NODE}(n)&&e.length===t?Hp(e[e.length-1]):ep(n,t)},zp=function(t,n,e,o){void 0===o&&(o={});var r=n(),i=t.selection.getRng().startContainer.nodeValue,u=C(r.lookupByChar(e.triggerChar),function(n){return e.text.length>=n.minChars&&n.matches.getOrThunk(function(){return function(e){function o(n,t,e,o){var r=o.getOr(e.length);return 0===r?n.kontinue():n.finish(/\s/.test(e.charAt(r-1)))}return function(n){var t=Pp(n.startContainer,n.startOffset);return $g(e,t.element,t.offset,o).fold(nn(!0),nn(!0),l)}}(t.dom)})(e.range,i,e.text)});if(0===u.length)return on.none();var a=Np.all(S(u,function(t){return t.fetch(e.text,t.maxResults,o).then(function(n){return{matchText:e.text,items:n,columns:t.columns,onAction:t.onAction}})}));return on.some({lookupData:a,context:e})},Lp=re([ft("type"),yt("text")]),jp=re([At("type",function(){return"autocompleteitem"}),At("active",function(){return!1}),At("disabled",function(){return!1}),St("meta",{}),ft("value"),yt("text"),yt("icon")]),Up=re([ft("type"),ft("ch"),kt("minChars",1),St("columns",1),kt("maxResults",10),xt("matches"),dt("fetch"),dt("onAction")]),Wp=[Tt("disabled",!1),yt("text"),yt("shortcut"),ce("value","value",In(function(){return Xo("menuitem-value")}),de()),St("meta",{})],Gp=re([ft("type"),Bt("onSetup",function(){return Z}),Bt("onAction",Z),yt("icon")].concat(Wp)),Xp=re([ft("type"),dt("getSubmenuItems"),Bt("onSetup",function(){return Z}),yt("icon")].concat(Wp)),Yp=re([ft("type"),Tt("active",!1),Bt("onSetup",function(){return Z}),dt("onAction")].concat(Wp)),qp=re([ft("type"),Tt("active",!1),yt("icon")].concat(Wp)),Kp=re([ft("type"),lt("fancytype",["inserttable","colorswatch"]),Bt("onAction",Z)]),Jp=function(n){return up(Xo("unnamed-events"),n)},$p=[ct("lazySink"),ct("tooltipDom"),St("exclusive",!0),St("tooltipComponents",[]),St("delay",300),Et("mode","normal",["normal","follow-highlight"]),St("anchor",function(n){return{anchor:"hotspot",hotspot:n,layouts:{onLtr:nn([rc,oc,ua,ca,aa,sa]),onRtl:nn([rc,oc,ua,ca,aa,sa])}}}),qu("onHide"),qu("onShow")],Qp=/* */Object.freeze({init:function(){function e(){o.get().each(function(n){v.clearTimeout(n)})}var o=ye(on.none()),t=ye(on.none()),n=nn("not-implemented");return nu({getTooltip:function(){return t.get()},isShowing:function(){return t.get().isSome()},setTooltip:function(n){t.set(on.some(n))},clearTooltip:function(){t.set(on.none())},clearTimer:e,resetTimer:function(n,t){e(),o.set(on.some(v.setTimeout(function(){n()},t)))},readState:n})}}),Zp=Xo("tooltip.exclusive"),nh=Xo("tooltip.show"),th=Xo("tooltip.hide"),eh=/* */Object.freeze({hideAllExclusive:ap,setComponents:function(n,t,e,o){e.getTooltip().each(function(n){n.getSystem().isConnected()&&mg.set(n,o)})}}),oh=ya({fields:$p,name:"tooltipping",active:/* */Object.freeze({events:function(o,r){function e(t){r.getTooltip().each(function(n){bs(n),o.onHide(t,n),r.clearTooltip()}),r.clearTimer()}return co(H([[lo(nh,function(n){r.resetTimer(function(){!function(t){if(!r.isShowing()){ap(t);var n=o.lazySink(t).getOrDie(),e=t.getSystem().build({dom:o.tooltipDom,components:o.tooltipComponents,events:co("normal"===o.mode?[lo($r(),function(n){oo(t,nh)}),lo(Kr(),function(n){oo(t,th)})]:[]),behaviours:ba([mg.config({})])});r.setTooltip(e),hs(n,e),o.onShow(t,e),Af.position(n,o.anchor(t),e)}}(n)},o.delay)}),lo(th,function(n){r.resetTimer(function(){e(n)},o.delay)}),lo(li(),function(n,t){vn(t.channels(),Zp)&&e(n)}),Ri(function(n){e(n)})],"normal"===o.mode?[lo(Qr(),function(n){oo(n,nh)}),lo(si(),function(n){oo(n,th)}),lo($r(),function(n){oo(n,nh)}),lo(Kr(),function(n){oo(n,th)})]:[lo(_i(),function(n,t){oo(n,nh)}),lo(Mi(),function(n){oo(n,th)})]]))}}),state:Qp,apis:eh}),rh=tinymce.util.Tools.resolve("tinymce.util.I18n"),ih="tox-menu-nav__js",uh="tox-collection__item",ah="tox-swatch",ch={normal:ih,color:ah},sh="tox-collection__item--enabled",fh="tox-collection__item-icon",lh="tox-collection__item-label",dh="tox-collection__item-caret",mh="tox-collection__item--active",gh=tinymce.util.Tools.resolve("tinymce.Env"),ph=function(n){var e=gh.mac?{alt:"&#x2325;",ctrl:"&#x2303;",shift:"&#x21E7;",meta:"&#x2318;",access:"&#x2303;&#x2325;"}:{meta:"Ctrl",access:"Shift+Alt"},t=n.split("+"),o=S(t,function(n){var t=n.toLowerCase().trim();return En(e,t)?e[t]:n});return gh.mac?o.join(""):o.join("+")},hh=["list-num-default","list-num-lower-alpha","list-num-lower-greek","list-num-lower-roman","list-num-upper-alpha","list-num-upper-roman"],vh=["list-bull-circle","list-bull-default","list-bull-square"],bh=["input","button","textarea","select"],yh=function(t,n,e){n.disableClass.each(function(n){fr(t.element(),n)}),(bp(t,n)?yp:wp)(t),n.onDisabled(t)},xh=/* */Object.freeze({enable:Cp,disable:yh,isDisabled:kp,onLoad:vp,set:function(n,t,e,o){(o?yh:Cp)(n,t,e)}}),wh=/* */Object.freeze({exhibit:function(n,t,e){return Zo({classes:t.disabled?t.disableClass.map(M).getOr([]):[]})},events:function(e,n){return co([so(di(),function(n,t){return kp(n,e)}),ga(e,n,vp)])}}),Sh=[St("disabled",!1),St("useNative",!0),ht("disableClass"),qu("onDisabled"),qu("onEnabled")],Ch=ya({fields:Sh,name:"disabling",active:wh,apis:xh}),kh=function(n){return Ch.config({disabled:n,disableClass:"tox-collection__item--state-disabled"})},Oh=function(n){return Ch.config({disabled:n})},Eh=function(n){return Ch.config({disabled:n,disableClass:"tox-tbtn--disabled"})},Th=function(n){return Ch.config({disabled:n,disableClass:"tox-tbtn--disabled",useNative:!1})};(Dp=Bp=Bp||{})[Dp.CLOSE_ON_EXECUTE=0]="CLOSE_ON_EXECUTE",Dp[Dp.BUBBLE_TO_SANDBOX=1]="BUBBLE_TO_SANDBOX";function Bh(n){return B(n,function(n){return n.toArray()})}function Dh(n,t,e){var o=ye(Z);return{type:"item",dom:t.dom,components:Bh(t.optComponents),data:n.data,eventOrder:Ih,hasSubmenu:n.triggersSubmenu,itemBehaviours:ba([Kd("item-events",[function(e,o){return Ni(function(n,t){Op(e,n)(e.onAction),e.triggersSubmenu||o!==Fh.CLOSE_ON_EXECUTE||(oo(n,hi()),t.stop())})}(n,e),Ep(n,o),Tp(n,o)]),kh(n.disabled),mg.config({})].concat(n.itemBehaviours))}}function Ah(n){return{value:n.value,meta:An({text:n.text.getOr("")},n.meta)}}function _h(n,t){var e=function(n){return Rh.DOM.encode(n)}(rh.translate(n));if(0<t.length){var o=new RegExp(function(n){return n.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}(t),"gi");return e.replace(o,function(n){return'<span class="tox-autocompleter-highlight">'+n+"</span>"})}return e}function Mh(t,e,n){function o(n){return ro(n,Hh,{row:t,col:e})}function r(n,t){t.stop(),o(n)}var i;return uu({dom:{tag:"div",attributes:(i={role:"button"},i["aria-labelledby"]=n,i)},behaviours:ba([Kd("insert-table-picker-cell",[lo($r(),vg.focus),lo(di(),o),lo(ri(),r),lo(gi(),r)]),Cg.config({toggleClass:"tox-insert-table-picker__selected",toggleOnExecute:!1}),vg.config({onFocus:function(n){return ro(n,Nh,{row:t,col:e})}})])})}var Fh=Bp,Ih={"alloy.execute":["disabling","alloy.base.behaviour","toggling","item-events"]},Rh=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),Vh=nn(js("item-widget",Ag())),Nh=Xo("cell-over"),Hh=Xo("cell-execute");function Ph(n){return{value:nn(n)}}function zh(n){return Jh.test(n)||$h.test(n)}function Lh(n){var t=function(n){var t=n.value().replace(Jh,function(n,t,e,o){return t+t+e+e+o+o});return{value:nn(t)}}(n),e=$h.exec(t.value());return null===e?["FFFFFF","FF","FF","FF"]:e}function jh(n){var t=n.toString(16);return 1===t.length?"0"+t:t}function Uh(n){var t=jh(n.red())+jh(n.green())+jh(n.blue());return Ph(t)}function Wh(n,t,e,o){return{red:nn(n),green:nn(t),blue:nn(e),alpha:nn(o)}}function Gh(n){var t=parseInt(n,10);return t.toString()===n&&0<=t&&t<=255}function Xh(n){var t,e,o,r=(n.hue()||0)%360,i=n.saturation()/100,u=n.value()/100;if(i=Zh(0,Qh(i,1)),u=Zh(0,Qh(u,1)),0===i)return t=e=o=nv(255*u),Wh(t,e,o,1);var a=r/60,c=u*i,s=c*(1-Math.abs(a%2-1)),f=u-c;switch(Math.floor(a)){case 0:t=c,e=s,o=0;break;case 1:t=s,e=c,o=0;break;case 2:t=0,e=c,o=s;break;case 3:t=0,e=s,o=c;break;case 4:t=s,e=0,o=c;break;case 5:t=c,e=0,o=s;break;default:t=e=o=0}return t=nv(255*(t+f)),e=nv(255*(e+f)),o=nv(255*(o+f)),Wh(t,e,o,1)}function Yh(n){var t=Lh(n),e=parseInt(t[1],16),o=parseInt(t[2],16),r=parseInt(t[3],16);return Wh(e,o,r,1)}function qh(n,t,e,o){var r=parseInt(n,10),i=parseInt(t,10),u=parseInt(e,10),a=parseFloat(o);return Wh(r,i,u,a)}function Kh(n){return"rgba("+n.red()+","+n.green()+","+n.blue()+","+n.alpha()+")"}var Jh=/^#?([a-f\d])([a-f\d])([a-f\d])$/i,$h=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i,Qh=Math.min,Zh=Math.max,nv=Math.round,tv=/^rgb\((\d+),\s*(\d+),\s*(\d+)\)/,ev=/^rgba\((\d+),\s*(\d+),\s*(\d+),\s*(\d?(?:\.\d+)?)\)/,ov=nn(Wh(255,0,0,1)),rv=tinymce.util.Tools.resolve("tinymce.util.LocalStorage"),iv="tinymce-custom-colors";function uv(n){var t=[],u=v.document.createElement("canvas");u.height=1,u.width=1;for(var a=u.getContext("2d"),c=function(n,t){var e=t/255;return("0"+Math.round(n*e+255*(1-e)).toString(16)).slice(-2).toUpperCase()},e=function(n){if(/^[0-9A-Fa-f]{6}$/.test(n))return"#"+n.toUpperCase();a.clearRect(0,0,u.width,u.height),a.fillStyle="#FFFFFF",a.fillStyle=n,a.fillRect(0,0,1,1);var t=a.getImageData(0,0,1,1).data,e=t[0],o=t[1],r=t[2],i=t[3];return"#"+c(e,i)+c(o,i)+c(r,i)},o=0;o<n.length;o+=2)t.push({text:n[o+1],value:e(n[o]),type:"choiceitem"});return t}function av(n){return n.getParam("color_map")}function cv(n,e){var o;return n.dom.getParents(n.selection.getStart(),function(n){var t;(t=n.style["forecolor"===e?"color":"background-color"])&&(o=o||t)}),o}function sv(n){return Math.max(5,Math.ceil(Math.sqrt(n)))}function fv(n){var t=Iv(n),e=sv(t.length);return Mv(n,e)}function lv(t,e,n,o){"custom"===n?jv(t)(function(n){n.each(function(n){Vv(n),t.execCommand("mceApplyTextcolor",e,n),o(n)})},"#000000"):"remove"===n?(o(""),t.execCommand("mceRemoveTextcolor",e)):(o(n),t.execCommand("mceApplyTextcolor",e,n))}function dv(n,t){return n.concat(Rv().concat(function(n){var t="choiceitem",e={type:t,text:"Remove color",icon:"color-swatch-remove-color",value:"remove"};return n?[e,{type:t,text:"Custom color",icon:"color-picker",value:"custom"}]:[e]}(t)))}function mv(t,e){return function(n){n(dv(t,e))}}function gv(n,t,e){var o,r;o="forecolor"===t?"tox-icon-text-color__color":"tox-icon-highlight-bg-color__color",r=e,n.setIconFill(o,r),n.setIconStroke(o,r)}function pv(o,e,r,n,i){o.ui.registry.addSplitButton(e,{tooltip:n,presets:"color",icon:"forecolor"===e?"text-color":"highlight-bg-color",select:function(e){return on.from(cv(o,r)).bind(function(n){return function(n){if("transparent"===n)return on.some(Wh(0,0,0,0));var t=tv.exec(n);if(null!==t)return on.some(qh(t[1],t[2],t[3],"1"));var e=ev.exec(n);return null!==e?on.some(qh(e[1],e[2],e[3],e[4])):on.none()}(n).map(function(n){var t=Uh(n).value();return Vt(e.toLowerCase(),t)})}).getOr(!1)},columns:fv(o),fetch:mv(Iv(o),Fv(o)),onAction:function(n){null!==i.get()&&lv(o,r,i.get(),function(){})},onItemAction:function(n,t){lv(o,r,t,function(n){i.set(n),Lv(o,{name:e,color:n})})},onSetup:function(t){null!==i.get()&&gv(t,e,i.get());function n(n){n.name===e&&gv(t,n.name,n.color)}return o.on("TextColorChange",n),function(){o.off("TextColorChange",n)}}})}function hv(t,n,e,o){t.ui.registry.addNestedMenuItem(n,{text:o,icon:"forecolor"===n?"text-color":"highlight-bg-color",getSubmenuItems:function(){return[{type:"fancymenuitem",fancytype:"colorswatch",onAction:function(n){lv(t,e,n.value,Z)}}]}})}function vv(e,o){return function(n){var t=w(n,o);return S(t,function(n){return{dom:e,components:n}})}}function bv(n,e){var o=[],r=[];return bn(n,function(n,t){e(n,t)?(0<r.length&&o.push(r),r=[],En(n.dom,"innerHtml")&&r.push(n)):r.push(n)}),0<r.length&&o.push(r),S(o,function(n){return{dom:{tag:"div",classes:["tox-collection__group"]},components:n}})}function yv(t,e,n){return{dom:{tag:"div",classes:["tox-menu","tox-collection"].concat(1===t?["tox-collection--list"]:["tox-collection--grid"])},components:[Vg.parts().items({preprocess:function(n){return"auto"!==t&&1<t?vv({tag:"div",classes:["tox-collection__group"]},t)(n):bv(n,function(n,t){return"separator"===e[t].type})}})]}}function xv(n){return{backgroundMenu:"tox-background-menu",selectedMenu:"tox-selected-menu",selectedItem:"tox-collection__item--active",hasIcons:"tox-menu--has-icons",menu:function(n){return"color"===n?"tox-swatches":"tox-menu"}(n),tieredMenu:"tox-tiered-menu"}}function wv(n){var t=xv(n);return{backgroundMenu:t.backgroundMenu,selectedMenu:t.selectedMenu,menu:t.menu,selectedItem:t.selectedItem,item:sp(n)}}function Sv(n,t,e){var o=xv(e);return{dom:{tag:"div",classes:H([[o.tieredMenu]])},markers:wv(e)}}function Cv(n){return n.icon!==undefined||"togglemenuitem"===n.type||"choicemenuitem"===n.type}function kv(n){return v.console.error(le(n)),v.console.log(n),on.none()}function Ov(n,t,e,o,r){var i=function(e){return{dom:{tag:"div",classes:["tox-collection","tox-collection--horizontal"]},components:[Vg.parts().items({preprocess:function(n){return bv(n,function(n,t){return"separator"===e[t].type})}})]}}(e);return{value:n,dom:i.dom,components:i.components,items:e}}function Ev(n,t,e,o,r){var i;return"color"===r?{value:n,dom:(i=function(n){return{dom:{tag:"div",classes:["tox-menu","tox-swatches-menu"]},components:[{dom:{tag:"div",classes:["tox-swatches"]},components:[Vg.parts().items({preprocess:"auto"!==n?vv({tag:"div",classes:["tox-swatches__row"]},n):l})]}]}}(o)).dom,components:i.components,items:e}:"normal"===r&&"auto"===o?{value:n,dom:(i=yv(o,e)).dom,components:i.components,items:e}:"normal"===r&&1===o?{value:n,dom:(i=yv(1,e)).dom,components:i.components,items:e}:"normal"===r?{value:n,dom:(i=yv(o,e)).dom,components:i.components,items:e}:"listpreview"!==r||"auto"===o?{value:n,dom:function(n,t,e){var o=xv(e);return{tag:"div",classes:H([[o.menu,"tox-menu-"+t+"-column"],n?[o.hasIcons]:[]])}}(t,o,r),components:Wv,items:e}:{value:n,dom:(i=function(n){return{dom:{tag:"div",classes:["tox-menu","tox-collection","tox-collection--toolbar","tox-collection--toolbar-lg"]},components:[Vg.parts().items({preprocess:vv({tag:"div",classes:["tox-collection__group"]},n)})]}}(o)).dom,components:i.components,items:e}}function Tv(n,t,e,o,r,i,u,a){var c=function(n){return x(n,Cv)}(t),s=Gv(t,e,o,"color"!==r?"normal":"color",i,u,a);return Ev(n,c,s,o,r)}function Bv(n,t){var e=wv(t);return 1===n?{mode:"menu",moveOnTab:!0}:"auto"===n?{mode:"grid",selector:"."+e.item,initSize:{numColumns:1,numRows:1}}:{mode:"matrix",rowSelector:"."+("color"===t?"tox-swatches__row":"tox-collection__group")}}var Dv="choiceitem",Av=[{type:Dv,text:"Light Green",value:"#BFEDD2"},{type:Dv,text:"Light Yellow",value:"#FBEEB8"},{type:Dv,text:"Light Red",value:"#F8CAC6"},{type:Dv,text:"Light Purple",value:"#ECCAFA"},{type:Dv,text:"Light Blue",value:"#C2E0F4"},{type:Dv,text:"Green",value:"#2DC26B"},{type:Dv,text:"Yellow",value:"#F1C40F"},{type:Dv,text:"Red",value:"#E03E2D"},{type:Dv,text:"Purple",value:"#B96AD9"},{type:Dv,text:"Blue",value:"#3598DB"},{type:Dv,text:"Dark Turquoise",value:"#169179"},{type:Dv,text:"Orange",value:"#E67E23"},{type:Dv,text:"Dark Red",value:"#BA372A"},{type:Dv,text:"Dark Purple",value:"#843FA1"},{type:Dv,text:"Dark Blue",value:"#236FA1"},{type:Dv,text:"Light Gray",value:"#ECF0F1"},{type:Dv,text:"Medium Gray",value:"#CED4D9"},{type:Dv,text:"Gray",value:"#95A5A6"},{type:Dv,text:"Dark Gray",value:"#7E8C8D"},{type:Dv,text:"Navy Blue",value:"#34495E"},{type:Dv,text:"Black",value:"#000000"},{type:Dv,text:"White",value:"#ffffff"}],_v=function iI(t){void 0===t&&(t=10);var n,e=rv.getItem(iv),o=cn(e)?JSON.parse(e):[],r=t-(n=o).length<0?n.slice(0,t):n,i=function(n){r.splice(n,1)};return{add:function(n){(function(n,t){var e=y(n,t);return-1===e?on.none():on.some(e)})(r,n).each(i),r.unshift(n),r.length>t&&r.pop(),rv.setItem(iv,JSON.stringify(r))},state:function(){return r.slice(0)}}}(10),Mv=function(n,t){return n.getParam("color_cols",t,"number")},Fv=function(n){return!1!==n.getParam("custom_colors")},Iv=function(n){var t=av(n);return t!==undefined?uv(t):Av},Rv=function(){return S(_v.state(),function(n){return{type:Dv,text:n,value:n}})},Vv=function(n){_v.add(n)},Nv=function(n){return n.fire("SkinLoaded")},Hv=function(n){return n.fire("ResizeEditor")},Pv=function(n,t){return n.fire("ScrollContent",t)},zv=function(n,t){return n.fire("ResizeContent",t)},Lv=function(n,t){return n.fire("TextColorChange",t)},jv=function(i){return function(n,t){var e,o={colorpicker:t},r=(e=n,function(n){var t=n.getData();e(on.from(t.colorpicker)),n.close()});i.windowManager.open({title:"Color Picker",size:"normal",body:{type:"panel",items:[{type:"colorpicker",name:"colorpicker",label:"Color"}]},buttons:[{type:"cancel",name:"cancel",text:"Cancel"},{type:"submit",name:"save",text:"Save",primary:!0}],initialData:o,onAction:function(n,t){"hex-valid"===t.name&&(t.value?n.enable("ok"):n.disable("ok"))},onSubmit:r,onClose:function(){},onCancel:function(){n(on.none())}})}},Uv={register:function(n){!function(e){e.addCommand("mceApplyTextcolor",function(n,t){!function(n,t,e){n.undoManager.transact(function(){n.focus(),n.formatter.apply(t,{value:e}),n.nodeChanged()})}(e,n,t)}),e.addCommand("mceRemoveTextcolor",function(n){!function(n,t){n.undoManager.transact(function(){n.focus(),n.formatter.remove(t,{value:null},null,!0),n.nodeChanged()})}(e,n)})}(n);var t=ye(null),e=ye(null);pv(n,"forecolor","forecolor","Text color",t),pv(n,"backcolor","hilitecolor","Background color",e),hv(n,"forecolor","forecolor","Text color"),hv(n,"backcolor","hilitecolor","Background color")},getColors:dv,getFetch:mv,colorPickerDialog:jv,getCurrentColor:cv,getColorCols:fv,calcCols:sv},Wv=[Vg.parts().items({})],Gv=function(n,e,o,r,i,u,a){return Bu(S(n,function(t){return"choiceitem"===t.type?function(n){return tt("choicemenuitem",qp,n)}(t).fold(kv,function(n){return on.some(function(t,n,e,o,r,i,u){var a=hp({presets:e,textContent:n?t.text:on.none(),htmlContent:on.none(),ariaLabel:t.text,iconContent:t.icon,shortcutContent:n?t.shortcut:on.none(),checkMark:n?on.some(gp(u.icons)):on.none(),caret:on.none(),value:t.value},u,!0);return Dn(Dh({data:Ah(t),disabled:t.disabled,getApi:function(t){return{setActive:function(n){Cg.set(t,n)},isActive:function(){return Cg.isOn(t)},isDisabled:function(){return Ch.isDisabled(t)},setDisabled:function(n){return Ch.set(t,n)}}},onAction:function(n){return o(t.value)},onSetup:function(n){return n.setActive(r),function(){}},triggersSubmenu:!1,itemBehaviours:[]},a,i),{toggling:{toggleClass:sh,toggleOnExecute:!1,selected:t.active}})}(n,1===o,r,e,u(t.value),i,a))}):on.none()}))};var Xv,Yv,qv={inserttable:function uI(o){var n=Xo("size-label"),i=function(n,t,e){for(var o=[],r=0;r<t;r++){for(var i=[],u=0;u<e;u++)i.push(Mh(r,u,n));o.push(i)}return o}(n,10,10),u=vm({dom:{tag:"span",classes:["tox-insert-table-picker__label"],attributes:{id:n}},components:[Ir("0x0")],behaviours:ba([mg.config({})])});return{type:"widget",data:{value:Xo("widget-id")},dom:{tag:"div",classes:["tox-fancymenuitem"]},autofocus:!0,components:[Vh().widget({dom:{tag:"div",classes:["tox-insert-table-picker"]},components:function(n){return B(n,function(n){return S(n,au)})}(i).concat(u.asSpec()),behaviours:ba([Kd("insert-table-picker",[ho(Nh,function(n,t,e){var o=e.event().row(),r=e.event().col();!function(n,t,e,o,r){for(var i=0;i<o;i++)for(var u=0;u<r;u++)Cg.set(n[i][u],i<=t&&u<=e)}(i,o,r,10,10),mg.set(u.get(n),[function(n,t){return Ir(t+1+"x"+(n+1))}(o,r)])}),ho(Hh,function(n,t,e){o.onAction({numRows:e.event().row()+1,numColumns:e.event().col()+1}),oo(n,hi())})]),lg.config({initSize:{numRows:10,numColumns:10},mode:"flatgrid",selector:'[role="button"]'})])})]}},colorswatch:function aI(t,n){var e=Uv.getColors(n.colorinput.getColors(),n.colorinput.hasCustomColors()),o=n.colorinput.getColorCols(),r=Tv(Xo("menu-value"),e,function(n){t.onAction({value:n})},o,"color",Fh.CLOSE_ON_EXECUTE,function(){return!1},n.shared.providers),i=Dn(N(N({},r),{markers:wv("color"),movement:Bv(o,"color")}));return{type:"widget",data:{value:Xo("widget-id")},dom:{tag:"div",classes:["tox-fancymenuitem"]},autofocus:!0,components:[Vh().widget(Vg.sketch(i))]}}},Kv=function(t,e,n,o,r,i,u,a){void 0===a&&(a=!0);var c=hp({presets:o,textContent:on.none(),htmlContent:n?t.text.map(function(n){return _h(n,e)}):on.none(),ariaLabel:t.text,iconContent:t.icon,shortcutContent:on.none(),checkMark:on.none(),caret:on.none(),value:t.value},u.providers,a,t.icon);return Dh({data:Ah(t),disabled:t.disabled,getApi:function(){return{}},onAction:function(n){return r(t.value,t.meta)},onSetup:function(){return function(){}},triggersSubmenu:!1,itemBehaviours:function(n,t){return V(n,"tooltipWorker").map(function(e){return[oh.config({lazySink:t.getSink,tooltipDom:{tag:"div",classes:["tox-tooltip-worker-container"]},tooltipComponents:[],anchor:function(n){return{anchor:"submenu",item:n,overrides:{maxHeightFunction:Cf}}},mode:"follow-highlight",onShow:function(t,n){e(function(n){oh.setComponents(t,[ru({element:we.fromDom(n)})])})}})]}).getOr([])}(t.meta,u)},c,i)},Jv=function(n){var t=n.text.fold(function(){return{}},function(n){return{innerHtml:n}});return{type:"separator",dom:N({tag:"div",classes:[uh,"tox-collection__group-heading"]},t),components:[]}},$v=function(n,t,e,o){void 0===o&&(o=!0);var r=hp({presets:"normal",iconContent:n.icon,textContent:n.text,htmlContent:on.none(),ariaLabel:n.text,caret:on.none(),checkMark:on.none(),shortcutContent:n.shortcut},e,o);return Dh({data:Ah(n),getApi:function(t){return{isDisabled:function(){return Ch.isDisabled(t)},setDisabled:function(n){return Ch.set(t,n)}}},disabled:n.disabled,onAction:n.onAction,onSetup:n.onSetup,triggersSubmenu:!1,itemBehaviours:[]},r,t)},Qv=function(n,t,e,o,r){void 0===o&&(o=!0),void 0===r&&(r=!1);var i=r?function(n){return{dom:{tag:"div",classes:[dh],innerHtml:ym("chevron-down",n)}}}(e.icons):function(n){return{dom:{tag:"div",classes:[dh],innerHtml:ym("chevron-right",n)}}}(e.icons),u=hp({presets:"normal",iconContent:n.icon,textContent:n.text,htmlContent:on.none(),ariaLabel:n.text,caret:on.some(i),checkMark:on.none(),shortcutContent:n.shortcut},e,o);return Dh({data:Ah(n),getApi:function(t){return{isDisabled:function(){return Ch.isDisabled(t)},setDisabled:function(n){return Ch.set(t,n)}}},disabled:n.disabled,onAction:Z,onSetup:n.onSetup,triggersSubmenu:!0,itemBehaviours:[]},u,t)},Zv=function(n,t,e){var o=hp({iconContent:on.none(),textContent:n.text,htmlContent:on.none(),ariaLabel:n.text,checkMark:on.some(gp(e.icons)),caret:on.none(),shortcutContent:n.shortcut,presets:"normal",meta:n.meta},e,!0);return Dn(Dh({data:Ah(n),disabled:n.disabled,getApi:function(t){return{setActive:function(n){Cg.set(t,n)},isActive:function(){return Cg.isOn(t)},isDisabled:function(){return Ch.isDisabled(t)},setDisabled:function(n){return Ch.set(t,n)}}},onAction:n.onAction,onSetup:n.onSetup,triggersSubmenu:!1,itemBehaviours:[]},o,t),{toggling:{toggleClass:sh,toggleOnExecute:!1,selected:n.active}})},nb=function(t,e){return function(n,t){return Object.prototype.hasOwnProperty.call(n,t)?on.some(n[t]):on.none()}(qv,t.fancytype).map(function(n){return n(t,e)})};(Yv=Xv=Xv||{})[Yv.ContentFocus=0]="ContentFocus",Yv[Yv.UiFocus=1]="UiFocus";function tb(n){return n.icon!==undefined||"togglemenuitem"===n.type||"choicemenuitem"===n.type}function eb(n){return x(n,tb)}function ob(n,t,e,o,r){function i(n){return r?N(N({},n),{shortcut:on.none(),icon:n.text.isSome()?on.none():n.icon}):n}var u=e.shared.providers;switch(n.type){case"menuitem":return function(n){return tt("menuitem",Gp,n)}(n).fold(kv,function(n){return on.some($v(i(n),t,u,o))});case"nestedmenuitem":return function(n){return tt("nestedmenuitem",Xp,n)}(n).fold(kv,function(n){return on.some(Qv(i(n),t,u,o,r))});case"togglemenuitem":return function(n){return tt("togglemenuitem",Yp,n)}(n).fold(kv,function(n){return on.some(Zv(i(n),t,u))});case"separator":return function(n){return tt("separatormenuitem",Lp,n)}(n).fold(kv,function(n){return on.some(Jv(n))});case"fancymenuitem":return function(n){return tt("fancymenuitem",Kp,n)}(n).fold(kv,function(n){return nb(i(n),e)});default:return v.console.error("Unknown item in general menu",n),on.none()}}function rb(n,t,e,o,r,i){var u=1===o,a=!u||eb(n);return Bu(S(n,function(n){return"separator"===n.type?function(n){return tt("Autocompleter.Separator",Lp,n)}(n).fold(kv,function(n){return on.some(Jv(n))}):function(n){return tt("Autocompleter.Item",jp,n)}(n).fold(kv,function(n){return on.some(Kv(n,t,u,"normal",e,r,i,a))})}))}function ib(n,t,e,o,r){var i=eb(t),u=Bu(S(t,function(n){function t(n){return ob(n,e,o,function(n){return r?!n.hasOwnProperty("text"):i}(n),r)}return"nestedmenuitem"===n.type&&n.getSubmenuItems().length<=0?t(An(n,{disabled:!0})):t(n)}));return(r?Ov:Ev)(n,i,u,1,"normal")}function ub(n){return Lg.singleData(n.value,n)}function ab(n){function t(){n.stopPropagation()}function e(){n.preventDefault()}var o=we.fromDom(n.target),r=i(e,t);return function(n,t,e,o,r,i,u){return{target:nn(n),x:nn(t),y:nn(e),stop:o,prevent:r,kill:i,raw:nn(u)}}(o,n.clientX,n.clientY,t,e,r,n)}function cb(n,t,e,o,r){var i=function(t,e){return function(n){t(n)&&e(ab(n))}}(e,o);return n.dom().addEventListener(t,i,r),{unbind:d(mb,n,t,i,r)}}function sb(n,t,e){return function(n,t,e,o){return cb(n,t,e,o,!1)}(n,t,gb,e)}function fb(n,t,e){return function(n,t,e,o){return cb(n,t,e,o,!0)}(n,t,gb,e)}function lb(n,t,e){return Ou(n,t,e).isSome()}var db=function(u,a){function e(){return s.get().isSome()}function c(){e()&&jg.hide(l)}function i(n,t,e,o){n.matchLength=t.text.length;var r=Du(e,function(n){return on.from(n.columns)}).getOr(1);jg.showAt(l,{anchor:"node",root:we.fromDom(u.getBody()),node:on.from(n.element)},Vg.sketch(function(n,t,e,o){var r=e===Xv.ContentFocus?Xl():Gl(),i=Bv(t,o),u=wv(o);return{dom:n.dom,components:n.components,items:n.items,value:n.value,markers:{selectedItem:u.selectedItem,item:u.item},movement:i,fakeFocus:e===Xv.ContentFocus,focusManager:r,menuBehaviours:Jp("auto"!==t?[]:[Ii(function(o,n){ip(o,4,u.item).each(function(n){var t=n.numColumns,e=n.numRows;lg.setGridSize(o,e,t)})})])}}(Ev("autocompleter-value",!0,o,r,"normal"),r,Xv.ContentFocus,"normal"))),jg.getContent(l).each(ad.highlightFirst)}var s=ye(on.none()),f=ye(!1),l=uu(jg.sketch({dom:{tag:"div",classes:["tox-autocompleter"]},components:[],fireDismissalEventInstead:{},inlineBehaviours:ba([Kd("dismissAutocompleter",[lo(Oi(),function(){return d()})])]),lazySink:a.getSink})),d=function(){if(e()){var n=s.get().map(function(n){return n.element});Ip(n.getOr(we.fromDom(u.selection.getNode()))).each(Ro),c(),s.set(on.none()),f.set(!1)}},o=L(function(){return rp(u)}),m=function(n){(function(t){return s.get().map(function(n){return tp(u.dom,u.selection.getRng(),n.triggerChar).bind(function(n){return zp(u,o,n,t)})}).getOrThunk(function(){return op(u,o)})})(n).fold(d,function(r){!function(n){if(!e()){var t=Qg(u,n.range);s.set(on.some({triggerChar:n.triggerChar,element:t,matchLength:n.text.length})),f.set(!1)}}(r.context),r.lookupData.then(function(o){s.get().map(function(n){var t=r.context;if(n.triggerChar===t.triggerChar){var e=function(t,n){var e=Du(n,function(n){return on.from(n.columns)}).getOr(1);return B(n,function(i){var n=i.items;return rb(n,i.matchText,function(o,r){var n=u.selection.getRng();tp(u.dom,n,t).fold(function(){return v.console.error("Lost context. Cursor probably moved")},function(n){var t=n.range,e={hide:function(){d()},reload:function(n){c(),m(n)}};f.set(!0),i.onAction(e,t,o,r),f.set(!1)})},e,Fh.BUBBLE_TO_SANDBOX,a)})}(t.triggerChar,o);0<e.length?i(n,t,o,e):10<=t.text.length-n.matchLength?d():c()}})})})},n={onKeypress:Jg(function(n){27!==n.which&&m()},50),cancelIfNecessary:d,isMenuOpen:function(){return jg.isOpen(l)},isActive:e,isProcessingAction:f.get,getView:function(){return jg.getContent(l)}};Vp(n,u)},mb=function(n,t,e,o){n.dom().removeEventListener(t,e,o)},gb=nn(!0),pb=ab;function hb(e,o){var r=null;return{cancel:function(){null!==r&&(v.clearTimeout(r),r=null)},schedule:function(){for(var n=[],t=0;t<arguments.length;t++)n[t]=arguments[t];r=v.setTimeout(function(){e.apply(null,n),r=null},o)}}}function vb(n){var t=n.raw();return t.touches===undefined||1!==t.touches.length?on.none():on.some(t.touches[0])}function bb(e){var o=ye(on.none()),r=ye(!1),i=hb(function(n){e.triggerEvent(pi(),n),r.set(!0)},400),u=K([{key:Ur(),value:function(e){return vb(e).each(function(n){i.cancel();var t={x:nn(n.clientX),y:nn(n.clientY),target:e.target};i.schedule(e),r.set(!1),o.set(on.some(t))}),on.none()}},{key:Wr(),value:function(n){return i.cancel(),vb(n).each(function(t){o.get().each(function(n){!function(n,t){var e=Math.abs(n.clientX-t.x()),o=Math.abs(n.clientY-t.y());return 5<e||5<o}(t,n)||o.set(on.none())})}),on.none()}},{key:Gr(),value:function(t){i.cancel();return o.get().filter(function(n){return jt(n.target(),t.target())}).map(function(n){return r.get()?(t.prevent(),!1):e.triggerEvent(gi(),t)})}}]);return{fireIfReady:function(t,n){return Nn(u,n).bind(function(n){return n(t)})}}}function yb(t,n){var e=ot("Getting GUI events settings",kb,n),o=bb(e),r=S(["touchstart","touchmove","touchend","touchcancel","gesturestart","mousedown","mouseup","mouseover","mousemove","mouseout","click"].concat(["selectstart","input","contextmenu","change","transitionend","drag","dragstart","dragend","dragenter","dragleave","dragover","drop","keyup"]),function(n){return sb(t,n,function(t){o.fireIfReady(t,n).each(function(n){n&&t.kill()}),e.triggerEvent(n,t)&&t.kill()})}),i=ye(on.none()),u=sb(t,"paste",function(t){o.fireIfReady(t,"paste").each(function(n){n&&t.kill()}),e.triggerEvent("paste",t)&&t.kill(),i.set(on.some(v.setTimeout(function(){e.triggerEvent(fi(),t)},0)))}),a=sb(t,"keydown",function(n){e.triggerEvent("keydown",n)?n.kill():!0===e.stopBackspace&&function(n){return 8===n.raw().which&&!vn(["input","textarea"],Ke(n.target()))&&!lb(n.target(),'[contenteditable="true"]')}(n)&&n.prevent()}),c=function(n,t){return Cb?fb(n,"focus",t):sb(n,"focusin",t)}(t,function(n){e.triggerEvent("focusin",n)&&n.kill()}),s=ye(on.none()),f=function(n,t){return Cb?fb(n,"blur",t):sb(n,"focusout",t)}(t,function(n){e.triggerEvent("focusout",n)&&n.kill(),s.set(on.some(v.setTimeout(function(){e.triggerEvent(si(),n)},0)))});return{unbind:function(){bn(r,function(n){n.unbind()}),a.unbind(),c.unbind(),f.unbind(),u.unbind(),i.get().each(v.clearTimeout),s.get().each(v.clearTimeout)}}}function xb(n,t){var e=Nn(n,"target").map(function(n){return n()}).getOr(t);return ye(e)}function wb(n,o,t,e,r,i){var u=n(o,e),a=function(n,t){var e=ye(!1),o=ye(!1);return{stop:function(){e.set(!0)},cut:function(){o.set(!0)},isStopped:e.get,isCut:o.get,event:nn(n),setSource:t.set,getSource:t.get}}(t,r);return u.fold(function(){return i.logEventNoHandlers(o,e),Ob.complete()},function(t){var e=t.descHandler();return nr(e)(a),a.isStopped()?(i.logEventStopped(o,t.element(),e.purpose()),Ob.stopped()):a.isCut()?(i.logEventCut(o,t.element(),e.purpose()),Ob.complete()):Eo(t.element()).fold(function(){return i.logNoParent(o,t.element(),e.purpose()),Ob.complete()},function(n){return i.logEventResponse(o,t.element(),e.purpose()),Ob.resume(n)})})}function Sb(n,t,e){var o=function(n){var t=ye(!1);return{stop:function(){t.set(!0)},cut:Z,isStopped:t.get,isCut:nn(!1),event:nn(n),setSource:r("Cannot set source of a broadcasted event"),getSource:r("Cannot get source of a broadcasted event")}}(t);return bn(n,function(n){var t=n.descHandler();nr(t)(o)}),o.isStopped()}var Cb=Ht().browser.isFirefox(),kb=qn([dt("triggerEvent"),St("stopBackspace",!0)]),Ob=Tn([{stopped:[]},{resume:["element"]},{complete:[]}]),Eb=function(t,e,o,n,r,i){return wb(t,e,o,n,r,i).fold(function(){return!0},function(n){return Eb(t,e,o,n,r,i)},function(){return!1})},Tb=function(n,t,e,o,r){var i=xb(e,o);return Eb(n,t,e,o,i,r)},Bb=yo("element","descHandler"),Db=function(n,t){return{id:nn(n),descHandler:nn(t)}};function Ab(){var i={};return{registerId:function(o,r,n){Cn(n,function(n,t){var e=i[t]!==undefined?i[t]:{};e[r]=tu(n,o),i[t]=e})},unregisterId:function(e){Cn(i,function(n,t){n.hasOwnProperty(e)&&delete n[e]})},filterByType:function(n){return Nn(i,n).map(function(n){return On(n,function(n,t){return Db(t,n)})}).getOr([])},find:function(n,t,e){var o=Vn(t)(i);return jr(e,function(n){return function(e,o){return qi(o).fold(function(){return on.none()},function(n){var t=Vn(n);return e.bind(t).map(function(n){return Bb(o,n)})})}(o,n)},n)}}}function _b(){function o(n){var t=n.element();return qi(t).fold(function(){return function(n,t){var e=Xo(Gi+n);return Yi(t,e),e}("uid-",n.element())},function(n){return n})}var r=Ab(),i={},u=function(n){qi(n.element()).each(function(n){delete i[n],r.unregisterId(n)})};return{find:function(n,t,e){return r.find(n,t,e)},filter:function(n){return r.filterByType(n)},register:function(n){var t=o(n);$(i,t)&&function(n,t){var e=i[t];if(e!==n)throw new Error('The tagId "'+t+'" is already used by: '+Go(e.element())+"\nCannot use it for: "+Go(n.element())+"\nThe conflicting element is"+($e(e.element())?" ":" not ")+"already in the DOM");u(n)}(n,t);var e=[n];r.registerId(e,t,n.events()),i[t]=n},unregister:u,getById:function(n){return Vn(n)(i)}}}function Mb(e){function o(t){return Eo(e.element()).fold(function(){return!0},function(n){return jt(t,n)})}function r(n,t){return u.find(o,n,t)}function i(e){var n=u.filter(li());bn(n,function(n){var t=n.descHandler();nr(t)(e)})}var u=_b(),n=yb(e.element(),{triggerEvent:function(t,e){return Wu(t,e.target(),function(n){return function(n,t,e,o){var r=e.target();return Tb(n,t,e,r,o)}(r,t,e,n)})}}),a={debugInfo:nn("real"),triggerEvent:function(t,e,o){Wu(t,e,function(n){Tb(r,t,o,e,n)})},triggerFocus:function(t,e){qi(t).fold(function(){wa(t)},function(n){Wu(ci(),t,function(n){!function(n,t,e,o,r){var i=xb(e,o);wb(n,t,e,o,i,r)}(r,ci(),{originator:nn(e),kill:Z,prevent:Z,target:nn(t)},t,n)})})},triggerEscape:function(n,t){a.triggerEvent("keydown",n.element(),t.event())},getByUid:function(n){return g(n)},getByDom:function(n){return p(n)},build:uu,addToGui:function(n){s(n)},removeFromGui:function(n){f(n)},addToWorld:function(n){t(n)},removeFromWorld:function(n){c(n)},broadcast:function(n){l(n)},broadcastOn:function(n,t){d(n,t)},broadcastEvent:function(n,t){m(n,t)},isConnected:nn(!0)},t=function(n){n.connect(a),Pr(n.element())||(u.register(n),bn(n.components(),t),a.triggerEvent(bi(),n.element(),{target:nn(n.element())}))},c=function(n){Pr(n.element())||(bn(n.components(),c),u.unregister(n)),n.disconnect()},s=function(n){hs(e,n)},f=function(n){bs(n)},l=function(n){i({universal:nn(!0),data:nn(n)})},d=function(n,t){i({universal:nn(!1),channels:nn(n),data:nn(t)})},m=function(n,t){var e=u.filter(n);return Sb(e,t)},g=function(n){return u.getById(n).fold(function(){return an.error(new Error('Could not find component with uid: "'+n+'" in system.'))},an.value)},p=function(n){var t=qi(n).getOr("not found");return g(t)};return t(e),{root:nn(e),element:e.element,destroy:function(){n.unbind(),Pi(e.element())},add:s,remove:f,getByUid:g,getByDom:p,addToWorld:t,removeFromWorld:c,broadcast:l,broadcastOn:d,broadcastEvent:m}}function Fb(n){return n.getParam("height",Math.max(n.getElement().offsetHeight,200))}function Ib(n){return n.getParam("width",Rh.DOM.getStyle(n.getElement(),"width"))}function Rb(n){return on.from(n.settings.min_width).filter(mn)}function Vb(n){return on.from(n.settings.min_height).filter(mn)}function Nb(n){return on.from(n.getParam("max_width")).filter(mn)}function Hb(n){return on.from(n.getParam("max_height")).filter(mn)}function Pb(n){return!1!==n.getParam("menubar",!0,"boolean")}function zb(n){var t=n.getParam("toolbar",!0),e=!0===t,o=cn(t),r=fn(t)&&0<t.length;return!Xb(n)&&(r||o||e)}function Lb(t){var n=wn(t.settings),e=C(n,function(n){return/^toolbar([1-9])$/.test(n)}),o=S(e,function(n){return t.getParam(n,!1,"string")}),r=C(o,function(n){return"string"==typeof n});return 0<r.length?on.some(r):on.none()}var jb,Ub,Wb=Dl({name:"Container",factory:function(n){var t=n.dom,e=t.attributes,o=c(t,["attributes"]);return{uid:n.uid,dom:N({tag:"div",attributes:N({role:"presentation"},e)},o),components:n.components,behaviours:Is(n.containerBehaviours),events:n.events,domModification:n.domModification,eventOrder:n.eventOrder}},configFields:[St("components",[]),Fs("containerBehaviours",[]),St("events",{}),St("domModification",{}),St("eventOrder",{})]}),Gb=tinymce.util.Tools.resolve("tinymce.EditorManager"),Xb=function(n){return Lb(n).fold(function(){return 0<n.getParam("toolbar",[],"string[]").length},function(){return!0})};(Ub=jb=jb||{})["default"]="",Ub.floating="floating",Ub.sliding="sliding",Ub.scrolling="scrolling";function Yb(n){return n.getParam("toolbar_drawer","","string")}function qb(n){var t=function(n){return n.getParam("fixed_toolbar_container","","string")}(n);return 0<t.length&&n.inline?ku(zr(),t):on.none()}function Kb(n){return n.inline&&qb(n).isSome()}function Jb(n){return n.inline&&!Pb(n)&&!zb(n)&&!Xb(n)}function $b(n){return(n.getParam("toolbar_sticky",!1,"boolean")||n.inline)&&!Kb(n)&&!Jb(n)}function Qb(n){return n.touches===undefined||1!==n.touches.length?on.none():on.some(n.touches[0])}function Zb(n){return ba([vg.config({onFocus:!1===n.selectOnFocus?Z:function(n){var t=n.element(),e=Er(t);t.dom().setSelectionRange(0,e.length)}})])}function ny(n){return{tag:n.tag,attributes:N({type:"text"},n.inputAttributes),styles:n.inputStyles,classes:n.inputClasses}}var ty,ey,oy,ry,iy=function(e){var o=ye(on.none()),r=ye(!1),i=Jg(function(n){e.fire("longpress",N(N({},n),{type:"longpress"})),r.set(!0)},400);e.on("touchstart",function(e){Qb(e).each(function(n){i.cancel();var t={x:nn(n.clientX),y:nn(n.clientY),target:nn(e.target)};i.throttle(e),r.set(!1),o.set(on.some(t))})},!0),e.on("touchmove",function(n){i.cancel(),Qb(n).each(function(t){o.get().each(function(n){!function(n,t){var e=Math.abs(n.clientX-t.x()),o=Math.abs(n.clientY-t.y());return 5<e||5<o}(t,n)||(o.set(on.none()),r.set(!1),e.fire("longpresscancel"))})})},!0),e.on("touchend touchcancel",function(t){i.cancel(),"touchcancel"!==t.type&&o.get().filter(function(n){return n.target().isEqualNode(t.target)}).each(function(){r.get()?t.preventDefault():e.fire("tap",{touches:t.touches}).isDefaultPrevented()&&t.preventDefault()})},!0)},uy=Xo("form-component-change"),ay=Xo("form-close"),cy=Xo("form-cancel"),sy=Xo("form-action"),fy=Xo("form-submit"),ly=Xo("form-block"),dy=Xo("form-unblock"),my=Xo("form-tabchange"),gy=Xo("form-resize"),py=nn([St("prefix","form-field"),Fs("fieldBehaviours",[Zl,Zf])]),hy=nn([Sl({schema:[ct("dom")],name:"label"}),Sl({factory:{sketch:function(n){return{uid:n.uid,dom:{tag:"span",styles:{display:"none"},attributes:{"aria-hidden":"true"},innerHtml:n.text}}}},schema:[ct("text")],name:"aria-descriptor"}),xl({factory:{sketch:function(n){var t=X(n,["factory"]);return n.factory.sketch(t)}},schema:[ct("factory")],name:"field"})]),vy=Al({name:"FormField",configFields:py(),partFields:hy(),factory:function(r,n,t,e){var o=Rs(r.fieldBehaviours,[Zl.config({find:function(n){return qs(n,r,"field")}}),Zf.config({store:{mode:"manual",getValue:function(n){return Zl.getCurrent(n).bind(Zf.getValue)},setValue:function(n,t){Zl.getCurrent(n).each(function(n){Zf.setValue(n,t)})}}})]),i=co([Ii(function(n,t){var o=Js(n,r,["label","field","aria-descriptor"]);o.field().each(function(e){var t=Xo(r.prefix);o.label().each(function(n){Po(n.element(),"for",t),Po(e.element(),"id",t)}),o["aria-descriptor"]().each(function(n){var t=Xo(r.prefix);Po(n.element(),"id",t),Po(e.element(),"aria-describedby",t)})})})]),u={getField:function(n){return qs(n,r,"field")},getLabel:function(n){return qs(n,r,"label")}};return{uid:r.uid,dom:r.dom,components:n,behaviours:o,events:i,apis:u}},apis:{getField:function(n,t){return n.getField(t)},getLabel:function(n,t){return n.getLabel(t)}}}),by=nn([ht("data"),St("inputAttributes",{}),St("inputStyles",{}),St("tag","input"),St("inputClasses",[]),qu("onSetValue"),St("styles",{}),St("eventOrder",{}),Fs("inputBehaviours",[Zf,vg]),St("selectOnFocus",!0)]),yy=Dl({name:"Input",configFields:by(),factory:function(n,t){return{uid:n.uid,dom:ny(n),components:[],behaviours:function(n){return N(N({},Zb(n)),Rs(n.inputBehaviours,[Zf.config({store:{mode:"manual",initialValue:n.data.getOr(undefined),getValue:function(n){return Er(n.element())},setValue:function(n,t){Er(n.element())!==t&&Tr(n.element(),t)}},onSetValue:n.onSetValue})]))}(n),eventOrder:n.eventOrder}}}),xy={},wy={exports:xy};ty=undefined,ey=xy,oy=wy,ry=undefined,function(n){"object"==typeof ey&&void 0!==oy?oy.exports=n():"function"==typeof ty&&ty.amd?ty([],n):("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).EphoxContactWrapper=n()}(function(){return function f(i,u,a){function c(t,n){if(!u[t]){if(!i[t]){var e="function"==typeof ry&&ry;if(!n&&e)return e(t,!0);if(s)return s(t,!0);var o=new Error("Cannot find module '"+t+"'");throw o.code="MODULE_NOT_FOUND",o}var r=u[t]={exports:{}};i[t][0].call(r.exports,function(n){return c(i[t][1][n]||n)},r,r.exports,f,i,u,a)}return u[t].exports}for(var s="function"==typeof ry&&ry,n=0;n<a.length;n++)c(a[n]);return c}({1:[function(n,t,e){var o,r,i=t.exports={};function u(){throw new Error("setTimeout has not been defined")}function a(){throw new Error("clearTimeout has not been defined")}function c(n){if(o===setTimeout)return setTimeout(n,0);if((o===u||!o)&&setTimeout)return o=setTimeout,setTimeout(n,0);try{return o(n,0)}catch(t){try{return o.call(null,n,0)}catch(t){return o.call(this,n,0)}}}!function(){try{o="function"==typeof setTimeout?setTimeout:u}catch(n){o=u}try{r="function"==typeof clearTimeout?clearTimeout:a}catch(n){r=a}}();var s,f=[],l=!1,d=-1;function m(){l&&s&&(l=!1,s.length?f=s.concat(f):d=-1,f.length&&g())}function g(){if(!l){var n=c(m);l=!0;for(var t=f.length;t;){for(s=f,f=[];++d<t;)s&&s[d].run();d=-1,t=f.length}s=null,l=!1,function e(n){if(r===clearTimeout)return clearTimeout(n);if((r===a||!r)&&clearTimeout)return r=clearTimeout,clearTimeout(n);try{return r(n)}catch(t){try{return r.call(null,n)}catch(t){return r.call(this,n)}}}(n)}}function p(n,t){this.fun=n,this.array=t}function h(){}i.nextTick=function(n){var t=new Array(arguments.length-1);if(1<arguments.length)for(var e=1;e<arguments.length;e++)t[e-1]=arguments[e];f.push(new p(n,t)),1!==f.length||l||c(g)},p.prototype.run=function(){this.fun.apply(null,this.array)},i.title="browser",i.browser=!0,i.env={},i.argv=[],i.version="",i.versions={},i.on=h,i.addListener=h,i.once=h,i.off=h,i.removeListener=h,i.removeAllListeners=h,i.emit=h,i.prependListener=h,i.prependOnceListener=h,i.listeners=function(n){return[]},i.binding=function(n){throw new Error("process.binding is not supported")},i.cwd=function(){return"/"},i.chdir=function(n){throw new Error("process.chdir is not supported")},i.umask=function(){return 0}},{}],2:[function(n,l,t){(function(t){function o(){}function i(n){if("object"!=typeof this)throw new TypeError("Promises must be constructed via new");if("function"!=typeof n)throw new TypeError("not a function");this._state=0,this._handled=!1,this._value=undefined,this._deferreds=[],f(n,this)}function r(o,r){for(;3===o._state;)o=o._value;0!==o._state?(o._handled=!0,i._immediateFn(function(){var n=1===o._state?r.onFulfilled:r.onRejected;if(null!==n){var t;try{t=n(o._value)}catch(e){return void a(r.promise,e)}u(r.promise,t)}else(1===o._state?u:a)(r.promise,o._value)})):o._deferreds.push(r)}function u(n,t){try{if(t===n)throw new TypeError("A promise cannot be resolved with itself.");if(t&&("object"==typeof t||"function"==typeof t)){var e=t.then;if(t instanceof i)return n._state=3,n._value=t,void c(n);if("function"==typeof e)return void f(function o(n,t){return function(){n.apply(t,arguments)}}(e,t),n)}n._state=1,n._value=t,c(n)}catch(r){a(n,r)}}function a(n,t){n._state=2,n._value=t,c(n)}function c(n){2===n._state&&0===n._deferreds.length&&i._immediateFn(function(){n._handled||i._unhandledRejectionFn(n._value)});for(var t=0,e=n._deferreds.length;t<e;t++)r(n,n._deferreds[t]);n._deferreds=null}function s(n,t,e){this.onFulfilled="function"==typeof n?n:null,this.onRejected="function"==typeof t?t:null,this.promise=e}function f(n,t){var e=!1;try{n(function(n){e||(e=!0,u(t,n))},function(n){e||(e=!0,a(t,n))})}catch(o){if(e)return;e=!0,a(t,o)}}var n,e;n=this,e=setTimeout,i.prototype["catch"]=function(n){return this.then(null,n)},i.prototype.then=function(n,t){var e=new this.constructor(o);return r(this,new s(n,t,e)),e},i.all=function(n){var c=Array.prototype.slice.call(n);return new i(function(r,i){if(0===c.length)return r([]);var u=c.length;function a(t,n){try{if(n&&("object"==typeof n||"function"==typeof n)){var e=n.then;if("function"==typeof e)return void e.call(n,function(n){a(t,n)},i)}c[t]=n,0==--u&&r(c)}catch(o){i(o)}}for(var n=0;n<c.length;n++)a(n,c[n])})},i.resolve=function(t){return t&&"object"==typeof t&&t.constructor===i?t:new i(function(n){n(t)})},i.reject=function(e){return new i(function(n,t){t(e)})},i.race=function(r){return new i(function(n,t){for(var e=0,o=r.length;e<o;e++)r[e].then(n,t)})},i._immediateFn="function"==typeof t?function(n){t(n)}:function(n){e(n,0)},i._unhandledRejectionFn=function(n){"undefined"!=typeof console&&console&&console.warn("Possible Unhandled Promise Rejection:",n)},i._setImmediateFn=function(n){i._immediateFn=n},i._setUnhandledRejectionFn=function(n){i._unhandledRejectionFn=n},void 0!==l&&l.exports?l.exports=i:n.Promise||(n.Promise=i)}).call(this,n("timers").setImmediate)},{timers:3}],3:[function(c,n,s){(function(n,t){var o=c("process/browser.js").nextTick,e=Function.prototype.apply,r=Array.prototype.slice,i={},u=0;function a(n,t){this._id=n,this._clearFn=t}s.setTimeout=function(){return new a(e.call(setTimeout,window,arguments),clearTimeout)},s.setInterval=function(){return new a(e.call(setInterval,window,arguments),clearInterval)},s.clearTimeout=s.clearInterval=function(n){n.close()},a.prototype.unref=a.prototype.ref=function(){},a.prototype.close=function(){this._clearFn.call(window,this._id)},s.enroll=function(n,t){clearTimeout(n._idleTimeoutId),n._idleTimeout=t},s.unenroll=function(n){clearTimeout(n._idleTimeoutId),n._idleTimeout=-1},s._unrefActive=s.active=function(n){clearTimeout(n._idleTimeoutId);var t=n._idleTimeout;0<=t&&(n._idleTimeoutId=setTimeout(function(){n._onTimeout&&n._onTimeout()},t))},s.setImmediate="function"==typeof n?n:function(n){var t=u++,e=!(arguments.length<2)&&r.call(arguments,1);return i[t]=!0,o(function(){i[t]&&(e?n.apply(null,e):n.call(null),s.clearImmediate(t))}),t},s.clearImmediate="function"==typeof t?t:function(n){delete i[n]}}).call(this,c("timers").setImmediate,c("timers").clearImmediate)},{"process/browser.js":1,timers:3}],4:[function(n,t,e){var o=n("promise-polyfill"),r="undefined"!=typeof window?window:Function("return this;")();t.exports={boltExport:r.Promise||o}},{"promise-polyfill":2}]},{},[4])(4)});function Sy(n){v.setTimeout(function(){throw n},0)}function Cy(n){var t=Ke(n);return vn(Hy,t)}function ky(n,t){var e=t.getRoot(n).getOr(n.element());dr(e,t.invalidClass),t.notify.each(function(t){Cy(n.element())&&Po(n.element(),"aria-invalid",!1),t.getContainer(n).each(function(n){No(n,t.validHtml)}),t.onValid(n)})}function Oy(t,n,e,o){var r=n.getRoot(t).getOr(t.element());fr(r,n.invalidClass),n.notify.each(function(n){Cy(t.element())&&Po(t.element(),"aria-invalid",!0),n.getContainer(t).each(function(n){No(n,o)}),n.onInvalid(t,o)})}function Ey(t,n,e){return n.validator.fold(function(){return Ny(an.value(!0))},function(n){return n.validate(t)})}function Ty(t,e,n){return e.notify.each(function(n){n.onValidate(t)}),Ey(t,e).map(function(n){return t.getSystem().isConnected()?n.fold(function(n){return Oy(t,e,0,n),an.error(n)},function(n){return ky(t,e),an.value(n)}):an.error("No longer in system")})}function By(n,t,e,o){var r=Xy(n,t,e,o);return vy.sketch(r)}function Dy(n,t){return vy.parts().label({dom:{tag:"label",classes:["tox-label"],innerHtml:t.translate(n)}})}var Ay,_y,My=wy.exports.boltExport,Fy=function(n){var e=on.none(),t=[],o=function(n){r()?u(n):t.push(n)},r=function(){return e.isSome()},i=function(n){bn(n,u)},u=function(t){e.each(function(n){v.setTimeout(function(){t(n)},0)})};return n(function(n){e=on.some(n),i(t),t=[]}),{get:o,map:function(e){return Fy(function(t){o(function(n){t(e(n))})})},isReady:r}},Iy={nu:Fy,pure:function(t){return Fy(function(n){n(t)})}},Ry=function(e){function n(n){e().then(n,Sy)}return{map:function(n){return Ry(function(){return e().then(n)})},bind:function(t){return Ry(function(){return e().then(function(n){return t(n).toPromise()})})},anonBind:function(n){return Ry(function(){return e().then(function(){return n.toPromise()})})},toLazy:function(){return Iy.nu(n)},toCached:function(){var n=null;return Ry(function(){return null===n&&(n=e()),n})},toPromise:e,get:n}},Vy=function(n){return Ry(function(){return new My(n)})},Ny=function(n){return Ry(function(){return My.resolve(n)})},Hy=["input","textarea"],Py=/* */Object.freeze({markValid:ky,markInvalid:Oy,query:Ey,run:Ty,isInvalid:function(n,t){var e=t.getRoot(n).getOr(n.element());return mr(e,t.invalidClass)}}),zy=/* */Object.freeze({events:function(t,n){return t.validator.map(function(n){return co([lo(n.onEvent,function(n){Ty(n,t).get(l)})].concat(n.validateOnLoad?[Ii(function(n){Ty(n,t).get(Z)})]:[]))}).getOr({})}}),Ly=[ct("invalidClass"),St("getRoot",on.none),wt("notify",[St("aria","alert"),St("getContainer",on.none),St("validHtml",""),qu("onValid"),qu("onInvalid"),qu("onValidate")]),wt("validator",[ct("validate"),St("onEvent","input"),St("validateOnLoad",!0)])],jy=ya({fields:Ly,name:"invalidating",active:zy,apis:Py,extra:{validation:function(e){return function(n){var t=Zf.getValue(n);return Ny(e(t))}}}}),Uy=/* */Object.freeze({exhibit:function(n,t){return Zo({attributes:K([{key:t.tabAttr,value:"true"}])})}}),Wy=[St("tabAttr","data-alloy-tabstop")],Gy=ya({fields:Wy,name:"tabstopping",active:Uy}),Xy=function(n,t,e,o){return{dom:Yy(e),components:n.toArray().concat([t]),fieldBehaviours:ba(o)}},Yy=function(n){return{tag:"div",classes:["tox-form__group"].concat(n)}},qy=/* */Object.freeze({getCoupled:function(n,t,e,o){return e.getOrCreate(n,t,o)}}),Ky=[st("others",nt(an.value,de()))],Jy=ya({fields:Ky,name:"coupling",apis:qy,state:/* */Object.freeze({init:function(n){var i={},t=nn({});return nu({readState:t,getOrCreate:function(e,o,r){var n=wn(o.others);if(n)return Nn(i,r).getOrThunk(function(){var n=Nn(o.others,r).getOrDie("No information found for coupled component: "+r)(e),t=e.getSystem().build(n);return i[r]=t});throw new Error("Cannot find coupled component: "+r+". Known coupled components: "+JSON.stringify(n,null,2))}})}})}),$y=nn("sink"),Qy=nn(Sl({name:$y(),overrides:nn({dom:{tag:"div"},behaviours:ba([Af.config({useFixed:a})]),events:co([vo(ni()),vo(Yr()),vo(ri())])})}));(_y=Ay=Ay||{})[_y.HighlightFirst=0]="HighlightFirst",_y[_y.HighlightNone=1]="HighlightNone";function Zy(n,t){var e=n.getHotspot(t).getOr(t),o=n.getAnchorOverrides();return n.layouts.fold(function(){return{anchor:"hotspot",hotspot:e,overrides:o}},function(n){return{anchor:"hotspot",hotspot:e,overrides:o,layouts:n}})}function nx(n,t,e,o,r,i,u){return function(n,t,r,e,i,o,u){var a=function(n,t,e){return(0,n.fetch)(e).map(t)}(n,t,e),c=Sw(e,n);return a.map(function(n){return n.bind(function(n){return on.from(Lg.sketch(N(N({},o.menu()),{uid:Yo(""),data:n,highlightImmediately:u===Ay.HighlightFirst,onOpenMenu:function(n,t){var e=c().getOrDie();Af.position(e,r,t),zf.decloak(i)},onOpenSubmenu:function(n,t,e){var o=c().getOrDie();Af.position(o,{anchor:"submenu",item:t},e),zf.decloak(i)},onRepositionMenu:function(n,t,e){var o=c().getOrDie();Af.position(o,r,t),bn(e,function(n){Af.position(o,{anchor:"submenu",item:n.triggeringItem},n.triggeredMenu)})},onEscape:function(){return vg.focus(e),zf.close(i),on.some(!0)}})))})})}(n,t,Zy(n,e),e,o,r,u).map(function(n){return n.fold(function(){zf.isOpen(o)&&zf.close(o)},function(n){zf.cloak(o),zf.open(o,n),i(o)}),o})}function tx(n,t,e,o,r,i,u){return zf.close(o),Ny(o)}function ex(n,t,e,o,r,i){var u=Jy.getCoupled(e,"sandbox");return(zf.isOpen(u)?tx:nx)(n,t,e,u,o,r,i)}function ox(n,t,e){var o=Zl.getCurrent(t).getOr(t),r=mu(n.element());e?yr(o.element(),"min-width",r+"px"):function(n,t){Vu.set(n,t)}(o.element(),r)}function rx(n){zf.getState(n).each(function(n){Lg.repositionMenus(n)})}function ix(o,r,i){var u=Eu(),n=Sw(r,o);return{dom:{tag:"div",classes:o.sandboxClasses,attributes:{id:u.id(),role:"listbox"}},behaviours:tl(o.sandboxBehaviours,[Zf.config({store:{mode:"memory",initialValue:r}}),zf.config({onOpen:function(n,t){var e=Zy(o,r);u.link(r.element()),o.matchWidth&&ox(e.hotspot,t,o.useMinWidth),o.onOpen(e,n,t),i!==undefined&&i.onOpen!==undefined&&i.onOpen(n,t)},onClose:function(n,t){u.unlink(r.element()),i!==undefined&&i.onClose!==undefined&&i.onClose(n,t)},isPartOf:function(n,t,e){return Lu(t,e)||Lu(r,e)},getAttachPoint:function(){return n().getOrDie()}}),Zl.config({find:function(n){return zf.getState(n).bind(function(n){return Zl.getCurrent(n)})}}),lc.config({channels:N(N({},Es({isExtraPart:nn(!1)})),Ts({isExtraPart:nn(!1),doReposition:rx}))})])}}function ux(n){var t=Jy.getCoupled(n,"sandbox");rx(t)}function ax(){return[St("sandboxClasses",[]),nl("sandboxBehaviours",[Zl,lc,zf,Zf])]}function cx(e,t,o){function r(n,t){ro(n,Bw,{value:t})}var n=vy.parts().field({factory:yy,inputClasses:["tox-textfield"],onSetValue:function(n){return jy.run(n).get(function(){})},inputBehaviours:ba([Gy.config({}),jy.config({invalidClass:"tox-textbox-field-invalid",getRoot:function(n){return Eo(n.element())},notify:{onValid:function(n){var t=Zf.getValue(n);ro(n,Tw,{color:t})}},validator:{validateOnLoad:!1,validate:function(n){var t=Zf.getValue(n);if(0===t.length)return Ny(an.value(!0));var e=we.fromTag("span");yr(e,"background-color",t);var o=Sr(e,"background-color").fold(function(){return an.error("blah")},function(n){return an.value(t)});return Ny(o)}}})]),selectOnFocus:!1}),i=e.label.map(function(n){return Dy(n,t.providers)}),u=vm(function(e,o){return Ow.sketch({dom:e.dom,components:e.components,toggleClass:"mce-active",dropdownBehaviours:ba([Ew.config({}),Gy.config({})]),layouts:e.layouts,sandboxClasses:["tox-dialog__popups"],lazySink:o.getSink,fetch:function(t){return Vy(function(n){return e.fetch(n)}).map(function(n){return on.from(ub(Dn(Tv(Xo("menu-value"),n,function(n){e.onItemAction(t,n)},e.columns,e.presets,Fh.CLOSE_ON_EXECUTE,function(){return!1},o.providers),{movement:Bv(e.columns,e.presets)})))})},parts:{menu:Sv(0,0,e.presets)}})}({dom:{tag:"span",attributes:{"aria-label":t.providers.translate("Color swatch")}},layouts:on.some({onRtl:function(){return[ua]},onLtr:function(){return[aa]}}),components:[],fetch:Uv.getFetch(o.getColors(),o.hasCustomColors()),columns:o.getColorCols(),presets:"color",onItemAction:function(n,e){u.getOpt(n).each(function(t){"custom"===e?o.colorPicker(function(n){n.fold(function(){return oo(t,Dw)},function(n){r(t,n),Vv(n)})},"#ffffff"):r(t,"remove"===e?"":e)})}},t));return vy.sketch({dom:{tag:"div",classes:["tox-form__group"]},components:i.toArray().concat([{dom:{tag:"div",classes:["tox-color-input"]},components:[n,u.asSpec()]}]),fieldBehaviours:ba([Kd("form-field-events",[lo(Tw,function(n,t){u.getOpt(n).each(function(n){yr(n.element(),"background-color",t.event().color())}),ro(n,uy,{name:e.name})}),lo(Bw,function(t,e){vy.getField(t).each(function(n){Zf.setValue(n,e.event().value()),Zl.getCurrent(t).each(vg.focus)})}),lo(Dw,function(t,n){vy.getField(t).each(function(n){Zl.getCurrent(t).each(vg.focus)})})])])})}function sx(n,t,e){return{hue:nn(n),saturation:nn(t),value:nn(e)}}function fx(t){return Sl({name:t+"-edge",overrides:function(n){return n.model.manager.edgeActions[t].fold(function(){return{}},function(o){return{events:co([mo(Ur(),o,[n]),mo(Yr(),o,[n]),mo(qr(),function(n,t,e){e.mouseIsDown.get()&&o(n,e)},[n])])}})}})}function lx(n){var t=n.event().raw();if(function(n){return-1!==n.type.indexOf("touch")}(t)){var e=t;return e.touches!==undefined&&1===e.touches.length?on.some(e.touches[0]).map(function(n){return Iu(n.clientX,n.clientY)}):on.none()}var o=t;return o.clientX!==undefined?on.some(o).map(function(n){return Iu(n.clientX,n.clientY)}):on.none()}function dx(n){return n.model.minX}function mx(n){return n.model.minY}function gx(n){return n.model.minX-1}function px(n){return n.model.minY-1}function hx(n){return n.model.maxX}function vx(n){return n.model.maxY}function bx(n){return n.model.maxX+1}function yx(n){return n.model.maxY+1}function xx(n,t,e){return t(n)-e(n)}function wx(n){return xx(n,hx,dx)}function Sx(n){return xx(n,vx,mx)}function Cx(n){return wx(n)/2}function kx(n){return Sx(n)/2}function Ox(n){return n.stepSize}function Ex(n){return n.snapToGrid}function Tx(n){return n.snapStart}function Bx(n){return n.rounded}function Dx(n,t){return n[t+"-edge"]!==undefined}function Ax(n){return Dx(n,"left")}function _x(n){return Dx(n,"right")}function Mx(n){return Dx(n,"top")}function Fx(n){return Dx(n,"bottom")}function Ix(n){return n.model.value.get()}function Rx(n){return{x:nn(n)}}function Vx(n){return{y:nn(n)}}function Nx(n,t){return{x:nn(n),y:nn(t)}}function Hx(n,t){ro(n,jw(),{value:t})}function Px(n,t,e,o){return n<t?n:e<n?e:n===t?t-1:Math.max(t,n-o)}function zx(n,t,e,o){return e<n?n:n<t?t:n===e?e+1:Math.min(e,n+o)}function Lx(n,t,e){return Math.max(t,Math.min(e,n))}function jx(n){var t=n.min,e=n.max,o=n.range,r=n.value,i=n.step,u=n.snap,a=n.snapStart,c=n.rounded,s=n.hasMinEdge,f=n.hasMaxEdge,l=n.minBound,d=n.maxBound,m=n.screenRange,g=s?t-1:t,p=f?e+1:e;if(r<l)return g;if(d<r)return p;var h=function(n,t,e){return Math.min(e,Math.max(n,t))-t}(r,l,d),v=Lx(h/m*o+t,g,p);return u&&t<=v&&v<=e?function(u,e,a,c,n){return n.fold(function(){var n=u-e,t=Math.round(n/c)*c;return Lx(e+t,e-1,a+1)},function(n){var t=(u-n)%c,e=Math.round(t/c),o=Math.floor((u-n)/c),r=Math.floor((a-n)/c),i=n+Math.min(r,o+e)*c;return Math.max(n,i)})}(v,t,e,i,a):c?Math.round(v):v}function Ux(n){var t=n.min,e=n.max,o=n.range,r=n.value,i=n.hasMinEdge,u=n.hasMaxEdge,a=n.maxBound,c=n.maxOffset,s=n.centerMinEdge,f=n.centerMaxEdge;return r<t?i?0:s:e<r?u?a:f:(r-t)/o*c}function Wx(n){return n.element().dom().getBoundingClientRect()}function Gx(n,t){return n[t]}function Xx(n){var t=Wx(n);return Gx(t,Uw)}function Yx(n){var t=Wx(n);return Gx(t,"right")}function qx(n){var t=Wx(n);return Gx(t,"top")}function Kx(n){var t=Wx(n);return Gx(t,"bottom")}function Jx(n){var t=Wx(n);return Gx(t,"width")}function $x(n){var t=Wx(n);return Gx(t,"height")}function Qx(n,t,e){return(n+t)/2-e}function Zx(n,t){var e=Wx(n),o=Wx(t),r=Gx(e,Uw),i=Gx(e,"right"),u=Gx(o,Uw);return Qx(r,i,u)}function nw(n,t){var e=Wx(n),o=Wx(t),r=Gx(e,"top"),i=Gx(e,"bottom"),u=Gx(o,"top");return Qx(r,i,u)}function tw(n,t){ro(n,jw(),{value:t})}function ew(n){return{x:nn(n)}}function ow(n,t,e){var o={min:dx(t),max:hx(t),range:wx(t),value:e,step:Ox(t),snap:Ex(t),snapStart:Tx(t),rounded:Bx(t),hasMinEdge:Ax(t),hasMaxEdge:_x(t),minBound:Xx(n),maxBound:Yx(n),screenRange:Jx(n)};return jx(o)}function rw(e){return function(n,t){return function(n,t,e){var o=(0<n?zx:Px)(Ix(e).x(),dx(e),hx(e),Ox(e));return tw(t,ew(o)),on.some(o)}(e,n,t).map(function(){return!0})}}function iw(n,t,e,o,r,i){var u=function(t,n,e,o,r){var i=Jx(t),u=o.bind(function(n){return on.some(Zx(n,t))}).getOr(0),a=r.bind(function(n){return on.some(Zx(n,t))}).getOr(i),c={min:dx(n),max:hx(n),range:wx(n),value:e,hasMinEdge:Ax(n),hasMaxEdge:_x(n),minBound:Xx(t),minOffset:0,maxBound:Yx(t),maxOffset:i,centerMinEdge:u,centerMaxEdge:a};return Ux(c)}(t,i,e,o,r);return Xx(t)-Xx(n)+u}function uw(n,t){ro(n,jw(),{value:t})}function aw(n){return{y:nn(n)}}function cw(n,t,e){var o={min:mx(t),max:vx(t),range:Sx(t),value:e,step:Ox(t),snap:Ex(t),snapStart:Tx(t),rounded:Bx(t),hasMinEdge:Mx(t),hasMaxEdge:Fx(t),minBound:qx(n),maxBound:Kx(n),screenRange:$x(n)};return jx(o)}function sw(e){return function(n,t){return function(n,t,e){var o=(0<n?zx:Px)(Ix(e).y(),mx(e),vx(e),Ox(e));return uw(t,aw(o)),on.some(o)}(e,n,t).map(function(){return!0})}}function fw(n,t,e,o,r,i){var u=function(t,n,e,o,r){var i=$x(t),u=o.bind(function(n){return on.some(nw(n,t))}).getOr(0),a=r.bind(function(n){return on.some(nw(n,t))}).getOr(i),c={min:mx(n),max:vx(n),range:Sx(n),value:e,hasMinEdge:Mx(n),hasMaxEdge:Fx(n),minBound:qx(t),minOffset:0,maxBound:Kx(t),maxOffset:i,centerMinEdge:u,centerMaxEdge:a};return Ux(c)}(t,i,e,o,r);return qx(t)-qx(n)+u}function lw(n,t){ro(n,jw(),{value:t})}function dw(n,t){return{x:nn(n),y:nn(t)}}function mw(e,o){return function(n,t){return function(n,t,e,o){var r=0<n?zx:Px,i=t?Ix(o).x():r(Ix(o).x(),dx(o),hx(o),Ox(o)),u=t?r(Ix(o).y(),mx(o),vx(o),Ox(o)):Ix(o).y();return lw(e,dw(i,u)),on.some(i)}(e,o,n,t).map(function(){return!0})}}function gw(n){return"<alloy.field."+n+">"}function pw(n){return function(n){return CS[n]}(n)}function hw(n,t,e){return Zf.config(Dn({store:{mode:"manual",getValue:t,setValue:e}},n.map(function(n){return{store:{initialValue:n}}}).getOr({})))}function vw(n,t,e){return hw(n,function(n){return t(n.element())},function(n,t){return e(n.element(),t)})}function bw(e,t){function o(n,t){t.stop()}function r(n){return function(t,e){bn(n,function(n){n(t,e)})}}function i(n,t){if(!Ch.isDisabled(n)){var e=t.event().raw();a(n,e.dataTransfer.files)}}function u(n,t){var e=t.event().raw().target.files;a(n,e)}var a=function(n,t){Zf.setValue(n,function(n){var t=new RegExp("("+".jpg,.jpeg,.png,.gif".split(/\s*,\s*/).join("|")+")$","i");return C(xn(n),function(n){return t.test(n.name)})}(t)),ro(n,uy,{name:e.name})},c=vm({dom:{tag:"input",attributes:{type:"file",accept:"image/*"},styles:{display:"none"}},behaviours:ba([Kd("input-file-events",[vo(ri()),vo(gi())])])}),n=e.label.map(function(n){return Dy(n,t)}),s=vy.parts().field({factory:{sketch:function(n){return{uid:n.uid,dom:{tag:"div",classes:["tox-dropzone-container"]},behaviours:ba([DS([]),xS(),Ch.config({}),Cg.config({toggleClass:"dragenter",toggleOnExecute:!1}),Kd("dropzone-events",[lo("dragenter",r([o,Cg.toggle])),lo("dragleave",r([o,Cg.toggle])),lo("dragover",o),lo("drop",r([o,i])),lo(oi(),u)])]),components:[{dom:{tag:"div",classes:["tox-dropzone"],styles:{}},components:[{dom:{tag:"p",innerHtml:t.translate("Drop an image here")}},Gg.sketch({dom:{tag:"button",innerHtml:t.translate("Browse for an image"),styles:{position:"relative"},classes:["tox-button","tox-button--secondary"]},components:[c.asSpec()],action:function(n){c.get(n).element().dom().click()},buttonBehaviours:ba([Gy.config({})])})]}]}}}});return By(n,s,["tox-form__group--stretched"],[])}function yw(n){return{dom:{tag:"div",styles:{width:"1px",height:"1px",outline:"none"},attributes:{tabindex:"0"},classes:n},behaviours:ba([vg.config({ignore:!0}),Gy.config({})])}}function xw(n,t){ro(n,ni(),{raw:{which:9,shiftKey:t}})}function ww(n,t){var e=RS&&n.sandboxed,o=N(N({},n.label.map(function(n){return{title:n}}).getOr({})),e?{sandbox:"allow-scripts allow-same-origin"}:{}),r=function(o){var r=ye("");return{getValue:function(n){return r.get()},setValue:function(n,t){if(o)Po(n.element(),"srcdoc",t);else{Po(n.element(),"src","javascript:''");var e=n.element().dom().contentWindow.document;e.open(),e.write(t),e.close()}r.set(t)}}}(e),i=n.label.map(function(n){return Dy(n,t)}),u=vy.parts().field({factory:{sketch:function(n){return IS({uid:n.uid,dom:{tag:"iframe",attributes:o},behaviours:ba([Gy.config({}),vg.config({}),TS(on.none(),r.getValue,r.setValue)])})}}});return By(i,u,["tox-form__group--stretched"],[])}var Sw=function(t,n){return t.getSystem().getByUid(n.uid+"-"+$y()).map(function(n){return function(){return an.value(n)}}).getOrThunk(function(){return n.lazySink.fold(function(){return function(){return an.error(new Error("No internal sink is specified, nor could an external sink be found"))}},function(n){return function(){return n(t)}})})},Cw=nn([ct("dom"),ct("fetch"),qu("onOpen"),Ku("onExecute"),St("getHotspot",on.some),St("getAnchorOverrides",nn({})),St("layouts",on.none()),Fs("dropdownBehaviours",[Cg,Jy,lg,vg]),ct("toggleClass"),St("eventOrder",{}),ht("lazySink"),St("matchWidth",!1),St("useMinWidth",!1),ht("role")].concat(ax())),kw=nn([wl({schema:[Gu()],name:"menu",defaults:function(n){return{onExecute:n.onExecute}}}),Qy()]),Ow=Al({name:"Dropdown",configFields:Cw(),partFields:kw(),factory:function(t,n,e,o){function r(n){zf.getState(n).each(function(n){Lg.highlightPrimary(n)})}function i(n,t){return io(n),on.some(!0)}var u,a,c={expand:function(n){Cg.isOn(n)||ex(t,function(n){return n},n,o,Z,Ay.HighlightNone).get(Z)},open:function(n){Cg.isOn(n)||ex(t,function(n){return n},n,o,Z,Ay.HighlightFirst).get(Z)},isOpen:Cg.isOn,close:function(n){Cg.isOn(n)&&ex(t,function(n){return n},n,o,Z,Ay.HighlightFirst).get(Z)},repositionMenus:function(n){Cg.isOn(n)&&ux(n)}};return{uid:t.uid,dom:t.dom,components:n,behaviours:Rs(t.dropdownBehaviours,[Cg.config({toggleClass:t.toggleClass,aria:{mode:"expanded"}}),Jy.config({others:{sandbox:function(n){return ix(t,n,{onOpen:function(){Cg.on(n)},onClose:function(){Cg.off(n)}})}}}),lg.config({mode:"special",onSpace:i,onEnter:i,onDown:function(n,t){if(Ow.isOpen(n)){var e=Jy.getCoupled(n,"sandbox");r(e)}else Ow.open(n);return on.some(!0)},onEscape:function(n,t){return Ow.isOpen(n)?(Ow.close(n),on.some(!0)):on.none()}}),vg.config({})]),events:rm(on.some(function(n){ex(t,function(n){return n},n,o,r,Ay.HighlightFirst).get(Z)})),eventOrder:N(N({},t.eventOrder),(u={},u[di()]=["disabling","toggling","alloy.base.behaviour"],u)),apis:c,domModification:{attributes:N(N({"aria-haspopup":"true"},t.role.fold(function(){return{}},function(n){return{role:n}})),"button"===t.dom.tag?{type:(a="type",Nn(t.dom,"attributes").bind(function(n){return Nn(n,a)})).getOr("button")}:{})}}},apis:{open:function(n,t){return n.open(t)},expand:function(n,t){return n.expand(t)},close:function(n,t){return n.close(t)},isOpen:function(n,t){return n.isOpen(t)},repositionMenus:function(n,t){return n.repositionMenus(t)}}}),Ew=ya({fields:[],name:"unselecting",active:/* */Object.freeze({events:function(n){return co([so(ui(),nn(!0))])},exhibit:function(n,t){return Zo({styles:{"-webkit-user-select":"none","user-select":"none","-ms-user-select":"none","-moz-user-select":"-moz-none"},attributes:{unselectable:"on"}})}})}),Tw=Xo("color-input-change"),Bw=Xo("color-swatch-change"),Dw=Xo("color-picker-cancel"),Aw=nn(Xo("rgb-hex-update")),_w=nn(Xo("slider-update")),Mw=nn(Xo("palette-update")),Fw=Sl({schema:[ct("dom")],name:"label"}),Iw=fx("top-left"),Rw=fx("top"),Vw=fx("top-right"),Nw=fx("right"),Hw=fx("bottom-right"),Pw=fx("bottom"),zw=fx("bottom-left"),Lw=[Fw,fx("left"),Nw,Rw,Pw,Iw,Vw,zw,Hw,xl({name:"thumb",defaults:nn({dom:{styles:{position:"absolute"}}}),overrides:function(n){return{events:co([po(Ur(),n,"spectrum"),po(Wr(),n,"spectrum"),po(Gr(),n,"spectrum"),po(Yr(),n,"spectrum"),po(qr(),n,"spectrum"),po(Jr(),n,"spectrum")])}}}),xl({schema:[At("mouseIsDown",function(){return ye(!1)})],name:"spectrum",overrides:function(e){function o(t,n){return r.getValueFromEvent(n).map(function(n){return r.setValueFrom(t,e,n)})}var r=e.model.manager;return{behaviours:ba([lg.config({mode:"special",onLeft:function(n){return r.onLeft(n,e)},onRight:function(n){return r.onRight(n,e)},onUp:function(n){return r.onUp(n,e)},onDown:function(n){return r.onDown(n,e)}}),vg.config({})]),events:co([lo(Ur(),o),lo(Wr(),o),lo(Yr(),o),lo(qr(),function(n,t){e.mouseIsDown.get()&&o(n,t)})])}}})],jw=nn("slider.change.value"),Uw="left",Ww=rw(-1),Gw=rw(1),Xw=on.none,Yw=on.none,qw={"top-left":on.none(),top:on.none(),"top-right":on.none(),right:on.some(function(n,t){Hx(n,Rx(bx(t)))}),"bottom-right":on.none(),bottom:on.none(),"bottom-left":on.none(),left:on.some(function(n,t){Hx(n,Rx(gx(t)))})},Kw=/* */Object.freeze({setValueFrom:function(n,t,e){var o=ow(n,t,e),r=ew(o);return tw(n,r),o},setToMin:function(n,t){var e=dx(t);tw(n,ew(e))},setToMax:function(n,t){var e=hx(t);tw(n,ew(e))},findValueOfOffset:ow,getValueFromEvent:function(n){return lx(n).map(function(n){return n.left()})},findPositionOfValue:iw,setPositionFromValue:function(n,t,e,o){var r=Ix(e),i=iw(n,o.getSpectrum(n),r.x(),o.getLeftEdge(n),o.getRightEdge(n),e),u=mu(t.element())/2;yr(t.element(),"left",i-u+"px")},onLeft:Ww,onRight:Gw,onUp:Xw,onDown:Yw,edgeActions:qw}),Jw=on.none,$w=on.none,Qw=sw(-1),Zw=sw(1),nS={"top-left":on.none(),top:on.some(function(n,t){Hx(n,Vx(px(t)))}),"top-right":on.none(),right:on.none(),"bottom-right":on.none(),bottom:on.some(function(n,t){Hx(n,Vx(yx(t)))}),"bottom-left":on.none(),left:on.none()},tS=/* */Object.freeze({setValueFrom:function(n,t,e){var o=cw(n,t,e),r=aw(o);return uw(n,r),o},setToMin:function(n,t){var e=mx(t);uw(n,aw(e))},setToMax:function(n,t){var e=vx(t);uw(n,aw(e))},findValueOfOffset:cw,getValueFromEvent:function(n){return lx(n).map(function(n){return n.top()})},findPositionOfValue:fw,setPositionFromValue:function(n,t,e,o){var r=Ix(e),i=fw(n,o.getSpectrum(n),r.y(),o.getTopEdge(n),o.getBottomEdge(n),e),u=su(t.element())/2;yr(t.element(),"top",i-u+"px")},onLeft:Jw,onRight:$w,onUp:Qw,onDown:Zw,edgeActions:nS}),eS=mw(-1,!1),oS=mw(1,!1),rS=mw(-1,!0),iS=mw(1,!0),uS={"top-left":on.some(function(n,t){Hx(n,Nx(gx(t),px(t)))}),top:on.some(function(n,t){Hx(n,Nx(Cx(t),px(t)))}),"top-right":on.some(function(n,t){Hx(n,Nx(bx(t),px(t)))}),right:on.some(function(n,t){Hx(n,Nx(bx(t),kx(t)))}),"bottom-right":on.some(function(n,t){Hx(n,Nx(bx(t),yx(t)))}),bottom:on.some(function(n,t){Hx(n,Nx(Cx(t),yx(t)))}),"bottom-left":on.some(function(n,t){Hx(n,Nx(gx(t),yx(t)))}),left:on.some(function(n,t){Hx(n,Nx(gx(t),kx(t)))})},aS=/* */Object.freeze({setValueFrom:function(n,t,e){var o=ow(n,t,e.left()),r=cw(n,t,e.top()),i=dw(o,r);return lw(n,i),i},setToMin:function(n,t){var e=dx(t),o=mx(t);lw(n,dw(e,o))},setToMax:function(n,t){var e=hx(t),o=vx(t);lw(n,dw(e,o))},getValueFromEvent:function(n){return lx(n)},setPositionFromValue:function(n,t,e,o){var r=Ix(e),i=iw(n,o.getSpectrum(n),r.x(),o.getLeftEdge(n),o.getRightEdge(n),e),u=fw(n,o.getSpectrum(n),r.y(),o.getTopEdge(n),o.getBottomEdge(n),e),a=mu(t.element())/2,c=su(t.element())/2;yr(t.element(),"left",i-a+"px"),yr(t.element(),"top",u-c+"px")},onLeft:eS,onRight:oS,onUp:rS,onDown:iS,edgeActions:uS}),cS=Al({name:"Slider",configFields:[St("stepSize",1),St("onChange",Z),St("onChoose",Z),St("onInit",Z),St("onDragStart",Z),St("onDragEnd",Z),St("snapToGrid",!1),St("rounded",!0),ht("snapStart"),st("model",it("mode",{x:[St("minX",0),St("maxX",100),At("value",function(n){return ye(n.mode.minX)}),ct("getInitialValue"),Qu("manager",Kw)],y:[St("minY",0),St("maxY",100),At("value",function(n){return ye(n.mode.minY)}),ct("getInitialValue"),Qu("manager",tS)],xy:[St("minX",0),St("maxX",100),St("minY",0),St("maxY",100),At("value",function(n){return ye({x:nn(n.mode.minX),y:nn(n.mode.minY)})}),ct("getInitialValue"),Qu("manager",aS)]})),Fs("sliderBehaviours",[lg,Zf]),At("mouseIsDown",function(){return ye(!1)})],partFields:Lw,factory:function(i,n,t,e){function u(n){return Ks(n,i,"thumb")}function a(n){return Ks(n,i,"spectrum")}function o(n){return qs(n,i,"left-edge")}function r(n){return qs(n,i,"right-edge")}function c(n){return qs(n,i,"top-edge")}function s(n){return qs(n,i,"bottom-edge")}function f(n,t){v.setPositionFromValue(n,t,i,{getLeftEdge:o,getRightEdge:r,getTopEdge:c,getBottomEdge:s,getSpectrum:a})}function l(n,t){h.value.set(t);var e=u(n);return f(n,e),i.onChange(n,e,t),on.some(!0)}function d(e){var n=i.mouseIsDown.get();i.mouseIsDown.set(!1),n&&qs(e,i,"thumb").each(function(n){var t=h.value.get();i.onChoose(e,n,t)})}function m(n,t){t.stop(),i.mouseIsDown.set(!0),i.onDragStart(n,u(n))}function g(n,t){t.stop(),i.onDragEnd(n,u(n)),d(n)}var p,h=i.model,v=h.manager;return{uid:i.uid,dom:i.dom,components:n,behaviours:Rs(i.sliderBehaviours,[lg.config({mode:"special",focusIn:function(n){return qs(n,i,"spectrum").map(lg.focusIn).map(nn(!0))}}),Zf.config({store:{mode:"manual",getValue:function(n){return h.value.get()}}}),lc.config({channels:(p={},p[Uf()]={onReceive:d},p)})]),events:co([lo(jw(),function(n,t){l(n,t.event().value())}),Ii(function(n,t){var e=h.getInitialValue();h.value.set(e);var o=u(n);f(n,o);var r=a(n);i.onInit(n,o,r,h.value.get())}),lo(Ur(),m),lo(Gr(),g),lo(Yr(),m),lo(Jr(),g)]),apis:{resetToMin:function(n){v.setToMin(n,i)},resetToMax:function(n){v.setToMax(n,i)},changeValue:l,refresh:f},domModification:{styles:{position:"relative"}}}},apis:{resetToMin:function(n,t){n.resetToMin(t)},resetToMax:function(n,t){n.resetToMax(t)},refresh:function(n,t){n.refresh(t)}}}),sS=function(n,t){var e=cS.parts().spectrum({dom:{tag:"div",classes:[t("hue-slider-spectrum")],attributes:{role:"presentation"}}}),o=cS.parts().thumb({dom:{tag:"div",classes:[t("hue-slider-thumb")],attributes:{role:"presentation"}}});return cS.sketch({dom:{tag:"div",classes:[t("hue-slider")],attributes:{role:"presentation"}},rounded:!1,model:{mode:"y",getInitialValue:nn({y:nn(0)})},components:[e,o],sliderBehaviours:ba([vg.config({})]),onChange:function(n,t,e){ro(n,_w(),{value:e})}})},fS=[Fs("formBehaviours",[Zf])],lS=function(o,n,t){return{uid:o.uid,dom:o.dom,components:n,behaviours:Rs(o.formBehaviours,[Zf.config({store:{mode:"manual",getValue:function(n){var t=$s(n,o);return P(t,function(n,t){return n().bind(function(n){return function(n,t){return n.fold(function(){return an.error(t)},an.value)}(Zl.getCurrent(n),"missing current")}).map(Zf.getValue)})},setValue:function(e,n){Cn(n,function(t,n){qs(e,o,n).each(function(n){Zl.getCurrent(n).each(function(n){Zf.setValue(n,t)})})})}}})]),apis:{getField:function(n,t){return qs(n,o,t).bind(Zl.getCurrent)}}}},dS={getField:$o(function(n,t,e){return n.getField(t,e)}),sketch:function(n){var e,t=(e=[],{field:function(n,t){return e.push(n),Us("form",gw(n),t)},record:function(){return e}}),o=n(t),r=t.record(),i=S(r,function(n){return xl({name:n,pname:gw(n)})});return of("form",fS,i,lS,o)}},mS=Xo("valid-input"),gS=Xo("invalid-input"),pS=Xo("validating-input"),hS="colorcustom.rgb.",vS=function(d,m,g,p){function h(n,t,e,o,r){var i=d(hS+"range"),u=[vy.parts().label({dom:{tag:"label",innerHtml:e,attributes:{"aria-label":o}}}),vy.parts().field({data:r,factory:yy,inputAttributes:N({type:"text"},"hex"===t?{"aria-live":"polite"}:{}),inputClasses:[m("textfield")],inputBehaviours:ba([function(t,o){return jy.config({invalidClass:m("invalid"),notify:{onValidate:function(n){ro(n,pS,{type:t})},onValid:function(n){ro(n,mS,{type:t,value:Zf.getValue(n)})},onInvalid:function(n){ro(n,gS,{type:t,value:Zf.getValue(n)})}},validator:{validate:function(n){var t=Zf.getValue(n),e=o(t)?an.value(!0):an.error(d("aria.input.invalid"));return Ny(e)},validateOnLoad:!1}})}(t,n),Gy.config({})]),onSetValue:function(n){jy.isInvalid(n)&&jy.run(n).get(Z)}})],a="hex"!==t?[vy.parts()["aria-descriptor"]({text:i})]:[];return{dom:{tag:"div",attributes:{role:"presentation"}},components:u.concat(a)}}function v(n,t){var e=t.red(),o=t.green(),r=t.blue();Zf.setValue(n,{red:e,green:o,blue:r})}function b(n,t){y.getOpt(n).each(function(n){yr(n.element(),"background-color","#"+t.value())})}var y=vm({dom:{tag:"div",classes:[m("rgba-preview")],styles:{"background-color":"white"},attributes:{role:"presentation"}}});return Dl({factory:function(){function r(n){return u[n]().get()}function i(n,t){u[n]().set(t)}function t(n,t){var e=t.event();"hex"!==e.type()?i(e.type(),on.none()):p(n)}function o(e,n,t){var o=parseInt(t,10);i(n,on.some(o)),r("red").bind(function(e){return r("green").bind(function(t){return r("blue").map(function(n){return Wh(e,t,n,1)})})}).each(function(n){var t=function(t,n){var e=Uh(n);return dS.getField(t,"hex").each(function(n){vg.isFocused(n)||Zf.setValue(t,{hex:e.value()})}),e}(e,n);b(e,t)})}function e(n,t){var e=t.event();!function(n){return"hex"===n.type()}(e)?o(n,e.type(),e.value()):function(n,t){g(n);var e=Ph(t);i("hex",on.some(t));var o=Yh(e);v(n,o),a(o),ro(n,Aw(),{hex:e}),b(n,e)}(n,e.value())}function n(n){return{label:d(hS+n+".label"),description:d(hS+n+".description")}}var u={red:nn(ye(on.some(255))),green:nn(ye(on.some(255))),blue:nn(ye(on.some(255))),hex:nn(ye(on.some("ffffff")))},a=function(n){var t=n.red(),e=n.green(),o=n.blue();i("red",on.some(t)),i("green",on.some(e)),i("blue",on.some(o))},c=n("red"),s=n("green"),f=n("blue"),l=n("hex");return Dn(dS.sketch(function(n){return{dom:{tag:"form",classes:[m("rgb-form")],attributes:{"aria-label":d("aria.color.picker")}},components:[n.field("red",vy.sketch(h(Gh,"red",c.label,c.description,255))),n.field("green",vy.sketch(h(Gh,"green",s.label,s.description,255))),n.field("blue",vy.sketch(h(Gh,"blue",f.label,f.description,255))),n.field("hex",vy.sketch(h(zh,"hex",l.label,l.description,"ffffff"))),y.asSpec()],formBehaviours:ba([jy.config({invalidClass:m("form-invalid")}),Kd("rgb-form-events",[lo(mS,e),lo(gS,t),lo(pS,t)])])}}),{apis:{updateHex:function(n,t){Zf.setValue(n,{hex:t.value()}),function(n,t){var e=Yh(t);v(n,e),a(e)}(n,t),b(n,t)}}})},name:"RgbForm",configFields:[],apis:{updateHex:function(n,t,e){n.updateHex(t,e)}},extraApis:{}})},bS=function(n,o){function r(n,t){var e=n.width,o=n.height,r=n.getContext("2d");if(null!==r){r.fillStyle=t,r.fillRect(0,0,e,o);var i=r.createLinearGradient(0,0,e,0);i.addColorStop(0,"rgba(255,255,255,1)"),i.addColorStop(1,"rgba(255,255,255,0)"),r.fillStyle=i,r.fillRect(0,0,e,o);var u=r.createLinearGradient(0,0,0,o);u.addColorStop(0,"rgba(0,0,0,0)"),u.addColorStop(1,"rgba(0,0,0,1)"),r.fillStyle=u,r.fillRect(0,0,e,o)}}var i=cS.parts().spectrum({dom:{tag:"canvas",attributes:{role:"presentation"},classes:[o("sv-palette-spectrum")]}}),u=cS.parts().thumb({dom:{tag:"div",attributes:{role:"presentation"},classes:[o("sv-palette-thumb")],innerHtml:"<div class="+o("sv-palette-inner-thumb")+' role="presentation"></div>'}});return Dl({factory:function(n){var t=nn({x:nn(0),y:nn(0)}),e=ba([Zl.config({find:on.some}),vg.config({})]);return cS.sketch({dom:{tag:"div",attributes:{role:"presentation"},classes:[o("sv-palette")]},model:{mode:"xy",getInitialValue:t},rounded:!1,components:[i,u],onChange:function(n,t,e){ro(n,Mw(),{value:e})},onInit:function(n,t,e,o){r(e.element().dom(),Kh(ov()))},sliderBehaviours:e})},name:"SaturationBrightnessPalette",configFields:[],apis:{setRgba:function(n,t,e){!function(n,t){var e=n.components()[0].element().dom();r(e,Kh(t))}(t,e)}},extraApis:{}})},yS=function(l,d){return Dl({name:"ColourPicker",configFields:[ct("dom"),St("onValidHex",Z),St("onInvalidHex",Z)],factory:function(n){function t(n,e){u.getOpt(n).each(function(n){var t=Yh(e);s.paletteRgba().set(t),i.setRgba(n,t)})}function e(n,t){f.getOpt(n).each(function(n){r.updateHex(n,t)})}function a(t,e,n){bn(n,function(n){n(t,e)})}var o,c,r=vS(l,d,n.onValidHex,n.onInvalidHex),i=bS(l,d),s={paletteRgba:nn(ye(ov()))},u=vm(i.sketch({})),f=vm(r.sketch({}));return{uid:n.uid,dom:n.dom,components:[u.asSpec(),sS(l,d),f.asSpec()],behaviours:ba([Kd("colour-picker-events",[lo(Mw(),(c=[e],function(n,t){var e=t.event().value(),o=function(n){var t,e=0,o=0,r=n.red()/255,i=n.green()/255,u=n.blue()/255,a=Math.min(r,Math.min(i,u)),c=Math.max(r,Math.max(i,u));return a===c?sx(0,0,100*(o=a)):(e=60*((e=r===a?3:u===a?1:5)-(r===a?i-u:u===a?r-i:u-r)/(c-a)),t=(c-a)/c,o=c,sx(Math.round(e),Math.round(100*t),Math.round(100*o)))}(s.paletteRgba().get()),r=sx(o.hue(),e.x(),100-e.y()),i=Xh(r),u=Uh(i);a(n,u,c)})),lo(_w(),(o=[t,e],function(n,t){var e=function(n){var t=sx((100-n)/100*360,100,100),e=Xh(t);return Uh(e)}(t.event().value().y());a(n,e,o)}))]),Zl.config({find:function(n){return f.getOpt(n)}}),lg.config({mode:"acyclic"})])}}})},xS=function(){return Zl.config({find:on.some})},wS=function(n){return Zl.config({find:n.getOpt})},SS=function(n){return Zl.config({find:function(t){return Do(t.element(),n).bind(function(n){return t.getSystem().getByDom(n).toOption()})}})},CS={"colorcustom.rgb.red.label":"R","colorcustom.rgb.red.description":"Red component","colorcustom.rgb.green.label":"G","colorcustom.rgb.green.description":"Green component","colorcustom.rgb.blue.label":"B","colorcustom.rgb.blue.description":"Blue component","colorcustom.rgb.hex.label":"#","colorcustom.rgb.hex.description":"Hex color code","colorcustom.rgb.range":"Range 0 to 255","colorcustom.sb.saturation":"Saturation","colorcustom.sb.brightness":"Brightness","colorcustom.sb.picker":"Saturation and Brightness Picker","colorcustom.sb.palette":"Saturation and Brightness Palette","colorcustom.sb.instructions":"Use arrow keys to select saturation and brightness, on x and y axes","colorcustom.hue.hue":"Hue","colorcustom.hue.slider":"Hue Slider","colorcustom.hue.palette":"Hue Palette","colorcustom.hue.instructions":"Use arrow keys to select a hue","aria.color.picker":"Color Picker","aria.input.invalid":"Invalid input"},kS=tinymce.util.Tools.resolve("tinymce.Resource"),OS=re([St("preprocess",l),St("postprocess",l)]),ES=function(r,n){var i=ot("RepresentingConfigs.memento processors",OS,n);return Zf.config({store:{mode:"manual",getValue:function(n){var t=r.get(n),e=Zf.getValue(t);return i.postprocess(e)},setValue:function(n,t){var e=i.preprocess(t),o=r.get(n);Zf.setValue(o,e)}}})},TS=hw,BS=function(n){return vw(n,Vo,No)},DS=function(n){return Zf.config({store:{mode:"memory",initialValue:n}})},AS=Xo("alloy-fake-before-tabstop"),_S=Xo("alloy-fake-after-tabstop"),MS=function(n){return lb(n,["."+AS,"."+_S].join(","),nn(!1))},FS=function(n,t){var e=t.element();mr(e,AS)?xw(n,!0):mr(e,_S)&&xw(n,!1)},IS=function(n){return{dom:{tag:"div",classes:["tox-navobj"]},components:[yw([AS]),n,yw([_S])],behaviours:ba([SS(1)])}},RS=!(Ht().browser.isIE()||Ht().browser.isEdge());function VS(n,t){return PS(v.document.createElement("canvas"),n,t)}function NS(n){var t=VS(n.width,n.height);return HS(t).drawImage(n,0,0),t}function HS(n){return n.getContext("2d")}function PS(n,t,e){return n.width=t,n.height=e,n}function zS(n){return n.naturalWidth||n.width}function LS(n){return n.naturalHeight||n.height}var jS,US,WS=window.Promise?window.Promise:(jS=GS.immediateFn||"function"==typeof window.setImmediate&&window.setImmediate||function(n){v.setTimeout(n,1)},US=Array.isArray||function(n){return"[object Array]"===Object.prototype.toString.call(n)},GS.prototype["catch"]=function(n){return this.then(null,n)},GS.prototype.then=function(e,o){var r=this;return new GS(function(n,t){YS.call(r,new $S(e,o,n,t))})},GS.all=function(){for(var n=[],t=0;t<arguments.length;t++)n[t]=arguments[t];var c=Array.prototype.slice.call(1===n.length&&US(n[0])?n[0]:n);return new GS(function(r,i){if(0===c.length)return r([]);var u=c.length;function a(t,n){try{if(n&&("object"==typeof n||"function"==typeof n)){var e=n.then;if("function"==typeof e)return void e.call(n,function(n){a(t,n)},i)}c[t]=n,0==--u&&r(c)}catch(o){i(o)}}for(var n=0;n<c.length;n++)a(n,c[n])})},GS.resolve=function(t){return t&&"object"==typeof t&&t.constructor===GS?t:new GS(function(n){n(t)})},GS.reject=function(e){return new GS(function(n,t){t(e)})},GS.race=function(r){return new GS(function(n,t){for(var e=0,o=r;e<o.length;e++)o[e].then(n,t)})},GS);function GS(n){if("object"!=typeof this)throw new TypeError("Promises must be constructed via new");if("function"!=typeof n)throw new TypeError("not a function");this._state=null,this._value=null,this._deferreds=[],QS(n,XS(qS,this),XS(KS,this))}function XS(n,t){return function(){return n.apply(t,arguments)}}function YS(o){var r=this;null!==this._state?jS(function(){var n=r._state?o.onFulfilled:o.onRejected;if(null!==n){var t;try{t=n(r._value)}catch(e){return void o.reject(e)}o.resolve(t)}else(r._state?o.resolve:o.reject)(r._value)}):this._deferreds.push(o)}function qS(n){try{if(n===this)throw new TypeError("A promise cannot be resolved with itself.");if(n&&("object"==typeof n||"function"==typeof n)){var t=n.then;if("function"==typeof t)return void QS(XS(t,n),XS(qS,this),XS(KS,this))}this._state=!0,this._value=n,JS.call(this)}catch(e){KS.call(this,e)}}function KS(n){this._state=!1,this._value=n,JS.call(this)}function JS(){for(var n=0,t=this._deferreds;n<t.length;n++){var e=t[n];YS.call(this,e)}this._deferreds=[]}function $S(n,t,e,o){this.onFulfilled="function"==typeof n?n:null,this.onRejected="function"==typeof t?t:null,this.resolve=e,this.reject=o}function QS(n,t,e){var o=!1;try{n(function(n){o||(o=!0,t(n))},function(n){o||(o=!0,e(n))})}catch(r){if(o)return;o=!0,e(r)}}function ZS(e){return new WS(function(n,t){(function p(n){var t=n.split(","),e=/data:([^;]+)/.exec(t[0]);if(!e)return on.none();for(var o=e[1],r=t[1],i=v.atob(r),u=i.length,a=Math.ceil(u/1024),c=new Array(a),s=0;s<a;++s){for(var f=1024*s,l=Math.min(1024+f,u),d=new Array(l-f),m=f,g=0;m<l;++g,++m)d[g]=i[m].charCodeAt(0);c[s]=new Uint8Array(d)}return on.some(new v.Blob(c,{type:o}))})(e).fold(function(){t("uri is not base64: "+e)},n)})}function nC(n,o,r){return o=o||"image/png",v.HTMLCanvasElement.prototype.toBlob?new WS(function(t,e){n.toBlob(function(n){n?t(n):e()},o,r)}):ZS(n.toDataURL(o,r))}function tC(n){return function t(a){return new WS(function(n,t){var e=v.URL.createObjectURL(a),o=new v.Image,r=function(){o.removeEventListener("load",i),o.removeEventListener("error",u)};function i(){r(),n(o)}function u(){r(),t("Unable to load data of type "+a.type+": "+e)}o.addEventListener("load",i),o.addEventListener("error",u),o.src=e,o.complete&&i()})}(n).then(function(n){!function e(n){v.URL.revokeObjectURL(n.src)}(n);var t=VS(zS(n),LS(n));return HS(t).drawImage(n,0,0),t})}function eC(n,t,e){var o=t.type;function r(t,e){return n.then(function(n){return function o(n,t,e){return t=t||"image/png",n.toDataURL(t,e)}(n,t,e)})}return{getType:nn(o),toBlob:function i(){return WS.resolve(t)},toDataURL:function u(){return e},toBase64:function a(){return e.split(",")[1]},toAdjustedBlob:function c(t,e){return n.then(function(n){return nC(n,t,e)})},toAdjustedDataURL:r,toAdjustedBase64:function s(n,t){return r(n,t).then(function(n){return n.split(",")[1]})},toCanvas:function f(){return n.then(NS)}}}function oC(t){return function n(e){return new WS(function(n){var t=new v.FileReader;t.onloadend=function(){n(t.result)},t.readAsDataURL(e)})}(t).then(function(n){return eC(tC(t),t,n)})}function rC(t,n){return nC(t,n).then(function(n){return eC(WS.resolve(t),n,t.toDataURL())})}function iC(n,t,e){var o="string"==typeof n?parseFloat(n):n;return e<o?o=e:o<t&&(o=t),o}var uC=[0,.01,.02,.04,.05,.06,.07,.08,.1,.11,.12,.14,.15,.16,.17,.18,.2,.21,.22,.24,.25,.27,.28,.3,.32,.34,.36,.38,.4,.42,.44,.46,.48,.5,.53,.56,.59,.62,.65,.68,.71,.74,.77,.8,.83,.86,.89,.92,.95,.98,1,1.06,1.12,1.18,1.24,1.3,1.36,1.42,1.48,1.54,1.6,1.66,1.72,1.78,1.84,1.9,1.96,2,2.12,2.25,2.37,2.5,2.62,2.75,2.87,3,3.2,3.4,3.6,3.8,4,4.3,4.7,4.9,5,5.5,6,6.5,6.8,7,7.3,7.5,7.8,8,8.4,8.7,9,9.4,9.6,9.8,10];function aC(n,t){for(var e,o=[],r=new Array(25),i=0;i<5;i++){for(var u=0;u<5;u++)o[u]=t[u+5*i];for(u=0;u<5;u++){for(var a=e=0;a<5;a++)e+=n[u+5*a]*o[a];r[u+5*i]=e}}return r}function cC(t,e){return t.toCanvas().then(function(n){return function i(n,t,e){var o=HS(n);var r=function B(n,t){for(var e,o,r,i,u=n.data,a=t[0],c=t[1],s=t[2],f=t[3],l=t[4],d=t[5],m=t[6],g=t[7],p=t[8],h=t[9],v=t[10],b=t[11],y=t[12],x=t[13],w=t[14],S=t[15],C=t[16],k=t[17],O=t[18],E=t[19],T=0;T<u.length;T+=4)e=u[T],o=u[T+1],r=u[T+2],i=u[T+3],u[T]=e*a+o*c+r*s+i*f+l,u[T+1]=e*d+o*m+r*g+i*p+h,u[T+2]=e*v+o*b+r*y+i*x+w,u[T+3]=e*S+o*C+r*k+i*O+E;return n}(o.getImageData(0,0,n.width,n.height),e);return o.putImageData(r,0,0),rC(n,t)}(n,t.getType(),e)})}function sC(t,e){return t.toCanvas().then(function(n){return function u(n,t,e){var o=HS(n);var r=o.getImageData(0,0,n.width,n.height),i=o.getImageData(0,0,n.width,n.height);return i=function w(n,t,e){function o(n,t,e){return e<n?n=e:n<t&&(n=t),n}for(var r=Math.round(Math.sqrt(e.length)),i=Math.floor(r/2),u=n.data,a=t.data,c=n.width,s=n.height,f=0;f<s;f++)for(var l=0;l<c;l++){for(var d=0,m=0,g=0,p=0;p<r;p++)for(var h=0;h<r;h++){var v=o(l+h-i,0,c-1),b=4*(o(f+p-i,0,s-1)*c+v),y=e[p*r+h];d+=u[b]*y,m+=u[1+b]*y,g+=u[2+b]*y}var x=4*(f*c+l);a[x]=o(d,0,255),a[1+x]=o(m,0,255),a[2+x]=o(g,0,255)}return t}(r,i,e),o.putImageData(i,0,0),rC(n,t)}(n,t.getType(),e)})}function fC(e){return function(n,t){return cC(n,e([1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1],t))}}function lC(n,t,e,o){return cC(n,function r(n,t,e,o){return aC(n,[t=iC(t,0,2),0,0,0,0,0,e=iC(e,0,2),0,0,0,0,0,o=iC(o,0,2),0,0,0,0,0,1,0,0,0,0,0,1])}([1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1],t,e,o))}var dC=function cI(t){return function(n){return cC(n,t)}}([-1,0,0,0,255,0,-1,0,0,255,0,0,-1,0,255,0,0,0,1,0,0,0,0,0,1]),mC=fC(function sI(n,t){return aC(n,[1,0,0,0,t=iC(255*t,-255,255),0,1,0,0,t,0,0,1,0,t,0,0,0,1,0,0,0,0,0,1])}),gC=fC(function fI(n,t){var e;return t=iC(t,-1,1),aC(n,[(e=(t*=100)<0?127+t/100*127:127*(e=0===(e=t%1)?uC[t]:uC[Math.floor(t)]*(1-e)+uC[Math.floor(t)+1]*e)+127)/127,0,0,0,.5*(127-e),0,e/127,0,0,.5*(127-e),0,0,e/127,0,.5*(127-e),0,0,0,1,0,0,0,0,0,1])}),pC=function lI(t){return function(n){return sC(n,t)}}([0,-1,0,-1,5,-1,0,-1,0]),hC=function dI(c){return function(t,e){return t.toCanvas().then(function(n){return function(n,t,e){var o=HS(n),r=new Array(256);for(var i=0;i<r.length;i++)r[i]=c(i,e);var u=function a(n,t){for(var e=n.data,o=0;o<e.length;o+=4)e[o]=t[e[o]],e[o+1]=t[e[o+1]],e[o+2]=t[e[o+2]];return n}(o.getImageData(0,0,n.width,n.height),r);return o.putImageData(u,0,0),rC(n,t)}(n,t.getType(),e)})}}(function(n,t){return 255*Math.pow(n/255,1-t)});function vC(n,t,e){var o=zS(n),r=LS(n),i=t/o,u=e/r,a=!1;(i<.5||2<i)&&(i=i<.5?.5:2,a=!0),(u<.5||2<u)&&(u=u<.5?.5:2,a=!0);var c=function s(u,a,c){return new WS(function(n){var t=zS(u),e=LS(u),o=Math.floor(t*a),r=Math.floor(e*c),i=VS(o,r);HS(i).drawImage(u,0,0,t,e,0,0,o,r),n(i)})}(n,i,u);return a?c.then(function(n){return vC(n,t,e)}):c}function bC(t,e){return t.toCanvas().then(function(n){return function a(n,t,e){var o=VS(n.width,n.height),r=HS(o),i=0,u=0;90!==(e=e<0?360+e:e)&&270!==e||PS(o,o.height,o.width);90!==e&&180!==e||(i=o.width);270!==e&&180!==e||(u=o.height);return r.translate(i,u),r.rotate(e*Math.PI/180),r.drawImage(n,0,0),rC(o,t)}(n,t.getType(),e)})}function yC(t,e){return t.toCanvas().then(function(n){return function i(n,t,e){var o=VS(n.width,n.height),r=HS(o);"v"===e?(r.scale(1,-1),r.drawImage(n,0,-o.height)):(r.scale(-1,1),r.drawImage(n,-o.width,0));return rC(o,t)}(n,t.getType(),e)})}function xC(t,e,o,r,i){return t.toCanvas().then(function(n){return function a(n,t,e,o,r,i){var u=VS(r,i);return HS(u).drawImage(n,-e,-o),rC(u,t)}(n,t.getType(),e,o,r,i)})}function wC(n){return dC(n)}function SC(n){return pC(n)}function CC(n,t){return hC(n,t)}function kC(n,t){return mC(n,t)}function OC(n,t){return gC(n,t)}function EC(n,t){return yC(n,t)}function TC(n,t,e){return function r(t,e,o){return t.toCanvas().then(function(n){return vC(n,e,o).then(function(n){return rC(n,t.getType())})})}(n,t,e)}function BC(n,t){return bC(n,t)}function DC(n,t){return N({dom:{tag:"span",innerHtml:n,classes:["tox-icon","tox-tbtn__icon-wrap"]}},t)}function AC(n,t){return DC(ym(n,t),{})}function _C(n,t){return DC(ym(n,t),{behaviours:ba([mg.config({})])})}function MC(n,t,e){return{dom:{tag:"span",innerHtml:e.translate(n),classes:[t+"__select-label"]},behaviours:ba([mg.config({})])}}function FC(n,t,o){function e(n,t){var e=Zf.getValue(n);return vg.focus(e),ro(e,"keydown",{raw:t.event().raw()}),Ow.close(e),on.some(!0)}var r=ye(Z),i=n.text.map(function(n){return vm(MC(n,t,o.providers))}),u=n.icon.map(function(n){return vm(_C(n,o.providers.icons))}),a=n.role.fold(function(){return{}},function(n){return{role:n}}),c=n.tooltip.fold(function(){return{}},function(n){var t=o.providers.translate(n);return{title:t,"aria-label":t}});return vm(Ow.sketch(N(N({},a),{dom:{tag:"button",classes:[t,t+"--select"].concat(S(n.classes,function(n){return t+"--"+n})),attributes:N({},c)},components:Bh([u.map(function(n){return n.asSpec()}),i.map(function(n){return n.asSpec()}),on.some({dom:{tag:"div",classes:[t+"__select-chevron"],innerHtml:ym("chevron-down",o.providers.icons)}})]),matchWidth:!0,useMinWidth:!0,dropdownBehaviours:ba(g(n.dropdownBehaviours,[Oh(n.disabled),Ew.config({}),mg.config({}),Kd("dropdown-events",[Ep(n,r),Tp(n,r)]),Kd("menubutton-update-display-text",[lo(rk,function(t,e){i.bind(function(n){return n.getOpt(t)}).each(function(n){mg.set(n,[Ir(o.providers.translate(e.event().text()))])})}),lo(ik,function(t,e){u.bind(function(n){return n.getOpt(t)}).each(function(n){mg.set(n,[_C(e.event().icon(),o.providers.icons)])})})])])),eventOrder:Dn(ok,{mousedown:["focusing","alloy.base.behaviour","item-type-events","normal-dropdown-events"]}),sandboxBehaviours:ba([lg.config({mode:"special",onLeft:e,onRight:e})]),lazySink:o.getSink,toggleClass:t+"--active",parts:{menu:Sv(0,n.columns,n.presets)},fetch:function(){return Vy(n.fetch)}}))).asSpec()}function IC(n){return"separator"===n.type}function RC(n,e){var t=O(n,function(n,t){return function(n){return cn(n)}(t)?""===t?n:"|"===t?0<n.length&&!IC(n[n.length-1])?n.concat([uk]):n:En(e,t.toLowerCase())?n.concat([e[t.toLowerCase()]]):n:n.concat([t])},[]);return 0<t.length&&IC(t[t.length-1])&&t.pop(),t}function VC(n,t){return function(n){return En(n,"getSubmenuItems")}(n)?function(n,t){var e=n.getSubmenuItems(),o=ak(e,t);return{item:n,menus:Dn(o.menus,q(n.value,o.items)),expansions:Dn(o.expansions,q(n.value,n.value))}}(n,t):{item:n,menus:{},expansions:{}}}function NC(n,e,o,t){var r=Xo("primary-menu"),i=ak(n,o.shared.providers.menuItems());if(0===i.items.length)return on.none();var u=ib(r,i.items,e,o,t),a=P(i.menus,function(n,t){return ib(t,n,e,o,!1)}),c=Dn(a,q(r,u));return on.from(Lg.tieredData(r,c,i.expansions))}function HC(e){return{isDisabled:function(){return Ch.isDisabled(e)},setDisabled:function(n){return Ch.set(e,n)},setActive:function(n){var t=e.element();n?(fr(t,"tox-tbtn--enabled"),Po(t,"aria-pressed",!0)):(dr(t,"tox-tbtn--enabled"),jo(t,"aria-pressed"))},isActive:function(){return mr(e.element(),"tox-tbtn--enabled")}}}function PC(n,t,e,o){return FC({text:n.text,icon:n.icon,tooltip:n.tooltip,role:o,fetch:function(t){n.fetch(function(n){t(NC(n,Fh.CLOSE_ON_EXECUTE,e,!1))})},onSetup:n.onSetup,getApi:HC,columns:1,presets:"normal",classes:[],dropdownBehaviours:[Gy.config({})]},t,e.shared)}function zC(t,o,r){return function(n){n(S(t,function(n){var t=n.text.fold(function(){return{}},function(n){return{text:n}});return N(N({type:n.type},t),{onAction:function(e){return function(n){var t=!n.isActive();n.setActive(t),e.storage.set(t),r.shared.getSink().each(function(n){o().getOpt(n).each(function(n){wa(n.element()),ro(n,sy,{name:e.name,value:e.storage.get()})})})}}(n),onSetup:function(t){return function(n){n.setActive(t.storage.get())}}(n)})}))}}function LC(n,t,e,o,r){void 0===e&&(e=[]);var i=t.fold(function(){return{}},function(n){return{action:n}}),u=N({buttonBehaviours:ba([Oh(n.disabled),Gy.config({}),Kd("button press",[fo("click"),fo("mousedown")])].concat(e)),eventOrder:{click:["button press","alloy.base.behaviour"],mousedown:["button press","alloy.base.behaviour"]}},i),a=Dn(u,{dom:o});return Dn(a,{components:r})}function jC(n,t,e,o){void 0===o&&(o=[]);var r={tag:"button",classes:["tox-tbtn"],attributes:n.tooltip.map(function(n){return{"aria-label":e.translate(n),title:e.translate(n)}}).getOr({})},i=n.icon.map(function(n){return AC(n,e.icons)}),u=Bh([i]);return LC(n,t,o,r,u)}function UC(n,t,e,o){void 0===o&&(o=[]);var r=jC(n,on.some(t),e,o);return Gg.sketch(r)}function WC(n,t,e,o,r){void 0===o&&(o=[]),void 0===r&&(r=[]);var i=e.translate(n.text),u=n.icon?n.icon.map(function(n){return AC(n,e.icons)}):on.none(),a=u.isSome()?Bh([u]):[],c=u.isSome()?{}:{innerHtml:i},s=g(n.primary||n.borderless?["tox-button"]:["tox-button","tox-button--secondary"],u.isSome()?["tox-button--icon"]:[],n.borderless?["tox-button--naked"]:[],r),f=N(N({tag:"button",classes:s},c),{attributes:{title:i}});return LC(n,t,o,f,a)}function GC(n,t,e,o,r){void 0===o&&(o=[]),void 0===r&&(r=[]);var i=WC(n,on.some(t),e,o,r);return Gg.sketch(i)}function XC(t,e){return function(n){"custom"===e?ro(n,sy,{name:t,value:{}}):"submit"===e?oo(n,fy):"cancel"===e?oo(n,cy):v.console.error("Unknown button type: ",e)}}function YC(n,t,e){if(function(n,t){return"menu"===t}(0,t)){var o=n,r=N(N({},n),{fetch:zC(o.items,function(){return i},e)}),i=vm(PC(r,"tox-tbtn",e,on.none()));return i.asSpec()}if(function(n,t){return"custom"===t||"cancel"===t||"submit"===t}(0,t)){var u=XC(n.name,t),a=N(N({},n),{borderless:!1});return GC(a,u,e.shared.providers,[])}v.console.error("Unknown footer button type: ",t)}function qC(n,t){var e=XC(n.name,"custom");return function(n,t){return By(n,t,[],[])}(on.none(),vy.parts().field(N({factory:Gg},WC(n,on.some(e),t,[DS(""),xS()]))))}function KC(n,t){return xl({factory:vy,name:n,overrides:function(o){return{fieldBehaviours:ba([Kd("coupled-input-behaviour",[lo(ei(),function(e){(function(n,t,e){return qs(n,t,e).bind(Zl.getCurrent)})(e,o,t).each(function(t){qs(e,o,"lock").each(function(n){Cg.isOn(n)&&o.onLockedChange(e,t,n)})})})])])}}})}function JC(n){var t=/^\s*(\d+(?:\.\d+)?)\s*(|cm|mm|in|px|pt|pc|em|ex|ch|rem|vw|vh|vmin|vmax|%)\s*$/.exec(n);if(null===t)return an.error(n);var e=parseFloat(t[1]),o=t[2];return an.value({value:e,unit:o})}function $C(n,t){function e(n){return Object.prototype.hasOwnProperty.call(o,n)}var o={"":96,px:96,pt:72,cm:2.54,pc:12,mm:25.4,"in":1};return n.unit===t?on.some(n.value):e(n.unit)&&e(t)?o[n.unit]===o[t]?on.some(n.value):on.some(n.value/o[n.unit]*o[t]):on.none()}function QC(n){return on.none()}function ZC(n,t){return function(n,t,e){return n.isSome()&&t.isSome()?on.some(e(n.getOrDie(),t.getOrDie())):on.none()}(JC(n).toOption(),JC(t).toOption(),function(n,t){return $C(n,t.unit).map(function(n){return t.value/n}).map(function(n){return function(t,e){return function(n){return $C(n,e).map(function(n){return{value:n*t,unit:e}})}}(n,t.unit)}).getOr(QC)}).getOr(QC)}function nk(o,t){function n(n){return{dom:{tag:"div",classes:["tox-form__group"]},components:n}}function e(e){return vy.parts().field({factory:yy,inputClasses:["tox-textfield"],inputBehaviours:ba([Ch.config({disabled:o.disabled}),Gy.config({}),Kd("size-input-events",[lo(Qr(),function(n,t){ro(n,i,{isField1:e})}),lo(oi(),function(n,t){ro(n,uy,{name:o.name})})])]),selectOnFocus:!1})}function r(n){return{dom:{tag:"label",classes:["tox-label"],innerHtml:t.translate(n)}}}var a=QC,i=Xo("ratio-event"),u=fk.parts().lock({dom:{tag:"button",classes:["tox-lock","tox-button","tox-button--naked","tox-button--icon"],attributes:{title:t.translate(o.label.getOr("Constrain proportions"))}},components:[{dom:{tag:"span",classes:["tox-icon","tox-lock-icon__lock"],innerHtml:ym("lock",t.icons)}},{dom:{tag:"span",classes:["tox-icon","tox-lock-icon__unlock"],innerHtml:ym("unlock",t.icons)}}],buttonBehaviours:ba([Oh(o.disabled),Gy.config({})])}),c=fk.parts().field1(n([vy.parts().label(r("Width")),e(!0)])),s=fk.parts().field2(n([vy.parts().label(r("Height")),e(!1)]));return fk.sketch({dom:{tag:"div",classes:["tox-form__group"]},components:[{dom:{tag:"div",classes:["tox-form__controls-h-stack"]},components:[c,s,n([r("&nbsp;"),u])]}],field1Name:"width",field2Name:"height",locked:!0,markers:{lockClass:"tox-locked"},onLockedChange:function(n,t,e){JC(Zf.getValue(n)).each(function(n){a(n).each(function(n){Zf.setValue(t,function(n){var t,e={"":0,px:0,pt:1,mm:1,pc:2,ex:2,em:2,ch:2,rem:2,cm:3,"in":4,"%":4},o=n.value.toFixed((t=n.unit)in e?e[t]:1);return-1!==o.indexOf(".")&&(o=o.replace(/\.?0*$/,"")),o+n.unit}(n))})})},coupledFieldBehaviours:ba([Ch.config({disabled:o.disabled,onDisabled:function(n){fk.getField1(n).bind(vy.getField).each(Ch.disable),fk.getField2(n).bind(vy.getField).each(Ch.disable),fk.getLock(n).each(Ch.disable)},onEnabled:function(n){fk.getField1(n).bind(vy.getField).each(Ch.enable),fk.getField2(n).bind(vy.getField).each(Ch.enable),fk.getLock(n).each(Ch.enable)}}),Kd("size-input-events2",[lo(i,function(n,t){var e=t.event().isField1(),o=e?fk.getField1(n):fk.getField2(n),r=e?fk.getField2(n):fk.getField1(n),i=o.map(Zf.getValue).getOr(""),u=r.map(Zf.getValue).getOr("");a=ZC(i,u)})])])})}function tk(r,c){function n(n,t,e,o){return vm(GC({name:n,text:n,disabled:e,primary:o,icon:on.none(),borderless:!1},t,c))}function t(n,t,e,o){return vm(UC({name:n,icon:on.some(n),tooltip:on.some(t),disabled:o,primary:!1,borderless:!1},e,c))}function u(n,e){n.map(function(n){var t=n.get(e);t.hasConfigured(Ch)&&Ch.disable(t)})}function a(n,e){n.map(function(n){var t=n.get(e);t.hasConfigured(Ch)&&Ch.enable(t)})}function i(n,t,e){ro(n,t,e)}function e(n){return oo(n,pk.disable())}function o(n){return oo(n,pk.enable())}function s(n,t){e(n),i(n,lk.transform(),{transform:t}),o(n)}function f(n){return function(){Q.getOpt(n).each(function(n){mg.set(n,[J])})}}function l(n,t){e(n),i(n,lk.transformApply(),{transform:t,swap:f(n)}),o(n)}function d(){return n("Back",function(n){return i(n,lk.back(),{swap:f(n)})},!1,!1)}function m(){return vm({dom:{tag:"div",classes:["tox-spacer"]},behaviours:ba([Ch.config({})])})}function g(){return n("Apply",function(n){return i(n,lk.apply(),{swap:f(n)})},!0,!0)}function p(){return function(n){var t=r.getRect();return function(n,t,e,o,r){return xC(n,t,e,o,r)}(n,t.x,t.y,t.w,t.h)}}function h(t,e){return function(n){return t(n,e)}}function v(n,t){!function(n,t){e(n),i(n,lk.tempTransform(),{transform:t}),o(n)}(n,t)}function b(n,t,e,o,r){var i=cS.parts().label({dom:{tag:"label",classes:["tox-label"],innerHtml:c.translate(n)}}),u=cS.parts().spectrum({dom:{tag:"div",classes:["tox-slider__rail"],attributes:{role:"presentation"}}}),a=cS.parts().thumb({dom:{tag:"div",classes:["tox-slider__handle"],attributes:{role:"presentation"}}});return vm(cS.sketch({dom:{tag:"div",classes:["tox-slider"],attributes:{role:"presentation"}},model:{mode:"x",minX:e,maxX:r,getInitialValue:nn({x:nn(o)})},components:[i,u,a],sliderBehaviours:ba([vg.config({})]),onChoose:t}))}function y(n,t,e,o,r){return[d(),function(n,r,t,e,o){return b(n,function(n,t,e){var o=h(r,e.x()/100);s(n,o)},t,e,o)}(n,t,e,o,r),g()]}function x(n,t,e,o,r){var i=y(n,t,e,o,r);return Wb.sketch({dom:k,components:i.map(function(n){return n.asSpec()}),containerBehaviours:ba([Kd("image-tools-filter-panel-buttons-events",[lo(pk.disable(),function(n,t){u(i,n)}),lo(pk.enable(),function(n,t){a(i,n)})])])})}function w(t,e,o){return function(n){return function(n,t,e,o){return lC(n,t,e,o)}(n,t,e,o)}}function S(n){return b(n,function(a,n,t){var e=j.getOpt(a),o=W.getOpt(a),r=U.getOpt(a);e.each(function(u){o.each(function(i){r.each(function(n){var t=Zf.getValue(u).x()/100,e=Zf.getValue(n).x()/100,o=Zf.getValue(i).x()/100,r=w(t,e,o);s(a,r)})})})},0,100,200)}function C(t,e,o){return function(n){i(n,lk.swap(),{transform:e,swap:function(){Q.getOpt(n).each(function(n){mg.set(n,[t]),o(n)})}})}}var k={tag:"div",classes:["tox-image-tools__toolbar","tox-image-tools-edit-panel"]},O=Z,E=[d(),m(),n("Apply",function(n){var t=p();l(n,t),r.hideCrop()},!1,!0)],T=Wb.sketch({dom:k,components:E.map(function(n){return n.asSpec()}),containerBehaviours:ba([Kd("image-tools-crop-buttons-events",[lo(pk.disable(),function(n,t){u(E,n)}),lo(pk.enable(),function(n,t){a(E,n)})])])}),B=vm(nk({name:"size",label:on.none(),constrain:!0,disabled:!1},c)),D=[d(),m(),B,m(),n("Apply",function(o){B.getOpt(o).each(function(n){var t=Zf.getValue(n),e=function(t,e){return function(n){return TC(n,t,e)}}(parseInt(t.width,10),parseInt(t.height,10));l(o,e)})},!1,!0)],A=Wb.sketch({dom:k,components:D.map(function(n){return n.asSpec()}),containerBehaviours:ba([Kd("image-tools-resize-buttons-events",[lo(pk.disable(),function(n,t){u(D,n)}),lo(pk.enable(),function(n,t){a(D,n)})])])}),_=h(EC,"h"),M=h(EC,"v"),F=h(BC,-90),I=h(BC,90),R=[d(),m(),t("flip-horizontally","Flip horizontally",function(n){v(n,_)},!1),t("flip-vertically","Flip vertically",function(n){v(n,M)},!1),t("rotate-left","Rotate counterclockwise",function(n){v(n,F)},!1),t("rotate-right","Rotate clockwise",function(n){v(n,I)},!1),m(),g()],V=Wb.sketch({dom:k,components:R.map(function(n){return n.asSpec()}),containerBehaviours:ba([Kd("image-tools-fliprotate-buttons-events",[lo(pk.disable(),function(n,t){u(R,n)}),lo(pk.enable(),function(n,t){a(R,n)})])])}),N=[d(),m(),g()],H=Wb.sketch({dom:k,components:N.map(function(n){return n.asSpec()})}),P=x("Brightness",kC,-100,0,100),z=x("Contrast",OC,-100,0,100),L=x("Gamma",CC,-100,0,100),j=S("R"),U=S("G"),W=S("B"),G=[d(),j,U,W,g()],X=Wb.sketch({dom:k,components:G.map(function(n){return n.asSpec()})}),Y=on.some(SC),q=on.some(wC),K=[t("crop","Crop",C(T,on.none(),function(n){r.showCrop()}),!1),t("resize","Resize",C(A,on.none(),function(n){B.getOpt(n).each(function(n){var t=r.getMeasurements(),e=t.width,o=t.height;Zf.setValue(n,{width:e,height:o})})}),!1),t("orientation","Orientation",C(V,on.none(),O),!1),t("brightness","Brightness",C(P,on.none(),O),!1),t("sharpen","Sharpen",C(H,Y,O),!1),t("contrast","Contrast",C(z,on.none(),O),!1),t("color-levels","Color levels",C(X,on.none(),O),!1),t("gamma","Gamma",C(L,on.none(),O),!1),t("invert","Invert",C(H,q,O),!1)],J=Wb.sketch({dom:k,components:K.map(function(n){return n.asSpec()})}),$=Wb.sketch({dom:{tag:"div"},components:[J],containerBehaviours:ba([mg.config({})])}),Q=vm($);return{memContainer:Q,getApplyButton:function(n){return Q.getOpt(n).map(function(n){var t=n.components()[0];return t.components()[t.components().length-1]})}}}var ek=Xo("toolbar.button.execute"),ok={"alloy.execute":["disabling","alloy.base.behaviour","toggling","toolbar-button-events"]},rk=Xo("update-menu-text"),ik=Xo("update-menu-icon"),uk={type:"separator"},ak=function(n,r){var t=RC(cn(n)?n.split(" "):n,r);return k(t,function(n,t){var e=function(n){if(IC(n))return n;var t=Nn(n,"value").getOrThunk(function(){return Xo("generated-menu-item")});return Dn({value:t},n)}(t),o=VC(e,r);return{menus:Dn(n.menus,o.menus),items:[o.item].concat(n.items),expansions:Dn(n.expansions,o.expansions)}},{menus:{},expansions:{},items:[]})},ck=nn([St("field1Name","field1"),St("field2Name","field2"),Ju("onLockedChange"),Xu(["lockClass"]),St("locked",!1),nl("coupledFieldBehaviours",[Zl,Zf])]),sk=nn([KC("field1","field2"),KC("field2","field1"),xl({factory:Gg,schema:[ct("dom")],name:"lock",overrides:function(n){return{buttonBehaviours:ba([Cg.config({selected:n.locked,toggleClass:n.markers.lockClass,aria:{mode:"pressed"}})])}}})]),fk=Al({name:"FormCoupledInputs",configFields:ck(),partFields:sk(),factory:function(o,n,t,e){return{uid:o.uid,dom:o.dom,components:n,behaviours:tl(o.coupledFieldBehaviours,[Zl.config({find:on.some}),Zf.config({store:{mode:"manual",getValue:function(n){var t,e=Zs(n,o,["field1","field2"]);return(t={})[o.field1Name]=Zf.getValue(e.field1()),t[o.field2Name]=Zf.getValue(e.field2()),t},setValue:function(n,t){var e=Zs(n,o,["field1","field2"]);$(t,o.field1Name)&&Zf.setValue(e.field1(),t[o.field1Name]),$(t,o.field2Name)&&Zf.setValue(e.field2(),t[o.field2Name])}}})]),apis:{getField1:function(n){return qs(n,o,"field1")},getField2:function(n){return qs(n,o,"field2")},getLock:function(n){return qs(n,o,"lock")}}}},apis:{getField1:function(n,t){return n.getField1(t)},getField2:function(n,t){return n.getField2(t)},getLock:function(n,t){return n.getLock(t)}}}),lk={undo:nn(Xo("undo")),redo:nn(Xo("redo")),zoom:nn(Xo("zoom")),back:nn(Xo("back")),apply:nn(Xo("apply")),swap:nn(Xo("swap")),transform:nn(Xo("transform")),tempTransform:nn(Xo("temp-transform")),transformApply:nn(Xo("transform-apply"))},dk=nn("save-state"),mk=nn("disable"),gk=nn("enable"),pk={formActionEvent:sy,saveState:dk,disable:mk,enable:gk},hk=tinymce.util.Tools.resolve("tinymce.dom.DomQuery"),vk=tinymce.util.Tools.resolve("tinymce.geom.Rect"),bk=tinymce.util.Tools.resolve("tinymce.util.Observable"),yk=tinymce.util.Tools.resolve("tinymce.util.Tools"),xk=tinymce.util.Tools.resolve("tinymce.util.VK");function wk(n){var t,e;if(n.changedTouches)for(t="screenX screenY pageX pageY clientX clientY".split(" "),e=0;e<t.length;e++)n[t[e]]=n.changedTouches[0][t[e]]}function Sk(n,r){var i,u,t,a,c,f,l,d=r.document||v.document;r=r||{};var m=d.getElementById(r.handle||n);t=function(n){var t,e,o=function s(n){var t,e,o,r,i,u,a,c=Math.max;return t=n.documentElement,e=n.body,o=c(t.scrollWidth,e.scrollWidth),r=c(t.clientWidth,e.clientWidth),i=c(t.offsetWidth,e.offsetWidth),u=c(t.scrollHeight,e.scrollHeight),a=c(t.clientHeight,e.clientHeight),{width:o<i?r:o,height:u<c(t.offsetHeight,e.offsetHeight)?a:u}}(d);wk(n),n.preventDefault(),u=n.button,t=m,f=n.screenX,l=n.screenY,e=v.window.getComputedStyle?v.window.getComputedStyle(t,null).getPropertyValue("cursor"):t.runtimeStyle.cursor,i=hk("<div></div>").css({position:"absolute",top:0,left:0,width:o.width,height:o.height,zIndex:2147483647,opacity:1e-4,cursor:e}).appendTo(d.body),hk(d).on("mousemove touchmove",c).on("mouseup touchend",a),r.start(n)},c=function(n){if(wk(n),n.button!==u)return a(n);n.deltaX=n.screenX-f,n.deltaY=n.screenY-l,n.preventDefault(),r.drag(n)},a=function(n){wk(n),hk(d).off("mousemove touchmove",c).off("mouseup touchend",a),i.remove(),r.stop&&r.stop(n)},this.destroy=function(){hk(m).off()},hk(m).on("mousedown touchstart",t)}function Ck(t){function u(n,s){c.getOpt(n).each(function(n){var e=l.get(),o=mu(n.element()),r=su(n.element()),i=s.dom().naturalWidth*e,u=s.dom().naturalHeight*e,a=Math.max(0,o/2-i/2),c=Math.max(0,r/2-u/2),t={left:a.toString()+"px",top:c.toString()+"px",width:i.toString()+"px",height:u.toString()+"px",position:"absolute"};xr(s,t),f.getOpt(n).each(function(n){xr(n.element(),t)}),d.get().each(function(n){var t=m.get();n.setRect({x:t.x*e+a,y:t.y*e+c,w:t.w*e,h:t.h*e}),n.setClampRect({x:a,y:c,w:i,h:u}),n.setViewPortRect({x:0,y:0,w:o,h:r})})})}function e(n,t){var i=we.fromTag("img");return Po(i,"src",t),function(e){return new Np(function(n){var t=function(){e.removeEventListener("load",t),n(e)};e.complete?n(e):e.addEventListener("load",t)})}(i.dom()).then(function(){return c.getOpt(n).map(function(n){var t=ru({element:i});mg.replaceAt(n,1,on.some(t));var e=a.get(),o={x:0,y:0,w:i.dom().naturalWidth,h:i.dom().naturalHeight};a.set(o);var r=vk.inflate(o,-20,-20);return m.set(r),e.w===o.w&&e.h===o.h||function(n,u){c.getOpt(n).each(function(n){var t=mu(n.element()),e=su(n.element()),o=u.dom().naturalWidth,r=u.dom().naturalHeight,i=Math.min(t/o,e/r);1<=i?l.set(1):l.set(i)})}(n,i),u(n,i),i})})}var f=vm({dom:{tag:"div",classes:["tox-image-tools__image-bg"],attributes:{role:"presentation"}}}),l=ye(1),d=ye(on.none()),m=ye({x:0,y:0,w:1,h:1}),a=ye({x:0,y:0,w:1,h:1}),n=Wb.sketch({dom:{tag:"div",classes:["tox-image-tools__image"]},components:[f.asSpec(),{dom:{tag:"img",attributes:{src:t}}},{dom:{tag:"div"},behaviours:ba([Kd("image-panel-crop-events",[Ii(function(n){c.getOpt(n).each(function(n){var t=n.element().dom(),e=Tk({x:10,y:10,w:100,h:100},{x:0,y:0,w:200,h:200},{x:0,y:0,w:200,h:200},t,function(){});e.toggleVisibility(!1),e.on("updateRect",function(n){var t=n.rect,e=l.get(),o={x:Math.round(t.x/e),y:Math.round(t.y/e),w:Math.round(t.w/e),h:Math.round(t.h/e)};m.set(o)}),d.set(on.some(e))})})])])}],containerBehaviours:ba([mg.config({}),Kd("image-panel-events",[Ii(function(n){e(n,t)})])])}),c=vm(n);return{memContainer:c,updateSrc:e,zoom:function(n,t){var e=l.get(),o=0<t?Math.min(2,e+.1):Math.max(.1,e-.1);l.set(o),c.getOpt(n).each(function(n){var t=n.components()[1].element();u(n,t)})},showCrop:function(){d.get().each(function(n){n.toggleVisibility(!0)})},hideCrop:function(){d.get().each(function(n){n.toggleVisibility(!1)})},getRect:function(){return m.get()},getMeasurements:function(){var n=a.get();return{width:n.w,height:n.h}}}}function kk(n,t,e,o,r){return UC({name:n,icon:on.some(t),disabled:e,tooltip:on.some(n),primary:!1,borderless:!1},o,r)}function Ok(n,t){t?Ch.enable(n):Ch.disable(n)}var Ek=0,Tk=function(s,e,f,o,r){var l,t,i,u="tox-",a="tox-crid-"+Ek++,c=[{name:"move",xMul:0,yMul:0,deltaX:1,deltaY:1,deltaW:0,deltaH:0,label:"Crop Mask"},{name:"nw",xMul:0,yMul:0,deltaX:1,deltaY:1,deltaW:-1,deltaH:-1,label:"Top Left Crop Handle"},{name:"ne",xMul:1,yMul:0,deltaX:0,deltaY:1,deltaW:1,deltaH:-1,label:"Top Right Crop Handle"},{name:"sw",xMul:0,yMul:1,deltaX:1,deltaY:0,deltaW:-1,deltaH:1,label:"Bottom Left Crop Handle"},{name:"se",xMul:1,yMul:1,deltaX:0,deltaY:0,deltaW:1,deltaH:1,label:"Bottom Right Crop Handle"}];i=["top","right","bottom","left"];var d=function(n,t){return{x:t.x+n.x,y:t.y+n.y,w:t.w,h:t.h}},m=function(n,t){return{x:t.x-n.x,y:t.y-n.y,w:t.w,h:t.h}};function g(n,t,e,o){var r,i,u,a,c;r=t.x,i=t.y,u=t.w,a=t.h,r+=e*n.deltaX,i+=o*n.deltaY,(u+=e*n.deltaW)<20&&(u=20),(a+=o*n.deltaH)<20&&(a=20),c=s=vk.clamp({x:r,y:i,w:u,h:a},f,"move"===n.name),c=m(f,c),l.fire("updateRect",{rect:c}),v(c)}function p(t){function n(n,t){t.h<0&&(t.h=0),t.w<0&&(t.w=0),hk("#"+a+"-"+n,o).css({left:t.x,top:t.y,width:t.w,height:t.h})}yk.each(c,function(n){hk("#"+a+"-"+n.name,o).css({left:t.w*n.xMul+t.x,top:t.h*n.yMul+t.y})}),n("top",{x:e.x,y:e.y,w:e.w,h:t.y-e.y}),n("right",{x:t.x+t.w,y:t.y,w:e.w-t.x-t.w+e.x,h:t.h}),n("bottom",{x:e.x,y:t.y+t.h,w:e.w,h:e.h-t.y-t.h+e.y}),n("left",{x:e.x,y:t.y,w:t.x-e.x,h:t.h}),n("move",t)}function h(n){p(s=n)}function v(n){h(d(f,n))}return function b(){hk('<div id="'+a+'" class="'+u+'croprect-container" role="grid" aria-dropeffect="execute">').appendTo(o),yk.each(i,function(n){hk("#"+a,o).append('<div id="'+a+"-"+n+'"class="'+u+'croprect-block" style="display: none" data-mce-bogus="all">')}),yk.each(c,function(n){hk("#"+a,o).append('<div id="'+a+"-"+n.name+'" class="'+u+"croprect-handle "+u+"croprect-handle-"+n.name+'"style="display: none" data-mce-bogus="all" role="gridcell" tabindex="-1" aria-label="'+n.label+'" aria-grabbed="false" title="'+n.label+'">')}),t=yk.map(c,function n(t){var e;return new Sk(a,{document:o.ownerDocument,handle:a+"-"+t.name,start:function(){e=s},drag:function(n){g(t,e,n.deltaX,n.deltaY)}})}),p(s),hk(o).on("focusin focusout",function(n){hk(n.target).attr("aria-grabbed","focus"===n.type?"true":"false")}),hk(o).on("keydown",function(t){var i;function n(n,t,e,o,r){n.stopPropagation(),n.preventDefault(),g(i,e,o,r)}switch(yk.each(c,function(n){if(t.target.id===a+"-"+n.name)return i=n,!1}),t.keyCode){case xk.LEFT:n(t,0,s,-10,0);break;case xk.RIGHT:n(t,0,s,10,0);break;case xk.UP:n(t,0,s,0,-10);break;case xk.DOWN:n(t,0,s,0,10);break;case xk.ENTER:case xk.SPACEBAR:t.preventDefault(),r()}})}(),l=yk.extend({toggleVisibility:function y(n){var t;t=yk.map(c,function(n){return"#"+a+"-"+n.name}).concat(yk.map(i,function(n){return"#"+a+"-"+n})).join(","),n?hk(t,o).show():hk(t,o).hide()},setClampRect:function x(n){f=n,p(s)},setRect:h,getInnerRect:function(){return m(f,s)},setInnerRect:v,setViewPortRect:function w(n){e=n,p(s)},destroy:function n(){yk.each(t,function(n){n.destroy()}),t=[]}},bk)};function Bk(n){var t=ye(n),e=ye(on.none()),o=function s(){var e=[],o=-1;function n(){return 0<o}function t(){return-1!==o&&o<e.length-1}return{data:e,add:function r(n){var t;return t=e.splice(++o),e.push(n),{state:n,removed:t}},undo:function i(){if(n())return e[--o]},redo:function u(){if(t())return e[++o]},canUndo:n,canRedo:t}}();function r(n){t.set(n)}function i(n){v.URL.revokeObjectURL(n.url)}function u(n){var t=a(n);return r(t),function(n){yk.each(n,i)}(o.add(t).removed),t.url}o.add(n);var a=function(n){return{blob:n,url:v.URL.createObjectURL(n)}},c=function(){e.get().each(i),e.set(on.none())};return{getBlobState:function(){return t.get()},setBlobState:r,addBlobState:u,getTempState:function(){return e.get().fold(function(){return t.get()},function(n){return n})},updateTempState:function(n){var t=a(n);return c(),e.set(on.some(t)),t.url},addTempState:function(n){var t=a(n);return e.set(on.some(t)),t.url},applyTempState:function(t){return e.get().fold(function(){},function(n){u(n.blob),t()})},destroyTempState:c,undo:function(){var n=o.undo();return r(n),n.url},redo:function(){var n=o.redo();return r(n),n.url},getHistoryStates:function(){return{undoEnabled:o.canUndo(),redoEnabled:o.canRedo()}}}}function Dk(n,t){function i(n){var t=s.getHistoryStates();m.updateButtonUndoStates(n,t.undoEnabled,t.redoEnabled),ro(n,pk.formActionEvent,{name:pk.saveState(),value:t.undoEnabled})}function u(n){return n.toBlob()}function a(n){ro(n,pk.formActionEvent,{name:pk.disable(),value:{}})}function r(t,n,e,o,r){return a(t),function(n){return oC(n)}(n).then(e).then(u).then(o).then(function(n){return l(t,n).then(function(n){return i(t),r(),f(t),n})})["catch"](function(n){return v.console.log(n),f(t),n})}function c(n,t,e){var o=s.getBlobState().blob;r(n,o,t,function(n){return s.updateTempState(n)},e)}var s=Bk(n.currentState),f=function(n){e.getApplyButton(n).each(function(n){Ch.enable(n)}),ro(n,pk.formActionEvent,{name:pk.enable(),value:{}})},l=function(n,t){return a(n),o.updateSrc(n,t)},d=function(n){var t=s.getBlobState().url;return s.destroyTempState(),i(n),t},o=Ck(n.currentState.url),m=function(n){var o=vm(kk("Undo","undo",!0,function(n){ro(n,lk.undo(),{direction:1})},n)),r=vm(kk("Redo","redo",!0,function(n){ro(n,lk.redo(),{direction:1})},n));return{container:Wb.sketch({dom:{tag:"div",classes:["tox-image-tools__toolbar","tox-image-tools__sidebar"]},components:[o.asSpec(),r.asSpec(),kk("Zoom in","zoom-in",!1,function(n){ro(n,lk.zoom(),{direction:1})},n),kk("Zoom out","zoom-out",!1,function(n){ro(n,lk.zoom(),{direction:-1})},n)]}),updateButtonUndoStates:function(n,t,e){o.getOpt(n).each(function(n){Ok(n,t)}),r.getOpt(n).each(function(n){Ok(n,e)})}}}(t),e=tk(o,t);return{dom:{tag:"div",attributes:{role:"presentation"}},components:[e.memContainer.asSpec(),o.memContainer.asSpec(),m.container],behaviours:ba([Zf.config({store:{mode:"manual",getValue:function(){return s.getBlobState()}}}),Kd("image-tools-events",[lo(lk.undo(),function(t,n){var e=s.undo();l(t,e).then(function(n){f(t),i(t)})}),lo(lk.redo(),function(t,n){var e=s.redo();l(t,e).then(function(n){f(t),i(t)})}),lo(lk.zoom(),function(n,t){var e=t.event().direction();o.zoom(n,e)}),lo(lk.back(),function(n,t){!function(t){var n=d(t);l(t,n).then(function(n){f(t)})}(n),t.event().swap()(),o.hideCrop()}),lo(lk.apply(),function(n,t){s.applyTempState(function(){d(n),t.event().swap()()})}),lo(lk.transform(),function(n,t){return c(n,t.event().transform(),Z)}),lo(lk.tempTransform(),function(n,t){return function(n,t){var e=s.getTempState().blob;r(n,e,t,function(n){return s.addTempState(n)},Z)}(n,t.event().transform())}),lo(lk.transformApply(),function(n,t){return function(e,n,t){var o=s.getBlobState().blob;r(e,o,n,function(n){var t=s.addBlobState(n);return d(e),t},t)}(n,t.event().transform(),t.event().swap())}),lo(lk.swap(),function(t,n){!function(n){m.updateButtonUndoStates(n,!1,!1)}(t);var e=n.event().transform(),o=n.event().swap();e.fold(function(){o()},function(n){c(t,n,o)})})]),xS()])}}function Ak(e,t){var n=e.label.map(function(n){return Dy(n,t)}),o=[Ch.config({disabled:e.disabled}),lg.config({mode:"execution",useEnter:!0!==e.multiline,useControlEnter:!0===e.multiline,execute:function(n){return oo(n,fy),on.some(!0)}}),Kd("textfield-change",[lo(ei(),function(n,t){ro(n,uy,{name:e.name})}),lo(fi(),function(n,t){ro(n,uy,{name:e.name})})]),Gy.config({})],r=e.validation.map(function(o){return jy.config({getRoot:function(n){return Eo(n.element())},invalidClass:"tox-invalid",validator:{validate:function(n){var t=Zf.getValue(n),e=o.validator(t);return Ny(!0===e?an.value(t):an.error(e))},validateOnLoad:o.validateOnLoad}})}).toArray(),i=e.placeholder.fold(nn({}),function(n){return{placeholder:t.translate(n)}}),u=e.inputMode.fold(nn({}),function(n){return{inputmode:n}}),a=N(N({},i),u),c=vy.parts().field({tag:!0===e.multiline?"textarea":"input",inputAttributes:a,inputClasses:[e.classname],inputBehaviours:ba(H([o,r])),selectOnFocus:!1,factory:yy}),s=(e.flex?["tox-form__group--stretched"]:[]).concat(e.maximized?["tox-form-group--maximize"]:[]),f=[Ch.config({disabled:e.disabled,onDisabled:function(n){vy.getField(n).each(Ch.disable)},onEnabled:function(n){vy.getField(n).each(Ch.enable)}})];return By(n,c,s,f)}function _k(n){var t=ye(null);return nu({readState:function(){return{timer:null!==t.get()?"set":"unset"}},setTimer:function(n){t.set(n)},cancel:function(){var n=t.get();null!==n&&n.cancel()}})}function Mk(n,t,e){var o=Zf.getValue(e);Zf.setValue(t,o),CE(t)}function Fk(n,t){var e=n.element(),o=Er(e),r=e.dom();"number"!==zo(e,"type")&&t(r,o)}function Ik(n,t,e){if(n.selectsOver){var o=Zf.getValue(t),r=n.getDisplayText(o),i=Zf.getValue(e);return 0===n.getDisplayText(i).indexOf(r)?on.some(function(){Mk(0,t,e),function(n,e){Fk(n,function(n,t){return n.setSelectionRange(e,t.length)})}(t,r.length)}):on.none()}return on.none()}function Rk(n){return BE(Vy(n))}function Vk(n){return{type:"menuitem",value:n.url,text:n.title,meta:{attach:n.attach},onAction:function(){}}}function Nk(n,t){return{type:"menuitem",value:t,text:n,meta:{attach:undefined},onAction:function(){}}}function Hk(n,t){return function(n){return S(n,Vk)}(function(t,n){return C(n,function(n){return n.type===t})}(n,t))}function Pk(n,t){var e=n.toLowerCase();return C(t,function(n){var t=n.meta!==undefined&&n.meta.text!==undefined?n.meta.text:n.text;return Vt(t.toLowerCase(),e)||Vt(n.value.toLowerCase(),e)})}function zk(e,n,o){var t=Zf.getValue(n),r=t.meta.text!==undefined?t.meta.text:t.value;return o.getLinkInformation().fold(function(){return[]},function(n){var t=Pk(r,function(n){return S(n,function(n){return Nk(n,n)})}(o.getHistory(e)));return"file"===e?function(n){return O(n,function(n,t){return 0===n.length||0===t.length?n.concat(t):n.concat(AE,t)},[])}([t,Pk(r,function(n){return Hk("header",n.targets)}(n)),Pk(r,H([function(n){return on.from(n.anchorTop).map(function(n){return Nk("<top>",n)}).toArray()}(n),function(n){return Hk("anchor",n.targets)}(n),function(n){return on.from(n.anchorBottom).map(function(n){return Nk("<bottom>",n)}).toArray()}(n)]))]):t})}function Lk(r,o,i){function u(n){var t=Zf.getValue(n);i.addToHistory(t.value,r.filetype)}var n,t,e,a,c,s=o.shared.providers,f=vy.parts().field({factory:TE,dismissOnBlur:!0,inputClasses:["tox-textfield"],sandboxClasses:["tox-dialog__popups"],inputAttributes:{"aria-errormessage":_E,type:"url"},minChars:0,responseTime:0,fetch:function(n){var t=zk(r.filetype,n,i),e=NC(t,Fh.BUBBLE_TO_SANDBOX,o,!1);return Ny(e)},getHotspot:function(n){return h.getOpt(n)},onSetValue:function(n,t){n.hasConfigured(jy)&&jy.run(n).get(Z)},typeaheadBehaviours:ba(H([i.getValidationHandler().map(function(e){return jy.config({getRoot:function(n){return Eo(n.element())},invalidClass:"tox-control-wrap--status-invalid",notify:{onInvalid:function(n,t){d.getOpt(n).each(function(n){Po(n.element(),"title",s.translate(t))})}},validator:{validate:function(n){var t=Zf.getValue(n);return DE(function(o){e({type:r.filetype,url:t.value},function(n){if("invalid"===n.status){var t=an.error(n.message);o(t)}else{var e=an.value(n.message);o(e)}})})},validateOnLoad:!1}})}).toArray(),[Ch.config({disabled:r.disabled}),Gy.config({}),Kd("urlinput-events",H(["file"===r.filetype?[lo(ei(),function(n){ro(n,uy,{name:r.name})})]:[],[lo(oi(),function(n){ro(n,uy,{name:r.name}),u(n)}),lo(fi(),function(n){ro(n,uy,{name:r.name}),u(n)})]]))]])),eventOrder:(n={},n[ei()]=["streaming","urlinput-events","invalidating"],n),model:{getDisplayText:function(n){return n.value},selectsOver:!1,populateFromBrowse:!1},markers:{openClass:"tox-textfield--popup-open"},lazySink:o.shared.getSink,parts:{menu:Sv(0,0,"normal")},onExecute:function(n,t,e){ro(t,fy,{})},onItemExecute:function(n,t,e,o){u(n),ro(n,uy,{name:r.name})}}),l=r.label.map(function(n){return Dy(n,s)}),d=vm((t="invalid",e=on.some(_E),void 0===(a="warning")&&(a=t),void 0===c&&(c=t),{dom:{tag:"div",classes:["tox-icon","tox-control-wrap__status-icon-"+t],innerHtml:ym(a,s.icons),attributes:N({title:s.translate(c),"aria-live":"polite"},e.fold(function(){return{}},function(n){return{id:n}}))}})),m=vm({dom:{tag:"div",classes:["tox-control-wrap__status-icon-wrap"]},components:[d.asSpec()]}),g=i.getUrlPicker(r.filetype),p=Xo("browser.url.event"),h=vm({dom:{tag:"div",classes:["tox-control-wrap"]},components:[f,m.asSpec()],behaviours:ba([Ch.config({disabled:r.disabled})])}),v=vm(GC({name:r.name,icon:on.some("browse"),text:r.label.getOr(""),disabled:r.disabled,primary:!1,borderless:!0},function(n){return oo(n,p)},s,[],["tox-browse-url"]));return vy.sketch({dom:Yy([]),components:l.toArray().concat([{dom:{tag:"div",classes:["tox-form__controls-h-stack"]},components:H([[h.asSpec()],g.map(function(){return v.asSpec()}).toArray()])}]),fieldBehaviours:ba([Ch.config({disabled:r.disabled,onDisabled:function(n){vy.getField(n).each(Ch.disable),v.getOpt(n).each(Ch.disable)},onEnabled:function(n){vy.getField(n).each(Ch.enable),v.getOpt(n).each(Ch.enable)}}),Kd("url-input-events",[lo(p,function(o){Zl.getCurrent(o).each(function(t){var e=Zf.getValue(t);g.each(function(n){n(e).get(function(n){Zf.setValue(t,n),ro(o,uy,{name:r.name})})})})})])])})}function jk(u,t){function n(o){return function(t,e){Ou(e.event().target(),"[data-collection-item-value]").each(function(n){o(t,e,n,zo(n,"data-collection-item-value"))})}}var e=u.label.map(function(n){return Dy(n,t)}),o=n(function(n,t,e,o){t.stop(),ro(n,sy,{name:u.name,value:o})}),r=[lo($r(),n(function(n,t,e){wa(e)})),lo(ri(),o),lo(gi(),o),lo(Qr(),n(function(n,t,e){ku(n.element(),"."+mh).each(function(n){dr(n,mh)}),fr(e,mh)})),lo(Zr(),n(function(n){ku(n.element(),"."+mh).each(function(n){dr(n,mh)})})),Ni(n(function(n,t,e,o){ro(n,sy,{name:u.name,value:o})}))],i=vy.parts().field({dom:{tag:"div",classes:["tox-collection"].concat(1!==u.columns?["tox-collection--grid"]:["tox-collection--list"])},components:[],factory:{sketch:l},behaviours:ba([mg.config({}),Zf.config({store:{mode:"memory",initialValue:[]},onSetValue:function(o,n){!function(n,t){var e=S(t,function(n){var t=rh.translate(n.text),e=1===u.columns?'<div class="tox-collection__item-label">'+t+"</div>":"",o='<div class="tox-collection__item-icon">'+n.icon+"</div>",r={_:" "," - ":" ","-":" "},i=t.replace(/\_| \- |\-/g,function(n){return r[n]});return'<div class="tox-collection__item" tabindex="-1" data-collection-item-value="'+function(n){return'"'===n?"&quot;":n}(n.value)+'" title="'+i+'" aria-label="'+i+'">'+o+e+"</div>"}),o=1<u.columns&&"auto"!==u.columns?w(e,u.columns):[e],r=S(o,function(n){return'<div class="tox-collection__group">'+n.join("")+"</div>"});No(n.element(),r.join(""))}(o,n),"auto"===u.columns&&ip(o,5,"tox-collection__item").each(function(n){var t=n.numRows,e=n.numColumns;lg.setGridSize(o,t,e)}),oo(o,gy)}}),Gy.config({}),lg.config(function(n,t){return 1===n?{mode:"menu",moveOnTab:!1,selector:".tox-collection__item"}:"auto"===n?{mode:"flatgrid",selector:".tox-collection__item",initSize:{numColumns:1,numRows:1}}:{mode:"matrix",selectors:{row:"color"===t?".tox-swatches__row":".tox-collection__group",cell:"color"===t?"."+ah:"."+uh}}}(u.columns,"normal")),Kd("collection-events",r)])});return By(e,i,["tox-form__group--collection"],[])}function Uk(r){return function(t,e,o){return Nn(e,"name").fold(function(){return r(e,o)},function(n){return t.field(n,r(e,o))})}}function Wk(t,n,e){var o=Dn(e,{shared:{interpreter:function(n){return IE(t,n,o)}}});return IE(t,n,o)}function Gk(n){return{colorPicker:function(e){return function(n,t){Uv.colorPickerDialog(e)(n,t)}}(n),hasCustomColors:function(n){return function(){return Fv(n)}}(n),getColors:function(n){return function(){return Iv(n)}}(n),getColorCols:function(n){return function(){return Uv.getColorCols(n)}}(n)}}function Xk(e){return function(n){return on.from(n.getParam("style_formats")).filter(fn)}(e).map(function(n){var t=function(t,n){function e(n){bn(n,function(n){t.formatter.has(n.name)||t.formatter.register(n.name,n.format)})}var o=PE(n);return t.formatter?e(o.customFormats):t.on("init",function(){e(o.customFormats)}),o.formats}(e,n);return function(n){return n.getParam("style_formats_merge",!1,"boolean")}(e)?HE.concat(t):t}).getOr(HE)}function Yk(n,t,e){var o={type:"formatter",isSelected:t(n.format),getStylePreview:e(n.format)};return Dn(n,o)}function qk(r,n,i,u){var o=function(n){return S(n,function(n){var t=wn(n);if($(n,"items")){var e=o(n.items);return Dn(function(n){var t={type:"submenu",isSelected:nn(!1),getStylePreview:function(){return on.none()}};return Dn(n,t)}(n),{getStyleItems:function(){return e}})}return $(n,"format")?function(n){return Yk(n,i,u)}(n):1===t.length&&vn(t,"title")?Dn(n,{type:"separator"}):function(n){var t=Xo(n.title),e={type:"formatter",format:t,isSelected:i(t),getStylePreview:u(t)},o=Dn(n,e);return r.formatter.register(t,o),o}(n)})};return o(n)}function Kk(t){return function(n){if(n&&1===n.nodeType){if(n.contentEditable===t)return!0;if(n.getAttribute("data-mce-contenteditable")===t)return!0}return!1}}function Jk(n,t,e,o,r){return{type:n,title:t,url:e,level:o,attach:r}}function $k(n){return n.innerText||n.textContent}function Qk(n){return function(n){return n&&"A"===n.nodeName&&(n.id||n.name)!==undefined}(n)&&UE(n)}function Zk(n){return n&&/^(H[1-6])$/.test(n.nodeName)}function nO(n){return Zk(n)&&UE(n)}function tO(n){var t=function(n){return n.id?n.id:Xo("h")}(n);return Jk("header",$k(n),"#"+t,function(n){return Zk(n)?parseInt(n.nodeName.substr(1),10):0}(n),function(){n.id=t})}function eO(n){var t=n.id||n.name,e=$k(n);return Jk("anchor",e||"#"+t,"#"+t,0,Z)}function oO(n){return function(n,t){return S(zc(we.fromDom(t),n),function(n){return n.dom()})}("h1,h2,h3,h4,h5,h6,a:not([href])",n)}function rO(n){return 0<zE(n.title).length}function iO(n){return cn(n)&&/^https?/.test(n)}function uO(n){return sn(n)&&I(n,function(n){return!function(n){return fn(n)&&n.length<=5&&D(n,iO)}(n)}).isNone()}function aO(){var n,t=v.localStorage.getItem(GE);if(null===t)return{};try{n=JSON.parse(t)}catch(e){if(e instanceof SyntaxError)return v.console.log("Local storage "+GE+" was not valid JSON",e),{};throw e}return uO(n)?n:(v.console.log("Local storage "+GE+" was not valid format",n),{})}function cO(n){var t=aO();return Object.prototype.hasOwnProperty.call(t,n)?t[n]:[]}function sO(t,n){if(iO(t)){var e=aO(),o=Object.prototype.hasOwnProperty.call(e,n)?e[n]:[],r=C(o,function(n){return n!==t});e[n]=[t].concat(r).slice(0,5),function(n){if(!uO(n))throw new Error("Bad format for history:\n"+JSON.stringify(n));v.localStorage.setItem(GE,JSON.stringify(n))}(e)}}function fO(n){return!!n}function lO(n){return P(yk.makeMap(n,/[, ]/),fO)}function dO(n,t,e){var o=function(n,t){return XE.call(n,t)?on.some(n[t]):on.none()}(n,t).getOr(e);return cn(o)?on.some(o):on.none()}function mO(n){return on.some(n.file_picker_callback).filter(dn)}function gO(n,t){var e=function(n){var t=on.some(n.file_picker_types).filter(fO),e=on.some(n.file_browser_callback_types).filter(fO),o=t.or(e).map(lO);return mO(n).fold(function(){return!1},function(n){return o.fold(function(){return!0},function(n){return 0<wn(n).length&&n})})}(n);return ln(e)?e?mO(n):on.none():e[t]?mO(n):on.none()}function pO(t){return{getHistory:cO,addToHistory:sO,getLinkInformation:function(){return function(n){return!1===n.settings.typeahead_urls?on.none():on.some({targets:WE(n.getBody()),anchorTop:dO(n.settings,"anchor_top","#top").getOrUndefined(),anchorBottom:dO(n.settings,"anchor_bottom","#bottom").getOrUndefined()})}(t)},getValidationHandler:function(){return function(n){return on.from(n.settings.file_picker_validator_handler).filter(dn).orThunk(function(){return on.from(n.settings.filepicker_validator_handler).filter(dn)})}(t)},getUrlPicker:function(n){return function(r,i){return gO(r.settings,i).map(function(o){return function(t){return Vy(function(e){var n=yk.extend({filetype:i},on.from(t.meta).getOr({}));o.call(r,function(n,t){if(!cn(n))throw new Error("Expected value to be string");if(t!==undefined&&!sn(t))throw new Error("Expected meta to be a object");e({value:n,meta:t})},t.value,n)})}})}(t,n)}}}function hO(n,t,e,o){var r=ye(!1),i={shared:{providers:{icons:function(){return t.ui.registry.getAll().icons},menuItems:function(){return t.ui.registry.getAll().menuItems},translate:rh.translate},interpreter:function(n){return function(n,t){return IE(FE,n,t)}(n,i)},anchors:NE(t,e,o),getSink:function(){return an.value(n)}},urlinput:pO(t),styleselect:function(e){function o(n){return function(){return e.formatter.match(n)}}function r(t){return function(){var n=e.formatter.get(t);return n!==undefined?on.some({tag:0<n.length&&(n[0].inline||n[0].block)||"div",styleAttr:e.formatter.getCssText(t)}):on.none()}}var i=function(n){var t=n.items;return t!==undefined&&0<t.length?B(t,i):[n.format]},u=ye([]),a=ye([]),c=ye([]),s=ye([]),f=ye(!1);e.on("init",function(){var n=Xk(e),t=qk(e,n,o,r);u.set(t),a.set(B(t,i))}),e.on("addStyleModifications",function(n){var t=qk(e,n.items,o,r);c.set(t),f.set(n.replace),s.set(B(t,i))});return{getData:function(){var n=f.get()?[]:u.get(),t=c.get();return n.concat(t)},getFlattenedKeys:function(){var n=f.get()?[]:a.get(),t=s.get();return n.concat(t)}}}(t),colorinput:Gk(t),dialog:function(n){return{isDraggableModal:function(n){return function(){return function(n){return n.getParam("draggable_modal",!1,"boolean")}(n)}}(n)}}(t),isContextMenuOpen:function(){return r.get()},setContextMenuState:function(n){return r.set(n)}};return i}function vO(n,t,o){var e=function(n,e){return O(n,function(t,n){return e(n,t.len).fold(nn(t),function(n){return{len:n.finish(),list:t.list.concat([n])}})},{len:0,list:[]}).list}(n,function(n,t){var e=o(n);return on.some({element:nn(n),start:nn(t),finish:nn(t+e),width:nn(e)})}),r=C(e,function(n){return n.finish()<=t}),i=k(r,function(n,t){return n+t.width()},0),u=e.slice(r.length);return{within:nn(r),extra:nn(u),withinWidth:nn(i)}}function bO(n){return S(n,function(n){return n.element()})}function yO(n,t,e,o){var r=function(n,t,e){var o=vO(t,n,e);return 0===o.extra().length?on.some(o):on.none()}(n,t,e).getOrThunk(function(){return vO(t,n-e(o),e)}),i=r.within(),u=r.extra(),a=r.withinWidth();return 1===u.length&&u[0].width()<=e(o)?function(n,t,e){var o=bO(n.concat(t));return $E(o,[],e)}(i,u,a):1<=u.length?function(n,t,e,o){var r=bO(n).concat([e]);return $E(r,bO(t),o)}(i,u,o,a):function(n,t,e){return $E(bO(n),[],e)}(i,0,a)}function xO(n,t){var e=S(t,function(n){return au(n)});JE.setGroups(n,e)}function wO(n,t,e,o){var r=Ks(n,t,"primary"),i=qs(n,t,"overflow-button"),u=Jy.getCoupled(n,"overflowGroup");yr(r.element(),"visibility","hidden");var a=function(n,t){return n.bind(function(t){return Ca(t.element()).bind(function(n){return t.getSystem().getByDom(n).toOption()})}).orThunk(function(){return t.filter(vg.isFocused)})}(e,i);e.each(function(n){JE.setGroups(n,[])});var c=t.builtGroups.get();xO(r,c.concat([u]));var s=mu(r.element()),f=yO(s,c,function(n){return mu(n.element())},u);0===f.extra().length?(mg.remove(r,u),e.each(function(n){JE.setGroups(n,[])})):(xO(r,f.within()),e.each(function(n){xO(n,f.extra())})),kr(r.element(),"visibility"),Or(r.element()),e.each(function(t){i.each(function(n){return Cg.set(n,o(t))}),a.each(vg.focus)})}function SO(o,n,t,e,r){var i="alloy.toolbar.toggle";return{uid:o.uid,dom:o.dom,components:n,behaviours:Rs(o.splitToolbarBehaviours,[Jy.config({others:N(N({},r.coupling),{overflowGroup:function(t){return nT.sketch(N(N({},e["overflow-group"]()),{items:[Gg.sketch(N(N({},e["overflow-button"]()),{action:function(n){oo(t,i)}}))]}))}})}),Kd("toolbar-toggle-events",[lo(i,function(n){r.apis.toggle(n)})])]),apis:N({setGroups:function(n,t){!function(n,t){var e=S(t,n.getSystem().build);o.builtGroups.set(e)}(n,t),r.apis.refresh(n)},getMoreButton:function(n){return function(n){return qs(n,o,"overflow-button")}(n)}},r.apis),domModification:{attributes:{role:"group"}}}}function CO(n){return n.getSystem().isConnected()}function kO(n,t,e){var o=t.lazySink(n).getOrDie(),r=t.getAnchor(n),i=t.getOverflowBounds.map(function(n){return n()});Af.positionWithinBounds(o,r,e,i)}function OO(t,e){var n=zf.getState(Jy.getCoupled(t,"sandbox"));wO(t,e,n,CO),n.each(function(n){return kO(t,e,n)})}function EO(t,e){zf.getState(Jy.getCoupled(t,"sandbox")).each(function(n){return kO(t,e,n)})}function TO(t,n){return n.getAnimationRoot.fold(function(){return t.element()},function(n){return n(t)})}function BO(n){return n.dimension.property}function DO(n,t){return n.dimension.getDimension(t)}function AO(n,t){var e=TO(n,t);pr(e,[t.shrinkingClass,t.growingClass])}function _O(n,t){dr(n.element(),t.openClass),fr(n.element(),t.closedClass),yr(n.element(),BO(t),"0px"),Or(n.element())}function MO(n,t){dr(n.element(),t.closedClass),fr(n.element(),t.openClass),kr(n.element(),BO(t))}function FO(n,t,e,o){e.setCollapsed(),yr(n.element(),BO(t),DO(t,n.element())),Or(n.element()),AO(n,t),_O(n,t),t.onStartShrink(n),t.onShrunk(n)}function IO(n,t,e,o){var r=o.getOrThunk(function(){return DO(t,n.element())});e.setCollapsed(),yr(n.element(),BO(t),r),Or(n.element());var i=TO(n,t);dr(i,t.growingClass),fr(i,t.shrinkingClass),_O(n,t),t.onStartShrink(n)}function RO(n,t,e){var o=DO(t,n.element());("0px"===o?FO:IO)(n,t,e,on.some(o))}function VO(n,t,e){var o=TO(n,t),r=mr(o,t.shrinkingClass),i=DO(t,n.element());MO(n,t);var u=DO(t,n.element());(r?function(){yr(n.element(),BO(t),i),Or(n.element())}:function(){_O(n,t)})(),dr(o,t.shrinkingClass),fr(o,t.growingClass),MO(n,t),yr(n.element(),BO(t),u),e.setExpanded(),t.onStartGrow(n)}function NO(n,t,e){var o=TO(n,t);return!0===mr(o,t.growingClass)}function HO(n,t,e){var o=TO(n,t);return!0===mr(o,t.shrinkingClass)}function PO(n){return cT.hasGrown(n)}function zO(n,t){var e=n.outerContainer;!function(n,t){var e=n.outerContainer.element();t&&(n.mothership.broadcastOn([Lf()],{target:e}),n.uiMothership.broadcastOn([Lf()],{target:e})),n.mothership.broadcastOn([gT],{readonly:t}),n.uiMothership.broadcastOn([gT],{readonly:t})}(n,t),Lt("*",e.element()).forEach(function(n){e.getSystem().getByDom(n).each(function(n){n.hasConfigured(Ch)&&Ch.set(n,t)})})}function LO(n,t){n.on("init",function(){n.readonly&&zO(t,!0)}),n.on("SwitchMode",function(){return zO(t,n.readonly)}),function(n){return n.getParam("readonly",!1,"boolean")}(n)&&n.setMode("readonly")}function jO(e){var n;return lc.config({channels:(n={},n[gT]={schema:pT,onReceive:function(n,t){e(n).each(function(n){!function(t,e){Lt("*",t.element()).forEach(function(n){t.getSystem().getByDom(n).each(function(n){n.hasConfigured(Ch)&&Ch.set(n,e)})})}(n,t.readonly)})}},n)})}function UO(n){var t=n.title.fold(function(){return{}},function(n){return{attributes:{title:n}}});return{dom:N({tag:"div",classes:["tox-toolbar__group"]},t),components:[nT.parts().items({})],items:n.items,markers:{itemSelector:"*:not(.tox-split-button) > .tox-tbtn:not([disabled]), .tox-split-button:not([disabled]), .tox-toolbar-nav-js:not([disabled])"},tgroupBehaviours:ba([Gy.config({}),vg.config({})])}}function WO(n){return nT.sketch(UO(n))}function GO(e,n,t){var o=Ii(function(n){var t=S(e.initGroups,WO);JE.setGroups(n,t)});return ba([lg.config({mode:n,onEscape:e.onEscape,selector:".tox-toolbar__group"}),Kd("toolbar-events",[o]),jO(t)])}function XO(n,t){var e=n.cyclicKeying?"cyclic":"acyclic";return{uid:n.uid,dom:{tag:"div",classes:["tox-toolbar-overlord"]},parts:{"overflow-group":UO({title:on.none(),items:[]}),"overflow-button":jC({name:"more",icon:on.some("more-drawer"),disabled:!1,tooltip:on.some("More..."),primary:!1,borderless:!1},on.none(),n.backstage.shared.providers)},splitToolbarBehaviours:GO(n,e,t)}}function YO(r){var n=XO(r,rT.getOverflow),t=rT.parts().primary({dom:{tag:"div",classes:["tox-toolbar__primary"]}});return rT.sketch(N(N({},n),{lazySink:r.getSink,getAnchor:function(){return r.backstage.shared.anchors.toolbarOverflow()},getOverflowBounds:function(){var n=r.moreDrawerData.lazyHeader().element(),t=wu(n),e=ko(n),o=wu(e);return yu(t.x()+4,o.y(),t.width()-8,o.height())},parts:N(N({},n.parts),{overflow:{dom:{tag:"div",classes:["tox-toolbar__overflow"]}}}),components:[t],markers:{overflowToggledClass:"tox-tbtn--enabled"}}))}function qO(n){var t=dT.parts().primary({dom:{tag:"div",classes:["tox-toolbar__primary"]}}),e=dT.parts().overflow({dom:{tag:"div",classes:["tox-toolbar__overflow"]}}),o=XO(n,dT.getOverflow);return dT.sketch(N(N({},o),{components:[t,e],markers:{openClass:"tox-toolbar__overflow--open",closedClass:"tox-toolbar__overflow--closed",growingClass:"tox-toolbar__overflow--growing",shrinkingClass:"tox-toolbar__overflow--shrinking",overflowToggledClass:"tox-tbtn--enabled"},onOpened:function(n){n.getSystem().broadcastOn([mT()],{type:"opened"})},onClosed:function(n){n.getSystem().broadcastOn([mT()],{type:"closed"})}}))}function KO(n){var t=n.cyclicKeying?"cyclic":"acyclic";return JE.sketch({uid:n.uid,dom:{tag:"div",classes:["tox-toolbar"].concat(n.type===jb.scrolling?["tox-toolbar--scrolling"]:[])},components:[JE.parts().groups({})],toolbarBehaviours:GO(n,t,nn(on.none()))})}function JO(n){return tt("toolbarbutton",vT,n)}function $O(n){return tt("menubutton",yT,n)}function QO(n){return tt("ToggleButton",ST,n)}function ZO(t){return{isDisabled:function(){return Ch.isDisabled(t)},setDisabled:function(n){return Ch.set(t,n)}}}function nE(t){return{setActive:function(n){Cg.set(t,n)},isActive:function(){return Cg.isOn(t)},isDisabled:function(){return Ch.isDisabled(t)},setDisabled:function(n){return Ch.set(t,n)}}}function tE(n,t){return n.map(function(n){return{"aria-label":t.translate(n),title:t.translate(n)}}).getOr({})}function eE(t,e,n,o,r,i){function u(n){return rh.isRtl()&&vn(jT,n)?n+"-rtl":n}var a,c=rh.isRtl()&&t.exists(function(n){return vn(UT,n)});return{dom:{tag:"button",classes:["tox-tbtn"].concat(e.isSome()?["tox-tbtn--select"]:[]).concat(c?["tox-tbtn__icon-rtl"]:[]),attributes:tE(n,i)},components:Bh([t.map(function(n){return AC(u(n),i.icons)}),e.map(function(n){return MC(n,"tox-tbtn",i)})]),eventOrder:(a={},a[Yr()]=["focusing","alloy.base.behaviour","common-button-display-events"],a),buttonBehaviours:ba([Kd("common-button-display-events",[lo(Yr(),function(n,t){t.event().prevent(),oo(n,LT)})])].concat(o.map(function(n){return RT.config({channel:n,initialData:{icon:t,text:e},renderComponents:function(n,t){return Bh([n.icon.map(function(n){return AC(u(n),i.icons)}),n.text.map(function(n){return MC(n,"tox-tbtn",i)})])}})}).toArray()).concat(r.getOr([])))}}function oE(n,t,e){var o=ye(Z),r=eE(n.icon,n.text,n.tooltip,on.none(),on.none(),e);return Gg.sketch({dom:r.dom,components:r.components,eventOrder:ok,buttonBehaviours:ba([Kd("toolbar-button-events",[function(e){return Ni(function(t,n){Op(e,t)(function(n){ro(t,ek,{buttonApi:n}),e.onAction(n)})})}({onAction:n.onAction,getApi:t.getApi}),Ep(t,o),Tp(t,o)]),Th(n.disabled)].concat(t.toolbarButtonBehaviours))})}function rE(t,n){function e(e){return{isDisabled:function(){return Ch.isDisabled(e)},setDisabled:function(n){return Ch.set(e,n)},setIconFill:function(n,t){ku(e.element(),'svg path[id="'+n+'"], rect[id="'+n+'"]').each(function(n){Po(n,"fill",t)})},setIconStroke:function(n,t){ku(e.element(),'svg path[id="'+n+'"], rect[id="'+n+'"]').each(function(n){Po(n,"stroke",t)})},setActive:function(t){Po(e.element(),"aria-pressed",t),ku(e.element(),"span").each(function(n){e.getSystem().getByDom(n).each(function(n){return Cg.set(n,t)})})},isActive:function(){return ku(e.element(),"span").exists(function(n){return e.getSystem().getByDom(n).exists(Cg.isOn)})}}}var o,r=Xo("channel-update-split-dropdown-display"),i=ye(Z),u={getApi:e,onSetup:t.onSetup};return zT.sketch({dom:{tag:"div",classes:["tox-split-button"],attributes:An({"aria-pressed":!1},tE(t.tooltip,n.providers))},onExecute:function(n){t.onAction(e(n))},onItemExecute:function(n,t,e){},splitDropdownBehaviours:ba([Eh(!1),Kd("split-dropdown-events",[lo(LT,vg.focus),Ep(u,i),Tp(u,i)]),Ew.config({})]),eventOrder:(o={},o[Ci()]=["alloy.base.behaviour","split-dropdown-events"],o),toggleClass:"tox-tbtn--enabled",lazySink:n.getSink,fetch:function(e,r,o){return function(t){return Vy(function(n){return r.fetch(n)}).map(function(n){return on.from(ub(Dn(Tv(Xo("menu-value"),n,function(n){r.onItemAction(e(t),n)},r.columns,r.presets,Fh.CLOSE_ON_EXECUTE,r.select.getOr(function(){return!1}),o),{movement:Bv(r.columns,r.presets),menuBehaviours:Jp("auto"!==r.columns?[]:[Ii(function(o,n){ip(o,4,sp(r.presets)).each(function(n){var t=n.numRows,e=n.numColumns;lg.setGridSize(o,t,e)})})])})))})}}(e,t,n.providers),parts:{menu:Sv(0,t.columns,t.presets)},components:[zT.parts().button(eE(t.icon,t.text,on.none(),on.some(r),on.some([Cg.config({toggleClass:"tox-tbtn--enabled",toggleOnExecute:!1})]),n.providers)),zT.parts().arrow({dom:{tag:"button",classes:["tox-tbtn","tox-split-button__chevron"],innerHtml:ym("chevron-down",n.providers.icons)}}),zT.parts()["aria-descriptor"]({text:n.providers.translate("To open the popup, press Shift+Enter")})]})}function iE(o,r){return lo(ek,function(n,t){var e=function(n){return{hide:function(){return oo(n,hi())},getValue:function(){return Zf.getValue(n)}}}(o.get(n));r.onAction(e,t.event().buttonApi())})}function uE(n,t,e){var o={backstage:{shared:{providers:e}}};return"contextformtogglebutton"===t.type?function(n,t,e){var o=t.original,r=(o.primary,c(o,["primary"])),i=et(QO(N(N({},r),{type:"togglebutton",onAction:function(){}})));return GT(i,e.backstage.shared.providers,[iE(n,t)])}(n,t,o):function(n,t,e){var o=t.original,r=(o.primary,c(o,["primary"])),i=et(JO(N(N({},r),{type:"button",onAction:function(){}})));return WT(i,e.backstage.shared.providers,[iE(n,t)])}(n,t,o)}function aE(n,t){var e=Math.max(t.x(),n.x()),o=n.right()-e,r=t.width()-(e-t.x());return{x:e,width:Math.min(o,r)}}function cE(n){var t=Pb(n)||zb(n)||Xb(n),e=vu(v.window),o=xu(we.fromDom(n.getContentAreaContainer()));return n.inline&&!t?function(n,t,e){var o=aE(t,e),r=o.x,i=o.width;return yu(r,e.y(),i,e.height())}(0,o,e):n.inline?function(n,t,e){var o=aE(t,e),r=o.x,i=o.width,u=we.fromDom(n.getContainer()),a=ku(u,".tox-editor-header").getOr(u),c=xu(a),s=e.height(),f=e.y();if(c.y()>=t.bottom()){var l=Math.min(s+f,c.y());return yu(r,f,i,l-f)}var d=Math.max(f,c.bottom());return yu(r,d,i,s-(d-f))}(n,o,e):function(n,t,e){var o=aE(t,e),r=o.x,i=o.width,u=we.fromDom(n.getContainer()),a=ku(u,".tox-editor-header").getOr(u),c=xu(u),s=xu(a),f=Math.max(e.y(),t.y(),s.bottom()),l=c.bottom()-f,d=e.height()-(f-e.y()),m=Math.min(l,d);return yu(r,f,i,m)}(n,o,e)}function sE(t,n){return Du(n,function(n){return n.predicate(t.dom())?on.some({toolbarApi:n,elem:t}):on.none()})}function fE(o,r){return function(t){function n(){t.setActive(o.formatter.match(r));var n=o.formatter.formatChanged(r,t.setActive).unbind;e.set(on.some(n))}var e=ye(on.none());return o.initialized?n():o.on("init",n),function(){return e.get().each(function(n){return n()})}}}function lE(t){return function(n){return function(){t.undoManager.transact(function(){t.focus(),t.execCommand("mceToggleFormat",!1,n.format)})}}}function dE(n,t,e){var o=e.dataset,r="basic"===o.type?function(){return S(o.data,function(n){return Yk(n,e.isSelectedFor,e.getPreviewFor)})}:o.getData;return{items:function(n,u,a){function r(n,t,e,o){var r=u.shared.providers.translate(n.title);if("separator"===n.type)return on.some({type:"separator",text:r});if("submenu"!==n.type)return on.some(N({type:"togglemenuitem",text:r,active:n.isSelected(o),disabled:e,onAction:a.onAction(n)},n.getStylePreview().fold(function(){return{}},function(n){return{meta:{style:n}}})));var i=B(n.getStyleItems(),function(n){return c(n,t,o)});return 0===t&&i.length<=0?on.none():on.some({type:"nestedmenuitem",text:r,disabled:i.length<=0,getSubmenuItems:function(){return B(n.getStyleItems(),function(n){return c(n,t,o)})}})}function i(n){var t=a.getCurrentValue(),e=a.shouldHide?0:1;return B(n,function(n){return c(n,e,t)})}var c=function(n,t,e){var o="formatter"===n.type&&a.isInvalid(n);return 0===t?o?[]:r(n,t,!1,e).toArray():r(n,t,o,e).toArray()};return{validateItems:i,getFetch:function(o,r){return function(n){var t=r(),e=i(t);n(NC(e,Fh.CLOSE_ON_EXECUTE,o,!1))}}}}(0,t,e),getStyleItems:r}}function mE(o,n,t){var e=dE(0,n,t),r=e.items,i=e.getStyleItems;return FC({text:t.icon.isSome()?on.none():on.some(""),icon:t.icon,tooltip:on.from(t.tooltip),role:on.none(),fetch:r.getFetch(n,i),onSetup:function(e){return t.setInitialValue.each(function(n){return n(e.getComponent())}),t.nodeChangeHandler.map(function(n){var t=n(e.getComponent());return o.on("NodeChange",t),function(){o.off("NodeChange",t)}}).getOr(Z)},getApi:function(n){return{getComponent:function(){return n}}},columns:1,presets:"normal",classes:t.icon.isSome()?[]:["bespoke"],dropdownBehaviours:[]},"tox-tbtn",n.shared)}var gE,pE,hE,vE,bE=Dl({name:"HtmlSelect",configFields:[ct("options"),Fs("selectBehaviours",[vg,Zf]),St("selectClasses",[]),St("selectAttributes",{}),ht("data")],factory:function(e,n){var t=S(e.options,function(n){return{dom:{tag:"option",value:n.value,innerHtml:n.text}}}),o=e.data.map(function(n){return q("initialValue",n)}).getOr({});return{uid:e.uid,dom:{tag:"select",classes:e.selectClasses,attributes:e.selectAttributes},components:t,behaviours:Rs(e.selectBehaviours,[vg.config({}),Zf.config({store:N({mode:"manual",getValue:function(n){return Er(n.element())},setValue:function(n,t){E(e.options,function(n){return n.value===t}).isSome()&&Tr(n.element(),t)}},o)})])}}}),yE=/* */Object.freeze({events:function(n,t){var e=n.stream.streams.setup(n,t);return co([lo(n.event,e),Ri(function(){return t.cancel()})].concat(n.cancelEvent.map(function(n){return[lo(n,function(){return t.cancel()})]}).getOr([])))}}),xE=/* */Object.freeze({throttle:_k,init:function(n){return n.stream.streams.state(n)}}),wE=[st("stream",it("mode",{throttle:[ct("delay"),St("stopEvent",!0),Qu("streams",{setup:function(n,t){var e=n.stream,o=Jg(n.onStream,e.delay);return t.setTimer(o),function(n,t){o.throttle(n,t),e.stopEvent&&t.stop()}},state:_k})]})),St("event","input"),ht("cancelEvent"),Ju("onStream")],SE=ya({fields:wE,name:"streaming",active:yE,state:xE}),CE=function(n){Fk(n,function(n,t){return n.setSelectionRange(t.length,t.length)})},kE=nn("alloy.typeahead.itemexecute"),OE=nn([ht("lazySink"),ct("fetch"),St("minChars",5),St("responseTime",1e3),qu("onOpen"),St("getHotspot",on.some),St("getAnchorOverrides",nn({})),St("layouts",on.none()),St("eventOrder",{}),Dt("model",{},[St("getDisplayText",function(n){return n.meta!==undefined&&n.meta.text!==undefined?n.meta.text:n.value}),St("selectsOver",!0),St("populateFromBrowse",!0)]),qu("onSetValue"),Ku("onExecute"),qu("onItemExecute"),St("inputClasses",[]),St("inputAttributes",{}),St("inputStyles",{}),St("matchWidth",!0),St("useMinWidth",!1),St("dismissOnBlur",!0),Xu(["openClass"]),ht("initialData"),Fs("typeaheadBehaviours",[vg,Zf,SE,lg,Cg,Jy]),At("previewing",function(){return ye(!0)})].concat(by()).concat(ax())),EE=nn([wl({schema:[Gu()],name:"menu",overrides:function(o){return{fakeFocus:!0,onHighlight:function(t,e){o.previewing.get()?t.getSystem().getByUid(o.uid).each(function(n){Ik(o.model,n,e).fold(function(){return ad.dehighlight(t,e)},function(n){return n()})}):t.getSystem().getByUid(o.uid).each(function(n){o.model.populateFromBrowse&&Mk(o.model,n,e)}),o.previewing.set(!1)},onExecute:function(n,t){return n.getSystem().getByUid(o.uid).toOption().map(function(n){return ro(n,kE(),{item:t}),!0})},onHover:function(n,t){o.previewing.set(!1),n.getSystem().getByUid(o.uid).each(function(n){o.model.populateFromBrowse&&Mk(o.model,n,t)})}}}})]),TE=Al({name:"Typeahead",configFields:OE(),partFields:EE(),factory:function(r,n,t,i){function e(n,t,e){r.previewing.set(!1);var o=Jy.getCoupled(n,"sandbox");if(zf.isOpen(o))Zl.getCurrent(o).each(function(n){ad.getHighlighted(n).fold(function(){e(n)},function(){ao(o,n.element(),"keydown",t)})});else{nx(r,u(n),n,o,i,function(n){Zl.getCurrent(n).each(e)},Ay.HighlightFirst).get(Z)}}var o=Zb(r),u=function(o){return function(n){return n.map(function(n){var t=R(n.menus),e=B(t,function(n){return C(n.items,function(n){return"item"===n.type})});return Zf.getState(o).update(S(e,function(n){return n.data})),n})}},a=[vg.config({}),Zf.config({onSetValue:r.onSetValue,store:N({mode:"dataset",getDataKey:function(n){return Er(n.element())},getFallbackEntry:function(n){return{value:n,meta:{}}},setValue:function(n,t){Tr(n.element(),r.model.getDisplayText(t))}},r.initialData.map(function(n){return q("initialValue",n)}).getOr({}))}),SE.config({stream:{mode:"throttle",delay:r.responseTime,stopEvent:!1},onStream:function(n,t){var e=Jy.getCoupled(n,"sandbox");if(vg.isFocused(n)&&Er(n.element()).length>=r.minChars){var o=Zl.getCurrent(e).bind(function(n){return ad.getHighlighted(n).map(Zf.getValue)});r.previewing.set(!0);nx(r,u(n),n,e,i,function(n){Zl.getCurrent(e).each(function(n){o.fold(function(){r.model.selectsOver&&ad.highlightFirst(n)},function(t){ad.highlightBy(n,function(n){return Zf.getValue(n).value===t.value}),ad.getHighlighted(n).orThunk(function(){return ad.highlightFirst(n),on.none()})})})},Ay.HighlightFirst).get(Z)}},cancelEvent:vi()}),lg.config({mode:"special",onDown:function(n,t){return e(n,t,ad.highlightFirst),on.some(!0)},onEscape:function(n){var t=Jy.getCoupled(n,"sandbox");return zf.isOpen(t)?(zf.close(t),on.some(!0)):on.none()},onUp:function(n,t){return e(n,t,ad.highlightLast),on.some(!0)},onEnter:function(t){var n=Jy.getCoupled(t,"sandbox"),e=zf.isOpen(n);if(e&&!r.previewing.get())return Zl.getCurrent(n).bind(function(n){return ad.getHighlighted(n)}).map(function(n){return ro(t,kE(),{item:n}),!0});var o=Zf.getValue(t);return oo(t,vi()),r.onExecute(n,t,o),e&&zf.close(n),on.some(!0)}}),Cg.config({toggleClass:r.markers.openClass,aria:{mode:"expanded"}}),Jy.config({others:{sandbox:function(n){return ix(r,n,{onOpen:function(){return Cg.on(n)},onClose:function(){return Cg.off(n)}})}}}),Kd("typeaheadevents",[Ni(function(n){var t=Z;ex(r,u(n),n,i,t,Ay.HighlightFirst).get(Z)}),lo(kE(),function(n,t){var e=Jy.getCoupled(n,"sandbox");Mk(r.model,n,t.event().item()),oo(n,vi()),r.onItemExecute(n,e,t.event().item(),Zf.getValue(n)),zf.close(e),CE(n)})].concat(r.dismissOnBlur?[lo(si(),function(n){var t=Jy.getCoupled(n,"sandbox");Ca(t.element()).isNone()&&zf.close(t)})]:[]))];return{uid:r.uid,dom:ny(Dn(r,{inputAttributes:{role:"combobox","aria-autocomplete":"list","aria-haspopup":"true"}})),behaviours:N(N({},o),Rs(r.typeaheadBehaviours,a)),eventOrder:r.eventOrder}}}),BE=function(i){return N(N({},i),{toCached:function(){return BE(i.toCached())},bindFuture:function(t){return BE(i.bind(function(n){return n.fold(function(n){return Ny(an.error(n))},function(n){return t(n)})}))},bindResult:function(t){return BE(i.map(function(n){return n.bind(t)}))},mapResult:function(t){return BE(i.map(function(n){return n.map(t)}))},mapError:function(t){return BE(i.map(function(n){return n.mapError(t)}))},foldResult:function(t,e){return i.map(function(n){return n.fold(t,e)})},withTimeout:function(n,r){return BE(Vy(function(t){var e=!1,o=v.setTimeout(function(){e=!0,t(an.error(r()))},n);i.get(function(n){e||(v.clearTimeout(o),t(n))})}))}})},DE=Rk,AE={type:"separator"},_E=Xo("aria-invalid"),ME={bar:Uk(function(n,t){return function(n,t){return{dom:{tag:"div",classes:["tox-bar","tox-form__controls-h-stack"]},components:S(n.items,t.interpreter)}}(n,t.shared)}),collection:Uk(function(n,t){return jk(n,t.shared.providers)}),alertbanner:Uk(function(n,t){return function(t,n){return Wb.sketch({dom:{tag:"div",attributes:{role:"alert"},classes:["tox-notification","tox-notification--in","tox-notification--"+t.level]},components:[{dom:{tag:"div",classes:["tox-notification__icon"]},components:[Gg.sketch({dom:{tag:"button",classes:["tox-button","tox-button--naked","tox-button--icon"],innerHtml:ym(t.icon,n.icons),attributes:{title:n.translate(t.iconTooltip)}},action:function(n){ro(n,sy,{name:"alert-banner",value:t.url})}})]},{dom:{tag:"div",classes:["tox-notification__body"],innerHtml:n.translate(t.text)}}]})}(n,t.shared.providers)}),input:Uk(function(n,t){return function(n,t){return Ak({name:n.name,multiline:!1,label:n.label,inputMode:n.inputMode,placeholder:n.placeholder,flex:!1,disabled:n.disabled,classname:"tox-textfield",validation:on.none(),maximized:n.maximized},t)}(n,t.shared.providers)}),textarea:Uk(function(n,t){return function(n,t){return Ak({name:n.name,multiline:!0,label:n.label,inputMode:on.none(),placeholder:n.placeholder,flex:!0,disabled:n.disabled,classname:"tox-textarea",validation:on.none(),maximized:n.maximized},t)}(n,t.shared.providers)}),label:Uk(function(n,t){return function(n,t){var e={dom:{tag:"label",innerHtml:t.providers.translate(n.label),classes:["tox-label"]}},o=S(n.items,t.interpreter);return{dom:{tag:"div",classes:["tox-form__group"]},components:[e].concat(o),behaviours:ba([xS(),mg.config({}),BS(on.none()),lg.config({mode:"acyclic"})])}}(n,t.shared)}),iframe:(gE=function(n,t){return ww(n,t.shared.providers)},function(n,t,e){var o=Dn(t,{source:"dynamic"});return Uk(gE)(n,o,e)}),button:Uk(function(n,t){return qC(n,t.shared.providers)}),checkbox:Uk(function(n,t){return function(e,t){function n(n){return n.element().dom().click(),on.some(!0)}function o(n){return{dom:{tag:"span",classes:["tox-icon","tox-checkbox-icon__"+n],innerHtml:ym("checked"===n?"selected":"unselected",t.icons)}}}var r=Zf.config({store:{mode:"manual",getValue:function(n){return n.element().dom().checked},setValue:function(n,t){n.element().dom().checked=t}}}),i=vy.parts().field({factory:{sketch:l},dom:{tag:"input",classes:["tox-checkbox__input"],attributes:{type:"checkbox"}},behaviours:ba([xS(),Ch.config({disabled:e.disabled}),Gy.config({}),vg.config({}),r,lg.config({mode:"special",onEnter:n,onSpace:n,stopSpaceKeyup:!0}),Kd("checkbox-events",[lo(oi(),function(n,t){ro(n,uy,{name:e.name})})])])}),u=vy.parts().label({dom:{tag:"span",classes:["tox-checkbox__label"],innerHtml:t.translate(e.label)},behaviours:ba([Ew.config({})])}),a=vm({dom:{tag:"div",classes:["tox-checkbox__icons"]},components:[o("checked"),o("unchecked")]});return vy.sketch({dom:{tag:"label",classes:["tox-checkbox"]},components:[i,a.asSpec(),u],fieldBehaviours:ba([Ch.config({disabled:e.disabled,disableClass:"tox-checkbox--disabled",onDisabled:function(n){vy.getField(n).each(Ch.disable)},onEnabled:function(n){vy.getField(n).each(Ch.enable)}})])})}(n,t.shared.providers)}),colorinput:Uk(function(n,t){return cx(n,t.shared,t.colorinput)}),colorpicker:Uk(function(n){function t(n){return"tox-"+n}var e=yS(pw,t),r=vm(e.sketch({dom:{tag:"div",classes:[t("color-picker-container")],attributes:{role:"presentation"}},onValidHex:function(n){ro(n,sy,{name:"hex-valid",value:!0})},onInvalidHex:function(n){ro(n,sy,{name:"hex-valid",value:!1})}}));return{dom:{tag:"div"},components:[r.asSpec()],behaviours:ba([Zf.config({store:{mode:"manual",getValue:function(n){var t=r.get(n);return Zl.getCurrent(t).bind(function(n){return Zf.getValue(n).hex}).map(function(n){return"#"+n}).getOr("")},setValue:function(n,t){var e=/^#([a-fA-F0-9]{3}(?:[a-fA-F0-9]{3})?)/.exec(t),o=r.get(n);Zl.getCurrent(o).fold(function(){v.console.log("Can not find form")},function(n){Zf.setValue(n,{hex:on.from(e[1]).getOr("")}),dS.getField(n,"hex").each(function(n){oo(n,ei())})})}}}),xS()])}}),dropzone:Uk(function(n,t){return bw(n,t.shared.providers)}),grid:Uk(function(n,t){return function(n,t){return{dom:{tag:"div",classes:["tox-form__grid","tox-form__grid--"+n.columns+"col"]},components:S(n.items,t.interpreter)}}(n,t.shared)}),selectbox:Uk(function(n,t){return function(e,t){var n=S(e.items,function(n){return{text:t.translate(n.text),value:n.value}}),o=e.label.map(function(n){return Dy(n,t)}),r=vy.parts().field({dom:{},selectAttributes:{size:e.size},options:n,factory:bE,selectBehaviours:ba([Ch.config({disabled:e.disabled}),Gy.config({}),Kd("selectbox-change",[lo(oi(),function(n,t){ro(n,uy,{name:e.name})})])])}),i=1<e.size?on.none():on.some({dom:{tag:"div",classes:["tox-selectfield__icon-js"],innerHtml:ym("chevron-down",t.icons)}}),u={dom:{tag:"div",classes:["tox-selectfield"]},components:H([[r],i.toArray()])};return vy.sketch({dom:{tag:"div",classes:["tox-form__group"]},components:H([o.toArray(),[u]]),fieldBehaviours:ba([Ch.config({disabled:e.disabled,onDisabled:function(n){vy.getField(n).each(Ch.disable)},onEnabled:function(n){vy.getField(n).each(Ch.enable)}})])})}(n,t.shared.providers)}),sizeinput:Uk(function(n,t){return nk(n,t.shared.providers)}),urlinput:Uk(function(n,t){return Lk(n,t,t.urlinput)}),customeditor:Uk(function(e){var o=ye(on.none()),t=vm({dom:{tag:e.tag}}),r=ye(on.none());return{dom:{tag:"div",classes:["tox-custom-editor"]},behaviours:ba([Kd("editor-foo-events",[Ii(function(n){t.getOpt(n).each(function(t){(!function(n){return Object.prototype.hasOwnProperty.call(n,"init")}(e)?kS.load(e.scriptId,e.scriptUrl).then(function(n){return n(t.element().dom(),e.settings)}):e.init(t.element().dom())).then(function(t){r.get().each(function(n){t.setValue(n)}),r.set(on.none()),o.set(on.some(t))})})})]),Zf.config({store:{mode:"manual",getValue:function(){return o.get().fold(function(){return r.get().getOr("")},function(n){return n.getValue()})},setValue:function(n,t){o.get().fold(function(){r.set(on.some(t))},function(n){return n.setValue(t)})}}}),xS()]),components:[t.asSpec()]}}),htmlpanel:Uk(function(n){return"presentation"===n.presets?Wb.sketch({dom:{tag:"div",classes:["tox-form__group"],innerHtml:n.html}}):Wb.sketch({dom:{tag:"div",classes:["tox-form__group"],innerHtml:n.html,attributes:{role:"document"}},containerBehaviours:ba([Gy.config({}),vg.config({})])})}),imagetools:Uk(function(n,t){return Dk(n,t.shared.providers)}),table:Uk(function(n,t){return function(n,t){function e(n){return{dom:{tag:"th",innerHtml:t.translate(n)}}}function o(n){return{dom:{tag:"td",innerHtml:t.translate(n)}}}function r(n){return{dom:{tag:"tr"},components:S(n,o)}}var i,u;return{dom:{tag:"table",classes:["tox-dialog__table"]},components:[(u=n.header,{dom:{tag:"thead"},components:[{dom:{tag:"tr"},components:S(u,e)}]}),(i=n.cells,{dom:{tag:"tbody"},components:S(i,r)})],behaviours:ba([Gy.config({}),vg.config({})])}}(n,t.shared.providers)}),panel:Uk(function(n,t){return function(n,t){return{dom:{tag:"div",classes:n.classes},components:S(n.items,t.shared.interpreter)}}(n,t)})},FE={field:function(n,t){return t}},IE=function(t,e,o){return Nn(ME,e.type).fold(function(){return v.console.error('Unknown factory type "'+e.type+'", defaulting to container: ',e),e},function(n){return n(t,e,o)})},RE=nn(function(n,t){!function(n,t){var e=Vu.max(n,t,["margin-left","border-left-width","padding-left","padding-right","border-right-width","margin-right"]);yr(n,"max-width",e+"px")}(n,Math.floor(t))}),VE={valignCentre:[],alignCentre:[],alignLeft:[],alignRight:[],right:[],left:[],bottom:[],top:[]},NE=function(n,t,e){function o(){return we.fromDom(n.getBody())}var r=Kb(n);return{toolbar:function(n,t,e){return e?function(){return{anchor:"node",root:n(),node:on.from(n()),bubble:Oa(-12,-12,VE),layouts:{onRtl:function(){return[pm]},onLtr:function(){return[hm]}},overrides:{maxHeightFunction:Cf()}}}:function(){return{anchor:"hotspot",hotspot:t(),bubble:Oa(-12,12,VE),layouts:{onRtl:function(){return[ua]},onLtr:function(){return[aa]}},overrides:{maxHeightFunction:Cf()}}}}(o,t,r),toolbarOverflow:function(n){return function(){return{anchor:"hotspot",hotspot:n(),overrides:{maxWidthFunction:RE()},layouts:{onRtl:function(){return[ua,aa]},onLtr:function(){return[aa,ua]}}}}}(e),banner:function(n,t,e){return e?function(){return{anchor:"node",root:n(),node:on.from(n()),layouts:{onRtl:function(){return[Ug]},onLtr:function(){return[Ug]}}}}:function(){return{anchor:"hotspot",hotspot:t(),layouts:{onRtl:function(){return[rc]},onLtr:function(){return[rc]}}}}}(o,t,r),cursor:function(t,n){return function(){return{anchor:"selection",root:n(),getSelection:function(){var n=t.selection.getRng();return on.some(Tc.range(we.fromDom(n.startContainer),n.startOffset,we.fromDom(n.endContainer),n.endOffset))}}}}(n,o),node:function(t){return function(n){return{anchor:"node",root:t(),node:n}}}(o)}},HE=[{title:"Headings",items:[{title:"Heading 1",format:"h1"},{title:"Heading 2",format:"h2"},{title:"Heading 3",format:"h3"},{title:"Heading 4",format:"h4"},{title:"Heading 5",format:"h5"},{title:"Heading 6",format:"h6"}]},{title:"Inline",items:[{title:"Bold",icon:"bold",format:"bold"},{title:"Italic",icon:"italic",format:"italic"},{title:"Underline",icon:"underline",format:"underline"},{title:"Strikethrough",icon:"strike-through",format:"strikethrough"},{title:"Superscript",icon:"superscript",format:"superscript"},{title:"Subscript",icon:"subscript",format:"subscript"},{title:"Code",icon:"code",format:"code"}]},{title:"Blocks",items:[{title:"Paragraph",format:"p"},{title:"Blockquote",format:"blockquote"},{title:"Div",format:"div"},{title:"Pre",format:"pre"}]},{title:"Align",items:[{title:"Left",icon:"align-left",format:"alignleft"},{title:"Center",icon:"align-center",format:"aligncenter"},{title:"Right",icon:"align-right",format:"alignright"},{title:"Justify",icon:"align-justify",format:"alignjustify"}]}],PE=function(n){return O(n,function(n,t){if(function(n){return En(n,"items")}(t)){var e=PE(t.items);return{customFormats:n.customFormats.concat(e.customFormats),formats:n.formats.concat([{title:t.title,items:e.formats}])}}if(function(n){return En(n,"inline")}(t)||function(n){return En(n,"block")}(t)||function(n){return En(n,"selector")}(t)){var o="custom-"+t.title.toLowerCase();return{customFormats:n.customFormats.concat([{name:o,format:t}]),formats:n.formats.concat([{title:t.title,format:o,icon:t.icon}])}}return N(N({},n),{formats:n.formats.concat(t)})},{customFormats:[],formats:[]})},zE=yk.trim,LE=Kk("true"),jE=Kk("false"),UE=function(n){return function(n){for(;n=n.parentNode;){var t=n.contentEditable;if(t&&"inherit"!==t)return LE(n)}return!1}(n)&&!jE(n)},WE=function(n){var t=oO(n);return C(function(n){return S(C(n,nO),tO)}(t).concat(function(n){return S(C(n,Qk),eO)}(t)),rO)},GE="tinymce-url-history",XE=Object.prototype.hasOwnProperty,YE="contexttoolbar-hide",qE=nn([ct("dom"),St("shell",!0),Fs("toolbarBehaviours",[mg])]),KE=nn([Sl({name:"groups",overrides:function(n){return{behaviours:ba([mg.config({})])}}})]),JE=Al({name:"Toolbar",configFields:qE(),partFields:KE(),factory:function(t,n,e,o){var r=function(n){return t.shell?on.some(n):qs(n,t,"groups")},i=t.shell?{behaviours:[mg.config({})],components:[]}:{behaviours:[],components:n};return{uid:t.uid,dom:t.dom,components:i.components,behaviours:Rs(t.toolbarBehaviours,i.behaviours),apis:{setGroups:function(n,t){r(n).fold(function(){throw v.console.error("Toolbar was defined to not be a shell, but no groups container was specified in components"),new Error("Toolbar was defined to not be a shell, but no groups container was specified in components")},function(n){mg.set(n,t)})}},domModification:{attributes:{role:"group"}}}},apis:{setGroups:function(n,t,e){n.setGroups(t,e)}}}),$E=yo("within","extra","withinWidth"),QE=nn([ct("items"),Xu(["itemSelector"]),Fs("tgroupBehaviours",[lg])]),ZE=nn([Cl({name:"items",unit:"item"})]),nT=Al({name:"ToolbarGroup",configFields:QE(),partFields:ZE(),factory:function(n,t,e,o){return{uid:n.uid,dom:n.dom,components:t,behaviours:Rs(n.tgroupBehaviours,[lg.config({mode:"flow",selector:n.markers.itemSelector})]),domModification:{attributes:{role:"toolbar"}}}}}),tT=nn([Fs("splitToolbarBehaviours",[Jy]),At("builtGroups",function(){return ye([])})]),eT=nn([Xu(["overflowToggledClass"]),ct("getAnchor"),xt("getOverflowBounds"),ct("lazySink")].concat(tT())),oT=nn([xl({factory:JE,schema:qE(),name:"primary"}),wl({factory:JE,schema:qE(),name:"overflow",overrides:function(t){return{toolbarBehaviours:ba([lg.config({mode:"cyclic",onEscape:function(n){return qs(n,t,"overflow-button").each(vg.focus),on.none()}})])}}}),wl({name:"overflow-button",overrides:function(n){return{dom:{attributes:{"aria-haspopup":"true"}},buttonBehaviours:ba([Cg.config({toggleClass:n.markers.overflowToggledClass,aria:{mode:"expanded"},toggleOnExecute:!1})])}}}),wl({name:"overflow-group"})]),rT=Al({name:"SplitFloatingToolbar",configFields:eT(),partFields:oT(),factory:function(t,n,e,o){return SO(t,n,0,o,{coupling:{sandbox:function(n){return function(o,e){var r=Eu();return{dom:{tag:"div",attributes:{id:r.id()}},behaviours:ba([lg.config({mode:"special",onEscape:function(n){return zf.close(n),on.some(!0)}}),zf.config({onOpen:function(n,t){OO(o,e),qs(o,e,"overflow-button").each(function(n){Cg.on(n),r.link(n.element())}),lg.focusIn(t)},onClose:function(){qs(o,e,"overflow-button").each(function(n){Cg.off(n),vg.focus(n),r.unlink(n.element())})},isPartOf:function(n,t,e){return Lu(t,e)||Lu(o,e)},getAttachPoint:function(){return e.lazySink(o).getOrDie()}}),lc.config({channels:N({},Ts({isExtraPart:nn(!1),doReposition:function(){return EO(o,e)}}))})])}}(n,t)}},apis:{refresh:function(n){return OO(n,t)},toggle:function(n){return function(n,t,e){var o=Jy.getCoupled(n,"sandbox");zf.isOpen(o)?zf.close(o):zf.open(o,e.overflow())}(n,0,o)},getOverflow:function(n){return zf.getState(Jy.getCoupled(n,"sandbox"))},reposition:function(n){return EO(n,t)}}})},apis:{setGroups:function(n,t,e){n.setGroups(t,e)},refresh:function(n,t){n.refresh(t)},reposition:function(n,t){n.reposition(t)},getMoreButton:function(n,t){return n.getMoreButton(t)},getOverflow:function(n,t){return n.getOverflow(t)},toggle:function(n,t){n.toggle(t)}}}),iT=/* */Object.freeze({refresh:function(n,t,e){if(e.isExpanded()){kr(n.element(),BO(t));var o=DO(t,n.element());yr(n.element(),BO(t),o)}},grow:function(n,t,e){e.isExpanded()||VO(n,t,e)},shrink:function(n,t,e){e.isExpanded()&&RO(n,t,e)},immediateShrink:function(n,t,e){e.isExpanded()&&FO(n,t,e)},hasGrown:function(n,t,e){return e.isExpanded()},hasShrunk:function(n,t,e){return e.isCollapsed()},isGrowing:NO,isShrinking:HO,isTransitioning:function(n,t,e){return!0===NO(n,t)||!0===HO(n,t)},toggleGrow:function(n,t,e){(e.isExpanded()?RO:VO)(n,t,e)},disableTransitions:AO}),uT=/* */Object.freeze({exhibit:function(n,t){var e=t.expanded;return Zo(e?{classes:[t.openClass],styles:{}}:{classes:[t.closedClass],styles:q(t.dimension.property,"0px")})},events:function(e,o){return co([bo(ii(),function(n,t){t.event().raw().propertyName===e.dimension.property&&(AO(n,e),o.isExpanded()&&kr(n.element(),e.dimension.property),(o.isExpanded()?e.onGrown:e.onShrunk)(n))})])}}),aT=[ct("closedClass"),ct("openClass"),ct("shrinkingClass"),ct("growingClass"),ht("getAnimationRoot"),qu("onShrunk"),qu("onStartShrink"),qu("onGrown"),qu("onStartGrow"),St("expanded",!1),st("dimension",it("property",{width:[Qu("property","width"),Qu("getDimension",function(n){return mu(n)+"px"})],height:[Qu("property","height"),Qu("getDimension",function(n){return su(n)+"px"})]}))],cT=ya({fields:aT,name:"sliding",active:uT,apis:iT,state:/* */Object.freeze({init:function(n){var t=ye(n.expanded);return nu({isExpanded:function(){return!0===t.get()},isCollapsed:function(){return!1===t.get()},setCollapsed:d(t.set,!1),setExpanded:d(t.set,!0),readState:function(){return"expanded: "+t.get()}})}})}),sT=nn([Xu(["closedClass","openClass","shrinkingClass","growingClass","overflowToggledClass"]),qu("onOpened"),qu("onClosed")].concat(tT())),fT=nn([xl({factory:JE,schema:qE(),name:"primary"}),xl({factory:JE,schema:qE(),name:"overflow",overrides:function(t){return{toolbarBehaviours:ba([cT.config({dimension:{property:"height"},closedClass:t.markers.closedClass,openClass:t.markers.openClass,shrinkingClass:t.markers.shrinkingClass,growingClass:t.markers.growingClass,onShrunk:function(n){qs(n,t,"overflow-button").each(function(n){Cg.off(n),vg.focus(n)}),t.onClosed(n)},onGrown:function(n){lg.focusIn(n),t.onOpened(n)},onStartGrow:function(n){qs(n,t,"overflow-button").each(Cg.on)}}),lg.config({mode:"acyclic",onEscape:function(n){return qs(n,t,"overflow-button").each(vg.focus),on.some(!0)}})])}}}),wl({name:"overflow-button",overrides:function(n){return{buttonBehaviours:ba([Cg.config({toggleClass:n.markers.overflowToggledClass,aria:{mode:"pressed"},toggleOnExecute:!1})])}}}),wl({name:"overflow-group"})]),lT=function(n,t){var e=qs(n,t,"overflow");wO(n,t,e,PO),e.each(cT.refresh)},dT=Al({name:"SplitSlidingToolbar",configFields:sT(),partFields:fT(),factory:function(t,n,e,o){return SO(t,n,0,o,{coupling:{},apis:{refresh:function(n){return lT(n,t)},toggle:function(n){return function(t,e){qs(t,e,"overflow").each(function(n){lT(t,e),cT.toggleGrow(n)})}(n,t)},getOverflow:function(n){return qs(n,t,"overflow")}}})},apis:{setGroups:function(n,t,e){n.setGroups(t,e)},refresh:function(n,t){n.refresh(t)},getMoreButton:function(n,t){return n.getMoreButton(t)},getOverflow:function(n,t){return n.getOverflow(t)},toggle:function(n,t){n.toggle(t)}}}),mT=nn(Xo("toolbar-height-change")),gT="silver.readonly",pT=re([(pE="readonly",st(pE,pe))]),hT=[Tt("disabled",!1),yt("tooltip"),yt("icon"),yt("text"),Bt("onSetup",function(){return Z})],vT=re([ft("type"),dt("onAction")].concat(hT)),bT=[yt("text"),yt("tooltip"),yt("icon"),dt("fetch"),Bt("onSetup",function(){return Z})],yT=re(g([ft("type")],bT)),xT=re([ft("type"),yt("tooltip"),yt("icon"),yt("text"),xt("select"),dt("fetch"),Bt("onSetup",function(){return Z}),Et("presets","normal",["normal","color","listpreview"]),St("columns",1),dt("onAction"),dt("onItemAction")]),wT=[Tt("active",!1)].concat(hT),ST=re(wT.concat([ft("type"),dt("onAction")])),CT=[Bt("predicate",function(){return!1}),Et("scope","node",["node","editor"]),Et("position","selection",["node","selection","line"])],kT=hT.concat([St("type","contextformbutton"),St("primary",!1),dt("onAction"),At("original",l)]),OT=wT.concat([St("type","contextformbutton"),St("primary",!1),dt("onAction"),At("original",l)]),ET=hT.concat([St("type","contextformbutton")]),TT=wT.concat([St("type","contextformtogglebutton")]),BT=it("type",{contextformbutton:kT,contextformtogglebutton:OT}),DT=re([St("type","contextform"),Bt("initValue",function(){return""}),yt("label"),pt("commands",BT),vt("launch",it("type",{contextformbutton:ET,contextformtogglebutton:TT}))].concat(CT)),AT=re([St("type","contexttoolbar"),ft("items")].concat(CT)),_T=/* */Object.freeze({getState:function(n,t,e){return e}}),MT=/* */Object.freeze({events:function(i,u){function o(o,r){i.updateState.each(function(n){var t=n(o,r);u.set(t)}),i.renderComponents.each(function(n){var t=n(r,u.get()),e=S(t,o.getSystem().build);ps(o,e)})}return co([lo(li(),function(n,t){var e=i.channel;vn(t.channels(),e)&&o(n,t.data())}),Ii(function(t,n){i.initialData.each(function(n){o(t,n)})})])}}),FT=/* */Object.freeze({init:function(n){var t=ye(on.none());return{readState:function(){return t.get().fold(function(){return"none"},function(n){return n})},get:function(){return t.get()},set:function(n){return t.set(n)},clear:function(){return t.set(on.none())}}}}),IT=[ct("channel"),ht("renderComponents"),ht("updateState"),ht("initialData")],RT=ya({fields:IT,name:"reflecting",active:MT,apis:_T,state:FT}),VT=nn([ct("toggleClass"),ct("fetch"),Ju("onExecute"),St("getHotspot",on.some),St("getAnchorOverrides",nn({})),St("layouts",on.none()),Ju("onItemExecute"),ht("lazySink"),ct("dom"),qu("onOpen"),Fs("splitDropdownBehaviours",[Jy,lg,vg]),St("matchWidth",!1),St("useMinWidth",!1),St("eventOrder",{}),ht("role")].concat(ax())),NT=xl({factory:Gg,schema:[ct("dom")],name:"arrow",defaults:function(n){return{buttonBehaviours:ba([vg.revoke()])}},overrides:function(t){return{dom:{tag:"span",attributes:{role:"presentation"}},action:function(n){n.getSystem().getByUid(t.uid).each(io)},buttonBehaviours:ba([Cg.config({toggleOnExecute:!1,toggleClass:t.toggleClass})])}}}),HT=xl({factory:Gg,schema:[ct("dom")],name:"button",defaults:function(n){return{buttonBehaviours:ba([vg.revoke()])}},overrides:function(e){return{dom:{tag:"span",attributes:{role:"presentation"}},action:function(t){t.getSystem().getByUid(e.uid).each(function(n){e.onExecute(n,t)})}}}}),PT=nn([NT,HT,Sl({factory:{sketch:function(n){return{uid:n.uid,dom:{tag:"span",styles:{display:"none"},attributes:{"aria-hidden":"true"},innerHtml:n.text}}}},schema:[ct("text")],name:"aria-descriptor"}),wl({schema:[Gu()],name:"menu",defaults:function(o){return{onExecute:function(t,e){t.getSystem().getByUid(o.uid).each(function(n){o.onItemExecute(n,t,e)})}}}}),Qy()]),zT=Al({name:"SplitDropdown",configFields:VT(),partFields:PT(),factory:function(o,n,t,e){function r(n){Zl.getCurrent(n).each(function(n){ad.highlightFirst(n),lg.focusIn(n)})}function i(n){ex(o,function(n){return n},n,e,r,Ay.HighlightFirst).get(Z)}function u(n){var t=Ks(n,o,"button");return io(t),on.some(!0)}var a=An(co([Ii(function(e,n){qs(e,o,"aria-descriptor").each(function(n){var t=Xo("aria");Po(n.element(),"id",t),Po(e.element(),"aria-describedby",t)})})]),rm(on.some(i))),c={repositionMenus:function(n){Cg.isOn(n)&&ux(n)}};return{uid:o.uid,dom:o.dom,components:n,apis:c,eventOrder:N(N({},o.eventOrder),{"alloy.execute":["disabling","toggling","alloy.base.behaviour"]}),events:a,behaviours:Rs(o.splitDropdownBehaviours,[Jy.config({others:{sandbox:function(n){var t=Ks(n,o,"arrow");return ix(o,n,{onOpen:function(){Cg.on(t),Cg.on(n)},onClose:function(){Cg.off(t),Cg.off(n)}})}}}),lg.config({mode:"special",onSpace:u,onEnter:u,onDown:function(n){return i(n),on.some(!0)}}),vg.config({}),Cg.config({toggleOnExecute:!1,aria:{mode:"expanded"}})]),domModification:{attributes:{role:o.role.getOr("button"),"aria-haspopup":!0}}}},apis:{repositionMenus:function(n,t){return n.repositionMenus(t)}}}),LT=Xo("focus-button"),jT=["checklist","ordered-list"],UT=["indent","outdent","table-insert-column-after","table-insert-column-before","unordered-list"],WT=function(n,t,e){return oE(n,{toolbarButtonBehaviours:[].concat(0<e.length?[Kd("toolbarButtonWith",e)]:[]),getApi:ZO,onSetup:n.onSetup},t)},GT=function(n,t,e){return Dn(oE(n,{toolbarButtonBehaviours:[mg.config({}),Cg.config({toggleClass:"tox-tbtn--enabled",aria:{mode:"pressed"},toggleOnExecute:!1})].concat(0<e.length?[Kd("toolbarToggleButtonWith",e)]:[]),getApi:nE,onSetup:n.onSetup},t))},XT=function(n,t,e){var o=t.label.fold(function(){return{}},function(n){return{"aria-label":n}}),r=vm(yy.sketch({inputClasses:["tox-toolbar-textfield","tox-toolbar-nav-js"],data:t.initValue(),inputAttributes:o,selectOnFocus:!0,inputBehaviours:ba([lg.config({mode:"special",onEnter:function(n){return i.findPrimary(n).map(function(n){return io(n),!0})},onLeft:function(n,t){return t.cut(),on.none()},onRight:function(n,t){return t.cut(),on.none()}})])})),i=function(t,n,e){var o=S(n,function(n){return vm(uE(t,n,e))});return{asSpecs:function(){return S(o,function(n){return n.asSpec()})},findPrimary:function(e){return Du(n,function(n,t){return n.primary?on.from(o[t]).bind(function(n){return n.getOpt(e)}).filter(b(Ch.isDisabled)):on.none()})}}}(r,t.commands,e.shared.providers);return KO({type:n,uid:Xo("context-toolbar"),initGroups:[{title:on.none(),items:[r.asSpec()]},{title:on.none(),items:i.asSpecs()}],onEscape:on.none,cyclicKeying:!0,backstage:e,getSink:function(){return an.error("")}})},YT=function(t,e){function n(n){return n.dom()===e.getBody()}var o=we.fromDom(e.selection.getNode());return sE(o,t.inNodeScope).orThunk(function(){return sE(o,t.inEditorScope).orThunk(function(){return function(n,t,e){for(var o=n.dom(),r=dn(e)?e:nn(!1);o.parentNode;){o=o.parentNode;var i=we.fromDom(o),u=t(i);if(u.isSome())return u;if(r(i))break}return on.none()}(o,function(n){return sE(n,t.inNodeScope)},n)})})},qT=function(e,r){function o(t,e){var o=et(function(n){return tt("ContextForm",DT,n)}(e));(n[t]=o).launch.map(function(n){c["form:"+t]=N(N({},e.launch),{type:"contextformtogglebutton"===n.type?"togglebutton":"button",onAction:function(){r(o)}})}),"editor"===o.scope?a.push(o):u.push(o),s[t]=o}function i(t,e){(function(n){return tt("ContextToolbar",AT,n)})(e).each(function(n){"editor"===e.scope?a.push(n):u.push(n),s[t]=n})}var n={},u=[],a=[],c={},s={},t=wn(e);return bn(t,function(n){var t=e[n];"contextform"===t.type?o(n,t):"contexttoolbar"===t.type&&i(n,t)}),{forms:n,inNodeScope:u,inEditorScope:a,lookupTable:s,formNavigators:c}},KT=Xo("forward-slide"),JT=Xo("backward-slide"),$T=Xo("change-slide-event"),QT="tox-pop--resizing";(vE=hE=hE||{})[vE.SemiColon=0]="SemiColon",vE[vE.Space=1]="Space";function ZT(n,t,e,o){return{type:"basic",data:function(n){return S(n,function(n){var t=n,e=n,o=n.split("=");return 1<o.length&&(t=o[0],e=o[1]),{title:t,format:e}})}(function(n,t){return t===hE.SemiColon?n.replace(/;$/,"").split(";"):n.split(" ")}(Nn(n.settings,t).getOr(e),o))}}function nB(e){function t(n){var t=E(RD,function(n){return e.formatter.match(n.format)}).fold(function(){return"left"},function(n){return n.title.toLowerCase()});ro(n,ik,{icon:"align-"+t})}var n=on.some(function(n){return function(){return t(n)}}),o=on.some(function(n){return t(n)}),r=function(n){return{type:"basic",data:n}}(RD);return{tooltip:"Align",icon:on.some("align-left"),isSelectedFor:function(n){return function(){return e.formatter.match(n)}},getCurrentValue:nn(on.none()),getPreviewFor:function(n){return function(){return on.none()}},onAction:lE(e),setInitialValue:o,nodeChangeHandler:n,dataset:r,shouldHide:!1,isInvalid:function(n){return!e.formatter.canApply(n.format)}}}function tB(n){var t=n.split(/\s*,\s*/);return S(t,function(n){return n.replace(/^['"]+|['"]+$/g,"")})}function eB(r){function i(){function e(n){return n?tB(n)[0]:""}var n=r.queryCommandValue("FontName"),t=u.data,o=n?n.toLowerCase():"";return{matchOpt:E(t,function(n){var t=n.format;return t.toLowerCase()===o||e(t).toLowerCase()===e(o).toLowerCase()}).orThunk(function(){return function(n){var t;return 0===n.indexOf("-apple-system")&&(t=tB(n.toLowerCase()),D(VD,function(n){return-1<t.indexOf(n.toLowerCase())}))}(o)?on.from({title:"System Font",format:o}):on.none()}),font:n}}function t(n){var t=i(),e=t.matchOpt,o=t.font,r=e.fold(function(){return o},function(n){return n.title});ro(n,rk,{text:r})}var n=on.some(function(n){return function(){return t(n)}}),e=on.some(function(n){return t(n)}),u=ZT(r,"font_formats","Andale Mono=andale mono,monospace;Arial=arial,helvetica,sans-serif;Arial Black=arial black,sans-serif;Book Antiqua=book antiqua,palatino,serif;Comic Sans MS=comic sans ms,sans-serif;Courier New=courier new,courier,monospace;Georgia=georgia,palatino,serif;Helvetica=helvetica,arial,sans-serif;Impact=impact,sans-serif;Symbol=symbol;Tahoma=tahoma,arial,helvetica,sans-serif;Terminal=terminal,monaco,monospace;Times New Roman=times new roman,times,serif;Trebuchet MS=trebuchet ms,geneva,sans-serif;Verdana=verdana,geneva,sans-serif;Webdings=webdings;Wingdings=wingdings,zapf dingbats",hE.SemiColon);return{tooltip:"Fonts",icon:on.none(),isSelectedFor:function(t){return function(n){return n.exists(function(n){return n.format===t})}},getCurrentValue:function(){return i().matchOpt},getPreviewFor:function(n){return function(){return on.some({tag:"div",styleAttr:-1===n.indexOf("dings")?"font-family:"+n:""})}},onAction:function(n){return function(){r.undoManager.transact(function(){r.focus(),r.execCommand("FontName",!1,n.format)})}},setInitialValue:e,nodeChangeHandler:n,dataset:u,shouldHide:!1,isInvalid:function(){return!1}}}function oB(n,t){return/[0-9.]+px$/.test(n)?function(n,t){var e=Math.pow(10,t);return Math.round(n*e)/e}(72*parseInt(n,10)/96,t||0)+"pt":n}function rB(e){function i(){var o=on.none(),r=u.data,i=e.queryCommandValue("FontSize");if(i)for(var n=function(n){var t=oB(i,n),e=function(n){return V(ND,n).getOr("")}(t);o=E(r,function(n){return n.format===i||n.format===t||n.format===e})},t=3;o.isNone()&&0<=t;t--)n(t);return{matchOpt:o,px:i}}function t(n){var t=i(),e=t.matchOpt,o=t.px,r=e.fold(function(){return o},function(n){return n.title});ro(n,rk,{text:r})}var n=nn(nn(on.none())),o=on.some(function(n){return function(){return t(n)}}),r=on.some(function(n){return t(n)}),u=ZT(e,"fontsize_formats","8pt 10pt 12pt 14pt 18pt 24pt 36pt",hE.Space);return{tooltip:"Font sizes",icon:on.none(),isSelectedFor:function(t){return function(n){return n.exists(function(n){return n.format===t})}},getPreviewFor:n,getCurrentValue:function(){return i().matchOpt},onAction:function(n){return function(){e.undoManager.transact(function(){e.focus(),e.execCommand("FontSize",!1,n.format)})}},setInitialValue:r,nodeChangeHandler:o,dataset:u,shouldHide:!1,isInvalid:function(){return!1}}}function iB(e,n,t){var o=n();return Du(t,function(t){return E(o,function(n){return e.formatter.matchNode(t,n.format)})}).orThunk(function(){return e.formatter.match("p")?on.some({title:"Paragraph",format:"p"}):on.none()})}function uB(n){var t=n.selection.getStart(!0)||n.getBody();return n.dom.getParents(t,function(){return!0},n.getBody())}function aB(o){function e(n,t){var e=function(n){return iB(o,function(){return r.data},n)}(n).fold(function(){return"Paragraph"},function(n){return n.title});ro(t,rk,{text:e})}var n=on.some(function(t){return function(n){return e(n.parents,t)}}),t=on.some(function(n){var t=uB(o);e(t,n)}),r=ZT(o,"block_formats","Paragraph=p;Heading 1=h1;Heading 2=h2;Heading 3=h3;Heading 4=h4;Heading 5=h5;Heading 6=h6;Preformatted=pre",hE.SemiColon);return{tooltip:"Blocks",icon:on.none(),isSelectedFor:function(n){return function(){return o.formatter.match(n)}},getCurrentValue:nn(on.none()),getPreviewFor:function(t){return function(){var n=o.formatter.get(t);return on.some({tag:0<n.length&&(n[0].inline||n[0].block)||"div",styleAttr:o.formatter.getCssText(t)})}},onAction:lE(o),setInitialValue:t,nodeChangeHandler:n,dataset:r,shouldHide:!1,isInvalid:function(n){return!o.formatter.canApply(n.format)}}}function cB(i,n){function e(n,t){var e=function(n){var t=n.items;return t!==undefined&&0<t.length?B(t,e):[{title:n.title,format:n.format}]},o=B(Xk(i),e),r=iB(i,function(){return o},n).fold(function(){return"Paragraph"},function(n){return n.title});ro(t,rk,{text:r})}var t=on.some(function(t){return function(n){return e(n.parents,t)}}),o=on.some(function(n){var t=uB(i);e(t,n)});return{tooltip:"Formats",icon:on.none(),isSelectedFor:function(n){return function(){return i.formatter.match(n)}},getCurrentValue:nn(on.none()),getPreviewFor:function(t){return function(){var n=i.formatter.get(t);return n!==undefined?on.some({tag:0<n.length&&(n[0].inline||n[0].block)||"div",styleAttr:i.formatter.getCssText(t)}):on.none()}},onAction:lE(i),setInitialValue:o,nodeChangeHandler:t,shouldHide:i.getParam("style_formats_autohide",!1,"boolean"),isInvalid:function(n){return!i.formatter.canApply(n.format)},dataset:n}}function sB(o,r){return function(n,t){var e=o(n).mapError(function(n){return le(n)}).getOrDie();return r(e,t)}}function fB(n){var t=n.toolbar,e=n.buttons;return!1===t?[]:t===undefined||!0===t?function(e){var n=S(HD,function(n){var t=C(n.items,function(n){return En(e,n)||En(zD,n)});return{name:n.name,items:t}});return C(n,function(n){return 0<n.items.length})}(e):cn(t)?function(n){var t=n.split("|");return S(t,function(n){return{items:n.trim().split(" ")}})}(t):function(n){return h(n,function(n){return En(n,"name")&&En(n,"items")})}(t)?t:(v.console.error("Toolbar type should be string, string[], boolean or ToolbarGroup[]"),[])}function lB(t,e,o,r,n){return V(e,o.toLowerCase()).orThunk(function(){return n.bind(function(n){return Du(n,function(n){return V(e,n+o.toLowerCase())})})}).fold(function(){return V(zD,o.toLowerCase()).map(function(n){return n(t,r)}).orThunk(function(){return on.none()})},function(n){return function(t,e){return V(PD,t.type).fold(function(){return v.console.error("skipping button defined by",t),on.none()},function(n){return on.some(n(t,e))})}(n,r)})}function dB(e,o,r,i){var n=fB(o),t=S(n,function(n){var t=B(n.items,function(n){return 0===n.trim().length?[]:lB(e,o.buttons,n,r,i).toArray()});return{title:on.from(e.translate(n.name)),items:t}});return C(t,function(n){return 0<n.items.length})}function mB(e){return(Sr(e,"position").is("fixed")?on.none():To(e)).orThunk(function(){var n=we.fromTag("span");Ao(e,n);var t=To(n);return Pi(n),t}).map(du).getOrThunk(function(){return Iu(0,0)})}function gB(t){return function(n){return n.translate(-t.left(),-t.top())}}function pB(t){return function(n){return n.translate(t.left(),t.top())}}function hB(e){return function(n,t){return O(e,function(n,t){return t(n)},Iu(n,t))}}function vB(n,t,e){return n.fold(hB([pB(e),gB(t)]),hB([gB(t)]),hB([]))}function bB(n,t,e){return n.fold(hB([pB(e)]),hB([]),hB([pB(t)]))}function yB(n,t,e){return n.fold(hB([]),hB([gB(e)]),hB([pB(t),gB(e)]))}function xB(n,t,e){return n.fold(function(n,t){return{position:"absolute",left:n+"px",top:t+"px"}},function(n,t){return{position:"absolute",left:n-e.left()+"px",top:t-e.top()+"px"}},function(n,t){return{position:"fixed",left:n+"px",top:t+"px"}})}function wB(n,i,u,a){function t(o,r){return function(n,t){var e=o(i,u,a);return r(n.getOr(e.left()),t.getOr(e.top()))}}return n.fold(t(yB,ZD.offset),t(bB,ZD.absolute),t(vB,ZD.fixed))}function SB(n,t){var e=n.element();fr(e,t.transitionClass),dr(e,t.fadeOutClass),fr(e,t.fadeInClass),t.onShow(n)}function CB(n,t){var e=n.element();fr(e,t.transitionClass),dr(e,t.fadeInClass),fr(e,t.fadeOutClass),t.onHide(n)}function kB(n,t,e){return D(n,function(n){switch(n){case"bottom":return function(n,t){return n.bottom()<=t.bottom()}(t,e);case"top":return function(n,t){return n.y()>=t.y()}(t,e)}})}function OB(n,t){return Lo(n,t)?on.some(parseInt(zo(n,t),10)):on.none()}function EB(r,n){return OB(r,n.leftAttr).bind(function(o){return OB(r,n.topAttr).map(function(n){var t=mu(r),e=su(r);return yu(o,n,t,e)})})}function TB(n,t,e){var o=zo(n,t.positionAttr);switch(function(n,t){jo(n,t.leftAttr),jo(n,t.topAttr),jo(n,t.positionAttr)}(n,t),o){case"static":return on.some(oA["static"]());case"absolute":return on.some(oA.absolute(e.x(),e.y()));default:return on.none()}}function BB(n,t,e,o,r){var i=xu(n);if(kB(t.modes,i,e))return on.none();var u=r(),a=wr(n,"position");!function(n,t,e,o,r){Po(n,t.leftAttr,e),Po(n,t.topAttr,o),Po(n,t.positionAttr,r)}(n,t,i.x(),i.y(),a);var c=tA(i.x(),i.y()),s=vB(c,o,u),f=tA(e.x(),e.y()),l=vB(f,o,u),d=i.y()<=e.y()?l.top():l.top()+e.height()-i.height();return on.some(oA.fixed(s.left(),d))}function DB(n,t,e,o,r){var i=n.element();return Sr(i,"position").is("fixed")?function(t,e,o){return EB(t,e).filter(function(n){return kB(e.modes,n,o)}).bind(function(n){return TB(t,e,n)})}(i,t,e):BB(i,t,e,o,r)}function AB(t,n){bn(["left","top","position"],function(n){return kr(t.element(),n)}),n.onUndocked(t)}function _B(n,t,e,o,r){var i=xB(r,0,o);xr(n.element(),i),("fixed"===i.position?t.onDocked:t.onUndocked)(n)}function MB(o,n,r,i,u){void 0===u&&(u=!1),n.contextual.each(function(e){e.lazyContext(o).each(function(n){var t=function(n,t){return n.y()<t.bottom()&&n.bottom()>t.y()}(n,i);t!==r.isVisible()&&(r.setVisible(t),u&&!t?(gr(o.element(),[e.fadeOutClass]),e.onHide(o)):(t?SB:CB)(o,e))})})}function FB(r,i,n){var u=r.element();n.setDocked(!1),function(n,t){var e=n.element();return EB(e,t).bind(function(n){return TB(e,t,n)})}(r,i).each(function(n){n.fold(function(){return AB(r,i)},function(n,t){var e=Co(u),o=(pu(e),mB(u));_B(r,i,0,o,tA(n,t))},Z)}),n.setVisible(!0),i.contextual.each(function(n){pr(u,[n.fadeInClass,n.fadeOutClass,n.transitionClass]),n.onShow(r)}),rA(r,i,n)}function IB(n,t,e){e.isDocked()&&FB(n,t,e)}function RB(o){var r=o.element();Eo(r).each(function(n){if(cA.isDocked(o)){var t=mu(n);yr(r,"width",t+"px");var e=fu(r);yr(n,"padding-top",e+"px")}else kr(r,"width"),kr(n,"padding-top")})}function VB(n,t){t?(dr(n,sA.fadeOutClass),gr(n,[sA.transitionClass,sA.fadeInClass])):(dr(n,sA.fadeInClass),gr(n,[sA.fadeOutClass,sA.transitionClass]))}function NB(n,t){var e=we.fromDom(n.getContainer());t?(fr(e,fA),dr(e,lA)):(fr(e,lA),dr(e,fA))}function HB(i,e){function o(t){e().each(function(n){return t(n.element())})}function n(n){i.inline||RB(n),NB(i,cA.isDocked(n)),n.getSystem().broadcastOn([jf()],{}),e().each(function(n){return n.getSystem().broadcastOn([jf()],{})})}var r=ye(on.none()),t=i.inline?[]:function(){var n;return[lc.config({channels:(n={},n[mT()]={onReceive:RB},n)})]}();return g([vg.config({}),cA.config({leftAttr:"data-dock-left",topAttr:"data-dock-top",positionAttr:"data-dock-pos",contextual:N({lazyContext:function(n){var t=fu(n.element()),e=i.inline?i.getContentAreaContainer():i.getContainer(),o=xu(we.fromDom(e)),r=o.height()-t;return on.some(yu(o.x(),o.y(),o.width(),r))},onShow:function(){o(function(n){return VB(n,!0)})},onShown:function(t){o(function(n){return pr(n,[sA.transitionClass,sA.fadeInClass])}),r.get().each(function(n){!function(t,e){var o=Co(e);Sa(o).filter(function(n){return!jt(e,n)}).filter(function(n){return jt(n,we.fromDom(o.dom().body))||Ye(t,n)}).each(function(){return wa(e)})}(t.element(),n),r.set(on.none())})},onHide:function(n){r.set(function(n,t){return Ca(n).orThunk(function(){return t().toOption().bind(function(n){return Ca(n.element())})})}(n.element(),e)),o(function(n){return VB(n,!1)})},onHidden:function(){o(function(n){return pr(n,[sA.transitionClass])})}},sA),modes:["top"],onDocked:n,onUndocked:n})],t)}function PB(n){return"<alloy.field."+n+">"}function zB(n){return{element:function(){return n.element().dom()}}}function LB(e,o){var r=S(wn(o),function(n){var t=o[n],e=et(function(n){return tt("sidebar",CA,n)}(t));return{name:n,getApi:zB,onSetup:e.onSetup,onShow:e.onShow,onHide:e.onHide}});return S(r,function(n){var t=ye(Z);return e.slot(n.name,{dom:{tag:"div",classes:["tox-sidebar__pane"]},behaviours:Jp([Ep(n,t),Tp(n,t),lo(Bi(),function(t,n){var e=n.event();E(r,function(n){return n.name===e.name()}).each(function(n){(e.visible()?n.onShow:n.onHide)(n.getApi(t))})})])})})}function jB(n,t){Zl.getCurrent(n).each(function(n){return mg.set(n,[function(t){return SA.sketch(function(n){return{dom:{tag:"div",classes:["tox-sidebar__pane-container"]},components:LB(n,t),slotBehaviours:Jp([Ii(function(n){return SA.hideAllSlots(n)})])}})}(t)])})}function UB(n){return Zl.getCurrent(n).bind(function(n){return cT.isGrowing(n)||cT.hasGrown(n)?Zl.getCurrent(n).bind(function(t){return E(SA.getSlotNames(t),function(n){return SA.isShowing(t,n)})}):on.none()})}function WB(n,t,e){var o=n.element();!0===t?(mg.set(n,[function(n){return{dom:{tag:"div",attributes:{"aria-label":n.translate("Loading...")},classes:["tox-throbber__busy-spinner"]},components:[{dom:cp('<div class="tox-spinner"><div></div><div></div><div></div></div>')}],behaviours:ba([lg.config({mode:"special",onTab:function(){return on.some(!0)},onShiftTab:function(){return on.some(!0)}}),vg.config({})])}}(e)]),kr(o,"display"),jo(o,"aria-hidden")):(mg.set(n,[]),yr(o,"display","none"),Po(o,"aria-hidden","true"))}function GB(n){return"string"==typeof n?n.split(" "):n}function XB(e,o){var r=An(IA,o.menus),t=0<wn(o.menus).length,n=o.menubar===undefined||!0===o.menubar?GB("file edit view insert format tools table help"):GB(!1===o.menubar?"":o.menubar),i=C(n,function(n){return t&&o.menus.hasOwnProperty(n)&&o.menus[n].hasOwnProperty("items")||IA.hasOwnProperty(n)}),u=S(i,function(n){var t=r[n];return function(n,e,t){var o=function(n){return n.getParam("removed_menuitems","")}(t).split(/[ ,]/);return{text:n.title,getItems:function(){return B(n.items,function(n){var t=n.toLowerCase();return 0===t.trim().length?[]:x(o,function(n){return n===t})?[]:"separator"===t||"|"===t?[{type:"separator"}]:e.menuItems[t]?[e.menuItems[t]]:[]})}}}({title:t.title,items:GB(t.items)},o,e)});return C(u,function(n){return 0<n.getItems().length&&x(n.getItems(),function(n){return"separator"!==n.type})})}function YB(n,t){var e,o=function(n){var t=n.settings,e=t.skin,o=t.skin_url;if(!1!==e){var r=e||"oxide";o=o?n.documentBaseURI.toAbsolute(o):Gb.baseURL+"/skins/ui/"+r}return o}(t);o&&(e=o+"/skin.min.css",t.contentCSS.push(o+(n?"/content.inline":"/content")+".min.css")),!1===function(n){return!1===n.getParam("skin")}(t)&&e?Rh.DOM.styleSheetLoader.load(e,RA(t)):RA(t)()}function qB(t,n,e,o){var r=n.outerContainer,i=e.toolbar,u=e.buttons;if(h(i,cn)){var a=i.map(function(n){return dB(t,{toolbar:n,buttons:u},{backstage:o},on.none())});FA.setToolbars(r,a)}else FA.setToolbar(r,dB(t,e,{backstage:o},on.none()))}function KB(n){return function(n){var t=Fb(n),e=Vb(n),o=Hb(n);return UA(t).map(function(n){return jA(n,e,o)})}(n).getOr(Fb(n))}function JB(n){var t=Ib(n),e=Rb(n),o=Nb(n);return UA(t).map(function(n){return jA(n,e,o)})}function $B(n,t){return function(){n.execCommand("mceToggleFormat",!1,t)}}function QB(n){!function(e){yk.each([{name:"bold",text:"Bold",icon:"bold"},{name:"italic",text:"Italic",icon:"italic"},{name:"underline",text:"Underline",icon:"underline"},{name:"strikethrough",text:"Strikethrough",icon:"strike-through"},{name:"subscript",text:"Subscript",icon:"subscript"},{name:"superscript",text:"Superscript",icon:"superscript"}],function(n,t){e.ui.registry.addToggleButton(n.name,{tooltip:n.text,icon:n.icon,onSetup:fE(e,n.name),onAction:$B(e,n.name)})});for(var n=1;n<=6;n++){var t="h"+n;e.ui.registry.addToggleButton(t,{text:t.toUpperCase(),tooltip:"Heading "+n,onSetup:fE(e,t),onAction:$B(e,t)})}}(n),function(t){yk.each([{name:"cut",text:"Cut",action:"Cut",icon:"cut"},{name:"copy",text:"Copy",action:"Copy",icon:"copy"},{name:"paste",text:"Paste",action:"Paste",icon:"paste"},{name:"help",text:"Help",action:"mceHelp",icon:"help"},{name:"selectall",text:"Select all",action:"SelectAll",icon:"select-all"},{name:"newdocument",text:"New document",action:"mceNewDocument",icon:"new-document"},{name:"removeformat",text:"Clear formatting",action:"RemoveFormat",icon:"remove-formatting"},{name:"remove",text:"Remove",action:"Delete",icon:"remove"}],function(n){t.ui.registry.addButton(n.name,{tooltip:n.text,icon:n.icon,onAction:function(){return t.execCommand(n.action)}})})}(n),function(t){yk.each([{name:"blockquote",text:"Blockquote",action:"mceBlockQuote",icon:"quote"}],function(n){t.ui.registry.addToggleButton(n.name,{tooltip:n.text,icon:n.icon,onAction:function(){return t.execCommand(n.action)},onSetup:fE(t,n.name)})})}(n)}function ZB(n,t,e){function o(){return!!t.undoManager&&t.undoManager[e]()}function r(){n.setDisabled(t.readonly||!o())}return n.setDisabled(!o()),t.on("Undo Redo AddUndo TypingUndo ClearUndos SwitchMode",r),function(){return t.off("Undo Redo AddUndo TypingUndo ClearUndos SwitchMode",r)}}function nD(n,t){return{anchor:"makeshift",x:n,y:t}}function tD(n){return"longpress"===n.type||0===n.type.indexOf("touch")}function eD(n,t){var e=Rh.DOM.getPos(n);return function(n,t,e){return nD(n.x+t,n.y+e)}(t,e.x,e.y)}function oD(n,t){return"contextmenu"===t.type?n.inline?function(n){if(tD(n)){var t=n.touches[0];return nD(t.pageX,t.pageY)}return nD(n.pageX,n.pageY)}(t):eD(n.getContentAreaContainer(),function(n){if(tD(n)){var t=n.touches[0];return nD(t.clientX,t.clientY)}return nD(n.clientX,n.clientY)}(t)):ZA(n)}function rD(n){return{anchor:"node",node:on.some(we.fromDom(n.selection.getNode())),root:we.fromDom(n.getBody())}}function iD(n,t,e,o,r,i){var u=e(),a=function(n,t,e){return e?rD(n):oD(n,t)}(n,t,i);NC(u,Fh.CLOSE_ON_EXECUTE,o,!1).map(function(n){t.preventDefault(),jg.showMenuAt(r,a,{menu:{markers:wv("normal")},data:n})})}function uD(t,e,n,o,r,i){var u=function(n,t){var e=t?rD(n):ZA(n);return N({bubble:Oa(0,12,t_),layouts:n_,overrides:{maxWidthFunction:RE(),maxHeightFunction:Cf()}},e)}(t,i);NC(n,Fh.CLOSE_ON_EXECUTE,o,!0).map(function(n){e.preventDefault(),jg.showMenuWithinBounds(r,u,{menu:{markers:wv("normal")},data:n,type:"horizontal"},function(){return on.some(cE(t))}),t.fire(YE)})}function aD(t,e,o,r,i,u){function n(){var n=o();uD(t,e,n,r,i,u)}var a=Ht(),c=a.os.isiOS(),s=a.os.isOSX(),f=a.os.isAndroid();if(!s&&!c||u)f&&!u&&t.selection.setCursorLocation(e.target,0),n();else{var l=function(){!function(n){function t(){qg.setEditorTimeout(n,function(){n.selection.setRng(e)},10),i()}var e=n.selection.getRng();n.once("touchend",t);function o(n){n.preventDefault(),n.stopImmediatePropagation()}n.on("mousedown",o,!0);function r(){return i()}n.once("longpresscancel",r);var i=function(){n.off("touchend",t),n.off("longpresscancel",r),n.off("mousedown",o)}}(t),n()};!function(n,t){var e=n.selection;if(e.isCollapsed()||t.touches.length<1)return!1;var o=t.touches[0],r=e.getRng();return Uc(n.getWin(),Tc.domRange(r)).exists(function(n){return n.left()<=o.clientX&&n.right()>=o.clientX&&n.top()<=o.clientY&&n.bottom()>=o.clientY})}(t,e)?(t.once("selectionchange",l),t.once("touchend",function(){return t.off("selectionchange",l)})):l()}}function cD(n){return"string"==typeof n?n.split(/[ ,]/):n}function sD(n){return cn(n)?"|"===n:"separator"===n.type}function fD(n,t){if(0===t.length)return n;var e=F(n).filter(function(n){return!sD(n)}).fold(function(){return[]},function(n){return[i_]});return n.concat(e).concat(t).concat([i_])}function lD(i,n,t){function e(n){return jg.hide(a)}function o(o){var n="longpress"===o.type;if(e_(i)&&o.preventDefault(),!function(n,t){return t.ctrlKey&&!e_(n)}(i,o)&&!r_(i)){var r=!n&&(2!==o.button||o.target===i.getBody());(u()?aD:iD)(i,o,function(){var n=r?i.selection.getStart(!0):o.target,t=i.ui.registry.getAll(),e=o_(i);return function(r,n,i){var t=O(n,function(n,t){if(En(r,t)){var e=r[t].update(i);if(cn(e))return fD(n,e.split(" "));if(0<e.length){var o=S(e,u_);return fD(n,o)}return n}return n.concat([t])},[]);return 0<t.length&&sD(t[t.length-1])&&t.pop(),t}(t.contextMenus,e,n)},t,a,r)}}var u=Ht().deviceType.isTouch,a=uu(jg.sketch({dom:{tag:"div"},lazySink:n,onEscape:function(){return i.focus()},onShow:function(){return t.setContextMenuState(!0)},onHide:function(){return t.setContextMenuState(!1)},fireDismissalEventInstead:{},inlineBehaviours:ba([Kd("dismissContextMenu",[lo(Oi(),function(n,t){zf.close(n),i.focus()})])])}));i.on("init",function(){var n="ResizeEditor ScrollContent ScrollWindow longpresscancel"+(u()?"":" ResizeWindow");i.on(n,e),i.on(u()?"longpress":"longpress contextmenu",o)})}function dD(n,t){n.getSystem().addToGui(t),function(n){Eo(n.element()).filter(Hr).each(function(t){Sr(t,"z-index").each(function(n){Po(t,a_,n)}),yr(t,"z-index",wr(n.element(),"z-index"))})}(t)}function mD(n){!function(n){Eo(n.element()).filter(Hr).each(function(n){var t=zo(n,a_);Lo(n,a_)?yr(n,"z-index",t):kr(n,"z-index"),jo(n,a_)})}(n),n.getSystem().removeFromGui(n)}function gD(n,t,e){return n.getSystem().build(Wb.sketch({dom:{styles:{left:"0px",top:"0px",width:"100%",height:"100%",position:"fixed","z-index":"1000000000000000"},classes:[t]},events:e}))}function pD(n,t,e,o){return function(n,t){var e=n.element(),o=parseInt(zo(e,t.leftAttr),10),r=parseInt(zo(e,t.topAttr),10);return isNaN(o)||isNaN(r)?on.none():on.some(Iu(o,r))}(n,t).fold(function(){return e},function(n){return eA(n.left()+o.left(),n.top()+o.top())})}function hD(n,t,e,o,r,i){var u=pD(n,t,e,o),a=t.mustSnap?f_(n,t,u,r,i):l_(n,t,u,r,i),c=vB(u,r,i);return function(n,t,e){var o=n.element();Po(o,t.leftAttr,e.left()+"px"),Po(o,t.topAttr,e.top()+"px")}(n,t,c),a.fold(function(){return{coord:eA(c.left(),c.top()),extra:on.none()}},function(n){return{coord:n.output(),extra:n.extra()}})}function vD(n,t){!function(n,t){var e=n.element();jo(e,t.leftAttr),jo(e,t.topAttr)}(n,t)}function bD(n,e,o,r){return Du(n,function(n){var t=n.sensor();return function(n,t,e,o,r,i){var u=bB(n,r,i),a=bB(t,r,i);return Math.abs(u.left()-a.left())<=e&&Math.abs(u.top()-a.top())<=o}(e,t,n.range().left(),n.range().top(),o,r)?on.some({output:nn(wB(n.output(),e,o,r)),extra:n.extra}):on.none()})}function yD(t){return function(n,t,e,o){return n.isSome()&&t.isSome()&&e.isSome()?on.some(o(n.getOrDie(),t.getOrDie(),e.getOrDie())):on.none()}(Sr(t,"left"),Sr(t,"top"),Sr(t,"position"),function(n,t,e){return("fixed"===e?eA:nA)(parseInt(n,10),parseInt(t,10))}).getOrThunk(function(){var n=du(t);return tA(n.left(),n.top())})}function xD(e,n,o,r,i,u,t){return function(n,t,e,o,r){var i=r.bounds,u=bB(t,e,o),a=us(u.left(),i.x(),i.x()+i.width()-r.width),c=us(u.top(),i.y(),i.y()+i.height()-r.height),s=tA(a,c);return t.fold(function(){var n=yB(s,e,o);return nA(n.left(),n.top())},function(){return s},function(){var n=vB(s,e,o);return eA(n.left(),n.top())})}(0,n.fold(function(){var n=function(n,e,o){return n.fold(function(n,t){return ZD.offset(n+e,t+o)},function(n,t){return ZD.absolute(n+e,t+o)},function(n,t){return ZD.fixed(n+e,t+o)})}(o,u.left(),u.top()),t=vB(n,r,i);return eA(t.left(),t.top())},function(t){var n=hD(e,t,o,u,r,i);return n.extra.each(function(n){t.onSensor(e,n)}),n.coord}),r,i,t)}function wD(n,t){return{bounds:n.getBounds(),height:fu(t.element()),width:gu(t.element())}}function SD(t,e,n,o,r){var i=n.update(o,r),u=n.getStartData().getOrThunk(function(){return wD(e,t)});i.each(function(n){!function(n,t,e,o){var r=t.getTarget(n.element());if(t.repositionTarget){var i=Co(n.element()),u=pu(i),a=mB(r),c=yD(r),s=xD(n,t.snaps,c,u,a,o,e),f=xB(s,0,a);xr(r,f)}t.onDrag(n,r,o)}(t,e,u,n)})}function CD(t,n,e,o){n.each(mD),e.snaps.each(function(n){vD(t,n)});var r=e.getTarget(t.element());o.reset(),e.onDrop(t,r)}function kD(n){return function(t,e){function o(n){e.setStartData(wD(t,n))}return co(g([lo(wi(),function(n){e.getStartData().each(function(){return o(n)})})],n(t,e,o)))}}function OD(u,a,c){return[lo(Yr(),function(t,n){if(0===n.event().raw().button){n.stop();var e=function(){return CD(t,on.some(i),u,a)},o=hb(e,200),r={drop:e,delayDrop:o.schedule,forceDrop:e,move:function(n){o.cancel(),SD(t,u,a,d_,n)}},i=gD(t,u.blockerClass,function(e){return co([lo(Yr(),e.forceDrop),lo(Jr(),e.drop),lo(qr(),function(n,t){e.move(t.event())}),lo(Kr(),e.delayDrop)])}(r));c(t),dD(t,i)}})]}function ED(i,u,a){var c=ye(on.none());return[lo(Ur(),function(t,n){n.stop();function e(){CD(t,c.get(),i,u),c.set(on.none())}var o={drop:e,delayDrop:function(){},forceDrop:e,move:function(n){SD(t,i,u,g_,n)}},r=gD(t,i.blockerClass,function(e){return co([lo(Ur(),e.forceDrop),lo(Gr(),e.drop),lo(Xr(),e.drop),lo(Wr(),function(n,t){e.move(t.event())})])}(o));c.set(on.some(r));a(t),dD(t,r)}),lo(Wr(),function(n,t){t.stop(),SD(n,i,u,g_,t.event())}),lo(Gr(),function(n,t){t.stop(),CD(n,c.get(),i,u),c.set(on.none())}),lo(Xr(),function(n){CD(n,c.get(),i,u),c.set(on.none())})]}function TD(n,r,i,u,t,e){return n.fold(function(){return w_.snap({sensor:tA(i-20,u-20),range:Iu(t,e),output:tA(on.some(i),on.some(u)),extra:{td:r}})},function(n){var t=i-20,e=u-20,o=n.element().dom().getBoundingClientRect();return w_.snap({sensor:tA(t,e),range:Iu(40,40),output:tA(on.some(i-o.width/2),on.some(u-o.height/2)),extra:{td:r}})})}function BD(n,o,r){return{getSnapPoints:n,leftAttr:"data-drag-left",topAttr:"data-drag-top",onSensor:function(n,t){var e=t.td;!function(n,t){return n.exists(function(n){return jt(n,t)})}(o.get(),e)&&(o.set(on.some(e)),r(e))},mustSnap:!0}}function DD(n){return vm(Gg.sketch({dom:{tag:"div",classes:["tox-selector"]},buttonBehaviours:ba([w_.config({mode:"mouseOrTouch",blockerClass:"blocker",snaps:n}),Ew.config({})]),eventOrder:{mousedown:["dragging","alloy.base.behaviour"],touchstart:["dragging","alloy.base.behaviour"]}}))}var AD,_D,MD,FD,ID,RD=[{title:"Left",icon:"align-left",format:"alignleft"},{title:"Center",icon:"align-center",format:"aligncenter"},{title:"Right",icon:"align-right",format:"alignright"},{title:"Justify",icon:"align-justify",format:"alignjustify"}],VD=["-apple-system","Segoe UI","Roboto","Helvetica Neue","sans-serif"],ND={"8pt":"1","10pt":"2","12pt":"3","14pt":"4","18pt":"5","24pt":"6","36pt":"7"},HD=[{name:"history",items:["undo","redo"]},{name:"styles",items:["styleselect"]},{name:"formatting",items:["bold","italic"]},{name:"alignment",items:["alignleft","aligncenter","alignright","alignjustify"]},{name:"indentation",items:["outdent","indent"]},{name:"permanent pen",items:["permanentpen"]},{name:"comments",items:["addcomment"]}],PD={button:sB(JO,function(n,t){return function(n,t){return WT(n,t,[])}(n,t.backstage.shared.providers)}),togglebutton:sB(QO,function(n,t){return function(n,t){return GT(n,t,[])}(n,t.backstage.shared.providers)}),menubutton:sB($O,function(n,t){return PC(n,"tox-tbtn",t.backstage,on.none())}),splitbutton:sB(function(n){return tt("SplitButton",xT,n)},function(n,t){return rE(n,t.backstage.shared)}),styleSelectButton:function(n,t){return function(n,t){var e=N({type:"advanced"},t.styleselect);return mE(n,t,cB(n,e))}(n,t.backstage)},fontsizeSelectButton:function(n,t){return function(n,t){return mE(n,t,rB(n))}(n,t.backstage)},fontSelectButton:function(n,t){return function(n,t){return mE(n,t,eB(n))}(n,t.backstage)},formatButton:function(n,t){return function(n,t){return mE(n,t,aB(n))}(n,t.backstage)},alignMenuButton:function(n,t){return function(n,t){return mE(n,t,nB(n))}(n,t.backstage)}},zD={styleselect:PD.styleSelectButton,fontsizeselect:PD.fontsizeSelectButton,fontselect:PD.fontSelectButton,formatselect:PD.formatButton,align:PD.alignMenuButton},LD={valignCentre:[],alignCentre:[],alignLeft:["tox-pop--align-left"],alignRight:["tox-pop--align-right"],right:["tox-pop--right"],left:["tox-pop--left"],bottom:["tox-pop--bottom"],top:["tox-pop--top"]},jD={maxHeightFunction:Cf(),maxWidthFunction:RE()},UD={onLtr:function(){return[oc,rc,ca,ua,sa,aa,Ug,Wg,pm,mm,hm,gm]},onRtl:function(){return[oc,rc,sa,aa,ca,ua,Ug,Wg,hm,gm,pm,mm]}},WD={onLtr:function(){return[rc,ua,aa,ca,sa,oc,Ug,Wg,pm,mm,hm,gm]},onRtl:function(){return[rc,aa,ua,sa,ca,oc,Ug,Wg,hm,gm,pm,mm]}},GD=function(u,n,e,a){function c(){return cE(u)}function s(){if(l()&&a.backstage.isContextMenuOpen())return!0;var n=function(){var n=g.get().map(function(n){return n.getBoundingClientRect()}).getOrThunk(function(){return u.selection.getRng().getBoundingClientRect()}),t=u.inline?pu().top():wu(we.fromDom(u.getBody())).y();return{y:n.top+t,bottom:n.bottom+t}}(),t=c();return!function(n,t,e,o){return Math.max(n,e)<=Math.min(t,o)}(n.y,n.bottom,t.y(),t.bottom())}function t(){jg.hide(d)}function o(){m.get().each(function(n){var t=d.element();kr(t,"display"),s()?yr(t,"display","none"):Af.positionWithinBounds(e,n,d,on.some(c()))})}function f(n){return{dom:{tag:"div",classes:["tox-pop__dialog"]},components:[n],behaviours:ba([lg.config({mode:"acyclic"}),Kd("pop-dialog-wrap-events",[Ii(function(n){u.shortcuts.add("ctrl+F9","focus statusbar",function(){return lg.focusIn(n)})}),Ri(function(n){u.shortcuts.remove("ctrl+F9")})])])}}var l=Ht().deviceType.isTouch,d=uu(function(n){var e=ye([]);return jg.sketch({dom:{tag:"div",classes:["tox-pop"]},fireDismissalEventInstead:{event:"doNotDismissYet"},onShow:function(n){e.set([]),jg.getContent(n).each(function(n){kr(n.element(),"visibility")}),dr(n.element(),QT),kr(n.element(),"width")},inlineBehaviours:ba([Kd("context-toolbar-events",[bo(ii(),function(n,t){jg.getContent(n).each(function(n){}),dr(n.element(),QT),kr(n.element(),"width")}),lo($T,function(t,e){kr(t.element(),"width");var n=mu(t.element());jg.setContent(t,e.event().contents()),fr(t.element(),QT);var o=mu(t.element());yr(t.element(),"width",n+"px"),jg.getContent(t).each(function(n){e.event().focus().bind(function(n){return wa(n),Ca(t.element())}).orThunk(function(){return lg.focusIn(n),Sa()})}),qg.setTimeout(function(){yr(t.element(),"width",o+"px")},0)}),lo(KT,function(n,t){jg.getContent(n).each(function(n){e.set(e.get().concat([{bar:n,focus:Sa()}]))}),ro(n,$T,{contents:t.event().forwardContents(),focus:on.none()})}),lo(JT,function(t,n){F(e.get()).each(function(n){e.set(e.get().slice(0,e.get().length-1)),ro(t,$T,{contents:au(n.bar),focus:n.focus})})})]),lg.config({mode:"special",onEscape:function(t){return F(e.get()).fold(function(){return n.onEscape()},function(n){return oo(t,JT),on.some(!0)})}})]),lazySink:function(){return an.value(n.sink)}})}({sink:e,onEscape:function(){return u.focus(),on.some(!0)}})),m=ye(on.none()),g=ye(on.none()),r=ye(null),p=L(function(){return qT(n,function(n){var t=h(n);ro(d,KT,{forwardContents:f(t)})})}),h=function(n){var t,e,o=u.ui.registry.getAll().buttons,r=Yb(u)===jb.scrolling?jb.scrolling:jb["default"],i=p();return"contexttoolbar"===n.type?(t=An(o,i.formNavigators),e=dB(u,{buttons:t,toolbar:n.items},a,on.some(["form:"])),KO({type:r,uid:Xo("context-toolbar"),initGroups:e,onEscape:on.none,cyclicKeying:!0,backstage:a.backstage,getSink:function(){return an.error("")}})):XT(r,n,a.backstage)};u.on("contexttoolbar-show",function(t){var n=p();Nn(n.lookupTable,t.toolbarKey).each(function(n){y(n,t.target===u?on.none():on.some(t)),jg.getContent(d).each(lg.focusIn)})});function v(n,t){var e="node"===n?a.backstage.shared.anchors.node(t):a.backstage.shared.anchors.cursor();return Dn(e,function(n,t){return"line"===n?{bubble:Oa(12,0,LD),layouts:{onLtr:function(){return[fa]},onRtl:function(){return[la]}},overrides:jD}:{bubble:Oa(0,12,LD),layouts:t?WD:UD,overrides:jD}}(n,l()))}function i(){var n=p();YT(n,u).fold(function(){m.set(on.none()),jg.hide(d)},function(n){y(n.toolbarApi,on.some(n.elem.dom()))})}function b(n){x(),r.set(n)}var y=function(n,t){if(x(),!l()||!a.backstage.isContextMenuOpen()){var e=h(n),o=t.map(we.fromDom),r=v(n.position,o);m.set(on.some(r)),g.set(t);var i=d.element();kr(i,"display"),jg.showWithinBounds(d,r,f(e),function(){return on.some(c())}),s()&&yr(i,"display","none")}},x=function(){var n=r.get();null!==n&&(qg.clearTimeout(n),r.set(null))};u.on("init",function(){u.on(YE,t),u.on("ScrollContent ScrollWindow longpress",o),u.on("click keyup SetContent ObjectResized ResizeEditor",function(n){b(qg.setEditorTimeout(u,i,0))}),u.on("focusout",function(n){qg.setEditorTimeout(u,function(){Ca(e.element()).isNone()&&Ca(d.element()).isNone()&&(m.set(on.none()),jg.hide(d))},0)}),u.on("SwitchMode",function(){u.readonly&&(m.set(on.none()),jg.hide(d))}),u.on("NodeChange",function(n){Ca(d.element()).fold(function(){b(qg.setEditorTimeout(u,i,0))},function(n){})})})},XD=function(n,o,r){function t(t,e){bn([o,r],function(n){n.broadcastEvent(t,e)})}function e(t,e){bn([o,r],function(n){n.broadcastOn([t],e)})}function i(n){return e(Lf(),{target:n.target()})}function u(n){return e(Lf(),{target:we.fromDom(n.target)})}function a(n){0===n.button&&e(Uf(),{target:we.fromDom(n.target)})}function c(n){return t(wi(),pb(n))}function s(n){e(jf(),{}),t(Si(),pb(n))}function f(){return e(jf(),{})}var l=sb(we.fromDom(v.document),"touchstart",i),d=sb(we.fromDom(v.document),"touchmove",function(n){return t(yi(),n)}),m=sb(we.fromDom(v.document),"touchend",function(n){return t(xi(),n)}),g=sb(we.fromDom(v.document),"mousedown",i),p=sb(we.fromDom(v.document),"mouseup",function(n){0===n.raw().button&&e(Uf(),{target:n.target()})});n.on("PostRender",function(){n.on("click",u),n.on("tap",u),n.on("mouseup",a),n.on("ScrollWindow",c),n.on("ResizeWindow",s),n.on("ResizeEditor",f)}),n.on("remove",function(){n.off("click",u),n.off("tap",u),n.off("mouseup",a),n.off("ScrollWindow",c),n.off("ResizeWindow",s),n.off("ResizeEditor",f),g.unbind(),l.unbind(),d.unbind(),m.unbind(),p.unbind()}),n.on("detach",function(){ws(o),ws(r),o.destroy(),r.destroy()})},YD=Tl,qD=Ol,KD=nn([St("shell",!1),ct("makeItem"),St("setupItem",Z),nl("listBehaviours",[mg])]),JD=Sl({name:"items",overrides:function(n){return{behaviours:ba([mg.config({})])}}}),$D=nn([JD]),QD=Al({name:nn("CustomList")(),configFields:KD(),partFields:$D(),factory:function(s,n,t,e){var o=s.shell?{behaviours:[mg.config({})],components:[]}:{behaviours:[],components:n},r=function(n){return s.shell?on.some(n):qs(n,s,"items")};return{uid:s.uid,dom:s.dom,components:o.components,behaviours:Rs(s.listBehaviours,o.behaviours),apis:{setItems:function(a,c){r(a).fold(function(){throw v.console.error("Custom List was defined to not be a shell, but no item container was specified in components"),new Error("Custom List was defined to not be a shell, but no item container was specified in components")},function(t){var n=mg.contents(t),e=c.length,o=e-n.length,r=0<o?function(n,t){for(var e=[],o=0;o<n;o++)e.push(t(o));return e}(o,function(){return s.makeItem()}):[],i=n.slice(e);bn(i,function(n){return mg.remove(t,n)}),bn(r,function(n){return mg.append(t,n)});var u=mg.contents(t);bn(u,function(n,t){s.setupItem(a,n,c[t],t)})})}}}},apis:{setItems:function(n,t,e){n.setItems(t,e)}}}),ZD=Tn([{offset:["x","y"]},{absolute:["x","y"]},{fixed:["x","y"]}]),nA=ZD.offset,tA=ZD.absolute,eA=ZD.fixed,oA=Tn([{"static":[]},{absolute:["x","y"]},{fixed:["x","y"]}]),rA=function(n,t,e){n.getSystem().isConnected()&&function(e,o,r){var i=o.lazyViewport(e),n=e.element(),t=Co(n),u=pu(t),a=L(function(){return mB(n)}),c=r.isDocked();c&&MB(e,o,r,i),DB(e,o,i,u,a).each(function(n){r.setDocked(!c),n.fold(function(){return AB(e,o)},function(n,t){return _B(e,o,0,a(),tA(n,t))},function(n,t){MB(e,o,r,i,!0),_B(e,o,0,a(),eA(n,t))})})}(n,t,e)},iA=/* */Object.freeze({refresh:rA,reset:IB,isDocked:function(n,t,e){return e.isDocked()}}),uA=/* */Object.freeze({events:function(o,r){return co([bo(ii(),function(t,e){o.contextual.each(function(n){mr(t.element(),n.transitionClass)&&(pr(t.element(),[n.transitionClass,n.fadeInClass]),(r.isVisible()?n.onShown:n.onHidden)(t));e.stop()})}),lo(wi(),function(n,t){rA(n,o,r)}),lo(Si(),function(n,t){IB(n,o,r)})])}}),aA=[wt("contextual",[ft("fadeInClass"),ft("fadeOutClass"),ft("transitionClass"),dt("lazyContext"),qu("onShow"),qu("onShown"),qu("onHide"),qu("onHidden")]),Bt("lazyViewport",Su),ft("leftAttr"),ft("topAttr"),ft("positionAttr"),(AD="modes",_D=["top","bottom"],MD=ge,Ct(AD,_D,Kn(MD))),qu("onDocked"),qu("onUndocked")],cA=ya({fields:aA,name:"docking",active:uA,apis:iA,state:/* */Object.freeze({init:function(){var t=ye(!1),e=ye(!0);return nu({isDocked:function(){return t.get()},setDocked:function(n){return t.set(n)},isVisible:function(){return e.get()},setVisible:function(n){return e.set(n)},readState:function(){return"docked:  "+t.get()+", visible: "+e.get()}})}})}),sA={fadeInClass:"tox-editor-dock-fadein",fadeOutClass:"tox-editor-dock-fadeout",transitionClass:"tox-editor-dock-transition"},fA="tox-tinymce--toolbar-sticky-on",lA="tox-tinymce--toolbar-sticky-off",dA=/* */Object.freeze({setup:function(n,t){n.inline||(n.on("ResizeWindow ResizeEditor ResizeContent",function(){t().each(RB)}),n.on("SkinLoaded",function(){t().each(cA.reset)}),n.on("FullscreenStateChanged",function(){t().each(cA.refresh)})),n.on("PostRender",function(){NB(n,!1)})},isDocked:function(n){return n().map(cA.isDocked).getOr(!1)},getBehaviours:HB}),mA=Z,gA=u,pA=nn([]),hA=/* */Object.freeze({setup:mA,isDocked:gA,getBehaviours:pA}),vA=Dl({factory:function(t,o){var n={focus:lg.focusIn,setMenus:function(n,t){var e=S(t,function(t){var n={type:"menubutton",text:t.text,fetch:function(n){n(t.getItems())}},e=$O(n).mapError(function(n){return le(n)}).getOrDie();return PC(e,"tox-mbtn",o.backstage,on.some("menuitem"))});mg.set(n,e)}};return{uid:t.uid,dom:t.dom,components:[],behaviours:ba([mg.config({}),Kd("menubar-events",[Ii(function(n){t.onSetup(n)}),lo($r(),function(e,n){ku(e.element(),".tox-mbtn--active").each(function(t){Ou(n.event().target(),".tox-mbtn").each(function(n){jt(t,n)||e.getSystem().getByDom(t).each(function(t){e.getSystem().getByDom(n).each(function(n){Ow.expand(n),Ow.close(t),vg.focus(n)})})})})}),lo(Ti(),function(e,n){n.event().prevFocus().bind(function(n){return e.getSystem().getByDom(n).toOption()}).each(function(t){n.event().newFocus().bind(function(n){return e.getSystem().getByDom(n).toOption()}).each(function(n){Ow.isOpen(t)&&(Ow.expand(n),Ow.close(t))})})})]),lg.config({mode:"flow",selector:".tox-mbtn",onEscape:function(n){return t.onEscape(n),on.some(!0)}}),Gy.config({})]),apis:n,domModification:{attributes:{role:"menubar"}}}},name:"silver.Menubar",configFields:[ct("dom"),ct("uid"),ct("onEscape"),ct("backstage"),St("onSetup",Z)],apis:{focus:function(n,t){n.focus(t)},setMenus:function(n,t,e){n.setMenus(t,e)}}}),bA="container",yA=[Fs("slotBehaviours",[])],xA=function(r,n,t){function e(n){return Qs(r)}function o(e,o){return void 0===o&&(o=undefined),function(n,t){return qs(n,r,t).map(function(n){return e(n,t)}).getOr(o)}}function i(n,t){return"true"!==zo(n.element(),"aria-hidden")}var u,a=o(i,!1),c=o(function(n,t){if(i(n)){var e=n.element();yr(e,"display","none"),Po(e,"aria-hidden","true"),ro(n,Bi(),{name:t,visible:!1})}}),s=(u=c,function(t,n){bn(n,function(n){return u(t,n)})}),f=o(function(n,t){if(!i(n)){var e=n.element();kr(e,"display"),jo(e,"aria-hidden"),ro(n,Bi(),{name:t,visible:!0})}}),l={getSlotNames:e,getSlot:function(n,t){return qs(n,r,t)},isShowing:a,hideSlot:c,hideAllSlots:function(n){return s(n,e())},showSlot:f};return{uid:r.uid,dom:r.dom,components:n,behaviours:Is(r.slotBehaviours),apis:l}},wA=P({getSlotNames:function(n,t){return n.getSlotNames(t)},getSlot:function(n,t,e){return n.getSlot(t,e)},isShowing:function(n,t,e){return n.isShowing(t,e)},hideSlot:function(n,t,e){return n.hideSlot(t,e)},hideAllSlots:function(n,t){return n.hideAllSlots(t)},showSlot:function(n,t,e){return n.showSlot(t,e)}},$o),SA=N(N({},wA),{sketch:function(n){var e,t=(e=[],{slot:function(n,t){return e.push(n),Us(bA,PB(n),t)},record:function(){return e}}),o=n(t),r=t.record(),i=S(r,function(n){return xl({name:n,pname:PB(n)})});return of(bA,yA,i,xA,o)}}),CA=re([yt("icon"),yt("tooltip"),Bt("onShow",Z),Bt("onHide",Z),Bt("onSetup",function(){return Z})]),kA=Xo("FixSizeEvent"),OA=Xo("AutoSizeEvent"),EA=qD.optional({factory:vA,name:"menubar",schema:[ct("backstage")]}),TA=qD.optional({factory:{sketch:function(n){return QD.sketch({uid:n.uid,dom:n.dom,listBehaviours:ba([lg.config({mode:"acyclic",selector:".tox-toolbar"})]),makeItem:function(){return KO({type:n.split,uid:Xo("multiple-toolbar-item"),backstage:n.backstage,cyclicKeying:!1,getSink:n.getSink,initGroups:[],onEscape:function(){return on.none()}})},setupItem:function(n,t,e,o){JE.setGroups(t,e)},shell:!0})}},name:"multiple-toolbar",schema:[ct("dom"),ct("onEscape")]}),BA=qD.optional({factory:{sketch:function(n){return function(n){return n.split===jb.sliding?qO:n.split===jb.floating?YO:KO}(n)({type:n.split,uid:n.uid,onEscape:function(){return n.onEscape(),on.some(!0)},cyclicKeying:!1,initGroups:[],getSink:n.getSink,backstage:n.backstage,moreDrawerData:{lazyToolbar:n.lazyToolbar,lazyMoreButton:n.lazyMoreButton,lazyHeader:n.lazyHeader}})}},name:"toolbar",schema:[ct("dom"),ct("onEscape"),ct("getSink")]}),DA=qD.optional({factory:{sketch:function(n){var t=n.editor,e=n.sticky?HB:pA;return{uid:n.uid,dom:n.dom,components:n.components,behaviours:ba(e(t,n.getSink))}}},name:"header",schema:[ct("dom")]}),AA=qD.optional({name:"socket",schema:[ct("dom")]}),_A=qD.optional({factory:{sketch:function(n){return{uid:n.uid,dom:{tag:"div",classes:["tox-sidebar"],attributes:{role:"complementary"}},components:[{dom:{tag:"div",classes:["tox-sidebar__slider"]},components:[],behaviours:ba([Gy.config({}),vg.config({}),cT.config({dimension:{property:"width"},closedClass:"tox-sidebar--sliding-closed",openClass:"tox-sidebar--sliding-open",shrinkingClass:"tox-sidebar--sliding-shrinking",growingClass:"tox-sidebar--sliding-growing",onShrunk:function(n){Zl.getCurrent(n).each(SA.hideAllSlots),oo(n,OA)},onGrown:function(n){oo(n,OA)},onStartGrow:function(n){ro(n,kA,{width:Sr(n.element(),"width").getOr("")})},onStartShrink:function(n){ro(n,kA,{width:mu(n.element())+"px"})}}),mg.config({}),Zl.config({find:function(n){var t=mg.contents(n);return yn(t)}})])}],behaviours:ba([SS(0),Kd("sidebar-sliding-events",[lo(kA,function(n,t){yr(n.element(),"width",t.event().width())}),lo(OA,function(n,t){kr(n.element(),"width")})])])}}},name:"sidebar",schema:[ct("dom")]}),MA=qD.optional({factory:{sketch:function(n){return{uid:n.uid,dom:{tag:"div",attributes:{"aria-hidden":"true"},classes:["tox-throbber"],styles:{display:"none"}},behaviours:ba([mg.config({})]),components:[]}}},name:"throbber",schema:[ct("dom")]}),FA=Al({name:"OuterContainer",factory:function(e,n,t){var o={getSocket:function(n){return YD.getPart(n,e,"socket")},setSidebar:function(n,t){YD.getPart(n,e,"sidebar").each(function(n){return jB(n,t)})},toggleSidebar:function(n,t){YD.getPart(n,e,"sidebar").each(function(n){return function(n,e){Zl.getCurrent(n).each(function(t){Zl.getCurrent(t).each(function(n){cT.hasGrown(t)?SA.isShowing(n,e)?cT.shrink(t):(SA.hideAllSlots(n),SA.showSlot(n,e)):(SA.hideAllSlots(n),SA.showSlot(n,e),cT.grow(t))})})}(n,t)})},whichSidebar:function(n){return YD.getPart(n,e,"sidebar").bind(UB).getOrNull()},getHeader:function(n){return YD.getPart(n,e,"header")},getToolbar:function(n){return YD.getPart(n,e,"toolbar")},setToolbar:function(n,t){YD.getPart(n,e,"toolbar").each(function(n){n.getApis().setGroups(n,t)})},setToolbars:function(n,t){YD.getPart(n,e,"multiple-toolbar").each(function(n){QD.setItems(n,t)})},refreshToolbar:function(n){YD.getPart(n,e,"toolbar").each(function(n){return n.getApis().refresh(n)})},getMoreButton:function(n){return YD.getPart(n,e,"toolbar").bind(function(n){return n.getApis().getMoreButton(n)})},getThrobber:function(n){return YD.getPart(n,e,"throbber")},focusToolbar:function(n){YD.getPart(n,e,"toolbar").orThunk(function(){return YD.getPart(n,e,"multiple-toolbar")}).each(function(n){lg.focusIn(n)})},setMenubar:function(n,t){YD.getPart(n,e,"menubar").each(function(n){vA.setMenus(n,t)})},focusMenubar:function(n){YD.getPart(n,e,"menubar").each(function(n){vA.focus(n)})}};return{uid:e.uid,dom:e.dom,components:n,apis:o,behaviours:e.behaviours}},configFields:[ct("dom"),ct("behaviours")],partFields:[DA,EA,BA,TA,AA,_A,MA],apis:{getSocket:function(n,t){return n.getSocket(t)},setSidebar:function(n,t,e){n.setSidebar(t,e)},toggleSidebar:function(n,t,e){n.toggleSidebar(t,e)},whichSidebar:function(n,t){return n.whichSidebar(t)},getHeader:function(n,t){return n.getHeader(t)},getToolbar:function(n,t){return n.getToolbar(t)},setToolbar:function(n,t,e){var o=S(e,function(n){return WO(n)});n.setToolbar(t,o)},setToolbars:function(n,t,e){var o=S(e,function(n){return S(n,WO)});n.setToolbars(t,o)},getMoreButton:function(n,t){return n.getMoreButton(t)},refreshToolbar:function(n,t){return n.refreshToolbar(t)},getThrobber:function(n,t){return n.getThrobber(t)},setMenubar:function(n,t,e){n.setMenubar(t,e)},focusMenubar:function(n,t){n.focusMenubar(t)},focusToolbar:function(n,t){n.focusToolbar(t)}}}),IA={file:{title:"File",items:"newdocument restoredraft | preview | print | deleteallconversations"},edit:{title:"Edit",items:"undo redo | cut copy paste pastetext | selectall | searchreplace"},view:{title:"View",items:"code | visualaid visualchars visualblocks | spellchecker | preview fullscreen | showcomments"},insert:{title:"Insert",items:"image link media addcomment pageembed template codesample inserttable | charmap emoticons hr | pagebreak nonbreaking anchor toc | insertdatetime"},format:{title:"Format",items:"bold italic underline strikethrough superscript subscript codeformat | formats blockformats fontformats fontsizes align | forecolor backcolor | removeformat"},tools:{title:"Tools",items:"spellchecker spellcheckerlanguage | a11ycheck code wordcount"},table:{title:"Table",items:"inserttable | cell row column | advtablesort | tableprops deletetable"},help:{title:"Help",items:"help"}},RA=function(n){function t(){n._skinLoaded=!0,Nv(n)}return function(){n.initialized?t():n.on("init",t)}},VA=d(YB,!1),NA=d(YB,!0),HA=Rh.DOM,PA=Ht(),zA=PA.os.isiOS()&&PA.os.version.major<=12,LA={render:function(e,o,n,t,r){var i=ye(0);VA(e),function(n,t){If(n,t,_o)}(we.fromDom(r.targetNode),o.mothership),xs(zr(),o.uiMothership),e.on("PostRender",function(){qB(e,o,n,t),i.set(e.getWin().innerWidth),FA.setMenubar(o.outerContainer,XB(e,n)),FA.setSidebar(o.outerContainer,n.sidebar),function(r){function n(n){var t=r.getDoc().documentElement,e=u.get(),o=a.get();e.left()!==i.innerWidth||e.top()!==i.innerHeight?(u.set(Iu(i.innerWidth,i.innerHeight)),zv(r,n)):o.left()===t.offsetWidth&&o.top()===t.offsetHeight||(a.set(Iu(t.offsetWidth,t.offsetHeight)),zv(r,n))}function t(n){return Pv(r,n)}var i=r.getWin(),e=r.getDoc().documentElement,u=ye(Iu(i.innerWidth,i.innerHeight)),a=ye(Iu(e.offsetWidth,e.offsetHeight));HA.bind(i,"resize",n),HA.bind(i,"scroll",t);var o=fb(we.fromDom(r.getBody()),"load",n);r.on("remove",function(){o.unbind(),HA.unbind(i,"resize",n),HA.unbind(i,"scroll",t)})}(e)});var u=FA.getSocket(o.outerContainer).getOrDie("Could not find expected socket element");if(!0===zA){xr(u.element(),{overflow:"scroll","-webkit-overflow-scrolling":"touch"});var a=function(e,o){var r=null;return{cancel:function(){null!==r&&(v.clearTimeout(r),r=null)},throttle:function(){for(var n=[],t=0;t<arguments.length;t++)n[t]=arguments[t];null===r&&(r=v.setTimeout(function(){e.apply(null,n),r=null},o))}}}(function(){e.fire("ScrollContent")},20);sb(u.element(),"scroll",a.throttle)}LO(e,o),e.addCommand("ToggleSidebar",function(n,t){FA.toggleSidebar(o.outerContainer,t),e.fire("ToggleSidebar")}),e.addQueryValueHandler("ToggleSidebar",function(){return FA.whichSidebar(o.outerContainer)});var c=Yb(e);return c!==jb.sliding&&c!==jb.floating||e.on("ResizeWindow ResizeEditor ResizeContent",function(){var n=e.getWin().innerWidth;n!==i.get()&&(FA.refreshToolbar(o.outerContainer),i.set(n))}),{iframeContainer:u.element().dom(),editorContainer:o.outerContainer.element().dom()}}},jA=function(t,n,e){var o=n.filter(function(n){return t<n}),r=e.filter(function(n){return n<t});return o.or(r).getOr(t)},UA=function(n){return/^[0-9\.]+(|px)$/i.test(""+n)?on.some(parseInt(""+n,10)):on.none()},WA=function(n){return mn(n)?n+"px":n},GA={render:function(t,i,e,o,n){var u,r=Rh.DOM,a=Kb(t),c=$b(t),s=we.fromDom(n.targetNode),f=Nb(t).or(JB(t)),l=Yb(t),d=l===jb.sliding||l===jb.floating;NA(t);function m(n){void 0===n&&(n=!1),d&&FA.refreshToolbar(i.outerContainer),a||function(n){var t=d?n.fold(function(){return 0},function(n){return 1<n.components().length?su(n.components()[1].element()):0}):0,e=du(s),o=e.top()-su(u.element())+t;xr(i.outerContainer.element(),{position:"absolute",top:Math.round(o)+"px",left:Math.round(e.left())+"px"});var r=f.getOrThunk(function(){var n=UA(wr(zr(),"margin-left")).getOr(0);return mu(zr())-e.left()+n});yr(u.element(),"max-width",r+"px")}(FA.getToolbar(i.outerContainer)),c&&(n?cA.reset(u):cA.refresh(u))}function g(){yr(i.outerContainer.element(),"display","flex"),r.addClass(t.getBody(),"mce-edit-focus"),kr(i.uiMothership.element(),"display"),m()}function p(){i.outerContainer&&(yr(i.outerContainer.element(),"display","none"),r.removeClass(t.getBody(),"mce-edit-focus")),yr(i.uiMothership.element(),"display","none")}function h(){if(u)g();else{u=FA.getHeader(i.outerContainer).getOrDie();var n=function(n){return qb(n).getOr(zr())}(t);xs(n,i.mothership),xs(n,i.uiMothership),qB(t,i,e,o),FA.setMenubar(i.outerContainer,XB(t,e)),g(),t.on("activate",g),t.on("deactivate",p),t.on("NodeChange SkinLoaded ResizeWindow",function(){t.hidden||m(!0)}),t.nodeChanged()}}return t.on("focus",h),t.on("blur hide",p),t.on("init",function(){t.hasFocus()&&h()}),LO(t,i),{editorContainer:i.outerContainer.element().dom()}}},XA=function(t){yk.each([{name:"alignleft",text:"Align left",cmd:"JustifyLeft",icon:"align-left"},{name:"aligncenter",text:"Align center",cmd:"JustifyCenter",icon:"align-center"},{name:"alignright",text:"Align right",cmd:"JustifyRight",icon:"align-right"},{name:"alignjustify",text:"Justify",cmd:"JustifyFull",icon:"align-justify"}],function(n){t.ui.registry.addToggleButton(n.name,{tooltip:n.text,onAction:function(){return t.execCommand(n.cmd)},icon:n.icon,onSetup:fE(t,n.name)})});var n="alignnone",e="No alignment",o="JustifyNone",r="align-none";t.ui.registry.addButton(n,{tooltip:e,onAction:function(){return t.execCommand(o)},icon:r})},YA=function(n){QB(n),function(t){yk.each([{name:"bold",text:"Bold",action:"Bold",icon:"bold",shortcut:"Meta+B"},{name:"italic",text:"Italic",action:"Italic",icon:"italic",shortcut:"Meta+I"},{name:"underline",text:"Underline",action:"Underline",icon:"underline",shortcut:"Meta+U"},{name:"strikethrough",text:"Strikethrough",action:"Strikethrough",icon:"strike-through",shortcut:""},{name:"subscript",text:"Subscript",action:"Subscript",icon:"subscript",shortcut:""},{name:"superscript",text:"Superscript",action:"Superscript",icon:"superscript",shortcut:""},{name:"removeformat",text:"Clear formatting",action:"RemoveFormat",icon:"remove-formatting",shortcut:""},{name:"newdocument",text:"New document",action:"mceNewDocument",icon:"new-document",shortcut:""},{name:"cut",text:"Cut",action:"Cut",icon:"cut",shortcut:"Meta+X"},{name:"copy",text:"Copy",action:"Copy",icon:"copy",shortcut:"Meta+C"},{name:"paste",text:"Paste",action:"Paste",icon:"paste",shortcut:"Meta+V"},{name:"selectall",text:"Select all",action:"SelectAll",icon:"select-all",shortcut:"Meta+A"}],function(n){t.ui.registry.addMenuItem(n.name,{text:n.text,icon:n.icon,shortcut:n.shortcut,onAction:function(){return t.execCommand(n.action)}})}),t.ui.registry.addMenuItem("codeformat",{text:"Code",icon:"sourcecode",onAction:$B(t,"code")})}(n)},qA=function(n){!function(t){t.ui.registry.addMenuItem("undo",{text:"Undo",icon:"undo",shortcut:"Meta+Z",onSetup:function(n){return ZB(n,t,"hasUndo")},onAction:function(){return t.execCommand("undo")}}),t.ui.registry.addMenuItem("redo",{text:"Redo",icon:"redo",shortcut:"Meta+Y",onSetup:function(n){return ZB(n,t,"hasRedo")},onAction:function(){return t.execCommand("redo")}})}(n),function(t){t.ui.registry.addButton("undo",{tooltip:"Undo",icon:"undo",onSetup:function(n){return ZB(n,t,"hasUndo")},onAction:function(){return t.execCommand("undo")}}),t.ui.registry.addButton("redo",{tooltip:"Redo",icon:"redo",onSetup:function(n){return ZB(n,t,"hasRedo")},onAction:function(){return t.execCommand("redo")}})}(n)},KA=function(n){!function(n){n.ui.registry.addButton("visualaid",{tooltip:"Visual aids",text:"Visual aids",onAction:function(){return n.execCommand("mceToggleVisualAid")}})}(n),function(t){t.ui.registry.addToggleMenuItem("visualaid",{text:"Visual aids",onSetup:function(n){return function(t,n){t.setActive(n.hasVisual);function e(n){t.setActive(n.hasVisual)}return n.on("VisualAid",e),function(){return n.off("VisualAid",e)}}(n,t)},onAction:function(){t.execCommand("mceToggleVisualAid")}})}(n)},JA=function(n){!function(t){t.ui.registry.addButton("outdent",{tooltip:"Decrease indent",icon:"outdent",onSetup:function(n){return function(n,t){n.setDisabled(!t.queryCommandState("outdent"));function e(){n.setDisabled(!t.queryCommandState("outdent"))}return t.on("NodeChange",e),function(){return t.off("NodeChange",e)}}(n,t)},onAction:function(){return t.execCommand("outdent")}}),t.ui.registry.addButton("indent",{tooltip:"Increase indent",icon:"indent",onAction:function(){return t.execCommand("indent")}})}(n)},$A=function(n,t){!function(n,t){var e=dE(0,t,nB(n));n.ui.registry.addNestedMenuItem("align",{text:t.shared.providers.translate("Align"),getSubmenuItems:function(){return e.items.validateItems(e.getStyleItems())}})}(n,t),function(n,t){var e=dE(0,t,eB(n));n.ui.registry.addNestedMenuItem("fontformats",{text:t.shared.providers.translate("Fonts"),getSubmenuItems:function(){return e.items.validateItems(e.getStyleItems())}})}(n,t),function(n,t){var e=N({type:"advanced"},t.styleselect),o=dE(0,t,cB(n,e));n.ui.registry.addNestedMenuItem("formats",{text:"Formats",getSubmenuItems:function(){return o.items.validateItems(o.getStyleItems())}})}(n,t),function(n,t){var e=dE(0,t,aB(n));n.ui.registry.addNestedMenuItem("blockformats",{text:"Blocks",getSubmenuItems:function(){return e.items.validateItems(e.getStyleItems())}})}(n,t),function(n,t){var e=dE(0,t,rB(n));n.ui.registry.addNestedMenuItem("fontsizes",{text:"Font sizes",getSubmenuItems:function(){return e.items.validateItems(e.getStyleItems())}})}(n,t)},QA=function(n,t){XA(n),YA(n),$A(n,t),qA(n),Uv.register(n),KA(n),JA(n)},ZA=function(n){return{anchor:"selection",root:we.fromDom(n.selection.getNode())}},n_={onLtr:function(){return[rc,ua,aa,ca,sa,oc,Ug,Wg,pm,mm,hm,gm]},onRtl:function(){return[rc,aa,ua,sa,ca,oc,Ug,Wg,hm,gm,pm,mm]}},t_={valignCentre:[],alignCentre:[],alignLeft:["tox-pop--align-left"],alignRight:["tox-pop--align-right"],right:["tox-pop--right"],left:["tox-pop--left"],bottom:["tox-pop--bottom"],top:["tox-pop--top"]},e_=function(n){return n.settings.contextmenu_never_use_native||!1},o_=function(n){return function(n,t,e){var o=n.ui.registry.getAll().contextMenus;return V(n.settings,t).map(cD).getOrThunk(function(){return C(cD(e),function(n){return En(o,n)})})}(n,"contextmenu","link linkchecker image imagetools table spellchecker configurepermanentpen")},r_=function(n){return!1===n.getParam("contextmenu")},i_={type:"separator"},u_=function(t){if(cn(t))return t;switch(t.type){case"separator":return i_;case"submenu":return{type:"nestedmenuitem",text:t.text,icon:t.icon,getSubmenuItems:function(){var n=t.getSubmenuItems();return cn(n)?n:S(n,u_)}};default:return{type:"menuitem",text:t.text,icon:t.icon,onAction:function(n){return function(){return n()}}(t.onAction)}}},a_="data-initial-z-index",c_=wt("snaps",[ct("getSnapPoints"),qu("onSensor"),ct("leftAttr"),ct("topAttr"),St("lazyViewport",Su),St("mustSnap",!1)]),s_=[St("useFixed",u),ct("blockerClass"),St("getTarget",l),St("onDrag",Z),St("repositionTarget",!0),St("onDrop",Z),Bt("getBounds",Su),c_],f_=function(n,t,r,i,u){var e=t.getSnapPoints(n);return bD(e,r,i,u).orThunk(function(){return O(e,function(t,e){var n=e.sensor(),o=function(n,t,e,o,r,i){var u=bB(n,r,i),a=bB(t,r,i),c=Math.abs(u.left()-a.left()),s=Math.abs(u.top()-a.top());return Iu(c,s)}(r,n,e.range().left(),e.range().top(),i,u);return t.deltas.fold(function(){return{deltas:on.some(o),snap:on.some(e)}},function(n){return(o.left()+o.top())/2<=(n.left()+n.top())/2?{deltas:on.some(o),snap:on.some(e)}:t})},{deltas:on.none(),snap:on.none()}).snap.map(function(n){return{output:nn(wB(n.output(),r,i,u)),extra:n.extra}})})},l_=function(n,t,e,o,r){var i=t.getSnapPoints(n);return bD(i,e,o,r)},d_=/* */Object.freeze({getData:function(n){return on.from(Iu(n.x(),n.y()))},getDelta:function(n,t){return Iu(t.left()-n.left(),t.top()-n.top())}}),m_=g(s_,[Qu("dragger",{handlers:kD(OD)})]),g_=/* */Object.freeze({getData:function(n){var t=n.raw().touches;return 1===t.length?function(n){var t=n[0];return on.some(Iu(t.clientX,t.clientY))}(t):on.none()},getDelta:function(n,t){return Iu(t.left()-n.left(),t.top()-n.top())}}),p_=m_,h_=g(s_,[Qu("dragger",{handlers:kD(ED)})]),v_=g(s_,[Qu("dragger",{handlers:kD(function(n,t,e){return g(OD(n,t,e),ED(n,t,e))})})]),b_=/* */Object.freeze({mouse:p_,touch:h_,mouseOrTouch:v_}),y_=/* */Object.freeze({init:function(){var o=on.none(),t=on.none(),n=nn({});return nu({readState:n,reset:function(){o=on.none(),t=on.none()},update:function(t,n){return t.getData(n).bind(function(n){return function(t,e){var n=o.map(function(n){return t.getDelta(n,e)});return o=on.some(e),n}(t,n)})},getStartData:function(){return t},setStartData:function(n){t=on.some(n)}})}}),x_=/* */Object.freeze({snapTo:function(n,t,e,o){var r=t.getTarget(n.element());if(t.repositionTarget){var i=Co(n.element()),u=pu(i),a=mB(r),c=function(n,t,e){return{coord:wB(n.output(),n.output(),t,e),extra:n.extra()}}(o,u,a),s=xB(c.coord,0,a);xr(r,s)}}}),w_=xa({branchKey:"mode",branches:b_,name:"dragging",active:{events:function(n,t){return n.dragger.handlers(n,t)}},extra:{snap:So(["sensor","range","output"],["extra"])},state:y_,apis:x_}),S_=Ht(),C_=function(c,e){function t(n){var t=wu(n);return TD(g.getOpt(e),n,t.x(),t.y(),t.width(),t.height())}function o(n){var t=wu(n);return TD(p.getOpt(e),n,t.right(),t.bottom(),t.width(),t.height())}function r(n,t,e,o){var r=e(t);w_.snapTo(n,r),function(n,t,e,o){var r=t.dom().getBoundingClientRect();kr(n.element(),"display");var i=Oo(we.fromDom(c.getBody())).dom().innerHeight,u=e(r),a=o(r,i);(u||a)&&yr(n.element(),"display","none")}(n,t,function(n){return n[o]<0},function(n,t){return n[o]>t})}function i(n){return r(h,n,t,"top")}function u(n){return r(v,n,o,"bottom")}var a=ye([]),s=ye([]),n=ye(!1),f=ye(on.none()),l=ye(on.none()),d=BD(function(){return S(a.get(),function(n){return t(n)})},f,function(t){l.get().each(function(n){c.fire("TableSelectorChange",{start:t,finish:n})})}),m=BD(function(){return S(s.get(),function(n){return o(n)})},l,function(t){f.get().each(function(n){c.fire("TableSelectorChange",{start:n,finish:t})})}),g=DD(d),p=DD(m),h=uu(g.asSpec()),v=uu(p.asSpec());S_.deviceType.isTouch()&&(c.on("TableSelectionChange",function(t){n.get()||(hs(e,h),hs(e,v),n.set(!0)),f.set(on.some(t.start)),l.set(on.some(t.finish)),t.otherCells.each(function(n){a.set(n.upOrLeftCells),s.set(n.downOrRightCells),i(t.start),u(t.finish)})}),c.on("ResizeEditor ResizeWindow ScrollContent",function(){f.get().each(i),l.get().each(u)}),c.on("TableSelectionClear",function(){n.get()&&(bs(h),bs(v),n.set(!1)),f.set(on.none()),l.set(on.none())}))};(ID=FD=FD||{})[ID.None=0]="None",ID[ID.Both=1]="Both",ID[ID.Vertical=2]="Vertical";function k_(n,t,e){var o=we.fromDom(n.getContainer()),r=function(n,t,e,o,r){var i={};return i.height=jA(o+t.top(),Vb(n),Hb(n)),e===FD.Both&&(i.width=jA(r+t.left(),Rb(n),Nb(n))),i}(n,t,e,su(o),mu(o));Cn(r,function(n,t){return yr(o,t,WA(n))}),Hv(n)}function O_(n){if(1===n.nodeType){if("BR"===n.nodeName||n.getAttribute("data-mce-bogus"))return!0;if("bookmark"===n.getAttribute("data-mce-type"))return!0}return!1}function E_(o,t){var r,n,e;return{dom:{tag:"div",classes:["tox-statusbar"]},components:(n=function(){var n=[];return o.getParam("elementpath",!0,"boolean")&&n.push(pM(o,{})),Vt(o.settings.plugins,"wordcount")&&n.push(function(n,o){function r(n,t,e){return mg.set(n,[Ir(o.translate(["{0} "+e,t[e]]))])}return Gg.sketch({dom:{tag:"button",classes:["tox-statusbar__wordcount"]},components:[],buttonBehaviours:ba([Gy.config({}),mg.config({}),Zf.config({store:{mode:"memory",initialValue:{mode:"words",count:{words:0,characters:0}}}}),Kd("wordcount-events",[Ni(function(n){var t=Zf.getValue(n),e="words"===t.mode?"characters":"words";Zf.setValue(n,{mode:e,count:t.count}),r(n,t.count,e)}),Ii(function(e){n.on("wordCountUpdate",function(n){var t=Zf.getValue(e).mode;Zf.setValue(e,{mode:t,count:n.wordCount}),r(e,n.wordCount,t)})})])])})}(o,t)),o.getParam("branding",!0,"boolean")&&n.push(function(){var n=rh.translate(["Powered by {0}","Tiny"]);return{dom:{tag:"span",classes:["tox-statusbar__branding"],innerHtml:'<a href="https://www.tiny.cloud/?utm_campaign=editor_referral&amp;utm_medium=poweredby&amp;utm_source=tinymce&amp;utm_content=v5" rel="noopener" target="_blank" tabindex="-1" aria-label="'+n+'">'+n+"</a>"}}}()),0<n.length?[{dom:{tag:"div",classes:["tox-statusbar__text-container"]},components:n}]:[]}(),e=function(n){var t=!Vt(n.settings.plugins,"autoresize"),e=n.getParam("resize",t);return!1===e?FD.None:"both"===e?FD.Both:FD.Vertical}(o),e!==FD.None&&n.push((r=e,{dom:{tag:"div",classes:["tox-statusbar__resize-handle"],attributes:{title:t.translate("Resize")},innerHtml:ym("resize-handle",t.icons)},behaviours:ba([w_.config({mode:"mouse",repositionTarget:!1,onDrag:function(n,t,e){k_(o,e,r)},blockerClass:"tox-blocker"})])})),n)}}function T_(n){return[ft("type"),function(n){return st(n,me)}("columns"),n]}function B_(t){return ce("items","items",Mn(),Kn(Zn(function(n){return tt("Checking item of "+t,gF,n).fold(function(n){return an.error(le(n))},function(n){return an.value(n)})})))}function D_(n){return cn(n.type)&&cn(n.name)}function A_(n){var t=function(n){return C(DF(n),D_)}(n),e=B(t,function(t){return function(n){return on.from(AF[n.type])}(t).fold(function(){return[]},function(n){return[st(t.name,n)]})});return re(e)}function __(n){return{internalDialog:et(function(n){return tt("dialog",BF,n)}(n)),dataValidator:A_(n),initialData:n.initialData}}function M_(n){var e=[],o={};return Cn(n,function(n,t){n.fold(function(){e.push(t)},function(n){o[t]=n})}),0<e.length?an.error(e):an.value(o)}function F_(n){return yn(function(n,t){var e=gn.call(n,0);return e.sort(t),e}(n,function(n,t){return t<n?-1:n<t?1:0}))}function I_(n,t){yr(n,"height",t+"px"),Ht().browser.isIE()?kr(n,"flex-basis"):yr(n,"flex-basis",t+"px")}function R_(n,o,r){Cu(n,'[role="dialog"]').each(function(e){ku(e,'[role="tablist"]').each(function(t){r.get().map(function(n){return yr(o,"height","0"),yr(o,"flex-basis","0"),Math.min(n,function(n,t,e){var o,r=ko(n).dom(),i=Cu(n,".tox-dialog-wrap").getOr(n);o="fixed"===wr(i,"position")?Math.max(r.clientHeight,v.window.innerHeight):Math.max(r.offsetHeight,r.scrollHeight);var u=su(t),a=t.dom().offsetLeft>=e.dom().offsetLeft+mu(e)?Math.max(su(e),u):u,c=parseInt(wr(n,"margin-top"),10)||0,s=parseInt(wr(n,"margin-bottom"),10)||0;return o-(su(n)+c+s-a)}(e,o,t))}).each(function(n){I_(o,n)})})})}function V_(n){return ku(n,'[role="tabpanel"]')}function N_(r){var i;return{smartTabHeight:(i=ye(on.none()),{extraEvents:[Ii(function(n){var t=n.element();V_(t).each(function(o){yr(o,"visibility","hidden"),n.getSystem().getByDom(o).toOption().each(function(n){var t=function(o,r,i){return S(o,function(n,t){mg.set(i,o[t].view());var e=r.dom().getBoundingClientRect();return mg.set(i,[]),e.height})}(r,o,n),e=F_(t);i.set(e)}),R_(t,o,i),kr(o,"visibility"),function(n,t){yn(n).each(function(n){return WF.showTab(t,n.value)})}(r,n),qg.requestAnimationFrame(function(){R_(t,o,i)})})}),lo(Si(),function(n){var t=n.element();V_(t).each(function(n){R_(t,n,i)})}),lo(gy,function(n,t){var r=n.element();V_(r).each(function(t){var n=Sa();yr(t,"visibility","hidden");var e=Sr(t,"height").map(function(n){return parseInt(n,10)});kr(t,"height"),kr(t,"flex-basis");var o=t.dom().getBoundingClientRect().height;e.forall(function(n){return n<o})?(i.set(on.from(o)),R_(r,t,i)):e.each(function(n){I_(t,n)}),kr(t,"visibility"),n.each(wa)})})],selectFirst:!1}),naiveTabHeight:{extraEvents:[],selectFirst:!0}}}function H_(n,t,e,o){return{dom:{tag:"div",classes:["tox-dialog__content-js"],attributes:N(N({},t.map(function(n){return{id:n}}).getOr({})),o?{"aria-live":"polite"}:{})},components:[],behaviours:ba([SS(0),RT.config({channel:KF,updateState:function(n,t){return on.some({isTabPanel:function(){return"tabpanel"===t.body.type}})},renderComponents:function(n){switch(n.body.type){case"tabpanel":return[function(n,e){function o(n){var t=Zf.getValue(n),e=M_(t).getOr({}),o=i.get(),r=Dn(o,e);i.set(r)}function r(n){var t=i.get();Zf.setValue(n,t)}var i=ye({}),u=ye(null),t=S(n.tabs,function(n){return{value:n.name,dom:{tag:"div",classes:["tox-dialog__body-nav-item"],innerHtml:e.shared.providers.translate(n.title)},view:function(){return[dS.sketch(function(t){return{dom:{tag:"div",classes:["tox-form"]},components:S(n.items,function(n){return Wk(t,n,e)}),formBehaviours:ba([lg.config({mode:"acyclic",useTabstopAt:b(MS)}),Kd("TabView.form.events",[Ii(r),Ri(o)]),lc.config({channels:K([{key:GF,value:{onReceive:o}},{key:XF,value:{onReceive:r}}])})])}})]}}}),a=N_(t).smartTabHeight;return WF.sketch({dom:{tag:"div",classes:["tox-dialog__body"]},onChangeTab:function(n,t,e){var o=Zf.getValue(t);ro(n,my,{name:o,oldName:u.get()}),u.set(o)},tabs:t,components:[WF.parts().tabbar({dom:{tag:"div",classes:["tox-dialog__body-nav"]},components:[HF.parts().tabs({})],markers:{tabClass:"tox-tab",selectedClass:"tox-dialog__body-nav-item--active"},tabbarBehaviours:ba([Gy.config({})])}),WF.parts().tabview({dom:{tag:"div",classes:["tox-dialog__body-content"]}})],selectFirst:a.selectFirst,tabSectionBehaviours:ba([Kd("tabpanel",a.extraEvents),lg.config({mode:"acyclic"}),Zl.config({find:function(n){return yn(WF.getViewItems(n))}}),Zf.config({store:{mode:"manual",getValue:function(n){return n.getSystem().broadcastOn([GF],{}),i.get()},setValue:function(n,t){i.set(t),n.getSystem().broadcastOn([XF],{})}}})])})}(n.body,e)];default:return[function(n,e){var t=vm(dS.sketch(function(t){return{dom:{tag:"div",classes:["tox-form"].concat(n.classes)},components:S(n.items,function(n){return Wk(t,n,e)})}}));return{dom:{tag:"div",classes:["tox-dialog__body"]},components:[{dom:{tag:"div",classes:["tox-dialog__body-content"]},components:[t.asSpec()]}],behaviours:ba([lg.config({mode:"acyclic",useTabstopAt:b(MS)}),wS(t),ES(t,{postprocess:function(n){return M_(n).fold(function(n){return v.console.error(n),{}},function(n){return n})}})])}}(n.body,e)]}},initialData:n})])}}function P_(n,e){return[ho(Qr(),FS),n(ay,function(n,t){e.onClose(),t.onClose()}),n(cy,function(n,t,e,o){t.onCancel(n),oo(o,ay)}),lo(dy,function(n,t){return e.onUnblock()}),lo(ly,function(n,t){return e.onBlock(t.event())})]}function z_(n,t){function e(n,t){return Wb.sketch({dom:{tag:"div",classes:["tox-dialog__footer-"+n]},components:S(t,function(n){return n.memento.asSpec()})})}var o=function(n,t){for(var e=[],o=[],r=0,i=n.length;r<i;r++){var u=n[r];(t(u,r)?e:o).push(u)}return{pass:e,fail:o}}(t.map(function(n){return n.footerButtons}).getOr([]),function(n){return"start"===n.align});return[e("start",o.pass),e("end",o.fail)]}function L_(n,o){return{dom:cp('<div class="tox-dialog__footer"></div>'),components:[],behaviours:ba([RT.config({channel:JF,initialData:n,updateState:function(n,t){var e=S(t.buttons,function(n){var t=vm(function(n,t){return YC(n,n.type,t)}(n,o));return{name:n.name,align:n.align,memento:t}});return on.some({lookupByName:function(n,t){return function(t,n,e){return E(n,function(n){return n.name===e}).bind(function(n){return n.memento.getOpt(t)})}(n,e,t)},footerButtons:e})},renderComponents:z_})])}}function j_(n,t){return wM.parts().footer(L_(n,t))}function U_(t,e){if(t.getRoot().getSystem().isConnected()){var o=Zl.getCurrent(t.getFormWrapper()).getOr(t.getFormWrapper());return dS.getField(o,e).fold(function(){var n=t.getFooter();return RT.getState(n).get().bind(function(n){return n.lookupByName(o,e)})},function(n){return on.some(n)})}return on.none()}function W_(u,o,a){function n(n){var t=u.getRoot();t.getSystem().isConnected()&&n(t)}var c={getData:function(){var n=u.getRoot(),t=n.getSystem().isConnected()?u.getFormWrapper():n,e=Zf.getValue(t),o=P(a,function(n){return n.get()});return N(N({},e),o)},setData:function(i){n(function(n){var t=c.getData(),e=An(t,i),o=function(n,t){var e=n.getRoot();return RT.getState(e).get().map(function(n){return et(tt("data",n.dataValidator,t))}).getOr(t)}(u,e),r=u.getFormWrapper();Zf.setValue(r,o),Cn(a,function(n,t){En(e,t)&&n.set(e[t])})})},disable:function(n){U_(u,n).each(Ch.disable)},enable:function(n){U_(u,n).each(Ch.enable)},focus:function(n){U_(u,n).each(vg.focus)},block:function(t){if(!cn(t))throw new Error("The dialogInstanceAPI.block function should be passed a blocking message of type string as an argument");n(function(n){ro(n,ly,{message:t})})},unblock:function(){n(function(n){oo(n,dy)})},showTab:function(e){n(function(n){var t=u.getBody();RT.getState(t).get().exists(function(n){return n.isTabPanel()})&&Zl.getCurrent(t).each(function(n){WF.showTab(n,e)})})},redial:function(e){n(function(n){var t=o(e);n.getSystem().broadcastOn([YF],t),n.getSystem().broadcastOn([qF],t.internalDialog),n.getSystem().broadcastOn([KF],t.internalDialog),n.getSystem().broadcastOn([JF],t.internalDialog),c.setData(t.initialData)})},close:function(){n(function(n){oo(n,ay)})}};return c}function G_(n,t){return{dom:{tag:"div",styles:{display:"none"},classes:["tox-dialog__header"]},components:[n,t]}}function X_(n,t){return wM.parts().close(Gg.sketch({dom:{tag:"button",classes:["tox-button","tox-button--icon","tox-button--naked"],attributes:{type:"button","aria-label":t.translate("Close")}},action:n,buttonBehaviours:ba([Gy.config({})])}))}function Y_(){return wM.parts().title({dom:{tag:"div",classes:["tox-dialog__title"],innerHtml:"",styles:{display:"none"}}})}function q_(n,t){return wM.parts().body({dom:{tag:"div",classes:["tox-dialog__body"]},components:[{dom:{tag:"div",classes:["tox-dialog__body-content"]},components:[{dom:cp("<p>"+t.translate(n)+"</p>")}]}]})}function K_(n){return wM.parts().footer({dom:{tag:"div",classes:["tox-dialog__footer"]},components:n})}function J_(n,t){return[Wb.sketch({dom:{tag:"div",classes:["tox-dialog__footer-start"]},components:n}),Wb.sketch({dom:{tag:"div",classes:["tox-dialog__footer-end"]},components:t})]}function $_(t){var n,e="tox-dialog",o=e+"-wrap",r=o+"__backdrop",i=e+"__disable-scroll";return wM.sketch({lazySink:t.lazySink,onEscape:function(n){return t.onEscape(n),on.some(!0)},useTabstopAt:function(n){return!MS(n)},dom:{tag:"div",classes:[e].concat(t.extraClasses),styles:N({position:"relative"},t.extraStyles)},components:g([t.header,t.body],t.footer.toArray()),parts:{blocker:{dom:cp('<div class="'+o+'"></div>'),components:[{dom:{tag:"div",classes:nI?[r,r+"--opaque"]:[r]}}]}},dragBlockClass:o,modalBehaviours:ba(g([vg.config({}),Kd("dialog-events",t.dialogEvents.concat([bo(Qr(),function(n,t){lg.focusIn(n)})])),Kd("scroll-lock",[Ii(function(){fr(zr(),i)}),Ri(function(){dr(zr(),i)})])],t.extraBehaviours)),eventOrder:N((n={},n[di()]=["dialog-events"],n[Ci()]=["scroll-lock","dialog-events","alloy.base.behaviour"],n[ki()]=["alloy.base.behaviour","dialog-events","scroll-lock"],n),t.eventOrder)})}function Q_(n){return Gg.sketch({dom:{tag:"button",classes:["tox-button","tox-button--icon","tox-button--naked"],attributes:{type:"button","aria-label":n.translate("Close"),title:n.translate("Close")}},components:[{dom:{tag:"div",classes:["tox-icon"],innerHtml:'<svg width="24" height="24" xmlns="http://www.w3.org/2000/svg"><path d="M17.953 7.453L13.422 12l4.531 4.547-1.406 1.406L12 13.422l-4.547 4.531-1.406-1.406L10.578 12 6.047 7.453l1.406-1.406L12 10.578l4.547-4.531z" fill-rule="evenodd"></path></svg>'}}],action:function(n){oo(n,cy)}})}function Z_(n,t,e){function o(n){return[Ir(e.translate(n.title))]}return{dom:{tag:"div",classes:["tox-dialog__title"],attributes:N({},t.map(function(n){return{id:n}}).getOr({}))},components:o(n),behaviours:ba([RT.config({channel:qF,renderComponents:o})])}}function nM(){return{dom:cp('<div class="tox-dialog__draghandle"></div>')}}function tM(n,t){return function(n,t){var e=wM.parts().title(Z_(n,on.none(),t)),o=wM.parts().draghandle(nM()),r=wM.parts().close(Q_(t)),i=[e].concat(n.draggable?[o]:[]).concat([r]);return Wb.sketch({dom:cp('<div class="tox-dialog__header"></div>'),components:i})}({title:t.shared.providers.translate(n),draggable:t.dialog.isDraggableModal()},t.shared.providers)}function eM(n,t){return{onClose:function(){return t.closeWindow()},onBlock:function(e){wM.setBusy(n(),function(n,t){return{dom:{tag:"div",classes:["tox-dialog__busy-spinner"],attributes:{"aria-label":e.message()},styles:{left:"0px",right:"0px",bottom:"0px",top:"0px",position:"absolute"}},behaviours:t,components:[{dom:cp('<div class="tox-spinner"><div></div><div></div><div></div></div>')}]}})},onUnblock:function(){wM.setIdle(n())}}}function oM(n,t,e,o){var r;return uu($_(N(N({},n),{lazySink:o.shared.getSink,extraBehaviours:g([RT.config({channel:YF,updateState:function(n,t){return on.some(t)},initialData:t}),DS({})],n.extraBehaviours),onEscape:function(n){oo(n,cy)},dialogEvents:e,eventOrder:(r={},r[li()]=["reflecting","receiving"],r[Ci()]=["scroll-lock","reflecting","messages","dialog-events","alloy.base.behaviour"],r[ki()]=["alloy.base.behaviour","dialog-events","messages","reflecting","scroll-lock"],r)})))}function rM(n){return S(n,function(n){return"menu"===n.type?function(n){var t=S(n.items,function(n){var t=ye(!1);return N(N({},n),{storage:t})});return N(N({},n),{items:t})}(n):n})}function iM(n){return O(n,function(n,t){return"menu"!==t.type?n:O(t.items,function(n,t){return n[t.name]=t.storage,n},n)},{})}function uM(n,t,e){var o=tM(n.internalDialog.title,e),r=function(n,t){var e=H_(n,on.none(),t,!1);return wM.parts().body(e)}({body:n.internalDialog.body},e),i=rM(n.internalDialog.buttons),u=iM(i),a=j_({buttons:i},e),c=ZF(function(){return d},eM(function(){return l},t)),s="normal"!==n.internalDialog.size?"large"===n.internalDialog.size?["tox-dialog--width-lg"]:["tox-dialog--width-md"]:[],f={header:o,body:r,footer:on.some(a),extraClasses:s,extraBehaviours:[],extraStyles:{}},l=oM(f,n,c,e),d=W_({getRoot:function(){return l},getBody:function(){return wM.getBody(l)},getFooter:function(){return wM.getFooter(l)},getFormWrapper:function(){var n=wM.getBody(l);return Zl.getCurrent(n).getOr(n)}},t.redial,u);return{dialog:l,instanceApi:d}}function aM(n,t,e,o){var r,i,u=Xo("dialog-label"),a=Xo("dialog-content"),c=vm(function(n,t,e){return Wb.sketch({dom:cp('<div class="tox-dialog__header"></div>'),components:[Z_(n,on.some(t),e),nM(),Q_(e)],containerBehaviours:ba([w_.config({mode:"mouse",blockerClass:"blocker",getTarget:function(n){return Ou(n,'[role="dialog"]').getOrDie()},snaps:{getSnapPoints:function(){return[]},leftAttr:"data-drag-left",topAttr:"data-drag-top"}})])})}({title:n.internalDialog.title,draggable:!0},u,e.shared.providers)),s=vm(function(n,t,e,o){return H_(n,on.some(t),e,o)}({body:n.internalDialog.body},a,e,o)),f=rM(n.internalDialog.buttons),l=iM(f),d=vm(function(n,t){return L_(n,t)}({buttons:f},e)),m=ZF(function(){return p},{onBlock:function(){},onUnblock:function(){},onClose:function(){return t.closeWindow()}}),g=uu({dom:{tag:"div",classes:["tox-dialog","tox-dialog-inline"],attributes:(r={role:"dialog"},r["aria-labelledby"]=u,r["aria-describedby"]=""+a,r)},eventOrder:(i={},i[li()]=[RT.name(),lc.name()],i[di()]=["execute-on-form"],i[Ci()]=["reflecting","execute-on-form"],i),behaviours:ba([lg.config({mode:"cyclic",onEscape:function(n){return oo(n,ay),on.some(!0)},useTabstopAt:function(n){return!MS(n)&&("button"!==Ke(n)||"disabled"!==zo(n,"disabled"))}}),RT.config({channel:YF,updateState:function(n,t){return on.some(t)},initialData:n}),vg.config({}),Kd("execute-on-form",m.concat([bo(Qr(),function(n,t){lg.focusIn(n)})])),DS({})]),components:[c.asSpec(),s.asSpec(),d.asSpec()]}),p=W_({getRoot:function(){return g},getFooter:function(){return d.get(g)},getBody:function(){return s.get(g)},getFormWrapper:function(){var n=s.get(g);return Zl.getCurrent(n).getOr(n)}},t.redial,l);return{dialog:g,instanceApi:p}}function cM(n){return sn(n)&&-1!==eI.indexOf(n.mceAction)}function sM(e,n,o,t){var r,i=tM(e.title,t),u=function(n){var t={dom:{tag:"div",classes:["tox-dialog__content-js"]},components:[{dom:{tag:"div",classes:["tox-dialog__body-iframe"]},components:[IS({dom:{tag:"iframe",attributes:{src:n.url}},behaviours:ba([Gy.config({}),vg.config({})])})]}],behaviours:ba([lg.config({mode:"acyclic",useTabstopAt:b(MS)})])};return wM.parts().body(t)}(e),a=e.buttons.bind(function(n){return 0===n.length?on.none():on.some(j_({buttons:n},t))}),c=QF(function(){return h},eM(function(){return p},n)),s=N(N({},e.height.fold(function(){return{}},function(n){return{height:n+"px","max-height":n+"px"}})),e.width.fold(function(){return{}},function(n){return{width:n+"px","max-width":n+"px"}})),f=e.width.isNone()&&e.height.isNone()?["tox-dialog--width-lg"]:[],l=new tI(e.url,{base_uri:new tI(v.window.location.href)}),d=l.protocol+"://"+l.host+(l.port?":"+l.port:""),m=ye(on.none()),g=[Kd("messages",[Ii(function(){var n=sb(we.fromDom(v.window),"message",function(n){if(l.isSameOrigin(new tI(n.raw().origin))){var t=n.raw().data;cM(t)?function(n,t,e){switch(e.mceAction){case"insertContent":n.insertContent(e.content);break;case"setContent":n.setContent(e.content);break;case"execCommand":var o=!!ln(e.ui)&&e.ui;n.execCommand(e.cmd,o,e.value);break;case"close":t.close();break;case"block":t.block(e.message);break;case"unblock":t.unblock()}}(o,h,t):function(n){return!cM(n)&&sn(n)&&En(n,"mceAction")}(t)&&e.onMessage(h,t)}});m.set(on.some(n))}),Ri(function(){m.get().each(function(n){return n.unbind()})})]),lc.config({channels:(r={},r[$F]={onReceive:function(n,t){ku(n.element(),"iframe").each(function(n){n.dom().contentWindow.postMessage(t,d)})}},r)})],p=oM({header:i,body:u,footer:a,extraClasses:f,extraBehaviours:g,extraStyles:s},e,c,t),h=function(t){function n(n){t.getSystem().isConnected()&&n(t)}return{block:function(t){if(!cn(t))throw new Error("The urlDialogInstanceAPI.block function should be passed a blocking message of type string as an argument");n(function(n){ro(n,ly,{message:t})})},unblock:function(){n(function(n){oo(n,dy)})},close:function(){n(function(n){oo(n,ay)})},sendMessage:function(t){n(function(n){n.getSystem().broadcastOn([$F],t)})}}}(p);return{dialog:p,instanceApi:h}}var fM,lM,dM,mM,gM,pM=function(i,r){r.delimiter||(r.delimiter="\xbb");return{dom:{tag:"div",classes:["tox-statusbar__path"],attributes:{role:"navigation"}},behaviours:ba([lg.config({mode:"flow",selector:"div[role=button]"}),Gy.config({}),mg.config({}),Kd("elementPathEvents",[Ii(function(e,n){i.shortcuts.add("alt+F11","focus statusbar elementpath",function(){return lg.focusIn(e)}),i.on("NodeChange",function(n){var t=function(n){for(var t=[],e=n.length;0<e--;){var o=n[e];if(1===o.nodeType&&!O_(o)){var r=i.fire("ResolveName",{name:o.nodeName.toLowerCase(),target:o});if(r.isDefaultPrevented()||t.push({name:r.name,element:o}),r.isPropagationStopped())break}}return t}(n.parents);0<t.length&&mg.set(e,function(n){var t=S(n||[],function(t,n){return Gg.sketch({dom:{tag:"div",classes:["tox-statusbar__path-item"],attributes:{role:"button","data-index":n,"tab-index":-1,"aria-level":n+1},innerHtml:t.name},action:function(n){i.focus(),i.selection.select(t.element),i.nodeChanged()}})}),o={dom:{tag:"div",classes:["tox-statusbar__path-divider"],attributes:{"aria-hidden":!0},innerHtml:" "+r.delimiter+" "}};return O(t.slice(1),function(n,t){var e=n;return e.push(o),e.push(t),e},[t[0]])}(t))})})])]),components:[]}},hM=function(l){function d(){return e.bind(FA.getHeader)}function m(){return an.value(v)}function n(){return e.bind(function(n){return FA.getMoreButton(n)}).getOrDie("Could not find more button element")}function g(){return e.bind(function(n){return FA.getThrobber(n)}).getOrDie("Could not find throbber element")}var t=l.inline,p=t?GA:LA,h=$b(l)?dA:hA,e=on.none(),o=Ht(),r=o.browser.isIE()?["tox-platform-ie"]:[],i=o.deviceType.isTouch()?["tox-platform-touch"]:[],u=rh.isRtl()?{attributes:{dir:"rtl"}}:{},v=uu({dom:N({tag:"div",classes:["tox","tox-silver-sink","tox-tinymce-aux"].concat(r).concat(i)},u),behaviours:ba([Af.config({useFixed:function(){return h.isDocked(d)}})])}),a=vm({dom:{tag:"div",classes:["tox-anchorbar"]}}),b=hO(v,l,function(){return e.bind(function(n){return a.getOpt(n)}).getOrDie("Could not find a anchor bar element")},n),c=FA.parts().menubar({dom:{tag:"div",classes:["tox-menubar"]},backstage:b,onEscape:function(){l.focus()}}),s=Yb(l),f=FA.parts().toolbar({dom:{tag:"div",classes:["tox-toolbar"]},getSink:m,backstage:b,onEscape:function(){l.focus()},split:s,lazyToolbar:function(){return e.bind(function(n){return FA.getToolbar(n)}).getOrDie("Could not find more toolbar element")},lazyMoreButton:n,lazyHeader:function(){return d().getOrDie("Could not find header element")}}),y=FA.parts()["multiple-toolbar"]({dom:{tag:"div",classes:["tox-toolbar-overlord"]},onEscape:function(){},split:s}),x=FA.parts().socket({dom:{tag:"div",classes:["tox-edit-area"]}}),w=FA.parts().sidebar({dom:{tag:"div",classes:["tox-sidebar"]}}),S=FA.parts().throbber({dom:{tag:"div",classes:["tox-throbber"]},backstage:b}),C=l.getParam("statusbar",!0,"boolean")&&!t?on.some(E_(l,b.shared.providers)):on.none(),k={dom:{tag:"div",classes:["tox-sidebar-wrap"]},components:[x,w]},O=Xb(l),E=zb(l),T=Pb(l),B=FA.parts().header({dom:{tag:"div",classes:["tox-editor-header"]},components:H([T?[c]:[],O?[y]:E?[f]:[],Kb(l)?[]:[a.asSpec()]]),sticky:$b(l),editor:l,getSink:m}),D=H([[B],t?[]:[k]]),A=H([[{dom:{tag:"div",classes:["tox-editor-container"]},components:D}],t?[]:C.toArray(),[S]]),_=Jb(l),M=N(N({role:"application"},rh.isRtl()?{dir:"rtl"}:{}),_?{"aria-hidden":"true"}:{}),F=uu(FA.sketch({dom:{tag:"div",classes:["tox","tox-tinymce"].concat(t?["tox-tinymce-inline"]:[]).concat(i).concat(r),styles:N({visibility:"hidden"},_?{opacity:"0",border:"0"}:{}),attributes:M},components:A,behaviours:ba([lg.config({mode:"cyclic",selector:".tox-menubar, .tox-toolbar, .tox-toolbar__primary, .tox-toolbar__overflow--open, .tox-sidebar__overflow--open, .tox-statusbar__path, .tox-statusbar__wordcount, .tox-statusbar__branding a"})])}));e=on.some(F),l.shortcuts.add("alt+F9","focus menubar",function(){FA.focusMenubar(F)}),l.shortcuts.add("alt+F10","focus toolbar",function(){FA.focusToolbar(F)});var I=Mb(F),R=Mb(v);XD(l,I,R),iy(l);function V(){var n=WA(KB(l)),t=WA(function(n){return JB(n).getOr(Ib(n))}(l));return l.inline||(Cr("div","width",t)&&yr(F.element(),"width",t),Cr("div","height",n)?yr(F.element(),"height",n):yr(F.element(),"height","200px")),n}return{mothership:I,uiMothership:R,backstage:b,renderUI:function(){h.setup(l,d),QA(l,b),lD(l,m,b),function(o){var r=o.ui.registry.getAll().sidebars;bn(wn(r),function(t){function e(){return on.from(o.queryCommandValue("ToggleSidebar")).is(t)}var n=r[t];o.ui.registry.addToggleButton(t,{icon:n.icon,tooltip:n.tooltip,onAction:function(n){o.execCommand("ToggleSidebar",!1,t),n.setActive(e())},onSetup:function(n){function t(){return n.setActive(e())}return o.on("ToggleSidebar",t),function(){o.off("ToggleSidebar",t)}}})})}(l),function(e,t,o){function r(n){n!==i.get()&&(WB(t(),n,o.providers),i.set(n))}var i=ye(!1),u=ye(on.none());e.on("ProgressState",function(n){if(u.get().each(qg.clearTimeout),mn(n.time)){var t=qg.setEditorTimeout(e,function(){return r(n.state)},n.time);u.set(on.some(t))}else r(n.state),u.set(on.none())})}(l,g,b.shared);var n=l.ui.registry.getAll(),t=n.buttons,e=n.menuItems,o=n.contextToolbars,r=n.sidebars,i=Lb(l),u={menuItems:e,menus:l.settings.menu?P(l.settings.menu,function(n){return An(n,{items:n.items})}):{},menubar:l.settings.menubar,toolbar:i.getOrThunk(function(){return l.getParam("toolbar",!0)}),buttons:t,sidebar:r};GD(l,o,v,{backstage:b}),C_(l,v);var a=l.getElement(),c=V(),s={mothership:I,uiMothership:R,outerContainer:F},f={targetNode:a,height:c};return p.render(l,s,u,b,f)},getUi:function(){return{channels:{broadcastAll:R.broadcast,broadcastOn:R.broadcastOn,register:function(){}}}}}},vM=function(n,t){var e=on.from(zo(n,"id")).fold(function(){var n=Xo("dialog-label");return Po(t,"id",n),n},l);Po(n,"aria-labelledby",e)},bM=nn([ct("lazySink"),ht("dragBlockClass"),Bt("getBounds",Su),St("useTabstopAt",nn(!0)),St("eventOrder",{}),Fs("modalBehaviours",[lg]),Ku("onExecute"),$u("onEscape")]),yM={sketch:l},xM=nn([Sl({name:"draghandle",overrides:function(n,t){return{behaviours:ba([w_.config({mode:"mouse",getTarget:function(n){return Cu(n,'[role="dialog"]').getOr(n)},blockerClass:n.dragBlockClass.getOrDie(new Error("The drag blocker class was not specified for a dialog with a drag handle: \n"+JSON.stringify(t,null,2)).message),getBounds:n.getDragBounds})])}}}),xl({schema:[ct("dom")],name:"title"}),xl({factory:yM,schema:[ct("dom")],name:"close"}),xl({factory:yM,schema:[ct("dom")],name:"body"}),Sl({factory:yM,schema:[ct("dom")],name:"footer"}),wl({factory:{sketch:function(n,t){return N(N({},n),{dom:t.dom,components:t.components})}},schema:[St("dom",{tag:"div",styles:{position:"fixed",left:"0px",top:"0px",right:"0px",bottom:"0px"}}),St("components",[])],name:"blocker"})]),wM=Al({name:"ModalDialog",configFields:bM(),partFields:xM(),factory:function(o,n,t,r){var a=Xo("alloy.dialog.busy"),c=Xo("alloy.dialog.idle"),s=ba([lg.config({mode:"special",onTab:function(){return on.some(!0)},onShiftTab:function(){return on.some(!0)}}),vg.config({})]),e=Xo("modal-events"),i=N(N({},o.eventOrder),{"alloy.system.attached":[e].concat(o.eventOrder["alloy.system.attached"]||[])});return{uid:o.uid,dom:o.dom,components:n,apis:{show:function(i){var n=o.lazySink(i).getOrDie(),u=ye(on.none()),t=r.blocker(),e=n.getSystem().build(N(N({},t),{components:t.components.concat([au(i)]),behaviours:ba([vg.config({}),Kd("dialog-blocker-events",[bo(Qr(),function(){lg.focusIn(i)}),lo(c,function(n,t){Lo(i.element(),"aria-busy")&&(jo(i.element(),"aria-busy"),u.get().each(function(n){return mg.remove(i,n)}))}),lo(a,function(n,t){Po(i.element(),"aria-busy","true");var e=t.event().getBusySpec();u.get().each(function(n){mg.remove(i,n)});var o=e(i,s),r=n.getSystem().build(o);u.set(on.some(r)),mg.append(i,au(r)),r.hasConfigured(lg)&&lg.focusIn(r)})])])}));hs(n,e),lg.focusIn(i)},hide:function(t){Eo(t.element()).each(function(n){t.getSystem().getByDom(n).each(function(n){bs(n)})})},getBody:function(n){return Ks(n,o,"body")},getFooter:function(n){return Ks(n,o,"footer")},setIdle:function(n){oo(n,c)},setBusy:function(n,t){ro(n,a,{getBusySpec:t})}},eventOrder:i,domModification:{attributes:{role:"dialog","aria-modal":"true"}},behaviours:Rs(o.modalBehaviours,[mg.config({}),lg.config({mode:"cyclic",onEnter:o.onExecute,onEscape:o.onEscape,useTabstopAt:o.useTabstopAt}),Kd(e,[Ii(function(n){vM(n.element(),Ks(n,o,"title").element()),function(n,t){var e=on.from(zo(n,"id")).fold(function(){var n=Xo("dialog-describe");return Po(t,"id",n),n},l);Po(n,"aria-describedby",e)}(n.element(),Ks(n,o,"body").element())})])])}},apis:{show:function(n,t){n.show(t)},hide:function(n,t){n.hide(t)},getBody:function(n,t){return n.getBody(t)},getFooter:function(n,t){return n.getFooter(t)},setBusy:function(n,t,e){n.setBusy(t,e)},setIdle:function(n,t){n.setIdle(t)}}}),SM=[ft("type"),ft("text"),lt("level",["info","warn","error","success"]),ft("icon"),St("url","")],CM=re(SM),kM=[ft("type"),ft("text"),Tt("disabled",!1),Tt("primary",!1),ce("name","name",In(function(){return Xo("button-name")}),ge),yt("icon"),Tt("borderless",!1)],OM=re(kM),EM=[ft("type"),ft("name"),ft("label"),Tt("disabled",!1)],TM=re(EM),BM=pe,DM=[ft("type"),ft("name")],AM=DM.concat([yt("label")]),_M=re(AM),MM=ge,FM=re(AM),IM=ge,RM=re(AM),VM=Kn(se),NM=AM.concat([Tt("sandboxed",!0)]),HM=re(NM),PM=ge,zM=AM.concat([yt("inputMode"),yt("placeholder"),Tt("maximized",!1),Tt("disabled",!1)]),LM=re(zM),jM=ge,UM=AM.concat([gt("items",[ft("text"),ft("value")]),kt("size",1),Tt("disabled",!1)]),WM=re(UM),GM=ge,XM=AM.concat([Tt("constrain",!0),Tt("disabled",!1)]),YM=re(XM),qM=re([ft("width"),ft("height")]),KM=AM.concat([yt("placeholder"),Tt("maximized",!1),Tt("disabled",!1)]),JM=re(KM),$M=ge,QM=AM.concat([Et("filetype","file",["image","media","file"]),St("disabled",!1)]),ZM=re(QM),nF=re([ft("value"),St("meta",{})]),tF=DM.concat([Ot("tag","textarea"),ft("scriptId"),ft("scriptUrl"),(fM="settings",lM=undefined,Ct(fM,lM,be))]),eF=DM.concat([Ot("tag","textarea"),dt("init")]),oF=Zn(function(n){return tt("customeditor.old",qn(eF),n).orThunk(function(){return tt("customeditor.new",qn(tF),n)})}),rF=ge,iF=[ft("type"),ft("html"),Et("presets","presentation",["presentation","document"])],uF=re(iF),aF=AM.concat([st("currentState",re([ct("blob"),ft("url")]))]),cF=re(aF),sF=AM.concat([St("columns","auto")]),fF=re(sF),lF=(dM=[ft("value"),ft("text"),ft("icon")],ue(dM)),dF=[ft("type"),pt("header",ge),pt("cells",Kn(ge))],mF=re(dF),gF=fe(function(){return rt("type",{alertbanner:CM,bar:re(function(n){return[ft("type"),n]}(B_("bar"))),button:OM,checkbox:TM,colorinput:_M,colorpicker:FM,dropzone:RM,grid:re(T_(B_("grid"))),iframe:HM,input:LM,selectbox:WM,sizeinput:YM,textarea:JM,urlinput:ZM,customeditor:oF,htmlpanel:uF,imagetools:cF,collection:fF,label:re(function(n){return[ft("type"),ft("label"),n]}(B_("label"))),table:mF,panel:hF})}),pF=[ft("type"),St("classes",[]),pt("items",gF)],hF=re(pF),vF=[ce("name","name",In(function(){return Xo("tab-name")}),ge),ft("title"),pt("items",gF)],bF=[ft("type"),gt("tabs",vF)],yF=re(bF),xF=re([ft("type"),ft("name"),Tt("active",!1)].concat(Wp)),wF=pe,SF=[ce("name","name",In(function(){return Xo("button-name")}),ge),yt("icon"),Et("align","end",["start","end"]),Tt("primary",!1),Tt("disabled",!1)],CF=g(SF,[ft("text")]),kF=g([lt("type",["submit","cancel","custom"])],CF),OF=g([lt("type",["menu"]),yt("text"),yt("tooltip"),yt("icon"),pt("items",xF),Bt("onSetup",function(){return Z})],SF),EF=CF,TF=it("type",{submit:kF,cancel:kF,custom:kF,menu:OF}),BF=re([ft("title"),st("body",rt("type",{panel:hF,tabpanel:yF})),Ot("size","normal"),pt("buttons",TF),St("initialData",{}),Bt("onAction",Z),Bt("onChange",Z),Bt("onSubmit",Z),Bt("onClose",Z),Bt("onCancel",Z),St("onTabChange",Z)]),DF=function(n){return sn(n)?[n].concat(B(R(n),DF)):fn(n)?B(n,DF):[]},AF={checkbox:BM,colorinput:MM,colorpicker:IM,dropzone:VM,input:jM,iframe:PM,sizeinput:qM,selectbox:GM,size:qM,textarea:$M,urlinput:nF,customeditor:rF,collection:lF,togglemenuitem:wF},_F=re(g([lt("type",["cancel","custom"])],EF)),MF=re([ft("title"),ft("url"),bt("height"),bt("width"),(mM="buttons",gM=_F,vt(mM,Kn(gM))),Bt("onAction",Z),Bt("onCancel",Z),Bt("onClose",Z),Bt("onMessage",Z)]),FF={open:function(n,t){var e=__(t);return n(e.internalDialog,e.initialData,e.dataValidator)},openUrl:function(n,t){return n(et(function(n){return tt("dialog",MF,n)}(t)))},redial:function(n){return __(n)}},IF=Dl({name:"TabButton",configFields:[St("uid",undefined),ct("value"),ce("dom","dom",Rn(function(n){return{attributes:{role:"tab",id:Xo("aria"),"aria-selected":"false"}}}),de()),ht("action"),St("domModification",{}),Fs("tabButtonBehaviours",[vg,lg,Zf]),ct("view")],factory:function(n,t){return{uid:n.uid,dom:n.dom,components:n.components,events:rm(n.action),behaviours:Rs(n.tabButtonBehaviours,[vg.config({}),lg.config({mode:"execution",useSpace:!0,useEnter:!0}),Zf.config({store:{mode:"memory",initialValue:n.value}})]),domModification:n.domModification}}}),RF=nn([ct("tabs"),ct("dom"),St("clickToDismiss",!1),Fs("tabbarBehaviours",[ad,lg]),Xu(["tabClass","selectedClass"])]),VF=Cl({factory:IF,name:"tabs",unit:"tab",overrides:function(o,n){function r(n,t){ad.dehighlight(n,t),ro(n,Ai(),{tabbar:n,button:t})}function i(n,t){ad.highlight(n,t),ro(n,Di(),{tabbar:n,button:t})}return{action:function(n){var t=n.getSystem().getByUid(o.uid).getOrDie(),e=ad.isHighlighted(t,n);(e&&o.clickToDismiss?r:e?Z:i)(t,n)},domModification:{classes:[o.markers.tabClass]}}}}),NF=nn([VF]),HF=Al({name:"Tabbar",configFields:RF(),partFields:NF(),factory:function(n,t,e,o){return{uid:n.uid,dom:n.dom,components:t,"debug.sketcher":"Tabbar",domModification:{attributes:{role:"tablist"}},behaviours:Rs(n.tabbarBehaviours,[ad.config({highlightClass:n.markers.selectedClass,itemClass:n.markers.tabClass,onHighlight:function(n,t){Po(t.element(),"aria-selected","true")},onDehighlight:function(n,t){Po(t.element(),"aria-selected","false")}}),lg.config({mode:"flow",getInitial:function(n){return ad.getHighlighted(n).map(function(n){return n.element()})},selector:"."+n.markers.tabClass,executeOnMove:!0})])}}}),PF=Dl({name:"Tabview",configFields:[Fs("tabviewBehaviours",[mg])],factory:function(n,t){return{uid:n.uid,dom:n.dom,behaviours:Rs(n.tabviewBehaviours,[mg.config({})]),domModification:{attributes:{role:"tabpanel"}}}}}),zF=nn([St("selectFirst",!0),qu("onChangeTab"),qu("onDismissTab"),St("tabs",[]),Fs("tabSectionBehaviours",[])]),LF=xl({factory:HF,schema:[ct("dom"),mt("markers",[ct("tabClass"),ct("selectedClass")])],name:"tabbar",defaults:function(n){return{tabs:n.tabs}}}),jF=xl({factory:PF,name:"tabview"}),UF=nn([LF,jF]),WF=Al({name:"TabSection",configFields:zF(),partFields:UF(),factory:function(r,n,t,e){function o(n,t){qs(n,r,"tabbar").each(function(n){t(n).each(io)})}return{uid:r.uid,dom:r.dom,components:n,behaviours:Is(r.tabSectionBehaviours),events:co(H([r.selectFirst?[Ii(function(n,t){o(n,ad.getFirst)})]:[],[lo(Di(),function(n,t){!function(o){var t=Zf.getValue(o);qs(o,r,"tabview").each(function(e){E(r.tabs,function(n){return n.value===t}).each(function(n){var t=n.view();Po(e.element(),"aria-labelledby",zo(o.element(),"id")),mg.set(e,t),r.onChangeTab(e,o,t)})})}(t.event().button())}),lo(Ai(),function(n,t){var e=t.event().button();r.onDismissTab(n,e)})]])),apis:{getViewItems:function(n){return qs(n,r,"tabview").map(function(n){return mg.contents(n)}).getOr([])},showTab:function(n,e){o(n,function(t){var n=ad.getCandidates(t);return E(n,function(n){return Zf.getValue(n)===e}).filter(function(n){return!ad.isHighlighted(t,n)})})}}}},apis:{getViewItems:function(n,t){return n.getViewItems(t)},showTab:function(n,t,e){n.showTab(t,e)}}}),GF="send-data-to-section",XF="send-data-to-view",YF=Xo("update-dialog"),qF=Xo("update-title"),KF=Xo("update-body"),JF=Xo("update-footer"),$F=Xo("body-send-message"),QF=function(i,n){function t(n,r){return lo(n,function(e,o){u(e,function(n,t){r(i(),n,o.event(),e)})})}var u=function(t,e){RT.getState(t).get().each(function(n){e(n,t)})};return g(P_(t,n),[t(sy,function(n,t,e){t.onAction(n,{name:e.name()})})])},ZF=function(i,n){function t(n,r){return lo(n,function(e,o){u(e,function(n,t){r(i(),n,o.event(),e)})})}var u=function(t,e){RT.getState(t).get().each(function(n){e(n.internalDialog,t)})};return g(P_(t,n),[t(fy,function(n,t){return t.onSubmit(n)}),t(uy,function(n,t,e){t.onChange(n,{name:e.name()})}),t(sy,function(n,t,e,o){function r(){return lg.focusIn(o)}var i=Sa();t.onAction(n,{name:e.name(),value:e.value()}),Sa().fold(function(){r()},function(n){!Ye(o.element(),n)||Lo(n,"disabled")?r():Ye(n,i.getOrNull())&&Lo(i.getOrDie(),"disabled")&&r()})}),t(my,function(n,t,e){t.onTabChange(n,{newTabName:e.name(),oldTabName:e.oldName()})}),Ri(function(n){var t=i();Zf.setValue(n,t.getData())})])},nI=gh.deviceType.isTouch(),tI=tinymce.util.Tools.resolve("tinymce.util.URI"),eI=["insertContent","setContent","execCommand","close","block","unblock"],oI=function(n){var l=n.backstage,d=n.editor,m=$b(d),e=function(c){var s=c.backstage.shared;return{open:function(n,t){function e(){wM.hide(u),t()}var o=vm(YC({name:"close-alert",text:"OK",primary:!0,align:"end",disabled:!1,icon:on.none()},"cancel",c.backstage)),r=Y_(),i=X_(e,s.providers),u=uu($_({lazySink:function(){return s.getSink()},header:G_(r,i),body:q_(n,s.providers),footer:on.some(K_(J_([],[o.asSpec()]))),onEscape:e,extraClasses:["tox-alert-dialog"],extraBehaviours:[],extraStyles:{},dialogEvents:[lo(cy,e)],eventOrder:{}}));wM.show(u);var a=o.get(u);vg.focus(a)}}}(n),o=function(s){var f=s.backstage.shared;return{open:function(n,t){function e(n){wM.hide(a),t(n)}var o=vm(YC({name:"yes",text:"Yes",primary:!0,align:"end",disabled:!1,icon:on.none()},"submit",s.backstage)),r=YC({name:"no",text:"No",primary:!0,align:"end",disabled:!1,icon:on.none()},"cancel",s.backstage),i=Y_(),u=X_(function(){return e(!1)},f.providers),a=uu($_({lazySink:function(){return f.getSink()},header:G_(i,u),body:q_(n,f.providers),footer:on.some(K_(J_([],[r,o.asSpec()]))),onEscape:function(){return e(!1)},extraClasses:["tox-confirm-dialog"],extraBehaviours:[],extraStyles:{},dialogEvents:[lo(cy,function(){return e(!1)}),lo(fy,function(){return e(!0)})],eventOrder:{}}));wM.show(a);var c=o.get(a);vg.focus(c)}}}(n),r=function(n,e){return FF.openUrl(function(n){var t=sM(n,{closeWindow:function(){wM.hide(t.dialog),e(t.instanceApi)}},d,l);return wM.show(t.dialog),t.instanceApi},n)},i=function(n,i){return FF.open(function(n,t,e){var o=t,r=uM({dataValidator:e,initialData:o,internalDialog:n},{redial:FF.redial,closeWindow:function(){wM.hide(r.dialog),i(r.instanceApi)}},l);return wM.show(r.dialog),r.instanceApi.setData(o),r.instanceApi},n)},u=function(n,c,s,f){return FF.open(function(n,t,e){function o(){return i.on(function(n){cA.refresh(n)})}var r=function(n,t){return et(tt("data",t,n))}(t,e),i=function(){var t=ye(on.none());return{clear:function(){t.set(on.none())},set:function(n){t.set(on.some(n))},isSet:function(){return t.get().isSome()},on:function(n){t.get().each(n)}}}(),u=aM({dataValidator:e,initialData:r,internalDialog:n},{redial:FF.redial,closeWindow:function(){i.on(jg.hide),d.off("ResizeEditor",o),i.clear(),s(u.instanceApi)}},l,f),a=uu(jg.sketch({lazySink:l.shared.getSink,dom:{tag:"div",classes:[]},fireDismissalEventInstead:{},inlineBehaviours:ba(g([Kd("window-manager-inline-events",[lo(Oi(),function(n,t){oo(u.dialog,cy)})])],function(n,t){return t?[]:[cA.config({contextual:{lazyContext:function(){return on.some(xu(we.fromDom(n.getContentAreaContainer())))},fadeInClass:"tox-dialog-dock-fadein",fadeOutClass:"tox-dialog-dock-fadeout",transitionClass:"tox-dialog-dock-transition"},leftAttr:"data-dock-left",topAttr:"data-dock-top",positionAttr:"data-dock-pos",modes:["top"]})]}(d,m)))}));return i.set(a),jg.showWithin(a,c,au(u.dialog),on.some(zr())),m||(cA.refresh(a),d.on("ResizeEditor",o)),u.instanceApi.setData(r),lg.focusIn(u.dialog),u.instanceApi},n)};return{open:function(n,t,e){return t!==undefined&&"toolbar"===t.inline?u(n,l.shared.anchors.toolbar(),e,t.ariaAttrs):t!==undefined&&"cursor"===t.inline?u(n,l.shared.anchors.cursor(),e,t.ariaAttrs):i(n,e)},openUrl:function(n,t){return r(n,t)},alert:function(n,t){e.open(n,function(){t()})},close:function(n){n.close()},confirm:function(n,t){o.open(n,function(n){t(n)})}}};!function mI(){n.add("silver",function(n){var t=hM(n),e=t.uiMothership,o=t.backstage,r=t.renderUI,i=t.getUi;db(n,o.shared);var u=oI({editor:n,backstage:o});return{renderUI:r,getWindowManagerImpl:nn(u),getNotificationManagerImpl:function(){return Kg(0,{backstage:o},e)},ui:i()}})}()}(window);
\ No newline at end of file
diff --git a/admin/js/vendors/tinymce/js/tinymce/tinymce.min.js b/admin/js/vendors/tinymce/js/tinymce/tinymce.min.js
new file mode 100644 (file)
index 0000000..9f63063
--- /dev/null
@@ -0,0 +1,9 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ *
+ * Version: 5.1.5 (2019-12-19)
+ */
+!function(j){"use strict";function i(){}var q=function(n,r){return function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return n(r.apply(null,e))}},$=function(e){return function(){return e}},W=function(e){return e};function d(r){for(var o=[],e=1;e<arguments.length;e++)o[e-1]=arguments[e];return function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];var n=o.concat(e);return r.apply(null,n)}}function s(n){return function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return!n.apply(null,e)}}function e(){return u}var t,c=$(!1),a=$(!0),u=(t={fold:function(e,t){return e()},is:c,isSome:c,isNone:a,getOr:o,getOrThunk:r,getOrDie:function(e){throw new Error(e||"error: getOrDie called on none.")},getOrNull:$(null),getOrUndefined:$(undefined),or:o,orThunk:r,map:e,each:i,bind:e,exists:c,forall:a,filter:e,equals:n,equals_:n,toArray:function(){return[]},toString:$("none()")},Object.freeze&&Object.freeze(t),t);function n(e){return e.isNone()}function r(e){return e()}function o(e){return e}function l(t){return function(e){return function(e){if(null===e)return"null";var t=typeof e;return"object"==t&&(Array.prototype.isPrototypeOf(e)||e.constructor&&"Array"===e.constructor.name)?"array":"object"==t&&(String.prototype.isPrototypeOf(e)||e.constructor&&"String"===e.constructor.name)?"string":t}(e)===t}}function f(e,t){return O.call(e,t)}function h(e,t){return-1<f(e,t)}function C(e,t){for(var n=0,r=e.length;n<r;n++){if(t(e[n],n))return!0}return!1}function z(e,t){for(var n=0,r=e.length;n<r;n++){t(e[n],n)}}function y(e,t){for(var n=[],r=0,o=e.length;r<o;r++){var i=e[r];t(i,r)&&n.push(i)}return n}function m(e,t,n){return function(e,t){for(var n=e.length-1;0<=n;n--){t(e[n],n)}}(e,function(e){n=t(n,e)}),n}function b(e,t,n){return z(e,function(e){n=t(n,e)}),n}function g(e,t){for(var n=0,r=e.length;n<r;n++){var o=e[n];if(t(o,n))return k.some(o)}return k.none()}function p(e,t){for(var n=0,r=e.length;n<r;n++){if(t(e[n],n))return k.some(n)}return k.none()}function v(e,t){return function(e){for(var t=[],n=0,r=e.length;n<r;++n){if(!A(e[n]))throw new Error("Arr.flatten item "+n+" was not an array, input: "+e);H.apply(t,e[n])}return t}(X(e,t))}function w(e,t){for(var n=0,r=e.length;n<r;++n){if(!0!==t(e[n],n))return!1}return!0}function x(e,t){return y(e,function(e){return!h(t,e)})}function E(e){return 0===e.length?k.none():k.some(e[0])}function N(e){return 0===e.length?k.none():k.some(e[e.length-1])}var S=function(n){function e(){return o}function t(e){return e(n)}var r=$(n),o={fold:function(e,t){return t(n)},is:function(e){return n===e},isSome:a,isNone:c,getOr:r,getOrThunk:r,getOrDie:r,getOrNull:r,getOrUndefined:r,or:e,orThunk:e,map:function(e){return S(e(n))},each:function(e){e(n)},bind:t,exists:t,forall:t,filter:function(e){return e(n)?o:u},toArray:function(){return[n]},toString:function(){return"some("+n+")"},equals:function(e){return e.is(n)},equals_:function(e,t){return e.fold(c,function(e){return t(n,e)})}};return o},k={some:S,none:e,from:function(e){return null===e||e===undefined?u:S(e)}},K=l("string"),T=l("object"),A=l("array"),M=l("null"),R=l("boolean"),D=l("function"),_=l("number"),B=Array.prototype.slice,O=Array.prototype.indexOf,H=Array.prototype.push,X=function(e,t){for(var n=e.length,r=new Array(n),o=0;o<n;o++){var i=e[o];r[o]=t(i,o)}return r},Y=function(e,t){for(var n=[],r=[],o=0,i=e.length;o<i;o++){var a=e[o];(t(a,o)?n:r).push(a)}return{pass:n,fail:r}},P=D(Array.from)?Array.from:function(e){return B.call(e)},G=function(){return(G=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var o in t=arguments[n])Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o]);return e}).apply(this,arguments)};function L(t){return function(e){return!!e&&e.nodeType===t}}function V(e){var n=e.map(function(e){return e.toLowerCase()});return function(e){if(e&&e.nodeName){var t=e.nodeName.toLowerCase();return h(n,t)}return!1}}function I(t){return function(e){if(Fe(e)){if(e.contentEditable===t)return!0;if(e.getAttribute("data-mce-contenteditable")===t)return!0}return!1}}function F(e,t){var n=function(e,t){for(var n=0;n<e.length;n++){var r=e[n];if(r.test(t))return r}return undefined}(e,t);if(!n)return{major:0,minor:0};function r(e){return Number(t.replace(n,"$"+e))}return Ze(r(1),r(2))}function U(e,t){return function(){return t===e}}function J(e,t){return function(){return t===e}}function Q(e,t){var n=String(t).toLowerCase();return g(e,function(e){return e.search(n)})}function Z(e,t){return-1!==e.indexOf(t)}function ee(e,t){return function(e,t,n){return""===t||!(e.length<t.length)&&e.substr(n,n+t.length)===t}(e,t,0)}function te(e){return e.replace(/^\s+|\s+$/g,"")}function ne(e){return e.replace(/\s+$/g,"")}function re(t){return function(e){return Z(e,t)}}function oe(){return pt.get()}function ie(e){return e.dom().nodeName.toLowerCase()}function ae(t){return function(e){return function(e){return e.dom().nodeType}(e)===t}}function ue(e,t){for(var n=Et(e),r=0,o=n.length;r<o;r++){var i=n[r];t(e[i],i)}}function se(e,n){return St(e,function(e,t){return{k:t,v:n(e,t)}})}function ce(e,n){var r={},o={};return ue(e,function(e,t){(n(e,t)?r:o)[t]=e}),{t:r,f:o}}function le(e,t){return kt(e,t)?k.from(e[t]):k.none()}function fe(e){return e.style!==undefined&&D(e.style.getPropertyValue)}function de(e){var t=zt(e)?e.dom().parentNode:e.dom();return t!==undefined&&null!==t&&t.ownerDocument.body.contains(t)}function he(e,t,n){if(!(K(n)||R(n)||_(n)))throw j.console.error("Invalid call to Attr.set. Key ",t,":: Value ",n,":: Element ",e),new Error("Attribute value was not simple");e.setAttribute(t,n+"")}function me(e,t){var n=e.dom();ue(t,function(e,t){he(n,t,e)})}function ge(e,t){var n=e.dom().getAttribute(t);return null===n?undefined:n}function pe(e,t){e.dom().removeAttribute(t)}function ve(e,t){var n=e.dom(),r=j.window.getComputedStyle(n).getPropertyValue(t),o=""!==r||de(e)?r:At(n,t);return null===o?undefined:o}function ye(e,t){var n=e.dom(),r=At(n,t);return k.from(r).filter(function(e){return 0<e.length})}function be(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return function(){for(var n=[],e=0;e<arguments.length;e++)n[e]=arguments[e];if(t.length!==n.length)throw new Error('Wrong number of arguments to struct. Expected "['+t.length+']", got '+n.length+" arguments");var r={};return z(t,function(e,t){r[e]=$(n[t])}),r}}function Ce(e,t,n){return 0!=(e.compareDocumentPosition(t)&n)}function we(e,t){var n=e.dom();if(n.nodeType!==Dt)return!1;var r=n;if(r.matches!==undefined)return r.matches(t);if(r.msMatchesSelector!==undefined)return r.msMatchesSelector(t);if(r.webkitMatchesSelector!==undefined)return r.webkitMatchesSelector(t);if(r.mozMatchesSelector!==undefined)return r.mozMatchesSelector(t);throw new Error("Browser lacks native selectors")}function xe(e){return e.nodeType!==Dt&&e.nodeType!==_t||0===e.childElementCount}function ze(e,t){return e.dom()===t.dom()}function Ee(e){return yt.fromDom(e.dom().ownerDocument)}function Ne(e){return yt.fromDom(e.dom().ownerDocument.defaultView)}function Se(e){return k.from(e.dom().parentNode).map(yt.fromDom)}function ke(e){return k.from(e.dom().previousSibling).map(yt.fromDom)}function Te(e){return k.from(e.dom().nextSibling).map(yt.fromDom)}function Ae(e){return function(e){var t=B.call(e,0);return t.reverse(),t}(Mt(e,ke))}function Me(e){return Mt(e,Te)}function Re(e){return X(e.dom().childNodes,yt.fromDom)}function De(e,t){var n=e.dom().childNodes;return k.from(n[t]).map(yt.fromDom)}function _e(e){return De(e,0)}function Be(e){return De(e,e.dom().childNodes.length-1)}function Oe(e){return g(e,xt)}function He(e,t){return e.children&&h(e.children,t)}var Pe,Le,Ve,Ie,Fe=L(1),Ue=V(["textarea","input"]),je=L(3),qe=L(8),$e=L(9),We=L(11),Ke=V(["br"]),Xe=I("true"),Ye=I("false"),Ge={isText:je,isElement:Fe,isComment:qe,isDocument:$e,isDocumentFragment:We,isBr:Ke,isContentEditableTrue:Xe,isContentEditableFalse:Ye,isRestrictedNode:function(e){return!!e&&!Object.getPrototypeOf(e)},matchNodeNames:V,hasPropValue:function(t,n){return function(e){return Fe(e)&&e[t]===n}},hasAttribute:function(t,e){return function(e){return Fe(e)&&e.hasAttribute(t)}},hasAttributeValue:function(t,n){return function(e){return Fe(e)&&e.getAttribute(t)===n}},matchStyleValues:function(r,e){var o=e.toLowerCase().split(" ");return function(e){var t;if(Fe(e))for(t=0;t<o.length;t++){var n=e.ownerDocument.defaultView.getComputedStyle(e,null);if((n?n.getPropertyValue(r):null)===o[t])return!0}return!1}},isBogus:function(e){return Fe(e)&&e.hasAttribute("data-mce-bogus")},isBogusAll:function(e){return Fe(e)&&"all"===e.getAttribute("data-mce-bogus")},isTable:function(e){return Fe(e)&&"TABLE"===e.tagName},isTextareaOrInput:Ue},Je=function(e){function t(){return n}var n=e;return{get:t,set:function(e){n=e},clone:function(){return Je(t())}}},Qe=function(){return Ze(0,0)},Ze=function(e,t){return{major:e,minor:t}},et={nu:Ze,detect:function(e,t){var n=String(t).toLowerCase();return 0===e.length?Qe():F(e,n)},unknown:Qe},tt="Firefox",nt=function(e){var t=e.current;return{current:t,version:e.version,isEdge:U("Edge",t),isChrome:U("Chrome",t),isIE:U("IE",t),isOpera:U("Opera",t),isFirefox:U(tt,t),isSafari:U("Safari",t)}},rt={unknown:function(){return nt({current:undefined,version:et.unknown()})},nu:nt,edge:$("Edge"),chrome:$("Chrome"),ie:$("IE"),opera:$("Opera"),firefox:$(tt),safari:$("Safari")},ot="Windows",it="Android",at="Solaris",ut="FreeBSD",st=function(e){var t=e.current;return{current:t,version:e.version,isWindows:J(ot,t),isiOS:J("iOS",t),isAndroid:J(it,t),isOSX:J("OSX",t),isLinux:J("Linux",t),isSolaris:J(at,t),isFreeBSD:J(ut,t)}},ct={unknown:function(){return st({current:undefined,version:et.unknown()})},nu:st,windows:$(ot),ios:$("iOS"),android:$(it),linux:$("Linux"),osx:$("OSX"),solaris:$(at),freebsd:$(ut)},lt=function(e,n){return Q(e,n).map(function(e){var t=et.detect(e.versionRegexes,n);return{current:e.name,version:t}})},ft=function(e,n){return Q(e,n).map(function(e){var t=et.detect(e.versionRegexes,n);return{current:e.name,version:t}})},dt=/.*?version\/\ ?([0-9]+)\.([0-9]+).*/,ht=[{name:"Edge",versionRegexes:[/.*?edge\/ ?([0-9]+)\.([0-9]+)$/],search:function(e){return Z(e,"edge/")&&Z(e,"chrome")&&Z(e,"safari")&&Z(e,"applewebkit")}},{name:"Chrome",versionRegexes:[/.*?chrome\/([0-9]+)\.([0-9]+).*/,dt],search:function(e){return Z(e,"chrome")&&!Z(e,"chromeframe")}},{name:"IE",versionRegexes:[/.*?msie\ ?([0-9]+)\.([0-9]+).*/,/.*?rv:([0-9]+)\.([0-9]+).*/],search:function(e){return Z(e,"msie")||Z(e,"trident")}},{name:"Opera",versionRegexes:[dt,/.*?opera\/([0-9]+)\.([0-9]+).*/],search:re("opera")},{name:"Firefox",versionRegexes:[/.*?firefox\/\ ?([0-9]+)\.([0-9]+).*/],search:re("firefox")},{name:"Safari",versionRegexes:[dt,/.*?cpu os ([0-9]+)_([0-9]+).*/],search:function(e){return(Z(e,"safari")||Z(e,"mobile/"))&&Z(e,"applewebkit")}}],mt=[{name:"Windows",search:re("win"),versionRegexes:[/.*?windows\ nt\ ?([0-9]+)\.([0-9]+).*/]},{name:"iOS",search:function(e){return Z(e,"iphone")||Z(e,"ipad")},versionRegexes:[/.*?version\/\ ?([0-9]+)\.([0-9]+).*/,/.*cpu os ([0-9]+)_([0-9]+).*/,/.*cpu iphone os ([0-9]+)_([0-9]+).*/]},{name:"Android",search:re("android"),versionRegexes:[/.*?android\ ?([0-9]+)\.([0-9]+).*/]},{name:"OSX",search:re("os x"),versionRegexes:[/.*?os\ x\ ?([0-9]+)_([0-9]+).*/]},{name:"Linux",search:re("linux"),versionRegexes:[]},{name:"Solaris",search:re("sunos"),versionRegexes:[]},{name:"FreeBSD",search:re("freebsd"),versionRegexes:[]}],gt={browsers:$(ht),oses:$(mt)},pt=Je(function(e,t){var n=gt.browsers(),r=gt.oses(),o=lt(n,e).fold(rt.unknown,rt.nu),i=ft(r,e).fold(ct.unknown,ct.nu);return{browser:o,os:i,deviceType:function(e,t,n,r){var o=e.isiOS()&&!0===/ipad/i.test(n),i=e.isiOS()&&!o,a=e.isiOS()||e.isAndroid(),u=a||r("(pointer:coarse)"),s=o||!i&&a&&r("(min-device-width:768px)"),c=i||a&&!s,l=t.isSafari()&&e.isiOS()&&!1===/safari/i.test(n),f=!c&&!s&&!l;return{isiPad:$(o),isiPhone:$(i),isTablet:$(s),isPhone:$(c),isTouch:$(u),isAndroid:e.isAndroid,isiOS:e.isiOS,isWebView:$(l),isDesktop:$(f)}}(i,o,e,t)}}(j.navigator.userAgent,function(e){return j.window.matchMedia(e).matches})),vt=function(e){if(null===e||e===undefined)throw new Error("Node cannot be null or undefined");return{dom:$(e)}},yt={fromHtml:function(e,t){var n=(t||j.document).createElement("div");if(n.innerHTML=e,!n.hasChildNodes()||1<n.childNodes.length)throw j.console.error("HTML does not have a single root node",e),new Error("HTML must have a single root node");return vt(n.childNodes[0])},fromTag:function(e,t){var n=(t||j.document).createElement(e);return vt(n)},fromText:function(e,t){var n=(t||j.document).createTextNode(e);return vt(n)},fromDom:vt,fromPoint:function(e,t,n){var r=e.dom();return k.from(r.elementFromPoint(t,n)).map(vt)}},bt=(j.Node.ATTRIBUTE_NODE,j.Node.CDATA_SECTION_NODE,j.Node.COMMENT_NODE,j.Node.DOCUMENT_NODE),Ct=(j.Node.DOCUMENT_TYPE_NODE,j.Node.DOCUMENT_FRAGMENT_NODE,j.Node.ELEMENT_NODE),wt=j.Node.TEXT_NODE,xt=(j.Node.PROCESSING_INSTRUCTION_NODE,j.Node.ENTITY_REFERENCE_NODE,j.Node.ENTITY_NODE,j.Node.NOTATION_NODE,"undefined"!=typeof j.window?j.window:Function("return this;")(),ae(Ct)),zt=ae(wt),Et=Object.keys,Nt=Object.hasOwnProperty,St=function(e,r){var o={};return ue(e,function(e,t){var n=r(e,t);o[n.k]=n.v}),o},kt=function(e,t){return Nt.call(e,t)},Tt=function(e,t,n){he(e.dom(),t,n)},At=function(e,t){return fe(e)?e.style.getPropertyValue(t):""},Mt=function(e,t){for(var n=[],r=function(e){return n.push(e),t(e)},o=t(e);(o=o.bind(r)).isSome(););return n},Rt=function(e,t){return Ce(e,t,j.Node.DOCUMENT_POSITION_CONTAINED_BY)},Dt=Ct,_t=bt,Bt=oe().browser.isIE()?function(e,t){return Rt(e.dom(),t.dom())}:function(e,t){var n=e.dom(),r=t.dom();return n!==r&&n.contains(r)},Ot=(be("element","offset"),oe().browser),Ht={getPos:function(e,t,n){var r,o,i=0,a=0,u=e.ownerDocument;if(n=n||e,t){if(n===e&&t.getBoundingClientRect&&"static"===ve(yt.fromDom(e),"position"))return{x:i=(o=t.getBoundingClientRect()).left+(u.documentElement.scrollLeft||e.scrollLeft)-u.documentElement.clientLeft,y:a=o.top+(u.documentElement.scrollTop||e.scrollTop)-u.documentElement.clientTop};for(r=t;r&&r!==n&&r.nodeType&&!He(r,n);)i+=r.offsetLeft||0,a+=r.offsetTop||0,r=r.offsetParent;for(r=t.parentNode;r&&r!==n&&r.nodeType&&!He(r,n);)i-=r.scrollLeft||0,a-=r.scrollTop||0,r=r.parentNode;a+=function(e){return Ot.isFirefox()&&"table"===ie(e)?Oe(Re(e)).filter(function(e){return"caption"===ie(e)}).bind(function(o){return Oe(Me(o)).map(function(e){var t=e.dom().offsetTop,n=o.dom().offsetTop,r=o.dom().offsetHeight;return t<=n?-r:0})}).getOr(0):0}(yt.fromDom(t))}return{x:i,y:a}}},Pt={},Lt={exports:Pt};Pe=undefined,Le=Pt,Ve=Lt,Ie=undefined,function(e){"object"==typeof Le&&void 0!==Ve?Ve.exports=e():"function"==typeof Pe&&Pe.amd?Pe([],e):("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).EphoxContactWrapper=e()}(function(){return function l(i,a,u){function s(t,e){if(!a[t]){if(!i[t]){var n="function"==typeof Ie&&Ie;if(!e&&n)return n(t,!0);if(c)return c(t,!0);var r=new Error("Cannot find module '"+t+"'");throw r.code="MODULE_NOT_FOUND",r}var o=a[t]={exports:{}};i[t][0].call(o.exports,function(e){return s(i[t][1][e]||e)},o,o.exports,l,i,a,u)}return a[t].exports}for(var c="function"==typeof Ie&&Ie,e=0;e<u.length;e++)s(u[e]);return s}({1:[function(e,t,n){var r,o,i=t.exports={};function a(){throw new Error("setTimeout has not been defined")}function u(){throw new Error("clearTimeout has not been defined")}function s(e){if(r===setTimeout)return setTimeout(e,0);if((r===a||!r)&&setTimeout)return r=setTimeout,setTimeout(e,0);try{return r(e,0)}catch(t){try{return r.call(null,e,0)}catch(t){return r.call(this,e,0)}}}!function(){try{r="function"==typeof setTimeout?setTimeout:a}catch(e){r=a}try{o="function"==typeof clearTimeout?clearTimeout:u}catch(e){o=u}}();var c,l=[],f=!1,d=-1;function h(){f&&c&&(f=!1,c.length?l=c.concat(l):d=-1,l.length&&m())}function m(){if(!f){var e=s(h);f=!0;for(var t=l.length;t;){for(c=l,l=[];++d<t;)c&&c[d].run();d=-1,t=l.length}c=null,f=!1,function n(e){if(o===clearTimeout)return clearTimeout(e);if((o===u||!o)&&clearTimeout)return o=clearTimeout,clearTimeout(e);try{return o(e)}catch(t){try{return o.call(null,e)}catch(t){return o.call(this,e)}}}(e)}}function g(e,t){this.fun=e,this.array=t}function p(){}i.nextTick=function(e){var t=new Array(arguments.length-1);if(1<arguments.length)for(var n=1;n<arguments.length;n++)t[n-1]=arguments[n];l.push(new g(e,t)),1!==l.length||f||s(m)},g.prototype.run=function(){this.fun.apply(null,this.array)},i.title="browser",i.browser=!0,i.env={},i.argv=[],i.version="",i.versions={},i.on=p,i.addListener=p,i.once=p,i.off=p,i.removeListener=p,i.removeAllListeners=p,i.emit=p,i.prependListener=p,i.prependOnceListener=p,i.listeners=function(e){return[]},i.binding=function(e){throw new Error("process.binding is not supported")},i.cwd=function(){return"/"},i.chdir=function(e){throw new Error("process.chdir is not supported")},i.umask=function(){return 0}},{}],2:[function(e,f,t){(function(t){function r(){}function i(e){if("object"!=typeof this)throw new TypeError("Promises must be constructed via new");if("function"!=typeof e)throw new TypeError("not a function");this._state=0,this._handled=!1,this._value=undefined,this._deferreds=[],l(e,this)}function o(r,o){for(;3===r._state;)r=r._value;0!==r._state?(r._handled=!0,i._immediateFn(function(){var e=1===r._state?o.onFulfilled:o.onRejected;if(null!==e){var t;try{t=e(r._value)}catch(n){return void u(o.promise,n)}a(o.promise,t)}else(1===r._state?a:u)(o.promise,r._value)})):r._deferreds.push(o)}function a(e,t){try{if(t===e)throw new TypeError("A promise cannot be resolved with itself.");if(t&&("object"==typeof t||"function"==typeof t)){var n=t.then;if(t instanceof i)return e._state=3,e._value=t,void s(e);if("function"==typeof n)return void l(function r(e,t){return function(){e.apply(t,arguments)}}(n,t),e)}e._state=1,e._value=t,s(e)}catch(o){u(e,o)}}function u(e,t){e._state=2,e._value=t,s(e)}function s(e){2===e._state&&0===e._deferreds.length&&i._immediateFn(function(){e._handled||i._unhandledRejectionFn(e._value)});for(var t=0,n=e._deferreds.length;t<n;t++)o(e,e._deferreds[t]);e._deferreds=null}function c(e,t,n){this.onFulfilled="function"==typeof e?e:null,this.onRejected="function"==typeof t?t:null,this.promise=n}function l(e,t){var n=!1;try{e(function(e){n||(n=!0,a(t,e))},function(e){n||(n=!0,u(t,e))})}catch(r){if(n)return;n=!0,u(t,r)}}var e,n;e=this,n=setTimeout,i.prototype["catch"]=function(e){return this.then(null,e)},i.prototype.then=function(e,t){var n=new this.constructor(r);return o(this,new c(e,t,n)),n},i.all=function(e){var s=Array.prototype.slice.call(e);return new i(function(o,i){if(0===s.length)return o([]);var a=s.length;function u(t,e){try{if(e&&("object"==typeof e||"function"==typeof e)){var n=e.then;if("function"==typeof n)return void n.call(e,function(e){u(t,e)},i)}s[t]=e,0==--a&&o(s)}catch(r){i(r)}}for(var e=0;e<s.length;e++)u(e,s[e])})},i.resolve=function(t){return t&&"object"==typeof t&&t.constructor===i?t:new i(function(e){e(t)})},i.reject=function(n){return new i(function(e,t){t(n)})},i.race=function(o){return new i(function(e,t){for(var n=0,r=o.length;n<r;n++)o[n].then(e,t)})},i._immediateFn="function"==typeof t?function(e){t(e)}:function(e){n(e,0)},i._unhandledRejectionFn=function(e){"undefined"!=typeof console&&console&&console.warn("Possible Unhandled Promise Rejection:",e)},i._setImmediateFn=function(e){i._immediateFn=e},i._setUnhandledRejectionFn=function(e){i._unhandledRejectionFn=e},void 0!==f&&f.exports?f.exports=i:e.Promise||(e.Promise=i)}).call(this,e("timers").setImmediate)},{timers:3}],3:[function(s,e,c){(function(e,t){var r=s("process/browser.js").nextTick,n=Function.prototype.apply,o=Array.prototype.slice,i={},a=0;function u(e,t){this._id=e,this._clearFn=t}c.setTimeout=function(){return new u(n.call(setTimeout,window,arguments),clearTimeout)},c.setInterval=function(){return new u(n.call(setInterval,window,arguments),clearInterval)},c.clearTimeout=c.clearInterval=function(e){e.close()},u.prototype.unref=u.prototype.ref=function(){},u.prototype.close=function(){this._clearFn.call(window,this._id)},c.enroll=function(e,t){clearTimeout(e._idleTimeoutId),e._idleTimeout=t},c.unenroll=function(e){clearTimeout(e._idleTimeoutId),e._idleTimeout=-1},c._unrefActive=c.active=function(e){clearTimeout(e._idleTimeoutId);var t=e._idleTimeout;0<=t&&(e._idleTimeoutId=setTimeout(function(){e._onTimeout&&e._onTimeout()},t))},c.setImmediate="function"==typeof e?e:function(e){var t=a++,n=!(arguments.length<2)&&o.call(arguments,1);return i[t]=!0,r(function(){i[t]&&(n?e.apply(null,n):e.call(null),c.clearImmediate(t))}),t},c.clearImmediate="function"==typeof t?t:function(e){delete i[e]}}).call(this,s("timers").setImmediate,s("timers").clearImmediate)},{"process/browser.js":1,timers:3}],4:[function(e,t,n){var r=e("promise-polyfill"),o="undefined"!=typeof window?window:Function("return this;")();t.exports={boltExport:o.Promise||r}},{"promise-polyfill":2}]},{},[4])(4)});function Vt(e){j.setTimeout(function(){throw e},0)}function It(i,e){return e(function(n){var r=[],o=0;0===i.length?n([]):z(i,function(e,t){e.get(function(t){return function(e){r[t]=e,++o>=i.length&&n(r)}}(t))})})}var Ft,Ut,jt,qt=Lt.exports.boltExport,$t=function(e){var n=k.none(),t=[],r=function(e){o()?a(e):t.push(e)},o=function(){return n.isSome()},i=function(e){z(e,a)},a=function(t){n.each(function(e){j.setTimeout(function(){t(e)},0)})};return e(function(e){n=k.some(e),i(t),t=[]}),{get:r,map:function(n){return $t(function(t){r(function(e){t(n(e))})})},isReady:o}},Wt={nu:$t,pure:function(t){return $t(function(e){e(t)})}},Kt=function(n){function e(e){n().then(e,Vt)}return{map:function(e){return Kt(function(){return n().then(e)})},bind:function(t){return Kt(function(){return n().then(function(e){return t(e).toPromise()})})},anonBind:function(e){return Kt(function(){return n().then(function(){return e.toPromise()})})},toLazy:function(){return Wt.nu(e)},toCached:function(){var e=null;return Kt(function(){return null===e&&(e=n()),e})},toPromise:n,get:e}},Xt={nu:function(e){return Kt(function(){return new qt(e)})},pure:function(e){return Kt(function(){return qt.resolve(e)})}},Yt=function(e){return It(e,Xt.nu)},Gt=function(n){return{is:function(e){return n===e},isValue:a,isError:c,getOr:$(n),getOrThunk:$(n),getOrDie:$(n),or:function(e){return Gt(n)},orThunk:function(e){return Gt(n)},fold:function(e,t){return t(n)},map:function(e){return Gt(e(n))},mapError:function(e){return Gt(n)},each:function(e){e(n)},bind:function(e){return e(n)},exists:function(e){return e(n)},forall:function(e){return e(n)},toOption:function(){return k.some(n)}}},Jt=function(n){return{is:c,isValue:c,isError:a,getOr:W,getOrThunk:function(e){return e()},getOrDie:function(){return function(e){return function(){throw new Error(e)}}(String(n))()},or:function(e){return e},orThunk:function(e){return e()},fold:function(e,t){return e(n)},map:function(e){return Jt(n)},mapError:function(e){return Jt(e(n))},each:i,bind:function(e){return Jt(n)},exists:c,forall:a,toOption:k.none}},Qt={value:Gt,error:Jt,fromOption:function(e,t){return e.fold(function(){return Jt(t)},Gt)}},Zt=window.Promise?window.Promise:(Ft=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)},Ut=tn.immediateFn||"function"==typeof j.setImmediate&&j.setImmediate||function(e){j.setTimeout(e,1)},tn.prototype["catch"]=function(e){return this.then(null,e)},tn.prototype.then=function(n,r){var o=this;return new tn(function(e,t){nn.call(o,new un(n,r,e,t))})},tn.all=function(){var s=Array.prototype.slice.call(1===arguments.length&&Ft(arguments[0])?arguments[0]:arguments);return new tn(function(o,i){if(0===s.length)return o([]);var a=s.length;function u(t,e){try{if(e&&("object"==typeof e||"function"==typeof e)){var n=e.then;if("function"==typeof n)return void n.call(e,function(e){u(t,e)},i)}s[t]=e,0==--a&&o(s)}catch(r){i(r)}}for(var e=0;e<s.length;e++)u(e,s[e])})},tn.resolve=function(t){return t&&"object"==typeof t&&t.constructor===tn?t:new tn(function(e){e(t)})},tn.reject=function(n){return new tn(function(e,t){t(n)})},tn.race=function(o){return new tn(function(e,t){for(var n=0,r=o.length;n<r;n++)o[n].then(e,t)})},tn);function en(e,t){return function(){e.apply(t,arguments)}}function tn(e){if("object"!=typeof this)throw new TypeError("Promises must be constructed via new");if("function"!=typeof e)throw new TypeError("not a function");this._state=null,this._value=null,this._deferreds=[],sn(e,en(rn,this),en(on,this))}function nn(r){var o=this;null!==this._state?Ut(function(){var e=o._state?r.onFulfilled:r.onRejected;if(null!==e){var t;try{t=e(o._value)}catch(n){return void r.reject(n)}r.resolve(t)}else(o._state?r.resolve:r.reject)(o._value)}):this._deferreds.push(r)}function rn(e){try{if(e===this)throw new TypeError("A promise cannot be resolved with itself.");if(e&&("object"==typeof e||"function"==typeof e)){var t=e.then;if("function"==typeof t)return void sn(en(t,e),en(rn,this),en(on,this))}this._state=!0,this._value=e,an.call(this)}catch(n){on.call(this,n)}}function on(e){this._state=!1,this._value=e,an.call(this)}function an(){for(var e=0,t=this._deferreds.length;e<t;e++)nn.call(this,this._deferreds[e]);this._deferreds=null}function un(e,t,n,r){this.onFulfilled="function"==typeof e?e:null,this.onRejected="function"==typeof t?t:null,this.resolve=n,this.reject=r}function sn(e,t,n){var r=!1;try{e(function(e){r||(r=!0,t(e))},function(e){r||(r=!0,n(e))})}catch(o){if(r)return;r=!0,n(o)}}function cn(e,t){return"number"!=typeof t&&(t=0),j.setTimeout(e,t)}function ln(e,t){return"number"!=typeof t&&(t=1),j.setInterval(e,t)}function fn(n,r){var o,e;return(e=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];j.clearTimeout(o),o=cn(function(){n.apply(this,e)},r)}).stop=function(){j.clearTimeout(o)},e}function dn(e,t,n){var r,o;if(!e)return 0;if(n=n||e,e.length!==undefined){for(r=0,o=e.length;r<o;r++)if(!1===t.call(n,e[r],r,e))return 0}else for(r in e)if(e.hasOwnProperty(r)&&!1===t.call(n,e[r],r,e))return 0;return 1}function hn(e,t,n){var r,o;for(r=0,o=e.length;r<o;r++)if(t.call(n,e[r],r,e))return r;return-1}function mn(e){return null===e||e===undefined?"":(""+e).replace(Tn,"")}function gn(e,t){return t?!("array"!==t||!kn.isArray(e))||typeof e===t:e!==undefined}var pn={requestAnimationFrame:function(e,t){jt?jt.then(e):jt=new Zt(function(e){!function(e,t){var n,r=j.window.requestAnimationFrame,o=["ms","moz","webkit"];for(n=0;n<o.length&&!r;n++)r=j.window[o[n]+"RequestAnimationFrame"];(r=r||function(e){j.window.setTimeout(e,0)})(e,t)}(e,t=t||j.document.body)}).then(e)},setTimeout:cn,setInterval:ln,setEditorTimeout:function(e,t,n){return cn(function(){e.removed||t()},n)},setEditorInterval:function(e,t,n){var r;return r=ln(function(){e.removed?j.clearInterval(r):t()},n)},debounce:fn,throttle:fn,clearInterval:function(e){return j.clearInterval(e)},clearTimeout:function(e){return j.clearTimeout(e)}},vn=j.navigator.userAgent,yn=oe(),bn=yn.browser,Cn=yn.os,wn=yn.deviceType,xn=/WebKit/.test(vn)&&!bn.isEdge(),zn="FormData"in j.window&&"FileReader"in j.window&&"URL"in j.window&&!!j.URL.createObjectURL,En=-1!==vn.indexOf("Windows Phone"),Nn={opera:bn.isOpera(),webkit:xn,ie:!(!bn.isIE()&&!bn.isEdge())&&bn.version.major,gecko:bn.isFirefox(),mac:Cn.isOSX()||Cn.isiOS(),iOS:wn.isiPad()||wn.isiPhone(),android:Cn.isAndroid(),contentEditable:!0,transparentSrc:"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7",caretAfter:!0,range:j.window.getSelection&&"Range"in j.window,documentMode:bn.isIE()?j.document.documentMode||7:10,fileApi:zn,ceFalse:!0,cacheSuffix:null,container:null,experimentalShadowDom:!1,canHaveCSP:!bn.isIE(),desktop:wn.isDesktop(),windowsPhone:En,browser:{current:bn.current,version:bn.version,isChrome:bn.isChrome,isEdge:bn.isEdge,isFirefox:bn.isFirefox,isIE:bn.isIE,isOpera:bn.isOpera,isSafari:bn.isSafari},os:{current:Cn.current,version:Cn.version,isAndroid:Cn.isAndroid,isFreeBSD:Cn.isFreeBSD,isiOS:Cn.isiOS,isLinux:Cn.isLinux,isOSX:Cn.isOSX,isSolaris:Cn.isSolaris,isWindows:Cn.isWindows},deviceType:{isDesktop:wn.isDesktop,isiPad:wn.isiPad,isiPhone:wn.isiPhone,isPhone:wn.isPhone,isTablet:wn.isTablet,isTouch:wn.isTouch,isWebView:wn.isWebView}},Sn=Array.isArray,kn={isArray:Sn,toArray:function(e){var t,n,r=e;if(!Sn(e))for(r=[],t=0,n=e.length;t<n;t++)r[t]=e[t];return r},each:dn,map:function(n,r){var o=[];return dn(n,function(e,t){o.push(r(e,t,n))}),o},filter:function(n,r){var o=[];return dn(n,function(e,t){r&&!r(e,t,n)||o.push(e)}),o},indexOf:function(e,t){var n,r;if(e)for(n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},reduce:function(e,t,n,r){var o=0;for(arguments.length<3&&(n=e[0]);o<e.length;o++)n=t.call(r,n,e[o],o);return n},findIndex:hn,find:function(e,t,n){var r=hn(e,t,n);return-1!==r?e[r]:undefined},last:function(e){return e[e.length-1]}},Tn=/^\s*|\s*$/g,An=function(e,n,r,o){o=o||this,e&&(r&&(e=e[r]),kn.each(e,function(e,t){if(!1===n.call(o,e,t,r))return!1;An(e,n,r,o)}))},Mn={trim:mn,isArray:kn.isArray,is:gn,toArray:kn.toArray,makeMap:function(e,t,n){var r;for(t=t||",","string"==typeof(e=e||[])&&(e=e.split(t)),n=n||{},r=e.length;r--;)n[e[r]]={};return n},each:kn.each,map:kn.map,grep:kn.filter,inArray:kn.indexOf,hasOwn:function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},extend:function(e,t){for(var n,r,o,i=[],a=2;a<arguments.length;a++)i[a-2]=arguments[a];var u,s=arguments;for(n=1,r=s.length;n<r;n++)for(o in t=s[n])t.hasOwnProperty(o)&&(u=t[o])!==undefined&&(e[o]=u);return e},create:function(e,t,n){var r,o,i,a,u,s=this,c=0;if(e=/^((static) )?([\w.]+)(:([\w.]+))?/.exec(e),i=e[3].match(/(^|\.)(\w+)$/i)[2],!(o=s.createNS(e[3].replace(/\.\w+$/,""),n))[i]){if("static"===e[2])return o[i]=t,void(this.onCreate&&this.onCreate(e[2],e[3],o[i]));t[i]||(t[i]=function(){},c=1),o[i]=t[i],s.extend(o[i].prototype,t),e[5]&&(r=s.resolve(e[5]).prototype,a=e[5].match(/\.(\w+)$/i)[1],u=o[i],o[i]=c?function(){return r[a].apply(this,arguments)}:function(){return this.parent=r[a],u.apply(this,arguments)},o[i].prototype[i]=o[i],s.each(r,function(e,t){o[i].prototype[t]=r[t]}),s.each(t,function(e,t){r[t]?o[i].prototype[t]=function(){return this.parent=r[t],e.apply(this,arguments)}:t!==i&&(o[i].prototype[t]=e)})),s.each(t["static"],function(e,t){o[i][t]=e})}},walk:An,createNS:function(e,t){var n,r;for(t=t||j.window,e=e.split("."),n=0;n<e.length;n++)t[r=e[n]]||(t[r]={}),t=t[r];return t},resolve:function(e,t){var n,r;for(t=t||j.window,n=0,r=(e=e.split(".")).length;n<r&&(t=t[e[n]]);n++);return t},explode:function(e,t){return!e||gn(e,"array")?e:kn.map(e.split(t||","),mn)},_addCacheSuffix:function(e){var t=Nn.cacheSuffix;return t&&(e+=(-1===e.indexOf("?")?"?":"&")+t),e}};function Rn(t){var n;return function(e){return(n=n||function(e,t){for(var n={},r=0,o=e.length;r<o;r++){var i=e[r];n[String(i)]=t(i,r)}return n}(t,$(!0))).hasOwnProperty(ie(e))}}function Dn(e){return xt(e)&&!Vn(e)}function _n(e){return xt(e)&&"br"===ie(e)}function Bn(e){return e&&"SPAN"===e.tagName&&"bookmark"===e.getAttribute("data-mce-type")}var On,Hn,Pn,Ln=Rn(["h1","h2","h3","h4","h5","h6"]),Vn=Rn(["article","aside","details","div","dt","figcaption","footer","form","fieldset","header","hgroup","html","main","nav","section","summary","body","p","dl","multicol","dd","figure","address","center","blockquote","h1","h2","h3","h4","h5","h6","listing","xmp","pre","plaintext","menu","dir","ul","ol","li","hr","table","tbody","thead","tfoot","th","tr","td","caption"]),In=Rn(["h1","h2","h3","h4","h5","h6","p","div","address","pre","form","blockquote","center","dir","fieldset","header","footer","article","section","hgroup","aside","nav","figure"]),Fn=Rn(["ul","ol","dl"]),Un=Rn(["li","dd","dt"]),jn=Rn(["area","base","basefont","br","col","frame","hr","img","input","isindex","link","meta","param","embed","source","wbr","track"]),qn=Rn(["thead","tbody","tfoot"]),$n=Rn(["td","th"]),Wn=Rn(["pre","script","textarea","style"]),Kn=function(e,t){var n,r=t.childNodes;if(!Ge.isElement(t)||!Bn(t)){for(n=r.length-1;0<=n;n--)Kn(e,r[n]);if(!1===Ge.isDocument(t)){if(Ge.isText(t)&&0<t.nodeValue.length){var o=Mn.trim(t.nodeValue).length;if(e.isBlock(t.parentNode)||0<o)return;if(0===o&&function(e){var t=e.previousSibling&&"SPAN"===e.previousSibling.nodeName,n=e.nextSibling&&"SPAN"===e.nextSibling.nodeName;return t&&n}(t))return}else if(Ge.isElement(t)&&(1===(r=t.childNodes).length&&Bn(r[0])&&t.parentNode.insertBefore(r[0],t),r.length||jn(yt.fromDom(t))))return;e.remove(t)}return t}},Xn={trimNode:Kn},Yn=Mn.makeMap,Gn=/[&<>\"\u0060\u007E-\uD7FF\uE000-\uFFEF]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g,Jn=/[<>&\u007E-\uD7FF\uE000-\uFFEF]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g,Qn=/[<>&\"\']/g,Zn=/&#([a-z0-9]+);?|&([a-z0-9]+);/gi,er={128:"\u20ac",130:"\u201a",131:"\u0192",132:"\u201e",133:"\u2026",134:"\u2020",135:"\u2021",136:"\u02c6",137:"\u2030",138:"\u0160",139:"\u2039",140:"\u0152",142:"\u017d",145:"\u2018",146:"\u2019",147:"\u201c",148:"\u201d",149:"\u2022",150:"\u2013",151:"\u2014",152:"\u02dc",153:"\u2122",154:"\u0161",155:"\u203a",156:"\u0153",158:"\u017e",159:"\u0178"};Hn={'"':"&quot;","'":"&#39;","<":"&lt;",">":"&gt;","&":"&amp;","`":"&#96;"},Pn={"&lt;":"<","&gt;":">","&amp;":"&","&quot;":'"',"&apos;":"'"};function tr(e,t){var n,r,o,i={};if(e){for(e=e.split(","),t=t||10,n=0;n<e.length;n+=2)r=String.fromCharCode(parseInt(e[n],t)),Hn[r]||(o="&"+e[n+1]+";",i[r]=o,i[o]=r);return i}}On=tr("50,nbsp,51,iexcl,52,cent,53,pound,54,curren,55,yen,56,brvbar,57,sect,58,uml,59,copy,5a,ordf,5b,laquo,5c,not,5d,shy,5e,reg,5f,macr,5g,deg,5h,plusmn,5i,sup2,5j,sup3,5k,acute,5l,micro,5m,para,5n,middot,5o,cedil,5p,sup1,5q,ordm,5r,raquo,5s,frac14,5t,frac12,5u,frac34,5v,iquest,60,Agrave,61,Aacute,62,Acirc,63,Atilde,64,Auml,65,Aring,66,AElig,67,Ccedil,68,Egrave,69,Eacute,6a,Ecirc,6b,Euml,6c,Igrave,6d,Iacute,6e,Icirc,6f,Iuml,6g,ETH,6h,Ntilde,6i,Ograve,6j,Oacute,6k,Ocirc,6l,Otilde,6m,Ouml,6n,times,6o,Oslash,6p,Ugrave,6q,Uacute,6r,Ucirc,6s,Uuml,6t,Yacute,6u,THORN,6v,szlig,70,agrave,71,aacute,72,acirc,73,atilde,74,auml,75,aring,76,aelig,77,ccedil,78,egrave,79,eacute,7a,ecirc,7b,euml,7c,igrave,7d,iacute,7e,icirc,7f,iuml,7g,eth,7h,ntilde,7i,ograve,7j,oacute,7k,ocirc,7l,otilde,7m,ouml,7n,divide,7o,oslash,7p,ugrave,7q,uacute,7r,ucirc,7s,uuml,7t,yacute,7u,thorn,7v,yuml,ci,fnof,sh,Alpha,si,Beta,sj,Gamma,sk,Delta,sl,Epsilon,sm,Zeta,sn,Eta,so,Theta,sp,Iota,sq,Kappa,sr,Lambda,ss,Mu,st,Nu,su,Xi,sv,Omicron,t0,Pi,t1,Rho,t3,Sigma,t4,Tau,t5,Upsilon,t6,Phi,t7,Chi,t8,Psi,t9,Omega,th,alpha,ti,beta,tj,gamma,tk,delta,tl,epsilon,tm,zeta,tn,eta,to,theta,tp,iota,tq,kappa,tr,lambda,ts,mu,tt,nu,tu,xi,tv,omicron,u0,pi,u1,rho,u2,sigmaf,u3,sigma,u4,tau,u5,upsilon,u6,phi,u7,chi,u8,psi,u9,omega,uh,thetasym,ui,upsih,um,piv,812,bull,816,hellip,81i,prime,81j,Prime,81u,oline,824,frasl,88o,weierp,88h,image,88s,real,892,trade,89l,alefsym,8cg,larr,8ch,uarr,8ci,rarr,8cj,darr,8ck,harr,8dl,crarr,8eg,lArr,8eh,uArr,8ei,rArr,8ej,dArr,8ek,hArr,8g0,forall,8g2,part,8g3,exist,8g5,empty,8g7,nabla,8g8,isin,8g9,notin,8gb,ni,8gf,prod,8gh,sum,8gi,minus,8gn,lowast,8gq,radic,8gt,prop,8gu,infin,8h0,ang,8h7,and,8h8,or,8h9,cap,8ha,cup,8hb,int,8hk,there4,8hs,sim,8i5,cong,8i8,asymp,8j0,ne,8j1,equiv,8j4,le,8j5,ge,8k2,sub,8k3,sup,8k4,nsub,8k6,sube,8k7,supe,8kl,oplus,8kn,otimes,8l5,perp,8m5,sdot,8o8,lceil,8o9,rceil,8oa,lfloor,8ob,rfloor,8p9,lang,8pa,rang,9ea,loz,9j0,spades,9j3,clubs,9j5,hearts,9j6,diams,ai,OElig,aj,oelig,b0,Scaron,b1,scaron,bo,Yuml,m6,circ,ms,tilde,802,ensp,803,emsp,809,thinsp,80c,zwnj,80d,zwj,80e,lrm,80f,rlm,80j,ndash,80k,mdash,80o,lsquo,80p,rsquo,80q,sbquo,80s,ldquo,80t,rdquo,80u,bdquo,810,dagger,811,Dagger,81g,permil,81p,lsaquo,81q,rsaquo,85c,euro",32);function nr(e,t){return e.replace(t?Gn:Jn,function(e){return Hn[e]||e})}function rr(e,t){return e.replace(t?Gn:Jn,function(e){return 1<e.length?"&#"+(1024*(e.charCodeAt(0)-55296)+(e.charCodeAt(1)-56320)+65536)+";":Hn[e]||"&#"+e.charCodeAt(0)+";"})}function or(e,t,n){return n=n||On,e.replace(t?Gn:Jn,function(e){return Hn[e]||n[e]||e})}var ir={encodeRaw:nr,encodeAllRaw:function(e){return(""+e).replace(Qn,function(e){return Hn[e]||e})},encodeNumeric:rr,encodeNamed:or,getEncodeFunc:function(e,t){var n=tr(t)||On,r=Yn(e.replace(/\+/g,","));return r.named&&r.numeric?function(e,t){return e.replace(t?Gn:Jn,function(e){return Hn[e]!==undefined?Hn[e]:n[e]!==undefined?n[e]:1<e.length?"&#"+(1024*(e.charCodeAt(0)-55296)+(e.charCodeAt(1)-56320)+65536)+";":"&#"+e.charCodeAt(0)+";"})}:r.named?t?function(e,t){return or(e,t,n)}:or:r.numeric?rr:nr},decode:function(e){return e.replace(Zn,function(e,t){return t?65535<(t="x"===t.charAt(0).toLowerCase()?parseInt(t.substr(1),16):parseInt(t,10))?(t-=65536,String.fromCharCode(55296+(t>>10),56320+(1023&t))):er[t]||String.fromCharCode(t):Pn[e]||On[e]||function(e){var t;return(t=yt.fromTag("div").dom()).innerHTML=e,t.textContent||t.innerText||e}(e)})}},ar={},ur={},sr=Mn.makeMap,cr=Mn.each,lr=Mn.extend,fr=Mn.explode,dr=Mn.inArray,hr=function(e,t){return(e=Mn.trim(e))?e.split(t||" "):[]},mr=function(e){function t(e,t,n){function r(e,t){var n,r,o={};for(n=0,r=e.length;n<r;n++)o[e[n]]=t||{};return o}var o,i,a;for(t=t||"","string"==typeof(n=n||[])&&(n=hr(n)),o=(e=hr(e)).length;o--;)a={attributes:r(i=hr([u,t].join(" "))),attributesOrder:i,children:r(n,ur)},c[e[o]]=a}function n(e,t){var n,r,o,i;for(n=(e=hr(e)).length,t=hr(t);n--;)for(r=c[e[n]],o=0,i=t.length;o<i;o++)r.attributes[t[o]]={},r.attributesOrder.push(t[o])}var u,r,o,i,a,s,c={};return ar[e]?ar[e]:(u="id accesskey class dir lang style tabindex title role",r="address blockquote div dl fieldset form h1 h2 h3 h4 h5 h6 hr menu ol p pre table ul",o="a abbr b bdo br button cite code del dfn em embed i iframe img input ins kbd label map noscript object q s samp script select small span strong sub sup textarea u var #text #comment","html4"!==e&&(u+=" contenteditable contextmenu draggable dropzone hidden spellcheck translate",r+=" article aside details dialog figure main header footer hgroup section nav",o+=" audio canvas command datalist mark meter output picture progress time wbr video ruby bdi keygen"),"html5-strict"!==e&&(u+=" xml:lang",o=[o,s="acronym applet basefont big font strike tt"].join(" "),cr(hr(s),function(e){t(e,"",o)}),r=[r,a="center dir isindex noframes"].join(" "),i=[r,o].join(" "),cr(hr(a),function(e){t(e,"",i)})),i=i||[r,o].join(" "),t("html","manifest","head body"),t("head","","base command link meta noscript script style title"),t("title hr noscript br"),t("base","href target"),t("link","href rel media hreflang type sizes hreflang"),t("meta","name http-equiv content charset"),t("style","media type scoped"),t("script","src async defer type charset"),t("body","onafterprint onbeforeprint onbeforeunload onblur onerror onfocus onhashchange onload onmessage onoffline ononline onpagehide onpageshow onpopstate onresize onscroll onstorage onunload",i),t("address dt dd div caption","",i),t("h1 h2 h3 h4 h5 h6 pre p abbr code var samp kbd sub sup i b u bdo span legend em strong small s cite dfn","",o),t("blockquote","cite",i),t("ol","reversed start type","li"),t("ul","","li"),t("li","value",i),t("dl","","dt dd"),t("a","href target rel media hreflang type",o),t("q","cite",o),t("ins del","cite datetime",i),t("img","src sizes srcset alt usemap ismap width height"),t("iframe","src name width height",i),t("embed","src type width height"),t("object","data type typemustmatch name usemap form width height",[i,"param"].join(" ")),t("param","name value"),t("map","name",[i,"area"].join(" ")),t("area","alt coords shape href target rel media hreflang type"),t("table","border","caption colgroup thead tfoot tbody tr"+("html4"===e?" col":"")),t("colgroup","span","col"),t("col","span"),t("tbody thead tfoot","","tr"),t("tr","","td th"),t("td","colspan rowspan headers",i),t("th","colspan rowspan headers scope abbr",i),t("form","accept-charset action autocomplete enctype method name novalidate target",i),t("fieldset","disabled form name",[i,"legend"].join(" ")),t("label","form for",o),t("input","accept alt autocomplete checked dirname disabled form formaction formenctype formmethod formnovalidate formtarget height list max maxlength min multiple name pattern readonly required size src step type value width"),t("button","disabled form formaction formenctype formmethod formnovalidate formtarget name type value","html4"===e?i:o),t("select","disabled form multiple name required size","option optgroup"),t("optgroup","disabled label","option"),t("option","disabled label selected value"),t("textarea","cols dirname disabled form maxlength name readonly required rows wrap"),t("menu","type label",[i,"li"].join(" ")),t("noscript","",i),"html4"!==e&&(t("wbr"),t("ruby","",[o,"rt rp"].join(" ")),t("figcaption","",i),t("mark rt rp summary bdi","",o),t("canvas","width height",i),t("video","src crossorigin poster preload autoplay mediagroup loop muted controls width height buffered",[i,"track source"].join(" ")),t("audio","src crossorigin preload autoplay mediagroup loop muted controls buffered volume",[i,"track source"].join(" ")),t("picture","","img source"),t("source","src srcset type media sizes"),t("track","kind src srclang label default"),t("datalist","",[o,"option"].join(" ")),t("article section nav aside main header footer","",i),t("hgroup","","h1 h2 h3 h4 h5 h6"),t("figure","",[i,"figcaption"].join(" ")),t("time","datetime",o),t("dialog","open",i),t("command","type label icon disabled checked radiogroup command"),t("output","for form name",o),t("progress","value max",o),t("meter","value min max low high optimum",o),t("details","open",[i,"summary"].join(" ")),t("keygen","autofocus challenge disabled form keytype name")),"html5-strict"!==e&&(n("script","language xml:space"),n("style","xml:space"),n("object","declare classid code codebase codetype archive standby align border hspace vspace"),n("embed","align name hspace vspace"),n("param","valuetype type"),n("a","charset name rev shape coords"),n("br","clear"),n("applet","codebase archive code object alt name width height align hspace vspace"),n("img","name longdesc align border hspace vspace"),n("iframe","longdesc frameborder marginwidth marginheight scrolling align"),n("font basefont","size color face"),n("input","usemap align"),n("select","onchange"),n("textarea"),n("h1 h2 h3 h4 h5 h6 div p legend caption","align"),n("ul","type compact"),n("li","type"),n("ol dl menu dir","compact"),n("pre","width xml:space"),n("hr","align noshade size width"),n("isindex","prompt"),n("table","summary width frame rules cellspacing cellpadding align bgcolor"),n("col","width align char charoff valign"),n("colgroup","width align char charoff valign"),n("thead","align char charoff valign"),n("tr","align char charoff valign bgcolor"),n("th","axis align char charoff valign nowrap bgcolor width height"),n("form","accept"),n("td","abbr axis scope align char charoff valign nowrap bgcolor width height"),n("tfoot","align char charoff valign"),n("tbody","align char charoff valign"),n("area","nohref"),n("body","background bgcolor text link vlink alink")),"html4"!==e&&(n("input button select textarea","autofocus"),n("input textarea","placeholder"),n("a","download"),n("link script img","crossorigin"),n("iframe","sandbox seamless allowfullscreen")),cr(hr("a form meter progress dfn"),function(e){c[e]&&delete c[e].children[e]}),delete c.caption.children.table,delete c.script,ar[e]=c)},gr=function(e,n){var r;return e&&(r={},"string"==typeof e&&(e={"*":e}),cr(e,function(e,t){r[t]=r[t.toUpperCase()]="map"===n?sr(e,/[, ]/):fr(e,/[, ]/)})),r};function pr(i){function e(e,t,n){var r=i[e];return r?r=sr(r,/[, ]/,sr(r.toUpperCase(),/[, ]/)):(r=ar[e])||(r=sr(t," ",sr(t.toUpperCase()," ")),r=lr(r,n),ar[e]=r),r}var t,n,r,o,a,u,s,c,l,f,d,h,m,z={},g={},E=[],p={},v={};r=mr((i=i||{}).schema),!1===i.verify_html&&(i.valid_elements="*[*]"),t=gr(i.valid_styles),n=gr(i.invalid_styles,"map"),c=gr(i.valid_classes,"map"),o=e("whitespace_elements","pre script noscript style textarea video audio iframe object code"),a=e("self_closing_elements","colgroup dd dt li option p td tfoot th thead tr"),u=e("short_ended_elements","area base basefont br col frame hr img input isindex link meta param embed source wbr track"),s=e("boolean_attributes","checked compact declare defer disabled ismap multiple nohref noresize noshade nowrap readonly selected autoplay loop controls"),f=e("non_empty_elements","td th iframe video audio object script pre code",u),d=e("move_caret_before_on_enter_elements","table",f),h=e("text_block_elements","h1 h2 h3 h4 h5 h6 p div address pre form blockquote center dir fieldset header footer article section hgroup aside main nav figure"),l=e("block_elements","hr table tbody thead tfoot th tr td li ol ul caption dl dt dd noscript menu isindex option datalist select optgroup figcaption details summary",h),m=e("text_inline_elements","span strong b em i font strike u var cite dfn code mark q sup sub samp"),cr((i.special||"script noscript noframes noembed title style textarea xmp").split(" "),function(e){v[e]=new RegExp("</"+e+"[^>]*>","gi")});function N(e){return new RegExp("^"+e.replace(/([?+*])/g,".$1")+"$")}function y(e){var t,n,r,o,i,a,u,s,c,l,f,d,h,m,g,p,v,y,b,C=/^([#+\-])?([^\[!\/]+)(?:\/([^\[!]+))?(?:(!?)\[([^\]]+)\])?$/,w=/^([!\-])?(\w+[\\:]:\w+|[^=:<]+)?(?:([=:<])(.*))?$/,x=/[*?+]/;if(e)for(e=hr(e,","),z["@"]&&(p=z["@"].attributes,v=z["@"].attributesOrder),t=0,n=e.length;t<n;t++)if(i=C.exec(e[t])){if(m=i[1],c=i[2],g=i[3],s=i[5],a={attributes:d={},attributesOrder:h=[]},"#"===m&&(a.paddEmpty=!0),"-"===m&&(a.removeEmpty=!0),"!"===i[4]&&(a.removeEmptyAttrs=!0),p){for(y in p)d[y]=p[y];h.push.apply(h,v)}if(s)for(r=0,o=(s=hr(s,"|")).length;r<o;r++)if(i=w.exec(s[r])){if(u={},f=i[1],l=i[2].replace(/[\\:]:/g,":"),m=i[3],b=i[4],"!"===f&&(a.attributesRequired=a.attributesRequired||[],a.attributesRequired.push(l),u.required=!0),"-"===f){delete d[l],h.splice(dr(h,l),1);continue}m&&("="===m&&(a.attributesDefault=a.attributesDefault||[],a.attributesDefault.push({name:l,value:b}),u.defaultValue=b),":"===m&&(a.attributesForced=a.attributesForced||[],a.attributesForced.push({name:l,value:b}),u.forcedValue=b),"<"===m&&(u.validValues=sr(b,"?"))),x.test(l)?(a.attributePatterns=a.attributePatterns||[],u.pattern=N(l),a.attributePatterns.push(u)):(d[l]||h.push(l),d[l]=u)}p||"@"!==c||(p=d,v=h),g&&(a.outputName=c,z[g]=a),x.test(c)?(a.pattern=N(c),E.push(a)):z[c]=a}}function b(e){z={},E=[],y(e),cr(r,function(e,t){g[t]=e.children})}function C(e){var a=/^(~)?(.+)$/;e&&(ar.text_block_elements=ar.block_elements=null,cr(hr(e,","),function(e){var t=a.exec(e),n="~"===t[1],r=n?"span":"div",o=t[2];if(g[o]=g[r],p[o]=r,n||(l[o.toUpperCase()]={},l[o]={}),!z[o]){var i=z[r];delete(i=lr({},i)).removeEmptyAttrs,delete i.removeEmpty,z[o]=i}cr(g,function(e,t){e[r]&&(g[t]=e=lr({},g[t]),e[o]=e[r])})}))}function w(e){var o=/^([+\-]?)(\w+)\[([^\]]+)\]$/;ar[i.schema]=null,e&&cr(hr(e,","),function(e){var t,n,r=o.exec(e);r&&(n=r[1],t=n?g[r[2]]:g[r[2]]={"#comment":{}},t=g[r[2]],cr(hr(r[3],"|"),function(e){"-"===n?delete t[e]:t[e]={}}))})}function x(e){var t,n=z[e];if(n)return n;for(t=E.length;t--;)if((n=E[t]).pattern.test(e))return n}i.valid_elements?b(i.valid_elements):(cr(r,function(e,t){z[t]={attributes:e.attributes,attributesOrder:e.attributesOrder},g[t]=e.children}),"html5"!==i.schema&&cr(hr("strong/b em/i"),function(e){e=hr(e,"/"),z[e[1]].outputName=e[0]}),cr(hr("ol ul sub sup blockquote span font a table tbody tr strong em b i"),function(e){z[e]&&(z[e].removeEmpty=!0)}),cr(hr("p h1 h2 h3 h4 h5 h6 th td pre div address caption li"),function(e){z[e].paddEmpty=!0}),cr(hr("span"),function(e){z[e].removeEmptyAttrs=!0})),C(i.custom_elements),w(i.valid_children),y(i.extended_valid_elements),w("+ol[ul|ol],+ul[ul|ol]"),cr({dd:"dl",dt:"dl",li:"ul ol",td:"tr",th:"tr",tr:"tbody thead tfoot",tbody:"table",thead:"table",tfoot:"table",legend:"fieldset",area:"map",param:"video audio object"},function(e,t){z[t]&&(z[t].parentsRequired=hr(e))}),i.invalid_elements&&cr(fr(i.invalid_elements),function(e){z[e]&&delete z[e]}),x("span")||y("span[!data-mce-type|*]");return{children:g,elements:z,getValidStyles:function(){return t},getValidClasses:function(){return c},getBlockElements:function(){return l},getInvalidStyles:function(){return n},getShortEndedElements:function(){return u},getTextBlockElements:function(){return h},getTextInlineElements:function(){return m},getBoolAttrs:function(){return s},getElementRule:x,getSelfClosingElements:function(){return a},getNonEmptyElements:function(){return f},getMoveCaretBeforeOnEnterElements:function(){return d},getWhiteSpaceElements:function(){return o},getSpecialElements:function(){return v},isValidChild:function(e,t){var n=g[e.toLowerCase()];return!(!n||!n[t.toLowerCase()])},isValid:function(e,t){var n,r,o=x(e);if(o){if(!t)return!0;if(o.attributes[t])return!0;if(n=o.attributePatterns)for(r=n.length;r--;)if(n[r].pattern.test(e))return!0}return!1},getCustomElements:function(){return p},addValidElements:y,setValidElements:b,addCustomElements:C,addValidChildren:w}}function vr(e,t,n,r){function o(e){return 1<(e=parseInt(e,10).toString(16)).length?e:"0"+e}return"#"+o(t)+o(n)+o(r)}function yr(e,t,n,r){e.addEventListener?e.addEventListener(t,n,r||!1):e.attachEvent&&e.attachEvent("on"+t,n)}function br(e,t,n,r){e.removeEventListener?e.removeEventListener(t,n,r||!1):e.detachEvent&&e.detachEvent("on"+t,n)}function Cr(e,t){var n,r=t||{};for(n in e)Er[n]||(r[n]=e[n]);if(r.target||(r.target=r.srcElement||j.document),Nn.experimentalShadowDom&&(r.target=function(e,t){if(e.composedPath){var n=e.composedPath();if(n&&0<n.length)return n[0]}return t}(e,r.target)),e&&zr.test(e.type)&&e.pageX===undefined&&e.clientX!==undefined){var o=r.target.ownerDocument||j.document,i=o.documentElement,a=o.body;r.pageX=e.clientX+(i&&i.scrollLeft||a&&a.scrollLeft||0)-(i&&i.clientLeft||a&&a.clientLeft||0),r.pageY=e.clientY+(i&&i.scrollTop||a&&a.scrollTop||0)-(i&&i.clientTop||a&&a.clientTop||0)}return r.preventDefault=function(){r.isDefaultPrevented=Sr,e&&(e.preventDefault?e.preventDefault():e.returnValue=!1)},r.stopPropagation=function(){r.isPropagationStopped=Sr,e&&(e.stopPropagation?e.stopPropagation():e.cancelBubble=!0)},!(r.stopImmediatePropagation=function(){r.isImmediatePropagationStopped=Sr,r.stopPropagation()})===function(e){return e.isDefaultPrevented===Sr||e.isDefaultPrevented===Nr}(r)&&(r.isDefaultPrevented=Nr,r.isPropagationStopped=Nr,r.isImmediatePropagationStopped=Nr),"undefined"==typeof r.metaKey&&(r.metaKey=!1),r}function wr(e,t,n){var r=e.document,o={type:"ready"};if(n.domLoaded)t(o);else{var i=function(){br(e,"DOMContentLoaded",i),br(e,"load",i),n.domLoaded||(n.domLoaded=!0,t(o))};"complete"===r.readyState||"interactive"===r.readyState&&r.body?i():yr(e,"DOMContentLoaded",i),yr(e,"load",i)}}var xr=function(b,e){var C,t,c,l,w=/rgb\s*\(\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\s*\)/gi,x=/(?:url(?:(?:\(\s*\"([^\"]+)\"\s*\))|(?:\(\s*\'([^\']+)\'\s*\))|(?:\(\s*([^)\s]+)\s*\))))|(?:\'([^\']+)\')|(?:\"([^\"]+)\")/gi,z=/\s*([^:]+):\s*([^;]+);?/g,E=/\s+$/,N={},S="\ufeff";for(b=b||{},e&&(c=e.getValidStyles(),l=e.getInvalidStyles()),t=("\\\" \\' \\; \\: ; : "+S).split(" "),C=0;C<t.length;C++)N[t[C]]=S+C,N[S+C]=t[C];return{toHex:function(e){return e.replace(w,vr)},parse:function(e){function t(e,t,n){var r,o,i,a;if((r=p[e+"-top"+t])&&(o=p[e+"-right"+t])&&(i=p[e+"-bottom"+t])&&(a=p[e+"-left"+t])){var u=[r,o,i,a];for(C=u.length-1;C--&&u[C]===u[C+1];);-1<C&&n||(p[e+t]=-1===C?u[0]:u.join(" "),delete p[e+"-top"+t],delete p[e+"-right"+t],delete p[e+"-bottom"+t],delete p[e+"-left"+t])}}function n(e){var t,n=p[e];if(n){for(t=(n=n.split(" ")).length;t--;)if(n[t]!==n[0])return!1;return p[e]=n[0],!0}}function r(e){return f=!0,N[e]}function u(e,t){return f&&(e=e.replace(/\uFEFF[0-9]/g,function(e){return N[e]})),t||(e=e.replace(/\\([\'\";:])/g,"$1")),e}function o(e){return String.fromCharCode(parseInt(e.slice(1),16))}function i(e){return e.replace(/\\[0-9a-f]+/gi,o)}function a(e,t,n,r,o,i){if(o=o||i)return"'"+(o=u(o)).replace(/\'/g,"\\'")+"'";if(t=u(t||n||r),!b.allow_script_urls){var a=t.replace(/[\s\r\n]+/g,"");if(/(java|vb)script:/i.test(a))return"";if(!b.allow_svg_data_urls&&/^data:image\/svg/i.test(a))return""}return v&&(t=v.call(y,t,"style")),"url('"+t.replace(/\'/g,"\\'")+"')"}var s,c,l,f,d,h,m,g,p={},v=b.url_converter,y=b.url_converter_scope||this;if(e){for(e=(e=e.replace(/[\u0000-\u001F]/g,"")).replace(/\\[\"\';:\uFEFF]/g,r).replace(/\"[^\"]+\"|\'[^\']+\'/g,function(e){return e.replace(/[;:]/g,r)});s=z.exec(e);)if(z.lastIndex=s.index+s[0].length,c=s[1].replace(E,"").toLowerCase(),l=s[2].replace(E,""),c&&l){if(c=i(c),l=i(l),-1!==c.indexOf(S)||-1!==c.indexOf('"'))continue;if(!b.allow_script_urls&&("behavior"===c||/expression\s*\(|\/\*|\*\//.test(l)))continue;"font-weight"===c&&"700"===l?l="bold":"color"!==c&&"background-color"!==c||(l=l.toLowerCase()),l=(l=l.replace(w,vr)).replace(x,a),p[c]=f?u(l,!0):l}t("border","",!0),t("border","-width"),t("border","-color"),t("border","-style"),t("padding",""),t("margin",""),d="border",m="border-style",g="border-color",n(h="border-width")&&n(m)&&n(g)&&(p[d]=p[h]+" "+p[m]+" "+p[g],delete p[h],delete p[m],delete p[g]),"medium none"===p.border&&delete p.border,"none"===p["border-image"]&&delete p["border-image"]}return p},serialize:function(i,e){function t(e){var t,n,r,o;if(t=c[e])for(n=0,r=t.length;n<r;n++)e=t[n],(o=i[e])&&(s+=(0<s.length?" ":"")+e+": "+o+";")}var n,r,o,a,u,s="";if(e&&c)t("*"),t(e);else for(n in i)!(r=i[n])||l&&(o=n,a=e,u=void 0,(u=l["*"])&&u[o]||(u=l[a])&&u[o])||(s+=(0<s.length?" ":"")+n+": "+r+";");return s}}},zr=/^(?:mouse|contextmenu)|click/,Er={keyLocation:1,layerX:1,layerY:1,returnValue:1,webkitMovementX:1,webkitMovementY:1,keyIdentifier:1,mozPressure:1},Nr=function(){return!1},Sr=function(){return!0},kr=(Tr.prototype.bind=function(e,t,n,r){function o(e){d.executeHandlers(Cr(e||h.event),i)}var i,a,u,s,c,l,f,d=this,h=j.window;if(e&&3!==e.nodeType&&8!==e.nodeType){e[d.expando]?i=e[d.expando]:(i=d.count++,e[d.expando]=i,d.events[i]={}),r=r||e;var m=t.split(" ");for(u=m.length;u--;)l=o,c=f=!1,"DOMContentLoaded"===(s=m[u])&&(s="ready"),d.domLoaded&&"ready"===s&&"complete"===e.readyState?n.call(r,Cr({type:s})):(d.hasMouseEnterLeave||(c=d.mouseEnterLeave[s])&&(l=function(e){var t,n;if(t=e.currentTarget,(n=e.relatedTarget)&&t.contains)n=t.contains(n);else for(;n&&n!==t;)n=n.parentNode;n||((e=Cr(e||h.event)).type="mouseout"===e.type?"mouseleave":"mouseenter",e.target=t,d.executeHandlers(e,i))}),d.hasFocusIn||"focusin"!==s&&"focusout"!==s||(f=!0,c="focusin"===s?"focus":"blur",l=function(e){(e=Cr(e||h.event)).type="focus"===e.type?"focusin":"focusout",d.executeHandlers(e,i)}),(a=d.events[i][s])?"ready"===s&&d.domLoaded?n(Cr({type:s})):a.push({func:n,scope:r}):(d.events[i][s]=a=[{func:n,scope:r}],a.fakeName=c,a.capture=f,a.nativeHandler=l,"ready"===s?wr(e,l,d):yr(e,c||s,l,f)));return e=a=0,n}},Tr.prototype.unbind=function(e,t,n){var r,o,i,a,u,s;if(!e||3===e.nodeType||8===e.nodeType)return this;if(r=e[this.expando]){if(s=this.events[r],t){var c=t.split(" ");for(i=c.length;i--;)if(o=s[u=c[i]]){if(n)for(a=o.length;a--;)if(o[a].func===n){var l=o.nativeHandler,f=o.fakeName,d=o.capture;(o=o.slice(0,a).concat(o.slice(a+1))).nativeHandler=l,o.fakeName=f,o.capture=d,s[u]=o}n&&0!==o.length||(delete s[u],br(e,o.fakeName||u,o.nativeHandler,o.capture))}}else{for(u in s)o=s[u],br(e,o.fakeName||u,o.nativeHandler,o.capture);s={}}for(u in s)return this;delete this.events[r];try{delete e[this.expando]}catch(h){e[this.expando]=null}}return this},Tr.prototype.fire=function(e,t,n){var r;if(!e||3===e.nodeType||8===e.nodeType)return this;var o=Cr(null,n);for(o.type=t,o.target=e;(r=e[this.expando])&&this.executeHandlers(o,r),(e=e.parentNode||e.ownerDocument||e.defaultView||e.parentWindow)&&!o.isPropagationStopped(););return this},Tr.prototype.clean=function(e){var t,n;if(!e||3===e.nodeType||8===e.nodeType)return this;if(e[this.expando]&&this.unbind(e),e.getElementsByTagName||(e=e.document),e&&e.getElementsByTagName)for(this.unbind(e),t=(n=e.getElementsByTagName("*")).length;t--;)(e=n[t])[this.expando]&&this.unbind(e);return this},Tr.prototype.destroy=function(){this.events={}},Tr.prototype.cancel=function(e){return e&&(e.preventDefault(),e.stopImmediatePropagation()),!1},Tr.prototype.executeHandlers=function(e,t){var n,r,o,i,a=this.events[t];if(n=a&&a[e.type])for(r=0,o=n.length;r<o;r++)if((i=n[r])&&!1===i.func.call(i.scope,e)&&e.preventDefault(),e.isImmediatePropagationStopped())return},Tr.Event=new Tr,Tr);function Tr(){this.domLoaded=!1,this.events={},this.count=1,this.expando="mce-data-"+(+new Date).toString(32),this.hasMouseEnterLeave="onmouseenter"in j.document.documentElement,this.hasFocusIn="onfocusin"in j.document.documentElement,this.count=1}function Ar(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(65536+r):String.fromCharCode(r>>10|55296,1023&r|56320)}var Mr,Rr,Dr,_r,Br,Or,Hr,Pr,Lr,Vr,Ir,Fr,Ur,jr,qr,$r,Wr,Kr,Xr="sizzle"+-new Date,Yr=j.window.document,Gr=0,Jr=0,Qr=Mo(),Zr=Mo(),eo=Mo(),to=function(e,t){return e===t&&(Ir=!0),0},no=typeof undefined,ro={}.hasOwnProperty,oo=[],io=oo.pop,ao=oo.push,uo=oo.push,so=oo.slice,co=oo.indexOf||function(e){for(var t=0,n=this.length;t<n;t++)if(this[t]===e)return t;return-1},lo="[\\x20\\t\\r\\n\\f]",fo="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",ho="\\["+lo+"*("+fo+")(?:"+lo+"*([*^$|!~]?=)"+lo+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+fo+"))|)"+lo+"*\\]",mo=":("+fo+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+ho+")*)|.*)\\)|)",go=new RegExp("^"+lo+"+|((?:^|[^\\\\])(?:\\\\.)*)"+lo+"+$","g"),po=new RegExp("^"+lo+"*,"+lo+"*"),vo=new RegExp("^"+lo+"*([>+~]|"+lo+")"+lo+"*"),yo=new RegExp("="+lo+"*([^\\]'\"]*?)"+lo+"*\\]","g"),bo=new RegExp(mo),Co=new RegExp("^"+fo+"$"),wo={ID:new RegExp("^#("+fo+")"),CLASS:new RegExp("^\\.("+fo+")"),TAG:new RegExp("^("+fo+"|[*])"),ATTR:new RegExp("^"+ho),PSEUDO:new RegExp("^"+mo),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+lo+"*(even|odd|(([+-]|)(\\d*)n|)"+lo+"*(?:([+-]|)"+lo+"*(\\d+)|))"+lo+"*\\)|)","i"),bool:new RegExp("^(?:checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped)$","i"),needsContext:new RegExp("^"+lo+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+lo+"*((?:-\\d)?\\d*)"+lo+"*\\)|)(?=[^-]|$)","i")},xo=/^(?:input|select|textarea|button)$/i,zo=/^h\d$/i,Eo=/^[^{]+\{\s*\[native \w/,No=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,So=/[+~]/,ko=/'|\\/g,To=new RegExp("\\\\([\\da-f]{1,6}"+lo+"?|("+lo+")|.)","ig");try{uo.apply(oo=so.call(Yr.childNodes),Yr.childNodes),oo[Yr.childNodes.length].nodeType}catch(yN){uo={apply:oo.length?function(e,t){ao.apply(e,so.call(t))}:function(e,t){for(var n=e.length,r=0;e[n++]=t[r++];);e.length=n-1}}}var Ao=function(e,t,n,r){var o,i,a,u,s,c,l,f,d,h;if((t?t.ownerDocument||t:Yr)!==Ur&&Fr(t),n=n||[],!e||"string"!=typeof e)return n;if(1!==(u=(t=t||Ur).nodeType)&&9!==u)return[];if(qr&&!r){if(o=No.exec(e))if(a=o[1]){if(9===u){if(!(i=t.getElementById(a))||!i.parentNode)return n;if(i.id===a)return n.push(i),n}else if(t.ownerDocument&&(i=t.ownerDocument.getElementById(a))&&Kr(t,i)&&i.id===a)return n.push(i),n}else{if(o[2])return uo.apply(n,t.getElementsByTagName(e)),n;if((a=o[3])&&Rr.getElementsByClassName)return uo.apply(n,t.getElementsByClassName(a)),n}if(Rr.qsa&&(!$r||!$r.test(e))){if(f=l=Xr,d=t,h=9===u&&e,1===u&&"object"!==t.nodeName.toLowerCase()){for(c=Or(e),(l=t.getAttribute("id"))?f=l.replace(ko,"\\$&"):t.setAttribute("id",f),f="[id='"+f+"'] ",s=c.length;s--;)c[s]=f+Lo(c[s]);d=So.test(e)&&Ho(t.parentNode)||t,h=c.join(",")}if(h)try{return uo.apply(n,d.querySelectorAll(h)),n}catch(m){}finally{l||t.removeAttribute("id")}}}return Pr(e.replace(go,"$1"),t,n,r)};function Mo(){var n=[];return function r(e,t){return n.push(e+" ")>Dr.cacheLength&&delete r[n.shift()],r[e+" "]=t}}function Ro(e){return e[Xr]=!0,e}function Do(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&(~t.sourceIndex||1<<31)-(~e.sourceIndex||1<<31);if(r)return r;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function _o(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function Bo(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function Oo(a){return Ro(function(i){return i=+i,Ro(function(e,t){for(var n,r=a([],e.length,i),o=r.length;o--;)e[n=r[o]]&&(e[n]=!(t[n]=e[n]))})})}function Ho(e){return e&&typeof e.getElementsByTagName!=no&&e}for(Mr in Rr=Ao.support={},Br=Ao.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return!!t&&"HTML"!==t.nodeName},Fr=Ao.setDocument=function(e){var t,s=e?e.ownerDocument||e:Yr,n=s.defaultView;return s!==Ur&&9===s.nodeType&&s.documentElement?(jr=(Ur=s).documentElement,qr=!Br(s),n&&n!==function r(e){try{return e.top}catch(t){}return null}(n)&&(n.addEventListener?n.addEventListener("unload",function(){Fr()},!1):n.attachEvent&&n.attachEvent("onunload",function(){Fr()})),Rr.attributes=!0,Rr.getElementsByTagName=!0,Rr.getElementsByClassName=Eo.test(s.getElementsByClassName),Rr.getById=!0,Dr.find.ID=function(e,t){if(typeof t.getElementById!=no&&qr){var n=t.getElementById(e);return n&&n.parentNode?[n]:[]}},Dr.filter.ID=function(e){var t=e.replace(To,Ar);return function(e){return e.getAttribute("id")===t}},Dr.find.TAG=Rr.getElementsByTagName?function(e,t){if(typeof t.getElementsByTagName!=no)return t.getElementsByTagName(e)}:function(e,t){var n,r=[],o=0,i=t.getElementsByTagName(e);if("*"!==e)return i;for(;n=i[o++];)1===n.nodeType&&r.push(n);return r},Dr.find.CLASS=Rr.getElementsByClassName&&function(e,t){if(qr)return t.getElementsByClassName(e)},Wr=[],$r=[],Rr.disconnectedMatch=!0,$r=$r.length&&new RegExp($r.join("|")),Wr=Wr.length&&new RegExp(Wr.join("|")),t=Eo.test(jr.compareDocumentPosition),Kr=t||Eo.test(jr.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},to=t?function(e,t){if(e===t)return Ir=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!Rr.sortDetached&&t.compareDocumentPosition(e)===n?e===s||e.ownerDocument===Yr&&Kr(Yr,e)?-1:t===s||t.ownerDocument===Yr&&Kr(Yr,t)?1:Vr?co.call(Vr,e)-co.call(Vr,t):0:4&n?-1:1)}:function(e,t){if(e===t)return Ir=!0,0;var n,r=0,o=e.parentNode,i=t.parentNode,a=[e],u=[t];if(!o||!i)return e===s?-1:t===s?1:o?-1:i?1:Vr?co.call(Vr,e)-co.call(Vr,t):0;if(o===i)return Do(e,t);for(n=e;n=n.parentNode;)a.unshift(n);for(n=t;n=n.parentNode;)u.unshift(n);for(;a[r]===u[r];)r++;return r?Do(a[r],u[r]):a[r]===Yr?-1:u[r]===Yr?1:0},s):Ur},Ao.matches=function(e,t){return Ao(e,null,null,t)},Ao.matchesSelector=function(e,t){if((e.ownerDocument||e)!==Ur&&Fr(e),t=t.replace(yo,"='$1']"),Rr.matchesSelector&&qr&&(!Wr||!Wr.test(t))&&(!$r||!$r.test(t)))try{var n=(void 0).call(e,t);if(n||Rr.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(yN){}return 0<Ao(t,Ur,null,[e]).length},Ao.contains=function(e,t){return(e.ownerDocument||e)!==Ur&&Fr(e),Kr(e,t)},Ao.attr=function(e,t){(e.ownerDocument||e)!==Ur&&Fr(e);var n=Dr.attrHandle[t.toLowerCase()],r=n&&ro.call(Dr.attrHandle,t.toLowerCase())?n(e,t,!qr):undefined;return r!==undefined?r:Rr.attributes||!qr?e.getAttribute(t):(r=e.getAttributeNode(t))&&r.specified?r.value:null},Ao.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},Ao.uniqueSort=function(e){var t,n=[],r=0,o=0;if(Ir=!Rr.detectDuplicates,Vr=!Rr.sortStable&&e.slice(0),e.sort(to),Ir){for(;t=e[o++];)t===e[o]&&(r=n.push(o));for(;r--;)e.splice(n[r],1)}return Vr=null,e},_r=Ao.getText=function(e){var t,n="",r=0,o=e.nodeType;if(o){if(1===o||9===o||11===o){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=_r(e)}else if(3===o||4===o)return e.nodeValue}else for(;t=e[r++];)n+=_r(t);return n},(Dr=Ao.selectors={cacheLength:50,createPseudo:Ro,match:wo,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(To,Ar),e[3]=(e[3]||e[4]||e[5]||"").replace(To,Ar),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||Ao.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&Ao.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return wo.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&bo.test(n)&&(t=Or(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(To,Ar).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=Qr[e+" "];return t||(t=new RegExp("(^|"+lo+")"+e+"("+lo+"|$)"))&&Qr(e,function(e){return t.test("string"==typeof e.className&&e.className||typeof e.getAttribute!=no&&e.getAttribute("class")||"")})},ATTR:function(n,r,o){return function(e){var t=Ao.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===o:"!="===r?t!==o:"^="===r?o&&0===t.indexOf(o):"*="===r?o&&-1<t.indexOf(o):"$="===r?o&&t.slice(-o.length)===o:"~="===r?-1<(" "+t+" ").indexOf(o):"|="===r&&(t===o||t.slice(0,o.length+1)===o+"-"))}},CHILD:function(h,e,t,m,g){var p="nth"!==h.slice(0,3),v="last"!==h.slice(-4),y="of-type"===e;return 1===m&&0===g?function(e){return!!e.parentNode}:function(e,t,n){var r,o,i,a,u,s,c=p!=v?"nextSibling":"previousSibling",l=e.parentNode,f=y&&e.nodeName.toLowerCase(),d=!n&&!y;if(l){if(p){for(;c;){for(i=e;i=i[c];)if(y?i.nodeName.toLowerCase()===f:1===i.nodeType)return!1;s=c="only"===h&&!s&&"nextSibling"}return!0}if(s=[v?l.firstChild:l.lastChild],v&&d){for(u=(r=(o=l[Xr]||(l[Xr]={}))[h]||[])[0]===Gr&&r[1],a=r[0]===Gr&&r[2],i=u&&l.childNodes[u];i=++u&&i&&i[c]||(a=u=0)||s.pop();)if(1===i.nodeType&&++a&&i===e){o[h]=[Gr,u,a];break}}else if(d&&(r=(e[Xr]||(e[Xr]={}))[h])&&r[0]===Gr)a=r[1];else for(;(i=++u&&i&&i[c]||(a=u=0)||s.pop())&&((y?i.nodeName.toLowerCase()!==f:1!==i.nodeType)||!++a||(d&&((i[Xr]||(i[Xr]={}))[h]=[Gr,a]),i!==e)););return(a-=g)===m||a%m==0&&0<=a/m}}},PSEUDO:function(e,i){var t,a=Dr.pseudos[e]||Dr.setFilters[e.toLowerCase()]||Ao.error("unsupported pseudo: "+e);return a[Xr]?a(i):1<a.length?(t=[e,e,"",i],Dr.setFilters.hasOwnProperty(e.toLowerCase())?Ro(function(e,t){for(var n,r=a(e,i),o=r.length;o--;)e[n=co.call(e,r[o])]=!(t[n]=r[o])}):function(e){return a(e,0,t)}):a}},pseudos:{not:Ro(function(e){var r=[],o=[],u=Hr(e.replace(go,"$1"));return u[Xr]?Ro(function(e,t,n,r){for(var o,i=u(e,null,r,[]),a=e.length;a--;)(o=i[a])&&(e[a]=!(t[a]=o))}):function(e,t,n){return r[0]=e,u(r,null,n,o),!o.pop()}}),has:Ro(function(t){return function(e){return 0<Ao(t,e).length}}),contains:Ro(function(t){return t=t.replace(To,Ar),function(e){return-1<(e.textContent||e.innerText||_r(e)).indexOf(t)}}),lang:Ro(function(n){return Co.test(n||"")||Ao.error("unsupported lang: "+n),n=n.replace(To,Ar).toLowerCase(),function(e){var t;do{if(t=qr?e.lang:e.getAttribute("xml:lang")||e.getAttribute("lang"))return(t=t.toLowerCase())===n||0===t.indexOf(n+"-")}while((e=e.parentNode)&&1===e.nodeType);return!1}}),target:function(e){var t=j.window.location&&j.window.location.hash;return t&&t.slice(1)===e.id},root:function(e){return e===jr},focus:function(e){return e===Ur.activeElement&&(!Ur.hasFocus||Ur.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return!1===e.disabled},disabled:function(e){return!0===e.disabled},checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!Dr.pseudos.empty(e)},header:function(e){return zo.test(e.nodeName)},input:function(e){return xo.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:Oo(function(){return[0]}),last:Oo(function(e,t){return[t-1]}),eq:Oo(function(e,t,n){return[n<0?n+t:n]}),even:Oo(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:Oo(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:Oo(function(e,t,n){for(var r=n<0?n+t:n;0<=--r;)e.push(r);return e}),gt:Oo(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}}).pseudos.nth=Dr.pseudos.eq,{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})Dr.pseudos[Mr]=_o(Mr);for(Mr in{submit:!0,reset:!0})Dr.pseudos[Mr]=Bo(Mr);function Po(){}function Lo(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}function Vo(a,e,t){var u=e.dir,s=t&&"parentNode"===u,c=Jr++;return e.first?function(e,t,n){for(;e=e[u];)if(1===e.nodeType||s)return a(e,t,n)}:function(e,t,n){var r,o,i=[Gr,c];if(n){for(;e=e[u];)if((1===e.nodeType||s)&&a(e,t,n))return!0}else for(;e=e[u];)if(1===e.nodeType||s){if((r=(o=e[Xr]||(e[Xr]={}))[u])&&r[0]===Gr&&r[1]===c)return i[2]=r[2];if((o[u]=i)[2]=a(e,t,n))return!0}}}function Io(o){return 1<o.length?function(e,t,n){for(var r=o.length;r--;)if(!o[r](e,t,n))return!1;return!0}:o[0]}function Fo(e,t,n,r,o){for(var i,a=[],u=0,s=e.length,c=null!=t;u<s;u++)(i=e[u])&&(n&&!n(i,r,o)||(a.push(i),c&&t.push(u)));return a}function Uo(m,g,p,v,y,e){return v&&!v[Xr]&&(v=Uo(v)),y&&!y[Xr]&&(y=Uo(y,e)),Ro(function(e,t,n,r){var o,i,a,u=[],s=[],c=t.length,l=e||function h(e,t,n){for(var r=0,o=t.length;r<o;r++)Ao(e,t[r],n);return n}(g||"*",n.nodeType?[n]:n,[]),f=!m||!e&&g?l:Fo(l,u,m,n,r),d=p?y||(e?m:c||v)?[]:t:f;if(p&&p(f,d,n,r),v)for(o=Fo(d,s),v(o,[],n,r),i=o.length;i--;)(a=o[i])&&(d[s[i]]=!(f[s[i]]=a));if(e){if(y||m){if(y){for(o=[],i=d.length;i--;)(a=d[i])&&o.push(f[i]=a);y(null,d=[],o,r)}for(i=d.length;i--;)(a=d[i])&&-1<(o=y?co.call(e,a):u[i])&&(e[o]=!(t[o]=a))}}else d=Fo(d===t?d.splice(c,d.length):d),y?y(null,t,d,r):uo.apply(t,d)})}function jo(e){for(var r,t,n,o=e.length,i=Dr.relative[e[0].type],a=i||Dr.relative[" "],u=i?1:0,s=Vo(function(e){return e===r},a,!0),c=Vo(function(e){return-1<co.call(r,e)},a,!0),l=[function(e,t,n){return!i&&(n||t!==Lr)||((r=t).nodeType?s(e,t,n):c(e,t,n))}];u<o;u++)if(t=Dr.relative[e[u].type])l=[Vo(Io(l),t)];else{if((t=Dr.filter[e[u].type].apply(null,e[u].matches))[Xr]){for(n=++u;n<o&&!Dr.relative[e[n].type];n++);return Uo(1<u&&Io(l),1<u&&Lo(e.slice(0,u-1).concat({value:" "===e[u-2].type?"*":""})).replace(go,"$1"),t,u<n&&jo(e.slice(u,n)),n<o&&jo(e=e.slice(n)),n<o&&Lo(e))}l.push(t)}return Io(l)}Po.prototype=Dr.filters=Dr.pseudos,Dr.setFilters=new Po,Or=Ao.tokenize=function(e,t){var n,r,o,i,a,u,s,c=Zr[e+" "];if(c)return t?0:c.slice(0);for(a=e,u=[],s=Dr.preFilter;a;){for(i in n&&!(r=po.exec(a))||(r&&(a=a.slice(r[0].length)||a),u.push(o=[])),n=!1,(r=vo.exec(a))&&(n=r.shift(),o.push({value:n,type:r[0].replace(go," ")}),a=a.slice(n.length)),Dr.filter)Dr.filter.hasOwnProperty(i)&&(!(r=wo[i].exec(a))||s[i]&&!(r=s[i](r))||(n=r.shift(),o.push({value:n,type:i,matches:r}),a=a.slice(n.length)));if(!n)break}return t?a.length:a?Ao.error(e):Zr(e,u).slice(0)},Hr=Ao.compile=function(e,t){var n,r=[],o=[],i=eo[e+" "];if(!i){for(n=(t=t||Or(e)).length;n--;)(i=jo(t[n]))[Xr]?r.push(i):o.push(i);(i=eo(e,function a(p,v){function e(e,t,n,r,o){var i,a,u,s=0,c="0",l=e&&[],f=[],d=Lr,h=e||b&&Dr.find.TAG("*",o),m=Gr+=null==d?1:Math.random()||.1,g=h.length;for(o&&(Lr=t!==Ur&&t);c!==g&&null!=(i=h[c]);c++){if(b&&i){for(a=0;u=p[a++];)if(u(i,t,n)){r.push(i);break}o&&(Gr=m)}y&&((i=!u&&i)&&s--,e&&l.push(i))}if(s+=c,y&&c!==s){for(a=0;u=v[a++];)u(l,f,t,n);if(e){if(0<s)for(;c--;)l[c]||f[c]||(f[c]=io.call(r));f=Fo(f)}uo.apply(r,f),o&&!e&&0<f.length&&1<s+v.length&&Ao.uniqueSort(r)}return o&&(Gr=m,Lr=d),l}var y=0<v.length,b=0<p.length;return y?Ro(e):e}(o,r))).selector=e}return i},Pr=Ao.select=function(e,t,n,r){var o,i,a,u,s,c="function"==typeof e&&e,l=!r&&Or(e=c.selector||e);if(n=n||[],1===l.length){if(2<(i=l[0]=l[0].slice(0)).length&&"ID"===(a=i[0]).type&&Rr.getById&&9===t.nodeType&&qr&&Dr.relative[i[1].type]){if(!(t=(Dr.find.ID(a.matches[0].replace(To,Ar),t)||[])[0]))return n;c&&(t=t.parentNode),e=e.slice(i.shift().value.length)}for(o=wo.needsContext.test(e)?0:i.length;o--&&(a=i[o],!Dr.relative[u=a.type]);)if((s=Dr.find[u])&&(r=s(a.matches[0].replace(To,Ar),So.test(i[0].type)&&Ho(t.parentNode)||t))){if(i.splice(o,1),!(e=r.length&&Lo(i)))return uo.apply(n,r),n;break}}return(c||Hr(e,l))(r,t,!qr,n,So.test(e)&&Ho(t.parentNode)||t),n},Rr.sortStable=Xr.split("").sort(to).join("")===Xr,Rr.detectDuplicates=!!Ir,Fr(),Rr.sortDetached=!0;function qo(e){return void 0!==e}function $o(e){return"string"==typeof e}function Wo(e,t){var n,r,o;for(o=(t=t||Zo).createElement("div"),n=t.createDocumentFragment(),o.innerHTML=e;r=o.firstChild;)n.appendChild(r);return n}function Ko(e,t){return e&&t&&-1!==(" "+e.className+" ").indexOf(" "+t+" ")}function Xo(e,t,n){var r,o;return t=vi(t)[0],e.each(function(){n&&r===this.parentNode||(r=this.parentNode,o=t.cloneNode(!1),this.parentNode.insertBefore(o,this)),o.appendChild(this)}),e}function Yo(e,t){return new vi.fn.init(e,t)}function Go(e){return null===e||e===undefined?"":(""+e).replace(di,"")}function Jo(e,t){var n,r,o,i;if(e)if((n=e.length)===undefined){for(r in e)if(e.hasOwnProperty(r)&&(i=e[r],!1===t.call(i,r,i)))break}else for(o=0;o<n&&(i=e[o],!1!==t.call(i,o,i));o++);return e}function Qo(e,n){var r=[];return Jo(e,function(e,t){n(t,e)&&r.push(t)}),r}var Zo=j.document,ei=Array.prototype.push,ti=Array.prototype.slice,ni=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,ri=kr.Event,oi=Mn.makeMap("children,contents,next,prev"),ii=function(e,t,n,r){var o;if($o(t))t=Wo(t,hi(e[0]));else if(t.length&&!t.nodeType){if(t=vi.makeArray(t),r)for(o=t.length-1;0<=o;o--)ii(e,t[o],n,r);else for(o=0;o<t.length;o++)ii(e,t[o],n,r);return e}if(t.nodeType)for(o=e.length;o--;)n.call(e[o],t);return e},ai=Mn.makeMap("fillOpacity fontWeight lineHeight opacity orphans widows zIndex zoom"," "),ui=Mn.makeMap("checked compact declare defer disabled ismap multiple nohref noshade nowrap readonly selected"," "),si={"for":"htmlFor","class":"className",readonly:"readOnly"},ci={"float":"cssFloat"},li={},fi={},di=/^\s*|\s*$/g,hi=function(e){return e?9===e.nodeType?e:e.ownerDocument:Zo};Yo.fn=Yo.prototype={constructor:Yo,selector:"",context:null,length:0,init:function(e,t){var n,r,o=this;if(!e)return o;if(e.nodeType)return o.context=o[0]=e,o.length=1,o;if(t&&t.nodeType)o.context=t;else{if(t)return vi(e).attr(t);o.context=t=j.document}if($o(e)){if(!(n="<"===(o.selector=e).charAt(0)&&">"===e.charAt(e.length-1)&&3<=e.length?[null,e,null]:ni.exec(e)))return vi(t).find(e);if(n[1])for(r=Wo(e,hi(t)).firstChild;r;)ei.call(o,r),r=r.nextSibling;else{if(!(r=hi(t).getElementById(n[2])))return o;if(r.id!==n[2])return o.find(e);o.length=1,o[0]=r}}else this.add(e,!1);return o},toArray:function(){return Mn.toArray(this)},add:function(e,t){var n,r;if($o(e))return this.add(vi(e));if(!1!==t)for(n=vi.unique(this.toArray().concat(vi.makeArray(e))),this.length=n.length,r=0;r<n.length;r++)this[r]=n[r];else ei.apply(this,vi.makeArray(e));return this},attr:function(t,n){var e,r=this;if("object"==typeof t)Jo(t,function(e,t){r.attr(e,t)});else{if(!qo(n)){if(r[0]&&1===r[0].nodeType){if((e=li[t])&&e.get)return e.get(r[0],t);if(ui[t])return r.prop(t)?t:undefined;null===(n=r[0].getAttribute(t,2))&&(n=undefined)}return n}this.each(function(){var e;if(1===this.nodeType){if((e=li[t])&&e.set)return void e.set(this,n);null===n?this.removeAttribute(t,2):this.setAttribute(t,n,2)}})}return r},removeAttr:function(e){return this.attr(e,null)},prop:function(e,t){var n=this;if("object"==typeof(e=si[e]||e))Jo(e,function(e,t){n.prop(e,t)});else{if(!qo(t))return n[0]&&n[0].nodeType&&e in n[0]?n[0][e]:t;this.each(function(){1===this.nodeType&&(this[e]=t)})}return n},css:function(n,r){function e(e){return e.replace(/-(\D)/g,function(e,t){return t.toUpperCase()})}function o(e){return e.replace(/[A-Z]/g,function(e){return"-"+e})}var t,i,a=this;if("object"==typeof n)Jo(n,function(e,t){a.css(e,t)});else if(qo(r))n=e(n),"number"!=typeof r||ai[n]||(r=r.toString()+"px"),a.each(function(){var e=this.style;if((i=fi[n])&&i.set)i.set(this,r);else{try{this.style[ci[n]||n]=r}catch(t){}null!==r&&""!==r||(e.removeProperty?e.removeProperty(o(n)):e.removeAttribute(n))}});else{if(t=a[0],(i=fi[n])&&i.get)return i.get(t);if(!t.ownerDocument.defaultView)return t.currentStyle?t.currentStyle[e(n)]:"";try{return t.ownerDocument.defaultView.getComputedStyle(t,null).getPropertyValue(o(n))}catch(u){return undefined}}return a},remove:function(){for(var e,t=this.length;t--;)e=this[t],ri.clean(e),e.parentNode&&e.parentNode.removeChild(e);return this},empty:function(){for(var e,t=this.length;t--;)for(e=this[t];e.firstChild;)e.removeChild(e.firstChild);return this},html:function(e){var t,n=this;if(qo(e)){t=n.length;try{for(;t--;)n[t].innerHTML=e}catch(r){vi(n[t]).empty().append(e)}return n}return n[0]?n[0].innerHTML:""},text:function(e){var t;if(qo(e)){for(t=this.length;t--;)"innerText"in this[t]?this[t].innerText=e:this[0].textContent=e;return this}return this[0]?this[0].innerText||this[0].textContent:""},append:function(){return ii(this,arguments,function(e){(1===this.nodeType||this.host&&1===this.host.nodeType)&&this.appendChild(e)})},prepend:function(){return ii(this,arguments,function(e){(1===this.nodeType||this.host&&1===this.host.nodeType)&&this.insertBefore(e,this.firstChild)},!0)},before:function(){return this[0]&&this[0].parentNode?ii(this,arguments,function(e){this.parentNode.insertBefore(e,this)}):this},after:function(){return this[0]&&this[0].parentNode?ii(this,arguments,function(e){this.parentNode.insertBefore(e,this.nextSibling)},!0):this},appendTo:function(e){return vi(e).append(this),this},prependTo:function(e){return vi(e).prepend(this),this},replaceWith:function(e){return this.before(e).remove()},wrap:function(e){return Xo(this,e)},wrapAll:function(e){return Xo(this,e,!0)},wrapInner:function(e){return this.each(function(){vi(this).contents().wrapAll(e)}),this},unwrap:function(){return this.parent().each(function(){vi(this).replaceWith(this.childNodes)})},clone:function(){var e=[];return this.each(function(){e.push(this.cloneNode(!0))}),vi(e)},addClass:function(e){return this.toggleClass(e,!0)},removeClass:function(e){return this.toggleClass(e,!1)},toggleClass:function(o,i){var e=this;return"string"!=typeof o||(-1!==o.indexOf(" ")?Jo(o.split(" "),function(){e.toggleClass(this,i)}):e.each(function(e,t){var n,r;(r=Ko(t,o))!==i&&(n=t.className,r?t.className=Go((" "+n+" ").replace(" "+o+" "," ")):t.className+=n?" "+o:o)})),e},hasClass:function(e){return Ko(this[0],e)},each:function(e){return Jo(this,e)},on:function(e,t){return this.each(function(){ri.bind(this,e,t)})},off:function(e,t){return this.each(function(){ri.unbind(this,e,t)})},trigger:function(e){return this.each(function(){"object"==typeof e?ri.fire(this,e.type,e):ri.fire(this,e)})},show:function(){return this.css("display","")},hide:function(){return this.css("display","none")},slice:function(){return new vi(ti.apply(this,arguments))},eq:function(e){return-1===e?this.slice(e):this.slice(e,+e+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},find:function(e){var t,n,r=[];for(t=0,n=this.length;t<n;t++)vi.find(e,this[t],r);return vi(r)},filter:function(n){return vi("function"==typeof n?Qo(this.toArray(),function(e,t){return n(t,e)}):vi.filter(n,this.toArray()))},closest:function(n){var r=[];return n instanceof vi&&(n=n[0]),this.each(function(e,t){for(;t;){if("string"==typeof n&&vi(t).is(n)){r.push(t);break}if(t===n){r.push(t);break}t=t.parentNode}}),vi(r)},offset:function(e){var t,n,r,o,i=0,a=0;return e?this.css(e):((t=this[0])&&(r=(n=t.ownerDocument).documentElement,t.getBoundingClientRect&&(i=(o=t.getBoundingClientRect()).left+(r.scrollLeft||n.body.scrollLeft)-r.clientLeft,a=o.top+(r.scrollTop||n.body.scrollTop)-r.clientTop)),{left:i,top:a})},push:ei,sort:Array.prototype.sort,splice:Array.prototype.splice},Mn.extend(Yo,{extend:Mn.extend,makeArray:function(e){return function(e){return e&&e===e.window}(e)||e.nodeType?[e]:Mn.toArray(e)},inArray:function(e,t){var n;if(t.indexOf)return t.indexOf(e);for(n=t.length;n--;)if(t[n]===e)return n;return-1},isArray:Mn.isArray,each:Jo,trim:Go,grep:Qo,find:Ao,expr:Ao.selectors,unique:Ao.uniqueSort,text:Ao.getText,contains:Ao.contains,filter:function(e,t,n){var r=t.length;for(n&&(e=":not("+e+")");r--;)1!==t[r].nodeType&&t.splice(r,1);return t=1===t.length?vi.find.matchesSelector(t[0],e)?[t[0]]:[]:vi.find.matches(e,t)}});function mi(e,t,n){var r=[],o=e[t];for("string"!=typeof n&&n instanceof vi&&(n=n[0]);o&&9!==o.nodeType;){if(n!==undefined){if(o===n)break;if("string"==typeof n&&vi(o).is(n))break}1===o.nodeType&&r.push(o),o=o[t]}return r}function gi(e,t,n,r){var o=[];for(r instanceof vi&&(r=r[0]);e;e=e[t])if(!n||e.nodeType===n){if(r!==undefined){if(e===r)break;if("string"==typeof r&&vi(e).is(r))break}o.push(e)}return o}function pi(e,t,n){for(e=e[t];e;e=e[t])if(e.nodeType===n)return e;return null}Jo({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return mi(e,"parentNode")},next:function(e){return pi(e,"nextSibling",1)},prev:function(e){return pi(e,"previousSibling",1)},children:function(e){return gi(e.firstChild,"nextSibling",1)},contents:function(e){return Mn.toArray(("iframe"===e.nodeName?e.contentDocument||e.contentWindow.document:e).childNodes)}},function(r,o){Yo.fn[r]=function(t){var n=[];this.each(function(){var e=o.call(n,this,t,n);e&&(vi.isArray(e)?n.push.apply(n,e):n.push(e))}),1<this.length&&(oi[r]||(n=vi.unique(n)),0===r.indexOf("parents")&&(n=n.reverse()));var e=vi(n);return t?e.filter(t):e}}),Jo({parentsUntil:function(e,t){return mi(e,"parentNode",t)},nextUntil:function(e,t){return gi(e,"nextSibling",1,t).slice(1)},prevUntil:function(e,t){return gi(e,"previousSibling",1,t).slice(1)}},function(o,i){Yo.fn[o]=function(t,e){var n=[];this.each(function(){var e=i.call(n,this,t,n);e&&(vi.isArray(e)?n.push.apply(n,e):n.push(e))}),1<this.length&&(n=vi.unique(n),0!==o.indexOf("parents")&&"prevUntil"!==o||(n=n.reverse()));var r=vi(n);return e?r.filter(e):r}}),Yo.fn.is=function(e){return!!e&&0<this.filter(e).length},Yo.fn.init.prototype=Yo.fn,Yo.overrideDefaults=function(n){var r,o=function(e,t){return r=r||n(),0===arguments.length&&(e=r.element),t=t||r.context,new o.fn.init(e,t)};return vi.extend(o,this),o},Yo.attrHooks=li,Yo.cssHooks=fi;var vi=Yo,yi=(bi.prototype.current=function(){return this.node},bi.prototype.next=function(e){return this.node=this.findSibling(this.node,"firstChild","nextSibling",e),this.node},bi.prototype.prev=function(e){return this.node=this.findSibling(this.node,"lastChild","previousSibling",e),this.node},bi.prototype.prev2=function(e){return this.node=this.findPreviousNode(this.node,"lastChild","previousSibling",e),this.node},bi.prototype.findSibling=function(e,t,n,r){var o,i;if(e){if(!r&&e[t])return e[t];if(e!==this.rootNode){if(o=e[n])return o;for(i=e.parentNode;i&&i!==this.rootNode;i=i.parentNode)if(o=i[n])return o}}},bi.prototype.findPreviousNode=function(e,t,n,r){var o,i,a;if(e){if(o=e[n],this.rootNode&&o===this.rootNode)return;if(o){if(!r)for(a=o[t];a;a=a[t])if(!a[t])return a;return o}if((i=e.parentNode)&&i!==this.rootNode)return i}},bi);function bi(e,t){this.node=e,this.rootNode=t,this.current=this.current.bind(this),this.next=this.next.bind(this),this.prev=this.prev.bind(this),this.prev2=this.prev2.bind(this)}function Ci(t,n){Se(t).each(function(e){e.dom().insertBefore(n.dom(),t.dom())})}function wi(e,t){Te(e).fold(function(){Se(e).each(function(e){Di(e,t)})},function(e){Ci(e,t)})}function xi(t,n){_e(t).fold(function(){Di(t,n)},function(e){t.dom().insertBefore(n.dom(),e.dom())})}function zi(t,e){z(e,function(e){Di(t,e)})}function Ei(e){e.dom().textContent="",z(Re(e),function(e){_i(e)})}function Ni(e){var t=Re(e);0<t.length&&function(t,e){z(e,function(e){Ci(t,e)})}(e,t),_i(e)}function Si(e,t){return e!==undefined?e:t!==undefined?t:0}function ki(e){var t=e!==undefined?e.dom():j.document,n=t.body.scrollLeft||t.documentElement.scrollLeft,r=t.body.scrollTop||t.documentElement.scrollTop;return Oi(n,r)}function Ti(e,t,n){(n!==undefined?n.dom():j.document).defaultView.scrollTo(e,t)}function Ai(e,t){Pi&&D(e.dom().scrollIntoViewIfNeeded)?e.dom().scrollIntoViewIfNeeded(!1):e.dom().scrollIntoView(t)}function Mi(e,t,n,r){return{x:$(e),y:$(t),width:$(n),height:$(r),right:$(e+n),bottom:$(t+r)}}var Ri,Di=function(e,t){e.dom().appendChild(t.dom())},_i=function(e){var t=e.dom();null!==t.parentNode&&t.parentNode.removeChild(t)},Bi=function(n,r){return{left:$(n),top:$(r),translate:function(e,t){return Bi(n+e,r+t)}}},Oi=Bi,Hi=function(e){var t=e.dom(),n=t.ownerDocument.body;return n===t?Oi(n.offsetLeft,n.offsetTop):de(e)?function(e){var t=e.getBoundingClientRect();return Oi(t.left,t.top)}(t):Oi(0,0)},Pi=oe().browser.isSafari(),Li=function(e){var t=e===undefined?j.window:e,n=t.document,r=ki(yt.fromDom(n)),o=t.visualViewport;if(o!==undefined)return Mi(Math.max(o.pageLeft,r.left()),Math.max(o.pageTop,r.top()),o.width,o.height);var i=n.documentElement,a=i.clientWidth,u=i.clientHeight;return Mi(r.left(),r.top(),a,u)},Vi=Mn.each,Ii=Mn.grep,Fi=Nn.ie,Ui=/^([a-z0-9],?)+$/i,ji=/^[ \t\r\n]*$/,qi=function(n,r,o){var i=r.keep_values,e={set:function(e,t,n){r.url_converter&&(t=r.url_converter.call(r.url_converter_scope||o(),t,n,e[0])),e.attr("data-mce-"+n,t).attr(n,t)},get:function(e,t){return e.attr("data-mce-"+t)||e.attr(t)}},t={style:{set:function(e,t){null===t||"object"!=typeof t?(i&&e.attr("data-mce-style",t),e.attr("style",t)):e.css(t)},get:function(e){var t=e.attr("data-mce-style")||e.attr("style");return t=n.serialize(n.parse(t),e[0].nodeName)}}};return i&&(t.href=t.src=e),t},$i=function(e,t){var n=t.attr("style"),r=e.serialize(e.parse(n),t[0].nodeName);r=r||null,t.attr("data-mce-style",r)},Wi=function(e,t){var n,r,o=0;if(e)for(n=e.nodeType,e=e.previousSibling;e;e=e.previousSibling)r=e.nodeType,(!t||3!==r||r!==n&&e.nodeValue.length)&&(o++,n=r);return o};function Ki(a,u){var s,c=this;void 0===u&&(u={});function l(e){if(e&&a&&"string"==typeof e){var t=a.getElementById(e);return t&&t.id!==e?a.getElementsByName(e)[1]:t}return e}function f(e){return"string"==typeof e&&(e=l(e)),H(e)}function r(e,t,n){var r,o,i=f(e);return i.length&&(o=(r=s[t])&&r.get?r.get(i,t):i.attr(t)),void 0===o&&(o=n||""),o}function d(e){var t=l(e);return t?t.attributes:[]}function o(e,t,n){var r,o;""===n&&(n=null);var i=f(e);r=i.attr(t),i.length&&((o=s[t])&&o.set?o.set(i,n,t):i.attr(t,n),r!==n&&u.onSetAttrib&&u.onSetAttrib({attrElm:i,attrName:t,attrValue:n}))}function h(){return u.root_element||a.body}function i(e,t){return Ht.getPos(a.body,l(e),t)}function m(e,t,n){var r=f(e);return n?r.css(t):("float"===(t=t.replace(/-(\D)/g,function(e,t){return t.toUpperCase()}))&&(t=Nn.browser.isIE()?"styleFloat":"cssFloat"),r[0]&&r[0].style?r[0].style[t]:undefined)}function g(e){var t,n;return e=l(e),t=m(e,"width"),n=m(e,"height"),-1===t.indexOf("px")&&(t=0),-1===n.indexOf("px")&&(n=0),{w:parseInt(t,10)||e.offsetWidth||e.clientWidth,h:parseInt(n,10)||e.offsetHeight||e.clientHeight}}function p(e,t){var n;if(!e)return!1;if(!Array.isArray(e)){if("*"===t)return 1===e.nodeType;if(Ui.test(t)){var r=t.toLowerCase().split(/,/),o=e.nodeName.toLowerCase();for(n=r.length-1;0<=n;n--)if(r[n]===o)return!0;return!1}if(e.nodeType&&1!==e.nodeType)return!1}var i=Array.isArray(e)?e:[e];return 0<Ao(t,i[0].ownerDocument||i[0],null,i).length}function v(e,t,n,r){var o,i=[],a=l(e);for(r=r===undefined,n=n||("BODY"!==h().nodeName?h().parentNode:null),Mn.is(t,"string")&&(t="*"===(o=t)?function(e){return 1===e.nodeType}:function(e){return p(e,o)});a&&a!==n&&a.nodeType&&9!==a.nodeType;){if(!t||"function"==typeof t&&t(a)){if(!r)return[a];i.push(a)}a=a.parentNode}return r?i:null}function n(e,t,n){var r=t;if(e)for("string"==typeof t&&(r=function(e){return p(e,t)}),e=e[n];e;e=e[n])if("function"==typeof r&&r(e))return e;return null}function y(e,n,r){var o,t="string"==typeof e?l(e):e;if(!t)return!1;if(Mn.isArray(t)&&(t.length||0===t.length))return o=[],Vi(t,function(e,t){e&&("string"==typeof e&&(e=l(e)),o.push(n.call(r,e,t)))}),o;var i=r||c;return n.call(i,t)}function b(e,t){f(e).each(function(e,n){Vi(t,function(e,t){o(n,t,e)})})}function C(e,r){var t=f(e);Fi?t.each(function(e,t){if(!1!==t.canHaveHTML){for(;t.firstChild;)t.removeChild(t.firstChild);try{t.innerHTML="<br>"+r,t.removeChild(t.firstChild)}catch(n){vi("<div></div>").html("<br>"+r).contents().slice(1).appendTo(t)}return r}}):t.html(r)}function w(e,n,r,o,i){return y(e,function(e){var t="string"==typeof n?a.createElement(n):n;return b(t,r),o&&("string"!=typeof o&&o.nodeType?t.appendChild(o):"string"==typeof o&&C(t,o)),i?t:e.appendChild(t)})}function x(e,t,n){return w(a.createElement(e),e,t,n,!0)}function z(e,t){var n=f(e);return t?n.each(function(){for(var e;e=this.firstChild;)3===e.nodeType&&0===e.data.length?this.removeChild(e):this.parentNode.insertBefore(e,this)}).remove():n.remove(),1<n.length?n.toArray():n[0]}function E(e,t,n){f(e).toggleClass(t,n).each(function(){""===this.className&&vi(this).attr("class",null)})}function N(t,e,n){return y(e,function(e){return Mn.is(e,"array")&&(t=t.cloneNode(!0)),n&&Vi(Ii(e.childNodes),function(e){t.appendChild(e)}),e.parentNode.replaceChild(t,e)})}function S(){return a.createRange()}function k(e){if(e&&Ge.isElement(e)){var t=e.getAttribute("data-mce-contenteditable");return t&&"inherit"!==t?t:"inherit"!==e.contentEditable?e.contentEditable:null}return null}var T={},A=j.window,M={},t=0,e=function U(m,g){void 0===g&&(g={});var p,v=0,y={};function b(e){m.getElementsByTagName("head")[0].appendChild(e)}function n(e,t,n){function r(e){l.status=e,l.passed=[],l.failed=[],u&&(u.onload=null,u.onerror=null,u=null)}function o(){for(var e=l.passed,t=e.length;t--;)e[t]();r(2)}function i(){for(var e=l.failed,t=e.length;t--;)e[t]();r(3)}function a(e,t){e()||((new Date).getTime()-c<p?pn.setTimeout(t):i())}var u,s,c,l,f=function(){a(function(){for(var e,t,n=m.styleSheets,r=n.length;r--;)if((t=(e=n[r]).ownerNode?e.ownerNode:e.owningElement)&&t.id===u.id)return o(),!0},f)},d=function(){a(function(){try{var e=s.sheet.cssRules;return o(),!!e}catch(t){}},d)};if(e=Mn._addCacheSuffix(e),y[e]?l=y[e]:(l={passed:[],failed:[]},y[e]=l),t&&l.passed.push(t),n&&l.failed.push(n),1!==l.status)if(2!==l.status)if(3!==l.status){if(l.status=1,(u=m.createElement("link")).rel="stylesheet",u.type="text/css",u.id="u"+v++,u.async=!1,u.defer=!1,c=(new Date).getTime(),g.contentCssCors&&(u.crossOrigin="anonymous"),g.referrerPolicy&&Tt(yt.fromDom(u),"referrerpolicy",g.referrerPolicy),"onload"in u&&!((h=j.navigator.userAgent.match(/WebKit\/(\d*)/))&&parseInt(h[1],10)<536))u.onload=f,u.onerror=i;else{if(0<j.navigator.userAgent.indexOf("Firefox"))return(s=m.createElement("style")).textContent='@import "'+e+'"',d(),void b(s);f()}var h;b(u),u.href=e}else i();else o()}function t(t){return Xt.nu(function(e){n(t,q(e,$(Qt.value(t))),q(e,$(Qt.error(t))))})}function o(e){return e.fold(W,W)}return p=g.maxLoadTime||5e3,{load:n,loadAll:function(e,n,r){Yt(X(e,t)).get(function(e){var t=Y(e,function(e){return e.isValue()});0<t.fail.length?r(t.fail.map(o)):n(t.pass.map(o))})},_setReferrerPolicy:function(e){g.referrerPolicy=e}}}(a,{contentCssCors:u.contentCssCors,referrerPolicy:u.referrerPolicy}),R=[],D=u.schema?u.schema:pr({}),_=xr({url_converter:u.url_converter,url_converter_scope:u.url_converter_scope},u.schema),B=u.ownEvents?new kr:kr.Event,O=D.getBlockElements(),H=vi.overrideDefaults(function(){return{context:a,element:F.getRoot()}}),P=ir.decode,L=ir.encodeAllRaw,V=function(e,t,n,r){if(Mn.isArray(e)){for(var o=e.length,i=[];o--;)i[o]=V(e[o],t,n,r);return i}return!u.collect||e!==a&&e!==A||R.push([e,t,n,r]),B.bind(e,t,n,r||F)},I=function(e,t,n){var r;if(Mn.isArray(e)){r=e.length;for(var o=[];r--;)o[r]=I(e[r],t,n);return o}if(R&&(e===a||e===A))for(r=R.length;r--;){var i=R[r];e!==i[0]||t&&t!==i[1]||n&&n!==i[2]||B.unbind(i[0],i[1],i[2])}return B.unbind(e,t,n)},F={doc:a,settings:u,win:A,files:M,stdMode:!0,boxModel:!0,styleSheetLoader:e,boundEvents:R,styles:_,schema:D,events:B,isBlock:function(e){if("string"==typeof e)return!!O[e];if(e){var t=e.nodeType;if(t)return!(1!==t||!O[e.nodeName])}return!1},$:H,$$:f,root:null,clone:function(t,e){if(!Fi||1!==t.nodeType||e)return t.cloneNode(e);if(e)return null;var n=a.createElement(t.nodeName);return Vi(d(t),function(e){o(n,e.nodeName,r(t,e.nodeName))}),n},getRoot:h,getViewPort:function(e){var t=Li(e);return{x:t.x(),y:t.y(),w:t.width(),h:t.height()}},getRect:function(e){var t,n;return e=l(e),t=i(e),n=g(e),{x:t.x,y:t.y,w:n.w,h:n.h}},getSize:g,getParent:function(e,t,n){var r=v(e,t,n,!1);return r&&0<r.length?r[0]:null},getParents:v,get:l,getNext:function(e,t){return n(e,t,"nextSibling")},getPrev:function(e,t){return n(e,t,"previousSibling")},select:function(e,t){return Ao(e,l(t)||u.root_element||a,[])},is:p,add:w,create:x,createHTML:function(e,t,n){var r,o="";for(r in o+="<"+e,t)t.hasOwnProperty(r)&&null!==t[r]&&"undefined"!=typeof t[r]&&(o+=" "+r+'="'+L(t[r])+'"');return void 0!==n?o+">"+n+"</"+e+">":o+" />"},createFragment:function(e){var t,n=a.createElement("div"),r=a.createDocumentFragment();for(e&&(n.innerHTML=e);t=n.firstChild;)r.appendChild(t);return r},remove:z,setStyle:function(e,t,n){var r=K(t)?f(e).css(t,n):f(e).css(t);u.update_styles&&$i(_,r)},getStyle:m,setStyles:function(e,t){var n=f(e).css(t);u.update_styles&&$i(_,n)},removeAllAttribs:function(e){return y(e,function(e){var t,n=e.attributes;for(t=n.length-1;0<=t;t--)e.removeAttributeNode(n.item(t))})},setAttrib:o,setAttribs:b,getAttrib:r,getPos:i,parseStyle:function(e){return _.parse(e)},serializeStyle:function(e,t){return _.serialize(e,t)},addStyle:function(e){var t,n;if(F!==Ki.DOM&&a===j.document){if(T[e])return;T[e]=!0}(n=a.getElementById("mceDefaultStyles"))||((n=a.createElement("style")).id="mceDefaultStyles",n.type="text/css",(t=a.getElementsByTagName("head")[0]).firstChild?t.insertBefore(n,t.firstChild):t.appendChild(n)),n.styleSheet?n.styleSheet.cssText+=e:n.appendChild(a.createTextNode(e))},loadCSS:function(e){var n;F===Ki.DOM||a!==j.document?(e=e||"",n=a.getElementsByTagName("head")[0],Vi(e.split(","),function(e){var t;e=Mn._addCacheSuffix(e),M[e]||(M[e]=!0,t=x("link",G(G({rel:"stylesheet",type:"text/css",href:e},u.contentCssCors?{crossOrigin:"anonymous"}:{}),u.referrerPolicy?{referrerPolicy:u.referrerPolicy}:{})),n.appendChild(t))})):Ki.DOM.loadCSS(e)},addClass:function(e,t){f(e).addClass(t)},removeClass:function(e,t){E(e,t,!1)},hasClass:function(e,t){return f(e).hasClass(t)},toggleClass:E,show:function(e){f(e).show()},hide:function(e){f(e).hide()},isHidden:function(e){return"none"===f(e).css("display")},uniqueId:function(e){return(e||"mce_")+t++},setHTML:C,getOuterHTML:function(e){var t="string"==typeof e?l(e):e;return Ge.isElement(t)?t.outerHTML:vi("<div></div>").append(vi(t).clone()).html()},setOuterHTML:function(e,t){f(e).each(function(){try{if("outerHTML"in this)return void(this.outerHTML=t)}catch(e){}z(vi(this).html(t),!0)})},decode:P,encode:L,insertAfter:function(e,t){var r=l(t);return y(e,function(e){var t,n;return t=r.parentNode,(n=r.nextSibling)?t.insertBefore(e,n):t.appendChild(e),e})},replace:N,rename:function(t,e){var n;return t.nodeName!==e.toUpperCase()&&(n=x(e),Vi(d(t),function(e){o(n,e.nodeName,r(t,e.nodeName))}),N(n,t,!0)),n||t},findCommonAncestor:function(e,t){for(var n,r=e;r;){for(n=t;n&&r!==n;)n=n.parentNode;if(r===n)break;r=r.parentNode}return!r&&e.ownerDocument?e.ownerDocument.documentElement:r},toHex:function(e){return _.toHex(Mn.trim(e))},run:y,getAttribs:d,isEmpty:function(e,t){var n,r,o,i,a=0;if(e=e.firstChild){var u=new yi(e,e.parentNode),s=D?D.getWhiteSpaceElements():{};t=t||(D?D.getNonEmptyElements():null);do{if(o=e.nodeType,Ge.isElement(e)){var c=e.getAttribute("data-mce-bogus");if(c){e=u.next("all"===c);continue}if(i=e.nodeName.toLowerCase(),t&&t[i]){if("br"!==i)return!1;a++,e=u.next();continue}for(n=(r=d(e)).length;n--;)if("name"===(i=r[n].nodeName)||"data-mce-bookmark"===i)return!1}if(8===o)return!1;if(3===o&&!ji.test(e.nodeValue))return!1;if(3===o&&e.parentNode&&s[e.parentNode.nodeName]&&ji.test(e.nodeValue))return!1;e=u.next()}while(e)}return a<=1},createRng:S,nodeIndex:Wi,split:function(e,t,n){var r,o,i,a=S();if(e&&t)return a.setStart(e.parentNode,Wi(e)),a.setEnd(t.parentNode,Wi(t)),r=a.extractContents(),(a=S()).setStart(t.parentNode,Wi(t)+1),a.setEnd(e.parentNode,Wi(e)+1),o=a.extractContents(),(i=e.parentNode).insertBefore(Xn.trimNode(F,r),e),n?i.insertBefore(n,e):i.insertBefore(t,e),i.insertBefore(Xn.trimNode(F,o),e),z(e),n||t},bind:V,unbind:I,fire:function(e,t,n){return B.fire(e,t,n)},getContentEditable:k,getContentEditableParent:function(e){for(var t=h(),n=null;e&&e!==t&&null===(n=k(e));e=e.parentNode);return n},destroy:function(){if(R)for(var e=R.length;e--;){var t=R[e];B.unbind(t[0],t[1],t[2])}Ao.setDocument&&Ao.setDocument()},isChildOf:function(e,t){for(;e;){if(t===e)return!0;e=e.parentNode}return!1},dumpRng:function(e){return"startContainer: "+e.startContainer.nodeName+", startOffset: "+e.startOffset+", endContainer: "+e.endContainer.nodeName+", endOffset: "+e.endOffset}};return s=qi(_,u,function(){return F}),F}(Ri=Ki=Ki||{}).DOM=Ri(j.document),Ri.nodeIndex=Wi;var Xi=Ki,Yi=Xi.DOM,Gi=Mn.each,Ji=Mn.grep,Qi=(Zi.prototype._setReferrerPolicy=function(e){this.settings.referrerPolicy=e},Zi.prototype.loadScript=function(e,t,n){var r,o,i=Yi;o=i.uniqueId(),(r=j.document.createElement("script")).id=o,r.type="text/javascript",r.src=Mn._addCacheSuffix(e),this.settings.referrerPolicy&&i.setAttrib(r,"referrerpolicy",this.settings.referrerPolicy),r.onload=function(){i.remove(o),r&&(r.onreadystatechange=r.onload=r=null),t()},r.onerror=function(){D(n)?n():"undefined"!=typeof j.console&&j.console.log&&j.console.log("Failed to load script: "+e)},(j.document.getElementsByTagName("head")[0]||j.document.body).appendChild(r)},Zi.prototype.isDone=function(e){return 2===this.states[e]},Zi.prototype.markDone=function(e){this.states[e]=2},Zi.prototype.add=function(e,t,n,r){this.states[e]===undefined&&(this.queue.push(e),this.states[e]=0),t&&(this.scriptLoadedCallbacks[e]||(this.scriptLoadedCallbacks[e]=[]),this.scriptLoadedCallbacks[e].push({success:t,failure:r,scope:n||this}))},Zi.prototype.load=function(e,t,n,r){return this.add(e,t,n,r)},Zi.prototype.remove=function(e){delete this.states[e],delete this.scriptLoadedCallbacks[e]},Zi.prototype.loadQueue=function(e,t,n){this.loadScripts(this.queue,e,t,n)},Zi.prototype.loadScripts=function(n,e,t,r){function o(t,e){Gi(a.scriptLoadedCallbacks[e],function(e){D(e[t])&&e[t].call(e.scope)}),a.scriptLoadedCallbacks[e]=undefined}var i,a=this,u=[];a.queueLoadedCallbacks.push({success:e,failure:r,scope:t||this}),(i=function(){var e=Ji(n);if(n.length=0,Gi(e,function(e){2!==a.states[e]?3!==a.states[e]?1!==a.states[e]&&(a.states[e]=1,a.loading++,a.loadScript(e,function(){a.states[e]=2,a.loading--,o("success",e),i()},function(){a.states[e]=3,a.loading--,u.push(e),o("failure",e),i()})):o("failure",e):o("success",e)}),!a.loading){var t=a.queueLoadedCallbacks.slice(0);a.queueLoadedCallbacks.length=0,Gi(t,function(e){0===u.length?D(e.success)&&e.success.call(e.scope):D(e.failure)&&e.failure.call(e.scope,u)})}})()},Zi.ScriptLoader=new Zi,Zi);function Zi(e){void 0===e&&(e={}),this.states={},this.queue=[],this.scriptLoadedCallbacks={},this.queueLoadedCallbacks=[],this.loading=0,this.settings=e}var ea,ta={},na=Je("en"),ra={getData:function(){return se(ta,function(e){return G({},e)})},setCode:function(e){e&&na.set(e)},getCode:function(){return na.get()},add:function(e,t){var n=ta[e];for(var r in n||(ta[e]=n={}),t)n[r.toLowerCase()]=t[r]},translate:function(e){function r(e){return D(e)?Object.prototype.toString.call(e):a(e)?"":""+e}function t(e){var t=r(e),n=t.toLowerCase();return kt(i,n)?r(i[n]):t}function n(e){return e.replace(/{context:\w+}$/,"")}function o(e){return e}var i=ta[na.get()]||{},a=function(e){return""===e||null===e||e===undefined};if(a(e))return o("");if(function(e){return T(e)&&kt(e,"raw")}(e))return o(r(e.raw));if(function(e){return A(e)&&1<e.length}(e)){var u=e.slice(1);return o(n(t(e[0]).replace(/\{([0-9]+)\}/g,function(e,t){return kt(u,t)?r(u[t]):e})))}return o(n(t(e)))},isRtl:function(){return le(ta,na.get()).bind(function(e){return le(e,"_dir")}).exists(function(e){return"rtl"===e})},hasCode:function(e){return kt(ta,e)}},oa=Mn.each;function ia(){function i(e){var t;return c[e]&&(t=c[e].dependencies),t||[]}function a(e,t){return"object"==typeof t?t:"string"==typeof e?{prefix:"",resource:t,suffix:""}:{prefix:e.prefix,resource:t,suffix:e.suffix}}function u(e,n,t,r){var o=i(e);oa(o,function(e){var t=a(n,e);f(t.resource,t,undefined,undefined)}),t&&(r?t.call(r):t.call(Qi))}var r=this,o=[],s={},c={},l=[],f=function(e,t,n,r,o){if(!s[e]){var i="string"==typeof t?t:t.prefix+t.resource+t.suffix;0!==i.indexOf("/")&&-1===i.indexOf("://")&&(i=ia.baseURL+"/"+i),s[e]=i.substring(0,i.lastIndexOf("/")),c[e]?u(e,t,n,r):Qi.ScriptLoader.add(i,function(){return u(e,t,n,r)},r,o)}};return{items:o,urls:s,lookup:c,_listeners:l,get:function(e){return c[e]?c[e].instance:undefined},dependencies:i,requireLangPack:function(e,t){var n=ra.getCode();if(n&&!1!==ia.languageLoad){if(t)if(-1!==(t=","+t+",").indexOf(","+n.substr(0,2)+","))n=n.substr(0,2);else if(-1===t.indexOf(","+n+","))return;Qi.ScriptLoader.add(s[e]+"/langs/"+n+".js")}},add:function(t,e,n){o.push(e),c[t]={instance:e,dependencies:n};var r=Y(l,function(e){return e.name===t});return l=r.fail,oa(r.pass,function(e){e.callback()}),e},remove:function(e){delete s[e],delete c[e]},createUrl:a,addComponents:function(e,t){var n=r.urls[e];oa(t,function(e){Qi.ScriptLoader.add(n+"/"+e)})},load:f,waitFor:function(e,t){c.hasOwnProperty(e)?t():l.push({name:e,callback:t})}}}(ea=ia=ia||{}).PluginManager=ea(),ea.ThemeManager=ea();function aa(n,r){var o=null;return{cancel:function(){null!==o&&(j.clearTimeout(o),o=null)},throttle:function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];null===o&&(o=j.setTimeout(function(){n.apply(null,e),o=null},r))}}}function ua(e,t){var n=ge(e,t);return n===undefined||""===n?[]:n.split(" ")}function sa(e){return e.dom().classList!==undefined}function ca(e,t){return function(e,t,n){var r=ua(e,t).concat([n]);return Tt(e,t,r.join(" ")),!0}(e,"class",t)}function la(e,t){return function(e,t,n){var r=y(ua(e,t),function(e){return e!==n});return 0<r.length?Tt(e,t,r.join(" ")):pe(e,t),!1}(e,"class",t)}function fa(e,t){sa(e)?e.dom().classList.add(t):ca(e,t)}function da(e){0===(sa(e)?e.dom().classList:function(e){return ua(e,"class")}(e)).length&&pe(e,"class")}function ha(e,t){return sa(e)&&e.dom().classList.contains(t)}function ma(e,t){return function(e,t){var n=t===undefined?j.document:t.dom();return xe(n)?[]:X(n.querySelectorAll(e),yt.fromDom)}(t,e)}var ga=ia,pa=function(e,t){var n=[];return z(Re(e),function(e){t(e)&&(n=n.concat([e])),n=n.concat(pa(e,t))}),n};function va(e,t,n,r,o){return e(n,r)?k.some(n):D(o)&&o(n)?k.none():t(n,r,o)}function ya(e,t,n){for(var r=e.dom(),o=D(n)?n:$(!1);r.parentNode;){r=r.parentNode;var i=yt.fromDom(r);if(t(i))return k.some(i);if(o(i))break}return k.none()}function ba(e,t,n){return va(function(e,t){return t(e)},ya,e,t,n)}function Ca(e,t,n){return ya(e,function(e){return we(e,t)},n)}function wa(e,t){return function(e,t){var n=t===undefined?j.document:t.dom();return xe(n)?k.none():k.from(n.querySelector(e)).map(yt.fromDom)}(t,e)}function xa(e,t,n){return va(we,Ca,e,t,n)}function za(r,e){function t(e,t){return function(e,t){var n=e.dom();return!(!n||!n.hasAttribute)&&n.hasAttribute(t)}(e,t)?k.some(ge(e,t)):k.none()}var n=r.selection.getRng(),o=yt.fromDom(n.startContainer),i=yt.fromDom(r.getBody()),a=e.fold(function(){return"."+nu()},function(e){return"["+ru()+'="'+e+'"]'}),u=De(o,n.startOffset).getOr(o);return xa(u,a,function(e){return ze(e,i)}).bind(function(e){return t(e,""+ou()).bind(function(n){return t(e,""+ru()).map(function(e){var t=iu(r,n);return{uid:n,name:e,elements:t}})})})}function Ea(n,e){function a(e,t){r(e,function(e){return t(e),e})}var o=Je({}),r=function(e,t){var n=o.get(),r=t(n.hasOwnProperty(e)?n[e]:{listeners:[],previous:Je(k.none())});n[e]=r,o.set(n)},t=function(n,r){var o=null;return{cancel:function(){null!==o&&(j.clearTimeout(o),o=null)},throttle:function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];null!==o&&j.clearTimeout(o),o=j.setTimeout(function(){n.apply(null,e),o=null},r)}}}(function(){var e=o.get(),t=function(e,t){var n=B.call(e,0);return n.sort(t),n}(Et(e));z(t,function(e){r(e,function(o){var i=o.previous.get();return za(n,k.some(e)).fold(function(){i.isSome()&&(function(t){a(t,function(e){z(e.listeners,function(e){return e(!1,t)})})}(e),o.previous.set(k.none()))},function(e){var t=e.uid,n=e.name,r=e.elements;i.is(t)||(function(t,n,r){a(t,function(e){z(e.listeners,function(e){return e(!0,t,{uid:n,nodes:X(r,function(e){return e.dom()})})})})}(n,t,r),o.previous.set(k.some(t)))}),{previous:o.previous,listeners:o.listeners}})})},30);return n.on("remove",function(){t.cancel()}),n.on("NodeChange",function(){t.throttle()}),{addListener:function(e,t){r(e,function(e){return{previous:e.previous,listeners:e.listeners.concat([t])}})}}}function Na(e,n){e.on("init",function(){e.serializer.addNodeFilter("span",function(e){z(e,function(t){(function(e){return k.from(e.attr(ru())).bind(n.lookup)})(t).each(function(e){!1===e.persistent&&t.unwrap()})})})})}function Sa(e,t){return yt.fromDom(e.dom().cloneNode(t))}function ka(e){return Sa(e,!1)}function Ta(e){return Sa(e,!0)}function Aa(e,t){var n=Ee(e).dom(),r=yt.fromDom(n.createDocumentFragment()),o=function(e,t){var n=(t||j.document).createElement("div");return n.innerHTML=e,Re(yt.fromDom(n))}(t,n);zi(r,o),Ei(e),Di(e,r)}function Ma(e){return du(e)&&(e=e.parentNode),fu(e)&&e.hasAttribute("data-mce-caret")}function Ra(e){return du(e)&&su(e.data)}function Da(e){return Ma(e)||Ra(e)}function _a(e){return e.firstChild!==e.lastChild||!Ge.isBr(e.firstChild)}function Ba(e){var t=e.container();return!(!e||!Ge.isText(t))&&(t.data.charAt(e.offset())===cu||e.isAtStart()&&Ra(t.previousSibling))}function Oa(e){var t=e.container();return!(!e||!Ge.isText(t))&&(t.data.charAt(e.offset()-1)===cu||e.isAtEnd()&&Ra(t.nextSibling))}function Ha(e,t,n){var r,o;return(r=t.ownerDocument.createElement(e)).setAttribute("data-mce-caret",n?"before":"after"),r.setAttribute("data-mce-bogus","all"),r.appendChild(function(){var e=j.document.createElement("br");return e.setAttribute("data-mce-bogus","1"),e}()),o=t.parentNode,n?o.insertBefore(r,t):t.nextSibling?o.insertBefore(r,t.nextSibling):o.appendChild(r),r}function Pa(e){return e&&e.hasAttribute("data-mce-caret")?(function(e){var t=e.getElementsByTagName("br"),n=t[t.length-1];Ge.isBogus(n)&&n.parentNode.removeChild(n)}(e),e.removeAttribute("data-mce-caret"),e.removeAttribute("data-mce-bogus"),e.removeAttribute("style"),e.removeAttribute("_moz_abspos"),e):null}function La(e){return!xu(e)&&(yu(e)?!bu(e.parentNode):Cu(e)||vu(e)||wu(e)||zu(e))}function Va(e,t){return La(e)&&function(e,t){for(e=e.parentNode;e&&e!==t;e=e.parentNode){if(zu(e))return!1;if(gu(e))return!0}return!0}(e,t)}function Ia(e){return e?{left:Eu(e.left),top:Eu(e.top),bottom:Eu(e.bottom),right:Eu(e.right),width:Eu(e.width),height:Eu(e.height)}:{left:0,top:0,bottom:0,right:0,width:0,height:0}}function Fa(e,t){return e=Ia(e),t||(e.left=e.left+e.width),e.right=e.left,e.width=0,e}function Ua(e,t,n){return 0<=e&&e<=Math.min(t.height,n.height)/2}function ja(e,t){return e.bottom-e.height/2<t.top||!(e.top>t.bottom)&&Ua(t.top-e.bottom,e,t)}function qa(e,t){return e.top>t.bottom||!(e.bottom<t.top)&&Ua(t.bottom-e.top,e,t)}function $a(e,t,n){return t>=e.left&&t<=e.right&&n>=e.top&&n<=e.bottom}function Wa(e){var t=e.startContainer,n=e.startOffset;return t.hasChildNodes()&&e.endOffset===n+1?t.childNodes[n]:null}function Ka(e,t){return 1===e.nodeType&&e.hasChildNodes()&&(t>=e.childNodes.length&&(t=e.childNodes.length-1),e=e.childNodes[t]),e}function Xa(e){return"string"==typeof e&&768<=e.charCodeAt(0)&&Nu.test(e)}function Ya(e,t,n){return e.isSome()&&t.isSome()?k.some(n(e.getOrDie(),t.getOrDie())):k.none()}function Ga(e){return e&&/[\r\n\t ]/.test(e)}function Ja(e){return!!e.setStart&&!!e.setEnd}function Qa(e){var t,n=e.startContainer,r=e.startOffset;return!!(Ga(e.toString())&&Bu(n.parentNode)&&Ge.isText(n)&&(t=n.data,Ga(t[r-1])||Ga(t[r+1])))}function Za(e){return 0===e.left&&0===e.right&&0===e.top&&0===e.bottom}function eu(e,t){var n=Fa(e,t);return n.width=1,n.right=n.left+1,n}var tu,nu=$("mce-annotation"),ru=$("data-mce-annotation"),ou=$("data-mce-annotation-uid"),iu=function(e,t){var n=yt.fromDom(e.getBody());return ma(n,"["+ou()+'="'+t+'"]')},au=0,uu="\ufeff",su=function(e){return e===uu},cu=uu,lu=function(e){return e.replace(new RegExp(uu,"g"),"")},fu=Ge.isElement,du=Ge.isText,hu=function(e){return du(e)&&e.data[0]===cu},mu=function(e){return du(e)&&e.data[e.data.length-1]===cu},gu=Ge.isContentEditableTrue,pu=Ge.isContentEditableFalse,vu=Ge.isBr,yu=Ge.isText,bu=Ge.matchNodeNames(["script","style","textarea"]),Cu=Ge.matchNodeNames(["img","input","textarea","hr","iframe","video","audio","object"]),wu=Ge.matchNodeNames(["table"]),xu=Da,zu=function(e){return!1===function(e){return Ge.isElement(e)&&"true"===e.getAttribute("unselectable")}(e)&&pu(e)},Eu=Math.round,Nu=new RegExp("[\u0300-\u036f\u0483-\u0487\u0488-\u0489\u0591-\u05bd\u05bf\u05c1-\u05c2\u05c4-\u05c5\u05c7\u0610-\u061a\u064b-\u065f\u0670\u06d6-\u06dc\u06df-\u06e4\u06e7-\u06e8\u06ea-\u06ed\u0711\u0730-\u074a\u07a6-\u07b0\u07eb-\u07f3\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0859-\u085b\u08e3-\u0902\u093a\u093c\u0941-\u0948\u094d\u0951-\u0957\u0962-\u0963\u0981\u09bc\u09be\u09c1-\u09c4\u09cd\u09d7\u09e2-\u09e3\u0a01-\u0a02\u0a3c\u0a41-\u0a42\u0a47-\u0a48\u0a4b-\u0a4d\u0a51\u0a70-\u0a71\u0a75\u0a81-\u0a82\u0abc\u0ac1-\u0ac5\u0ac7-\u0ac8\u0acd\u0ae2-\u0ae3\u0b01\u0b3c\u0b3e\u0b3f\u0b41-\u0b44\u0b4d\u0b56\u0b57\u0b62-\u0b63\u0b82\u0bbe\u0bc0\u0bcd\u0bd7\u0c00\u0c3e-\u0c40\u0c46-\u0c48\u0c4a-\u0c4d\u0c55-\u0c56\u0c62-\u0c63\u0c81\u0cbc\u0cbf\u0cc2\u0cc6\u0ccc-\u0ccd\u0cd5-\u0cd6\u0ce2-\u0ce3\u0d01\u0d3e\u0d41-\u0d44\u0d4d\u0d57\u0d62-\u0d63\u0dca\u0dcf\u0dd2-\u0dd4\u0dd6\u0ddf\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0eb1\u0eb4-\u0eb9\u0ebb-\u0ebc\u0ec8-\u0ecd\u0f18-\u0f19\u0f35\u0f37\u0f39\u0f71-\u0f7e\u0f80-\u0f84\u0f86-\u0f87\u0f8d-\u0f97\u0f99-\u0fbc\u0fc6\u102d-\u1030\u1032-\u1037\u1039-\u103a\u103d-\u103e\u1058-\u1059\u105e-\u1060\u1071-\u1074\u1082\u1085-\u1086\u108d\u109d\u135d-\u135f\u1712-\u1714\u1732-\u1734\u1752-\u1753\u1772-\u1773\u17b4-\u17b5\u17b7-\u17bd\u17c6\u17c9-\u17d3\u17dd\u180b-\u180d\u18a9\u1920-\u1922\u1927-\u1928\u1932\u1939-\u193b\u1a17-\u1a18\u1a1b\u1a56\u1a58-\u1a5e\u1a60\u1a62\u1a65-\u1a6c\u1a73-\u1a7c\u1a7f\u1ab0-\u1abd\u1abe\u1b00-\u1b03\u1b34\u1b36-\u1b3a\u1b3c\u1b42\u1b6b-\u1b73\u1b80-\u1b81\u1ba2-\u1ba5\u1ba8-\u1ba9\u1bab-\u1bad\u1be6\u1be8-\u1be9\u1bed\u1bef-\u1bf1\u1c2c-\u1c33\u1c36-\u1c37\u1cd0-\u1cd2\u1cd4-\u1ce0\u1ce2-\u1ce8\u1ced\u1cf4\u1cf8-\u1cf9\u1dc0-\u1df5\u1dfc-\u1dff\u200c-\u200d\u20d0-\u20dc\u20dd-\u20e0\u20e1\u20e2-\u20e4\u20e5-\u20f0\u2cef-\u2cf1\u2d7f\u2de0-\u2dff\u302a-\u302d\u302e-\u302f\u3099-\u309a\ua66f\ua670-\ua672\ua674-\ua67d\ua69e-\ua69f\ua6f0-\ua6f1\ua802\ua806\ua80b\ua825-\ua826\ua8c4\ua8e0-\ua8f1\ua926-\ua92d\ua947-\ua951\ua980-\ua982\ua9b3\ua9b6-\ua9b9\ua9bc\ua9e5\uaa29-\uaa2e\uaa31-\uaa32\uaa35-\uaa36\uaa43\uaa4c\uaa7c\uaab0\uaab2-\uaab4\uaab7-\uaab8\uaabe-\uaabf\uaac1\uaaec-\uaaed\uaaf6\uabe5\uabe8\uabed\ufb1e\ufe00-\ufe0f\ufe20-\ufe2f\uff9e-\uff9f]"),Su=[].slice,ku=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];var n=Su.call(arguments);return function(e){for(var t=0;t<n.length;t++)if(!n[t](e))return!1;return!0}},Tu=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];var n=Su.call(arguments);return function(e){for(var t=0;t<n.length;t++)if(n[t](e))return!0;return!1}},Au=Ge.isElement,Mu=La,Ru=Ge.matchStyleValues("display","block table"),Du=Ge.matchStyleValues("float","left right"),_u=ku(Au,Mu,s(Du)),Bu=s(Ge.matchStyleValues("white-space","pre pre-line pre-wrap")),Ou=Ge.isText,Hu=Ge.isBr,Pu=Xi.nodeIndex,Lu=Ka,Vu=function(e){return"createRange"in e?e.createRange():Xi.DOM.createRng()},Iu=function(e){var t,n;return t=0<(n=e.getClientRects()).length?Ia(n[0]):Ia(e.getBoundingClientRect()),!Ja(e)&&Hu(e)&&Za(t)?function(e){var t,n=e.ownerDocument,r=Vu(n),o=n.createTextNode("\xa0"),i=e.parentNode;return i.insertBefore(o,e),r.setStart(o,0),r.setEnd(o,1),t=Ia(r.getBoundingClientRect()),i.removeChild(o),t}(e):Za(t)&&Ja(e)?function(e){var t=e.startContainer,n=e.endContainer,r=e.startOffset,o=e.endOffset;if(t===n&&Ge.isText(n)&&0===r&&1===o){var i=e.cloneRange();return i.setEndAfter(n),Iu(i)}return null}(e):t},Fu=function(e){function r(e){0!==e.height&&(0<i.length&&function(e,t){return e.left===t.left&&e.top===t.top&&e.bottom===t.bottom&&e.right===t.right}(e,i[i.length-1])||i.push(e))}function t(e,t){var n=Vu(e.ownerDocument);if(t<e.data.length){if(Xa(e.data[t]))return i;if(Xa(e.data[t-1])&&(n.setStart(e,t),n.setEnd(e,t+1),!Qa(n)))return r(eu(Iu(n),!1)),i}0<t&&(n.setStart(e,t-1),n.setEnd(e,t),Qa(n)||r(eu(Iu(n),!1))),t<e.data.length&&(n.setStart(e,t),n.setEnd(e,t+1),Qa(n)||r(eu(Iu(n),!0)))}var n,o,i=[];if(Ou(e.container()))return t(e.container(),e.offset()),i;if(Au(e.container()))if(e.isAtEnd())o=Lu(e.container(),e.offset()),Ou(o)&&t(o,o.data.length),_u(o)&&!Hu(o)&&r(eu(Iu(o),!1));else{if(o=Lu(e.container(),e.offset()),Ou(o)&&t(o,0),_u(o)&&e.isAtEnd())return r(eu(Iu(o),!1)),i;n=Lu(e.container(),e.offset()-1),_u(n)&&!Hu(n)&&(!Ru(n)&&!Ru(o)&&_u(o)||r(eu(Iu(n),!1))),_u(o)&&r(eu(Iu(o),!0))}return i};function Uu(t,n,e){function r(){return e=e||Fu(Uu(t,n))}return{container:$(t),offset:$(n),toRange:function(){var e;return(e=Vu(t.ownerDocument)).setStart(t,n),e.setEnd(t,n),e},getClientRects:r,isVisible:function(){return 0<r().length},isAtStart:function(){return Ou(t),0===n},isAtEnd:function(){return Ou(t)?n>=t.data.length:n>=t.childNodes.length},isEqual:function(e){return e&&t===e.container()&&n===e.offset()},getNode:function(e){return Lu(t,e?n-1:n)}}}(tu=Uu=Uu||{}).fromRangeStart=function(e){return tu(e.startContainer,e.startOffset)},tu.fromRangeEnd=function(e){return tu(e.endContainer,e.endOffset)},tu.after=function(e){return tu(e.parentNode,Pu(e)+1)},tu.before=function(e){return tu(e.parentNode,Pu(e))},tu.isAbove=function(e,t){return Ya(E(t.getClientRects()),N(e.getClientRects()),ja).getOr(!1)},tu.isBelow=function(e,t){return Ya(N(t.getClientRects()),E(e.getClientRects()),qa).getOr(!1)},tu.isAtStart=function(e){return!!e&&e.isAtStart()},tu.isAtEnd=function(e){return!!e&&e.isAtEnd()},tu.isTextPosition=function(e){return!!e&&Ge.isText(e.container())},tu.isElementPosition=function(e){return!1===tu.isTextPosition(e)};function ju(t){return function(e){return t===e}}function qu(e){return(_s(e)?"text()":e.nodeName.toLowerCase())+"["+function(e){var r,t,n;return r=Ps(Hs(e)),t=kn.findIndex(r,ju(e),e),r=r.slice(0,t+1),n=kn.reduce(r,function(e,t,n){return _s(t)&&_s(r[n-1])&&e++,e},0),r=kn.filter(r,Ge.matchNodeNames([e.nodeName])),(t=kn.findIndex(r,ju(e),e))-n}(e)+"]"}function $u(e,t){var n,r,o,i,a,u=[];return n=t.container(),r=t.offset(),_s(n)?o=function(e,t){for(;(e=e.previousSibling)&&_s(e);)t+=e.data.length;return t}(n,r):(r>=(i=n.childNodes).length?(o="after",r=i.length-1):o="before",n=i[r]),u.push(qu(n)),a=function(e,t,n){var r=[];for(t=t.parentNode;t!==e&&(!n||!n(t));t=t.parentNode)r.push(t);return r}(e,n),a=kn.filter(a,s(Ge.isBogus)),(u=u.concat(kn.map(a,function(e){return qu(e)}))).reverse().join("/")+","+o}function Wu(e,t){var n,r,o;return t?(t=(n=t.split(","))[0].split("/"),o=1<n.length?n[1]:"before",(r=kn.reduce(t,function(e,t){return(t=/([\w\-\(\)]+)\[([0-9]+)\]/.exec(t))?("text()"===t[1]&&(t[1]="#text"),function(e,t,n){var r=Ps(e);return r=kn.filter(r,function(e,t){return!_s(e)||!_s(r[t-1])}),(r=kn.filter(r,Ge.matchNodeNames([t])))[n]}(e,t[1],parseInt(t[2],10))):null},e))?_s(r)?function(e,t){for(var n,r=e,o=0;_s(r);){if(n=r.data.length,o<=t&&t<=o+n){e=r,t-=o;break}if(!_s(r.nextSibling)){e=r,t=n;break}o+=n,r=r.nextSibling}return _s(e)&&t>e.data.length&&(t=e.data.length),Ds(e,t)}(r,parseInt(o,10)):(o="after"===o?Os(r)+1:Os(r),Ds(r.parentNode,o)):null):null}function Ku(e,t){Ge.isText(t)&&0===t.data.length&&e.remove(t)}function Xu(e,t,n){Ge.isDocumentFragment(n)?function(t,e,n){var r=k.from(n.firstChild),o=k.from(n.lastChild);e.insertNode(n),r.each(function(e){return Ku(t,e.previousSibling)}),o.each(function(e){return Ku(t,e.nextSibling)})}(e,t,n):function(e,t,n){t.insertNode(n),Ku(e,n.previousSibling),Ku(e,n.nextSibling)}(e,t,n)}function Yu(e,t,n,r,o){var i,a=r[o?"startContainer":"endContainer"],u=r[o?"startOffset":"endOffset"],s=[],c=0,l=e.getRoot();for(Ge.isText(a)?s.push(n?function(e,t,n){var r,o;for(o=e(t.data.slice(0,n)).length,r=t.previousSibling;r&&Ge.isText(r);r=r.previousSibling)o+=e(r.data).length;return o}(t,a,u):u):(u>=(i=a.childNodes).length&&i.length&&(c=1,u=Math.max(0,i.length-1)),s.push(e.nodeIndex(i[u],n)+c));a&&a!==l;a=a.parentNode)s.push(e.nodeIndex(a,n));return s}function Gu(e,t,n){var r=0;return Mn.each(e.select(t),function(e){if("all"!==e.getAttribute("data-mce-bogus"))return e!==n&&void r++}),r}function Ju(e,t){var n,r,o,i=t?"start":"end";n=e[i+"Container"],r=e[i+"Offset"],Ge.isElement(n)&&"TR"===n.nodeName&&(n=(o=n.childNodes)[Math.min(t?r:r-1,o.length-1)])&&(r=t?0:n.childNodes.length,e["set"+(t?"Start":"End")](n,r))}function Qu(e){return Ju(e,!0),Ju(e,!1),e}function Zu(e,t){var n;if(Ge.isElement(e)&&(e=Ka(e,t),Ls(e)))return e;if(Da(e)){if(Ge.isText(e)&&Ma(e)&&(e=e.parentNode),n=e.previousSibling,Ls(n))return n;if(n=e.nextSibling,Ls(n))return n}}function es(e,t,n){var r=n.getNode(),o=r?r.nodeName:null,i=n.getRng();if(Ls(r)||"IMG"===o)return{name:o,index:Gu(n.dom,o,r)};var a=function(e){return Zu(e.startContainer,e.startOffset)||Zu(e.endContainer,e.endOffset)}(i);return a?{name:o=a.tagName,index:Gu(n.dom,o,a)}:function(e,t,n,r){var o=t.dom,i={};return i.start=Yu(o,e,n,r,!0),t.isCollapsed()||(i.end=Yu(o,e,n,r,!1)),i}(e,n,t,i)}function ts(e,t,n){var r={"data-mce-type":"bookmark",id:t,style:"overflow:hidden;line-height:0px"};return n?e.create("span",r,"&#xFEFF;"):e.create("span",r)}function ns(e,t){var n=e.dom,r=e.getRng(),o=n.uniqueId(),i=e.isCollapsed(),a=e.getNode(),u=a.nodeName;if("IMG"===u)return{name:u,index:Gu(n,u,a)};var s=Qu(r.cloneRange());if(!i){s.collapse(!1);var c=ts(n,o+"_end",t);Xu(n,s,c)}(r=Qu(r)).collapse(!0);var l=ts(n,o+"_start",t);return Xu(n,r,l),e.moveToBookmark({id:o,keep:1}),{id:o}}function rs(e){return Ge.isElement(e)&&e.id===Is}function os(e,t){for(;t&&t!==e;){if(t.id===Is)return t;t=t.parentNode}return null}function is(e){var t=e.parentNode;t&&t.removeChild(e)}function as(e,t){0===t.length?is(e):e.nodeValue=t}function us(e){var t=lu(e);return{count:e.length-t.length,text:t}}function ss(e,t){return js(e),t}function cs(e,t){var n=t.container(),r=function(e,t){var n=f(e,t);return-1===n?k.none():k.some(n)}(P(n.childNodes),e).map(function(e){return e<t.offset()?Ds(n,t.offset()-1):t}).getOr(t);return js(e),r}function ls(e,t){return Us(e)&&t.container()===e?function(e,t){var n=us(e.data.substr(0,t.offset())),r=us(e.data.substr(t.offset())),o=n.text+r.text;return 0<o.length?(as(e,o),Ds(e,t.offset()-n.count)):t}(e,t):ss(e,t)}function fs(e,t,n){var r,o,i,a,u,s=Fa(t.getBoundingClientRect(),n);return i="BODY"===e.tagName?(r=e.ownerDocument.documentElement,o=e.scrollLeft||r.scrollLeft,e.scrollTop||r.scrollTop):(u=e.getBoundingClientRect(),o=e.scrollLeft-u.left,e.scrollTop-u.top),s.left+=o,s.right+=o,s.top+=i,s.bottom+=i,s.width=1,0<(a=t.offsetWidth-t.clientWidth)&&(n&&(a*=-1),s.left+=a,s.right+=a),s}function ds(i,a,e){var t,u,s=Je(k.none()),c=function(){!function(e){var t,n,r,o,i;for(t=vi("*[contentEditable=false]",e),o=0;o<t.length;o++)r=(n=t[o]).previousSibling,mu(r)&&(1===(i=r.data).length?r.parentNode.removeChild(r):r.deleteData(i.length-1,1)),r=n.nextSibling,hu(r)&&(1===(i=r.data).length?r.parentNode.removeChild(r):r.deleteData(0,1))}(i),u&&(qs.remove(u),u=null),s.get().each(function(e){vi(e.caret).remove(),s.set(k.none())}),pn.clearInterval(t)},l=function(){t=pn.setInterval(function(){e()?vi("div.mce-visual-caret",i).toggleClass("mce-visual-caret-hidden"):vi("div.mce-visual-caret",i).addClass("mce-visual-caret-hidden")},500)};return{show:function(t,e){var n,r;if(c(),function(e){return Ge.isElement(e)&&/^(TD|TH)$/i.test(e.tagName)}(e))return null;if(!a(e))return u=function(e,t){var n,r,o;if(r=e.ownerDocument.createTextNode(cu),o=e.parentNode,t){if(n=e.previousSibling,du(n)){if(Da(n))return n;if(mu(n))return n.splitText(n.data.length-1)}o.insertBefore(r,e)}else{if(n=e.nextSibling,du(n)){if(Da(n))return n;if(hu(n))return n.splitText(1),n}e.nextSibling?o.insertBefore(r,e.nextSibling):o.appendChild(r)}return r}(e,t),r=e.ownerDocument.createRange(),Ws(u.nextSibling)?(r.setStart(u,0),r.setEnd(u,0)):(r.setStart(u,1),r.setEnd(u,1)),r;u=Ha("p",e,t),n=fs(i,e,t),vi(u).css("top",n.top);var o=vi('<div class="mce-visual-caret" data-mce-bogus="all"></div>').css(n).appendTo(i)[0];return s.set(k.some({caret:o,element:e,before:t})),s.get().each(function(e){t&&vi(e.caret).addClass("mce-visual-caret-before")}),l(),(r=e.ownerDocument.createRange()).setStart(u,0),r.setEnd(u,0),r},hide:c,getCss:function(){return".mce-visual-caret {position: absolute;background-color: black;background-color: currentcolor;}.mce-visual-caret-hidden {display: none;}*[data-mce-caret] {position: absolute;left: -1000px;right: auto;top: 0;margin: 0;padding: 0;}"},reposition:function(){s.get().each(function(e){var t=fs(i,e.element,e.before);vi(e.caret).css(G({},t))})},destroy:function(){return pn.clearInterval(t)}}}function hs(){return $s.isIE()||$s.isEdge()||$s.isFirefox()}function ms(e){return Ws(e)||Ge.isTable(e)&&hs()}function gs(e){return 0<e}function ps(e){return e<0}function vs(e,t){for(var n;n=e(t);)if(!Gs(n))return n;return null}function ys(e,t,n,r,o){var i=new yi(e,r);if(ps(t)){if((Ks(e)||Gs(e))&&n(e=vs(i.prev,!0)))return e;for(;e=vs(i.prev,o);)if(n(e))return e}if(gs(t)){if((Ks(e)||Gs(e))&&n(e=vs(i.next,!0)))return e;for(;e=vs(i.next,o);)if(n(e))return e}return null}function bs(e,t){for(;e&&e!==t;){if(Xs(e))return e;e=e.parentNode}return null}function Cs(e,t,n){return bs(e.container(),n)===bs(t.container(),n)}function ws(e,t){var n,r;return t?(n=t.container(),r=t.offset(),Js(n)?n.childNodes[r+e]:null):null}function xs(e,t){var n=t.ownerDocument.createRange();return e?(n.setStartBefore(t),n.setEndBefore(t)):(n.setStartAfter(t),n.setEndAfter(t)),n}function zs(e,t,n){var r,o,i,a;for(o=e?"previousSibling":"nextSibling";n&&n!==t;){if(r=n[o],Ys(r)&&(r=r[o]),Ks(r)){if(a=n,bs(r,i=t)===bs(a,i))return r;break}if(Qs(r))break;n=n.parentNode}return null}function Es(e,t,n){var r,o,i,a,u=d(zs,!0,t),s=d(zs,!1,t);if(o=n.startContainer,i=n.startOffset,Ma(o)){if(Js(o)||(o=o.parentNode),"before"===(a=o.getAttribute("data-mce-caret"))&&(r=o.nextSibling,ms(r)))return Zs(r);if("after"===a&&(r=o.previousSibling,ms(r)))return ec(r)}if(!n.collapsed)return n;if(Ge.isText(o)){if(Ys(o)){if(1===e){if(r=s(o))return Zs(r);if(r=u(o))return ec(r)}if(-1===e){if(r=u(o))return ec(r);if(r=s(o))return Zs(r)}return n}if(mu(o)&&i>=o.data.length-1)return 1===e&&(r=s(o))?Zs(r):n;if(hu(o)&&i<=1)return-1===e&&(r=u(o))?ec(r):n;if(i===o.data.length)return(r=s(o))?Zs(r):n;if(0===i)return(r=u(o))?ec(r):n}return n}function Ns(e,t){return k.from(ws(e?0:-1,t)).filter(Ks)}function Ss(e,t,n){var r=Es(e,t,n);return-1===e?Uu.fromRangeStart(r):Uu.fromRangeEnd(r)}function ks(e){return k.from(e.getNode()).map(yt.fromDom)}function Ts(e,t){for(;t=e(t);)if(t.isVisible())return t;return t}function As(e,t){var n=Cs(e,t);return!(n||!Ge.isBr(e.getNode()))||n}var Ms,Rs,Ds=Uu,_s=Ge.isText,Bs=Ge.isBogus,Os=Xi.nodeIndex,Hs=function(e){var t=e.parentNode;return Bs(t)?Hs(t):t},Ps=function(e){return e?kn.reduce(e.childNodes,function(e,t){return Bs(t)&&"BR"!==t.nodeName?e=e.concat(Ps(t)):e.push(t),e},[]):[]},Ls=Ge.isContentEditableFalse,Vs={getBookmark:function(e,t,n){return 2===t?es(lu,n,e):3===t?function(e){var t=e.getRng();return{start:$u(e.dom.getRoot(),Ds.fromRangeStart(t)),end:$u(e.dom.getRoot(),Ds.fromRangeEnd(t))}}(e):t?function(e){return{rng:e.getRng()}}(e):ns(e,!1)},getUndoBookmark:d(es,W,!0),getPersistentBookmark:ns},Is="_mce_caret",Fs=Ge.isElement,Us=Ge.isText,js=function(e){if(Fs(e)&&Da(e)&&(_a(e)?e.removeAttribute("data-mce-caret"):is(e)),Us(e)){var t=lu(function(e){try{return e.nodeValue}catch(t){return""}}(e));as(e,t)}},qs={removeAndReposition:function(e,t){return Ds.isTextPosition(t)?ls(e,t):function(e,t){return t.container()===e.parentNode?cs(e,t):ss(e,t)}(e,t)},remove:js},$s=oe().browser,Ws=Ge.isContentEditableFalse,Ks=Ge.isContentEditableFalse,Xs=Ge.matchStyleValues("display","block table table-cell table-caption list-item"),Ys=Da,Gs=Ma,Js=Ge.isElement,Qs=La,Zs=d(xs,!0),ec=d(xs,!1);(Rs=Ms=Ms||{})[Rs.Backwards=-1]="Backwards",Rs[Rs.Forwards=1]="Forwards";function tc(e,t){return e.hasChildNodes()&&t<e.childNodes.length?e.childNodes[t]:null}function nc(e,t){if(gs(e)){if(Ac(t.previousSibling)&&!Sc(t.previousSibling))return Ds.before(t);if(Sc(t))return Ds(t,0)}if(ps(e)){if(Ac(t.nextSibling)&&!Sc(t.nextSibling))return Ds.after(t);if(Sc(t))return Ds(t,t.data.length)}return ps(e)?Tc(t)?Ds.before(t):Ds.after(t):Ds.before(t)}function rc(t){return{next:function(e){return Dc(Ms.Forwards,e,t)},prev:function(e){return Dc(Ms.Backwards,e,t)}}}function oc(e){return Ds.isTextPosition(e)?0===e.offset():La(e.getNode())}function ic(e){if(Ds.isTextPosition(e)){var t=e.container();return e.offset()===t.data.length}return La(e.getNode(!0))}function ac(e,t){return!Ds.isTextPosition(e)&&!Ds.isTextPosition(t)&&e.getNode()===t.getNode(!0)}function uc(e,t,n){return e?!ac(t,n)&&!function(e){return!Ds.isTextPosition(e)&&Ge.isBr(e.getNode())}(t)&&ic(t)&&oc(n):!ac(n,t)&&oc(t)&&ic(n)}function sc(t,n,r){return _c(t,n,r).bind(function(e){return Cs(r,e,n)&&uc(t,r,e)?_c(t,n,e):k.some(e)})}function cc(e,t){var n=e?t.firstChild:t.lastChild;return Ge.isText(n)?k.some(Ds(n,e?0:n.data.length)):n?La(n)?k.some(e?Ds.before(n):function(e){return Ge.isBr(e)?Ds.before(e):Ds.after(e)}(n)):function(e,t,n){var r=e?Ds.before(n):Ds.after(n);return _c(e,t,r)}(e,t,n):k.none()}function lc(e,t){return Ge.isElement(t)&&e.isBlock(t)&&!t.innerHTML&&!Nn.ie&&(t.innerHTML='<br data-mce-bogus="1" />'),t}function fc(e,t){return Pc.lastPositionIn(e).fold(function(){return!1},function(e){return t.setStart(e.container(),e.offset()),t.setEnd(e.container(),e.offset()),!0})}function dc(e,t,n){return!(!function(e){return!1===e.hasChildNodes()}(t)||!os(e,t))&&(function(e,t){var n=e.ownerDocument.createTextNode(cu);e.appendChild(n),t.setStart(n,0),t.setEnd(n,0)}(t,n),!0)}function hc(e,t,n,r){var o,i,a,u,s=n[t?"start":"end"],c=e.getRoot();if(s){for(a=s[0],i=c,o=s.length-1;1<=o;o--){if(u=i.childNodes,dc(c,i,r))return!0;if(s[o]>u.length-1)return!!dc(c,i,r)||fc(i,r);i=u[s[o]]}3===i.nodeType&&(a=Math.min(s[0],i.nodeValue.length)),1===i.nodeType&&(a=Math.min(s[0],i.childNodes.length)),t?r.setStart(i,a):r.setEnd(i,a)}return!0}function mc(e){return Ge.isText(e)&&0<e.data.length}function gc(e,t,n){var r,o,i,a,u,s,c=e.get(n.id+"_"+t),l=n.keep;if(c){if(r=c.parentNode,s=(u=(o="start"===t?l?c.hasChildNodes()?(r=c.firstChild,1):mc(c.nextSibling)?(r=c.nextSibling,0):mc(c.previousSibling)?(r=c.previousSibling,c.previousSibling.data.length):(r=c.parentNode,e.nodeIndex(c)+1):e.nodeIndex(c):l?c.hasChildNodes()?(r=c.firstChild,1):mc(c.previousSibling)?(r=c.previousSibling,c.previousSibling.data.length):(r=c.parentNode,e.nodeIndex(c)):e.nodeIndex(c),r),o),!l){for(a=c.previousSibling,i=c.nextSibling,Mn.each(Mn.grep(c.childNodes),function(e){Ge.isText(e)&&(e.nodeValue=e.nodeValue.replace(/\uFEFF/g,""))});c=e.get(n.id+"_"+t);)e.remove(c,!0);a&&i&&a.nodeType===i.nodeType&&Ge.isText(a)&&!Nn.opera&&(o=a.nodeValue.length,a.appendData(i.nodeValue),e.remove(i),s=(u=a,o))}return k.some(Ds(u,s))}return k.none()}function pc(e){return e&&/^(IMG)$/.test(e.nodeName)}function vc(e,t,n){return"color"!==n&&"backgroundColor"!==n||(t=e.toHex(t)),"fontWeight"===n&&700===t&&(t="bold"),"fontFamily"===n&&(t=t.replace(/[\'\"]/g,"").replace(/,\s+/g,",")),""+t}function yc(e,t){for(void 0===t&&(t=3===e.nodeType?e.length:e.childNodes.length);e&&e.hasChildNodes();)(e=e.childNodes[t])&&(t=3===e.nodeType?e.length:e.childNodes.length);return{node:e,offset:t}}function bc(e,t){for(var n=t;n;){if(1===n.nodeType&&e.getContentEditable(n))return"false"===e.getContentEditable(n)?n:t;n=n.parentNode}return t}function Cc(e,t,n,r){var o,i,a=n.nodeValue;return void 0===r&&(r=e?a.length:0),e?(o=a.lastIndexOf(" ",r),-1!==(o=(i=a.lastIndexOf("\xa0",r))<o?o:i)&&!t&&(o<r||!e)&&o<=a.length&&o++):(o=a.indexOf(" ",r),i=a.indexOf("\xa0",r),o=-1!==o&&(-1===i||o<i)?o:i),o}function wc(e,t,n,r,o,i){var a,u,s;if(3===n.nodeType){if(-1!==(u=Cc(o,i,n,r)))return{container:n,offset:u};s=n}for(var c=new yi(n,e.getParent(n,e.isBlock)||t);a=c[o?"prev":"next"]();)if(3!==a.nodeType||qc(a.parentNode)){if(e.isBlock(a)||jc.isEq(a,"BR"))break}else if(-1!==(u=Cc(o,i,s=a)))return{container:a,offset:u};if(s)return{container:s,offset:r=o?0:s.length}}function xc(e,t,n,r,o){var i,a,u,s;for(3===r.nodeType&&0===r.nodeValue.length&&r[o]&&(r=r[o]),i=$c(e,r),a=0;a<i.length;a++)for(u=0;u<t.length;u++)if(!("collapsed"in(s=t[u])&&s.collapsed!==n.collapsed)&&e.is(i[a],s.selector))return i[a];return r}function zc(t,e,n,r){var o,i=t.dom,a=i.getRoot();if(e[0].wrapper||(o=i.getParent(n,e[0].block,a)),!o){var u=i.getParent(n,"LI,TD,TH");o=i.getParent(3===n.nodeType?n.parentNode:n,function(e){return e!==a&&Kc(t,e)},u)}if(o&&e[0].wrapper&&(o=$c(i,o,"ul,ol").reverse()[0]||o),!o)for(o=n;o[r]&&!i.isBlock(o[r])&&(o=o[r],!jc.isEq(o,"br")););return o||n}function Ec(e,t,n,r,o,i,a){var u,s,c,l,f,d;if(u=s=a?n:o,l=a?"previousSibling":"nextSibling",f=e.getRoot(),3===u.nodeType&&!Wc(u)&&(a?0<r:i<u.nodeValue.length))return u;for(;;){if(!t[0].block_expand&&e.isBlock(s))return s;for(c=s[l];c;c=c[l])if(!qc(c)&&!Wc(c)&&("BR"!==(d=c).nodeName||!d.getAttribute("data-mce-bogus")||d.nextSibling))return s;if(s===f||s.parentNode===f){u=s;break}s=s.parentNode}return u}var Nc=Ge.isContentEditableFalse,Sc=Ge.isText,kc=Ge.isElement,Tc=Ge.isBr,Ac=La,Mc=function(e){return Cu(e)||function(e){return!!zu(e)&&!0!==b(P(e.getElementsByTagName("*")),function(e,t){return e||gu(t)},!1)}(e)},Rc=Va,Dc=function(e,t,n){var r,o,i,a,u;if(!kc(n)||!t)return null;if(t.isEqual(Ds.after(n))&&n.lastChild){if(u=Ds.after(n.lastChild),ps(e)&&Ac(n.lastChild)&&kc(n.lastChild))return Tc(n.lastChild)?Ds.before(n.lastChild):u}else u=t;var s=u.container(),c=u.offset();if(Sc(s)){if(ps(e)&&0<c)return Ds(s,--c);if(gs(e)&&c<s.length)return Ds(s,++c);r=s}else{if(ps(e)&&0<c&&(o=tc(s,c-1),Ac(o)))return!Mc(o)&&(i=ys(o,e,Rc,o))?Sc(i)?Ds(i,i.data.length):Ds.after(i):Sc(o)?Ds(o,o.data.length):Ds.before(o);if(gs(e)&&c<s.childNodes.length&&(o=tc(s,c),Ac(o)))return Tc(o)?function(e,t){var n=t.nextSibling;return n&&Ac(n)?Sc(n)?Ds(n,0):Ds.before(n):Dc(Ms.Forwards,Ds.after(t),e)}(n,o):!Mc(o)&&(i=ys(o,e,Rc,o))?Sc(i)?Ds(i,0):Ds.before(i):Sc(o)?Ds(o,0):Ds.after(o);r=o||u.getNode()}return(gs(e)&&u.isAtEnd()||ps(e)&&u.isAtStart())&&(r=ys(r,e,$(!0),n,!0),Rc(r,n))?nc(e,r):(o=ys(r,e,Rc,n),!(a=kn.last(y(function(e,t){for(var n=[];e&&e!==t;)n.push(e),e=e.parentNode;return n}(s,n),Nc)))||o&&a.contains(o)?o?nc(e,o):null:u=gs(e)?Ds.after(a):Ds.before(a))},_c=function(e,t,n){var r=rc(t);return k.from(e?r.next(n):r.prev(n))},Bc=function(t,n,e,r){return sc(t,n,e).bind(function(e){return r(e)?Bc(t,n,e,r):k.some(e)})},Oc=d(_c,!0),Hc=d(_c,!1),Pc={fromPosition:_c,nextPosition:Oc,prevPosition:Hc,navigate:sc,navigateIgnore:Bc,positionIn:cc,firstPositionIn:d(cc,!0),lastPositionIn:d(cc,!1)},Lc=function(e,t){var n=e.dom;if(t){if(function(e){return Mn.isArray(e.start)}(t))return function(e,t){var n=e.createRng();return hc(e,!0,t,n)&&hc(e,!1,t,n)?k.some(n):k.none()}(n,t);if(function(e){return"string"==typeof e.start}(t))return k.some(function(e,t){var n,r;return n=e.createRng(),r=Wu(e.getRoot(),t.start),n.setStart(r.container(),r.offset()),r=Wu(e.getRoot(),t.end),n.setEnd(r.container(),r.offset()),n}(n,t));if(function(e){return e.hasOwnProperty("id")}(t))return function(r,e){var t=gc(r,"start",e),n=gc(r,"end",e);return Ya(t,n.or(t),function(e,t){var n=r.createRng();return n.setStart(lc(r,e.container()),e.offset()),n.setEnd(lc(r,t.container()),t.offset()),n})}(n,t);if(function(e){return e.hasOwnProperty("name")}(t))return function(n,e){return k.from(n.select(e.name)[e.index]).map(function(e){var t=n.createRng();return t.selectNode(e),t})}(n,t);if(function(e){return e.hasOwnProperty("rng")}(t))return k.some(t.rng)}return k.none()},Vc=function(e,t,n){return Vs.getBookmark(e,t,n)},Ic=function(t,e){Lc(t,e).each(function(e){t.setRng(e)})},Fc=function(e){return Ge.isElement(e)&&"SPAN"===e.tagName&&"bookmark"===e.getAttribute("data-mce-type")},Uc=function(e){return e&&3===e.nodeType&&/^([\t \r\n]+|)$/.test(e.nodeValue)},jc={isInlineBlock:pc,moveStart:function(e,t,n){var r,o,i,a=n.startOffset,u=n.startContainer;if((n.startContainer!==n.endContainer||!pc(n.startContainer.childNodes[n.startOffset]))&&1===u.nodeType)for(a<(i=u.childNodes).length?(u=i[a],r=new yi(u,e.getParent(u,e.isBlock))):(u=i[i.length-1],(r=new yi(u,e.getParent(u,e.isBlock))).next(!0)),o=r.current();o;o=r.next())if(3===o.nodeType&&!Uc(o))return n.setStart(o,0),void t.setRng(n)},getNonWhiteSpaceSibling:function(e,t,n){if(e)for(t=t?"nextSibling":"previousSibling",e=n?e:e[t];e;e=e[t])if(1===e.nodeType||!Uc(e))return e},isTextBlock:function(e,t){return t.nodeType&&(t=t.nodeName),!!e.schema.getTextBlockElements()[t.toLowerCase()]},isValid:function(e,t,n){return e.schema.isValidChild(t,n)},isWhiteSpaceNode:Uc,replaceVars:function(e,n){return"string"!=typeof e?e=e(n):n&&(e=e.replace(/%(\w+)/g,function(e,t){return n[t]||e})),e},isEq:function(e,t){return e=""+((e=e||"").nodeName||e),t=""+((t=t||"").nodeName||t),e.toLowerCase()===t.toLowerCase()},normalizeStyleValue:vc,getStyle:function(e,t,n){return vc(e,e.getStyle(t,n),n)},getTextDecoration:function(t,e){var n;return t.getParent(e,function(e){return(n=t.getStyle(e,"text-decoration"))&&"none"!==n}),n},getParents:function(e,t,n){return e.getParents(t,n,e.getRoot())}},qc=Fc,$c=jc.getParents,Wc=jc.isWhiteSpaceNode,Kc=jc.isTextBlock,Xc=function(e,t,n,r){var o,i=t.startContainer,a=t.startOffset,u=t.endContainer,s=t.endOffset,c=e.dom;return 1===i.nodeType&&i.hasChildNodes()&&3===(i=Ka(i,a)).nodeType&&(a=0),1===u.nodeType&&u.hasChildNodes()&&3===(u=Ka(u,t.collapsed?s:s-1)).nodeType&&(s=u.nodeValue.length),i=bc(c,i),u=bc(c,u),(qc(i.parentNode)||qc(i))&&(i=qc(i)?i:i.parentNode,3===(i=t.collapsed?i.previousSibling||i:i.nextSibling||i).nodeType&&(a=t.collapsed?i.length:0)),(qc(u.parentNode)||qc(u))&&(u=qc(u)?u:u.parentNode,3===(u=t.collapsed?u.nextSibling||u:u.previousSibling||u).nodeType&&(s=t.collapsed?0:u.length)),t.collapsed&&((o=wc(c,e.getBody(),i,a,!0,r))&&(i=o.container,a=o.offset),(o=wc(c,e.getBody(),u,s,!1,r))&&(u=o.container,s=o.offset)),n[0].inline&&(u=r?u:function(e,t){var n=yc(e,t);if(n.node){for(;n.node&&0===n.offset&&n.node.previousSibling;)n=yc(n.node.previousSibling);n.node&&0<n.offset&&3===n.node.nodeType&&" "===n.node.nodeValue.charAt(n.offset-1)&&1<n.offset&&(e=n.node).splitText(n.offset-1)}return e}(u,s)),(n[0].inline||n[0].block_expand)&&(n[0].inline&&3===i.nodeType&&0!==a||(i=Ec(c,n,i,a,u,s,!0)),n[0].inline&&3===u.nodeType&&s!==u.nodeValue.length||(u=Ec(c,n,i,a,u,s,!1))),n[0].selector&&!1!==n[0].expand&&!n[0].inline&&(i=xc(c,n,t,i,"previousSibling"),u=xc(c,n,t,u,"nextSibling")),(n[0].block||n[0].selector)&&(i=zc(e,n,i,"previousSibling"),u=zc(e,n,u,"nextSibling"),n[0].block&&(c.isBlock(i)||(i=Ec(c,n,i,a,u,s,!0)),c.isBlock(u)||(u=Ec(c,n,i,a,u,s,!1)))),1===i.nodeType&&(a=c.nodeIndex(i),i=i.parentNode),1===u.nodeType&&(s=c.nodeIndex(u)+1,u=u.parentNode),{startContainer:i,startOffset:a,endContainer:u,endOffset:s}},Yc=Mn.each,Gc=function(e,t,o){var n,r,i,a,u,s,c,l=t.startContainer,f=t.startOffset,d=t.endContainer,h=t.endOffset;if(0<(c=e.select("td[data-mce-selected],th[data-mce-selected]")).length)Yc(c,function(e){o([e])});else{var m=function(e){var t;return 3===(t=e[0]).nodeType&&t===l&&f>=t.nodeValue.length&&e.splice(0,1),t=e[e.length-1],0===h&&0<e.length&&t===d&&3===t.nodeType&&e.splice(e.length-1,1),e},g=function(e,t,n){for(var r=[];e&&e!==n;e=e[t])r.push(e);return r},p=function(e,t){do{if(e.parentNode===t)return e;e=e.parentNode}while(e)},v=function(e,t,n){var r=n?"nextSibling":"previousSibling";for(u=(a=e).parentNode;a&&a!==t;a=u)u=a.parentNode,(s=g(a===e?a:a[r],r)).length&&(n||s.reverse(),o(m(s)))};if(1===l.nodeType&&l.hasChildNodes()&&(l=l.childNodes[f]),1===d.nodeType&&d.hasChildNodes()&&(d=function(e,t){var n=e.childNodes;return--t>n.length-1?t=n.length-1:t<0&&(t=0),n[t]||e}(d,h)),l===d)return o(m([l]));for(n=e.findCommonAncestor(l,d),a=l;a;a=a.parentNode){if(a===d)return v(l,n,!0);if(a===n)break}for(a=d;a;a=a.parentNode){if(a===l)return v(d,n);if(a===n)break}r=p(l,n)||l,i=p(d,n)||d,v(l,r,!0),(s=g(r===l?r:r.nextSibling,"nextSibling",i===d?i.nextSibling:i)).length&&o(m(s)),v(d,i)}};function Jc(e){return ol.get(e)}function Qc(t,n,r,o){return Se(n).fold(function(){return"skipping"},function(e){return"br"===o||function(e){return zt(e)&&"\ufeff"===Jc(e)}(n)?"valid":function(e){return xt(e)&&ha(e,nu())}(n)?"existing":rs(n)?"caret":jc.isValid(t,r,o)&&jc.isValid(t,ie(e),r)?"valid":"invalid-child"})}function Zc(e,t,n,r){var o=t.uid,i=void 0===o?function(e){var t=(new Date).getTime();return e+"_"+Math.floor(1e9*Math.random())+ ++au+String(t)}("mce-annotation"):o,a=function h(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(r=Object.getOwnPropertySymbols(e);o<r.length;o++)t.indexOf(r[o])<0&&Object.prototype.propertyIsEnumerable.call(e,r[o])&&(n[r[o]]=e[r[o]])}return n}(t,["uid"]),u=yt.fromTag("span",e);fa(u,nu()),Tt(u,""+ou(),i),Tt(u,""+ru(),n);var s=r(i,a),c=s.attributes,l=void 0===c?{}:c,f=s.classes,d=void 0===f?[]:f;return me(u,l),function(t,e){z(e,function(e){fa(t,e)})}(u,d),u}function el(n,e,t,r,o){function i(){c.set(k.none())}function a(e){z(e,l)}var u=[],s=Zc(n.getDoc(),o,t,r),c=Je(k.none()),l=function(e){switch(Qc(n,e,"span",ie(e))){case"invalid-child":i();var t=Re(e);a(t),i();break;case"valid":!function(e,t){Ci(e,t),Di(t,e)}(e,c.get().getOrThunk(function(){var e=ka(s);return u.push(e),c.set(k.some(e)),e}))}};return Gc(n.dom,e,function(e){i(),function(e){var t=X(e,yt.fromDom);a(t)}(e)}),u}function tl(o,i,a,u){o.undoManager.transact(function(){var e=o.selection.getRng();if(e.collapsed&&function(e,t){var n=Xc(e,t,[{inline:!0}],function(e){return 3===e.startContainer.nodeType&&e.startContainer.nodeValue.length>=e.startOffset&&"\xa0"===e.startContainer.nodeValue[e.startOffset]}(t));t.setStart(n.startContainer,n.startOffset),t.setEnd(n.endContainer,n.endOffset),e.selection.setRng(t)}(o,e),o.selection.getRng().collapsed){var t=Zc(o.getDoc(),u,i,a.decorate);Aa(t,"\xa0"),o.selection.getRng().insertNode(t.dom()),o.selection.select(t.dom())}else{var n=Vs.getPersistentBookmark(o.selection,!1),r=o.selection.getRng();el(o,r,i,a.decorate,u),o.selection.moveToBookmark(n)}})}function nl(r){var o=function(){var n={};return{register:function(e,t){n[e]={name:e,settings:t}},lookup:function(e){return n.hasOwnProperty(e)?k.from(n[e]).map(function(e){return e.settings}):k.none()}}}();Na(r,o);var n=Ea(r);return{register:function(e,t){o.register(e,t)},annotate:function(t,n){o.lookup(t).each(function(e){tl(r,t,e,n)})},annotationChanged:function(e,t){n.addListener(e,t)},remove:function(e){za(r,k.some(e)).each(function(e){var t=e.elements;z(t,Ni)})},getAll:function(e){var t=function(e,t){var n=yt.fromDom(e.getBody()),r=ma(n,"["+ru()+'="'+t+'"]'),o={};return z(r,function(e){var t=ge(e,ou()),n=o.hasOwnProperty(t)?o[t]:[];o[t]=n.concat([e])}),o}(r,e);return se(t,function(e){return X(e,function(e){return e.dom()})})}}}function rl(e,t,n){var r=n?"lastChild":"firstChild",o=n?"prev":"next";if(e[r])return e[r];if(e!==t){var i=e[o];if(i)return i;for(var a=e.parent;a&&a!==t;a=a.parent)if(i=a[o])return i}}var ol=function bN(n,r){var t=function(e){return n(e)?k.from(e.dom().nodeValue):k.none()};return{get:function(e){if(!n(e))throw new Error("Can only get "+r+" value of a "+r+" node");return t(e).getOr("")},getOption:t,set:function(e,t){if(!n(e))throw new Error("Can only set raw "+r+" value of a "+r+" node");e.dom().nodeValue=t}}}(zt,"text"),il=/^[ \t\r\n]*$/,al={"#text":3,"#comment":8,"#cdata":4,"#pi":7,"#doctype":10,"#document-fragment":11},ul=(sl.create=function(e,t){var n=new sl(e,al[e]||1);if(t)for(var r in t)n.attr(r,t[r]);return n},sl.prototype.replace=function(e){return e.parent&&e.remove(),this.insert(e,this),this.remove(),this},sl.prototype.attr=function(e,t){var n;if("string"!=typeof e){for(var r in e)this.attr(r,e[r]);return this}if(n=this.attributes){if(t===undefined)return n.map[e];if(null===t){if(e in n.map){delete n.map[e];for(var o=n.length;o--;)if(n[o].name===e)return n.splice(o,1),this}return this}if(e in n.map){for(o=n.length;o--;)if(n[o].name===e){n[o].value=t;break}}else n.push({name:e,value:t});return n.map[e]=t,this}},sl.prototype.clone=function(){var e,t=new sl(this.name,this.type);if(e=this.attributes){var n=[];n.map={};for(var r=0,o=e.length;r<o;r++){var i=e[r];"id"!==i.name&&(n[n.length]={name:i.name,value:i.value},n.map[i.name]=i.value)}t.attributes=n}return t.value=this.value,t.shortEnded=this.shortEnded,t},sl.prototype.wrap=function(e){return this.parent.insert(e,this),e.append(this),this},sl.prototype.unwrap=function(){for(var e=this.firstChild;e;){var t=e.next;this.insert(e,this,!0),e=t}this.remove()},sl.prototype.remove=function(){var e=this.parent,t=this.next,n=this.prev;return e&&(e.firstChild===this?(e.firstChild=t)&&(t.prev=null):n.next=t,e.lastChild===this?(e.lastChild=n)&&(n.next=null):t.prev=n,this.parent=this.next=this.prev=null),this},sl.prototype.append=function(e){e.parent&&e.remove();var t=this.lastChild;return t?((t.next=e).prev=t,this.lastChild=e):this.lastChild=this.firstChild=e,e.parent=this,e},sl.prototype.insert=function(e,t,n){e.parent&&e.remove();var r=t.parent||this;return n?(t===r.firstChild?r.firstChild=e:t.prev.next=e,e.prev=t.prev,(e.next=t).prev=e):(t===r.lastChild?r.lastChild=e:t.next.prev=e,e.next=t.next,(e.prev=t).next=e),e.parent=r,e},sl.prototype.getAll=function(e){for(var t=[],n=this.firstChild;n;n=rl(n,this))n.name===e&&t.push(n);return t},sl.prototype.empty=function(){if(this.firstChild){for(var e=[],t=this.firstChild;t;t=rl(t,this))e.push(t);for(var n=e.length;n--;)(t=e[n]).parent=t.firstChild=t.lastChild=t.next=t.prev=null}return this.firstChild=this.lastChild=null,this},sl.prototype.isEmpty=function(e,t,n){void 0===t&&(t={});var r=this.firstChild;if(r)do{if(1===r.type){if(r.attr("data-mce-bogus"))continue;if(e[r.name])return!1;for(var o=r.attributes.length;o--;){var i=r.attributes[o].name;if("name"===i||0===i.indexOf("data-mce-bookmark"))return!1}}if(8===r.type)return!1;if(3===r.type&&!il.test(r.value))return!1;if(3===r.type&&r.parent&&t[r.parent.name]&&il.test(r.value))return!1;if(n&&n(r))return!1}while(r=rl(r,this));return!0},sl.prototype.walk=function(e){return rl(this,null,e)},sl);function sl(e,t){this.name=e,1===(this.type=t)&&(this.attributes=[],this.attributes.map={})}function cl(e,t,n){var r,o,i,a,u=1;for(a=e.getShortEndedElements(),(i=/<([!?\/])?([A-Za-z0-9\-_\:\.]+)((?:\s+[^"\'>]+(?:(?:"[^"]*")|(?:\'[^\']*\')|[^>]*))*|\/|\s+)>/g).lastIndex=r=n;o=i.exec(t);){if(r=i.lastIndex,"/"===o[1])u--;else if(!o[1]){if(o[2]in a)continue;u++}if(0===u)break}return r}function ll(e,t){var n=e.exec(t);if(n){var r=n[1],o=n[2];return"string"==typeof r&&"data-mce-bogus"===r.toLowerCase()?o:null}return null}function fl(V,I){void 0===I&&(I=pr());function e(){}!1!==(V=V||{}).fix_self_closing&&(V.fix_self_closing=!0);var F=V.comment?V.comment:e,U=V.cdata?V.cdata:e,j=V.text?V.text:e,q=V.start?V.start:e,$=V.end?V.end:e,W=V.pi?V.pi:e,K=V.doctype?V.doctype:e;return{parse:function(e){function t(e){var t,n;for(t=_.length;t--&&_[t].name!==e;);if(0<=t){for(n=_.length-1;t<=n;n--)(e=_[n]).valid&&$(e.name);_.length=t}}function n(e,t,n,r,o){var i,a;if(n=(t=t.toLowerCase())in h?t:O(n||r||o||""),g&&!l&&!1===function(e){return 0===e.indexOf("data-")||0===e.indexOf("aria-")}(t)){if(!(i=C[t])&&w){for(a=w.length;a--&&!(i=w[a]).pattern.test(t););-1===a&&(i=null)}if(!i)return;if(i.validValues&&!(n in i.validValues))return}if(H[t]&&!V.allow_script_urls){var u=n.replace(/[\s\u0000-\u001F]+/g,"");try{u=decodeURIComponent(u)}catch(s){u=unescape(u)}if(P.test(u))return;if(function(e,t){return!e.allow_html_data_urls&&(/^data:image\//i.test(t)?!1===e.allow_svg_data_urls&&/^data:image\/svg\+xml/i.test(t):/^data:/i.test(t))}(V,u))return}l&&(t in H||0===t.indexOf("on"))||(c.map[t]=n,c.push({name:t,value:n}))}var r,o,i,c,a,u,s,l,f,d,h,m,g,p,v,y,b,C,w,x,z,E,N,S,k,T,A,M,R,D=0,_=[],B=0,O=ir.decode,H=Mn.makeMap("src,href,data,background,formaction,poster,xlink:href"),P=/((java|vb)script|mhtml):/i;for(k=new RegExp("<(?:(?:!--([\\w\\W]*?)--!?>)|(?:!\\[CDATA\\[([\\w\\W]*?)\\]\\]>)|(?:!DOCTYPE([\\w\\W]*?)>)|(?:\\?([^\\s\\/<>]+) ?([\\w\\W]*?)[?/]>)|(?:\\/([A-Za-z][A-Za-z0-9\\-_\\:\\.]*)>)|(?:([A-Za-z][A-Za-z0-9\\-_\\:\\.]*)((?:\\s+[^\"'>]+(?:(?:\"[^\"]*\")|(?:'[^']*')|[^>]*))*|\\/|\\s+)>))","g"),T=/([\w:\-]+)(?:\s*=\s*(?:(?:\"((?:[^\"])*)\")|(?:\'((?:[^\'])*)\')|([^>\s]+)))?/g,d=I.getShortEndedElements(),S=V.self_closing_elements||I.getSelfClosingElements(),h=I.getBoolAttrs(),g=V.validate,f=V.remove_internals,R=V.fix_self_closing,A=I.getSpecialElements(),N=e+">";r=k.exec(N);){if(D<r.index&&j(O(e.substr(D,r.index-D))),o=r[6])":"===(o=o.toLowerCase()).charAt(0)&&(o=o.substr(1)),t(o);else if(o=r[7]){if(r.index+r[0].length>e.length){j(O(e.substr(r.index))),D=r.index+r[0].length;continue}":"===(o=o.toLowerCase()).charAt(0)&&(o=o.substr(1)),m=o in d,R&&S[o]&&0<_.length&&_[_.length-1].name===o&&t(o);var L=ll(T,r[8]);if(null!==L){if("all"===L){D=cl(I,e,k.lastIndex),k.lastIndex=D;continue}v=!1}if(!g||(p=I.getElementRule(o))){if(v=!0,g&&(C=p.attributes,w=p.attributePatterns),(b=r[8])?((l=-1!==b.indexOf("data-mce-type"))&&f&&(v=!1),(c=[]).map={},b.replace(T,n)):(c=[]).map={},g&&!l){if(x=p.attributesRequired,z=p.attributesDefault,E=p.attributesForced,p.removeEmptyAttrs&&!c.length&&(v=!1),E)for(a=E.length;a--;)s=(y=E[a]).name,"{$uid}"===(M=y.value)&&(M="mce_"+B++),c.map[s]=M,c.push({name:s,value:M});if(z)for(a=z.length;a--;)(s=(y=z[a]).name)in c.map||("{$uid}"===(M=y.value)&&(M="mce_"+B++),c.map[s]=M,c.push({name:s,value:M}));if(x){for(a=x.length;a--&&!(x[a]in c.map););-1===a&&(v=!1)}if(y=c.map["data-mce-bogus"]){if("all"===y){D=cl(I,e,k.lastIndex),k.lastIndex=D;continue}v=!1}}v&&q(o,c,m)}else v=!1;if(i=A[o]){i.lastIndex=D=r.index+r[0].length,D=(r=i.exec(e))?(v&&(u=e.substr(D,r.index-D)),r.index+r[0].length):(u=e.substr(D),e.length),v&&(0<u.length&&j(u,!0),$(o)),k.lastIndex=D;continue}m||(b&&b.indexOf("/")===b.length-1?v&&$(o):_.push({name:o,valid:v}))}else(o=r[1])?(">"===o.charAt(0)&&(o=" "+o),V.allow_conditional_comments||"[if"!==o.substr(0,3).toLowerCase()||(o=" "+o),F(o)):(o=r[2])?U(o.replace(/<!--|-->/g,"")):(o=r[3])?K(o):(o=r[4])&&W(o,r[5]);D=r.index+r[0].length}for(D<e.length&&j(O(e.substr(D))),a=_.length-1;0<=a;a--)(o=_[a]).valid&&$(o.name)}}}(fl=fl||{}).findEndTag=cl;function dl(e,t){var n,r,o,i,a,u=t,s=/<(\w+) [^>]*data-mce-bogus="all"[^>]*>/g,c=e.schema;for(u=function(e,t){var n=new RegExp(["\\s?("+e.join("|")+')="[^"]+"'].join("|"),"gi");return t.replace(n,"")}(e.getTempAttrs(),u),a=c.getShortEndedElements();i=s.exec(u);)r=s.lastIndex,o=i[0].length,n=a[i[1]]?r:of.findEndTag(c,u,r),u=u.substring(0,r-o)+u.substring(n),s.lastIndex=r-o;return lu(u)}function hl(e,t,n){var r=e.getParam(t,n);if(-1===r.indexOf("="))return r;var o=e.getParam(t,"","hash");return o.hasOwnProperty(e.id)?o[e.id]:n}function ml(e,t,n){var r;if(t.format=t.format?t.format:"html",t.get=!0,t.getInner=!0,t.no_events||e.fire("BeforeGetContent",t),"raw"===t.format)r=Mn.trim(af.trimExternal(e.serializer,n.innerHTML));else if("text"===t.format)r=lu(n.innerText||n.textContent);else{if("tree"===t.format)return e.serializer.serialize(n,t);r=function(e,t){var n=mf(e),r=new RegExp("^(<"+n+"[^>]*>(&nbsp;|&#160;|\\s|\xa0|<br \\/>|)<\\/"+n+">[\r\n]*|<br \\/>[\r\n]*)$");return t.replace(r,"")}(e,e.serializer.serialize(n,t))}return"text"===t.format||Wn(yt.fromDom(n))?t.content=r:t.content=Mn.trim(r),t.no_events||e.fire("GetContent",t),t.content}function gl(e){var u,s,c,l,f,d=[];return u=(e=e||{}).indent,s=Ff(e.indent_before||""),c=Ff(e.indent_after||""),l=ir.getEncodeFunc(e.entity_encoding||"raw",e.entities),f="html"===e.element_format,{start:function(e,t,n){var r,o,i,a;if(u&&s[e]&&0<d.length&&0<(a=d[d.length-1]).length&&"\n"!==a&&d.push("\n"),d.push("<",e),t)for(r=0,o=t.length;r<o;r++)i=t[r],d.push(" ",i.name,'="',l(i.value,!0),'"');d[d.length]=!n||f?">":" />",n&&u&&c[e]&&0<d.length&&0<(a=d[d.length-1]).length&&"\n"!==a&&d.push("\n")},end:function(e){var t;d.push("</",e,">"),u&&c[e]&&0<d.length&&0<(t=d[d.length-1]).length&&"\n"!==t&&d.push("\n")},text:function(e,t){0<e.length&&(d[d.length]=t?e:l(e))},cdata:function(e){d.push("<![CDATA[",e,"]]>")},comment:function(e){d.push("\x3c!--",e,"--\x3e")},pi:function(e,t){t?d.push("<?",e," ",l(t),"?>"):d.push("<?",e,"?>"),u&&d.push("\n")},doctype:function(e){d.push("<!DOCTYPE",e,">",u?"\n":"")},reset:function(){d.length=0},getContent:function(){return d.join("").replace(/\n$/,"")}}}function pl(t,m){void 0===m&&(m=pr());var g=gl(t);return(t=t||{}).validate=!("validate"in t)||t.validate,{serialize:function(e){var f,d;d=t.validate,f={3:function(e){g.text(e.value,e.raw)},8:function(e){g.comment(e.value)},7:function(e){g.pi(e.name,e.value)},10:function(e){g.doctype(e.value)},4:function(e){g.cdata(e.value)},11:function(e){if(e=e.firstChild)for(;h(e),e=e.next;);}},g.reset();var h=function(e){var t,n,r,o,i,a,u,s,c,l=f[e.type];if(l)l(e);else{if(t=e.name,n=e.shortEnded,r=e.attributes,d&&r&&1<r.length&&((a=[]).map={},c=m.getElementRule(e.name))){for(u=0,s=c.attributesOrder.length;u<s;u++)(o=c.attributesOrder[u])in r.map&&(i=r.map[o],a.map[o]=i,a.push({name:o,value:i}));for(u=0,s=r.length;u<s;u++)(o=r[u].name)in a.map||(i=r.map[o],a.map[o]=i,a.push({name:o,value:i}));r=a}if(g.start(e.name,r,n),!n){if(e=e.firstChild)for(;h(e),e=e.next;);g.end(t)}}};return 1!==e.type||t.inner?f[11](e):h(e),g.getContent()}}}function vl(e,t,n){var r=function(e,n,t){var r={},o={},i=[];for(var a in t.firstChild&&Uf(t.firstChild,function(t){z(e,function(e){e.name===t.name&&(r[e.name]?r[e.name].nodes.push(t):r[e.name]={filter:e,nodes:[t]})}),z(n,function(e){"string"==typeof t.attr(e.name)&&(o[e.name]?o[e.name].nodes.push(t):o[e.name]={filter:e,nodes:[t]})})}),r)r.hasOwnProperty(a)&&i.push(r[a]);for(var a in o)o.hasOwnProperty(a)&&i.push(o[a]);return i}(e,t,n);z(r,function(t){z(t.filter.callbacks,function(e){e(t.nodes,t.filter.name,{})})})}function yl(e){var t=Ee(e).dom();return e.dom()===t.activeElement}function bl(e){var t=e!==undefined?e.dom():j.document;return k.from(t.activeElement).map(yt.fromDom)}function Cl(e,t){var n=zt(t)?Jc(t).length:Re(t).length+1;return n<e?n:e<0?0:e}function wl(e){return Xf.range(e.start(),Cl(e.soffset(),e.start()),e.finish(),Cl(e.foffset(),e.finish()))}function xl(e,t){return!Ge.isRestrictedNode(t.dom())&&(Bt(e,t)||ze(e,t))}function zl(t){return function(e){return xl(t,e.start())&&xl(t,e.finish())}}function El(e){return!0===e.inline||Yf.isIE()}function Nl(e){return Xf.range(yt.fromDom(e.startContainer),e.startOffset,yt.fromDom(e.endContainer),e.endOffset)}function Sl(e){var t=e.getSelection();return(t&&0!==t.rangeCount?k.from(t.getRangeAt(0)):k.none()).map(Nl)}function kl(e){var t=Ne(e);return Sl(t.dom()).filter(zl(e))}function Tl(e,t){return k.from(t).filter(zl(e)).map(wl)}function Al(e){var t=j.document.createRange();try{return t.setStart(e.start().dom(),e.soffset()),t.setEnd(e.finish().dom(),e.foffset()),k.some(t)}catch(n){return k.none()}}function Ml(t){return(t.bookmark?t.bookmark:k.none()).bind(function(e){return Tl(yt.fromDom(t.getBody()),e)}).bind(Al)}function Rl(t,e){oe().browser.isIE()?function(e){e.on("focusout",function(){Gf(e)})}(t):function(e,t){e.on("mouseup touchend",function(e){t.throttle()})}(t,e),t.on("keyup NodeChange",function(e){!function(e){return"nodechange"===e.type&&e.selectionChange}(e)&&Gf(t)})}function Dl(e){return Zf.isEditorUIElement(e)}function _l(t,e){var n=t?t.settings.custom_ui_selector:"";return null!==td.getParent(e,function(e){return Dl(e)||!!n&&t.dom.is(e,n)})}function Bl(r,e){var t=e.editor;ed(t),t.on("focusin",function(){var e=r.focusedEditor;e!==this&&(e&&e.fire("blur",{focusedEditor:this}),r.setActive(this),(r.focusedEditor=this).fire("focus",{blurredEditor:e}),this.focus(!0))}),t.on("focusout",function(){var t=this;pn.setEditorTimeout(t,function(){var e=r.focusedEditor;_l(t,function(){try{return j.document.activeElement}catch(e){return j.document.body}}())||e!==t||(t.fire("blur",{focusedEditor:null}),r.focusedEditor=null)})}),rf||(rf=function(e){var t,n=r.activeEditor;t=e.target,n&&t.ownerDocument===j.document&&(t===j.document.body||_l(n,t)||r.focusedEditor!==n||(n.fire("blur",{focusedEditor:null}),r.focusedEditor=null))},td.bind(j.document,"focusin",rf))}function Ol(e,t){e.focusedEditor===t.editor&&(e.focusedEditor=null),e.activeEditor||(td.unbind(j.document,"focusin",rf),rf=null)}function Hl(t,e){return function(e){return e.collapsed?k.from(Ka(e.startContainer,e.startOffset)).map(yt.fromDom):k.none()}(e).bind(function(e){return qn(e)?k.some(e):!1===Bt(t,e)?k.some(t):k.none()})}function Pl(t,e){Hl(yt.fromDom(t.getBody()),e).bind(function(e){return Pc.firstPositionIn(e.dom())}).fold(function(){t.selection.normalize()},function(e){return t.selection.setRng(e.toRange())})}function Ll(e){if(e.setActive)try{e.setActive()}catch(t){e.focus()}else e.focus()}function Vl(e){return yl(e)||function(t){return bl(Ee(t)).filter(function(e){return t.dom().contains(e.dom())})}(e).isSome()}function Il(e){return e.inline?function(e){var t=e.getBody();return t&&Vl(yt.fromDom(t))}(e):function(e){return e.iframeElement&&yl(yt.fromDom(e.iframeElement))}(e)}function Fl(e){return e instanceof ul}function Ul(e,t){e.dom.setHTML(e.getBody(),t),function(r){ud(r)&&Pc.firstPositionIn(r.getBody()).each(function(e){var t=e.getNode(),n=Ge.isTable(t)?Pc.firstPositionIn(t).getOr(e):e;r.selection.setRng(n.toRange())})}(e)}function jl(t,n,r){return void 0===r&&(r={}),r.format=r.format?r.format:"html",r.set=!0,r.content=Fl(n)?"":n,Fl(n)||r.no_events||(t.fire("BeforeSetContent",r),n=r.content),k.from(t.getBody()).fold($(n),function(e){return Fl(n)?function(e,t,n,r){vl(e.parser.getNodeFilters(),e.parser.getAttributeFilters(),n);var o=pl({validate:e.validate},e.schema).serialize(n);return r.content=Wn(yt.fromDom(t))?o:Mn.trim(o),Ul(e,r.content),r.no_events||e.fire("SetContent",r),n}(t,e,n,r):function(e,t,n,r){var o,i;return 0===n.length||/^\s+$/.test(n)?(i='<br data-mce-bogus="1">',"TABLE"===t.nodeName?n="<tr><td>"+i+"</td></tr>":/^(UL|OL)$/.test(t.nodeName)&&(n="<li>"+i+"</li>"),n=(o=mf(e))&&e.schema.isValidChild(t.nodeName.toLowerCase(),o.toLowerCase())?(n=i,e.dom.createHTML(o,e.settings.forced_root_block_attrs,n)):n||'<br data-mce-bogus="1">',Ul(e,n),e.fire("SetContent",r)):("raw"!==r.format&&(n=pl({validate:e.validate},e.schema).serialize(e.parser.parse(n,{isRootContent:!0,insert:!0}))),r.content=Wn(yt.fromDom(t))?n:Mn.trim(n),Ul(e,r.content),r.no_events||e.fire("SetContent",r)),r.content}(t,e,n,r)})}function ql(e){return k.from(e).each(function(e){return e.destroy()})}function $l(e){if(!e.removed){var t=e._selectionOverrides,n=e.editorUpload,r=e.getBody(),o=e.getElement();r&&e.save({is_removing:!0}),e.removed=!0,e.unbindAllNativeEvents(),e.hasHiddenInput&&o&&pd.remove(o.nextSibling),fd(e),e.editorManager.remove(e),!e.inline&&r&&function(e){pd.setStyle(e.id,"display",e.orgDisplay)}(e),dd(e),pd.remove(e.getContainer()),ql(t),ql(n),e.destroy()}}function Wl(e,t){var n=e.selection,r=e.dom;e.destroyed||(t||e.removed?(t||(e.editorManager.off("beforeunload",e._beforeUnload),e.theme&&e.theme.destroy&&e.theme.destroy(),ql(n),ql(r)),function(e){var t=e.formElement;t&&(t._mceOldSubmit&&(t.submit=t._mceOldSubmit,t._mceOldSubmit=null),pd.unbind(t,"submit reset",e.formEventDelegate))}(e),function(e){e.contentAreaContainer=e.formElement=e.container=e.editorContainer=null,e.bodyElement=e.contentDocument=e.contentWindow=null,e.iframeElement=e.targetElm=null,e.selection&&(e.selection=e.selection.win=e.selection.dom=e.selection.dom.doc=null)}(e),e.destroyed=!0):e.remove())}function Kl(a){return function(){for(var e=new Array(arguments.length),t=0;t<e.length;t++)e[t]=arguments[t];if(0===e.length)throw new Error("Can't merge zero objects");for(var n={},r=0;r<e.length;r++){var o=e[r];for(var i in o)vd.call(o,i)&&(n[i]=a(n[i],o[i]))}return n}}function Xl(e){var t=A(e)?e.join(" "):e,n=X(K(t)?t.split(" "):[],te);return y(n,function(e){return 0<e.length})}function Yl(e,t){return e.sections().hasOwnProperty(t)}function Gl(e,t,n,r){var o=Xl(n.forced_plugins),i=Xl(r.plugins),a=function(e,t){return Yl(e,t)?e.sections()[t]:{}}(t,"mobile"),u=a.plugins?Xl(a.plugins):i,s=function(e,t){return[].concat(Xl(e)).concat(Xl(t))}(o,e&&function(e,t,n){var r=e.sections();return Yl(e,t)&&r[t].theme===n}(t,"mobile","mobile")?function(e){return y(e,d(h,Nd))}(u):e&&Yl(t,"mobile")?u:i);return Mn.extend(r,{plugins:s.join(" ")})}function Jl(e,t,n,r,o){var i=e?{mobile:function(e){return G(G(G({},Sd),{resize:!1,toolbar_drawer:"scrolling",toolbar_sticky:!1}),e?{menubar:!1}:{})}(t)}:{},a=function(n,e){var t=ce(e,function(e,t){return h(n,t)});return Cd(t.t,t.f)}(["mobile"],yd(i,o)),u=Mn.extend(n,r,a.settings(),function(e,t){return e&&Yl(t,"mobile")}(e,a)?function(e,t,n){void 0===n&&(n={});var r=e.sections(),o=r.hasOwnProperty(t)?r[t]:{};return Mn.extend({},n,o)}(a,"mobile"):{},{validate:!0,external_plugins:function(e,t){var n=t.external_plugins?t.external_plugins:{};return e&&e.external_plugins?Mn.extend({},e.external_plugins,n):n}(r,a.settings())});return Gl(e,a,r,u)}function Ql(e,t,n,r,o){var i=function(e,t,n,r){var o={id:e,theme:"silver",toolbar_drawer:"floating",plugins:"",document_base_url:t,add_form_submit_trigger:!0,submit_patch:!0,add_unload_trigger:!0,convert_urls:!0,relative_urls:!0,remove_script_host:!0,object_resizing:!0,doctype:"<!DOCTYPE html>",visual:!0,font_size_legacy_values:"xx-small,small,medium,large,x-large,xx-large,300%",forced_root_block:"p",hidden_input:!0,inline_styles:!0,convert_fonts_to_spans:!0,indent:!0,indent_before:"p,h1,h2,h3,h4,h5,h6,blockquote,div,title,style,pre,script,td,th,ul,ol,li,dl,dt,dd,area,table,thead,tfoot,tbody,tr,section,summary,article,hgroup,aside,figure,figcaption,option,optgroup,datalist",indent_after:"p,h1,h2,h3,h4,h5,h6,blockquote,div,title,style,pre,script,td,th,ul,ol,li,dl,dt,dd,area,table,thead,tfoot,tbody,tr,section,summary,article,hgroup,aside,figure,figcaption,option,optgroup,datalist",entity_encoding:"named",url_converter:r.convertURL,url_converter_scope:r};return G(G({},o),n?Sd:{})}(t,n,xd,e);return Jl(zd||Ed,zd,i,r,o)}function Zl(e,t,n){return k.from(t.settings[n]).filter(e)}function ef(e,t,n,r){var o=t in e.settings?e.settings[t]:n;return"hash"===r?function(e){var n={};return"string"==typeof e?z(0<e.indexOf("=")?e.split(/[;,](?![^=;,]*(?:[;,]|$))/):e.split(","),function(e){var t=e.split("=");1<t.length?n[Mn.trim(t[0])]=Mn.trim(t[1]):n[Mn.trim(t[0])]=Mn.trim(t[0])}):n=e,n}(o):"string"===r?Zl(K,e,t).getOr(n):"number"===r?Zl(_,e,t).getOr(n):"boolean"===r?Zl(R,e,t).getOr(n):"object"===r?Zl(T,e,t).getOr(n):"array"===r?Zl(A,e,t).getOr(n):"string[]"===r?Zl(function(t){return function(e){return A(e)&&w(e,t)}}(K),e,t).getOr(n):"function"===r?Zl(D,e,t).getOr(n):o}function tf(e,t){return t.dom()[e]}function nf(e,t){return parseInt(ve(t,e),10)}var rf,of=fl,af={trimExternal:dl,trimInternal:dl},uf=function(e){return e.getParam("iframe_attrs",{})},sf=function(e){return e.getParam("doctype","<!DOCTYPE html>")},cf=function(e){return e.getParam("document_base_url","")},lf=function(e){return hl(e,"body_id","tinymce")},ff=function(e){return hl(e,"body_class","")},df=function(e){return e.getParam("content_security_policy","")},hf=function(e){return e.getParam("br_in_pre",!0)},mf=function(e){if(e.getParam("force_p_newlines",!1))return"p";var t=e.getParam("forced_root_block","p");return!1===t?"":!0===t?"p":t},gf=function(e){return e.getParam("forced_root_block_attrs",{})},pf=function(e){return e.getParam("br_newline_selector",".mce-toc h2,figcaption,caption")},vf=function(e){return e.getParam("no_newline_selector","")},yf=function(e){return e.getParam("keep_styles",!0)},bf=function(e){return e.getParam("end_container_on_empty_block",!1)},Cf=function(e){return Mn.explode(e.getParam("font_size_style_values","xx-small,x-small,small,medium,large,x-large,xx-large"))},wf=function(e){return Mn.explode(e.getParam("font_size_classes",""))},xf=function(e){return e.getParam("icons","","string")},zf=function(e){return e.getParam("icons_url","","string")},Ef=function(e){return e.getParam("images_dataimg_filter",$(!0),"function")},Nf=function(e){return e.getParam("automatic_uploads",!0,"boolean")},Sf=function(e){return e.getParam("images_reuse_filename",!1,"boolean")},kf=function(e){return e.getParam("images_replace_blob_uris",!0,"boolean")},Tf=function(e){return e.getParam("images_upload_url","","string")},Af=function(e){return e.getParam("images_upload_base_path","","string")},Mf=function(e){return e.getParam("images_upload_credentials",!1,"boolean")},Rf=function(e){return e.getParam("images_upload_handler",null,"function")},Df=function(e){return e.getParam("content_css_cors",!1,"boolean")},_f=function(e){return e.getParam("referrer_policy","","string")},Bf=function(e){return e.getParam("language","en","string")},Of=function(e){return e.getParam("language_url","","string")},Hf=function(e){return e.getParam("indent_use_margin",!1)},Pf=function(e){return e.getParam("indentation","40px","string")},Lf=function(e){var t=e.settings.content_css;return K(t)?X(t.split(","),te):A(t)?t:!1===t||e.inline?[]:["default"]},Vf=function(e){return e.getParam("directionality",ra.isRtl()?"rtl":undefined)},If=function(e){return e.getParam("inline_boundaries_selector","a[href],code,.mce-annotation","string")},Ff=Mn.makeMap,Uf=function(e,t){t(e),e.firstChild&&Uf(e.firstChild,t),e.next&&Uf(e.next,t)},jf=function(a){if(!A(a))throw new Error("cases must be an array");if(0===a.length)throw new Error("there must be at least one case");var u=[],n={};return z(a,function(e,r){var t=Et(e);if(1!==t.length)throw new Error("one and only one name per case");var o=t[0],i=e[o];if(n[o]!==undefined)throw new Error("duplicate key detected:"+o);if("cata"===o)throw new Error("cannot have a case named cata (sorry)");if(!A(i))throw new Error("case arguments must be an array");u.push(o),n[o]=function(){var e=arguments.length;if(e!==i.length)throw new Error("Wrong number of arguments to case "+o+". Expected "+i.length+" ("+i+"), got "+e);for(var n=new Array(e),t=0;t<n.length;t++)n[t]=arguments[t];return{fold:function(){if(arguments.length!==a.length)throw new Error("Wrong number of arguments to fold. Expected "+a.length+", got "+arguments.length);return arguments[r].apply(null,n)},match:function(e){var t=Et(e);if(u.length!==t.length)throw new Error("Wrong number of arguments to match. Expected: "+u.join(",")+"\nActual: "+t.join(","));if(!w(u,function(e){return h(t,e)}))throw new Error("Not all branches were specified when using match. Specified: "+t.join(", ")+"\nRequired: "+u.join(", "));return e[o].apply(null,n)},log:function(e){j.console.log(e,{constructors:u,constructor:o,params:n})}}}}),n},qf={create:be("start","soffset","finish","foffset")},$f=jf([{before:["element"]},{on:["element","offset"]},{after:["element"]}]),Wf=($f.before,$f.on,$f.after,function(e){return e.fold(W,W,W)}),Kf=jf([{domRange:["rng"]},{relative:["startSitu","finishSitu"]},{exact:["start","soffset","finish","foffset"]}]),Xf={domRange:Kf.domRange,relative:Kf.relative,exact:Kf.exact,exactFromRange:function(e){return Kf.exact(e.start(),e.soffset(),e.finish(),e.foffset())},getWin:function(e){var t=function(e){return e.match({domRange:function(e){return yt.fromDom(e.startContainer)},relative:function(e,t){return Wf(e)},exact:function(e,t,n,r){return e}})}(e);return Ne(t)},range:qf.create},Yf=oe().browser,Gf=function(e){var t=El(e)?kl(yt.fromDom(e.getBody())):k.none();e.bookmark=t.isSome()?t:e.bookmark},Jf=function(t){Ml(t).each(function(e){t.selection.setRng(e)})},Qf=Ml,Zf={isEditorUIElement:function(e){var t=e.className.toString();return-1!==t.indexOf("tox-")||-1!==t.indexOf("mce-")}},ed=function(e){var t=aa(function(){Gf(e)},0);e.on("init",function(){e.inline&&function(e,t){function n(){t.throttle()}Xi.DOM.bind(j.document,"mouseup",n),e.on("remove",function(){Xi.DOM.unbind(j.document,"mouseup",n)})}(e,t),Rl(e,t)}),e.on("remove",function(){t.cancel()})},td=Xi.DOM,nd=function(e){e.on("AddEditor",d(Bl,e)),e.on("RemoveEditor",d(Ol,e))},rd=function(e){var t=e.classList;return t!==undefined&&(t.contains("tox-edit-area")||t.contains("tox-edit-area__iframe")||t.contains("mce-content-body"))},od=_l,id=function(e){return e.editorManager.setActive(e)},ad=function(e,t){e.removed||(t?id(e):function(t){var e=t.selection,n=t.getBody(),r=e.getRng();t.quirks.refreshContentEditable(),t.bookmark!==undefined&&!1===Il(t)&&Qf(t).each(function(e){t.selection.setRng(e),r=e});var o=function(t,e){return t.dom.getParent(e,function(e){return"true"===t.dom.getContentEditable(e)})}(t,e.getNode());if(t.$.contains(n,o))return Ll(o),Pl(t,r),id(t);t.inline||(Nn.opera||Ll(n),t.getWin().focus()),(Nn.gecko||t.inline)&&(Ll(n),Pl(t,r)),id(t)}(e))},ud=Il,sd=function(e){return Il(e)||function(t){return bl().filter(function(e){return!rd(e.dom())&&od(t,e.dom())}).isSome()}(e)},cd=function(e,t){return e.fire("PreProcess",t)},ld=function(e,t){return e.fire("PostProcess",t)},fd=function(e){return e.fire("remove")},dd=function(e){return e.fire("detach")},hd=function(e,t){return e.fire("SwitchMode",{mode:t})},md=function(e,t,n,r){e.fire("ObjectResizeStart",{target:t,width:n,height:r})},gd=function(e,t,n,r){e.fire("ObjectResized",{target:t,width:n,height:r})},pd=Xi.DOM,vd=Object.prototype.hasOwnProperty,yd=Kl(function(e,t){return T(e)&&T(t)?yd(e,t):t}),bd=Kl(function(e,t){return t}),Cd=be("sections","settings"),wd=oe().deviceType,xd=wd.isTouch(),zd=wd.isPhone(),Ed=wd.isTablet(),Nd=["lists","autolink","autosave"],Sd={table_grid:!1,object_resizing:!1,resize:!1},kd=d(tf,"clientWidth"),Td=d(tf,"clientHeight"),Ad=d(nf,"margin-top"),Md=d(nf,"margin-left"),Rd=function(e,t,n){var r=yt.fromDom(e.getBody()),o=e.inline?r:function(e){return yt.fromDom(e.dom().ownerDocument.documentElement)}(r),i=function(e,t,n,r){var o=function(e){return e.dom().getBoundingClientRect()}(t);return{x:n-(e?o.left+t.dom().clientLeft+Md(t):0),y:r-(e?o.top+t.dom().clientTop+Ad(t):0)}}(e.inline,o,t,n);return function(e,t,n){var r=kd(e),o=Td(e);return 0<=t&&0<=n&&t<=r&&n<=o}(o,i.x,i.y)},Dd=function(e){return function(e){return k.from(e).map(yt.fromDom)}(e.inline?e.getBody():e.getContentAreaContainer()).map(function(e){return Bt(Ee(e),e)}).getOr(!1)};function _d(n){function r(){var e=n.theme;return e&&e.getNotificationManagerImpl?e.getNotificationManagerImpl():function t(){function e(){throw new Error("Theme did not provide a NotificationManager implementation.")}return{open:e,close:e,reposition:e,getArgs:e}}()}function o(){0<u.length&&r().reposition(u)}function i(t){p(u,function(e){return e===t}).each(function(e){u.splice(e,1)})}function t(t){if(!n.removed&&Dd(n))return g(u,function(e){return function(e,t){return!(e.type!==t.type||e.text!==t.text||e.progressBar||e.timeout||t.progressBar||t.timeout)}(r().getArgs(e),t)}).getOrThunk(function(){n.editorManager.setActive(n);var e=r().open(t,function(){i(e),o()});return function(e){u.push(e)}(e),o(),e})}var a,u=[];return(a=n).on("SkinLoaded",function(){var e=a.settings.service_message;e&&t({text:e,type:"warning",timeout:0})}),a.on("ResizeEditor ResizeWindow NodeChange",function(){pn.requestAnimationFrame(o)}),a.on("remove",function(){z(u.slice(),function(e){r().close(e)})}),{open:t,close:function(){k.from(u[0]).each(function(e){r().close(e),i(e),o()})},getNotifications:function(){return u}}}function Bd(n){function r(){var e=n.theme;return e&&e.getWindowManagerImpl?e.getWindowManagerImpl():function t(){function e(){throw new Error("Theme did not provide a WindowManager implementation.")}return{open:e,openUrl:e,alert:e,confirm:e,close:e,getParams:e,setParams:e}}()}function o(e,t){return function(){return t?t.apply(e,arguments):undefined}}function i(e){s.push(e),function(e){n.fire("OpenWindow",{dialog:e})}(e)}function a(t){!function(e){n.fire("CloseWindow",{dialog:e})}(t),0===(s=y(s,function(e){return e!==t})).length&&n.focus()}function u(e){n.editorManager.setActive(n),Gf(n);var t=e();return i(t),t}var s=[];return n.on("remove",function(){z(s,function(e){r().close(e)})}),{open:function(e,t){return u(function(){return r().open(e,t,a)})},openUrl:function(e){return u(function(){return r().openUrl(e,a)})},alert:function(e,t,n){r().alert(e,o(n||this,t))},confirm:function(e,t,n){r().confirm(e,o(n||this,t))},close:function(){k.from(s[s.length-1]).each(function(e){r().close(e),a(e)})}}}function Od(e,t){e.notificationManager.open({type:"error",text:t})}function Hd(e,t){e._skinLoaded?Od(e,t):e.on("SkinLoaded",function(){Od(e,t)})}function Pd(e){j.console.error(e)}function Ld(e,t,n){return n?"Failed to load "+e+": "+n+" from url "+t:"Failed to load "+e+" url: "+t}var Vd,Id=function(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n];var r=j.window.console;r&&(r.error?r.error.apply(r,arguments):r.log.apply(r,arguments))},Fd={pluginLoadError:function(e,t){Pd(Ld("plugin",e,t))},iconsLoadError:function(e,t){Pd(Ld("icons",e,t))},languageLoadError:function(e,t){Pd(Ld("language",e,t))},pluginInitError:function(e,t,n){var r=ra.translate(["Failed to initialize plugin: {0}",t]);Id(r,n),Hd(e,r)},uploadError:function(e,t){Hd(e,ra.translate(["Failed to upload image: {0}",t]))},displayError:Hd,initError:Id},Ud=(Vd={},{add:function(e,t){Vd[e]=t},get:function(e){return Vd[e]?Vd[e]:{icons:{}}},has:function(e){return kt(Vd,e)}}),jd=ga.PluginManager,qd=ga.ThemeManager;function $d(s,a){function n(e,t,n,r){var o,i;(o=new j.XMLHttpRequest).open("POST",a.url),o.withCredentials=a.credentials,o.upload.onprogress=function(e){r(e.loaded/e.total*100)},o.onerror=function(){n("Image upload failed due to a XHR Transport error. Code: "+o.status)},o.onload=function(){var e;o.status<200||300<=o.status?n("HTTP Error: "+o.status):(e=JSON.parse(o.responseText))&&"string"==typeof e.location?t(function(e,t){return e?e.replace(/\/$/,"")+"/"+t.replace(/^\//,""):t}(a.basePath,e.location)):n("Invalid JSON: "+o.responseText)},(i=new j.FormData).append("file",e.blob(),e.filename()),o.send(i)}function c(e,t){return{url:t,blobInfo:e,status:!0}}function l(e,t){return{url:"",blobInfo:e,status:!1,error:t}}function f(e,t){Mn.each(o[e],function(e){e(t)}),delete o[e]}function r(e,t){return e=Mn.grep(e,function(e){return!s.isUploaded(e.blobUri())}),Zt.all(Mn.map(e,function(e){return s.isPending(e.blobUri())?function(e){var t=e.blobUri();return new Zt(function(e){o[t]=o[t]||[],o[t].push(e)})}(e):function(i,a,u){return s.markPending(i.blobUri()),new Zt(function(t){function e(){}var n;try{var r=function(){n&&(n.close(),e)};a(i,function(e){r(),s.markUploaded(i.blobUri(),e),f(i.blobUri(),c(i,e)),t(c(i,e))},function(e){r(),s.removeFailed(i.blobUri()),f(i.blobUri(),l(i,e)),t(l(i,e))},function(e){e<0||100<e||(n=n||u()).progressBar.value(e)})}catch(o){t(l(i,o.message))}})}(e,a.handler,t)}))}var o={};return!1===D(a.handler)&&(a.handler=n),{upload:function(e,t){return!a.url&&function(e){return e===n}(a.handler)?new Zt(function(e){e([])}):r(e,t)}}}function Wd(e){var t,n,r=decodeURIComponent(e).split(",");return(n=/data:([^;]+)/.exec(r[0]))&&(t=n[1]),{type:t,data:r[1]}}function Kd(e){return(e||"blobid")+Jd++}var Xd=function(e){return 0===e.indexOf("blob:")?function(i){return new Zt(function(e,t){function n(){t("Cannot convert "+i+" to Blob. Resource might not exist or is inaccessible.")}try{var r=new j.XMLHttpRequest;r.open("GET",i,!0),r.responseType="blob",r.onload=function(){200===this.status?e(this.response):n()},r.onerror=n,r.send()}catch(o){n()}})}(e):0===e.indexOf("data:")?function(i){return new Zt(function(e){var t,n,r,o=Wd(i);try{t=j.atob(o.data)}catch(yN){return void e(new j.Blob([]))}for(n=new Uint8Array(t.length),r=0;r<n.length;r++)n[r]=t.charCodeAt(r);e(new j.Blob([n],{type:o.type}))})}(e):null},Yd=function(n){return new Zt(function(e){var t=new j.FileReader;t.onloadend=function(){e(t.result)},t.readAsDataURL(n)})},Gd=Wd,Jd=0;function Qd(o,i){var a={};return{findAll:function(e,n){var t;n=n||$(!0),t=y(function(e){return e?P(e.getElementsByTagName("img")):[]}(e),function(e){var t=e.src;return!!Nn.fileApi&&(!e.hasAttribute("data-mce-bogus")&&(!e.hasAttribute("data-mce-placeholder")&&(!(!t||t===Nn.transparentSrc)&&(0===t.indexOf("blob:")?!o.isUploaded(t)&&n(e):0===t.indexOf("data:")&&n(e)))))});var r=X(t,function(n){if(a[n.src])return new Zt(function(t){a[n.src].then(function(e){if("string"==typeof e)return e;t({image:n,blobInfo:e.blobInfo})})});var e=new Zt(function(e,t){!function(n,r,o,t){var i,a;0!==r.src.indexOf("blob:")?(i=Gd(r.src).data,(a=n.findFirst(function(e){return e.base64()===i}))?o({image:r,blobInfo:a}):Xd(r.src).then(function(e){a=n.create(Kd(),e,i),n.add(a),o({image:r,blobInfo:a})},function(e){t(e)})):(a=n.getByUri(r.src))?o({image:r,blobInfo:a}):Xd(r.src).then(function(t){Yd(t).then(function(e){i=Gd(e).data,a=n.create(Kd(),t,i),n.add(a),o({image:r,blobInfo:a})})},function(e){t(e)})}(i,n,e,t)}).then(function(e){return delete a[e.image.src],e})["catch"](function(e){return delete a[n.src],e});return a[n.src]=e});return Zt.all(r)}}}var Zd=0,eh=function(e){return e+Zd+++function(){function e(){return Math.round(4294967295*Math.random()).toString(36)}return"s"+(new Date).getTime().toString(36)+e()+e()+e()}()};function th(o){function t(t){return function(e){return o.selection?t(e):[]}}function r(e,t,n){for(var r=0;-1!==(r=e.indexOf(t,r))&&(e=e.substring(0,r)+n+e.substr(r+t.length),r+=n.length-t.length+1),-1!==r;);return e}function i(e,t,n){return e=r(e,'src="'+t+'"','src="'+n+'"'),e=r(e,'data-mce-src="'+t+'"','data-mce-src="'+n+'"')}function n(t,n){z(o.undoManager.data,function(e){"fragmented"===e.type?e.fragments=X(e.fragments,function(e){return i(e,t,n)}):e.content=i(e.content,t,n)})}function a(){return o.notificationManager.open({text:o.translate("Image uploading..."),type:"info",timeout:-1,progressBar:!0})}function u(e,t){h.removeByUri(e.src),n(e.src,t),o.$(e).attr({src:Sf(o)?t+"?"+(new Date).getTime():t,"data-mce-src":o.convertURL(t,"src")})}function s(n){return f=f||$d(m,{url:Tf(o),basePath:Af(o),credentials:Mf(o),handler:Rf(o)}),p().then(t(function(r){var e;return e=X(r,function(e){return e.blobInfo}),f.upload(e,a).then(t(function(e){var t=X(e,function(e,t){var n=r[t].image;return e.status&&kf(o)?u(n,e.url):e.error&&Fd.uploadError(o,e.error),{element:n,status:e.status}});return n&&n(t),t}))}))}function e(e){if(Nf(o))return s(e)}function c(t){return!1!==w(g,function(e){return e(t)})&&(0!==t.getAttribute("src").indexOf("data:")||Ef(o)(t))}function l(e){return e.replace(/src="(blob:[^"]+)"/g,function(e,n){var t=m.getResultUri(n);if(t)return'src="'+t+'"';var r=h.getByUri(n);return(r=r||b(o.editorManager.get(),function(e,t){return e||t.editorUpload&&t.editorUpload.blobCache.getByUri(n)},null))?'src="data:'+r.blob().type+";base64,"+r.base64()+'"':e})}var f,d,h=function(){var n=[],o=function(e){var t,n;if(!e.blob||!e.base64)throw new Error("blob and base64 representations of the image are required for BlobInfo to be created");return t=e.id||eh("blobid"),n=e.name||t,{id:$(t),name:$(n),filename:$(n+"."+function(e){return{"image/jpeg":"jpg","image/jpg":"jpg","image/gif":"gif","image/png":"png"}[e.toLowerCase()]||"dat"}(e.blob.type)),blob:$(e.blob),base64:$(e.base64),blobUri:$(e.blobUri||j.URL.createObjectURL(e.blob)),uri:$(e.uri)}},t=function(t){return e(function(e){return e.id()===t})},e=function(e){return y(n,e)[0]};return{create:function(e,t,n,r){if(K(e))return o({id:e,name:r,blob:t,base64:n});if(T(e))return o(e);throw new Error("Unknown input type")},add:function(e){t(e.id())||n.push(e)},get:t,getByUri:function(t){return e(function(e){return e.blobUri()===t})},findFirst:e,removeByUri:function(t){n=y(n,function(e){return e.blobUri()!==t||(j.URL.revokeObjectURL(e.blobUri()),!1)})},destroy:function(){z(n,function(e){j.URL.revokeObjectURL(e.blobUri())}),n=[]}}}(),m=function v(){function n(e,t){return{status:e,resultUri:t}}function t(e){return e in r}var r={};return{hasBlobUri:t,getResultUri:function(e){var t=r[e];return t?t.resultUri:null},isPending:function(e){return!!t(e)&&1===r[e].status},isUploaded:function(e){return!!t(e)&&2===r[e].status},markPending:function(e){r[e]=n(1,null)},markUploaded:function(e,t){r[e]=n(2,t)},removeFailed:function(e){delete r[e]},destroy:function(){r={}}}}(),g=[],p=function(){return(d=d||Qd(m,h)).findAll(o.getBody(),c).then(t(function(e){return e=y(e,function(e){return"string"!=typeof e||(Fd.displayError(o,e),!1)}),z(e,function(e){n(e.image.src,e.blobInfo.blobUri()),e.image.src=e.blobInfo.blobUri(),e.image.removeAttribute("data-mce-src")}),e}))};return o.on("SetContent",function(){Nf(o)?e():p()}),o.on("RawSaveContent",function(e){e.content=l(e.content)}),o.on("GetContent",function(e){e.source_view||"raw"===e.format||(e.content=l(e.content))}),o.on("PostRender",function(){o.parser.addNodeFilter("img",function(e){z(e,function(e){var t=e.attr("src");if(!h.getByUri(t)){var n=m.getResultUri(t);n&&e.attr("src",n)}})})}),{blobCache:h,addFilter:function(e){g.push(e)},uploadImages:s,uploadImagesAuto:e,scanForImages:p,destroy:function(){h.destroy(),m.destroy(),d=f=null}}}function nh(e,t,n){return Bt(t,e)?function(e){return e.slice(0,-1)}(function(e,t){for(var n=D(t)?t:c,r=e.dom(),o=[];null!==r.parentNode&&r.parentNode!==undefined;){var i=r.parentNode,a=yt.fromDom(i);if(o.push(a),!0===n(a))break;r=i}return o}(e,function(e){return n(e)||ze(e,t)})):[]}function rh(e,t){return nh(e,t,$(!1))}function oh(e,t){return e.hasOwnProperty(t.nodeName)}function ih(e,t){if(Ge.isText(t)){if(0===t.nodeValue.length)return!0;if(/^\s+$/.test(t.nodeValue)&&(!t.nextSibling||oh(e,t.nextSibling)))return!0}return!1}function ah(e){var t,n,r,o,i,a,u,s,c,l,f=e.dom,d=e.selection,h=e.schema,m=h.getBlockElements(),g=d.getStart(),p=e.getBody(),v=mf(e);if(g&&Ge.isElement(g)&&v&&(l=p.nodeName.toLowerCase(),h.isValidChild(l,v.toLowerCase())&&!function(t,e,n){return C(lh(yt.fromDom(n),yt.fromDom(e)),function(e){return oh(t,e.dom())})}(m,p,g))){for(n=(t=d.getRng()).startContainer,r=t.startOffset,o=t.endContainer,i=t.endOffset,c=ud(e),g=p.firstChild;g;)if(y=m,b=g,Ge.isText(b)||Ge.isElement(b)&&!oh(y,b)&&!Fc(b)){if(ih(m,g)){g=(u=g).nextSibling,f.remove(u);continue}a||(a=f.create(v,gf(e)),g.parentNode.insertBefore(a,g),s=!0),g=(u=g).nextSibling,a.appendChild(u)}else a=null,g=g.nextSibling;var y,b;s&&c&&(t.setStart(n,r),t.setEnd(o,i),d.setRng(t),e.nodeChanged())}}function uh(o,e){return Ya(function(e){var t=e.startContainer,n=e.startOffset;return Ge.isText(t)?0===n?k.some(yt.fromDom(t)):k.none():k.from(t.childNodes[n]).map(yt.fromDom)}(e),function(e){var t=e.endContainer,n=e.endOffset;return Ge.isText(t)?n===t.data.length?k.some(yt.fromDom(t)):k.none():k.from(t.childNodes[n-1]).map(yt.fromDom)}(e),function(e,t){var n=g(mh(o),d(ze,e)),r=g(gh(o),d(ze,t));return n.isSome()&&r.isSome()}).getOr(!1)}function sh(e,t,n,r){var o=n,i=new yi(n,o),a=e.schema.getNonEmptyElements();do{if(3===n.nodeType&&0!==Mn.trim(n.nodeValue).length)return void(r?t.setStart(n,0):t.setEnd(n,n.nodeValue.length));if(a[n.nodeName]&&!/^(TD|TH)$/.test(n.nodeName))return void(r?t.setStartBefore(n):"BR"===n.nodeName?t.setEndBefore(n):t.setEndAfter(n))}while(n=r?i.next():i.prev());"BODY"===o.nodeName&&(r?t.setStart(o,0):t.setEnd(o,o.childNodes.length))}function ch(e){var t=e.selection.getSel();return t&&0<t.rangeCount}var lh=rh,fh=function(e,t){return[e].concat(rh(e,t))},dh=function(e){mf(e)&&e.on("NodeChange",d(ah,e))},hh=function(e,t){return e&&t&&e.startContainer===t.startContainer&&e.startOffset===t.startOffset&&e.endContainer===t.endContainer&&e.endOffset===t.endOffset},mh=function(t){return _e(t).fold($([t]),function(e){return[t].concat(mh(e))})},gh=function(t){return Be(t).fold($([t]),function(e){return"br"===ie(e)?ke(e).map(function(e){return[t].concat(gh(e))}).getOr([]):[t].concat(gh(e))})},ph=(vh.prototype.nodeChanged=function(e){var t,n,r,o=this.editor.selection;this.editor.initialized&&o&&!this.editor.settings.disable_nodechange&&!this.editor.readonly&&(r=this.editor.getBody(),(t=o.getStart(!0)||r).ownerDocument===this.editor.getDoc()&&this.editor.dom.isChildOf(t,r)||(t=r),n=[],this.editor.dom.getParent(t,function(e){if(e===r)return!0;n.push(e)}),(e=e||{}).element=t,e.parents=n,this.editor.fire("NodeChange",e))},vh.prototype.isSameElementPath=function(e){var t,n;if((n=this.editor.$(e).parentsUntil(this.editor.getBody()).add(e)).length===this.lastPath.length){for(t=n.length;0<=t&&n[t]===this.lastPath[t];t--);if(-1===t)return this.lastPath=n,!0}return this.lastPath=n,!1},vh);function vh(r){var o;this.lastPath=[],this.editor=r;var t=this;"onselectionchange"in r.getDoc()||r.on("NodeChange click mouseup keyup focus",function(e){var t,n;n={startContainer:(t=r.selection.getRng()).startContainer,startOffset:t.startOffset,endContainer:t.endContainer,endOffset:t.endOffset},"nodechange"!==e.type&&hh(n,o)||r.fire("SelectionChange"),o=n}),r.on("contextmenu",function(){r.fire("SelectionChange")}),r.on("SelectionChange",function(){var e=r.selection.getStart(!0);!e||!Nn.range&&r.selection.isCollapsed()||ch(r)&&!t.isSameElementPath(e)&&r.dom.isChildOf(e,r.getBody())&&r.nodeChanged({selectionChange:!0})}),r.on("mouseup",function(e){!e.isDefaultPrevented()&&ch(r)&&("IMG"===r.selection.getNode().nodeName?pn.setEditorTimeout(r,function(){r.nodeChanged()}):r.nodeChanged())})}function yh(e){return/^[\r\n\t ]$/.test(e)}function bh(e){return!yh(e)&&!Mh(e)}function Ch(n,r,o){return k.from(o.container()).filter(Ge.isText).exists(function(e){var t=n?0:-1;return r(e.data.charAt(o.offset()+t))})}function wh(e){var t=e.container();return Ge.isText(t)&&0===t.data.length}function xh(t,n){return function(e){return k.from(ws(t?0:-1,e)).filter(n).isSome()}}function zh(e){return"IMG"===e.nodeName&&"block"===ve(yt.fromDom(e),"display")}function Eh(e){return Ge.isContentEditableFalse(e)&&!Ge.isBogusAll(e)}function Nh(e){return b(e,function(e,t){return e.concat(function(t){function e(e){return X(e,function(e){return(e=Ia(e)).node=t,e})}if(Ge.isElement(t))return e(t.getClientRects());if(Ge.isText(t)){var n=t.ownerDocument.createRange();return n.setStart(t,0),n.setEnd(t,t.data.length),e(n.getClientRects())}}(t))},[])}var Sh,kh,Th,Ah={BACKSPACE:8,DELETE:46,DOWN:40,ENTER:13,LEFT:37,RIGHT:39,SPACEBAR:32,TAB:9,UP:38,END:35,HOME:36,modifierPressed:function(e){return e.shiftKey||e.ctrlKey||e.altKey||this.metaKeyPressed(e)},metaKeyPressed:function(e){return Nn.mac?e.metaKey:e.ctrlKey&&!e.altKey}},Mh=(Sh="\xa0",function(e){return Sh===e}),Rh=d(Ch,!0,yh),Dh=d(Ch,!1,yh),_h=xh(!0,zh),Bh=xh(!1,zh),Oh=xh(!0,Ge.isTable),Hh=xh(!1,Ge.isTable),Ph=xh(!0,Eh),Lh=xh(!1,Eh);(Th=kh=kh||{})[Th.Up=-1]="Up",Th[Th.Down=1]="Down";function Vh(o,i,a,e,u,t){function n(e){var t,n,r;for(r=Nh([e]),-1===o&&(r=r.reverse()),t=0;t<r.length;t++)if(n=r[t],!a(n,s)){if(0<l.length&&i(n,kn.last(l))&&c++,n.line=c,u(n))return!0;l.push(n)}}var r,s,c=0,l=[];return(s=kn.last(t.getClientRects()))&&(n(r=t.getNode()),function(e,t,n,r){for(;r=ys(r,e,Va,t);)if(n(r))return}(o,e,n,r)),l}function Ih(t){return function(e){return function(e,t){return t.line>e}(t,e)}}function Fh(t){return function(e){return function(e,t){return t.line===e}(t,e)}}function Uh(e,t){return Math.abs(e.left-t)}function jh(e,t){return Math.abs(e.right-t)}function qh(e,t){return e>=t.left&&e<=t.right}function $h(e,o){return kn.reduce(e,function(e,t){var n,r;return n=Math.min(Uh(e,o),jh(e,o)),r=Math.min(Uh(t,o),jh(t,o)),qh(o,t)?t:qh(o,e)?e:r===n&&Ym(t.node)?t:r<n?t:e})}function Wh(e,t,n,r){for(;r=Gm(r,e,Va,t);)if(n(r))return}function Kh(e,t,n){var r,o=Nh(function(e){return y(P(e.getElementsByTagName("*")),ms)}(e)),i=y(o,function(e){return n>=e.top&&n<=e.bottom});return(r=(r=$h(i,t))&&$h(function(e,r){function t(t,e){var n;return n=y(Nh([e]),function(e){return!t(e,r)}),o=o.concat(n),0===n.length}var o=[];return o.push(r),Wh(kh.Up,e,d(t,ja),r.node),Wh(kh.Down,e,d(t,qa),r.node),o}(e,r),t))&&ms(r.node)?function(e,t){return{node:e.node,before:Uh(e,t)<jh(e,t)}}(r,t):null}function Xh(e){var t,n,r,o;return o=e.getBoundingClientRect(),n=(t=e.ownerDocument).documentElement,r=t.defaultView,{top:o.top+r.pageYOffset-n.clientTop,left:o.left+r.pageXOffset-n.clientLeft}}function Yh(e){e&&e.parentNode&&e.parentNode.removeChild(e)}function Gh(i,a){return function(e){if(function(e){return 0===e.button}(e)){var t=g(a.dom.getParents(e.target),Tu(Zm,eg)).getOr(null);if(function(e,t){return Zm(t)&&t!==e}(a.getBody(),t)){var n=a.dom.getPos(t),r=a.getBody(),o=a.getDoc().documentElement;i.element=t,i.screenX=e.screenX,i.screenY=e.screenY,i.maxX=(a.inline?r.scrollWidth:o.offsetWidth)-2,i.maxY=(a.inline?r.scrollHeight:o.offsetHeight)-2,i.relX=e.pageX-n.x,i.relY=e.pageY-n.y,i.width=t.offsetWidth,i.height=t.offsetHeight,i.ghost=function(e,t,n,r){var o=t.cloneNode(!0);e.dom.setStyles(o,{width:n,height:r}),e.dom.setAttrib(o,"data-mce-selected",null);var i=e.dom.create("div",{"class":"mce-drag-container","data-mce-bogus":"all",unselectable:"on",contenteditable:"false"});return e.dom.setStyles(i,{position:"absolute",opacity:.5,overflow:"hidden",border:0,padding:0,margin:0,width:n,height:r}),e.dom.setStyles(o,{margin:0,boxSizing:"border-box"}),i.appendChild(o),i}(a,t,i.width,i.height)}}}}function Jh(r,o){return function(e){if(r.dragging&&function(e,t,n){return t!==n&&!e.dom.isChildOf(t,n)&&!Zm(t)}(o,function(e){var t=e.getSel().getRangeAt(0).startContainer;return 3===t.nodeType?t.parentNode:t}(o.selection),r.element)){var t=function(e){var t=e.cloneNode(!0);return t.removeAttribute("data-mce-selected"),t}(r.element),n=o.fire("drop",{targetClone:t,clientX:e.clientX,clientY:e.clientY});n.isDefaultPrevented()||(t=n.targetClone,o.undoManager.transact(function(){Yh(r.element),o.insertContent(o.dom.getOuterHTML(t)),o._selectionOverrides.hideFakeCaret()}))}tg(r)}}function Qh(e){var t,n,r,o,i,a,u={};t=Xi.DOM,a=j.document,n=Gh(u,e),r=function(r,o){var i=pn.throttle(function(e,t){o._selectionOverrides.hideFakeCaret(),o.selection.placeCaretAt(e,t)},0);return function(e){var t=Math.max(Math.abs(e.screenX-r.screenX),Math.abs(e.screenY-r.screenY));if(function(e){return e.element}(r)&&!r.dragging&&10<t){if(o.fire("dragstart",{target:r.element}).isDefaultPrevented())return;r.dragging=!0,o.focus()}if(r.dragging){var n=function(e,t){return{pageX:t.pageX-e.relX,pageY:t.pageY+5}}(r,Qm(o,e));!function(e,t){e.parentNode!==t&&t.appendChild(e)}(r.ghost,o.getBody()),function(e,t,n,r,o,i){var a=0,u=0;e.style.left=t.pageX+"px",e.style.top=t.pageY+"px",t.pageX+n>o&&(a=t.pageX+n-o),t.pageY+r>i&&(u=t.pageY+r-i),e.style.width=n-a+"px",e.style.height=r-u+"px"}(r.ghost,n,r.width,r.height,r.maxX,r.maxY),i(e.clientX,e.clientY)}}}(u,e),o=Jh(u,e),i=function(e,t){return function(){e.dragging&&t.fire("dragend"),tg(e)}}(u,e),e.on("mousedown",n),e.on("mousemove",r),e.on("mouseup",o),t.bind(a,"mousemove",r),t.bind(a,"mouseup",i),e.on("remove",function(){t.unbind(a,"mousemove",r),t.unbind(a,"mouseup",i)})}function Zh(e,t,n,r,o){return t._selectionOverrides.showCaret(e,n,r,o)}function em(e,t){return e.fire("BeforeObjectSelected",{target:t}).isDefaultPrevented()?null:function(e){var t=e.ownerDocument.createRange();return t.selectNode(e),t}(t)}function tm(e,t,n){var r=Es(1,e.getBody(),t),o=Ds.fromRangeStart(r),i=o.getNode();if(og(i))return Zh(1,e,i,!o.isAtEnd(),!1);var a=o.getNode(!0);if(og(a))return Zh(1,e,a,!1,!1);var u=e.dom.getParent(o.getNode(),function(e){return og(e)||rg(e)});return og(u)?Zh(1,e,u,!1,n):null}function nm(e,t,n){if(!t||!t.collapsed)return t;var r=tm(e,t,n);return r||t}function rm(e,t){for(var n=e.getBody();t&&t!==n;){if(ag(t)||ug(t))return t;t=t.parentNode}return null}function om(g){function a(e){e&&g.selection.setRng(e)}function o(){return g.selection.getRng()}function p(e,t,n,r){return void 0===r&&(r=!0),g.fire("ShowCaret",{target:t,direction:e,before:n}).isDefaultPrevented()?null:(r&&g.selection.scrollIntoView(t,-1===e),u.show(n,t))}function t(e){return Da(e)||hu(e)||mu(e)}var v,y=g.getBody(),u=ds(g.getBody(),function(e){return g.dom.isBlock(e)},function(){return ud(g)}),b="sel-"+g.dom.uniqueId(),C=function(e){return t(e.startContainer)||t(e.endContainer)},s=function(e){var t=g.schema.getShortEndedElements(),n=g.dom.createRng(),r=e.startContainer,o=e.startOffset,i=e.endContainer,a=e.endOffset;return kt(t,r.nodeName.toLowerCase())?0===o?n.setStartBefore(r):n.setStartAfter(r):n.setStart(r,o),kt(t,i.nodeName.toLowerCase())?0===a?n.setEndBefore(i):n.setEndAfter(i):n.setEnd(i,a),n},c=function(e,t){var n,r,o,i,a,u,s,c,l,f,d=g.$,h=g.dom;if(!e)return null;if(e.collapsed){if(!C(e))if(!1===t){if(c=Ss(-1,y,e),ms(c.getNode(!0)))return p(-1,c.getNode(!0),!1,!1);if(ms(c.getNode()))return p(-1,c.getNode(),!c.isAtEnd(),!1)}else{if(c=Ss(1,y,e),ms(c.getNode()))return p(1,c.getNode(),!c.isAtEnd(),!1);if(ms(c.getNode(!0)))return p(1,c.getNode(!0),!1,!1)}return null}if(i=e.startContainer,a=e.startOffset,u=e.endOffset,3===i.nodeType&&0===a&&ug(i.parentNode)&&(i=i.parentNode,a=h.nodeIndex(i),i=i.parentNode),1!==i.nodeType)return null;if(u===a+1&&i===e.endContainer&&(n=i.childNodes[a]),!ug(n))return null;if(l=f=n.cloneNode(!0),(s=g.fire("ObjectSelected",{target:n,targetClone:l})).isDefaultPrevented())return null;r=wa(yt.fromDom(g.getBody()),"#"+b).fold(function(){return d([])},function(e){return d([e.dom()])}),l=s.targetClone,0===r.length&&(r=d('<div data-mce-bogus="all" class="mce-offscreen-selection"></div>').attr("id",b)).appendTo(g.getBody()),e=g.dom.createRng(),l===f&&Nn.ie?(r.empty().append('<p style="font-size: 0" data-mce-bogus="all">\xa0</p>').append(l),e.setStartAfter(r[0].firstChild.firstChild),e.setEndAfter(l)):(r.empty().append("\xa0").append(l).append("\xa0"),e.setStart(r[0].firstChild,1),e.setEnd(r[0].lastChild,0)),r.css({top:h.getPos(n,g.getBody()).y}),r[0].focus(),(o=g.selection.getSel()).removeAllRanges(),o.addRange(e);var m=yt.fromDom(n);return z(ma(yt.fromDom(g.getBody()),"*[data-mce-selected]"),function(e){ze(m,e)||pe(e,"data-mce-selected")}),g.dom.getAttrib(n,"data-mce-selected")||n.setAttribute("data-mce-selected","1"),v=n,w(),e},l=function(){v&&(v.removeAttribute("data-mce-selected"),wa(yt.fromDom(g.getBody()),"#"+b).each(_i),v=null),wa(yt.fromDom(g.getBody()),"#"+b).each(_i),v=null},w=function(){u.hide()};return Nn.ceFalse&&function(){g.on("mouseup",function(e){var t=o();t.collapsed&&Rd(g,e.clientX,e.clientY)&&a(tm(g,t,!1))}),g.on("click",function(e){var t;(t=rm(g,e.target))&&(ug(t)&&(e.preventDefault(),g.focus()),ag(t)&&g.dom.isChildOf(t,g.selection.getNode())&&l())}),g.on("blur NewBlock",function(){l()}),g.on("ResizeWindow FullscreenStateChanged",function(){return u.reposition()});function i(e,t){var n=g.dom.getParent(e,g.dom.isBlock),r=g.dom.getParent(t,g.dom.isBlock);return!(!n||!g.dom.isChildOf(n,r)||!1!==ug(rm(g,n)))||n&&!function(e,t){return g.dom.getParent(e,g.dom.isBlock)===g.dom.getParent(t,g.dom.isBlock)}(n,r)&&function(e){var t=rc(e);if(!e.firstChild)return!1;var n=Ds.before(e.firstChild),r=t.next(n);return r&&!Ph(r)&&!Lh(r)}(n)}var n,r;r=!1,(n=g).on("touchstart",function(){r=!1}),n.on("touchmove",function(){r=!0}),n.on("touchend",function(e){if(!r){var t=rm(n,e.target);ug(t)&&(e.preventDefault(),c(em(n,t)))}},!0),g.on("mousedown",function(e){var t,n=e.target;if((n===y||"HTML"===n.nodeName||g.dom.isChildOf(n,y))&&!1!==Rd(g,e.clientX,e.clientY))if(t=rm(g,n))ug(t)?(e.preventDefault(),c(em(g,t))):(l(),ag(t)&&e.shiftKey||Jm(e.clientX,e.clientY,g.selection.getRng())||(w(),g.selection.placeCaretAt(e.clientX,e.clientY)));else if(!1===ms(n)){l(),w();var r=Kh(y,e.clientX,e.clientY);if(r&&!i(e.target,r.node)){e.preventDefault();var o=p(1,r.node,r.before,!1);g.getBody().focus(),a(o)}}}),g.on("keypress",function(e){Ah.modifierPressed(e)||(e.keyCode,ug(g.selection.getNode())&&e.preventDefault())}),g.on("GetSelectionRange",function(e){var t=e.range;if(v){if(!v.parentNode)return void(v=null);(t=t.cloneRange()).selectNode(v),e.range=t}}),g.on("SetSelectionRange",function(e){e.range=s(e.range);var t=c(e.range,e.forward);t&&(e.range=t)});g.on("AfterSetSelectionRange",function(e){var t=e.range;C(t)||function(e){return"mcepastebin"===e.id}(t.startContainer.parentNode)||w(),function(e){return g.dom.hasClass(e,"mce-offscreen-selection")}(t.startContainer.parentNode)||l()}),g.on("copy",function(e){var t=e.clipboardData;if(!e.isDefaultPrevented()&&e.clipboardData&&!Nn.ie){var n=function(){var e=g.dom.get(b);return e?e.getElementsByTagName("*")[0]:e}();n&&(e.preventDefault(),t.clearData(),t.setData("text/html",n.outerHTML),t.setData("text/plain",n.outerText))}}),ng(g),ig(g)}(),{showCaret:p,showBlockCaretContainer:function(e){e.hasAttribute("data-mce-caret")&&(Pa(e),a(o()),g.selection.scrollIntoView(e))},hideFakeCaret:w,destroy:function(){u.destroy(),v=null}}}function im(e){return Ge.isElement(e)?e.outerHTML:Ge.isText(e)?ir.encodeRaw(e.data,!1):Ge.isComment(e)?"\x3c!--"+e.data+"--\x3e":""}function am(e,t,n){var r=function(e){var t,n,r;for(r=j.document.createElement("div"),t=j.document.createDocumentFragment(),e&&(r.innerHTML=e);n=r.firstChild;)t.appendChild(n);return t}(t);if(e.hasChildNodes()&&n<e.childNodes.length){var o=e.childNodes[n];o.parentNode.insertBefore(r,o)}else e.appendChild(r)}function um(e){return{type:"fragmented",fragments:e,content:"",bookmark:null,beforeBookmark:null}}function sm(e){return{type:"complete",fragments:null,content:e,bookmark:null,beforeBookmark:null}}function cm(e){return"fragmented"===e.type?e.fragments.join(""):e.content}function lm(e){var t=yt.fromTag("body",mg.get().getOrThunk(function(){var e=j.document.implementation.createHTMLDocument("undo");return mg.set(k.some(e)),e}));return Aa(t,cm(e)),z(ma(t,"*[data-mce-bogus]"),Ni),function(e){return e.dom().innerHTML}(t)}function fm(e){return 0===e.get()}function dm(e,t,n){fm(n)&&(e.typing=t)}function hm(e,t){e.typing&&(dm(e,!1,t),e.add())}function mm(n){var r=Je(k.none()),o=Je(0),i=Je(0),a={data:[],typing:!1,beforeChange:function(){!function(e,t,n){fm(t)&&n.set(k.some(Vs.getUndoBookmark(e.selection)))}(n,o,r)},add:function(e,t){return function(e,t,n,r,o,i,a){var u=e.settings,s=gg(e);if(i=i||{},i=Mn.extend(i,s),!1===fm(r)||e.removed)return null;var c=t.data[n.get()];if(e.fire("BeforeAddUndo",{level:i,lastLevel:c,originalEvent:a}).isDefaultPrevented())return null;if(c&&vg(c,i))return null;if(t.data[n.get()]&&o.get().each(function(e){t.data[n.get()].beforeBookmark=e}),u.custom_undo_redo_levels&&t.data.length>u.custom_undo_redo_levels){for(var l=0;l<t.data.length-1;l++)t.data[l]=t.data[l+1];t.data.length--,n.set(t.data.length)}i.bookmark=Vs.getUndoBookmark(e.selection),n.get()<t.data.length-1&&(t.data.length=n.get()+1),t.data.push(i),n.set(t.data.length-1);var f={level:i,lastLevel:c,originalEvent:a};return e.fire("AddUndo",f),0<n.get()&&(e.setDirty(!0),e.fire("change",f)),i}(n,a,i,o,r,e,t)},undo:function(){return function(e,t,n,r){var o;return t.typing&&(t.add(),t.typing=!1,dm(t,!1,n)),0<r.get()&&(r.set(r.get()-1),o=t.data[r.get()],pg(e,o,!0),e.setDirty(!0),e.fire("Undo",{level:o})),o}(n,a,o,i)},redo:function(){return function(e,t,n){var r;return t.get()<n.length-1&&(t.set(t.get()+1),r=n[t.get()],pg(e,r,!1),e.setDirty(!0),e.fire("Redo",{level:r})),r}(n,i,a.data)},clear:function(){!function(e,t,n){t.data=[],n.set(0),t.typing=!1,e.fire("ClearUndos")}(n,a,i)},reset:function(){!function(e){e.clear(),e.add()}(a)},hasUndo:function(){return function(e,t,n){return 0<n.get()||t.typing&&t.data[0]&&!vg(gg(e),t.data[0])}(n,a,i)},hasRedo:function(){return function(e,t){return t.get()<e.data.length-1&&!e.typing}(a,i)},transact:function(e){return function(e,t,n){return hm(e,t),e.beforeChange(),e.ignore(n),e.add()}(a,o,e)},ignore:function(e){!function(e,t){try{e.set(e.get()+1),t()}finally{e.set(e.get()-1)}}(o,e)},extra:function(e,t){!function(e,t,n,r,o){if(t.transact(r)){var i=t.data[n.get()].bookmark,a=t.data[n.get()-1];pg(e,a,!0),t.transact(o)&&(t.data[n.get()-1].beforeBookmark=i)}}(n,a,i,e,t)}};return function(n,r,o){function i(e){dm(r,!1,o),r.add({},e)}var a=Je(!1);n.on("init",function(){r.add()}),n.on("BeforeExecCommand",function(e){var t=e.command;"Undo"!==t&&"Redo"!==t&&"mceRepaint"!==t&&(hm(r,o),r.beforeChange())}),n.on("ExecCommand",function(e){var t=e.command;"Undo"!==t&&"Redo"!==t&&"mceRepaint"!==t&&i(e)}),n.on("ObjectResizeStart cut",function(){r.beforeChange()}),n.on("SaveContent ObjectResized blur",i),n.on("dragend",i),n.on("keyup",function(e){var t=e.keyCode;e.isDefaultPrevented()||((33<=t&&t<=36||37<=t&&t<=40||45===t||e.ctrlKey)&&(i(),n.nodeChanged()),46!==t&&8!==t||n.nodeChanged(),a.get()&&r.typing&&!1===vg(gg(n),r.data[0])&&(!1===n.isDirty()&&(n.setDirty(!0),n.fire("change",{level:r.data[0],lastLevel:null})),n.fire("TypingUndo"),a.set(!1),n.nodeChanged()))}),n.on("keydown",function(e){var t=e.keyCode;if(!e.isDefaultPrevented())if(33<=t&&t<=36||37<=t&&t<=40||45===t)r.typing&&i(e);else{var n=e.ctrlKey&&!e.altKey||e.metaKey;!(t<16||20<t)||224===t||91===t||r.typing||n||(r.beforeChange(),dm(r,!0,o),r.add({},e),a.set(!0))}}),n.on("mousedown",function(e){r.typing&&i(e)});n.on("input",function(e){e.inputType&&(function(e){return"insertReplacementText"===e.inputType}(e)||function(e){return"insertText"===e.inputType&&null===e.data}(e))&&i(e)}),n.on("AddUndo Undo Redo ClearUndos",function(e){e.isDefaultPrevented()||n.nodeChanged()})}(n,a,o),function(e){e.addShortcut("meta+z","","Undo"),e.addShortcut("meta+y,meta+shift+z","","Redo")}(n),a}function gm(e,t,n){var r=e.formatter.get(n);if(r)for(var o=0;o<r.length;o++)if(!1===r[o].inherit&&e.dom.is(t,r[o].selector))return!0;return!1}function pm(t,e,n,r){var o=t.dom.getRoot();return e!==o&&(e=t.dom.getParent(e,function(e){return!!gm(t,e,n)||(e.parentNode===o||!!xg(t,e,n,r,!0))}),xg(t,e,n,r))}function vm(e,t,n){return!!wg(t,n.inline)||(!!wg(t,n.block)||(n.selector?1===t.nodeType&&e.is(t,n.selector):void 0))}function ym(e,t,n,r,o,i){var a,u,s,c=n[r];if(n.onmatch)return n.onmatch(t,n,r);if(c)if("undefined"==typeof c.length){for(a in c)if(c.hasOwnProperty(a)){if(u="attributes"===r?e.getAttrib(t,a):jc.getStyle(e,t,a),o&&!u&&!n.exact)return;if((!o||n.exact)&&!wg(u,jc.normalizeStyleValue(e,jc.replaceVars(c[a],i),a)))return}}else for(s=0;s<c.length;s++)if("attributes"===r?e.getAttrib(t,c[s]):jc.getStyle(e,t,c[s]))return n;return n}function bm(e,t){return e.splitText(t)}function Cm(e){var t=e.startContainer,n=e.startOffset,r=e.endContainer,o=e.endOffset;return t===r&&Ge.isText(t)?0<n&&n<t.nodeValue.length&&(t=(r=bm(t,n)).previousSibling,n<o?(t=r=bm(r,o-=n).previousSibling,o=r.nodeValue.length,n=0):o=0):(Ge.isText(t)&&0<n&&n<t.nodeValue.length&&(t=bm(t,n),n=0),Ge.isText(r)&&0<o&&o<r.nodeValue.length&&(o=(r=bm(r,o).previousSibling).nodeValue.length)),{startContainer:t,startOffset:n,endContainer:r,endOffset:o}}function wm(e,t,n){if(0!==n){var r=e.data.slice(t,t+n),o=t+n>=e.data.length,i=0===t;e.replaceData(t,n,function(n,r,o){return b(n,function(e,t){return function(e){return-1!==" \f\n\r\t\x0B".indexOf(e)}(t)||"\xa0"===t?e.previousCharIsSpace||""===e.str&&r||e.str.length===n.length-1&&o?{previousCharIsSpace:!1,str:e.str+"\xa0"}:{previousCharIsSpace:!0,str:e.str+" "}:{previousCharIsSpace:!1,str:e.str+t}},{previousCharIsSpace:!1,str:""}).str}(r,i,o))}}function xm(e,t){var n=e.data.slice(t),r=n.length-function(e){return e.replace(/^\s+/g,"")}(n).length;return wm(e,t,r)}function zm(e,t){var n=yt.fromDom(e);return function(e,t,n){return Ca(e,t,n).isSome()}(yt.fromDom(t),"pre,code",d(ze,n))}function Em(e,t){return La(t)&&!1===function(e,t){return Ge.isText(t)&&/^[ \t\r\n]*$/.test(t.data)&&!1===zm(e,t)}(e,t)||function(e){return Ge.isElement(e)&&"A"===e.nodeName&&e.hasAttribute("name")}(t)||Eg(t)}function Nm(e,t){return function(e,t){var n=e.container(),r=e.offset();return!1===Ds.isTextPosition(e)&&n===t.parentNode&&r>Ds.before(t).offset()}(t,e)?Ds(t.container(),t.offset()-1):t}function Sm(e){return La(e.previousSibling)?k.some(function(e){return Ge.isText(e)?Ds(e,e.data.length):Ds.after(e)}(e.previousSibling)):e.previousSibling?Pc.lastPositionIn(e.previousSibling):k.none()}function km(e){return La(e.nextSibling)?k.some(function(e){return Ge.isText(e)?Ds(e,0):Ds.before(e)}(e.nextSibling)):e.nextSibling?Pc.firstPositionIn(e.nextSibling):k.none()}function Tm(e,t){return Sm(t).orThunk(function(){return km(t)}).orThunk(function(){return function(e,t){var n=Ds.before(t.previousSibling?t.previousSibling:t.parentNode);return Pc.prevPosition(e,n).fold(function(){return Pc.nextPosition(e,Ds.after(t))},k.some)}(e,t)})}function Am(e,t){return km(t).orThunk(function(){return Sm(t)}).orThunk(function(){return function(e,t){return Pc.nextPosition(e,Ds.after(t)).fold(function(){return Pc.prevPosition(e,Ds.before(t))},k.some)}(e,t)})}function Mm(e,t,n){return function(e,t,n){return e?Am(t,n):Tm(t,n)}(e,t,n).map(d(Nm,n))}function Rm(t,n,e){e.fold(function(){t.focus()},function(e){t.selection.setRng(e.toRange(),n)})}function Dm(e,t){return t&&e.schema.getBlockElements().hasOwnProperty(ie(t))}function _m(e){if(kg(e)){var t=yt.fromHtml('<br data-mce-bogus="1">');return Ei(e),Di(e,t),k.some(Ds.before(t.dom()))}return k.none()}function Bm(e,t,a){var n=ke(e).filter(zt),r=Te(e).filter(zt);return _i(e),function(e,t,n,r){return e.isSome()&&t.isSome()&&n.isSome()?k.some(r(e.getOrDie(),t.getOrDie(),n.getOrDie())):k.none()}(n,r,t,function(e,t,n){var r=e.dom(),o=t.dom(),i=r.data.length;return function(e,t,n){var r=ne(e.data).length;e.appendData(t.data),_i(yt.fromDom(t)),n&&xm(e,r)}(r,o,a),n.container()===o?Ds(r,i):n}).orThunk(function(){return a&&(n.each(function(e){return function(e,t){var n=e.data.slice(0,t),r=n.length-ne(n).length;return wm(e,t-r,r)}(e.dom(),e.dom().length)}),r.each(function(e){return xm(e.dom(),0)})),t})}function Om(e){return 0<function(e){for(var t=[];e;){if(3===e.nodeType&&e.nodeValue!==Ag||1<e.childNodes.length)return[];1===e.nodeType&&t.push(e),e=e.firstChild}return t}(e).length}function Hm(e){if(e){var t=new yi(e,e);for(e=t.current();e;e=t.next())if(3===e.nodeType)return e}return null}function Pm(e){var t=yt.fromTag("span");return me(t,{id:Mg,"data-mce-bogus":"1","data-mce-type":"format-caret"}),e&&Di(t,yt.fromText(Ag)),t}function Lm(e,t,n){void 0===n&&(n=!0);var r=e.dom,o=e.selection;if(Om(t))Tg(e,!1,yt.fromDom(t),n);else{var i=o.getRng(),a=r.getParent(t,r.isBlock),u=function(e){var t=Hm(e);return t&&t.nodeValue.charAt(0)===Ag&&t.deleteData(0,1),t}(t);i.startContainer===u&&0<i.startOffset&&i.setStart(u,i.startOffset-1),i.endContainer===u&&0<i.endOffset&&i.setEnd(u,i.endOffset-1),r.remove(t,!0),a&&r.isEmpty(a)&&bg(yt.fromDom(a)),o.setRng(i)}}function Vm(e,t,n){void 0===n&&(n=!0);var r=e.dom,o=e.selection;if(t)Lm(e,t,n);else if(!(t=os(e.getBody(),o.getStart())))for(;t=r.get(Mg);)Lm(e,t,!1)}function Im(e,t,n){var r=e.dom,o=r.getParent(n,d(jc.isTextBlock,e));o&&r.isEmpty(o)?n.parentNode.replaceChild(t,n):(yg(yt.fromDom(n)),r.isEmpty(n)?n.parentNode.replaceChild(t,n):r.insertAfter(t,n))}function Fm(e,t){return e.appendChild(t),t}function Um(e,t){var n=m(e,function(e,t){return Fm(e,t.cloneNode(!1))},t);return Fm(n,n.ownerDocument.createTextNode(Ag))}function jm(t){t.on("mouseup keydown",function(e){!function(e,t){var n=e.selection,r=e.getBody();Vm(e,null,!1),8!==t&&46!==t||!n.isCollapsed()||n.getStart().innerHTML!==Ag||Vm(e,os(r,n.getStart())),37!==t&&39!==t||Vm(e,os(r,n.getStart()))}(t,e.keyCode)})}function qm(e,t){return e.schema.getTextInlineElements().hasOwnProperty(ie(t))&&!rs(t.dom())&&!Ge.isBogus(t.dom())}var $m,Wm,Km=d(Vh,kh.Up,ja,qa),Xm=d(Vh,kh.Down,qa,ja),Ym=Ge.isContentEditableFalse,Gm=ys,Jm=function(t,n,e){if(e.collapsed)return!1;if(Nn.browser.isIE()&&e.startOffset===e.endOffset-1&&e.startContainer===e.endContainer){var r=e.startContainer.childNodes[e.startOffset];if(Ge.isElement(r))return C(r.getClientRects(),function(e){return $a(e,t,n)})}return C(e.getClientRects(),function(e){return $a(e,t,n)})},Qm=function(e,t){return function(e,t,n){return{pageX:n.left-e.left+t.left,pageY:n.top-e.top+t.top}}(function(e){return e.inline?Xh(e.getBody()):{left:0,top:0}}(e),function(e){var t=e.getBody();return e.inline?{left:t.scrollLeft,top:t.scrollTop}:{left:0,top:0}}(e),function(e,t){if(t.target.ownerDocument===e.getDoc())return{left:t.pageX,top:t.pageY};var n=Xh(e.getContentAreaContainer()),r=function(e){var t=e.getBody(),n=e.getDoc().documentElement,r={left:t.scrollLeft,top:t.scrollTop},o={left:t.scrollLeft||n.scrollLeft,top:t.scrollTop||n.scrollTop};return e.inline?r:o}(e);return{left:t.pageX-n.left+r.left,top:t.pageY-n.top+r.top}}(e,t))},Zm=Ge.isContentEditableFalse,eg=Ge.isContentEditableTrue,tg=function(e){e.dragging=!1,e.element=null,Yh(e.ghost)},ng=function(e){Qh(e),function(n){n.on("drop",function(e){var t="undefined"!=typeof e.clientX?n.getDoc().elementFromPoint(e.clientX,e.clientY):null;(Zm(t)||Zm(n.dom.getContentEditableParent(t)))&&e.preventDefault()})}(e)},rg=Ge.isContentEditableTrue,og=Ge.isContentEditableFalse,ig=function(t){var e=aa(function(){if(!t.removed&&t.getBody().contains(j.document.activeElement)&&t.selection.getRng().collapsed){var e=nm(t,t.selection.getRng(),!1);t.selection.setRng(e)}},0);t.on("focus",function(){e.throttle()}),t.on("blur",function(){e.cancel()})},ag=Ge.isContentEditableTrue,ug=Ge.isContentEditableFalse,sg=0,cg=2,lg=1,fg=function(m,g){function p(e,t,n,r){for(var o=e;o-t<r&&o<n&&m[o]===g[o-t];)++o;return function(e,t,n){return{start:e,end:t,diag:n}}(e,o,t)}var e=m.length+g.length+2,v=new Array(e),y=new Array(e),c=function(e,t,n,r,o){var i=l(e,t,n,r);if(null===i||i.start===t&&i.diag===t-r||i.end===e&&i.diag===e-n)for(var a=e,u=n;a<t||u<r;)a<t&&u<r&&m[a]===g[u]?(o.push([0,m[a]]),++a,++u):r-n<t-e?(o.push([2,m[a]]),++a):(o.push([1,g[u]]),++u);else{c(e,i.start,n,i.start-i.diag,o);for(var s=i.start;s<i.end;++s)o.push([0,m[s]]);c(i.end,t,i.end-i.diag,r,o)}},l=function(e,t,n,r){var o=t-e,i=r-n;if(0==o||0==i)return null;var a,u,s,c,l,f=o-i,d=i+o,h=(d%2==0?d:1+d)/2;for(v[1+h]=e,y[1+h]=t+1,a=0;a<=h;++a){for(u=-a;u<=a;u+=2){for(s=u+h,u===-a||u!==a&&v[s-1]<v[s+1]?v[s]=v[s+1]:v[s]=v[s-1]+1,l=(c=v[s])-e+n-u;c<t&&l<r&&m[c]===g[l];)v[s]=++c,++l;if(f%2!=0&&f-a<=u&&u<=f+a&&y[s-f]<=v[s])return p(y[s-f],u+e-n,t,r)}for(u=f-a;u<=f+a;u+=2){for(s=u+h-f,u===f-a||u!==f+a&&y[s+1]<=y[s-1]?y[s]=y[s+1]-1:y[s]=y[s-1],l=(c=y[s]-1)-e+n-u;e<=c&&n<=l&&m[c]===g[l];)y[s]=c--,l--;if(f%2==0&&-a<=u&&u<=a&&y[s]<=v[s+f])return p(y[s],u+e-n,t,r)}}},t=[];return c(0,m.length,0,g.length,t),t},dg=function(e){return y(X(P(e.childNodes),im),function(e){return 0<e.length})},hg=function(e,t){var n=X(P(t.childNodes),im);return function(e,t){var n=0;z(e,function(e){e[0]===sg?n++:e[0]===lg?(am(t,e[1],n),n++):e[0]===cg&&function(e,t){if(e.hasChildNodes()&&t<e.childNodes.length){var n=e.childNodes[t];n.parentNode.removeChild(n)}}(t,n)})}(fg(n,e),t),t},mg=Je(k.none()),gg=function(n){var e,t,r;return e=dg(n.getBody()),function(e){return-1!==e.indexOf("</iframe>")}(t=(r=v(e,function(e){var t=af.trimInternal(n.serializer,e);return 0<t.length?[t]:[]})).join(""))?um(r):sm(t)},pg=function(e,t,n){"fragmented"===t.type?hg(t.fragments,e.getBody()):e.setContent(t.content,{format:"raw"}),e.selection.moveToBookmark(n?t.beforeBookmark:t.bookmark)},vg=function(e,t){return!(!e||!t)&&(!!function(e,t){return cm(e)===cm(t)}(e,t)||function(e,t){return lm(e)===lm(t)}(e,t))},yg=function(e){var t=ma(e,"br"),n=y(function(e){for(var t=[],n=e.dom();n;)t.push(yt.fromDom(n)),n=n.lastChild;return t}(e).slice(-1),_n);t.length===n.length&&z(n,_i)},bg=function(e){Ei(e),Di(e,yt.fromHtml('<br data-mce-bogus="1">'))},Cg=function(n){Be(n).each(function(t){ke(t).each(function(e){Vn(n)&&_n(t)&&Vn(e)&&_i(t)})})},wg=jc.isEq,xg=function(e,t,n,r,o){var i,a,u,s,c=e.formatter.get(n),l=e.dom;if(c&&t)for(a=0;a<c.length;a++)if(i=c[a],vm(e.dom,t,i)&&ym(l,t,i,"attributes",o,r)&&ym(l,t,i,"styles",o,r)){if(s=i.classes)for(u=0;u<s.length;u++)if(!e.dom.hasClass(t,s[u]))return;return i}},zg={matchNode:xg,matchName:vm,match:function(e,t,n,r){var o;return r?pm(e,r,t,n):(r=e.selection.getNode(),!!pm(e,r,t,n)||!((o=e.selection.getStart())===r||!pm(e,o,t,n)))},matchAll:function(r,o,i){var e,a=[],u={};return e=r.selection.getStart(),r.dom.getParent(e,function(e){var t,n;for(t=0;t<o.length;t++)n=o[t],!u[n]&&xg(r,e,n,i)&&(u[n]=!0,a.push(n))},r.dom.getRoot()),a},canApply:function(e,t){var n,r,o,i,a,u=e.formatter.get(t),s=e.dom;if(u)for(n=e.selection.getStart(),r=jc.getParents(s,n),i=u.length-1;0<=i;i--){if(!(a=u[i].selector)||u[i].defaultBlock)return!0;for(o=r.length-1;0<=o;o--)if(s.is(r[o],a))return!0}return!1},matchesUnInheritedFormatSelector:gm},Eg=Ge.hasAttribute("data-mce-bookmark"),Ng=Ge.hasAttribute("data-mce-bogus"),Sg=Ge.hasAttributeValue("data-mce-bogus","all"),kg=function(e){return function(e){var t,n=0;if(Em(e,e))return!1;if(!(t=e.firstChild))return!0;var r=new yi(t,e);do{if(Sg(t))t=r.next(!0);else if(Ng(t))t=r.next();else if(Ge.isBr(t))n++,t=r.next();else{if(Em(e,t))return!1;t=r.next()}}while(t);return n<=1}(e.dom())},Tg=function(t,n,e,r){void 0===r&&(r=!0);var o=Mm(n,t.getBody(),e.dom()),i=ya(e,d(Dm,t),function(t){return function(e){return e.dom()===t}}(t.getBody())),a=Bm(e,o,function(e,t){return kt(e.schema.getTextInlineElements(),ie(t))}(t,e));t.dom.isEmpty(t.getBody())?(t.setContent(""),t.selection.setCursorLocation()):i.bind(_m).fold(function(){r&&Rm(t,n,a)},function(e){r&&Rm(t,n,k.some(e))})},Ag=cu,Mg="_mce_caret",Rg={},Dg=kn.filter,_g=kn.each;Wm=function(e){var t,n,r=e.selection.getRng();t=Ge.matchNodeNames(["pre"]),r.collapsed||(n=e.selection.getSelectedBlocks(),_g(Dg(Dg(n,t),function(e){return t(e.previousSibling)&&-1!==kn.indexOf(n,e.previousSibling)}),function(e){!function(e,t){vi(t).remove(),vi(e).append("<br><br>").append(t.childNodes)}(e.previousSibling,e)}))},Rg[$m="pre"]||(Rg[$m]=[]),Rg[$m].push(Wm);function Bg(o){this.compare=function(e,t){if(e.nodeName!==t.nodeName)return!1;function n(n){var r={};return Gg(o.getAttribs(n),function(e){var t=e.nodeName.toLowerCase();0!==t.indexOf("_")&&"style"!==t&&0!==t.indexOf("data-")&&(r[t]=o.getAttrib(n,t))}),r}function r(e,t){var n,r;for(r in e)if(e.hasOwnProperty(r)){if(void 0===(n=t[r]))return!1;if(e[r]!==n)return!1;delete t[r]}for(r in t)if(t.hasOwnProperty(r))return!1;return!0}return!!r(n(e),n(t))&&(!!r(o.parseStyle(o.getAttrib(e,"style")),o.parseStyle(o.getAttrib(t,"style")))&&(!Fc(e)&&!Fc(t)))}}function Og(e,t,n){return e.isChildOf(t,n)&&t!==n&&!e.isBlock(n)}function Hg(e,t,n){var r,o,i;return r=t[n?"startContainer":"endContainer"],o=t[n?"startOffset":"endOffset"],Ge.isElement(r)&&(i=r.childNodes.length-1,!n&&o&&o--,r=r.childNodes[i<o?i:o]),Ge.isText(r)&&n&&o>=r.nodeValue.length&&(r=new yi(r,e.getBody()).next()||r),Ge.isText(r)&&!n&&0===o&&(r=new yi(r,e.getBody()).prev()||r),r}function Pg(e,t,n,r){var o=e.create(n,r);return t.parentNode.insertBefore(o,t),o.appendChild(t),o}function Lg(e,t,n,r,o){var i=yt.fromDom(t),a=yt.fromDom(e.create(r,o)),u=n?Me(i):Ae(i);return zi(a,u),n?(Ci(i,a),xi(a,i)):(wi(i,a),Di(a,i)),a.dom()}function Vg(e,t,n,r){return!(t=jc.getNonWhiteSpaceSibling(t,n,r))||"BR"===t.nodeName||e.isBlock(t)}function Ig(e,r,o,i,a){var t,n,u,s=e.dom;if(!function(e,t,n){return!!Zg(t,n.inline)||(!!Zg(t,n.block)||(n.selector?Ge.isElement(t)&&e.is(t,n.selector):void 0))}(s,i,r)&&!function(e,t){return t.links&&"A"===e.tagName}(i,r))return!1;if("all"!==r.remove)for(Qg(r.styles,function(e,t){e=jc.normalizeStyleValue(s,jc.replaceVars(e,o),t),"number"==typeof t&&(t=e,a=0),!r.remove_similar&&a&&!Zg(jc.getStyle(s,a,t),e)||s.setStyle(i,t,""),u=1}),u&&""===s.getAttrib(i,"style")&&(i.removeAttribute("style"),i.removeAttribute("data-mce-style")),Qg(r.attributes,function(e,t){var n;if(e=jc.replaceVars(e,o),"number"==typeof t&&(t=e,a=0),r.remove_similar||!a||Zg(s.getAttrib(a,t),e)){if("class"===t&&(e=s.getAttrib(i,t))&&(n="",Qg(e.split(/\s+/),function(e){/mce\-\w+/.test(e)&&(n+=(n?" ":"")+e)}),n))return void s.setAttrib(i,t,n);"class"===t&&i.removeAttribute("className"),Jg.test(t)&&i.removeAttribute("data-mce-"+t),i.removeAttribute(t)}}),Qg(r.classes,function(e){e=jc.replaceVars(e,o),a&&!s.hasClass(a,e)||s.removeClass(i,e)}),n=s.getAttribs(i),t=0;t<n.length;t++){var c=n[t].nodeName;if(0!==c.indexOf("_")&&0!==c.indexOf("data-"))return!1}return"none"!==r.remove?(function(t,e,n){var r,o=e.parentNode,i=t.dom,a=mf(t);n.block&&(a?o===i.getRoot()&&(n.list_block&&Zg(e,n.list_block)||Qg(Mn.grep(e.childNodes),function(e){jc.isValid(t,a,e.nodeName.toLowerCase())?r?r.appendChild(e):(r=Pg(i,e,a),i.setAttribs(r,t.settings.forced_root_block_attrs)):r=0})):i.isBlock(e)&&!i.isBlock(o)&&(Vg(i,e,!1)||Vg(i,e.firstChild,!0,1)||e.insertBefore(i.create("br"),e.firstChild),Vg(i,e,!0)||Vg(i,e.lastChild,!1,1)||e.appendChild(i.create("br")))),n.selector&&n.inline&&!Zg(n.inline,e)||i.remove(e,1)}(e,i,r),!0):void 0}function Fg(e){return e&&1===e.nodeType&&!Fc(e)&&!rs(e)&&!Ge.isBogus(e)}function Ug(e,t){var n;for(n=e;n;n=n[t]){if(3===n.nodeType&&0!==n.nodeValue.length)return e;if(1===n.nodeType&&!Fc(n))return n}return e}function jg(e,t,n){var r,o,i=new Bg(e);if(t&&n&&(t=Ug(t,"previousSibling"),n=Ug(n,"nextSibling"),i.compare(t,n))){for(r=t.nextSibling;r&&r!==n;)r=(o=r).nextSibling,t.appendChild(o);return e.remove(n),Mn.each(Mn.grep(n.childNodes),function(e){t.appendChild(e)}),t}return n}function qg(n,e){return d(function(e,t){return!(!t||!jc.getStyle(n,t,e))},e)}function $g(r,e,t){return d(function(e,t,n){r.setStyle(n,e,t),""===n.getAttribute("style")&&n.removeAttribute("style"),op(r,n)},e,t)}function Wg(e,t){var n;1===t.nodeType&&t.parentNode&&1===t.parentNode.nodeType&&(n=jc.getTextDecoration(e,t.parentNode),e.getStyle(t,"color")&&n?e.setStyle(t,"text-decoration",n):e.getStyle(t,"text-decoration")===n&&e.setStyle(t,"text-decoration",null))}function Kg(t){var n=Ds.fromRangeStart(t),r=Ds.fromRangeEnd(t),o=t.commonAncestorContainer;return Pc.fromPosition(!1,o,r).map(function(e){return!Cs(n,r,o)&&Cs(n,e,o)?function(e,t,n,r){var o=j.document.createRange();return o.setStart(e,t),o.setEnd(n,r),o}(n.container(),n.offset(),e.container(),e.offset()):t}).getOr(t)}function Xg(e,t,n,r,o){return null===t.get()&&function(t,n){var r=Je({});t.set({}),n.on("NodeChange",function(e){gp(n,e.element,r,t.get())})}(t,e),function(e,t,n,r){var o=e.get();z(t.split(","),function(e){o[e]||(o[e]={similar:r,callbacks:[]}),o[e].callbacks.push(n)}),e.set(o)}(t,n,r,o),{unbind:function(){return function(e,t,n){var r=e.get();z(t.split(","),function(e){r[e].callbacks=y(r[e].callbacks,function(e){return e!==n}),0===r[e].callbacks.length&&delete r[e]}),e.set(r)}(t,n,r)}}}var Yg=function(e,t){_g(Rg[e],function(e){e(t)})},Gg=Mn.each,Jg=/^(src|href|style)$/,Qg=Mn.each,Zg=jc.isEq,ep=Ig,tp=function(a,n,u,e,r){function i(e){var t=function(n,e,r,o,i){var a;return Qg(jc.getParents(n.dom,e.parentNode).reverse(),function(e){var t;a||"_start"===e.id||"_end"===e.id||(t=zg.matchNode(n,e,r,o,i))&&!1!==t.split&&(a=e)}),a}(a,e,n,u,r);return function(e,t,n,r,o,i,a,u){var s,c,l,f,d,h,m=e.dom;if(n){for(h=n.parentNode,s=r.parentNode;s&&s!==h;s=s.parentNode){for(c=m.clone(s,!1),d=0;d<t.length;d++)if(Ig(e,t[d],u,c,c)){c=0;break}c&&(l&&c.appendChild(l),f=f||c,l=c)}!i||a.mixed&&m.isBlock(n)||(r=m.split(n,r)),l&&(o.parentNode.insertBefore(l,o),f.appendChild(o))}return r}(a,l,t,e,e,!0,f,u)}function s(e){var t=h.get(e?"_start":"_end"),n=t[e?"firstChild":"lastChild"];return function(e){return Fc(e)&&Ge.isElement(e)&&("_start"===e.id||"_end"===e.id)}(n)&&(n=n[e?"firstChild":"lastChild"]),Ge.isText(n)&&0===n.data.length&&(n=e?t.previousSibling||t.nextSibling:t.nextSibling||t.previousSibling),h.remove(t,!0),n}function t(e){var t,n,r=e.commonAncestorContainer;if(e=Xc(a,e,l,!0),f.split){if(e=Cm(e),(t=Hg(a,e,!0))!==(n=Hg(a,e))){if(/^(TR|TH|TD)$/.test(t.nodeName)&&t.firstChild&&(t="TR"===t.nodeName?t.firstChild.firstChild||t:t.firstChild||t),r&&/^T(HEAD|BODY|FOOT|R)$/.test(r.nodeName)&&function(e){return/^(TH|TD)$/.test(e.nodeName)}(n)&&n.firstChild&&(n=n.firstChild||n),Og(h,t,n)){var o=k.from(t.firstChild).getOr(t);return i(Lg(h,o,!0,"span",{id:"_start","data-mce-type":"bookmark"})),void s(!0)}if(Og(h,n,t)){o=k.from(n.lastChild).getOr(n);return i(Lg(h,o,!1,"span",{id:"_end","data-mce-type":"bookmark"})),void s(!1)}t=Pg(h,t,"span",{id:"_start","data-mce-type":"bookmark"}),n=Pg(h,n,"span",{id:"_end","data-mce-type":"bookmark"}),i(t),i(n),t=s(!0),n=s()}else t=n=i(t);e.startContainer=t.parentNode?t.parentNode:t,e.startOffset=h.nodeIndex(t),e.endContainer=n.parentNode?n.parentNode:n,e.endOffset=h.nodeIndex(n)+1}Gc(h,e,function(e){Qg(e,function(e){g(e),Ge.isElement(e)&&"underline"===a.dom.getStyle(e,"text-decoration")&&e.parentNode&&"underline"===jc.getTextDecoration(h,e.parentNode)&&Ig(a,{deep:!1,exact:!0,inline:"span",styles:{textDecoration:"underline"}},null,e)})})}var o,c,l=a.formatter.get(n),f=l[0],d=!0,h=a.dom,m=a.selection,g=function(e){var t,n,r,o,i;if(Ge.isElement(e)&&h.getContentEditable(e)&&(o=d,d="true"===h.getContentEditable(e),i=!0),t=Mn.grep(e.childNodes),d&&!i)for(n=0,r=l.length;n<r&&!Ig(a,l[n],u,e,e);n++);if(f.deep&&t.length){for(n=0,r=t.length;n<r;n++)g(t[n]);i&&(d=o)}};if(e)e.nodeType?((c=h.createRng()).setStartBefore(e),c.setEndAfter(e),t(c)):t(e);else if("false"!==h.getContentEditable(m.getNode()))m.isCollapsed()&&f.inline&&!h.select("td[data-mce-selected],th[data-mce-selected]").length?function(e,t,n,r){var o,i,a,u,s,c,l,f=e.dom,d=e.selection,h=[],m=d.getRng();for(o=m.startContainer,i=m.startOffset,3===(s=o).nodeType&&(i!==o.nodeValue.length&&(u=!0),s=s.parentNode);s;){if(zg.matchNode(e,s,t,n,r)){c=s;break}s.nextSibling&&(u=!0),h.push(s),s=s.parentNode}if(c)if(u){a=d.getBookmark(),m.collapse(!0);var g=Xc(e,m,e.formatter.get(t),!0);g=Cm(g),e.formatter.remove(t,n,g),d.moveToBookmark(a)}else{l=os(e.getBody(),c);var p=Pm(!1).dom(),v=Um(h,p);Im(e,p,l||c),Lm(e,l,!1),d.setCursorLocation(v,1),f.isEmpty(c)&&f.remove(c)}}(a,n,u,r):(o=Vs.getPersistentBookmark(a.selection,!0),t(m.getRng()),m.moveToBookmark(o),f.inline&&zg.match(a,n,u,m.getStart())&&jc.moveStart(h,m,m.getRng()),a.nodeChanged());else{e=m.getNode();for(var p=0,v=l.length;p<v&&(!l[p].ceFalseOverride||!Ig(a,l[p],u,e,e));p++);}},np=Mn.each,rp=function(e,t,n){np(e.childNodes,function(e){Fg(e)&&(t(e)&&n(e),e.hasChildNodes()&&rp(e,t,n))})},op=function(e,t){"SPAN"===t.nodeName&&0===e.getAttribs(t).length&&e.remove(t,!0)},ip=function(n,e,r,o){np(e,function(t){np(n.dom.select(t.inline,o),function(e){Fg(e)&&ep(n,t,r,e,t.exact?e:null)}),function(r,e,t){if(e.clear_child_styles){var n=e.links?"*:not(a)":"*";np(r.select(n,t),function(n){Fg(n)&&np(e.styles,function(e,t){r.setStyle(n,t,"")})})}}(n.dom,t,o)})},ap=function(e,t,n,r){(t.styles.color||t.styles.textDecoration)&&(Mn.walk(r,d(Wg,e),"childNodes"),Wg(e,r))},up=function(e,t,n,r){t.styles&&t.styles.backgroundColor&&rp(r,qg(e,"fontSize"),$g(e,"backgroundColor",jc.replaceVars(t.styles.backgroundColor,n)))},sp=function(e,t,n,r){"sub"!==t.inline&&"sup"!==t.inline||(rp(r,qg(e,"fontSize"),$g(e,"fontSize","")),e.remove(e.select("sup"===t.inline?"sub":"sup",r),!0))},cp=function(e,t,n,r){r&&!1!==t.merge_siblings&&(r=jg(e,jc.getNonWhiteSpaceSibling(r),r),r=jg(e,r,jc.getNonWhiteSpaceSibling(r,!0)))},lp=function(t,n,r,o,i){zg.matchNode(t,i.parentNode,r,o)&&ep(t,n,o,i)||n.merge_with_parents&&t.dom.getParent(i.parentNode,function(e){if(zg.matchNode(t,e,r,o))return ep(t,n,o,i),!0})},fp=function(e){return e.collapsed?e:Kg(e)},dp=Mn.each,hp=function(m,g,p,r){function v(n,e){if(e=e||C,n){if(e.onformat&&e.onformat(n,e,p,r),dp(e.styles,function(e,t){i.setStyle(n,t,jc.replaceVars(e,p))}),e.styles){var t=i.getAttrib(n,"style");t&&n.setAttribute("data-mce-style",t)}dp(e.attributes,function(e,t){i.setAttrib(n,t,jc.replaceVars(e,p))}),dp(e.classes,function(e){e=jc.replaceVars(e,p),i.hasClass(n,e)||i.addClass(n,e)})}}function y(e,t){var n=!1;return!!C.selector&&(dp(e,function(e){if(!("collapsed"in e&&e.collapsed!==o))return i.is(t,e.selector)&&!rs(t)?(v(t,e),!(n=!0)):void 0}),n)}function e(s,e,t,c){var l,f,d=[],h=!0;l=C.inline||C.block,f=s.create(l),v(f),Gc(s,e,function(e){var a,u=function(e){var t,n,r,o;if(o=h,t=e.nodeName.toLowerCase(),n=e.parentNode.nodeName.toLowerCase(),1===e.nodeType&&s.getContentEditable(e)&&(o=h,h="true"===s.getContentEditable(e),r=!0),jc.isEq(t,"br"))return a=0,void(C.block&&s.remove(e));if(C.wrapper&&zg.matchNode(m,e,g,p))a=0;else{if(h&&!r&&C.block&&!C.wrapper&&jc.isTextBlock(m,t)&&jc.isValid(m,n,l))return e=s.rename(e,l),v(e),d.push(e),void(a=0);if(C.selector){var i=y(b,e);if(!C.inline||i)return void(a=0)}!h||r||!jc.isValid(m,l,t)||!jc.isValid(m,n,l)||!c&&3===e.nodeType&&1===e.nodeValue.length&&65279===e.nodeValue.charCodeAt(0)||rs(e)||C.inline&&s.isBlock(e)?(a=0,dp(Mn.grep(e.childNodes),u),r&&(h=o),a=0):(a||(a=s.clone(f,!1),e.parentNode.insertBefore(a,e),d.push(a)),a.appendChild(e))}};dp(e,u)}),!0===C.links&&dp(d,function(e){var t=function(e){"A"===e.nodeName&&v(e,C),dp(Mn.grep(e.childNodes),t)};t(e)}),dp(d,function(e){function t(e){var t=!1;return dp(e.childNodes,function(e){if(function(e){return e&&1===e.nodeType&&!Fc(e)&&!rs(e)&&!Ge.isBogus(e)}(e))return t=e,!1}),t}var n,r,o,i,a;(r=0,dp(e.childNodes,function(e){jc.isWhiteSpaceNode(e)||Fc(e)||r++}),n=r,!(1<d.length)&&s.isBlock(e)||0!==n)?(C.inline||C.wrapper)&&(C.exact||1!==n||((i=t(o=e))&&!Fc(i)&&zg.matchName(s,i,C)&&(a=s.clone(i,!1),v(a),s.replace(a,o,!0),s.remove(i,1)),e=a||o),ip(m,b,p,e),lp(m,C,g,p,e),up(s,C,p,e),sp(s,C,p,e),cp(s,C,p,e)):s.remove(e,1)})}var t,n,b=m.formatter.get(g),C=b[0],o=!r&&m.selection.isCollapsed(),i=m.dom,a=m.selection;if("false"!==i.getContentEditable(a.getNode())){if(C){if(r)r.nodeType?y(b,r)||((n=i.createRng()).setStartBefore(r),n.setEndAfter(r),e(i,Xc(m,n,b),0,!0)):e(i,r,0,!0);else if(o&&C.inline&&!i.select("td[data-mce-selected],th[data-mce-selected]").length)!function(e,t,n){var r,o,i,a,u,s,c=e.selection;a=(r=c.getRng()).startOffset,s=r.startContainer.nodeValue,(o=os(e.getBody(),c.getStart()))&&(i=Hm(o));var l=/[^\s\u00a0\u00ad\u200b\ufeff]/;s&&0<a&&a<s.length&&l.test(s.charAt(a))&&l.test(s.charAt(a-1))?(u=c.getBookmark(),r.collapse(!0),r=Xc(e,r,e.formatter.get(t)),r=Cm(r),e.formatter.apply(t,n,r),c.moveToBookmark(u)):(o&&i.nodeValue===Ag||(i=(o=function(e,t){return e.importNode(t,!0)}(e.getDoc(),Pm(!0).dom())).firstChild,r.insertNode(o),a=1),e.formatter.apply(t,n,o),c.setCursorLocation(i,a))}(m,g,p);else{var u=m.selection.getNode();m.settings.forced_root_block||!b[0].defaultBlock||i.getParent(u,i.isBlock)||hp(m,b[0].defaultBlock),m.selection.setRng(fp(m.selection.getRng())),t=Vs.getPersistentBookmark(m.selection,!0),e(i,Xc(m,a.getRng(),b)),C.styles&&ap(i,C,p,u),a.moveToBookmark(t),jc.moveStart(i,a,a.getRng()),m.nodeChanged()}Yg(g,m)}}else{r=a.getNode();for(var s=0,c=b.length;s<c;s++)if(b[s].ceFalseOverride&&i.is(r,b[s].selector))return void v(r,b[s])}},mp={applyFormat:hp},gp=function(r,e,t,n){var o=Et(t.get()),i={},a={},u=y(jc.getParents(r.dom,e),function(e){return 1===e.nodeType&&!e.getAttribute("data-mce-bogus")});ue(n,function(e,n){Mn.each(u,function(t){return r.formatter.matchNode(t,n,{},e.similar)?(-1===o.indexOf(n)&&(z(e.callbacks,function(e){e(!0,{node:t,format:n,parents:u})}),i[n]=e.callbacks),a[n]=e.callbacks,!1):!zg.matchesUnInheritedFormatSelector(r,t,n)&&void 0})});var s=pp(t.get(),a,e,u);t.set(G(G({},i),s))},pp=function(e,n,r,o){return ce(e,function(e,t){return!!kt(n,t)||(z(e,function(e){e(!1,{node:r,format:t,parents:o})}),!1)}).t},vp=function(r){var t={valigntop:[{selector:"td,th",styles:{verticalAlign:"top"}}],valignmiddle:[{selector:"td,th",styles:{verticalAlign:"middle"}}],valignbottom:[{selector:"td,th",styles:{verticalAlign:"bottom"}}],alignleft:[{selector:"figure.image",collapsed:!1,classes:"align-left",ceFalseOverride:!0,preview:"font-family font-size"},{selector:"figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li",styles:{textAlign:"left"},inherit:!1,preview:!1,defaultBlock:"div"},{selector:"img,table",collapsed:!1,styles:{"float":"left"},preview:"font-family font-size"}],aligncenter:[{selector:"figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li",styles:{textAlign:"center"},inherit:!1,preview:"font-family font-size",defaultBlock:"div"},{selector:"figure.image",collapsed:!1,classes:"align-center",ceFalseOverride:!0,preview:"font-family font-size"},{selector:"img",collapsed:!1,styles:{display:"block",marginLeft:"auto",marginRight:"auto"},preview:!1},{selector:"table",collapsed:!1,styles:{marginLeft:"auto",marginRight:"auto"},preview:"font-family font-size"}],alignright:[{selector:"figure.image",collapsed:!1,classes:"align-right",ceFalseOverride:!0,preview:"font-family font-size"},{selector:"figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li",styles:{textAlign:"right"},inherit:!1,preview:"font-family font-size",defaultBlock:"div"},{selector:"img,table",collapsed:!1,styles:{"float":"right"},preview:"font-family font-size"}],alignjustify:[{selector:"figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li",styles:{textAlign:"justify"},inherit:!1,defaultBlock:"div",preview:"font-family font-size"}],bold:[{inline:"strong",remove:"all"},{inline:"span",styles:{fontWeight:"bold"}},{inline:"b",remove:"all"}],italic:[{inline:"em",remove:"all"},{inline:"span",styles:{fontStyle:"italic"}},{inline:"i",remove:"all"}],underline:[{inline:"span",styles:{textDecoration:"underline"},exact:!0},{inline:"u",remove:"all"}],strikethrough:[{inline:"span",styles:{textDecoration:"line-through"},exact:!0},{inline:"strike",remove:"all"}],forecolor:{inline:"span",styles:{color:"%value"},links:!0,remove_similar:!0,clear_child_styles:!0},hilitecolor:{inline:"span",styles:{backgroundColor:"%value"},links:!0,remove_similar:!0,clear_child_styles:!0},fontname:{inline:"span",toggle:!1,styles:{fontFamily:"%value"},clear_child_styles:!0},fontsize:{inline:"span",toggle:!1,styles:{fontSize:"%value"},clear_child_styles:!0},fontsize_class:{inline:"span",attributes:{"class":"%value"}},blockquote:{block:"blockquote",wrapper:!0,remove:"all"},subscript:{inline:"sub"},superscript:{inline:"sup"},code:{inline:"code"},link:{inline:"a",selector:"a",remove:"all",split:!0,deep:!0,onmatch:function(){return!0},onformat:function(n,e,t){Mn.each(t,function(e,t){r.setAttrib(n,t,e)})}},removeformat:[{selector:"b,strong,em,i,font,u,strike,sub,sup,dfn,code,samp,kbd,var,cite,mark,q,del,ins",remove:"all",split:!0,expand:!1,block_expand:!0,deep:!0},{selector:"span",attributes:["style","class"],remove:"empty",split:!0,expand:!1,deep:!0},{selector:"*",attributes:["style","class"],split:!1,expand:!1,deep:!0}]};return Mn.each("p h1 h2 h3 h4 h5 h6 div address pre div dt dd samp".split(/\s/),function(e){t[e]={block:e,remove:"all"}}),t};function yp(e,t){function s(e){var t;return r="string"==typeof e?{name:e,classes:[],attrs:{}}:e,function(e,t){t.classes.length&&Rp.addClass(e,t.classes.join(" ")),Rp.setAttribs(e,t.attrs)}(t=Rp.create(r.name),r),t}var n,r,o,c=t&&t.schema||pr({}),l=function(n,e,t){var r,o,i,a=0<e.length&&e[0],u=a&&a.name;if(i=function(e,t){var n="string"!=typeof e?e.nodeName.toLowerCase():e,r=c.getElementRule(n),o=r&&r.parentsRequired;return!(!o||!o.length)&&(t&&-1!==Mn.inArray(o,t)?t:o[0])}(n,u))u===i?(o=e[0],e=e.slice(1)):o=i;else if(a)o=e[0],e=e.slice(1);else if(!t)return n;return o&&(r=s(o)).appendChild(n),t&&(r||(r=Rp.create("div")).appendChild(n),Mn.each(t,function(e){var t=s(e);r.insertBefore(t,n)})),l(r,e,o&&o.siblings)};return e&&e.length?(r=e[0],n=s(r),(o=Rp.create("div")).appendChild(l(n,e.slice(1),r.siblings)),o):""}function bp(e){var t,a={classes:[],attrs:{}};return"*"!==(e=a.selector=Mn.trim(e))&&(t=e.replace(/(?:([#\.]|::?)([\w\-]+)|(\[)([^\]]+)\]?)/g,function(e,t,n,r,o){switch(t){case"#":a.attrs.id=n;break;case".":a.classes.push(n);break;case":":-1!==Mn.inArray("checked disabled enabled read-only required".split(" "),n)&&(a.attrs[n]=n)}if("["===r){var i=o.match(/([\w\-]+)(?:\=\"([^\"]+))?/);i&&(a.attrs[i[1]]=i[2])}return""})),a.name=t||"div",a}function Cp(e){var t=function o(e){var n={},r=function(e,t){e&&("string"!=typeof e?Mn.each(e,function(e,t){r(t,e)}):(A(t)||(t=[t]),Mn.each(t,function(e){"undefined"==typeof e.deep&&(e.deep=!e.selector),"undefined"==typeof e.split&&(e.split=!e.selector||e.inline),"undefined"==typeof e.remove&&e.selector&&!e.inline&&(e.remove="none"),e.selector&&e.inline&&(e.mixed=!0,e.block_expand=!0),"string"==typeof e.classes&&(e.classes=e.classes.split(/\s+/))}),n[e]=t))};return r(vp(e.dom)),r(e.settings.formats),{get:function(e){return e?n[e]:n},has:function(e){return kt(n,e)},register:r,unregister:function(e){return e&&n[e]&&delete n[e],n}}}(e),n=Je(null);return Op(e),jm(e),{get:t.get,has:t.has,register:t.register,unregister:t.unregister,apply:d(mp.applyFormat,e),remove:d(tp,e),toggle:d(Bp,e,t),match:d(zg.match,e),matchAll:d(zg.matchAll,e),matchNode:d(zg.matchNode,e),canApply:d(zg.canApply,e),formatChanged:d(Xg,e,n),getCssText:d(_p,e)}}function wp(e,i,a){e.addNodeFilter("font",function(e){z(e,function(e){var t=i.parse(e.attr("style")),n=e.attr("color"),r=e.attr("face"),o=e.attr("size");n&&(t.color=n),r&&(t["font-family"]=r),o&&(t["font-size"]=a[parseInt(e.attr("size"),10)-1]),e.name="span",e.attr("style",i.serialize(t)),function(t,e){z(e,function(e){t.attr(e,null)})}(e,["color","face","size"])})})}function xp(e,t){var n=xr();t.convert_fonts_to_spans&&wp(e,n,Mn.explode(t.font_size_legacy_values)),function(e,n){e.addNodeFilter("strike",function(e){z(e,function(e){var t=n.parse(e.attr("style"));t["text-decoration"]="line-through",e.name="span",e.attr("style",n.serialize(t))})})}(e,n)}function zp(e,t,n,r){(e.padd_empty_with_br||t.insert)&&n[r.name]?r.empty().append(new ul("br",1)).shortEnded=!0:r.empty().append(new ul("#text",3)).value="\xa0"}function Ep(t,e,n,r){return r.isEmpty(e,n,function(e){return function(e,t){var n=e.getElementRule(t.name);return n&&n.paddEmpty}(t,e)})}function Np(T,A){void 0===A&&(A=pr());var M={},R=[],D={},_={};(T=T||{}).validate=!("validate"in T)||T.validate,T.root_name=T.root_name||"body";var B=function(e){var t,n,r;(n=e.name)in M&&((r=D[n])?r.push(e):D[n]=[e]),t=R.length;for(;t--;)(n=R[t].name)in e.attributes.map&&((r=_[n])?r.push(e):_[n]=[e]);return e},e={schema:A,addAttributeFilter:function(e,n){Up(jp(e),function(e){var t;for(t=0;t<R.length;t++)if(R[t].name===e)return void R[t].callbacks.push(n);R.push({name:e,callbacks:[n]})})},getAttributeFilters:function(){return[].concat(R)},addNodeFilter:function(e,n){Up(jp(e),function(e){var t=M[e];t||(M[e]=t=[]),t.push(n)})},getNodeFilters:function(){var e=[];for(var t in M)M.hasOwnProperty(t)&&e.push({name:t,callbacks:M[t]});return e},filterNode:B,parse:function(e,a){var t,n,r,o,i,u,s,c,l,f,d,h=[];a=a||{},D={},_={},l=qp(Fp("script,style,head,html,body,title,meta,param"),A.getBlockElements());var m,g=A.getNonEmptyElements(),p=A.children,v=T.validate,y="forced_root_block"in a?a.forced_root_block:T.forced_root_block,b=!1===(m=y)?"":!0===m?"p":m,C=A.getWhiteSpaceElements(),w=/^[ \t\r\n]+/,x=/[ \t\r\n]+$/,z=/[ \t\r\n]+/g,E=/^[ \t\r\n]+$/;f=C.hasOwnProperty(a.context)||C.hasOwnProperty(T.root_name);function N(e){var t,n,r,o,i=A.getBlockElements();for(t=e.prev;t&&3===t.type;){if(0<(r=t.value.replace(x,"")).length)return void(t.value=r);if(n=t.next){if(3===n.type&&n.value.length){t=t.prev;continue}if(!i[n.name]&&"script"!==n.name&&"style"!==n.name){t=t.prev;continue}}o=t.prev,t.remove(),t=o}}var S=function(e,t){var n,r=new ul(e,t);return e in M&&((n=D[e])?n.push(r):D[e]=[r]),r};t=of({validate:v,allow_script_urls:T.allow_script_urls,allow_conditional_comments:T.allow_conditional_comments,self_closing_elements:function(e){var t,n={};for(t in e)"li"!==t&&"p"!==t&&(n[t]=e[t]);return n}(A.getSelfClosingElements()),cdata:function(e){d.append(S("#cdata",4)).value=e},text:function(e,t){var n;f||(e=e.replace(z," "),function(e,t){return e&&(t[e.name]||"br"===e.name)}(d.lastChild,l)&&(e=e.replace(w,""))),0!==e.length&&((n=S("#text",3)).raw=!!t,d.append(n).value=e)},comment:function(e){d.append(S("#comment",8)).value=e},pi:function(e,t){d.append(S(e,7)).value=t,N(d)},doctype:function(e){d.append(S("#doctype",10)).value=e,N(d)},start:function(e,t,n){var r,o,i,a,u;if(i=v?A.getElementRule(e):{}){for((r=S(i.outputName||e,1)).attributes=t,r.shortEnded=n,d.append(r),(u=p[d.name])&&p[r.name]&&!u[r.name]&&h.push(r),o=R.length;o--;)(a=R[o].name)in t.map&&((s=_[a])?s.push(r):_[a]=[r]);l[e]&&N(r),n||(d=r),!f&&C[e]&&(f=!0)}},end:function(e){var t,n,r,o,i;if(n=v?A.getElementRule(e):{}){if(l[e]&&!f){if((t=d.firstChild)&&3===t.type)if(0<(r=t.value.replace(w,"")).length)t.value=r,t=t.next;else for(o=t.next,t.remove(),t=o;t&&3===t.type;)r=t.value,o=t.next,0!==r.length&&!E.test(r)||(t.remove(),t=o),t=o;if((t=d.lastChild)&&3===t.type)if(0<(r=t.value.replace(x,"")).length)t.value=r,t=t.prev;else for(o=t.prev,t.remove(),t=o;t&&3===t.type;)r=t.value,o=t.prev,0!==r.length&&!E.test(r)||(t.remove(),t=o),t=o}if(f&&C[e]&&(f=!1),n.removeEmpty&&Ep(A,g,C,d)&&!d.attr("name")&&!d.attr("id"))return i=d.parent,l[d.name]?d.empty().remove():d.unwrap(),void(d=i);n.paddEmpty&&(function(e){return Ip(e,"#text")&&"\xa0"===e.firstChild.value}(d)||Ep(A,g,C,d))&&zp(T,a,l,d),d=d.parent}}},A);var k=d=new ul(a.context||T.root_name,11);if(t.parse(e),v&&h.length&&(a.context?a.invalid=!0:function(e){var t,n,r,o,i,a,u,s,c,l,f,d,h,m,g,p;for(d=Fp("tr,td,th,tbody,thead,tfoot,table"),l=A.getNonEmptyElements(),f=A.getWhiteSpaceElements(),h=A.getTextBlockElements(),m=A.getSpecialElements(),t=0;t<e.length;t++)if((n=e[t]).parent&&!n.fixed)if(h[n.name]&&"li"===n.parent.name){for(g=n.next;g&&h[g.name];)g.name="li",g.fixed=!0,n.parent.insert(g,n.parent),g=g.next;n.unwrap(n)}else{for(o=[n],r=n.parent;r&&!A.isValidChild(r.name,n.name)&&!d[r.name];r=r.parent)o.push(r);if(r&&1<o.length){for(o.reverse(),i=a=B(o[0].clone()),c=0;c<o.length-1;c++){for(A.isValidChild(a.name,o[c].name)?(u=B(o[c].clone()),a.append(u)):u=a,s=o[c].firstChild;s&&s!==o[c+1];)p=s.next,u.append(s),s=p;a=u}Ep(A,l,f,i)?r.insert(n,o[0],!0):(r.insert(i,o[0],!0),r.insert(n,i)),r=o[0],(Ep(A,l,f,r)||Ip(r,"br"))&&r.empty().remove()}else if(n.parent){if("li"===n.name){if((g=n.prev)&&("ul"===g.name||"ul"===g.name)){g.append(n);continue}if((g=n.next)&&("ul"===g.name||"ul"===g.name)){g.insert(n,g.firstChild,!0);continue}n.wrap(B(new ul("ul",1)));continue}A.isValidChild(n.parent.name,"div")&&A.isValidChild("div",n.name)?n.wrap(B(new ul("div",1))):m[n.name]?n.empty().remove():n.unwrap()}}}(h)),b&&("body"===k.name||a.isRootContent)&&function(){function e(e){e&&((r=e.firstChild)&&3===r.type&&(r.value=r.value.replace(w,"")),(r=e.lastChild)&&3===r.type&&(r.value=r.value.replace(x,"")))}var t,n,r=k.firstChild;if(A.isValidChild(k.name,b.toLowerCase())){for(;r;)t=r.next,3===r.type||1===r.type&&"p"!==r.name&&!l[r.name]&&!r.attr("data-mce-type")?(n||((n=S(b,1)).attr(T.forced_root_block_attrs),k.insert(n,r)),n.append(r)):(e(n),n=null),r=t;e(n)}}(),!a.invalid){for(c in D)if(D.hasOwnProperty(c)){for(s=M[c],i=(n=D[c]).length;i--;)n[i].parent||n.splice(i,1);for(r=0,o=s.length;r<o;r++)s[r](n,c,a)}for(r=0,o=R.length;r<o;r++)if((s=R[r]).name in _){for(i=(n=_[s.name]).length;i--;)n[i].parent||n.splice(i,1);for(i=0,u=s.callbacks.length;i<u;i++)s.callbacks[i](n,s.name,a)}}return k}};return function(e,g){var p=e.schema;g.remove_trailing_brs&&e.addNodeFilter("br",function(e,t,n){var r,o,i,a,u,s,c,l,f=e.length,d=Mn.extend({},p.getBlockElements()),h=p.getNonEmptyElements(),m=p.getNonEmptyElements();for(d.body=1,r=0;r<f;r++)if(i=(o=e[r]).parent,d[o.parent.name]&&o===i.lastChild){for(u=o.prev;u;){if("span"!==(s=u.name)||"bookmark"!==u.attr("data-mce-type")){if("br"!==s)break;if("br"===s){o=null;break}}u=u.prev}o&&(o.remove(),Ep(p,h,m,i)&&(c=p.getElementRule(i.name))&&(c.removeEmpty?i.remove():c.paddEmpty&&zp(g,n,d,i)))}else{for(a=o;i&&i.firstChild===a&&i.lastChild===a&&!d[(a=i).name];)i=i.parent;a===i&&!0!==g.padd_empty_with_br&&((l=new ul("#text",3)).value="\xa0",o.replace(l))}}),e.addAttributeFilter("href",function(e){var t,n,r,o=e.length;if(!g.allow_unsafe_link_target)for(;o--;)"a"===(t=e[o]).name&&"_blank"===t.attr("target")&&t.attr("rel",(n=t.attr("rel"),void 0,r=n?Mn.trim(n):"",/\b(noopener)\b/g.test(r)?r:r.split(" ").filter(function(e){return 0<e.length}).concat(["noopener"]).sort().join(" ")))}),g.allow_html_in_named_anchor||e.addAttributeFilter("id,name",function(e){for(var t,n,r,o,i=e.length;i--;)if("a"===(o=e[i]).name&&o.firstChild&&!o.attr("href"))for(r=o.parent,t=o.lastChild;n=t.prev,r.insert(t,o),t=n;);}),g.fix_list_elements&&e.addNodeFilter("ul,ol",function(e){for(var t,n,r=e.length;r--;)if("ul"===(n=(t=e[r]).parent).name||"ol"===n.name)if(t.prev&&"li"===t.prev.name)t.prev.append(t);else{var o=new ul("li",1);o.attr("style","list-style-type: none"),t.wrap(o)}}),g.validate&&p.getValidClasses()&&e.addAttributeFilter("class",function(e){for(var t,n,r,o,i,a,u,s=e.length,c=p.getValidClasses();s--;){for(n=(t=e[s]).attr("class").split(" "),i="",r=0;r<n.length;r++)o=n[r],u=!1,(a=c["*"])&&a[o]&&(u=!0),a=c[t.name],!u&&a&&a[o]&&(u=!0),u&&(i&&(i+=" "),i+=o);i.length||(i=null),t.attr("class",i)}})}(e,T),Vp(e,T),e}function Sp(e,t,n){-1===Mn.inArray(t,n)&&(e.addAttributeFilter(n,function(e,t){for(var n=e.length;n--;)e[n].attr(t,null)}),t.push(n))}function kp(e,t,n,r,o){return function(e,t,n){return t.no_events||!e?n:ld(e,bd(t,{content:n})).content}(e,o,function(e,t,n){return pl(e,t).serialize(n)}(t,n,r))}function Tp(a,u){var s,c,l,e=["data-mce-selected"];return s=u&&u.dom?u.dom:Xi.DOM,c=u&&u.schema?u.schema:pr(a),a.entity_encoding=a.entity_encoding||"named",a.remove_trailing_brs=!("remove_trailing_brs"in a)||a.remove_trailing_brs,l=Np(a,c),Hp(l,a,s),{schema:c,addNodeFilter:l.addNodeFilter,addAttributeFilter:l.addAttributeFilter,serialize:function(e,t){var n=bd({format:"html"},t||{}),r=Lp(u,e,n),o=function(e,t,n){var r=lu(n.getInner?t.innerHTML:e.getOuterHTML(t));return n.selection||Wn(yt.fromDom(t))?r:Mn.trim(r)}(s,r,n),i=function(e,t,n){var r=n.selection?bd({forced_root_block:!1},n):n,o=e.parse(t,r);return Pp(o),o}(l,o,n);return"tree"===n.format?i:kp(u,a,c,i,n)},addRules:function(e){c.addValidElements(e)},setRules:function(e){c.setValidElements(e)},addTempAttr:d(Sp,l,e),getTempAttrs:function(){return e}}}function Ap(e,t){var n=Tp(e,t);return{schema:n.schema,addNodeFilter:n.addNodeFilter,addAttributeFilter:n.addAttributeFilter,serialize:n.serialize,addRules:n.addRules,setRules:n.setRules,addTempAttr:n.addTempAttr,getTempAttrs:n.getTempAttrs}}var Mp=Mn.each,Rp=Xi.DOM,Dp=function(e){return e&&"string"==typeof e?(e=(e=e.split(/\s*,\s*/)[0]).replace(/\s*(~\+|~|\+|>)\s*/g,"$1"),Mn.map(e.split(/(?:>|\s+(?![^\[\]]+\]))/),function(e){var t=Mn.map(e.split(/(?:~\+|~|\+)/),bp),n=t.pop();return t.length&&(n.siblings=t),n}).reverse()):[]},_p=function(n,e){var t,r,o,i,a,u,s="";if(!1===(u=n.settings.preview_styles))return"";"string"!=typeof u&&(u="font-family font-size font-weight font-style text-decoration text-transform color background-color border border-radius outline text-shadow");function c(e){return e.replace(/%(\w+)/g,"")}if("string"==typeof e){if(!(e=n.formatter.get(e)))return;e=e[0]}return"preview"in e&&!1===(u=e.preview)?"":(t=e.block||e.inline||"span",r=(i=Dp(e.selector)).length?(i[0].name||(i[0].name=t),t=e.selector,yp(i,n)):yp([t],n),o=Rp.select(t,r)[0]||r.firstChild,Mp(e.styles,function(e,t){(e=c(e))&&Rp.setStyle(o,t,e)}),Mp(e.attributes,function(e,t){(e=c(e))&&Rp.setAttrib(o,t,e)}),Mp(e.classes,function(e){e=c(e),Rp.hasClass(o,e)||Rp.addClass(o,e)}),n.fire("PreviewFormats"),Rp.setStyles(r,{position:"absolute",left:-65535}),n.getBody().appendChild(r),a=Rp.getStyle(n.getBody(),"fontSize",!0),a=/px$/.test(a)?parseInt(a,10):0,Mp(u.split(" "),function(e){var t=Rp.getStyle(o,e,!0);if(!("background-color"===e&&/transparent|rgba\s*\([^)]+,\s*0\)/.test(t)&&(t=Rp.getStyle(n.getBody(),e,!0),"#ffffff"===Rp.toHex(t).toLowerCase())||"color"===e&&"#000000"===Rp.toHex(t).toLowerCase())){if("font-size"===e&&/em|%$/.test(t)){if(0===a)return;t=parseFloat(t)/(/%$/.test(t)?100:1)*a+"px"}"border"===e&&t&&(s+="padding:0 2px;"),s+=e+":"+t+";"}}),n.fire("AfterPreviewFormats"),Rp.remove(r),s)},Bp=function(e,t,n,r,o){var i=t.get(n);!zg.match(e,n,r,o)||"toggle"in i[0]&&!i[0].toggle?mp.applyFormat(e,n,r,o):tp(e,n,r,o)},Op=function(e){e.addShortcut("meta+b","","Bold"),e.addShortcut("meta+i","","Italic"),e.addShortcut("meta+u","","Underline");for(var t=1;t<=6;t++)e.addShortcut("access+"+t,"",["FormatBlock",!1,"h"+t]);e.addShortcut("access+7","",["FormatBlock",!1,"p"]),e.addShortcut("access+8","",["FormatBlock",!1,"div"]),e.addShortcut("access+9","",["FormatBlock",!1,"address"])},Hp=function(t,s,c){t.addAttributeFilter("data-mce-tabindex",function(e,t){for(var n,r=e.length;r--;)(n=e[r]).attr("tabindex",n.attr("data-mce-tabindex")),n.attr(t,null)}),t.addAttributeFilter("src,href,style",function(e,t){for(var n,r,o=e.length,i="data-mce-"+t,a=s.url_converter,u=s.url_converter_scope;o--;)(r=(n=e[o]).attr(i))!==undefined?(n.attr(t,0<r.length?r:null),n.attr(i,null)):(r=n.attr(t),"style"===t?r=c.serializeStyle(c.parseStyle(r),n.name):a&&(r=a.call(u,r,t,n.name)),n.attr(t,0<r.length?r:null))}),t.addAttributeFilter("class",function(e){for(var t,n,r=e.length;r--;)(n=(t=e[r]).attr("class"))&&(n=t.attr("class").replace(/(?:^|\s)mce-item-\w+(?!\S)/g,""),t.attr("class",0<n.length?n:null))}),t.addAttributeFilter("data-mce-type",function(e,t,n){for(var r,o=e.length;o--;){if("bookmark"===(r=e[o]).attr("data-mce-type")&&!n.cleanup)k.from(r.firstChild).exists(function(e){return!su(e.value)})?r.unwrap():r.remove()}}),t.addNodeFilter("noscript",function(e){for(var t,n=e.length;n--;)(t=e[n].firstChild)&&(t.value=ir.decode(t.value))}),t.addNodeFilter("script,style",function(e,t){for(var n,r,o,i=e.length,a=function(e){return e.replace(/(<!--\[CDATA\[|\]\]-->)/g,"\n").replace(/^[\r\n]*|[\r\n]*$/g,"").replace(/^\s*((<!--)?(\s*\/\/)?\s*<!\[CDATA\[|(<!--\s*)?\/\*\s*<!\[CDATA\[\s*\*\/|(\/\/)?\s*<!--|\/\*\s*<!--\s*\*\/)\s*[\r\n]*/gi,"").replace(/\s*(\/\*\s*\]\]>\s*\*\/(-->)?|\s*\/\/\s*\]\]>(-->)?|\/\/\s*(-->)?|\]\]>|\/\*\s*-->\s*\*\/|\s*-->\s*)\s*$/g,"")};i--;)r=(n=e[i]).firstChild?n.firstChild.value:"","script"===t?((o=n.attr("type"))&&n.attr("type","mce-no/type"===o?null:o.replace(/^mce\-/,"")),"xhtml"===s.element_format&&0<r.length&&(n.firstChild.value="// <![CDATA[\n"+a(r)+"\n// ]]>")):"xhtml"===s.element_format&&0<r.length&&(n.firstChild.value="\x3c!--\n"+a(r)+"\n--\x3e")}),t.addNodeFilter("#comment",function(e){for(var t,n=e.length;n--;)0===(t=e[n]).value.indexOf("[CDATA[")?(t.name="#cdata",t.type=4,t.value=t.value.replace(/^\[CDATA\[|\]\]$/g,"")):0===t.value.indexOf("mce:protected ")&&(t.name="#text",t.type=3,t.raw=!0,t.value=unescape(t.value).substr(14))}),t.addNodeFilter("xml:namespace,input",function(e,t){for(var n,r=e.length;r--;)7===(n=e[r]).type?n.remove():1===n.type&&("input"!==t||n.attr("type")||n.attr("type","text"))}),t.addAttributeFilter("data-mce-type",function(e){z(e,function(e){"format-caret"===e.attr("data-mce-type")&&(e.isEmpty(t.schema.getNonEmptyElements())?e.remove():e.unwrap())})}),t.addAttributeFilter("data-mce-src,data-mce-href,data-mce-style,data-mce-selected,data-mce-expando,data-mce-type,data-mce-resize",function(e,t){for(var n=e.length;n--;)e[n].attr(t,null)})},Pp=function(e){function t(e){return e&&"br"===e.name}var n,r;t(n=e.lastChild)&&t(r=n.prev)&&(n.remove(),r.remove())},Lp=function(e,t,n){return function(e,t){return e&&e.hasEventListeners("PreProcess")&&!t.no_events}(e,n)?function(e,t,n){var r,o,i,a=e.dom;return t=t.cloneNode(!0),(r=j.document.implementation).createHTMLDocument&&(o=r.createHTMLDocument(""),Mn.each("BODY"===t.nodeName?t.childNodes:[t],function(e){o.body.appendChild(o.importNode(e,!0))}),t="BODY"!==t.nodeName?o.body.firstChild:o.body,i=a.doc,a.doc=o),cd(e,bd(n,{node:t})),i&&(a.doc=i),t}(e,t,n):t},Vp=function(e,t){t.inline_styles&&xp(e,t)},Ip=function(e,t){return e&&e.firstChild&&e.firstChild===e.lastChild&&e.firstChild.name===t},Fp=Mn.makeMap,Up=Mn.each,jp=Mn.explode,qp=Mn.extend;function $p(e){return{getBookmark:d(Vc,e),moveToBookmark:d(Ic,e)}}($p=$p||{}).isBookmarkNode=Fc;function Wp(r,a){var u,s,c,l,f,d,h,m,g,p,v,y,i,b,C,w,x,z=a.dom,E=Mn.each,N=a.getDoc(),S=j.document,k=Math.abs,T=Math.round,A=a.getBody();function M(e){return e&&("IMG"===e.nodeName||a.dom.is(e,"figure.image"))}function e(e){var t=e.target;!function(e,t){if("longpress"!==e.type&&0!==e.type.indexOf("touch"))return M(e.target)&&!Jm(e.clientX,e.clientY,t);var n=e.touches[0];return M(e.target)&&!Jm(n.clientX,n.clientY,t)}(e,a.selection.getRng())||e.isDefaultPrevented()||a.selection.select(t)}function R(e){return a.dom.is(e,"figure.image")?e.querySelector("img"):e}function D(e){var t=a.settings.object_resizing;return!1!==t&&!Nn.iOS&&("string"!=typeof t&&(t="table,img,figure.image,div"),"false"!==e.getAttribute("data-mce-resize")&&(e!==a.getBody()&&we(yt.fromDom(e),t)))}function _(e){var t,n,r,o;t=e.screenX-d,n=e.screenY-h,b=t*f[2]+p,C=n*f[3]+v,b=b<5?5:b,C=C<5?5:C,(M(u)&&!1!==a.settings.resize_img_proportional?!Ah.modifierPressed(e):Ah.modifierPressed(e)||M(u)&&f[2]*f[3]!=0)&&(k(t)>k(n)?(C=T(b*y),b=T(C/y)):(b=T(C/y),C=T(b*y))),z.setStyles(R(s),{width:b,height:C}),r=0<(r=f.startPos.x+t)?r:0,o=0<(o=f.startPos.y+n)?o:0,z.setStyles(c,{left:r,top:o,display:"block"}),c.innerHTML=b+" &times; "+C,f[2]<0&&s.clientWidth<=b&&z.setStyle(s,"left",m+(p-b)),f[3]<0&&s.clientHeight<=C&&z.setStyle(s,"top",g+(v-C)),(t=A.scrollWidth-w)+(n=A.scrollHeight-x)!==0&&z.setStyles(c,{left:r-t,top:o-n}),i||(md(a,u,p,v),i=!0)}function n(e){function t(e,t){if(e)do{if(e===t)return!0}while(e=e.parentNode)}var n;i||a.removed||(E(z.select("img[data-mce-selected],hr[data-mce-selected]"),function(e){e.removeAttribute("data-mce-selected")}),n="mousedown"===e.type?e.target:r.getNode(),t(n=z.$(n).closest("table,img,figure.image,hr")[0],A)&&(L(),t(r.getStart(!0),n)&&t(r.getEnd(!0),n))?O(n):H())}function o(e){return Xp(function(e,t){for(;t&&t!==e;){if(Yp(t)||Xp(t))return t;t=t.parentNode}return null}(a.getBody(),e))}l={nw:[0,0,-1,-1],ne:[1,0,1,-1],se:[1,1,1,1],sw:[0,1,-1,1]};var B=function(){i=!1;function e(e,t){t&&(u.style[e]||!a.schema.isValid(u.nodeName.toLowerCase(),e)?z.setStyle(R(u),e,t):z.setAttrib(R(u),e,t))}e("width",b),e("height",C),z.unbind(N,"mousemove",_),z.unbind(N,"mouseup",B),S!==N&&(z.unbind(S,"mousemove",_),z.unbind(S,"mouseup",B)),z.remove(s),z.remove(c),O(u),gd(a,u,b,C),z.setAttrib(u,"style",z.getAttrib(u,"style")),a.nodeChanged()},O=function(e){var t,r,o,n,i;H(),P(),t=z.getPos(e,A),m=t.x,g=t.y,i=e.getBoundingClientRect(),r=i.width||i.right-i.left,o=i.height||i.bottom-i.top,u!==e&&(u=e,b=C=0),n=a.fire("ObjectSelected",{target:e}),D(e)&&!n.isDefaultPrevented()?E(l,function(t,e){var n;(n=z.get("mceResizeHandle"+e))&&z.remove(n),n=z.add(A,"div",{id:"mceResizeHandle"+e,"data-mce-bogus":"all","class":"mce-resizehandle",unselectable:!0,style:"cursor:"+e+"-resize; margin:0; padding:0"}),11===Nn.ie&&(n.contentEditable=!1),z.bind(n,"mousedown",function(e){e.stopImmediatePropagation(),e.preventDefault(),function(e){d=e.screenX,h=e.screenY,p=R(u).clientWidth,v=R(u).clientHeight,y=v/p,(f=t).startPos={x:r*t[0]+m,y:o*t[1]+g},w=A.scrollWidth,x=A.scrollHeight,s=u.cloneNode(!0),z.addClass(s,"mce-clonedresizable"),z.setAttrib(s,"data-mce-bogus","all"),s.contentEditable=!1,s.unSelectabe=!0,z.setStyles(s,{left:m,top:g,margin:0}),s.removeAttribute("data-mce-selected"),A.appendChild(s),z.bind(N,"mousemove",_),z.bind(N,"mouseup",B),S!==N&&(z.bind(S,"mousemove",_),z.bind(S,"mouseup",B)),c=z.add(A,"div",{"class":"mce-resize-helper","data-mce-bogus":"all"},p+" &times; "+v)}(e)}),t.elm=n,z.setStyles(n,{left:r*t[0]+m-n.offsetWidth/2,top:o*t[1]+g-n.offsetHeight/2})}):H(),u.setAttribute("data-mce-selected","1")},H=function(){var e,t;for(e in P(),u&&u.removeAttribute("data-mce-selected"),l)(t=z.get("mceResizeHandle"+e))&&(z.unbind(t),z.remove(t))},P=function(){for(var e in l){var t=l[e];t.elm&&(z.unbind(t.elm),delete t.elm)}},L=function(){try{a.getDoc().execCommand("enableObjectResizing",!1,!1)}catch(e){}};return a.on("init",function(){L(),(Nn.browser.isIE()||Nn.browser.isEdge())&&(a.on("mousedown click",function(e){var t=e.target,n=t.nodeName;i||!/^(TABLE|IMG|HR)$/.test(n)||o(t)||(2!==e.button&&a.selection.select(t,"TABLE"===n),"mousedown"===e.type&&a.nodeChanged())}),a.dom.bind(A,"mscontrolselect",function(e){function t(e){pn.setEditorTimeout(a,function(){a.selection.select(e)})}if(o(e.target))return e.preventDefault(),void t(e.target);/^(TABLE|IMG|HR)$/.test(e.target.nodeName)&&(e.preventDefault(),"IMG"===e.target.tagName&&t(e.target))}));var t=pn.throttle(function(e){a.composing||n(e)});a.on("nodechange ResizeEditor ResizeWindow drop FullscreenStateChanged",t),a.on("keyup compositionend",function(e){u&&"TABLE"===u.nodeName&&t(e)}),a.on("hide blur",H),a.on("contextmenu longpress",e,!0)}),a.on("remove",P),{isResizable:D,showResizeRect:O,hideResizeRect:H,updateResizeRect:n,destroy:function(){u=s=null}}}var Kp=$p,Xp=Ge.isContentEditableFalse,Yp=Ge.isContentEditableTrue;function Gp(e){var t=yt.fromDom(j.document),n=ki(t),r=function(e,t){var n=t.owner(e);return Vv(t,n)}(e,Iv),o=Hi(e),i=m(r,function(e,t){var n=Hi(t);return{left:e.left+n.left(),top:e.top+n.top()}},{left:0,top:0});return Oi(i.left+o.left()+n.left(),i.top+o.top()+n.top())}function Jp(e){return"textarea"===ie(e)}function Qp(e,t){var n=function(e){var t=e.dom().ownerDocument,n=t.body,r=t.defaultView,o=t.documentElement;if(n===e.dom())return Oi(n.offsetLeft,n.offsetTop);var i=Si(r.pageYOffset,o.scrollTop),a=Si(r.pageXOffset,o.scrollLeft),u=Si(o.clientTop,n.clientTop),s=Si(o.clientLeft,n.clientLeft);return Hi(e).translate(a-s,i-u)}(e),r=function(e){return Lv.get(e)}(e);return{element:e,bottom:n.top()+r,pos:n,cleanup:t}}function Zp(e,t){var n=function(e,t){var n=Re(e);if(0===n.length||Jp(e))return{element:e,offset:t};if(t<n.length&&!Jp(n[t]))return{element:n[t],offset:0};var r=n[n.length-1];return Jp(r)?{element:e,offset:t}:"img"===ie(r)?{element:r,offset:1}:zt(r)?{element:r,offset:Jc(r).length}:{element:r,offset:Re(r).length}}(e,t),r=yt.fromHtml('<span data-mce-bogus="all">'+cu+"</span>");return Ci(n.element,r),Qp(r,function(){return _i(r)})}function ev(e){return Qp(yt.fromDom(e),i)}function tv(n,r,o,i){Uv(n,function(e,t){return Fv(n,r,o,i)},o)}function nv(e,t,n,r){var o=yt.fromDom(e.getDoc());n(o,ki(o).top(),t,r)}function rv(e,t,n,r){var o=e.pos;if(n)Ti(o.left(),o.top(),r);else{var i=o.top()-t+(e.bottom-o.top());Ti(o.left(),i,r)}}function ov(e,t,n,r,o){r.pos.top()<t?rv(r,n,!1!==o,e):r.bottom>n+t&&rv(r,n,!0===o,e)}function iv(e,t,n,r){var o=e.dom().defaultView.innerHeight;ov(e,t,o,n,r)}function av(e,t,n,r,o){var i=t.dom().defaultView.innerHeight;ov(t,n,i,r,o);var a=Gp(r.element),u=Li(j.window);a.top()<u.y()?Ai(r.element,!1!==o):a.top()>u.bottom()&&Ai(r.element,!0===o)}function uv(e,t,n){return tv(e,d(iv),t,n)}function sv(e,t,n){return nv(e,ev(t),d(iv),n)}function cv(e,t,n){return tv(e,d(av,e),t,n)}function lv(e,t,n){return nv(e,ev(t),d(av,e),n)}function fv(e){return Ge.isContentEditableTrue(e)||Ge.isContentEditableFalse(e)}function dv(e,t){var n=(t||j.document).createDocumentFragment();return z(e,function(e){n.appendChild(e.dom())}),yt.fromDom(n)}function hv(e,t){var n=parseInt(ge(e,t),10);return isNaN(n)?1:n}function mv(e){return b(e,function(e,t){return t.cells().length>e?t.cells().length:e},0)}function gv(e,t){for(var n=e.rows(),r=0;r<n.length;r++)for(var o=n[r].cells(),i=0;i<o.length;i++)if(ze(o[i],t))return k.some(Yv(i,r));return k.none()}function pv(e,t,n,r,o){for(var i=[],a=e.rows(),u=n;u<=o;u++){var s=a[u].cells(),c=t<r?s.slice(t,r+1):s.slice(r,t+1);i.push(Xv(a[u].element(),c))}return i}function vv(e){var t=[];if(e)for(var n=0;n<e.rangeCount;n++)t.push(e.getRangeAt(n));return t}function yv(e){return y(ey(e),$n)}function bv(e){return ma(e,"td[data-mce-selected],th[data-mce-selected]")}function Cv(e,t){var n=bv(t),r=yv(e);return 0<n.length?n:r}function wv(t,n){return g(t,function(e){return"li"===ie(e)&&uh(e,n)}).fold($([]),function(e){return function(e){return g(e,function(e){return"ul"===ie(e)||"ol"===ie(e)})}(t).map(function(e){return[yt.fromTag("li"),yt.fromTag(ie(e))]}).getOr([])})}function xv(e,t){var n=yt.fromDom(t.commonAncestorContainer),r=fh(n,e),o=y(r,function(e){return Dn(e)||Ln(e)}),i=wv(r,t),a=o.concat(i.length?i:function(t){return Un(t)?Se(t).filter(Fn).fold($([]),function(e){return[t,e]}):Fn(t)?[t]:[]}(n));return X(a,ka)}function zv(){return dv([])}function Ev(e,t){return function(e,t){var n=b(t,function(e,t){return Di(t,e),t},e);return 0<t.length?dv([n]):n}(yt.fromDom(t.cloneContents()),xv(e,t))}function Nv(e,o){return function(e,t){return Ca(t,"table",d(ze,e))}(e,o[0]).bind(function(e){var t=o[0],n=o[o.length-1],r=Gv(e);return Qv(r,t,n).map(function(e){return dv([Jv(e)])})}).getOrThunk(zv)}function Sv(e,t,n){return null!==function(e,t,n){for(;e&&e!==t;){if(n(e))return e;e=e.parentNode}return null}(e,t,n)}function kv(e,t,n){return Sv(e,t,function(e){return e.nodeName===n})}function Tv(e){return e&&"TABLE"===e.nodeName}function Av(e,t,n){for(var r=new yi(t,e.getParent(t.parentNode,e.isBlock)||e.getRoot());t=r[n?"prev":"next"]();)if(Ge.isBr(t))return!0}function Mv(e,t,n,r,o){var i,a,u=e.getRoot(),s=e.schema.getNonEmptyElements(),c=e.getParent(o.parentNode,e.isBlock)||u;if(r&&Ge.isBr(o)&&t&&e.isEmpty(c))return k.some(Uu(o.parentNode,e.nodeIndex(o)));for(var l,f,d=new yi(o,c);a=d[r?"prev":"next"]();){if("false"===e.getContentEditableParent(a)||(f=u,Da(l=a)&&!1===Sv(l,f,rs)))return k.none();if(Ge.isText(a)&&0<a.nodeValue.length)return!1===kv(a,u,"A")?k.some(Uu(a,r?a.nodeValue.length:0)):k.none();if(e.isBlock(a)||s[a.nodeName.toLowerCase()])return k.none();i=a}return n&&i?k.some(Uu(i,0)):k.none()}function Rv(e,t,n,r){var o,i,a,u,s,c,l,f=e.getRoot(),d=!1;if(o=r[(n?"start":"end")+"Container"],i=r[(n?"start":"end")+"Offset"],c=Ge.isElement(o)&&i===o.childNodes.length,u=e.schema.getNonEmptyElements(),s=n,Da(o))return k.none();if(Ge.isElement(o)&&i>o.childNodes.length-1&&(s=!1),Ge.isDocument(o)&&(o=f,i=0),o===f){if(s&&(a=o.childNodes[0<i?i-1:0])){if(Da(a))return k.none();if(u[a.nodeName]||Tv(a))return k.none()}if(o.hasChildNodes()){if(i=Math.min(!s&&0<i?i-1:i,o.childNodes.length-1),o=o.childNodes[i],i=Ge.isText(o)&&c?o.data.length:0,!t&&o===f.lastChild&&Tv(o))return k.none();if(function(e,t){for(;t&&t!==e;){if(Ge.isContentEditableFalse(t))return!0;t=t.parentNode}return!1}(f,o)||Da(o))return k.none();if(o.hasChildNodes()&&!1===Tv(o)){var h=new yi(a=o,f);do{if(Ge.isContentEditableFalse(a)||Da(a)){d=!1;break}if(Ge.isText(a)&&0<a.nodeValue.length){i=s?0:a.nodeValue.length,o=a,d=!0;break}if(u[a.nodeName.toLowerCase()]&&(!(l=a)||!/^(TD|TH|CAPTION)$/.test(l.nodeName))){i=e.nodeIndex(a),o=a.parentNode,s||i++,d=!0;break}}while(a=s?h.next():h.prev())}}}return t&&(Ge.isText(o)&&0===i&&Mv(e,c,t,!0,o).each(function(e){o=e.container(),i=e.offset(),d=!0}),Ge.isElement(o)&&(!(a=(a=o.childNodes[i])||o.childNodes[i-1])||!Ge.isBr(a)||function(e,t){return e.previousSibling&&e.previousSibling.nodeName===t}(a,"A")||Av(e,a,!1)||Av(e,a,!0)||Mv(e,c,t,!0,a).each(function(e){o=e.container(),i=e.offset(),d=!0}))),s&&!t&&Ge.isText(o)&&i===o.nodeValue.length&&Mv(e,c,t,!1,o).each(function(e){o=e.container(),i=e.offset(),d=!0}),d?k.some(Uu(o,i)):k.none()}function Dv(e){return 0===e.dom().length?(_i(e),k.none()):k.some(e)}function _v(e,t,n,r,o){var i=n?t.startContainer:t.endContainer,a=n?t.startOffset:t.endOffset;return k.from(i).map(yt.fromDom).map(function(e){return r&&t.collapsed?e:De(e,o(e,a)).getOr(e)}).bind(function(e){return xt(e)?k.some(e):Se(e)}).map(function(e){return e.dom()}).getOr(e)}function Bv(e,t,n){return _v(e,t,!0,n,function(e,t){return Math.min(function(e){return e.dom().childNodes.length}(e),t)})}function Ov(e,t,n){return _v(e,t,!1,n,function(e,t){return 0<t?t-1:t})}function Hv(e,t){for(var n=e;e&&Ge.isText(e)&&0===e.length;)e=t?e.nextSibling:e.previousSibling;return e||n}function Pv(e,t,n){if(e&&e.hasOwnProperty(t)){var r=y(e[t],function(e){return e!==n});0===r.length?delete e[t]:e[t]=r}}var Lv=function CN(r,o){function e(e){var t=o(e);if(t<=0||null===t){var n=ve(e,r);return parseFloat(n)||0}return t}function i(o,e){return b(e,function(e,t){var n=ve(o,t),r=n===undefined?0:parseInt(n,10);return isNaN(r)?e:e+r},0)}return{set:function(e,t){if(!_(t)&&!t.match(/^[0-9]+$/))throw new Error(r+".set accepts only positive integer values. Value was "+t);var n=e.dom();fe(n)&&(n.style[r]=t+"px")},get:e,getOuter:e,aggregate:i,max:function(e,t,n){var r=i(e,n);return r<t?t-r:0}}}("height",function(e){var t=e.dom();return de(e)?t.getBoundingClientRect().height:t.offsetHeight}),Vv=function(r,e){return r.view(e).fold($([]),function(e){var t=r.owner(e),n=Vv(r,t);return[e].concat(n)})},Iv=/* */Object.freeze({view:function(e){return(e.dom()===j.document?k.none():k.from(e.dom().defaultView.frameElement)).map(yt.fromDom)},owner:function(e){return Ee(e)}}),Fv=function(e,t,n,r){var o=yt.fromDom(e.getBody()),i=yt.fromDom(e.getDoc());!function(e){e.dom().offsetWidth}(o);var a=ki(i).top(),u=Zp(yt.fromDom(n.startContainer),n.startOffset);t(i,a,u,r),u.cleanup()},Uv=function(e,t,n){var r=n.startContainer,o=n.startOffset,i=n.endContainer,a=n.endOffset;t(yt.fromDom(r),yt.fromDom(i));var u=e.dom.createRng();u.setStart(r,o),u.setEnd(i,a),e.selection.setRng(n)},jv=function(e,t,n){!function(e,t,n){return e.fire("ScrollIntoView",{elm:t,alignToTop:n}).isDefaultPrevented()}(e,t,n)&&(e.inline?sv:lv)(e,t,n)},qv=function(e,t,n){(e.inline?uv:cv)(e,t,n)},$v=function(e,t,n){var r,o,i=n;if(i.caretPositionFromPoint)(o=i.caretPositionFromPoint(e,t))&&((r=n.createRange()).setStart(o.offsetNode,o.offset),r.collapse(!0));else if(n.caretRangeFromPoint)r=n.caretRangeFromPoint(e,t);else if(i.body.createTextRange){r=i.body.createTextRange();try{r.moveToPoint(e,t),r.collapse(!0)}catch(a){r=function(e,n,t){var r,o,i;if(r=t.elementFromPoint(e,n),o=t.body.createTextRange(),r&&"HTML"!==r.tagName||(r=t.body),o.moveToElementText(r),0<(i=(i=Mn.toArray(o.getClientRects())).sort(function(e,t){return(e=Math.abs(Math.max(e.top-n,e.bottom-n)))-(t=Math.abs(Math.max(t.top-n,t.bottom-n)))})).length){n=(i[0].bottom+i[0].top)/2;try{return o.moveToPoint(e,n),o.collapse(!0),o}catch(a){}}return null}(e,t,n)}return function(e,t){var n=e&&e.parentElement?e.parentElement():null;return Ge.isContentEditableFalse(function(e,t,n){for(;e&&e!==t;){if(n(e))return e;e=e.parentNode}return null}(n,t,fv))?null:e}(r,n.body)}return r},Wv=function(n,e){return X(e,function(e){var t=n.fire("GetSelectionRange",{range:e});return t.range!==e?t.range:e})},Kv=be("element","width","rows"),Xv=be("element","cells"),Yv=be("x","y"),Gv=function(e){var o=Kv(ka(e),0,[]);return z(ma(e,"tr"),function(n,r){z(ma(n,"td,th"),function(e,t){!function(e,t,n,r,o){for(var i=hv(o,"rowspan"),a=hv(o,"colspan"),u=e.rows(),s=n;s<n+i;s++){u[s]||(u[s]=Xv(Ta(r),[]));for(var c=t;c<t+a;c++){u[s].cells()[c]=s===n&&c===t?o:ka(o)}}}(o,function(e,t,n){for(;r=t,o=n,i=void 0,((i=e.rows())[o]?i[o].cells():[])[r];)t++;var r,o,i;return t}(o,t,r),r,n,e)})}),Kv(o.element(),mv(o.rows()),o.rows())},Jv=function(e){return function(e,t){var n=ka(e.element()),r=yt.fromTag("tbody");return zi(r,t),Di(n,r),n}(e,function(e){return X(e.rows(),function(e){var t=X(e.cells(),function(e){var t=Ta(e);return pe(t,"colspan"),pe(t,"rowspan"),t}),n=ka(e.element());return zi(n,t),n})}(e))},Qv=function(n,e,r){return gv(n,e).bind(function(t){return gv(n,r).map(function(e){return function(e,t,n){var r=t.x(),o=t.y(),i=n.x(),a=n.y(),u=o<a?pv(e,r,o,i,a):pv(e,r,a,i,o);return Kv(e.element(),mv(u),u)}(n,t,e)})})},Zv=vv,ey=function(e){return v(e,function(e){var t=Wa(e);return t?[yt.fromDom(t)]:[]})},ty=function(e){return 1<vv(e).length},ny=Cv,ry=function(e){return Cv(Zv(e.selection.getSel()),yt.fromDom(e.getBody()))},oy=function(e,t){var n=ny(t,e);return 0<n.length?Nv(e,n):function(e,t){return 0<t.length&&t[0].collapsed?zv():Ev(e,t[0])}(e,t)},iy=function(e,t){if(void 0===t&&(t={}),t.get=!0,t.format=t.format||"html",t.selection=!0,(t=e.fire("BeforeGetContent",t)).isDefaultPrevented())return e.fire("GetContent",t),t.content;if("text"===t.format)return function(r){return k.from(r.selection.getRng()).map(function(e){var t=r.dom.add(r.getBody(),"div",{"data-mce-bogus":"all",style:"overflow: hidden; opacity: 0;"},e.cloneContents()),n=lu(t.innerText);return r.dom.remove(t),n}).getOr("")}(e);t.getInner=!0;var n=function(e,t){var n,r=e.selection.getRng(),o=e.dom.create("body"),i=e.selection.getSel(),a=Wv(e,Zv(i));return(n=t.contextual?oy(yt.fromDom(e.getBody()),a).dom():r.cloneContents())&&o.appendChild(n),e.selection.serializer.serialize(o,t)}(e,t);return"tree"===t.format?n:(t.content=e.selection.isCollapsed()?"":n,e.fire("GetContent",t),t.content)},ay=function(e,t){var n=t.collapsed,r=t.cloneRange(),o=Uu.fromRangeStart(t);return Rv(e,n,!0,r).each(function(e){n&&Uu.isAbove(o,e)||r.setStart(e.container(),e.offset())}),n||Rv(e,n,!1,r).each(function(e){r.setEnd(e.container(),e.offset())}),n&&r.collapse(!0),hh(t,r)?k.none():k.some(r)},uy=function(e,t,n){if((n=function(e,t){return(e=e||{format:"html"}).set=!0,e.selection=!0,e.content=t,e}(n,t)).no_events||!(n=e.fire("BeforeSetContent",n)).isDefaultPrevented()){var r=e.selection.getRng();!function(r,e){var t=k.from(e.firstChild).map(yt.fromDom),n=k.from(e.lastChild).map(yt.fromDom);r.deleteContents(),r.insertNode(e);var o=t.bind(ke).filter(zt).bind(Dv),i=n.bind(Te).filter(zt).bind(Dv);Ya(o,t.filter(zt),function(e,t){!function(e,t){e.insertData(0,t)}(t.dom(),e.dom().data),_i(e)}),Ya(i,n.filter(zt),function(e,t){var n=t.dom().length;t.dom().appendData(e.dom().data),r.setEnd(t.dom(),n),_i(e)}),r.collapse(!1)}(r,r.createContextualFragment(n.content)),e.selection.setRng(r),qv(e,r),n.no_events||e.fire("SetContent",n)}else e.fire("SetContent",n)};function sy(e){return!!e.select}function cy(e){return!(!e||!e.ownerDocument)&&Bt(yt.fromDom(e.ownerDocument),yt.fromDom(e))}function ly(u,s,e,c){function t(e,t){return uy(c,e,t)}function r(){var e,t,n=d();return!(n&&n.anchorNode&&n.focusNode)||((e=u.createRng()).setStart(n.anchorNode,n.anchorOffset),e.collapse(!0),(t=u.createRng()).setStart(n.focusNode,n.focusOffset),t.collapse(!0),e.compareBoundaryPoints(e.START_TO_START,t)<=0)}var n,o,l,f,i=function p(i,n){var a,u;return{selectorChangedWithUnbind:function(e,t){return a||(a={},u={},n.on("NodeChange",function(e){var n=e.element,r=i.getParents(n,null,i.getRoot()),o={};Mn.each(a,function(e,n){Mn.each(r,function(t){if(i.is(t,n))return u[n]||(Mn.each(e,function(e){e(!0,{node:t,selector:n,parents:r})}),u[n]=e),o[n]=e,!1})}),Mn.each(u,function(e,t){o[t]||(delete u[t],Mn.each(e,function(e){e(!1,{node:n,selector:t,parents:r})}))})})),a[e]||(a[e]=[]),a[e].push(t),{unbind:function(){Pv(a,e,t),Pv(u,e,t)}}}}}(u,c).selectorChangedWithUnbind,a=function(e){var t=h();t.collapse(!!e),m(t)},d=function(){return s.getSelection?s.getSelection():s.document.selection},h=function(){function e(e,t,n){try{return t.compareBoundaryPoints(e,n)}catch(r){return-1}}var t,n,r,o;if(!s)return null;if(null==(o=s.document))return null;if(c.bookmark!==undefined&&!1===ud(c)){var i=Qf(c);if(i.isSome())return i.map(function(e){return Wv(c,[e])[0]}).getOr(o.createRange())}try{(t=d())&&!Ge.isRestrictedNode(t.anchorNode)&&(n=0<t.rangeCount?t.getRangeAt(0):t.createRange?t.createRange():o.createRange())}catch(a){}return(n=(n=Wv(c,[n])[0])||(o.createRange?o.createRange():o.body.createTextRange())).setStart&&9===n.startContainer.nodeType&&n.collapsed&&(r=u.getRoot(),n.setStart(r,0),n.setEnd(r,0)),l&&f&&(0===e(n.START_TO_START,n,l)&&0===e(n.END_TO_END,n,l)?n=f:f=l=null),n},m=function(e,t){var n,r;if(function(e){return!!e&&(!!sy(e)||cy(e.startContainer)&&cy(e.endContainer))}(e)){var o=sy(e)?e:null;if(o){f=null;try{o.select()}catch(i){}}else{if(n=d(),e=c.fire("SetSelectionRange",{range:e,forward:t}).range,n){f=e;try{n.removeAllRanges(),n.addRange(e)}catch(i){}!1===t&&n.extend&&(n.collapse(e.endContainer,e.endOffset),n.extend(e.startContainer,e.startOffset)),l=0<n.rangeCount?n.getRangeAt(0):null}e.collapsed||e.startContainer!==e.endContainer||!n.setBaseAndExtent||Nn.ie||e.endOffset-e.startOffset<2&&e.startContainer.hasChildNodes()&&(r=e.startContainer.childNodes[e.startOffset])&&"IMG"===r.tagName&&(n.setBaseAndExtent(e.startContainer,e.startOffset,e.endContainer,e.endOffset),n.anchorNode===e.startContainer&&n.focusNode===e.endContainer||n.setBaseAndExtent(r,0,r,1)),c.fire("AfterSetSelectionRange",{range:e,forward:t})}}},g={bookmarkManager:null,controlSelection:null,dom:u,win:s,serializer:e,editor:c,collapse:a,setCursorLocation:function(e,t){var n=u.createRng();e?(n.setStart(e,t),n.setEnd(e,t),m(n),a(!1)):(sh(u,n,c.getBody(),!0),m(n))},getContent:function(e){return iy(c,e)},setContent:t,getBookmark:function(e,t){return n.getBookmark(e,t)},moveToBookmark:function(e){return n.moveToBookmark(e)},select:function(e,t){return function(r,e,o){return k.from(e).map(function(e){var t=r.nodeIndex(e),n=r.createRng();return n.setStart(e.parentNode,t),n.setEnd(e.parentNode,t+1),o&&(sh(r,n,e,!0),sh(r,n,e,!1)),n})}(u,e,t).each(m),e},isCollapsed:function(){var e=h(),t=d();return!(!e||e.item)&&(e.compareEndPoints?0===e.compareEndPoints("StartToEnd",e):!t||e.collapsed)},isForward:r,setNode:function(e){return t(u.getOuterHTML(e)),e},getNode:function(){return function(e,t){var n,r,o,i,a;return t?(r=t.startContainer,o=t.endContainer,i=t.startOffset,a=t.endOffset,n=t.commonAncestorContainer,!t.collapsed&&(r===o&&a-i<2&&r.hasChildNodes()&&(n=r.childNodes[i]),3===r.nodeType&&3===o.nodeType&&(r=r.length===i?Hv(r.nextSibling,!0):r.parentNode,o=0===a?Hv(o.previousSibling,!1):o.parentNode,r&&r===o))?r:n&&3===n.nodeType?n.parentNode:n):e}(c.getBody(),h())},getSel:d,setRng:m,getRng:h,getStart:function(e){return Bv(c.getBody(),h(),e)},getEnd:function(e){return Ov(c.getBody(),h(),e)},getSelectedBlocks:function(e,t){return function(e,t,n,r){var o,i,a=[];if(i=e.getRoot(),n=e.getParent(n||Bv(i,t,t.collapsed),e.isBlock),r=e.getParent(r||Ov(i,t,t.collapsed),e.isBlock),n&&n!==i&&a.push(n),n&&r&&n!==r)for(var u=new yi(o=n,i);(o=u.next())&&o!==r;)e.isBlock(o)&&a.push(o);return r&&n!==r&&r!==i&&a.push(r),a}(u,h(),e,t)},normalize:function(){var e=h(),t=d();if(ty(t)||!ch(c))return e;var n=ay(u,e);return n.each(function(e){m(e,r())}),n.getOr(e)},selectorChanged:function(e,t){return i(e,t),g},selectorChangedWithUnbind:i,getScrollContainer:function(){for(var e,t=u.getRoot();t&&"BODY"!==t.nodeName;){if(t.scrollHeight>t.clientHeight){e=t;break}t=t.parentNode}return e},scrollIntoView:function(e,t){return jv(c,e,t)},placeCaretAt:function(e,t){return m($v(e,t,c.getDoc()))},getBoundingClientRect:function(){var e=h();return e.collapsed?Ds.fromRangeStart(e).getClientRects()[0]:e.getBoundingClientRect()},destroy:function(){s=l=f=null,o.destroy()}};return n=Kp(g),o=Wp(g,c),g.bookmarkManager=n,g.controlSelection=o,g}function fy(e){return Uy(e)&&e.data[0]===cu}function dy(e){return Uy(e)&&e.data[e.data.length-1]===cu}function hy(e){return e.ownerDocument.createTextNode(cu)}function my(e,t){return e?function(e){if(Uy(e.previousSibling))return dy(e.previousSibling)||e.previousSibling.appendData(cu),e.previousSibling;if(Uy(e))return fy(e)||e.insertData(0,cu),e;var t=hy(e);return e.parentNode.insertBefore(t,e),t}(t):function(e){if(Uy(e.nextSibling))return fy(e.nextSibling)||e.nextSibling.insertData(0,cu),e.nextSibling;if(Uy(e))return dy(e)||e.appendData(cu),e;var t=hy(e);return e.nextSibling?e.parentNode.insertBefore(t,e.nextSibling):e.parentNode.appendChild(t),t}(t)}function gy(e,t){return Ge.isText(e.container())?my(t,e.container()):my(t,e.getNode())}function py(e,t){var n=t.get();return n&&e.container()===n&&Ra(n)}function vy(e,t){if(!t)return t;var n=t.container(),r=t.offset();return e?Ra(n)?Ge.isText(n.nextSibling)?Ds(n.nextSibling,0):Ds.after(n):Ba(t)?Ds(n,r+1):t:Ra(n)?Ge.isText(n.previousSibling)?Ds(n.previousSibling,n.previousSibling.data.length):Ds.before(n):Oa(t)?Ds(n,r-1):t}function yy(e,t){var n=bs(t,e);return n||e}function by(e,t,n){var r=Ky.normalizeForwards(n),o=yy(t,r.container());return Ky.findRootInline(e,o,r).fold(function(){return Pc.nextPosition(o,r).bind(d(Ky.findRootInline,e,o)).map(function(e){return Yy.before(e)})},k.none)}function Cy(e,t){return null===os(e,t)}function wy(e,t,n){return Ky.findRootInline(e,t,n).filter(d(Cy,t))}function xy(e,t,n){var r=Ky.normalizeBackwards(n);return wy(e,t,r).bind(function(e){return Pc.prevPosition(e,r).isNone()?k.some(Yy.start(e)):k.none()})}function zy(e,t,n){var r=Ky.normalizeForwards(n);return wy(e,t,r).bind(function(e){return Pc.nextPosition(e,r).isNone()?k.some(Yy.end(e)):k.none()})}function Ey(e,t,n){var r=Ky.normalizeBackwards(n),o=yy(t,r.container());return Ky.findRootInline(e,o,r).fold(function(){return Pc.prevPosition(o,r).bind(d(Ky.findRootInline,e,o)).map(function(e){return Yy.after(e)})},k.none)}function Ny(e){return!1===Ky.isRtl(Gy(e))}function Sy(e,t,n){return Xy([by,xy,zy,Ey],[e,t,n]).filter(Ny)}function ky(e){return e.fold($("before"),$("start"),$("end"),$("after"))}function Ty(e){return e.fold(Yy.before,Yy.before,Yy.after,Yy.after)}function Ay(n,e,r,t,o,i){return Ya(Ky.findRootInline(e,r,t),Ky.findRootInline(e,r,o),function(e,t){return e!==t&&Ky.hasSameParentBlock(r,e,t)?Yy.after(n?e:t):i}).getOr(i)}function My(e,t){return e.fold($(!0),function(e){return!function(e,t){return ky(e)===ky(t)&&Gy(e)===Gy(t)}(e,t)})}function Ry(e,t){return e?t.fold(q(k.some,Yy.start),k.none,q(k.some,Yy.after),k.none):t.fold(k.none,q(k.some,Yy.before),k.none,q(k.some,Yy.end))}function Dy(e,t,n,r){var o=Ky.normalizePosition(e,r),i=Sy(t,n,o);return Sy(t,n,o).bind(d(Ry,e)).orThunk(function(){return function(t,n,r,o,e){var i=Ky.normalizePosition(t,e);return Pc.fromPosition(t,r,i).map(d(Ky.normalizePosition,t)).fold(function(){return o.map(Ty)},function(e){return Sy(n,r,e).map(d(Ay,t,n,r,i,e)).filter(d(My,o))}).filter(Ny)}(e,t,n,i,r)})}function _y(e){return D(e.selection.getSel().modify)}function By(e,t,n){var r=e?1:-1;return t.setRng(Ds(n.container(),n.offset()+r).toRange()),t.getSel().modify("move",e?"forward":"backward","word"),!0}function Oy(e,t){var n=e.dom.createRng();n.setStart(t.container(),t.offset()),n.setEnd(t.container(),t.offset()),e.selection.setRng(n)}function Hy(e){return!1!==e.settings.inline_boundaries}function Py(e,t){e?t.setAttribute("data-mce-selected","inline-boundary"):t.removeAttribute("data-mce-selected")}function Ly(t,e,n){return $y(e,n).map(function(e){return Oy(t,e),n})}function Vy(e,t,n){return function(){return!!Hy(t)&&tb(e,t)}}var Iy,Fy,Uy=Ge.isText,jy=d(my,!0),qy=d(my,!1),$y=function(n,e){return e.fold(function(e){qs.remove(n.get());var t=jy(e);return n.set(t),k.some(Ds(t,t.length-1))},function(e){return Pc.firstPositionIn(e).map(function(e){if(py(e,n))return Ds(n.get(),1);qs.remove(n.get());var t=gy(e,!0);return n.set(t),Ds(t,1)})},function(e){return Pc.lastPositionIn(e).map(function(e){if(py(e,n))return Ds(n.get(),n.get().length-1);qs.remove(n.get());var t=gy(e,!1);return n.set(t),Ds(t,t.length-1)})},function(e){qs.remove(n.get());var t=qy(e);return n.set(t),k.some(Ds(t,1))})},Wy=/[\u0591-\u07FF\uFB1D-\uFDFF\uFE70-\uFEFC]/,Ky={isInlineTarget:function(e,t){return we(yt.fromDom(t),If(e))},findRootInline:function(e,t,n){var r=function(e,t,n){return y(Xi.DOM.getParents(n.container(),"*",t),e)}(e,t,n);return k.from(r[r.length-1])},isRtl:function(e){return"rtl"===Xi.DOM.getStyle(e,"direction",!0)||function(e){return Wy.test(e)}(e.textContent)},isAtZwsp:function(e){return Ba(e)||Oa(e)},normalizePosition:vy,normalizeForwards:d(vy,!0),normalizeBackwards:d(vy,!1),hasSameParentBlock:function(e,t,n){var r=bs(t,e),o=bs(n,e);return r&&r===o}},Xy=function(e,t){for(var n=0;n<e.length;n++){var r=e[n].apply(null,t);if(r.isSome())return r}return k.none()},Yy=jf([{before:["element"]},{start:["element"]},{end:["element"]},{after:["element"]}]),Gy=function(e){return e.fold(W,W,W,W)},Jy=Sy,Qy=Dy,Zy=(d(Dy,!1),d(Dy,!0),Ty),eb=function(e){return e.fold(Yy.start,Yy.start,Yy.end,Yy.end)},tb=function(e,t){var n=t.selection.getRng(),r=e?Ds.fromRangeEnd(n):Ds.fromRangeStart(n);return!!_y(t)&&(e&&Ba(r)?By(!0,t.selection,r):!(e||!Oa(r))&&By(!1,t.selection,r))},nb={move:function(e,t,n){return function(){return!!Hy(e)&&function(t,n,e){var r=t.getBody(),o=Ds.fromRangeStart(t.selection.getRng()),i=d(Ky.isInlineTarget,t);return Qy(e,i,r,o).bind(function(e){return Ly(t,n,e)})}(e,t,n).isSome()}},moveNextWord:d(Vy,!0),movePrevWord:d(Vy,!1),setupSelectedState:function(t){var n=Je(null),r=d(Ky.isInlineTarget,t);return t.on("NodeChange",function(e){Hy(t)&&(function(e,t,n){var r=y(t.select('*[data-mce-selected="inline-boundary"]'),e),o=y(n,e);z(x(r,o),d(Py,!1)),z(x(o,r),d(Py,!0))}(r,t.dom,e.parents),function(e,t){if(e.selection.isCollapsed()&&!0!==e.composing&&t.get()){var n=Ds.fromRangeStart(e.selection.getRng());Ds.isTextPosition(n)&&!1===Ky.isAtZwsp(n)&&(Oy(e,qs.removeAndReposition(t.get(),n)),t.set(null))}}(t,n),function(n,r,o,e){if(r.selection.isCollapsed()){var t=y(e,n);z(t,function(e){var t=Ds.fromRangeStart(r.selection.getRng());Jy(n,r.getBody(),t).bind(function(e){return Ly(r,o,e)})})}}(r,t,n,e.parents))}),n},setCaretPosition:Oy};(Fy=Iy=Iy||{})[Fy.Br=0]="Br",Fy[Fy.Block=1]="Block",Fy[Fy.Wrap=2]="Wrap",Fy[Fy.Eol=3]="Eol";function rb(e,t){return e===Ms.Backwards?t.reverse():t}function ob(e,t,n,r){for(var o,i,a,u,s,c,l=rc(n),f=r,d=[];f&&(s=l,c=f,o=t===Ms.Forwards?s.next(c):s.prev(c));){if(Ge.isBr(o.getNode(!1)))return t===Ms.Forwards?{positions:rb(t,d).concat([o]),breakType:Iy.Br,breakAt:k.some(o)}:{positions:rb(t,d),breakType:Iy.Br,breakAt:k.some(o)};if(o.isVisible()){if(e(f,o)){var h=(i=t,a=f,u=o,Ge.isBr(u.getNode(i===Ms.Forwards))?Iy.Br:!1===Cs(a,u)?Iy.Block:Iy.Wrap);return{positions:rb(t,d),breakType:h,breakAt:k.some(o)}}d.push(o),f=o}else f=o}return{positions:rb(t,d),breakType:Iy.Eol,breakAt:k.none()}}function ib(n,r,o,e){return r(o,e).breakAt.map(function(e){var t=r(o,e).positions;return n===Ms.Backwards?t.concat(e):[e].concat(t)}).getOr([])}function ab(e,i){return b(e,function(e,o){return e.fold(function(){return k.some(o)},function(r){return Ya(E(r.getClientRects()),E(o.getClientRects()),function(e,t){var n=Math.abs(i-e.left);return Math.abs(i-t.left)<=n?o:r}).or(e)})},k.none())}function ub(t,e){return E(e.getClientRects()).bind(function(e){return ab(t,e.left)})}function sb(e,t,n,r){var o=e===Ms.Forwards,i=o?Ph:Lh;if(!r.collapsed){var a=bx(r);if(yx(a))return Zh(e,t,a,e===Ms.Backwards,!0)}var u=function(e){return Ma(e.startContainer)}(r),s=Ss(e,t.getBody(),r);if(i(s))return em(t,s.getNode(!o));var c=Ky.normalizePosition(o,n(s));if(!c)return u?r:null;if(i(c))return Zh(e,t,c.getNode(!o),o,!0);var l=n(c);return l&&i(l)&&As(c,l)?Zh(e,t,l.getNode(!o),o,!0):u?nm(t,c.toRange(),!0):null}function cb(e,t,n,r){var o,i,a,u,s,c,l,f,d;if(d=bx(r),o=Ss(e,t.getBody(),r),i=n(t.getBody(),Ih(1),o),a=y(i,Fh(1)),s=kn.last(o.getClientRects()),(Ph(o)||Oh(o))&&(d=o.getNode()),(Lh(o)||Hh(o))&&(d=o.getNode(!0)),!s)return null;if(c=s.left,(u=$h(a,c))&&yx(u.node))return l=Math.abs(c-u.left),f=Math.abs(c-u.right),Zh(e,t,u.node,l<f,!0);if(d){var h=function(e,t,n,r){function o(e){return kn.last(e.getClientRects())}var i,a,u,s,c,l,f=rc(t),d=[],h=0;l=o(s=1===e?(i=f.next,a=qa,u=ja,Ds.after(r)):(i=f.prev,a=ja,u=qa,Ds.before(r)));do{if(s.isVisible()&&!u(c=o(s),l)){if(0<d.length&&a(c,kn.last(d))&&h++,(c=Ia(c)).position=s,c.line=h,n(c))return d;d.push(c)}}while(s=i(s));return d}(e,t.getBody(),Ih(1),d);if(u=$h(y(h,Fh(1)),c))return nm(t,u.position.toRange(),!0);if(u=kn.last(y(h,Fh(0))))return nm(t,u.position.toRange(),!0)}}function lb(e,t,n){var r,o,i=rc(e.getBody()),a=d(Ts,i.next),u=d(Ts,i.prev);if(n.collapsed&&e.settings.forced_root_block){if(!(r=e.dom.getParent(n.startContainer,"PRE")))return;(1===t?a(Ds.fromRangeStart(n)):u(Ds.fromRangeStart(n)))||(o=function(e){var t=e.dom.create(mf(e));return(!Nn.ie||11<=Nn.ie)&&(t.innerHTML='<br data-mce-bogus="1">'),t}(e),1===t?e.$(r).after(o):e.$(r).before(o),e.selection.select(o,!0),e.selection.collapse())}}function fb(t,n){return function(){var e=function(e,t){var n,r=rc(e.getBody()),o=d(Ts,r.next),i=d(Ts,r.prev),a=t?Ms.Forwards:Ms.Backwards,u=t?o:i,s=e.selection.getRng();return(n=sb(a,e,u,s))?n:(n=lb(e,a,s))||null}(t,n);return!!e&&(t.selection.setRng(e),!0)}}function db(t,n){return function(){var e=function(e,t){var n,r=t?1:-1,o=t?Xm:Km,i=e.selection.getRng();return(n=cb(r,e,o,i))?n:(n=lb(e,r,i))||null}(t,n);return!!e&&(t.selection.setRng(e),!0)}}function hb(n,r){return function(){var e=r?Ds.fromRangeEnd(n.selection.getRng()):Ds.fromRangeStart(n.selection.getRng()),t=r?gx(n.getBody(),e):mx(n.getBody(),e);return(r?N(t.positions):E(t.positions)).filter(function(t){return function(e){return t?Lh(e):Ph(e)}}(r)).fold($(!1),function(e){return n.selection.setRng(e.toRange()),!0})}}function mb(e,t,n,r,o){var i=ma(yt.fromDom(n),"td,th,caption").map(function(e){return e.dom()});return function(e,o,i){return b(e,function(e,r){return e.fold(function(){return k.some(r)},function(e){var t=Math.sqrt(Math.abs(e.x-o)+Math.abs(e.y-i)),n=Math.sqrt(Math.abs(r.x-o)+Math.abs(r.y-i));return k.some(n<t?r:e)})},k.none())}(y(function(n,e){return v(e,function(e){var t=function(e,t){return{left:e.left-t,top:e.top-t,right:e.right+2*t,bottom:e.bottom+2*t,width:e.width+t,height:e.height+t}}(Ia(e.getBoundingClientRect()),-1);return[{x:t.left,y:n(t),cell:e},{x:t.right,y:n(t),cell:e}]})}(e,i),function(e){return t(e,o)}),r,o).map(function(e){return e.cell})}function gb(t,n){return E(n.getClientRects()).bind(function(e){return Cx(t,e.left,e.top)}).bind(function(e){return ub(function(t){return Pc.lastPositionIn(t).map(function(e){return mx(t,e).positions.concat(e)}).getOr([])}(e),n)})}function pb(t,n){return N(n.getClientRects()).bind(function(e){return wx(t,e.left,e.top)}).bind(function(e){return ub(function(t){return Pc.firstPositionIn(t).map(function(e){return[e].concat(gx(t,e).positions)}).getOr([])}(e),n)})}function vb(e,t){e.selection.setRng(t),qv(e,t)}function yb(e,t,n){var r=e(t,n);return function(e){return e.breakType===Iy.Wrap&&0===e.positions.length}(r)||!Ge.isBr(n.getNode())&&function(e){return e.breakType===Iy.Br&&1===e.positions.length}(r)?!function(t,n,e){return e.breakAt.map(function(e){return t(n,e).breakAt.isSome()}).getOr(!1)}(e,t,r):r.breakAt.isNone()}function bb(e,t,n,r){var o=e.selection.getRng(),i=t?1:-1;if(hs()&&function(e,t,n){var r=Ds.fromRangeStart(t);return Pc.positionIn(!e,n).map(function(e){return e.isEqual(r)}).getOr(!1)}(t,o,n)){var a=Zh(i,e,n,!t,!0);return vb(e,a),!0}return!1}function Cb(e,t){var n=t.getNode(e);return Ge.isElement(n)&&"TABLE"===n.nodeName?k.some(n):k.none()}function wb(n,r,o){var e=Cb(!!r,o),i=!1===r;e.fold(function(){return vb(n,o.toRange())},function(t){return Pc.positionIn(i,n.getBody()).filter(function(e){return e.isEqual(o)}).fold(function(){return vb(n,o.toRange())},function(e){return function(n,r,o,e){var i=mf(r);i?r.undoManager.transact(function(){var e=yt.fromTag(i);me(e,gf(r)),Di(e,yt.fromTag("br")),n?wi(yt.fromDom(o),e):Ci(yt.fromDom(o),e);var t=r.dom.createRng();t.setStart(e.dom(),0),t.setEnd(e.dom(),0),vb(r,t)}):vb(r,e.toRange())}(r,n,t,o)})})}function xb(e,t,n,r){var o=e.selection.getRng(),i=Ds.fromRangeStart(o),a=e.getBody();if(!t&&xx(r,i)){var u=function(t,n,e){return gb(n,e).orThunk(function(){return E(e.getClientRects()).bind(function(e){return ab(px(t,Ds.before(n)),e.left)})}).getOr(Ds.before(n))}(a,n,i);return wb(e,t,u),!0}if(t&&zx(r,i)){u=function(t,n,e){return pb(n,e).orThunk(function(){return E(e.getClientRects()).bind(function(e){return ab(vx(t,Ds.after(n)),e.left)})}).getOr(Ds.after(n))}(a,n,i);return wb(e,t,u),!0}return!1}function zb(t,n){return function(){return k.from(t.dom.getParent(t.selection.getNode(),"td,th")).bind(function(e){return k.from(t.dom.getParent(e,"table")).map(function(e){return bb(t,n,e)})}).getOr(!1)}}function Eb(n,r){return function(){return k.from(n.dom.getParent(n.selection.getNode(),"td,th")).bind(function(t){return k.from(n.dom.getParent(t,"table")).map(function(e){return xb(n,r,e,t)})}).getOr(!1)}}function Nb(e){return h(["figcaption"],ie(e))}function Sb(e){var t=j.document.createRange();return t.setStartBefore(e.dom()),t.setEndBefore(e.dom()),t}function kb(e,t,n){n?Di(e,t):xi(e,t)}function Tb(e,t,n,r){return""===t?function(e,t){var n=yt.fromTag("br");return kb(e,n,t),Sb(n)}(e,r):function(e,t,n,r){var o=yt.fromTag(n),i=yt.fromTag("br");return me(o,r),Di(o,i),kb(e,o,t),Sb(i)}(e,r,t,n)}function Ab(e,t,n){return t?function(e,t){return gx(e,t).breakAt.isNone()}(e.dom(),n):function(e,t){return mx(e,t).breakAt.isNone()}(e.dom(),n)}function Mb(t,n){var r=yt.fromDom(t.getBody()),o=Ds.fromRangeStart(t.selection.getRng()),i=mf(t),a=gf(t);return function(e,t){var n=d(ze,t);return ba(yt.fromDom(e.container()),Vn,n).filter(Nb)}(o,r).exists(function(){if(Ab(r,n,o)){var e=Tb(r,i,a,n);return t.selection.setRng(e),!0}return!1})}function Rb(e,t){return function(){return!!e.selection.isCollapsed()&&Mb(e,t)}}function Db(e,t){return v(function(e){return X(e,function(e){return bd({shiftKey:!1,altKey:!1,ctrlKey:!1,metaKey:!1,keyCode:0,action:i},e)})}(e),function(e){return function(e,t){return t.keyCode===e.keyCode&&t.shiftKey===e.shiftKey&&t.altKey===e.altKey&&t.ctrlKey===e.ctrlKey&&t.metaKey===e.metaKey}(e,t)?[e]:[]})}function _b(e,t){return{from:$(e),to:$(t)}}function Bb(e,t){var n=yt.fromDom(e),r=yt.fromDom(t.container());return kx(n,r).map(function(e){return function(e,t){return{block:$(e),position:$(t)}}(e,t)})}function Ob(t,n,e){var r=Bb(t,Ds.fromRangeStart(e)),o=r.bind(function(e){return Pc.fromPosition(n,t,e.position()).bind(function(e){return Bb(t,e).map(function(e){return function(t,n,r){return Ge.isBr(r.position().getNode())&&!1===kg(r.block())?Pc.positionIn(!1,r.block().dom()).bind(function(e){return e.isEqual(r.position())?Pc.fromPosition(n,t,e).bind(function(e){return Bb(t,e)}):k.some(r)}).getOr(r):r}(t,n,e)})})});return Ya(r,o,_b).filter(function(e){return function(e){return!1===ze(e.from().block(),e.to().block())}(e)&&function(e){return Se(e.from().block()).bind(function(t){return Se(e.to().block()).filter(function(e){return ze(t,e)})}).isSome()}(e)&&function(e){return!1===Ge.isContentEditableFalse(e.from().block().dom())&&!1===Ge.isContentEditableFalse(e.to().block().dom())}(e)})}function Hb(e){var t=function(e){var t=Re(e);return p(t,Vn).fold(function(){return t},function(e){return t.slice(0,e)})}(e);return z(t,_i),t}function Pb(e,t){var n=fh(t,e);return g(n.reverse(),kg).each(_i)}function Lb(e,t,n,r){if(kg(n))return bg(n),Pc.firstPositionIn(n.dom());(function(e){return 0===y(Ae(e),function(e){return!kg(e)}).length})(r)&&kg(t)&&Ci(r,yt.fromTag("br"));var o=Pc.prevPosition(n.dom(),Ds.before(r.dom()));return z(Hb(t),function(e){Ci(r,e)}),Pb(e,t),o}function Vb(e,t,n){if(kg(n))return _i(n),kg(t)&&bg(t),Pc.firstPositionIn(t.dom());var r=Pc.lastPositionIn(n.dom());return z(Hb(t),function(e){Di(n,e)}),Pb(e,t),r}function Ib(e,t){return Bt(t,e)?function(e,t){var n=fh(t,e);return k.from(n[n.length-1])}(t,e):k.none()}function Fb(e,t){Pc.positionIn(e,t.dom()).map(function(e){return e.getNode()}).map(yt.fromDom).filter(_n).each(_i)}function Ub(e,t,n){return Fb(!0,t),Fb(!1,n),Ib(t,n).fold(d(Vb,e,t,n),d(Lb,e,t,n))}function jb(e,t){var n=yt.fromDom(t),r=d(ze,e);return ya(n,$n,r).isSome()}function qb(e,t){var n=Pc.prevPosition(e.dom(),Ds.fromRangeStart(t)).isNone(),r=Pc.nextPosition(e.dom(),Ds.fromRangeEnd(t)).isNone();return!function(e,t){return jb(e,t.startContainer)||jb(e,t.endContainer)}(e,t)&&n&&r}function $b(e){var t=yt.fromDom(e.getBody()),n=e.selection.getRng();return qb(t,n)?function(e){return e.setContent(""),e.selection.setCursorLocation(),!0}(e):function(n,r){var o=r.getRng();return Ya(kx(n,yt.fromDom(o.startContainer)),kx(n,yt.fromDom(o.endContainer)),function(e,t){return!1===ze(e,t)&&(o.deleteContents(),Rx(n,!0,e,t).each(function(e){r.setRng(e.toRange())}),!0)}).getOr(!1)}(t,e.selection)}function Wb(e){return ks(e).exists(_n)}function Kb(e,t,n){var r=y(fh(yt.fromDom(n.container()),t),Vn),o=E(r).getOr(t);return Pc.fromPosition(e,o.dom(),n).filter(Wb)}function Xb(e,t){return ks(t).exists(_n)||Kb(!0,e,t).isSome()}function Yb(e,t){return function(e){return k.from(e.getNode(!0)).map(yt.fromDom)}(t).exists(_n)||Kb(!1,e,t).isSome()}function Gb(e,t,n,r){var o=r.getNode(!1===t);return kx(yt.fromDom(e),yt.fromDom(n.getNode())).map(function(e){return kg(e)?Hx.remove(e.dom()):Hx.moveToElement(o)}).orThunk(function(){return k.some(Hx.moveToElement(o))})}function Jb(t,n,r){return Pc.fromPosition(n,t,r).bind(function(e){return function(e){return $n(yt.fromDom(e))||Un(yt.fromDom(e))}(e.getNode())?k.none():function(t,e,n,r){function o(e){return Dn(yt.fromDom(e))&&!Cs(n,r,t)}return Ns(!e,n).fold(function(){return Ns(e,r).fold($(!1),o)},o)}(t,n,r,e)?k.none():n&&Ge.isContentEditableFalse(e.getNode())?Gb(t,n,r,e):!1===n&&Ge.isContentEditableFalse(e.getNode(!0))?Gb(t,n,r,e):n&&Lh(r)?k.some(Hx.moveToPosition(e)):!1===n&&Ph(r)?k.some(Hx.moveToPosition(e)):k.none()})}function Qb(t,e,n){return function(e,t){var n=t.getNode(!1===e),r=e?"after":"before";return Ge.isElement(n)&&n.getAttribute("data-mce-caret")===r}(e,n)?function(e,t){return e&&Ge.isContentEditableFalse(t.nextSibling)?k.some(Hx.moveToElement(t.nextSibling)):!1===e&&Ge.isContentEditableFalse(t.previousSibling)?k.some(Hx.moveToElement(t.previousSibling)):k.none()}(e,n.getNode(!1===e)).fold(function(){return Jb(t,e,n)},k.some):Jb(t,e,n).bind(function(e){return function(t,n,e){return e.fold(function(e){return k.some(Hx.remove(e))},function(e){return k.some(Hx.moveToElement(e))},function(e){return Cs(n,e,t)?k.none():k.some(Hx.moveToPosition(e))})}(t,n,e)})}function Zb(e,t){return k.from(Px(e.getBody(),t))}function eC(t,n){var e=t.selection.getNode();return Zb(t,e).filter(Ge.isContentEditableFalse).fold(function(){return function(e,t,n){var r=Es(t?1:-1,e,n),o=Ds.fromRangeStart(r),i=yt.fromDom(e);return!1===t&&Lh(o)?k.some(Hx.remove(o.getNode(!0))):t&&Ph(o)?k.some(Hx.remove(o.getNode())):!1===t&&Ph(o)&&Yb(i,o)?Bx(i,o).map(function(e){return Hx.remove(e.getNode())}):t&&Lh(o)&&Xb(i,o)?Ox(i,o).map(function(e){return Hx.remove(e.getNode())}):Qb(e,t,o)}(t.getBody(),n,t.selection.getRng()).map(function(e){return e.fold(function(t,n){return function(e){return t._selectionOverrides.hideFakeCaret(),Tg(t,n,yt.fromDom(e)),!0}}(t,n),function(n,r){return function(e){var t=r?Ds.before(e):Ds.after(e);return n.selection.setRng(t.toRange()),!0}}(t,n),function(t){return function(e){return t.selection.setRng(e.toRange()),!0}}(t))}).getOr(!1)},function(){return!0})}function tC(e,t){var n=e.selection.getNode();return!!Ge.isContentEditableFalse(n)&&Zb(e,n.parentNode).filter(Ge.isContentEditableFalse).fold(function(){return function(e){z(ma(e,".mce-offscreen-selection"),_i)}(yt.fromDom(e.getBody())),Tg(e,t,yt.fromDom(e.selection.getNode())),Tx(e),!0},function(){return!0})}function nC(e,t,n,r,o,i){var a=Zh(r,e,i.getNode(!o),o,!0);if(t.collapsed){var u=t.cloneRange();o?u.setEnd(a.startContainer,a.startOffset):u.setStart(a.endContainer,a.endOffset),u.deleteContents()}else t.deleteContents();return e.selection.setRng(a),function(e,t){Ge.isText(t)&&0===t.data.length&&e.remove(t)}(e.dom,n),!0}function rC(t,n){return function(e){return $y(n,e).map(function(e){return nb.setCaretPosition(t,e),!0}).getOr(!1)}}function oC(e,t,n,r){var o=e.getBody(),i=d(Ky.isInlineTarget,e);e.undoManager.ignore(function(){e.selection.setRng(function(e,t){var n=j.document.createRange();return n.setStart(e.container(),e.offset()),n.setEnd(t.container(),t.offset()),n}(n,r)),e.execCommand("Delete"),Jy(i,o,Ds.fromRangeStart(e.selection.getRng())).map(eb).map(rC(e,t))}),e.nodeChanged()}function iC(n,r,o,i){var a=function(e,t){var n=bs(t,e);return n||e}(n.getBody(),i.container()),u=d(Ky.isInlineTarget,n),s=Jy(u,a,i);return s.bind(function(e){return o?e.fold($(k.some(eb(e))),k.none,$(k.some(Zy(e))),k.none):e.fold(k.none,$(k.some(Zy(e))),k.none,$(k.some(eb(e))))}).map(rC(n,r)).getOrThunk(function(){var t=Pc.navigate(o,a,i),e=t.bind(function(e){return Jy(u,a,e)});return s.isSome()&&e.isSome()?Ky.findRootInline(u,a,i).map(function(e){return!!function(o){return Ya(Pc.firstPositionIn(o),Pc.lastPositionIn(o),function(e,t){var n=Ky.normalizePosition(!0,e),r=Ky.normalizePosition(!1,t);return Pc.nextPosition(o,n).map(function(e){return e.isEqual(r)}).getOr(!0)}).getOr(!0)}(e)&&(Tg(n,o,yt.fromDom(e)),!0)}).getOr(!1):e.bind(function(e){return t.map(function(e){return o?oC(n,r,i,e):oC(n,r,e,i),!0})}).getOr(!1)})}function aC(e){return 1===Re(e).length}function uC(e,t,n,r){var o=d(qm,t),i=X(y(r,o),function(e){return e.dom()});if(0===i.length)Tg(t,e,n);else{var a=function(e,t){var n=Pm(!1),r=Um(t,n.dom());return Ci(yt.fromDom(e),n),_i(yt.fromDom(e)),Ds(r,0)}(n.dom(),i);t.selection.setRng(a.toRange())}}function sC(n,r){var e=yt.fromDom(n.getBody()),t=yt.fromDom(n.selection.getStart()),o=y(function(e,t){var n=fh(t,e);return p(n,Vn).fold($(n),function(e){return n.slice(0,e)})}(e,t),aC);return N(o).map(function(e){var t=Ds.fromRangeStart(n.selection.getRng());return!(!Ax(r,t,e.dom())||function(e){return rs(e.dom())&&Om(e.dom())}(e))&&(uC(r,n,e,o),!0)}).getOr(!1)}function cC(e,t){return{start:$(e),end:$(t)}}function lC(e,t){return xa(yt.fromDom(e),"td,th",t)}function fC(e,t){return Ca(e,"table",t)}function dC(e){return!1===ze(e.start(),e.end())}function hC(e,n){return fC(e.start(),n).bind(function(t){return fC(e.end(),n).bind(function(e){return function(e,t){return e?k.some(t):k.none()}(ze(t,e),t)})})}function mC(e){return ma(e,"td,th")}function gC(n,e){var t=lC(e.startContainer,n),r=lC(e.endContainer,n);return e.collapsed?k.none():Ya(t,r,cC).fold(function(){return t.fold(function(){return r.bind(function(t){return fC(t,n).bind(function(e){return E(mC(e)).map(function(e){return cC(e,t)})})})},function(t){return fC(t,n).bind(function(e){return N(mC(e)).map(function(e){return cC(t,e)})})})},function(e){return qx(n,e)?k.none():function(t,e){return fC(t.start(),e).bind(function(e){return N(mC(e)).map(function(e){return cC(t.start(),e)})})}(e,n)})}function pC(t,e){return hC(t,e).map(function(e){return function(e,t,n){return{rng:$(e),table:$(t),cells:$(n)}}(t,e,mC(e))})}function vC(e,t){var n=function(t){return function(e){return ze(t,e)}}(e);return function(e,t){var n=lC(e.startContainer,t),r=lC(e.endContainer,t);return Ya(n,r,cC).filter(dC).filter(function(e){return qx(t,e)}).orThunk(function(){return gC(t,e)})}(t,n).bind(function(e){return pC(e,n)})}function yC(e,t){return p(e,function(e){return ze(e,t)})}function bC(n){return function(n){return Ya(yC(n.cells(),n.rng().start()),yC(n.cells(),n.rng().end()),function(e,t){return n.cells().slice(e,t+1)})}(n).map(function(e){var t=n.cells();return e.length===t.length?jx.removeTable(n.table()):jx.emptyCells(e)})}function CC(e,t){return z(t,bg),e.selection.setCursorLocation(t[0].dom(),0),!0}function wC(e,t){return Tg(e,!1,t),!0}function xC(t,e,n){return function(e,t){return vC(e,t).bind(bC)}(e,n).map(function(e){return e.fold(d(wC,t),d(CC,t))})}function zC(t,e,n,r){return $x(e,r).fold(function(){return xC(t,e,n)},function(e){return function(e,t){return Wx(e,t)}(t,e)}).getOr(!1)}function EC(e,t){return g(fh(t,e),$n)}function NC(t,n,r,o,i){return Pc.navigate(r,t.getBody(),i).bind(function(e){return function(e,n,r,o){return Pc.firstPositionIn(e.dom()).bind(function(t){return Pc.lastPositionIn(e.dom()).map(function(e){return n?r.isEqual(t)&&o.isEqual(e):r.isEqual(e)&&o.isEqual(t)})}).getOr(!0)}(o,r,i,e)?function(e,t){return Wx(e,t)}(t,o):function(e,t,n){return $x(e,yt.fromDom(n.getNode())).map(function(e){return!1===ze(e,t)})}(n,o,e)}).or(k.some(!0))}function SC(t,n,r,e){var o=Ds.fromRangeStart(t.selection.getRng());return EC(r,e).bind(function(e){return kg(e)?Wx(t,e):function(e,t,n,r,o){return Pc.navigate(n,e.getBody(),o).bind(function(e){return EC(t,yt.fromDom(e.getNode())).map(function(e){return!1===ze(e,r)})})}(t,r,n,e,o)}).getOr(!1)}function kC(e,t){return e?Oh(t):Hh(t)}function TC(t,n,e){var r=yt.fromDom(t.getBody());return $x(r,e).fold(function(){return SC(t,n,r,e)||function(e,t){var n=Ds.fromRangeStart(e.selection.getRng());return kC(t,n)||Pc.fromPosition(t,e.getBody(),n).map(function(e){return kC(t,e)}).getOr(!1)}(t,n)},function(e){return function(e,t,n,r){var o=Ds.fromRangeStart(e.selection.getRng());return kg(r)?Wx(e,r):NC(e,n,t,r,o)}(t,n,r,e).getOr(!1)})}function AC(e){var t=parseInt(e,10);return isNaN(t)?0:t}function MC(e,t){return(e||function(e){return"table"===ie(e)}(t)?"margin":"padding")+("rtl"===ve(t,"direction")?"-right":"-left")}function RC(e){var t=Yx(e);return!0!==e.readonly&&(1<t.length||function(r,e){return w(e,function(e){var t=MC(Hf(r),e),n=ye(e,t).map(AC).getOr(0);return"false"!==r.dom.getContentEditable(e.dom())&&0<n})}(e,t))}function DC(e){return Fn(e)||Un(e)}function _C(e,t){var n=e.dom,r=e.selection,o=e.formatter,i=Pf(e),a=/[a-z%]+$/i.exec(i)[0],u=parseInt(i,10),s=Hf(e),c=mf(e);e.queryCommandState("InsertUnorderedList")||e.queryCommandState("InsertOrderedList")||""!==c||n.getParent(r.getNode(),n.isBlock)||o.apply("div"),z(Yx(e),function(e){!function(e,t,n,r,o,i){var a=MC(n,yt.fromDom(i));if("outdent"===t){var u=Math.max(0,AC(i.style[a])-r);e.setStyle(i,a,u?u+o:"")}else{u=AC(i.style[a])+r+o;e.setStyle(i,a,u)}}(n,t,s,u,a,e.dom())})}function BC(e,t,n){return Pc.navigateIgnore(e,t,n,wh)}function OC(e,t){return g(fh(yt.fromDom(t.container()),e),Vn)}function HC(e,n,r){return BC(e,n.dom(),r).forall(function(t){return OC(n,r).fold(function(){return!1===Cs(t,r,n.dom())},function(e){return!1===Cs(t,r,n.dom())&&Bt(e,yt.fromDom(t.container()))})})}function PC(t,n,r){return OC(n,r).fold(function(){return BC(t,n.dom(),r).forall(function(e){return!1===Cs(e,r,n.dom())})},function(e){return BC(t,e.dom(),r).isNone()})}function LC(e){return k.from(e.dom.getParent(e.selection.getStart(!0),e.dom.isBlock))}function VC(e,t){return e&&e.parentNode&&e.parentNode.nodeName===t}function IC(e){return e&&/^(OL|UL|LI)$/.test(e.nodeName)}function FC(e){var t=e.parentNode;return/^(LI|DT|DD)$/.test(t.nodeName)?t:e}function UC(e,t,n){for(var r=e[n?"firstChild":"lastChild"];r&&!Ge.isElement(r);)r=r[n?"nextSibling":"previousSibling"];return r===t}function jC(e){e.innerHTML='<br data-mce-bogus="1">'}function qC(e,t){return e.nodeName===t||e.previousSibling&&e.previousSibling.nodeName===t}function $C(e,t){return t&&e.isBlock(t)&&!/^(TD|TH|CAPTION|FORM)$/.test(t.nodeName)&&!/^(fixed|absolute)/i.test(t.style.position)&&"true"!==e.getContentEditable(t)}function WC(e,t,n){return!1===Ge.isText(t)?n:e?1===n&&t.data.charAt(n-1)===cu?0:n:n===t.data.length-1&&t.data.charAt(n)===cu?t.data.length:n}function KC(e,t){var n,r,o=e.getRoot();for(n=t;n!==o&&"false"!==e.getContentEditable(n);)"true"===e.getContentEditable(n)&&(r=n),n=n.parentNode;return n!==o?r:o}function XC(e,t){var n=mf(e);n&&n.toLowerCase()===t.tagName.toLowerCase()&&e.dom.setAttribs(t,gf(e))}function YC(e,t,n){var r=e.create("span",{},"&nbsp;");n.parentNode.insertBefore(r,n),t.scrollIntoView(r),e.remove(r)}function GC(e,t,n,r){var o=e.createRng();r?(o.setStartBefore(n),o.setEndBefore(n)):(o.setStartAfter(n),o.setEndAfter(n)),t.setRng(o)}function JC(e,t){var n,r,o=e.selection,i=e.dom,a=o.getRng();ay(i,a).each(function(e){a.setStart(e.startContainer,e.startOffset),a.setEnd(e.endContainer,e.endOffset)});var u=a.startOffset,s=a.startContainer;if(1===s.nodeType&&s.hasChildNodes()){var c=u>s.childNodes.length-1;s=s.childNodes[Math.min(u,s.childNodes.length-1)]||s,u=c&&3===s.nodeType?s.nodeValue.length:0}var l=i.getParent(s,i.isBlock),f=l?i.getParent(l.parentNode,i.isBlock):null,d=f?f.nodeName.toUpperCase():"",h=!(!t||!t.ctrlKey);"LI"!==d||h||(l=f),s&&3===s.nodeType&&u>=s.nodeValue.length&&!function(e,t,n){for(var r,o=new yi(t,n),i=e.getNonEmptyElements();r=o.next();)if(i[r.nodeName.toLowerCase()]||0<r.length)return!0}(e.schema,s,l)&&(n=i.create("br"),a.insertNode(n),a.setStartAfter(n),a.setEndAfter(n),r=!0),n=i.create("br"),Xu(i,a,n),YC(i,o,n),GC(i,o,n,r),e.undoManager.add()}function QC(e,t){var n=yt.fromTag("br");Ci(yt.fromDom(t),n),e.undoManager.add()}function ZC(e,t){cz(e.getBody(),t)||wi(yt.fromDom(t),yt.fromTag("br"));var n=yt.fromTag("br");wi(yt.fromDom(t),n),YC(e.dom,e.selection,n.dom()),GC(e.dom,e.selection,n.dom(),!1),e.undoManager.add()}function ew(e){return e&&"A"===e.nodeName&&"href"in e}function tw(e){return e.fold($(!1),ew,ew,$(!1))}function nw(e,t){t.fold(i,d(QC,e),d(ZC,e),i)}function rw(e,t){return oz(e).filter(function(e){return 0<t.length&&we(yt.fromDom(e),t)}).isSome()}function ow(e,t){return dz(e)}function iw(n){return function(e,t){return""===mf(e)===n}}function aw(n){return function(e,t){return az(e)===n}}function uw(n,r){return function(e,t){return iz(e)===n.toUpperCase()===r}}function sw(e){return uw("pre",e)}function cw(n){return function(e,t){return hf(e)===n}}function lw(e,t){return fz(e)}function fw(e,t){return t}function dw(e){var t=mf(e),n=rz(e.dom,e.selection.getStart());return n&&e.schema.isValidChild(n.nodeName,t||"P")}function hw(e,t){return function(n,r){return b(e,function(e,t){return e&&t(n,r)},!0)?k.some(t):k.none()}}function mw(n,r){var e=r.container(),t=r.offset();return Ge.isText(e)?(e.insertData(t,n),k.some(Uu(e,t+n.length))):ks(r).map(function(e){var t=yt.fromText(n);return r.isAtEnd()?wi(e,t):Ci(e,t),Uu(t.dom(),n.length)})}function gw(e){return Uu.isTextPosition(e)&&!e.isAtStart()&&!e.isAtEnd()}function pw(e,t){var n=y(fh(yt.fromDom(t.container()),e),Vn);return E(n).getOr(e)}function vw(e,t){return gw(t)?Dh(t):Dh(t)||Pc.prevPosition(pw(e,t).dom(),t).exists(Dh)}function yw(e,t){return gw(t)?Rh(t):Rh(t)||Pc.nextPosition(pw(e,t).dom(),t).exists(Rh)}function bw(e){return ks(e).bind(function(e){return ba(e,xt)}).exists(function(e){return function(e){return h(["pre","pre-wrap"],e)}(ve(e,"white-space"))})}function Cw(e,t){return function(e,t){return Pc.prevPosition(e.dom(),t).isNone()}(e,t)||function(e,t){return Pc.nextPosition(e.dom(),t).isNone()}(e,t)||Gx(e,t)||Jx(e,t)||Yb(e,t)||Xb(e,t)}function ww(e,t){var n=function(e){var t=e.container(),n=e.offset();return Ge.isText(t)&&n<t.data.length?Uu(t,n+1):e}(t);return!bw(n)&&(Jx(e,n)||Zx(e,n)||Xb(e,n)||yw(e,n))}function xw(e,t){return function(e,t){return!bw(t)&&(Gx(e,t)||Qx(e,t)||Yb(e,t)||vw(e,t))}(e,t)||ww(e,t)}function zw(e,t){return Mh(e.charAt(t))}function Ew(e){var t=e.container();return Ge.isText(t)&&Z(t.data,"\xa0")}function Nw(e){var t=e.data,n=function(e){var n=e.split("");return X(n,function(e,t){return Mh(e)&&0<t&&t<n.length-1&&bh(n[t-1])&&bh(n[t+1])?" ":e}).join("")}(t);return n!==t&&(e.data=n,!0)}function Sw(n,e){return k.some(e).filter(Ew).bind(function(e){var t=e.container();return function(e,t){var n=t.data,r=Uu(t,0);return!(!zw(n,0)||xw(e,r))&&(t.data=" "+n.slice(1),!0)}(n,t)||Nw(t)||function(e,t){var n=t.data,r=Uu(t,n.length-1);return!(!zw(n,n.length-1)||xw(e,r))&&(t.data=n.slice(0,-1)+" ",!0)}(n,t)?k.some(e):k.none()})}function kw(t){var e=yt.fromDom(t.getBody());t.selection.isCollapsed()&&Sw(e,Uu.fromRangeStart(t.selection.getRng())).each(function(e){t.selection.setRng(e.toRange())})}function Tw(t,n){return function(e){return function(e,t){return!bw(t)&&(Cw(e,t)||vw(e,t)||yw(e,t))}(t,e)?vz(n):yz(n)}}function Aw(e){var t=Ds.fromRangeStart(e.selection.getRng()),n=yt.fromDom(e.getBody());if(e.selection.isCollapsed()){var r=d(Ky.isInlineTarget,e),o=Ds.fromRangeStart(e.selection.getRng());return Jy(r,e.getBody(),o).bind(function(t){return function(e){return e.fold(function(e){return Pc.prevPosition(t.dom(),Ds.before(e))},function(e){return Pc.firstPositionIn(e)},function(e){return Pc.lastPositionIn(e)},function(e){return Pc.nextPosition(t.dom(),Ds.after(e))})}}(n)).bind(Tw(n,t)).exists(function(t){return function(e){return t.selection.setRng(e.toRange()),t.nodeChanged(),!0}}(e))}return!1}function Mw(e,t){t.hasAttribute("data-mce-caret")&&(Pa(t),function(e){e.selection.setRng(e.selection.getRng())}(e),e.selection.scrollIntoView(t))}function Rw(e,t){var n=function(e){return wa(yt.fromDom(e.getBody()),"*[data-mce-caret]").fold($(null),function(e){return e.dom()})}(e);if(n)return"compositionstart"===t.type?(t.preventDefault(),t.stopPropagation(),void Mw(e,n)):void(_a(n)&&(Mw(e,n),e.undoManager.add()))}function Dw(t){!function(e){var t=aa(function(){e.composing||kw(e)},0);wz.isIE()&&(e.on("keypress",function(e){t.throttle()}),e.on("remove",function(e){t.cancel()}))}(t),t.on("input",function(e){!1===e.isComposing&&kw(t)})}function _w(a){function e(e,t){try{a.getDoc().execCommand(e,!1,t)}catch(n){}}function u(e){return e.isDefaultPrevented()}function t(){a.shortcuts.add("meta+a",null,"SelectAll")}function n(){a.on("keydown",function(e){if(!u(e)&&e.keyCode===i&&l.isCollapsed()&&0===l.getRng().startOffset){var t=l.getNode().previousSibling;if(t&&t.nodeName&&"table"===t.nodeName.toLowerCase())return e.preventDefault(),!1}})}function r(){a.inline||(a.contentStyles.push("body {min-height: 150px}"),a.on("click",function(e){var t;if("HTML"===e.target.nodeName){if(11<Nn.ie)return void a.getBody().focus();t=a.selection.getRng(),a.getBody().focus(),a.selection.setRng(t),a.selection.normalize(),a.nodeChanged()}}))}var o=Mn.each,i=Ah.BACKSPACE,s=Ah.DELETE,c=a.dom,l=a.selection,f=a.settings,d=a.parser,h=Nn.gecko,m=Nn.ie,g=Nn.webkit,p="data:text/mce-internal,",v=m?"Text":"URL";function y(e){var t=c.create("body"),n=e.cloneContents();return t.appendChild(n),l.serializer.serialize(t,{format:"html"})}function b(){var e=c.getAttribs(l.getStart().cloneNode(!1));return function(){var t=l.getStart();t!==a.getBody()&&(c.setAttrib(t,"style",null),o(e,function(e){t.setAttributeNode(e.cloneNode(!0))}))}}function C(){return!l.isCollapsed()&&c.getParent(l.getStart(),c.isBlock)!==c.getParent(l.getEnd(),c.isBlock)}return a.on("keydown",function(e){var t,n,r,o,i;if(!u(e)&&e.keyCode===Ah.BACKSPACE&&(n=(t=l.getRng()).startContainer,r=t.startOffset,o=c.getRoot(),i=n,t.collapsed&&0===r)){for(;i&&i.parentNode&&i.parentNode.firstChild===i&&i.parentNode!==o;)i=i.parentNode;"BLOCKQUOTE"===i.tagName&&(a.formatter.toggle("blockquote",null,i),(t=c.createRng()).setStart(n,0),t.setEnd(n,0),l.setRng(t))}}),a.on("keydown",function(e){var t,n,r=e.keyCode;if(!u(e)&&(r===s||r===i)){if(t=a.selection.isCollapsed(),n=a.getBody(),t&&!c.isEmpty(n))return;if(!t&&!function(e){var t=y(e),n=c.createRng();return n.selectNode(a.getBody()),t===y(n)}(a.selection.getRng()))return;e.preventDefault(),a.setContent(""),n.firstChild&&c.isBlock(n.firstChild)?a.selection.setCursorLocation(n.firstChild,0):a.selection.setCursorLocation(n,0),a.nodeChanged()}}),Nn.windowsPhone||a.on("keyup focusin mouseup",function(e){Ah.modifierPressed(e)||l.normalize()},!0),g&&(a.inline||c.bind(a.getDoc(),"mousedown mouseup",function(e){var t;if(e.target===a.getDoc().documentElement)if(t=l.getRng(),a.getBody().focus(),"mousedown"===e.type){if(Da(t.startContainer))return;l.placeCaretAt(e.clientX,e.clientY)}else l.setRng(t)}),a.on("click",function(e){var t=e.target;/^(IMG|HR)$/.test(t.nodeName)&&"false"!==c.getContentEditableParent(t)&&(e.preventDefault(),a.selection.select(t),a.nodeChanged()),"A"===t.nodeName&&c.hasClass(t,"mce-item-anchor")&&(e.preventDefault(),l.select(t))}),f.forced_root_block&&a.on("init",function(){e("DefaultParagraphSeparator",mf(a))}),a.on("init",function(){a.dom.bind(a.getBody(),"submit",function(e){e.preventDefault()})}),n(),d.addNodeFilter("br",function(e){for(var t=e.length;t--;)"Apple-interchange-newline"===e[t].attr("class")&&e[t].remove()}),Nn.iOS?(a.inline||a.on("keydown",function(){j.document.activeElement===j.document.body&&a.getWin().focus()}),r(),a.on("click",function(e){var t=e.target;do{if("A"===t.tagName)return void e.preventDefault()}while(t=t.parentNode)}),a.contentStyles.push(".mce-content-body {-webkit-touch-callout: none}")):t()),11<=Nn.ie&&(r(),n()),Nn.ie&&(t(),e("AutoUrlDetect",!1),a.on("dragstart",function(e){!function(e){var t,n;e.dataTransfer&&(a.selection.isCollapsed()&&"IMG"===e.target.tagName&&l.select(e.target),0<(t=a.selection.getContent()).length&&(n=p+escape(a.id)+","+escape(t),e.dataTransfer.setData(v,n)))}(e)}),a.on("drop",function(e){if(!u(e)){var t=function(e){var t;return e.dataTransfer&&(t=e.dataTransfer.getData(v))&&0<=t.indexOf(p)?(t=t.substr(p.length).split(","),{id:unescape(t[0]),html:unescape(t[1])}):null}(e);if(t&&t.id!==a.id){e.preventDefault();var n=$v(e.x,e.y,a.getDoc());l.setRng(n),function(e,t){a.queryCommandSupported("mceInsertClipboardContent")?a.execCommand("mceInsertClipboardContent",!1,{content:e,internal:t}):a.execCommand("mceInsertContent",!1,e)}(t.html,!0)}}})),h&&(a.on("keydown",function(e){if(!u(e)&&e.keyCode===i){if(!a.getBody().getElementsByTagName("hr").length)return;if(l.isCollapsed()&&0===l.getRng().startOffset){var t=l.getNode(),n=t.previousSibling;if("HR"===t.nodeName)return c.remove(t),void e.preventDefault();n&&n.nodeName&&"hr"===n.nodeName.toLowerCase()&&(c.remove(n),e.preventDefault())}}}),j.Range.prototype.getClientRects||a.on("mousedown",function(e){if(!u(e)&&"HTML"===e.target.nodeName){var t=a.getBody();t.blur(),pn.setEditorTimeout(a,function(){t.focus()})}}),a.on("keypress",function(e){var t;if(!u(e)&&(8===e.keyCode||46===e.keyCode)&&C())return t=b(),a.getDoc().execCommand("delete",!1,null),t(),e.preventDefault(),!1}),c.bind(a.getDoc(),"cut",function(e){var t;!u(e)&&C()&&(t=b(),pn.setEditorTimeout(a,function(){t()}))}),f.readonly||a.on("BeforeExecCommand mousedown",function(){e("StyleWithCSS",!1),e("enableInlineTableEditing",!1),f.object_resizing||e("enableObjectResizing",!1)}),a.on("SetContent ExecCommand",function(e){"setcontent"!==e.type&&"mceInsertLink"!==e.command||o(c.select("a"),function(e){var t=e.parentNode,n=c.getRoot();if(t.lastChild===e){for(;t&&!c.isBlock(t);){if(t.parentNode.lastChild!==t||t===n)return;t=t.parentNode}c.add(t,"br",{"data-mce-bogus":1})}})}),a.contentStyles.push("img:-moz-broken {-moz-force-broken-image-icon:1;min-width:24px;min-height:24px}"),Nn.mac&&a.on("keydown",function(e){!Ah.metaKeyPressed(e)||e.shiftKey||37!==e.keyCode&&39!==e.keyCode||(e.preventDefault(),a.selection.getSel().modify("move",37===e.keyCode?"backward":"forward","lineboundary"))}),n()),{refreshContentEditable:function(){},isHidden:function(){var e;return!(!h||a.removed)&&(!(e=a.selection.getSel())||!e.rangeCount||0===e.rangeCount)}}}function Bw(e){return Ge.isElement(e)&&In(yt.fromDom(e))}function Ow(t){t.on("click",function(e){3<=e.detail&&function(e){var t=e.selection.getRng(),n=Uu.fromRangeStart(t),r=Uu.fromRangeEnd(t);if(Uu.isElementPosition(n)){var o=n.container();Bw(o)&&Pc.firstPositionIn(o).each(function(e){return t.setStart(e.container(),e.offset())})}if(Uu.isElementPosition(r)){o=n.container();Bw(o)&&Pc.lastPositionIn(o).each(function(e){return t.setEnd(e.container(),e.offset())})}e.selection.setRng(fp(t))}(t)})}function Hw(e){!function(t){t.on("click",function(e){t.dom.getParent(e.target,"details")&&e.preventDefault()})}(e),function(e){e.parser.addNodeFilter("details",function(e){z(e,function(e){e.attr("data-mce-open",e.attr("open")),e.attr("open","open")})}),e.serializer.addNodeFilter("details",function(e){z(e,function(e){var t=e.attr("data-mce-open");e.attr("open",K(t)?t:null),e.attr("data-mce-open",null)})})}(e)}function Pw(e){e.bindPendingEventDelegates(),e.initialized=!0,e.fire("init"),e.focus(!0),e.nodeChanged({initial:!0}),e.execCallback("init_instance_callback",e),function(t){t.settings.auto_focus&&pn.setEditorTimeout(t,function(){var e;(e=!0===t.settings.auto_focus?t:t.editorManager.get(t.settings.auto_focus)).destroyed||e.focus()},100)}(e)}function Lw(e,t){var n=e.editorManager.translate("Rich Text Area. Press ALT-0 for help."),r=function(e,t,n,r){var o=yt.fromTag("iframe");return me(o,r),me(o,{id:e+"_ifr",frameBorder:"0",allowTransparency:"true",title:t}),fa(o,"tox-edit-area__iframe"),o}(e.id,n,t.height,uf(e)).dom();r.onload=function(){r.onload=null,e.fire("load")};var o=function(e,t){if(j.document.domain!==j.window.location.hostname&&Nn.browser.isIE()){var n=eh("mce");e[n]=function(){Nz(e)};var r='javascript:(function(){document.open();document.domain="'+j.document.domain+'";var ed = window.parent.tinymce.get("'+e.id+'");document.write(ed.iframeHTML);document.close();ed.'+n+"(true);})()";return Sz.setAttrib(t,"src",r),!0}return!1}(e,r);return e.contentAreaContainer=t.iframeContainer,e.iframeElement=r,e.iframeHTML=function(e){var t,n,r;return r=sf(e)+"<html><head>",cf(e)!==e.documentBaseUrl&&(r+='<base href="'+e.documentBaseURI.getURI()+'" />'),r+='<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />',t=lf(e),n=ff(e),df(e)&&(r+='<meta http-equiv="Content-Security-Policy" content="'+df(e)+'" />'),r+='</head><body id="'+t+'" class="mce-content-body '+n+'" data-id="'+e.id+'"><br></body></html>'}(e),Sz.add(t.iframeContainer,r),o}function Vw(e){e.contentCSS=e.contentCSS.concat(function(t){var e=Lf(t),n=t.editorManager.baseURL+"/skins/content",r="content"+t.editorManager.suffix+".css",o=!0===t.inline;return X(e,function(e){return function(e){return/^[a-z0-9\-]+$/i.test(e)}(e)&&!o?n+"/"+e+"/"+r:t.documentBaseURI.toAbsolute(e)})}(e))}function Iw(e){return e.replace(/^\-/,"")}function Fw(e){return{editorContainer:e,iframeContainer:e}}function Uw(e){var t=e.getElement();return e.inline?Fw(null):function(e){var t=Tz.create("div");return Tz.insertAfter(t,e),Fw(t)}(t)}function jw(e){return"-"===e.charAt(0)}function qw(t,e){(function(e){return k.from(zf(e)).filter(function(e){return 0<e.length}).map(function(e){return{url:e,name:k.none()}})})(e).orThunk(function(){return function(t){return k.from(xf(t)).filter(function(e){return 0<e.length&&!Ud.has(e)}).map(function(e){return{url:t.editorManager.baseURL+"/icons/"+e+"/icons.js",name:k.some(e)}})}(e)}).each(function(e){t.add(e.url,i,undefined,function(){Fd.iconsLoadError(e.url,e.name.getOrUndefined())})})}function $w(e,t){var n=Qi.ScriptLoader;!function(e,t,n,r){var o=t.settings,i=o.theme;if(K(i)){if(!jw(i)&&!qd.urls.hasOwnProperty(i)){var a=o.theme_url;a?qd.load(i,t.documentBaseURI.toAbsolute(a)):qd.load(i,"themes/"+i+"/theme"+n+".js")}e.loadQueue(function(){qd.waitFor(i,r)})}else r()}(n,e,t,function(){!function(e,t){var n=Bf(t),r=Of(t);if(!1===ra.hasCode(n)&&"en"!==n){var o=""!==r?r:t.editorManager.baseURL+"/langs/"+n+".js";e.add(o,i,undefined,function(){Fd.languageLoadError(o,n)})}}(n,e),qw(n,e),function(n,r){A(n.plugins)&&(n.plugins=n.plugins.join(" ")),Mn.each(n.external_plugins,function(e,t){jd.load(t,e,i,undefined,function(){Fd.pluginLoadError(t,e)}),n.plugins+=" "+t}),Mn.each(n.plugins.split(/[ ,]/),function(e){if((e=Mn.trim(e))&&!jd.urls[e])if(jw(e)){e=e.substr(1,e.length);var t=jd.dependencies(e);Mn.each(t,function(e){var t={prefix:"plugins/",resource:e,suffix:"/plugin"+r+".js"};e=jd.createUrl(t,e),jd.load(e.resource,e,i,undefined,function(){Fd.pluginLoadError(e.prefix+e.resource+e.suffix,e.resource)})})}else{var n={prefix:"plugins/",resource:e,suffix:"/plugin"+r+".js"};jd.load(e,n,i,undefined,function(){Fd.pluginLoadError(n.prefix+n.resource+n.suffix,e)})}})}(e.settings,t),n.loadQueue(function(){e.removed||Mz(e)},e,function(){e.removed||Mz(e)})})}function Ww(e,t,n){ha(e,t)&&!1===n?function(e,t){sa(e)?e.dom().classList.remove(t):la(e,t);da(e)}(e,t):n&&fa(e,t)}function Kw(e,t,n){try{e.getDoc().execCommand(t,!1,n)}catch(r){}}function Xw(e,t){e.dom().contentEditable=t?"true":"false"}function Yw(e,t){var n=yt.fromDom(e.getBody());Ww(n,"mce-content-readonly",t),t?(e.selection.controlSelection.hideResizeRect(),e._selectionOverrides.hideFakeCaret(),function(e){k.from(e.selection.getNode()).each(function(e){e.removeAttribute("data-mce-selected")})}(e),e.readonly=!0,Xw(n,!1),function(e){z(ma(e,'*[contenteditable="true"]'),function(e){Tt(e,_z,"true"),Xw(e,!1)})}(n)):(e.readonly=!1,Xw(n,!0),function(e){z(ma(e,"*["+_z+'="true"]'),function(e){pe(e,_z),Xw(e,!0)})}(n),Kw(e,"StyleWithCSS",!1),Kw(e,"enableInlineTableEditing",!1),Kw(e,"enableObjectResizing",!1),sd(e)&&e.focus(),function(e){e.selection.setRng(e.selection.getRng())}(e),e.nodeChanged())}function Gw(e){return!0===e.readonly}function Jw(t){t.parser.addAttributeFilter("contenteditable",function(e){Gw(t)&&z(e,function(e){e.attr(_z,e.attr("contenteditable")),e.attr("contenteditable","false")})}),t.serializer.addAttributeFilter(_z,function(e){Gw(t)&&z(e,function(e){e.attr("contenteditable",e.attr(_z))})}),t.serializer.addTempAttr(_z)}function Qw(e,t,n,r){var o=n[t.get()],i=n[r];try{i.activate()}catch(yN){return void j.console.error("problem while activating editor mode "+r+":",yN)}o.deactivate(),o.editorReadOnly!==i.editorReadOnly&&Yw(e,i.editorReadOnly),t.set(r),hd(e,r)}function Zw(t){var n=Je("design"),r=Je({design:{activate:i,deactivate:i,editorReadOnly:!1},readonly:{activate:i,deactivate:i,editorReadOnly:!0}});return function(e){e.serializer?Jw(e):e.on("PreInit",function(){Jw(e)})}(t),function(t){t.on("ShowCaret",function(e){Gw(t)&&e.preventDefault()}),t.on("ObjectSelected",function(e){Gw(t)&&e.preventDefault()})}(t),{isReadOnly:function(){return Gw(t)},set:function(e){return function(e,t,n,r){if(r!==n.get()){if(!kt(t,r))throw new Error("Editor mode '"+r+"' is invalid");e.initialized?Qw(e,n,t,r):e.on("init",function(){return Qw(e,n,t,r)})}}(t,r.get(),n,e)},get:function(){return n.get()},register:function(e,t){r.set(function(e,t,n){var r;if(h(Bz,t))throw new Error("Cannot override default mode "+t);return G(G({},e),((r={})[t]=G(G({},n),{deactivate:function(){try{n.deactivate()}catch(yN){j.console.error("problem while deactivating editor mode "+t+":",yN)}}}),r))}(r.get(),e,t))}}}function ex(e){return Mn.grep(e.childNodes,function(e){return"LI"===e.nodeName})}function tx(e){return e&&e.firstChild&&e.firstChild===e.lastChild&&function(e){return"\xa0"===e.data||Ge.isBr(e)}(e.firstChild)}function nx(e){return 0<e.length&&function(e){return!e.firstChild||tx(e)}(e[e.length-1])?e.slice(0,-1):e}function rx(e,t){var n=e.getParent(t,e.isBlock);return n&&"LI"===n.nodeName?n:null}function ox(e,t){var n=Ds.after(e),r=rc(t).prev(n);return r?r.toRange():null}function ix(t,e,n){var r=t.parentNode;return Mn.each(e,function(e){r.insertBefore(e,t)}),function(e,t){var n=Ds.before(e),r=rc(t).next(n);return r?r.toRange():null}(t,n)}function ax(e,t){var n=e.selection.getRng(),r=n.startContainer,o=n.startOffset;n.collapsed&&function(e,t){return Ge.isText(e)&&"\xa0"===e.nodeValue[t-1]}(r,o)&&Ge.isText(r)&&(r.insertData(o-1," "),r.deleteData(o,1),n.setStart(r,o),n.setEnd(r,o),e.selection.setRng(n)),e.selection.setContent(t)}function ux(e,t,n){var r,o,i,a,u,s,c,l,f,d,h,m=e.selection,g=e.dom;if(/^ | $/.test(t)&&(t=function(e,t){var n,r;n=e.startContainer,r=e.startOffset;function o(e){return n[e]&&3===n[e].nodeType}return 3===n.nodeType&&(0<r?t=t.replace(/^&nbsp;/," "):o("previousSibling")||(t=t.replace(/^ /,"&nbsp;")),r<n.length?t=t.replace(/&nbsp;(<br>|)$/," "):o("nextSibling")||(t=t.replace(/(&nbsp;| )(<br>|)$/,"&nbsp;"))),t}(m.getRng(),t)),r=e.parser,h=n.merge,o=pl({validate:e.settings.validate},e.schema),d='<span id="mce_marker" data-mce-type="bookmark">&#xFEFF;&#x200B;</span>',s={content:t,format:"html",selection:!0,paste:n.paste},(s=e.fire("BeforeSetContent",s)).isDefaultPrevented())e.fire("SetContent",{content:s.content,format:"html",selection:!0,paste:n.paste});else{-1===(t=s.content).indexOf("{$caret}")&&(t+="{$caret}"),t=t.replace(/\{\$caret\}/,d);var p=(l=m.getRng()).startContainer||(l.parentElement?l.parentElement():null),v=e.getBody();p===v&&m.isCollapsed()&&g.isBlock(v.firstChild)&&function(e,t){return t&&!e.schema.getShortEndedElements()[t.nodeName]}(e,v.firstChild)&&g.isEmpty(v.firstChild)&&((l=g.createRng()).setStart(v.firstChild,0),l.setEnd(v.firstChild,0),m.setRng(l)),m.isCollapsed()||(e.selection.setRng(fp(e.selection.getRng())),e.getDoc().execCommand("Delete",!1,null),t=function(e,t){var n,r;return n=e.startContainer,r=e.startOffset,3===n.nodeType&&e.collapsed&&("\xa0"===n.data[r]?(n.deleteData(r,1),/[\u00a0| ]$/.test(t)||(t+=" ")):"\xa0"===n.data[r-1]&&(n.deleteData(r-1,1),/[\u00a0| ]$/.test(t)||(t=" "+t))),t}(e.selection.getRng(),t));var y={context:(i=m.getNode()).nodeName.toLowerCase(),data:n.data,insert:!0};if(u=r.parse(t,y),!0===n.paste&&Oz(e.schema,u)&&Pz(g,i))return l=Hz(o,g,e.selection.getRng(),u),e.selection.setRng(l),void e.fire("SetContent",s);if(function(e){for(var t=e;t=t.walk();)1===t.type&&t.attr("data-mce-fragment","1")}(u),"mce_marker"===(f=u.lastChild).attr("id"))for(f=(c=f).prev;f;f=f.walk(!0))if(3===f.type||!g.isBlock(f.name)){e.schema.isValidChild(f.parent.name,"span")&&f.parent.insert(c,f,"br"===f.name);break}if(e._selectionOverrides.showBlockCaretContainer(i),y.invalid){for(ax(e,d),i=m.getNode(),a=e.getBody(),9===i.nodeType?i=f=a:f=i;f!==a;)f=(i=f).parentNode;t=i===a?a.innerHTML:g.getOuterHTML(i),t=o.serialize(r.parse(t.replace(/<span (id="mce_marker"|id=mce_marker).+?<\/span>/i,function(){return o.serialize(u)}))),i===a?g.setHTML(a,t):g.setOuterHTML(i,t)}else!function(e,t,n){if("all"===n.getAttribute("data-mce-bogus"))n.parentNode.insertBefore(e.dom.createFragment(t),n);else{var r=n.firstChild,o=n.lastChild;!r||r===o&&"BR"===r.nodeName?e.dom.setHTML(n,t):ax(e,t)}}(e,t=o.serialize(u),i);!function(e,t){var n=e.schema.getTextInlineElements(),r=e.dom;if(t){var o=e.getBody(),i=new Bg(r);Mn.each(r.select("*[data-mce-fragment]"),function(e){for(var t=e.parentNode;t&&t!==o;t=t.parentNode)n[e.nodeName.toLowerCase()]&&i.compare(t,e)&&r.remove(e,!0)})}}(e,h),function(n,e){var t,r,o,i,a,u=n.dom,s=n.selection;if(e){if(n.selection.scrollIntoView(e),t=function(e){for(var t=n.getBody();e&&e!==t;e=e.parentNode)if("false"===n.dom.getContentEditable(e))return e;return null}(e))return u.remove(e),s.select(t);var c=u.createRng();(i=e.previousSibling)&&3===i.nodeType?(c.setStart(i,i.nodeValue.length),Nn.ie||(a=e.nextSibling)&&3===a.nodeType&&(i.appendData(a.data),a.parentNode.removeChild(a))):(c.setStartBefore(e),c.setEndBefore(e));r=u.getParent(e,u.isBlock),u.remove(e),r&&u.isEmpty(r)&&(n.$(r).empty(),c.setStart(r,0),c.setEnd(r,0),Lz(r)||function(e){return!!e.getAttribute("data-mce-fragment")}(r)||!(o=function(e){var t=Ds.fromRangeStart(e);if(t=rc(n.getBody()).next(t))return t.toRange()}(c))?u.add(r,u.create("br",{"data-mce-bogus":"1"})):(c=o,u.remove(r))),s.setRng(c)}}(e,g.get("mce_marker")),function(e){Mn.each(e.getElementsByTagName("*"),function(e){e.removeAttribute("data-mce-fragment")})}(e.getBody()),function(e,t){k.from(e.getParent(t,"td,th")).map(yt.fromDom).each(Cg)}(e.dom,e.selection.getStart()),e.fire("SetContent",s),e.addVisual()}}function sx(e,t){e.getDoc().execCommand(t,!1,null)}function cx(n){return function(t,e){return k.from(e).map(yt.fromDom).filter(xt).bind(function(e){return function(t,n,e){function r(e){return ye(e,t)}return ba(yt.fromDom(e),function(e){return r(e).isSome()},function(e){return ze(yt.fromDom(n),e)}).bind(r)}(n,t,e.dom()).or(function(e,t){return k.from(Xi.DOM.getStyle(t,e,!0))}(n,e.dom()))}).getOr("")}}function lx(e){return Pc.firstPositionIn(e.getBody()).map(function(e){var t=e.container();return Ge.isText(t)?t.parentNode:t})}function fx(t){return k.from(t.selection.getRng()).bind(function(e){return function(e,t){return e.startContainer===t&&0===e.startOffset}(e,t.getBody())?k.none():k.from(t.selection.getStart(!0))})}function dx(e,t){if(/^[0-9\.]+$/.test(t)){var n=parseInt(t,10);if(1<=n&&n<=7){var r=Cf(e),o=wf(e);return o?o[n-1]||t:r[n-1]||t}return t}return t}function hx(e,t){var n=dx(e,t);e.formatter.toggle("fontname",{value:function(e){var t=e.split(/\s*,\s*/);return X(t,function(e){return-1===e.indexOf(" ")||ee(e,'"')||ee(e,"'")?e:"'"+e+"'"}).join(",")}(n)}),e.nodeChanged()}var mx=d(ob,Uu.isAbove,-1),gx=d(ob,Uu.isBelow,1),px=d(ib,-1,mx),vx=d(ib,1,gx),yx=Ge.isContentEditableFalse,bx=Wa,Cx=d(mb,function(e){return e.bottom},function(e,t){return e.y<t}),wx=d(mb,function(e){return e.top},function(e,t){return e.y>t}),xx=d(yb,mx),zx=d(yb,gx),Ex=function(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n];var r=Array.prototype.slice.call(arguments,1);return function(){return e.apply(null,r)}},Nx=function(e,t){return g(Db(e,t),function(e){return e.action()})},Sx=function(t,n){t.on("keydown",function(e){!1===e.isDefaultPrevented()&&function(e,t,n){var r=oe().os;Nx([{keyCode:Ah.RIGHT,action:fb(e,!0)},{keyCode:Ah.LEFT,action:fb(e,!1)},{keyCode:Ah.UP,action:db(e,!1)},{keyCode:Ah.DOWN,action:db(e,!0)},{keyCode:Ah.RIGHT,action:zb(e,!0)},{keyCode:Ah.LEFT,action:zb(e,!1)},{keyCode:Ah.UP,action:Eb(e,!1)},{keyCode:Ah.DOWN,action:Eb(e,!0)},{keyCode:Ah.RIGHT,action:nb.move(e,t,!0)},{keyCode:Ah.LEFT,action:nb.move(e,t,!1)},{keyCode:Ah.RIGHT,ctrlKey:!r.isOSX(),altKey:r.isOSX(),action:nb.moveNextWord(e,t)},{keyCode:Ah.LEFT,ctrlKey:!r.isOSX(),altKey:r.isOSX(),action:nb.movePrevWord(e,t)},{keyCode:Ah.UP,action:Rb(e,!1)},{keyCode:Ah.DOWN,action:Rb(e,!0)}],n).each(function(e){n.preventDefault()})}(t,n,e)})},kx=function(e,t){return Bt(e,t)?ba(t,function(e){return In(e)||Un(e)},function(t){return function(e){return ze(t,yt.fromDom(e.dom().parentNode))}}(e)):k.none()},Tx=function(e){e.dom.isEmpty(e.getBody())&&(e.setContent(""),function(e){var t=e.getBody(),n=t.firstChild&&e.dom.isBlock(t.firstChild)?t.firstChild:t;e.selection.setCursorLocation(n,0)}(e))},Ax=function(i,a,u){return Ya(Pc.firstPositionIn(u),Pc.lastPositionIn(u),function(e,t){var n=Ky.normalizePosition(!0,e),r=Ky.normalizePosition(!1,t),o=Ky.normalizePosition(!1,a);return i?Pc.nextPosition(u,o).map(function(e){return e.isEqual(r)&&a.isEqual(n)}).getOr(!1):Pc.prevPosition(u,o).map(function(e){return e.isEqual(n)&&a.isEqual(r)}).getOr(!1)}).getOr(!0)},Mx=function(e,t,n){return n.collapsed?Ob(e,t,n):k.none()},Rx=function(e,t,n,r){return t?Ub(e,r,n):Ub(e,n,r)},Dx=function(t,n){var r=yt.fromDom(t.getBody()),e=Mx(r.dom(),n,t.selection.getRng()).bind(function(e){return Rx(r,n,e.from().block(),e.to().block())});return e.each(function(e){t.selection.setRng(e.toRange())}),e.isSome()},_x=function(e,t){return!e.selection.isCollapsed()&&$b(e)},Bx=d(Kb,!1),Ox=d(Kb,!0),Hx=jf([{remove:["element"]},{moveToElement:["element"]},{moveToPosition:["position"]}]),Px=function(e,t){for(;t&&t!==e;){if(Ge.isContentEditableTrue(t)||Ge.isContentEditableFalse(t))return t;t=t.parentNode}return null},Lx=function(e,t){return e.selection.isCollapsed()?eC(e,t):tC(e,t)},Vx=function(e){var t,n=Px(e.getBody(),e.selection.getNode());return Ge.isContentEditableTrue(n)&&e.dom.isBlock(n)&&e.dom.isEmpty(n)&&(t=e.dom.create("br",{"data-mce-bogus":"1"}),e.dom.setHTML(n,""),n.appendChild(t),e.selection.setRng(Ds.before(t).toRange())),!0},Ix=function(e,t){return function(e,t){var n=e.selection.getRng();if(!Ge.isText(n.commonAncestorContainer))return!1;var r=t?Ms.Forwards:Ms.Backwards,o=rc(e.getBody()),i=d(Ts,o.next),a=d(Ts,o.prev),u=t?i:a,s=t?Ph:Lh,c=Ss(r,e.getBody(),n),l=Ky.normalizePosition(t,u(c));if(!l||!As(c,l))return!1;if(s(l))return nC(e,n,c.getNode(),r,t,l);var f=u(l);return!!(f&&s(f)&&As(l,f))&&nC(e,n,c.getNode(),r,t,f)}(e,t)},Fx=function(e,t,n){if(e.selection.isCollapsed()&&function(e){return!1!==e.settings.inline_boundaries}(e)){var r=Ds.fromRangeStart(e.selection.getRng());return iC(e,t,n,r)}return!1},Ux=function(e,t){return!!e.selection.isCollapsed()&&sC(e,t)},jx=jf([{removeTable:["element"]},{emptyCells:["cells"]}]),qx=function(e,t){return hC(t,e).isSome()},$x=function(e,t){return g(fh(t,e),function(e){return"caption"===ie(e)})},Wx=function(e,t){return bg(t),e.selection.setCursorLocation(t.dom(),0),k.some(!0)},Kx=function(e,t){var n=yt.fromDom(e.selection.getStart(!0)),r=ry(e);return e.selection.isCollapsed()&&0===r.length?TC(e,t,n):function(e,t){var n=yt.fromDom(e.getBody()),r=e.selection.getRng(),o=ry(e);return 0!==o.length?CC(e,o):zC(e,n,r,t)}(e,n)},Xx=function(e,t){return!!e.selection.isCollapsed()&&function(t,n){var e=Ds.fromRangeStart(t.selection.getRng());return Pc.fromPosition(n,t.getBody(),e).filter(function(e){return n?_h(e):Bh(e)}).bind(function(e){return k.from(ws(n?0:-1,e))}).map(function(e){return t.selection.select(e),!0}).getOr(!1)}(e,t)},Yx=function(e){return y(X(e.selection.getSelectedBlocks(),yt.fromDom),function(e){return!DC(e)&&!function(e){return Se(e).map(DC).getOr(!1)}(e)&&function(e){return ba(e,function(e){return Ge.isContentEditableTrue(e.dom())||Ge.isContentEditableFalse(e.dom())}).exists(function(e){return Ge.isContentEditableTrue(e.dom())})}(e)})},Gx=d(PC,!1),Jx=d(PC,!0),Qx=d(HC,!1),Zx=d(HC,!0),ez=function(e,t,n){if(e.selection.isCollapsed()&&RC(e)){var r=e.dom,o=e.selection.getRng(),i=Ds.fromRangeStart(o),a=r.getParent(o.startContainer,r.isBlock);if(null!==a&&Gx(yt.fromDom(a),i))return _C(e,"outdent"),!0}return!1},tz=function(t,n){t.on("keydown",function(e){!1===e.isDefaultPrevented()&&function(e,t,n){Nx([{keyCode:Ah.BACKSPACE,action:Ex(ez,e,!1)},{keyCode:Ah.BACKSPACE,action:Ex(Lx,e,!1)},{keyCode:Ah.DELETE,action:Ex(Lx,e,!0)},{keyCode:Ah.BACKSPACE,action:Ex(Ix,e,!1)},{keyCode:Ah.DELETE,action:Ex(Ix,e,!0)},{keyCode:Ah.BACKSPACE,action:Ex(Fx,e,t,!1)},{keyCode:Ah.DELETE,action:Ex(Fx,e,t,!0)},{keyCode:Ah.BACKSPACE,action:Ex(Kx,e,!1)},{keyCode:Ah.DELETE,action:Ex(Kx,e,!0)},{keyCode:Ah.BACKSPACE,action:Ex(Xx,e,!1)},{keyCode:Ah.DELETE,action:Ex(Xx,e,!0)},{keyCode:Ah.BACKSPACE,action:Ex(_x,e,!1)},{keyCode:Ah.DELETE,action:Ex(_x,e,!0)},{keyCode:Ah.BACKSPACE,action:Ex(Dx,e,!1)},{keyCode:Ah.DELETE,action:Ex(Dx,e,!0)},{keyCode:Ah.BACKSPACE,action:Ex(Ux,e,!1)},{keyCode:Ah.DELETE,action:Ex(Ux,e,!0)}],n).each(function(e){n.preventDefault()})}(t,n,e)}),t.on("keyup",function(e){!1===e.isDefaultPrevented()&&function(e,t){Nx([{keyCode:Ah.BACKSPACE,action:Ex(Vx,e)},{keyCode:Ah.DELETE,action:Ex(Vx,e)}],t)}(t,e)})},nz=function(e,t){var n,r,o=t,i=e.dom,a=e.schema.getMoveCaretBeforeOnEnterElements();if(t){if(/^(LI|DT|DD)$/.test(t.nodeName)){var u=function(e){for(;e;){if(1===e.nodeType||3===e.nodeType&&e.data&&/[\r\n\s]/.test(e.data))return e;e=e.nextSibling}}(t.firstChild);u&&/^(UL|OL|DL)$/.test(u.nodeName)&&t.insertBefore(i.doc.createTextNode("\xa0"),t.firstChild)}if(r=i.createRng(),t.normalize(),t.hasChildNodes()){for(var s=new yi(t,t);n=s.current();){if(Ge.isText(n)){r.setStart(n,0),r.setEnd(n,0);break}if(a[n.nodeName.toLowerCase()]){r.setStartBefore(n),r.setEndBefore(n);break}o=n,n=s.next()}n||(r.setStart(o,0),r.setEnd(o,0))}else Ge.isBr(t)?t.nextSibling&&i.isBlock(t.nextSibling)?(r.setStartBefore(t),r.setEndBefore(t)):(r.setStartAfter(t),r.setEndAfter(t)):(r.setStart(t,0),r.setEnd(t,0));e.selection.setRng(r),e.selection.scrollIntoView(t)}},rz=function(e,t){var n,r,o=e.getRoot();for(n=t;n!==o&&"false"!==e.getContentEditable(n);)"true"===e.getContentEditable(n)&&(r=n),n=n.parentNode;return n!==o?r:o},oz=LC,iz=function(e){return LC(e).fold($(""),function(e){return e.nodeName.toUpperCase()})},az=function(e){return LC(e).filter(function(e){return Un(yt.fromDom(e))}).isSome()},uz=function(e,t,n,r,o){var i=e.dom,a=e.selection.getRng();if(n!==e.getBody()){!function(e){return IC(e)&&IC(e.parentNode)}(n)||(o="LI");var u=o?t(o):i.create("BR");if(UC(n,r,!0)&&UC(n,r,!1))VC(n,"LI")?i.insertAfter(u,FC(n)):i.replace(u,n);else if(UC(n,r,!0))VC(n,"LI")?(i.insertAfter(u,FC(n)),u.appendChild(i.doc.createTextNode(" ")),u.appendChild(n)):n.parentNode.insertBefore(u,n);else if(UC(n,r,!1))i.insertAfter(u,FC(n));else{n=FC(n);var s=a.cloneRange();s.setStartAfter(r),s.setEndAfter(n);var c=s.extractContents();"LI"===o&&function(e,t){return e.firstChild&&e.firstChild.nodeName===t}(c,"LI")?(u=c.firstChild,i.insertAfter(c,n)):(i.insertAfter(c,n),i.insertAfter(u,n))}i.remove(r),nz(e,u)}},sz=function(a,e){function t(e){var t,n,r,o=s,i=b.getTextInlineElements();if(e||"TABLE"===m||"HR"===m?(t=y.create(e||p),XC(a,t)):t=c.cloneNode(!1),r=t,!1===yf(a))y.setAttrib(t,"style",null),y.setAttrib(t,"class",null);else do{if(i[o.nodeName]){if(rs(o)||Fc(o))continue;n=o.cloneNode(!1),y.setAttrib(n,"id",""),t.hasChildNodes()?n.appendChild(t.firstChild):r=n,t.appendChild(n)}}while((o=o.parentNode)&&o!==u);return jC(r),t}function n(e){var t,n,r=WC(e,s,i);if(Ge.isText(s)&&(e?0<r:r<s.nodeValue.length))return!1;if(s.parentNode===c&&v&&!e)return!0;if(e&&Ge.isElement(s)&&s===c.firstChild)return!0;if(qC(s,"TABLE")||qC(s,"HR"))return v&&!e||!v&&e;var o=new yi(s,c);for(Ge.isText(s)&&(e&&0===r?o.prev():e||r!==s.nodeValue.length||o.next());t=o.current();){if(Ge.isElement(t)){if(!t.getAttribute("data-mce-bogus")&&(n=t.nodeName.toLowerCase(),C[n]&&"br"!==n))return!1}else if(Ge.isText(t)&&!/^[ \t\r\n]*$/.test(t.nodeValue))return!1;e?o.prev():o.next()}return!0}function r(){f=/^(H[1-6]|PRE|FIGURE)$/.test(m)&&"HGROUP"!==g?t(p):t(),bf(a)&&$C(y,h)&&y.isEmpty(c)?f=y.split(h,c):y.insertAfter(f,c),nz(a,f)}var o,u,s,i,c,l,f,d,h,m,g,p,v,y=a.dom,b=a.schema,C=b.getNonEmptyElements(),w=a.selection.getRng();ay(y,w).each(function(e){w.setStart(e.startContainer,e.startOffset),w.setEnd(e.endContainer,e.endOffset)}),s=w.startContainer,i=w.startOffset,p=mf(a),l=!(!e||!e.shiftKey);var x=!(!e||!e.ctrlKey);Ge.isElement(s)&&s.hasChildNodes()&&(v=i>s.childNodes.length-1,s=s.childNodes[Math.min(i,s.childNodes.length-1)]||s,i=v&&Ge.isText(s)?s.nodeValue.length:0),(u=KC(y,s))&&((p&&!l||!p&&l)&&(s=function(e,t,n,r,o){var i,a,u,s,c,l,f=t||"P",d=e.dom,h=KC(d,r);if(!(a=d.getParent(r,d.isBlock))||!$C(d,a)){if(l=(a=a||h)===e.getBody()||function(e){return e&&/^(TD|TH|CAPTION)$/.test(e.nodeName)}(a)?a.nodeName.toLowerCase():a.parentNode.nodeName.toLowerCase(),!a.hasChildNodes())return i=d.create(f),XC(e,i),a.appendChild(i),n.setStart(i,0),n.setEnd(i,0),i;for(s=r;s.parentNode!==a;)s=s.parentNode;for(;s&&!d.isBlock(s);)s=(u=s).previousSibling;if(u&&e.schema.isValidChild(l,f.toLowerCase())){for(i=d.create(f),XC(e,i),u.parentNode.insertBefore(i,u),s=u;s&&!d.isBlock(s);)c=s.nextSibling,i.appendChild(s),s=c;n.setStart(r,o),n.setEnd(r,o)}}return r}(a,p,w,s,i)),c=y.getParent(s,y.isBlock),h=c?y.getParent(c.parentNode,y.isBlock):null,m=c?c.nodeName.toUpperCase():"","LI"!==(g=h?h.nodeName.toUpperCase():"")||x||(h=(c=h).parentNode,m=g),/^(LI|DT|DD)$/.test(m)&&y.isEmpty(c)?uz(a,t,h,c,p):p&&c===a.getBody()||(p=p||"P",Ma(c)?(f=Pa(c),y.isEmpty(c)&&jC(c),nz(a,f)):n()?r():n(!0)?(f=c.parentNode.insertBefore(t(),c),nz(a,qC(c,"HR")?f:c)):((o=function(e){var t=e.cloneRange();return t.setStart(e.startContainer,WC(!0,e.startContainer,e.startOffset)),t.setEnd(e.endContainer,WC(!1,e.endContainer,e.endOffset)),t}(w).cloneRange()).setEndAfter(c),function(e){z(pa(yt.fromDom(e),zt),function(e){var t=e.dom();t.nodeValue=lu(t.nodeValue)})}(d=o.extractContents()),function(e){for(;Ge.isText(e)&&(e.nodeValue=e.nodeValue.replace(/^[\r\n]+/,"")),e=e.firstChild;);}(d),f=d.firstChild,y.insertAfter(d,c),function(e,t,n){var r,o=n,i=[];if(o){for(;o=o.firstChild;){if(e.isBlock(o))return;Ge.isElement(o)&&!t[o.nodeName.toLowerCase()]&&i.push(o)}for(r=i.length;r--;)!(o=i[r]).hasChildNodes()||o.firstChild===o.lastChild&&""===o.firstChild.nodeValue?e.remove(o):(a=e,(u=o)&&"A"===u.nodeName&&a.isEmpty(u)&&e.remove(o));var a,u}}(y,C,f),function(e,t){var n;t.normalize(),(n=t.lastChild)&&!/^(left|right)$/gi.test(e.getStyle(n,"float",!0))||e.add(t,"br")}(y,c),y.isEmpty(c)&&jC(c),f.normalize(),y.isEmpty(f)?(y.remove(f),r()):nz(a,f)),y.setAttrib(f,"id",""),a.fire("NewBlock",{newBlock:f})))},cz=function(e,t){return!!function(e){return Ge.isBr(e.getNode())}(Ds.after(t))||Pc.nextPosition(e,Ds.after(t)).map(function(e){return Ge.isBr(e.getNode())}).getOr(!1)},lz=function(e,t){var n=function(e){var t=d(Ky.isInlineTarget,e),n=Ds.fromRangeStart(e.selection.getRng());return Jy(t,e.getBody(),n).filter(tw)}(e);n.isSome()?n.each(d(nw,e)):JC(e,t)},fz=function(e){return rw(e,pf(e))},dz=function(e){return rw(e,vf(e))},hz=jf([{br:[]},{block:[]},{none:[]}]),mz=function(e,t){return Xy([hw([ow],hz.none()),hw([uw("summary",!0)],hz.br()),hw([sw(!0),cw(!1),fw],hz.br()),hw([sw(!0),cw(!1)],hz.block()),hw([sw(!0),cw(!0),fw],hz.block()),hw([sw(!0),cw(!0)],hz.br()),hw([aw(!0),fw],hz.br()),hw([aw(!0)],hz.block()),hw([iw(!0),fw,dw],hz.block()),hw([iw(!0)],hz.br()),hw([lw],hz.br()),hw([iw(!1),fw],hz.br()),hw([dw],hz.block())],[e,!(!t||!t.shiftKey)]).getOr(hz.none())},gz=function(e,t){mz(e,t).fold(function(){lz(e,t)},function(){sz(e,t)},i)},pz=function(t){t.on("keydown",function(e){e.keyCode===Ah.ENTER&&function(e,t){t.isDefaultPrevented()||(t.preventDefault(),function(e){e.typing&&(e.typing=!1,e.add())}(e.undoManager),e.undoManager.transact(function(){!1===e.selection.isCollapsed()&&e.execCommand("Delete"),gz(e,t)}))}(t,e)})},vz=d(mw,"\xa0"),yz=d(mw," "),bz=function(t){t.on("keydown",function(e){!1===e.isDefaultPrevented()&&function(e,t){Nx([{keyCode:Ah.SPACEBAR,action:Ex(Aw,e)}],t).each(function(e){t.preventDefault()})}(t,e)})},Cz=function(e){e.on("keyup compositionstart",d(Rw,e))},wz=oe().browser,xz=function(t){t.on("keydown",function(e){!1===e.isDefaultPrevented()&&function(e,t){Nx([{keyCode:Ah.END,action:hb(e,!0)},{keyCode:Ah.HOME,action:hb(e,!1)}],t).each(function(e){t.preventDefault()})}(t,e)})},zz=function(e){var t=nb.setupSelectedState(e);Cz(e),Sx(e,t),tz(e,t),pz(e),bz(e),Dw(e),xz(e)},Ez=Xi.DOM,Nz=function(t,e){var n,r,o=t.settings,i=t.getElement(),a=t.getDoc();o.inline||(t.getElement().style.visibility=t.orgVisibility),e||t.inline||(a.open(),a.write(t.iframeHTML),a.close()),t.inline&&(t.on("remove",function(){var e=this.getBody();Ez.removeClass(e,"mce-content-body"),Ez.removeClass(e,"mce-edit-focus"),Ez.setAttrib(e,"contentEditable",null)}),Ez.addClass(i,"mce-content-body"),t.contentDocument=a=j.document,t.contentWindow=j.window,t.bodyElement=i,t.contentAreaContainer=i,o.root_name=i.nodeName.toLowerCase()),(n=t.getBody()).disabled=!0,t.readonly=o.readonly,t.readonly||(t.inline&&"static"===Ez.getStyle(n,"position",!0)&&(n.style.position="relative"),n.contentEditable=t.getParam("content_editable_state",!0)),n.disabled=!1,t.editorUpload=th(t),t.schema=pr(o),t.dom=Xi(a,{keep_values:!0,url_converter:t.convertURL,url_converter_scope:t,hex_colors:o.force_hex_style_colors,update_styles:!0,root_element:t.inline?t.getBody():null,collect:function(){return t.inline},schema:t.schema,contentCssCors:Df(t),referrerPolicy:_f(t),onSetAttrib:function(e){t.fire("SetAttrib",e)}}),t.parser=function(u){var e=Np(u.settings,u.schema);return e.addAttributeFilter("src,href,style,tabindex",function(e,t){for(var n,r,o,i=e.length,a=u.dom;i--;)if(r=(n=e[i]).attr(t),o="data-mce-"+t,!n.attr(o)){if(0===r.indexOf("data:")||0===r.indexOf("blob:"))continue;"style"===t?((r=a.serializeStyle(a.parseStyle(r),n.name)).length||(r=null),n.attr(o,r),n.attr(t,r)):"tabindex"===t?(n.attr(o,r),n.attr(t,null)):n.attr(o,u.convertURL(r,t,n.name))}}),e.addNodeFilter("script",function(e){for(var t,n,r=e.length;r--;)0!==(n=(t=e[r]).attr("type")||"no/type").indexOf("mce-")&&t.attr("type","mce-"+n)}),e.addNodeFilter("#cdata",function(e){for(var t,n=e.length;n--;)(t=e[n]).type=8,t.name="#comment",t.value="[CDATA["+t.value+"]]"}),e.addNodeFilter("p,h1,h2,h3,h4,h5,h6,div",function(e){for(var t,n=e.length,r=u.schema.getNonEmptyElements();n--;)(t=e[n]).isEmpty(r)&&0===t.getAll("br").length&&(t.append(new ul("br",1)).shortEnded=!0)}),e}(t),t.serializer=Ap(o,t),t.selection=ly(t.dom,t.getWin(),t.serializer,t),t.annotator=nl(t),t.formatter=Cp(t),t.undoManager=mm(t),t._nodeChangeDispatcher=new ph(t),t._selectionOverrides=om(t),Hw(t),Ow(t),zz(t),dh(t),t.fire("PreInit"),o.browser_spellcheck||o.gecko_spellcheck||(a.body.spellcheck=!1,Ez.setAttrib(n,"spellcheck","false")),t.quirks=_w(t),t.fire("PostRender");var u=Vf(t);u!==undefined&&(n.dir=u),o.protect&&t.on("BeforeSetContent",function(t){Mn.each(o.protect,function(e){t.content=t.content.replace(e,function(e){return"\x3c!--mce:protected "+escape(e)+"--\x3e"})})}),t.on("SetContent",function(){t.addVisual(t.getBody())}),t.load({initial:!0,format:"html"}),t.startContent=t.getContent({format:"raw"}),t.on("compositionstart compositionend",function(e){t.composing="compositionstart"===e.type}),0<t.contentStyles.length&&(r="",Mn.each(t.contentStyles,function(e){r+=e+"\r\n"}),t.dom.addStyle(r)),function(e){return e.inline?Ez.styleSheetLoader:e.dom.styleSheetLoader}(t).loadAll(t.contentCSS,function(e){Pw(t)},function(e){Pw(t)}),o.content_style&&function(e,t){var n=yt.fromDom(e.getDoc().head),r=yt.fromTag("style");Tt(r,"type","text/css"),Di(r,yt.fromText(t)),Di(n,r)}(t,o.content_style)},Sz=Xi.DOM,kz=function(e,t){var n=Lw(e,t);t.editorContainer&&(Sz.get(t.editorContainer).style.display=e.orgDisplay,e.hidden=Sz.isHidden(t.editorContainer)),e.getElement().style.display="none",Sz.setAttrib(e.id,"aria-hidden","true"),n||Nz(e)},Tz=Xi.DOM,Az=function(t,n,e){var r=jd.get(e),o=jd.urls[e]||t.documentBaseUrl.replace(/\/$/,"");if(e=Mn.trim(e),r&&-1===Mn.inArray(n,e)){if(Mn.each(jd.dependencies(e),function(e){Az(t,n,e)}),t.plugins[e])return;try{var i=new r(t,o,t.$);(t.plugins[e]=i).init&&(i.init(t,o),n.push(e))}catch(yN){Fd.pluginInitError(t,e,yN)}}},Mz=function(e){e.fire("ScriptsLoaded"),function(n){var e=Mn.trim(n.settings.icons),r=n.ui.registry.getAll().icons,t=G(G({},{"accessibility-check":'<svg width="24" height="24"><path d="M12 2a2 2 0 0 1 2 2 2 2 0 0 1-2 2 2 2 0 0 1-2-2c0-1.1.9-2 2-2zm8 7h-5v12c0 .6-.4 1-1 1a1 1 0 0 1-1-1v-5c0-.6-.4-1-1-1a1 1 0 0 0-1 1v5c0 .6-.4 1-1 1a1 1 0 0 1-1-1V9H4a1 1 0 1 1 0-2h16c.6 0 1 .4 1 1s-.4 1-1 1z" fill-rule="nonzero"/></svg>',"action-next":'<svg width="24" height="24"><path fill-rule="nonzero" d="M5.7 7.3a1 1 0 0 0-1.4 1.4l7.7 7.7 7.7-7.7a1 1 0 1 0-1.4-1.4L12 13.6 5.7 7.3z"/></svg>',"action-prev":'<svg width="24" height="24"><path fill-rule="nonzero" d="M18.3 15.7a1 1 0 0 0 1.4-1.4L12 6.6l-7.7 7.7a1 1 0 0 0 1.4 1.4L12 9.4l6.3 6.3z"/></svg>',"align-center":'<svg width="24" height="24"><path d="M5 5h14c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 1 1 0-2zm3 4h8c.6 0 1 .4 1 1s-.4 1-1 1H8a1 1 0 1 1 0-2zm0 8h8c.6 0 1 .4 1 1s-.4 1-1 1H8a1 1 0 0 1 0-2zm-3-4h14c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 0 1 0-2z" fill-rule="evenodd"/></svg>',"align-justify":'<svg width="24" height="24"><path d="M5 5h14c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 1 1 0-2zm0 4h14c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 1 1 0-2zm0 4h14c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 0 1 0-2zm0 4h14c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 0 1 0-2z" fill-rule="evenodd"/></svg>',"align-left":'<svg width="24" height="24"><path d="M5 5h14c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 1 1 0-2zm0 4h8c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 1 1 0-2zm0 8h8c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 0 1 0-2zm0-4h14c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 0 1 0-2z" fill-rule="evenodd"/></svg>',"align-none":'<svg width="24" height="24"><path d="M14.2 5L13 7H5a1 1 0 1 1 0-2h9.2zm4 0h.8a1 1 0 0 1 0 2h-2l1.2-2zm-6.4 4l-1.2 2H5a1 1 0 0 1 0-2h6.8zm4 0H19a1 1 0 0 1 0 2h-4.4l1.2-2zm-6.4 4l-1.2 2H5a1 1 0 0 1 0-2h4.4zm4 0H19a1 1 0 0 1 0 2h-6.8l1.2-2zM7 17l-1.2 2H5a1 1 0 0 1 0-2h2zm4 0h8a1 1 0 0 1 0 2H9.8l1.2-2zm5.2-13.5l1.3.7-9.7 16.3-1.3-.7 9.7-16.3z" fill-rule="evenodd"/></svg>',"align-right":'<svg width="24" height="24"><path d="M5 5h14c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 1 1 0-2zm6 4h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 0 1 0-2zm0 8h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 0 1 0-2zm-6-4h14c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 0 1 0-2z" fill-rule="evenodd"/></svg>',"arrow-left":'<svg width="24" height="24"><path d="M5.6 13l12 6a1 1 0 0 0 1.4-1V6a1 1 0 0 0-1.4-.9l-12 6a1 1 0 0 0 0 1.8z" fill-rule="evenodd"/></svg>',"arrow-right":'<svg width="24" height="24"><path d="M18.5 13l-12 6A1 1 0 0 1 5 18V6a1 1 0 0 1 1.4-.9l12 6a1 1 0 0 1 0 1.8z" fill-rule="evenodd"/></svg>',bold:'<svg width="24" height="24"><path d="M7.8 19c-.3 0-.5 0-.6-.2l-.2-.5V5.7c0-.2 0-.4.2-.5l.6-.2h5c1.5 0 2.7.3 3.5 1 .7.6 1.1 1.4 1.1 2.5a3 3 0 0 1-.6 1.9c-.4.6-1 1-1.6 1.2.4.1.9.3 1.3.6s.8.7 1 1.2c.4.4.5 1 .5 1.6 0 1.3-.4 2.3-1.3 3-.8.7-2.1 1-3.8 1H7.8zm5-8.3c.6 0 1.2-.1 1.6-.5.4-.3.6-.7.6-1.3 0-1.1-.8-1.7-2.3-1.7H9.3v3.5h3.4zm.5 6c.7 0 1.3-.1 1.7-.4.4-.4.6-.9.6-1.5s-.2-1-.7-1.4c-.4-.3-1-.4-2-.4H9.4v3.8h4z" fill-rule="evenodd"/></svg>',bookmark:'<svg width="24" height="24"><path d="M6 4v17l6-4 6 4V4c0-.6-.4-1-1-1H7a1 1 0 0 0-1 1z" fill-rule="nonzero"/></svg>',"border-width":'<svg width="24" height="24"><path d="M5 14.8h14a1 1 0 0 1 0 2H5a1 1 0 0 1 0-2zm-.5 3.7h15c.3 0 .5.2.5.5s-.2.5-.5.5h-15a.5.5 0 1 1 0-1zm.5-8.3h14c.6 0 1 .4 1 1v1c0 .5-.4 1-1 1H5a1 1 0 0 1-1-1v-1c0-.6.4-1 1-1zm0-5.7h14c.6 0 1 .4 1 1v2c0 .6-.4 1-1 1H5a1 1 0 0 1-1-1v-2c0-.6.4-1 1-1z" fill-rule="evenodd"/></svg>',brightness:'<svg width="24" height="24"><path d="M12 17c.3 0 .5.1.7.3.2.2.3.4.3.7v1c0 .3-.1.5-.3.7a1 1 0 0 1-.7.3 1 1 0 0 1-.7-.3 1 1 0 0 1-.3-.7v-1c0-.3.1-.5.3-.7.2-.2.4-.3.7-.3zm0-10a1 1 0 0 1-.7-.3A1 1 0 0 1 11 6V5c0-.3.1-.5.3-.7.2-.2.4-.3.7-.3.3 0 .5.1.7.3.2.2.3.4.3.7v1c0 .3-.1.5-.3.7a1 1 0 0 1-.7.3zm7 4c.3 0 .5.1.7.3.2.2.3.4.3.7 0 .3-.1.5-.3.7a1 1 0 0 1-.7.3h-1a1 1 0 0 1-.7-.3 1 1 0 0 1-.3-.7c0-.3.1-.5.3-.7.2-.2.4-.3.7-.3h1zM7 12c0 .3-.1.5-.3.7a1 1 0 0 1-.7.3H5a1 1 0 0 1-.7-.3A1 1 0 0 1 4 12c0-.3.1-.5.3-.7.2-.2.4-.3.7-.3h1c.3 0 .5.1.7.3.2.2.3.4.3.7zm10 3.5l.7.8c.2.1.3.4.3.6 0 .3-.1.6-.3.8a1 1 0 0 1-.8.3 1 1 0 0 1-.6-.3l-.8-.7a1 1 0 0 1-.3-.8c0-.2.1-.5.3-.7a1 1 0 0 1 1.4 0zm-10-7l-.7-.8a1 1 0 0 1-.3-.6c0-.3.1-.6.3-.8.2-.2.5-.3.8-.3.2 0 .5.1.7.3l.7.7c.2.2.3.5.3.8 0 .2-.1.5-.3.7a1 1 0 0 1-.7.3 1 1 0 0 1-.8-.3zm10 0a1 1 0 0 1-.8.3 1 1 0 0 1-.7-.3 1 1 0 0 1-.3-.7c0-.3.1-.6.3-.8l.8-.7c.1-.2.4-.3.6-.3.3 0 .6.1.8.3.2.2.3.5.3.8 0 .2-.1.5-.3.7l-.7.7zm-10 7c.2-.2.5-.3.8-.3.2 0 .5.1.7.3a1 1 0 0 1 0 1.4l-.8.8a1 1 0 0 1-.6.3 1 1 0 0 1-.8-.3 1 1 0 0 1-.3-.8c0-.2.1-.5.3-.6l.7-.8zM12 8a4 4 0 0 1 3.7 2.4 4 4 0 0 1 0 3.2A4 4 0 0 1 12 16a4 4 0 0 1-3.7-2.4 4 4 0 0 1 0-3.2A4 4 0 0 1 12 8zm0 6.5c.7 0 1.3-.2 1.8-.7.5-.5.7-1.1.7-1.8s-.2-1.3-.7-1.8c-.5-.5-1.1-.7-1.8-.7s-1.3.2-1.8.7c-.5.5-.7 1.1-.7 1.8s.2 1.3.7 1.8c.5.5 1.1.7 1.8.7z" fill-rule="evenodd"/></svg>',browse:'<svg width="24" height="24"><path d="M19 4a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2h-4v-2h4V8H5v10h4v2H5a2 2 0 0 1-2-2V6c0-1.1.9-2 2-2h14zm-8 9.4l-2.3 2.3a1 1 0 1 1-1.4-1.4l4-4a1 1 0 0 1 1.4 0l4 4a1 1 0 0 1-1.4 1.4L13 13.4V20a1 1 0 0 1-2 0v-6.6z" fill-rule="nonzero"/></svg>',cancel:'<svg width="24" height="24"><path d="M12 4.6a7.4 7.4 0 1 1 0 14.8 7.4 7.4 0 0 1 0-14.8zM12 3a9 9 0 1 0 0 18 9 9 0 0 0 0-18zm0 8L14.8 8l1 1.1-2.7 2.8 2.7 2.7-1.1 1.1-2.7-2.7-2.7 2.7-1-1.1 2.6-2.7-2.7-2.7 1-1.1 2.8 2.7z" fill-rule="nonzero"/></svg>',"change-case":'<svg width="24" height="24"><path d="M18.4 18.2v-.6c-.5.8-1.3 1.2-2.4 1.2-2.2 0-3.3-1.6-3.3-4.8 0-3.1 1-4.7 3.3-4.7 1.1 0 1.8.3 2.4 1.1v-.6c0-.5.4-.8.8-.8s.8.3.8.8v8.4c0 .5-.4.8-.8.8a.8.8 0 0 1-.8-.8zm-2-7.4c-1.3 0-1.8.9-1.8 3.2 0 2.4.5 3.3 1.7 3.3 1.3 0 1.8-.9 1.8-3.2 0-2.4-.5-3.3-1.7-3.3zM10 15.7H5.5l-.8 2.6a1 1 0 0 1-1 .7h-.2a.7.7 0 0 1-.7-1l4-12a1 1 0 1 1 2 0l4 12a.7.7 0 0 1-.8 1h-.2a1 1 0 0 1-1-.7l-.8-2.6zm-.3-1.5l-2-6.5-1.9 6.5h3.9z" fill-rule="evenodd"/></svg>',"character-count":'<svg width="24" height="24"><path d="M4 11.5h16v1H4v-1zm4.8-6.8V10H7.7V5.8h-1v-1h2zM11 8.3V9h2v1h-3V7.7l2-1v-.9h-2v-1h3v2.4l-2 1zm6.3-3.4V10h-3.1V9h2.1V8h-2.1V6.8h2.1v-1h-2.1v-1h3.1zM5.8 16.4c0-.5.2-.8.5-1 .2-.2.6-.3 1.2-.3l.8.1c.2 0 .4.2.5.3l.4.4v2.8l.2.3H8.2v-.1-.2l-.6.3H7c-.4 0-.7 0-1-.2a1 1 0 0 1-.3-.9c0-.3 0-.6.3-.8.3-.2.7-.4 1.2-.4l.6-.2h.3v-.2l-.1-.2a.8.8 0 0 0-.5-.1 1 1 0 0 0-.4 0l-.3.4h-1zm2.3.8h-.2l-.2.1-.4.1a1 1 0 0 0-.4.2l-.2.2.1.3.5.1h.4l.4-.4v-.6zm2-3.4h1.2v1.7l.5-.3h.5c.5 0 .9.1 1.2.5.3.4.5.8.5 1.4 0 .6-.2 1.1-.5 1.5-.3.4-.7.6-1.3.6l-.6-.1-.4-.4v.4h-1.1v-5.4zm1.1 3.3c0 .3 0 .6.2.8a.7.7 0 0 0 1.2 0l.2-.8c0-.4 0-.6-.2-.8a.7.7 0 0 0-.6-.3l-.6.3-.2.8zm6.1-.5c0-.2 0-.3-.2-.4a.8.8 0 0 0-.5-.2c-.3 0-.5.1-.6.3l-.2.9c0 .3 0 .6.2.8.1.2.3.3.6.3.2 0 .4 0 .5-.2l.2-.4h1.1c0 .5-.3.8-.6 1.1a2 2 0 0 1-1.3.4c-.5 0-1-.2-1.3-.6a2 2 0 0 1-.5-1.4c0-.6.1-1.1.5-1.5.3-.4.8-.5 1.4-.5.5 0 1 0 1.2.3.4.3.5.7.5 1.2h-1v-.1z" fill-rule="evenodd"/></svg>',"checklist-rtl":'<svg width="24" height="24"><path d="M5 17h8c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 0 1 0-2zm0-6h8c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 0 1 0-2zm0-6h8c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 1 1 0-2zm14.2 11c.2-.4.6-.5.9-.3.3.2.4.6.2 1L18 20c-.2.3-.7.4-1 0l-1.3-1.3a.7.7 0 0 1 0-1c.3-.2.7-.2 1 0l.7.9 1.7-2.8zm0-6c.2-.4.6-.5.9-.3.3.2.4.6.2 1L18 14c-.2.3-.7.4-1 0l-1.3-1.3a.7.7 0 0 1 0-1c.3-.2.7-.2 1 0l.7.9 1.7-2.8zm0-6c.2-.4.6-.5.9-.3.3.2.4.6.2 1L18 8c-.2.3-.7.4-1 0l-1.3-1.3a.7.7 0 0 1 0-1c.3-.2.7-.2 1 0l.7.9 1.7-2.8z" fill-rule="evenodd"/></svg>',checklist:'<svg width="24" height="24"><path d="M11 17h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 0 1 0-2zm0-6h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 0 1 0-2zm0-6h8a1 1 0 0 1 0 2h-8a1 1 0 0 1 0-2zM7.2 16c.2-.4.6-.5.9-.3.3.2.4.6.2 1L6 20c-.2.3-.7.4-1 0l-1.3-1.3a.7.7 0 0 1 0-1c.3-.2.7-.2 1 0l.7.9 1.7-2.8zm0-6c.2-.4.6-.5.9-.3.3.2.4.6.2 1L6 14c-.2.3-.7.4-1 0l-1.3-1.3a.7.7 0 0 1 0-1c.3-.2.7-.2 1 0l.7.9 1.7-2.8zm0-6c.2-.4.6-.5.9-.3.3.2.4.6.2 1L6 8c-.2.3-.7.4-1 0L3.8 6.9a.7.7 0 0 1 0-1c.3-.2.7-.2 1 0l.7.9 1.7-2.8z" fill-rule="evenodd"/></svg>',checkmark:'<svg width="24" height="24"><path d="M18.2 5.4a1 1 0 0 1 1.6 1.2l-8 12a1 1 0 0 1-1.5.1l-5-5a1 1 0 1 1 1.4-1.4l4.1 4.1 7.4-11z" fill-rule="nonzero"/></svg>',"chevron-down":'<svg width="10" height="10"><path d="M8.7 2.2c.3-.3.8-.3 1 0 .4.4.4.9 0 1.2L5.7 7.8c-.3.3-.9.3-1.2 0L.2 3.4a.8.8 0 0 1 0-1.2c.3-.3.8-.3 1.1 0L5 6l3.7-3.8z" fill-rule="nonzero"/></svg>',"chevron-left":'<svg width="10" height="10"><path d="M7.8 1.3L4 5l3.8 3.7c.3.3.3.8 0 1-.4.4-.9.4-1.2 0L2.2 5.7a.8.8 0 0 1 0-1.2L6.6.2C7 0 7.4 0 7.8.2c.3.3.3.8 0 1.1z" fill-rule="nonzero"/></svg>',"chevron-right":'<svg width="10" height="10"><path d="M2.2 1.3a.8.8 0 0 1 0-1c.4-.4.9-.4 1.2 0l4.4 4.1c.3.4.3.9 0 1.2L3.4 9.8c-.3.3-.8.3-1.2 0a.8.8 0 0 1 0-1.1L6 5 2.2 1.3z" fill-rule="nonzero"/></svg>',"chevron-up":'<svg width="10" height="10"><path d="M8.7 7.8L5 4 1.3 7.8c-.3.3-.8.3-1 0a.8.8 0 0 1 0-1.2l4.1-4.4c.3-.3.9-.3 1.2 0l4.2 4.4c.3.3.3.9 0 1.2-.3.3-.8.3-1.1 0z" fill-rule="nonzero"/></svg>',close:'<svg width="24" height="24"><path d="M17.3 8.2L13.4 12l3.9 3.8a1 1 0 0 1-1.5 1.5L12 13.4l-3.8 3.9a1 1 0 0 1-1.5-1.5l3.9-3.8-3.9-3.8a1 1 0 0 1 1.5-1.5l3.8 3.9 3.8-3.9a1 1 0 0 1 1.5 1.5z" fill-rule="evenodd"/></svg>',"code-sample":'<svg width="24" height="26"><path d="M7.1 11a2.8 2.8 0 0 1-.8 2 2.8 2.8 0 0 1 .8 2v1.7c0 .3.1.6.4.8.2.3.5.4.8.4.3 0 .4.2.4.4v.8c0 .2-.1.4-.4.4-.7 0-1.4-.3-2-.8-.5-.6-.8-1.3-.8-2V15c0-.3-.1-.6-.4-.8-.2-.3-.5-.4-.8-.4a.4.4 0 0 1-.4-.4v-.8c0-.2.2-.4.4-.4.3 0 .6-.1.8-.4.3-.2.4-.5.4-.8V9.3c0-.7.3-1.4.8-2 .6-.5 1.3-.8 2-.8.3 0 .4.2.4.4v.8c0 .2-.1.4-.4.4-.3 0-.6.1-.8.4-.3.2-.4.5-.4.8V11zm9.8 0V9.3c0-.3-.1-.6-.4-.8-.2-.3-.5-.4-.8-.4a.4.4 0 0 1-.4-.4V7c0-.2.1-.4.4-.4.7 0 1.4.3 2 .8.5.6.8 1.3.8 2V11c0 .3.1.6.4.8.2.3.5.4.8.4.2 0 .4.2.4.4v.8c0 .2-.2.4-.4.4-.3 0-.6.1-.8.4-.3.2-.4.5-.4.8v1.7c0 .7-.3 1.4-.8 2-.6.5-1.3.8-2 .8a.4.4 0 0 1-.4-.4v-.8c0-.2.1-.4.4-.4.3 0 .6-.1.8-.4.3-.2.4-.5.4-.8V15a2.8 2.8 0 0 1 .8-2 2.8 2.8 0 0 1-.8-2zm-3.3-.4c0 .4-.1.8-.5 1.1-.3.3-.7.5-1.1.5-.4 0-.8-.2-1.1-.5-.4-.3-.5-.7-.5-1.1 0-.5.1-.9.5-1.2.3-.3.7-.4 1.1-.4.4 0 .8.1 1.1.4.4.3.5.7.5 1.2zM12 13c.4 0 .8.1 1.1.5.4.3.5.7.5 1.1 0 1-.1 1.6-.5 2a3 3 0 0 1-1.1 1c-.4.3-.8.4-1.1.4a.5.5 0 0 1-.5-.5V17a3 3 0 0 0 1-.2l.6-.6c-.6 0-1-.2-1.3-.5-.2-.3-.3-.7-.3-1 0-.5.1-1 .5-1.2.3-.4.7-.5 1.1-.5z" fill-rule="evenodd"/></svg>',"color-levels":'<svg width="24" height="24"><path d="M17.5 11.4A9 9 0 0 1 18 14c0 .5 0 1-.2 1.4 0 .4-.3.9-.5 1.3a6.2 6.2 0 0 1-3.7 3 5.7 5.7 0 0 1-3.2 0A5.9 5.9 0 0 1 7.6 18a6.2 6.2 0 0 1-1.4-2.6 6.7 6.7 0 0 1 0-2.8c0-.4.1-.9.3-1.3a13.6 13.6 0 0 1 2.3-4A20 20 0 0 1 12 4a26.4 26.4 0 0 1 3.2 3.4 18.2 18.2 0 0 1 2.3 4zm-2 4.5c.4-.7.5-1.4.5-2a7.3 7.3 0 0 0-1-3.2c.2.6.2 1.2.2 1.9a4.5 4.5 0 0 1-1.3 3 5.3 5.3 0 0 1-2.3 1.5 4.9 4.9 0 0 1-2 .1 4.3 4.3 0 0 0 2.4.8 4 4 0 0 0 2-.6 4 4 0 0 0 1.5-1.5z" fill-rule="evenodd"/></svg>',"color-picker":'<svg width="24" height="24"><path d="M12 3a9 9 0 0 0 0 18 1.5 1.5 0 0 0 1.1-2.5c-.2-.3-.4-.6-.4-1 0-.8.7-1.5 1.5-1.5H16a5 5 0 0 0 5-5c0-4.4-4-8-9-8zm-5.5 9a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3zm3-4a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3zm5 0a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3zm3 4a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3z" fill-rule="nonzero"/></svg>',"color-swatch-remove-color":'<svg width="24" height="24"><path stroke="#000" stroke-width="2" d="M21 3L3 21" fill-rule="evenodd"/></svg>',"color-swatch":'<svg width="24" height="24"><rect x="3" y="3" width="18" height="18" rx="1" fill-rule="evenodd"/></svg>',"comment-add":'<svg width="24" height="24"><g fill-rule="nonzero"><path d="M9 19l3-2h7c.6 0 1-.4 1-1V6c0-.6-.4-1-1-1H5a1 1 0 0 0-1 1v10c0 .6.4 1 1 1h4v2zm-2 4v-4H5a3 3 0 0 1-3-3V6a3 3 0 0 1 3-3h14a3 3 0 0 1 3 3v10a3 3 0 0 1-3 3h-6.4L7 23z"/><path d="M13 10h2a1 1 0 0 1 0 2h-2v2a1 1 0 0 1-2 0v-2H9a1 1 0 0 1 0-2h2V8a1 1 0 0 1 2 0v2z"/></g></svg>',comment:'<svg width="24" height="24"><path fill-rule="nonzero" d="M9 19l3-2h7c.6 0 1-.4 1-1V6c0-.6-.4-1-1-1H5a1 1 0 0 0-1 1v10c0 .6.4 1 1 1h4v2zm-2 4v-4H5a3 3 0 0 1-3-3V6a3 3 0 0 1 3-3h14a3 3 0 0 1 3 3v10a3 3 0 0 1-3 3h-6.4L7 23z"/></svg>',contrast:'<svg width="24" height="24"><path d="M12 4a7.8 7.8 0 0 1 5.7 2.3A8 8 0 1 1 12 4zm-6 8a6 6 0 0 0 6 6V6a6 6 0 0 0-6 6z" fill-rule="evenodd"/></svg>',copy:'<svg width="24" height="24"><path d="M16 3H6a2 2 0 0 0-2 2v11h2V5h10V3zm1 4a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2h-7a2 2 0 0 1-2-2V9c0-1.2.9-2 2-2h7zm0 12V9h-7v10h7z" fill-rule="nonzero"/></svg>',crop:'<svg width="24" height="24"><path d="M17 8v7h2c.6 0 1 .4 1 1s-.4 1-1 1h-2v2c0 .6-.4 1-1 1a1 1 0 0 1-1-1v-2H7V9H5a1 1 0 1 1 0-2h2V5c0-.6.4-1 1-1s1 .4 1 1v2h7l3-3 1 1-3 3zM9 9v5l5-5H9zm1 6h5v-5l-5 5z" fill-rule="evenodd"/></svg>',cut:'<svg width="24" height="24"><path d="M18 15c.6.7 1 1.4 1 2.3 0 .8-.2 1.5-.7 2l-.8.5-1 .2c-.4 0-.8 0-1.2-.3a3.9 3.9 0 0 1-2.1-2.2c-.2-.5-.3-1-.2-1.5l-1-1-1 1c0 .5 0 1-.2 1.5-.1.5-.4 1-.9 1.4-.3.4-.7.6-1.2.8l-1.2.3c-.4 0-.7 0-1-.2-.3 0-.6-.3-.8-.5-.5-.5-.8-1.2-.7-2 0-.9.4-1.6 1-2.2A3.7 3.7 0 0 1 8.6 14H9l1-1-4-4-.5-1a3.3 3.3 0 0 1 0-2c0-.4.3-.7.5-1l6 6 6-6 .5 1a3.3 3.3 0 0 1 0 2c0 .4-.3.7-.5 1l-4 4 1 1h.5c.4 0 .8 0 1.2.3.5.2.9.4 1.2.8zm-8.5 2.2l.1-.4v-.3-.4a1 1 0 0 0-.2-.5 1 1 0 0 0-.4-.2 1.6 1.6 0 0 0-.8 0 2.6 2.6 0 0 0-.8.3 2.5 2.5 0 0 0-.9 1.1l-.1.4v.7l.2.5.5.2h.7a2.5 2.5 0 0 0 .8-.3 2.8 2.8 0 0 0 1-1zm2.5-2.8c.4 0 .7-.1 1-.4.3-.3.4-.6.4-1s-.1-.7-.4-1c-.3-.3-.6-.4-1-.4s-.7.1-1 .4c-.3.3-.4.6-.4 1s.1.7.4 1c.3.3.6.4 1 .4zm5.4 4l.2-.5v-.4-.3a2.6 2.6 0 0 0-.3-.8 2.4 2.4 0 0 0-.7-.7 2.5 2.5 0 0 0-.8-.3 1.5 1.5 0 0 0-.8 0 1 1 0 0 0-.4.2 1 1 0 0 0-.2.5 1.5 1.5 0 0 0 0 .7v.4l.3.4.3.4a2.8 2.8 0 0 0 .8.5l.4.1h.7l.5-.2z" fill-rule="evenodd"/></svg>',"document-properties":'<svg width="24" height="24"><path d="M14.4 3H7a2 2 0 0 0-2 2v14c0 1.1.9 2 2 2h10a2 2 0 0 0 2-2V7.6L14.4 3zM17 19H7V5h6v4h4v10z" fill-rule="nonzero"/></svg>',drag:'<svg width="24" height="24"><path d="M13 5h2v2h-2V5zm0 4h2v2h-2V9zM9 9h2v2H9V9zm4 4h2v2h-2v-2zm-4 0h2v2H9v-2zm0 4h2v2H9v-2zm4 0h2v2h-2v-2zM9 5h2v2H9V5z" fill-rule="evenodd"/></svg>',duplicate:'<svg width="24" height="24"><g fill-rule="nonzero"><path d="M16 3v2H6v11H4V5c0-1.1.9-2 2-2h10zm3 8h-2V9h-7v10h9a2 2 0 0 1-2 2h-7a2 2 0 0 1-2-2V9c0-1.2.9-2 2-2h7a2 2 0 0 1 2 2v2z"/><path d="M17 14h1a1 1 0 0 1 0 2h-1v1a1 1 0 0 1-2 0v-1h-1a1 1 0 0 1 0-2h1v-1a1 1 0 0 1 2 0v1z"/></g></svg>',"edit-block":'<svg width="24" height="24"><path fill-rule="nonzero" d="M19.8 8.8l-9.4 9.4c-.2.2-.5.4-.9.4l-5.4 1.2 1.2-5.4.5-.8 9.4-9.4c.7-.7 1.8-.7 2.5 0l2.1 2.1c.7.7.7 1.8 0 2.5zm-2-.2l1-.9v-.3l-2.2-2.2a.3.3 0 0 0-.3 0l-1 1L18 8.5zm-1 1l-2.5-2.4-6 6 2.5 2.5 6-6zm-7 7.1l-2.6-2.4-.3.3-.1.2-.7 3 3.1-.6h.1l.4-.5z"/></svg>',"edit-image":'<svg width="24" height="24"><path d="M18 16h2V7a2 2 0 0 0-2-2H7v2h11v9zM6 17h15a1 1 0 0 1 0 2h-1v1a1 1 0 0 1-2 0v-1H6a2 2 0 0 1-2-2V7H3a1 1 0 1 1 0-2h1V4a1 1 0 1 1 2 0v13zm3-5.3l1.3 2 3-4.7 3.7 6H7l2-3.3z" fill-rule="nonzero"/></svg>',"embed-page":'<svg width="24" height="24"><path d="M19 6V5H5v14h2A13 13 0 0 1 19 6zm0 1.4c-.8.8-1.6 2.4-2.2 4.6H19V7.4zm0 5.6h-2.4c-.4 1.8-.6 3.8-.6 6h3v-6zm-4 6c0-2.2.2-4.2.6-6H13c-.7 1.8-1.1 3.8-1.1 6h3zm-4 0c0-2.2.4-4.2 1-6H9.6A12 12 0 0 0 8 19h3zM4 3h16c.6 0 1 .4 1 1v16c0 .6-.4 1-1 1H4a1 1 0 0 1-1-1V4c0-.6.4-1 1-1zm11.8 9c.4-1.9 1-3.4 1.8-4.5a9.2 9.2 0 0 0-4 4.5h2.2zm-3.4 0a12 12 0 0 1 2.8-4 12 12 0 0 0-5 4h2.2z" fill-rule="nonzero"/></svg>',embed:'<svg width="24" height="24"><path d="M4 3h16c.6 0 1 .4 1 1v16c0 .6-.4 1-1 1H4a1 1 0 0 1-1-1V4c0-.6.4-1 1-1zm1 2v14h14V5H5zm4.8 2.6l5.6 4a.5.5 0 0 1 0 .8l-5.6 4A.5.5 0 0 1 9 16V8a.5.5 0 0 1 .8-.4z" fill-rule="nonzero"/></svg>',emoji:'<svg width="24" height="24"><path d="M9 11c.6 0 1-.4 1-1s-.4-1-1-1a1 1 0 0 0-1 1c0 .6.4 1 1 1zm6 0c.6 0 1-.4 1-1s-.4-1-1-1a1 1 0 0 0-1 1c0 .6.4 1 1 1zm-3 5.5c2.1 0 4-1.5 4.4-3.5H7.6c.5 2 2.3 3.5 4.4 3.5zM12 4a8 8 0 1 0 0 16 8 8 0 0 0 0-16zm0 14.5a6.5 6.5 0 1 1 0-13 6.5 6.5 0 0 1 0 13z" fill-rule="nonzero"/></svg>',fill:'<svg width="24" height="26"><path d="M16.6 12l-9-9-1.4 1.4 2.4 2.4-5.2 5.1c-.5.6-.5 1.6 0 2.2L9 19.6a1.5 1.5 0 0 0 2.2 0l5.5-5.5c.5-.6.5-1.6 0-2.2zM5.2 13L10 8.2l4.8 4.8H5.2zM19 14.5s-2 2.2-2 3.5c0 1.1.9 2 2 2a2 2 0 0 0 2-2c0-1.3-2-3.5-2-3.5z" fill-rule="nonzero"/></svg>',"flip-horizontally":'<svg width="24" height="24"><path d="M14 19h2v-2h-2v2zm4-8h2V9h-2v2zM4 7v10c0 1.1.9 2 2 2h3v-2H6V7h3V5H6a2 2 0 0 0-2 2zm14-2v2h2a2 2 0 0 0-2-2zm-7 16h2V3h-2v18zm7-6h2v-2h-2v2zm-4-8h2V5h-2v2zm4 12a2 2 0 0 0 2-2h-2v2z" fill-rule="nonzero"/></svg>',"flip-vertically":'<svg width="24" height="24"><path d="M5 14v2h2v-2H5zm8 4v2h2v-2h-2zm4-14H7a2 2 0 0 0-2 2v3h2V6h10v3h2V6a2 2 0 0 0-2-2zm2 14h-2v2a2 2 0 0 0 2-2zM3 11v2h18v-2H3zm6 7v2h2v-2H9zm8-4v2h2v-2h-2zM5 18c0 1.1.9 2 2 2v-2H5z" fill-rule="nonzero"/></svg>',"format-painter":'<svg width="24" height="24"><path d="M18 5V4c0-.5-.4-1-1-1H5a1 1 0 0 0-1 1v4c0 .6.5 1 1 1h12c.6 0 1-.4 1-1V7h1v4H9v9c0 .6.4 1 1 1h2c.6 0 1-.4 1-1v-7h8V5h-3z" fill-rule="nonzero"/></svg>',fullscreen:'<svg width="24" height="24"><path d="M15.3 10l-1.2-1.3 2.9-3h-2.3a.9.9 0 1 1 0-1.7H19c.5 0 .9.4.9.9v4.4a.9.9 0 1 1-1.8 0V7l-2.9 3zm0 4l3 3v-2.3a.9.9 0 1 1 1.7 0V19c0 .5-.4.9-.9.9h-4.4a.9.9 0 1 1 0-1.8H17l-3-2.9 1.3-1.2zM10 15.4l-2.9 3h2.3a.9.9 0 1 1 0 1.7H5a.9.9 0 0 1-.9-.9v-4.4a.9.9 0 1 1 1.8 0V17l2.9-3 1.2 1.3zM8.7 10L5.7 7v2.3a.9.9 0 0 1-1.7 0V5c0-.5.4-.9.9-.9h4.4a.9.9 0 0 1 0 1.8H7l3 2.9-1.3 1.2z" fill-rule="nonzero"/></svg>',gallery:'<svg width="24" height="24"><path fill-rule="nonzero" d="M5 15.7l2.3-2.2c.3-.3.7-.3 1 0L11 16l5.1-5c.3-.4.8-.4 1 0l2 1.9V8H5v7.7zM5 18V19h3l1.8-1.9-2-2L5 17.9zm14-3l-2.5-2.4-6.4 6.5H19v-4zM4 6h16c.6 0 1 .4 1 1v13c0 .6-.4 1-1 1H4a1 1 0 0 1-1-1V7c0-.6.4-1 1-1zm6 7a2 2 0 1 1 0-4 2 2 0 0 1 0 4zM4.5 4h15a.5.5 0 1 1 0 1h-15a.5.5 0 0 1 0-1zm2-2h11a.5.5 0 1 1 0 1h-11a.5.5 0 0 1 0-1z"/></svg>',gamma:'<svg width="24" height="24"><path d="M4 3h16c.6 0 1 .4 1 1v16c0 .6-.4 1-1 1H4a1 1 0 0 1-1-1V4c0-.6.4-1 1-1zm1 2v14h14V5H5zm6.5 11.8V14L9.2 8.7a5.1 5.1 0 0 0-.4-.8l-.1-.2H8 8v-1l.3-.1.3-.1h.7a1 1 0 0 1 .6.5l.1.3a8.5 8.5 0 0 1 .3.6l1.9 4.6 2-5.2a1 1 0 0 1 1-.6.5.5 0 0 1 .5.6L13 14v2.8a.7.7 0 0 1-1.4 0z" fill-rule="nonzero"/></svg>',help:'<svg width="24" height="24"><g fill-rule="evenodd"><path d="M12 5.5a6.5 6.5 0 0 0-6 9 6.3 6.3 0 0 0 1.4 2l1 1a6.3 6.3 0 0 0 3.6 1 6.5 6.5 0 0 0 6-9 6.3 6.3 0 0 0-1.4-2l-1-1a6.3 6.3 0 0 0-3.6-1zM12 4a7.8 7.8 0 0 1 5.7 2.3A8 8 0 1 1 12 4z"/><path d="M9.6 9.7a.7.7 0 0 1-.7-.8c0-1.1 1.5-1.8 3.2-1.8 1.8 0 3.2.8 3.2 2.4 0 1.4-.4 2.1-1.5 2.8-.2 0-.3.1-.3.2a2 2 0 0 0-.8.8.8.8 0 0 1-1.4-.6c.3-.7.8-1 1.3-1.5l.4-.2c.7-.4.8-.6.8-1.5 0-.5-.6-.9-1.7-.9-.5 0-1 .1-1.4.3-.2 0-.3.1-.3.2v-.2c0 .4-.4.8-.8.8z" fill-rule="nonzero"/><circle cx="12" cy="16" r="1"/></g></svg>',"highlight-bg-color":'<svg width="24" height="24"><g fill-rule="evenodd"><path id="tox-icon-highlight-bg-color__color" d="M3 18h18v3H3z"/><path fill-rule="nonzero" d="M7.7 16.7H3l3.3-3.3-.7-.8L10.2 8l4 4.1-4 4.2c-.2.2-.6.2-.8 0l-.6-.7-1.1 1.1zm5-7.5L11 7.4l3-2.9a2 2 0 0 1 2.6 0L18 6c.7.7.7 2 0 2.7l-2.9 2.9-1.8-1.8-.5-.6"/></g></svg>',home:'<svg width="24" height="24"><path fill-rule="nonzero" d="M10 20v-6h4v6h5v-8h3L12 3 2 12h3v8z"/></svg>',"horizontal-rule":'<svg width="24" height="24"><path d="M4 11h16v2H4z" fill-rule="evenodd"/></svg>',"image-options":'<svg width="24" height="24"><path d="M6 10a2 2 0 0 0-2 2c0 1.1.9 2 2 2a2 2 0 0 0 2-2 2 2 0 0 0-2-2zm12 0a2 2 0 0 0-2 2c0 1.1.9 2 2 2a2 2 0 0 0 2-2 2 2 0 0 0-2-2zm-6 0a2 2 0 0 0-2 2c0 1.1.9 2 2 2a2 2 0 0 0 2-2 2 2 0 0 0-2-2z" fill-rule="nonzero"/></svg>',image:'<svg width="24" height="24"><path d="M5 15.7l3.3-3.2c.3-.3.7-.3 1 0L12 15l4.1-4c.3-.4.8-.4 1 0l2 1.9V5H5v10.7zM5 18V19h3l2.8-2.9-2-2L5 17.9zm14-3l-2.5-2.4-6.4 6.5H19v-4zM4 3h16c.6 0 1 .4 1 1v16c0 .6-.4 1-1 1H4a1 1 0 0 1-1-1V4c0-.6.4-1 1-1zm6 8a2 2 0 1 0 0-4 2 2 0 0 0 0 4z" fill-rule="nonzero"/></svg>',indent:'<svg width="24" height="24"><path d="M7 5h12c.6 0 1 .4 1 1s-.4 1-1 1H7a1 1 0 1 1 0-2zm5 4h7c.6 0 1 .4 1 1s-.4 1-1 1h-7a1 1 0 0 1 0-2zm0 4h7c.6 0 1 .4 1 1s-.4 1-1 1h-7a1 1 0 0 1 0-2zm-5 4h12a1 1 0 0 1 0 2H7a1 1 0 0 1 0-2zm-2.6-3.8L6.2 12l-1.8-1.2a1 1 0 0 1 1.2-1.6l3 2a1 1 0 0 1 0 1.6l-3 2a1 1 0 1 1-1.2-1.6z" fill-rule="evenodd"/></svg>',info:'<svg width="24" height="24"><path d="M12 4a7.8 7.8 0 0 1 5.7 2.3A8 8 0 1 1 12 4zm-1 3v2h2V7h-2zm3 10v-1h-1v-5h-3v1h1v4h-1v1h4z" fill-rule="evenodd"/></svg>',"insert-character":'<svg width="24" height="24"><path d="M15 18h4l1-2v4h-6v-3.3l1.4-1a6 6 0 0 0 1.8-2.9 6.3 6.3 0 0 0-.1-4.1 5.8 5.8 0 0 0-3-3.2c-.6-.3-1.3-.5-2.1-.5a5.1 5.1 0 0 0-3.9 1.8 6.3 6.3 0 0 0-1.3 6 6.2 6.2 0 0 0 1.8 3l1.4.9V20H4v-4l1 2h4v-.5l-2-1L5.4 15A6.5 6.5 0 0 1 4 11c0-1 .2-1.9.6-2.7A7 7 0 0 1 6.3 6C7.1 5.4 8 5 9 4.5c1-.3 2-.5 3.1-.5a8.8 8.8 0 0 1 5.7 2 7 7 0 0 1 1.7 2.3 6 6 0 0 1 .2 4.8c-.2.7-.6 1.3-1 1.9a7.6 7.6 0 0 1-3.6 2.5v.5z" fill-rule="evenodd"/></svg>',"insert-time":'<svg width="24" height="24"><g fill-rule="nonzero"><path d="M12 19a7 7 0 1 0 0-14 7 7 0 0 0 0 14zm0 2a9 9 0 1 1 0-18 9 9 0 0 1 0 18z"/><path d="M16 12h-3V7c0-.6-.4-1-1-1a1 1 0 0 0-1 1v7h5c.6 0 1-.4 1-1s-.4-1-1-1z"/></g></svg>',invert:'<svg width="24" height="24"><path d="M18 19.3L16.5 18a5.8 5.8 0 0 1-3.1 1.9 6.1 6.1 0 0 1-5.5-1.6A5.8 5.8 0 0 1 6 14v-.3l.1-1.2A13.9 13.9 0 0 1 7.7 9l-3-3 .7-.8 2.8 2.9 9 8.9 1.5 1.6-.7.6zm0-5.5v.3l-.1 1.1-.4 1-1.2-1.2a4.3 4.3 0 0 0 .2-1v-.2c0-.4 0-.8-.2-1.3l-.5-1.4a14.8 14.8 0 0 0-3-4.2L12 6a26.1 26.1 0 0 0-2.2 2.5l-1-1a20.9 20.9 0 0 1 2.9-3.3L12 4l1 .8a22.2 22.2 0 0 1 4 5.4c.6 1.2 1 2.4 1 3.6z" fill-rule="evenodd"/></svg>',italic:'<svg width="24" height="24"><path d="M16.7 4.7l-.1.9h-.3c-.6 0-1 0-1.4.3-.3.3-.4.6-.5 1.1l-2.1 9.8v.6c0 .5.4.8 1.4.8h.2l-.2.8H8l.2-.8h.2c1.1 0 1.8-.5 2-1.5l2-9.8.1-.5c0-.6-.4-.8-1.4-.8h-.3l.2-.9h5.8z" fill-rule="evenodd"/></svg>',line:'<svg width="24" height="24"><path d="M15 9l-8 8H4v-3l8-8 3 3zm1-1l-3-3 1-1h1c-.2 0 0 0 0 0l2 2s0 .2 0 0v1l-1 1zM4 18h16v2H4v-2z" fill-rule="evenodd"/></svg>',link:'<svg width="24" height="24"><path d="M6.2 12.3a1 1 0 0 1 1.4 1.4l-2.1 2a2 2 0 1 0 2.7 2.8l4.8-4.8a1 1 0 0 0 0-1.4 1 1 0 1 1 1.4-1.3 2.9 2.9 0 0 1 0 4L9.6 20a3.9 3.9 0 0 1-5.5-5.5l2-2zm11.6-.6a1 1 0 0 1-1.4-1.4l2-2a2 2 0 1 0-2.6-2.8L11 10.3a1 1 0 0 0 0 1.4A1 1 0 1 1 9.6 13a2.9 2.9 0 0 1 0-4L14.4 4a3.9 3.9 0 0 1 5.5 5.5l-2 2z" fill-rule="nonzero"/></svg>',"list-bull-circle":'<svg width="48" height="48"><g fill-rule="evenodd"><path d="M11 16a2 2 0 1 0 0-4 2 2 0 0 0 0 4zm0 1a3 3 0 1 1 0-6 3 3 0 0 1 0 6zM11 26a2 2 0 1 0 0-4 2 2 0 0 0 0 4zm0 1a3 3 0 1 1 0-6 3 3 0 0 1 0 6zM11 36a2 2 0 1 0 0-4 2 2 0 0 0 0 4zm0 1a3 3 0 1 1 0-6 3 3 0 0 1 0 6z" fill-rule="nonzero"/><path opacity=".2" d="M18 12h22v4H18zM18 22h22v4H18zM18 32h22v4H18z"/></g></svg>',"list-bull-default":'<svg width="48" height="48"><g fill-rule="evenodd"><circle cx="11" cy="14" r="3"/><circle cx="11" cy="24" r="3"/><circle cx="11" cy="34" r="3"/><path opacity=".2" d="M18 12h22v4H18zM18 22h22v4H18zM18 32h22v4H18z"/></g></svg>',"list-bull-square":'<svg width="48" height="48"><g fill-rule="evenodd"><path d="M8 11h6v6H8zM8 21h6v6H8zM8 31h6v6H8z"/><path opacity=".2" d="M18 12h22v4H18zM18 22h22v4H18zM18 32h22v4H18z"/></g></svg>',"list-num-default-rtl":'<svg width="48" height="48"><g fill-rule="evenodd"><path opacity=".2" d="M8 12h22v4H8zM8 22h22v4H8zM8 32h22v4H8z"/><path d="M37.4 17v-4.8l-1.6 1v-1.1l1.6-1h1.2V17zM33.3 17.1c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7zm1.7 5.7c0-1.2 1-2 2.2-2 1.3 0 2.1.8 2.1 1.8 0 .7-.3 1.2-1.3 2.2l-1.2 1v.2h2.6v1h-4.3v-.9l2-1.9c.8-.8 1-1.1 1-1.5 0-.5-.4-.8-1-.8-.5 0-.9.3-.9.9H35zm-1.7 4.3c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7zm3.2 7.3v-1h.7c.6 0 1-.3 1-.8 0-.4-.4-.7-1-.7s-1 .3-1 .8H35c0-1.1 1-1.8 2.2-1.8 1.2 0 2.1.6 2.1 1.6 0 .7-.4 1.2-1 1.3v.1c.7.1 1.3.7 1.3 1.4 0 1-1 1.9-2.4 1.9-1.3 0-2.2-.8-2.3-2h1.2c0 .6.5 1 1.1 1 .6 0 1-.4 1-1 0-.5-.3-.8-1-.8h-.7zm-3.3 2.7c-.4 0-.7-.3-.7-.7 0-.4.3-.7.7-.7.5 0 .8.3.8.7 0 .4-.3.7-.8.7z"/></g></svg>',"list-num-default":'<svg width="48" height="48"><g fill-rule="evenodd"><path opacity=".2" d="M18 12h22v4H18zM18 22h22v4H18zM18 32h22v4H18z"/><path d="M10 17v-4.8l-1.5 1v-1.1l1.6-1h1.2V17h-1.2zm3.6.1c-.4 0-.7-.3-.7-.7 0-.4.3-.7.7-.7.5 0 .7.3.7.7 0 .4-.2.7-.7.7zm-5 5.7c0-1.2.8-2 2.1-2s2.1.8 2.1 1.8c0 .7-.3 1.2-1.4 2.2l-1.1 1v.2h2.6v1H8.6v-.9l2-1.9c.8-.8 1-1.1 1-1.5 0-.5-.4-.8-1-.8-.5 0-.9.3-.9.9H8.5zm6.3 4.3c-.5 0-.7-.3-.7-.7 0-.4.2-.7.7-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7zM10 34.4v-1h.7c.6 0 1-.3 1-.8 0-.4-.4-.7-1-.7s-1 .3-1 .8H8.6c0-1.1 1-1.8 2.2-1.8 1.3 0 2.1.6 2.1 1.6 0 .7-.4 1.2-1 1.3v.1c.8.1 1.3.7 1.3 1.4 0 1-1 1.9-2.4 1.9-1.3 0-2.2-.8-2.3-2h1.2c0 .6.5 1 1.1 1 .7 0 1-.4 1-1 0-.5-.3-.8-1-.8h-.7zm4.7 2.7c-.4 0-.7-.3-.7-.7 0-.4.3-.7.7-.7.5 0 .8.3.8.7 0 .4-.3.7-.8.7z"/></g></svg>',"list-num-lower-alpha-rtl":'<svg width="48" height="48"><g fill-rule="evenodd"><path opacity=".2" d="M8 12h22v4H8zM8 22h22v4H8zM8 32h22v4H8z"/><path d="M36.5 16c-.9 0-1.5-.5-1.5-1.3s.6-1.3 1.8-1.4h1v-.4c0-.4-.2-.6-.7-.6-.4 0-.7.1-.8.4h-1.1c0-.8.8-1.4 2-1.4S39 12 39 13V16h-1.2v-.6c-.3.4-.8.7-1.4.7zm.4-.8c.6 0 1-.4 1-.9V14h-1c-.5.1-.7.3-.7.6 0 .4.3.6.7.6zM33.1 16.1c-.4 0-.7-.3-.7-.7 0-.4.3-.7.7-.7.5 0 .8.3.8.7 0 .4-.3.7-.8.7zM37.7 26c-.7 0-1.2-.2-1.5-.7v.7H35v-6.3h1.2v2.5c.3-.5.8-.9 1.5-.9 1.1 0 1.8 1 1.8 2.4 0 1.5-.7 2.4-1.8 2.4zm-.5-3.6c-.6 0-1 .5-1 1.3s.4 1.4 1 1.4c.7 0 1-.6 1-1.4 0-.8-.3-1.3-1-1.3zM33.2 26.1c-.4 0-.7-.3-.7-.7 0-.4.3-.7.7-.7.5 0 .8.3.8.7 0 .4-.3.7-.8.7zm6 7h-1c-.1-.5-.4-.8-1-.8s-1 .5-1 1.4c0 1 .4 1.4 1 1.4.5 0 .9-.2 1-.7h1c0 1-.8 1.7-2 1.7-1.4 0-2.2-.9-2.2-2.4s.8-2.4 2.2-2.4c1.2 0 2 .7 2 1.7zm-6.1 3c-.5 0-.7-.3-.7-.7 0-.4.2-.7.7-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7z"/></g></svg>',"list-num-lower-alpha":'<svg width="48" height="48"><g fill-rule="evenodd"><path opacity=".2" d="M18 12h22v4H18zM18 22h22v4H18zM18 32h22v4H18z"/><path d="M10.3 15.2c.5 0 1-.4 1-.9V14h-1c-.5.1-.8.3-.8.6 0 .4.3.6.8.6zm-.4.9c-1 0-1.5-.6-1.5-1.4 0-.8.6-1.3 1.7-1.4h1.1v-.4c0-.4-.2-.6-.7-.6-.5 0-.8.1-.9.4h-1c0-.8.8-1.4 2-1.4 1.1 0 1.8.6 1.8 1.6V16h-1.1v-.6h-.1c-.2.4-.7.7-1.3.7zm4.6 0c-.5 0-.7-.3-.7-.7 0-.4.2-.7.7-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7zm-3.2 10c-.6 0-1.2-.3-1.4-.8v.7H8.5v-6.3H10v2.5c.3-.5.8-.9 1.4-.9 1.2 0 1.9 1 1.9 2.4 0 1.5-.7 2.4-1.9 2.4zm-.4-3.7c-.7 0-1 .5-1 1.3s.3 1.4 1 1.4c.6 0 1-.6 1-1.4 0-.8-.4-1.3-1-1.3zm4 3.7c-.5 0-.7-.3-.7-.7 0-.4.2-.7.7-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7zm-2.2 7h-1.2c0-.5-.4-.8-.9-.8-.6 0-1 .5-1 1.4 0 1 .4 1.4 1 1.4.5 0 .8-.2 1-.7h1c0 1-.8 1.7-2 1.7-1.4 0-2.2-.9-2.2-2.4s.8-2.4 2.2-2.4c1.2 0 2 .7 2 1.7zm1.8 3c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7z"/></g></svg>',"list-num-lower-greek-rtl":'<svg width="48" height="48"><g fill-rule="evenodd"><path opacity=".2" d="M8 12h22v4H8zM8 22h22v4H8zM8 32h22v4H8z"/><path d="M37.4 16c-1.2 0-2-.8-2-2.3 0-1.5.8-2.4 2-2.4.6 0 1 .4 1.3 1v-.9H40v3.2c0 .4.1.5.4.5h.2v.9h-.6c-.6 0-1-.2-1-.7h-.2c-.2.4-.7.8-1.3.8zm.3-1c.6 0 1-.5 1-1.3s-.4-1.3-1-1.3-1 .5-1 1.3.4 1.4 1 1.4zM33.3 16.1c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7zM36 21.9c0-1.5.8-2.3 2.1-2.3 1.2 0 2 .6 2 1.6 0 .6-.3 1-.9 1.3.9.3 1.3.8 1.3 1.7 0 1.2-.7 1.9-1.8 1.9-.6 0-1.1-.3-1.4-.8v2.2H36V22zm1.8 1.2v-1h.3c.5 0 .9-.2.9-.7 0-.5-.3-.8-.9-.8-.5 0-.8.3-.8 1v2.2c0 .8.4 1.3 1 1.3s1-.4 1-1-.4-1-1.2-1h-.3zM33.3 26.1c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7zM37.1 34.6L34.8 30h1.4l1.7 3.5 1.7-3.5h1.1l-2.2 4.6v.1c.5.8.7 1.4.7 1.8 0 .4-.2.8-.4 1-.2.2-.6.3-1 .3-.9 0-1.3-.4-1.3-1.2 0-.5.2-1 .5-1.7l.1-.2zm.7 1a2 2 0 0 0-.4.9c0 .3.1.4.4.4.3 0 .4-.1.4-.4 0-.2-.1-.6-.4-1zM33.3 36.1c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7z"/></g></svg>',"list-num-lower-greek":'<svg width="48" height="48"><g fill-rule="evenodd"><path opacity=".2" d="M18 12h22v4H18zM18 22h22v4H18zM18 32h22v4H18z"/><path d="M10.5 15c.7 0 1-.5 1-1.3s-.3-1.3-1-1.3c-.5 0-.9.5-.9 1.3s.4 1.4 1 1.4zm-.3 1c-1.1 0-1.8-.8-1.8-2.3 0-1.5.7-2.4 1.8-2.4.7 0 1.1.4 1.3 1h.1v-.9h1.2v3.2c0 .4.1.5.4.5h.2v.9h-.6c-.6 0-1-.2-1.1-.7h-.1c-.2.4-.7.8-1.4.8zm5 .1c-.5 0-.8-.3-.8-.7 0-.4.3-.7.7-.7.5 0 .8.3.8.7 0 .4-.3.7-.8.7zm-4.9 7v-1h.3c.6 0 1-.2 1-.7 0-.5-.4-.8-1-.8-.5 0-.8.3-.8 1v2.2c0 .8.4 1.3 1.1 1.3.6 0 1-.4 1-1s-.5-1-1.3-1h-.3zM8.6 22c0-1.5.7-2.3 2-2.3 1.2 0 2 .6 2 1.6 0 .6-.3 1-.8 1.3.8.3 1.3.8 1.3 1.7 0 1.2-.8 1.9-1.9 1.9-.6 0-1.1-.3-1.3-.8v2.2H8.5V22zm6.2 4.2c-.4 0-.7-.3-.7-.7 0-.4.3-.7.7-.7.5 0 .7.3.7.7 0 .4-.2.7-.7.7zm-4.5 8.5L8 30h1.4l1.7 3.5 1.7-3.5h1.1l-2.2 4.6v.1c.5.8.7 1.4.7 1.8 0 .4-.1.8-.4 1-.2.2-.6.3-1 .3-.9 0-1.3-.4-1.3-1.2 0-.5.2-1 .5-1.7l.1-.2zm.7 1a2 2 0 0 0-.4.9c0 .3.1.4.4.4.3 0 .4-.1.4-.4 0-.2-.1-.6-.4-1zm4.5.5c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7z"/></g></svg>',"list-num-lower-roman-rtl":'<svg width="48" height="48"><g fill-rule="evenodd"><path opacity=".2" d="M8 12h22v4H8zM8 22h22v4H8zM8 32h22v4H8z"/><path d="M32.9 16v-1.2h-1.3V16H33zm0 10v-1.2h-1.3V26H33zm0 10v-1.2h-1.3V36H33z"/><path fill-rule="nonzero" d="M36 21h-1.5v5H36zM36 31h-1.5v5H36zM39 21h-1.5v5H39zM39 31h-1.5v5H39zM42 31h-1.5v5H42zM36 11h-1.5v5H36zM36 19h-1.5v1H36zM36 29h-1.5v1H36zM39 19h-1.5v1H39zM39 29h-1.5v1H39zM42 29h-1.5v1H42zM36 9h-1.5v1H36z"/></g></svg>',"list-num-lower-roman":'<svg width="48" height="48"><g fill-rule="evenodd"><path opacity=".2" d="M18 12h22v4H18zM18 22h22v4H18zM18 32h22v4H18z"/><path d="M15.1 16v-1.2h1.3V16H15zm0 10v-1.2h1.3V26H15zm0 10v-1.2h1.3V36H15z"/><path fill-rule="nonzero" d="M12 21h1.5v5H12zM12 31h1.5v5H12zM9 21h1.5v5H9zM9 31h1.5v5H9zM6 31h1.5v5H6zM12 11h1.5v5H12zM12 19h1.5v1H12zM12 29h1.5v1H12zM9 19h1.5v1H9zM9 29h1.5v1H9zM6 29h1.5v1H6zM12 9h1.5v1H12z"/></g></svg>',"list-num-upper-alpha-rtl":'<svg width="48" height="48"><g fill-rule="evenodd"><path opacity=".2" d="M8 12h22v4H8zM8 22h22v4H8zM8 32h22v4H8z"/><path d="M39.3 17l-.5-1.4h-2l-.5 1.4H35l2-6h1.6l2 6h-1.3zm-1.6-4.7l-.7 2.3h1.6l-.8-2.3zM33.4 17c-.4 0-.7-.3-.7-.7 0-.4.3-.7.7-.7.5 0 .7.3.7.7 0 .4-.2.7-.7.7zm4.7 9.9h-2.7v-6H38c1.2 0 1.9.6 1.9 1.5 0 .6-.5 1.2-1 1.3.7.1 1.3.7 1.3 1.5 0 1-.8 1.7-2 1.7zm-1.4-5v1.5h1c.6 0 1-.3 1-.8 0-.4-.4-.7-1-.7h-1zm0 4h1.1c.7 0 1.1-.3 1.1-.8 0-.6-.4-.9-1.1-.9h-1.1V26zM33 27.1c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7zm4.9 10c-1.8 0-2.8-1.1-2.8-3.1s1-3.1 2.8-3.1c1.4 0 2.5.9 2.6 2.2h-1.3c0-.7-.6-1.1-1.3-1.1-1 0-1.6.7-1.6 2s.6 2 1.6 2c.7 0 1.2-.4 1.4-1h1.2c-.1 1.3-1.2 2.2-2.6 2.2zm-4.5 0c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7z"/></g></svg>',"list-num-upper-alpha":'<svg width="48" height="48"><g fill-rule="evenodd"><path opacity=".2" d="M18 12h22v4H18zM18 22h22v4H18zM18 32h22v4H18z"/><path d="M12.6 17l-.5-1.4h-2L9.5 17H8.3l2-6H12l2 6h-1.3zM11 12.3l-.7 2.3h1.6l-.8-2.3zm4.7 4.8c-.4 0-.7-.3-.7-.7 0-.4.3-.7.7-.7.5 0 .7.3.7.7 0 .4-.2.7-.7.7zM11.4 27H8.7v-6h2.6c1.2 0 1.9.6 1.9 1.5 0 .6-.5 1.2-1 1.3.7.1 1.3.7 1.3 1.5 0 1-.8 1.7-2 1.7zM10 22v1.5h1c.6 0 1-.3 1-.8 0-.4-.4-.7-1-.7h-1zm0 4H11c.7 0 1.1-.3 1.1-.8 0-.6-.4-.9-1.1-.9H10V26zm5.4 1.1c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7zm-4.1 10c-1.8 0-2.8-1.1-2.8-3.1s1-3.1 2.8-3.1c1.4 0 2.5.9 2.6 2.2h-1.3c0-.7-.6-1.1-1.3-1.1-1 0-1.6.7-1.6 2s.6 2 1.6 2c.7 0 1.2-.4 1.4-1h1.2c-.1 1.3-1.2 2.2-2.6 2.2zm4.5 0c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7z"/></g></svg>',"list-num-upper-roman-rtl":'<svg width="48" height="48"><g fill-rule="evenodd"><path opacity=".2" d="M8 12h22v4H8zM8 22h22v4H8zM8 32h22v4H8z"/><path d="M31.6 17v-1.2H33V17h-1.3zm0 10v-1.2H33V27h-1.3zm0 10v-1.2H33V37h-1.3z"/><path fill-rule="nonzero" d="M34.5 20H36v7h-1.5zM34.5 30H36v7h-1.5zM37.5 20H39v7h-1.5zM37.5 30H39v7h-1.5zM40.5 30H42v7h-1.5zM34.5 10H36v7h-1.5z"/></g></svg>',"list-num-upper-roman":'<svg width="48" height="48"><g fill-rule="evenodd"><path opacity=".2" d="M18 12h22v4H18zM18 22h22v4H18zM18 32h22v4H18z"/><path d="M15.1 17v-1.2h1.3V17H15zm0 10v-1.2h1.3V27H15zm0 10v-1.2h1.3V37H15z"/><path fill-rule="nonzero" d="M12 20h1.5v7H12zM12 30h1.5v7H12zM9 20h1.5v7H9zM9 30h1.5v7H9zM6 30h1.5v7H6zM12 10h1.5v7H12z"/></g></svg>',lock:'<svg width="24" height="24"><path d="M16.3 11c.2 0 .3 0 .5.2l.2.6v7.4c0 .3 0 .4-.2.6l-.6.2H7.8c-.3 0-.4 0-.6-.2a.7.7 0 0 1-.2-.6v-7.4c0-.3 0-.4.2-.6l.5-.2H8V8c0-.8.3-1.5.9-2.1.6-.6 1.3-.9 2.1-.9h2c.8 0 1.5.3 2.1.9.6.6.9 1.3.9 2.1v3h.3zM10 8v3h4V8a1 1 0 0 0-.3-.7A1 1 0 0 0 13 7h-2a1 1 0 0 0-.7.3 1 1 0 0 0-.3.7z" fill-rule="evenodd"/></svg>',ltr:'<svg width="24" height="24"><path d="M11 5h7a1 1 0 0 1 0 2h-1v11a1 1 0 0 1-2 0V7h-2v11a1 1 0 0 1-2 0v-6c-.5 0-1 0-1.4-.3A3.4 3.4 0 0 1 7.8 10a3.3 3.3 0 0 1 0-2.8 3.4 3.4 0 0 1 1.8-1.8L11 5zM4.4 16.2L6.2 15l-1.8-1.2a1 1 0 0 1 1.2-1.6l3 2a1 1 0 0 1 0 1.6l-3 2a1 1 0 1 1-1.2-1.6z" fill-rule="evenodd"/></svg>',"more-drawer":'<svg width="24" height="24"><path d="M6 10a2 2 0 0 0-2 2c0 1.1.9 2 2 2a2 2 0 0 0 2-2 2 2 0 0 0-2-2zm12 0a2 2 0 0 0-2 2c0 1.1.9 2 2 2a2 2 0 0 0 2-2 2 2 0 0 0-2-2zm-6 0a2 2 0 0 0-2 2c0 1.1.9 2 2 2a2 2 0 0 0 2-2 2 2 0 0 0-2-2z" fill-rule="nonzero"/></svg>',"new-document":'<svg width="24" height="24"><path d="M14.4 3H7a2 2 0 0 0-2 2v14c0 1.1.9 2 2 2h10a2 2 0 0 0 2-2V7.6L14.4 3zM17 19H7V5h6v4h4v10z" fill-rule="nonzero"/></svg>',"new-tab":'<svg width="24" height="24"><path d="M15 13l2-2v8H5V7h8l-2 2H7v8h8v-4zm4-8v5.5l-2-2-5.6 5.5H10v-1.4L15.5 7l-2-2H19z" fill-rule="evenodd"/></svg>',"non-breaking":'<svg width="24" height="24"><path d="M11 11H8a1 1 0 1 1 0-2h3V6c0-.6.4-1 1-1s1 .4 1 1v3h3c.6 0 1 .4 1 1s-.4 1-1 1h-3v3c0 .6-.4 1-1 1a1 1 0 0 1-1-1v-3zm10 4v5H3v-5c0-.6.4-1 1-1s1 .4 1 1v3h14v-3c0-.6.4-1 1-1s1 .4 1 1z" fill-rule="evenodd"/></svg>',notice:'<svg width="24" height="24"><path d="M17.8 9.8L15.4 4 20 8.5v7L15.5 20h-7L4 15.5v-7L8.5 4h7l2.3 5.8zm0 0l2.2 5.7-2.3-5.8zM13 17v-2h-2v2h2zm0-4V7h-2v6h2z" fill-rule="evenodd"/></svg>',"ordered-list-rtl":'<svg width="24" height="24"><path d="M6 17h8a1 1 0 0 1 0 2H6a1 1 0 0 1 0-2zm0-6h8a1 1 0 0 1 0 2H6a1 1 0 0 1 0-2zm0-6h8a1 1 0 0 1 0 2H6a1 1 0 1 1 0-2zm13-1v3.5a.5.5 0 1 1-1 0V5h-.5a.5.5 0 1 1 0-1H19zm-1 8.8l.2.2h1.3a.5.5 0 1 1 0 1h-1.6a1 1 0 0 1-.9-1V13c0-.4.3-.8.6-1l1.2-.4.2-.3a.2.2 0 0 0-.2-.2h-1.3a.5.5 0 0 1-.5-.5c0-.3.2-.5.5-.5h1.6c.5 0 .9.4.9 1v.1c0 .4-.3.8-.6 1l-1.2.4-.2.3zm2 4.2v2c0 .6-.4 1-1 1h-1.5a.5.5 0 0 1 0-1h1.2a.3.3 0 1 0 0-.6h-1.3a.4.4 0 1 1 0-.8h1.3a.3.3 0 0 0 0-.6h-1.2a.5.5 0 1 1 0-1H19c.6 0 1 .4 1 1z" fill-rule="evenodd"/></svg>',"ordered-list":'<svg width="24" height="24"><path d="M10 17h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 0 1 0-2zm0-6h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 0 1 0-2zm0-6h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 1 1 0-2zM6 4v3.5c0 .3-.2.5-.5.5a.5.5 0 0 1-.5-.5V5h-.5a.5.5 0 0 1 0-1H6zm-1 8.8l.2.2h1.3c.3 0 .5.2.5.5s-.2.5-.5.5H4.9a1 1 0 0 1-.9-1V13c0-.4.3-.8.6-1l1.2-.4.2-.3a.2.2 0 0 0-.2-.2H4.5a.5.5 0 0 1-.5-.5c0-.3.2-.5.5-.5h1.6c.5 0 .9.4.9 1v.1c0 .4-.3.8-.6 1l-1.2.4-.2.3zM7 17v2c0 .6-.4 1-1 1H4.5a.5.5 0 0 1 0-1h1.2c.2 0 .3-.1.3-.3 0-.2-.1-.3-.3-.3H4.4a.4.4 0 1 1 0-.8h1.3c.2 0 .3-.1.3-.3 0-.2-.1-.3-.3-.3H4.5a.5.5 0 1 1 0-1H6c.6 0 1 .4 1 1z" fill-rule="evenodd"/></svg>',orientation:'<svg width="24" height="24"><path d="M7.3 6.4L1 13l6.4 6.5 6.5-6.5-6.5-6.5zM3.7 13l3.6-3.7L11 13l-3.7 3.7-3.6-3.7zM12 6l2.8 2.7c.3.3.3.8 0 1-.3.4-.9.4-1.2 0L9.2 5.7a.8.8 0 0 1 0-1.2L13.6.2c.3-.3.9-.3 1.2 0 .3.3.3.8 0 1.1L12 4h1a9 9 0 1 1-4.3 16.9l1.5-1.5A7 7 0 1 0 13 6h-1z" fill-rule="nonzero"/></svg>',outdent:'<svg width="24" height="24"><path d="M7 5h12c.6 0 1 .4 1 1s-.4 1-1 1H7a1 1 0 1 1 0-2zm5 4h7c.6 0 1 .4 1 1s-.4 1-1 1h-7a1 1 0 0 1 0-2zm0 4h7c.6 0 1 .4 1 1s-.4 1-1 1h-7a1 1 0 0 1 0-2zm-5 4h12a1 1 0 0 1 0 2H7a1 1 0 0 1 0-2zm1.6-3.8a1 1 0 0 1-1.2 1.6l-3-2a1 1 0 0 1 0-1.6l3-2a1 1 0 0 1 1.2 1.6L6.8 12l1.8 1.2z" fill-rule="evenodd"/></svg>',"page-break":'<svg width="24" height="24"><g fill-rule="evenodd"><path d="M5 11c.6 0 1 .4 1 1s-.4 1-1 1a1 1 0 0 1 0-2zm3 0h1c.6 0 1 .4 1 1s-.4 1-1 1H8a1 1 0 0 1 0-2zm4 0c.6 0 1 .4 1 1s-.4 1-1 1a1 1 0 0 1 0-2zm3 0h1c.6 0 1 .4 1 1s-.4 1-1 1h-1a1 1 0 0 1 0-2zm4 0c.6 0 1 .4 1 1s-.4 1-1 1a1 1 0 0 1 0-2zM7 3v5h10V3c0-.6.4-1 1-1s1 .4 1 1v7H5V3c0-.6.4-1 1-1s1 .4 1 1zM6 22a1 1 0 0 1-1-1v-7h14v7c0 .6-.4 1-1 1a1 1 0 0 1-1-1v-5H7v5c0 .6-.4 1-1 1z"/></g></svg>',"paste-text":'<svg width="24" height="24"><path d="M18 9V5h-2v1c0 .6-.4 1-1 1H9a1 1 0 0 1-1-1V5H6v13h3V9h9zM9 20H6a2 2 0 0 1-2-2V5c0-1.1.9-2 2-2h3.2A3 3 0 0 1 12 1a3 3 0 0 1 2.8 2H18a2 2 0 0 1 2 2v4h1v12H9v-1zm1.5-9.5v9h9v-9h-9zM12 3a1 1 0 0 0-1 1c0 .5.4 1 1 1s1-.5 1-1-.4-1-1-1zm0 9h6v2h-.5l-.5-1h-1v4h.8v1h-3.6v-1h.8v-4h-1l-.5 1H12v-2z" fill-rule="nonzero"/></svg>',paste:'<svg width="24" height="24"><path d="M18 9V5h-2v1c0 .6-.4 1-1 1H9a1 1 0 0 1-1-1V5H6v13h3V9h9zM9 20H6a2 2 0 0 1-2-2V5c0-1.1.9-2 2-2h3.2A3 3 0 0 1 12 1a3 3 0 0 1 2.8 2H18a2 2 0 0 1 2 2v4h1v12H9v-1zm1.5-9.5v9h9v-9h-9zM12 3a1 1 0 0 0-1 1c0 .5.4 1 1 1s1-.5 1-1-.4-1-1-1z" fill-rule="nonzero"/></svg>',"permanent-pen":'<svg width="24" height="24"><path d="M10.5 17.5L8 20H3v-3l3.5-3.5a2 2 0 0 1 0-3L14 3l1 1-7.3 7.3a1 1 0 0 0 0 1.4l3.6 3.6c.4.4 1 .4 1.4 0L20 9l1 1-7.6 7.6a2 2 0 0 1-2.8 0l-.1-.1z" fill-rule="nonzero"/></svg>',plus:'<svg width="24" height="24"><g fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" stroke="#000" stroke-width="2"><path d="M12 5v14M5 12h14"/></g></svg>',preferences:'<svg width="24" height="24"><path d="M20.1 13.5l-1.9.2a5.8 5.8 0 0 1-.6 1.5l1.2 1.5c.4.4.3 1 0 1.4l-.7.7a1 1 0 0 1-1.4 0l-1.5-1.2a6.2 6.2 0 0 1-1.5.6l-.2 1.9c0 .5-.5.9-1 .9h-1a1 1 0 0 1-1-.9l-.2-1.9a5.8 5.8 0 0 1-1.5-.6l-1.5 1.2a1 1 0 0 1-1.4 0l-.7-.7a1 1 0 0 1 0-1.4l1.2-1.5a6.2 6.2 0 0 1-.6-1.5l-1.9-.2a1 1 0 0 1-.9-1v-1c0-.5.4-1 .9-1l1.9-.2a5.8 5.8 0 0 1 .6-1.5L5.2 7.3a1 1 0 0 1 0-1.4l.7-.7a1 1 0 0 1 1.4 0l1.5 1.2a6.2 6.2 0 0 1 1.5-.6l.2-1.9c0-.5.5-.9 1-.9h1c.5 0 1 .4 1 .9l.2 1.9a5.8 5.8 0 0 1 1.5.6l1.5-1.2a1 1 0 0 1 1.4 0l.7.7c.3.4.4 1 0 1.4l-1.2 1.5a6.2 6.2 0 0 1 .6 1.5l1.9.2c.5 0 .9.5.9 1v1c0 .5-.4 1-.9 1zM12 15a3 3 0 1 0 0-6 3 3 0 0 0 0 6z" fill-rule="evenodd"/></svg>',preview:'<svg width="24" height="24"><path d="M3.5 12.5c.5.8 1.1 1.6 1.8 2.3 2 2 4.2 3.2 6.7 3.2s4.7-1.2 6.7-3.2a16.2 16.2 0 0 0 2.1-2.8 15.7 15.7 0 0 0-2.1-2.8c-2-2-4.2-3.2-6.7-3.2a9.3 9.3 0 0 0-6.7 3.2A16.2 16.2 0 0 0 3.2 12c0 .2.2.3.3.5zm-2.4-1l.7-1.2L4 7.8C6.2 5.4 8.9 4 12 4c3 0 5.8 1.4 8.1 3.8a18.2 18.2 0 0 1 2.8 3.7v1l-.7 1.2-2.1 2.5c-2.3 2.4-5 3.8-8.1 3.8-3 0-5.8-1.4-8.1-3.8a18.2 18.2 0 0 1-2.8-3.7 1 1 0 0 1 0-1zm12-3.3a2 2 0 1 0 2.7 2.6 4 4 0 1 1-2.6-2.6z" fill-rule="nonzero"/></svg>',print:'<svg width="24" height="24"><path d="M18 8H6a3 3 0 0 0-3 3v6h2v3h14v-3h2v-6a3 3 0 0 0-3-3zm-1 10H7v-4h10v4zm.5-5c-.8 0-1.5-.7-1.5-1.5s.7-1.5 1.5-1.5 1.5.7 1.5 1.5-.7 1.5-1.5 1.5zm.5-8H6v2h12V5z" fill-rule="nonzero"/></svg>',quote:'<svg width="24" height="24"><path d="M7.5 17h.9c.4 0 .7-.2.9-.6L11 13V8c0-.6-.4-1-1-1H6a1 1 0 0 0-1 1v4c0 .6.4 1 1 1h2l-1.3 2.7a1 1 0 0 0 .8 1.3zm8 0h.9c.4 0 .7-.2.9-.6L19 13V8c0-.6-.4-1-1-1h-4a1 1 0 0 0-1 1v4c0 .6.4 1 1 1h2l-1.3 2.7a1 1 0 0 0 .8 1.3z" fill-rule="nonzero"/></svg>',redo:'<svg width="24" height="24"><path d="M17.6 10H12c-2.8 0-4.4 1.4-4.9 3.5-.4 2 .3 4 1.4 4.6a1 1 0 1 1-1 1.8c-2-1.2-2.9-4.1-2.3-6.8.6-3 3-5.1 6.8-5.1h5.6l-3.3-3.3a1 1 0 1 1 1.4-1.4l5 5a1 1 0 0 1 0 1.4l-5 5a1 1 0 0 1-1.4-1.4l3.3-3.3z" fill-rule="nonzero"/></svg>',reload:'<svg width="24" height="24"><g fill-rule="nonzero"><path d="M5 22.1l-1.2-4.7v-.2a1 1 0 0 1 1-1l5 .4a1 1 0 1 1-.2 2l-2.2-.2a7.8 7.8 0 0 0 8.4.2 7.5 7.5 0 0 0 3.5-6.4 1 1 0 1 1 2 0 9.5 9.5 0 0 1-4.5 8 9.9 9.9 0 0 1-10.2 0l.4 1.4a1 1 0 1 1-2 .5zM13.6 7.4c0-.5.5-1 1-.9l2.8.2a8 8 0 0 0-9.5-1 7.5 7.5 0 0 0-3.6 7 1 1 0 0 1-2 0 9.5 9.5 0 0 1 4.5-8.6 10 10 0 0 1 10.9.3l-.3-1a1 1 0 0 1 2-.5l1.1 4.8a1 1 0 0 1-1 1.2l-5-.4a1 1 0 0 1-.9-1z"/></g></svg>',"remove-formatting":'<svg width="24" height="24"><path d="M13.2 6a1 1 0 0 1 0 .2l-2.6 10a1 1 0 0 1-1 .8h-.2a.8.8 0 0 1-.8-1l2.6-10H8a1 1 0 1 1 0-2h9a1 1 0 0 1 0 2h-3.8zM5 18h7a1 1 0 0 1 0 2H5a1 1 0 0 1 0-2zm13 1.5L16.5 18 15 19.5a.7.7 0 0 1-1-1l1.5-1.5-1.5-1.5a.7.7 0 0 1 1-1l1.5 1.5 1.5-1.5a.7.7 0 0 1 1 1L17.5 17l1.5 1.5a.7.7 0 0 1-1 1z" fill-rule="evenodd"/></svg>',remove:'<svg width="24" height="24"><path d="M16 7h3a1 1 0 0 1 0 2h-1v9a3 3 0 0 1-3 3H9a3 3 0 0 1-3-3V9H5a1 1 0 1 1 0-2h3V6a3 3 0 0 1 3-3h2a3 3 0 0 1 3 3v1zm-2 0V6c0-.6-.4-1-1-1h-2a1 1 0 0 0-1 1v1h4zm2 2H8v9c0 .6.4 1 1 1h6c.6 0 1-.4 1-1V9zm-7 3a1 1 0 0 1 2 0v4a1 1 0 0 1-2 0v-4zm4 0a1 1 0 0 1 2 0v4a1 1 0 0 1-2 0v-4z" fill-rule="nonzero"/></svg>',"resize-handle":'<svg width="10" height="10"><g fill-rule="nonzero"><path d="M8.1 1.1A.5.5 0 1 1 9 2l-7 7A.5.5 0 1 1 1 8l7-7zM8.1 5.1A.5.5 0 1 1 9 6l-3 3A.5.5 0 1 1 5 8l3-3z"/></g></svg>',resize:'<svg width="24" height="24"><path d="M4 5c0-.3.1-.5.3-.7.2-.2.4-.3.7-.3h6c.3 0 .5.1.7.3.2.2.3.4.3.7 0 .3-.1.5-.3.7a1 1 0 0 1-.7.3H7.4L18 16.6V13c0-.3.1-.5.3-.7.2-.2.4-.3.7-.3.3 0 .5.1.7.3.2.2.3.4.3.7v6c0 .3-.1.5-.3.7a1 1 0 0 1-.7.3h-6a1 1 0 0 1-.7-.3 1 1 0 0 1-.3-.7c0-.3.1-.5.3-.7.2-.2.4-.3.7-.3h3.6L6 7.4V11c0 .3-.1.5-.3.7a1 1 0 0 1-.7.3 1 1 0 0 1-.7-.3A1 1 0 0 1 4 11V5z" fill-rule="evenodd"/></svg>',"restore-draft":'<svg width="24" height="24"><g fill-rule="evenodd"><path d="M17 13c0 .6-.4 1-1 1h-4V8c0-.6.4-1 1-1s1 .4 1 1v4h2c.6 0 1 .4 1 1z"/><path d="M4.7 10H9a1 1 0 0 1 0 2H3a1 1 0 0 1-1-1V5a1 1 0 1 1 2 0v3l2.5-2.4a9.2 9.2 0 0 1 10.8-1.5A9 9 0 0 1 13.4 21c-2.4.1-4.7-.7-6.5-2.2a1 1 0 1 1 1.3-1.5 7.2 7.2 0 0 0 11.6-3.7 7 7 0 0 0-3.5-7.7A7.2 7.2 0 0 0 8 7L4.7 10z" fill-rule="nonzero"/></g></svg>',"rotate-left":'<svg width="24" height="24"><path d="M4.7 10H9a1 1 0 0 1 0 2H3a1 1 0 0 1-1-1V5a1 1 0 1 1 2 0v3l2.5-2.4a9.2 9.2 0 0 1 10.8-1.5A9 9 0 0 1 13.4 21c-2.4.1-4.7-.7-6.5-2.2a1 1 0 1 1 1.3-1.5 7.2 7.2 0 0 0 11.6-3.7 7 7 0 0 0-3.5-7.7A7.2 7.2 0 0 0 8 7L4.7 10z" fill-rule="nonzero"/></svg>',"rotate-right":'<svg width="24" height="24"><path d="M20 8V5a1 1 0 0 1 2 0v6c0 .6-.4 1-1 1h-6a1 1 0 0 1 0-2h4.3L16 7A7.2 7.2 0 0 0 7.7 6a7 7 0 0 0 3 13.1c1.9.1 3.7-.5 5-1.7a1 1 0 0 1 1.4 1.5A9.2 9.2 0 0 1 2.2 14c-.9-3.9 1-8 4.5-9.9 3.5-1.9 8-1.3 10.8 1.5L20 8z" fill-rule="nonzero"/></svg>',rtl:'<svg width="24" height="24"><path d="M8 5h8v2h-2v12h-2V7h-2v12H8v-7c-.5 0-1 0-1.4-.3A3.4 3.4 0 0 1 4.8 10a3.3 3.3 0 0 1 0-2.8 3.4 3.4 0 0 1 1.8-1.8L8 5zm12 11.2a1 1 0 1 1-1 1.6l-3-2a1 1 0 0 1 0-1.6l3-2a1 1 0 1 1 1 1.6L18.4 15l1.8 1.2z" fill-rule="evenodd"/></svg>',save:'<svg width="24" height="24"><path d="M5 16h14a2 2 0 0 1 2 2v2a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-2c0-1.1.9-2 2-2zm0 2v2h14v-2H5zm10 0h2v2h-2v-2zm-4-6.4L8.7 9.3a1 1 0 1 0-1.4 1.4l4 4c.4.4 1 .4 1.4 0l4-4a1 1 0 1 0-1.4-1.4L13 11.6V4a1 1 0 0 0-2 0v7.6z" fill-rule="nonzero"/></svg>',search:'<svg width="24" height="24"><path d="M16 17.3a8 8 0 1 1 1.4-1.4l4.3 4.4a1 1 0 0 1-1.4 1.4l-4.4-4.3zm-5-.3a6 6 0 1 0 0-12 6 6 0 0 0 0 12z" fill-rule="nonzero"/></svg>',"select-all":'<svg width="24" height="24"><path d="M3 5h2V3a2 2 0 0 0-2 2zm0 8h2v-2H3v2zm4 8h2v-2H7v2zM3 9h2V7H3v2zm10-6h-2v2h2V3zm6 0v2h2a2 2 0 0 0-2-2zM5 21v-2H3c0 1.1.9 2 2 2zm-2-4h2v-2H3v2zM9 3H7v2h2V3zm2 18h2v-2h-2v2zm8-8h2v-2h-2v2zm0 8a2 2 0 0 0 2-2h-2v2zm0-12h2V7h-2v2zm0 8h2v-2h-2v2zm-4 4h2v-2h-2v2zm0-16h2V3h-2v2zM7 17h10V7H7v10zm2-8h6v6H9V9z" fill-rule="nonzero"/></svg>',selected:'<svg width="24" height="24"><path fill-rule="nonzero" d="M6 4h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6c0-1.1.9-2 2-2zm3.6 10.9L7 12.3a.7.7 0 0 0-1 1L9.6 17 18 8.6a.7.7 0 0 0 0-1 .7.7 0 0 0-1 0l-7.4 7.3z"/></svg>',settings:'<svg width="24" height="24"><path d="M11 6h8c.6 0 1 .4 1 1s-.4 1-1 1h-8v.3c0 .2 0 .3-.2.5l-.6.2H7.8c-.3 0-.4 0-.6-.2a.7.7 0 0 1-.2-.6V8H5a1 1 0 1 1 0-2h2v-.3c0-.2 0-.3.2-.5l.5-.2h2.5c.3 0 .4 0 .6.2l.2.5V6zM8 8h2V6H8v2zm9 2.8v.2h2c.6 0 1 .4 1 1s-.4 1-1 1h-2v.3c0 .2 0 .3-.2.5l-.6.2h-2.4c-.3 0-.4 0-.6-.2a.7.7 0 0 1-.2-.6V13H5a1 1 0 0 1 0-2h8v-.3c0-.2 0-.3.2-.5l.6-.2h2.4c.3 0 .4 0 .6.2l.2.6zM14 13h2v-2h-2v2zm-3 2.8v.2h8c.6 0 1 .4 1 1s-.4 1-1 1h-8v.3c0 .2 0 .3-.2.5l-.6.2H7.8c-.3 0-.4 0-.6-.2a.7.7 0 0 1-.2-.6V18H5a1 1 0 0 1 0-2h2v-.3c0-.2 0-.3.2-.5l.5-.2h2.5c.3 0 .4 0 .6.2l.2.6zM8 18h2v-2H8v2z" fill-rule="evenodd"/></svg>',sharpen:'<svg width="24" height="24"><path d="M16 6l4 4-8 9-8-9 4-4h8zm-4 10.2l5.5-6.2-.1-.1H12v-.3h5.1l-.2-.2H12V9h4.6l-.2-.2H12v-.3h4.1l-.2-.2H12V8h3.6l-.2-.2H8.7L6.5 10l.1.1H12v.3H6.9l.2.2H12v.3H7.3l.2.2H12v.3H7.7l.3.2h4v.3H8.2l.2.2H12v.3H8.6l.3.2H12v.3H9l.3.2H12v.3H9.5l.2.2H12v.3h-2l.2.2H12v.3h-1.6l.2.2H12v.3h-1.1l.2.2h.9v.3h-.7l.2.2h.5v.3h-.3l.3.2z" fill-rule="evenodd"/></svg>',sourcecode:'<svg width="24" height="24"><g fill-rule="nonzero"><path d="M9.8 15.7c.3.3.3.8 0 1-.3.4-.9.4-1.2 0l-4.4-4.1a.8.8 0 0 1 0-1.2l4.4-4.2c.3-.3.9-.3 1.2 0 .3.3.3.8 0 1.1L6 12l3.8 3.7zM14.2 15.7c-.3.3-.3.8 0 1 .4.4.9.4 1.2 0l4.4-4.1c.3-.3.3-.9 0-1.2l-4.4-4.2a.8.8 0 0 0-1.2 0c-.3.3-.3.8 0 1.1L18 12l-3.8 3.7z"/></g></svg>',"spell-check":'<svg width="24" height="24"><path d="M6 8v3H5V5c0-.3.1-.5.3-.7.2-.2.4-.3.7-.3h2c.3 0 .5.1.7.3.2.2.3.4.3.7v6H8V8H6zm0-3v2h2V5H6zm13 0h-3v5h3v1h-3a1 1 0 0 1-.7-.3 1 1 0 0 1-.3-.7V5c0-.3.1-.5.3-.7.2-.2.4-.3.7-.3h3v1zm-5 1.5l-.1.7c-.1.2-.3.3-.6.3.3 0 .5.1.6.3l.1.7V10c0 .3-.1.5-.3.7a1 1 0 0 1-.7.3h-3V4h3c.3 0 .5.1.7.3.2.2.3.4.3.7v1.5zM13 10V8h-2v2h2zm0-3V5h-2v2h2zm3 5l1 1-6.5 7L7 15.5l1.3-1 2.2 2.2L16 12z" fill-rule="evenodd"/></svg>',"strike-through":'<svg width="24" height="24"><g fill-rule="evenodd"><path d="M15.6 8.5c-.5-.7-1-1.1-1.3-1.3-.6-.4-1.3-.6-2-.6-2.7 0-2.8 1.7-2.8 2.1 0 1.6 1.8 2 3.2 2.3 4.4.9 4.6 2.8 4.6 3.9 0 1.4-.7 4.1-5 4.1A6.2 6.2 0 0 1 7 16.4l1.5-1.1c.4.6 1.6 2 3.7 2 1.6 0 2.5-.4 3-1.2.4-.8.3-2-.8-2.6-.7-.4-1.6-.7-2.9-1-1-.2-3.9-.8-3.9-3.6C7.6 6 10.3 5 12.4 5c2.9 0 4.2 1.6 4.7 2.4l-1.5 1.1z"/><path d="M5 11h14a1 1 0 0 1 0 2H5a1 1 0 0 1 0-2z" fill-rule="nonzero"/></g></svg>',subscript:'<svg width="24" height="24"><path d="M10.4 10l4.6 4.6-1.4 1.4L9 11.4 4.4 16 3 14.6 7.6 10 3 5.4 4.4 4 9 8.6 13.6 4 15 5.4 10.4 10zM21 19h-5v-1l1-.8 1.7-1.6c.3-.4.5-.8.5-1.2 0-.3 0-.6-.2-.7-.2-.2-.5-.3-.9-.3a2 2 0 0 0-.8.2l-.7.3-.4-1.1 1-.6 1.2-.2c.8 0 1.4.3 1.8.7.4.4.6.9.6 1.5s-.2 1.1-.5 1.6a8 8 0 0 1-1.3 1.3l-.6.6h2.6V19z" fill-rule="nonzero"/></svg>',superscript:'<svg width="24" height="24"><path d="M15 9.4L10.4 14l4.6 4.6-1.4 1.4L9 15.4 4.4 20 3 18.6 7.6 14 3 9.4 4.4 8 9 12.6 13.6 8 15 9.4zm5.9 1.6h-5v-1l1-.8 1.7-1.6c.3-.5.5-.9.5-1.3 0-.3 0-.5-.2-.7-.2-.2-.5-.3-.9-.3l-.8.2-.7.4-.4-1.2c.2-.2.5-.4 1-.5.3-.2.8-.2 1.2-.2.8 0 1.4.2 1.8.6.4.4.6 1 .6 1.6 0 .5-.2 1-.5 1.5l-1.3 1.4-.6.5h2.6V11z" fill-rule="nonzero"/></svg>',"table-cell-properties":'<svg width="24" height="24"><path d="M4 5h16v14H4V5zm10 10h-4v3h4v-3zm0-8h-4v3h4V7zM9 7H5v3h4V7zm-4 4v3h4v-3H5zm10 0v3h4v-3h-4zm0-1h4V7h-4v3zM5 15v3h4v-3H5zm10 3h4v-3h-4v3z" fill-rule="evenodd"/></svg>',"table-cell-select-all":'<svg width="24" height="24"><path d="M12.5 5.5v6h6v-6h-6zm-1 0h-6v6h6v-6zm1 13h6v-6h-6v6zm-1 0v-6h-6v6h6zm-7-14h15v15h-15v-15z" fill-rule="nonzero"/></svg>',"table-cell-select-inner":'<svg width="24" height="24"><g fill-rule="nonzero"><path d="M5.5 5.5v13h13v-13h-13zm-1-1h15v15h-15v-15z" opacity=".2"/><path d="M11.5 11.5v-7h1v7h7v1h-7v7h-1v-7h-7v-1h7z"/></g></svg>',"table-delete-column":'<svg width="24" height="24"><path d="M9 11.2l1 1v.2l-1 1v-2.2zm5 1l1-1v2.2l-1-1v-.2zM20 5v14H4V5h16zm-1 2h-4v.8l-.2-.2-.8.8V7h-4v1.4l-.8-.8-.2.2V7H5v11h4v-1.8l.5.5.5-.4V18h4v-1.8l.8.8.2-.3V18h4V7zm-3.9 3.4l-1.8 1.9 1.8 1.9c.4.3.4.9 0 1.2-.3.3-.8.3-1.2 0L12 13.5l-1.8 1.9a.8.8 0 0 1-1.2 0 .9.9 0 0 1 0-1.2l1.8-1.9-1.9-2a.9.9 0 0 1 1.2-1.2l2 2 1.8-1.8c.3-.4.9-.4 1.2 0a.8.8 0 0 1 0 1.1z" fill-rule="evenodd"/></svg>',"table-delete-row":'<svg width="24" height="24"><path d="M16.7 8.8l1.1 1.2-2.4 2.5L18 15l-1.2 1.2-2.5-2.5-2.4 2.5-1.3-1.2 2.5-2.5-2.5-2.5 1.2-1.3 2.6 2.6 2.4-2.5zM4 5h16v14H4V5zm15 5V7H5v3h4.8l1 1H5v3h5.8l-1 1H5v3h14v-3h-.4l-1-1H19v-3h-1.3l1-1h.3z" fill-rule="evenodd"/></svg>',"table-delete-table":'<svg width="24" height="26"><path d="M4 6h16v14H4V6zm1 2v11h14V8H5zm11.7 8.7l-1.5 1.5L12 15l-3.3 3.2-1.4-1.5 3.2-3.2-3.3-3.2 1.5-1.5L12 12l3.2-3.2 1.5 1.5-3.2 3.2 3.2 3.2z" fill-rule="evenodd"/></svg>',"table-insert-column-after":'<svg width="24" height="24"><path d="M14.3 9c.4 0 .7.3.7.6v2.2h2.1c.4 0 .7.3.7.7 0 .4-.3.7-.7.7H15v2.2c0 .3-.3.6-.7.6a.7.7 0 0 1-.6-.6v-2.2h-2.2a.7.7 0 0 1 0-1.4h2.2V9.6c0-.3.3-.6.6-.6zM4 5h16v14H4V5zm5 13v-3H5v3h4zm0-4v-3H5v3h4zm0-4V7H5v3h4zm10 8V7h-9v11h9z" fill-rule="evenodd"/></svg>',"table-insert-column-before":'<svg width="24" height="24"><path d="M9.7 16a.7.7 0 0 1-.7-.6v-2.2H6.9a.7.7 0 0 1 0-1.4H9V9.6c0-.3.3-.6.7-.6.3 0 .6.3.6.6v2.2h2.2c.4 0 .8.3.8.7 0 .4-.4.7-.8.7h-2.2v2.2c0 .3-.3.6-.6.6zM4 5h16v14H4V5zm10 13V7H5v11h9zm5 0v-3h-4v3h4zm0-4v-3h-4v3h4zm0-4V7h-4v3h4z" fill-rule="evenodd"/></svg>',"table-insert-row-above":'<svg width="24" height="24"><path d="M14.8 10.5c0 .3-.2.5-.5.5h-1.8v1.8c0 .3-.2.5-.5.5a.5.5 0 0 1-.5-.6V11H9.7a.5.5 0 0 1 0-1h1.8V8.3c0-.3.2-.6.5-.6s.5.3.5.6V10h1.8c.3 0 .5.2.5.5zM4 5h16v14H4V5zm5 13v-3H5v3h4zm5 0v-3h-4v3h4zm5 0v-3h-4v3h4zm0-4V7H5v7h14z" fill-rule="evenodd"/></svg>',"table-insert-row-after":'<svg width="24" height="24"><path d="M9.2 14.5c0-.3.2-.5.5-.5h1.8v-1.8c0-.3.2-.5.5-.5s.5.2.5.6V14h1.8c.3 0 .5.2.5.5s-.2.5-.5.5h-1.8v1.7c0 .3-.2.6-.5.6a.5.5 0 0 1-.5-.6V15H9.7a.5.5 0 0 1-.5-.5zM4 5h16v14H4V5zm6 2v3h4V7h-4zM5 7v3h4V7H5zm14 11v-7H5v7h14zm0-8V7h-4v3h4z" fill-rule="evenodd"/></svg>',"table-left-header":'<svg width="24" height="24"><path d="M4 5h16v13H4V5zm10 12v-3h-4v3h4zm0-4v-3h-4v3h4zm0-4V6h-4v3h4zm5 8v-3h-4v3h4zm0-4v-3h-4v3h4zm0-4V6h-4v3h4z" fill-rule="evenodd"/></svg>',"table-merge-cells":'<svg width="24" height="24"><path d="M4 5h16v14H4V5zm6 13h9v-7h-9v7zm4-11h-4v3h4V7zM9 7H5v3h4V7zm-4 4v3h4v-3H5zm10-1h4V7h-4v3zM5 15v3h4v-3H5z" fill-rule="evenodd"/></svg>',"table-row-properties":'<svg width="24" height="24"><path d="M4 5h16v14H4V5zm10 10h-4v3h4v-3zm0-8h-4v3h4V7zM9 7H5v3h4V7zm6 3h4V7h-4v3zM5 15v3h4v-3H5zm10 3h4v-3h-4v3z" fill-rule="evenodd"/></svg>',"table-split-cells":'<svg width="24" height="24"><path d="M4 5h16v14H4V5zm6 2v3h4V7h-4zM9 18v-3H5v3h4zm0-4v-3H5v3h4zm0-4V7H5v3h4zm10 8v-7h-9v7h9zm0-8V7h-4v3h4zm-3.5 4.5l1.5 1.6c.3.2.3.7 0 1-.2.2-.7.2-1 0l-1.5-1.6-1.6 1.5c-.2.3-.7.3-1 0a.7.7 0 0 1 0-1l1.6-1.5-1.5-1.6a.7.7 0 0 1 1-1l1.5 1.6 1.6-1.5c.2-.3.7-.3 1 0 .2.2.2.7 0 1l-1.6 1.5z" fill-rule="evenodd"/></svg>',"table-top-header":'<svg width="24" height="24"><path d="M4 5h16v13H4V5zm5 12v-3H5v3h4zm0-4v-3H5v3h4zm5 4v-3h-4v3h4zm0-4v-3h-4v3h4zm5 4v-3h-4v3h4zm0-4v-3h-4v3h4z" fill-rule="evenodd"/></svg>',table:'<svg width="24" height="24"><path d="M4 5h16v14H4V5zm6 9h4v-3h-4v3zm4 1h-4v3h4v-3zm0-8h-4v3h4V7zM9 7H5v3h4V7zm-4 4v3h4v-3H5zm10 0v3h4v-3h-4zm0-1h4V7h-4v3zM5 15v3h4v-3H5zm10 3h4v-3h-4v3z" fill-rule="evenodd"/></svg>',template:'<svg width="24" height="24"><path d="M19 19v-1H5v1h14zM9 16v-4a5 5 0 1 1 6 0v4h4a2 2 0 0 1 2 2v3H3v-3c0-1.1.9-2 2-2h4zm4 0v-5l.8-.6a3 3 0 1 0-3.6 0l.8.6v5h2z" fill-rule="nonzero"/></svg>',"temporary-placeholder":'<svg width="24" height="24"><g fill-rule="evenodd"><path d="M9 7.6V6h2.5V4.5a.5.5 0 1 1 1 0V6H15v1.6a8 8 0 1 1-6 0zm-2.6 5.3a.5.5 0 0 0 .3.6c.3 0 .6 0 .6-.3l.1-.2a5 5 0 0 1 3.3-2.8c.3-.1.4-.4.4-.6-.1-.3-.4-.5-.6-.4a6 6 0 0 0-4.1 3.7z"/><circle cx="14" cy="4" r="1"/><circle cx="12" cy="2" r="1"/><circle cx="10" cy="4" r="1"/></g></svg>',"text-color":'<svg width="24" height="24"><g fill-rule="evenodd"><path id="tox-icon-text-color__color" d="M3 18h18v3H3z"/><path d="M8.7 16h-.8a.5.5 0 0 1-.5-.6l2.7-9c.1-.3.3-.4.5-.4h2.8c.2 0 .4.1.5.4l2.7 9a.5.5 0 0 1-.5.6h-.8a.5.5 0 0 1-.4-.4l-.7-2.2c0-.3-.3-.4-.5-.4h-3.4c-.2 0-.4.1-.5.4l-.7 2.2c0 .3-.2.4-.4.4zm2.6-7.6l-.6 2a.5.5 0 0 0 .5.6h1.6a.5.5 0 0 0 .5-.6l-.6-2c0-.3-.3-.4-.5-.4h-.4c-.2 0-.4.1-.5.4z"/></g></svg>',toc:'<svg width="24" height="24"><path d="M5 5c.6 0 1 .4 1 1s-.4 1-1 1a1 1 0 1 1 0-2zm3 0h11c.6 0 1 .4 1 1s-.4 1-1 1H8a1 1 0 1 1 0-2zm-3 8c.6 0 1 .4 1 1s-.4 1-1 1a1 1 0 0 1 0-2zm3 0h11c.6 0 1 .4 1 1s-.4 1-1 1H8a1 1 0 0 1 0-2zm0-4c.6 0 1 .4 1 1s-.4 1-1 1a1 1 0 1 1 0-2zm3 0h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 0 1 0-2zm-3 8c.6 0 1 .4 1 1s-.4 1-1 1a1 1 0 0 1 0-2zm3 0h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 0 1 0-2z" fill-rule="evenodd"/></svg>',translate:'<svg width="24" height="24"><path d="M12.7 14.3l-.3.7-.4.7-2.2-2.2-3.1 3c-.3.4-.8.4-1 0a.7.7 0 0 1 0-1l3.1-3A12.4 12.4 0 0 1 6.7 9H8a10.1 10.1 0 0 0 1.7 2.4c.5-.5 1-1.1 1.4-1.8l.9-2H4.7a.7.7 0 1 1 0-1.5h4.4v-.7c0-.4.3-.8.7-.8.4 0 .7.4.7.8v.7H15c.4 0 .8.3.8.7 0 .4-.4.8-.8.8h-1.4a12.3 12.3 0 0 1-1 2.4 13.5 13.5 0 0 1-1.7 2.3l1.9 1.8zm4.3-3l2.7 7.3a.5.5 0 0 1-.4.7 1 1 0 0 1-1-.7l-.6-1.5h-3.4l-.6 1.5a1 1 0 0 1-1 .7.5.5 0 0 1-.4-.7l2.7-7.4a1 1 0 1 1 2 0zm-2.2 4.4h2.4L16 12.5l-1.2 3.2z" fill-rule="evenodd"/></svg>',underline:'<svg width="24" height="24"><path d="M16 5c.6 0 1 .4 1 1v5.5a4 4 0 0 1-.4 1.8l-1 1.4a5.3 5.3 0 0 1-5.5 1 5 5 0 0 1-1.6-1c-.5-.4-.8-.9-1.1-1.4a4 4 0 0 1-.4-1.8V6c0-.6.4-1 1-1s1 .4 1 1v5.5c0 .3 0 .6.2 1l.6.7a3.3 3.3 0 0 0 2.2.8 3.4 3.4 0 0 0 2.2-.8c.3-.2.4-.5.6-.8l.2-.9V6c0-.6.4-1 1-1zM8 17h8c.6 0 1 .4 1 1s-.4 1-1 1H8a1 1 0 0 1 0-2z" fill-rule="evenodd"/></svg>',undo:'<svg width="24" height="24"><path d="M6.4 8H12c3.7 0 6.2 2 6.8 5.1.6 2.7-.4 5.6-2.3 6.8a1 1 0 0 1-1-1.8c1.1-.6 1.8-2.7 1.4-4.6-.5-2.1-2.1-3.5-4.9-3.5H6.4l3.3 3.3a1 1 0 1 1-1.4 1.4l-5-5a1 1 0 0 1 0-1.4l5-5a1 1 0 0 1 1.4 1.4L6.4 8z" fill-rule="nonzero"/></svg>',unlink:'<svg width="24" height="24"><path d="M6.2 12.3a1 1 0 0 1 1.4 1.4l-2 2a2 2 0 1 0 2.6 2.8l4.8-4.8a1 1 0 0 0 0-1.4 1 1 0 1 1 1.4-1.3 2.9 2.9 0 0 1 0 4L9.6 20a3.9 3.9 0 0 1-5.5-5.5l2-2zm11.6-.6a1 1 0 0 1-1.4-1.4l2.1-2a2 2 0 1 0-2.7-2.8L11 10.3a1 1 0 0 0 0 1.4A1 1 0 1 1 9.6 13a2.9 2.9 0 0 1 0-4L14.4 4a3.9 3.9 0 0 1 5.5 5.5l-2 2zM7.6 6.3a.8.8 0 0 1-1 1.1L3.3 4.2a.7.7 0 1 1 1-1l3.2 3.1zM5.1 8.6a.8.8 0 0 1 0 1.5H3a.8.8 0 0 1 0-1.5H5zm5-3.5a.8.8 0 0 1-1.5 0V3a.8.8 0 0 1 1.5 0V5zm6 11.8a.8.8 0 0 1 1-1l3.2 3.2a.8.8 0 0 1-1 1L16 17zm-2.2 2a.8.8 0 0 1 1.5 0V21a.8.8 0 0 1-1.5 0V19zm5-3.5a.7.7 0 1 1 0-1.5H21a.8.8 0 0 1 0 1.5H19z" fill-rule="nonzero"/></svg>',unlock:'<svg width="24" height="24"><path d="M16 5c.8 0 1.5.3 2.1.9.6.6.9 1.3.9 2.1v3h-2V8a1 1 0 0 0-.3-.7A1 1 0 0 0 16 7h-2a1 1 0 0 0-.7.3 1 1 0 0 0-.3.7v3h.3c.2 0 .3 0 .5.2l.2.6v7.4c0 .3 0 .4-.2.6l-.6.2H4.8c-.3 0-.4 0-.6-.2a.7.7 0 0 1-.2-.6v-7.4c0-.3 0-.4.2-.6l.5-.2H11V8c0-.8.3-1.5.9-2.1.6-.6 1.3-.9 2.1-.9h2z" fill-rule="evenodd"/></svg>',"unordered-list":'<svg width="24" height="24"><path d="M11 5h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 0 1 0-2zm0 6h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 0 1 0-2zm0 6h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 0 1 0-2zM4.5 6c0-.4.1-.8.4-1 .3-.4.7-.5 1.1-.5.4 0 .8.1 1 .4.4.3.5.7.5 1.1 0 .4-.1.8-.4 1-.3.4-.7.5-1.1.5-.4 0-.8-.1-1-.4-.4-.3-.5-.7-.5-1.1zm0 6c0-.4.1-.8.4-1 .3-.4.7-.5 1.1-.5.4 0 .8.1 1 .4.4.3.5.7.5 1.1 0 .4-.1.8-.4 1-.3.4-.7.5-1.1.5-.4 0-.8-.1-1-.4-.4-.3-.5-.7-.5-1.1zm0 6c0-.4.1-.8.4-1 .3-.4.7-.5 1.1-.5.4 0 .8.1 1 .4.4.3.5.7.5 1.1 0 .4-.1.8-.4 1-.3.4-.7.5-1.1.5-.4 0-.8-.1-1-.4-.4-.3-.5-.7-.5-1.1z" fill-rule="evenodd"/></svg>',unselected:'<svg width="24" height="24"><path fill-rule="nonzero" d="M6 4h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6c0-1.1.9-2 2-2zm0 1a1 1 0 0 0-1 1v12c0 .6.4 1 1 1h12c.6 0 1-.4 1-1V6c0-.6-.4-1-1-1H6z"/></svg>',upload:'<svg width="24" height="24"><path d="M18 19v-2a1 1 0 0 1 2 0v3c0 .6-.4 1-1 1H5a1 1 0 0 1-1-1v-3a1 1 0 0 1 2 0v2h12zM11 6.4L8.7 8.7a1 1 0 0 1-1.4-1.4l4-4a1 1 0 0 1 1.4 0l4 4a1 1 0 1 1-1.4 1.4L13 6.4V16a1 1 0 0 1-2 0V6.4z" fill-rule="nonzero"/></svg>',user:'<svg width="24" height="24"><path d="M12 24a12 12 0 1 1 0-24 12 12 0 0 1 0 24zm-8.7-5.3a11 11 0 0 0 17.4 0C19.4 16.3 14.6 15 12 15c-2.6 0-7.4 1.3-8.7 3.7zM12 13c2.2 0 4-2 4-4.5S14.2 4 12 4 8 6 8 8.5 9.8 13 12 13z" fill-rule="nonzero"/></svg>',visualblocks:'<svg width="24" height="24"><path d="M9 19v2H7v-2h2zm-4 0v2a2 2 0 0 1-2-2h2zm8 0v2h-2v-2h2zm8 0a2 2 0 0 1-2 2v-2h2zm-4 0v2h-2v-2h2zM15 7a1 1 0 0 1 0 2v7a1 1 0 0 1-2 0V9h-1v7a1 1 0 0 1-2 0v-4a2.5 2.5 0 0 1-.2-5H15zM5 15v2H3v-2h2zm16 0v2h-2v-2h2zM5 11v2H3v-2h2zm16 0v2h-2v-2h2zM5 7v2H3V7h2zm16 0v2h-2V7h2zM5 3v2H3c0-1.1.9-2 2-2zm8 0v2h-2V3h2zm6 0a2 2 0 0 1 2 2h-2V3zM9 3v2H7V3h2zm8 0v2h-2V3h2z" fill-rule="evenodd"/></svg>',visualchars:'<svg width="24" height="24"><path d="M10 5h7a1 1 0 0 1 0 2h-1v11a1 1 0 0 1-2 0V7h-2v11a1 1 0 0 1-2 0v-6c-.5 0-1 0-1.4-.3A3.4 3.4 0 0 1 6.8 10a3.3 3.3 0 0 1 0-2.8 3.4 3.4 0 0 1 1.8-1.8L10 5z" fill-rule="evenodd"/></svg>',warning:'<svg width="24" height="24"><path d="M19.8 18.3c.2.5.3.9 0 1.2-.1.3-.5.5-1 .5H5.2c-.5 0-.9-.2-1-.5-.3-.3-.2-.7 0-1.2L11 4.7l.5-.5.5-.2c.2 0 .3 0 .5.2.2 0 .3.3.5.5l6.8 13.6zM12 18c.3 0 .5-.1.7-.3.2-.2.3-.4.3-.7a1 1 0 0 0-.3-.7 1 1 0 0 0-.7-.3 1 1 0 0 0-.7.3 1 1 0 0 0-.3.7c0 .3.1.5.3.7.2.2.4.3.7.3zm.7-3l.3-4a1 1 0 0 0-.3-.7 1 1 0 0 0-.7-.3 1 1 0 0 0-.7.3 1 1 0 0 0-.3.7l.3 4h1.4z" fill-rule="evenodd"/></svg>',"zoom-in":'<svg width="24" height="24"><path d="M16 17.3a8 8 0 1 1 1.4-1.4l4.3 4.4a1 1 0 0 1-1.4 1.4l-4.4-4.3zm-5-.3a6 6 0 1 0 0-12 6 6 0 0 0 0 12zm-1-9a1 1 0 0 1 2 0v6a1 1 0 0 1-2 0V8zm-2 4a1 1 0 0 1 0-2h6a1 1 0 0 1 0 2H8z" fill-rule="nonzero"/></svg>',"zoom-out":'<svg width="24" height="24"><path d="M16 17.3a8 8 0 1 1 1.4-1.4l4.3 4.4a1 1 0 0 1-1.4 1.4l-4.4-4.3zm-5-.3a6 6 0 1 0 0-12 6 6 0 0 0 0 12zm-3-5a1 1 0 0 1 0-2h6a1 1 0 0 1 0 2H8z" fill-rule="nonzero"/></svg>'}),Ud.get(e).icons);ue(t,function(e,t){kt(r,t)||n.ui.registry.addIcon(t,e)})}(e),function(e){var t=e.settings.theme;if(K(t)){e.settings.theme=Iw(t);var n=qd.get(t);e.theme=new n(e,qd.urls[t]),e.theme.init&&e.theme.init(e,qd.urls[t]||e.documentBaseUrl.replace(/\/$/,""),e.$)}else e.theme={}}(e),function(t){var n=[];Mn.each(t.settings.plugins.split(/[ ,]/),function(e){Az(t,n,Iw(e))})}(e);var t=function(e){var t=e.getElement();return e.orgDisplay=t.style.display,K(e.settings.theme)?function(e){return e.theme.renderUI()}(e):D(e.settings.theme)?function(e){var t=e.getElement(),n=(0,e.settings.theme)(e,t);return n.editorContainer.nodeType&&(n.editorContainer.id=n.editorContainer.id||e.id+"_parent"),n.iframeContainer&&n.iframeContainer.nodeType&&(n.iframeContainer.id=n.iframeContainer.id||e.id+"_iframecontainer"),n.height=n.iframeHeight?n.iframeHeight:t.offsetHeight,n}(e):Uw(e)}(e);return e.editorContainer=t.editorContainer?t.editorContainer:null,Vw(e),e.inline?Nz(e):kz(e,t)},Rz=Xi.DOM,Dz=function(t){var e=t.settings,n=t.id;ra.setCode(Bf(t));var r=function(){Rz.unbind(j.window,"ready",r),t.render()};if(kr.Event.domLoaded){if(t.getElement()&&Nn.contentEditable){e.inline?t.inline=!0:(t.orgVisibility=t.getElement().style.visibility,t.getElement().style.visibility="hidden");var o=t.getElement().form||Rz.getParent(n,"form");o&&(t.formElement=o,e.hidden_input&&!Ge.isTextareaOrInput(t.getElement())&&(Rz.insertAfter(Rz.create("input",{type:"hidden",name:n}),n),t.hasHiddenInput=!0),t.formEventDelegate=function(e){t.fire(e.type,e)},Rz.bind(o,"submit reset",t.formEventDelegate),t.on("reset",function(){t.resetContent()}),!e.submit_patch||o.submit.nodeType||o.submit.length||o._mceOldSubmit||(o._mceOldSubmit=o.submit,o.submit=function(){return t.editorManager.triggerSave(),t.setDirty(!1),o._mceOldSubmit(o)})),t.windowManager=Bd(t),t.notificationManager=_d(t),"xml"===e.encoding&&t.on("GetContent",function(e){e.save&&(e.content=Rz.encode(e.content))}),e.add_form_submit_trigger&&t.on("submit",function(){t.initialized&&t.save()}),e.add_unload_trigger&&(t._beforeUnload=function(){!t.initialized||t.destroyed||t.isHidden()||t.save({format:"raw",no_events:!0,set_dirty:!1})},t.editorManager.on("BeforeUnload",t._beforeUnload)),t.editorManager.add(t),$w(t,t.suffix)}}else Rz.bind(j.window,"ready",r)},_z="data-mce-contenteditable",Bz=["design","readonly"],Oz=function(e,t){var n=t.firstChild,r=t.lastChild;return n&&"meta"===n.name&&(n=n.next),r&&"mce_marker"===r.attr("id")&&(r=r.prev),function(e,t){var n=e.getNonEmptyElements();return t&&(t.isEmpty(n)||function(e,t){return e.getBlockElements()[t.name]&&function(e){return e.firstChild&&e.firstChild===e.lastChild}(t)&&function(e){return"br"===e.name||"\xa0"===e.value}(t.firstChild)}(e,t))}(e,r)&&(r=r.prev),!(!n||n!==r)&&("ul"===n.name||"ol"===n.name)},Hz=function(e,o,i,t){function n(e){var t=Ds.fromRangeStart(i),n=rc(o.getRoot()),r=1===e?n.prev(t):n.next(t);return!r||rx(o,r.getNode())!==a}var r=function(e,t,n){var r=t.serialize(n);return function(e){var t=e.firstChild,n=e.lastChild;return t&&"META"===t.nodeName&&t.parentNode.removeChild(t),n&&"mce_marker"===n.id&&n.parentNode.removeChild(n),e}(e.createFragment(r))}(o,e,t),a=rx(o,i.startContainer),u=nx(ex(r.firstChild)),s=o.getRoot();return n(1)?ix(a,u,s):n(2)?function(e,t,n,r){return r.insertAfter(t.reverse(),e),ox(t[0],n)}(a,u,s,o):function(t,e,n,r){var o=function(e,t){var n=t.cloneRange(),r=t.cloneRange();return n.setStartBefore(e),r.setEndAfter(e),[n.cloneContents(),r.cloneContents()]}(t,r),i=t.parentNode;return i.insertBefore(o[0],t),Mn.each(e,function(e){i.insertBefore(e,t)}),i.insertBefore(o[1],t),i.removeChild(t),ox(e[e.length-1],n)}(a,u,s,i)},Pz=function(e,t){return!!rx(e,t)},Lz=Ge.matchNodeNames(["td","th"]),Vz=function(e,t){var n=function(e){var t;return"string"!=typeof e?(t=Mn.extend({paste:e.paste,data:{paste:e.paste}},e),{content:e.content,details:t}):{content:e,details:{}}}(t);ux(e,n.content,n.details)},Iz=function(e){ez(e,!1)||Lx(e,!1)||Ix(e,!1)||Fx(e,!1)||Dx(e,!1)||Kx(e)||_x(e,!1)||Ux(e,!1)||(sx(e,"Delete"),Tx(e))},Fz=function(e){Lx(e,!0)||Ix(e,!0)||Fx(e,!0)||Dx(e,!0)||Kx(e)||_x(e,!0)||Ux(e,!0)||sx(e,"ForwardDelete")},Uz={getFontSize:cx("font-size"),getFontFamily:q(function(e){return e.replace(/[\'\"\\]/g,"").replace(/,\s+/g,",")},cx("font-family")),toPt:function(e,t){return/[0-9.]+px$/.test(e)?function(e,t){var n=Math.pow(10,t);return Math.round(e*n)/n}(72*parseInt(e,10)/96,t||0)+"pt":e}},jz=Mn.each,qz=Mn.map,$z=Mn.inArray,Wz=(Kz.prototype.execCommand=function(t,n,r,e){var o,i,a=!1,u=this;if(!u.editor.removed){if(/^(mceAddUndoLevel|mceEndUndoLevel|mceBeginUndoLevel|mceRepaint)$/.test(t)||e&&e.skip_focus?Jf(u.editor):u.editor.focus(),(e=u.editor.fire("BeforeExecCommand",{command:t,ui:n,value:r})).isDefaultPrevented())return!1;if(i=t.toLowerCase(),o=u.commands.exec[i])return o(i,n,r),u.editor.fire("ExecCommand",{command:t,ui:n,value:r}),!0;if(jz(this.editor.plugins,function(e){if(e.execCommand&&e.execCommand(t,n,r))return u.editor.fire("ExecCommand",{command:t,ui:n,value:r}),!(a=!0)}),a)return a;if(u.editor.theme&&u.editor.theme.execCommand&&u.editor.theme.execCommand(t,n,r))return u.editor.fire("ExecCommand",{command:t,ui:n,value:r}),!0;try{a=u.editor.getDoc().execCommand(t,n,r)}catch(s){}return!!a&&(u.editor.fire("ExecCommand",{command:t,ui:n,value:r}),!0)}},Kz.prototype.queryCommandState=function(e){var t;if(!this.editor.quirks.isHidden()&&!this.editor.removed){if(e=e.toLowerCase(),t=this.commands.state[e])return t(e);try{return this.editor.getDoc().queryCommandState(e)}catch(n){}return!1}},Kz.prototype.queryCommandValue=function(e){var t;if(!this.editor.quirks.isHidden()&&!this.editor.removed){if(e=e.toLowerCase(),t=this.commands.value[e])return t(e);try{return this.editor.getDoc().queryCommandValue(e)}catch(n){}}},Kz.prototype.addCommands=function(e,n){var r=this;n=n||"exec",jz(e,function(t,e){jz(e.toLowerCase().split(","),function(e){r.commands[n][e]=t})})},Kz.prototype.addCommand=function(e,o,i){var a=this;e=e.toLowerCase(),this.commands.exec[e]=function(e,t,n,r){return o.call(i||a.editor,t,n,r)}},Kz.prototype.queryCommandSupported=function(e){if(e=e.toLowerCase(),this.commands.exec[e])return!0;try{return this.editor.getDoc().queryCommandSupported(e)}catch(t){}return!1},Kz.prototype.addQueryStateHandler=function(e,t,n){var r=this;e=e.toLowerCase(),this.commands.state[e]=function(){return t.call(n||r.editor)}},Kz.prototype.addQueryValueHandler=function(e,t,n){var r=this;e=e.toLowerCase(),this.commands.value[e]=function(){return t.call(n||r.editor)}},Kz.prototype.hasCustomCommand=function(e){return e=e.toLowerCase(),!!this.commands.exec[e]},Kz.prototype.execNativeCommand=function(e,t,n){return t===undefined&&(t=!1),n===undefined&&(n=null),this.editor.getDoc().execCommand(e,t,n)},Kz.prototype.isFormatMatch=function(e){return this.editor.formatter.match(e)},Kz.prototype.toggleFormat=function(e,t){this.editor.formatter.toggle(e,t?{value:t}:undefined),this.editor.nodeChanged()},Kz.prototype.storeSelection=function(e){this.selectionBookmark=this.editor.selection.getBookmark(e)},Kz.prototype.restoreSelection=function(){this.editor.selection.moveToBookmark(this.selectionBookmark)},Kz.prototype.setupCommands=function(i){var a=this;function e(n){return function(){var e=i.selection.isCollapsed()?[i.dom.getParent(i.selection.getNode(),i.dom.isBlock)]:i.selection.getSelectedBlocks(),t=qz(e,function(e){return!!i.formatter.matchNode(e,n)});return-1!==$z(t,!0)}}this.addCommands({"mceResetDesignMode,mceBeginUndoLevel":function(){},"mceEndUndoLevel,mceAddUndoLevel":function(){i.undoManager.add()},"Cut,Copy,Paste":function(e){var t,n=i.getDoc();try{a.execNativeCommand(e)}catch(o){t=!0}if("paste"!==e||n.queryCommandEnabled(e)||(t=!0),t||!n.queryCommandSupported(e)){var r=i.translate("Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X/C/V keyboard shortcuts instead.");Nn.mac&&(r=r.replace(/Ctrl\+/g,"\u2318+")),i.notificationManager.open({text:r,type:"error"})}},unlink:function(){if(i.selection.isCollapsed()){var e=i.dom.getParent(i.selection.getStart(),"a");e&&i.dom.remove(e,!0)}else i.formatter.remove("link")},"JustifyLeft,JustifyCenter,JustifyRight,JustifyFull,JustifyNone":function(e){var t=e.substring(7);"full"===t&&(t="justify"),jz("left,center,right,justify".split(","),function(e){t!==e&&i.formatter.remove("align"+e)}),"none"!==t&&a.toggleFormat("align"+t)},"InsertUnorderedList,InsertOrderedList":function(e){var t,n;a.execNativeCommand(e),(t=i.dom.getParent(i.selection.getNode(),"ol,ul"))&&(n=t.parentNode,/^(H[1-6]|P|ADDRESS|PRE)$/.test(n.nodeName)&&(a.storeSelection(),i.dom.split(n,t),a.restoreSelection()))},"Bold,Italic,Underline,Strikethrough,Superscript,Subscript":function(e){a.toggleFormat(e)},"ForeColor,HiliteColor":function(e,t,n){a.toggleFormat(e,n)},FontName:function(e,t,n){hx(i,n)},FontSize:function(e,t,n){!function(e,t){e.formatter.toggle("fontsize",{value:dx(e,t)}),e.nodeChanged()}(i,n)},RemoveFormat:function(e){i.formatter.remove(e)},mceBlockQuote:function(){a.toggleFormat("blockquote")},FormatBlock:function(e,t,n){return a.toggleFormat(n||"p")},mceCleanup:function(){var e=i.selection.getBookmark();i.setContent(i.getContent()),i.selection.moveToBookmark(e)},mceRemoveNode:function(e,t,n){var r=n||i.selection.getNode();r!==i.getBody()&&(a.storeSelection(),i.dom.remove(r,!0),a.restoreSelection())},mceSelectNodeDepth:function(e,t,n){var r=0;i.dom.getParent(i.selection.getNode(),function(e){if(1===e.nodeType&&r++===n)return i.selection.select(e),!1},i.getBody())},mceSelectNode:function(e,t,n){i.selection.select(n)},mceInsertContent:function(e,t,n){Vz(i,n)},mceInsertRawHTML:function(e,t,n){i.selection.setContent("tiny_mce_marker");var r=i.getContent();i.setContent(r.replace(/tiny_mce_marker/g,function(){return n}))},mceInsertNewLine:function(e,t,n){gz(i,n)},mceToggleFormat:function(e,t,n){a.toggleFormat(n)},mceSetContent:function(e,t,n){i.setContent(n)},"Indent,Outdent":function(e){_C(i,e)},mceRepaint:function(){},InsertHorizontalRule:function(){i.execCommand("mceInsertContent",!1,"<hr />")},mceToggleVisualAid:function(){i.hasVisual=!i.hasVisual,i.addVisual()},mceReplaceContent:function(e,t,n){i.execCommand("mceInsertContent",!1,n.replace(/\{\$selection\}/g,i.selection.getContent({format:"text"})))},mceInsertLink:function(e,t,n){var r;"string"==typeof n&&(n={href:n}),r=i.dom.getParent(i.selection.getNode(),"a"),n.href=n.href.replace(/ /g,"%20"),r&&n.href||i.formatter.remove("link"),n.href&&i.formatter.apply("link",n,r)},selectAll:function(){var e=i.dom.getParent(i.selection.getStart(),Ge.isContentEditableTrue);if(e){var t=i.dom.createRng();t.selectNodeContents(e),i.selection.setRng(t)}},"delete":function(){Iz(i)},forwardDelete:function(){Fz(i)},mceNewDocument:function(){i.setContent("")},InsertLineBreak:function(e,t,n){return lz(i,n),!0}}),a.addCommands({JustifyLeft:e("alignleft"),JustifyCenter:e("aligncenter"),JustifyRight:e("alignright"),JustifyFull:e("alignjustify"),"Bold,Italic,Underline,Strikethrough,Superscript,Subscript":function(e){return a.isFormatMatch(e)},mceBlockQuote:function(){return a.isFormatMatch("blockquote")},Outdent:function(){return RC(i)},"InsertUnorderedList,InsertOrderedList":function(e){var t=i.dom.getParent(i.selection.getNode(),"ul,ol");return t&&("insertunorderedlist"===e&&"UL"===t.tagName||"insertorderedlist"===e&&"OL"===t.tagName)}},"state"),a.addCommands({Undo:function(){i.undoManager.undo()},Redo:function(){i.undoManager.redo()}}),a.addQueryValueHandler("FontName",function(){return function(t){return fx(t).fold(function(){return lx(t).map(function(e){return Uz.getFontFamily(t.getBody(),e)}).getOr("")},function(e){return Uz.getFontFamily(t.getBody(),e)})}(i)},this),a.addQueryValueHandler("FontSize",function(){return function(t){return fx(t).fold(function(){return lx(t).map(function(e){return Uz.getFontSize(t.getBody(),e)}).getOr("")},function(e){return Uz.getFontSize(t.getBody(),e)})}(i)},this)},Kz);function Kz(e){this.commands={state:{},exec:{},value:{}},this.editor=e,this.setupCommands(e)}var Xz=Mn.makeMap("focus blur focusin focusout click dblclick mousedown mouseup mousemove mouseover beforepaste paste cut copy selectionchange mouseout mouseenter mouseleave wheel keydown keypress keyup input beforeinput contextmenu dragstart dragend dragover draggesture dragdrop drop drag submit compositionstart compositionend compositionupdate touchstart touchmove touchend touchcancel"," "),Yz=(Gz.isNative=function(e){return!!Xz[e.toLowerCase()]},Gz.prototype.fire=function(e,t){var n,r,o,i;if(e=e.toLowerCase(),(t=t||{}).type=e,t.target||(t.target=this.scope),t.preventDefault||(t.preventDefault=function(){t.isDefaultPrevented=a},t.stopPropagation=function(){t.isPropagationStopped=a},t.stopImmediatePropagation=function(){t.isImmediatePropagationStopped=a},t.isDefaultPrevented=c,t.isPropagationStopped=c,t.isImmediatePropagationStopped=c),this.settings.beforeFire&&this.settings.beforeFire(t),n=this.bindings[e])for(r=0,o=n.length;r<o;r++){if((i=n[r]).once&&this.off(e,i.func),t.isImmediatePropagationStopped())return t.stopPropagation(),t;if(!1===i.func.call(this.scope,t))return t.preventDefault(),t}return t},Gz.prototype.on=function(e,t,n,r){var o,i,a;if(!1===t&&(t=c),t){var u={func:t};for(r&&Mn.extend(u,r),a=(i=e.toLowerCase().split(" ")).length;a--;)e=i[a],(o=this.bindings[e])||(o=this.bindings[e]=[],this.toggleEvent(e,!0)),n?o.unshift(u):o.push(u)}return this},Gz.prototype.off=function(e,t){var n,r,o,i,a;if(e)for(n=(i=e.toLowerCase().split(" ")).length;n--;){if(e=i[n],r=this.bindings[e],!e){for(o in this.bindings)this.toggleEvent(o,!1),delete this.bindings[o];return this}if(r){if(t)for(a=r.length;a--;)r[a].func===t&&(r=r.slice(0,a).concat(r.slice(a+1)),this.bindings[e]=r);else r.length=0;r.length||(this.toggleEvent(e,!1),delete this.bindings[e])}}else{for(e in this.bindings)this.toggleEvent(e,!1);this.bindings={}}return this},Gz.prototype.once=function(e,t,n){return this.on(e,t,n,{once:!0})},Gz.prototype.has=function(e){return e=e.toLowerCase(),!(!this.bindings[e]||0===this.bindings[e].length)},Gz);function Gz(e){this.bindings={},this.settings=e||{},this.scope=this.settings.scope||this,this.toggleEvent=this.settings.toggleEvent||c}function Jz(n){return n._eventDispatcher||(n._eventDispatcher=new Yz({scope:n,toggleEvent:function(e,t){Yz.isNative(e)&&n.toggleNativeEvent&&n.toggleNativeEvent(e,t)}})),n._eventDispatcher}function Qz(e,t){return"selectionchange"===t?e.getDoc():!e.inline&&/^mouse|touch|click|contextmenu|drop|dragover|dragend/.test(t)?e.getDoc().documentElement:e.settings.event_root?(e.eventRoot||(e.eventRoot=rE.select(e.settings.event_root)[0]),e.eventRoot):e.getBody()}function Zz(e,t,n){!function(e){return!e.hidden&&!Gw(e)}(e)?Gw(e)&&function(e){var t=e.target;!function(e){return"click"===e.type}(e)||"A"!==t.tagName||Ah.metaKeyPressed(e)||e.preventDefault()}(n):e.fire(t,n)}function eE(i,a){var e,t;if(i.delegates||(i.delegates={}),!i.delegates[a]&&!i.removed)if(e=Qz(i,a),i.settings.event_root){if(tE||(tE={},i.editorManager.on("removeEditor",function(){var e;if(!i.editorManager.activeEditor&&tE){for(e in tE)i.dom.unbind(Qz(i,e));tE=null}})),tE[a])return;t=function(e){for(var t=e.target,n=i.editorManager.get(),r=n.length;r--;){var o=n[r].getBody();o!==t&&!rE.isChildOf(t,o)||Zz(n[r],a,e)}},tE[a]=t,rE.bind(e,a,t)}else t=function(e){Zz(i,a,e)},rE.bind(e,a,t),i.delegates[a]=t}var tE,nE={fire:function(e,t,n){if(this.removed&&"remove"!==e&&"detach"!==e)return t;var r=Jz(this).fire(e,t);if(!1!==n&&this.parent)for(var o=this.parent();o&&!r.isPropagationStopped();)o.fire(e,r,!1),o=o.parent();return r},on:function(e,t,n){return Jz(this).on(e,t,n)},off:function(e,t){return Jz(this).off(e,t)},once:function(e,t){return Jz(this).once(e,t)},hasEventListeners:function(e){return Jz(this).has(e)}},rE=Xi.DOM,oE=G(G({},nE),{bindPendingEventDelegates:function(){var t=this;Mn.each(t._pendingNativeEvents,function(e){eE(t,e)})},toggleNativeEvent:function(e,t){var n=this;"focus"!==e&&"blur"!==e&&(t?n.initialized?eE(n,e):n._pendingNativeEvents?n._pendingNativeEvents.push(e):n._pendingNativeEvents=[e]:n.initialized&&(n.dom.unbind(Qz(n,e),e,n.delegates[e]),delete n.delegates[e]))},unbindAllNativeEvents:function(){var e,t=this,n=t.getBody(),r=t.dom;if(t.delegates){for(e in t.delegates)t.dom.unbind(Qz(t,e),e,t.delegates[e]);delete t.delegates}!t.inline&&n&&r&&(n.onload=null,r.unbind(t.getWin()),r.unbind(t.getDoc())),r&&(r.unbind(n),r.unbind(t.getContainer()))}}),iE=Mn.each,aE=Mn.explode,uE={f1:112,f2:113,f3:114,f4:115,f5:116,f6:117,f7:118,f8:119,f9:120,f10:121,f11:122,f12:123},sE=Mn.makeMap("alt,ctrl,shift,meta,access"),cE=(lE.prototype.add=function(e,n,r,o){var t,i=this;return"string"==typeof(t=r)?r=function(){i.editor.execCommand(t,!1,null)}:Mn.isArray(t)&&(r=function(){i.editor.execCommand(t[0],t[1],t[2])}),iE(aE(Mn.trim(e)),function(e){var t=i.createShortcut(e,n,r,o);i.shortcuts[t.id]=t}),!0},lE.prototype.remove=function(e){var t=this.createShortcut(e);return!!this.shortcuts[t.id]&&(delete this.shortcuts[t.id],!0)},lE.prototype.parseShortcut=function(e){var t,n,r={};for(n in iE(aE(e.toLowerCase(),"+"),function(e){e in sE?r[e]=!0:/^[0-9]{2,}$/.test(e)?r.keyCode=parseInt(e,10):(r.charCode=e.charCodeAt(0),r.keyCode=uE[e]||e.toUpperCase().charCodeAt(0))}),t=[r.keyCode],sE)r[n]?t.push(n):r[n]=!1;return r.id=t.join(","),r.access&&(r.alt=!0,Nn.mac?r.ctrl=!0:r.shift=!0),r.meta&&(Nn.mac?r.meta=!0:(r.ctrl=!0,r.meta=!1)),r},lE.prototype.createShortcut=function(e,t,n,r){var o;return(o=Mn.map(aE(e,">"),this.parseShortcut))[o.length-1]=Mn.extend(o[o.length-1],{func:n,scope:r||this.editor}),Mn.extend(o[0],{desc:this.editor.translate(t),subpatterns:o.slice(1)})},lE.prototype.hasModifier=function(e){return e.altKey||e.ctrlKey||e.metaKey},lE.prototype.isFunctionKey=function(e){return"keydown"===e.type&&112<=e.keyCode&&e.keyCode<=123},lE.prototype.matchShortcut=function(e,t){return!!t&&t.ctrl===e.ctrlKey&&t.meta===e.metaKey&&t.alt===e.altKey&&t.shift===e.shiftKey&&!!(e.keyCode===t.keyCode||e.charCode&&e.charCode===t.charCode)&&(e.preventDefault(),!0)},lE.prototype.executeShortcutAction=function(e){return e.func?e.func.call(e.scope):null},lE);function lE(e){this.shortcuts={},this.pendingPatterns=[],this.editor=e;var n=this;e.on("keyup keypress keydown",function(t){!n.hasModifier(t)&&!n.isFunctionKey(t)||t.isDefaultPrevented()||(iE(n.shortcuts,function(e){if(n.matchShortcut(t,e))return n.pendingPatterns=e.subpatterns.slice(0),"keydown"===t.type&&n.executeShortcutAction(e),!0}),n.matchShortcut(t,n.pendingPatterns[0])&&(1===n.pendingPatterns.length&&"keydown"===t.type&&n.executeShortcutAction(n.pendingPatterns[0]),n.pendingPatterns.shift()))})}var fE=Mn.each,dE=Mn.trim,hE="source protocol authority userInfo user password host port relative path directory file query anchor".split(" "),mE={ftp:21,http:80,https:443,mailto:25},gE=(pE.parseDataUri=function(e){var t,n=decodeURIComponent(e).split(","),r=/data:([^;]+)/.exec(n[0]);return r&&(t=r[1]),{type:t,data:n[1]}},pE.getDocumentBaseUrl=function(e){var t;return t=0!==e.protocol.indexOf("http")&&"file:"!==e.protocol?e.href:e.protocol+"//"+e.host+e.pathname,/^[^:]+:\/\/\/?[^\/]+\//.test(t)&&(t=t.replace(/[\?#].*$/,"").replace(/[\/\\][^\/]+$/,""),/[\/\\]$/.test(t)||(t+="/")),t},pE.prototype.setPath=function(e){var t=/^(.*?)\/?(\w+)?$/.exec(e);this.path=t[0],this.directory=t[1],this.file=t[2],this.source="",this.getURI()},pE.prototype.toRelative=function(e){var t;if("./"===e)return e;var n=new pE(e,{base_uri:this});if("mce_host"!==n.host&&this.host!==n.host&&n.host||this.port!==n.port||this.protocol!==n.protocol&&""!==n.protocol)return n.getURI();var r=this.getURI(),o=n.getURI();return r===o||"/"===r.charAt(r.length-1)&&r.substr(0,r.length-1)===o?r:(t=this.toRelPath(this.path,n.path),n.query&&(t+="?"+n.query),n.anchor&&(t+="#"+n.anchor),t)},pE.prototype.toAbsolute=function(e,t){var n=new pE(e,{base_uri:this});return n.getURI(t&&this.isSameOrigin(n))},pE.prototype.isSameOrigin=function(e){if(this.host==e.host&&this.protocol==e.protocol){if(this.port==e.port)return!0;var t=mE[this.protocol];if(t&&(this.port||t)==(e.port||t))return!0}return!1},pE.prototype.toRelPath=function(e,t){var n,r,o,i=0,a="",u=e.substring(0,e.lastIndexOf("/")).split("/");if(n=t.split("/"),u.length>=n.length)for(r=0,o=u.length;r<o;r++)if(r>=n.length||u[r]!==n[r]){i=r+1;break}if(u.length<n.length)for(r=0,o=n.length;r<o;r++)if(r>=u.length||u[r]!==n[r]){i=r+1;break}if(1===i)return t;for(r=0,o=u.length-(i-1);r<o;r++)a+="../";for(r=i-1,o=n.length;r<o;r++)a+=r!==i-1?"/"+n[r]:n[r];return a},pE.prototype.toAbsPath=function(e,t){var n,r,o,i=0,a=[];r=/\/$/.test(t)?"/":"";var u=e.split("/"),s=t.split("/");for(fE(u,function(e){e&&a.push(e)}),u=a,n=s.length-1,a=[];0<=n;n--)0!==s[n].length&&"."!==s[n]&&(".."!==s[n]?0<i?i--:a.push(s[n]):i++);return 0!==(o=(n=u.length-i)<=0?a.reverse().join("/"):u.slice(0,n).join("/")+"/"+a.reverse().join("/")).indexOf("/")&&(o="/"+o),r&&o.lastIndexOf("/")!==o.length-1&&(o+=r),o},pE.prototype.getURI=function(e){var t;return void 0===e&&(e=!1),this.source&&!e||(t="",e||(this.protocol?t+=this.protocol+"://":t+="//",this.userInfo&&(t+=this.userInfo+"@"),this.host&&(t+=this.host),this.port&&(t+=":"+this.port)),this.path&&(t+=this.path),this.query&&(t+="?"+this.query),this.anchor&&(t+="#"+this.anchor),this.source=t),this.source},pE);function pE(e,t){e=dE(e),this.settings=t||{};var n=this.settings.base_uri,r=this;if(/^([\w\-]+):([^\/]{2})/i.test(e)||/^\s*#/.test(e))r.source=e;else{var o=0===e.indexOf("//");if(0!==e.indexOf("/")||o||(e=(n&&n.protocol||"http")+"://mce_host"+e),!/^[\w\-]*:?\/\//.test(e)){var i=this.settings.base_uri?this.settings.base_uri.path:new pE(j.document.location.href).directory;if(this.settings.base_uri&&""==this.settings.base_uri.protocol)e="//mce_host"+r.toAbsPath(i,e);else{var a=/([^#?]*)([#?]?.*)/.exec(e);e=(n&&n.protocol||"http")+"://mce_host"+r.toAbsPath(i,a[1])+a[2]}}e=e.replace(/@@/g,"(mce_at)");var u=/^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@\/]*):?([^:@\/]*))?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/.exec(e);fE(hE,function(e,t){var n=u[t];n=n&&n.replace(/\(mce_at\)/g,"@@"),r[e]=n}),n&&(r.protocol||(r.protocol=n.protocol),r.userInfo||(r.userInfo=n.userInfo),r.port||"mce_host"!==r.host||(r.port=n.port),r.host&&"mce_host"!==r.host||(r.host=n.host),r.source=""),o&&(r.protocol="")}}function vE(){var e=function(){function e(n,r){return function(e,t){return n[e.toLowerCase()]=G(G({},t),{type:r})}}var t={},n={},r={},o={},i={},a={},u={};return{addButton:e(t,"button"),addToggleButton:e(t,"togglebutton"),addMenuButton:e(t,"menubutton"),addSplitButton:e(t,"splitbutton"),addMenuItem:e(n,"menuitem"),addNestedMenuItem:e(n,"nestedmenuitem"),addToggleMenuItem:e(n,"togglemenuitem"),addAutocompleter:e(r,"autocompleter"),addContextMenu:e(i,"contextmenu"),addContextToolbar:e(a,"contexttoolbar"),addContextForm:e(a,"contextform"),addSidebar:e(u,"sidebar"),addIcon:function(e,t){return o[e.toLowerCase()]=t},getAll:function(){return{buttons:t,menuItems:n,icons:o,popups:r,contextMenus:i,contextToolbars:a,sidebars:u}}}}();return{addAutocompleter:e.addAutocompleter,addButton:e.addButton,addContextForm:e.addContextForm,addContextMenu:e.addContextMenu,addContextToolbar:e.addContextToolbar,addIcon:e.addIcon,addMenuButton:e.addMenuButton,addMenuItem:e.addMenuItem,addNestedMenuItem:e.addNestedMenuItem,addSidebar:e.addSidebar,addSplitButton:e.addSplitButton,addToggleButton:e.addToggleButton,addToggleMenuItem:e.addToggleMenuItem,getAll:e.getAll}}var yE=Xi.DOM,bE=Mn.extend,CE=Mn.each,wE=Mn.resolve,xE=Nn.ie,zE=(EE.prototype.render=function(){Dz(this)},EE.prototype.focus=function(e){ad(this,e)},EE.prototype.hasFocus=function(){return ud(this)},EE.prototype.execCallback=function(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n];var r,o=this.settings[e];if(o)return this.callbackLookup&&(r=this.callbackLookup[e])&&(o=r.func,r=r.scope),"string"==typeof o&&(r=(r=o.replace(/\.\w+$/,""))?wE(r):0,o=wE(o),this.callbackLookup=this.callbackLookup||{},this.callbackLookup[e]={func:o,scope:r}),o.apply(r||this,Array.prototype.slice.call(arguments,1))},EE.prototype.translate=function(e){return ra.translate(e)},EE.prototype.getParam=function(e,t,n){return ef(this,e,t,n)},EE.prototype.nodeChanged=function(e){this._nodeChangeDispatcher.nodeChanged(e)},EE.prototype.addCommand=function(e,t,n){this.editorCommands.addCommand(e,t,n)},EE.prototype.addQueryStateHandler=function(e,t,n){this.editorCommands.addQueryStateHandler(e,t,n)},EE.prototype.addQueryValueHandler=function(e,t,n){this.editorCommands.addQueryValueHandler(e,t,n)},EE.prototype.addShortcut=function(e,t,n,r){this.shortcuts.add(e,t,n,r)},EE.prototype.execCommand=function(e,t,n,r){return this.editorCommands.execCommand(e,t,n,r)},EE.prototype.queryCommandState=function(e){return this.editorCommands.queryCommandState(e)},EE.prototype.queryCommandValue=function(e){return this.editorCommands.queryCommandValue(e)},EE.prototype.queryCommandSupported=function(e){return this.editorCommands.queryCommandSupported(e)},EE.prototype.show=function(){this.hidden&&(this.hidden=!1,this.inline?this.getBody().contentEditable="true":(yE.show(this.getContainer()),yE.hide(this.id)),this.load(),this.fire("show"))},EE.prototype.hide=function(){var e=this,t=e.getDoc();e.hidden||(xE&&t&&!e.inline&&t.execCommand("SelectAll"),e.save(),e.inline?(e.getBody().contentEditable="false",e===e.editorManager.focusedEditor&&(e.editorManager.focusedEditor=null)):(yE.hide(e.getContainer()),yE.setStyle(e.id,"display",e.orgDisplay)),e.hidden=!0,e.fire("hide"))},EE.prototype.isHidden=function(){return!!this.hidden},EE.prototype.setProgressState=function(e,t){this.fire("ProgressState",{state:e,time:t})},EE.prototype.load=function(e){var t,n=this.getElement();if(this.removed)return"";if(n){(e=e||{}).load=!0;var r=Ge.isTextareaOrInput(n)?n.value:n.innerHTML;return t=this.setContent(r,e),e.element=n,e.no_events||this.fire("LoadContent",e),e.element=n=null,t}},EE.prototype.save=function(e){var t,n,r=this,o=r.getElement();if(o&&r.initialized&&!r.removed)return(e=e||{}).save=!0,e.element=o,e.content=r.getContent(e),e.no_events||r.fire("SaveContent",e),"raw"===e.format&&r.fire("RawSaveContent",e),t=e.content,Ge.isTextareaOrInput(o)?o.value=t:(!e.is_removing&&r.inline||(o.innerHTML=t),(n=yE.getParent(r.id,"form"))&&CE(n.elements,function(e){if(e.name===r.id)return e.value=t,!1})),e.element=o=null,!1!==e.set_dirty&&r.setDirty(!1),t},EE.prototype.setContent=function(e,t){return jl(this,e,t)},EE.prototype.getContent=function(e){return function(t,n){return void 0===n&&(n={}),k.from(t.getBody()).fold($("tree"===n.format?new ul("body",11):""),function(e){return ml(t,n,e)})}(this,e)},EE.prototype.insertContent=function(e,t){t&&(e=bE({content:e},t)),this.execCommand("mceInsertContent",!1,e)},EE.prototype.resetContent=function(e){e===undefined?jl(this,this.startContent,{format:"raw"}):jl(this,e),this.undoManager.reset(),this.setDirty(!1),this.nodeChanged()},EE.prototype.isDirty=function(){return!this.isNotDirty},EE.prototype.setDirty=function(e){var t=!this.isNotDirty;this.isNotDirty=!e,e&&e!==t&&this.fire("dirty")},EE.prototype.getContainer=function(){return this.container||(this.container=yE.get(this.editorContainer||this.id+"_parent")),this.container},EE.prototype.getContentAreaContainer=function(){return this.contentAreaContainer},EE.prototype.getElement=function(){return this.targetElm||(this.targetElm=yE.get(this.id)),this.targetElm},EE.prototype.getWin=function(){var e;return this.contentWindow||(e=this.iframeElement)&&(this.contentWindow=e.contentWindow),this.contentWindow},EE.prototype.getDoc=function(){var e;return this.contentDocument||(e=this.getWin())&&(this.contentDocument=e.document),this.contentDocument},EE.prototype.getBody=function(){var e=this.getDoc();return this.bodyElement||(e?e.body:null)},EE.prototype.convertURL=function(e,t,n){var r=this.settings;return r.urlconverter_callback?this.execCallback("urlconverter_callback",e,n,!0,t):!r.convert_urls||n&&"LINK"===n.nodeName||0===e.indexOf("file:")||0===e.length?e:r.relative_urls?this.documentBaseURI.toRelative(e):e=this.documentBaseURI.toAbsolute(e,r.remove_script_host)},EE.prototype.addVisual=function(e){var n,r=this,o=r.settings,i=r.dom;e=e||r.getBody(),r.hasVisual===undefined&&(r.hasVisual=o.visual),CE(i.select("table,a",e),function(e){var t;switch(e.nodeName){case"TABLE":return n=o.visual_table_class||"mce-item-table",void((t=i.getAttrib(e,"border"))&&"0"!==t||!r.hasVisual?i.removeClass(e,n):i.addClass(e,n));case"A":return void(i.getAttrib(e,"href")||(t=i.getAttrib(e,"name")||e.id,n=o.visual_anchor_class||"mce-item-anchor",t&&r.hasVisual?i.addClass(e,n):i.removeClass(e,n)))}}),r.fire("VisualAid",{element:e,hasVisual:r.hasVisual})},EE.prototype.remove=function(){$l(this)},EE.prototype.destroy=function(e){Wl(this,e)},EE.prototype.uploadImages=function(e){return this.editorUpload.uploadImages(e)},EE.prototype._scanForImages=function(){return this.editorUpload.scanForImages()},EE.prototype.addButton=function(){throw new Error("editor.addButton has been removed in tinymce 5x, use editor.ui.registry.addButton or editor.ui.registry.addToggleButton or editor.ui.registry.addSplitButton instead")},EE.prototype.addSidebar=function(){throw new Error("editor.addSidebar has been removed in tinymce 5x, use editor.ui.registry.addSidebar instead")},EE.prototype.addMenuItem=function(){throw new Error("editor.addMenuItem has been removed in tinymce 5x, use editor.ui.registry.addMenuItem instead")},EE.prototype.addContextToolbar=function(){throw new Error("editor.addContextToolbar has been removed in tinymce 5x, use editor.ui.registry.addContextToolbar instead")},EE);function EE(e,t,n){var r=this;this.plugins={},this.contentCSS=[],this.contentStyles=[],this.loadedCSS={},this.isNotDirty=!1,this.editorManager=n,this.documentBaseUrl=n.documentBaseURL,bE(this,oE),this.settings=Ql(this,e,this.documentBaseUrl,n.defaultSettings,t),this.settings.suffix&&(n.suffix=this.settings.suffix),this.suffix=n.suffix,this.settings.base_url&&n._setBaseUrl(this.settings.base_url),this.baseUri=n.baseURI,this.settings.referrer_policy&&(Qi.ScriptLoader._setReferrerPolicy(this.settings.referrer_policy),Xi.DOM.styleSheetLoader._setReferrerPolicy(this.settings.referrer_policy)),ga.languageLoad=this.settings.language_load,ga.baseURL=n.baseURL,this.id=e,this.setDirty(!1),this.documentBaseURI=new gE(this.settings.document_base_url,{base_uri:this.baseUri}),this.baseURI=this.baseUri,this.inline=!!this.settings.inline,this.shortcuts=new cE(this),this.editorCommands=new Wz(this),this.settings.cache_suffix&&(Nn.cacheSuffix=this.settings.cache_suffix.replace(/^[\?\&]+/,"")),this.ui={registry:vE()};var o=Zw(this);this.mode=o,this.setMode=o.set,n.fire("SetupEditor",{editor:this}),this.execCallback("setup",this),this.$=vi.overrideDefaults(function(){return{context:r.inline?r.getBody():r.getDoc(),element:r.getBody()}})}function NE(t){var n=t.type;DE(VE.get(),function(e){switch(n){case"scroll":e.fire("ScrollWindow",t);break;case"resize":e.fire("ResizeWindow",t)}})}function SE(e){e!==OE&&(e?vi(window).on("resize scroll",NE):vi(window).off("resize scroll",NE),OE=e)}function kE(t){var e=PE;delete HE[t.id];for(var n=0;n<HE.length;n++)if(HE[n]===t){HE.splice(n,1);break}return PE=y(PE,function(e){return t!==e}),VE.activeEditor===t&&(VE.activeEditor=0<PE.length?PE[0]:null),VE.focusedEditor===t&&(VE.focusedEditor=null),e.length!==PE.length}var TE,AE,ME=Xi.DOM,RE=Mn.explode,DE=Mn.each,_E=Mn.extend,BE=0,OE=!1,HE=[],PE=[],LE="CSS1Compat"!==j.document.compatMode,VE=G(G({},nE),{baseURI:null,baseURL:null,defaultSettings:{},documentBaseURL:null,suffix:null,$:vi,majorVersion:"5",minorVersion:"1.5",releaseDate:"2019-12-19",editors:HE,i18n:ra,activeEditor:null,focusedEditor:null,settings:{},setup:function(){var e,t,n="";t=gE.getDocumentBaseUrl(j.document.location),/^[^:]+:\/\/\/?[^\/]+\//.test(t)&&(t=t.replace(/[\?#].*$/,"").replace(/[\/\\][^\/]+$/,""),/[\/\\]$/.test(t)||(t+="/"));var r=window.tinymce||window.tinyMCEPreInit;if(r)e=r.base||r.baseURL,n=r.suffix;else{for(var o=j.document.getElementsByTagName("script"),i=0;i<o.length;i++){var a;if(""!==(a=o[i].src||"")){var u=a.substring(a.lastIndexOf("/"));if(/tinymce(\.full|\.jquery|)(\.min|\.dev|)\.js/.test(a)){-1!==u.indexOf(".min")&&(n=".min"),e=a.substring(0,a.lastIndexOf("/"));break}}}if(!e&&j.document.currentScript)-1!==(a=j.document.currentScript.src).indexOf(".min")&&(n=".min"),e=a.substring(0,a.lastIndexOf("/"))}this.baseURL=new gE(t).toAbsolute(e),this.documentBaseURL=t,this.baseURI=new gE(this.baseURL),this.suffix=n,nd(this)},overrideDefaults:function(e){var t,n;(t=e.base_url)&&this._setBaseUrl(t),n=e.suffix,e.suffix&&(this.suffix=n);var r=(this.defaultSettings=e).plugin_base_urls;for(var o in r)ga.PluginManager.urls[o]=r[o]},init:function(r){var n,u,s=this;u=Mn.makeMap("area base basefont br col frame hr img input isindex link meta param embed source wbr track colgroup option table tbody tfoot thead tr th td script noscript style textarea video audio iframe object menu"," ");function c(e){var t=e.id;return t||(t=(t=e.name)&&!ME.get(t)?e.name:ME.uniqueId(),e.setAttribute("id",t)),t}function l(e,t){return t.constructor===RegExp?t.test(e.className):ME.hasClass(e,t)}var f=function(e){n=e},e=function(){function n(e,t,n){var r=new zE(e,t,s);a.push(r),r.on("init",function(){++i===o.length&&f(a)}),r.targetElm=r.targetElm||n,r.render()}var o,i=0,a=[];ME.unbind(window,"ready",e),function(e){var t=r[e];if(t)t.apply(s,Array.prototype.slice.call(arguments,2))}("onpageload"),o=vi.unique(function(t){var e,n=[];if(Nn.browser.isIE()&&Nn.browser.version.major<11)return Fd.initError("TinyMCE does not support the browser you are using. For a list of supported browsers please see: https://www.tinymce.com/docs/get-started/system-requirements/"),[];if(LE)return Fd.initError("Failed to initialize the editor as the document is not in standards mode. TinyMCE requires standards mode."),[];if(t.types)return DE(t.types,function(e){n=n.concat(ME.select(e.selector))}),n;if(t.selector)return ME.select(t.selector);if(t.target)return[t.target];switch(t.mode){case"exact":0<(e=t.elements||"").length&&DE(RE(e),function(t){var e;(e=ME.get(t))?n.push(e):DE(j.document.forms,function(e){DE(e.elements,function(e){e.name===t&&(t="mce_editor_"+BE++,ME.setAttrib(e,"id",t),n.push(e))})})});break;case"textareas":case"specific_textareas":DE(ME.select("textarea"),function(e){t.editor_deselector&&l(e,t.editor_deselector)||t.editor_selector&&!l(e,t.editor_selector)||n.push(e)})}return n}(r)),r.types?DE(r.types,function(t){Mn.each(o,function(e){return!ME.is(e,t.selector)||(n(c(e),_E({},r,t),e),!1)})}):(Mn.each(o,function(e){!function(e){e&&e.initialized&&!(e.getContainer()||e.getBody()).parentNode&&(kE(e),e.unbindAllNativeEvents(),e.destroy(!0),e.removed=!0,e=null)}(s.get(e.id))}),0===(o=Mn.grep(o,function(e){return!s.get(e.id)})).length?f([]):DE(o,function(e){!function(e,t){return e.inline&&t.tagName.toLowerCase()in u}(r,e)?n(c(e),r,e):Fd.initError("Could not initialize inline editor on invalid inline target element",e)}))};return s.settings=r,ME.bind(window,"ready",e),new Zt(function(t){n?t(n):f=function(e){t(e)}})},get:function(t){return 0===arguments.length?PE.slice(0):K(t)?g(PE,function(e){return e.id===t}).getOr(null):_(t)&&PE[t]?PE[t]:null},add:function(e){var n=this;return HE[e.id]===e||(null===n.get(e.id)&&(function(e){return"length"!==e}(e.id)&&(HE[e.id]=e),HE.push(e),PE.push(e)),SE(!0),n.activeEditor=e,n.fire("AddEditor",{editor:e}),TE||(TE=function(e){var t=n.fire("BeforeUnload");if(t.returnValue)return e.preventDefault(),e.returnValue=t.returnValue,t.returnValue},window.addEventListener("beforeunload",TE))),e},createEditor:function(e,t){return this.add(new zE(e,t,this))},remove:function(e){var t,n,r=this;if(e){if(!K(e))return n=e,M(r.get(n.id))?null:(kE(n)&&r.fire("RemoveEditor",{editor:n}),0===PE.length&&window.removeEventListener("beforeunload",TE),n.remove(),SE(0<PE.length),n);DE(ME.select(e),function(e){(n=r.get(e.id))&&r.remove(n)})}else for(t=PE.length-1;0<=t;t--)r.remove(PE[t])},execCommand:function(e,t,n){var r=this.get(n);switch(e){case"mceAddEditor":return this.get(n)||new zE(n,this.settings,this).render(),!0;case"mceRemoveEditor":return r&&r.remove(),!0;case"mceToggleEditor":return r?r.isHidden()?r.show():r.hide():this.execCommand("mceAddEditor",0,n),!0}return!!this.activeEditor&&this.activeEditor.execCommand(e,t,n)},triggerSave:function(){DE(PE,function(e){e.save()})},addI18n:function(e,t){ra.add(e,t)},translate:function(e){return ra.translate(e)},setActive:function(e){var t=this.activeEditor;this.activeEditor!==e&&(t&&t.fire("deactivate",{relatedTarget:e}),e.fire("activate",{relatedTarget:t})),this.activeEditor=e},_setBaseUrl:function(e){this.baseURL=new gE(this.documentBaseURL).toAbsolute(e.replace(/\/+$/,"")),this.baseURI=new gE(this.baseURL)}});function IE(n){return{walk:function(e,t){return Gc(n,e,t)},split:Cm,normalize:function(t){return ay(n,t).fold($(!1),function(e){return t.setStart(e.startContainer,e.startOffset),t.setEnd(e.endContainer,e.endOffset),!0})}}}VE.setup(),(AE=IE=IE||{}).compareRanges=hh,AE.getCaretRangeFromPoint=$v,AE.getSelectedNode=Wa,AE.getNode=Ka;function FE(e,t,n){var r,o,i,a,u,s;return r=t.x,o=t.y,i=e.w,a=e.h,u=t.w,s=t.h,"b"===(n=(n||"").split(""))[0]&&(o+=s),"r"===n[1]&&(r+=u),"c"===n[0]&&(o+=JE(s/2)),"c"===n[1]&&(r+=JE(u/2)),"b"===n[3]&&(o-=a),"r"===n[4]&&(r-=i),"c"===n[3]&&(o-=JE(a/2)),"c"===n[4]&&(r-=JE(i/2)),QE(r,o,i,a)}function UE(){}var jE,qE,$E,WE,KE=IE,XE=(jE={},qE={},{load:function(r,o){var i='Script at URL "'+o+'" failed to load',a='Script at URL "'+o+"\" did not call `tinymce.Resource.add('"+r+"', data)` within 1 second";if(jE[r]!==undefined)return jE[r];var e=new Zt(function(e,t){var n=function(e,t,n){function r(n){return function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];o||(o=!0,null!==i&&(j.clearTimeout(i),i=null),n.apply(null,e))}}void 0===n&&(n=1e3);var o=!1,i=null,a=r(e),u=r(t);return{start:function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];o||null!==i||(i=j.setTimeout(function(){return u.apply(null,e)},n))},resolve:a,reject:u}}(e,t);qE[r]=n.resolve,Qi.ScriptLoader.loadScript(o,function(){return n.start(a)},function(){return n.reject(i)})});return jE[r]=e},add:function(e,t){qE[e]!==undefined&&(qE[e](t),delete qE[e]),jE[e]=Zt.resolve(t)}}),YE=Math.min,GE=Math.max,JE=Math.round,QE=function(e,t,n,r){return{x:e,y:t,w:n,h:r}},ZE={inflate:function(e,t,n){return QE(e.x-t,e.y-n,e.w+2*t,e.h+2*n)},relativePosition:FE,findBestRelativePosition:function(e,t,n,r){var o,i;for(i=0;i<r.length;i++)if((o=FE(e,t,r[i])).x>=n.x&&o.x+o.w<=n.w+n.x&&o.y>=n.y&&o.y+o.h<=n.h+n.y)return r[i];return null},intersect:function(e,t){var n,r,o,i;return n=GE(e.x,t.x),r=GE(e.y,t.y),o=YE(e.x+e.w,t.x+t.w),i=YE(e.y+e.h,t.y+t.h),o-n<0||i-r<0?null:QE(n,r,o-n,i-r)},clamp:function(e,t,n){var r,o,i,a,u,s,c,l,f,d;return u=e.x,s=e.y,c=e.x+e.w,l=e.y+e.h,f=t.x+t.w,d=t.y+t.h,r=GE(0,t.x-u),o=GE(0,t.y-s),i=GE(0,c-f),a=GE(0,l-d),u+=r,s+=o,n&&(c+=r,l+=o,u-=i,s-=a),QE(u,s,(c-=i)-u,(l-=a)-s)},create:QE,fromClientRect:function(e){return QE(e.left,e.top,e.width,e.height)}},eN=Mn.each,tN=Mn.extend;UE.extend=$E=function(n){function r(){var e,t,n;if(!WE&&(this.init&&this.init.apply(this,arguments),t=this.Mixins))for(e=t.length;e--;)(n=t[e]).init&&n.init.apply(this,arguments)}function t(){return this}function e(n,r){return function(){var e,t=this._super;return this._super=u[n],e=r.apply(this,arguments),this._super=t,e}}var o,i,a,u=this.prototype;for(i in WE=!0,o=new this,WE=!1,n.Mixins&&(eN(n.Mixins,function(e){for(var t in e)"init"!==t&&(n[t]=e[t])}),u.Mixins&&(n.Mixins=u.Mixins.concat(n.Mixins))),n.Methods&&eN(n.Methods.split(","),function(e){n[e]=t}),n.Properties&&eN(n.Properties.split(","),function(e){var t="_"+e;n[e]=function(e){return e!==undefined?(this[t]=e,this):this[t]}}),n.Statics&&eN(n.Statics,function(e,t){r[t]=e}),n.Defaults&&u.Defaults&&(n.Defaults=tN({},u.Defaults,n.Defaults)),n)"function"==typeof(a=n[i])&&u[i]?o[i]=e(i,a):o[i]=a;return r.prototype=o,(r.constructor=r).extend=$E,r};var nN=Math.min,rN=Math.max,oN=Math.round,iN={serialize:function(e){var t=JSON.stringify(e);return K(t)?t.replace(/[\u0080-\uFFFF]/g,function(e){var t=e.charCodeAt(0).toString(16);return"\\u"+"0000".substring(t.length)+t}):t},parse:function(e){try{return JSON.parse(e)}catch(t){}}},aN={callbacks:{},count:0,send:function(t){var n=this,r=Xi.DOM,o=t.count!==undefined?t.count:n.count,i="tinymce_jsonp_"+o;n.callbacks[o]=function(e){r.remove(i),delete n.callbacks[o],t.callback(e)},r.add(r.doc.body,"script",{id:i,src:t.url,type:"text/javascript"}),n.count++}},uN=G(G({},nE),{send:function(e){var t,n=0,r=function(){!e.async||4===t.readyState||1e4<n++?(e.success&&n<1e4&&200===t.status?e.success.call(e.success_scope,""+t.responseText,t,e):e.error&&e.error.call(e.error_scope,1e4<n?"TIMED_OUT":"GENERAL",t,e),t=null):pn.setTimeout(r,10)};if(e.scope=e.scope||this,e.success_scope=e.success_scope||e.scope,e.error_scope=e.error_scope||e.scope,e.async=!1!==e.async,e.data=e.data||"",uN.fire("beforeInitialize",{settings:e}),t=new j.XMLHttpRequest){if(t.overrideMimeType&&t.overrideMimeType(e.content_type),t.open(e.type||(e.data?"POST":"GET"),e.url,e.async),e.crossDomain&&(t.withCredentials=!0),e.content_type&&t.setRequestHeader("Content-Type",e.content_type),e.requestheaders&&Mn.each(e.requestheaders,function(e){t.setRequestHeader(e.key,e.value)}),t.setRequestHeader("X-Requested-With","XMLHttpRequest"),(t=uN.fire("beforeSend",{xhr:t,settings:e}).xhr).send(e.data),!e.async)return r();pn.setTimeout(r,10)}}}),sN=Mn.extend,cN=(lN.sendRPC=function(e){return(new lN).send(e)},lN.prototype.send=function(e){var n=e.error,r=e.success,o=sN(this.settings,e);o.success=function(e,t){void 0===(e=iN.parse(e))&&(e={error:"JSON Parse error."}),e.error?n.call(o.error_scope||o.scope,e.error,t):r.call(o.success_scope||o.scope,e.result)},o.error=function(e,t){n&&n.call(o.error_scope||o.scope,e,t)},o.data=iN.serialize({id:e.id||"c"+this.count++,method:e.method,params:e.params}),o.content_type="application/json",uN.send(o)},lN);function lN(e){this.settings=sN({},e),this.count=0}var fN,dN,hN,mN;try{fN=j.window.localStorage}catch(yN){dN={},hN=[],mN={getItem:function(e){var t=dN[e];return t||null},setItem:function(e,t){hN.push(e),dN[e]=String(t)},key:function(e){return hN[e]},removeItem:function(t){hN=hN.filter(function(e){return e===t}),delete dN[t]},clear:function(){hN=[],dN={}},length:0},Object.defineProperty(mN,"length",{get:function(){return hN.length},configurable:!1,enumerable:!1}),fN=mN}var gN,pN={geom:{Rect:ZE},util:{Promise:Zt,Delay:pn,Tools:Mn,VK:Ah,URI:gE,Class:UE,EventDispatcher:Yz,Observable:nE,I18n:ra,XHR:uN,JSON:iN,JSONRequest:cN,JSONP:aN,LocalStorage:fN,Color:function(e){function t(e){var t;return"object"==typeof e?"r"in e?(u=e.r,s=e.g,c=e.b):"v"in e&&function(e,t,n){var r,o,i,a;if(e=(parseInt(e,10)||0)%360,t=parseInt(t,10)/100,n=parseInt(n,10)/100,t=rN(0,nN(t,1)),n=rN(0,nN(n,1)),0!==t){switch(r=e/60,i=(o=n*t)*(1-Math.abs(r%2-1)),a=n-o,Math.floor(r)){case 0:u=o,s=i,c=0;break;case 1:u=i,s=o,c=0;break;case 2:u=0,s=o,c=i;break;case 3:u=0,s=i,c=o;break;case 4:u=i,s=0,c=o;break;case 5:u=o,s=0,c=i;break;default:u=s=c=0}u=oN(255*(u+a)),s=oN(255*(s+a)),c=oN(255*(c+a))}else u=s=c=oN(255*n)}(e.h,e.s,e.v):(t=/rgb\s*\(\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)[^\)]*\)/gi.exec(e))?(u=parseInt(t[1],10),s=parseInt(t[2],10),c=parseInt(t[3],10)):(t=/#([0-F]{2})([0-F]{2})([0-F]{2})/gi.exec(e))?(u=parseInt(t[1],16),s=parseInt(t[2],16),c=parseInt(t[3],16)):(t=/#([0-F])([0-F])([0-F])/gi.exec(e))&&(u=parseInt(t[1]+t[1],16),s=parseInt(t[2]+t[2],16),c=parseInt(t[3]+t[3],16)),u=u<0?0:255<u?255:u,s=s<0?0:255<s?255:s,c=c<0?0:255<c?255:c,n}var n={},u=0,s=0,c=0;return e&&t(e),n.toRgb=function(){return{r:u,g:s,b:c}},n.toHsv=function(){return function(e,t,n){var r,o,i,a;return o=0,(i=nN(e/=255,nN(t/=255,n/=255)))===(a=rN(e,rN(t,n)))?{h:0,s:0,v:100*(o=i)}:(r=(a-i)/a,{h:oN(60*((e===i?3:n===i?1:5)-(e===i?t-n:n===i?e-t:n-e)/((o=a)-i))),s:oN(100*r),v:oN(100*o)})}(u,s,c)},n.toHex=function(){function e(e){return 1<(e=parseInt(e,10).toString(16)).length?e:"0"+e}return"#"+e(u)+e(s)+e(c)},n.parse=t,n}},dom:{EventUtils:kr,Sizzle:Ao,DomQuery:vi,TreeWalker:yi,DOMUtils:Xi,ScriptLoader:Qi,RangeUtils:KE,Serializer:Ap,ControlSelection:Wp,BookmarkManager:Kp,Selection:ly,Event:kr.Event},html:{Styles:xr,Entities:ir,Node:ul,Schema:pr,SaxParser:of,DomParser:Np,Writer:gl,Serializer:pl},Env:Nn,AddOnManager:ga,Annotator:nl,Formatter:Cp,UndoManager:mm,EditorCommands:Wz,WindowManager:Bd,NotificationManager:_d,EditorObservable:oE,Shortcuts:cE,Editor:zE,FocusManager:Zf,EditorManager:VE,DOM:Xi.DOM,ScriptLoader:Qi.ScriptLoader,PluginManager:ga.PluginManager,ThemeManager:ga.ThemeManager,IconManager:Ud,Resource:XE,trim:Mn.trim,isArray:Mn.isArray,is:Mn.is,toArray:Mn.toArray,makeMap:Mn.makeMap,each:Mn.each,map:Mn.map,grep:Mn.grep,inArray:Mn.inArray,extend:Mn.extend,create:Mn.create,walk:Mn.walk,createNS:Mn.createNS,resolve:Mn.resolve,explode:Mn.explode,_addCacheSuffix:Mn._addCacheSuffix,isOpera:Nn.opera,isWebKit:Nn.webkit,isIE:Nn.ie,isGecko:Nn.gecko,isMac:Nn.mac},vN=Mn.extend(VE,pN);gN=vN,window.tinymce=gN,window.tinyMCE=gN,function(e){if("object"==typeof module)try{module.exports=e}catch(t){}}(vN)}(window);
\ No newline at end of file
diff --git a/admin/js/vendors/tui.calendar/tui-calendar.css b/admin/js/vendors/tui.calendar/tui-calendar.css
new file mode 100644 (file)
index 0000000..571ab52
--- /dev/null
@@ -0,0 +1,1164 @@
+/*!
+ * TOAST UI Calendar
+ * @version 1.12.14 | Tue Sep 22 2020
+ * @author NHN FE Development Lab <dl_javascript@nhn.com>
+ * @license MIT
+ */
+.tui-full-calendar-layout {
+  height: 100%;
+  position: relative;
+  box-sizing: border-box;
+}
+.tui-full-calendar-layout * {
+  box-sizing: border-box;
+}
+.tui-full-calendar-dragging {
+  cursor: move;
+}
+.tui-full-calendar-resizing {
+  cursor: row-resize;
+}
+.tui-full-calendar-resizing-x {
+  cursor: col-resize;
+}
+.tui-full-calendar-hidden {
+  display: none !important;
+}
+.tui-full-calendar-invisible span {
+  visibility: hidden;
+}
+.tui-full-calendar-clear:after {
+  content: '';
+  display: block;
+  clear: both;
+}
+.tui-full-calendar-scroll-y {
+  overflow-y: scroll;
+}
+.tui-full-calendar-dot {
+  display: inline-block;
+  position: relative;
+  top: -1px;
+  content: '';
+  width: 7px;
+  height: 7px;
+  border-radius: 50%;
+}
+.tui-full-calendar-holiday {
+  color: #f00;
+}
+.tui-full-calendar-today {
+  background: rgba(218,229,249,0.3);
+}
+.handle-x {
+  background-position: center center;
+  background-repeat: no-repeat;
+  background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAECAMAAACEE47CAAAACVBMVEX///////////+OSuX+AAAAA3RSTlMrQJG5H4EIAAAAEUlEQVR4AWNgYoRABhjEFAEAArQAIcHQcPsAAAAASUVORK5CYII=);
+}
+.handle-y {
+  background-position: center center;
+  background-repeat: no-repeat;
+  background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAICAMAAADp7a43AAAACVBMVEX///////////+OSuX+AAAAA3RSTlMrQJG5H4EIAAAAEUlEQVR4AWNgYmRiZABB/CwAAtgAIUTUNkMAAAAASUVORK5CYII=);
+}
+@media only screen and (-moz-min-device-pixel-ratio: 1.5), only screen and (-o-min-device-pixel-ratio: 3/2), only screen and (-webkit-min-device-pixel-ratio: 1.5), only screen and (min-devicepixel-ratio: 1.5), only screen and (min-resolution: 1.5dppx) {
+  .handle-x {
+    background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAICAMAAADHqI+lAAAACVBMVEX///////////+OSuX+AAAAA3RSTlMZK5EY+QKaAAAAGUlEQVR4AWNgYmJAwegCIMDIiIwxBKhhBgAcSABh8gN42gAAAABJRU5ErkJggg==);
+    background-size: 8px 4px;
+  }
+  .handle-y {
+    background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAQCAMAAAAcVM5PAAAACVBMVEX///////////+OSuX+AAAAA3RSTlMEK5EMBzK5AAAAGElEQVR4AWNgYmIAYxgDBBgZQRjOoKcaABzQAGGjsIM/AAAAAElFTkSuQmCC);
+    background-size: 4px 8px;
+  }
+}
+.tui-full-calendar-month-week-item .tui-full-calendar-weekday-grid {
+  overflow-y: hidden;
+}
+.tui-full-calendar-month-week-item .tui-full-calendar-weekday-schedules {
+  overflow-y: visible;
+  height: 0;
+}
+.tui-full-calendar-month-week-item .tui-full-calendar-weekday-schedule {
+  margin: 0 10px;
+}
+.tui-full-calendar-month-week-item .tui-full-calendar-today {
+  background: none;
+}
+.tui-full-calendar-month-week-item .tui-full-calendar-today .tui-full-calendar-weekday-grid-date-decorator {
+  display: inline-block;
+  width: 27px;
+  height: 27px;
+  line-height: 27px;
+  text-align: center;
+  background: #135de6;
+  border-radius: 50%;
+  color: #fff;
+  font-weight: bold;
+  margin-left: 2px;
+}
+.tui-full-calendar-weekday-container,
+.tui-full-calendar-weekday-grid,
+.tui-full-calendar-weekday-grid-line {
+  height: 100%;
+  min-height: inherit;
+}
+.tui-full-calendar-weekday-grid {
+  position: absolute;
+  width: 100%;
+  overflow-y: scroll;
+}
+.tui-full-calendar-weekday-border {
+  border-top: 1px solid #ddd;
+}
+.tui-full-calendar-weekday-container {
+  position: relative;
+}
+.tui-full-calendar-weekday-container>div {
+  height: 100%;
+}
+.tui-full-calendar-weekday-grid-line {
+  position: absolute;
+  padding: 3px;
+}
+.tui-full-calendar-weekday-grid-line .tui-full-calendar-weekday-grid-footer {
+  position: absolute;
+  bottom: 4px;
+}
+.tui-full-calendar-weekday-grid-line .tui-full-calendar-weekday-grid-date {
+  display: inline-block;
+  width: 27px;
+  height: 27px;
+  line-height: 27px;
+  text-align: center;
+}
+.tui-full-calendar-weekday-grid-line .tui-full-calendar-weekday-grid-date-title {
+  line-height: 27px;
+  margin-right: 5px;
+}
+.tui-full-calendar-weekday-grid-line .tui-full-calendar-weekday-grid-more-schedules {
+  float: right;
+  display: inline-block;
+  height: 27px;
+  line-height: 27px;
+  padding: 0 5px;
+  text-align: center;
+  font-size: 11px;
+  font-weight: bold;
+  color: #aaa;
+}
+.tui-full-calendar-weekday-creation {
+  top: 0;
+  left: 0;
+  width: 100%;
+  height: 100%;
+  position: absolute;
+  overflow-y: scroll;
+}
+.tui-full-calendar-weekday-schedules {
+  top: 0;
+  left: 0;
+  width: 100%;
+  height: 100%;
+  position: absolute;
+  font-size: 12px;
+  overflow-y: scroll;
+}
+.tui-full-calendar-weekday-schedules-height-span {
+  width: 1px;
+  margin-left: -1px;
+}
+.tui-full-calendar-weekday-schedule-block {
+  position: absolute;
+}
+.tui-full-calendar-weekday-schedule-block-dragging-dim {
+  opacity: 0.3;
+}
+.tui-full-calendar-weekday-schedule {
+  position: relative;
+  margin: 0 10px 0 1px;
+  cursor: pointer;
+  border-left-style: solid;
+  border-left-width: 3px;
+}
+.tui-full-calendar-weekday-schedule.tui-full-calendar-weekday-schedule-time {
+  border-left-width: 0;
+}
+.tui-full-calendar-weekday-schedule.tui-full-calendar-weekday-schedule-time .tui-full-calendar-weekday-schedule-title {
+  padding-left: 9px;
+}
+.tui-full-calendar-weekday-schedule-bullet {
+  position: absolute;
+  padding: 0;
+  width: 6px;
+  height: 6px;
+  top: 6px;
+  left: 0;
+  border-radius: 50%;
+}
+.tui-full-calendar-weekday-schedule-bullet-focused {
+  left: 10px;
+  background: #fff;
+}
+.tui-full-calendar-weekday-schedule-title {
+  display: block;
+  white-space: nowrap;
+  overflow: hidden;
+  text-overflow: ellipsis;
+  padding-left: 3px;
+  font-weight: bold;
+}
+.tui-full-calendar-weekday-schedule-title-focused {
+  padding-left: 16px;
+}
+.tui-full-calendar-weekday-schedule-cover {
+  position: absolute;
+  top: 0;
+  width: 100%;
+  height: 100%;
+  background-color: rgba(0,0,0,0.2);
+  box-shadow: 0 2px 6px 0 rgba(0,0,0,0.1);
+}
+.tui-full-calendar-weekday-exceed-left .tui-full-calendar-weekday-schedule {
+  margin-left: 0;
+  border-left-width: 0;
+}
+.tui-full-calendar-weekday-exceed-right .tui-full-calendar-weekday-schedule {
+  margin-right: 0;
+}
+.tui-full-calendar-weekday-exceed-right .tui-full-calendar-weekday-resize-handle {
+  display: none;
+}
+.tui-full-calendar-weekday-exceed-in-month {
+  cursor: pointer;
+}
+.tui-full-calendar-weekday-exceed-in-month:hover {
+  background-color: #f0f1f5;
+}
+.tui-full-calendar-weekday-exceed-in-week,
+.tui-full-calendar-weekday-collapse-btn {
+  position: absolute;
+  bottom: 5px;
+  margin-right: 5px;
+  font-size: 12px;
+  line-height: 14px;
+  cursor: pointer;
+  padding: 1px 5px;
+  background-color: #fff;
+  border: 1px solid #ddd;
+  color: #000;
+}
+.tui-full-calendar-weekday-resize-handle {
+  position: absolute;
+  top: 0;
+  right: 0;
+  width: 6px;
+  background-position: 3px center;
+  cursor: col-resize;
+  line-height: 18px;
+}
+.tui-full-calendar-weekday-filled {
+  background-color: #e8e8e8 !important;
+}
+.tui-full-calendar-left {
+  height: 100%;
+  float: left;
+  box-sizing: border-box;
+  display: table;
+}
+.tui-full-calendar-left-content {
+  display: table-cell;
+  vertical-align: middle;
+  text-align: right;
+  font-size: 11px;
+}
+.tui-full-calendar-right {
+  height: 100%;
+  overflow-y: scroll;
+  position: relative;
+}
+.tui-full-calendar-week-container {
+  width: 100%;
+  height: inherit;
+  display: inline-block;
+  font-size: 10px;
+  min-height: 600px;
+}
+.tui-full-calendar-week-container .tui-full-calendar-today {
+  background: none;
+}
+.tui-full-calendar-dayname {
+  position: absolute;
+  margin-left: -1px;
+  height: 100%;
+  overflow: hidden;
+}
+.tui-full-calendar-dayname.tui-full-calendar-today {
+  font-weight: bold;
+}
+.tui-full-calendar-dayname-container {
+  overflow-y: scroll;
+}
+.tui-full-calendar-dayname-leftmargin {
+  position: relative;
+  height: 100%;
+}
+.tui-full-calendar-dayname-date {
+  font-size: 26px;
+}
+.tui-full-calendar-dayname-name {
+  font-weight: bold;
+  font-size: 12px;
+}
+.tui-full-calendar-daygrid-layout {
+  height: 100%;
+}
+.tui-full-calendar-daygrid-layout .tui-full-calendar-right {
+  overflow-y: hidden;
+}
+.tui-full-calendar-daygrid-guide-creation-block {
+  position: absolute;
+  top: 0;
+  bottom: 0;
+  z-index: 1;
+}
+.tui-full-calendar-timegrid-container {
+  height: 100%;
+  position: relative;
+  overflow: hidden;
+  overflow-y: scroll;
+}
+.tui-full-calendar-timegrid-container-split {
+  height: 100%;
+  position: relative;
+  overflow: hidden;
+}
+.tui-full-calendar-timegrid-left {
+  position: absolute;
+}
+.tui-full-calendar-timegrid-hour {
+  position: relative;
+  color: #555;
+  box-sizing: border-box;
+}
+.tui-full-calendar-timegrid-hour:first-child span {
+  display: none;
+}
+.tui-full-calendar-timegrid-hour:last-child {
+  border-bottom: none;
+}
+.tui-full-calendar-timegrid-hour span {
+  position: absolute;
+  top: -11px;
+  left: 0;
+  right: 5px;
+  text-align: right;
+  line-height: 25px;
+}
+.tui-full-calendar-timegrid-right {
+  position: relative;
+}
+.tui-full-calendar-timegrid-gridline {
+  border-bottom: 1px solid #eee;
+  box-sizing: border-box;
+}
+.tui-full-calendar-timegrid-gridline:last-child {
+  border-bottom: none;
+}
+.tui-full-calendar-timegrid-schedules {
+  position: absolute;
+  width: 100%;
+  height: 100%;
+  top: 0;
+  left: 0;
+  cursor: pointer;
+}
+.tui-full-calendar-timegrid-hourmarker {
+  position: absolute;
+  width: 100%;
+  display: table;
+}
+.tui-full-calendar-timegrid-hourmarker-line-left {
+  position: absolute;
+  min-height: 1px;
+  left: 0;
+}
+.tui-full-calendar-timegrid-hourmarker-line-today {
+  position: absolute;
+  min-height: 1px;
+}
+.tui-full-calendar-timegrid-hourmarker-line-right {
+  position: absolute;
+  min-height: 1px;
+  right: 0;
+}
+.tui-full-calendar-timegrid-hourmarker-time {
+  padding-right: 5px;
+  line-height: 12px;
+  text-align: right;
+  display: table-cell;
+  vertical-align: bottom;
+}
+.tui-full-calendar-timegrid-todaymarker {
+  position: absolute;
+  text-indent: -9999px;
+  width: 9px;
+  height: 9px;
+  background-color: #135de6;
+  margin: -4px 0 0 -5px;
+  border-radius: 50%;
+}
+.tui-full-calendar-timegrid-sticky-container {
+  position: absolute;
+  top: 0;
+}
+.tui-full-calendar-timegrid-timezone-label-container {
+  position: absolute;
+}
+.tui-full-calendar-timegrid-timezone-label-cell {
+  display: table;
+}
+.tui-full-calendar-timegrid-timezone-label {
+  display: table-cell;
+  vertical-align: middle;
+  padding-right: 5px;
+  text-align: right;
+}
+.tui-full-calendar-timegrid-timezone-close-btn {
+  cursor: pointer;
+  position: absolute;
+  text-align: center;
+  background-color: #fff;
+}
+.tui-full-calendar-timegrid-timezone-close-btn .tui-full-calendar-icon {
+  width: 5px;
+  height: 10px;
+}
+.tui-full-calendar-time-date {
+  position: absolute;
+  height: 100%;
+  margin-left: -1px;
+  box-sizing: content-box;
+}
+.tui-full-calendar-time-date:last-child {
+  border-right: none;
+  margin: 0;
+}
+.tui-full-calendar-time-date:last-child .tui-full-calendar-time-schedule,
+.tui-full-calendar-time-date:last-child .tui-full-calendar-time-guide-creation {
+  left: 0px;
+}
+.tui-full-calendar-time-date-schedule-block-wrap {
+  position: relative;
+  height: 100%;
+}
+.tui-full-calendar-time-date-schedule-block {
+  position: absolute;
+  right: 0px;
+}
+.tui-full-calendar-time-date-schedule-block-pending {
+  opacity: 0.7;
+}
+.tui-full-calendar-time-date-schedule-block-dragging-dim {
+  opacity: 0.3;
+}
+.tui-full-calendar-time-date-schedule-block-focused {
+  box-shadow: 0 0 8px 0 rgba(0,0,0,0.2);
+}
+.tui-full-calendar-time-date-schedule-block-cover {
+  position: absolute;
+  top: 0;
+  width: 100%;
+  height: 100%;
+  background-color: rgba(0,0,0,0.2);
+  box-shadow: 0 2px 6px 0 rgba(0,0,0,0.1);
+}
+.tui-full-calendar-time-schedule {
+  position: relative;
+  left: 1px;
+  height: 100%;
+  overflow: hidden;
+  font-size: 12px;
+  font-weight: bold;
+}
+.tui-full-calendar-time-schedule-content {
+  overflow: hidden;
+  border-left-width: 3px;
+  border-left-style: solid;
+  padding: 1px 0 0 3px;
+}
+.tui-full-calendar-time-schedule-content-travel-time {
+  font-weight: normal;
+  font-size: 11px;
+}
+.tui-full-calendar-time-resize-handle {
+  position: absolute;
+  right: 0px;
+  bottom: 0px;
+  left: 0px;
+  height: 5px;
+  text-align: center;
+  color: #fff;
+  cursor: row-resize;
+  background-position: center top;
+}
+.tui-full-calendar-time-guide-creation {
+  position: absolute;
+  right: 10px;
+  left: 1px;
+  padding: 3px;
+}
+.tui-full-calendar-time-guide-move .tui-full-calendar-time-schedule,
+.tui-full-calendar-time-guide-resize .tui-full-calendar-time-schedule,
+.tui-full-calendar-time-guide-move .tui-full-calendar-time-resize-handle,
+.tui-full-calendar-time-guide-resize .tui-full-calendar-time-resize-handle {
+  opacity: 0.8;
+  z-index: 97;
+}
+.tui-full-calendar-time-guide-creation-label {
+  cursor: default;
+}
+.tui-full-calendar-time-guide-bottom {
+  position: absolute;
+  bottom: 3px;
+}
+.tui-full-calendar-month {
+  height: 100%;
+  min-height: 600px;
+}
+.tui-full-calendar-month-dayname {
+  width: 100%;
+  position: absolute;
+  font-size: 13px;
+}
+.tui-full-calendar-month-dayname-item {
+  height: 100%;
+  font-weight: bold;
+}
+.tui-full-calendar-month-week-item {
+  position: relative;
+}
+.tui-full-calendar-month-week-item>div {
+  height: 100%;
+}
+.tui-full-calendar-month-more {
+  height: inherit;
+  min-width: 280px;
+  min-height: 150px;
+}
+.tui-full-calendar-month-more-title {
+  position: relative;
+}
+.tui-full-calendar-month-more-title-day {
+  font-size: 23px;
+  color: #333;
+}
+.tui-full-calendar-month-more-title-day-label {
+  font-size: 12px;
+  color: #333;
+}
+.tui-full-calendar-month-more-close {
+  position: absolute;
+  right: 0;
+  outline: 0;
+  background: none;
+  border: 0;
+  font-size: 14px;
+  line-height: 28px;
+  padding: 0 7px;
+  cursor: pointer;
+}
+.tui-full-calendar-month-more-list {
+  overflow-y: auto;
+}
+.tui-full-calendar-month-more-schedule {
+  cursor: pointer;
+  display: block;
+  overflow: hidden;
+  white-space: nowrap;
+  text-overflow: ellipsis;
+  font-size: 12px;
+}
+.tui-full-calendar-month-guide-block {
+  position: absolute;
+}
+.tui-full-calendar-month-weekday-schedule {
+  margin-top: 2px;
+}
+.tui-full-calendar-month-creation-guide {
+  top: 0;
+  bottom: -1px;
+  left: -1px;
+  right: 0;
+  position: absolute;
+  z-index: 20;
+}
+.tui-full-calendar-month-guide-focused {
+  box-shadow: 0 0 8px 0 rgba(0,0,0,0.2);
+}
+.tui-full-calendar-month-guide {
+  position: relative;
+  padding-left: 3px;
+  line-height: 18px;
+  overflow: hidden;
+  white-space: nowrap;
+  text-overflow: ellipsis;
+}
+.tui-full-calendar-month-guide-cover {
+  width: 100%;
+  position: absolute;
+  top: -50%;
+  left: -50%;
+  background-color: rgba(0,0,0,0.2);
+  box-shadow: 0 2px 6px 0 rgba(0,0,0,0.1);
+}
+.tui-full-calendar-month-exceed-left .tui-full-calendar-month-guide {
+  margin-left: 0px;
+}
+.tui-full-calendar-month-exceed-right .tui-full-calendar-month-guide {
+  margin-right: 0px;
+}
+.tui-full-calendar-month-exceed-right .tui-full-calendar-month-guide-handle {
+  display: none;
+}
+.tui-full-calendar-month-guide-handle {
+  position: absolute;
+  top: 0;
+  right: 3px;
+  width: 6px;
+  background-position: 3px center;
+  cursor: col-resize;
+}
+.tui-full-calendar-vlayout-container {
+  position: relative;
+}
+.tui-full-calendar-splitter {
+  clear: left;
+  cursor: row-resize;
+}
+.tui-full-calendar-splitter:hover {
+  border-color: #999;
+}
+.tui-full-calendar-splitter-focused {
+  background-color: #ddd;
+  border: none;
+}
+.tui-full-calendar-splitter-guide {
+  position: absolute;
+  width: 100%;
+  height: 3px;
+  border: none;
+  background-color: #e8e8e8;
+}
+.tui-full-calendar-popup {
+  position: absolute;
+  font-weight: 2.5;
+  box-shadow: 0 2px 6px 0 rgba(0,0,0,0.1);
+  clear: both;
+}
+.tui-full-calendar-popup-container {
+  min-width: 474px;
+  box-shadow: 0 2px 6px 0 rgba(0,0,0,0.1);
+  background-color: #fff;
+  border: solid 1px #d5d5d5;
+  padding: 17px;
+  border-radius: 2px;
+}
+.tui-full-calendar-popup-section {
+  font-size: 0;
+  min-height: 40px;
+}
+.tui-full-calendar-section-calendar {
+  width: 176px;
+}
+.tui-full-calendar-section-calendar.tui-full-calendar-hide {
+  height: 21px;
+  visibility: hidden;
+}
+.tui-full-calendar-section-title {
+  width: calc(100% - 36px);
+  padding-right: 4px;
+}
+.tui-full-calendar-section-title input {
+  width: 365px;
+}
+.tui-full-calendar-button.tui-full-calendar-section-private {
+  height: 32px;
+  padding: 8px;
+  font-size: 0;
+  margin-left: 4px;
+}
+.tui-full-calendar-section-private.tui-full-calendar-public .tui-full-calendar-ic-private {
+  background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAAAXNSR0IArs4c6QAAAKdJREFUKBVjYCATMKLri46Olvn9+3fX////HUByjIyMB1hZWcuWLl36BFktikaQpl+/fl0EKhBCVgRkv2NjY9NH1syErABkE1TTdqBCWRAG8reDxKBycOUoGmHOA2pIA5kOwiA2SDVMDq4TmREaGvofhJHFcLHhfgwLC9sKNNULl0KQODCgtq1atcobxIY7lZAmkGJkNXCNIAlSwIjSCApqIgJnK0wNALoOPwSpOcq0AAAAAElFTkSuQmCC) no-repeat;
+}
+.tui-full-calendar-section-start-date,
+.tui-full-calendar-section-end-date {
+  width: 176px;
+}
+.tui-full-calendar-section-start-date input,
+.tui-full-calendar-section-end-date input {
+  width: 139px;
+}
+.tui-full-calendar-section-start-date:hover .tui-full-calendar-popup-section-item,
+.tui-full-calendar-section-end-date:hover .tui-full-calendar-popup-section-item,
+.tui-full-calendar-section-start-date:focus .tui-full-calendar-popup-section-item,
+.tui-full-calendar-section-end-date:focus .tui-full-calendar-popup-section-item,
+.tui-full-calendar-section-start-date:hover .tui-datepicker,
+.tui-full-calendar-section-end-date:hover .tui-datepicker,
+.tui-full-calendar-section-start-date:focus .tui-datepicker,
+.tui-full-calendar-section-end-date:focus .tui-datepicker {
+  border-color: #bbb;
+}
+.tui-full-calendar-popup-section-item:focus {
+  border-color: #bbb;
+}
+.tui-full-calendar-section-date-dash {
+  font-size: 12px;
+  color: #d5d5d5;
+  height: 32px;
+  padding: 0 4px;
+  vertical-align: middle;
+}
+.tui-full-calendar-popup-section-item.tui-full-calendar-section-allday {
+  border: none;
+  padding: 0 0 0 8px;
+  cursor: pointer;
+}
+.tui-full-calendar-popup-section-item.tui-full-calendar-section-location {
+  display: block;
+}
+.tui-full-calendar-popup-section-item.tui-full-calendar-section-location input {
+  width: 400px;
+}
+.tui-full-calendar-section-allday .tui-full-calendar-icon.tui-full-calendar-ic-checkbox {
+  margin: 0;
+}
+.tui-full-calendar-popup-section-item.tui-full-calendar-section-allday .tui-full-calendar-content {
+  padding-left: 4px;
+}
+.tui-full-calendar-section-state {
+  width: 109px;
+}
+.tui-full-calendar-section-state .tui-full-calendar-content {
+  width: 58px;
+  text-overflow: ellipsis;
+  overflow: hidden;
+}
+.tui-full-calendar-popup-section-item {
+  height: 32px;
+  padding: 0 9px 0 12px;
+  border: 1px solid #d5d5d5;
+  display: inline-block;
+  font-size: 0;
+  border-radius: 2px;
+}
+.tui-full-calendar-popup-section-item:hover {
+  border-color: #bbb;
+}
+.tui-full-calendar-popup-section-item:focus {
+  border-color: #bbb;
+}
+.tui-full-calendar-popup-section-item .tui-full-calendar-icon {
+  position: relative;
+}
+.tui-full-calendar-popup-section-item .tui-full-calendar-content {
+  text-align: left;
+  display: inline-block;
+  font-size: 12px;
+  vertical-align: middle;
+  position: relative;
+  padding-left: 8px;
+}
+.tui-full-calendar-section-calendar .tui-full-calendar-dropdown-button .tui-full-calendar-content {
+  width: 125px;
+  text-overflow: ellipsis;
+  overflow: hidden;
+  top: -1px;
+}
+.tui-full-calendar-popup-section-item input {
+  border: none;
+  height: 30px;
+  outline: none;
+  display: inline-block;
+}
+.tui-full-calendar-popup-section-item input::placeholder {
+  color: #bbb;
+  font-weight: 300;
+}
+.tui-full-calendar-dropdown {
+  position: relative;
+}
+.tui-full-calendar-dropdown:hover .tui-full-calendar-dropdown-button {
+  border: 1px solid #bbb;
+}
+.tui-full-calendar-dropdown-button.tui-full-calendar-popup-section-item {
+  height: 32px;
+  font-size: 0;
+  top: -1px;
+}
+.tui-full-calendar-dropdown-arrow {
+  background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAAAXNSR0IArs4c6QAAAHlJREFUKBVjYBgFOEOAEVkmPDxc89+/f6eAYjzI4kD2FyYmJrOVK1deh4kzwRggGiQBVJCELAZig8SQNYHEmEEEMrh69eo1HR0dfqCYJUickZGxf9WqVf3IakBsFBthklpaWmVA9mEQhrJhUoTp0NBQCRAmrHL4qgAAuu4cWZOZIGsAAAAASUVORK5CYII=) no-repeat;
+}
+.dropdown.open .tui-full-calendar-dropdown-arrow,
+.tui-full-calendar-open .tui-full-calendar-dropdown-arrow {
+  background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAAAXNSR0IArs4c6QAAAIFJREFUKBVjYBj+gBmXF2NiYiTV1dV5rl279gWbGiZsgg0NDSw/f/5cCZRbBWJjU4PVRjExsR6g4nAgln/z5g3v1atXd6JrxtAYHh4e+v///z4khZa6urrXgJqvIYkxMCJzgJo0//37dwooxoMsDmR/YWJiMlu5cuV1NPFRLrYQAADMVCaUtbG7XwAAAABJRU5ErkJggg==) no-repeat;
+}
+.tui-full-calendar-dropdown-menu {
+  position: absolute;
+  top: 31px;
+  padding: 4px 0;
+  background-color: #fff;
+  border: 1px solid #d5d5d5;
+  border-top: none;
+  border-radius: 0 0 2px 2px;
+  width: 100%;
+  display: none;
+}
+.tui-full-calendar-dropdown:hover .tui-full-calendar-dropdown-menu {
+  border: 1px solid #bbb;
+  border-top: none;
+}
+.tui-full-calendar-open .tui-full-calendar-dropdown-menu {
+  display: block;
+}
+.tui-full-calendar-dropdown-menu-item {
+  height: 30px;
+  border: none;
+  cursor: pointer;
+}
+.tui-full-calendar-section-calendar .tui-full-calendar-dropdown-menu-item {
+  width: 100%;
+}
+.tui-full-calendar-section-state .tui-full-calendar-dropdown-menu-item {
+  width: 100%;
+}
+.tui-full-calendar-dropdown-menu-item:hover {
+  background-color: rgba(81,92,230,0.05);
+}
+.tui-full-calendar-dropdown-menu-item .tui-full-calendar-content {
+  line-height: 30px;
+}
+.tui-full-calendar-button.tui-full-calendar-popup-close {
+  position: absolute;
+  top: 10px;
+  right: 10px;
+  background-color: #fff;
+  padding: 2px;
+  border: none;
+}
+.tui-full-calendar-section-button-save {
+  height: 36px;
+}
+.tui-full-calendar-popup-save {
+  float: right;
+}
+.tui-full-calendar-popup-arrow-border,
+.tui-full-calendar-popup-arrow-fill {
+  position: absolute;
+}
+.tui-full-calendar-arrow-top .tui-full-calendar-popup-arrow-border {
+  border-top: none;
+  border-right: 8px solid transparent;
+  border-bottom: 8px solid #d5d5d5;
+  border-left: 8px solid transparent;
+  left: calc(50% - 8px);
+  top: -7px;
+}
+.tui-full-calendar-arrow-right .tui-full-calendar-popup-arrow-border {
+  border-top: 8px solid transparent;
+  border-right: none;
+  border-bottom: 8px solid transparent;
+  border-left: 8px solid #d5d5d5;
+  top: calc(50% - 8px);
+  right: -7px;
+}
+.tui-full-calendar-arrow-bottom .tui-full-calendar-popup-arrow-border {
+  border-top: 8px solid #d5d5d5;
+  border-right: 8px solid transparent;
+  border-bottom: none;
+  border-left: 8px solid transparent;
+  left: calc(50% - 8px);
+  bottom: -7px;
+}
+.tui-full-calendar-arrow-left .tui-full-calendar-popup-arrow-border {
+  border-top: 8px solid transparent;
+  border-right: 8px solid #d5d5d5;
+  border-bottom: 8px solid transparent;
+  border-left: none;
+  top: calc(50% - 8px);
+  left: -7px;
+}
+.tui-full-calendar-arrow-top .tui-full-calendar-popup-arrow-fill {
+  border-top: none;
+  border-right: 7px solid transparent;
+  border-bottom: 7px solid #fff;
+  border-left: 7px solid transparent;
+  left: -7px;
+  top: 1px;
+}
+.tui-full-calendar-arrow-right .tui-full-calendar-popup-arrow-fill {
+  border-top: 7px solid transparent;
+  border-right: none;
+  border-bottom: 7px solid transparent;
+  border-left: 7px solid #fff;
+  top: -7px;
+  right: 1px;
+}
+.tui-full-calendar-arrow-bottom .tui-full-calendar-popup-arrow-fill {
+  border-top: 7px solid #fff;
+  border-right: 7px solid transparent;
+  border-bottom: none;
+  border-left: 7px solid transparent;
+  left: -7px;
+  bottom: 1px;
+}
+.tui-full-calendar-arrow-left .tui-full-calendar-popup-arrow-fill {
+  border-top: 7px solid transparent;
+  border-right: 7px solid #fff;
+  border-bottom: 7px solid transparent;
+  border-left: none;
+  top: -7px;
+  left: 1px;
+}
+.tui-full-calendar-button {
+  background: #fff;
+  border: 1px solid #d5d5d5;
+  border-radius: 2px;
+  text-align: center;
+  outline: none;
+  font-size: 12px;
+  cursor: pointer;
+  color: #333;
+}
+.tui-full-calendar-button:hover {
+  border-color: #bbb;
+  color: #333;
+}
+.tui-full-calendar-button:active {
+  background: #f9f9f9;
+  color: #333;
+}
+.tui-full-calendar-button .round {
+  border-radius: 25px;
+}
+.tui-full-calendar-confirm {
+  width: 96px;
+  height: 36px;
+  border-radius: 40px;
+  background-color: #ff6618;
+  font-size: 12px;
+  font-weight: bold;
+  color: #fff;
+  border: none;
+}
+.tui-full-calendar-confirm:hover {
+  background-color: #e55b15;
+  color: #fff;
+}
+.tui-full-calendar-confirm:active {
+  background-color: #d95614;
+  color: #fff;
+}
+.tui-full-calendar-icon.tui-full-calendar-right {
+  float: right;
+  top: 1px;
+}
+.tui-full-calendar-icon .tui-full-calendar-none {
+  display: none;
+}
+.tui-full-calendar-icon.tui-full-calendar-calendar-dot {
+  border-radius: 8px;
+  width: 12px;
+  height: 12px;
+  margin: 1px;
+}
+input[type='checkbox'].tui-full-calendar-checkbox-square {
+  display: none;
+}
+input[type='checkbox'].tui-full-calendar-checkbox-square + span {
+  display: inline-block;
+  cursor: pointer;
+  line-height: 14px;
+  margin-right: 8px;
+  width: 14px;
+  height: 14px;
+  background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAAAXNSR0IArs4c6QAAADpJREFUKBVjPHfu3O5///65MJAAmJiY9jCcOXPmP6kApIeJBItQlI5qRAkOVM5o4KCGBwqPkcxEvhsAbzRE+Jhb9IwAAAAASUVORK5CYII=) no-repeat;
+  vertical-align: middle;
+}
+input[type='checkbox'].tui-full-calendar-checkbox-square:checked + span {
+  background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAAAXNSR0IArs4c6QAAAMBJREFUKBWVkjEOwjAMRe2WgZW7IIHEDdhghhuwcQ42rlJugAQS54Cxa5cq1QM5TUpByZfS2j9+dlJVt/tX5ZxbS4ZU9VLkQvSHKTIGRaVJYFmKrBbTCJxE2UgCdDzMZDkHrOV6b95V0US6UmgKodujEZbJg0B0ZgEModO5lrY1TMQf1TpyJGBEjD+E2NPN7ukIUDiF/BfEXgRiGEw8NgkffYGYwCi808fpn/6OvfUfsDr/Vc1IfRf8sKnFVqeiVQfDu0tf/nWH9gAAAABJRU5ErkJggg==) no-repeat;
+}
+input[type='checkbox'].tui-full-calendar-checkbox-round {
+  display: none;
+}
+input[type='checkbox'].tui-full-calendar-checkbox-round + span {
+  display: inline-block;
+  cursor: pointer;
+  width: 14px;
+  height: 14px;
+  line-height: 14px;
+  vertical-align: middle;
+  margin-right: 8px;
+  border-radius: 8px;
+  border: solid 2px;
+  background: transparent;
+}
+.tui-full-calendar-popup-top-line {
+  position: absolute;
+  border-radius: 2px 2px 0 0;
+  width: 100%;
+  height: 4px;
+  border: none;
+  top: 0;
+}
+.tui-full-calendar-popup-detail .tui-full-calendar-popup-container {
+  width: 301px;
+  min-width: 301px;
+  padding-bottom: 0;
+}
+.tui-full-calendar-popup-detail .tui-full-calendar-icon {
+  width: 12px;
+  height: 12px;
+  background-size: 12px;
+  position: relative;
+  margin-right: 8px;
+}
+.tui-full-calendar-popup-detail .tui-full-calendar-icon.tui-full-calendar-ic-location-b {
+  top: -2px;
+}
+.tui-full-calendar-popup-detail .tui-full-calendar-icon.tui-full-calendar-ic-user-b {
+  top: -2px;
+}
+.tui-full-calendar-popup-detail .tui-full-calendar-icon.tui-full-calendar-ic-state-b {
+  top: -1px;
+}
+.tui-full-calendar-popup-detail .tui-full-calendar-icon.tui-full-calendar-calendar-dot {
+  width: 10px;
+  height: 10px;
+  margin-right: 8px;
+  top: -1px;
+}
+.tui-full-calendar-popup-detail .tui-full-calendar-content {
+  line-height: 24px;
+  height: 24px;
+  font-size: 12px;
+  line-height: 2;
+}
+.tui-full-calendar-popup-detail .tui-full-calendar-section-header {
+  margin-bottom: 6px;
+}
+.tui-full-calendar-popup-detail .tui-full-calendar-popup-detail-item-separate {
+  margin-top: 4px;
+}
+.tui-full-calendar-popup-detail .tui-full-calendar-popup-detail-item-indent {
+  text-indent: -20px;
+  padding-left: 20px;
+}
+.tui-full-calendar-popup-detail .tui-full-calendar-schedule-title {
+  font-size: 15px;
+  font-weight: bold;
+  line-height: 1.6;
+  word-break: break-all;
+}
+.tui-full-calendar-popup-detail .tui-full-calendar-schedule-private {
+  display: none;
+  width: 16px;
+  height: 16px;
+  background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAAAXNSR0IArs4c6QAAAKpJREFUKBVjYCATMKLri46Olvn9+3fX////HUByjIyMB1hZWcuWLl36BFktikaQpl+/fl0EKhBCVgRkv2NjY9NH1syErABkE1TTdqBCWRAG8reDxKBycOUoGmHOA2pIA5kOwiA2SDVMDqYTRSNQUBIkgewkJDZYDqYR7sewsLCtQFO9YBLYaGBAbVu1apU3SA5uIyFNIMXIauAaQRKkgBGlERTURATOVpgaABRQQOK46wEAAAAAAElFTkSuQmCC) no-repeat 16px;
+}
+.tui-full-calendar-popup-detail .tui-full-calendar-schedule-private .tui-full-calendar-ic-private {
+  display: block;
+}
+.tui-full-calendar-popup-detail .tui-full-calendar-section-detail {
+  margin-bottom: 16px;
+}
+.tui-full-calendar-popup-detail .tui-full-calendar-section-button {
+  border-top: 1px solid #e5e5e5;
+  font-size: 0;
+}
+.tui-full-calendar-section-button .tui-full-calendar-icon {
+  margin-right: 4px;
+  top: -3px;
+}
+.tui-full-calendar-section-button .tui-full-calendar-content {
+  position: relative;
+  top: 2px;
+}
+.tui-full-calendar-popup-edit,
+.tui-full-calendar-popup-delete {
+  display: inline-block;
+  padding: 7px 9px 11px 9px;
+  width: calc(50% - 1px);
+  outline: none;
+  background: none;
+  border: none;
+  cursor: pointer;
+}
+.tui-full-calendar-popup-vertical-line {
+  background: #e5e5e5;
+  width: 1px;
+  height: 14px;
+  vertical-align: middle;
+  display: inline-block;
+  margin-top: -7px;
+}
+.tui-datepicker {
+  left: -12px;
+  z-index: 1;
+  border-color: #d5d5d5;
+}
+.tui-full-calendar-icon {
+  width: 14px;
+  height: 14px;
+  display: inline-block;
+  vertical-align: middle;
+}
+.tui-full-calendar-icon.tui-full-calendar-ic-title {
+  background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAAAXNSR0IArs4c6QAAAO5JREFUKBVjYCATMOLSFxkZqfHnz5+1QHktNDVbV69e7cOCJgjmQjXtB3IksMh7g8SY0CXQNTEyMlYD1fBCabhyFI3omkCq/v//PwnotC8gGq4LyIBrxKYJpBBoU15oaCgPiEbWCPYjUEIFGBBY/QS0qRWooRVIg/UBDXgMYoBtBHJSgWxsAQFWjET8BBqQBuLDNM4Can6GpAAb8ydQMADo3x0gSbDGlStX3gVqdMSjGUUTSCNKAggPD1cDOmU/EEuBJKEAQxNIHEUjSABNM1ZNIHXMIAIZXL169a2+vv5moK18QKeXAv20B1meYjYAr7xrljpOzc0AAAAASUVORK5CYII=) no-repeat;
+}
+.tui-full-calendar-icon.tui-full-calendar-ic-location {
+  background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAAAXNSR0IArs4c6QAAAR1JREFUKBWdUTtPg1AUBiT8CydHJtv/0MTJRWAgcTK1bq0/pO3k4E4IYLo2Me46tS4wumjSpV07kAb6HXLPzaGPRZLL+c73uE/D+OdnHuaCIOhVVTUEf620pWVZ0yRJ3qW3FfR9f1zX9UgaGJumOUnT9Fn3DDzPuwPOuD9TvSzL3kizhOFJ4LnjOJc0wM0FP2Asgx0mEehHUfRHgzDzqF3GOogzbJg8V6XHFqYv4Cvqy7J8DcOwWYmw8Hwy1kHMRjcaKuEGgV82caWbZay3indagJyxcKLOlKeRdJA627YfUVaN0v6tlKbZVjCO4zW2cw91px3AxJEmOONCNoTzPP9xXZfOd6u0Bzz60RGOgmQuiuIb4S3gB0IvaoJW2QMDs1bBoH1CAQAAAABJRU5ErkJggg==) no-repeat;
+}
+.tui-full-calendar-icon.tui-full-calendar-ic-date {
+  background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAAAXNSR0IArs4c6QAAAGpJREFUKBVjYKAGCA0N/Q/C6GZhE2cEKQoLC9v6//9/L3QN2PiMjIzbVq1a5c0EkiRWE7JasEZsJhMSI1sjC7LJq1evBvsZWQyZjRxwZNs4hDSiBA6y55EDBRsb7EdQasAmiUNsKw5x4oQBkUAeDPJ53KsAAAAASUVORK5CYII=) no-repeat;
+}
+.tui-full-calendar-icon.tui-full-calendar-ic-state {
+  background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAAAXNSR0IArs4c6QAAAIxJREFUKBVjYCATMKLrCw8P9/z3798soLgMVO4JExNT2sqVK7cjq2VC5oDYME2MjIyNIAwUkoGKoShlQeFBOGCbVq1a1QDihoaG1gMpmO0gITAAOzUsLGzr////vWCC+GigK7YBDfUGO5VYTSADYWox/IjPNmS5UY3IoYHGBgcOKG7QxPFxt+KTJCgHAGcZJbGLRuJ2AAAAAElFTkSuQmCC) no-repeat;
+}
+.tui-full-calendar-icon.tui-full-calendar-ic-private {
+  background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAAAXNSR0IArs4c6QAAAKpJREFUKBVjYCATMKLri46Olvn9+3fX////HUByjIyMB1hZWcuWLl36BFktikaQpl+/fl0EKhBCVgRkv2NjY9NH1syErABkE1TTdqBCWRAG8reDxKBycOUoGmHOA2pIA5kOwiA2SDVMDqYTRSNQUBIkgewkJDZYDqYR7sewsLCtQFO9YBLYaGBAbVu1apU3SA5uIyFNIMXIauAaQRKkgBGlERTURATOVpgaABRQQOK46wEAAAAAAElFTkSuQmCC) no-repeat;
+}
+.tui-full-calendar-icon.tui-full-calendar-ic-close {
+  background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAAAXNSR0IArs4c6QAAAJRJREFUKBXFkNERhCAMREUbuEKohzq0Eq2DDq6Da4B60KezDORkxj+ZwchmX0IYhtdWCGFl9y5g82NtzDnPdzAaudo76ZBS+nrvPxiInMkJcs5tMcZFfqcfxdqIRiELof+BiIJPg+mExmpmvKRn3zKj7OrG9Y79szPL14A1xEP0Hgy4gBZS5R7czHj3ehSgOzkVeyfuGrBw/WLm0hsAAAAASUVORK5CYII=) no-repeat;
+}
+.tui-full-calendar-ic-location-b {
+  background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAYAAABWdVznAAAAAXNSR0IArs4c6QAAAOZJREFUKBWVUT0KwjAUbkzGTuJWPYNDpV0cXD2ETuIRBK+gs4ubp3BwcXBp6eINBKWDgydoid9X8oKCggYeee/7S9IGwZ9LverTNO3Wdb2y1o6IK6WOWutFlmU30XmDE58hbgvpTA+Y+mJqCemS20jdG2N6LPYMICc6b5BrIG3ONBZ7CoVj7w0cfllGRDj+gKQpjt/iPU0ye/LkROcNANaoCUzjqqquIsBuHddAWoiyLO9RFHUwJ4JxR/qmKIqdYG9vCMNwCeIiJHuHecj/B0GSJBng7ifO+ErDPM8L4b7ucRzPWJ8ET1E7YC7tmi9qAAAAAElFTkSuQmCC);
+}
+.tui-full-calendar-ic-state-b {
+  background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAYAAABWdVznAAAAAXNSR0IArs4c6QAAAHlJREFUKBVjYCARMCKrNzEx8QTyZ/3//18GJM7IyPgESKWdOXNmO4gPAkwQCk6CFQMVNoIwVOMsuCw6w9jY+D8Iw8TR+SBxsJOATtkKNM0LphAbDbRxG9Bp3mAnEVIMMgCmBt0P2AxHERusGkAhgOJQ7Jyt2IUJiAIAwwIn24FgmhkAAAAASUVORK5CYII=);
+}
+.tui-full-calendar-icon.tui-full-calendar-ic-user-b {
+  background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAYAAABWdVznAAAAAXNSR0IArs4c6QAAAJpJREFUKBVjYKA1YES3wMTExBMoNgsqnnbmzJntyGqYkDlQ9qz////LgDCQD9MIV4ZNA1wSGwObhjRGRsYnIAzUkIZNE0licE+bm5tr/fnzJx1osjPQBFmoKY+BftnLwsIy8+TJk9dAYmANxsbGoUD2YiBmBwliAT+BYrFnz55dDfNDO1AAl2KQfpAcSA0DTIMyiEMAEKMG0wgAolIjcM7Tjm8AAAAASUVORK5CYII=);
+}
+.tui-full-calendar-icon.tui-full-calendar-ic-edit {
+  background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAYAAABWdVznAAAAAXNSR0IArs4c6QAAAMdJREFUKBVjYCARMOJTb2xsLMfIyBjLysq64Pjx409BapnwaQDKzf7//3/L79+/D1tbW0uB1LJg02BmZqYIVPgdKBf/79+//UC2xs+fP8OB/H4MG0CK//79ewCkEGQYExOTI5DawMnJuQTER/EDTDFQXA4kCQQ3QBpOnz79AsJF8gMWxTA1KDTYBhyKMUwH6WSysrKSB7kZyIY5AySOVTFIggno+5VAmijFYA1AwhzEgAKcJsMUwIMVGKPH2NnZ7ZFDBKYImQYAuO5YIMgk39gAAAAASUVORK5CYII=);
+}
+.tui-full-calendar-icon.tui-full-calendar-ic-delete {
+  background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAYAAABWdVznAAAAAXNSR0IArs4c6QAAAFhJREFUKBVjYCARMKKrNzEx2fr//38vkDgjI+O2M2fOeCOrAWtAVoQsicyGaWZCFsTHBtr6H588Tjm4H4yNjfGacPbsWbBaop0Es3JYaQBFDMxjWOitMDEA3EEZfFEISwUAAAAASUVORK5CYII=);
+}
+.tui-full-calendar-icon.tui-full-calendar-ic-arrow-solid-top {
+  background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAAAXNSR0IArs4c6QAAAIFJREFUKBVjYBj+gBmXF2NiYiTV1dV5rl279gWbGiZsgg0NDSw/f/5cCZRbBWJjU4PVRjExsR6g4nAgln/z5g3v1atXd6JrxtAYHh4e+v///z4khZa6urrXgJqvIYkxMCJzgJo0//37dwooxoMsDmR/YWJiMlu5cuV1NPFRLrYQAADMVCaUtbG7XwAAAABJRU5ErkJggg==) no-repeat;
+}
+.tui-full-calendar-icon.tui-full-calendar-ic-milestone {
+  background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAYAAABWdVznAAAAAXNSR0IArs4c6QAAAGFJREFUKBVjYCARMILU/3dw+I+hj5FxG+P+/d7o4rg1IKtE0syELI6T/f+/F0yOOA0w1UCa9hpYkGxjYDxwABwIILH/jo5bGWBuZ2TcClOHogEmCKKxBSlInPZ+ANlCEgAA37EU4AHbBQUAAAAASUVORK5CYII=) no-repeat;
+}
+.tui-full-calendar-icon.tui-full-calendar-ic-arrow-left {
+  background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAHCAYAAAAvZezQAAAAAXNSR0IArs4c6QAAAFZJREFUCB1jZICCyspK83///hUxgvhVVVV6f//+3c3ExJTMVFNTowqU2cHMzJzf3t6+hen379/zgIp2t7W1rQCpZmJlZU0C0q5AbREgAQwzwAIgGZgtADMCJqH/QyvhAAAAAElFTkSuQmCC) no-repeat;
+}
+.tui-full-calendar-icon.tui-full-calendar-ic-arrow-right {
+  background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAHCAYAAAAvZezQAAAAAXNSR0IArs4c6QAAAFxJREFUCB1jKC8vX1lZWWnOAAVMQLD4379/m6qqqvRAYowgAsiJAAr2sbCw2IMFQIIVFRUL////r8SCpMKVlZXVnhFooA9Q+VxmZmbXtra2S0xATizQYD8QB6QaAJMLJ9BqE9yTAAAAAElFTkSuQmCC) no-repeat;
+}
+.tui-full-calendar-ic-repeat-b {
+  background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAYAAABWdVznAAAAAXNSR0IArs4c6QAAAQpJREFUKBVjYCARMCKrNzU1tf/3718lUMwQiP8yMjKeYWJi6j516tRhExOThjNnzjTANQAFqv///98CVHQPSO8A0ixATa5AtjyQPgDETmfPngULMpiZmbn//fu3BSg4B6ggCyjxG8hm8PT0ZH/9+vUJoJgTiA8CTCACqDgXaOJ9Xl7eTJhikDhQcSVQsQGITT8A9rSxsfF/mJVApzWCQgPGd3BwYPny5cstoNOuAZ3rAwoJOAAqviAqKtoOEwAaxPr58+dpQL4iEGeAxJFt2AfkOwA1PQTSu4Em/gGyPYC0EpCuAdraCtIADiWgQCPQOmdmZmYHoNgVoCJfIB0CpG8DI84BphgoRjoAAAzgdELI91E5AAAAAElFTkSuQmCC);
+}
+/*# sourceMappingURL=src/css/main.css.map */
+
+/*# sourceMappingURL=tui-calendar.css.map*/
\ No newline at end of file
diff --git a/admin/js/vendors/tui.calendar/tui-calendar.css.map b/admin/js/vendors/tui.calendar/tui-calendar.css.map
new file mode 100644 (file)
index 0000000..2e23040
--- /dev/null
@@ -0,0 +1 @@
+{"version":3,"sources":["webpack://tui.Calendar/src/css/common.styl","webpack://tui.Calendar/main.styl","webpack://tui.Calendar/src/css/variables.styl","webpack://tui.Calendar/src/css/weekday.styl","webpack://tui.Calendar/src/css/week/layout.styl","webpack://tui.Calendar/src/css/week/dayname.styl","webpack://tui.Calendar/src/css/week/daygrid.styl","webpack://tui.Calendar/src/css/week/time.styl","webpack://tui.Calendar/src/css/month.styl","webpack://tui.Calendar/src/css/vlayout.styl","webpack://tui.Calendar/src/css/popup.styl","webpack://tui.Calendar/src/css/icons.styl"],"names":[],"mappings":"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","file":"tui-calendar.css","sourcesContent":["+prefix-classes(css-prefix)\n    .layout\n        height: 100%\n        position: relative\n        box-sizing: border-box\n\n        *\n            box-sizing: border-box\n\n    // Related with user interaction\n    .dragging\n        cursor: move\n\n    .resizing\n        cursor: row-resize\n\n    .resizing-x\n        cursor: col-resize\n\n    .hidden\n        display: none !important\n\n    .invisible span\n        visibility: hidden\n\n    .clear\n        clearfix()\n\n    .scroll-y\n        overflow-y: scroll\n\n    .dot\n        display: inline-block\n        position: relative\n        top: -1px\n        content: ''\n        width: 7px\n        height: 7px\n        border-radius: 50%\n\n.{css-prefix}holiday\n    color: red\n\n.{css-prefix}today\n    background: rgba(218, 229, 249, .3)\n\n// Drag handle\n.handle-x\n    background-position: center center\n    background-repeat: no-repeat\n    background-image: url(./image/handle-x.png)\n\n.handle-y\n    background-position: center center\n    background-repeat: no-repeat\n    background-image: url(./image/handle-y.png)\n\n// For Retina display\n@media only screen and (-moz-min-device-pixel-ratio: 1.5), only screen and (-o-min-device-pixel-ratio: 3/2), only screen and (-webkit-min-device-pixel-ratio: 1.5), only screen and (min-devicepixel-ratio: 1.5), only screen and (min-resolution: 1.5dppx)\n    .handle-x\n        background-image: url(./image/handle-x@2x.png)\n        background-size: 8px 4px\n\n    .handle-y\n        background-image: url(./image/handle-y@2x.png)\n        background-size: 4px 8px\n",".tui-full-calendar-layout {\n  height: 100%;\n  position: relative;\n  box-sizing: border-box;\n}\n.tui-full-calendar-layout * {\n  box-sizing: border-box;\n}\n.tui-full-calendar-dragging {\n  cursor: move;\n}\n.tui-full-calendar-resizing {\n  cursor: row-resize;\n}\n.tui-full-calendar-resizing-x {\n  cursor: col-resize;\n}\n.tui-full-calendar-hidden {\n  display: none !important;\n}\n.tui-full-calendar-invisible span {\n  visibility: hidden;\n}\n.tui-full-calendar-clear:after {\n  content: '';\n  display: block;\n  clear: both;\n}\n.tui-full-calendar-scroll-y {\n  overflow-y: scroll;\n}\n.tui-full-calendar-dot {\n  display: inline-block;\n  position: relative;\n  top: -1px;\n  content: '';\n  width: 7px;\n  height: 7px;\n  border-radius: 50%;\n}\n.tui-full-calendar-holiday {\n  color: #f00;\n}\n.tui-full-calendar-today {\n  background: rgba(218,229,249,0.3);\n}\n.handle-x {\n  background-position: center center;\n  background-repeat: no-repeat;\n  background-image: url(\"./image/handle-x.png\");\n}\n.handle-y {\n  background-position: center center;\n  background-repeat: no-repeat;\n  background-image: url(\"./image/handle-y.png\");\n}\n@media only screen and (-moz-min-device-pixel-ratio: 1.5), only screen and (-o-min-device-pixel-ratio: 3/2), only screen and (-webkit-min-device-pixel-ratio: 1.5), only screen and (min-devicepixel-ratio: 1.5), only screen and (min-resolution: 1.5dppx) {\n  .handle-x {\n    background-image: url(\"./image/handle-x@2x.png\");\n    background-size: 8px 4px;\n  }\n  .handle-y {\n    background-image: url(\"./image/handle-y@2x.png\");\n    background-size: 4px 8px;\n  }\n}\n.tui-full-calendar-month-week-item .tui-full-calendar-weekday-grid {\n  overflow-y: hidden;\n}\n.tui-full-calendar-month-week-item .tui-full-calendar-weekday-schedules {\n  overflow-y: visible;\n  height: 0;\n}\n.tui-full-calendar-month-week-item .tui-full-calendar-weekday-schedule {\n  margin: 0 10px;\n}\n.tui-full-calendar-month-week-item .tui-full-calendar-today {\n  background: none;\n}\n.tui-full-calendar-month-week-item .tui-full-calendar-today .tui-full-calendar-weekday-grid-date-decorator {\n  display: inline-block;\n  width: 27px;\n  height: 27px;\n  line-height: 27px;\n  text-align: center;\n  background: #135de6;\n  border-radius: 50%;\n  color: #fff;\n  font-weight: bold;\n  margin-left: 2px;\n}\n.tui-full-calendar-weekday-container,\n.tui-full-calendar-weekday-grid,\n.tui-full-calendar-weekday-grid-line {\n  height: 100%;\n  min-height: inherit;\n}\n.tui-full-calendar-weekday-grid {\n  position: absolute;\n  width: 100%;\n  overflow-y: scroll;\n}\n.tui-full-calendar-weekday-border {\n  border-top: 1px solid #ddd;\n}\n.tui-full-calendar-weekday-container {\n  position: relative;\n}\n.tui-full-calendar-weekday-container>div {\n  height: 100%;\n}\n.tui-full-calendar-weekday-grid-line {\n  position: absolute;\n  padding: 3px;\n}\n.tui-full-calendar-weekday-grid-line .tui-full-calendar-weekday-grid-footer {\n  position: absolute;\n  bottom: 4px;\n}\n.tui-full-calendar-weekday-grid-line .tui-full-calendar-weekday-grid-date {\n  display: inline-block;\n  width: 27px;\n  height: 27px;\n  line-height: 27px;\n  text-align: center;\n}\n.tui-full-calendar-weekday-grid-line .tui-full-calendar-weekday-grid-date-title {\n  line-height: 27px;\n  margin-right: 5px;\n}\n.tui-full-calendar-weekday-grid-line .tui-full-calendar-weekday-grid-more-schedules {\n  float: right;\n  display: inline-block;\n  height: 27px;\n  line-height: 27px;\n  padding: 0 5px;\n  text-align: center;\n  font-size: 11px;\n  font-weight: bold;\n  color: #aaa;\n}\n.tui-full-calendar-weekday-creation {\n  top: 0;\n  left: 0;\n  width: 100%;\n  height: 100%;\n  position: absolute;\n  overflow-y: scroll;\n}\n.tui-full-calendar-weekday-schedules {\n  top: 0;\n  left: 0;\n  width: 100%;\n  height: 100%;\n  position: absolute;\n  font-size: 12px;\n  overflow-y: scroll;\n}\n.tui-full-calendar-weekday-schedules-height-span {\n  width: 1px;\n  margin-left: -1px;\n}\n.tui-full-calendar-weekday-schedule-block {\n  position: absolute;\n}\n.tui-full-calendar-weekday-schedule-block-dragging-dim {\n  opacity: 0.3;\n}\n.tui-full-calendar-weekday-schedule {\n  position: relative;\n  margin: 0 10px 0 1px;\n  cursor: pointer;\n  border-left-style: solid;\n  border-left-width: 3px;\n}\n.tui-full-calendar-weekday-schedule.tui-full-calendar-weekday-schedule-time {\n  border-left-width: 0;\n}\n.tui-full-calendar-weekday-schedule.tui-full-calendar-weekday-schedule-time .tui-full-calendar-weekday-schedule-title {\n  padding-left: 9px;\n}\n.tui-full-calendar-weekday-schedule-bullet {\n  position: absolute;\n  padding: 0;\n  width: 6px;\n  height: 6px;\n  top: 6px;\n  left: 0;\n  border-radius: 50%;\n}\n.tui-full-calendar-weekday-schedule-bullet-focused {\n  left: 10px;\n  background: #fff;\n}\n.tui-full-calendar-weekday-schedule-title {\n  display: block;\n  white-space: nowrap;\n  overflow: hidden;\n  text-overflow: ellipsis;\n  padding-left: 3px;\n  font-weight: bold;\n}\n.tui-full-calendar-weekday-schedule-title-focused {\n  padding-left: 16px;\n}\n.tui-full-calendar-weekday-schedule-cover {\n  position: absolute;\n  top: 0;\n  width: 100%;\n  height: 100%;\n  background-color: rgba(0,0,0,0.2);\n  box-shadow: 0 2px 6px 0 rgba(0,0,0,0.1);\n}\n.tui-full-calendar-weekday-exceed-left .tui-full-calendar-weekday-schedule {\n  margin-left: 0;\n  border-left-width: 0;\n}\n.tui-full-calendar-weekday-exceed-right .tui-full-calendar-weekday-schedule {\n  margin-right: 0;\n}\n.tui-full-calendar-weekday-exceed-right .tui-full-calendar-weekday-resize-handle {\n  display: none;\n}\n.tui-full-calendar-weekday-exceed-in-month {\n  cursor: pointer;\n}\n.tui-full-calendar-weekday-exceed-in-month:hover {\n  background-color: #f0f1f5;\n}\n.tui-full-calendar-weekday-exceed-in-week,\n.tui-full-calendar-weekday-collapse-btn {\n  position: absolute;\n  bottom: 5px;\n  margin-right: 5px;\n  font-size: 12px;\n  line-height: 14px;\n  cursor: pointer;\n  padding: 1px 5px;\n  background-color: #fff;\n  border: 1px solid #ddd;\n  color: #000;\n}\n.tui-full-calendar-weekday-resize-handle {\n  position: absolute;\n  top: 0;\n  right: 0;\n  width: 6px;\n  background-position: 3px center;\n  cursor: col-resize;\n  line-height: 18px;\n}\n.tui-full-calendar-weekday-filled {\n  background-color: #e8e8e8 !important;\n}\n.tui-full-calendar-left {\n  height: 100%;\n  float: left;\n  box-sizing: border-box;\n  display: table;\n}\n.tui-full-calendar-left-content {\n  display: table-cell;\n  vertical-align: middle;\n  text-align: right;\n  font-size: 11px;\n}\n.tui-full-calendar-right {\n  height: 100%;\n  overflow-y: scroll;\n  position: relative;\n}\n.tui-full-calendar-week-container {\n  width: 100%;\n  height: inherit;\n  display: inline-block;\n  font-size: 10px;\n  min-height: 600px;\n}\n.tui-full-calendar-week-container .tui-full-calendar-today {\n  background: none;\n}\n.tui-full-calendar-dayname {\n  position: absolute;\n  margin-left: -1px;\n  height: 100%;\n  overflow: hidden;\n}\n.tui-full-calendar-dayname.tui-full-calendar-today {\n  font-weight: bold;\n}\n.tui-full-calendar-dayname-container {\n  overflow-y: scroll;\n}\n.tui-full-calendar-dayname-leftmargin {\n  position: relative;\n  height: 100%;\n}\n.tui-full-calendar-dayname-date {\n  font-size: 26px;\n}\n.tui-full-calendar-dayname-name {\n  font-weight: bold;\n  font-size: 12px;\n}\n.tui-full-calendar-daygrid-layout {\n  height: 100%;\n}\n.tui-full-calendar-daygrid-layout .tui-full-calendar-right {\n  overflow-y: hidden;\n}\n.tui-full-calendar-daygrid-guide-creation-block {\n  position: absolute;\n  top: 0;\n  bottom: 0;\n  z-index: 1;\n}\n.tui-full-calendar-timegrid-container {\n  height: 100%;\n  position: relative;\n  overflow: hidden;\n  overflow-y: scroll;\n}\n.tui-full-calendar-timegrid-container-split {\n  height: 100%;\n  position: relative;\n  overflow: hidden;\n}\n.tui-full-calendar-timegrid-left {\n  position: absolute;\n}\n.tui-full-calendar-timegrid-hour {\n  position: relative;\n  color: #555;\n  box-sizing: border-box;\n}\n.tui-full-calendar-timegrid-hour:first-child span {\n  display: none;\n}\n.tui-full-calendar-timegrid-hour:last-child {\n  border-bottom: none;\n}\n.tui-full-calendar-timegrid-hour span {\n  position: absolute;\n  top: -11px;\n  left: 0;\n  right: 5px;\n  text-align: right;\n  line-height: 25px;\n}\n.tui-full-calendar-timegrid-right {\n  position: relative;\n}\n.tui-full-calendar-timegrid-gridline {\n  border-bottom: 1px solid #eee;\n  box-sizing: border-box;\n}\n.tui-full-calendar-timegrid-gridline:last-child {\n  border-bottom: none;\n}\n.tui-full-calendar-timegrid-schedules {\n  position: absolute;\n  width: 100%;\n  height: 100%;\n  top: 0;\n  left: 0;\n  cursor: pointer;\n}\n.tui-full-calendar-timegrid-hourmarker {\n  position: absolute;\n  width: 100%;\n  display: table;\n}\n.tui-full-calendar-timegrid-hourmarker-line-left {\n  position: absolute;\n  min-height: 1px;\n  left: 0;\n}\n.tui-full-calendar-timegrid-hourmarker-line-today {\n  position: absolute;\n  min-height: 1px;\n}\n.tui-full-calendar-timegrid-hourmarker-line-right {\n  position: absolute;\n  min-height: 1px;\n  right: 0;\n}\n.tui-full-calendar-timegrid-hourmarker-time {\n  padding-right: 5px;\n  line-height: 12px;\n  text-align: right;\n  display: table-cell;\n  vertical-align: bottom;\n}\n.tui-full-calendar-timegrid-todaymarker {\n  position: absolute;\n  text-indent: -9999px;\n  width: 9px;\n  height: 9px;\n  background-color: #135de6;\n  margin: -4px 0 0 -5px;\n  border-radius: 50%;\n}\n.tui-full-calendar-timegrid-sticky-container {\n  position: absolute;\n  top: 0;\n}\n.tui-full-calendar-timegrid-timezone-label-container {\n  position: absolute;\n}\n.tui-full-calendar-timegrid-timezone-label-cell {\n  display: table;\n}\n.tui-full-calendar-timegrid-timezone-label {\n  display: table-cell;\n  vertical-align: middle;\n  padding-right: 5px;\n  text-align: right;\n}\n.tui-full-calendar-timegrid-timezone-close-btn {\n  cursor: pointer;\n  position: absolute;\n  text-align: center;\n  background-color: #fff;\n}\n.tui-full-calendar-timegrid-timezone-close-btn .tui-full-calendar-icon {\n  width: 5px;\n  height: 10px;\n}\n.tui-full-calendar-time-date {\n  position: absolute;\n  height: 100%;\n  margin-left: -1px;\n  box-sizing: content-box;\n}\n.tui-full-calendar-time-date:last-child {\n  border-right: none;\n  margin: 0;\n}\n.tui-full-calendar-time-date:last-child .tui-full-calendar-time-schedule,\n.tui-full-calendar-time-date:last-child .tui-full-calendar-time-guide-creation {\n  left: 0px;\n}\n.tui-full-calendar-time-date-schedule-block-wrap {\n  position: relative;\n  height: 100%;\n}\n.tui-full-calendar-time-date-schedule-block {\n  position: absolute;\n  right: 0px;\n}\n.tui-full-calendar-time-date-schedule-block-pending {\n  opacity: 0.7;\n}\n.tui-full-calendar-time-date-schedule-block-dragging-dim {\n  opacity: 0.3;\n}\n.tui-full-calendar-time-date-schedule-block-focused {\n  box-shadow: 0 0 8px 0 rgba(0,0,0,0.2);\n}\n.tui-full-calendar-time-date-schedule-block-cover {\n  position: absolute;\n  top: 0;\n  width: 100%;\n  height: 100%;\n  background-color: rgba(0,0,0,0.2);\n  box-shadow: 0 2px 6px 0 rgba(0,0,0,0.1);\n}\n.tui-full-calendar-time-schedule {\n  position: relative;\n  left: 1px;\n  height: 100%;\n  overflow: hidden;\n  font-size: 12px;\n  font-weight: bold;\n}\n.tui-full-calendar-time-schedule-content {\n  overflow: hidden;\n  border-left-width: 3px;\n  border-left-style: solid;\n  padding: 1px 0 0 3px;\n}\n.tui-full-calendar-time-schedule-content-travel-time {\n  font-weight: normal;\n  font-size: 11px;\n}\n.tui-full-calendar-time-resize-handle {\n  position: absolute;\n  right: 0px;\n  bottom: 0px;\n  left: 0px;\n  height: 5px;\n  text-align: center;\n  color: #fff;\n  cursor: row-resize;\n  background-position: center top;\n}\n.tui-full-calendar-time-guide-creation {\n  position: absolute;\n  right: 10px;\n  left: 1px;\n  padding: 3px;\n}\n.tui-full-calendar-time-guide-move .tui-full-calendar-time-schedule,\n.tui-full-calendar-time-guide-resize .tui-full-calendar-time-schedule,\n.tui-full-calendar-time-guide-move .tui-full-calendar-time-resize-handle,\n.tui-full-calendar-time-guide-resize .tui-full-calendar-time-resize-handle {\n  opacity: 0.8;\n  z-index: 97;\n}\n.tui-full-calendar-time-guide-creation-label {\n  cursor: default;\n}\n.tui-full-calendar-time-guide-bottom {\n  position: absolute;\n  bottom: 3px;\n}\n.tui-full-calendar-month {\n  height: 100%;\n  min-height: 600px;\n}\n.tui-full-calendar-month-dayname {\n  width: 100%;\n  position: absolute;\n  font-size: 13px;\n}\n.tui-full-calendar-month-dayname-item {\n  height: 100%;\n  font-weight: bold;\n}\n.tui-full-calendar-month-week-item {\n  position: relative;\n}\n.tui-full-calendar-month-week-item>div {\n  height: 100%;\n}\n.tui-full-calendar-month-more {\n  height: inherit;\n  min-width: 280px;\n  min-height: 150px;\n}\n.tui-full-calendar-month-more-title {\n  position: relative;\n}\n.tui-full-calendar-month-more-title-day {\n  font-size: 23px;\n  color: #333;\n}\n.tui-full-calendar-month-more-title-day-label {\n  font-size: 12px;\n  color: #333;\n}\n.tui-full-calendar-month-more-close {\n  position: absolute;\n  right: 0;\n  outline: 0;\n  background: none;\n  border: 0;\n  font-size: 14px;\n  line-height: 28px;\n  padding: 0 7px;\n  cursor: pointer;\n}\n.tui-full-calendar-month-more-list {\n  overflow-y: auto;\n}\n.tui-full-calendar-month-more-schedule {\n  cursor: pointer;\n  display: block;\n  overflow: hidden;\n  white-space: nowrap;\n  text-overflow: ellipsis;\n  font-size: 12px;\n}\n.tui-full-calendar-month-guide-block {\n  position: absolute;\n}\n.tui-full-calendar-month-weekday-schedule {\n  margin-top: 2px;\n}\n.tui-full-calendar-month-creation-guide {\n  top: 0;\n  bottom: -1px;\n  left: -1px;\n  right: 0;\n  position: absolute;\n  z-index: 20;\n}\n.tui-full-calendar-month-guide-focused {\n  box-shadow: 0 0 8px 0 rgba(0,0,0,0.2);\n}\n.tui-full-calendar-month-guide {\n  position: relative;\n  padding-left: 3px;\n  line-height: 18px;\n  overflow: hidden;\n  white-space: nowrap;\n  text-overflow: ellipsis;\n}\n.tui-full-calendar-month-guide-cover {\n  width: 100%;\n  position: absolute;\n  top: -50%;\n  left: -50%;\n  background-color: rgba(0,0,0,0.2);\n  box-shadow: 0 2px 6px 0 rgba(0,0,0,0.1);\n}\n.tui-full-calendar-month-exceed-left .tui-full-calendar-month-guide {\n  margin-left: 0px;\n}\n.tui-full-calendar-month-exceed-right .tui-full-calendar-month-guide {\n  margin-right: 0px;\n}\n.tui-full-calendar-month-exceed-right .tui-full-calendar-month-guide-handle {\n  display: none;\n}\n.tui-full-calendar-month-guide-handle {\n  position: absolute;\n  top: 0;\n  right: 3px;\n  width: 6px;\n  background-position: 3px center;\n  cursor: col-resize;\n}\n.tui-full-calendar-vlayout-container {\n  position: relative;\n}\n.tui-full-calendar-splitter {\n  clear: left;\n  cursor: row-resize;\n}\n.tui-full-calendar-splitter:hover {\n  border-color: #999;\n}\n.tui-full-calendar-splitter-focused {\n  background-color: #ddd;\n  border: none;\n}\n.tui-full-calendar-splitter-guide {\n  position: absolute;\n  width: 100%;\n  height: 3px;\n  border: none;\n  background-color: #e8e8e8;\n}\n.tui-full-calendar-popup {\n  position: absolute;\n  font-weight: 2.5;\n  box-shadow: 0 2px 6px 0 rgba(0,0,0,0.1);\n  clear: both;\n}\n.tui-full-calendar-popup-container {\n  min-width: 474px;\n  box-shadow: 0 2px 6px 0 rgba(0,0,0,0.1);\n  background-color: #fff;\n  border: solid 1px #d5d5d5;\n  padding: 17px;\n  border-radius: 2px;\n}\n.tui-full-calendar-popup-section {\n  font-size: 0;\n  min-height: 40px;\n}\n.tui-full-calendar-section-calendar {\n  width: 176px;\n}\n.tui-full-calendar-section-calendar.tui-full-calendar-hide {\n  height: 21px;\n  visibility: hidden;\n}\n.tui-full-calendar-section-title {\n  width: calc(100% - 36px);\n  padding-right: 4px;\n}\n.tui-full-calendar-section-title input {\n  width: 365px;\n}\n.tui-full-calendar-button.tui-full-calendar-section-private {\n  height: 32px;\n  padding: 8px;\n  font-size: 0;\n  margin-left: 4px;\n}\n.tui-full-calendar-section-private.tui-full-calendar-public .tui-full-calendar-ic-private {\n  background: url(\"image/ic-unlock.png\") no-repeat;\n}\n.tui-full-calendar-section-start-date,\n.tui-full-calendar-section-end-date {\n  width: 176px;\n}\n.tui-full-calendar-section-start-date input,\n.tui-full-calendar-section-end-date input {\n  width: 139px;\n}\n.tui-full-calendar-section-start-date:hover .tui-full-calendar-popup-section-item,\n.tui-full-calendar-section-end-date:hover .tui-full-calendar-popup-section-item,\n.tui-full-calendar-section-start-date:focus .tui-full-calendar-popup-section-item,\n.tui-full-calendar-section-end-date:focus .tui-full-calendar-popup-section-item,\n.tui-full-calendar-section-start-date:hover .tui-datepicker,\n.tui-full-calendar-section-end-date:hover .tui-datepicker,\n.tui-full-calendar-section-start-date:focus .tui-datepicker,\n.tui-full-calendar-section-end-date:focus .tui-datepicker {\n  border-color: #bbb;\n}\n.tui-full-calendar-popup-section-item:focus {\n  border-color: #bbb;\n}\n.tui-full-calendar-section-date-dash {\n  font-size: 12px;\n  color: #d5d5d5;\n  height: 32px;\n  padding: 0 4px;\n  vertical-align: middle;\n}\n.tui-full-calendar-popup-section-item.tui-full-calendar-section-allday {\n  border: none;\n  padding: 0 0 0 8px;\n  cursor: pointer;\n}\n.tui-full-calendar-popup-section-item.tui-full-calendar-section-location {\n  display: block;\n}\n.tui-full-calendar-popup-section-item.tui-full-calendar-section-location input {\n  width: 400px;\n}\n.tui-full-calendar-section-allday .tui-full-calendar-icon.tui-full-calendar-ic-checkbox {\n  margin: 0;\n}\n.tui-full-calendar-popup-section-item.tui-full-calendar-section-allday .tui-full-calendar-content {\n  padding-left: 4px;\n}\n.tui-full-calendar-section-state {\n  width: 109px;\n}\n.tui-full-calendar-section-state .tui-full-calendar-content {\n  width: 58px;\n  text-overflow: ellipsis;\n  overflow: hidden;\n}\n.tui-full-calendar-popup-section-item {\n  height: 32px;\n  padding: 0 9px 0 12px;\n  border: 1px solid #d5d5d5;\n  display: inline-block;\n  font-size: 0;\n  border-radius: 2px;\n}\n.tui-full-calendar-popup-section-item:hover {\n  border-color: #bbb;\n}\n.tui-full-calendar-popup-section-item:focus {\n  border-color: #bbb;\n}\n.tui-full-calendar-popup-section-item .tui-full-calendar-icon {\n  position: relative;\n}\n.tui-full-calendar-popup-section-item .tui-full-calendar-content {\n  text-align: left;\n  display: inline-block;\n  font-size: 12px;\n  vertical-align: middle;\n  position: relative;\n  padding-left: 8px;\n}\n.tui-full-calendar-section-calendar .tui-full-calendar-dropdown-button .tui-full-calendar-content {\n  width: 125px;\n  text-overflow: ellipsis;\n  overflow: hidden;\n  top: -1px;\n}\n.tui-full-calendar-popup-section-item input {\n  border: none;\n  height: 30px;\n  outline: none;\n  display: inline-block;\n}\n.tui-full-calendar-popup-section-item input::placeholder {\n  color: #bbb;\n  font-weight: 300;\n}\n.tui-full-calendar-dropdown {\n  position: relative;\n}\n.tui-full-calendar-dropdown:hover .tui-full-calendar-dropdown-button {\n  border: 1px solid #bbb;\n}\n.tui-full-calendar-dropdown-button.tui-full-calendar-popup-section-item {\n  height: 32px;\n  font-size: 0;\n  top: -1px;\n}\n.tui-full-calendar-dropdown-arrow {\n  background: url(\"image/ic-arrow-solid-bottom.png\") no-repeat;\n}\n.dropdown.open .tui-full-calendar-dropdown-arrow,\n.tui-full-calendar-open .tui-full-calendar-dropdown-arrow {\n  background: url(\"image/ic-arrow-solid-top.png\") no-repeat;\n}\n.tui-full-calendar-dropdown-menu {\n  position: absolute;\n  top: 31px;\n  padding: 4px 0;\n  background-color: #fff;\n  border: 1px solid #d5d5d5;\n  border-top: none;\n  border-radius: 0 0 2px 2px;\n  width: 100%;\n  display: none;\n}\n.tui-full-calendar-dropdown:hover .tui-full-calendar-dropdown-menu {\n  border: 1px solid #bbb;\n  border-top: none;\n}\n.tui-full-calendar-open .tui-full-calendar-dropdown-menu {\n  display: block;\n}\n.tui-full-calendar-dropdown-menu-item {\n  height: 30px;\n  border: none;\n  cursor: pointer;\n}\n.tui-full-calendar-section-calendar .tui-full-calendar-dropdown-menu-item {\n  width: 100%;\n}\n.tui-full-calendar-section-state .tui-full-calendar-dropdown-menu-item {\n  width: 100%;\n}\n.tui-full-calendar-dropdown-menu-item:hover {\n  background-color: rgba(81,92,230,0.05);\n}\n.tui-full-calendar-dropdown-menu-item .tui-full-calendar-content {\n  line-height: 30px;\n}\n.tui-full-calendar-button.tui-full-calendar-popup-close {\n  position: absolute;\n  top: 10px;\n  right: 10px;\n  background-color: #fff;\n  padding: 2px;\n  border: none;\n}\n.tui-full-calendar-section-button-save {\n  height: 36px;\n}\n.tui-full-calendar-popup-save {\n  float: right;\n}\n.tui-full-calendar-popup-arrow-border,\n.tui-full-calendar-popup-arrow-fill {\n  position: absolute;\n}\n.tui-full-calendar-arrow-top .tui-full-calendar-popup-arrow-border {\n  border-top: none;\n  border-right: 8px solid transparent;\n  border-bottom: 8px solid #d5d5d5;\n  border-left: 8px solid transparent;\n  left: calc(50% - 8px);\n  top: -7px;\n}\n.tui-full-calendar-arrow-right .tui-full-calendar-popup-arrow-border {\n  border-top: 8px solid transparent;\n  border-right: none;\n  border-bottom: 8px solid transparent;\n  border-left: 8px solid #d5d5d5;\n  top: calc(50% - 8px);\n  right: -7px;\n}\n.tui-full-calendar-arrow-bottom .tui-full-calendar-popup-arrow-border {\n  border-top: 8px solid #d5d5d5;\n  border-right: 8px solid transparent;\n  border-bottom: none;\n  border-left: 8px solid transparent;\n  left: calc(50% - 8px);\n  bottom: -7px;\n}\n.tui-full-calendar-arrow-left .tui-full-calendar-popup-arrow-border {\n  border-top: 8px solid transparent;\n  border-right: 8px solid #d5d5d5;\n  border-bottom: 8px solid transparent;\n  border-left: none;\n  top: calc(50% - 8px);\n  left: -7px;\n}\n.tui-full-calendar-arrow-top .tui-full-calendar-popup-arrow-fill {\n  border-top: none;\n  border-right: 7px solid transparent;\n  border-bottom: 7px solid #fff;\n  border-left: 7px solid transparent;\n  left: -7px;\n  top: 1px;\n}\n.tui-full-calendar-arrow-right .tui-full-calendar-popup-arrow-fill {\n  border-top: 7px solid transparent;\n  border-right: none;\n  border-bottom: 7px solid transparent;\n  border-left: 7px solid #fff;\n  top: -7px;\n  right: 1px;\n}\n.tui-full-calendar-arrow-bottom .tui-full-calendar-popup-arrow-fill {\n  border-top: 7px solid #fff;\n  border-right: 7px solid transparent;\n  border-bottom: none;\n  border-left: 7px solid transparent;\n  left: -7px;\n  bottom: 1px;\n}\n.tui-full-calendar-arrow-left .tui-full-calendar-popup-arrow-fill {\n  border-top: 7px solid transparent;\n  border-right: 7px solid #fff;\n  border-bottom: 7px solid transparent;\n  border-left: none;\n  top: -7px;\n  left: 1px;\n}\n.tui-full-calendar-button {\n  background: #fff;\n  border: 1px solid #d5d5d5;\n  border-radius: 2px;\n  text-align: center;\n  outline: none;\n  font-size: 12px;\n  cursor: pointer;\n  color: #333;\n}\n.tui-full-calendar-button:hover {\n  border-color: #bbb;\n  color: #333;\n}\n.tui-full-calendar-button:active {\n  background: #f9f9f9;\n  color: #333;\n}\n.tui-full-calendar-button .round {\n  border-radius: 25px;\n}\n.tui-full-calendar-confirm {\n  width: 96px;\n  height: 36px;\n  border-radius: 40px;\n  background-color: #ff6618;\n  font-size: 12px;\n  font-weight: bold;\n  color: #fff;\n  border: none;\n}\n.tui-full-calendar-confirm:hover {\n  background-color: #e55b15;\n  color: #fff;\n}\n.tui-full-calendar-confirm:active {\n  background-color: #d95614;\n  color: #fff;\n}\n.tui-full-calendar-icon.tui-full-calendar-right {\n  float: right;\n  top: 1px;\n}\n.tui-full-calendar-icon .tui-full-calendar-none {\n  display: none;\n}\n.tui-full-calendar-icon.tui-full-calendar-calendar-dot {\n  border-radius: 8px;\n  width: 12px;\n  height: 12px;\n  margin: 1px;\n}\ninput[type='checkbox'].tui-full-calendar-checkbox-square {\n  display: none;\n}\ninput[type='checkbox'].tui-full-calendar-checkbox-square + span {\n  display: inline-block;\n  cursor: pointer;\n  line-height: 14px;\n  margin-right: 8px;\n  width: 14px;\n  height: 14px;\n  background: url(\"image/ic-checkbox-normal.png\") no-repeat;\n  vertical-align: middle;\n}\ninput[type='checkbox'].tui-full-calendar-checkbox-square:checked + span {\n  background: url(\"image/ic-checkbox-checked.png\") no-repeat;\n}\ninput[type='checkbox'].tui-full-calendar-checkbox-round {\n  display: none;\n}\ninput[type='checkbox'].tui-full-calendar-checkbox-round + span {\n  display: inline-block;\n  cursor: pointer;\n  width: 14px;\n  height: 14px;\n  line-height: 14px;\n  vertical-align: middle;\n  margin-right: 8px;\n  border-radius: 8px;\n  border: solid 2px;\n  background: transparent;\n}\n.tui-full-calendar-popup-top-line {\n  position: absolute;\n  border-radius: 2px 2px 0 0;\n  width: 100%;\n  height: 4px;\n  border: none;\n  top: 0;\n}\n.tui-full-calendar-popup-detail .tui-full-calendar-popup-container {\n  width: 301px;\n  min-width: 301px;\n  padding-bottom: 0;\n}\n.tui-full-calendar-popup-detail .tui-full-calendar-icon {\n  width: 12px;\n  height: 12px;\n  background-size: 12px;\n  position: relative;\n  margin-right: 8px;\n}\n.tui-full-calendar-popup-detail .tui-full-calendar-icon.tui-full-calendar-ic-location-b {\n  top: -2px;\n}\n.tui-full-calendar-popup-detail .tui-full-calendar-icon.tui-full-calendar-ic-user-b {\n  top: -2px;\n}\n.tui-full-calendar-popup-detail .tui-full-calendar-icon.tui-full-calendar-ic-state-b {\n  top: -1px;\n}\n.tui-full-calendar-popup-detail .tui-full-calendar-icon.tui-full-calendar-calendar-dot {\n  width: 10px;\n  height: 10px;\n  margin-right: 8px;\n  top: -1px;\n}\n.tui-full-calendar-popup-detail .tui-full-calendar-content {\n  line-height: 24px;\n  height: 24px;\n  font-size: 12px;\n  line-height: 2;\n}\n.tui-full-calendar-popup-detail .tui-full-calendar-section-header {\n  margin-bottom: 6px;\n}\n.tui-full-calendar-popup-detail .tui-full-calendar-popup-detail-item-separate {\n  margin-top: 4px;\n}\n.tui-full-calendar-popup-detail .tui-full-calendar-popup-detail-item-indent {\n  text-indent: -20px;\n  padding-left: 20px;\n}\n.tui-full-calendar-popup-detail .tui-full-calendar-schedule-title {\n  font-size: 15px;\n  font-weight: bold;\n  line-height: 1.6;\n  word-break: break-all;\n}\n.tui-full-calendar-popup-detail .tui-full-calendar-schedule-private {\n  display: none;\n  width: 16px;\n  height: 16px;\n  background: url(\"image/ic-lock.png\") no-repeat 16px;\n}\n.tui-full-calendar-popup-detail .tui-full-calendar-schedule-private .tui-full-calendar-ic-private {\n  display: block;\n}\n.tui-full-calendar-popup-detail .tui-full-calendar-section-detail {\n  margin-bottom: 16px;\n}\n.tui-full-calendar-popup-detail .tui-full-calendar-section-button {\n  border-top: 1px solid #e5e5e5;\n  font-size: 0;\n}\n.tui-full-calendar-section-button .tui-full-calendar-icon {\n  margin-right: 4px;\n  top: -3px;\n}\n.tui-full-calendar-section-button .tui-full-calendar-content {\n  position: relative;\n  top: 2px;\n}\n.tui-full-calendar-popup-edit,\n.tui-full-calendar-popup-delete {\n  display: inline-block;\n  padding: 7px 9px 11px 9px;\n  width: calc(50% - 1px);\n  outline: none;\n  background: none;\n  border: none;\n  cursor: pointer;\n}\n.tui-full-calendar-popup-vertical-line {\n  background: #e5e5e5;\n  width: 1px;\n  height: 14px;\n  vertical-align: middle;\n  display: inline-block;\n  margin-top: -7px;\n}\n.tui-datepicker {\n  left: -12px;\n  z-index: 1;\n  border-color: #d5d5d5;\n}\n.tui-full-calendar-icon {\n  width: 14px;\n  height: 14px;\n  display: inline-block;\n  vertical-align: middle;\n}\n.tui-full-calendar-icon.tui-full-calendar-ic-title {\n  background: url(\"image/ic-subject.png\") no-repeat;\n}\n.tui-full-calendar-icon.tui-full-calendar-ic-location {\n  background: url(\"image/ic-location.png\") no-repeat;\n}\n.tui-full-calendar-icon.tui-full-calendar-ic-date {\n  background: url(\"image/ic-date.png\") no-repeat;\n}\n.tui-full-calendar-icon.tui-full-calendar-ic-state {\n  background: url(\"image/ic-state.png\") no-repeat;\n}\n.tui-full-calendar-icon.tui-full-calendar-ic-private {\n  background: url(\"image/ic-lock.png\") no-repeat;\n}\n.tui-full-calendar-icon.tui-full-calendar-ic-close {\n  background: url(\"image/ic-close.png\") no-repeat;\n}\n.tui-full-calendar-ic-location-b {\n  background: url(\"./image/ic-location-b.png\");\n}\n.tui-full-calendar-ic-state-b {\n  background: url(\"./image/ic-state-b.png\");\n}\n.tui-full-calendar-icon.tui-full-calendar-ic-user-b {\n  background-image: url(\"./image/ic-user-b.png\");\n}\n.tui-full-calendar-icon.tui-full-calendar-ic-edit {\n  background-image: url(\"./image/ic-edit.png\");\n}\n.tui-full-calendar-icon.tui-full-calendar-ic-delete {\n  background-image: url(\"./image/ic-delete.png\");\n}\n.tui-full-calendar-icon.tui-full-calendar-ic-arrow-solid-top {\n  background: url(\"image/ic-arrow-solid-top.png\") no-repeat;\n}\n.tui-full-calendar-icon.tui-full-calendar-ic-milestone {\n  background: url(\"image/ic-milestone.png\") no-repeat;\n}\n.tui-full-calendar-icon.tui-full-calendar-ic-arrow-left {\n  background: url(\"image/ic-arrow-left.png\") no-repeat;\n}\n.tui-full-calendar-icon.tui-full-calendar-ic-arrow-right {\n  background: url(\"image/ic-arrow-right.png\") no-repeat;\n}\n.tui-full-calendar-ic-repeat-b {\n  background: url(\"./image/ic-repeat-b.png\");\n}\n/*# sourceMappingURL=src/css/main.css.map */","// Variables\n// default prefix\ncss-prefix = 'tui-full-calendar-'\n// Dayname\ndayname = css-prefix + 'dayname-'\n\nweekday = css-prefix + 'weekday-'\n// DayGrid\ndaygrid = css-prefix + 'daygrid-'\n// Time\ntimegrid = css-prefix + 'timegrid-'\ntime = css-prefix + 'time-'\n// Month\nmonth = css-prefix + 'month-'\n\n// Functions\nwh(w, h)\n    width: w\n    height: h\n\npos(top, left)\n    top: top\n    left: left\n\nclearfix()\n    &:after\n        content: '';\n        display: block;\n        clear: both;\n    \n",".{css-prefix}month-week-item\n    .{css-prefix}weekday-grid\n        overflow-y: hidden\n\n    .{css-prefix}weekday-schedules\n        overflow-y: visible\n        height: 0\n\n    .{css-prefix}weekday-schedule\n        margin: 0 10px\n\n    .{css-prefix}today\n        background: none\n\n        .{css-prefix}weekday-grid-date-decorator\n            display: inline-block\n            wh(27px, 27px)\n            line-height: 27px\n            text-align: center\n            background: #135de6\n            border-radius: 50%\n            color: #fff\n            font-weight: bold\n            margin-left: 2px\n\n+prefix-classes(weekday)\n    .container,\n    .grid,\n    .grid-line\n        height: 100%\n        min-height: inherit\n\n    .grid\n        position: absolute\n        width: 100%\n        overflow-y: scroll\n\n    .border\n        border-top: 1px solid #ddd\n\n    .container\n        position: relative\n        &>div\n            height: 100%\n\n    .grid-line\n        position: absolute\n        padding: 3px\n\n        .grid-footer\n            position: absolute\n            bottom: 4px\n\n        .grid-date\n            display: inline-block\n            wh(27px, 27px)\n            line-height: 27px\n            text-align: center\n\n        .grid-date-title\n            line-height: 27px\n            margin-right: 5px\n        \n        .grid-more-schedules\n            float: right\n            display: inline-block\n            height: 27px\n            line-height: 27px\n            padding: 0 5px\n            text-align: center\n            font-size: 11px\n            font-weight: bold\n            color: #aaaaaa\n\n    .creation\n        pos(0, 0)\n        wh(100%, 100%)\n        position: absolute\n        overflow-y: scroll\n\n    .schedules\n        pos(0, 0)\n        wh(100%, 100%)\n        position: absolute\n        font-size: 12px\n        overflow-y: scroll\n\n    .schedules-height-span\n        width: 1px\n        margin-left: -1px\n\n    .schedule-block\n        position: absolute\n\n    .schedule-block-dragging-dim\n        opacity: 0.3\n\n    .schedule\n        position: relative\n        margin: 0 10px 0 1px\n        cursor: pointer\n        border-left-style: solid\n        border-left-width: 3px\n\n        &.schedule-time\n            border-left-width: 0\n\n            .schedule-title\n                padding-left: 9px\n\n    .schedule-bullet\n        position: absolute\n        padding: 0\n        wh(6px, 6px)\n        top: 6px\n        left: 0\n        border-radius: 50%\n\n    .schedule-bullet-focused\n        left: 10px\n        background: #ffffff\n\n    .schedule-title\n        display: block\n        white-space: nowrap\n        overflow: hidden\n        text-overflow: ellipsis\n        padding-left: 3px;\n        font-weight: bold;\n\n    .schedule-title-focused\n        padding-left: 16px\n\n    .schedule-cover\n        position: absolute\n        top: 0\n        width: 100%\n        height: 100%\n        background-color: rgba(0, 0, 0, 0.2)\n        box-shadow: 0 2px 6px 0 rgba(0, 0, 0, 0.1);\n\n    .exceed-left .schedule\n        margin-left: 0\n        border-left-width: 0\n\n    .exceed-right .schedule\n        margin-right: 0\n\n    .exceed-right .resize-handle\n        display: none\n\n    .exceed-in-month\n        cursor: pointer\n        &:hover\n            background-color: #f0f1f5\n\n    .exceed-in-week, .collapse-btn\n        position: absolute\n        bottom: 5px\n        margin-right: 5px\n        font-size: 12px\n        line-height: 14px\n        cursor: pointer\n        padding: 1px 5px\n        background-color: #ffffff\n        border: 1px solid #dddddd\n        color: #000000\n\n    .resize-handle\n        position: absolute\n        top: 0\n        right: 0\n        width: 6px\n        background-position: 3px center\n        cursor: col-resize\n        line-height: 18px\n\n    .filled\n        background-color: #e8e8e8 !important\n\n+prefix-classes(css-prefix)\n    .left\n        height: 100%\n        float: left\n        box-sizing: border-box\n        display: table\n\n    .left-content\n        display: table-cell\n        vertical-align: middle\n        text-align: right\n        font-size: 11px\n\n\n    .right\n        height: 100%\n        overflow-y: scroll\n        position: relative\n",".{css-prefix}week-container\n    width: 100%\n    height: inherit\n    display: inline-block\n    font-size: 10px\n    min-height: 600px\n\n    .{css-prefix}today\n        background: none\n",".{css-prefix}dayname\n    position: absolute\n    margin-left: -1px\n    height: 100%\n    overflow: hidden\n\n    &.{css-prefix}today\n        font-weight: bold\n\n+prefix-classes(dayname)\n    .container\n        overflow-y: scroll\n\n    .leftmargin\n        position: relative\n        height: 100%\n    \n    .date\n        font-size: 26px\n    \n    .name\n        font-weight: bold\n        font-size: 12px\n","// DayGrid view\n+prefix-classes(daygrid)\n    .layout\n        height: 100%;\n\n.{css-prefix}daygrid-layout\n    .{css-prefix}right\n        overflow-y: hidden\n\n// Guide element\n+prefix-classes(daygrid + guide-)\n    .creation-block\n        position: absolute\n        top: 0\n        bottom: 0\n        z-index: 1\n","+prefix-classes(timegrid)\n    .container\n        height: 100%\n        position: relative\n        overflow: hidden\n        overflow-y: scroll\n\n    .container-split\n        height: 100%\n        position: relative\n        overflow: hidden\n\n    .left\n        position: absolute\n\n    .hour\n        position: relative\n        color: #555\n        box-sizing: border-box\n        &:first-child span\n            display: none\n        &:last-child\n            border-bottom: none\n\n    .hour span\n        position: absolute\n        top: -11px\n        left: 0\n        right: 5px\n        text-align: right\n        line-height: 25px\n\n    .right\n        position: relative\n\n    .gridline\n        border-bottom: 1px solid #eee\n        box-sizing: border-box\n        &:last-child\n            border-bottom: none\n\n    .schedules\n        position: absolute\n        wh(100%, 100%)\n        pos(0, 0)\n        cursor: pointer\n\n    // Hourmarker\n    .hourmarker\n        position: absolute\n        width: 100%\n        display: table\n\n    .hourmarker-line-left\n        position: absolute\n        min-height: 1px\n        left: 0\n\n    .hourmarker-line-today\n        position: absolute\n        min-height: 1px\n\n    .hourmarker-line-right\n        position: absolute\n        min-height: 1px\n        right: 0\n\n    .hourmarker-time\n        padding-right: 5px\n        line-height: 12px\n        text-align: right\n        display: table-cell\n        vertical-align: bottom\n\n    // Todaymarker\n    .todaymarker\n        position: absolute\n        text-indent: -9999px\n        wh(9px, 9px)\n        background-color: #135de6\n        margin: -4px 0 0 -5px\n        border-radius: 50%\n\n    .sticky-container\n        position: absolute\n        top: 0\n    \n    .timezone-label-container\n        position: absolute\n    \n    .timezone-label-cell\n        display: table\n    \n    .timezone-label\n        display: table-cell\n        vertical-align: middle\n        padding-right: 5px\n        text-align: right\n    \n    .timezone-close-btn\n        cursor: pointer\n        position: absolute\n        text-align: center\n        background-color: #ffffff\n\n.{css-prefix}timegrid-timezone-close-btn\n    .{css-prefix}icon\n        width: 5px\n        height: 10px\n\n+prefix-classes(time)\n    .date\n        position: absolute\n        height: 100%\n        margin-left: -1px\n        box-sizing: content-box\n        &:last-child\n            border-right: none\n            margin: 0\n            // last creation guide element\n            .schedule,\n            .guide-creation\n                left: 0px\n\n    .date-schedule-block-wrap\n        position: relative\n        height: 100%\n\n    .date-schedule-block\n        position: absolute\n        right: 0px\n\n    .date-schedule-block-pending\n        opacity: 0.7\n\n    .date-schedule-block-dragging-dim\n        opacity: 0.3\n\n    .date-schedule-block-focused\n        box-shadow: 0 0 8px 0 rgba(0, 0, 0, 0.2)\n\n    .date-schedule-block-cover\n        position: absolute\n        top: 0\n        width: 100%\n        height: 100%\n        background-color: rgba(0, 0, 0, 0.2)\n        box-shadow: 0 2px 6px 0 rgba(0, 0, 0, 0.1);\n\n    .schedule\n        position: relative\n        left: 1px\n        height: 100%\n        overflow: hidden\n        font-size: 12px\n        font-weight: bold\n\n    .schedule-content\n        overflow: hidden\n        border-left-width: 3px\n        border-left-style: solid\n        padding: 1px 0 0 3px\n\n    .schedule-content-travel-time\n        font-weight: normal;\n        font-size: 11px;\n\n    .resize-handle\n        position: absolute\n        right: 0px\n        bottom: 0px\n        left: 0px\n        height: 5px\n        text-align: center\n        color: #fff\n        cursor: row-resize\n        background-position: center top\n\n    // Guide element\n    .guide-creation\n        position: absolute\n        right: 10px\n        left: 1px\n        padding: 3px\n\n    .guide-move,\n    .guide-resize\n        .schedule,\n        .resize-handle\n            opacity: 0.8\n            z-index: 97\n\n    .guide-creation-label\n        cursor: default\n\n    .guide-bottom\n        position: absolute\n        bottom: 3px\n",".{css-prefix}month\n    height: 100%\n    min-height: 600px\n\n+prefix-classes(month)\n    .dayname\n        width: 100%\n        position: absolute\n        font-size: 13px\n\n    .dayname-item\n        height: 100%\n        font-weight: bold\n\n    .week-item\n        position: relative\n        &>div\n            height: 100%\n\n    .more\n        height: inherit\n        min-width: 280px\n        min-height: 150px\n\n    .more-title\n        position: relative\n    \n    .more-title-day\n        font-size: 23px\n        color #333\n    \n    .more-title-day-label\n        font-size: 12px\n        color: #333\n\n    .more-close\n        position: absolute\n        right: 0\n        outline: 0\n        background none\n        border: 0\n        font-size: 14px\n        line-height: 28px\n        padding: 0 7px\n        cursor: pointer\n\n    .more-list\n        overflow-y: auto\n\n    .more-schedule\n        cursor: pointer\n        display: block\n        overflow: hidden\n        white-space: nowrap\n        text-overflow: ellipsis\n        font-size: 12px\n\n    .guide-block\n        position: absolute\n\n    .weekday-schedule\n        margin-top: 2px\n\n    .creation-guide\n        top: 0\n        bottom: -1px\n        left: -1px\n        right: 0\n        position: absolute\n        z-index: 20\n\n    .guide-focused\n        box-shadow: 0 0 8px 0 rgba(0, 0, 0, 0.2)\n\n    .guide\n        position: relative\n        padding-left: 3px\n        line-height: 18px\n        overflow: hidden\n        white-space: nowrap\n        text-overflow: ellipsis\n\n    .guide-cover\n        width: 100%\n        position: absolute\n        top: -50%\n        left: -50%\n        background-color: rgba(0, 0, 0, 0.2)\n        box-shadow: 0 2px 6px 0 rgba(0, 0, 0, 0.1)\n\n    .exceed-left .guide\n        margin-left: 0px\n\n    .exceed-right .guide\n        margin-right: 0px\n\n    .exceed-right .guide-handle\n        display: none\n\n    .guide-handle\n        position: absolute\n        top: 0\n        right: 3px\n        width: 6px\n        background-position: 3px center\n        cursor: col-resize\n","+prefix-classes(css-prefix)\n    .vlayout-container\n        position: relative\n\n    .splitter\n        clear: left\n        cursor: row-resize\n\n        &:hover\n            border-color: #999\n\n    .splitter-focused\n        background-color: #ddd\n        border: none\n\n    .splitter-guide\n        position: absolute\n        wh(100%, 3px)\n        border: none\n        background-color: #e8e8e8\n",".{css-prefix}popup\n    position: absolute\n    font-weight: 2.5\n    box-shadow: 0 2px 6px 0 rgba(0, 0, 0, 0.1)\n    clear: both\n\n.{css-prefix}popup-container\n    min-width: 474px\n    box-shadow: 0 2px 6px 0 rgba(0, 0, 0, 0.1)\n    background-color: #ffffff\n    border: solid 1px #d5d5d5\n    padding: 17px\n    border-radius: 2px\n\n.{css-prefix}popup-section\n    font-size: 0\n    min-height: 40px\n\n.{css-prefix}section-calendar\n    width: 176px\n\n.{css-prefix}section-calendar.{css-prefix}hide\n    height: 21px\n    visibility: hidden\n\n.{css-prefix}section-title\n    width: calc(100% - 36px)\n    padding-right: 4px\n\n.{css-prefix}section-title input\n    width: 365px\n\n.{css-prefix}button.{css-prefix}section-private\n    height: 32px\n    padding: 8px\n    font-size: 0\n    margin-left: 4px\n\n.{css-prefix}section-private.{css-prefix}public .{css-prefix}ic-private\n    background: url('image/ic-unlock.png') no-repeat\n\n.{css-prefix}section-start-date\n.{css-prefix}section-end-date\n    width: 176px\n\n    input\n        width: 139px\n\n    &:hover\n    &:focus\n        .{css-prefix}popup-section-item\n        .tui-datepicker\n            border-color: #bbbbbb\n\n\n.{css-prefix}popup-section-item:focus\n    border-color: #bbbbbb\n\n.{css-prefix}section-date-dash\n    font-size: 12px\n    color: #d5d5d5\n    height: 32px\n    padding: 0 4px\n    vertical-align: middle\n\n.{css-prefix}popup-section-item\n    &.{css-prefix}section-allday\n        border: none\n        padding: 0 0 0 8px\n        cursor: pointer\n    &.{css-prefix}section-location\n        display: block\n\n        input\n            width: 400px\n\n.{css-prefix}section-allday .{css-prefix}icon.{css-prefix}ic-checkbox\n    margin: 0\n\n.{css-prefix}popup-section-item.{css-prefix}section-allday .{css-prefix}content\n    padding-left: 4px\n\n.{css-prefix}section-state\n    width: 109px\n\n.{css-prefix}section-state .{css-prefix}content\n    width: 58px\n    text-overflow: ellipsis\n    overflow: hidden\n\n.{css-prefix}popup-section-item\n    height: 32px\n    padding: 0 9px 0 12px\n    border: 1px solid #d5d5d5\n    display: inline-block\n    font-size: 0\n    border-radius: 2px\n\n.{css-prefix}popup-section-item:hover\n    border-color: #bbbbbb\n\n.{css-prefix}popup-section-item:focus\n    border-color: #bbbbbb\n\n.{css-prefix}popup-section-item .{css-prefix}icon\n    position: relative\n\n.{css-prefix}popup-section-item .{css-prefix}content\n    text-align: left\n    display: inline-block\n    font-size: 12px\n    vertical-align: middle\n    position: relative\n    padding-left: 8px\n\n.{css-prefix}section-calendar .{css-prefix}dropdown-button .{css-prefix}content\n    width: 125px\n    text-overflow: ellipsis\n    overflow: hidden\n    top: -1px\n\n.{css-prefix}popup-section-item input\n    border: none\n    height: 30px\n    outline: none\n    display: inline-block\n\n.{css-prefix}popup-section-item input::placeholder\n    color: #bbbbbb\n    font-weight: 300\n\n.{css-prefix}dropdown\n    position: relative\n\n.{css-prefix}dropdown:hover .{css-prefix}dropdown-button\n    border: 1px solid #bbbbbb\n\n.{css-prefix}dropdown-button.{css-prefix}popup-section-item\n    height: 32px\n    font-size: 0\n    top: -1px\n\n.{css-prefix}dropdown-arrow\n    background: url('image/ic-arrow-solid-bottom.png') no-repeat\n\n\n.dropdown.open\n.{css-prefix}open\n    .{css-prefix}dropdown-arrow\n        background: url('image/ic-arrow-solid-top.png') no-repeat\n\n.{css-prefix}dropdown-menu\n    position: absolute\n    top: 31px\n    padding: 4px 0\n    background-color: #ffffff\n    border: 1px solid #d5d5d5\n    border-top: none\n    border-radius: 0 0 2px 2px\n    width: 100%\n    display: none\n\n.{css-prefix}dropdown:hover .{css-prefix}dropdown-menu\n    border: 1px solid #bbbbbb\n    border-top: none\n\n.{css-prefix}open .{css-prefix}dropdown-menu\n        display: block\n\n.{css-prefix}dropdown-menu-item\n    height: 30px\n    border: none\n    cursor: pointer\n\n.{css-prefix}section-calendar .{css-prefix}dropdown-menu-item\n    width: 100%;\n\n.{css-prefix}section-state .{css-prefix}dropdown-menu-item\n    width: 100%;\n\n.{css-prefix}dropdown-menu-item:hover\n    background-color: rgba(81, 92, 230, 0.05)\n\n.{css-prefix}dropdown-menu-item .{css-prefix}content\n    line-height: 30px\n\n.{css-prefix}button.{css-prefix}popup-close\n    position: absolute\n    top: 10px\n    right: 10px\n    background-color: #ffffff\n    padding: 2px\n    border: none\n\n.{css-prefix}section-button-save\n    height: 36px\n\n.{css-prefix}popup-save\n    float: right\n\n.{css-prefix}popup-arrow-border, .{css-prefix}popup-arrow-fill\n    position: absolute\n\n.{css-prefix}arrow-top .{css-prefix}popup-arrow-border\n    border-top: none\n    border-right: 8px solid transparent\n    border-bottom: 8px solid #d5d5d5\n    border-left: 8px solid transparent\n    left: calc(50% - 8px)\n    top: -7px\n\n.{css-prefix}arrow-right .{css-prefix}popup-arrow-border\n    border-top: 8px solid transparent\n    border-right: none\n    border-bottom: 8px solid transparent\n    border-left: 8px solid #d5d5d5\n    top: calc(50% - 8px)\n    right: -7px\n\n.{css-prefix}arrow-bottom .{css-prefix}popup-arrow-border\n    border-top: 8px solid #d5d5d5\n    border-right: 8px solid transparent\n    border-bottom: none\n    border-left: 8px solid transparent\n    left: calc(50% - 8px)\n    bottom: -7px\n\n.{css-prefix}arrow-left .{css-prefix}popup-arrow-border\n    border-top: 8px solid transparent\n    border-right: 8px solid #d5d5d5\n    border-bottom: 8px solid transparent\n    border-left: none\n    top: calc(50% - 8px)\n    left: -7px\n\n.{css-prefix}arrow-top .{css-prefix}popup-arrow-fill\n    border-top: none\n    border-right: 7px solid transparent\n    border-bottom: 7px solid #ffffff\n    border-left: 7px solid transparent\n    left: -7px\n    top: 1px\n\n.{css-prefix}arrow-right .{css-prefix}popup-arrow-fill\n    border-top: 7px solid transparent\n    border-right: none\n    border-bottom: 7px solid transparent\n    border-left: 7px solid #ffffff\n    top: -7px\n    right: 1px\n\n.{css-prefix}arrow-bottom .{css-prefix}popup-arrow-fill\n    border-top: 7px solid #ffffff\n    border-right: 7px solid transparent\n    border-bottom: none\n    border-left: 7px solid transparent\n    left: -7px\n    bottom: 1px\n\n.{css-prefix}arrow-left .{css-prefix}popup-arrow-fill\n    border-top: 7px solid transparent\n    border-right: 7px solid #ffffff\n    border-bottom: 7px solid transparent\n    border-left: none\n    top: -7px\n    left: 1px\n\n.{css-prefix}button\n    background: #ffffff\n    border: 1px solid #d5d5d5\n    border-radius: 2px\n    text-align: center\n    outline: none\n    font-size: 12px\n    cursor: pointer\n    color: #333\n\n    &:hover\n        border-color: #bbbbbb\n        color: #333333\n\n\n.{css-prefix}button:active\n    background: #f9f9f9\n    color: #333333\n\n\n.{css-prefix}button .round\n  border-radius: 25px\n\n.{css-prefix}confirm\n  width: 96px\n  height: 36px\n  border-radius: 40px\n  background-color: #ff6618\n  font-size: 12px\n  font-weight: bold\n  color: #ffffff\n  border: none\n\n.{css-prefix}confirm:hover\n  background-color: #e55b15\n  color: #ffffff\n\n.{css-prefix}confirm:active\n  background-color: #d95614\n  color: #ffffff\n\n/* icon styles */\n.{css-prefix}icon.{css-prefix}right\n  float: right\n  top: 1px\n\n.{css-prefix}icon .{css-prefix}none\n  display: none\n\n.{css-prefix}icon.{css-prefix}calendar-dot\n  border-radius: 8px;\n  width: 12px;\n  height: 12px;\n  margin: 1px;\n\ninput[type='checkbox'].{css-prefix}checkbox-square\n  display: none\n\ninput[type='checkbox'].{css-prefix}checkbox-square + span\n  display: inline-block\n  cursor: pointer\n  line-height: 14px\n  margin-right: 8px\n  width: 14px\n  height: 14px\n  background: url('image/ic-checkbox-normal.png') no-repeat\n  vertical-align: middle\n\ninput[type='checkbox'].{css-prefix}checkbox-square:checked + span {\n  background: url('image/ic-checkbox-checked.png') no-repeat;\n}\n\ninput[type='checkbox'].{css-prefix}checkbox-round\n  display: none\n\ninput[type='checkbox'].{css-prefix}checkbox-round + span\n  display: inline-block\n  cursor: pointer\n  width: 14px\n  height: 14px\n  line-height: 14px\n  vertical-align: middle\n  margin-right: 8px\n  border-radius: 8px\n  border: solid 2px\n  background: transparent\n\n.{css-prefix}popup-top-line\n  position: absolute\n  border-radius: 2px 2px 0 0\n  width: 100%\n  height: 4px\n  border: none\n  top: 0\n\n.{css-prefix}popup-detail .{css-prefix}popup-container\n  width: 301px\n  min-width: 301px\n  padding-bottom: 0\n\n.{css-prefix}popup-detail .{css-prefix}icon\n  width: 12px\n  height: 12px\n  background-size: 12px\n  position: relative\n  margin-right: 8px\n\n.{css-prefix}popup-detail .{css-prefix}icon.{css-prefix}ic-location-b\n  top: -2px\n\n.{css-prefix}popup-detail .{css-prefix}icon.{css-prefix}ic-user-b\n  top: -2px\n\n.{css-prefix}popup-detail .{css-prefix}icon.{css-prefix}ic-state-b\n  top: -1px\n\n.{css-prefix}popup-detail .{css-prefix}icon.{css-prefix}calendar-dot\n  width: 10px\n  height: 10px\n  margin-right: 8px\n  top: -1px\n\n.{css-prefix}popup-detail .{css-prefix}content\n  line-height: 24px\n  height: 24px\n  font-size: 12px\n  line-height: 2\n\n.{css-prefix}popup-detail .{css-prefix}section-header\n  margin-bottom: 6px\n\n.{css-prefix}popup-detail .{css-prefix}popup-detail-item-separate\n  margin-top: 4px\n\n.{css-prefix}popup-detail .{css-prefix}popup-detail-item-indent\n  text-indent: -20px\n  padding-left: 20px\n\n.{css-prefix}popup-detail .{css-prefix}schedule-title\n  font-size: 15px\n  font-weight: bold\n  line-height: 1.6\n  word-break: break-all\n\n.{css-prefix}popup-detail .{css-prefix}schedule-private\n  display: none\n  width: 16px\n  height: 16px\n  background: url('image/ic-lock.png') no-repeat 16px\n\n.{css-prefix}popup-detail .{css-prefix}schedule-private .{css-prefix}ic-private\n  display: block\n\n.{css-prefix}popup-detail .{css-prefix}section-detail\n  margin-bottom: 16px\n\n.{css-prefix}popup-detail .{css-prefix}section-button\n  border-top: 1px solid #e5e5e5\n  font-size: 0\n\n.{css-prefix}section-button .{css-prefix}icon\n  margin-right: 4px\n  top: -3px\n\n.{css-prefix}section-button .{css-prefix}content\n  position: relative\n  top: 2px\n\n.{css-prefix}popup-edit, .{css-prefix}popup-delete\n  display: inline-block\n  padding: 7px 9px 11px 9px\n  width: calc(50% - 1px)\n  outline: none\n  background: none\n  border: none\n  cursor: pointer\n\n.{css-prefix}popup-vertical-line\n  background: #e5e5e5\n  width: 1px\n  height: 14px\n  vertical-align: middle\n  display: inline-block\n  margin-top: -7px\n\n/* override tui-date-picker */\n.tui-datepicker\n    left: -12px\n    z-index: 1\n    border-color: #d5d5d5\n","/* icon styles */\n.{css-prefix}icon {\n  width: 14px;\n  height: 14px;\n  display: inline-block;\n  vertical-align: middle;\n}\n\n.{css-prefix}icon.{css-prefix}ic-title\n    background: url('image/ic-subject.png') no-repeat\n\n.{css-prefix}icon.{css-prefix}ic-location\n    background: url('image/ic-location.png') no-repeat\n\n.{css-prefix}icon.{css-prefix}ic-date\n    background: url('image/ic-date.png') no-repeat\n\n.{css-prefix}icon.{css-prefix}ic-state\n    background: url('image/ic-state.png') no-repeat\n\n.{css-prefix}icon.{css-prefix}ic-private\n    background: url('image/ic-lock.png') no-repeat\n\n.{css-prefix}icon.{css-prefix}ic-close\n    background: url('image/ic-close.png') no-repeat\n\n\n.{css-prefix}ic-location-b\n    background: url('./image/ic-location-b.png')\n\n.{css-prefix}ic-state-b\n    background: url('./image/ic-state-b.png')\n\n.{css-prefix}icon.{css-prefix}ic-user-b\n    background-image: url('./image/ic-user-b.png')\n\n.{css-prefix}icon.{css-prefix}ic-edit\n    background-image: url('./image/ic-edit.png')\n\n.{css-prefix}icon.{css-prefix}ic-delete\n    background-image: url('./image/ic-delete.png')\n\n.{css-prefix}icon.{css-prefix}ic-arrow-solid-top\n    background: url('image/ic-arrow-solid-top.png') no-repeat\n\n.{css-prefix}icon.{css-prefix}ic-milestone\n    background: url('image/ic-milestone.png') no-repeat\n\n.{css-prefix}icon.{css-prefix}ic-arrow-left\n    background: url('image/ic-arrow-left.png') no-repeat\n\n.{css-prefix}icon.{css-prefix}ic-arrow-right\n    background: url('image/ic-arrow-right.png') no-repeat\n\n.{css-prefix}ic-repeat-b\n    background: url('./image/ic-repeat-b.png')\n"],"sourceRoot":""}
\ No newline at end of file
diff --git a/admin/js/vendors/tui.calendar/tui-calendar.js b/admin/js/vendors/tui.calendar/tui-calendar.js
new file mode 100644 (file)
index 0000000..51ea54e
--- /dev/null
@@ -0,0 +1,26322 @@
+/*!
+ * TOAST UI Calendar
+ * @version 1.12.14 | Tue Sep 22 2020
+ * @author NHN FE Development Lab <dl_javascript@nhn.com>
+ * @license MIT
+ */
+(function webpackUniversalModuleDefinition(root, factory) {
+       if(typeof exports === 'object' && typeof module === 'object')
+               module.exports = factory(require("tui-code-snippet"), require("tui-date-picker"));
+       else if(typeof define === 'function' && define.amd)
+               define(["tui-code-snippet", "tui-date-picker"], factory);
+       else if(typeof exports === 'object')
+               exports["Calendar"] = factory(require("tui-code-snippet"), require("tui-date-picker"));
+       else
+               root["tui"] = root["tui"] || {}, root["tui"]["Calendar"] = factory((root["tui"] && root["tui"]["util"]), (root["tui"] && root["tui"]["DatePicker"]));
+})(window, function(__WEBPACK_EXTERNAL_MODULE_tui_code_snippet__, __WEBPACK_EXTERNAL_MODULE_tui_date_picker__) {
+return /******/ (function(modules) { // webpackBootstrap
+/******/       // The module cache
+/******/       var installedModules = {};
+/******/
+/******/       // The require function
+/******/       function __webpack_require__(moduleId) {
+/******/
+/******/               // Check if module is in cache
+/******/               if(installedModules[moduleId]) {
+/******/                       return installedModules[moduleId].exports;
+/******/               }
+/******/               // Create a new module (and put it into the cache)
+/******/               var module = installedModules[moduleId] = {
+/******/                       i: moduleId,
+/******/                       l: false,
+/******/                       exports: {}
+/******/               };
+/******/
+/******/               // Execute the module function
+/******/               modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/               // Flag the module as loaded
+/******/               module.l = true;
+/******/
+/******/               // Return the exports of the module
+/******/               return module.exports;
+/******/       }
+/******/
+/******/
+/******/       // expose the modules object (__webpack_modules__)
+/******/       __webpack_require__.m = modules;
+/******/
+/******/       // expose the module cache
+/******/       __webpack_require__.c = installedModules;
+/******/
+/******/       // define getter function for harmony exports
+/******/       __webpack_require__.d = function(exports, name, getter) {
+/******/               if(!__webpack_require__.o(exports, name)) {
+/******/                       Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/               }
+/******/       };
+/******/
+/******/       // define __esModule on exports
+/******/       __webpack_require__.r = function(exports) {
+/******/               if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/                       Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/               }
+/******/               Object.defineProperty(exports, '__esModule', { value: true });
+/******/       };
+/******/
+/******/       // create a fake namespace object
+/******/       // mode & 1: value is a module id, require it
+/******/       // mode & 2: merge all properties of value into the ns
+/******/       // mode & 4: return value when already ns object
+/******/       // mode & 8|1: behave like require
+/******/       __webpack_require__.t = function(value, mode) {
+/******/               if(mode & 1) value = __webpack_require__(value);
+/******/               if(mode & 8) return value;
+/******/               if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/               var ns = Object.create(null);
+/******/               __webpack_require__.r(ns);
+/******/               Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/               if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/               return ns;
+/******/       };
+/******/
+/******/       // getDefaultExport function for compatibility with non-harmony modules
+/******/       __webpack_require__.n = function(module) {
+/******/               var getter = module && module.__esModule ?
+/******/                       function getDefault() { return module['default']; } :
+/******/                       function getModuleExports() { return module; };
+/******/               __webpack_require__.d(getter, 'a', getter);
+/******/               return getter;
+/******/       };
+/******/
+/******/       // Object.prototype.hasOwnProperty.call
+/******/       __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/       // __webpack_public_path__
+/******/       __webpack_require__.p = "/dist";
+/******/
+/******/
+/******/       // Load entry module and return exports
+/******/       return __webpack_require__(__webpack_require__.s = "./src/index.js");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./node_modules/handlebars-template-loader/runtime/index.js":
+/*!******************************************************************!*\
+  !*** ./node_modules/handlebars-template-loader/runtime/index.js ***!
+  \******************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+module.exports = __webpack_require__(/*! handlebars/runtime */ "./node_modules/handlebars/dist/cjs/handlebars.runtime.js");
+
+/***/ }),
+
+/***/ "./node_modules/handlebars/dist/cjs/handlebars.runtime.js":
+/*!****************************************************************!*\
+  !*** ./node_modules/handlebars/dist/cjs/handlebars.runtime.js ***!
+  \****************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+exports.__esModule = true;
+// istanbul ignore next
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
+
+// istanbul ignore next
+
+function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } }
+
+var _handlebarsBase = __webpack_require__(/*! ./handlebars/base */ "./node_modules/handlebars/dist/cjs/handlebars/base.js");
+
+var base = _interopRequireWildcard(_handlebarsBase);
+
+// Each of these augment the Handlebars object. No need to setup here.
+// (This is done to easily share code between commonjs and browse envs)
+
+var _handlebarsSafeString = __webpack_require__(/*! ./handlebars/safe-string */ "./node_modules/handlebars/dist/cjs/handlebars/safe-string.js");
+
+var _handlebarsSafeString2 = _interopRequireDefault(_handlebarsSafeString);
+
+var _handlebarsException = __webpack_require__(/*! ./handlebars/exception */ "./node_modules/handlebars/dist/cjs/handlebars/exception.js");
+
+var _handlebarsException2 = _interopRequireDefault(_handlebarsException);
+
+var _handlebarsUtils = __webpack_require__(/*! ./handlebars/utils */ "./node_modules/handlebars/dist/cjs/handlebars/utils.js");
+
+var Utils = _interopRequireWildcard(_handlebarsUtils);
+
+var _handlebarsRuntime = __webpack_require__(/*! ./handlebars/runtime */ "./node_modules/handlebars/dist/cjs/handlebars/runtime.js");
+
+var runtime = _interopRequireWildcard(_handlebarsRuntime);
+
+var _handlebarsNoConflict = __webpack_require__(/*! ./handlebars/no-conflict */ "./node_modules/handlebars/dist/cjs/handlebars/no-conflict.js");
+
+var _handlebarsNoConflict2 = _interopRequireDefault(_handlebarsNoConflict);
+
+// For compatibility and usage outside of module systems, make the Handlebars object a namespace
+function create() {
+  var hb = new base.HandlebarsEnvironment();
+
+  Utils.extend(hb, base);
+  hb.SafeString = _handlebarsSafeString2['default'];
+  hb.Exception = _handlebarsException2['default'];
+  hb.Utils = Utils;
+  hb.escapeExpression = Utils.escapeExpression;
+
+  hb.VM = runtime;
+  hb.template = function (spec) {
+    return runtime.template(spec, hb);
+  };
+
+  return hb;
+}
+
+var inst = create();
+inst.create = create;
+
+_handlebarsNoConflict2['default'](inst);
+
+inst['default'] = inst;
+
+exports['default'] = inst;
+module.exports = exports['default'];
+//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9oYW5kbGViYXJzLnJ1bnRpbWUuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OEJBQXNCLG1CQUFtQjs7SUFBN0IsSUFBSTs7Ozs7b0NBSU8sMEJBQTBCOzs7O21DQUMzQix3QkFBd0I7Ozs7K0JBQ3ZCLG9CQUFvQjs7SUFBL0IsS0FBSzs7aUNBQ1Esc0JBQXNCOztJQUFuQyxPQUFPOztvQ0FFSSwwQkFBMEI7Ozs7O0FBR2pELFNBQVMsTUFBTSxHQUFHO0FBQ2hCLE1BQUksRUFBRSxHQUFHLElBQUksSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7O0FBRTFDLE9BQUssQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ3ZCLElBQUUsQ0FBQyxVQUFVLG9DQUFhLENBQUM7QUFDM0IsSUFBRSxDQUFDLFNBQVMsbUNBQVksQ0FBQztBQUN6QixJQUFFLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztBQUNqQixJQUFFLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDLGdCQUFnQixDQUFDOztBQUU3QyxJQUFFLENBQUMsRUFBRSxHQUFHLE9BQU8sQ0FBQztBQUNoQixJQUFFLENBQUMsUUFBUSxHQUFHLFVBQVMsSUFBSSxFQUFFO0FBQzNCLFdBQU8sT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7R0FDbkMsQ0FBQzs7QUFFRixTQUFPLEVBQUUsQ0FBQztDQUNYOztBQUVELElBQUksSUFBSSxHQUFHLE1BQU0sRUFBRSxDQUFDO0FBQ3BCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDOztBQUVyQixrQ0FBVyxJQUFJLENBQUMsQ0FBQzs7QUFFakIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLElBQUksQ0FBQzs7cUJBRVIsSUFBSSIsImZpbGUiOiJoYW5kbGViYXJzLnJ1bnRpbWUuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBiYXNlIGZyb20gJy4vaGFuZGxlYmFycy9iYXNlJztcblxuLy8gRWFjaCBvZiB0aGVzZSBhdWdtZW50IHRoZSBIYW5kbGViYXJzIG9iamVjdC4gTm8gbmVlZCB0byBzZXR1cCBoZXJlLlxuLy8gKFRoaXMgaXMgZG9uZSB0byBlYXNpbHkgc2hhcmUgY29kZSBiZXR3ZWVuIGNvbW1vbmpzIGFuZCBicm93c2UgZW52cylcbmltcG9ydCBTYWZlU3RyaW5nIGZyb20gJy4vaGFuZGxlYmFycy9zYWZlLXN0cmluZyc7XG5pbXBvcnQgRXhjZXB0aW9uIGZyb20gJy4vaGFuZGxlYmFycy9leGNlcHRpb24nO1xuaW1wb3J0ICogYXMgVXRpbHMgZnJvbSAnLi9oYW5kbGViYXJzL3V0aWxzJztcbmltcG9ydCAqIGFzIHJ1bnRpbWUgZnJvbSAnLi9oYW5kbGViYXJzL3J1bnRpbWUnO1xuXG5pbXBvcnQgbm9Db25mbGljdCBmcm9tICcuL2hhbmRsZWJhcnMvbm8tY29uZmxpY3QnO1xuXG4vLyBGb3IgY29tcGF0aWJpbGl0eSBhbmQgdXNhZ2Ugb3V0c2lkZSBvZiBtb2R1bGUgc3lzdGVtcywgbWFrZSB0aGUgSGFuZGxlYmFycyBvYmplY3QgYSBuYW1lc3BhY2VcbmZ1bmN0aW9uIGNyZWF0ZSgpIHtcbiAgbGV0IGhiID0gbmV3IGJhc2UuSGFuZGxlYmFyc0Vudmlyb25tZW50KCk7XG5cbiAgVXRpbHMuZXh0ZW5kKGhiLCBiYXNlKTtcbiAgaGIuU2FmZVN0cmluZyA9IFNhZmVTdHJpbmc7XG4gIGhiLkV4Y2VwdGlvbiA9IEV4Y2VwdGlvbjtcbiAgaGIuVXRpbHMgPSBVdGlscztcbiAgaGIuZXNjYXBlRXhwcmVzc2lvbiA9IFV0aWxzLmVzY2FwZUV4cHJlc3Npb247XG5cbiAgaGIuVk0gPSBydW50aW1lO1xuICBoYi50ZW1wbGF0ZSA9IGZ1bmN0aW9uKHNwZWMpIHtcbiAgICByZXR1cm4gcnVudGltZS50ZW1wbGF0ZShzcGVjLCBoYik7XG4gIH07XG5cbiAgcmV0dXJuIGhiO1xufVxuXG5sZXQgaW5zdCA9IGNyZWF0ZSgpO1xuaW5zdC5jcmVhdGUgPSBjcmVhdGU7XG5cbm5vQ29uZmxpY3QoaW5zdCk7XG5cbmluc3RbJ2RlZmF1bHQnXSA9IGluc3Q7XG5cbmV4cG9ydCBkZWZhdWx0IGluc3Q7XG4iXX0=
+
+
+/***/ }),
+
+/***/ "./node_modules/handlebars/dist/cjs/handlebars/base.js":
+/*!*************************************************************!*\
+  !*** ./node_modules/handlebars/dist/cjs/handlebars/base.js ***!
+  \*************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+exports.__esModule = true;
+exports.HandlebarsEnvironment = HandlebarsEnvironment;
+// istanbul ignore next
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
+
+var _utils = __webpack_require__(/*! ./utils */ "./node_modules/handlebars/dist/cjs/handlebars/utils.js");
+
+var _exception = __webpack_require__(/*! ./exception */ "./node_modules/handlebars/dist/cjs/handlebars/exception.js");
+
+var _exception2 = _interopRequireDefault(_exception);
+
+var _helpers = __webpack_require__(/*! ./helpers */ "./node_modules/handlebars/dist/cjs/handlebars/helpers.js");
+
+var _decorators = __webpack_require__(/*! ./decorators */ "./node_modules/handlebars/dist/cjs/handlebars/decorators.js");
+
+var _logger = __webpack_require__(/*! ./logger */ "./node_modules/handlebars/dist/cjs/handlebars/logger.js");
+
+var _logger2 = _interopRequireDefault(_logger);
+
+var _internalProtoAccess = __webpack_require__(/*! ./internal/proto-access */ "./node_modules/handlebars/dist/cjs/handlebars/internal/proto-access.js");
+
+var VERSION = '4.7.6';
+exports.VERSION = VERSION;
+var COMPILER_REVISION = 8;
+exports.COMPILER_REVISION = COMPILER_REVISION;
+var LAST_COMPATIBLE_COMPILER_REVISION = 7;
+
+exports.LAST_COMPATIBLE_COMPILER_REVISION = LAST_COMPATIBLE_COMPILER_REVISION;
+var REVISION_CHANGES = {
+  1: '<= 1.0.rc.2', // 1.0.rc.2 is actually rev2 but doesn't report it
+  2: '== 1.0.0-rc.3',
+  3: '== 1.0.0-rc.4',
+  4: '== 1.x.x',
+  5: '== 2.0.0-alpha.x',
+  6: '>= 2.0.0-beta.1',
+  7: '>= 4.0.0 <4.3.0',
+  8: '>= 4.3.0'
+};
+
+exports.REVISION_CHANGES = REVISION_CHANGES;
+var objectType = '[object Object]';
+
+function HandlebarsEnvironment(helpers, partials, decorators) {
+  this.helpers = helpers || {};
+  this.partials = partials || {};
+  this.decorators = decorators || {};
+
+  _helpers.registerDefaultHelpers(this);
+  _decorators.registerDefaultDecorators(this);
+}
+
+HandlebarsEnvironment.prototype = {
+  constructor: HandlebarsEnvironment,
+
+  logger: _logger2['default'],
+  log: _logger2['default'].log,
+
+  registerHelper: function registerHelper(name, fn) {
+    if (_utils.toString.call(name) === objectType) {
+      if (fn) {
+        throw new _exception2['default']('Arg not supported with multiple helpers');
+      }
+      _utils.extend(this.helpers, name);
+    } else {
+      this.helpers[name] = fn;
+    }
+  },
+  unregisterHelper: function unregisterHelper(name) {
+    delete this.helpers[name];
+  },
+
+  registerPartial: function registerPartial(name, partial) {
+    if (_utils.toString.call(name) === objectType) {
+      _utils.extend(this.partials, name);
+    } else {
+      if (typeof partial === 'undefined') {
+        throw new _exception2['default']('Attempting to register a partial called "' + name + '" as undefined');
+      }
+      this.partials[name] = partial;
+    }
+  },
+  unregisterPartial: function unregisterPartial(name) {
+    delete this.partials[name];
+  },
+
+  registerDecorator: function registerDecorator(name, fn) {
+    if (_utils.toString.call(name) === objectType) {
+      if (fn) {
+        throw new _exception2['default']('Arg not supported with multiple decorators');
+      }
+      _utils.extend(this.decorators, name);
+    } else {
+      this.decorators[name] = fn;
+    }
+  },
+  unregisterDecorator: function unregisterDecorator(name) {
+    delete this.decorators[name];
+  },
+  /**
+   * Reset the memory of illegal property accesses that have already been logged.
+   * @deprecated should only be used in handlebars test-cases
+   */
+  resetLoggedPropertyAccesses: function resetLoggedPropertyAccesses() {
+    _internalProtoAccess.resetLoggedProperties();
+  }
+};
+
+var log = _logger2['default'].log;
+
+exports.log = log;
+exports.createFrame = _utils.createFrame;
+exports.logger = _logger2['default'];
+//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2Jhc2UuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7cUJBQThDLFNBQVM7O3lCQUNqQyxhQUFhOzs7O3VCQUNJLFdBQVc7OzBCQUNSLGNBQWM7O3NCQUNyQyxVQUFVOzs7O21DQUNTLHlCQUF5Qjs7QUFFeEQsSUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDOztBQUN4QixJQUFNLGlCQUFpQixHQUFHLENBQUMsQ0FBQzs7QUFDNUIsSUFBTSxpQ0FBaUMsR0FBRyxDQUFDLENBQUM7OztBQUU1QyxJQUFNLGdCQUFnQixHQUFHO0FBQzlCLEdBQUMsRUFBRSxhQUFhO0FBQ2hCLEdBQUMsRUFBRSxlQUFlO0FBQ2xCLEdBQUMsRUFBRSxlQUFlO0FBQ2xCLEdBQUMsRUFBRSxVQUFVO0FBQ2IsR0FBQyxFQUFFLGtCQUFrQjtBQUNyQixHQUFDLEVBQUUsaUJBQWlCO0FBQ3BCLEdBQUMsRUFBRSxpQkFBaUI7QUFDcEIsR0FBQyxFQUFFLFVBQVU7Q0FDZCxDQUFDOzs7QUFFRixJQUFNLFVBQVUsR0FBRyxpQkFBaUIsQ0FBQzs7QUFFOUIsU0FBUyxxQkFBcUIsQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRTtBQUNuRSxNQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sSUFBSSxFQUFFLENBQUM7QUFDN0IsTUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLElBQUksRUFBRSxDQUFDO0FBQy9CLE1BQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxJQUFJLEVBQUUsQ0FBQzs7QUFFbkMsa0NBQXVCLElBQUksQ0FBQyxDQUFDO0FBQzdCLHdDQUEwQixJQUFJLENBQUMsQ0FBQztDQUNqQzs7QUFFRCxxQkFBcUIsQ0FBQyxTQUFTLEdBQUc7QUFDaEMsYUFBVyxFQUFFLHFCQUFxQjs7QUFFbEMsUUFBTSxxQkFBUTtBQUNkLEtBQUcsRUFBRSxvQkFBTyxHQUFHOztBQUVmLGdCQUFjLEVBQUUsd0JBQVMsSUFBSSxFQUFFLEVBQUUsRUFBRTtBQUNqQyxRQUFJLGdCQUFTLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxVQUFVLEVBQUU7QUFDdEMsVUFBSSxFQUFFLEVBQUU7QUFDTixjQUFNLDJCQUFjLHlDQUF5QyxDQUFDLENBQUM7T0FDaEU7QUFDRCxvQkFBTyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO0tBQzVCLE1BQU07QUFDTCxVQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztLQUN6QjtHQUNGO0FBQ0Qsa0JBQWdCLEVBQUUsMEJBQVMsSUFBSSxFQUFFO0FBQy9CLFdBQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztHQUMzQjs7QUFFRCxpQkFBZSxFQUFFLHlCQUFTLElBQUksRUFBRSxPQUFPLEVBQUU7QUFDdkMsUUFBSSxnQkFBUyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssVUFBVSxFQUFFO0FBQ3RDLG9CQUFPLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7S0FDN0IsTUFBTTtBQUNMLFVBQUksT0FBTyxPQUFPLEtBQUssV0FBVyxFQUFFO0FBQ2xDLGNBQU0seUVBQ3dDLElBQUksb0JBQ2pELENBQUM7T0FDSDtBQUNELFVBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsT0FBTyxDQUFDO0tBQy9CO0dBQ0Y7QUFDRCxtQkFBaUIsRUFBRSwyQkFBUyxJQUFJLEVBQUU7QUFDaEMsV0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0dBQzVCOztBQUVELG1CQUFpQixFQUFFLDJCQUFTLElBQUksRUFBRSxFQUFFLEVBQUU7QUFDcEMsUUFBSSxnQkFBUyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssVUFBVSxFQUFFO0FBQ3RDLFVBQUksRUFBRSxFQUFFO0FBQ04sY0FBTSwyQkFBYyw0Q0FBNEMsQ0FBQyxDQUFDO09BQ25FO0FBQ0Qsb0JBQU8sSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQztLQUMvQixNQUFNO0FBQ0wsVUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7S0FDNUI7R0FDRjtBQUNELHFCQUFtQixFQUFFLDZCQUFTLElBQUksRUFBRTtBQUNsQyxXQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7R0FDOUI7Ozs7O0FBS0QsNkJBQTJCLEVBQUEsdUNBQUc7QUFDNUIsZ0RBQXVCLENBQUM7R0FDekI7Q0FDRixDQUFDOztBQUVLLElBQUksR0FBRyxHQUFHLG9CQUFPLEdBQUcsQ0FBQzs7O1FBRW5CLFdBQVc7UUFBRSxNQUFNIiwiZmlsZSI6ImJhc2UuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGVGcmFtZSwgZXh0ZW5kLCB0b1N0cmluZyB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IEV4Y2VwdGlvbiBmcm9tICcuL2V4Y2VwdGlvbic7XG5pbXBvcnQgeyByZWdpc3RlckRlZmF1bHRIZWxwZXJzIH0gZnJvbSAnLi9oZWxwZXJzJztcbmltcG9ydCB7IHJlZ2lzdGVyRGVmYXVsdERlY29yYXRvcnMgfSBmcm9tICcuL2RlY29yYXRvcnMnO1xuaW1wb3J0IGxvZ2dlciBmcm9tICcuL2xvZ2dlcic7XG5pbXBvcnQgeyByZXNldExvZ2dlZFByb3BlcnRpZXMgfSBmcm9tICcuL2ludGVybmFsL3Byb3RvLWFjY2Vzcyc7XG5cbmV4cG9ydCBjb25zdCBWRVJTSU9OID0gJzQuNy42JztcbmV4cG9ydCBjb25zdCBDT01QSUxFUl9SRVZJU0lPTiA9IDg7XG5leHBvcnQgY29uc3QgTEFTVF9DT01QQVRJQkxFX0NPTVBJTEVSX1JFVklTSU9OID0gNztcblxuZXhwb3J0IGNvbnN0IFJFVklTSU9OX0NIQU5HRVMgPSB7XG4gIDE6ICc8PSAxLjAucmMuMicsIC8vIDEuMC5yYy4yIGlzIGFjdHVhbGx5IHJldjIgYnV0IGRvZXNuJ3QgcmVwb3J0IGl0XG4gIDI6ICc9PSAxLjAuMC1yYy4zJyxcbiAgMzogJz09IDEuMC4wLXJjLjQnLFxuICA0OiAnPT0gMS54LngnLFxuICA1OiAnPT0gMi4wLjAtYWxwaGEueCcsXG4gIDY6ICc+PSAyLjAuMC1iZXRhLjEnLFxuICA3OiAnPj0gNC4wLjAgPDQuMy4wJyxcbiAgODogJz49IDQuMy4wJ1xufTtcblxuY29uc3Qgb2JqZWN0VHlwZSA9ICdbb2JqZWN0IE9iamVjdF0nO1xuXG5leHBvcnQgZnVuY3Rpb24gSGFuZGxlYmFyc0Vudmlyb25tZW50KGhlbHBlcnMsIHBhcnRpYWxzLCBkZWNvcmF0b3JzKSB7XG4gIHRoaXMuaGVscGVycyA9IGhlbHBlcnMgfHwge307XG4gIHRoaXMucGFydGlhbHMgPSBwYXJ0aWFscyB8fCB7fTtcbiAgdGhpcy5kZWNvcmF0b3JzID0gZGVjb3JhdG9ycyB8fCB7fTtcblxuICByZWdpc3RlckRlZmF1bHRIZWxwZXJzKHRoaXMpO1xuICByZWdpc3RlckRlZmF1bHREZWNvcmF0b3JzKHRoaXMpO1xufVxuXG5IYW5kbGViYXJzRW52aXJvbm1lbnQucHJvdG90eXBlID0ge1xuICBjb25zdHJ1Y3RvcjogSGFuZGxlYmFyc0Vudmlyb25tZW50LFxuXG4gIGxvZ2dlcjogbG9nZ2VyLFxuICBsb2c6IGxvZ2dlci5sb2csXG5cbiAgcmVnaXN0ZXJIZWxwZXI6IGZ1bmN0aW9uKG5hbWUsIGZuKSB7XG4gICAgaWYgKHRvU3RyaW5nLmNhbGwobmFtZSkgPT09IG9iamVjdFR5cGUpIHtcbiAgICAgIGlmIChmbikge1xuICAgICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCdBcmcgbm90IHN1cHBvcnRlZCB3aXRoIG11bHRpcGxlIGhlbHBlcnMnKTtcbiAgICAgIH1cbiAgICAgIGV4dGVuZCh0aGlzLmhlbHBlcnMsIG5hbWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmhlbHBlcnNbbmFtZV0gPSBmbjtcbiAgICB9XG4gIH0sXG4gIHVucmVnaXN0ZXJIZWxwZXI6IGZ1bmN0aW9uKG5hbWUpIHtcbiAgICBkZWxldGUgdGhpcy5oZWxwZXJzW25hbWVdO1xuICB9LFxuXG4gIHJlZ2lzdGVyUGFydGlhbDogZnVuY3Rpb24obmFtZSwgcGFydGlhbCkge1xuICAgIGlmICh0b1N0cmluZy5jYWxsKG5hbWUpID09PSBvYmplY3RUeXBlKSB7XG4gICAgICBleHRlbmQodGhpcy5wYXJ0aWFscywgbmFtZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh0eXBlb2YgcGFydGlhbCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbihcbiAgICAgICAgICBgQXR0ZW1wdGluZyB0byByZWdpc3RlciBhIHBhcnRpYWwgY2FsbGVkIFwiJHtuYW1lfVwiIGFzIHVuZGVmaW5lZGBcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHRoaXMucGFydGlhbHNbbmFtZV0gPSBwYXJ0aWFsO1xuICAgIH1cbiAgfSxcbiAgdW5yZWdpc3RlclBhcnRpYWw6IGZ1bmN0aW9uKG5hbWUpIHtcbiAgICBkZWxldGUgdGhpcy5wYXJ0aWFsc1tuYW1lXTtcbiAgfSxcblxuICByZWdpc3RlckRlY29yYXRvcjogZnVuY3Rpb24obmFtZSwgZm4pIHtcbiAgICBpZiAodG9TdHJpbmcuY2FsbChuYW1lKSA9PT0gb2JqZWN0VHlwZSkge1xuICAgICAgaWYgKGZuKSB7XG4gICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ0FyZyBub3Qgc3VwcG9ydGVkIHdpdGggbXVsdGlwbGUgZGVjb3JhdG9ycycpO1xuICAgICAgfVxuICAgICAgZXh0ZW5kKHRoaXMuZGVjb3JhdG9ycywgbmFtZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZGVjb3JhdG9yc1tuYW1lXSA9IGZuO1xuICAgIH1cbiAgfSxcbiAgdW5yZWdpc3RlckRlY29yYXRvcjogZnVuY3Rpb24obmFtZSkge1xuICAgIGRlbGV0ZSB0aGlzLmRlY29yYXRvcnNbbmFtZV07XG4gIH0sXG4gIC8qKlxuICAgKiBSZXNldCB0aGUgbWVtb3J5IG9mIGlsbGVnYWwgcHJvcGVydHkgYWNjZXNzZXMgdGhhdCBoYXZlIGFscmVhZHkgYmVlbiBsb2dnZWQuXG4gICAqIEBkZXByZWNhdGVkIHNob3VsZCBvbmx5IGJlIHVzZWQgaW4gaGFuZGxlYmFycyB0ZXN0LWNhc2VzXG4gICAqL1xuICByZXNldExvZ2dlZFByb3BlcnR5QWNjZXNzZXMoKSB7XG4gICAgcmVzZXRMb2dnZWRQcm9wZXJ0aWVzKCk7XG4gIH1cbn07XG5cbmV4cG9ydCBsZXQgbG9nID0gbG9nZ2VyLmxvZztcblxuZXhwb3J0IHsgY3JlYXRlRnJhbWUsIGxvZ2dlciB9O1xuIl19
+
+
+/***/ }),
+
+/***/ "./node_modules/handlebars/dist/cjs/handlebars/decorators.js":
+/*!*******************************************************************!*\
+  !*** ./node_modules/handlebars/dist/cjs/handlebars/decorators.js ***!
+  \*******************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+exports.__esModule = true;
+exports.registerDefaultDecorators = registerDefaultDecorators;
+// istanbul ignore next
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
+
+var _decoratorsInline = __webpack_require__(/*! ./decorators/inline */ "./node_modules/handlebars/dist/cjs/handlebars/decorators/inline.js");
+
+var _decoratorsInline2 = _interopRequireDefault(_decoratorsInline);
+
+function registerDefaultDecorators(instance) {
+  _decoratorsInline2['default'](instance);
+}
+//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2RlY29yYXRvcnMuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Z0NBQTJCLHFCQUFxQjs7OztBQUV6QyxTQUFTLHlCQUF5QixDQUFDLFFBQVEsRUFBRTtBQUNsRCxnQ0FBZSxRQUFRLENBQUMsQ0FBQztDQUMxQiIsImZpbGUiOiJkZWNvcmF0b3JzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHJlZ2lzdGVySW5saW5lIGZyb20gJy4vZGVjb3JhdG9ycy9pbmxpbmUnO1xuXG5leHBvcnQgZnVuY3Rpb24gcmVnaXN0ZXJEZWZhdWx0RGVjb3JhdG9ycyhpbnN0YW5jZSkge1xuICByZWdpc3RlcklubGluZShpbnN0YW5jZSk7XG59XG4iXX0=
+
+
+/***/ }),
+
+/***/ "./node_modules/handlebars/dist/cjs/handlebars/decorators/inline.js":
+/*!**************************************************************************!*\
+  !*** ./node_modules/handlebars/dist/cjs/handlebars/decorators/inline.js ***!
+  \**************************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+exports.__esModule = true;
+
+var _utils = __webpack_require__(/*! ../utils */ "./node_modules/handlebars/dist/cjs/handlebars/utils.js");
+
+exports['default'] = function (instance) {
+  instance.registerDecorator('inline', function (fn, props, container, options) {
+    var ret = fn;
+    if (!props.partials) {
+      props.partials = {};
+      ret = function (context, options) {
+        // Create a new partials stack frame prior to exec.
+        var original = container.partials;
+        container.partials = _utils.extend({}, original, props.partials);
+        var ret = fn(context, options);
+        container.partials = original;
+        return ret;
+      };
+    }
+
+    props.partials[options.args[0]] = options.fn;
+
+    return ret;
+  });
+};
+
+module.exports = exports['default'];
+//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2RlY29yYXRvcnMvaW5saW5lLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7cUJBQXVCLFVBQVU7O3FCQUVsQixVQUFTLFFBQVEsRUFBRTtBQUNoQyxVQUFRLENBQUMsaUJBQWlCLENBQUMsUUFBUSxFQUFFLFVBQVMsRUFBRSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFO0FBQzNFLFFBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQztBQUNiLFFBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFO0FBQ25CLFdBQUssQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO0FBQ3BCLFNBQUcsR0FBRyxVQUFTLE9BQU8sRUFBRSxPQUFPLEVBQUU7O0FBRS9CLFlBQUksUUFBUSxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUM7QUFDbEMsaUJBQVMsQ0FBQyxRQUFRLEdBQUcsY0FBTyxFQUFFLEVBQUUsUUFBUSxFQUFFLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUMxRCxZQUFJLEdBQUcsR0FBRyxFQUFFLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQy9CLGlCQUFTLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztBQUM5QixlQUFPLEdBQUcsQ0FBQztPQUNaLENBQUM7S0FDSDs7QUFFRCxTQUFLLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsRUFBRSxDQUFDOztBQUU3QyxXQUFPLEdBQUcsQ0FBQztHQUNaLENBQUMsQ0FBQztDQUNKIiwiZmlsZSI6ImlubGluZS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGV4dGVuZCB9IGZyb20gJy4uL3V0aWxzJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oaW5zdGFuY2UpIHtcbiAgaW5zdGFuY2UucmVnaXN0ZXJEZWNvcmF0b3IoJ2lubGluZScsIGZ1bmN0aW9uKGZuLCBwcm9wcywgY29udGFpbmVyLCBvcHRpb25zKSB7XG4gICAgbGV0IHJldCA9IGZuO1xuICAgIGlmICghcHJvcHMucGFydGlhbHMpIHtcbiAgICAgIHByb3BzLnBhcnRpYWxzID0ge307XG4gICAgICByZXQgPSBmdW5jdGlvbihjb250ZXh0LCBvcHRpb25zKSB7XG4gICAgICAgIC8vIENyZWF0ZSBhIG5ldyBwYXJ0aWFscyBzdGFjayBmcmFtZSBwcmlvciB0byBleGVjLlxuICAgICAgICBsZXQgb3JpZ2luYWwgPSBjb250YWluZXIucGFydGlhbHM7XG4gICAgICAgIGNvbnRhaW5lci5wYXJ0aWFscyA9IGV4dGVuZCh7fSwgb3JpZ2luYWwsIHByb3BzLnBhcnRpYWxzKTtcbiAgICAgICAgbGV0IHJldCA9IGZuKGNvbnRleHQsIG9wdGlvbnMpO1xuICAgICAgICBjb250YWluZXIucGFydGlhbHMgPSBvcmlnaW5hbDtcbiAgICAgICAgcmV0dXJuIHJldDtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcHJvcHMucGFydGlhbHNbb3B0aW9ucy5hcmdzWzBdXSA9IG9wdGlvbnMuZm47XG5cbiAgICByZXR1cm4gcmV0O1xuICB9KTtcbn1cbiJdfQ==
+
+
+/***/ }),
+
+/***/ "./node_modules/handlebars/dist/cjs/handlebars/exception.js":
+/*!******************************************************************!*\
+  !*** ./node_modules/handlebars/dist/cjs/handlebars/exception.js ***!
+  \******************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+exports.__esModule = true;
+var errorProps = ['description', 'fileName', 'lineNumber', 'endLineNumber', 'message', 'name', 'number', 'stack'];
+
+function Exception(message, node) {
+  var loc = node && node.loc,
+      line = undefined,
+      endLineNumber = undefined,
+      column = undefined,
+      endColumn = undefined;
+
+  if (loc) {
+    line = loc.start.line;
+    endLineNumber = loc.end.line;
+    column = loc.start.column;
+    endColumn = loc.end.column;
+
+    message += ' - ' + line + ':' + column;
+  }
+
+  var tmp = Error.prototype.constructor.call(this, message);
+
+  // Unfortunately errors are not enumerable in Chrome (at least), so `for prop in tmp` doesn't work.
+  for (var idx = 0; idx < errorProps.length; idx++) {
+    this[errorProps[idx]] = tmp[errorProps[idx]];
+  }
+
+  /* istanbul ignore else */
+  if (Error.captureStackTrace) {
+    Error.captureStackTrace(this, Exception);
+  }
+
+  try {
+    if (loc) {
+      this.lineNumber = line;
+      this.endLineNumber = endLineNumber;
+
+      // Work around issue under safari where we can't directly set the column value
+      /* istanbul ignore next */
+      if (Object.defineProperty) {
+        Object.defineProperty(this, 'column', {
+          value: column,
+          enumerable: true
+        });
+        Object.defineProperty(this, 'endColumn', {
+          value: endColumn,
+          enumerable: true
+        });
+      } else {
+        this.column = column;
+        this.endColumn = endColumn;
+      }
+    }
+  } catch (nop) {
+    /* Ignore if the browser is very particular */
+  }
+}
+
+Exception.prototype = new Error();
+
+exports['default'] = Exception;
+module.exports = exports['default'];
+//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2V4Y2VwdGlvbi5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxJQUFNLFVBQVUsR0FBRyxDQUNqQixhQUFhLEVBQ2IsVUFBVSxFQUNWLFlBQVksRUFDWixlQUFlLEVBQ2YsU0FBUyxFQUNULE1BQU0sRUFDTixRQUFRLEVBQ1IsT0FBTyxDQUNSLENBQUM7O0FBRUYsU0FBUyxTQUFTLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRTtBQUNoQyxNQUFJLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxDQUFDLEdBQUc7TUFDeEIsSUFBSSxZQUFBO01BQ0osYUFBYSxZQUFBO01BQ2IsTUFBTSxZQUFBO01BQ04sU0FBUyxZQUFBLENBQUM7O0FBRVosTUFBSSxHQUFHLEVBQUU7QUFDUCxRQUFJLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUM7QUFDdEIsaUJBQWEsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQztBQUM3QixVQUFNLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUM7QUFDMUIsYUFBUyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDOztBQUUzQixXQUFPLElBQUksS0FBSyxHQUFHLElBQUksR0FBRyxHQUFHLEdBQUcsTUFBTSxDQUFDO0dBQ3hDOztBQUVELE1BQUksR0FBRyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7OztBQUcxRCxPQUFLLElBQUksR0FBRyxHQUFHLENBQUMsRUFBRSxHQUFHLEdBQUcsVUFBVSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsRUFBRTtBQUNoRCxRQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0dBQzlDOzs7QUFHRCxNQUFJLEtBQUssQ0FBQyxpQkFBaUIsRUFBRTtBQUMzQixTQUFLLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0dBQzFDOztBQUVELE1BQUk7QUFDRixRQUFJLEdBQUcsRUFBRTtBQUNQLFVBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO0FBQ3ZCLFVBQUksQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFDOzs7O0FBSW5DLFVBQUksTUFBTSxDQUFDLGNBQWMsRUFBRTtBQUN6QixjQUFNLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUU7QUFDcEMsZUFBSyxFQUFFLE1BQU07QUFDYixvQkFBVSxFQUFFLElBQUk7U0FDakIsQ0FBQyxDQUFDO0FBQ0gsY0FBTSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsV0FBVyxFQUFFO0FBQ3ZDLGVBQUssRUFBRSxTQUFTO0FBQ2hCLG9CQUFVLEVBQUUsSUFBSTtTQUNqQixDQUFDLENBQUM7T0FDSixNQUFNO0FBQ0wsWUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7QUFDckIsWUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7T0FDNUI7S0FDRjtHQUNGLENBQUMsT0FBTyxHQUFHLEVBQUU7O0dBRWI7Q0FDRjs7QUFFRCxTQUFTLENBQUMsU0FBUyxHQUFHLElBQUksS0FBSyxFQUFFLENBQUM7O3FCQUVuQixTQUFTIiwiZmlsZSI6ImV4Y2VwdGlvbi5qcyIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IGVycm9yUHJvcHMgPSBbXG4gICdkZXNjcmlwdGlvbicsXG4gICdmaWxlTmFtZScsXG4gICdsaW5lTnVtYmVyJyxcbiAgJ2VuZExpbmVOdW1iZXInLFxuICAnbWVzc2FnZScsXG4gICduYW1lJyxcbiAgJ251bWJlcicsXG4gICdzdGFjaydcbl07XG5cbmZ1bmN0aW9uIEV4Y2VwdGlvbihtZXNzYWdlLCBub2RlKSB7XG4gIGxldCBsb2MgPSBub2RlICYmIG5vZGUubG9jLFxuICAgIGxpbmUsXG4gICAgZW5kTGluZU51bWJlcixcbiAgICBjb2x1bW4sXG4gICAgZW5kQ29sdW1uO1xuXG4gIGlmIChsb2MpIHtcbiAgICBsaW5lID0gbG9jLnN0YXJ0LmxpbmU7XG4gICAgZW5kTGluZU51bWJlciA9IGxvYy5lbmQubGluZTtcbiAgICBjb2x1bW4gPSBsb2Muc3RhcnQuY29sdW1uO1xuICAgIGVuZENvbHVtbiA9IGxvYy5lbmQuY29sdW1uO1xuXG4gICAgbWVzc2FnZSArPSAnIC0gJyArIGxpbmUgKyAnOicgKyBjb2x1bW47XG4gIH1cblxuICBsZXQgdG1wID0gRXJyb3IucHJvdG90eXBlLmNvbnN0cnVjdG9yLmNhbGwodGhpcywgbWVzc2FnZSk7XG5cbiAgLy8gVW5mb3J0dW5hdGVseSBlcnJvcnMgYXJlIG5vdCBlbnVtZXJhYmxlIGluIENocm9tZSAoYXQgbGVhc3QpLCBzbyBgZm9yIHByb3AgaW4gdG1wYCBkb2Vzbid0IHdvcmsuXG4gIGZvciAobGV0IGlkeCA9IDA7IGlkeCA8IGVycm9yUHJvcHMubGVuZ3RoOyBpZHgrKykge1xuICAgIHRoaXNbZXJyb3JQcm9wc1tpZHhdXSA9IHRtcFtlcnJvclByb3BzW2lkeF1dO1xuICB9XG5cbiAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgaWYgKEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKSB7XG4gICAgRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UodGhpcywgRXhjZXB0aW9uKTtcbiAgfVxuXG4gIHRyeSB7XG4gICAgaWYgKGxvYykge1xuICAgICAgdGhpcy5saW5lTnVtYmVyID0gbGluZTtcbiAgICAgIHRoaXMuZW5kTGluZU51bWJlciA9IGVuZExpbmVOdW1iZXI7XG5cbiAgICAgIC8vIFdvcmsgYXJvdW5kIGlzc3VlIHVuZGVyIHNhZmFyaSB3aGVyZSB3ZSBjYW4ndCBkaXJlY3RseSBzZXQgdGhlIGNvbHVtbiB2YWx1ZVxuICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgIGlmIChPYmplY3QuZGVmaW5lUHJvcGVydHkpIHtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsICdjb2x1bW4nLCB7XG4gICAgICAgICAgdmFsdWU6IGNvbHVtbixcbiAgICAgICAgICBlbnVtZXJhYmxlOiB0cnVlXG4gICAgICAgIH0pO1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgJ2VuZENvbHVtbicsIHtcbiAgICAgICAgICB2YWx1ZTogZW5kQ29sdW1uLFxuICAgICAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmNvbHVtbiA9IGNvbHVtbjtcbiAgICAgICAgdGhpcy5lbmRDb2x1bW4gPSBlbmRDb2x1bW47XG4gICAgICB9XG4gICAgfVxuICB9IGNhdGNoIChub3ApIHtcbiAgICAvKiBJZ25vcmUgaWYgdGhlIGJyb3dzZXIgaXMgdmVyeSBwYXJ0aWN1bGFyICovXG4gIH1cbn1cblxuRXhjZXB0aW9uLnByb3RvdHlwZSA9IG5ldyBFcnJvcigpO1xuXG5leHBvcnQgZGVmYXVsdCBFeGNlcHRpb247XG4iXX0=
+
+
+/***/ }),
+
+/***/ "./node_modules/handlebars/dist/cjs/handlebars/helpers.js":
+/*!****************************************************************!*\
+  !*** ./node_modules/handlebars/dist/cjs/handlebars/helpers.js ***!
+  \****************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+exports.__esModule = true;
+exports.registerDefaultHelpers = registerDefaultHelpers;
+exports.moveHelperToHooks = moveHelperToHooks;
+// istanbul ignore next
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
+
+var _helpersBlockHelperMissing = __webpack_require__(/*! ./helpers/block-helper-missing */ "./node_modules/handlebars/dist/cjs/handlebars/helpers/block-helper-missing.js");
+
+var _helpersBlockHelperMissing2 = _interopRequireDefault(_helpersBlockHelperMissing);
+
+var _helpersEach = __webpack_require__(/*! ./helpers/each */ "./node_modules/handlebars/dist/cjs/handlebars/helpers/each.js");
+
+var _helpersEach2 = _interopRequireDefault(_helpersEach);
+
+var _helpersHelperMissing = __webpack_require__(/*! ./helpers/helper-missing */ "./node_modules/handlebars/dist/cjs/handlebars/helpers/helper-missing.js");
+
+var _helpersHelperMissing2 = _interopRequireDefault(_helpersHelperMissing);
+
+var _helpersIf = __webpack_require__(/*! ./helpers/if */ "./node_modules/handlebars/dist/cjs/handlebars/helpers/if.js");
+
+var _helpersIf2 = _interopRequireDefault(_helpersIf);
+
+var _helpersLog = __webpack_require__(/*! ./helpers/log */ "./node_modules/handlebars/dist/cjs/handlebars/helpers/log.js");
+
+var _helpersLog2 = _interopRequireDefault(_helpersLog);
+
+var _helpersLookup = __webpack_require__(/*! ./helpers/lookup */ "./node_modules/handlebars/dist/cjs/handlebars/helpers/lookup.js");
+
+var _helpersLookup2 = _interopRequireDefault(_helpersLookup);
+
+var _helpersWith = __webpack_require__(/*! ./helpers/with */ "./node_modules/handlebars/dist/cjs/handlebars/helpers/with.js");
+
+var _helpersWith2 = _interopRequireDefault(_helpersWith);
+
+function registerDefaultHelpers(instance) {
+  _helpersBlockHelperMissing2['default'](instance);
+  _helpersEach2['default'](instance);
+  _helpersHelperMissing2['default'](instance);
+  _helpersIf2['default'](instance);
+  _helpersLog2['default'](instance);
+  _helpersLookup2['default'](instance);
+  _helpersWith2['default'](instance);
+}
+
+function moveHelperToHooks(instance, helperName, keepHelper) {
+  if (instance.helpers[helperName]) {
+    instance.hooks[helperName] = instance.helpers[helperName];
+    if (!keepHelper) {
+      delete instance.helpers[helperName];
+    }
+  }
+}
+//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O3lDQUF1QyxnQ0FBZ0M7Ozs7MkJBQzlDLGdCQUFnQjs7OztvQ0FDUCwwQkFBMEI7Ozs7eUJBQ3JDLGNBQWM7Ozs7MEJBQ2IsZUFBZTs7Ozs2QkFDWixrQkFBa0I7Ozs7MkJBQ3BCLGdCQUFnQjs7OztBQUVsQyxTQUFTLHNCQUFzQixDQUFDLFFBQVEsRUFBRTtBQUMvQyx5Q0FBMkIsUUFBUSxDQUFDLENBQUM7QUFDckMsMkJBQWEsUUFBUSxDQUFDLENBQUM7QUFDdkIsb0NBQXNCLFFBQVEsQ0FBQyxDQUFDO0FBQ2hDLHlCQUFXLFFBQVEsQ0FBQyxDQUFDO0FBQ3JCLDBCQUFZLFFBQVEsQ0FBQyxDQUFDO0FBQ3RCLDZCQUFlLFFBQVEsQ0FBQyxDQUFDO0FBQ3pCLDJCQUFhLFFBQVEsQ0FBQyxDQUFDO0NBQ3hCOztBQUVNLFNBQVMsaUJBQWlCLENBQUMsUUFBUSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUU7QUFDbEUsTUFBSSxRQUFRLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFO0FBQ2hDLFlBQVEsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUMxRCxRQUFJLENBQUMsVUFBVSxFQUFFO0FBQ2YsYUFBTyxRQUFRLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0tBQ3JDO0dBQ0Y7Q0FDRiIsImZpbGUiOiJoZWxwZXJzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHJlZ2lzdGVyQmxvY2tIZWxwZXJNaXNzaW5nIGZyb20gJy4vaGVscGVycy9ibG9jay1oZWxwZXItbWlzc2luZyc7XG5pbXBvcnQgcmVnaXN0ZXJFYWNoIGZyb20gJy4vaGVscGVycy9lYWNoJztcbmltcG9ydCByZWdpc3RlckhlbHBlck1pc3NpbmcgZnJvbSAnLi9oZWxwZXJzL2hlbHBlci1taXNzaW5nJztcbmltcG9ydCByZWdpc3RlcklmIGZyb20gJy4vaGVscGVycy9pZic7XG5pbXBvcnQgcmVnaXN0ZXJMb2cgZnJvbSAnLi9oZWxwZXJzL2xvZyc7XG5pbXBvcnQgcmVnaXN0ZXJMb29rdXAgZnJvbSAnLi9oZWxwZXJzL2xvb2t1cCc7XG5pbXBvcnQgcmVnaXN0ZXJXaXRoIGZyb20gJy4vaGVscGVycy93aXRoJztcblxuZXhwb3J0IGZ1bmN0aW9uIHJlZ2lzdGVyRGVmYXVsdEhlbHBlcnMoaW5zdGFuY2UpIHtcbiAgcmVnaXN0ZXJCbG9ja0hlbHBlck1pc3NpbmcoaW5zdGFuY2UpO1xuICByZWdpc3RlckVhY2goaW5zdGFuY2UpO1xuICByZWdpc3RlckhlbHBlck1pc3NpbmcoaW5zdGFuY2UpO1xuICByZWdpc3RlcklmKGluc3RhbmNlKTtcbiAgcmVnaXN0ZXJMb2coaW5zdGFuY2UpO1xuICByZWdpc3Rlckxvb2t1cChpbnN0YW5jZSk7XG4gIHJlZ2lzdGVyV2l0aChpbnN0YW5jZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtb3ZlSGVscGVyVG9Ib29rcyhpbnN0YW5jZSwgaGVscGVyTmFtZSwga2VlcEhlbHBlcikge1xuICBpZiAoaW5zdGFuY2UuaGVscGVyc1toZWxwZXJOYW1lXSkge1xuICAgIGluc3RhbmNlLmhvb2tzW2hlbHBlck5hbWVdID0gaW5zdGFuY2UuaGVscGVyc1toZWxwZXJOYW1lXTtcbiAgICBpZiAoIWtlZXBIZWxwZXIpIHtcbiAgICAgIGRlbGV0ZSBpbnN0YW5jZS5oZWxwZXJzW2hlbHBlck5hbWVdO1xuICAgIH1cbiAgfVxufVxuIl19
+
+
+/***/ }),
+
+/***/ "./node_modules/handlebars/dist/cjs/handlebars/helpers/block-helper-missing.js":
+/*!*************************************************************************************!*\
+  !*** ./node_modules/handlebars/dist/cjs/handlebars/helpers/block-helper-missing.js ***!
+  \*************************************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+exports.__esModule = true;
+
+var _utils = __webpack_require__(/*! ../utils */ "./node_modules/handlebars/dist/cjs/handlebars/utils.js");
+
+exports['default'] = function (instance) {
+  instance.registerHelper('blockHelperMissing', function (context, options) {
+    var inverse = options.inverse,
+        fn = options.fn;
+
+    if (context === true) {
+      return fn(this);
+    } else if (context === false || context == null) {
+      return inverse(this);
+    } else if (_utils.isArray(context)) {
+      if (context.length > 0) {
+        if (options.ids) {
+          options.ids = [options.name];
+        }
+
+        return instance.helpers.each(context, options);
+      } else {
+        return inverse(this);
+      }
+    } else {
+      if (options.data && options.ids) {
+        var data = _utils.createFrame(options.data);
+        data.contextPath = _utils.appendContextPath(options.data.contextPath, options.name);
+        options = { data: data };
+      }
+
+      return fn(context, options);
+    }
+  });
+};
+
+module.exports = exports['default'];
+//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMvYmxvY2staGVscGVyLW1pc3NpbmcuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztxQkFBd0QsVUFBVTs7cUJBRW5ELFVBQVMsUUFBUSxFQUFFO0FBQ2hDLFVBQVEsQ0FBQyxjQUFjLENBQUMsb0JBQW9CLEVBQUUsVUFBUyxPQUFPLEVBQUUsT0FBTyxFQUFFO0FBQ3ZFLFFBQUksT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPO1FBQzNCLEVBQUUsR0FBRyxPQUFPLENBQUMsRUFBRSxDQUFDOztBQUVsQixRQUFJLE9BQU8sS0FBSyxJQUFJLEVBQUU7QUFDcEIsYUFBTyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDakIsTUFBTSxJQUFJLE9BQU8sS0FBSyxLQUFLLElBQUksT0FBTyxJQUFJLElBQUksRUFBRTtBQUMvQyxhQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUN0QixNQUFNLElBQUksZUFBUSxPQUFPLENBQUMsRUFBRTtBQUMzQixVQUFJLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO0FBQ3RCLFlBQUksT0FBTyxDQUFDLEdBQUcsRUFBRTtBQUNmLGlCQUFPLENBQUMsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQzlCOztBQUVELGVBQU8sUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO09BQ2hELE1BQU07QUFDTCxlQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztPQUN0QjtLQUNGLE1BQU07QUFDTCxVQUFJLE9BQU8sQ0FBQyxJQUFJLElBQUksT0FBTyxDQUFDLEdBQUcsRUFBRTtBQUMvQixZQUFJLElBQUksR0FBRyxtQkFBWSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDckMsWUFBSSxDQUFDLFdBQVcsR0FBRyx5QkFDakIsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQ3hCLE9BQU8sQ0FBQyxJQUFJLENBQ2IsQ0FBQztBQUNGLGVBQU8sR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQztPQUMxQjs7QUFFRCxhQUFPLEVBQUUsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7S0FDN0I7R0FDRixDQUFDLENBQUM7Q0FDSiIsImZpbGUiOiJibG9jay1oZWxwZXItbWlzc2luZy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFwcGVuZENvbnRleHRQYXRoLCBjcmVhdGVGcmFtZSwgaXNBcnJheSB9IGZyb20gJy4uL3V0aWxzJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oaW5zdGFuY2UpIHtcbiAgaW5zdGFuY2UucmVnaXN0ZXJIZWxwZXIoJ2Jsb2NrSGVscGVyTWlzc2luZycsIGZ1bmN0aW9uKGNvbnRleHQsIG9wdGlvbnMpIHtcbiAgICBsZXQgaW52ZXJzZSA9IG9wdGlvbnMuaW52ZXJzZSxcbiAgICAgIGZuID0gb3B0aW9ucy5mbjtcblxuICAgIGlmIChjb250ZXh0ID09PSB0cnVlKSB7XG4gICAgICByZXR1cm4gZm4odGhpcyk7XG4gICAgfSBlbHNlIGlmIChjb250ZXh0ID09PSBmYWxzZSB8fCBjb250ZXh0ID09IG51bGwpIHtcbiAgICAgIHJldHVybiBpbnZlcnNlKHRoaXMpO1xuICAgIH0gZWxzZSBpZiAoaXNBcnJheShjb250ZXh0KSkge1xuICAgICAgaWYgKGNvbnRleHQubGVuZ3RoID4gMCkge1xuICAgICAgICBpZiAob3B0aW9ucy5pZHMpIHtcbiAgICAgICAgICBvcHRpb25zLmlkcyA9IFtvcHRpb25zLm5hbWVdO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGluc3RhbmNlLmhlbHBlcnMuZWFjaChjb250ZXh0LCBvcHRpb25zKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBpbnZlcnNlKHRoaXMpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAob3B0aW9ucy5kYXRhICYmIG9wdGlvbnMuaWRzKSB7XG4gICAgICAgIGxldCBkYXRhID0gY3JlYXRlRnJhbWUob3B0aW9ucy5kYXRhKTtcbiAgICAgICAgZGF0YS5jb250ZXh0UGF0aCA9IGFwcGVuZENvbnRleHRQYXRoKFxuICAgICAgICAgIG9wdGlvbnMuZGF0YS5jb250ZXh0UGF0aCxcbiAgICAgICAgICBvcHRpb25zLm5hbWVcbiAgICAgICAgKTtcbiAgICAgICAgb3B0aW9ucyA9IHsgZGF0YTogZGF0YSB9O1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZm4oY29udGV4dCwgb3B0aW9ucyk7XG4gICAgfVxuICB9KTtcbn1cbiJdfQ==
+
+
+/***/ }),
+
+/***/ "./node_modules/handlebars/dist/cjs/handlebars/helpers/each.js":
+/*!*********************************************************************!*\
+  !*** ./node_modules/handlebars/dist/cjs/handlebars/helpers/each.js ***!
+  \*********************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/* WEBPACK VAR INJECTION */(function(global) {
+
+exports.__esModule = true;
+// istanbul ignore next
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
+
+var _utils = __webpack_require__(/*! ../utils */ "./node_modules/handlebars/dist/cjs/handlebars/utils.js");
+
+var _exception = __webpack_require__(/*! ../exception */ "./node_modules/handlebars/dist/cjs/handlebars/exception.js");
+
+var _exception2 = _interopRequireDefault(_exception);
+
+exports['default'] = function (instance) {
+  instance.registerHelper('each', function (context, options) {
+    if (!options) {
+      throw new _exception2['default']('Must pass iterator to #each');
+    }
+
+    var fn = options.fn,
+        inverse = options.inverse,
+        i = 0,
+        ret = '',
+        data = undefined,
+        contextPath = undefined;
+
+    if (options.data && options.ids) {
+      contextPath = _utils.appendContextPath(options.data.contextPath, options.ids[0]) + '.';
+    }
+
+    if (_utils.isFunction(context)) {
+      context = context.call(this);
+    }
+
+    if (options.data) {
+      data = _utils.createFrame(options.data);
+    }
+
+    function execIteration(field, index, last) {
+      if (data) {
+        data.key = field;
+        data.index = index;
+        data.first = index === 0;
+        data.last = !!last;
+
+        if (contextPath) {
+          data.contextPath = contextPath + field;
+        }
+      }
+
+      ret = ret + fn(context[field], {
+        data: data,
+        blockParams: _utils.blockParams([context[field], field], [contextPath + field, null])
+      });
+    }
+
+    if (context && typeof context === 'object') {
+      if (_utils.isArray(context)) {
+        for (var j = context.length; i < j; i++) {
+          if (i in context) {
+            execIteration(i, i, i === context.length - 1);
+          }
+        }
+      } else if (global.Symbol && context[global.Symbol.iterator]) {
+        var newContext = [];
+        var iterator = context[global.Symbol.iterator]();
+        for (var it = iterator.next(); !it.done; it = iterator.next()) {
+          newContext.push(it.value);
+        }
+        context = newContext;
+        for (var j = context.length; i < j; i++) {
+          execIteration(i, i, i === context.length - 1);
+        }
+      } else {
+        (function () {
+          var priorKey = undefined;
+
+          Object.keys(context).forEach(function (key) {
+            // We're running the iterations one step out of sync so we can detect
+            // the last iteration without have to scan the object twice and create
+            // an itermediate keys array.
+            if (priorKey !== undefined) {
+              execIteration(priorKey, i - 1);
+            }
+            priorKey = key;
+            i++;
+          });
+          if (priorKey !== undefined) {
+            execIteration(priorKey, i - 1, true);
+          }
+        })();
+      }
+    }
+
+    if (i === 0) {
+      ret = inverse(this);
+    }
+
+    return ret;
+  });
+};
+
+module.exports = exports['default'];
+//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMvZWFjaC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O3FCQU1PLFVBQVU7O3lCQUNLLGNBQWM7Ozs7cUJBRXJCLFVBQVMsUUFBUSxFQUFFO0FBQ2hDLFVBQVEsQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLFVBQVMsT0FBTyxFQUFFLE9BQU8sRUFBRTtBQUN6RCxRQUFJLENBQUMsT0FBTyxFQUFFO0FBQ1osWUFBTSwyQkFBYyw2QkFBNkIsQ0FBQyxDQUFDO0tBQ3BEOztBQUVELFFBQUksRUFBRSxHQUFHLE9BQU8sQ0FBQyxFQUFFO1FBQ2pCLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTztRQUN6QixDQUFDLEdBQUcsQ0FBQztRQUNMLEdBQUcsR0FBRyxFQUFFO1FBQ1IsSUFBSSxZQUFBO1FBQ0osV0FBVyxZQUFBLENBQUM7O0FBRWQsUUFBSSxPQUFPLENBQUMsSUFBSSxJQUFJLE9BQU8sQ0FBQyxHQUFHLEVBQUU7QUFDL0IsaUJBQVcsR0FDVCx5QkFBa0IsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQztLQUNyRTs7QUFFRCxRQUFJLGtCQUFXLE9BQU8sQ0FBQyxFQUFFO0FBQ3ZCLGFBQU8sR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQzlCOztBQUVELFFBQUksT0FBTyxDQUFDLElBQUksRUFBRTtBQUNoQixVQUFJLEdBQUcsbUJBQVksT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQ2xDOztBQUVELGFBQVMsYUFBYSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFO0FBQ3pDLFVBQUksSUFBSSxFQUFFO0FBQ1IsWUFBSSxDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUM7QUFDakIsWUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7QUFDbkIsWUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLEtBQUssQ0FBQyxDQUFDO0FBQ3pCLFlBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQzs7QUFFbkIsWUFBSSxXQUFXLEVBQUU7QUFDZixjQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsR0FBRyxLQUFLLENBQUM7U0FDeEM7T0FDRjs7QUFFRCxTQUFHLEdBQ0QsR0FBRyxHQUNILEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7QUFDakIsWUFBSSxFQUFFLElBQUk7QUFDVixtQkFBVyxFQUFFLG1CQUNYLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUN2QixDQUFDLFdBQVcsR0FBRyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQzVCO09BQ0YsQ0FBQyxDQUFDO0tBQ047O0FBRUQsUUFBSSxPQUFPLElBQUksT0FBTyxPQUFPLEtBQUssUUFBUSxFQUFFO0FBQzFDLFVBQUksZUFBUSxPQUFPLENBQUMsRUFBRTtBQUNwQixhQUFLLElBQUksQ0FBQyxHQUFHLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUN2QyxjQUFJLENBQUMsSUFBSSxPQUFPLEVBQUU7QUFDaEIseUJBQWEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1dBQy9DO1NBQ0Y7T0FDRixNQUFNLElBQUksTUFBTSxDQUFDLE1BQU0sSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsRUFBRTtBQUMzRCxZQUFNLFVBQVUsR0FBRyxFQUFFLENBQUM7QUFDdEIsWUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztBQUNuRCxhQUFLLElBQUksRUFBRSxHQUFHLFFBQVEsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxHQUFHLFFBQVEsQ0FBQyxJQUFJLEVBQUUsRUFBRTtBQUM3RCxvQkFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDM0I7QUFDRCxlQUFPLEdBQUcsVUFBVSxDQUFDO0FBQ3JCLGFBQUssSUFBSSxDQUFDLEdBQUcsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQ3ZDLHVCQUFhLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztTQUMvQztPQUNGLE1BQU07O0FBQ0wsY0FBSSxRQUFRLFlBQUEsQ0FBQzs7QUFFYixnQkFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBQSxHQUFHLEVBQUk7Ozs7QUFJbEMsZ0JBQUksUUFBUSxLQUFLLFNBQVMsRUFBRTtBQUMxQiwyQkFBYSxDQUFDLFFBQVEsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7YUFDaEM7QUFDRCxvQkFBUSxHQUFHLEdBQUcsQ0FBQztBQUNmLGFBQUMsRUFBRSxDQUFDO1dBQ0wsQ0FBQyxDQUFDO0FBQ0gsY0FBSSxRQUFRLEtBQUssU0FBUyxFQUFFO0FBQzFCLHlCQUFhLENBQUMsUUFBUSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7V0FDdEM7O09BQ0Y7S0FDRjs7QUFFRCxRQUFJLENBQUMsS0FBSyxDQUFDLEVBQUU7QUFDWCxTQUFHLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQ3JCOztBQUVELFdBQU8sR0FBRyxDQUFDO0dBQ1osQ0FBQyxDQUFDO0NBQ0oiLCJmaWxlIjoiZWFjaC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIGFwcGVuZENvbnRleHRQYXRoLFxuICBibG9ja1BhcmFtcyxcbiAgY3JlYXRlRnJhbWUsXG4gIGlzQXJyYXksXG4gIGlzRnVuY3Rpb25cbn0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IEV4Y2VwdGlvbiBmcm9tICcuLi9leGNlcHRpb24nO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihpbnN0YW5jZSkge1xuICBpbnN0YW5jZS5yZWdpc3RlckhlbHBlcignZWFjaCcsIGZ1bmN0aW9uKGNvbnRleHQsIG9wdGlvbnMpIHtcbiAgICBpZiAoIW9wdGlvbnMpIHtcbiAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ011c3QgcGFzcyBpdGVyYXRvciB0byAjZWFjaCcpO1xuICAgIH1cblxuICAgIGxldCBmbiA9IG9wdGlvbnMuZm4sXG4gICAgICBpbnZlcnNlID0gb3B0aW9ucy5pbnZlcnNlLFxuICAgICAgaSA9IDAsXG4gICAgICByZXQgPSAnJyxcbiAgICAgIGRhdGEsXG4gICAgICBjb250ZXh0UGF0aDtcblxuICAgIGlmIChvcHRpb25zLmRhdGEgJiYgb3B0aW9ucy5pZHMpIHtcbiAgICAgIGNvbnRleHRQYXRoID1cbiAgICAgICAgYXBwZW5kQ29udGV4dFBhdGgob3B0aW9ucy5kYXRhLmNvbnRleHRQYXRoLCBvcHRpb25zLmlkc1swXSkgKyAnLic7XG4gICAgfVxuXG4gICAgaWYgKGlzRnVuY3Rpb24oY29udGV4dCkpIHtcbiAgICAgIGNvbnRleHQgPSBjb250ZXh0LmNhbGwodGhpcyk7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMuZGF0YSkge1xuICAgICAgZGF0YSA9IGNyZWF0ZUZyYW1lKG9wdGlvbnMuZGF0YSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZXhlY0l0ZXJhdGlvbihmaWVsZCwgaW5kZXgsIGxhc3QpIHtcbiAgICAgIGlmIChkYXRhKSB7XG4gICAgICAgIGRhdGEua2V5ID0gZmllbGQ7XG4gICAgICAgIGRhdGEuaW5kZXggPSBpbmRleDtcbiAgICAgICAgZGF0YS5maXJzdCA9IGluZGV4ID09PSAwO1xuICAgICAgICBkYXRhLmxhc3QgPSAhIWxhc3Q7XG5cbiAgICAgICAgaWYgKGNvbnRleHRQYXRoKSB7XG4gICAgICAgICAgZGF0YS5jb250ZXh0UGF0aCA9IGNvbnRleHRQYXRoICsgZmllbGQ7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0ID1cbiAgICAgICAgcmV0ICtcbiAgICAgICAgZm4oY29udGV4dFtmaWVsZF0sIHtcbiAgICAgICAgICBkYXRhOiBkYXRhLFxuICAgICAgICAgIGJsb2NrUGFyYW1zOiBibG9ja1BhcmFtcyhcbiAgICAgICAgICAgIFtjb250ZXh0W2ZpZWxkXSwgZmllbGRdLFxuICAgICAgICAgICAgW2NvbnRleHRQYXRoICsgZmllbGQsIG51bGxdXG4gICAgICAgICAgKVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAoY29udGV4dCAmJiB0eXBlb2YgY29udGV4dCA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGlmIChpc0FycmF5KGNvbnRleHQpKSB7XG4gICAgICAgIGZvciAobGV0IGogPSBjb250ZXh0Lmxlbmd0aDsgaSA8IGo7IGkrKykge1xuICAgICAgICAgIGlmIChpIGluIGNvbnRleHQpIHtcbiAgICAgICAgICAgIGV4ZWNJdGVyYXRpb24oaSwgaSwgaSA9PT0gY29udGV4dC5sZW5ndGggLSAxKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoZ2xvYmFsLlN5bWJvbCAmJiBjb250ZXh0W2dsb2JhbC5TeW1ib2wuaXRlcmF0b3JdKSB7XG4gICAgICAgIGNvbnN0IG5ld0NvbnRleHQgPSBbXTtcbiAgICAgICAgY29uc3QgaXRlcmF0b3IgPSBjb250ZXh0W2dsb2JhbC5TeW1ib2wuaXRlcmF0b3JdKCk7XG4gICAgICAgIGZvciAobGV0IGl0ID0gaXRlcmF0b3IubmV4dCgpOyAhaXQuZG9uZTsgaXQgPSBpdGVyYXRvci5uZXh0KCkpIHtcbiAgICAgICAgICBuZXdDb250ZXh0LnB1c2goaXQudmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnRleHQgPSBuZXdDb250ZXh0O1xuICAgICAgICBmb3IgKGxldCBqID0gY29udGV4dC5sZW5ndGg7IGkgPCBqOyBpKyspIHtcbiAgICAgICAgICBleGVjSXRlcmF0aW9uKGksIGksIGkgPT09IGNvbnRleHQubGVuZ3RoIC0gMSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxldCBwcmlvcktleTtcblxuICAgICAgICBPYmplY3Qua2V5cyhjb250ZXh0KS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICAgICAgLy8gV2UncmUgcnVubmluZyB0aGUgaXRlcmF0aW9ucyBvbmUgc3RlcCBvdXQgb2Ygc3luYyBzbyB3ZSBjYW4gZGV0ZWN0XG4gICAgICAgICAgLy8gdGhlIGxhc3QgaXRlcmF0aW9uIHdpdGhvdXQgaGF2ZSB0byBzY2FuIHRoZSBvYmplY3QgdHdpY2UgYW5kIGNyZWF0ZVxuICAgICAgICAgIC8vIGFuIGl0ZXJtZWRpYXRlIGtleXMgYXJyYXkuXG4gICAgICAgICAgaWYgKHByaW9yS2V5ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGV4ZWNJdGVyYXRpb24ocHJpb3JLZXksIGkgLSAxKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcHJpb3JLZXkgPSBrZXk7XG4gICAgICAgICAgaSsrO1xuICAgICAgICB9KTtcbiAgICAgICAgaWYgKHByaW9yS2V5ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBleGVjSXRlcmF0aW9uKHByaW9yS2V5LCBpIC0gMSwgdHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoaSA9PT0gMCkge1xuICAgICAgcmV0ID0gaW52ZXJzZSh0aGlzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmV0O1xuICB9KTtcbn1cbiJdfQ==
+
+/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../../../webpack/buildin/global.js */ "./node_modules/webpack/buildin/global.js")))
+
+/***/ }),
+
+/***/ "./node_modules/handlebars/dist/cjs/handlebars/helpers/helper-missing.js":
+/*!*******************************************************************************!*\
+  !*** ./node_modules/handlebars/dist/cjs/handlebars/helpers/helper-missing.js ***!
+  \*******************************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+exports.__esModule = true;
+// istanbul ignore next
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
+
+var _exception = __webpack_require__(/*! ../exception */ "./node_modules/handlebars/dist/cjs/handlebars/exception.js");
+
+var _exception2 = _interopRequireDefault(_exception);
+
+exports['default'] = function (instance) {
+  instance.registerHelper('helperMissing', function () /* [args, ]options */{
+    if (arguments.length === 1) {
+      // A missing field in a {{foo}} construct.
+      return undefined;
+    } else {
+      // Someone is actually trying to call something, blow up.
+      throw new _exception2['default']('Missing helper: "' + arguments[arguments.length - 1].name + '"');
+    }
+  });
+};
+
+module.exports = exports['default'];
+//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMvaGVscGVyLW1pc3NpbmcuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozt5QkFBc0IsY0FBYzs7OztxQkFFckIsVUFBUyxRQUFRLEVBQUU7QUFDaEMsVUFBUSxDQUFDLGNBQWMsQ0FBQyxlQUFlLEVBQUUsaUNBQWdDO0FBQ3ZFLFFBQUksU0FBUyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7O0FBRTFCLGFBQU8sU0FBUyxDQUFDO0tBQ2xCLE1BQU07O0FBRUwsWUFBTSwyQkFDSixtQkFBbUIsR0FBRyxTQUFTLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUNqRSxDQUFDO0tBQ0g7R0FDRixDQUFDLENBQUM7Q0FDSiIsImZpbGUiOiJoZWxwZXItbWlzc2luZy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBFeGNlcHRpb24gZnJvbSAnLi4vZXhjZXB0aW9uJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oaW5zdGFuY2UpIHtcbiAgaW5zdGFuY2UucmVnaXN0ZXJIZWxwZXIoJ2hlbHBlck1pc3NpbmcnLCBmdW5jdGlvbigvKiBbYXJncywgXW9wdGlvbnMgKi8pIHtcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgLy8gQSBtaXNzaW5nIGZpZWxkIGluIGEge3tmb299fSBjb25zdHJ1Y3QuXG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBTb21lb25lIGlzIGFjdHVhbGx5IHRyeWluZyB0byBjYWxsIHNvbWV0aGluZywgYmxvdyB1cC5cbiAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oXG4gICAgICAgICdNaXNzaW5nIGhlbHBlcjogXCInICsgYXJndW1lbnRzW2FyZ3VtZW50cy5sZW5ndGggLSAxXS5uYW1lICsgJ1wiJ1xuICAgICAgKTtcbiAgICB9XG4gIH0pO1xufVxuIl19
+
+
+/***/ }),
+
+/***/ "./node_modules/handlebars/dist/cjs/handlebars/helpers/if.js":
+/*!*******************************************************************!*\
+  !*** ./node_modules/handlebars/dist/cjs/handlebars/helpers/if.js ***!
+  \*******************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+exports.__esModule = true;
+// istanbul ignore next
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
+
+var _utils = __webpack_require__(/*! ../utils */ "./node_modules/handlebars/dist/cjs/handlebars/utils.js");
+
+var _exception = __webpack_require__(/*! ../exception */ "./node_modules/handlebars/dist/cjs/handlebars/exception.js");
+
+var _exception2 = _interopRequireDefault(_exception);
+
+exports['default'] = function (instance) {
+  instance.registerHelper('if', function (conditional, options) {
+    if (arguments.length != 2) {
+      throw new _exception2['default']('#if requires exactly one argument');
+    }
+    if (_utils.isFunction(conditional)) {
+      conditional = conditional.call(this);
+    }
+
+    // Default behavior is to render the positive path if the value is truthy and not empty.
+    // The `includeZero` option may be set to treat the condtional as purely not empty based on the
+    // behavior of isEmpty. Effectively this determines if 0 is handled by the positive path or negative.
+    if (!options.hash.includeZero && !conditional || _utils.isEmpty(conditional)) {
+      return options.inverse(this);
+    } else {
+      return options.fn(this);
+    }
+  });
+
+  instance.registerHelper('unless', function (conditional, options) {
+    if (arguments.length != 2) {
+      throw new _exception2['default']('#unless requires exactly one argument');
+    }
+    return instance.helpers['if'].call(this, conditional, {
+      fn: options.inverse,
+      inverse: options.fn,
+      hash: options.hash
+    });
+  });
+};
+
+module.exports = exports['default'];
+//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMvaWYuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7OztxQkFBb0MsVUFBVTs7eUJBQ3hCLGNBQWM7Ozs7cUJBRXJCLFVBQVMsUUFBUSxFQUFFO0FBQ2hDLFVBQVEsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLFVBQVMsV0FBVyxFQUFFLE9BQU8sRUFBRTtBQUMzRCxRQUFJLFNBQVMsQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFO0FBQ3pCLFlBQU0sMkJBQWMsbUNBQW1DLENBQUMsQ0FBQztLQUMxRDtBQUNELFFBQUksa0JBQVcsV0FBVyxDQUFDLEVBQUU7QUFDM0IsaUJBQVcsR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQ3RDOzs7OztBQUtELFFBQUksQUFBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxJQUFJLENBQUMsV0FBVyxJQUFLLGVBQVEsV0FBVyxDQUFDLEVBQUU7QUFDdkUsYUFBTyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQzlCLE1BQU07QUFDTCxhQUFPLE9BQU8sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDekI7R0FDRixDQUFDLENBQUM7O0FBRUgsVUFBUSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsVUFBUyxXQUFXLEVBQUUsT0FBTyxFQUFFO0FBQy9ELFFBQUksU0FBUyxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUU7QUFDekIsWUFBTSwyQkFBYyx1Q0FBdUMsQ0FBQyxDQUFDO0tBQzlEO0FBQ0QsV0FBTyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsV0FBVyxFQUFFO0FBQ3BELFFBQUUsRUFBRSxPQUFPLENBQUMsT0FBTztBQUNuQixhQUFPLEVBQUUsT0FBTyxDQUFDLEVBQUU7QUFDbkIsVUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJO0tBQ25CLENBQUMsQ0FBQztHQUNKLENBQUMsQ0FBQztDQUNKIiwiZmlsZSI6ImlmLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNFbXB0eSwgaXNGdW5jdGlvbiB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCBFeGNlcHRpb24gZnJvbSAnLi4vZXhjZXB0aW9uJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oaW5zdGFuY2UpIHtcbiAgaW5zdGFuY2UucmVnaXN0ZXJIZWxwZXIoJ2lmJywgZnVuY3Rpb24oY29uZGl0aW9uYWwsIG9wdGlvbnMpIHtcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCAhPSAyKSB7XG4gICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCcjaWYgcmVxdWlyZXMgZXhhY3RseSBvbmUgYXJndW1lbnQnKTtcbiAgICB9XG4gICAgaWYgKGlzRnVuY3Rpb24oY29uZGl0aW9uYWwpKSB7XG4gICAgICBjb25kaXRpb25hbCA9IGNvbmRpdGlvbmFsLmNhbGwodGhpcyk7XG4gICAgfVxuXG4gICAgLy8gRGVmYXVsdCBiZWhhdmlvciBpcyB0byByZW5kZXIgdGhlIHBvc2l0aXZlIHBhdGggaWYgdGhlIHZhbHVlIGlzIHRydXRoeSBhbmQgbm90IGVtcHR5LlxuICAgIC8vIFRoZSBgaW5jbHVkZVplcm9gIG9wdGlvbiBtYXkgYmUgc2V0IHRvIHRyZWF0IHRoZSBjb25kdGlvbmFsIGFzIHB1cmVseSBub3QgZW1wdHkgYmFzZWQgb24gdGhlXG4gICAgLy8gYmVoYXZpb3Igb2YgaXNFbXB0eS4gRWZmZWN0aXZlbHkgdGhpcyBkZXRlcm1pbmVzIGlmIDAgaXMgaGFuZGxlZCBieSB0aGUgcG9zaXRpdmUgcGF0aCBvciBuZWdhdGl2ZS5cbiAgICBpZiAoKCFvcHRpb25zLmhhc2guaW5jbHVkZVplcm8gJiYgIWNvbmRpdGlvbmFsKSB8fCBpc0VtcHR5KGNvbmRpdGlvbmFsKSkge1xuICAgICAgcmV0dXJuIG9wdGlvbnMuaW52ZXJzZSh0aGlzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG9wdGlvbnMuZm4odGhpcyk7XG4gICAgfVxuICB9KTtcblxuICBpbnN0YW5jZS5yZWdpc3RlckhlbHBlcigndW5sZXNzJywgZnVuY3Rpb24oY29uZGl0aW9uYWwsIG9wdGlvbnMpIHtcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCAhPSAyKSB7XG4gICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCcjdW5sZXNzIHJlcXVpcmVzIGV4YWN0bHkgb25lIGFyZ3VtZW50Jyk7XG4gICAgfVxuICAgIHJldHVybiBpbnN0YW5jZS5oZWxwZXJzWydpZiddLmNhbGwodGhpcywgY29uZGl0aW9uYWwsIHtcbiAgICAgIGZuOiBvcHRpb25zLmludmVyc2UsXG4gICAgICBpbnZlcnNlOiBvcHRpb25zLmZuLFxuICAgICAgaGFzaDogb3B0aW9ucy5oYXNoXG4gICAgfSk7XG4gIH0pO1xufVxuIl19
+
+
+/***/ }),
+
+/***/ "./node_modules/handlebars/dist/cjs/handlebars/helpers/log.js":
+/*!********************************************************************!*\
+  !*** ./node_modules/handlebars/dist/cjs/handlebars/helpers/log.js ***!
+  \********************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+exports.__esModule = true;
+
+exports['default'] = function (instance) {
+  instance.registerHelper('log', function () /* message, options */{
+    var args = [undefined],
+        options = arguments[arguments.length - 1];
+    for (var i = 0; i < arguments.length - 1; i++) {
+      args.push(arguments[i]);
+    }
+
+    var level = 1;
+    if (options.hash.level != null) {
+      level = options.hash.level;
+    } else if (options.data && options.data.level != null) {
+      level = options.data.level;
+    }
+    args[0] = level;
+
+    instance.log.apply(instance, args);
+  });
+};
+
+module.exports = exports['default'];
+//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMvbG9nLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7cUJBQWUsVUFBUyxRQUFRLEVBQUU7QUFDaEMsVUFBUSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsa0NBQWlDO0FBQzlELFFBQUksSUFBSSxHQUFHLENBQUMsU0FBUyxDQUFDO1FBQ3BCLE9BQU8sR0FBRyxTQUFTLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztBQUM1QyxTQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDN0MsVUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUN6Qjs7QUFFRCxRQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7QUFDZCxRQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksRUFBRTtBQUM5QixXQUFLLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7S0FDNUIsTUFBTSxJQUFJLE9BQU8sQ0FBQyxJQUFJLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxFQUFFO0FBQ3JELFdBQUssR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztLQUM1QjtBQUNELFFBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUM7O0FBRWhCLFlBQVEsQ0FBQyxHQUFHLE1BQUEsQ0FBWixRQUFRLEVBQVEsSUFBSSxDQUFDLENBQUM7R0FDdkIsQ0FBQyxDQUFDO0NBQ0oiLCJmaWxlIjoibG9nLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oaW5zdGFuY2UpIHtcbiAgaW5zdGFuY2UucmVnaXN0ZXJIZWxwZXIoJ2xvZycsIGZ1bmN0aW9uKC8qIG1lc3NhZ2UsIG9wdGlvbnMgKi8pIHtcbiAgICBsZXQgYXJncyA9IFt1bmRlZmluZWRdLFxuICAgICAgb3B0aW9ucyA9IGFyZ3VtZW50c1thcmd1bWVudHMubGVuZ3RoIC0gMV07XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoIC0gMTsgaSsrKSB7XG4gICAgICBhcmdzLnB1c2goYXJndW1lbnRzW2ldKTtcbiAgICB9XG5cbiAgICBsZXQgbGV2ZWwgPSAxO1xuICAgIGlmIChvcHRpb25zLmhhc2gubGV2ZWwgIT0gbnVsbCkge1xuICAgICAgbGV2ZWwgPSBvcHRpb25zLmhhc2gubGV2ZWw7XG4gICAgfSBlbHNlIGlmIChvcHRpb25zLmRhdGEgJiYgb3B0aW9ucy5kYXRhLmxldmVsICE9IG51bGwpIHtcbiAgICAgIGxldmVsID0gb3B0aW9ucy5kYXRhLmxldmVsO1xuICAgIH1cbiAgICBhcmdzWzBdID0gbGV2ZWw7XG5cbiAgICBpbnN0YW5jZS5sb2coLi4uYXJncyk7XG4gIH0pO1xufVxuIl19
+
+
+/***/ }),
+
+/***/ "./node_modules/handlebars/dist/cjs/handlebars/helpers/lookup.js":
+/*!***********************************************************************!*\
+  !*** ./node_modules/handlebars/dist/cjs/handlebars/helpers/lookup.js ***!
+  \***********************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+exports.__esModule = true;
+
+exports['default'] = function (instance) {
+  instance.registerHelper('lookup', function (obj, field, options) {
+    if (!obj) {
+      // Note for 5.0: Change to "obj == null" in 5.0
+      return obj;
+    }
+    return options.lookupProperty(obj, field);
+  });
+};
+
+module.exports = exports['default'];
+//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMvbG9va3VwLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7cUJBQWUsVUFBUyxRQUFRLEVBQUU7QUFDaEMsVUFBUSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsVUFBUyxHQUFHLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRTtBQUM5RCxRQUFJLENBQUMsR0FBRyxFQUFFOztBQUVSLGFBQU8sR0FBRyxDQUFDO0tBQ1o7QUFDRCxXQUFPLE9BQU8sQ0FBQyxjQUFjLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0dBQzNDLENBQUMsQ0FBQztDQUNKIiwiZmlsZSI6Imxvb2t1cC5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGluc3RhbmNlKSB7XG4gIGluc3RhbmNlLnJlZ2lzdGVySGVscGVyKCdsb29rdXAnLCBmdW5jdGlvbihvYmosIGZpZWxkLCBvcHRpb25zKSB7XG4gICAgaWYgKCFvYmopIHtcbiAgICAgIC8vIE5vdGUgZm9yIDUuMDogQ2hhbmdlIHRvIFwib2JqID09IG51bGxcIiBpbiA1LjBcbiAgICAgIHJldHVybiBvYmo7XG4gICAgfVxuICAgIHJldHVybiBvcHRpb25zLmxvb2t1cFByb3BlcnR5KG9iaiwgZmllbGQpO1xuICB9KTtcbn1cbiJdfQ==
+
+
+/***/ }),
+
+/***/ "./node_modules/handlebars/dist/cjs/handlebars/helpers/with.js":
+/*!*********************************************************************!*\
+  !*** ./node_modules/handlebars/dist/cjs/handlebars/helpers/with.js ***!
+  \*********************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+exports.__esModule = true;
+// istanbul ignore next
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
+
+var _utils = __webpack_require__(/*! ../utils */ "./node_modules/handlebars/dist/cjs/handlebars/utils.js");
+
+var _exception = __webpack_require__(/*! ../exception */ "./node_modules/handlebars/dist/cjs/handlebars/exception.js");
+
+var _exception2 = _interopRequireDefault(_exception);
+
+exports['default'] = function (instance) {
+  instance.registerHelper('with', function (context, options) {
+    if (arguments.length != 2) {
+      throw new _exception2['default']('#with requires exactly one argument');
+    }
+    if (_utils.isFunction(context)) {
+      context = context.call(this);
+    }
+
+    var fn = options.fn;
+
+    if (!_utils.isEmpty(context)) {
+      var data = options.data;
+      if (options.data && options.ids) {
+        data = _utils.createFrame(options.data);
+        data.contextPath = _utils.appendContextPath(options.data.contextPath, options.ids[0]);
+      }
+
+      return fn(context, {
+        data: data,
+        blockParams: _utils.blockParams([context], [data && data.contextPath])
+      });
+    } else {
+      return options.inverse(this);
+    }
+  });
+};
+
+module.exports = exports['default'];
+//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMvd2l0aC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O3FCQU1PLFVBQVU7O3lCQUNLLGNBQWM7Ozs7cUJBRXJCLFVBQVMsUUFBUSxFQUFFO0FBQ2hDLFVBQVEsQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLFVBQVMsT0FBTyxFQUFFLE9BQU8sRUFBRTtBQUN6RCxRQUFJLFNBQVMsQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFO0FBQ3pCLFlBQU0sMkJBQWMscUNBQXFDLENBQUMsQ0FBQztLQUM1RDtBQUNELFFBQUksa0JBQVcsT0FBTyxDQUFDLEVBQUU7QUFDdkIsYUFBTyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDOUI7O0FBRUQsUUFBSSxFQUFFLEdBQUcsT0FBTyxDQUFDLEVBQUUsQ0FBQzs7QUFFcEIsUUFBSSxDQUFDLGVBQVEsT0FBTyxDQUFDLEVBQUU7QUFDckIsVUFBSSxJQUFJLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQztBQUN4QixVQUFJLE9BQU8sQ0FBQyxJQUFJLElBQUksT0FBTyxDQUFDLEdBQUcsRUFBRTtBQUMvQixZQUFJLEdBQUcsbUJBQVksT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2pDLFlBQUksQ0FBQyxXQUFXLEdBQUcseUJBQ2pCLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUN4QixPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUNmLENBQUM7T0FDSDs7QUFFRCxhQUFPLEVBQUUsQ0FBQyxPQUFPLEVBQUU7QUFDakIsWUFBSSxFQUFFLElBQUk7QUFDVixtQkFBVyxFQUFFLG1CQUFZLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO09BQ2hFLENBQUMsQ0FBQztLQUNKLE1BQU07QUFDTCxhQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDOUI7R0FDRixDQUFDLENBQUM7Q0FDSiIsImZpbGUiOiJ3aXRoLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgYXBwZW5kQ29udGV4dFBhdGgsXG4gIGJsb2NrUGFyYW1zLFxuICBjcmVhdGVGcmFtZSxcbiAgaXNFbXB0eSxcbiAgaXNGdW5jdGlvblxufSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQgRXhjZXB0aW9uIGZyb20gJy4uL2V4Y2VwdGlvbic7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGluc3RhbmNlKSB7XG4gIGluc3RhbmNlLnJlZ2lzdGVySGVscGVyKCd3aXRoJywgZnVuY3Rpb24oY29udGV4dCwgb3B0aW9ucykge1xuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoICE9IDIpIHtcbiAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJyN3aXRoIHJlcXVpcmVzIGV4YWN0bHkgb25lIGFyZ3VtZW50Jyk7XG4gICAgfVxuICAgIGlmIChpc0Z1bmN0aW9uKGNvbnRleHQpKSB7XG4gICAgICBjb250ZXh0ID0gY29udGV4dC5jYWxsKHRoaXMpO1xuICAgIH1cblxuICAgIGxldCBmbiA9IG9wdGlvbnMuZm47XG5cbiAgICBpZiAoIWlzRW1wdHkoY29udGV4dCkpIHtcbiAgICAgIGxldCBkYXRhID0gb3B0aW9ucy5kYXRhO1xuICAgICAgaWYgKG9wdGlvbnMuZGF0YSAmJiBvcHRpb25zLmlkcykge1xuICAgICAgICBkYXRhID0gY3JlYXRlRnJhbWUob3B0aW9ucy5kYXRhKTtcbiAgICAgICAgZGF0YS5jb250ZXh0UGF0aCA9IGFwcGVuZENvbnRleHRQYXRoKFxuICAgICAgICAgIG9wdGlvbnMuZGF0YS5jb250ZXh0UGF0aCxcbiAgICAgICAgICBvcHRpb25zLmlkc1swXVxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZm4oY29udGV4dCwge1xuICAgICAgICBkYXRhOiBkYXRhLFxuICAgICAgICBibG9ja1BhcmFtczogYmxvY2tQYXJhbXMoW2NvbnRleHRdLCBbZGF0YSAmJiBkYXRhLmNvbnRleHRQYXRoXSlcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gb3B0aW9ucy5pbnZlcnNlKHRoaXMpO1xuICAgIH1cbiAgfSk7XG59XG4iXX0=
+
+
+/***/ }),
+
+/***/ "./node_modules/handlebars/dist/cjs/handlebars/internal/create-new-lookup-object.js":
+/*!******************************************************************************************!*\
+  !*** ./node_modules/handlebars/dist/cjs/handlebars/internal/create-new-lookup-object.js ***!
+  \******************************************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+exports.__esModule = true;
+exports.createNewLookupObject = createNewLookupObject;
+
+var _utils = __webpack_require__(/*! ../utils */ "./node_modules/handlebars/dist/cjs/handlebars/utils.js");
+
+/**
+ * Create a new object with "null"-prototype to avoid truthy results on prototype properties.
+ * The resulting object can be used with "object[property]" to check if a property exists
+ * @param {...object} sources a varargs parameter of source objects that will be merged
+ * @returns {object}
+ */
+
+function createNewLookupObject() {
+  for (var _len = arguments.length, sources = Array(_len), _key = 0; _key < _len; _key++) {
+    sources[_key] = arguments[_key];
+  }
+
+  return _utils.extend.apply(undefined, [Object.create(null)].concat(sources));
+}
+//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2ludGVybmFsL2NyZWF0ZS1uZXctbG9va3VwLW9iamVjdC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztxQkFBdUIsVUFBVTs7Ozs7Ozs7O0FBUTFCLFNBQVMscUJBQXFCLEdBQWE7b0NBQVQsT0FBTztBQUFQLFdBQU87OztBQUM5QyxTQUFPLGdDQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQUssT0FBTyxFQUFDLENBQUM7Q0FDaEQiLCJmaWxlIjoiY3JlYXRlLW5ldy1sb29rdXAtb2JqZWN0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZXh0ZW5kIH0gZnJvbSAnLi4vdXRpbHMnO1xuXG4vKipcbiAqIENyZWF0ZSBhIG5ldyBvYmplY3Qgd2l0aCBcIm51bGxcIi1wcm90b3R5cGUgdG8gYXZvaWQgdHJ1dGh5IHJlc3VsdHMgb24gcHJvdG90eXBlIHByb3BlcnRpZXMuXG4gKiBUaGUgcmVzdWx0aW5nIG9iamVjdCBjYW4gYmUgdXNlZCB3aXRoIFwib2JqZWN0W3Byb3BlcnR5XVwiIHRvIGNoZWNrIGlmIGEgcHJvcGVydHkgZXhpc3RzXG4gKiBAcGFyYW0gey4uLm9iamVjdH0gc291cmNlcyBhIHZhcmFyZ3MgcGFyYW1ldGVyIG9mIHNvdXJjZSBvYmplY3RzIHRoYXQgd2lsbCBiZSBtZXJnZWRcbiAqIEByZXR1cm5zIHtvYmplY3R9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVOZXdMb29rdXBPYmplY3QoLi4uc291cmNlcykge1xuICByZXR1cm4gZXh0ZW5kKE9iamVjdC5jcmVhdGUobnVsbCksIC4uLnNvdXJjZXMpO1xufVxuIl19
+
+
+/***/ }),
+
+/***/ "./node_modules/handlebars/dist/cjs/handlebars/internal/proto-access.js":
+/*!******************************************************************************!*\
+  !*** ./node_modules/handlebars/dist/cjs/handlebars/internal/proto-access.js ***!
+  \******************************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+exports.__esModule = true;
+exports.createProtoAccessControl = createProtoAccessControl;
+exports.resultIsAllowed = resultIsAllowed;
+exports.resetLoggedProperties = resetLoggedProperties;
+// istanbul ignore next
+
+function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } }
+
+var _createNewLookupObject = __webpack_require__(/*! ./create-new-lookup-object */ "./node_modules/handlebars/dist/cjs/handlebars/internal/create-new-lookup-object.js");
+
+var _logger = __webpack_require__(/*! ../logger */ "./node_modules/handlebars/dist/cjs/handlebars/logger.js");
+
+var logger = _interopRequireWildcard(_logger);
+
+var loggedProperties = Object.create(null);
+
+function createProtoAccessControl(runtimeOptions) {
+  var defaultMethodWhiteList = Object.create(null);
+  defaultMethodWhiteList['constructor'] = false;
+  defaultMethodWhiteList['__defineGetter__'] = false;
+  defaultMethodWhiteList['__defineSetter__'] = false;
+  defaultMethodWhiteList['__lookupGetter__'] = false;
+
+  var defaultPropertyWhiteList = Object.create(null);
+  // eslint-disable-next-line no-proto
+  defaultPropertyWhiteList['__proto__'] = false;
+
+  return {
+    properties: {
+      whitelist: _createNewLookupObject.createNewLookupObject(defaultPropertyWhiteList, runtimeOptions.allowedProtoProperties),
+      defaultValue: runtimeOptions.allowProtoPropertiesByDefault
+    },
+    methods: {
+      whitelist: _createNewLookupObject.createNewLookupObject(defaultMethodWhiteList, runtimeOptions.allowedProtoMethods),
+      defaultValue: runtimeOptions.allowProtoMethodsByDefault
+    }
+  };
+}
+
+function resultIsAllowed(result, protoAccessControl, propertyName) {
+  if (typeof result === 'function') {
+    return checkWhiteList(protoAccessControl.methods, propertyName);
+  } else {
+    return checkWhiteList(protoAccessControl.properties, propertyName);
+  }
+}
+
+function checkWhiteList(protoAccessControlForType, propertyName) {
+  if (protoAccessControlForType.whitelist[propertyName] !== undefined) {
+    return protoAccessControlForType.whitelist[propertyName] === true;
+  }
+  if (protoAccessControlForType.defaultValue !== undefined) {
+    return protoAccessControlForType.defaultValue;
+  }
+  logUnexpecedPropertyAccessOnce(propertyName);
+  return false;
+}
+
+function logUnexpecedPropertyAccessOnce(propertyName) {
+  if (loggedProperties[propertyName] !== true) {
+    loggedProperties[propertyName] = true;
+    logger.log('error', 'Handlebars: Access has been denied to resolve the property "' + propertyName + '" because it is not an "own property" of its parent.\n' + 'You can add a runtime option to disable the check or this warning:\n' + 'See https://handlebarsjs.com/api-reference/runtime-options.html#options-to-control-prototype-access for details');
+  }
+}
+
+function resetLoggedProperties() {
+  Object.keys(loggedProperties).forEach(function (propertyName) {
+    delete loggedProperties[propertyName];
+  });
+}
+//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2ludGVybmFsL3Byb3RvLWFjY2Vzcy5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O3FDQUFzQyw0QkFBNEI7O3NCQUMxQyxXQUFXOztJQUF2QixNQUFNOztBQUVsQixJQUFNLGdCQUFnQixHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7O0FBRXRDLFNBQVMsd0JBQXdCLENBQUMsY0FBYyxFQUFFO0FBQ3ZELE1BQUksc0JBQXNCLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNqRCx3QkFBc0IsQ0FBQyxhQUFhLENBQUMsR0FBRyxLQUFLLENBQUM7QUFDOUMsd0JBQXNCLENBQUMsa0JBQWtCLENBQUMsR0FBRyxLQUFLLENBQUM7QUFDbkQsd0JBQXNCLENBQUMsa0JBQWtCLENBQUMsR0FBRyxLQUFLLENBQUM7QUFDbkQsd0JBQXNCLENBQUMsa0JBQWtCLENBQUMsR0FBRyxLQUFLLENBQUM7O0FBRW5ELE1BQUksd0JBQXdCLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQzs7QUFFbkQsMEJBQXdCLENBQUMsV0FBVyxDQUFDLEdBQUcsS0FBSyxDQUFDOztBQUU5QyxTQUFPO0FBQ0wsY0FBVSxFQUFFO0FBQ1YsZUFBUyxFQUFFLDZDQUNULHdCQUF3QixFQUN4QixjQUFjLENBQUMsc0JBQXNCLENBQ3RDO0FBQ0Qsa0JBQVksRUFBRSxjQUFjLENBQUMsNkJBQTZCO0tBQzNEO0FBQ0QsV0FBTyxFQUFFO0FBQ1AsZUFBUyxFQUFFLDZDQUNULHNCQUFzQixFQUN0QixjQUFjLENBQUMsbUJBQW1CLENBQ25DO0FBQ0Qsa0JBQVksRUFBRSxjQUFjLENBQUMsMEJBQTBCO0tBQ3hEO0dBQ0YsQ0FBQztDQUNIOztBQUVNLFNBQVMsZUFBZSxDQUFDLE1BQU0sRUFBRSxrQkFBa0IsRUFBRSxZQUFZLEVBQUU7QUFDeEUsTUFBSSxPQUFPLE1BQU0sS0FBSyxVQUFVLEVBQUU7QUFDaEMsV0FBTyxjQUFjLENBQUMsa0JBQWtCLENBQUMsT0FBTyxFQUFFLFlBQVksQ0FBQyxDQUFDO0dBQ2pFLE1BQU07QUFDTCxXQUFPLGNBQWMsQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLEVBQUUsWUFBWSxDQUFDLENBQUM7R0FDcEU7Q0FDRjs7QUFFRCxTQUFTLGNBQWMsQ0FBQyx5QkFBeUIsRUFBRSxZQUFZLEVBQUU7QUFDL0QsTUFBSSx5QkFBeUIsQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLEtBQUssU0FBUyxFQUFFO0FBQ25FLFdBQU8seUJBQXlCLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxLQUFLLElBQUksQ0FBQztHQUNuRTtBQUNELE1BQUkseUJBQXlCLENBQUMsWUFBWSxLQUFLLFNBQVMsRUFBRTtBQUN4RCxXQUFPLHlCQUF5QixDQUFDLFlBQVksQ0FBQztHQUMvQztBQUNELGdDQUE4QixDQUFDLFlBQVksQ0FBQyxDQUFDO0FBQzdDLFNBQU8sS0FBSyxDQUFDO0NBQ2Q7O0FBRUQsU0FBUyw4QkFBOEIsQ0FBQyxZQUFZLEVBQUU7QUFDcEQsTUFBSSxnQkFBZ0IsQ0FBQyxZQUFZLENBQUMsS0FBSyxJQUFJLEVBQUU7QUFDM0Msb0JBQWdCLENBQUMsWUFBWSxDQUFDLEdBQUcsSUFBSSxDQUFDO0FBQ3RDLFVBQU0sQ0FBQyxHQUFHLENBQ1IsT0FBTyxFQUNQLGlFQUErRCxZQUFZLG9JQUNILG9IQUMyQyxDQUNwSCxDQUFDO0dBQ0g7Q0FDRjs7QUFFTSxTQUFTLHFCQUFxQixHQUFHO0FBQ3RDLFFBQU0sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBQSxZQUFZLEVBQUk7QUFDcEQsV0FBTyxnQkFBZ0IsQ0FBQyxZQUFZLENBQUMsQ0FBQztHQUN2QyxDQUFDLENBQUM7Q0FDSiIsImZpbGUiOiJwcm90by1hY2Nlc3MuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGVOZXdMb29rdXBPYmplY3QgfSBmcm9tICcuL2NyZWF0ZS1uZXctbG9va3VwLW9iamVjdCc7XG5pbXBvcnQgKiBhcyBsb2dnZXIgZnJvbSAnLi4vbG9nZ2VyJztcblxuY29uc3QgbG9nZ2VkUHJvcGVydGllcyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVQcm90b0FjY2Vzc0NvbnRyb2wocnVudGltZU9wdGlvbnMpIHtcbiAgbGV0IGRlZmF1bHRNZXRob2RXaGl0ZUxpc3QgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICBkZWZhdWx0TWV0aG9kV2hpdGVMaXN0Wydjb25zdHJ1Y3RvciddID0gZmFsc2U7XG4gIGRlZmF1bHRNZXRob2RXaGl0ZUxpc3RbJ19fZGVmaW5lR2V0dGVyX18nXSA9IGZhbHNlO1xuICBkZWZhdWx0TWV0aG9kV2hpdGVMaXN0WydfX2RlZmluZVNldHRlcl9fJ10gPSBmYWxzZTtcbiAgZGVmYXVsdE1ldGhvZFdoaXRlTGlzdFsnX19sb29rdXBHZXR0ZXJfXyddID0gZmFsc2U7XG5cbiAgbGV0IGRlZmF1bHRQcm9wZXJ0eVdoaXRlTGlzdCA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wcm90b1xuICBkZWZhdWx0UHJvcGVydHlXaGl0ZUxpc3RbJ19fcHJvdG9fXyddID0gZmFsc2U7XG5cbiAgcmV0dXJuIHtcbiAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICB3aGl0ZWxpc3Q6IGNyZWF0ZU5ld0xvb2t1cE9iamVjdChcbiAgICAgICAgZGVmYXVsdFByb3BlcnR5V2hpdGVMaXN0LFxuICAgICAgICBydW50aW1lT3B0aW9ucy5hbGxvd2VkUHJvdG9Qcm9wZXJ0aWVzXG4gICAgICApLFxuICAgICAgZGVmYXVsdFZhbHVlOiBydW50aW1lT3B0aW9ucy5hbGxvd1Byb3RvUHJvcGVydGllc0J5RGVmYXVsdFxuICAgIH0sXG4gICAgbWV0aG9kczoge1xuICAgICAgd2hpdGVsaXN0OiBjcmVhdGVOZXdMb29rdXBPYmplY3QoXG4gICAgICAgIGRlZmF1bHRNZXRob2RXaGl0ZUxpc3QsXG4gICAgICAgIHJ1bnRpbWVPcHRpb25zLmFsbG93ZWRQcm90b01ldGhvZHNcbiAgICAgICksXG4gICAgICBkZWZhdWx0VmFsdWU6IHJ1bnRpbWVPcHRpb25zLmFsbG93UHJvdG9NZXRob2RzQnlEZWZhdWx0XG4gICAgfVxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVzdWx0SXNBbGxvd2VkKHJlc3VsdCwgcHJvdG9BY2Nlc3NDb250cm9sLCBwcm9wZXJ0eU5hbWUpIHtcbiAgaWYgKHR5cGVvZiByZXN1bHQgPT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gY2hlY2tXaGl0ZUxpc3QocHJvdG9BY2Nlc3NDb250cm9sLm1ldGhvZHMsIHByb3BlcnR5TmFtZSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGNoZWNrV2hpdGVMaXN0KHByb3RvQWNjZXNzQ29udHJvbC5wcm9wZXJ0aWVzLCBwcm9wZXJ0eU5hbWUpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNoZWNrV2hpdGVMaXN0KHByb3RvQWNjZXNzQ29udHJvbEZvclR5cGUsIHByb3BlcnR5TmFtZSkge1xuICBpZiAocHJvdG9BY2Nlc3NDb250cm9sRm9yVHlwZS53aGl0ZWxpc3RbcHJvcGVydHlOYW1lXSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIHByb3RvQWNjZXNzQ29udHJvbEZvclR5cGUud2hpdGVsaXN0W3Byb3BlcnR5TmFtZV0gPT09IHRydWU7XG4gIH1cbiAgaWYgKHByb3RvQWNjZXNzQ29udHJvbEZvclR5cGUuZGVmYXVsdFZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gcHJvdG9BY2Nlc3NDb250cm9sRm9yVHlwZS5kZWZhdWx0VmFsdWU7XG4gIH1cbiAgbG9nVW5leHBlY2VkUHJvcGVydHlBY2Nlc3NPbmNlKHByb3BlcnR5TmFtZSk7XG4gIHJldHVybiBmYWxzZTtcbn1cblxuZnVuY3Rpb24gbG9nVW5leHBlY2VkUHJvcGVydHlBY2Nlc3NPbmNlKHByb3BlcnR5TmFtZSkge1xuICBpZiAobG9nZ2VkUHJvcGVydGllc1twcm9wZXJ0eU5hbWVdICE9PSB0cnVlKSB7XG4gICAgbG9nZ2VkUHJvcGVydGllc1twcm9wZXJ0eU5hbWVdID0gdHJ1ZTtcbiAgICBsb2dnZXIubG9nKFxuICAgICAgJ2Vycm9yJyxcbiAgICAgIGBIYW5kbGViYXJzOiBBY2Nlc3MgaGFzIGJlZW4gZGVuaWVkIHRvIHJlc29sdmUgdGhlIHByb3BlcnR5IFwiJHtwcm9wZXJ0eU5hbWV9XCIgYmVjYXVzZSBpdCBpcyBub3QgYW4gXCJvd24gcHJvcGVydHlcIiBvZiBpdHMgcGFyZW50LlxcbmAgK1xuICAgICAgICBgWW91IGNhbiBhZGQgYSBydW50aW1lIG9wdGlvbiB0byBkaXNhYmxlIHRoZSBjaGVjayBvciB0aGlzIHdhcm5pbmc6XFxuYCArXG4gICAgICAgIGBTZWUgaHR0cHM6Ly9oYW5kbGViYXJzanMuY29tL2FwaS1yZWZlcmVuY2UvcnVudGltZS1vcHRpb25zLmh0bWwjb3B0aW9ucy10by1jb250cm9sLXByb3RvdHlwZS1hY2Nlc3MgZm9yIGRldGFpbHNgXG4gICAgKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVzZXRMb2dnZWRQcm9wZXJ0aWVzKCkge1xuICBPYmplY3Qua2V5cyhsb2dnZWRQcm9wZXJ0aWVzKS5mb3JFYWNoKHByb3BlcnR5TmFtZSA9PiB7XG4gICAgZGVsZXRlIGxvZ2dlZFByb3BlcnRpZXNbcHJvcGVydHlOYW1lXTtcbiAgfSk7XG59XG4iXX0=
+
+
+/***/ }),
+
+/***/ "./node_modules/handlebars/dist/cjs/handlebars/internal/wrapHelper.js":
+/*!****************************************************************************!*\
+  !*** ./node_modules/handlebars/dist/cjs/handlebars/internal/wrapHelper.js ***!
+  \****************************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+exports.__esModule = true;
+exports.wrapHelper = wrapHelper;
+
+function wrapHelper(helper, transformOptionsFn) {
+  if (typeof helper !== 'function') {
+    // This should not happen, but apparently it does in https://github.com/wycats/handlebars.js/issues/1639
+    // We try to make the wrapper least-invasive by not wrapping it, if the helper is not a function.
+    return helper;
+  }
+  var wrapper = function wrapper() /* dynamic arguments */{
+    var options = arguments[arguments.length - 1];
+    arguments[arguments.length - 1] = transformOptionsFn(options);
+    return helper.apply(this, arguments);
+  };
+  return wrapper;
+}
+//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2ludGVybmFsL3dyYXBIZWxwZXIuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBTyxTQUFTLFVBQVUsQ0FBQyxNQUFNLEVBQUUsa0JBQWtCLEVBQUU7QUFDckQsTUFBSSxPQUFPLE1BQU0sS0FBSyxVQUFVLEVBQUU7OztBQUdoQyxXQUFPLE1BQU0sQ0FBQztHQUNmO0FBQ0QsTUFBSSxPQUFPLEdBQUcsU0FBVixPQUFPLDBCQUFxQztBQUM5QyxRQUFNLE9BQU8sR0FBRyxTQUFTLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNoRCxhQUFTLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsR0FBRyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUM5RCxXQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0dBQ3RDLENBQUM7QUFDRixTQUFPLE9BQU8sQ0FBQztDQUNoQiIsImZpbGUiOiJ3cmFwSGVscGVyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIHdyYXBIZWxwZXIoaGVscGVyLCB0cmFuc2Zvcm1PcHRpb25zRm4pIHtcbiAgaWYgKHR5cGVvZiBoZWxwZXIgIT09ICdmdW5jdGlvbicpIHtcbiAgICAvLyBUaGlzIHNob3VsZCBub3QgaGFwcGVuLCBidXQgYXBwYXJlbnRseSBpdCBkb2VzIGluIGh0dHBzOi8vZ2l0aHViLmNvbS93eWNhdHMvaGFuZGxlYmFycy5qcy9pc3N1ZXMvMTYzOVxuICAgIC8vIFdlIHRyeSB0byBtYWtlIHRoZSB3cmFwcGVyIGxlYXN0LWludmFzaXZlIGJ5IG5vdCB3cmFwcGluZyBpdCwgaWYgdGhlIGhlbHBlciBpcyBub3QgYSBmdW5jdGlvbi5cbiAgICByZXR1cm4gaGVscGVyO1xuICB9XG4gIGxldCB3cmFwcGVyID0gZnVuY3Rpb24oLyogZHluYW1pYyBhcmd1bWVudHMgKi8pIHtcbiAgICBjb25zdCBvcHRpb25zID0gYXJndW1lbnRzW2FyZ3VtZW50cy5sZW5ndGggLSAxXTtcbiAgICBhcmd1bWVudHNbYXJndW1lbnRzLmxlbmd0aCAtIDFdID0gdHJhbnNmb3JtT3B0aW9uc0ZuKG9wdGlvbnMpO1xuICAgIHJldHVybiBoZWxwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgfTtcbiAgcmV0dXJuIHdyYXBwZXI7XG59XG4iXX0=
+
+
+/***/ }),
+
+/***/ "./node_modules/handlebars/dist/cjs/handlebars/logger.js":
+/*!***************************************************************!*\
+  !*** ./node_modules/handlebars/dist/cjs/handlebars/logger.js ***!
+  \***************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+exports.__esModule = true;
+
+var _utils = __webpack_require__(/*! ./utils */ "./node_modules/handlebars/dist/cjs/handlebars/utils.js");
+
+var logger = {
+  methodMap: ['debug', 'info', 'warn', 'error'],
+  level: 'info',
+
+  // Maps a given level value to the `methodMap` indexes above.
+  lookupLevel: function lookupLevel(level) {
+    if (typeof level === 'string') {
+      var levelMap = _utils.indexOf(logger.methodMap, level.toLowerCase());
+      if (levelMap >= 0) {
+        level = levelMap;
+      } else {
+        level = parseInt(level, 10);
+      }
+    }
+
+    return level;
+  },
+
+  // Can be overridden in the host environment
+  log: function log(level) {
+    level = logger.lookupLevel(level);
+
+    if (typeof console !== 'undefined' && logger.lookupLevel(logger.level) <= level) {
+      var method = logger.methodMap[level];
+      // eslint-disable-next-line no-console
+      if (!console[method]) {
+        method = 'log';
+      }
+
+      for (var _len = arguments.length, message = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
+        message[_key - 1] = arguments[_key];
+      }
+
+      console[method].apply(console, message); // eslint-disable-line no-console
+    }
+  }
+};
+
+exports['default'] = logger;
+module.exports = exports['default'];
+//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2xvZ2dlci5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O3FCQUF3QixTQUFTOztBQUVqQyxJQUFJLE1BQU0sR0FBRztBQUNYLFdBQVMsRUFBRSxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQztBQUM3QyxPQUFLLEVBQUUsTUFBTTs7O0FBR2IsYUFBVyxFQUFFLHFCQUFTLEtBQUssRUFBRTtBQUMzQixRQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRTtBQUM3QixVQUFJLFFBQVEsR0FBRyxlQUFRLE1BQU0sQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7QUFDOUQsVUFBSSxRQUFRLElBQUksQ0FBQyxFQUFFO0FBQ2pCLGFBQUssR0FBRyxRQUFRLENBQUM7T0FDbEIsTUFBTTtBQUNMLGFBQUssR0FBRyxRQUFRLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO09BQzdCO0tBQ0Y7O0FBRUQsV0FBTyxLQUFLLENBQUM7R0FDZDs7O0FBR0QsS0FBRyxFQUFFLGFBQVMsS0FBSyxFQUFjO0FBQy9CLFNBQUssR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDOztBQUVsQyxRQUNFLE9BQU8sT0FBTyxLQUFLLFdBQVcsSUFDOUIsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxFQUN6QztBQUNBLFVBQUksTUFBTSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7O0FBRXJDLFVBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUU7QUFDcEIsY0FBTSxHQUFHLEtBQUssQ0FBQztPQUNoQjs7d0NBWG1CLE9BQU87QUFBUCxlQUFPOzs7QUFZM0IsYUFBTyxDQUFDLE1BQU0sT0FBQyxDQUFmLE9BQU8sRUFBWSxPQUFPLENBQUMsQ0FBQztLQUM3QjtHQUNGO0NBQ0YsQ0FBQzs7cUJBRWEsTUFBTSIsImZpbGUiOiJsb2dnZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmRleE9mIH0gZnJvbSAnLi91dGlscyc7XG5cbmxldCBsb2dnZXIgPSB7XG4gIG1ldGhvZE1hcDogWydkZWJ1ZycsICdpbmZvJywgJ3dhcm4nLCAnZXJyb3InXSxcbiAgbGV2ZWw6ICdpbmZvJyxcblxuICAvLyBNYXBzIGEgZ2l2ZW4gbGV2ZWwgdmFsdWUgdG8gdGhlIGBtZXRob2RNYXBgIGluZGV4ZXMgYWJvdmUuXG4gIGxvb2t1cExldmVsOiBmdW5jdGlvbihsZXZlbCkge1xuICAgIGlmICh0eXBlb2YgbGV2ZWwgPT09ICdzdHJpbmcnKSB7XG4gICAgICBsZXQgbGV2ZWxNYXAgPSBpbmRleE9mKGxvZ2dlci5tZXRob2RNYXAsIGxldmVsLnRvTG93ZXJDYXNlKCkpO1xuICAgICAgaWYgKGxldmVsTWFwID49IDApIHtcbiAgICAgICAgbGV2ZWwgPSBsZXZlbE1hcDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxldmVsID0gcGFyc2VJbnQobGV2ZWwsIDEwKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbGV2ZWw7XG4gIH0sXG5cbiAgLy8gQ2FuIGJlIG92ZXJyaWRkZW4gaW4gdGhlIGhvc3QgZW52aXJvbm1lbnRcbiAgbG9nOiBmdW5jdGlvbihsZXZlbCwgLi4ubWVzc2FnZSkge1xuICAgIGxldmVsID0gbG9nZ2VyLmxvb2t1cExldmVsKGxldmVsKTtcblxuICAgIGlmIChcbiAgICAgIHR5cGVvZiBjb25zb2xlICE9PSAndW5kZWZpbmVkJyAmJlxuICAgICAgbG9nZ2VyLmxvb2t1cExldmVsKGxvZ2dlci5sZXZlbCkgPD0gbGV2ZWxcbiAgICApIHtcbiAgICAgIGxldCBtZXRob2QgPSBsb2dnZXIubWV0aG9kTWFwW2xldmVsXTtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICBpZiAoIWNvbnNvbGVbbWV0aG9kXSkge1xuICAgICAgICBtZXRob2QgPSAnbG9nJztcbiAgICAgIH1cbiAgICAgIGNvbnNvbGVbbWV0aG9kXSguLi5tZXNzYWdlKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1jb25zb2xlXG4gICAgfVxuICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBsb2dnZXI7XG4iXX0=
+
+
+/***/ }),
+
+/***/ "./node_modules/handlebars/dist/cjs/handlebars/no-conflict.js":
+/*!********************************************************************!*\
+  !*** ./node_modules/handlebars/dist/cjs/handlebars/no-conflict.js ***!
+  \********************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/* WEBPACK VAR INJECTION */(function(global) {
+
+exports.__esModule = true;
+
+exports['default'] = function (Handlebars) {
+  /* istanbul ignore next */
+  var root = typeof global !== 'undefined' ? global : window,
+      $Handlebars = root.Handlebars;
+  /* istanbul ignore next */
+  Handlebars.noConflict = function () {
+    if (root.Handlebars === Handlebars) {
+      root.Handlebars = $Handlebars;
+    }
+    return Handlebars;
+  };
+};
+
+module.exports = exports['default'];
+//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL25vLWNvbmZsaWN0LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7cUJBQWUsVUFBUyxVQUFVLEVBQUU7O0FBRWxDLE1BQUksSUFBSSxHQUFHLE9BQU8sTUFBTSxLQUFLLFdBQVcsR0FBRyxNQUFNLEdBQUcsTUFBTTtNQUN4RCxXQUFXLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQzs7QUFFaEMsWUFBVSxDQUFDLFVBQVUsR0FBRyxZQUFXO0FBQ2pDLFFBQUksSUFBSSxDQUFDLFVBQVUsS0FBSyxVQUFVLEVBQUU7QUFDbEMsVUFBSSxDQUFDLFVBQVUsR0FBRyxXQUFXLENBQUM7S0FDL0I7QUFDRCxXQUFPLFVBQVUsQ0FBQztHQUNuQixDQUFDO0NBQ0giLCJmaWxlIjoibm8tY29uZmxpY3QuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbihIYW5kbGViYXJzKSB7XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIGxldCByb290ID0gdHlwZW9mIGdsb2JhbCAhPT0gJ3VuZGVmaW5lZCcgPyBnbG9iYWwgOiB3aW5kb3csXG4gICAgJEhhbmRsZWJhcnMgPSByb290LkhhbmRsZWJhcnM7XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIEhhbmRsZWJhcnMubm9Db25mbGljdCA9IGZ1bmN0aW9uKCkge1xuICAgIGlmIChyb290LkhhbmRsZWJhcnMgPT09IEhhbmRsZWJhcnMpIHtcbiAgICAgIHJvb3QuSGFuZGxlYmFycyA9ICRIYW5kbGViYXJzO1xuICAgIH1cbiAgICByZXR1cm4gSGFuZGxlYmFycztcbiAgfTtcbn1cbiJdfQ==
+
+/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../../webpack/buildin/global.js */ "./node_modules/webpack/buildin/global.js")))
+
+/***/ }),
+
+/***/ "./node_modules/handlebars/dist/cjs/handlebars/runtime.js":
+/*!****************************************************************!*\
+  !*** ./node_modules/handlebars/dist/cjs/handlebars/runtime.js ***!
+  \****************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+exports.__esModule = true;
+exports.checkRevision = checkRevision;
+exports.template = template;
+exports.wrapProgram = wrapProgram;
+exports.resolvePartial = resolvePartial;
+exports.invokePartial = invokePartial;
+exports.noop = noop;
+// istanbul ignore next
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
+
+// istanbul ignore next
+
+function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } }
+
+var _utils = __webpack_require__(/*! ./utils */ "./node_modules/handlebars/dist/cjs/handlebars/utils.js");
+
+var Utils = _interopRequireWildcard(_utils);
+
+var _exception = __webpack_require__(/*! ./exception */ "./node_modules/handlebars/dist/cjs/handlebars/exception.js");
+
+var _exception2 = _interopRequireDefault(_exception);
+
+var _base = __webpack_require__(/*! ./base */ "./node_modules/handlebars/dist/cjs/handlebars/base.js");
+
+var _helpers = __webpack_require__(/*! ./helpers */ "./node_modules/handlebars/dist/cjs/handlebars/helpers.js");
+
+var _internalWrapHelper = __webpack_require__(/*! ./internal/wrapHelper */ "./node_modules/handlebars/dist/cjs/handlebars/internal/wrapHelper.js");
+
+var _internalProtoAccess = __webpack_require__(/*! ./internal/proto-access */ "./node_modules/handlebars/dist/cjs/handlebars/internal/proto-access.js");
+
+function checkRevision(compilerInfo) {
+  var compilerRevision = compilerInfo && compilerInfo[0] || 1,
+      currentRevision = _base.COMPILER_REVISION;
+
+  if (compilerRevision >= _base.LAST_COMPATIBLE_COMPILER_REVISION && compilerRevision <= _base.COMPILER_REVISION) {
+    return;
+  }
+
+  if (compilerRevision < _base.LAST_COMPATIBLE_COMPILER_REVISION) {
+    var runtimeVersions = _base.REVISION_CHANGES[currentRevision],
+        compilerVersions = _base.REVISION_CHANGES[compilerRevision];
+    throw new _exception2['default']('Template was precompiled with an older version of Handlebars than the current runtime. ' + 'Please update your precompiler to a newer version (' + runtimeVersions + ') or downgrade your runtime to an older version (' + compilerVersions + ').');
+  } else {
+    // Use the embedded version info since the runtime doesn't know about this revision yet
+    throw new _exception2['default']('Template was precompiled with a newer version of Handlebars than the current runtime. ' + 'Please update your runtime to a newer version (' + compilerInfo[1] + ').');
+  }
+}
+
+function template(templateSpec, env) {
+  /* istanbul ignore next */
+  if (!env) {
+    throw new _exception2['default']('No environment passed to template');
+  }
+  if (!templateSpec || !templateSpec.main) {
+    throw new _exception2['default']('Unknown template object: ' + typeof templateSpec);
+  }
+
+  templateSpec.main.decorator = templateSpec.main_d;
+
+  // Note: Using env.VM references rather than local var references throughout this section to allow
+  // for external users to override these as pseudo-supported APIs.
+  env.VM.checkRevision(templateSpec.compiler);
+
+  // backwards compatibility for precompiled templates with compiler-version 7 (<4.3.0)
+  var templateWasPrecompiledWithCompilerV7 = templateSpec.compiler && templateSpec.compiler[0] === 7;
+
+  function invokePartialWrapper(partial, context, options) {
+    if (options.hash) {
+      context = Utils.extend({}, context, options.hash);
+      if (options.ids) {
+        options.ids[0] = true;
+      }
+    }
+    partial = env.VM.resolvePartial.call(this, partial, context, options);
+
+    var extendedOptions = Utils.extend({}, options, {
+      hooks: this.hooks,
+      protoAccessControl: this.protoAccessControl
+    });
+
+    var result = env.VM.invokePartial.call(this, partial, context, extendedOptions);
+
+    if (result == null && env.compile) {
+      options.partials[options.name] = env.compile(partial, templateSpec.compilerOptions, env);
+      result = options.partials[options.name](context, extendedOptions);
+    }
+    if (result != null) {
+      if (options.indent) {
+        var lines = result.split('\n');
+        for (var i = 0, l = lines.length; i < l; i++) {
+          if (!lines[i] && i + 1 === l) {
+            break;
+          }
+
+          lines[i] = options.indent + lines[i];
+        }
+        result = lines.join('\n');
+      }
+      return result;
+    } else {
+      throw new _exception2['default']('The partial ' + options.name + ' could not be compiled when running in runtime-only mode');
+    }
+  }
+
+  // Just add water
+  var container = {
+    strict: function strict(obj, name, loc) {
+      if (!obj || !(name in obj)) {
+        throw new _exception2['default']('"' + name + '" not defined in ' + obj, {
+          loc: loc
+        });
+      }
+      return obj[name];
+    },
+    lookupProperty: function lookupProperty(parent, propertyName) {
+      var result = parent[propertyName];
+      if (result == null) {
+        return result;
+      }
+      if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+        return result;
+      }
+
+      if (_internalProtoAccess.resultIsAllowed(result, container.protoAccessControl, propertyName)) {
+        return result;
+      }
+      return undefined;
+    },
+    lookup: function lookup(depths, name) {
+      var len = depths.length;
+      for (var i = 0; i < len; i++) {
+        var result = depths[i] && container.lookupProperty(depths[i], name);
+        if (result != null) {
+          return depths[i][name];
+        }
+      }
+    },
+    lambda: function lambda(current, context) {
+      return typeof current === 'function' ? current.call(context) : current;
+    },
+
+    escapeExpression: Utils.escapeExpression,
+    invokePartial: invokePartialWrapper,
+
+    fn: function fn(i) {
+      var ret = templateSpec[i];
+      ret.decorator = templateSpec[i + '_d'];
+      return ret;
+    },
+
+    programs: [],
+    program: function program(i, data, declaredBlockParams, blockParams, depths) {
+      var programWrapper = this.programs[i],
+          fn = this.fn(i);
+      if (data || depths || blockParams || declaredBlockParams) {
+        programWrapper = wrapProgram(this, i, fn, data, declaredBlockParams, blockParams, depths);
+      } else if (!programWrapper) {
+        programWrapper = this.programs[i] = wrapProgram(this, i, fn);
+      }
+      return programWrapper;
+    },
+
+    data: function data(value, depth) {
+      while (value && depth--) {
+        value = value._parent;
+      }
+      return value;
+    },
+    mergeIfNeeded: function mergeIfNeeded(param, common) {
+      var obj = param || common;
+
+      if (param && common && param !== common) {
+        obj = Utils.extend({}, common, param);
+      }
+
+      return obj;
+    },
+    // An empty object to use as replacement for null-contexts
+    nullContext: Object.seal({}),
+
+    noop: env.VM.noop,
+    compilerInfo: templateSpec.compiler
+  };
+
+  function ret(context) {
+    var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];
+
+    var data = options.data;
+
+    ret._setup(options);
+    if (!options.partial && templateSpec.useData) {
+      data = initData(context, data);
+    }
+    var depths = undefined,
+        blockParams = templateSpec.useBlockParams ? [] : undefined;
+    if (templateSpec.useDepths) {
+      if (options.depths) {
+        depths = context != options.depths[0] ? [context].concat(options.depths) : options.depths;
+      } else {
+        depths = [context];
+      }
+    }
+
+    function main(context /*, options*/) {
+      return '' + templateSpec.main(container, context, container.helpers, container.partials, data, blockParams, depths);
+    }
+
+    main = executeDecorators(templateSpec.main, main, container, options.depths || [], data, blockParams);
+    return main(context, options);
+  }
+
+  ret.isTop = true;
+
+  ret._setup = function (options) {
+    if (!options.partial) {
+      var mergedHelpers = Utils.extend({}, env.helpers, options.helpers);
+      wrapHelpersToPassLookupProperty(mergedHelpers, container);
+      container.helpers = mergedHelpers;
+
+      if (templateSpec.usePartial) {
+        // Use mergeIfNeeded here to prevent compiling global partials multiple times
+        container.partials = container.mergeIfNeeded(options.partials, env.partials);
+      }
+      if (templateSpec.usePartial || templateSpec.useDecorators) {
+        container.decorators = Utils.extend({}, env.decorators, options.decorators);
+      }
+
+      container.hooks = {};
+      container.protoAccessControl = _internalProtoAccess.createProtoAccessControl(options);
+
+      var keepHelperInHelpers = options.allowCallsToHelperMissing || templateWasPrecompiledWithCompilerV7;
+      _helpers.moveHelperToHooks(container, 'helperMissing', keepHelperInHelpers);
+      _helpers.moveHelperToHooks(container, 'blockHelperMissing', keepHelperInHelpers);
+    } else {
+      container.protoAccessControl = options.protoAccessControl; // internal option
+      container.helpers = options.helpers;
+      container.partials = options.partials;
+      container.decorators = options.decorators;
+      container.hooks = options.hooks;
+    }
+  };
+
+  ret._child = function (i, data, blockParams, depths) {
+    if (templateSpec.useBlockParams && !blockParams) {
+      throw new _exception2['default']('must pass block params');
+    }
+    if (templateSpec.useDepths && !depths) {
+      throw new _exception2['default']('must pass parent depths');
+    }
+
+    return wrapProgram(container, i, templateSpec[i], data, 0, blockParams, depths);
+  };
+  return ret;
+}
+
+function wrapProgram(container, i, fn, data, declaredBlockParams, blockParams, depths) {
+  function prog(context) {
+    var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];
+
+    var currentDepths = depths;
+    if (depths && context != depths[0] && !(context === container.nullContext && depths[0] === null)) {
+      currentDepths = [context].concat(depths);
+    }
+
+    return fn(container, context, container.helpers, container.partials, options.data || data, blockParams && [options.blockParams].concat(blockParams), currentDepths);
+  }
+
+  prog = executeDecorators(fn, prog, container, depths, data, blockParams);
+
+  prog.program = i;
+  prog.depth = depths ? depths.length : 0;
+  prog.blockParams = declaredBlockParams || 0;
+  return prog;
+}
+
+/**
+ * This is currently part of the official API, therefore implementation details should not be changed.
+ */
+
+function resolvePartial(partial, context, options) {
+  if (!partial) {
+    if (options.name === '@partial-block') {
+      partial = options.data['partial-block'];
+    } else {
+      partial = options.partials[options.name];
+    }
+  } else if (!partial.call && !options.name) {
+    // This is a dynamic partial that returned a string
+    options.name = partial;
+    partial = options.partials[partial];
+  }
+  return partial;
+}
+
+function invokePartial(partial, context, options) {
+  // Use the current closure context to save the partial-block if this partial
+  var currentPartialBlock = options.data && options.data['partial-block'];
+  options.partial = true;
+  if (options.ids) {
+    options.data.contextPath = options.ids[0] || options.data.contextPath;
+  }
+
+  var partialBlock = undefined;
+  if (options.fn && options.fn !== noop) {
+    (function () {
+      options.data = _base.createFrame(options.data);
+      // Wrapper function to get access to currentPartialBlock from the closure
+      var fn = options.fn;
+      partialBlock = options.data['partial-block'] = function partialBlockWrapper(context) {
+        var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];
+
+        // Restore the partial-block from the closure for the execution of the block
+        // i.e. the part inside the block of the partial call.
+        options.data = _base.createFrame(options.data);
+        options.data['partial-block'] = currentPartialBlock;
+        return fn(context, options);
+      };
+      if (fn.partials) {
+        options.partials = Utils.extend({}, options.partials, fn.partials);
+      }
+    })();
+  }
+
+  if (partial === undefined && partialBlock) {
+    partial = partialBlock;
+  }
+
+  if (partial === undefined) {
+    throw new _exception2['default']('The partial ' + options.name + ' could not be found');
+  } else if (partial instanceof Function) {
+    return partial(context, options);
+  }
+}
+
+function noop() {
+  return '';
+}
+
+function initData(context, data) {
+  if (!data || !('root' in data)) {
+    data = data ? _base.createFrame(data) : {};
+    data.root = context;
+  }
+  return data;
+}
+
+function executeDecorators(fn, prog, container, depths, data, blockParams) {
+  if (fn.decorator) {
+    var props = {};
+    prog = fn.decorator(prog, props, container, depths && depths[0], data, blockParams, depths);
+    Utils.extend(prog, props);
+  }
+  return prog;
+}
+
+function wrapHelpersToPassLookupProperty(mergedHelpers, container) {
+  Object.keys(mergedHelpers).forEach(function (helperName) {
+    var helper = mergedHelpers[helperName];
+    mergedHelpers[helperName] = passLookupPropertyOption(helper, container);
+  });
+}
+
+function passLookupPropertyOption(helper, container) {
+  var lookupProperty = container.lookupProperty;
+  return _internalWrapHelper.wrapHelper(helper, function (options) {
+    return Utils.extend({ lookupProperty: lookupProperty }, options);
+  });
+}
+//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL3J1bnRpbWUuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7cUJBQXVCLFNBQVM7O0lBQXBCLEtBQUs7O3lCQUNLLGFBQWE7Ozs7b0JBTTVCLFFBQVE7O3VCQUNtQixXQUFXOztrQ0FDbEIsdUJBQXVCOzttQ0FJM0MseUJBQXlCOztBQUV6QixTQUFTLGFBQWEsQ0FBQyxZQUFZLEVBQUU7QUFDMUMsTUFBTSxnQkFBZ0IsR0FBRyxBQUFDLFlBQVksSUFBSSxZQUFZLENBQUMsQ0FBQyxDQUFDLElBQUssQ0FBQztNQUM3RCxlQUFlLDBCQUFvQixDQUFDOztBQUV0QyxNQUNFLGdCQUFnQiwyQ0FBcUMsSUFDckQsZ0JBQWdCLDJCQUFxQixFQUNyQztBQUNBLFdBQU87R0FDUjs7QUFFRCxNQUFJLGdCQUFnQiwwQ0FBb0MsRUFBRTtBQUN4RCxRQUFNLGVBQWUsR0FBRyx1QkFBaUIsZUFBZSxDQUFDO1FBQ3ZELGdCQUFnQixHQUFHLHVCQUFpQixnQkFBZ0IsQ0FBQyxDQUFDO0FBQ3hELFVBQU0sMkJBQ0oseUZBQXlGLEdBQ3ZGLHFEQUFxRCxHQUNyRCxlQUFlLEdBQ2YsbURBQW1ELEdBQ25ELGdCQUFnQixHQUNoQixJQUFJLENBQ1AsQ0FBQztHQUNILE1BQU07O0FBRUwsVUFBTSwyQkFDSix3RkFBd0YsR0FDdEYsaURBQWlELEdBQ2pELFlBQVksQ0FBQyxDQUFDLENBQUMsR0FDZixJQUFJLENBQ1AsQ0FBQztHQUNIO0NBQ0Y7O0FBRU0sU0FBUyxRQUFRLENBQUMsWUFBWSxFQUFFLEdBQUcsRUFBRTs7QUFFMUMsTUFBSSxDQUFDLEdBQUcsRUFBRTtBQUNSLFVBQU0sMkJBQWMsbUNBQW1DLENBQUMsQ0FBQztHQUMxRDtBQUNELE1BQUksQ0FBQyxZQUFZLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFO0FBQ3ZDLFVBQU0sMkJBQWMsMkJBQTJCLEdBQUcsT0FBTyxZQUFZLENBQUMsQ0FBQztHQUN4RTs7QUFFRCxjQUFZLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxZQUFZLENBQUMsTUFBTSxDQUFDOzs7O0FBSWxELEtBQUcsQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQzs7O0FBRzVDLE1BQU0sb0NBQW9DLEdBQ3hDLFlBQVksQ0FBQyxRQUFRLElBQUksWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7O0FBRTFELFdBQVMsb0JBQW9CLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUU7QUFDdkQsUUFBSSxPQUFPLENBQUMsSUFBSSxFQUFFO0FBQ2hCLGFBQU8sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2xELFVBQUksT0FBTyxDQUFDLEdBQUcsRUFBRTtBQUNmLGVBQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDO09BQ3ZCO0tBQ0Y7QUFDRCxXQUFPLEdBQUcsR0FBRyxDQUFDLEVBQUUsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDOztBQUV0RSxRQUFJLGVBQWUsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxPQUFPLEVBQUU7QUFDOUMsV0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO0FBQ2pCLHdCQUFrQixFQUFFLElBQUksQ0FBQyxrQkFBa0I7S0FDNUMsQ0FBQyxDQUFDOztBQUVILFFBQUksTUFBTSxHQUFHLEdBQUcsQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLElBQUksQ0FDcEMsSUFBSSxFQUNKLE9BQU8sRUFDUCxPQUFPLEVBQ1AsZUFBZSxDQUNoQixDQUFDOztBQUVGLFFBQUksTUFBTSxJQUFJLElBQUksSUFBSSxHQUFHLENBQUMsT0FBTyxFQUFFO0FBQ2pDLGFBQU8sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQzFDLE9BQU8sRUFDUCxZQUFZLENBQUMsZUFBZSxFQUM1QixHQUFHLENBQ0osQ0FBQztBQUNGLFlBQU0sR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLEVBQUUsZUFBZSxDQUFDLENBQUM7S0FDbkU7QUFDRCxRQUFJLE1BQU0sSUFBSSxJQUFJLEVBQUU7QUFDbEIsVUFBSSxPQUFPLENBQUMsTUFBTSxFQUFFO0FBQ2xCLFlBQUksS0FBSyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDL0IsYUFBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUM1QyxjQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFO0FBQzVCLGtCQUFNO1dBQ1A7O0FBRUQsZUFBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3RDO0FBQ0QsY0FBTSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7T0FDM0I7QUFDRCxhQUFPLE1BQU0sQ0FBQztLQUNmLE1BQU07QUFDTCxZQUFNLDJCQUNKLGNBQWMsR0FDWixPQUFPLENBQUMsSUFBSSxHQUNaLDBEQUEwRCxDQUM3RCxDQUFDO0tBQ0g7R0FDRjs7O0FBR0QsTUFBSSxTQUFTLEdBQUc7QUFDZCxVQUFNLEVBQUUsZ0JBQVMsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUU7QUFDL0IsVUFBSSxDQUFDLEdBQUcsSUFBSSxFQUFFLElBQUksSUFBSSxHQUFHLENBQUEsQUFBQyxFQUFFO0FBQzFCLGNBQU0sMkJBQWMsR0FBRyxHQUFHLElBQUksR0FBRyxtQkFBbUIsR0FBRyxHQUFHLEVBQUU7QUFDMUQsYUFBRyxFQUFFLEdBQUc7U0FDVCxDQUFDLENBQUM7T0FDSjtBQUNELGFBQU8sR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQ2xCO0FBQ0Qsa0JBQWMsRUFBRSx3QkFBUyxNQUFNLEVBQUUsWUFBWSxFQUFFO0FBQzdDLFVBQUksTUFBTSxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztBQUNsQyxVQUFJLE1BQU0sSUFBSSxJQUFJLEVBQUU7QUFDbEIsZUFBTyxNQUFNLENBQUM7T0FDZjtBQUNELFVBQUksTUFBTSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxZQUFZLENBQUMsRUFBRTtBQUM5RCxlQUFPLE1BQU0sQ0FBQztPQUNmOztBQUVELFVBQUkscUNBQWdCLE1BQU0sRUFBRSxTQUFTLENBQUMsa0JBQWtCLEVBQUUsWUFBWSxDQUFDLEVBQUU7QUFDdkUsZUFBTyxNQUFNLENBQUM7T0FDZjtBQUNELGFBQU8sU0FBUyxDQUFDO0tBQ2xCO0FBQ0QsVUFBTSxFQUFFLGdCQUFTLE1BQU0sRUFBRSxJQUFJLEVBQUU7QUFDN0IsVUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQztBQUMxQixXQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQzVCLFlBQUksTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxTQUFTLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNwRSxZQUFJLE1BQU0sSUFBSSxJQUFJLEVBQUU7QUFDbEIsaUJBQU8sTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ3hCO09BQ0Y7S0FDRjtBQUNELFVBQU0sRUFBRSxnQkFBUyxPQUFPLEVBQUUsT0FBTyxFQUFFO0FBQ2pDLGFBQU8sT0FBTyxPQUFPLEtBQUssVUFBVSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsT0FBTyxDQUFDO0tBQ3hFOztBQUVELG9CQUFnQixFQUFFLEtBQUssQ0FBQyxnQkFBZ0I7QUFDeEMsaUJBQWEsRUFBRSxvQkFBb0I7O0FBRW5DLE1BQUUsRUFBRSxZQUFTLENBQUMsRUFBRTtBQUNkLFVBQUksR0FBRyxHQUFHLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMxQixTQUFHLENBQUMsU0FBUyxHQUFHLFlBQVksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7QUFDdkMsYUFBTyxHQUFHLENBQUM7S0FDWjs7QUFFRCxZQUFRLEVBQUUsRUFBRTtBQUNaLFdBQU8sRUFBRSxpQkFBUyxDQUFDLEVBQUUsSUFBSSxFQUFFLG1CQUFtQixFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUU7QUFDbkUsVUFBSSxjQUFjLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7VUFDbkMsRUFBRSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbEIsVUFBSSxJQUFJLElBQUksTUFBTSxJQUFJLFdBQVcsSUFBSSxtQkFBbUIsRUFBRTtBQUN4RCxzQkFBYyxHQUFHLFdBQVcsQ0FDMUIsSUFBSSxFQUNKLENBQUMsRUFDRCxFQUFFLEVBQ0YsSUFBSSxFQUNKLG1CQUFtQixFQUNuQixXQUFXLEVBQ1gsTUFBTSxDQUNQLENBQUM7T0FDSCxNQUFNLElBQUksQ0FBQyxjQUFjLEVBQUU7QUFDMUIsc0JBQWMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO09BQzlEO0FBQ0QsYUFBTyxjQUFjLENBQUM7S0FDdkI7O0FBRUQsUUFBSSxFQUFFLGNBQVMsS0FBSyxFQUFFLEtBQUssRUFBRTtBQUMzQixhQUFPLEtBQUssSUFBSSxLQUFLLEVBQUUsRUFBRTtBQUN2QixhQUFLLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQztPQUN2QjtBQUNELGFBQU8sS0FBSyxDQUFDO0tBQ2Q7QUFDRCxpQkFBYSxFQUFFLHVCQUFTLEtBQUssRUFBRSxNQUFNLEVBQUU7QUFDckMsVUFBSSxHQUFHLEdBQUcsS0FBSyxJQUFJLE1BQU0sQ0FBQzs7QUFFMUIsVUFBSSxLQUFLLElBQUksTUFBTSxJQUFJLEtBQUssS0FBSyxNQUFNLEVBQUU7QUFDdkMsV0FBRyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztPQUN2Qzs7QUFFRCxhQUFPLEdBQUcsQ0FBQztLQUNaOztBQUVELGVBQVcsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQzs7QUFFNUIsUUFBSSxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSTtBQUNqQixnQkFBWSxFQUFFLFlBQVksQ0FBQyxRQUFRO0dBQ3BDLENBQUM7O0FBRUYsV0FBUyxHQUFHLENBQUMsT0FBTyxFQUFnQjtRQUFkLE9BQU8seURBQUcsRUFBRTs7QUFDaEMsUUFBSSxJQUFJLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQzs7QUFFeEIsT0FBRyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUNwQixRQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sSUFBSSxZQUFZLENBQUMsT0FBTyxFQUFFO0FBQzVDLFVBQUksR0FBRyxRQUFRLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO0tBQ2hDO0FBQ0QsUUFBSSxNQUFNLFlBQUE7UUFDUixXQUFXLEdBQUcsWUFBWSxDQUFDLGNBQWMsR0FBRyxFQUFFLEdBQUcsU0FBUyxDQUFDO0FBQzdELFFBQUksWUFBWSxDQUFDLFNBQVMsRUFBRTtBQUMxQixVQUFJLE9BQU8sQ0FBQyxNQUFNLEVBQUU7QUFDbEIsY0FBTSxHQUNKLE9BQU8sSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUN4QixDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEdBQ2hDLE9BQU8sQ0FBQyxNQUFNLENBQUM7T0FDdEIsTUFBTTtBQUNMLGNBQU0sR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO09BQ3BCO0tBQ0Y7O0FBRUQsYUFBUyxJQUFJLENBQUMsT0FBTyxnQkFBZ0I7QUFDbkMsYUFDRSxFQUFFLEdBQ0YsWUFBWSxDQUFDLElBQUksQ0FDZixTQUFTLEVBQ1QsT0FBTyxFQUNQLFNBQVMsQ0FBQyxPQUFPLEVBQ2pCLFNBQVMsQ0FBQyxRQUFRLEVBQ2xCLElBQUksRUFDSixXQUFXLEVBQ1gsTUFBTSxDQUNQLENBQ0Q7S0FDSDs7QUFFRCxRQUFJLEdBQUcsaUJBQWlCLENBQ3RCLFlBQVksQ0FBQyxJQUFJLEVBQ2pCLElBQUksRUFDSixTQUFTLEVBQ1QsT0FBTyxDQUFDLE1BQU0sSUFBSSxFQUFFLEVBQ3BCLElBQUksRUFDSixXQUFXLENBQ1osQ0FBQztBQUNGLFdBQU8sSUFBSSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztHQUMvQjs7QUFFRCxLQUFHLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQzs7QUFFakIsS0FBRyxDQUFDLE1BQU0sR0FBRyxVQUFTLE9BQU8sRUFBRTtBQUM3QixRQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRTtBQUNwQixVQUFJLGFBQWEsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUNuRSxxQ0FBK0IsQ0FBQyxhQUFhLEVBQUUsU0FBUyxDQUFDLENBQUM7QUFDMUQsZUFBUyxDQUFDLE9BQU8sR0FBRyxhQUFhLENBQUM7O0FBRWxDLFVBQUksWUFBWSxDQUFDLFVBQVUsRUFBRTs7QUFFM0IsaUJBQVMsQ0FBQyxRQUFRLEdBQUcsU0FBUyxDQUFDLGFBQWEsQ0FDMUMsT0FBTyxDQUFDLFFBQVEsRUFDaEIsR0FBRyxDQUFDLFFBQVEsQ0FDYixDQUFDO09BQ0g7QUFDRCxVQUFJLFlBQVksQ0FBQyxVQUFVLElBQUksWUFBWSxDQUFDLGFBQWEsRUFBRTtBQUN6RCxpQkFBUyxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUNqQyxFQUFFLEVBQ0YsR0FBRyxDQUFDLFVBQVUsRUFDZCxPQUFPLENBQUMsVUFBVSxDQUNuQixDQUFDO09BQ0g7O0FBRUQsZUFBUyxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7QUFDckIsZUFBUyxDQUFDLGtCQUFrQixHQUFHLDhDQUF5QixPQUFPLENBQUMsQ0FBQzs7QUFFakUsVUFBSSxtQkFBbUIsR0FDckIsT0FBTyxDQUFDLHlCQUF5QixJQUNqQyxvQ0FBb0MsQ0FBQztBQUN2QyxpQ0FBa0IsU0FBUyxFQUFFLGVBQWUsRUFBRSxtQkFBbUIsQ0FBQyxDQUFDO0FBQ25FLGlDQUFrQixTQUFTLEVBQUUsb0JBQW9CLEVBQUUsbUJBQW1CLENBQUMsQ0FBQztLQUN6RSxNQUFNO0FBQ0wsZUFBUyxDQUFDLGtCQUFrQixHQUFHLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQztBQUMxRCxlQUFTLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUM7QUFDcEMsZUFBUyxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDO0FBQ3RDLGVBQVMsQ0FBQyxVQUFVLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQztBQUMxQyxlQUFTLENBQUMsS0FBSyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUM7S0FDakM7R0FDRixDQUFDOztBQUVGLEtBQUcsQ0FBQyxNQUFNLEdBQUcsVUFBUyxDQUFDLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUU7QUFDbEQsUUFBSSxZQUFZLENBQUMsY0FBYyxJQUFJLENBQUMsV0FBVyxFQUFFO0FBQy9DLFlBQU0sMkJBQWMsd0JBQXdCLENBQUMsQ0FBQztLQUMvQztBQUNELFFBQUksWUFBWSxDQUFDLFNBQVMsSUFBSSxDQUFDLE1BQU0sRUFBRTtBQUNyQyxZQUFNLDJCQUFjLHlCQUF5QixDQUFDLENBQUM7S0FDaEQ7O0FBRUQsV0FBTyxXQUFXLENBQ2hCLFNBQVMsRUFDVCxDQUFDLEVBQ0QsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUNmLElBQUksRUFDSixDQUFDLEVBQ0QsV0FBVyxFQUNYLE1BQU0sQ0FDUCxDQUFDO0dBQ0gsQ0FBQztBQUNGLFNBQU8sR0FBRyxDQUFDO0NBQ1o7O0FBRU0sU0FBUyxXQUFXLENBQ3pCLFNBQVMsRUFDVCxDQUFDLEVBQ0QsRUFBRSxFQUNGLElBQUksRUFDSixtQkFBbUIsRUFDbkIsV0FBVyxFQUNYLE1BQU0sRUFDTjtBQUNBLFdBQVMsSUFBSSxDQUFDLE9BQU8sRUFBZ0I7UUFBZCxPQUFPLHlEQUFHLEVBQUU7O0FBQ2pDLFFBQUksYUFBYSxHQUFHLE1BQU0sQ0FBQztBQUMzQixRQUNFLE1BQU0sSUFDTixPQUFPLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUNwQixFQUFFLE9BQU8sS0FBSyxTQUFTLENBQUMsV0FBVyxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUEsQUFBQyxFQUMxRDtBQUNBLG1CQUFhLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7S0FDMUM7O0FBRUQsV0FBTyxFQUFFLENBQ1AsU0FBUyxFQUNULE9BQU8sRUFDUCxTQUFTLENBQUMsT0FBTyxFQUNqQixTQUFTLENBQUMsUUFBUSxFQUNsQixPQUFPLENBQUMsSUFBSSxJQUFJLElBQUksRUFDcEIsV0FBVyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsRUFDeEQsYUFBYSxDQUNkLENBQUM7R0FDSDs7QUFFRCxNQUFJLEdBQUcsaUJBQWlCLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxXQUFXLENBQUMsQ0FBQzs7QUFFekUsTUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUM7QUFDakIsTUFBSSxDQUFDLEtBQUssR0FBRyxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7QUFDeEMsTUFBSSxDQUFDLFdBQVcsR0FBRyxtQkFBbUIsSUFBSSxDQUFDLENBQUM7QUFDNUMsU0FBTyxJQUFJLENBQUM7Q0FDYjs7Ozs7O0FBS00sU0FBUyxjQUFjLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUU7QUFDeEQsTUFBSSxDQUFDLE9BQU8sRUFBRTtBQUNaLFFBQUksT0FBTyxDQUFDLElBQUksS0FBSyxnQkFBZ0IsRUFBRTtBQUNyQyxhQUFPLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztLQUN6QyxNQUFNO0FBQ0wsYUFBTyxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQzFDO0dBQ0YsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUU7O0FBRXpDLFdBQU8sQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDO0FBQ3ZCLFdBQU8sR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0dBQ3JDO0FBQ0QsU0FBTyxPQUFPLENBQUM7Q0FDaEI7O0FBRU0sU0FBUyxhQUFhLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUU7O0FBRXZELE1BQU0sbUJBQW1CLEdBQUcsT0FBTyxDQUFDLElBQUksSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0FBQzFFLFNBQU8sQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO0FBQ3ZCLE1BQUksT0FBTyxDQUFDLEdBQUcsRUFBRTtBQUNmLFdBQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUM7R0FDdkU7O0FBRUQsTUFBSSxZQUFZLFlBQUEsQ0FBQztBQUNqQixNQUFJLE9BQU8sQ0FBQyxFQUFFLElBQUksT0FBTyxDQUFDLEVBQUUsS0FBSyxJQUFJLEVBQUU7O0FBQ3JDLGFBQU8sQ0FBQyxJQUFJLEdBQUcsa0JBQVksT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDOztBQUV6QyxVQUFJLEVBQUUsR0FBRyxPQUFPLENBQUMsRUFBRSxDQUFDO0FBQ3BCLGtCQUFZLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxTQUFTLG1CQUFtQixDQUN6RSxPQUFPLEVBRVA7WUFEQSxPQUFPLHlEQUFHLEVBQUU7Ozs7QUFJWixlQUFPLENBQUMsSUFBSSxHQUFHLGtCQUFZLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN6QyxlQUFPLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLG1CQUFtQixDQUFDO0FBQ3BELGVBQU8sRUFBRSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztPQUM3QixDQUFDO0FBQ0YsVUFBSSxFQUFFLENBQUMsUUFBUSxFQUFFO0FBQ2YsZUFBTyxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxPQUFPLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQztPQUNwRTs7R0FDRjs7QUFFRCxNQUFJLE9BQU8sS0FBSyxTQUFTLElBQUksWUFBWSxFQUFFO0FBQ3pDLFdBQU8sR0FBRyxZQUFZLENBQUM7R0FDeEI7O0FBRUQsTUFBSSxPQUFPLEtBQUssU0FBUyxFQUFFO0FBQ3pCLFVBQU0sMkJBQWMsY0FBYyxHQUFHLE9BQU8sQ0FBQyxJQUFJLEdBQUcscUJBQXFCLENBQUMsQ0FBQztHQUM1RSxNQUFNLElBQUksT0FBTyxZQUFZLFFBQVEsRUFBRTtBQUN0QyxXQUFPLE9BQU8sQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7R0FDbEM7Q0FDRjs7QUFFTSxTQUFTLElBQUksR0FBRztBQUNyQixTQUFPLEVBQUUsQ0FBQztDQUNYOztBQUVELFNBQVMsUUFBUSxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUU7QUFDL0IsTUFBSSxDQUFDLElBQUksSUFBSSxFQUFFLE1BQU0sSUFBSSxJQUFJLENBQUEsQUFBQyxFQUFFO0FBQzlCLFFBQUksR0FBRyxJQUFJLEdBQUcsa0JBQVksSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO0FBQ3JDLFFBQUksQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDO0dBQ3JCO0FBQ0QsU0FBTyxJQUFJLENBQUM7Q0FDYjs7QUFFRCxTQUFTLGlCQUFpQixDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFO0FBQ3pFLE1BQUksRUFBRSxDQUFDLFNBQVMsRUFBRTtBQUNoQixRQUFJLEtBQUssR0FBRyxFQUFFLENBQUM7QUFDZixRQUFJLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FDakIsSUFBSSxFQUNKLEtBQUssRUFDTCxTQUFTLEVBQ1QsTUFBTSxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFDbkIsSUFBSSxFQUNKLFdBQVcsRUFDWCxNQUFNLENBQ1AsQ0FBQztBQUNGLFNBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0dBQzNCO0FBQ0QsU0FBTyxJQUFJLENBQUM7Q0FDYjs7QUFFRCxTQUFTLCtCQUErQixDQUFDLGFBQWEsRUFBRSxTQUFTLEVBQUU7QUFDakUsUUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBQSxVQUFVLEVBQUk7QUFDL0MsUUFBSSxNQUFNLEdBQUcsYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBQ3ZDLGlCQUFhLENBQUMsVUFBVSxDQUFDLEdBQUcsd0JBQXdCLENBQUMsTUFBTSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0dBQ3pFLENBQUMsQ0FBQztDQUNKOztBQUVELFNBQVMsd0JBQXdCLENBQUMsTUFBTSxFQUFFLFNBQVMsRUFBRTtBQUNuRCxNQUFNLGNBQWMsR0FBRyxTQUFTLENBQUMsY0FBYyxDQUFDO0FBQ2hELFNBQU8sK0JBQVcsTUFBTSxFQUFFLFVBQUEsT0FBTyxFQUFJO0FBQ25DLFdBQU8sS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFFLGNBQWMsRUFBZCxjQUFjLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQztHQUNsRCxDQUFDLENBQUM7Q0FDSiIsImZpbGUiOiJydW50aW1lLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgVXRpbHMgZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgRXhjZXB0aW9uIGZyb20gJy4vZXhjZXB0aW9uJztcbmltcG9ydCB7XG4gIENPTVBJTEVSX1JFVklTSU9OLFxuICBjcmVhdGVGcmFtZSxcbiAgTEFTVF9DT01QQVRJQkxFX0NPTVBJTEVSX1JFVklTSU9OLFxuICBSRVZJU0lPTl9DSEFOR0VTXG59IGZyb20gJy4vYmFzZSc7XG5pbXBvcnQgeyBtb3ZlSGVscGVyVG9Ib29rcyB9IGZyb20gJy4vaGVscGVycyc7XG5pbXBvcnQgeyB3cmFwSGVscGVyIH0gZnJvbSAnLi9pbnRlcm5hbC93cmFwSGVscGVyJztcbmltcG9ydCB7XG4gIGNyZWF0ZVByb3RvQWNjZXNzQ29udHJvbCxcbiAgcmVzdWx0SXNBbGxvd2VkXG59IGZyb20gJy4vaW50ZXJuYWwvcHJvdG8tYWNjZXNzJztcblxuZXhwb3J0IGZ1bmN0aW9uIGNoZWNrUmV2aXNpb24oY29tcGlsZXJJbmZvKSB7XG4gIGNvbnN0IGNvbXBpbGVyUmV2aXNpb24gPSAoY29tcGlsZXJJbmZvICYmIGNvbXBpbGVySW5mb1swXSkgfHwgMSxcbiAgICBjdXJyZW50UmV2aXNpb24gPSBDT01QSUxFUl9SRVZJU0lPTjtcblxuICBpZiAoXG4gICAgY29tcGlsZXJSZXZpc2lvbiA+PSBMQVNUX0NPTVBBVElCTEVfQ09NUElMRVJfUkVWSVNJT04gJiZcbiAgICBjb21waWxlclJldmlzaW9uIDw9IENPTVBJTEVSX1JFVklTSU9OXG4gICkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmIChjb21waWxlclJldmlzaW9uIDwgTEFTVF9DT01QQVRJQkxFX0NPTVBJTEVSX1JFVklTSU9OKSB7XG4gICAgY29uc3QgcnVudGltZVZlcnNpb25zID0gUkVWSVNJT05fQ0hBTkdFU1tjdXJyZW50UmV2aXNpb25dLFxuICAgICAgY29tcGlsZXJWZXJzaW9ucyA9IFJFVklTSU9OX0NIQU5HRVNbY29tcGlsZXJSZXZpc2lvbl07XG4gICAgdGhyb3cgbmV3IEV4Y2VwdGlvbihcbiAgICAgICdUZW1wbGF0ZSB3YXMgcHJlY29tcGlsZWQgd2l0aCBhbiBvbGRlciB2ZXJzaW9uIG9mIEhhbmRsZWJhcnMgdGhhbiB0aGUgY3VycmVudCBydW50aW1lLiAnICtcbiAgICAgICAgJ1BsZWFzZSB1cGRhdGUgeW91ciBwcmVjb21waWxlciB0byBhIG5ld2VyIHZlcnNpb24gKCcgK1xuICAgICAgICBydW50aW1lVmVyc2lvbnMgK1xuICAgICAgICAnKSBvciBkb3duZ3JhZGUgeW91ciBydW50aW1lIHRvIGFuIG9sZGVyIHZlcnNpb24gKCcgK1xuICAgICAgICBjb21waWxlclZlcnNpb25zICtcbiAgICAgICAgJykuJ1xuICAgICk7XG4gIH0gZWxzZSB7XG4gICAgLy8gVXNlIHRoZSBlbWJlZGRlZCB2ZXJzaW9uIGluZm8gc2luY2UgdGhlIHJ1bnRpbWUgZG9lc24ndCBrbm93IGFib3V0IHRoaXMgcmV2aXNpb24geWV0XG4gICAgdGhyb3cgbmV3IEV4Y2VwdGlvbihcbiAgICAgICdUZW1wbGF0ZSB3YXMgcHJlY29tcGlsZWQgd2l0aCBhIG5ld2VyIHZlcnNpb24gb2YgSGFuZGxlYmFycyB0aGFuIHRoZSBjdXJyZW50IHJ1bnRpbWUuICcgK1xuICAgICAgICAnUGxlYXNlIHVwZGF0ZSB5b3VyIHJ1bnRpbWUgdG8gYSBuZXdlciB2ZXJzaW9uICgnICtcbiAgICAgICAgY29tcGlsZXJJbmZvWzFdICtcbiAgICAgICAgJykuJ1xuICAgICk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRlbXBsYXRlKHRlbXBsYXRlU3BlYywgZW52KSB7XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIGlmICghZW52KSB7XG4gICAgdGhyb3cgbmV3IEV4Y2VwdGlvbignTm8gZW52aXJvbm1lbnQgcGFzc2VkIHRvIHRlbXBsYXRlJyk7XG4gIH1cbiAgaWYgKCF0ZW1wbGF0ZVNwZWMgfHwgIXRlbXBsYXRlU3BlYy5tYWluKSB7XG4gICAgdGhyb3cgbmV3IEV4Y2VwdGlvbignVW5rbm93biB0ZW1wbGF0ZSBvYmplY3Q6ICcgKyB0eXBlb2YgdGVtcGxhdGVTcGVjKTtcbiAgfVxuXG4gIHRlbXBsYXRlU3BlYy5tYWluLmRlY29yYXRvciA9IHRlbXBsYXRlU3BlYy5tYWluX2Q7XG5cbiAgLy8gTm90ZTogVXNpbmcgZW52LlZNIHJlZmVyZW5jZXMgcmF0aGVyIHRoYW4gbG9jYWwgdmFyIHJlZmVyZW5jZXMgdGhyb3VnaG91dCB0aGlzIHNlY3Rpb24gdG8gYWxsb3dcbiAgLy8gZm9yIGV4dGVybmFsIHVzZXJzIHRvIG92ZXJyaWRlIHRoZXNlIGFzIHBzZXVkby1zdXBwb3J0ZWQgQVBJcy5cbiAgZW52LlZNLmNoZWNrUmV2aXNpb24odGVtcGxhdGVTcGVjLmNvbXBpbGVyKTtcblxuICAvLyBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSBmb3IgcHJlY29tcGlsZWQgdGVtcGxhdGVzIHdpdGggY29tcGlsZXItdmVyc2lvbiA3ICg8NC4zLjApXG4gIGNvbnN0IHRlbXBsYXRlV2FzUHJlY29tcGlsZWRXaXRoQ29tcGlsZXJWNyA9XG4gICAgdGVtcGxhdGVTcGVjLmNvbXBpbGVyICYmIHRlbXBsYXRlU3BlYy5jb21waWxlclswXSA9PT0gNztcblxuICBmdW5jdGlvbiBpbnZva2VQYXJ0aWFsV3JhcHBlcihwYXJ0aWFsLCBjb250ZXh0LCBvcHRpb25zKSB7XG4gICAgaWYgKG9wdGlvbnMuaGFzaCkge1xuICAgICAgY29udGV4dCA9IFV0aWxzLmV4dGVuZCh7fSwgY29udGV4dCwgb3B0aW9ucy5oYXNoKTtcbiAgICAgIGlmIChvcHRpb25zLmlkcykge1xuICAgICAgICBvcHRpb25zLmlkc1swXSA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIHBhcnRpYWwgPSBlbnYuVk0ucmVzb2x2ZVBhcnRpYWwuY2FsbCh0aGlzLCBwYXJ0aWFsLCBjb250ZXh0LCBvcHRpb25zKTtcblxuICAgIGxldCBleHRlbmRlZE9wdGlvbnMgPSBVdGlscy5leHRlbmQoe30sIG9wdGlvbnMsIHtcbiAgICAgIGhvb2tzOiB0aGlzLmhvb2tzLFxuICAgICAgcHJvdG9BY2Nlc3NDb250cm9sOiB0aGlzLnByb3RvQWNjZXNzQ29udHJvbFxuICAgIH0pO1xuXG4gICAgbGV0IHJlc3VsdCA9IGVudi5WTS5pbnZva2VQYXJ0aWFsLmNhbGwoXG4gICAgICB0aGlzLFxuICAgICAgcGFydGlhbCxcbiAgICAgIGNvbnRleHQsXG4gICAgICBleHRlbmRlZE9wdGlvbnNcbiAgICApO1xuXG4gICAgaWYgKHJlc3VsdCA9PSBudWxsICYmIGVudi5jb21waWxlKSB7XG4gICAgICBvcHRpb25zLnBhcnRpYWxzW29wdGlvbnMubmFtZV0gPSBlbnYuY29tcGlsZShcbiAgICAgICAgcGFydGlhbCxcbiAgICAgICAgdGVtcGxhdGVTcGVjLmNvbXBpbGVyT3B0aW9ucyxcbiAgICAgICAgZW52XG4gICAgICApO1xuICAgICAgcmVzdWx0ID0gb3B0aW9ucy5wYXJ0aWFsc1tvcHRpb25zLm5hbWVdKGNvbnRleHQsIGV4dGVuZGVkT3B0aW9ucyk7XG4gICAgfVxuICAgIGlmIChyZXN1bHQgIT0gbnVsbCkge1xuICAgICAgaWYgKG9wdGlvbnMuaW5kZW50KSB7XG4gICAgICAgIGxldCBsaW5lcyA9IHJlc3VsdC5zcGxpdCgnXFxuJyk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwLCBsID0gbGluZXMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgICAgaWYgKCFsaW5lc1tpXSAmJiBpICsgMSA9PT0gbCkge1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgbGluZXNbaV0gPSBvcHRpb25zLmluZGVudCArIGxpbmVzW2ldO1xuICAgICAgICB9XG4gICAgICAgIHJlc3VsdCA9IGxpbmVzLmpvaW4oJ1xcbicpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbihcbiAgICAgICAgJ1RoZSBwYXJ0aWFsICcgK1xuICAgICAgICAgIG9wdGlvbnMubmFtZSArXG4gICAgICAgICAgJyBjb3VsZCBub3QgYmUgY29tcGlsZWQgd2hlbiBydW5uaW5nIGluIHJ1bnRpbWUtb25seSBtb2RlJ1xuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAvLyBKdXN0IGFkZCB3YXRlclxuICBsZXQgY29udGFpbmVyID0ge1xuICAgIHN0cmljdDogZnVuY3Rpb24ob2JqLCBuYW1lLCBsb2MpIHtcbiAgICAgIGlmICghb2JqIHx8ICEobmFtZSBpbiBvYmopKSB7XG4gICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ1wiJyArIG5hbWUgKyAnXCIgbm90IGRlZmluZWQgaW4gJyArIG9iaiwge1xuICAgICAgICAgIGxvYzogbG9jXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG9ialtuYW1lXTtcbiAgICB9LFxuICAgIGxvb2t1cFByb3BlcnR5OiBmdW5jdGlvbihwYXJlbnQsIHByb3BlcnR5TmFtZSkge1xuICAgICAgbGV0IHJlc3VsdCA9IHBhcmVudFtwcm9wZXJ0eU5hbWVdO1xuICAgICAgaWYgKHJlc3VsdCA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9XG4gICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHBhcmVudCwgcHJvcGVydHlOYW1lKSkge1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuXG4gICAgICBpZiAocmVzdWx0SXNBbGxvd2VkKHJlc3VsdCwgY29udGFpbmVyLnByb3RvQWNjZXNzQ29udHJvbCwgcHJvcGVydHlOYW1lKSkge1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9LFxuICAgIGxvb2t1cDogZnVuY3Rpb24oZGVwdGhzLCBuYW1lKSB7XG4gICAgICBjb25zdCBsZW4gPSBkZXB0aHMubGVuZ3RoO1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgICAgICBsZXQgcmVzdWx0ID0gZGVwdGhzW2ldICYmIGNvbnRhaW5lci5sb29rdXBQcm9wZXJ0eShkZXB0aHNbaV0sIG5hbWUpO1xuICAgICAgICBpZiAocmVzdWx0ICE9IG51bGwpIHtcbiAgICAgICAgICByZXR1cm4gZGVwdGhzW2ldW25hbWVdO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBsYW1iZGE6IGZ1bmN0aW9uKGN1cnJlbnQsIGNvbnRleHQpIHtcbiAgICAgIHJldHVybiB0eXBlb2YgY3VycmVudCA9PT0gJ2Z1bmN0aW9uJyA/IGN1cnJlbnQuY2FsbChjb250ZXh0KSA6IGN1cnJlbnQ7XG4gICAgfSxcblxuICAgIGVzY2FwZUV4cHJlc3Npb246IFV0aWxzLmVzY2FwZUV4cHJlc3Npb24sXG4gICAgaW52b2tlUGFydGlhbDogaW52b2tlUGFydGlhbFdyYXBwZXIsXG5cbiAgICBmbjogZnVuY3Rpb24oaSkge1xuICAgICAgbGV0IHJldCA9IHRlbXBsYXRlU3BlY1tpXTtcbiAgICAgIHJldC5kZWNvcmF0b3IgPSB0ZW1wbGF0ZVNwZWNbaSArICdfZCddO1xuICAgICAgcmV0dXJuIHJldDtcbiAgICB9LFxuXG4gICAgcHJvZ3JhbXM6IFtdLFxuICAgIHByb2dyYW06IGZ1bmN0aW9uKGksIGRhdGEsIGRlY2xhcmVkQmxvY2tQYXJhbXMsIGJsb2NrUGFyYW1zLCBkZXB0aHMpIHtcbiAgICAgIGxldCBwcm9ncmFtV3JhcHBlciA9IHRoaXMucHJvZ3JhbXNbaV0sXG4gICAgICAgIGZuID0gdGhpcy5mbihpKTtcbiAgICAgIGlmIChkYXRhIHx8IGRlcHRocyB8fCBibG9ja1BhcmFtcyB8fCBkZWNsYXJlZEJsb2NrUGFyYW1zKSB7XG4gICAgICAgIHByb2dyYW1XcmFwcGVyID0gd3JhcFByb2dyYW0oXG4gICAgICAgICAgdGhpcyxcbiAgICAgICAgICBpLFxuICAgICAgICAgIGZuLFxuICAgICAgICAgIGRhdGEsXG4gICAgICAgICAgZGVjbGFyZWRCbG9ja1BhcmFtcyxcbiAgICAgICAgICBibG9ja1BhcmFtcyxcbiAgICAgICAgICBkZXB0aHNcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSBpZiAoIXByb2dyYW1XcmFwcGVyKSB7XG4gICAgICAgIHByb2dyYW1XcmFwcGVyID0gdGhpcy5wcm9ncmFtc1tpXSA9IHdyYXBQcm9ncmFtKHRoaXMsIGksIGZuKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBwcm9ncmFtV3JhcHBlcjtcbiAgICB9LFxuXG4gICAgZGF0YTogZnVuY3Rpb24odmFsdWUsIGRlcHRoKSB7XG4gICAgICB3aGlsZSAodmFsdWUgJiYgZGVwdGgtLSkge1xuICAgICAgICB2YWx1ZSA9IHZhbHVlLl9wYXJlbnQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfSxcbiAgICBtZXJnZUlmTmVlZGVkOiBmdW5jdGlvbihwYXJhbSwgY29tbW9uKSB7XG4gICAgICBsZXQgb2JqID0gcGFyYW0gfHwgY29tbW9uO1xuXG4gICAgICBpZiAocGFyYW0gJiYgY29tbW9uICYmIHBhcmFtICE9PSBjb21tb24pIHtcbiAgICAgICAgb2JqID0gVXRpbHMuZXh0ZW5kKHt9LCBjb21tb24sIHBhcmFtKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG9iajtcbiAgICB9LFxuICAgIC8vIEFuIGVtcHR5IG9iamVjdCB0byB1c2UgYXMgcmVwbGFjZW1lbnQgZm9yIG51bGwtY29udGV4dHNcbiAgICBudWxsQ29udGV4dDogT2JqZWN0LnNlYWwoe30pLFxuXG4gICAgbm9vcDogZW52LlZNLm5vb3AsXG4gICAgY29tcGlsZXJJbmZvOiB0ZW1wbGF0ZVNwZWMuY29tcGlsZXJcbiAgfTtcblxuICBmdW5jdGlvbiByZXQoY29udGV4dCwgb3B0aW9ucyA9IHt9KSB7XG4gICAgbGV0IGRhdGEgPSBvcHRpb25zLmRhdGE7XG5cbiAgICByZXQuX3NldHVwKG9wdGlvbnMpO1xuICAgIGlmICghb3B0aW9ucy5wYXJ0aWFsICYmIHRlbXBsYXRlU3BlYy51c2VEYXRhKSB7XG4gICAgICBkYXRhID0gaW5pdERhdGEoY29udGV4dCwgZGF0YSk7XG4gICAgfVxuICAgIGxldCBkZXB0aHMsXG4gICAgICBibG9ja1BhcmFtcyA9IHRlbXBsYXRlU3BlYy51c2VCbG9ja1BhcmFtcyA/IFtdIDogdW5kZWZpbmVkO1xuICAgIGlmICh0ZW1wbGF0ZVNwZWMudXNlRGVwdGhzKSB7XG4gICAgICBpZiAob3B0aW9ucy5kZXB0aHMpIHtcbiAgICAgICAgZGVwdGhzID1cbiAgICAgICAgICBjb250ZXh0ICE9IG9wdGlvbnMuZGVwdGhzWzBdXG4gICAgICAgICAgICA/IFtjb250ZXh0XS5jb25jYXQob3B0aW9ucy5kZXB0aHMpXG4gICAgICAgICAgICA6IG9wdGlvbnMuZGVwdGhzO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGVwdGhzID0gW2NvbnRleHRdO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIG1haW4oY29udGV4dCAvKiwgb3B0aW9ucyovKSB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICAnJyArXG4gICAgICAgIHRlbXBsYXRlU3BlYy5tYWluKFxuICAgICAgICAgIGNvbnRhaW5lcixcbiAgICAgICAgICBjb250ZXh0LFxuICAgICAgICAgIGNvbnRhaW5lci5oZWxwZXJzLFxuICAgICAgICAgIGNvbnRhaW5lci5wYXJ0aWFscyxcbiAgICAgICAgICBkYXRhLFxuICAgICAgICAgIGJsb2NrUGFyYW1zLFxuICAgICAgICAgIGRlcHRoc1xuICAgICAgICApXG4gICAgICApO1xuICAgIH1cblxuICAgIG1haW4gPSBleGVjdXRlRGVjb3JhdG9ycyhcbiAgICAgIHRlbXBsYXRlU3BlYy5tYWluLFxuICAgICAgbWFpbixcbiAgICAgIGNvbnRhaW5lcixcbiAgICAgIG9wdGlvbnMuZGVwdGhzIHx8IFtdLFxuICAgICAgZGF0YSxcbiAgICAgIGJsb2NrUGFyYW1zXG4gICAgKTtcbiAgICByZXR1cm4gbWFpbihjb250ZXh0LCBvcHRpb25zKTtcbiAgfVxuXG4gIHJldC5pc1RvcCA9IHRydWU7XG5cbiAgcmV0Ll9zZXR1cCA9IGZ1bmN0aW9uKG9wdGlvbnMpIHtcbiAgICBpZiAoIW9wdGlvbnMucGFydGlhbCkge1xuICAgICAgbGV0IG1lcmdlZEhlbHBlcnMgPSBVdGlscy5leHRlbmQoe30sIGVudi5oZWxwZXJzLCBvcHRpb25zLmhlbHBlcnMpO1xuICAgICAgd3JhcEhlbHBlcnNUb1Bhc3NMb29rdXBQcm9wZXJ0eShtZXJnZWRIZWxwZXJzLCBjb250YWluZXIpO1xuICAgICAgY29udGFpbmVyLmhlbHBlcnMgPSBtZXJnZWRIZWxwZXJzO1xuXG4gICAgICBpZiAodGVtcGxhdGVTcGVjLnVzZVBhcnRpYWwpIHtcbiAgICAgICAgLy8gVXNlIG1lcmdlSWZOZWVkZWQgaGVyZSB0byBwcmV2ZW50IGNvbXBpbGluZyBnbG9iYWwgcGFydGlhbHMgbXVsdGlwbGUgdGltZXNcbiAgICAgICAgY29udGFpbmVyLnBhcnRpYWxzID0gY29udGFpbmVyLm1lcmdlSWZOZWVkZWQoXG4gICAgICAgICAgb3B0aW9ucy5wYXJ0aWFscyxcbiAgICAgICAgICBlbnYucGFydGlhbHNcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGlmICh0ZW1wbGF0ZVNwZWMudXNlUGFydGlhbCB8fCB0ZW1wbGF0ZVNwZWMudXNlRGVjb3JhdG9ycykge1xuICAgICAgICBjb250YWluZXIuZGVjb3JhdG9ycyA9IFV0aWxzLmV4dGVuZChcbiAgICAgICAgICB7fSxcbiAgICAgICAgICBlbnYuZGVjb3JhdG9ycyxcbiAgICAgICAgICBvcHRpb25zLmRlY29yYXRvcnNcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgY29udGFpbmVyLmhvb2tzID0ge307XG4gICAgICBjb250YWluZXIucHJvdG9BY2Nlc3NDb250cm9sID0gY3JlYXRlUHJvdG9BY2Nlc3NDb250cm9sKG9wdGlvbnMpO1xuXG4gICAgICBsZXQga2VlcEhlbHBlckluSGVscGVycyA9XG4gICAgICAgIG9wdGlvbnMuYWxsb3dDYWxsc1RvSGVscGVyTWlzc2luZyB8fFxuICAgICAgICB0ZW1wbGF0ZVdhc1ByZWNvbXBpbGVkV2l0aENvbXBpbGVyVjc7XG4gICAgICBtb3ZlSGVscGVyVG9Ib29rcyhjb250YWluZXIsICdoZWxwZXJNaXNzaW5nJywga2VlcEhlbHBlckluSGVscGVycyk7XG4gICAgICBtb3ZlSGVscGVyVG9Ib29rcyhjb250YWluZXIsICdibG9ja0hlbHBlck1pc3NpbmcnLCBrZWVwSGVscGVySW5IZWxwZXJzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29udGFpbmVyLnByb3RvQWNjZXNzQ29udHJvbCA9IG9wdGlvbnMucHJvdG9BY2Nlc3NDb250cm9sOyAvLyBpbnRlcm5hbCBvcHRpb25cbiAgICAgIGNvbnRhaW5lci5oZWxwZXJzID0gb3B0aW9ucy5oZWxwZXJzO1xuICAgICAgY29udGFpbmVyLnBhcnRpYWxzID0gb3B0aW9ucy5wYXJ0aWFscztcbiAgICAgIGNvbnRhaW5lci5kZWNvcmF0b3JzID0gb3B0aW9ucy5kZWNvcmF0b3JzO1xuICAgICAgY29udGFpbmVyLmhvb2tzID0gb3B0aW9ucy5ob29rcztcbiAgICB9XG4gIH07XG5cbiAgcmV0Ll9jaGlsZCA9IGZ1bmN0aW9uKGksIGRhdGEsIGJsb2NrUGFyYW1zLCBkZXB0aHMpIHtcbiAgICBpZiAodGVtcGxhdGVTcGVjLnVzZUJsb2NrUGFyYW1zICYmICFibG9ja1BhcmFtcykge1xuICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbignbXVzdCBwYXNzIGJsb2NrIHBhcmFtcycpO1xuICAgIH1cbiAgICBpZiAodGVtcGxhdGVTcGVjLnVzZURlcHRocyAmJiAhZGVwdGhzKSB7XG4gICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCdtdXN0IHBhc3MgcGFyZW50IGRlcHRocycpO1xuICAgIH1cblxuICAgIHJldHVybiB3cmFwUHJvZ3JhbShcbiAgICAgIGNvbnRhaW5lcixcbiAgICAgIGksXG4gICAgICB0ZW1wbGF0ZVNwZWNbaV0sXG4gICAgICBkYXRhLFxuICAgICAgMCxcbiAgICAgIGJsb2NrUGFyYW1zLFxuICAgICAgZGVwdGhzXG4gICAgKTtcbiAgfTtcbiAgcmV0dXJuIHJldDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdyYXBQcm9ncmFtKFxuICBjb250YWluZXIsXG4gIGksXG4gIGZuLFxuICBkYXRhLFxuICBkZWNsYXJlZEJsb2NrUGFyYW1zLFxuICBibG9ja1BhcmFtcyxcbiAgZGVwdGhzXG4pIHtcbiAgZnVuY3Rpb24gcHJvZyhjb250ZXh0LCBvcHRpb25zID0ge30pIHtcbiAgICBsZXQgY3VycmVudERlcHRocyA9IGRlcHRocztcbiAgICBpZiAoXG4gICAgICBkZXB0aHMgJiZcbiAgICAgIGNvbnRleHQgIT0gZGVwdGhzWzBdICYmXG4gICAgICAhKGNvbnRleHQgPT09IGNvbnRhaW5lci5udWxsQ29udGV4dCAmJiBkZXB0aHNbMF0gPT09IG51bGwpXG4gICAgKSB7XG4gICAgICBjdXJyZW50RGVwdGhzID0gW2NvbnRleHRdLmNvbmNhdChkZXB0aHMpO1xuICAgIH1cblxuICAgIHJldHVybiBmbihcbiAgICAgIGNvbnRhaW5lcixcbiAgICAgIGNvbnRleHQsXG4gICAgICBjb250YWluZXIuaGVscGVycyxcbiAgICAgIGNvbnRhaW5lci5wYXJ0aWFscyxcbiAgICAgIG9wdGlvbnMuZGF0YSB8fCBkYXRhLFxuICAgICAgYmxvY2tQYXJhbXMgJiYgW29wdGlvbnMuYmxvY2tQYXJhbXNdLmNvbmNhdChibG9ja1BhcmFtcyksXG4gICAgICBjdXJyZW50RGVwdGhzXG4gICAgKTtcbiAgfVxuXG4gIHByb2cgPSBleGVjdXRlRGVjb3JhdG9ycyhmbiwgcHJvZywgY29udGFpbmVyLCBkZXB0aHMsIGRhdGEsIGJsb2NrUGFyYW1zKTtcblxuICBwcm9nLnByb2dyYW0gPSBpO1xuICBwcm9nLmRlcHRoID0gZGVwdGhzID8gZGVwdGhzLmxlbmd0aCA6IDA7XG4gIHByb2cuYmxvY2tQYXJhbXMgPSBkZWNsYXJlZEJsb2NrUGFyYW1zIHx8IDA7XG4gIHJldHVybiBwcm9nO1xufVxuXG4vKipcbiAqIFRoaXMgaXMgY3VycmVudGx5IHBhcnQgb2YgdGhlIG9mZmljaWFsIEFQSSwgdGhlcmVmb3JlIGltcGxlbWVudGF0aW9uIGRldGFpbHMgc2hvdWxkIG5vdCBiZSBjaGFuZ2VkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZVBhcnRpYWwocGFydGlhbCwgY29udGV4dCwgb3B0aW9ucykge1xuICBpZiAoIXBhcnRpYWwpIHtcbiAgICBpZiAob3B0aW9ucy5uYW1lID09PSAnQHBhcnRpYWwtYmxvY2snKSB7XG4gICAgICBwYXJ0aWFsID0gb3B0aW9ucy5kYXRhWydwYXJ0aWFsLWJsb2NrJ107XG4gICAgfSBlbHNlIHtcbiAgICAgIHBhcnRpYWwgPSBvcHRpb25zLnBhcnRpYWxzW29wdGlvbnMubmFtZV07XG4gICAgfVxuICB9IGVsc2UgaWYgKCFwYXJ0aWFsLmNhbGwgJiYgIW9wdGlvbnMubmFtZSkge1xuICAgIC8vIFRoaXMgaXMgYSBkeW5hbWljIHBhcnRpYWwgdGhhdCByZXR1cm5lZCBhIHN0cmluZ1xuICAgIG9wdGlvbnMubmFtZSA9IHBhcnRpYWw7XG4gICAgcGFydGlhbCA9IG9wdGlvbnMucGFydGlhbHNbcGFydGlhbF07XG4gIH1cbiAgcmV0dXJuIHBhcnRpYWw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnZva2VQYXJ0aWFsKHBhcnRpYWwsIGNvbnRleHQsIG9wdGlvbnMpIHtcbiAgLy8gVXNlIHRoZSBjdXJyZW50IGNsb3N1cmUgY29udGV4dCB0byBzYXZlIHRoZSBwYXJ0aWFsLWJsb2NrIGlmIHRoaXMgcGFydGlhbFxuICBjb25zdCBjdXJyZW50UGFydGlhbEJsb2NrID0gb3B0aW9ucy5kYXRhICYmIG9wdGlvbnMuZGF0YVsncGFydGlhbC1ibG9jayddO1xuICBvcHRpb25zLnBhcnRpYWwgPSB0cnVlO1xuICBpZiAob3B0aW9ucy5pZHMpIHtcbiAgICBvcHRpb25zLmRhdGEuY29udGV4dFBhdGggPSBvcHRpb25zLmlkc1swXSB8fCBvcHRpb25zLmRhdGEuY29udGV4dFBhdGg7XG4gIH1cblxuICBsZXQgcGFydGlhbEJsb2NrO1xuICBpZiAob3B0aW9ucy5mbiAmJiBvcHRpb25zLmZuICE9PSBub29wKSB7XG4gICAgb3B0aW9ucy5kYXRhID0gY3JlYXRlRnJhbWUob3B0aW9ucy5kYXRhKTtcbiAgICAvLyBXcmFwcGVyIGZ1bmN0aW9uIHRvIGdldCBhY2Nlc3MgdG8gY3VycmVudFBhcnRpYWxCbG9jayBmcm9tIHRoZSBjbG9zdXJlXG4gICAgbGV0IGZuID0gb3B0aW9ucy5mbjtcbiAgICBwYXJ0aWFsQmxvY2sgPSBvcHRpb25zLmRhdGFbJ3BhcnRpYWwtYmxvY2snXSA9IGZ1bmN0aW9uIHBhcnRpYWxCbG9ja1dyYXBwZXIoXG4gICAgICBjb250ZXh0LFxuICAgICAgb3B0aW9ucyA9IHt9XG4gICAgKSB7XG4gICAgICAvLyBSZXN0b3JlIHRoZSBwYXJ0aWFsLWJsb2NrIGZyb20gdGhlIGNsb3N1cmUgZm9yIHRoZSBleGVjdXRpb24gb2YgdGhlIGJsb2NrXG4gICAgICAvLyBpLmUuIHRoZSBwYXJ0IGluc2lkZSB0aGUgYmxvY2sgb2YgdGhlIHBhcnRpYWwgY2FsbC5cbiAgICAgIG9wdGlvbnMuZGF0YSA9IGNyZWF0ZUZyYW1lKG9wdGlvbnMuZGF0YSk7XG4gICAgICBvcHRpb25zLmRhdGFbJ3BhcnRpYWwtYmxvY2snXSA9IGN1cnJlbnRQYXJ0aWFsQmxvY2s7XG4gICAgICByZXR1cm4gZm4oY29udGV4dCwgb3B0aW9ucyk7XG4gICAgfTtcbiAgICBpZiAoZm4ucGFydGlhbHMpIHtcbiAgICAgIG9wdGlvbnMucGFydGlhbHMgPSBVdGlscy5leHRlbmQoe30sIG9wdGlvbnMucGFydGlhbHMsIGZuLnBhcnRpYWxzKTtcbiAgICB9XG4gIH1cblxuICBpZiAocGFydGlhbCA9PT0gdW5kZWZpbmVkICYmIHBhcnRpYWxCbG9jaykge1xuICAgIHBhcnRpYWwgPSBwYXJ0aWFsQmxvY2s7XG4gIH1cblxuICBpZiAocGFydGlhbCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgdGhyb3cgbmV3IEV4Y2VwdGlvbignVGhlIHBhcnRpYWwgJyArIG9wdGlvbnMubmFtZSArICcgY291bGQgbm90IGJlIGZvdW5kJyk7XG4gIH0gZWxzZSBpZiAocGFydGlhbCBpbnN0YW5jZW9mIEZ1bmN0aW9uKSB7XG4gICAgcmV0dXJuIHBhcnRpYWwoY29udGV4dCwgb3B0aW9ucyk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5vb3AoKSB7XG4gIHJldHVybiAnJztcbn1cblxuZnVuY3Rpb24gaW5pdERhdGEoY29udGV4dCwgZGF0YSkge1xuICBpZiAoIWRhdGEgfHwgISgncm9vdCcgaW4gZGF0YSkpIHtcbiAgICBkYXRhID0gZGF0YSA/IGNyZWF0ZUZyYW1lKGRhdGEpIDoge307XG4gICAgZGF0YS5yb290ID0gY29udGV4dDtcbiAgfVxuICByZXR1cm4gZGF0YTtcbn1cblxuZnVuY3Rpb24gZXhlY3V0ZURlY29yYXRvcnMoZm4sIHByb2csIGNvbnRhaW5lciwgZGVwdGhzLCBkYXRhLCBibG9ja1BhcmFtcykge1xuICBpZiAoZm4uZGVjb3JhdG9yKSB7XG4gICAgbGV0IHByb3BzID0ge307XG4gICAgcHJvZyA9IGZuLmRlY29yYXRvcihcbiAgICAgIHByb2csXG4gICAgICBwcm9wcyxcbiAgICAgIGNvbnRhaW5lcixcbiAgICAgIGRlcHRocyAmJiBkZXB0aHNbMF0sXG4gICAgICBkYXRhLFxuICAgICAgYmxvY2tQYXJhbXMsXG4gICAgICBkZXB0aHNcbiAgICApO1xuICAgIFV0aWxzLmV4dGVuZChwcm9nLCBwcm9wcyk7XG4gIH1cbiAgcmV0dXJuIHByb2c7XG59XG5cbmZ1bmN0aW9uIHdyYXBIZWxwZXJzVG9QYXNzTG9va3VwUHJvcGVydHkobWVyZ2VkSGVscGVycywgY29udGFpbmVyKSB7XG4gIE9iamVjdC5rZXlzKG1lcmdlZEhlbHBlcnMpLmZvckVhY2goaGVscGVyTmFtZSA9PiB7XG4gICAgbGV0IGhlbHBlciA9IG1lcmdlZEhlbHBlcnNbaGVscGVyTmFtZV07XG4gICAgbWVyZ2VkSGVscGVyc1toZWxwZXJOYW1lXSA9IHBhc3NMb29rdXBQcm9wZXJ0eU9wdGlvbihoZWxwZXIsIGNvbnRhaW5lcik7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBwYXNzTG9va3VwUHJvcGVydHlPcHRpb24oaGVscGVyLCBjb250YWluZXIpIHtcbiAgY29uc3QgbG9va3VwUHJvcGVydHkgPSBjb250YWluZXIubG9va3VwUHJvcGVydHk7XG4gIHJldHVybiB3cmFwSGVscGVyKGhlbHBlciwgb3B0aW9ucyA9PiB7XG4gICAgcmV0dXJuIFV0aWxzLmV4dGVuZCh7IGxvb2t1cFByb3BlcnR5IH0sIG9wdGlvbnMpO1xuICB9KTtcbn1cbiJdfQ==
+
+
+/***/ }),
+
+/***/ "./node_modules/handlebars/dist/cjs/handlebars/safe-string.js":
+/*!********************************************************************!*\
+  !*** ./node_modules/handlebars/dist/cjs/handlebars/safe-string.js ***!
+  \********************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+// Build out our basic SafeString type
+
+
+exports.__esModule = true;
+function SafeString(string) {
+  this.string = string;
+}
+
+SafeString.prototype.toString = SafeString.prototype.toHTML = function () {
+  return '' + this.string;
+};
+
+exports['default'] = SafeString;
+module.exports = exports['default'];
+//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL3NhZmUtc3RyaW5nLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFDQSxTQUFTLFVBQVUsQ0FBQyxNQUFNLEVBQUU7QUFDMUIsTUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7Q0FDdEI7O0FBRUQsVUFBVSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsWUFBVztBQUN2RSxTQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO0NBQ3pCLENBQUM7O3FCQUVhLFVBQVUiLCJmaWxlIjoic2FmZS1zdHJpbmcuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBCdWlsZCBvdXQgb3VyIGJhc2ljIFNhZmVTdHJpbmcgdHlwZVxuZnVuY3Rpb24gU2FmZVN0cmluZyhzdHJpbmcpIHtcbiAgdGhpcy5zdHJpbmcgPSBzdHJpbmc7XG59XG5cblNhZmVTdHJpbmcucHJvdG90eXBlLnRvU3RyaW5nID0gU2FmZVN0cmluZy5wcm90b3R5cGUudG9IVE1MID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiAnJyArIHRoaXMuc3RyaW5nO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgU2FmZVN0cmluZztcbiJdfQ==
+
+
+/***/ }),
+
+/***/ "./node_modules/handlebars/dist/cjs/handlebars/utils.js":
+/*!**************************************************************!*\
+  !*** ./node_modules/handlebars/dist/cjs/handlebars/utils.js ***!
+  \**************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+exports.__esModule = true;
+exports.extend = extend;
+exports.indexOf = indexOf;
+exports.escapeExpression = escapeExpression;
+exports.isEmpty = isEmpty;
+exports.createFrame = createFrame;
+exports.blockParams = blockParams;
+exports.appendContextPath = appendContextPath;
+var escape = {
+  '&': '&amp;',
+  '<': '&lt;',
+  '>': '&gt;',
+  '"': '&quot;',
+  "'": '&#x27;',
+  '`': '&#x60;',
+  '=': '&#x3D;'
+};
+
+var badChars = /[&<>"'`=]/g,
+    possible = /[&<>"'`=]/;
+
+function escapeChar(chr) {
+  return escape[chr];
+}
+
+function extend(obj /* , ...source */) {
+  for (var i = 1; i < arguments.length; i++) {
+    for (var key in arguments[i]) {
+      if (Object.prototype.hasOwnProperty.call(arguments[i], key)) {
+        obj[key] = arguments[i][key];
+      }
+    }
+  }
+
+  return obj;
+}
+
+var toString = Object.prototype.toString;
+
+exports.toString = toString;
+// Sourced from lodash
+// https://github.com/bestiejs/lodash/blob/master/LICENSE.txt
+/* eslint-disable func-style */
+var isFunction = function isFunction(value) {
+  return typeof value === 'function';
+};
+// fallback for older versions of Chrome and Safari
+/* istanbul ignore next */
+if (isFunction(/x/)) {
+  exports.isFunction = isFunction = function (value) {
+    return typeof value === 'function' && toString.call(value) === '[object Function]';
+  };
+}
+exports.isFunction = isFunction;
+
+/* eslint-enable func-style */
+
+/* istanbul ignore next */
+var isArray = Array.isArray || function (value) {
+  return value && typeof value === 'object' ? toString.call(value) === '[object Array]' : false;
+};
+
+exports.isArray = isArray;
+// Older IE versions do not directly support indexOf so we must implement our own, sadly.
+
+function indexOf(array, value) {
+  for (var i = 0, len = array.length; i < len; i++) {
+    if (array[i] === value) {
+      return i;
+    }
+  }
+  return -1;
+}
+
+function escapeExpression(string) {
+  if (typeof string !== 'string') {
+    // don't escape SafeStrings, since they're already safe
+    if (string && string.toHTML) {
+      return string.toHTML();
+    } else if (string == null) {
+      return '';
+    } else if (!string) {
+      return string + '';
+    }
+
+    // Force a string conversion as this will be done by the append regardless and
+    // the regex test will do this transparently behind the scenes, causing issues if
+    // an object's to string has escaped characters in it.
+    string = '' + string;
+  }
+
+  if (!possible.test(string)) {
+    return string;
+  }
+  return string.replace(badChars, escapeChar);
+}
+
+function isEmpty(value) {
+  if (!value && value !== 0) {
+    return true;
+  } else if (isArray(value) && value.length === 0) {
+    return true;
+  } else {
+    return false;
+  }
+}
+
+function createFrame(object) {
+  var frame = extend({}, object);
+  frame._parent = object;
+  return frame;
+}
+
+function blockParams(params, ids) {
+  params.path = ids;
+  return params;
+}
+
+function appendContextPath(contextPath, id) {
+  return (contextPath ? contextPath + '.' : '') + id;
+}
+//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL3V0aWxzLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQSxJQUFNLE1BQU0sR0FBRztBQUNiLEtBQUcsRUFBRSxPQUFPO0FBQ1osS0FBRyxFQUFFLE1BQU07QUFDWCxLQUFHLEVBQUUsTUFBTTtBQUNYLEtBQUcsRUFBRSxRQUFRO0FBQ2IsS0FBRyxFQUFFLFFBQVE7QUFDYixLQUFHLEVBQUUsUUFBUTtBQUNiLEtBQUcsRUFBRSxRQUFRO0NBQ2QsQ0FBQzs7QUFFRixJQUFNLFFBQVEsR0FBRyxZQUFZO0lBQzNCLFFBQVEsR0FBRyxXQUFXLENBQUM7O0FBRXpCLFNBQVMsVUFBVSxDQUFDLEdBQUcsRUFBRTtBQUN2QixTQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztDQUNwQjs7QUFFTSxTQUFTLE1BQU0sQ0FBQyxHQUFHLG9CQUFvQjtBQUM1QyxPQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUN6QyxTQUFLLElBQUksR0FBRyxJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRTtBQUM1QixVQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUU7QUFDM0QsV0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztPQUM5QjtLQUNGO0dBQ0Y7O0FBRUQsU0FBTyxHQUFHLENBQUM7Q0FDWjs7QUFFTSxJQUFJLFFBQVEsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQzs7Ozs7O0FBS2hELElBQUksVUFBVSxHQUFHLG9CQUFTLEtBQUssRUFBRTtBQUMvQixTQUFPLE9BQU8sS0FBSyxLQUFLLFVBQVUsQ0FBQztDQUNwQyxDQUFDOzs7QUFHRixJQUFJLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRTtBQUNuQixVQU9PLFVBQVUsR0FQakIsVUFBVSxHQUFHLFVBQVMsS0FBSyxFQUFFO0FBQzNCLFdBQ0UsT0FBTyxLQUFLLEtBQUssVUFBVSxJQUMzQixRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLG1CQUFtQixDQUM1QztHQUNILENBQUM7Q0FDSDtRQUNRLFVBQVUsR0FBVixVQUFVOzs7OztBQUlaLElBQU0sT0FBTyxHQUNsQixLQUFLLENBQUMsT0FBTyxJQUNiLFVBQVMsS0FBSyxFQUFFO0FBQ2QsU0FBTyxLQUFLLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxHQUNyQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLGdCQUFnQixHQUN6QyxLQUFLLENBQUM7Q0FDWCxDQUFDOzs7OztBQUdHLFNBQVMsT0FBTyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUU7QUFDcEMsT0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUNoRCxRQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxLQUFLLEVBQUU7QUFDdEIsYUFBTyxDQUFDLENBQUM7S0FDVjtHQUNGO0FBQ0QsU0FBTyxDQUFDLENBQUMsQ0FBQztDQUNYOztBQUVNLFNBQVMsZ0JBQWdCLENBQUMsTUFBTSxFQUFFO0FBQ3ZDLE1BQUksT0FBTyxNQUFNLEtBQUssUUFBUSxFQUFFOztBQUU5QixRQUFJLE1BQU0sSUFBSSxNQUFNLENBQUMsTUFBTSxFQUFFO0FBQzNCLGFBQU8sTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDO0tBQ3hCLE1BQU0sSUFBSSxNQUFNLElBQUksSUFBSSxFQUFFO0FBQ3pCLGFBQU8sRUFBRSxDQUFDO0tBQ1gsTUFBTSxJQUFJLENBQUMsTUFBTSxFQUFFO0FBQ2xCLGFBQU8sTUFBTSxHQUFHLEVBQUUsQ0FBQztLQUNwQjs7Ozs7QUFLRCxVQUFNLEdBQUcsRUFBRSxHQUFHLE1BQU0sQ0FBQztHQUN0Qjs7QUFFRCxNQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRTtBQUMxQixXQUFPLE1BQU0sQ0FBQztHQUNmO0FBQ0QsU0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQztDQUM3Qzs7QUFFTSxTQUFTLE9BQU8sQ0FBQyxLQUFLLEVBQUU7QUFDN0IsTUFBSSxDQUFDLEtBQUssSUFBSSxLQUFLLEtBQUssQ0FBQyxFQUFFO0FBQ3pCLFdBQU8sSUFBSSxDQUFDO0dBQ2IsTUFBTSxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtBQUMvQyxXQUFPLElBQUksQ0FBQztHQUNiLE1BQU07QUFDTCxXQUFPLEtBQUssQ0FBQztHQUNkO0NBQ0Y7O0FBRU0sU0FBUyxXQUFXLENBQUMsTUFBTSxFQUFFO0FBQ2xDLE1BQUksS0FBSyxHQUFHLE1BQU0sQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDL0IsT0FBSyxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7QUFDdkIsU0FBTyxLQUFLLENBQUM7Q0FDZDs7QUFFTSxTQUFTLFdBQVcsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFO0FBQ3ZDLFFBQU0sQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDO0FBQ2xCLFNBQU8sTUFBTSxDQUFDO0NBQ2Y7O0FBRU0sU0FBUyxpQkFBaUIsQ0FBQyxXQUFXLEVBQUUsRUFBRSxFQUFFO0FBQ2pELFNBQU8sQ0FBQyxXQUFXLEdBQUcsV0FBVyxHQUFHLEdBQUcsR0FBRyxFQUFFLENBQUEsR0FBSSxFQUFFLENBQUM7Q0FDcEQiLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBlc2NhcGUgPSB7XG4gICcmJzogJyZhbXA7JyxcbiAgJzwnOiAnJmx0OycsXG4gICc+JzogJyZndDsnLFxuICAnXCInOiAnJnF1b3Q7JyxcbiAgXCInXCI6ICcmI3gyNzsnLFxuICAnYCc6ICcmI3g2MDsnLFxuICAnPSc6ICcmI3gzRDsnXG59O1xuXG5jb25zdCBiYWRDaGFycyA9IC9bJjw+XCInYD1dL2csXG4gIHBvc3NpYmxlID0gL1smPD5cIidgPV0vO1xuXG5mdW5jdGlvbiBlc2NhcGVDaGFyKGNocikge1xuICByZXR1cm4gZXNjYXBlW2Nocl07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBleHRlbmQob2JqIC8qICwgLi4uc291cmNlICovKSB7XG4gIGZvciAobGV0IGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgZm9yIChsZXQga2V5IGluIGFyZ3VtZW50c1tpXSkge1xuICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChhcmd1bWVudHNbaV0sIGtleSkpIHtcbiAgICAgICAgb2JqW2tleV0gPSBhcmd1bWVudHNbaV1ba2V5XTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gb2JqO1xufVxuXG5leHBvcnQgbGV0IHRvU3RyaW5nID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZztcblxuLy8gU291cmNlZCBmcm9tIGxvZGFzaFxuLy8gaHR0cHM6Ly9naXRodWIuY29tL2Jlc3RpZWpzL2xvZGFzaC9ibG9iL21hc3Rlci9MSUNFTlNFLnR4dFxuLyogZXNsaW50LWRpc2FibGUgZnVuYy1zdHlsZSAqL1xubGV0IGlzRnVuY3Rpb24gPSBmdW5jdGlvbih2YWx1ZSkge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nO1xufTtcbi8vIGZhbGxiYWNrIGZvciBvbGRlciB2ZXJzaW9ucyBvZiBDaHJvbWUgYW5kIFNhZmFyaVxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbmlmIChpc0Z1bmN0aW9uKC94LykpIHtcbiAgaXNGdW5jdGlvbiA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJyAmJlxuICAgICAgdG9TdHJpbmcuY2FsbCh2YWx1ZSkgPT09ICdbb2JqZWN0IEZ1bmN0aW9uXSdcbiAgICApO1xuICB9O1xufVxuZXhwb3J0IHsgaXNGdW5jdGlvbiB9O1xuLyogZXNsaW50LWVuYWJsZSBmdW5jLXN0eWxlICovXG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5leHBvcnQgY29uc3QgaXNBcnJheSA9XG4gIEFycmF5LmlzQXJyYXkgfHxcbiAgZnVuY3Rpb24odmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWUgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0J1xuICAgICAgPyB0b1N0cmluZy5jYWxsKHZhbHVlKSA9PT0gJ1tvYmplY3QgQXJyYXldJ1xuICAgICAgOiBmYWxzZTtcbiAgfTtcblxuLy8gT2xkZXIgSUUgdmVyc2lvbnMgZG8gbm90IGRpcmVjdGx5IHN1cHBvcnQgaW5kZXhPZiBzbyB3ZSBtdXN0IGltcGxlbWVudCBvdXIgb3duLCBzYWRseS5cbmV4cG9ydCBmdW5jdGlvbiBpbmRleE9mKGFycmF5LCB2YWx1ZSkge1xuICBmb3IgKGxldCBpID0gMCwgbGVuID0gYXJyYXkubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICBpZiAoYXJyYXlbaV0gPT09IHZhbHVlKSB7XG4gICAgICByZXR1cm4gaTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIC0xO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXNjYXBlRXhwcmVzc2lvbihzdHJpbmcpIHtcbiAgaWYgKHR5cGVvZiBzdHJpbmcgIT09ICdzdHJpbmcnKSB7XG4gICAgLy8gZG9uJ3QgZXNjYXBlIFNhZmVTdHJpbmdzLCBzaW5jZSB0aGV5J3JlIGFscmVhZHkgc2FmZVxuICAgIGlmIChzdHJpbmcgJiYgc3RyaW5nLnRvSFRNTCkge1xuICAgICAgcmV0dXJuIHN0cmluZy50b0hUTUwoKTtcbiAgICB9IGVsc2UgaWYgKHN0cmluZyA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfSBlbHNlIGlmICghc3RyaW5nKSB7XG4gICAgICByZXR1cm4gc3RyaW5nICsgJyc7XG4gICAgfVxuXG4gICAgLy8gRm9yY2UgYSBzdHJpbmcgY29udmVyc2lvbiBhcyB0aGlzIHdpbGwgYmUgZG9uZSBieSB0aGUgYXBwZW5kIHJlZ2FyZGxlc3MgYW5kXG4gICAgLy8gdGhlIHJlZ2V4IHRlc3Qgd2lsbCBkbyB0aGlzIHRyYW5zcGFyZW50bHkgYmVoaW5kIHRoZSBzY2VuZXMsIGNhdXNpbmcgaXNzdWVzIGlmXG4gICAgLy8gYW4gb2JqZWN0J3MgdG8gc3RyaW5nIGhhcyBlc2NhcGVkIGNoYXJhY3RlcnMgaW4gaXQuXG4gICAgc3RyaW5nID0gJycgKyBzdHJpbmc7XG4gIH1cblxuICBpZiAoIXBvc3NpYmxlLnRlc3Qoc3RyaW5nKSkge1xuICAgIHJldHVybiBzdHJpbmc7XG4gIH1cbiAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKGJhZENoYXJzLCBlc2NhcGVDaGFyKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzRW1wdHkodmFsdWUpIHtcbiAgaWYgKCF2YWx1ZSAmJiB2YWx1ZSAhPT0gMCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9IGVsc2UgaWYgKGlzQXJyYXkodmFsdWUpICYmIHZhbHVlLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRnJhbWUob2JqZWN0KSB7XG4gIGxldCBmcmFtZSA9IGV4dGVuZCh7fSwgb2JqZWN0KTtcbiAgZnJhbWUuX3BhcmVudCA9IG9iamVjdDtcbiAgcmV0dXJuIGZyYW1lO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYmxvY2tQYXJhbXMocGFyYW1zLCBpZHMpIHtcbiAgcGFyYW1zLnBhdGggPSBpZHM7XG4gIHJldHVybiBwYXJhbXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhcHBlbmRDb250ZXh0UGF0aChjb250ZXh0UGF0aCwgaWQpIHtcbiAgcmV0dXJuIChjb250ZXh0UGF0aCA/IGNvbnRleHRQYXRoICsgJy4nIDogJycpICsgaWQ7XG59XG4iXX0=
+
+
+/***/ }),
+
+/***/ "./node_modules/handlebars/runtime.js":
+/*!********************************************!*\
+  !*** ./node_modules/handlebars/runtime.js ***!
+  \********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+// Create a simple path alias to allow browserify to resolve
+// the runtime on a supported path.
+module.exports = __webpack_require__(/*! ./dist/cjs/handlebars.runtime */ "./node_modules/handlebars/dist/cjs/handlebars.runtime.js")['default'];
+
+
+/***/ }),
+
+/***/ "./node_modules/webpack/buildin/global.js":
+/*!***********************************!*\
+  !*** (webpack)/buildin/global.js ***!
+  \***********************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+var g;
+
+// This works in non-strict mode
+g = (function() {
+       return this;
+})();
+
+try {
+       // This works if eval is allowed (see CSP)
+       g = g || new Function("return this")();
+} catch (e) {
+       // This works if the window reference is available
+       if (typeof window === "object") g = window;
+}
+
+// g can still be undefined, but nothing to do about it...
+// We return undefined, instead of nothing here, so it's
+// easier to handle this case. if(!global) { ...}
+
+module.exports = g;
+
+
+/***/ }),
+
+/***/ "./src/css/main.styl":
+/*!***************************!*\
+  !*** ./src/css/main.styl ***!
+  \***************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+// extracted by mini-css-extract-plugin
+
+/***/ }),
+
+/***/ "./src/index.js":
+/*!**********************!*\
+  !*** ./src/index.js ***!
+  \**********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/* WEBPACK VAR INJECTION */(function(global) {/**
+ * @fileoverview The entry file of fullcalendar
+ * @author NHN FE Development Lab
+ */
+
+
+
+var util = __webpack_require__(/*! tui-code-snippet */ "tui-code-snippet");
+var Calendar = __webpack_require__(/*! ./js/factory/calendar */ "./src/js/factory/calendar.js");
+
+__webpack_require__(/*! ./css/main.styl */ "./src/css/main.styl");
+__webpack_require__(/*! ./js/view/template/helper */ "./src/js/view/template/helper.js");
+
+// for jquery
+if (global.jQuery) {
+    global.jQuery.fn.tuiCalendar = function() {
+        var options, instance;
+
+        var el = this.get(0);
+        var args = Array.prototype.slice.apply(arguments);
+
+        if (el) {
+            options = util.pick(args, 0) || {};
+
+            instance = global.jQuery.data(el, 'tuiCalendar');
+
+            if (instance) {
+                if (typeof options === 'string' && instance[options]) {
+                    return instance[options].apply(instance, args.slice(1));
+                }
+            } else {
+                instance = new Calendar(el, options);
+                global.jQuery.data(el, 'tuiCalendar', instance);
+            }
+        }
+
+        return this;
+    };
+}
+
+module.exports = Calendar;
+
+/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../node_modules/webpack/buildin/global.js */ "./node_modules/webpack/buildin/global.js")))
+
+/***/ }),
+
+/***/ "./src/js/common/array.js":
+/*!********************************!*\
+  !*** ./src/js/common/array.js ***!
+  \********************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/**
+ * @fileoverview Utility module for array sort, binary search.
+ * @author NHN FE Development Lab <dl_javascript@nhn.com>
+ */
+
+
+var util = __webpack_require__(/*! tui-code-snippet */ "tui-code-snippet");
+var datetime = __webpack_require__(/*! ../common/datetime */ "./src/js/common/datetime.js");
+
+/**
+ * A module for sorting array.
+ * @module array
+ */
+
+/**********
+ * Search
+ **********/
+
+/**
+ * search item index using binary search algorithm.
+ *
+ * the array must be sorted.
+ * @param {array} arr array to search.
+ * @param {(string|number|boolean)} search value to search.
+ * @param {function} [fn] iteratee for retrieve each element's value to search.
+ * @param {function} [compare] compare function for specific sort status. default is string ascending.
+ * @returns {number} The number of item index searched. return negative number when no exist that item.
+ * It can use insert index after Math.abs()
+ * @example
+ *
+ * var arr = [1, 3, 7, 11, 15, 23];
+ *
+ * function sortNumber(a, b) {
+ *     return a - b;
+ * }
+ *
+ * bsearch(arr, 15, null, sortNumber);    // 4
+ * bsearch(arr, 21, null, sortNumber);    // -5
+ *
+ * arr.splice(Math.abs(bsearch(arr, 21, null, sortNumber)), 0, 21);
+ * // [1, 2, 7, 11, 15, 21, 23]
+ */
+function bsearch(arr, search, fn, compare) {
+    var minIndex = 0,
+        maxIndex = arr.length - 1,
+        currentIndex,
+        value,
+        comp;
+
+    compare = compare || stringASC;
+
+    while (minIndex <= maxIndex) {
+        currentIndex = (minIndex + maxIndex) / 2 | 0; // Math.floor
+        value = fn ? fn(arr[currentIndex]) : arr[currentIndex];
+        comp = compare(value, search);
+
+        if (comp < 0) {
+            minIndex = currentIndex + 1;
+        } else if (comp > 0) {
+            maxIndex = currentIndex - 1;
+        } else {
+            return currentIndex;
+        }
+    }
+
+    return ~maxIndex;
+}
+
+/**********
+ * Compare Functions
+ **********/
+
+/**
+ * compare function for array sort.
+ *
+ * sort array by ascending.
+ * @param {boolean} a The boolean to compare
+ * @param {boolean} b The boolean to compare.
+ * @returns {number} Result of comparison.
+ */
+function booleanASC(a, b) {
+    if (a !== b) {
+        return a ? -1 : 1;
+    }
+
+    return 0;
+}
+
+/**
+ * compare function for array sort.
+ *
+ * sort array by descending.
+ * @param {boolean} a The boolean to compare
+ * @param {boolean} b The boolean to compare.
+ * @returns {number} Result of comparison.
+ */
+function booleanDESC(a, b) {
+    if (a !== b) {
+        return a ? 1 : -1;
+    }
+
+    return 0;
+}
+
+/**
+ * compare function for array sort.
+ *
+ * sort array by number ascending.
+ * @param {number} _a The number to compare.
+ * @param {number} _b The number to compare.
+ * @returns {number} Result of comparison.
+ */
+function numberASC(_a, _b) {
+    var a = Number(_a),
+        b = Number(_b);
+
+    return a - b;
+}
+
+/**
+ * compare function for array sort.
+ *
+ * sort array by number descending.
+ * @param {number} _a The number to compare.
+ * @param {number} _b The number to compare.
+ * @returns {number} Result of comparison.
+ */
+function numberDESC(_a, _b) {
+    var a = Number(_a),
+        b = Number(_b);
+
+    return b - a;
+}
+
+/**
+ * compare function for array sort.
+ *
+ * sort array by string ascending
+ * @param {string} _a The string to compare.
+ * @param {string} _b The string to compare.
+ * @returns {number} Result of comparison.
+ */
+function stringASC(_a, _b) {
+    var a = String(_a),
+        b = String(_b);
+
+    if (a > b) {
+        return 1;
+    }
+    if (a < b) {
+        return -1;
+    }
+
+    return 0;
+}
+
+/**
+ * compare function for array sort.
+ *
+ * sort array by string descending
+ * @param {string} _a The string to compare.
+ * @param {string} _b The string to compare.
+ * @returns {number} Result of comparison.
+ */
+function stringDESC(_a, _b) {
+    var a = String(_a),
+        b = String(_b);
+
+    if (a > b) {
+        return -1;
+    }
+    if (a < b) {
+        return 1;
+    }
+
+    return 0;
+}
+
+/**
+ * compare function for array sort.
+ *
+ * sort array by string ascending with ignore case.
+ * @param {string} _a The string to compare.
+ * @param {string} _b The string to compare.
+ * @returns {number} Result of comparison.
+ */
+function stringASCIgnoreCase(_a, _b) {
+    var a = String(_a).toLowerCase(),
+        b = String(_b).toLowerCase();
+
+    if (a > b) {
+        return 1;
+    }
+    if (a < b) {
+        return -1;
+    }
+
+    return 0;
+}
+
+/**
+ * compare function for array sort.
+ *
+ * sort array by string descending with ignore case.
+ * @param {string} _a The string to compare.
+ * @param {string} _b The string to compare.
+ * @returns {number} Result of comparison.
+ */
+function stringDESCIgnoreCase(_a, _b) {
+    var a = String(_a).toLowerCase(),
+        b = String(_b).toLowerCase();
+
+    if (a > b) {
+        return -1;
+    }
+    if (a < b) {
+        return 1;
+    }
+
+    return 0;
+}
+
+/**
+ * Compare schedule models for sort.
+ *
+ * 1. all day schedule first.
+ * 2. early start.
+ * 3. longest duration.
+ * 4. early created.
+ * @param {Schedule|ScheduleViewModel} a The object schedule instance.
+ * @param {Schedule|ScheduleViewModel} b The object schedule instance.
+ * @returns {number} Result of comparison.
+ */
+function scheduleASC(a, b) {
+    var durationA, durationB;
+    var allDayCompare, startsCompare;
+    var modelA = a.valueOf();
+    var modelB = b.valueOf();
+
+    allDayCompare = booleanASC(modelA.isAllDay || a.hasMultiDates, modelB.isAllDay || b.hasMultiDates);
+
+    if (allDayCompare) {
+        return allDayCompare;
+    }
+
+    startsCompare = datetime.compare(a.getStarts(), b.getStarts());
+
+    if (startsCompare) {
+        return startsCompare;
+    }
+
+    durationA = a.duration();
+    durationB = b.duration();
+
+    if (durationA < durationB) {
+        return 1;
+    }
+    if (durationA > durationB) {
+        return -1;
+    }
+
+    return util.stamp(modelA) - util.stamp(modelB);
+}
+
+module.exports = {
+    bsearch: bsearch,
+    compare: {
+        schedule: {
+            asc: scheduleASC
+        },
+        bool: {
+            asc: booleanASC,
+            desc: booleanDESC
+        },
+        num: {
+            asc: numberASC,
+            desc: numberDESC
+        },
+        str: {
+            asc: stringASC,
+            desc: stringDESC,
+            ascIgnoreCase: stringASCIgnoreCase,
+            descIgnoreCase: stringDESCIgnoreCase
+        }
+    }
+};
+
+
+/***/ }),
+
+/***/ "./src/js/common/autoScroll.js":
+/*!*************************************!*\
+  !*** ./src/js/common/autoScroll.js ***!
+  \*************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/* WEBPACK VAR INJECTION */(function(global) {/**
+ * @fileoverview Add autoscroll feature to elements that prevented text selection.
+ * @author NHN FE Development Lab <dl_javascript@nhn.com>
+ */
+
+
+var util = __webpack_require__(/*! tui-code-snippet */ "tui-code-snippet");
+var domevent = __webpack_require__(/*! ../common/domevent */ "./src/js/common/domevent.js");
+var domutil = __webpack_require__(/*! ../common/domutil */ "./src/js/common/domutil.js");
+var Point = __webpack_require__(/*! ../common/point */ "./src/js/common/point.js");
+
+var SCROLL_INTERVAL = 30;
+var SCROLL_MAX = 15;
+var SCROLL_CLICK_INCREASED = 2; // In IE, the offset of the actual UI pixel when the scroll bar is clicked is offset.
+
+/**
+ * Add autoscroll feature to elements that prevented text selection.
+ * @constructor
+ * @param {HTMLElement} container - HTMLElement to add autoscroll features.
+ */
+function AutoScroll(container) {
+    /**
+     * @type {HTMLElement}
+     */
+    this.container = container;
+
+    /**
+     * @type {AutoScroll.DIRECTION}
+     */
+    this._direction = AutoScroll.DIRECTION.INSIDE;
+
+    /**
+     * @type {number}
+     */
+    this._offset = 0;
+
+    /**
+     * interval to scrolling
+     * @type {number}
+     */
+    this._intervalID = 0;
+
+    domevent.on(container, {
+        'mousedown': this._onMouseDown
+    }, this);
+}
+
+/**
+ * @enum
+ */
+AutoScroll.DIRECTION = {
+    INSIDE: 0,
+    TOP: 1,
+    RIGHT: 2,
+    BOTTOM: 3,
+    LEFT: 4
+};
+
+/**
+ * Instance destroy method.
+ */
+AutoScroll.prototype.destroy = function() {
+    domevent.off(this.container, {
+        'mousedown': this._onMouseDown,
+        'mousemove': this._onMouseMove,
+        'mouseup': this._onMouseUp
+    }, this);
+
+    window.clearInterval(this._intervalID);
+    this._intervalID = this._direction = this.container = null;
+};
+
+/**
+ * Normalize ClientRect and calculate each position of edges.
+ * @param {ClientRect} clientRect - ClientRect object of element.
+ * @returns {object} edges.
+ */
+AutoScroll.prototype._getEdgePositions = function(clientRect) {
+    return {
+        top: clientRect.top,
+        right: clientRect.left + clientRect.width,
+        bottom: clientRect.bottom,
+        left: clientRect.left
+    };
+};
+
+/**
+ * Get element real size ("real size" -> size without scrollbar)
+ * @param {HTMLElement} el - element want to know real size ("real size" -> size without scrollbar)
+ * @returns {number[]} real size [width, height]
+ */
+AutoScroll.prototype.getRealSize = function(el) {
+    var computed = domutil.getComputedStyle(el),
+        border,
+        padding;
+
+    border = parseFloat(computed.getPropertyValue('border-top-width')) +
+        parseFloat(computed.getPropertyValue('border-bottom-width'));
+    padding = parseFloat(computed.getPropertyValue('padding-top')) +
+        parseFloat(computed.getPropertyValue('padding-bottom'));
+
+    return [el.clientWidth + border + padding, el.clientHeight + border + padding];
+};
+
+/**
+ * Check supplied element has scrollbar.
+ * @param {HTMLElement} el - element want to know has scrollbar.
+ * @returns {boolean[]} has scrollbar? [horizontal, vertical]
+ */
+AutoScroll.prototype.hasScrollbar = function(el) {
+    var realSize = this.getRealSize(el);
+
+    return [
+        el.offsetWidth > Math.ceil(realSize[0]),
+        el.offsetHeight > Math.ceil(realSize[1])
+    ];
+};
+
+/**
+ * @param {HTMLElement} el - element want to know.
+ * @param {MouseEvent} mouseEvent - mouse event object.
+ * @returns {boolean} mouse pointer is on the scrollbar?
+ */
+AutoScroll.prototype.isOnScrollbar = function(el, mouseEvent) {
+    var realSize = this.getRealSize(el),
+        pos = domevent.getMousePosition(mouseEvent, el),
+        mouseInScrollbar = false;
+
+    mouseInScrollbar = (realSize[0] - SCROLL_CLICK_INCREASED < pos[0] ||
+                        realSize[1] - SCROLL_CLICK_INCREASED < pos[1]);
+
+    return mouseInScrollbar;
+};
+
+/**
+ * MouseDown event handler
+ * @param {MouseEvent} mouseDownEvent - mouse down event
+ */
+AutoScroll.prototype._onMouseDown = function(mouseDownEvent) {
+    // only primary button can start drag.
+    if (domevent.getMouseButton(mouseDownEvent) !== 0) {
+        return;
+    }
+
+    // deactivate autoscroll feature when mouse is on the scrollbar. (IE)
+    if (util.browser.msie && this.isOnScrollbar(this.container, mouseDownEvent)) {
+        return;
+    }
+
+    window.clearInterval(this._intervalID);
+    this._intervalID = window.setInterval(this._onTick.bind(this), SCROLL_INTERVAL);
+
+    domevent.on(global, {
+        'mousemove': this._onMouseMove,
+        'mouseup': this._onMouseUp
+    }, this);
+};
+
+/**
+ * MouseMove event handler
+ * @param {MouseEvent} mouseEvent - mouse move event object.
+ */
+AutoScroll.prototype._onMouseMove = function(mouseEvent) {
+    var edge = this._getEdgePositions(this.container.getBoundingClientRect()),
+        pos = Point.n(domevent.getMousePosition(mouseEvent));
+
+    if (pos.y >= edge.top && pos.y <= edge.bottom &&
+        pos.x >= edge.left && pos.x <= edge.right) {
+        this._direction = AutoScroll.DIRECTION.INSIDE;
+
+        return;
+    }
+
+    if (pos.y < edge.top) {
+        this._direction = AutoScroll.DIRECTION.TOP;
+        this._offset = edge.top - pos.y;
+
+        return;
+    }
+
+    if (pos.y > edge.bottom) {
+        this._direction = AutoScroll.DIRECTION.BOTTOM;
+        this._offset = pos.y - edge.bottom;
+
+        return;
+    }
+
+    if (pos.x < edge.left) {
+        this._direction = AutoScroll.DIRECTION.LEFT;
+        this._offset = edge.left - pos.x;
+
+        return;
+    }
+
+    this._direction = AutoScroll.DIRECTION.RIGHT;
+    this._offset = pos.x - edge.right;
+};
+
+/**
+ * MouseUp event handler.
+ */
+AutoScroll.prototype._onMouseUp = function() {
+    window.clearInterval(this._intervalID);
+    this._intervalID = 0;
+    this._direction = AutoScroll.DIRECTION.INSIDE;
+    this._offset = 0;
+
+    domevent.off(global, {
+        'mousemove': this._onMouseMove,
+        'mouseup': this._onMouseUp
+    }, this);
+};
+
+/**
+ * Interval tick event handler
+ */
+AutoScroll.prototype._onTick = function() {
+    var direction = this._direction,
+        container,
+        factor;
+
+    if (!direction) {
+        return;
+    }
+
+    container = this.container;
+    factor = Math.min(this._offset, SCROLL_MAX);
+
+    switch (direction) {
+        case AutoScroll.DIRECTION.TOP:
+            container.scrollTop -= factor;
+            break;
+        case AutoScroll.DIRECTION.RIGHT:
+            container.scrollLeft += factor;
+            break;
+        case AutoScroll.DIRECTION.BOTTOM:
+            container.scrollTop += factor;
+            break;
+        default:
+            container.scrollLeft -= factor;
+            break;
+    }
+};
+
+module.exports = AutoScroll;
+
+/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../node_modules/webpack/buildin/global.js */ "./node_modules/webpack/buildin/global.js")))
+
+/***/ }),
+
+/***/ "./src/js/common/collection.js":
+/*!*************************************!*\
+  !*** ./src/js/common/collection.js ***!
+  \*************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/**
+ * @fileoverview Common collections.
+ * @author NHN FE Development Lab <dl_javascript@nhn.com>
+ */
+
+
+var util = __webpack_require__(/*! tui-code-snippet */ "tui-code-snippet");
+var forEachProp = util.forEachOwnProperties,
+    forEachArr = util.forEachArray,
+    isFunc = util.isFunction,
+    isObj = util.isObject;
+
+var aps = Array.prototype.slice;
+
+/**
+ * Common collection.
+ *
+ * It need function for get model's unique id.
+ *
+ * if the function is not supplied then it use default function {@link Collection#getItemID}
+ * @constructor
+ * @param {function} [getItemIDFn] function for get model's id.
+ */
+function Collection(getItemIDFn) {
+    /**
+     * @type {object.<string, *>}
+     */
+    this.items = {};
+
+    /**
+     * @type {number}
+     */
+    this.length = 0;
+
+    if (isFunc(getItemIDFn)) {
+        /**
+         * @type {function}
+         */
+        this.getItemID = getItemIDFn;
+    }
+}
+
+/**********
+ * static props
+ **********/
+
+/**
+ * Combind supplied function filters and condition.
+ * @param {...function} filters - function filters
+ * @returns {function} combined filter
+ */
+Collection.and = function(filters) {
+    var cnt;
+
+    filters = aps.call(arguments);
+    cnt = filters.length;
+
+    return function(item) {
+        var i = 0;
+
+        for (; i < cnt; i += 1) {
+            if (!filters[i].call(null, item)) {
+                return false;
+            }
+        }
+
+        return true;
+    };
+};
+
+/**********
+ * prototype props
+ **********/
+
+/**
+ * get model's unique id.
+ * @param {object} item model instance.
+ * @returns {number} model unique id.
+ */
+Collection.prototype.getItemID = function(item) {
+    return String(item._id);
+};
+
+/**
+ * add models.
+ * @param {...*} item models to add this collection.
+ */
+Collection.prototype.add = function(item) {
+    var self = this,
+        id,
+        ownItems;
+
+    if (arguments.length > 1) {
+        forEachArr(aps.call(arguments), function(o) {
+            self.add(o);
+        });
+
+        return;
+    }
+
+    id = this.getItemID(item);
+    ownItems = this.items;
+
+    if (!ownItems[id]) {
+        this.length += 1;
+    }
+    ownItems[id] = item;
+};
+
+/**
+ * remove models.
+ * @param {...(object|string|number)} id model instance or unique id to delete.
+ * @returns {array} deleted model list.
+ */
+Collection.prototype.remove = function(id) {
+    var self = this,
+        removed = [],
+        ownItems,
+        itemToRemove;
+
+    if (!this.length) {
+        return removed;
+    }
+
+    if (arguments.length > 1) {
+        removed = util.map(aps.call(arguments), function(_id) {
+            return self.remove(_id);
+        });
+
+        return removed;
+    }
+
+    ownItems = this.items;
+
+    if (isObj(id)) {
+        id = this.getItemID(id);
+    }
+
+    if (!ownItems[id]) {
+        return removed;
+    }
+
+    this.length -= 1;
+    itemToRemove = ownItems[id];
+    delete ownItems[id];
+
+    return itemToRemove;
+};
+
+/**
+ * remove all models in collection.
+ */
+Collection.prototype.clear = function() {
+    this.items = {};
+    this.length = 0;
+};
+
+/**
+ * check collection has specific model.
+ * @param {(object|string|number|function)} id model instance or id or filter function to check
+ * @returns {boolean} is has model?
+ */
+Collection.prototype.has = function(id) {
+    var isFilter,
+        has;
+
+    if (!this.length) {
+        return false;
+    }
+
+    isFilter = isFunc(id);
+    has = false;
+
+    if (isFilter) {
+        this.each(function(item) {
+            if (id(item) === true) {
+                has = true;
+
+                return false; // returning false can stop this loop
+            }
+
+            return true;
+        });
+    } else {
+        id = isObj(id) ? this.getItemID(id) : id;
+        has = util.isExisty(this.items[id]);
+    }
+
+    return has;
+};
+
+/**
+ * invoke callback when model exist in collection.
+ * @param {(string|number)} id model unique id.
+ * @param {function} fn the callback.
+ * @param {*} [context] callback context.
+ */
+Collection.prototype.doWhenHas = function(id, fn, context) {
+    var item = this.items[id];
+
+    if (!util.isExisty(item)) {
+        return;
+    }
+
+    fn.call(context || this, item);
+};
+
+/**
+ * Search model. and return new collection.
+ * @param {function} filter filter function.
+ * @returns {Collection} new collection with filtered models.
+ * @example
+ * collection.find(function(item) {
+ *     return item.edited === true;
+ * });
+ *
+ * function filter1(item) {
+ *     return item.edited === false;
+ * }
+ *
+ * function filter2(item) {
+ *     return item.disabled === false;
+ * }
+ *
+ * collection.find(Collection.and(filter1, filter2));
+ */
+Collection.prototype.find = function(filter) {
+    var result = new Collection();
+
+    if (this.hasOwnProperty('getItemID')) {
+        result.getItemID = this.getItemID;
+    }
+
+    this.each(function(item) {
+        if (filter(item) === true) {
+            result.add(item);
+        }
+    });
+
+    return result;
+};
+
+/**
+ * Group element by specific key values.
+ *
+ * if key parameter is function then invoke it and use returned value.
+ * @param {(string|number|function|array)} key key property or getter function.
+ *  if string[] supplied, create each collection before grouping.
+ * @param {function} [groupFunc] - function that return each group's key
+ * @returns {object.<string, Collection>} grouped object
+ * @example
+ *
+ * // pass `string`, `number`, `boolean` type value then group by property value.
+ * collection.groupBy('gender');    // group by 'gender' property value.
+ * collection.groupBy(50);          // group by '50' property value.
+ *
+ * // pass `function` then group by return value. each invocation `function` is called with `(item)`.
+ * collection.groupBy(function(item) {
+ *     if (item.score > 60) {
+ *         return 'pass';
+ *     }
+ *     return 'fail';
+ * });
+ *
+ * // pass `array` with first arguments then create each collection before grouping.
+ * collection.groupBy(['go', 'ruby', 'javascript']);
+ * // result: { 'go': empty Collection, 'ruby': empty Collection, 'javascript': empty Collection }
+ *
+ * // can pass `function` with `array` then group each elements.
+ * collection.groupBy(['go', 'ruby', 'javascript'], function(item) {
+ *     if (item.isFast) {
+ *         return 'go';
+ *     }
+ *
+ *     return item.name;
+ * });
+ */
+Collection.prototype.groupBy = function(key, groupFunc) {
+    var result = {},
+        collection,
+        baseValue,
+        keyIsFunc = isFunc(key),
+        getItemIDFn = this.getItemID;
+
+    if (util.isArray(key)) {
+        util.forEachArray(key, function(k) {
+            result[String(k)] = new Collection(getItemIDFn);
+        });
+
+        if (!groupFunc) {
+            return result;
+        }
+
+        key = groupFunc;
+        keyIsFunc = true;
+    }
+
+    this.each(function(item) {
+        if (keyIsFunc) {
+            baseValue = key(item);
+        } else {
+            baseValue = item[key];
+
+            if (isFunc(baseValue)) {
+                baseValue = baseValue.apply(item);
+            }
+        }
+
+        collection = result[baseValue];
+
+        if (!collection) {
+            collection = result[baseValue] = new Collection(getItemIDFn);
+        }
+
+        collection.add(item);
+    });
+
+    return result;
+};
+
+/**
+ * Return single item in collection.
+ *
+ * Returned item is inserted in this collection firstly.
+ * @param {function} [filter] - function filter
+ * @returns {object} item.
+ */
+Collection.prototype.single = function(filter) {
+    var result,
+        useFilter = util.isFunction(filter);
+
+    this.each(function(item) {
+        if (!useFilter) {
+            result = item;
+
+            return false; // returning false can stop this loop
+        }
+        if (filter(item)) {
+            result = item;
+
+            return false; // returning false can stop this loop
+        }
+
+        return true;
+    }, this);
+
+    return result;
+};
+
+/**
+ * sort a basis of supplied compare function.
+ * @param {function} compareFunction compareFunction
+ * @returns {array} sorted array.
+ */
+Collection.prototype.sort = function(compareFunction) {
+    var arr = [];
+
+    this.each(function(item) {
+        arr.push(item);
+    });
+
+    if (isFunc(compareFunction)) {
+        arr = arr.sort(compareFunction);
+    }
+
+    return arr;
+};
+
+/**
+ * iterate each model element.
+ *
+ * when iteratee return false then break the loop.
+ * @param {function} iteratee iteratee(item, index, items)
+ * @param {*} [context] context
+ */
+Collection.prototype.each = function(iteratee, context) {
+    forEachProp(this.items, iteratee, context || this);
+};
+
+/**
+ * return new array with collection items.
+ * @returns {array} new array.
+ */
+Collection.prototype.toArray = function() {
+    if (!this.length) {
+        return [];
+    }
+
+    return util.map(this.items, function(item) {
+        return item;
+    });
+};
+
+module.exports = Collection;
+
+
+/***/ }),
+
+/***/ "./src/js/common/common.js":
+/*!*********************************!*\
+  !*** ./src/js/common/common.js ***!
+  \*********************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/**
+ * @fileoverview common/general utilities.
+ * @author NHN FE Development Lab <dl_javascript@nhn.com>
+ */
+
+
+var util = __webpack_require__(/*! tui-code-snippet */ "tui-code-snippet");
+
+var domutil = __webpack_require__(/*! ../common/domutil */ "./src/js/common/domutil.js"),
+    Collection = __webpack_require__(/*! ../common/collection */ "./src/js/common/collection.js");
+var datetime = __webpack_require__(/*! ../common/datetime */ "./src/js/common/datetime.js");
+
+/**
+ * Default schedule id getter for collection
+ * @param {Schedule} schedule - schedule instance
+ * @returns {string} schedule id
+ */
+function scheduleIDGetter(schedule) {
+    return schedule.cid();
+}
+
+module.exports = {
+    /**
+     * @returns {Collection} new collection for schedule models.
+     */
+    createScheduleCollection: function() {
+        return new Collection(scheduleIDGetter);
+    },
+
+    /**
+     * Get ratio value.
+     *
+     * a : b = y : X;
+     *
+     * =
+     *
+     * X = (b * y) / a;
+     * @param {number} a - a
+     * @param {number} b - b
+     * @param {number} y - y
+     * @returns {number} ratio value
+     */
+    ratio: function(a, b, y) {
+        // a : b = y : x;
+        return (b * y) / a;
+    },
+
+    /**
+     * Find nearest value from supplied params.
+     * @param {number} value - value to find.
+     * @param {array} nearest - nearest array.
+     * @returns {number} nearest value
+     */
+    nearest: function(value, nearest) {
+        var diff = util.map(nearest, function(v) {
+                return Math.abs(value - v);
+            }),
+            nearestIndex = util.inArray(Math.min.apply(null, diff), diff);
+
+        return nearest[nearestIndex];
+    },
+
+    /**
+     * Mixin method.
+     *
+     * (extend methods except property name 'mixin')
+     * @param {object} from - mixin object.
+     * @param {object} to - object to mixin.
+     */
+    mixin: function(from, to) {
+        util.extend(to.prototype, from);
+    },
+
+    /**
+     * Limit supplied value base on `minArr`, `maxArr`
+     * @param {number} value - value
+     * @param {array} minArr - min
+     * @param {array} maxArr - max
+     * @returns {number} limited value
+     */
+    limit: function(value, minArr, maxArr) {
+        var v = Math.max.apply(null, [value].concat(minArr));
+        v = Math.min.apply(null, [v].concat(maxArr));
+
+        return v;
+    },
+
+    /**
+     * Limit supplied date base on `min`, `max`
+     * @param {TZDate} date - date
+     * @param {TZDate} min - min
+     * @param {TZDate} max - max
+     * @returns {TZDate} limited value
+     */
+    limitDate: function(date, min, max) {
+        if (date < min) {
+            return min;
+        }
+        if (date > max) {
+            return max;
+        }
+
+        return date;
+    },
+
+    /**
+     * Max value with TZDate type for timezone calculation
+     * @param {TZDate} d1 - date 1
+     * @param {TZDate} d2 - date 2
+     * @returns {TZDate}
+     */
+    maxDate: function(d1, d2) {
+        if (d1 > d2) {
+            return d1;
+        }
+
+        return d2;
+    },
+
+    stripTags: function(str) {
+        return str.replace(/<([^>]+)>/ig, '');
+    },
+
+    /**
+     * Get first value in 2-dimentional array.
+     * @param {Array.<Array>} arr2d - 2-dimentional array
+     * @returns {*} first value in 2d array
+     */
+    firstIn2dArray: function(arr2d) {
+        return util.pick(arr2d, '0', '0');
+    },
+
+    /**
+     * Get last value in 2-dimentional array.
+     * @param {Array.<Array>} arr2d - 2-dimentional array
+     * @returns {*} last value in 2d array
+     */
+    lastIn2dArray: function(arr2d) {
+        var lastRow = arr2d.length - 1,
+            lastCol = arr2d[lastRow].length - 1;
+
+        return util.pick(arr2d, lastRow, lastCol);
+    },
+
+    /**
+     * Set 'title' attribute for all elements that have exceeded content in
+     * container
+     * @param {string} selector - CSS selector {@see domutil#find}
+     * @param {HTMLElement} container - container element
+     * @param {boolean} force - force to apply
+     */
+    setAutoEllipsis: function(selector, container, force) {
+        util.forEach(domutil.find(selector, container, true), function(el) {
+            if (force || el.offsetWidth < el.scrollWidth) {
+                el.setAttribute('title', domutil.getData(el, 'title'));
+            }
+        });
+    },
+
+    /**
+     * Set the value at path of object.
+     * @param {object} object - the object to modify
+     * @param {string} path -the path of property to set
+     * @param {*} value - the value to set
+     */
+    set: function(object, path, value) {
+        var names = path.split('.');
+        var store = object;
+
+        util.forEach(names, function(name, index) {
+            store[name] = store[name] || {};
+
+            if (index === names.length - 1) {
+                store[name] = value;
+            } else {
+                store = store[name];
+            }
+        });
+    },
+
+    /**
+     * shift a array
+     * @param {Array.<any>} array - array
+     * @param {number} shift - positive or negative integer to shift
+     * @returns {Array.<any>} shifted array
+     */
+    shiftArray: function(array, shift) {
+        var length = Math.abs(shift);
+        var i;
+
+        if (shift > 0) {
+            for (i = 0; i < length; i += 1) {
+                array.push(array.shift());
+            }
+        } else if (shift < 0) {
+            for (i = 0; i < length; i += 1) {
+                array.unshift(array.pop());
+            }
+        }
+
+        return array;
+    },
+
+    /**
+     * take elements from array between start and end.
+     * @param {Array.<any>} array - array
+     * @param {number} start - start index
+     * @param {number} end - end index
+     * @returns {Array.<any>}
+     */
+    takeArray: function(array, start, end) {
+        var length = array.length;
+        var rightCount = length - end;
+        var leftCount = start;
+
+        // remove right
+        array.splice(end, rightCount);
+        // remove left
+        array.splice(0, leftCount);
+
+        return array;
+    },
+
+    /**
+     * shift hours
+     * @param {number} hours - hours
+     * @param {number} shift - positive or negative integer to shift
+     * @returns {number} shifted hours
+     */
+    shiftHours: function(hours, shift) {
+        if (shift > 0) {
+            hours = (hours + shift) % 24;
+        } else if (shift < 0) {
+            hours += shift;
+            hours = hours > 0 ? hours : 24 + hours;
+        }
+
+        return hours;
+    },
+
+    /**
+     * Parse css value into number and units
+     * @param {string} cssValue - css value like '72px'
+     * @returns {Array} [number, unit]
+     */
+    parseUnit: function(cssValue) {
+        var number = parseFloat(cssValue, 10);
+        var unit = cssValue.match(/[\d.\-+]*\s*(.*)/)[1] || '';
+
+        return [number, unit];
+    },
+
+    find: function(array, iteratee, contextopt) {
+        var found;
+
+        util.forEach(array, function(item) {
+            if (iteratee) {
+                found = iteratee(item);
+            }
+
+            if (found) {
+                found = item;
+
+                return false;
+            }
+
+            return true;
+        }, contextopt);
+
+        return found;
+    },
+
+    getScheduleChanges: function(schedule, propNames, data) {
+        var changes = {};
+        var dateProps = ['start', 'end'];
+
+        util.forEach(propNames, function(propName) {
+            if (dateProps.indexOf(propName) > -1) {
+                if (datetime.compare(schedule[propName], data[propName])) {
+                    changes[propName] = data[propName];
+                }
+            } else if (!util.isUndefined(data[propName]) && schedule[propName] !== data[propName]) {
+                changes[propName] = data[propName];
+            }
+        });
+
+        return util.isEmpty(changes) ? null : changes;
+    }
+};
+
+
+/***/ }),
+
+/***/ "./src/js/common/datetime.js":
+/*!***********************************!*\
+  !*** ./src/js/common/datetime.js ***!
+  \***********************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/* WEBPACK VAR INJECTION */(function(global) {/**
+ * @fileoverview datetime utility module
+ * @author NHN FE Development Lab <dl_javascript@nhn.com>
+ */
+
+
+var TZDate = __webpack_require__(/*! ./timezone */ "./src/js/common/timezone.js").Date,
+    dw = __webpack_require__(/*! ../common/dw */ "./src/js/common/dw.js");
+var util = __webpack_require__(/*! tui-code-snippet */ "tui-code-snippet");
+/* eslint-disable no-useless-escape */
+var dateFormatRx = /^(\d{4}[-|\/]*\d{2}[-|\/]*\d{2})\s?(\d{2}:\d{2}:\d{2})?$/;
+var datetime, tokenFunc;
+
+var memo = {
+    millisecondsTo: {},
+    millisecondsFrom: {}
+};
+
+tokenFunc = {
+    /**
+     * @param {TZDate} date date object.
+     * @returns {string} YYYYMMDD
+     */
+    'YYYYMMDD': function(date) {
+        return [
+            date.getFullYear(),
+            datetime.leadingZero(date.getMonth() + 1, 2),
+            datetime.leadingZero(date.getDate(), 2)
+        ].join('');
+    },
+    /**
+     * @param {TZDate} date date object
+     * @returns {string} four digit year number
+     */
+    'YYYY': function(date) {
+        return String(date.getFullYear());
+    },
+
+    /**
+     * @param {TZDate} date date object
+     * @returns {string} two digit month number
+     */
+    'MM': function(date) {
+        return datetime.leadingZero(date.getMonth() + 1, 2);
+    },
+
+    /**
+     * @param {TZDate} date date object
+     * @returns {string} two digit date number
+     */
+    'DD': function(date) {
+        return datetime.leadingZero(date.getDate(), 2);
+    },
+
+    /**
+     * @param {TZDate} date date object
+     * @returns {string} HH:mm
+     */
+    'HH:mm': function(date) {
+        var hour = date.getHours(),
+            minutes = date.getMinutes();
+
+        return datetime.leadingZero(hour, 2) + ':' +
+            datetime.leadingZero(minutes, 2);
+    },
+
+    /**
+     * @param {TZDate} date date object
+     * @returns {string} hh:mm
+     */
+    'hh:mm': function(date) {
+        var hour = date.getHours();
+        var minutes = date.getMinutes();
+
+        if (hour > 12) {
+            hour = hour % 12;
+        }
+
+        return datetime.leadingZero(hour, 2) + ':' +
+            datetime.leadingZero(minutes, 2);
+    },
+
+    /**
+     * @param {TZDate} date date object
+     * @returns {string} tt
+     */
+    'tt': function(date) {
+        var hour = date.getHours();
+
+        return hour < 12 ? 'am' : 'pm';
+    }
+};
+
+datetime = {
+    /**
+     * The number of milliseconds one day.
+     * @type {number}
+     */
+    MILLISECONDS_PER_DAY: 86400000,
+
+    /**
+     * The number of milliseconds one hour.
+     * @type {number}
+     */
+    MILLISECONDS_PER_HOUR: 3600000,
+
+    /**
+     * The number of milliseconds one minutes.
+     * @type {number}
+     */
+    MILLISECONDS_PER_MINUTES: 60000,
+
+    /**
+     * The number of milliseconds 20 minutes for schedule min duration
+     * @type {number}
+     */
+    MILLISECONDS_SCHEDULE_MIN_DURATION: 20 * 60000,
+
+    /**
+     * convert milliseconds
+     * @param {string} type - type of value.
+     * @param {number} value - value to convert.
+     * @param {function} iteratee - iteratee function to use reduce.
+     * @returns {number} converted value.
+     */
+    _convMilliseconds: function(type, value, iteratee) {
+        var conv = [24, 60, 60, 1000],
+            index = {
+                day: 0,
+                hour: 1,
+                minutes: 2,
+                seconds: 3
+            };
+
+        if (!(type in index) || global.isNaN(value)) {
+            return false;
+        }
+
+        return util.reduce([value].concat(conv.slice(index[type])), iteratee);
+    },
+
+    /**
+     * Convert milliseconds value to other type
+     * @param {type} type convert to type want to. support "day", "hour",
+     *  "minutes", "seconds" only.
+     * @param {value} value - value to convert.
+     * @returns {number} converted value.
+     */
+    millisecondsTo: function(type, value) {
+        var cache = memo.millisecondsTo,
+            key = type + value;
+
+        if (cache[key]) {
+            return cache[key];
+        }
+
+        cache[key] = datetime._convMilliseconds(type, value, function(m, v) {
+            return m / v;
+        });
+
+        return cache[key];
+    },
+
+    /**
+     * Convert value to milliseconds
+     * @param {type} type - type of supplied value. support "hour", "minutes", "seconds" only.
+     * @param {value} value - value to convert.
+     * @returns {number} converted value.
+     */
+    millisecondsFrom: function(type, value) {
+        var cache = memo.millisecondsFrom,
+            key = type + value;
+
+        if (cache[key]) {
+            return cache[key];
+        }
+
+        cache[key] = datetime._convMilliseconds(type, value, function(m, v) {
+            return m * v;
+        });
+
+        return cache[key];
+    },
+
+    /**
+     * Convert hours to minutes
+     * @param {number} hours - hours
+     * @returns {number} minutes
+     */
+    minutesFromHours: function(hours) {
+        return hours * 60;
+    },
+
+    /**
+     * Make date array from supplied paramters.
+     * @param {TZDate} start Start date.
+     * @param {TZDate} end End date.
+     * @param {number} step The number of milliseconds to use increment.
+     * @returns {TZDate[]} TZDate array.
+     */
+    range: function(start, end, step) {
+        var startTime = start.getTime();
+        var endTime = end.getTime();
+        var cursor = startTime;
+        var date = dw(new TZDate(start));
+        var result = [];
+
+        while (cursor <= endTime && endTime >= date.d.getTime()) {
+            result.push(datetime.start(date.d));
+            cursor = cursor + step;
+            date.addDate(1);
+        }
+
+        return result;
+    },
+
+    /**
+     * Clone supplied date.
+     * @param {TZDate} date date object to clone.
+     * @returns {TZDate} Cloned date object
+     */
+    clone: function(date) {
+        return new TZDate(date);
+    },
+
+    /**
+     * Compare two dates.
+     *
+     * when first date is latest then seconds then return -1.
+     *
+     * return +1 reverse, and return 0 is same.
+     * @param {TZDate} d1 Date object to compare.
+     * @param {TZDate} d2 Date object to compare.
+     * @returns {number} result of compare
+     */
+    compare: function(d1, d2) {
+        var _d1 = d1.getTime(),
+            _d2 = d2.getTime();
+
+        if (_d1 < _d2) {
+            return -1;
+        }
+        if (_d1 > _d2) {
+            return 1;
+        }
+
+        return 0;
+    },
+
+    /**
+     * @param {TZDate} d1 - date one
+     * @param {TZDate} d2 - date two
+     * @returns {boolean} is two date are same year, month?
+     */
+    isSameMonth: function(d1, d2) {
+        return (d1.getFullYear() === d2.getFullYear() &&
+                d1.getMonth() === d2.getMonth());
+    },
+
+    /**
+     * @param {TZDate} d1 - date one
+     * @param {TZDate} d2 - date two
+     * @returns {boolean} is two date are same year, month, date?
+     */
+    isSameDate: function(d1, d2) {
+        var sameMonth = datetime.isSameMonth(d1, d2);
+
+        return sameMonth && (d1.getDate() === d2.getDate());
+    },
+
+    /**
+     * Check supplied parameter is valid date object.
+     * @param {*} d Object to validate.
+     * @returns {boolean} return true when parameter is valid date object.
+     */
+    isValid: function(d) {
+        if (d instanceof TZDate) {
+            return !window.isNaN(d.getTime());
+        }
+
+        return false;
+    },
+
+    /**
+     * convert non local date to UTC date.
+     * @param {TZDate} d Date to convert UTC.
+     * @returns {TZDate} The UTC Date.
+     */
+    toUTC: function(d) {
+        var l = d.getTime(),
+            offset = datetime.millisecondsFrom('minutes', new Date().getTimezoneOffset());
+
+        return new TZDate(l + offset);
+    },
+
+    /**
+     * pad left zero characters.
+     * @param {number} number number value to pad zero.
+     * @param {number} length pad length to want.
+     * @returns {string} padded string.
+     */
+    leadingZero: function(number, length) {
+        var zero = '',
+            i = 0;
+
+        if (String(number).length > length) {
+            return String(number);
+        }
+
+        for (; i < (length - 1); i += 1) {
+            zero += '0';
+        }
+
+        return (zero + number).slice(length * -1);
+    },
+
+    /**
+     * Convert date string to date object.
+     *
+     * Only listed below formats avaliable.
+     *
+     * - YYYYMMDD
+     * - YYYY/MM/DD
+     * - YYYY-MM-DD
+     * - YYYY/MM/DD HH:mm:SS
+     * - YYYY-MM-DD HH:mm:SS
+     *
+     * @param {string} str Formatted string.
+     * @param {number} [fixMonth=-1] - number for fix month calculating.
+     * @returns {(TZDate|boolean)} Converted Date object. when supplied str is not available then return false.
+     */
+    parse: function(str, fixMonth) {
+        var separator,
+            matches = str.match(dateFormatRx),
+            ymd,
+            hms;
+
+        if (util.isUndefined(fixMonth)) {
+            fixMonth = -1;
+        }
+
+        if (!matches) {
+            return false;
+        }
+
+        if (str.length > 8) {
+            // YYYY/MM/DD
+            // YYYY-MM-DD
+            // YYYY/MM/DD HH:mm:SS
+            // YYYY-MM-DD HH:mm:SS
+            separator = ~str.indexOf('/') ? '/' : '-';
+            matches = matches.splice(1);
+
+            ymd = matches[0].split(separator);
+            hms = matches[1] ? matches[1].split(':') : [0, 0, 0];
+        } else {
+            // YYYYMMDD
+            matches = matches[0];
+            ymd = [matches.substr(0, 4), matches.substr(4, 2), matches.substr(6, 2)];
+            hms = [0, 0, 0];
+        }
+
+        return new TZDate().setWithRaw(
+            Number(ymd[0]),
+            Number(ymd[1]) + fixMonth,
+            Number(ymd[2]),
+            Number(hms[0]),
+            Number(hms[1]),
+            Number(hms[2]),
+            0
+        );
+    },
+
+    /**
+     * Return date object from Date.
+     * @param {TZDate} date date
+     * @returns {object} Date object.
+     */
+    raw: function(date) {
+        return {
+            y: date.getFullYear(),
+            M: date.getMonth(),
+            d: date.getDate(),
+            h: date.getHours(),
+            m: date.getMinutes(),
+            s: date.getSeconds(),
+            ms: date.getMilliseconds()
+        };
+    },
+
+    /**
+     * Return 00:00:00 supplied date.
+     * @param {TZDate} date date. if undefined, use now.
+     * @returns {TZDate} start date.
+     */
+    start: function(date) {
+        var d = date ? new TZDate(date) : new TZDate();
+        d.setHours(0, 0, 0, 0);
+
+        return d;
+    },
+
+    /**
+     * Return 23:59:59 supplied date.
+     * @param {TZDate} date date. if undefined, use now.
+     * @returns {TZDate} end date.
+     */
+    end: function(date) {
+        var d = date ? new TZDate(date) : new TZDate();
+        d.setHours(23, 59, 59, 0);
+
+        return d;
+    },
+
+    /**
+     * Return formatted string as basis of supplied string.
+     *
+     * Supported Token Lists.
+     *
+     * - YYYY => 1988
+     * - MM => 01 ~ 12
+     * - DD => 01 ~ 31
+     * - YYYYMMDD => 19880925
+     * @param {TZDate} date String want to formatted.
+     * @param {string} format format str.
+     * @returns {string}  Formatted date string.
+     */
+    format: function(date, format) {
+        var result = format;
+        util.forEachOwnProperties(tokenFunc, function(converter, token) {
+            result = result.replace(token, converter(date));
+        });
+
+        return result;
+    },
+
+    /**
+     * Get start date of specific month
+     * @param {TZDate} date - date to get start date
+     * @returns {TZDate} start date of supplied month
+     */
+    startDateOfMonth: function(date) {
+        var startDate = new TZDate(date);
+
+        startDate.setDate(1);
+        startDate.setHours(0, 0, 0, 0);
+
+        return startDate;
+    },
+
+    /**
+     * Get end date of specific month
+     * @param {TZDate} date - date to get end date
+     * @returns {TZDate} end date of supplied month
+     */
+    endDateOfMonth: function(date) {
+        var endDate = datetime.startDateOfMonth(date);
+
+        endDate.setMonth(endDate.getMonth() + 1);
+        endDate.setDate(endDate.getDate() - 1);
+        endDate.setHours(23, 59, 59);
+
+        return endDate;
+    },
+
+    /**
+     * Return 2-dimensional array month calendar
+     *
+     * dates that different month with given date are negative values
+     * @param {TZDate} month - date want to calculate month calendar
+     * @param {object} options - options
+     * @param {number} [options.startDayOfWeek=0] - start day of week
+     * @param {boolean} options.isAlways6Week - whether the number of weeks are always 6
+     * @param {number} options.visibleWeeksCount visible weeks count
+     * @param {boolean} options.workweek - only show work week
+     * @param {function} [iteratee] - iteratee for customizing calendar object
+     * @returns {Array.<TZDate[]>} calendar 2d array
+     */
+    arr2dCalendar: function(month, options, iteratee) {
+        var weekArr,
+            start, end,
+            startIndex, endIndex,
+            totalDate, afterDates,
+            cursor, week,
+            calendar = [],
+            startDayOfWeek = options.startDayOfWeek,
+            isAlways6Week = util.isUndefined(options.isAlways6Week) || options.isAlways6Week,
+            visibleWeeksCount = options.visibleWeeksCount,
+            workweek = options.workweek;
+
+        if (visibleWeeksCount) {
+            start = new TZDate(month);
+            end = dw(new TZDate(month));
+            end.addDate(7 * (visibleWeeksCount - 1));
+            end = end.d;
+        } else {
+            start = datetime.startDateOfMonth(month);
+            end = datetime.endDateOfMonth(month);
+        }
+
+        // create day number array by startDayOfWeek number
+        // 4 -> [4, 5, 6, 0, 1, 2, 3]
+        // 2 -> [2, 3, 4, 5, 6, 0, 1]
+        weekArr = util.range(startDayOfWeek, 7).concat(util.range(7)).slice(0, 7);
+        startIndex = util.inArray(start.getDay(), weekArr);
+        endIndex = util.inArray(end.getDay(), weekArr);
+        // free dates after last date of this month
+        afterDates = 7 - (endIndex + 1);
+
+        if (visibleWeeksCount) {
+            totalDate = 7 * visibleWeeksCount;
+        } else {
+            totalDate = isAlways6Week ? (7 * 6) : (startIndex + end.getDate() + afterDates);
+        }
+        cursor = datetime.start(start).addDate(-startIndex);
+        // iteratee all dates to render
+        util.forEachArray(util.range(totalDate), function(i) {
+            var date;
+
+            if (!(i % 7)) {
+                // group each date by week
+                week = calendar[i / 7] = [];
+            }
+
+            date = datetime.start(cursor);
+            date = iteratee ? iteratee(date) : date;
+            if (!workweek || !datetime.isWeekend(date.getDay())) {
+                week.push(date);
+            }
+
+            // add date
+            cursor.setDate(cursor.getDate() + 1);
+        });
+
+        return calendar;
+    },
+
+    /**
+     * Calculate grid left(%), width(%) by narrowWeekend, startDayOfWeek, workweek
+     *
+     * @param {number} days - day length of week
+     * @param {boolean} narrowWeekend - narrow weekend
+     * @param {number} startDayOfWeek - start day of week
+     * @param {boolean} workweek - only show work week
+     * @returns {Array} day, left, width
+     */
+    getGridLeftAndWidth: function(days, narrowWeekend, startDayOfWeek, workweek) {
+        var limitDaysToApplyNarrowWeekend = 5;
+        var uniformWidth = 100 / days;
+        var wideWidth = days > limitDaysToApplyNarrowWeekend ? 100 / (days - 1) : uniformWidth;
+        var accumulatedWidth = 0;
+        var dates = util.range(startDayOfWeek, 7).concat(util.range(days)).slice(0, 7);
+
+        if (workweek) {
+            dates = util.filter(dates, function(day) {
+                return !datetime.isWeekend(day);
+            });
+        }
+
+        narrowWeekend = workweek ? false : narrowWeekend;
+
+        return util.map(dates, function(day) {
+            var model;
+            var width = narrowWeekend ? wideWidth : uniformWidth;
+            if (days > limitDaysToApplyNarrowWeekend && narrowWeekend && datetime.isWeekend(day)) {
+                width = wideWidth / 2;
+            }
+
+            model = {
+                day: day,
+                width: width,
+                left: accumulatedWidth
+            };
+
+            accumulatedWidth += width;
+
+            return model;
+        });
+    },
+
+    /**
+     * Get that day is weekend
+     * @param {number} day number
+     * @returns {boolean} true if weekend or false
+     */
+    isWeekend: function(day) {
+        return day === 0 || day === 6;
+    },
+
+    /**
+     * Whether date is between supplied dates with date value?
+     * @param {TZDate} d - target date
+     * @param {TZDate} d1 - from date
+     * @param {TZDate} d2 - to date
+     * @returns {boolean} is between?
+     */
+    isBetweenWithDate: function(d, d1, d2) {
+        var format = 'YYYYMMDD';
+        d = parseInt(datetime.format(d, format), 10);
+        d1 = parseInt(datetime.format(d1, format), 10);
+        d2 = parseInt(datetime.format(d2, format), 10);
+
+        return d1 <= d && d <= d2;
+    },
+
+    isStartOfDay: function(d) {
+        return !datetime.compare(datetime.start(d), d);
+    },
+
+    convertStartDayToLastDay: function(d) {
+        var date = new TZDate(d);
+        if (datetime.isStartOfDay(d)) {
+            date.setDate(date.getDate() - 1);
+            date.setHours(23, 59, 59);
+        }
+
+        return date;
+    },
+
+    getStartOfNextDay: function(d) {
+        var date = datetime.start(d);
+        date.setHours(24);
+
+        return date;
+    },
+
+    getDateDifference: function(d1, d2) {
+        var time1 = new TZDate(d1.getFullYear(), d1.getMonth(), d1.getDate()).getTime();
+        var time2 = new TZDate(d2.getFullYear(), d2.getMonth(), d2.getDate()).getTime();
+
+        return Math.round((time1 - time2) / datetime.MILLISECONDS_PER_DAY);
+    },
+
+    getHourDifference: function(d1, d2) {
+        var time1 = new TZDate(d1).getTime();
+        var time2 = new TZDate(d2).getTime();
+
+        return Math.round((time1 - time2) / datetime.MILLISECONDS_PER_HOUR);
+    },
+
+    hasMultiDates: function(start, end) {
+        var diffDays = datetime.getDateDifference(start, end);
+        var diffHours = Math.abs(datetime.getHourDifference(start, end));
+        var withinDay = Math.abs(diffDays) === 1 && diffHours < 24 && datetime.isStartOfDay(end);
+
+        return !datetime.isSameDate(start, end) && !withinDay;
+    },
+
+    renderEnd: function(start, end) {
+        var diffDays = datetime.getDateDifference(start, end);
+
+        return Math.abs(diffDays) >= 1 && datetime.isStartOfDay(end) ?
+            datetime.convertStartDayToLastDay(end) :
+            datetime.end(end);
+    }
+};
+
+module.exports = datetime;
+
+/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../node_modules/webpack/buildin/global.js */ "./node_modules/webpack/buildin/global.js")))
+
+/***/ }),
+
+/***/ "./src/js/common/dirty.js":
+/*!********************************!*\
+  !*** ./src/js/common/dirty.js ***!
+  \********************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/**
+ * @fileoverview Dirty flagging module for objects.
+ * @author NHN FE Development Lab <dl_javascript@nhn.com>
+ */
+
+
+var common = __webpack_require__(/*! tui-code-snippet */ "tui-code-snippet");
+var existy = common.isExisty,
+    pick = common.pick,
+    isFunc = common.isFunction;
+
+/**
+ * Mixin module for dirty flagging on specific objects.
+ * @mixin
+ * @example
+ * var obj = { hello: 'good', test: '123' };
+ * dirty.mixin(obj);
+ *
+ * obj.set('hello', 'world');
+ * obj.isDirty();    // true
+ * obj.isPropChanged('hello');    // true
+ * obj.isPropChanged('test');    // false
+ * obj.dirty(false);
+ *
+ * obj.isDirty();    // false
+ * obj.isPropChanged('hello');    // false
+ */
+var dirty = {
+    /**
+     * Set property value with dirty flagging.
+     * @param {string} propName Property name.
+     * @param {*} value Proprty value.
+     */
+    set: function(propName, value) {
+        var originValue = this[propName];
+
+        if (originValue === value) {
+            return;
+        }
+
+        this[propName] = value;
+
+        if (!this._changed) {
+            /**
+             * Save changed properties.
+             * @memberof dirty
+             * @name _changed
+             * @type {Object}
+             */
+            this._changed = {};
+        }
+
+        this._changed[propName] = true;
+
+        /**
+         * Dirty flag
+         * @type {Boolean}
+         * @name _dirty
+         * @memberof dirty
+         */
+        this._dirty = true;
+    },
+
+    /**
+     * Check dirty flag.
+     * @returns {boolean} Property is changed.
+     */
+    isDirty: function() {
+        return !!this._dirty;
+    },
+
+    /**
+     * Set dirty flag manually.
+     * @param {Boolean} [toDirty=true] This will set dirty flag directly.
+     */
+    dirty: function(toDirty) {
+        toDirty = existy(toDirty) ? toDirty : true;
+
+        /* istanbul ignore else */
+        if (!toDirty) {
+            this._changed = {};
+        }
+
+        this._dirty = toDirty;
+    },
+
+    /**
+     * Delete property safety.
+     * @param {String} propName The name of property.
+     */
+    deleteProp: function(propName) {
+        delete this[propName];
+
+        if (this._changed) {
+            delete this._changed[propName];
+        }
+    },
+
+    /**
+     * Check the changes with specific property.
+     * @param {String} propName The name of property you want.
+     * @returns {boolean} Is property changed?
+     */
+    isPropChanged: function(propName) {
+        if (!this._changed) {
+            return false;
+        }
+
+        return this._changed[propName] === true;
+    },
+
+    /**
+     * Mixin to specific objects.
+     * @param {Object} target The object to mix this module.
+     * @memberof module:util/dirty
+     * @example
+     * function Animal() {}
+     * dirty.mixin(Animal.prototype);
+     */
+    mixin: function(target) {
+        var methodFilterR = /(^_|mixin|wrap)/;
+
+        common.forEachOwnProperties(dirty, function(o, k) {
+            if (!methodFilterR.test(k)) {
+                target[k] = dirty[k];
+            }
+        });
+    },
+
+    /**
+     * Wrapper method for dirty flagging.
+     *
+     * This method invoke after invoked specific method that added by you.
+     *
+     * The method want to add are must exist before add.
+     * @param {object} target Target object to method wrap.
+     * @param {(string|object)} methodName
+     *  Method name to wrap or methodName: flag objects.
+     * @param {boolean} [flag=true]
+     *  this will used to flagging by dirty flagger after invoke the methods added by you.
+     * @memberof module:util/dirty
+     * @example
+     * function Animal(name) {
+     *     this.name = name;
+     * }
+     * Animal.prototype.growl = jasmine.createSpy('growl');
+     * Animal.prototype.test = function() {
+     *     return this.name;
+     * };
+     *
+     * dirty.mixin(Animal.prototype);
+     * // single
+     * dirty.wrap(Animal.prototype, 'growl', true);
+     * // multiple
+     * dirty.wrap(Animap.prototype, {
+     *     growl: true,
+     *     test: false
+     * });
+     *
+     */
+    wrap: function(target, methodName, flag) {
+        var wrap = dirty.wrap,
+            fn;
+
+        if (common.isObject(methodName)) {
+            common.forEachOwnProperties(methodName, function(_flag, _name) {
+                wrap(target, _name, _flag);
+            });
+
+            return;
+        }
+
+        flag = existy(flag) ? flag : true;
+
+        if (!target._wrapper) {
+            /**
+             * @param {function} _fn Original method to wrap.
+             * @param {boolean} flagToSet The boolean value to using dirty flagging.
+             * @returns {*} The result value of original method.
+             * @name _wrapper
+             * @memberof dirty
+             */
+            target._wrapper = function(_fn, flagToSet) {
+                return function() {
+                    var args = Array.prototype.slice.call(arguments);
+                    var result = _fn.apply(this, args); // eslint-disable-line
+                    this._dirty = flagToSet; // eslint-disable-line
+
+                    return result;
+                };
+            };
+        }
+
+        if (existy(pick(target, methodName)) &&
+            isFunc(target[methodName]) &&
+            !existy(pick(target, methodName, '_wrapped'))) {
+            fn = target[methodName];
+            target[methodName] = target._wrapper(fn, flag);
+            target[methodName]._wrapped = true;
+        }
+    }
+};
+
+module.exports = dirty;
+
+
+/***/ }),
+
+/***/ "./src/js/common/domevent.js":
+/*!***********************************!*\
+  !*** ./src/js/common/domevent.js ***!
+  \***********************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/* eslint complexity: 0 */
+/**
+ * @fileoverview Utility module for handling DOM events.
+ * @author NHN FE Development Lab <dl_javascript@nhn.com>
+ */
+
+
+var util = __webpack_require__(/*! tui-code-snippet */ "tui-code-snippet");
+var eventKey = '_evt',
+    DRAG_START = ['touchstart', 'mousedown'];
+
+var domevent = {
+    /**
+     * Bind dom events.
+     * @param {HTMLElement} obj HTMLElement to bind events.
+     * @param {(string|object)} types Space splitted events names or eventName:handler object.
+     * @param {*} fn handler function or context for handler method.
+     * @param {*} [context] context object for handler method.
+     */
+    on: function(obj, types, fn, context) {
+        if (util.isString(types)) {
+            util.forEach(types.split(' '), function(type) {
+                domevent._on(obj, type, fn, context);
+            });
+
+            return;
+        }
+
+        util.forEachOwnProperties(types, function(handler, type) {
+            domevent._on(obj, type, handler, fn);
+        });
+    },
+
+    /**
+     * DOM event binding.
+     * @param {HTMLElement} obj HTMLElement to bind events.
+     * @param {String} type The name of events.
+     * @param {*} fn handler function
+     * @param {*} [context] context object for handler method.
+     * @private
+     */
+    _on: function(obj, type, fn, context) {
+        var id,
+            handler,
+            originHandler;
+
+        id = type + util.stamp(fn) + (context ? '_' + util.stamp(context) : '');
+
+        if (obj[eventKey] && obj[eventKey][id]) {
+            return;
+        }
+
+        handler = function(e) {
+            fn.call(context || obj, e || window.event);
+        };
+
+        originHandler = handler;
+
+        if ('addEventListener' in obj) {
+            if (type === 'mouseenter' || type === 'mouseleave') {
+                handler = function(e) {
+                    e = e || window.event;
+                    if (!domevent._checkMouse(obj, e)) {
+                        return;
+                    }
+                    originHandler(e);
+                };
+                obj.addEventListener((type === 'mouseenter') ?
+                    'mouseover' : 'mouseout', handler, false);
+            } else {
+                if (type === 'mousewheel') {
+                    obj.addEventListener('DOMMouseScroll', handler, false);
+                }
+
+                obj.addEventListener(type, handler, false);
+            }
+        } else if ('attachEvent' in obj) {
+            obj.attachEvent('on' + type, handler);
+        }
+
+        obj[eventKey] = obj[eventKey] || {};
+        obj[eventKey][id] = handler;
+    },
+
+    /**
+     * Unbind DOM Event handler.
+     * @param {HTMLElement} obj HTMLElement to unbind.
+     * @param {(string|object)} types Space splitted events names or eventName:handler object.
+     * @param {*} fn handler function or context for handler method.
+     * @param {*} [context] context object for handler method.
+     */
+    off: function(obj, types, fn, context) {
+        if (util.isString(types)) {
+            util.forEach(types.split(' '), function(type) {
+                domevent._off(obj, type, fn, context);
+            });
+
+            return;
+        }
+
+        util.forEachOwnProperties(types, function(handler, type) {
+            domevent._off(obj, type, handler, fn);
+        });
+    },
+
+    /**
+     * Unbind DOM event handler.
+     * @param {HTMLElement} obj HTMLElement to unbind.
+     * @param {String} type The name of event to unbind.
+     * @param {function()} fn Event handler that supplied when binding.
+     * @param {*} context context object that supplied when binding.
+     * @private
+     */
+    _off: function(obj, type, fn, context) {
+        var id = type + util.stamp(fn) + (context ? '_' + util.stamp(context) : ''),
+            handler = obj[eventKey] && obj[eventKey][id];
+
+        if (!handler) {
+            return;
+        }
+
+        if ('removeEventListener' in obj) {
+            if (type === 'mouseenter' || type === 'mouseleave') {
+                obj.removeEventListener((type === 'mouseenter') ?
+                    'mouseover' : 'mouseout', handler, false);
+            } else {
+                if (type === 'mousewheel') {
+                    obj.removeEventListener('DOMMouseScroll', handler, false);
+                }
+
+                obj.removeEventListener(type, handler, false);
+            }
+        } else if ('detachEvent' in obj) {
+            try {
+                obj.detachEvent('on' + type, handler);
+            } catch (e) {}    //eslint-disable-line
+        }
+
+        delete obj[eventKey][id];
+
+        if (util.keys(obj[eventKey]).length) {
+            return;
+        }
+
+        delete obj[eventKey];
+    },
+
+    /**
+     * Bind DOM event. this event will unbind after invokes.
+     * @param {HTMLElement} obj HTMLElement to bind events.
+     * @param {(string|object)} types Space splitted events names or eventName:handler object.
+     * @param {*} fn handler function or context for handler method.
+     * @param {*} [context] context object for handler method.
+     */
+    once: function(obj, types, fn, context) {
+        var self = this;
+
+        if (util.isObject(types)) {
+            util.forEachOwnProperties(types, function(handler, type) {
+                domevent.once(obj, type, handler, fn);
+            });
+
+            return;
+        }
+
+        /**
+         * Handler for temporary usage for once implementation
+         */
+        function onceHandler() {
+            fn.apply(context || obj, arguments);
+            self._off(obj, types, onceHandler, context);
+        }
+
+        domevent.on(obj, types, onceHandler, context);
+    },
+
+    /**
+     * Cancel event bubbling.
+     * @param {Event} e Event object.
+     */
+    stopPropagation: function(e) {
+        if (e.stopPropagation) {
+            e.stopPropagation();
+        } else {
+            e.cancelBubble = true;
+        }
+    },
+
+    /**
+     * Cancel browser default actions.
+     * @param {Event} e Event object.
+     */
+    preventDefault: function(e) {
+        if (e.preventDefault) {
+            e.preventDefault();
+        } else {
+            e.returnValue = false;
+        }
+    },
+
+    /**
+     * Syntatic sugar of stopPropagation and preventDefault
+     * @param {Event} e Event object.
+     */
+    stop: function(e) {
+        domevent.preventDefault(e);
+        domevent.stopPropagation(e);
+    },
+
+    /**
+     * Stop scroll events.
+     * @param {HTMLElement} el HTML element to prevent scroll.
+     */
+    disableScrollPropagation: function(el) {
+        domevent.on(el, 'mousewheel MozMousePixelScroll', domevent.stopPropagation);
+    },
+
+    /**
+     * Stop all events related with click.
+     * @param {HTMLElement} el HTML element to prevent all event related with click.
+     */
+    disableClickPropagation: function(el) {
+        domevent.on(el, DRAG_START.join(' ') + ' click dblclick', domevent.stopPropagation);
+    },
+
+    /**
+     * Get mouse position from mouse event.
+     *
+     * If supplied relatveElement parameter then return relative position based on element.
+     * @param {Event} mouseEvent Mouse event object
+     * @param {HTMLElement} relativeElement HTML element that calculate relative position.
+     * @returns {number[]} mouse position.
+     */
+    getMousePosition: function(mouseEvent, relativeElement) {
+        var rect;
+
+        if (!relativeElement) {
+            return [mouseEvent.clientX, mouseEvent.clientY];
+        }
+
+        rect = relativeElement.getBoundingClientRect();
+
+        return [
+            mouseEvent.clientX - rect.left - relativeElement.clientLeft,
+            mouseEvent.clientY - rect.top - relativeElement.clientTop
+        ];
+    },
+
+    /**
+     * Normalize mouse wheel event that different each browsers.
+     * @param {MouseEvent} e Mouse wheel event.
+     * @returns {Number} delta
+     */
+    getWheelDelta: function(e) {
+        var delta = 0;
+
+        if (e.wheelDelta) {
+            delta = e.wheelDelta / 120;
+        }
+
+        if (e.detail) {
+            delta = -e.detail / 3;
+        }
+
+        return delta;
+    },
+
+    /**
+     * prevent firing mouseleave event when mouse entered child elements.
+     * @param {HTMLElement} el HTML element
+     * @param {MouseEvent} e Mouse event
+     * @returns {Boolean} leave?
+     * @private
+     */
+    _checkMouse: function(el, e) {
+        var related = e.relatedTarget;
+
+        if (!related) {
+            return true;
+        }
+
+        try {
+            while (related && (related !== el)) {
+                related = related.parentNode;
+            }
+        } catch (err) {
+            return false;
+        }
+
+        return (related !== el);
+    },
+
+    /**
+     * Trigger specific events to html element.
+     * @param {HTMLElement} obj HTMLElement
+     * @param {string} type Event type name
+     * @param {object} [eventData] Event data
+     */
+    trigger: function(obj, type, eventData) {
+        var rMouseEvent = /(mouse|click)/;
+        if (util.isUndefined(eventData) && rMouseEvent.exec(type)) {
+            eventData = domevent.mouseEvent(type);
+        }
+
+        if (obj.dispatchEvent) {
+            obj.dispatchEvent(eventData);
+        } else if (obj.fireEvent) {
+            obj.fireEvent('on' + type, eventData);
+        }
+    },
+
+    /**
+     * Create virtual mouse event.
+     *
+     * Tested at
+     *
+     * - IE7 ~ IE11
+     * - Chrome
+     * - Firefox
+     * - Safari
+     * @param {string} type Event type
+     * @param {object} [eventObj] Event data
+     * @returns {MouseEvent} Virtual mouse event.
+     */
+    mouseEvent: function(type, eventObj) {
+        var evt,
+            e;
+
+        e = util.extend({
+            bubbles: true,
+            cancelable: (type !== 'mousemove'),
+            view: window,
+            wheelDelta: 0,
+            detail: 0,
+            screenX: 0,
+            screenY: 0,
+            clientX: 0,
+            clientY: 0,
+            ctrlKey: false,
+            altKey: false,
+            shiftKey: false,
+            metaKey: false,
+            button: 0,
+            relatedTarget: undefined  // eslint-disable-line
+        }, eventObj);
+
+        if (typeof document.createEvent === 'function') {
+            evt = document.createEvent('MouseEvents');
+            evt.initMouseEvent(type,
+                e.bubbles, e.cancelable, e.view, e.detail,
+                e.screenX, e.screenY, e.clientX, e.clientY,
+                e.ctrlKey, e.altKey, e.shiftKey, e.metaKey,
+                e.button, document.body.parentNode
+            );
+        } else if (document.createEventObject) {
+            evt = document.createEventObject();
+
+            util.forEach(e, function(value, propName) {
+                evt[propName] = value;
+            }, this);
+            evt.button = {0: 1,
+                1: 4,
+                2: 2}[evt.button] || evt.button;
+        }
+
+        return evt;
+    },
+
+    /**
+     * Normalize mouse event's button attributes.
+     *
+     * Can detect which button is clicked by this method.
+     *
+     * Meaning of return numbers
+     *
+     * - 0: primary mouse button
+     * - 1: wheel button or center button
+     * - 2: secondary mouse button
+     * @param {MouseEvent} mouseEvent - The mouse event object want to know.
+     * @returns {number} - The value of meaning which button is clicked?
+     */
+    getMouseButton: function(mouseEvent) {
+        var button,
+            primary = '0,1,3,5,7',
+            secondary = '2,6',
+            wheel = '4';
+
+        /* istanbul ignore else */
+        if (document.implementation.hasFeature('MouseEvents', '2.0')) {
+            return mouseEvent.button;
+        }
+
+        button = String(mouseEvent.button);
+        if (primary.indexOf(button) > -1) {
+            return 0;
+        }
+        if (secondary.indexOf(button) > -1) {
+            return 2;
+        }
+        if (~wheel.indexOf(button)) {
+            return 1;
+        }
+
+        return -1;
+    },
+
+    /**
+     * Get target from event object
+     *
+     * @param {Event} event - The event object
+     * @returns {object} - The event target object
+     */
+    getEventTarget: function(event) {
+        return event.target || event.srcElement;
+    }
+};
+
+module.exports = domevent;
+
+
+/***/ }),
+
+/***/ "./src/js/common/domutil.js":
+/*!**********************************!*\
+  !*** ./src/js/common/domutil.js ***!
+  \**********************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/* eslint complexity: 0, no-shadow: 0, max-nested-callbacks: 0  */
+/**
+ * @fileoverview Utility modules for manipulate DOM elements.
+ * @author NHN FE Development Lab <dl_javascript@nhn.com>
+ */
+
+
+var domevent = __webpack_require__(/*! ./domevent */ "./src/js/common/domevent.js");
+var Collection = __webpack_require__(/*! ./collection */ "./src/js/common/collection.js");
+var util = __webpack_require__(/*! tui-code-snippet */ "tui-code-snippet");
+
+var posKey = '_pos',
+    domutil;
+
+var CSS_AUTO_REGEX = /^auto$|^$|%/;
+
+/**
+ * Trim leading, trailing whitespace
+ * @param {string} str - string to trim
+ * @returns {string} trimmed string
+ */
+function trim(str) {
+    return str.replace(/^\s\s*/, '').replace(/\s\s*$/, '');
+}
+
+domutil = {
+    /**
+     * Create DOM element and return it.
+     * @param {string} tagName Tag name to append.
+     * @param {HTMLElement} [container] HTML element will be parent to created element.
+     * if not supplied, will use **document.body**
+     * @param {string} [className] Design class names to appling created element.
+     * @returns {HTMLElement} HTML element created.
+     */
+    appendHTMLElement: function(tagName, container, className) {
+        var el;
+
+        className = className || '';
+
+        el = document.createElement(tagName);
+        el.className = className;
+
+        if (container) {
+            container.appendChild(el);
+        } else {
+            document.body.appendChild(el);
+        }
+
+        return el;
+    },
+
+    /**
+     * Remove element from parent node.
+     * @param {HTMLElement} el - element to remove.
+     */
+    remove: function(el) {
+        if (el && el.parentNode) {
+            el.parentNode.removeChild(el);
+        }
+    },
+
+    /**
+     * Get element by id
+     * @param {string} id element id attribute
+     * @returns {HTMLElement} element
+     */
+    get: function(id) {
+        return document.getElementById(id);
+    },
+
+    /**
+     * Check supplied element is matched selector.
+     * @param {HTMLElement} el - element to check
+     * @param {string} selector - selector string to check
+     * @returns {boolean} match?
+     */
+    _matcher: function(el, selector) {
+        var cssClassSelector = /^\./,
+            idSelector = /^#/;
+
+        if (cssClassSelector.test(selector)) {
+            return domutil.hasClass(el, selector.replace('.', ''));
+        }
+        if (idSelector.test(selector)) {
+            return el.id === selector.replace('#', '');
+        }
+
+        return el.nodeName.toLowerCase() === selector.toLowerCase();
+    },
+
+    /**
+     * Find DOM element by specific selectors.
+     * below three selector only supported.
+     *
+     * 1. css selector
+     * 2. id selector
+     * 3. nodeName selector
+     * @param {string} selector selector
+     * @param {(HTMLElement|string)} [root] You can assign root element to find
+     *  if not supplied, document.body will use.
+     * @param {boolean|function} [multiple=false] - set true then return all
+     *  elements that meet condition, if set function then use it filter function.
+     * @returns {HTMLElement} HTML element finded.
+     */
+    find: function(selector, root, multiple) {
+        var result = [],
+            found = false,
+            isFirst = util.isUndefined(multiple) || multiple === false,
+            isFilter = util.isFunction(multiple);
+
+        if (util.isString(root)) {
+            root = domutil.get(root);
+        }
+
+        root = root || window.document.body;
+
+        /**
+         * Function for recursive find specific node
+         * @param {HTMLElement} el - element to search
+         * @param {string} selector - selector
+         */
+        function recurse(el, selector) {
+            var childNodes = el.childNodes,
+                i = 0,
+                len = childNodes.length,
+                cursor;
+
+            for (; i < len; i += 1) {
+                cursor = childNodes[i];
+
+                if (cursor.nodeName === '#text') {
+                    continue;
+                }
+
+                if (domutil._matcher(cursor, selector)) {
+                    if ((isFilter && multiple(cursor)) || !isFilter) {
+                        result.push(cursor);
+                    }
+
+                    if (isFirst) {
+                        found = true;
+                        break;
+                    }
+                } else if (cursor.childNodes.length > 0) {
+                    recurse(cursor, selector);
+                    if (found) {
+                        break;
+                    }
+                }
+            }
+        }
+
+        recurse(root, selector);
+
+        return isFirst ? (result[0] || null) : result;
+    },
+
+    /**
+     * Find parent element recursively.
+     * @param {HTMLElement} el - base element to start find.
+     * @param {string} selector - selector string for find
+     * @param {boolean} excludeEl - exclude the base element to find
+     * @returns {HTMLElement} - element finded or null.
+     */
+    closest: function(el, selector, excludeEl) {
+        var parent;
+
+        if (!el) {
+            return null;
+        }
+
+        parent = el.parentNode;
+
+        if (!excludeEl && domutil._matcher(el, selector)) {
+            return el;
+        }
+
+        while (parent && parent !== window.document.body) {
+            if (domutil._matcher(parent, selector)) {
+                return parent;
+            }
+
+            parent = parent.parentNode;
+        }
+
+        return null;
+    },
+
+    /**
+     * Return texts inside element.
+     * @param {HTMLElement} el target element
+     * @returns {string} text inside node
+     */
+    text: function(el) {
+        var ret = '',
+            i = 0,
+            nodeType = el.nodeType;
+
+        if (nodeType) {
+            if (nodeType === 1 || nodeType === 9 || nodeType === 11) {
+                // nodes that available contain other nodes
+                if (typeof el.textContent === 'string') {
+                    return el.textContent;
+                }
+
+                for (el = el.firstChild; el; el = el.nextSibling) {
+                    ret += domutil.text(el);
+                }
+            } else if (nodeType === 3 || nodeType === 4) {
+                // TEXT, CDATA SECTION
+                return el.nodeValue;
+            }
+        } else {
+            for (; el[i]; i += 1) {
+                ret += domutil.text(el[i]);
+            }
+        }
+
+        return ret;
+    },
+
+    /**
+     * Set data attribute to target element
+     * @param {HTMLElement} el - element to set data attribute
+     * @param {string} key - key
+     * @param {string|number} data - data value
+     */
+    setData: function(el, key, data) {
+        if ('dataset' in el) {
+            el.dataset[key] = data;
+
+            return;
+        }
+
+        el.setAttribute('data-' + key, data);
+    },
+
+    /**
+     * Get data value from data-attribute
+     * @param {HTMLElement} el - target element
+     * @param {string} key - key
+     * @returns {string} value
+     */
+    getData: function(el, key) {
+        if ('dataset' in el) {
+            return el.dataset[key];
+        }
+
+        return el.getAttribute('data-' + key);
+    },
+
+    /**
+     * Check element has specific design class name.
+     * @param {HTMLElement} el target element
+     * @param {string} name css class
+     * @returns {boolean} return true when element has that css class name
+     */
+    hasClass: function(el, name) {
+        var className;
+
+        if (!util.isUndefined(el.classList)) {
+            return el.classList.contains(name);
+        }
+
+        className = domutil.getClass(el);
+
+        return className.length > 0 && new RegExp('(^|\\s)' + name + '(\\s|$)').test(className);
+    },
+
+    /**
+     * Add design class to HTML element.
+     * @param {HTMLElement} el target element
+     * @param {string} name css class name
+     */
+    addClass: function(el, name) {
+        var className;
+
+        if (!util.isUndefined(el.classList)) {
+            util.forEachArray(name.split(' '), function(value) {
+                el.classList.add(value);
+            });
+        } else if (!domutil.hasClass(el, name)) {
+            className = domutil.getClass(el);
+            domutil.setClass(el, (className ? className + ' ' : '') + name);
+        }
+    },
+
+    /**
+     *
+     * Overwrite design class to HTML element.
+     * @param {HTMLElement} el target element
+     * @param {string} name css class name
+     */
+    setClass: function(el, name) {
+        if (util.isUndefined(el.className.baseVal)) {
+            el.className = name;
+        } else {
+            el.className.baseVal = name;
+        }
+    },
+
+    /**
+     * Element에 cssClass속성을 제거하는 메서드
+     * Remove specific design class from HTML element.
+     * @param {HTMLElement} el target element
+     * @param {string} name class name to remove
+     */
+    removeClass: function(el, name) {
+        var removed = '';
+
+        if (!util.isUndefined(el.classList)) {
+            el.classList.remove(name);
+        } else {
+            removed = (' ' + domutil.getClass(el) + ' ').replace(' ' + name + ' ', ' ');
+            domutil.setClass(el, trim(removed));
+        }
+    },
+
+    /**
+     * Get HTML element's design classes.
+     * @param {HTMLElement} el target element
+     * @returns {string} element css class name
+     */
+    getClass: function(el) {
+        if (!el || !el.className) {
+            return '';
+        }
+
+        return util.isUndefined(el.className.baseVal) ? el.className : el.className.baseVal;
+    },
+
+    /**
+     * Get specific CSS style value from HTML element.
+     * @param {HTMLElement} el target element
+     * @param {string} style css attribute name
+     * @returns {(string|null)} css style value
+     */
+    getStyle: function(el, style) {
+        var value = el.style[style] || (el.currentStyle && el.currentStyle[style]),
+            css;
+
+        if ((!value || value === 'auto') && document.defaultView) {
+            css = document.defaultView.getComputedStyle(el, null);
+            value = css ? css[style] : null;
+        }
+
+        return value === 'auto' ? null : value;
+    },
+
+    /**
+     * get element's computed style values.
+     *
+     * in lower IE8. use polyfill function that return object. it has only one function 'getPropertyValue'
+     * @param {HTMLElement} el - element want to get style.
+     * @returns {object} virtual CSSStyleDeclaration object.
+     */
+    getComputedStyle: function(el) {
+        var defaultView = document.defaultView;
+
+        if (!defaultView || !defaultView.getComputedStyle) {
+            return {
+                getPropertyValue: function(prop) {
+                    /* eslint-disable no-useless-escape */
+                    var re = /(\-([a-z]){1})/g;
+                    if (prop === 'float') {
+                        prop = 'styleFloat';
+                    }
+
+                    if (re.test(prop)) {
+                        prop = prop.replace(re, function() {
+                            return arguments[2].toUpperCase();
+                        });
+                    }
+
+                    return el.currentStyle[prop] || null;
+                }
+            };
+        }
+
+        return document.defaultView.getComputedStyle(el);
+    },
+
+    /**
+     * Set position CSS style.
+     * @param {HTMLElement} el target element
+     * @param {number} [x=0] left pixel value.
+     * @param {number} [y=0] top pixel value.
+     */
+    setPosition: function(el, x, y) {
+        x = util.isUndefined(x) ? 0 : x;
+        y = util.isUndefined(y) ? 0 : y;
+
+        el[posKey] = [x, y];
+
+        el.style.left = util.isNumber(x) ? (x + 'px') : x;
+        el.style.top = util.isNumber(y) ? (y + 'px') : y;
+    },
+
+    /**
+     * Set position CSS style with left, top, right, bottom
+     * @param {HTMLElement} el target element
+     * @param {object} ltrb object of left, top, right, bottom
+     * @param {number} [ltrb.left] left pixel value.
+     * @param {number} [ltrb.top] top pixel value.
+     * @param {number} [ltrb.right] right pixel value.
+     * @param {number} [ltrb.bottom] bottom pixel value.
+     */
+    setLTRB: function(el, ltrb) {
+        var props = ['left', 'top', 'right', 'bottom'];
+        var value;
+        props.forEach(function(prop) {
+            value = util.isUndefined(ltrb[prop]) ? '' : ltrb[prop];
+            el.style[prop] = util.isNumber(value) ? (value + 'px') : value;
+        });
+    },
+
+    /**
+     * Get position from HTML element.
+     * @param {HTMLElement} el target element
+     * @param {boolean} [clear=false] clear cache before calculating position.
+     * @returns {number[]} point
+     */
+    getPosition: function(el, clear) {
+        var left,
+            top,
+            bound;
+
+        if (clear) {
+            el[posKey] = null;
+        }
+
+        if (el[posKey]) {
+            return el[posKey];
+        }
+
+        left = 0;
+        top = 0;
+
+        if ((CSS_AUTO_REGEX.test(el.style.left) || CSS_AUTO_REGEX.test(el.style.top)) &&
+            'getBoundingClientRect' in el) {
+            // When the element's left or top is 'auto'
+            bound = el.getBoundingClientRect();
+
+            left = bound.left;
+            top = bound.top;
+        } else {
+            left = parseFloat(el.style.left || 0);
+            top = parseFloat(el.style.top || 0);
+        }
+
+        return [left, top];
+    },
+
+    /**
+     * Return element's size
+     * @param {HTMLElement} el target element
+     * @returns {number[]} width, height
+     */
+    getSize: function(el) {
+        var bound,
+            width = domutil.getStyle(el, 'width'),
+            height = domutil.getStyle(el, 'height');
+
+        if ((CSS_AUTO_REGEX.test(width) || CSS_AUTO_REGEX.test(height) ||
+             util.isNull(width) || util.isNull(height)) &&
+            'getBoundingClientRect' in el) {
+            bound = el.getBoundingClientRect();
+            width = bound.width || el.offsetWidth;
+            height = bound.height || el.offsetHeight;
+        } else {
+            width = parseFloat(width || 0);
+            height = parseFloat(height || 0);
+        }
+
+        return [width, height];
+    },
+
+    /**
+     * Fallback of getBoundingClientRect
+     * @param {HTMLElement} el - element
+     * @returns {object} rect
+     */
+    getBCRect: function(el) {
+        var rect = el.getBoundingClientRect();
+
+        rect = util.extend({
+            width: el.offsetWidth,
+            height: el.offsetHeight
+        }, rect);
+
+        return rect;
+    },
+
+    /**
+     * Check specific CSS style is available.
+     * @param {array} props property name to testing
+     * @returns {(string|boolean)} return true when property is available
+     * @example
+     * var props = ['transform', '-webkit-transform'];
+     * domutil.testProp(props);    // 'transform'
+     */
+    testProp: function(props) {
+        var style = document.documentElement.style,
+            i = 0,
+            len = props.length;
+
+        for (; i < len; i += 1) {
+            if (props[i] in style) {
+                return props[i];
+            }
+        }
+
+        return false;
+    },
+
+    /**
+     * Get form data
+     * @param {HTMLFormElement} formElement - form element to extract data
+     * @returns {object} form data
+     */
+    getFormData: function(formElement) {
+        var groupedByName = new Collection(function() {
+                return this.length;
+            }),
+            noDisabledFilter = function(el) {
+                return !el.disabled;
+            },
+            output = {};
+
+        groupedByName.add.apply(
+            groupedByName,
+            domutil.find('input', formElement, noDisabledFilter)
+                .concat(domutil.find('select', formElement, noDisabledFilter))
+                .concat(domutil.find('textarea', formElement, noDisabledFilter))
+        );
+
+        groupedByName = groupedByName.groupBy(function(el) {
+            return (el && el.getAttribute('name')) || '_other';
+        });
+
+        util.forEach(groupedByName, function(elements, name) {
+            if (name === '_other') {
+                return;
+            }
+
+            elements.each(function(el) {
+                var nodeName = el.nodeName.toLowerCase(),
+                    type = el.type,
+                    result = [];
+
+                if (type === 'radio') {
+                    result = [elements.find(function(el) {
+                        return el.checked;
+                    }).toArray().pop()];
+                } else if (type === 'checkbox') {
+                    result = elements.find(function(el) {
+                        return el.checked;
+                    }).toArray();
+                } else if (nodeName === 'select') {
+                    elements.find(function(el) {
+                        return !!el.childNodes.length;
+                    }).each(function(el) {
+                        result = result.concat(
+                            domutil.find('option', el, function(opt) {
+                                return opt.selected;
+                            })
+                        );
+                    });
+                } else {
+                    result = elements.find(function(el) {
+                        return el.value !== '';
+                    }).toArray();
+                }
+
+                result = util.map(result, function(el) {
+                    return el.value;
+                });
+
+                if (!result.length) {
+                    result = '';
+                } else if (result.length === 1) {
+                    result = result[0];
+                }
+
+                output[name] = result;
+            });
+        });
+
+        return output;
+    }
+};
+
+/* eslint-disable */
+var userSelectProperty = domutil.testProp([
+    'userSelect',
+    'WebkitUserSelect',
+    'OUserSelect',
+    'MozUserSelect',
+    'msUserSelect'
+]);
+var supportSelectStart = 'onselectstart' in document;
+var prevSelectStyle = '';
+
+/* eslint-enable */
+
+/**
+ * Disable browser's text selection behaviors.
+ * @method
+ */
+domutil.disableTextSelection = (function() {
+    if (supportSelectStart) {
+        return function(dom, onSelectstartHandler) {
+            domevent.on(dom, 'selectstart', onSelectstartHandler || domevent.preventDefault);
+        };
+    }
+
+    return function(dom) {
+        var style = dom.style;
+        prevSelectStyle = style[userSelectProperty];
+        style[userSelectProperty] = 'none';
+    };
+})();
+
+/**
+ * Enable browser's text selection behaviors.
+ * @method
+ */
+domutil.enableTextSelection = (function() {
+    if (supportSelectStart) {
+        return function(dom, onSelectstartHandler) {
+            domevent.off(window, 'selectstart', onSelectstartHandler || domevent.preventDefault);
+        };
+    }
+
+    return function() {
+        document.documentElement.style[userSelectProperty] = prevSelectStyle;
+    };
+})();
+
+/**
+ * Disable browser's image drag behaviors.
+ */
+domutil.disableImageDrag = function() {
+    domevent.on(window, 'dragstart', domevent.preventDefault);
+};
+
+/**
+ * Enable browser's image drag behaviors.
+ */
+domutil.enableImageDrag = function() {
+    domevent.off(window, 'dragstart', domevent.preventDefault);
+};
+
+module.exports = domutil;
+
+
+/***/ }),
+
+/***/ "./src/js/common/dw.js":
+/*!*****************************!*\
+  !*** ./src/js/common/dw.js ***!
+  \*****************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/**
+ * @fileoverview Wrapper module for easy calc date object
+ * @author NHN FE Development Lab <dl_javascript@nhn.com>
+ */
+
+
+var TZDate = __webpack_require__(/*! ./timezone */ "./src/js/common/timezone.js").Date;
+
+/**
+ * @constructor
+ * @param {TZDate} date to wrapping DW class
+ */
+function DW(date) {
+    if (!(this instanceof DW)) {
+        return new DW(date);
+    }
+
+    if (!(date instanceof TZDate)) {
+        date = new TZDate(date);
+    }
+
+    /**
+     * @type {TZDate}
+     */
+    this.d = date;
+}
+
+/**
+ * Return d property when supplied object is DW. else return itself
+ * @param {*} obj - object
+ * @returns {TZDate} date
+ */
+DW.prototype.safe = function(obj) {
+    if (obj.constructor === DW) {
+        return obj.d;
+    }
+
+    return obj;
+};
+
+/**
+ * Clone DW object
+ * @returns {DW} cloned dwrap object
+ */
+DW.prototype.clone = function() {
+    return new DW(new TZDate(this.d));
+};
+
+/**
+ * Add days
+ * @param {number} day - day to add
+ * @returns {DW} wrapper object
+ */
+DW.prototype.addDate = function(day) {
+    this.d.setDate(this.d.getDate() + day);
+
+    return this;
+};
+
+/**
+ * Add month.
+ * @param {number} m - month to add
+ * @returns {DW} wrapper object
+ */
+DW.prototype.addMonth = function(m) {
+    var currentMonth = this.d.getMonth();
+    var currentDay = this.d.getDate();
+    var leapYear = this._isLeapYear();
+    var targetMonth = currentMonth + m;
+    var clone = this.clone();
+    var targetDaysOfMonth = currentDay;
+
+    if (m) {
+        if (targetMonth === 1) {
+            targetDaysOfMonth = leapYear ? 29 : 28;
+        } else {
+            if (m > 0) {
+                clone.d.setMonth(targetMonth + 1, 0);
+            } else {
+                clone.d.setMonth(currentMonth, 0);
+            }
+            targetDaysOfMonth = clone.d.getDate();
+        }
+    }
+
+    this.d.setMonth(targetMonth, Math.min(currentDay, targetDaysOfMonth));
+
+    return this;
+};
+
+/**
+ * Is leap year or not
+ * @returns {boolean}
+ */
+DW.prototype._isLeapYear = function() {
+    var year = this.d.getFullYear();
+
+    return ((year % 4 === 0) && (year % 100 !== 0)) || !(year % 400);
+};
+
+/**
+ * Set hour, minutes, seconds, milliseconds
+ * @param {number} h - hours
+ * @param {number} m - minutes
+ * @param {number} s - seconds
+ * @param {number} ms - milliseconds
+ * @returns {DW} wrapper object
+ */
+DW.prototype.setHours = function(h, m, s, ms) {
+    this.d.setHours(h, m, s, ms);
+
+    return this;
+};
+
+/**
+ * Whether date is between supplied dates?
+ * @param {TZDate|DW} d1 - from date
+ * @param {TZDate|DW} d2 - to date
+ * @returns {boolean} is between?
+ */
+DW.prototype.isBetween = function(d1, d2) {
+    var safe = this.safe;
+
+    return safe(d1) <= this.d && this.d <= safe(d2);
+};
+
+module.exports = DW;
+
+
+/***/ }),
+
+/***/ "./src/js/common/floatingLayer.js":
+/*!****************************************!*\
+  !*** ./src/js/common/floatingLayer.js ***!
+  \****************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/**
+ * @fileoverview Floating layer module
+ * @author NHN FE Development Lab <dl_javascript@nhn.com>
+ */
+
+
+var util = __webpack_require__(/*! tui-code-snippet */ "tui-code-snippet");
+var config = __webpack_require__(/*! ../config */ "./src/js/config.js"),
+    domutil = __webpack_require__(/*! ../common/domutil */ "./src/js/common/domutil.js"),
+    View = __webpack_require__(/*! ../view/view */ "./src/js/view/view.js");
+
+/**
+ * @constructor
+ * @extends {View}
+ * @param {object} options - options for floating layer module
+ * @param {HTMLElement} container - parent continer for floating layer
+ */
+function FloatingLayer(options, container) {
+    var sibling = container[FloatingLayer.PROP_KEY],
+        layerContainer;
+
+    if (!sibling) {
+        sibling = container[FloatingLayer.PROP_KEY] = [];
+    }
+
+    sibling.push(this);
+
+    /**
+     * @type {Collection}
+     */
+    this.sibling = sibling;
+
+    /**
+     * @type {number}
+     */
+    this.zIndex = this.getLargestZIndex() || FloatingLayer.INIT_ZINDEX;
+
+    layerContainer = document.createElement('div');
+    layerContainer.style.display = 'none';
+    layerContainer.style.position = 'absolute';
+    domutil.addClass(layerContainer, config.classname('floating-layer'));
+    container.appendChild(layerContainer);
+
+    View.call(this, layerContainer);
+
+    /**
+     * @type {HTMLElement}
+     */
+    this.parent = container;
+}
+
+util.inherit(FloatingLayer, View);
+
+/**
+ * @const
+ */
+FloatingLayer.PROP_KEY = '__fe_floating_layer';
+
+/**
+ * @const
+ */
+FloatingLayer.INIT_ZINDEX = 999;
+
+/**
+ * Destroy floating layer instance. if there no instnace in parent container
+ *
+ * remove instance cache property in container element
+ */
+FloatingLayer.prototype.destroy = function() {
+    var parent = this.parent,
+        sibling = this.sibling,
+        i = 0, cnt = sibling.length;
+
+    for (; i < cnt; i += 1) {
+        if (sibling[i] === this) {
+            sibling.splice(i, 1);
+            break;
+        }
+    }
+
+    if (!sibling.length) {
+        try {
+            delete parent[FloatingLayer.PROP_KEY];
+        } catch (e) {
+            parent[FloatingLayer.PROP_KEY] = null;
+        }
+
+        parent.style.position = '';
+    }
+
+    domutil.remove(this.container);
+
+    this.sibling = null;
+
+    View.prototype.destroy.call(this);
+};
+
+/**
+ * @returns {boolean} whether layer is visible?
+ */
+FloatingLayer.prototype.isVisible = function() {
+    return this.container.style.display !== 'none';
+};
+
+/**
+ * Set layer position
+ * @param {number} x - x coordinate of layer
+ * @param {number} y - y coordinate of layer
+ */
+FloatingLayer.prototype.setPosition = function(x, y) {
+    domutil.setPosition(this.container, x, y);
+};
+
+/**
+ * Set layer left, top, right, bottom position
+ * @param {object} ltrb object of left, top, right, bottom
+ * @param {number} [ltrb.left] left pixel value.
+ * @param {number} [ltrb.top] top pixel value.
+ * @param {number} [ltrb.right] right pixel value.
+ * @param {number} [ltrb.bottom] bottom pixel value.
+ */
+FloatingLayer.prototype.setLTRB = function(ltrb) {
+    domutil.setLTRB(this.container, ltrb);
+};
+
+/**
+ * Set layer size
+ * @param {number|string} w - layer width
+ * @param {number|string} h - layer height
+ */
+FloatingLayer.prototype.setSize = function(w, h) {
+    var container = this.container;
+
+    w = util.isNumber(w) ? w + 'px' : w;
+    h = util.isNumber(h) ? h + 'px' : h;
+
+    container.style.width = w;
+    container.style.height = h;
+};
+
+/**
+ * Set layer content
+ * @param {string} html - html string
+ */
+FloatingLayer.prototype.setContent = function(html) {
+    this.container.innerHTML = html;
+};
+
+/**
+ * Get largest z-index from sibling layers
+ * @returns {number} largest z-index value
+ */
+FloatingLayer.prototype.getLargestZIndex = function() {
+    var zIndexes = util.map(this.sibling, function(layer) {
+        return layer.zIndex;
+    });
+
+    return Math.max.apply(null, zIndexes);
+};
+
+/**
+ * Set focus to layer
+ */
+FloatingLayer.prototype.focus = function() {
+    var zIndexForShow = this.getLargestZIndex() + 1;
+    this.container.style.zIndex = this.zIndex = zIndexForShow;
+};
+
+/**
+ * Show layer
+ */
+FloatingLayer.prototype.show = function() {
+    this.focus();
+    this.container.style.display = 'block';
+};
+
+/**
+ * Hide layer
+ */
+FloatingLayer.prototype.hide = function() {
+    this.container.style.display = 'none';
+};
+
+module.exports = FloatingLayer;
+
+
+/***/ }),
+
+/***/ "./src/js/common/model.js":
+/*!********************************!*\
+  !*** ./src/js/common/model.js ***!
+  \********************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/**
+ * @fileoverview Mixin module for models.
+ * @author NHN FE Development Lab <dl_javascript@nhn.com>
+ */
+
+
+var TZDate = __webpack_require__(/*! ../common/timezone */ "./src/js/common/timezone.js").Date;
+var util = __webpack_require__(/*! tui-code-snippet */ "tui-code-snippet");
+var spaceRx = /^\s*|\s*$/g,
+    model;
+
+var datetime = __webpack_require__(/*! ../common/datetime */ "./src/js/common/datetime.js");
+
+/**
+ * Mixin module for models.
+ * @mixin
+ */
+model = {
+    /**
+     * string trim
+     * @param {string} str string to trim
+     * @returns {string} trimed string
+     */
+    trim: function(str) {
+        return str.replace(spaceRx, '');
+    },
+    /**
+     * The collections of validator functions.
+     */
+    validators: {
+        /**
+         * check all of supplied fields(property) is not undefined or empty string.
+         * @param {object} instance model instance.
+         * @param {string[]} fields property names to check.
+         * @returns {boolean} return true when supplied fields are not undefined or empty string.
+         */
+        required: function(instance, fields) {
+            var valid = true,
+                isValid = function(obj) {
+                    return !util.isUndefined(obj) && model.trim(obj) !== '';
+                };
+
+            util.forEach(fields, function(fieldName) {
+                valid = isValid(instance[fieldName]);
+
+                return valid;
+            });
+
+            return valid;
+        },
+
+        /**
+         * check supplied fields are valid dates and valid date ranges.
+         * @param {object} instance model instance.
+         * @param {Date[]} fields array of date range (start, end)
+         * @returns {boolean} is valid date range?
+         */
+        dateRange: function(instance, fields) {
+            var start, end;
+
+            if (!util.isExisty(instance) || fields.length !== 2) {
+                return true;
+            }
+
+            start = new TZDate(instance[fields[0]]);
+            end = new TZDate(instance[fields[1]]);
+
+            if (!datetime.isValid(start) || !datetime.isValid(end)) {
+                return false;
+            }
+
+            if (datetime.compare(start, end) === 1) {
+                return false;
+            }
+
+            return true;
+        }
+    },
+
+    /**
+     * Check validate for model instance.
+     *
+     * The validate are works on a basis of constructor's "schema" property.
+     *
+     * You can customize validators add some method to model#validators.
+     * @returns {Boolean} model is valid?
+     */
+    isValid: function() {
+        var self = this,
+            schema = this.constructor.schema,
+            validators = model.validators,
+            validator,
+            valid = true;
+
+        if (!schema) {
+            return true;
+        }
+
+        util.forEach(schema, function(values, validatorName) {
+            validator = validators[validatorName];
+
+            if (validator) {
+                valid = validator(self, values);
+
+                return valid; // returning false can stop this loop
+            }
+
+            return true;
+        });
+
+        return valid;
+    },
+
+    /**
+     * Make data object form instance.
+     *
+     * It return object fill with all owned properties but exclude functions.
+     * @returns {object} Data object
+     */
+    parameterize: function() {
+        var param = {},
+            isFunc = util.isFunction;
+
+        util.forEach(this, function(value, propName) {
+            if (!isFunc(value)) {
+                param[propName] = value;
+            }
+        });
+
+        return param;
+    },
+
+    /**
+     * Mixin model module to supplied target.
+     * @param {Object} target The object of want to mixed.
+     * @example
+     * function Man() {
+     *     this.name = 'john';
+     * }
+     * model.mixin(Man.prototype);
+     */
+    mixin: function(target) {
+        util.forEach(model, function(method, name) {
+            if (name !== 'mixin') {
+                target[name] = method;
+            }
+        });
+    }
+};
+
+module.exports = model;
+
+
+/***/ }),
+
+/***/ "./src/js/common/point.js":
+/*!********************************!*\
+  !*** ./src/js/common/point.js ***!
+  \********************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/**
+ * @fileoverview
+ * Class for represent two dimensional x, y coordinates.
+ *
+ * It suppliy a group of functions for manipulate coordinates.
+ * @author NHN FE Development Lab <dl_javascript@nhn.com>
+ * @example
+ * var p = point(10, 10);
+ * var r1 = p.add(Point(5, 5));
+ * console.log(p.toString())    // "Point(10, 10)"
+ * console.log(r1.toString())    // "Point(15, 15)"
+ *
+ * var p2 = new Point(10, 10);
+ * p2._add(point(5, 5));
+ * console.log(p2.toString())   // "Point(15, 15)"
+ */
+
+
+var util = __webpack_require__(/*! tui-code-snippet */ "tui-code-snippet");
+
+/**
+ * Class for represent two dimentional x, y coordinates.
+ * @constructor
+ * @param {number} x The number of X coordinates.
+ * @param {number} y The number of Y coordinates.
+ * @param {boolean} [useRound=false] set true when each coordinates are rounded before initialize.
+ * @example
+ * var t = new Point(13, 5);
+ */
+function Point(x, y, useRound) {
+    /**
+     * @type {number}
+     */
+    this.x = (useRound ? Math.round(x) : x);
+
+    /**
+     * @type {number}
+     */
+    this.y = (useRound ? Math.round(y) : y);
+}
+
+/**********
+ * static props
+ **********/
+
+/**
+ * Calculate point ratio.
+ * @param {Point} point The instance of point.
+ * @param {number} factor From factor
+ * @param {number} toFactor To factor
+ * @returns {Point} Point instance calculated.
+ */
+Point.getRatio = function(point, factor, toFactor) {
+    if (factor === toFactor) {
+        return point.clone();
+    }
+
+    return point.multiplyBy(toFactor)._divideBy(factor);
+};
+
+/**
+ * Syntatic sugar of new Point()
+ * @param {(Point|number|number[])} x X coordinate value.
+ * @param {(number|boolean)} [y] Y coordinate value or boolean value for coordinates round.
+ * @param {boolean} [useRound] Set true then round initial coordinate values.
+ * @returns {Point} The instance of point.
+ * @example
+ * var p1 = point(10, 15);
+ * var p2 = point([10, 15]);
+ */
+Point.n = function(x, y, useRound) {
+    if (x instanceof Point) {
+        return x;
+    }
+
+    if (util.isArray(x)) {
+        return new Point(x[0], x[1], y);
+    }
+
+    return new Point(x, y, useRound);
+};
+
+/**********
+ * prototype props
+ **********/
+
+/**
+ * Clone points
+ * @returns {Point} The point instance cloned.
+ */
+Point.prototype.clone = function() {
+    return new Point(this.x, this.y);
+};
+
+/**
+ * Add points.
+ * @param {Point} point The point instance to add.
+ * @returns {Point} Point calculated.
+ */
+Point.prototype.add = function(point) {
+    return this.clone()._add(Point.n(point));
+};
+
+/**
+ * Add self points.
+ * @param {Point} point The point instance to add.
+ * @returns {Point} Point calculated.
+ */
+Point.prototype._add = function(point) {
+    this.x += point.x;
+    this.y += point.y;
+
+    return this;
+};
+
+/**
+ * Subtract points.
+ * @param {Point} point The point instance to subtract.
+ * @returns {Point} Point calculated.
+ */
+Point.prototype.subtract = function(point) {
+    return this.clone()._subtract(Point.n(point));
+};
+
+/**
+ * Subtract points. (manipulate self)
+ * @param {Point} point The point instance to subtract.
+ * @returns {Point} Point calculated.
+ */
+Point.prototype._subtract = function(point) {
+    this.x -= point.x;
+    this.y -= point.y;
+
+    return this;
+};
+
+/**
+ * Divide points.
+ * @param {number} num The number to divide.
+ * @returns {Point} Point calculated.
+ */
+Point.prototype.divideBy = function(num) {
+    return this.clone()._divideBy(num);
+};
+
+/**
+ * Divide points. (manipulate self)
+ * @param {number} num The number to divide.
+ * @returns {Point} Point calculated.
+ */
+Point.prototype._divideBy = function(num) {
+    this.x /= num;
+    this.y /= num;
+
+    return this;
+};
+
+/**
+ * Multiply coordinates.
+ * @param {number} num Thyen number to multiply
+ * @returns {Point} Point calculated.
+ */
+Point.prototype.multiplyBy = function(num) {
+    return this.clone()._multiplyBy(num);
+};
+
+/**
+ * Multiply self coordinates.
+ * @param {number} num The number to multiply.
+ * @returns {Point} Point calculated.
+ */
+Point.prototype._multiplyBy = function(num) {
+    this.x *= num;
+    this.y *= num;
+
+    return this;
+};
+
+/**
+ * Round coordinates.
+ * @returns {Point} Point calculated.
+ */
+Point.prototype.round = function() {
+    return this.clone()._round();
+};
+
+/**
+ * Round self coordinates.
+ * @returns {Point} Point calculated.
+ */
+Point.prototype._round = function() {
+    this.x = Math.round(this.x);
+    this.y = Math.round(this.y);
+
+    return this;
+};
+
+/**
+ * Reverse values between positive and negative.
+ * @returns {Point} Point calculated.
+ */
+Point.prototype.reverse = function() {
+    return this.clone()._reverse();
+};
+
+/**
+ * Reverse self values between positive and negative.
+ * @returns {Point} Point calculated.
+ */
+Point.prototype._reverse = function() {
+    this.x *= -1;
+    this.y *= -1;
+
+    return this;
+};
+
+/**
+ * Floor coordinates.
+ * @returns {Point} Point calculated.
+ */
+Point.prototype.floor = function() {
+    return this.clone()._floor();
+};
+
+/**
+ * Floor self coordinates.
+ * @returns {Point} Point calculated.
+ */
+Point.prototype._floor = function() {
+    this.x = Math.floor(this.x);
+    this.y = Math.floor(this.y);
+
+    return this;
+};
+
+/**
+ * Ceil coordinates.
+ * @returns {Point} Point calculated.
+ */
+Point.prototype.ceil = function() {
+    return this.clone()._ceil();
+};
+
+/**
+ * Ceil self coodinates.
+ * @returns {Point} Point calculated.
+ */
+Point.prototype._ceil = function() {
+    this.x = Math.ceil(this.x);
+    this.y = Math.ceil(this.y);
+
+    return this;
+};
+
+/**
+ * Rotate point.
+ * @param {number} deg The number of rotate degree.
+ * @param {Point} [center=this] Center point instance to use rotate center. use own when not supplied.
+ * @param {number} [cos] Cosine values for rotate. it useful when multi point rotate.
+ * @param {number} [sin] Sine values for rotate. it useful when multi point rotate.
+ * @returns {Point} The point instance rotated.
+ */
+Point.prototype.rotate = function(deg, center, cos, sin) {
+    return this.clone()._rotate(deg, center, cos, sin);
+};
+
+/**
+ * Rotate self.
+ * @param {number} deg The number of rotate degree.
+ * @param {Point} [center=this] Center point instance to use rotate center. use own when not supplied.
+ * @param {number} [cos] Cosine values for rotate. it useful when multi point rotate.
+ * @param {number} [sin] Sine values for rotate. it useful when multi point rotate.
+ * @returns {Point} The point instance rotated.
+ */
+Point.prototype._rotate = function(deg, center, cos, sin) {
+    var rad = deg * (Math.PI / 180),
+        x,
+        y;
+
+    cos = cos || parseFloat(Math.cos(rad).toFixed(8));
+    sin = sin || parseFloat(Math.sin(rad).toFixed(8));
+
+    this._subtract(center);
+
+    x = this.x;
+    y = this.y;
+
+    this.x = (x * cos) - (y * sin);
+    this.y = (x * sin) + (y * cos);
+
+    this._add(center);
+
+    return this;
+};
+
+/**
+ * Calculate distance between two points.
+ * @param {Point} point Point instance.
+ * @returns {number} The number of distance between two points.
+ */
+Point.prototype.distanceTo = function(point) {
+    var x,
+        y;
+
+    point = Point.n(point);
+
+    x = point.x - this.x;
+    y = point.y - this.y;
+
+    return Math.sqrt((x * x) + (y * y));
+};
+
+/**
+ * Check point equals.
+ * @param {Point} point Point instance to compare
+ * @returns {boolean} equality
+ */
+Point.prototype.equals = function(point) {
+    point = Point.n(point);
+
+    return point.x === this.x && point.y === this.y;
+};
+
+/**
+ * Return formatted string. 'Point(x, y)'
+ * @returns {string} string
+ */
+Point.prototype.toString = function() {
+    return 'Point(' + this.x + ', ' + this.y + ')';
+};
+
+/**
+ * Return coodinates to array. [x, y]
+ * @returns {number[]} coordinate array.
+ */
+Point.prototype.toArray = function() {
+    return [this.x, this.y];
+};
+
+module.exports = Point;
+
+
+/***/ }),
+
+/***/ "./src/js/common/reqAnimFrame.js":
+/*!***************************************!*\
+  !*** ./src/js/common/reqAnimFrame.js ***!
+  \***************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/* WEBPACK VAR INJECTION */(function(global) {/**
+ * @fileoverview RequestAnimFrame
+ * @author NHN FE Development Lab <dl_javascript@nhn.com>
+ */
+
+
+var requestFn,
+    cancelFn;
+
+/**
+ * Get name with vendor prefix
+ * @param {string} name - name to prepend prefix
+ * @returns {string} vendor prefixed name
+ */
+function getPrefixed(name) {
+    return global['webkit' + name] || global['moz' + name] || global['ms' + name];
+}
+
+requestFn = global.requestAnimationFrame ||
+    getPrefixed('RequestAnimationFrame') ||
+    function(fn, context) {
+        fn.call(context);
+    };
+
+cancelFn = global.cancelAnimationFrame ||
+    getPrefixed('CancelAnimationFrame') ||
+    getPrefixed('CancelRequestAnimationFrame') ||
+    function() {};
+
+/**
+ * @module module:reqAnimFrame
+ */
+
+module.exports = {
+    /**
+     * Shim of requestAnimationFrame
+     * @param {function} fn callback function
+     * @param {*} context context for callback
+     * @returns {number} Unique id
+     */
+    requestAnimFrame: function(fn, context) {
+        return requestFn.call(global, fn.bind(context));
+    },
+
+    /**
+     * Shim of cancelAnimationFrame
+     * @param {number} id requestAnimationFrame id
+     */
+    cancelAnimFrame: function(id) {
+        if (!id) {
+            return;
+        }
+
+        cancelFn.call(global, id);
+    }
+};
+
+/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../node_modules/webpack/buildin/global.js */ "./node_modules/webpack/buildin/global.js")))
+
+/***/ }),
+
+/***/ "./src/js/common/timezone.js":
+/*!***********************************!*\
+  !*** ./src/js/common/timezone.js ***!
+  \***********************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/**
+ * @fileoverview timezone
+ * @author NHN FE Development Lab <dl_javascript@nhn.com>
+ */
+
+
+var util = __webpack_require__(/*! tui-code-snippet */ "tui-code-snippet");
+
+var MIN_TO_MS = 60 * 1000;
+var nativeOffsetMs = getTimezoneOffset();
+var customOffsetMs = nativeOffsetMs;
+var timezoneOffsetCallback = null;
+var setByTimezoneOption = false;
+
+var getterMethods = [
+    'getDate',
+    'getDay',
+    'getFullYear',
+    'getHours',
+    'getMilliseconds',
+    'getMinutes',
+    'getMonth',
+    'getSeconds'
+];
+
+var setterMethods = [
+    'setDate',
+    'setFullYear',
+    'setHours',
+    'setMilliseconds',
+    'setMinutes',
+    'setMonth',
+    'setSeconds'
+];
+
+/**
+ * Get the timezone offset by timestampe
+ * @param {number} timestamp - timestamp
+ * @returns {number} timezone offset
+ * @private
+ */
+function getTimezoneOffset(timestamp) {
+    timestamp = timestamp || Date.now();
+
+    return new Date(timestamp).getTimezoneOffset() * MIN_TO_MS;
+}
+
+/**
+ * Get the custome timezone offset by timestampe
+ * @param {number} timestamp - timestamp
+ * @returns {number} timezone offset
+ * @private
+ */
+function getCustomTimezoneOffset(timestamp) {
+    if (!setByTimezoneOption && timezoneOffsetCallback) {
+        return timezoneOffsetCallback(timestamp) * MIN_TO_MS;
+    }
+
+    return customOffsetMs;
+}
+
+/**
+ * Convert to local time
+ * @param {number} time - time
+ * @returns {number} local time
+ */
+function getLocalTime(time) {
+    var timezoneOffset = getTimezoneOffset(time);
+    var customTimezoneOffset = getCustomTimezoneOffset(time);
+    var timezoneOffsetDiff = customTimezoneOffset ? 0 : nativeOffsetMs - timezoneOffset;
+    var localTime = time - customTimezoneOffset + timezoneOffset + timezoneOffsetDiff;
+
+    return localTime;
+}
+
+/**
+ * Create a Date instance with multiple arguments
+ * @param {Array} args - arguments
+ * @returns {Date}
+ * @private
+ */
+function createDateWithMultipleArgs(args) {
+    var utc = Date.UTC.apply(null, args);
+
+    return new Date(utc + getTimezoneOffset(utc));
+}
+
+/**
+ * To convert a Date to TZDate as it is.
+ * @param {TZDate|number|null} arg - date
+ * @returns {Date}
+ */
+function createDateWithUTCTime(arg) {
+    var time;
+
+    if (arg instanceof TZDate) {
+        time = arg.getUTCTime();
+    } else if ((typeof arg) === 'number') {
+        time = arg;
+    } else if (arg === null) {
+        time = 0;
+    } else {
+        throw new Error('Invalid Type');
+    }
+
+    return new Date(time);
+}
+
+/**
+ * Convert time to local time. Those times are only from API and not from inner source code.
+ * @param {Date|string} arg - date
+ * @returns {Date}
+ */
+function createDateAsLocalTime(arg) {
+    var time;
+
+    if (arg instanceof Date) {
+        time = arg.getTime();
+    } else if ((typeof arg) === 'string') {
+        time = Date.parse(arg);
+    } else {
+        throw new Error('Invalid Type');
+    }
+
+    time = getLocalTime(time);
+
+    return new Date(time);
+}
+
+/**
+ * is it for local time? These type can be used from Calendar API.
+ * @param {Date|string} arg - date
+ * @returns {boolean}
+ */
+function useLocalTimeConverter(arg) {
+    return arg instanceof Date || (typeof arg) === 'string';
+}
+
+/**
+ * Timezone Date Class
+ * @param {number|TZDate|Date|string} date - date to be converted
+ * @constructor
+ */
+function TZDate(date) {
+    var nativeDate;
+
+    if (util.isUndefined(date)) {
+        date = Date.now();
+    }
+
+    if (arguments.length > 1) {
+        nativeDate = createDateWithMultipleArgs(arguments);
+    } else if (useLocalTimeConverter(date)) {
+        nativeDate = createDateAsLocalTime(date);
+    } else {
+        nativeDate = createDateWithUTCTime(date);
+    }
+
+    this._date = nativeDate;
+}
+
+/**
+ * Get milliseconds which is converted by timezone
+ * @returns {number} milliseconds
+ */
+TZDate.prototype.getTime = function() {
+    var time = this._date.getTime();
+
+    return time + getCustomTimezoneOffset(time) - getTimezoneOffset(time);
+};
+
+/**
+ * Get UTC milliseconds
+ * @returns {number} milliseconds
+ */
+TZDate.prototype.getUTCTime = function() {
+    return this._date.getTime();
+};
+
+/**
+ * toUTCString
+ * @returns {string}
+ */
+TZDate.prototype.toUTCString = function() {
+    return this._date.toUTCString();
+};
+
+/**
+ * to Date
+ * @returns {Date}
+ */
+TZDate.prototype.toDate = function() {
+    return this._date;
+};
+
+TZDate.prototype.valueOf = function() {
+    return this.getTime();
+};
+
+TZDate.prototype.addDate = function(day) {
+    this.setDate(this.getDate() + day);
+
+    return this;
+};
+
+TZDate.prototype.addMinutes = function(minutes) {
+    this.setMinutes(this.getMinutes() + minutes);
+
+    return this;
+};
+
+TZDate.prototype.addMilliseconds = function(milliseconds) {
+    this.setMilliseconds(this.getMilliseconds() + milliseconds);
+
+    return this;
+};
+
+/* eslint-disable max-params*/
+TZDate.prototype.setWithRaw = function(y, M, d, h, m, s, ms) {
+    this.setFullYear(y, M, d);
+    this.setHours(h, m, s, ms);
+
+    return this;
+};
+
+/**
+ * @returns {TZDate} local time
+ */
+TZDate.prototype.toLocalTime = function() {
+    var time = this.getTime();
+    var utcTime = this.getUTCTime();
+    var diff = time - utcTime;
+
+    return new TZDate(utcTime - diff);
+};
+
+getterMethods.forEach(function(methodName) {
+    TZDate.prototype[methodName] = function() {
+        return this._date[methodName].apply(this._date, arguments);
+    };
+});
+
+setterMethods.forEach(function(methodName) {
+    TZDate.prototype[methodName] = function() {
+        this._date[methodName].apply(this._date, arguments);
+
+        return this.getTime();
+    };
+});
+
+module.exports = {
+    Date: TZDate,
+
+    /**
+     * Set offset
+     * @param {number} offset - timezone offset based on minutes
+     */
+    setOffset: function(offset) {
+        customOffsetMs = offset * MIN_TO_MS;
+    },
+
+    /**
+     * Set offset
+     * @param {number} offset - timezone offset based on minutes
+     */
+    setOffsetByTimezoneOption: function(offset) {
+        this.setOffset(-offset);
+        setByTimezoneOption = true;
+    },
+
+    /**
+     * Get offset in case of `setByTimezoneOption`. Or return 0.
+     * @returns {number} timezone offset offset minutes
+     */
+    getOffset: function() {
+        if (setByTimezoneOption) {
+            return customOffsetMs / MIN_TO_MS;
+        }
+
+        return 0;
+    },
+
+    /**
+     * Set a callback function to get timezone offset by timestamp
+     * @param {function} callback - callback function
+     */
+    setOffsetCallback: function(callback) {
+        timezoneOffsetCallback = callback;
+    },
+
+    /**
+     * (Use this method only for testing)
+     * Reset system timezone and custom timezone
+     */
+    restoreOffset: function() {
+        customOffsetMs = getTimezoneOffset();
+    }
+};
+
+
+/***/ }),
+
+/***/ "./src/js/common/vlayout.js":
+/*!**********************************!*\
+  !*** ./src/js/common/vlayout.js ***!
+  \**********************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/**
+ * @fileoverview Layout module that supplied split height, resize height features.
+ * @author NHN FE Development Lab <dl_javascript@nhn.com>
+ */
+
+
+var util = __webpack_require__(/*! tui-code-snippet */ "tui-code-snippet");
+var config = __webpack_require__(/*! ../config */ "./src/js/config.js"),
+    common = __webpack_require__(/*! ./common */ "./src/js/common/common.js"),
+    domutil = __webpack_require__(/*! ./domutil */ "./src/js/common/domutil.js"),
+    domevent = __webpack_require__(/*! ./domevent */ "./src/js/common/domevent.js"),
+    View = __webpack_require__(/*! ../view/view */ "./src/js/view/view.js"),
+    VPanel = __webpack_require__(/*! ./vpanel */ "./src/js/common/vpanel.js"),
+    Drag = __webpack_require__(/*! ../handler/drag */ "./src/js/handler/drag.js");
+
+var mAbs = Math.abs;
+
+/**
+ * @typedef PanelOptions
+ * @type {object}
+ * @property {number} [minHeight=0] - minimum height of panel
+ * @property {number} [height=0] - current panel height
+ * @property {boolean} [splitter=false] - is this panel uses splitter?
+ * @property {boolean} [autoHeight=false] - is this panel uses remain height of container?
+ * @property {string} [className=''] - className string for add created element
+ */
+
+/**
+ * @constructor
+ * @extends {View}
+ * @param {object} options - options for VLayout module
+ *  @param {PanelOptions[]} [options.panels] - panels to add layout when initialize
+ *  @param {number[]} [options.panelHeights] - panel height list
+ * @param {HTMLElement} container - container element
+ * @param {Theme} theme - theme instance
+ */
+function VLayout(options, container, theme) {
+    var opt, tempHeights;
+
+    if (!(this instanceof VLayout)) {
+        return new VLayout(options, container);
+    }
+
+    View.call(this, container);
+
+    domutil.addClass(container, config.classname('vlayout-container'));
+
+    /**
+     * @type {object}
+     */
+    opt = this.options = util.extend({
+        panels: [],
+        panelHeights: []
+    }, options);
+
+    /**
+     * @type {VPanel[]}
+     */
+    this.panels = [];
+
+    /**
+     * @type {Drag}
+     */
+    this._drag = new Drag({
+        distance: 10,
+        exclude: function(target) {
+            return !domutil.hasClass(target, config.classname('splitter'));
+        }
+    }, container);
+
+    this._drag.on({
+        dragStart: this._onDragStart,
+        drag: this._onDrag,
+        dragEnd: this._onDragEnd
+    }, this);
+
+    /**
+     * @type {object}
+     */
+    this._dragData = null;
+
+    /**
+     * @type {Theme}
+     */
+    this.theme = theme;
+
+    if (opt.panels.length) {
+        if (opt.panelHeights.length) {
+            tempHeights = opt.panelHeights.slice();
+            util.forEach(opt.panels, function(panelOpt) {
+                if (!panelOpt.isSplitter && !panelOpt.autoHeight) {
+                    panelOpt.height = tempHeights.shift();
+                }
+            });
+        }
+
+        this.addPanels(opt.panels, this.container);
+    }
+
+    this.refresh();
+}
+
+util.inherit(VLayout, View);
+
+/**
+ * Get current panels height in layout
+ * @returns {number[]} height of panels with `autoHeight` false
+ */
+VLayout.prototype.getLayoutData = function() {
+    var heightList = [];
+
+    util.forEach(this.panels, function(panel) {
+        if (panel.isSplitter() || panel.options.autoHeight) {
+            return;
+        }
+
+        heightList.push(panel.getHeight());
+    });
+
+    return heightList;
+};
+
+/**
+ * Set panels height in layout
+ * @param {number[]} heightList of panels with `autoHeight` false
+ */
+VLayout.prototype.setLayoutData = function(heightList) {
+    if (!heightList.length) {
+        return;
+    }
+
+    util.forEach(this.panels, function(panel) {
+        if (panel.isSplitter() || panel.options.autoHeight) {
+            return;
+        }
+
+        panel.setHeight(null, heightList.shift());
+    });
+
+    this.refresh();
+};
+
+/**
+ * Get next panel instance by specific panel
+ * @param {VPanel} panel - panel instance
+ * @returns {VPanel} next panel
+ */
+VLayout.prototype.nextPanel = function(panel) {
+    return this.panels[panel.index + 1];
+};
+
+/**
+ * Get previous panel instance by specific panel
+ * @param {VPanel} panel - panel instance
+ * @returns {VPanel} previous panel
+ */
+VLayout.prototype.prevPanel = function(panel) {
+    return this.panels[panel.index - 1];
+};
+
+/**
+ * Initialize resizing guide element
+ * @param {HTMLElement} element - element to use guide element after cloned
+ * @param {number} top - top pixel value for guide element
+ * @returns {HTMLElement} cloned element == guide element
+ */
+VLayout.prototype._initializeGuideElement = function(element, top) {
+    var cloned = element.cloneNode(true);
+
+    domutil.addClass(cloned, config.classname('splitter-guide'));
+    this._refreshGuideElement(cloned, top);
+    this.container.appendChild(cloned);
+
+    return cloned;
+};
+
+/**
+ * Refresh guide element position
+ * @param {HTMLElement} element - guide element
+ * @param {number} top - top pixel value for guide element
+ */
+VLayout.prototype._refreshGuideElement = function(element, top) {
+    element.style.top = top + 'px';
+};
+
+/**
+ * Clear guide element position
+ * @param {HTMLElement} element - guide element
+ */
+VLayout.prototype._clearGuideElement = function(element) {
+    domutil.remove(element);
+};
+
+/**
+ * Resize overall panels size
+ * @param {VPanel} splPanel - splitter panel instance
+ * @param {number} startY - dragstart Y position
+ * @param {number} mouseY - dragend Y position
+ */
+VLayout.prototype._resize = function(splPanel, startY, mouseY) {
+    var diffY = startY - mouseY,
+        resizedHeight = mAbs(diffY),
+        resizeMap = [],
+        toDown = mouseY > startY,
+        backwardMethod = toDown ? 'prevPanel' : 'nextPanel',
+        forwardMethod = toDown ? 'nextPanel' : 'prevPanel',
+        cursor, resizeInfo;
+
+    cursor = this[backwardMethod](splPanel);
+    resizeInfo = cursor.getResizeInfoByGrowth(resizedHeight);
+    resizeMap.push([cursor, resizeInfo[0]]);
+
+    for (cursor = this[forwardMethod](cursor);
+        util.isExisty(cursor);
+        cursor = this[forwardMethod](cursor)) {
+        if (cursor.isSplitter()) {
+            continue;
+        }
+
+        resizeInfo = cursor.getResizeInfoByGrowth(-resizedHeight);
+        resizeMap.push([cursor, resizeInfo[0]]);
+        resizedHeight -= resizeInfo[1];
+    }
+
+    util.forEach(resizeMap, function(pair) {
+        pair[0].setHeight(null, pair[1], true);
+        pair[0].fire('resize');
+    });
+};
+
+/**
+ * Get summation of splitter and panel's minimum height upper and below of supplied splitter
+ * @param {VPanel} splPanel - splitter panel instance
+ * @returns {number[]} upper and below splitter's height and panel minimum height summation.
+ */
+VLayout.prototype._getMouseYAdditionalLimit = function(splPanel) {
+    var upper = 0,
+        below = 0,
+        cursor,
+        func = function(panel) {
+            if (panel.isSplitter()) {
+                return panel.getHeight();
+            }
+
+            return panel.options.minHeight;
+        };
+
+    for (cursor = this.prevPanel(splPanel);
+        util.isExisty(cursor);
+        cursor = this.prevPanel(cursor)) {
+        upper += func(cursor);
+    }
+
+    for (cursor = this.nextPanel(splPanel);
+        util.isExisty(cursor);
+        cursor = this.nextPanel(cursor)) {
+        below += func(cursor);
+    }
+
+    return [upper, below];
+};
+
+/**********
+ * Drag Handlers
+ **********/
+
+/**
+ * Drag start schedule handler
+ * @param {object} e - drag start schedule data
+ */
+VLayout.prototype._onDragStart = function(e) {
+    var oEvent = e.originEvent,
+        target = e.target,
+        splIndex = domutil.getData(target, 'panelIndex'),
+        splPanel = this.panels[splIndex],
+        splHeight = splPanel.getHeight(),
+        splOffsetY = domevent.getMousePosition(oEvent, target)[1],
+        mouseY = domevent.getMousePosition(oEvent, this.container)[1],
+        guideElement = this._initializeGuideElement(target, mouseY);
+
+    splPanel.addClass(config.classname('splitter-focused'));
+
+    this._dragData = {
+        splPanel: splPanel,
+        splOffsetY: splOffsetY,
+        guideElement: guideElement,
+        startY: mouseY - splOffsetY,
+        minY: 0,
+        maxY: this.getViewBound().height - splHeight
+    };
+
+    if (!util.browser.msie) {
+        domutil.addClass(document.body, config.classname('resizing'));
+    }
+};
+
+/**
+ * Drag schedule handler
+ * @param {object} e - drag schedule data
+ */
+VLayout.prototype._onDrag = function(e) {
+    var dragData = this._dragData,
+        mouseY = domevent.getMousePosition(e.originEvent, this.container)[1];
+
+    mouseY = common.limit(mouseY - dragData.splOffsetY, [dragData.minY], [dragData.maxY]);
+
+    this._refreshGuideElement(dragData.guideElement, mouseY);
+};
+
+/**
+ * Drag end schedule handler
+ * @fires VLayout#resize
+ * @param {object} e - dragend schedule data
+ */
+VLayout.prototype._onDragEnd = function(e) {
+    var dragData = this._dragData,
+        asideMinMax = this._getMouseYAdditionalLimit(dragData.splPanel),
+        mouseY = domevent.getMousePosition(e.originEvent, this.container)[1];
+
+    // mouseY value can't exceed summation of splitter height and panel's minimum height based on target splitter.
+    mouseY = common.limit(
+        mouseY - dragData.splOffsetY,
+        [dragData.minY + asideMinMax[0]],
+        [dragData.maxY - asideMinMax[1]]
+    );
+
+    this._resize(dragData.splPanel, dragData.startY, mouseY);
+
+    /**
+     * @event VLayout#resize
+     * @type {object}
+     * @property {number[]} layoutData - layout data after resized
+     */
+    this.fire('resize', {
+        layoutData: this.getLayoutData()
+    });
+
+    this._dragData = null;
+    this._clearGuideElement(dragData.guideElement);
+    dragData.splPanel.removeClass(config.classname('splitter-focused'));
+    domutil.removeClass(document.body, config.classname('resizing'));
+};
+
+/**********
+ * Methods
+ **********/
+
+/**
+ * refresh each panels
+ */
+VLayout.prototype.refresh = function() {
+    var panelToFillHeight = [];
+    var layoutHeight = this.getViewBound().height;
+    var usedHeight = 0;
+    var remainHeight;
+
+    if (!layoutHeight) {
+        return;
+    }
+
+    util.forEach(this.panels, function(panel) {
+        if (panel.options.autoHeight) {
+            panelToFillHeight.push(panel);
+        } else {
+            usedHeight += panel.getHeight();
+        }
+    });
+
+    remainHeight = (layoutHeight - usedHeight) / panelToFillHeight.length;
+
+    util.forEach(panelToFillHeight, function(panel) {
+        panel.setHeight(null, remainHeight);
+    });
+};
+
+/**
+ * add panel
+ * @param {PanelOptions} options - options for panel
+ * @param {container} [container] - container element
+ */
+VLayout.prototype.addPanel = function(options, container) {
+    var element = document.createElement('div'),
+        panels = this.panels,
+        index = panels.length;
+
+    options = util.extend({
+        index: index
+    }, options);
+
+    panels.push(new VPanel(options, element, this.theme));
+
+    container.appendChild(element);
+};
+
+/**
+ * Add multiple panel
+ * @param {PanelOptions[]} options - panel options list
+ * @param {HTMLElement} container - container element
+ */
+VLayout.prototype.addPanels = function(options, container) {
+    var self = this,
+        frag = document.createDocumentFragment();
+
+    util.forEach(options, function(option) {
+        self.addPanel(option, frag);
+    });
+
+    container.appendChild(frag);
+};
+
+/**
+ * Get a panel by name
+ * @param {string} name - panel's name
+ * @returns {VPanel}
+ */
+VLayout.prototype.getPanelByName = function(name) {
+    var found;
+    util.forEach(this.panels, function(panel) {
+        if (panel.name === name) {
+            found = panel;
+        }
+    });
+
+    return found;
+};
+
+module.exports = VLayout;
+
+
+/***/ }),
+
+/***/ "./src/js/common/vpanel.js":
+/*!*********************************!*\
+  !*** ./src/js/common/vpanel.js ***!
+  \*********************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/**
+ * @fileoverview Panel class for VLayout module
+ * @author NHN FE Development Lab <dl_javascript@nhn.com>
+ */
+
+
+var util = __webpack_require__(/*! tui-code-snippet */ "tui-code-snippet");
+var config = __webpack_require__(/*! ../config */ "./src/js/config.js"),
+    common = __webpack_require__(/*! ./common */ "./src/js/common/common.js"),
+    domutil = __webpack_require__(/*! ./domutil */ "./src/js/common/domutil.js"),
+    View = __webpack_require__(/*! ../view/view */ "./src/js/view/view.js");
+
+/**
+ * @constructor
+ * @extends {View}
+ * @param {object} options - options for VPanel
+ *  @param {number} options.index - index of panel in vlayout
+ *  @param {number} [options.minHeight=0] - minimum height of panel
+ *  @param {number} [options.height] - initial height of panel
+ *  @param {boolean} [options.isSplitter=false] - set true then this panel works splitter
+ *  @param {boolean} [options.autoHeight=false] - set true then this panel use remain height after other panel resized.
+ *  @param {string} [options.className] - additional class name to add element
+ * @param {HTMLElement} container - container element
+ * @param {Theme} theme - theme instance
+ */
+function VPanel(options, container, theme) {
+    View.call(this, container);
+
+    /**
+     * @type {object}
+     */
+    this.options = util.extend({
+        index: 0,
+        name: '0',
+        minHeight: 0,
+        maxHeight: null,
+        height: null,
+        isSplitter: false,
+        autoHeight: false,
+        className: ''
+    }, options);
+
+    /**
+     * @type {number}
+     */
+    this.index = this.options.index;
+
+    /**
+     * @type {string}
+     */
+    this.name = this.options.name || String(this.index);
+
+    this.isHeightForcedSet = false;
+
+    /**
+     * @type {Theme}
+     */
+    this.theme = theme;
+
+    this._initPanel(this.options, container);
+}
+
+util.inherit(VPanel, View);
+
+/**
+ * whether this panel is splitter?
+ * @returns {boolean} panel is splitter?
+ */
+VPanel.prototype.isSplitter = function() {
+    return this.options.isSplitter;
+};
+
+/**
+ * set max height of panel
+ * @param {number} maxHeight - maxHeight
+ */
+VPanel.prototype.setMaxHeight = function(maxHeight) {
+    if (!this.options.autoHeight) {
+        this.options.maxHeight = maxHeight;
+    }
+};
+
+/**
+ * set forced height flag
+ * @param {boolean} set - enable or not
+ */
+VPanel.prototype.setHeightForcedSet = function(set) {
+    this.isHeightForcedSet = set;
+};
+
+/**
+ * get forced height flag
+ * @returns {boolean} set - enable or not
+ */
+VPanel.prototype.getHeightForcedSet = function() {
+    return this.isHeightForcedSet;
+};
+
+/**
+ * set height of html element
+ * @param {HTMLElement} [container] - container element
+ * @param {number} newHeight - height
+ * @param {boolean} force - whether ignore max-length
+ */
+VPanel.prototype.setHeight = function(container, newHeight, force) {
+    var maxHeight = this.options.maxHeight;
+    var minHeight = this.options.minHeight;
+    var autoHeight = this.options.autoHeight;
+    container = container || this.container;
+
+    // 한번 force 호출이 일어난 이후에는 force 호출만 허용한다
+    if (!force && this.isHeightForcedSet && !autoHeight) {
+        return;
+    }
+
+    if (force) {
+        this.isHeightForcedSet = true;
+    } else if (maxHeight) {
+        newHeight = Math.min(newHeight, maxHeight);
+    }
+    newHeight = Math.max(minHeight, newHeight);
+
+    container.style.height = newHeight + 'px';
+};
+
+/**
+ * Calculate new height of panel and remains by supplied height growth
+ * @param {number} growth - growth value
+ * @returns {number[]} newHeight, remainHeight
+ */
+VPanel.prototype.getResizeInfoByGrowth = function(growth) {
+    var height = this.getHeight(),
+        newHeight = height + growth,
+        resizeTo = Math.max(0, newHeight, this.options.minHeight);
+
+    return [resizeTo, height - resizeTo];
+};
+
+/**
+ * get outer height of panel element
+ * @returns {number} outer height of panel element
+ */
+VPanel.prototype.getHeight = function() {
+    return domutil.getSize(this.container)[1];
+};
+
+/**
+ * add design class to panel element
+ * @param {string} className - classname string
+ */
+VPanel.prototype.addClass = function(className) {
+    domutil.addClass(this.container, className);
+};
+
+/**
+ * remove design class to panel element
+ * @param {string} className - classname string
+ */
+VPanel.prototype.removeClass = function(className) {
+    domutil.removeClass(this.container, className);
+};
+
+/**
+ * initialize panel element
+ * @param {PanelOptions} options - options for panel
+ * @param {HTMLDivElement} container - panel element
+ */
+VPanel.prototype._initPanel = function(options, container) {
+    var height;
+
+    domutil.setData(container, 'panelIndex', options.index);
+
+    if (options.isSplitter) {
+        domutil.addClass(container, config.classname('splitter'));
+        this.applyTheme();
+
+        return;
+    }
+
+    if (options.className) {
+        domutil.addClass(container, options.className);
+    }
+
+    if (options.autoHeight) {
+        domutil.setData(container, 'autoHeight', true);
+    } else {
+        height = common.limit(options.height || 0,
+            [options.minHeight],
+            [options.maxHeight || options.height]
+        );
+
+        options.height = height;
+        this.setHeight(container, height);
+    }
+};
+
+VPanel.prototype.applyTheme = function() {
+    var style = this.container.style;
+    var theme = this.theme;
+
+    if (!theme) {
+        return;
+    }
+
+    style.borderTop = theme.week.vpanelSplitter.border || theme.common.border;
+    style.borderBottom = theme.week.vpanelSplitter.border || theme.common.border;
+    style.height = theme.week.vpanelSplitter.height;
+};
+
+module.exports = VPanel;
+
+
+/***/ }),
+
+/***/ "./src/js/config.js":
+/*!**************************!*\
+  !*** ./src/js/config.js ***!
+  \**************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/**
+ * @fileoverview Global configuration object module. This @echo syntax will change preprocess context. See gulpfile.js
+ * @author NHN FE Development Lab <dl_javascript@nhn.com>
+ */
+
+
+var cssPrefix = 'tui-full-calendar-',
+    alldayGetViewID = new RegExp('^' + cssPrefix + 'weekday[\\s]tui-view-(\\d+)'),
+    alldayCheckPermission = new RegExp('^' + cssPrefix + 'schedule(-title)?$'),
+    timeGetViewID = new RegExp('^' + cssPrefix + 'time-date[\\s]tui-view-(\\d+)');
+
+var config = {
+    throwError: function(msg) {
+        throw new Error(msg);
+    },
+
+    cssPrefix: cssPrefix,
+
+    classname: function(str) {
+        str = str || '';
+
+        if (str.charAt(0) === '.') {
+            return '.' + config.cssPrefix + str.slice(1);
+        }
+
+        return config.cssPrefix + str;
+    },
+
+    allday: {
+        getViewIDRegExp: alldayGetViewID,
+        checkCondRegExp: alldayCheckPermission
+    },
+
+    daygrid: {
+        getViewIDRegExp: alldayGetViewID,
+        checkCondRegExp: alldayCheckPermission
+    },
+
+    time: {
+        getViewIDRegExp: timeGetViewID
+    }
+};
+
+module.exports = config;
+
+
+/***/ }),
+
+/***/ "./src/js/controller/base.js":
+/*!***********************************!*\
+  !*** ./src/js/controller/base.js ***!
+  \***********************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/**
+ * @fileoverview Base calendar controller
+ * @author NHN FE Development Lab <dl_javascript@nhn.com>
+ */
+
+
+var util = __webpack_require__(/*! tui-code-snippet */ "tui-code-snippet");
+var Schedule = __webpack_require__(/*! ../model/schedule */ "./src/js/model/schedule.js");
+var ScheduleViewModel = __webpack_require__(/*! ../model/viewModel/scheduleViewModel */ "./src/js/model/viewModel/scheduleViewModel.js");
+var datetime = __webpack_require__(/*! ../common/datetime */ "./src/js/common/datetime.js");
+var common = __webpack_require__(/*! ../common/common */ "./src/js/common/common.js");
+var Theme = __webpack_require__(/*! ../theme/theme */ "./src/js/theme/theme.js");
+
+/**
+ * @constructor
+ * @param {object} options - options for base controller
+ * @param {function} [options.groupFunc] - function for group each models {@see Collection#groupBy}
+ * @param {themeConfig} [options.theme] - theme object
+ * @mixes util.CustomEvents
+ */
+function Base(options) {
+    options = options || {};
+
+    /**
+     * function for group each schedule models.
+     * @type {function}
+     * @param {ScheduleViewModel} viewModel - view model instance
+     * @returns {string} group key
+     */
+    this.groupFunc = options.groupFunc || function(viewModel) {
+        var model = viewModel.model;
+
+        if (viewModel.model.isAllDay) {
+            return 'allday';
+        }
+
+        if (model.category === 'time' && (model.end - model.start > datetime.MILLISECONDS_PER_DAY)) {
+            return 'allday';
+        }
+
+        return model.category;
+    };
+
+    /**
+     * schedules collection.
+     * @type {Collection}
+     */
+    this.schedules = common.createScheduleCollection();
+
+    /**
+     * Matrix for multidate schedules.
+     * @type {object.<string, array>}
+     */
+    this.dateMatrix = {};
+
+    /**
+     * Theme
+     * @type {Theme}
+     */
+    this.theme = new Theme(options.theme);
+
+    /**
+     * Calendar list
+     * @type {Array.<Calendar>}
+     */
+    this.calendars = [];
+}
+
+/**
+ * Calculate contain dates in schedule.
+ * @private
+ * @param {Schedule} schedule The instance of schedule.
+ * @returns {array} contain dates.
+ */
+Base.prototype._getContainDatesInSchedule = function(schedule) {
+    var scheduleStart = schedule.getStarts();
+    var scheduleEnd = schedule.getEnds();
+    var start = datetime.start(scheduleStart);
+    var equalStartEnd = datetime.compare(scheduleStart, scheduleEnd) === 0;
+    var endDate = equalStartEnd ? scheduleEnd : datetime.convertStartDayToLastDay(scheduleEnd);
+    var end = datetime.end(endDate);
+    var range = datetime.range(
+        start,
+        end,
+        datetime.MILLISECONDS_PER_DAY
+    );
+
+    return range;
+};
+
+/****************
+ * CRUD Schedule
+ ****************/
+
+/**
+ * Create a schedule instance from raw data.
+ * @emits Base#beforeCreateSchedule
+ * @emits Base#createdSchedule
+ * @param {object} options Data object to create schedule.
+ * @param {boolean} silent - set true then don't fire events.
+ * @returns {Schedule} The instance of Schedule that created.
+ */
+Base.prototype.createSchedule = function(options, silent) {
+    var schedule,
+        scheduleData = {
+            data: options
+        };
+
+    /**
+     * @event Base#beforeCreateSchedule
+     * @type {Calendar~Schedule[]}
+     */
+    if (!this.invoke('beforeCreateSchedule', scheduleData)) {
+        return null;
+    }
+
+    schedule = this.addSchedule(Schedule.create(options));
+
+    if (!silent) {
+        /**
+         * @event Base#createdSchedule
+         * @type {Schedule}
+         */
+        this.fire('createdSchedule', schedule);
+    }
+
+    return schedule;
+};
+
+/**
+ * @emits Base#beforeCreateSchedule
+ * @emits Base#createdSchedule
+ * @param {Calendar~Schedule[]} dataList - dataObject list to create schedule.
+ * @param {boolean} [silent=false] - set true then don't fire events.
+ * @returns {Schedule[]} The instance list of Schedule that created.
+ */
+Base.prototype.createSchedules = function(dataList, silent) {
+    var self = this;
+
+    return util.map(dataList, function(data) {
+        return self.createSchedule(data, silent);
+    });
+};
+
+/**
+ * Update a schedule.
+ * @emits Base#updateSchedule
+ * @param {Schedule} schedule - schedule instance to update
+ * @param {object} options updated object data.
+ * @returns {Schedule} updated schedule instance
+ */
+// eslint-disable-next-line complexity
+Base.prototype.updateSchedule = function(schedule, options) {
+    var start = options.start || schedule.start;
+    var end = options.end || schedule.end;
+
+    options = options || {};
+
+    if (['milestone', 'task', 'allday', 'time'].indexOf(options.category) > -1) {
+        schedule.set('category', options.category);
+    }
+
+    if (options.category === 'allday') {
+        options.isAllDay = true;
+    }
+
+    if (!util.isUndefined(options.isAllDay)) {
+        schedule.set('isAllDay', options.isAllDay);
+    }
+
+    if (!util.isUndefined(options.calendarId)) {
+        schedule.set('calendarId', options.calendarId);
+    }
+
+    if (options.title) {
+        schedule.set('title', options.title);
+    }
+
+    if (options.body) {
+        schedule.set('body', options.body);
+    }
+
+    if (options.start || options.end) {
+        if (schedule.isAllDay) {
+            schedule.setAllDayPeriod(start, end);
+        } else {
+            schedule.setTimePeriod(start, end);
+        }
+    }
+
+    if (options.color) {
+        schedule.set('color', options.color);
+    }
+
+    if (options.bgColor) {
+        schedule.set('bgColor', options.bgColor);
+    }
+
+    if (options.borderColor) {
+        schedule.set('borderColor', options.borderColor);
+    }
+
+    if (options.origin) {
+        schedule.set('origin', options.origin);
+    }
+
+    if (!util.isUndefined(options.isPending)) {
+        schedule.set('isPending', options.isPending);
+    }
+
+    if (!util.isUndefined(options.isFocused)) {
+        schedule.set('isFocused', options.isFocused);
+    }
+
+    if (!util.isUndefined(options.isReadOnly)) {
+        schedule.set('isReadOnly', options.isReadOnly);
+    }
+
+    if (options.location) {
+        schedule.set('location', options.location);
+    }
+
+    if (options.state) {
+        schedule.set('state', options.state);
+    }
+
+    if (options.raw) {
+        schedule.set('raw', options.raw);
+    }
+
+    if (options.attendees) {
+        schedule.set('attendees', options.attendees);
+    }
+
+    this._removeFromMatrix(schedule);
+    this._addToMatrix(schedule);
+
+    /**
+     * @event Base#updateSchedule
+     */
+    this.fire('updateSchedule');
+
+    return schedule;
+};
+
+/**
+ * Delete schedule instance from controller.
+ * @param {Schedule} schedule - schedule instance to delete
+ * @returns {Schedule} deleted model instance.
+ */
+Base.prototype.deleteSchedule = function(schedule) {
+    this._removeFromMatrix(schedule);
+    this.schedules.remove(schedule);
+
+    return schedule;
+};
+
+/**
+ * Set date matrix to supplied schedule instance.
+ * @param {Schedule} schedule - instance of schedule.
+ */
+Base.prototype._addToMatrix = function(schedule) {
+    var ownMatrix = this.dateMatrix;
+    var containDates = this._getContainDatesInSchedule(schedule);
+
+    util.forEach(containDates, function(date) {
+        var ymd = datetime.format(date, 'YYYYMMDD'),
+            matrix = ownMatrix[ymd] = ownMatrix[ymd] || [];
+
+        matrix.push(util.stamp(schedule));
+    });
+};
+
+/**
+ * Remove schedule's id from matrix.
+ * @param {Schedule} schedule - instance of schedule
+ */
+Base.prototype._removeFromMatrix = function(schedule) {
+    var modelID = util.stamp(schedule);
+
+    util.forEach(this.dateMatrix, function(matrix) {
+        var index = util.inArray(modelID, matrix);
+
+        if (~index) {
+            matrix.splice(index, 1);
+        }
+    }, this);
+};
+
+/**
+ * Add a schedule instance.
+ * @emits Base#addedSchedule
+ * @param {Schedule} schedule The instance of Schedule.
+ * @param {boolean} silent - set true then don't fire events.
+ * @returns {Schedule} The instance of Schedule that added.
+ */
+Base.prototype.addSchedule = function(schedule, silent) {
+    this.schedules.add(schedule);
+    this._addToMatrix(schedule);
+
+    if (!silent) {
+        /**
+         * @event Base#addedSchedule
+         * @type {object}
+         */
+        this.fire('addedSchedule', schedule);
+    }
+
+    return schedule;
+};
+
+/**
+ * split schedule model by ymd.
+ * @param {Date} start - start date
+ * @param {Date} end - end date
+ * @param {Collection} scheduleCollection - collection of schedule model.
+ * @returns {object.<string, Collection>} splitted schedule model collections.
+ */
+Base.prototype.splitScheduleByDateRange = function(start, end, scheduleCollection) {
+    var range = datetime.range(
+            datetime.start(start),
+            datetime.end(end),
+            datetime.MILLISECONDS_PER_DAY
+        ),
+        ownMatrix = this.dateMatrix,
+        result = {};
+
+    util.forEachArray(range, function(date) {
+        var ymd = datetime.format(date, 'YYYYMMDD'),
+            matrix = ownMatrix[ymd],
+            collection;
+
+        collection = result[ymd] = common.createScheduleCollection();
+
+        if (matrix && matrix.length) {
+            util.forEachArray(matrix, function(id) {
+                scheduleCollection.doWhenHas(id, function(schedule) {
+                    collection.add(schedule);
+                });
+            });
+        }
+    });
+
+    return result;
+};
+
+/**
+ * Return schedules in supplied date range.
+ *
+ * available only YMD.
+ * @param {TZDate} start start date.
+ * @param {TZDate} end end date.
+ * @returns {object.<string, Collection>} schedule collection grouped by dates.
+ */
+Base.prototype.findByDateRange = function(start, end) {
+    var range = datetime.range(
+            datetime.start(start),
+            datetime.end(end),
+            datetime.MILLISECONDS_PER_DAY
+        ),
+        ownSchedules = this.schedules.items,
+        ownMatrix = this.dateMatrix,
+        dformat = datetime.format,
+        result = {},
+        matrix,
+        ymd,
+        viewModels;
+
+    util.forEachArray(range, function(date) {
+        ymd = dformat(date, 'YYYYMMDD');
+        matrix = ownMatrix[ymd];
+        viewModels = result[ymd] = common.createScheduleCollection();
+
+        if (matrix && matrix.length) {
+            viewModels.add.apply(viewModels, util.map(matrix, function(id) {
+                return ScheduleViewModel.create(ownSchedules[id]);
+            }));
+        }
+    });
+
+    return result;
+};
+
+Base.prototype.clearSchedules = function() {
+    this.dateMatrix = {};
+    this.schedules.clear();
+    /**
+     * for inner view when clear schedules
+     * @event Base#clearSchedules
+     * @type {Schedule}
+     */
+    this.fire('clearSchedules');
+};
+
+/**
+ * Set a theme.
+ * @param {themeConfig} theme - theme keys, styles
+ * @returns {Array.<string>} keys - error keys not predefined.
+ */
+Base.prototype.setTheme = function(theme) {
+    return this.theme.setStyles(theme);
+};
+
+/**
+ * Set calendar list
+ * @param {Array.<Calendar>} calendars - calendar list
+ */
+Base.prototype.setCalendars = function(calendars) {
+    this.calendars = calendars;
+};
+
+// mixin
+util.CustomEvents.mixin(Base);
+
+module.exports = Base;
+
+
+/***/ }),
+
+/***/ "./src/js/controller/viewMixin/core.js":
+/*!*********************************************!*\
+  !*** ./src/js/controller/viewMixin/core.js ***!
+  \*********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/**
+ * @fileoverview Core methods for schedule block placing
+ * @author NHN FE Development Lab <dl_javascript@nhn.com>
+ */
+
+
+var util = __webpack_require__(/*! tui-code-snippet */ "tui-code-snippet");
+var forEachArr = util.forEachArray,
+    aps = Array.prototype.slice;
+
+var datetime = __webpack_require__(/*! ../../common/datetime */ "./src/js/common/datetime.js");
+var TZDate = __webpack_require__(/*! ../../common/timezone */ "./src/js/common/timezone.js").Date;
+var Collection = __webpack_require__(/*! ../../common/collection */ "./src/js/common/collection.js");
+var ScheduleViewModel = __webpack_require__(/*! ../../model/viewModel/scheduleViewModel */ "./src/js/model/viewModel/scheduleViewModel.js");
+
+var Core = {
+    /**
+     * Calculate collision group.
+     * @param {array} viewModels List of viewmodels.
+     * @returns {array} Collision Group.
+     */
+    getCollisionGroup: function(viewModels) {
+        var collisionGroups = [],
+            foundPrevCollisionSchedule = false,
+            previousScheduleList;
+
+        if (!viewModels.length) {
+            return collisionGroups;
+        }
+
+        collisionGroups[0] = [util.stamp(viewModels[0].valueOf())];
+        forEachArr(viewModels.slice(1), function(schedule, index) {
+            foundPrevCollisionSchedule = false;
+            previousScheduleList = aps.apply(viewModels, [0, index + 1]).reverse();
+
+            forEachArr(previousScheduleList, function(previous) {
+                if (schedule.collidesWith(previous)) {
+                    // If overlapping previous schedules, find a Collision Group of overlapping schedules and add this schedules
+                    foundPrevCollisionSchedule = true;
+
+                    forEachArr(collisionGroups.slice(0).reverse(), function(group) {
+                        if (~util.inArray(util.stamp(previous.valueOf()), group)) {
+                            // If you find a previous schedule that overlaps, include it in the Collision Group to which it belongs.
+                            group.push(util.stamp(schedule.valueOf()));
+
+                            return false; // returning false can stop this loop
+                        }
+
+                        return true;
+                    });
+
+                    return false; // returning false can stop this loop
+                }
+
+                return true;
+            });
+
+            if (!foundPrevCollisionSchedule) {
+                // This schedule is a schedule that does not overlap with the previous schedule, so a new Collision Group is constructed.
+                collisionGroups.push([util.stamp(schedule.valueOf())]);
+            }
+        });
+
+        return collisionGroups;
+    },
+
+    /**
+     * Get row length by column index in 2d matrix.
+     * @param {array[]} arr2d Matrix
+     * @param {number} col Column index.
+     * @returns {number} Last row number in column.
+     */
+    getLastRowInColumn: function(arr2d, col) {
+        var row = arr2d.length;
+
+        while (row > 0) {
+            row -= 1;
+            if (!util.isUndefined(arr2d[row][col])) {
+                return row;
+            }
+        }
+
+        return false;
+    },
+
+    /**
+     * Calculate matrix for appointment block element placing.
+     * @param {Collection} collection model collection.
+     * @param {array[]} collisionGroups Collision groups for schedule set.
+     * @returns {array} matrices
+     */
+    getMatrices: function(collection, collisionGroups) {
+        var result = [],
+            getLastRowInColumn = Core.getLastRowInColumn;
+
+        forEachArr(collisionGroups, function(group) {
+            var matrix = [[]];
+
+            forEachArr(group, function(scheduleID) {
+                var schedule = collection.items[scheduleID],
+                    col = 0,
+                    found = false,
+                    nextRow,
+                    lastRowInColumn;
+
+                while (!found) {
+                    lastRowInColumn = getLastRowInColumn(matrix, col);
+
+                    if (lastRowInColumn === false) {
+                        matrix[0].push(schedule);
+                        found = true;
+                    } else if (!schedule.collidesWith(matrix[lastRowInColumn][col])) {
+                        nextRow = lastRowInColumn + 1;
+                        if (util.isUndefined(matrix[nextRow])) {
+                            matrix[nextRow] = [];
+                        }
+                        matrix[nextRow][col] = schedule;
+                        found = true;
+                    }
+
+                    col += 1;
+                }
+            });
+
+            result.push(matrix);
+        });
+
+        return result;
+    },
+
+    /**
+     * Filter that get schedule model in supplied date ranges.
+     * @param {Date} start - start date
+     * @param {Date} end - end date
+     * @returns {function} schedule filter function
+     */
+    getScheduleInDateRangeFilter: function(start, end) {
+        return function(model) {
+            var ownStarts = model.getStarts(),
+                ownEnds = model.getEnds();
+
+            // shorthand condition of
+            //
+            // (ownStarts >= start && ownEnds <= end) ||
+            // (ownStarts < start && ownEnds >= start) ||
+            // (ownEnds > end && ownStarts <= end)
+            return !(ownEnds < start || ownStarts > end);
+        };
+    },
+
+    /**
+     * Position each view model for placing into container
+     * @param {Date} start - start date to render
+     * @param {Date} end - end date to render
+     * @param {array} matrices - matrices from controller
+     * @param {function} [iteratee] - iteratee function invoke each view models
+     */
+    positionViewModels: function(start, end, matrices, iteratee) {
+        var ymdListToRender;
+
+        ymdListToRender = util.map(
+            datetime.range(start, end, datetime.MILLISECONDS_PER_DAY),
+            function(date) {
+                return datetime.format(date, 'YYYYMMDD');
+            }
+        );
+
+        forEachArr(matrices, function(matrix) {
+            forEachArr(matrix, function(column) {
+                forEachArr(column, function(viewModel, index) {
+                    var ymd, dateLength, startDate, endDate;
+
+                    if (!viewModel) {
+                        return;
+                    }
+
+                    startDate = viewModel.getStarts();
+                    endDate = viewModel.getEnds();
+                    dateLength = datetime.range(
+                        datetime.start(startDate),
+                        datetime.renderEnd(startDate, endDate),
+                        datetime.MILLISECONDS_PER_DAY
+                    ).length;
+
+                    ymd = datetime.format(startDate, 'YYYYMMDD');
+                    viewModel.top = index;
+                    viewModel.left = util.inArray(ymd, ymdListToRender);
+                    viewModel.width = dateLength;
+
+                    if (iteratee) {
+                        iteratee(viewModel);
+                    }
+                });
+            });
+        });
+    },
+
+    /**
+     * Limit start, end date each view model for render properly
+     * @param {TZDate} start - start date to render
+     * @param {TZDate} end - end date to render
+     * @param {Collection|ScheduleViewModel} viewModelColl - schedule view
+     *  model collection or ScheduleViewModel
+     * @returns {ScheduleViewModel} return view model when third parameter is
+     *  view model
+     */
+    limitRenderRange: function(start, end, viewModelColl) {
+        /**
+         * Limit render range for view models
+         * @param {ScheduleViewModel} viewModel - view model instance
+         * @returns {ScheduleViewModel} view model that limited render range
+         */
+        function limit(viewModel) {
+            if (viewModel.getStarts() < start) {
+                viewModel.exceedLeft = true;
+                viewModel.renderStarts = new TZDate(start);
+            }
+
+            if (viewModel.getEnds() > end) {
+                viewModel.exceedRight = true;
+                viewModel.renderEnds = new TZDate(end);
+            }
+
+            return viewModel;
+        }
+
+        if (viewModelColl.constructor === Collection) {
+            viewModelColl.each(limit);
+
+            return null;
+        }
+
+        return limit(viewModelColl);
+    },
+
+    /**
+     * Convert schedule model collection to view model collection.
+     * @param {Collection} modelColl - collection of schedule model
+     * @returns {Collection} collection of schedule view model
+     */
+    convertToViewModel: function(modelColl) {
+        var viewModelColl;
+
+        viewModelColl = new Collection(function(viewModel) {
+            return viewModel.cid();
+        });
+
+        modelColl.each(function(model) {
+            viewModelColl.add(ScheduleViewModel.create(model));
+        });
+
+        return viewModelColl;
+    }
+};
+
+module.exports = Core;
+
+
+/***/ }),
+
+/***/ "./src/js/controller/viewMixin/month.js":
+/*!**********************************************!*\
+  !*** ./src/js/controller/viewMixin/month.js ***!
+  \**********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/**
+ * @fileoverview Controller mixin for Month View
+ * @author NHN FE Development Lab <dl_javascript@nhn.com>
+ */
+
+
+var util = __webpack_require__(/*! tui-code-snippet */ "tui-code-snippet");
+var array = __webpack_require__(/*! ../../common/array */ "./src/js/common/array.js"),
+    datetime = __webpack_require__(/*! ../../common/datetime */ "./src/js/common/datetime.js"),
+    Collection = __webpack_require__(/*! ../../common/collection */ "./src/js/common/collection.js");
+var mmax = Math.max;
+
+var Month = {
+    /**
+     * Filter function for find time schedule
+     * @param {ScheduleViewModel} viewModel - schedule view model
+     * @returns {boolean} whether model is time schedule?
+     */
+    _onlyTimeFilter: function(viewModel) {
+        return !viewModel.model.isAllDay && !viewModel.hasMultiDates;
+    },
+
+    /**
+     * Filter function for find allday schedule
+     * @param {ScheduleViewModel} viewModel - schedule view model
+     * @returns {boolean} whether model is allday schedule?
+     */
+    _onlyAlldayFilter: function(viewModel) {
+        return viewModel.model.isAllDay || viewModel.hasMultiDates;
+    },
+
+    /**
+     * Weight top value +1 for month view render
+     * @param {ScheduleViewModel} viewModel - schedule view model
+     */
+    _weightTopValue: function(viewModel) {
+        viewModel.top = viewModel.top || 0;
+        viewModel.top += 1;
+    },
+
+    /**
+     * Adjust render range to render properly.
+     *
+     * Limit start, end for each allday schedules and expand start, end for
+     * each time schedules
+     * @this Base
+     * @param {TZDate} start - render start date
+     * @param {TZDate} end - render end date
+     * @param {Collection} vColl - view model collection
+     * property.
+     */
+    _adjustRenderRange: function(start, end, vColl) {
+        var ctrlCore = this.Core;
+
+        vColl.each(function(viewModel) {
+            if (viewModel.model.isAllDay || viewModel.hasMultiDates) {
+                ctrlCore.limitRenderRange(start, end, viewModel);
+            }
+        });
+    },
+
+    /**
+     * Get max top index value for allday schedules in specific date (YMD)
+     * @this Base
+     * @param {string} ymd - yyyymmdd formatted value
+     * @param {Collection} vAlldayColl - collection of allday schedules
+     * @returns {number} max top index value in date
+     */
+    _getAlldayMaxTopIndexAtYMD: function(ymd, vAlldayColl) {
+        var dateMatrix = this.dateMatrix,
+            topIndexesInDate = [];
+        util.forEach(dateMatrix[ymd], function(cid) {
+            vAlldayColl.doWhenHas(cid, function(viewModel) {
+                topIndexesInDate.push(viewModel.top);
+            });
+        });
+
+        if (topIndexesInDate.length > 0) {
+            return mmax.apply(null, topIndexesInDate);
+        }
+
+        return 0;
+    },
+
+    /**
+     * Adjust time view model's top index value
+     * @this Base
+     * @param {Collection} vColl - collection of schedules
+     */
+    _adjustTimeTopIndex: function(vColl) {
+        var ctrlMonth = this.Month;
+        var getAlldayMaxTopIndexAtYMD = ctrlMonth._getAlldayMaxTopIndexAtYMD;
+        var vAlldayColl = vColl.find(ctrlMonth._onlyAlldayFilter);
+        var sortedTimeSchedules = vColl.find(ctrlMonth._onlyTimeFilter).sort(array.compare.schedule.asc);
+        var maxIndexInYMD = {};
+
+        sortedTimeSchedules.forEach(function(timeViewModel) {
+            var scheduleYMD = datetime.format(timeViewModel.getStarts(), 'YYYYMMDD');
+            var alldayMaxTopInYMD = maxIndexInYMD[scheduleYMD];
+
+            if (util.isUndefined(alldayMaxTopInYMD)) {
+                alldayMaxTopInYMD = maxIndexInYMD[scheduleYMD] =
+                    getAlldayMaxTopIndexAtYMD(scheduleYMD, vAlldayColl);
+            }
+            maxIndexInYMD[scheduleYMD] = timeViewModel.top =
+                (alldayMaxTopInYMD + 1);
+        });
+    },
+
+    /**
+     * Adjust time view model's top index value
+     * @this Base
+     * @param {Collection} vColl - collection of schedules
+     */
+    _stackTimeFromTop: function(vColl) {
+        var ctrlMonth = this.Month;
+        var vAlldayColl = vColl.find(ctrlMonth._onlyAlldayFilter);
+        var sortedTimeSchedules = vColl.find(ctrlMonth._onlyTimeFilter).sort(array.compare.schedule.asc);
+        var indiceInYMD = {};
+        var dateMatrix = this.dateMatrix;
+
+        sortedTimeSchedules.forEach(function(timeViewModel) {
+            var scheduleYMD = datetime.format(timeViewModel.getStarts(), 'YYYYMMDD');
+            var topArrayInYMD = indiceInYMD[scheduleYMD];
+            var maxTopInYMD;
+            var i;
+
+            if (util.isUndefined(topArrayInYMD)) {
+                topArrayInYMD = indiceInYMD[scheduleYMD] = [];
+                util.forEach(dateMatrix[scheduleYMD], function(cid) {
+                    vAlldayColl.doWhenHas(cid, function(viewModel) {
+                        topArrayInYMD.push(viewModel.top);
+                    });
+                });
+            }
+
+            if (util.inArray(timeViewModel.top, topArrayInYMD) >= 0) {
+                maxTopInYMD = mmax.apply(null, topArrayInYMD) + 1;
+                for (i = 1; i <= maxTopInYMD; i += 1) {
+                    timeViewModel.top = i;
+                    if (util.inArray(timeViewModel.top, topArrayInYMD) < 0) {
+                        break;
+                    }
+                }
+            }
+            topArrayInYMD.push(timeViewModel.top);
+        });
+    },
+
+    /**
+     * Convert multi-date time schedule to all-day schedule
+     * @this Base
+     * @param {Collection} vColl - view model collection
+     * property.
+     */
+    _addMultiDatesInfo: function(vColl) {
+        vColl.each(function(viewModel) {
+            var model = viewModel.model;
+            var start = model.getStarts();
+            var end = model.getEnds();
+
+            viewModel.hasMultiDates = datetime.hasMultiDates(start, end);
+
+            if (!model.isAllDay && viewModel.hasMultiDates) {
+                viewModel.renderStarts = datetime.start(start);
+                viewModel.renderEnds = datetime.renderEnd(start, end);
+            }
+        });
+    },
+
+    /**
+     * Find schedule and get view model for specific month
+     * @this Base
+     * @param {TZDate} start - start date to find schedules
+     * @param {TZDate} end - end date to find schedules
+     * @param {function[]} [andFilters] - optional filters to applying search query
+     * @param {boolean} [alldayFirstMode=false] if true, time schedule is lower than all-day schedule. Or stack schedules from the top.
+     * @returns {object} view model data
+     */
+    findByDateRange: function(start, end, andFilters, alldayFirstMode) {
+        var ctrlCore = this.Core,
+            ctrlMonth = this.Month,
+            filter = ctrlCore.getScheduleInDateRangeFilter(start, end),
+            coll, vColl, vList,
+            collisionGroup,
+            matrices;
+
+        alldayFirstMode = alldayFirstMode || false;
+        andFilters = andFilters || [];
+        filter = Collection.and.apply(null, [filter].concat(andFilters));
+
+        coll = this.schedules.find(filter);
+        vColl = ctrlCore.convertToViewModel(coll);
+        ctrlMonth._addMultiDatesInfo(vColl);
+        ctrlMonth._adjustRenderRange(start, end, vColl);
+        vList = vColl.sort(array.compare.schedule.asc);
+
+        collisionGroup = ctrlCore.getCollisionGroup(vList);
+        matrices = ctrlCore.getMatrices(vColl, collisionGroup);
+        ctrlCore.positionViewModels(start, end, matrices, ctrlMonth._weightTopValue);
+        if (alldayFirstMode) {
+            ctrlMonth._adjustTimeTopIndex(vColl);
+        } else {
+            ctrlMonth._stackTimeFromTop(vColl);
+        }
+
+        return matrices;
+    }
+};
+
+module.exports = Month;
+
+
+/***/ }),
+
+/***/ "./src/js/controller/viewMixin/week.js":
+/*!*********************************************!*\
+  !*** ./src/js/controller/viewMixin/week.js ***!
+  \*********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/* eslint no-shadow: 0 */
+/**
+ * @fileoverview Controller mixin modules for day views.
+ * @author NHN FE Development Lab <dl_javascript@nhn.com>
+ */
+
+
+var util = __webpack_require__(/*! tui-code-snippet */ "tui-code-snippet");
+
+var Collection = __webpack_require__(/*! ../../common/collection */ "./src/js/common/collection.js");
+var array = __webpack_require__(/*! ../../common/array */ "./src/js/common/array.js");
+var datetime = __webpack_require__(/*! ../../common/datetime */ "./src/js/common/datetime.js");
+var TZDate = __webpack_require__(/*! ../../common/timezone */ "./src/js/common/timezone.js").Date;
+
+var SCHEDULE_MIN_DURATION = datetime.MILLISECONDS_SCHEDULE_MIN_DURATION;
+
+/**
+ * @mixin Base.Week
+ */
+var Week = {
+    /**********
+     * TIME GRID VIEW
+     **********/
+
+    /**
+     * Make array with start and end times on schedules.
+     * @this Base.Week
+     * @param {array[]} matrix - matrix from controller.
+     * @returns {array[]} starttime, endtime array (exclude first row's schedules)
+     */
+    generateTimeArrayInRow: function(matrix) {
+        var row,
+            col,
+            schedule,
+            start,
+            end,
+            map = [],
+            cursor = [],
+            maxColLen = Math.max.apply(null, util.map(matrix, function(col) {
+                return col.length;
+            }));
+
+        for (col = 1; col < maxColLen; col += 1) {
+            row = 0;
+            schedule = util.pick(matrix, row, col);
+
+            while (schedule) {
+                start = schedule.getStarts().getTime() - datetime.millisecondsFrom('minutes', schedule.valueOf().goingDuration);
+                end = schedule.getEnds().getTime() + datetime.millisecondsFrom('minutes', schedule.valueOf().comingDuration);
+
+                if (Math.abs(end - start) < SCHEDULE_MIN_DURATION) {
+                    end += SCHEDULE_MIN_DURATION;
+                }
+
+                cursor.push([start, end]);
+
+                row += 1;
+                schedule = util.pick(matrix, row, col);
+            }
+
+            map.push(cursor);
+            cursor = [];
+        }
+
+        return map;
+    },
+
+    /**
+     * Get collision information from list
+     * @this Base
+     * @param {array.<number[]>} arr - list to detecting collision. [[start, end], [start, end]]
+     * @param {number} start - schedule start time that want to detect collisions.
+     * @param {number} end - schedule end time that want to detect collisions.
+     * @returns {boolean} target has collide in supplied array?
+     */
+    hasCollide: function(arr, start, end) {
+        var startStart,
+            startEnd,
+            endStart,
+            endEnd,
+            getFunc = function(index) {
+                return function(block) {
+                    return block[index];
+                };
+            },
+            abs = Math.abs,
+            compare = array.compare.num.asc,
+            hasCollide;
+
+        if (!arr.length) {
+            return false;
+        }
+
+        startStart = abs(array.bsearch(arr, start, getFunc(0), compare));
+        startEnd = abs(array.bsearch(arr, start, getFunc(1), compare));
+        endStart = abs(array.bsearch(arr, end, getFunc(0), compare));
+        endEnd = abs(array.bsearch(arr, end, getFunc(1), compare));
+        hasCollide = !(startStart === startEnd && startEnd === endStart && endStart === endEnd);
+
+        return hasCollide;
+    },
+
+    /**
+     * Initialize values to viewmodels for detect real collision at rendering phase.
+     * @this Base
+     * @param {array[]} matrices - Matrix data.
+     */
+    getCollides: function(matrices) {
+        util.forEachArray(matrices, function(matrix) {
+            var binaryMap,
+                maxRowLength;
+
+            binaryMap = Week.generateTimeArrayInRow(matrix);
+            maxRowLength = Math.max.apply(null, util.map(matrix, function(row) {
+                return row.length;
+            }));
+
+            util.forEachArray(matrix, function(row) {
+                util.forEachArray(row, function(viewModel, col) {
+                    var startTime,
+                        endTime,
+                        hasCollide,
+                        i;
+
+                    if (!viewModel) {
+                        return;
+                    }
+
+                    startTime = viewModel.getStarts().getTime();
+                    endTime = viewModel.getEnds().getTime();
+
+                    if (Math.abs(endTime - startTime) < SCHEDULE_MIN_DURATION) {
+                        endTime += SCHEDULE_MIN_DURATION;
+                    }
+
+                    startTime -= datetime.millisecondsFrom('minutes', viewModel.valueOf().goingDuration);
+                    endTime += datetime.millisecondsFrom('minutes', viewModel.valueOf().comingDuration);
+
+                    endTime -= 1;
+
+                    for (i = (col + 1); i < maxRowLength; i += 1) {
+                        hasCollide = Week.hasCollide(binaryMap[i - 1], startTime, endTime);
+
+                        if (hasCollide) {
+                            viewModel.hasCollide = true;
+                            break;
+                        }
+
+                        viewModel.extraSpace += 1;
+                    }
+                });
+            });
+        });
+    },
+
+    /**
+     * create view model for time view part
+     * @this Base
+     * @param {Date} start - start date.
+     * @param {Date} end - end date.
+     * @param {Collection} time - view model collection.
+     * @param {number} hourStart - start hour to be shown
+     * @param {number} hourEnd - end hour to be shown
+     * @returns {object} view model for time part.
+     */
+    getViewModelForTimeView: function(start, end, time, hourStart, hourEnd) {
+        var self = this,
+            ymdSplitted = this.splitScheduleByDateRange(start, end, time),
+            result = {};
+
+        var _getViewModel = Week._makeGetViewModelFuncForTimeView(hourStart, hourEnd);
+
+        util.forEach(ymdSplitted, function(collection, ymd) {
+            var viewModels = _getViewModel(collection);
+            var collisionGroups, matrices;
+
+            collisionGroups = self.Core.getCollisionGroup(viewModels);
+            matrices = self.Core.getMatrices(collection, collisionGroups);
+            self.Week.getCollides(matrices);
+
+            result[ymd] = matrices;
+        });
+
+        return result;
+    },
+
+    /**
+     * make view model function depending on start and end hour
+     * if time view option has start or end hour condition
+     * it add filter
+     * @param {number} hourStart - start hour to be shown
+     * @param {number} hourEnd - end hour to be shown
+     * @returns {function} function
+     */
+    _makeGetViewModelFuncForTimeView: function(hourStart, hourEnd) {
+        if (hourStart === 0 && hourEnd === 24) {
+            return function(collection) {
+                return collection.sort(array.compare.schedule.asc);
+            };
+        }
+
+        return function(collection) {
+            return collection.find(Week._makeHourRangeFilter(hourStart, hourEnd))
+                .sort(array.compare.schedule.asc);
+        };
+    },
+
+    /**
+     * make a filter function that is not included range of start, end hour
+     * @param {number} hStart - hour start
+     * @param {number} hEnd - hour end
+     * @returns {function} - filtering function
+     */
+    _makeHourRangeFilter: function(hStart, hEnd) {
+        // eslint-disable-next-line complexity
+        return function(schedule) {
+            var ownHourStart = schedule.model.start;
+            var ownHourEnd = schedule.model.end;
+            var yyyy = ownHourStart.getFullYear();
+            var mm = ownHourStart.getMonth();
+            var dd = ownHourStart.getDate();
+
+            var hourStart = new TZDate(yyyy, mm, dd).setHours(hStart);
+            var hourEnd = new TZDate(yyyy, mm, dd).setHours(hEnd);
+
+            return (ownHourStart >= hourStart && ownHourStart < hourEnd) ||
+                (ownHourEnd > hourStart && ownHourEnd <= hourEnd) ||
+                (ownHourStart < hourStart && ownHourEnd > hourStart) ||
+                (ownHourEnd > hourEnd && ownHourStart < hourEnd);
+        };
+    },
+
+    /**********
+     * ALLDAY VIEW
+     **********/
+
+    /**
+     * Set hasMultiDates flag to true and set date ranges for rendering
+     * @this Base
+     * @param {Collection} vColl - view model collection
+     */
+    _addMultiDatesInfo: function(vColl) {
+        vColl.each(function(viewModel) {
+            var model = viewModel.model;
+            var start = model.getStarts();
+            var end = model.getEnds();
+
+            viewModel.hasMultiDates = true;
+            viewModel.renderStarts = datetime.start(start);
+            viewModel.renderEnds = datetime.renderEnd(start, end);
+        });
+    },
+
+    /**
+     * create view model for allday view part
+     * @this Base
+     * @param {Date} start start date.
+     * @param {Date} end end date.
+     * @param {Collection} viewModelColl - allday schedule viewModel viewModels.
+     * @returns {object} allday viewModel.
+     */
+    getViewModelForAlldayView: function(start, end, viewModelColl) {
+        var ctrlCore = this.Core,
+            ctrlWeek = this.Week,
+            viewModels,
+            collisionGroups,
+            matrices;
+
+        if (!viewModelColl || !viewModelColl.length) {
+            return [];
+        }
+
+        ctrlWeek._addMultiDatesInfo(viewModelColl);
+        ctrlCore.limitRenderRange(start, end, viewModelColl);
+
+        viewModels = viewModelColl.sort(array.compare.schedule.asc);
+        collisionGroups = ctrlCore.getCollisionGroup(viewModels);
+
+        matrices = ctrlCore.getMatrices(viewModelColl, collisionGroups);
+        ctrlCore.positionViewModels(start, end, matrices);
+
+        return matrices;
+    },
+
+    /**********
+     * READ
+     **********/
+
+    /**
+     * Populate schedules in date range.
+     * @this Base
+     * @param {Date} start start date.
+     * @param {Date} end end date.
+     * @param {Array.<object>} panels - schedule panels like 'milestone', 'task', 'allday', 'time'
+     * @param {function[]} [andFilters] - optional filters to applying search query
+     * @param {Object} options - week view options
+     * @returns {object} schedules grouped by dates.
+     */
+    findByDateRange: function(start, end, panels, andFilters, options) {
+        var ctrlCore = this.Core,
+            ctrlWeek = this.Week,
+            filter = ctrlCore.getScheduleInDateRangeFilter(start, end),
+            scheduleTypes = util.pluck(panels, 'name'),
+            hourStart = util.pick(options, 'hourStart'),
+            hourEnd = util.pick(options, 'hourEnd'),
+            modelColl,
+            group;
+
+        andFilters = andFilters || [];
+        filter = Collection.and.apply(null, [filter].concat(andFilters));
+
+        modelColl = this.schedules.find(filter);
+        modelColl = ctrlCore.convertToViewModel(modelColl);
+
+        group = modelColl.groupBy(scheduleTypes, this.groupFunc);
+        util.forEach(panels, function(panel) {
+            var name = panel.name;
+            if (panel.type === 'daygrid') {
+                group[name] = ctrlWeek.getViewModelForAlldayView(start, end, group[name]);
+            } else if (panel.type === 'timegrid') {
+                group[name] = ctrlWeek.getViewModelForTimeView(start, end, group[name], hourStart, hourEnd);
+            }
+        });
+
+        return group;
+    },
+
+    /* eslint max-nested-callbacks: 0 */
+    /**
+     * Make exceed date information
+     * @param {number} maxCount - exceed schedule count
+     * @param {Array} eventsInDateRange  - matrix of ScheduleViewModel
+     * @param {Array.<TZDate>} range - date range of one week
+     * @returns {object} exceedDate
+     */
+    getExceedDate: function(maxCount, eventsInDateRange, range) {
+        var exceedDate = {};
+
+        util.forEach(range, function(date) {
+            var ymd = datetime.format(date, 'YYYYMMDD');
+            exceedDate[ymd] = 0;
+        });
+
+        util.forEach(eventsInDateRange, function(matrix) {
+            util.forEach(matrix, function(column) {
+                util.forEach(column, function(viewModel) {
+                    var period;
+                    if (!viewModel || viewModel.top < maxCount) {
+                        return;
+                    }
+
+                    period = datetime.range(
+                        viewModel.getStarts(),
+                        viewModel.getEnds(),
+                        datetime.MILLISECONDS_PER_DAY
+                    );
+
+                    util.forEach(period, function(date) {
+                        var ymd = datetime.format(date, 'YYYYMMDD');
+                        exceedDate[ymd] += 1;
+                    });
+                });
+            });
+        });
+
+        return exceedDate;
+    },
+
+    /**
+     * Exclude overflow schedules from matrices
+     * @param {array} matrices - The matrices for schedule placing.
+     * @param {number} visibleScheduleCount - maximum visible count on panel
+     * @returns {array} - The matrices for schedule placing except overflowed schedules.
+     */
+    excludeExceedSchedules: function(matrices, visibleScheduleCount) {
+        return matrices.map(function(matrix) {
+            return matrix.map(function(row) {
+                if (row.length > visibleScheduleCount) {
+                    return row.filter(function(item) {
+                        return item.top < visibleScheduleCount;
+                    }, this);
+                }
+
+                return row;
+            }, this);
+        }, this);
+    }
+};
+
+module.exports = Week;
+
+
+/***/ }),
+
+/***/ "./src/js/factory/calendar.js":
+/*!************************************!*\
+  !*** ./src/js/factory/calendar.js ***!
+  \************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/**
+ * @fileoverview Factory module for control all other factory.
+ * @author NHN FE Development Lab <dl_javascript@nhn.com>
+ */
+
+
+var GA_TRACKING_ID = 'UA-129951699-1';
+
+var util = __webpack_require__(/*! tui-code-snippet */ "tui-code-snippet"),
+    Handlebars = __webpack_require__(/*! handlebars-template-loader/runtime */ "./node_modules/handlebars-template-loader/runtime/index.js");
+var dw = __webpack_require__(/*! ../common/dw */ "./src/js/common/dw.js"),
+    datetime = __webpack_require__(/*! ../common/datetime */ "./src/js/common/datetime.js"),
+    Layout = __webpack_require__(/*! ../view/layout */ "./src/js/view/layout.js"),
+    Drag = __webpack_require__(/*! ../handler/drag */ "./src/js/handler/drag.js"),
+    controllerFactory = __webpack_require__(/*! ./controller */ "./src/js/factory/controller.js"),
+    weekViewFactory = __webpack_require__(/*! ./weekView */ "./src/js/factory/weekView.js"),
+    monthViewFactory = __webpack_require__(/*! ./monthView */ "./src/js/factory/monthView.js"),
+    TZDate = __webpack_require__(/*! ../common/timezone */ "./src/js/common/timezone.js").Date,
+    config = __webpack_require__(/*! ../config */ "./src/js/config.js"),
+    timezone = __webpack_require__(/*! ../common/timezone */ "./src/js/common/timezone.js"),
+    reqAnimFrame = __webpack_require__(/*! ../common/reqAnimFrame */ "./src/js/common/reqAnimFrame.js");
+
+var mmin = Math.min;
+
+/**
+ * Schedule information
+ * @typedef {object} Schedule
+ * @property {string} [id] - The unique schedule id depends on calendar id
+ * @property {string} calendarId - The unique calendar id
+ * @property {string} [title] - The schedule title
+ * @property {string} [body] - The schedule body text which is text/plain
+ * @property {string|TZDate} [start] - The start time. It's 'string' for input. It's 'TZDate' for output like event handler.
+ * @property {string|TZDate} [end] - The end time. It's 'string' for input. It's 'TZDate' for output like event handler.
+ * @property {number} [goingDuration] - The travel time: Going duration minutes
+ * @property {number} [comingDuration] - The travel time: Coming duration minutes
+ * @property {boolean} [isAllDay] - The all day schedule
+ * @property {string} [category] - The schedule type('milestone', 'task', allday', 'time')
+ * @property {string} [dueDateClass] - The task schedule type string
+ *                                   (any string value is ok and mandatory if category is 'task')
+ * @property {string} [location] - The location
+ * @property {Array.<string>} [attendees] - The attendees
+ * @property {string} [recurrenceRule] - The recurrence rule
+ * @property {boolean} [isPending] - The in progress flag to do something like network job(The schedule will be transparent.)
+ * @property {boolean} [isFocused] - The focused schedule flag
+ * @property {boolean} [isVisible] - The schedule visibility flag
+ * @property {boolean} [isReadOnly] - The schedule read-only flag
+ * @property {boolean} [isPrivate] - The private schedule
+ * @property {string} [color] - The schedule text color
+ * @property {string} [bgColor] - The schedule background color
+ * @property {string} [dragBgColor] - The schedule background color when dragging it
+ * @property {string} [borderColor] - The schedule left border color
+ * @property {string} [customStyle] - The schedule's custom css class
+ * @property {any} [raw] - The user data
+ * @property {string} [state] - The schedule's state ('busy', 'free')
+ */
+
+/**
+ * Template functions to support customer renderer
+ * @typedef {object} Template
+ * @property {function} [milestoneTitle] - The milestone title(at left column) template function
+ * @property {function} [milestone] - The milestone template function
+ * @property {function} [taskTitle] - The task title(at left column) template function
+ * @property {function} [task] - The task template function
+ * @property {function} [alldayTitle] - The allday title(at left column) template function
+ * @property {function} [allday] - The allday template function
+ * @property {function} [time] - The time template function
+ * @property {function} [goingDuration] - The travel time(going duration) template function
+ * @property {function} [comingDuration] - The travel time(coming duration) template function
+ * @property {function} [monthMoreTitleDate] - The month more layer title template function
+ * @property {function} [monthMoreClose] - The month more layer close button template function
+ * @property {function} [monthGridHeader] - The month grid header(date, decorator, title) template function
+ * @property {function} [monthGridHeaderExceed] - The month grid header(exceed schedule count) template function
+ * @property {function} [monthGridFooter] - The month grid footer(date, decorator, title) template function
+ * @property {function} [monthGridFooterExceed] - The month grid footer(exceed schedule count) template function
+ * @property {function} [monthDayname] - The monthly dayname template function
+ * @property {function} [weekDayname] - The weekly dayname template function
+ * @property {function} [weekGridFooterExceed] - The week/day grid footer(exceed schedule count) template function
+ * @property {function} [dayGridTitle] - The week/day grid title template function(e.g. milestone, task, allday)
+ * @property {function} [schedule] - The week/day schedule template function(When the schedule category attribute is milestone, task, or all day)
+ * @property {function} [collapseBtnTitle] - The week/day (exceed schedule more view) collapse button title template function
+ * @property {function} [timezoneDisplayLabel] - The timezone display label template function in time grid
+ * @property {function} [timegridDisplayPrimayTime] - Deprecated: use 'timegridDisplayPrimaryTime'
+ * @property {function} [timegridDisplayPrimaryTime] - The display label template function of primary timezone in time grid
+ * @property {function} [timegridDisplayTime] - The display time template function in time grid
+ * @property {function} [timegridCurrentTime] - The current time template function in time grid
+ * @property {function} [popupIsAllDay] - The all day checkbox label text template function in the default creation popup
+ * @property {function} [popupStateFree] - The free option template function in the state select box of the default creation popup
+ * @property {function} [popupStateBusy] - The busy option template function in the state select box of the default creation popup
+ * @property {function} [titlePlaceholder] - The title input placeholder text template function in the default creation popup
+ * @property {function} [locationPlaceholder] - The location input placeholder text template function in the default creation popup
+ * @property {function} [startDatePlaceholder] - The start date input placeholder text template function in the default creation popup
+ * @property {function} [endDatePlaceholder] - The end date input placeholder text template function in the default creation popup
+ * @property {function} [popupSave] - The 'Save' button text template function in the default creation popup
+ * @property {function} [popupUpdate] - The 'Update' button text template function in the default creation popup when in edit mode
+ * @property {function} [popupDetailDate] - The schedule date information's template function on the default detail popup
+ * @property {function} [popupDetailLocation] - The schedule location text information's template function on the default detail popup
+ * @property {function} [popupDetailUser] - The schedule user text information's template function on the default detail popup
+ * @property {function} [popupDetailState] - The schedule state(busy or free) text information's template function on the default detail popup
+ * @property {function} [popupDetailRepeat] - The schedule repeat information's template function on the default detail popup
+ * @property {function} [popupDetailBody] - The schedule body text information's template function on the default detail popup
+ * @property {function} [popupEdit] - The 'Edit' button text template function on the default detail popup
+ * @property {function} [popupDelete] - The 'Delete' button text template function on the default detail popup
+ * @example
+ * var calendar = new tui.Calendar(document.getElementById('calendar'), {
+ *     ...
+ *     template: {
+ *         milestone: function(schedule) {
+ *             return '<span class="calendar-font-icon ic-milestone-b"></span> <span style="background-color: ' + schedule.bgColor + '">' + schedule.title + '</span>';
+ *         },
+ *         milestoneTitle: function() {
+ *             return '<span class="tui-full-calendar-left-content">MILESTONE</span>';
+ *         },
+ *         task: function(schedule) {
+ *             return '#' + schedule.title;
+ *         },
+ *         taskTitle: function() {
+ *             return '<span class="tui-full-calendar-left-content">TASK</span>';
+ *         },
+ *         allday: function(schedule) {
+ *             return getTimeTemplate(schedule, true);
+ *         },
+ *         alldayTitle: function() {
+ *             return '<span class="tui-full-calendar-left-content">ALL DAY</span>';
+ *         },
+ *         time: function(schedule) {
+ *             return '<strong>' + moment(schedule.start.getTime()).format('HH:mm') + '</strong> ' + schedule.title;
+ *         },
+ *         goingDuration: function(schedule) {
+ *             return '<span class="calendar-icon ic-travel-time"></span>' + schedule.goingDuration + 'min.';
+ *         },
+ *         comingDuration: function(schedule) {
+ *             return '<span class="calendar-icon ic-travel-time"></span>' + schedule.comingDuration + 'min.';
+ *         },
+ *         monthMoreTitleDate: function(date, dayname) {
+ *             var day = date.split('.')[2];
+ *
+ *             return '<span class="tui-full-calendar-month-more-title-day">' + day + '</span> <span class="tui-full-calendar-month-more-title-day-label">' + dayname + '</span>';
+ *         },
+ *         monthMoreClose: function() {
+ *             return '<span class="tui-full-calendar-icon tui-full-calendar-ic-close"></span>';
+ *         },
+ *         monthGridHeader: function(dayModel) {
+ *             var date = parseInt(dayModel.date.split('-')[2], 10);
+ *             var classNames = ['tui-full-calendar-weekday-grid-date '];
+ *
+ *             if (dayModel.isToday) {
+ *                 classNames.push('tui-full-calendar-weekday-grid-date-decorator');
+ *             }
+ *
+ *             return '<span class="' + classNames.join(' ') + '">' + date + '</span>';
+ *         },
+ *         monthGridHeaderExceed: function(hiddenSchedules) {
+ *             return '<span class="weekday-grid-more-schedules">+' + hiddenSchedules + '</span>';
+ *         },
+ *         monthGridFooter: function() {
+ *             return '';
+ *         },
+ *         monthGridFooterExceed: function(hiddenSchedules) {
+ *             return '';
+ *         },
+ *         monthDayname: function(model) {
+ *             return (model.label).toString().toLocaleUpperCase();
+ *         },
+ *         weekDayname: function(model) {
+ *             return '<span class="tui-full-calendar-dayname-date">' + model.date + '</span>&nbsp;&nbsp;<span class="tui-full-calendar-dayname-name">' + model.dayName + '</span>';
+ *         },
+ *         weekGridFooterExceed: function(hiddenSchedules) {
+ *             return '+' + hiddenSchedules;
+ *         },
+ *         dayGridTitle: function(viewName) {
+ *
+ *             // use another functions instead of 'dayGridTitle'
+ *             // milestoneTitle: function() {...}
+ *             // taskTitle: function() {...}
+ *             // alldayTitle: function() {...}
+ *
+ *             var title = '';
+ *             switch(viewName) {
+ *                 case 'milestone':
+ *                     title = '<span class="tui-full-calendar-left-content">MILESTONE</span>';
+ *                     break;
+ *                 case 'task':
+ *                     title = '<span class="tui-full-calendar-left-content">TASK</span>';
+ *                     break;
+ *                 case 'allday':
+ *                     title = '<span class="tui-full-calendar-left-content">ALL DAY</span>';
+ *                     break;
+ *             }
+ *
+ *             return title;
+ *         },
+ *         schedule: function(schedule) {
+ *
+ *             // use another functions instead of 'schedule'
+ *             // milestone: function() {...}
+ *             // task: function() {...}
+ *             // allday: function() {...}
+ *
+ *             var tpl;
+ *
+ *             switch(category) {
+ *                 case 'milestone':
+ *                     tpl = '<span class="calendar-font-icon ic-milestone-b"></span> <span style="background-color: ' + schedule.bgColor + '">' + schedule.title + '</span>';
+ *                     break;
+ *                 case 'task':
+ *                     tpl = '#' + schedule.title;
+ *                     break;
+ *                 case 'allday':
+ *                     tpl = getTimeTemplate(schedule, true);
+ *                     break;
+ *             }
+ *
+ *             return tpl;
+ *         },
+ *         collapseBtnTitle: function() {
+ *             return '<span class="tui-full-calendar-icon tui-full-calendar-ic-arrow-solid-top"></span>';
+ *         },
+ *         timezoneDisplayLabel: function(timezoneOffset, displayLabel) {
+ *             var gmt, hour, minutes;
+ *
+ *             if (!displayLabel) {
+ *                 gmt = timezoneOffset < 0 ? '-' : '+';
+ *                 hour = Math.abs(parseInt(timezoneOffset / 60, 10));
+ *                 minutes = Math.abs(timezoneOffset % 60);
+ *                 displayLabel = gmt + getPadStart(hour) + ':' + getPadStart(minutes);
+ *             }
+ *
+ *             return displayLabel;
+ *         },
+ *         timegridDisplayPrimayTime: function(time) {
+ *             // will be deprecated. use 'timegridDisplayPrimaryTime'
+ *             var meridiem = 'am';
+ *             var hour = time.hour;
+ *
+ *             if (time.hour > 12) {
+ *                 meridiem = 'pm';
+ *                 hour = time.hour - 12;
+ *             }
+ *
+ *             return hour + ' ' + meridiem;
+ *         },
+ *         timegridDisplayPrimaryTime: function(time) {
+ *             var meridiem = 'am';
+ *             var hour = time.hour;
+ *
+ *             if (time.hour > 12) {
+ *                 meridiem = 'pm';
+ *                 hour = time.hour - 12;
+ *             }
+ *
+ *             return hour + ' ' + meridiem;
+ *         },
+ *         timegridDisplayTime: function(time) {
+ *             return getPadStart(time.hour) + ':' + getPadStart(time.hour);
+ *         },
+ *         timegridCurrentTime: function(timezone) {
+ *             var templates = [];
+ *
+ *             if (timezone.dateDifference) {
+ *                 templates.push('[' + timezone.dateDifferenceSign + timezone.dateDifference + ']<br>');
+ *             }
+ *
+ *             templates.push(moment(timezone.hourmarker).format('HH:mm a'));
+ *
+ *             return templates.join('');
+ *         },
+ *         popupIsAllDay: function() {
+ *             return 'All Day';
+ *         },
+ *         popupStateFree: function() {
+ *             return 'Free';
+ *         },
+ *         popupStateBusy: function() {
+ *             return 'Busy';
+ *         },
+ *         titlePlaceholder: function() {
+ *             return 'Subject';
+ *         },
+ *         locationPlaceholder: function() {
+ *             return 'Location';
+ *         },
+ *         startDatePlaceholder: function() {
+ *             return 'Start date';
+ *         },
+ *         endDatePlaceholder: function() {
+ *             return 'End date';
+ *         },
+ *         popupSave: function() {
+ *             return 'Save';
+ *         },
+ *         popupUpdate: function() {
+ *             return 'Update';
+ *         },
+ *         popupDetailDate: function(isAllDay, start, end) {
+ *             var isSameDate = moment(start).isSame(end);
+ *             var endFormat = (isSameDate ? '' : 'YYYY.MM.DD ') + 'hh:mm a';
+ *
+ *             if (isAllDay) {
+ *                 return moment(start).format('YYYY.MM.DD') + (isSameDate ? '' : ' - ' + moment(end).format('YYYY.MM.DD'));
+ *             }
+ *
+ *             return (moment(start).format('YYYY.MM.DD hh:mm a') + ' - ' + moment(end).format(endFormat));
+ *         },
+ *         popupDetailLocation: function(schedule) {
+ *             return 'Location : ' + schedule.location;
+ *         },
+ *         popupDetailUser: function(schedule) {
+ *             return 'User : ' + (schedule.attendees || []).join(', ');
+ *         },
+ *         popupDetailState: function(schedule) {
+ *             return 'State : ' + schedule.state || 'Busy';
+ *         },
+ *         popupDetailRepeat: function(schedule) {
+ *             return 'Repeat : ' + schedule.recurrenceRule;
+ *         },
+ *         popupDetailBody: function(schedule) {
+ *             return 'Body : ' + schedule.body;
+ *         },
+ *         popupEdit: function() {
+ *             return 'Edit';
+ *         },
+ *         popupDelete: function() {
+ *             return 'Delete';
+ *         }
+ *     }
+ * }
+ */
+
+/**
+ * Options for daily, weekly view.
+ * @typedef {object} WeekOptions
+ * @property {number} [startDayOfWeek=0] - The start day of week,
+ * @property {Array.<string>} [daynames] - The day names in weekly and daily. Default values are ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat']
+ * @property {boolean} [narrowWeekend=false] - Make weekend column narrow(1/2 width)
+ * @property {boolean} [workweek=false] - Show only 5 days except for weekend
+ * @property {boolean} [showTimezoneCollapseButton=false] - Show a collapse button to close multiple timezones
+ * @property {boolean} [timezonesCollapsed=false] - An initial multiple timezones collapsed state
+ * @property {number} [hourStart=0] - Can limit of render hour start.
+ * @property {number} [hourEnd=24] - Can limit of render hour end.
+ */
+
+/**
+ * Options for monthly view.
+ * @typedef {object} MonthOptions
+ * @property {Array.<string>} [daynames] - The day names in monthly. Default values are ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat']
+ * @property {number} [startDayOfWeek=0] - The start day of week
+ * @property {boolean} [narrowWeekend=false] - Make weekend column narrow(1/2 width)
+ * @property {number} [visibleWeeksCount=6] - The visible week count in monthly(0 or null are same with 6)
+ * @property {boolean} [isAlways6Week=true] - Always show 6 weeks. If false, show 5 weeks or 6 weeks based on the month.
+ * @property {boolean} [workweek=false] - Show only 5 days except for weekend
+ * @property {number} [visibleScheduleCount] - The visible schedule count in monthly grid
+ * @property {object} [moreLayerSize] - The more layer size
+ * @property {object} [moreLayerSize.width=null] - The css width value(px, 'auto').
+*                                                  The default value 'null' is to fit a grid cell.
+ * @property {object} [moreLayerSize.height=null] - The css height value(px, 'auto').
+*                                                   The default value 'null' is to fit a grid cell.
+ * @property {object} [grid] - The grid's header and footer information
+ *  @property {object} [grid.header] - The grid's header informatioin
+ *   @property {number} [grid.header.height=34] - The grid's header height
+ *  @property {object} [grid.footer] - The grid's footer informatioin
+ *   @property {number} [grid.footer.height=34] - The grid's footer height
+ * @property {function} [scheduleFilter=null] - The filter schedules on month view. A parameter is {Schedule} object.
+ */
+
+/**
+ * @typedef {object} CalendarColor
+ * @property {string} [color] - The calendar color
+ * @property {string} [bgColor] - The calendar background color
+ * @property {string} [borderColor] - The calendar left border color
+ * @property {string} [dragBgColor] - The Background color displayed when you drag a calendar's schedule
+ */
+
+/**
+ * @typedef {object} Timezone
+ * @property {number} [timezoneOffset] - The minutes for your timezone offset. If null, use the browser's timezone. Refer to Date.prototype.getTimezoneOffset()
+ * @property {string} [displayLabel] -  The display label of your timezone at weekly/daily view(e.g. 'GMT+09:00')
+ * @property {string} [tooltip] -  The tooltip(e.g. 'Seoul')
+ * @example
+ * var cal = new Calendar('#calendar', {
+ *  timezones: [{
+ *      timezoneOffset: 540,
+ *      displayLabel: 'GMT+09:00',
+ *      tooltip: 'Seoul'
+ *  }, {
+ *      timezoneOffset: -420,
+ *      displayLabel: 'GMT-08:00',
+ *      tooltip: 'Los Angeles'
+ *  }]
+ * });
+ */
+
+/**
+ * @typedef {object} CalendarProps
+ * @property {string|number} id - The calendar id
+ * @property {string} name - The calendar name
+ * @property {string} color - The text color when schedule is displayed
+ * @property {string} bgColor - The background color schedule is displayed
+ * @property {string} borderColor - The color of left border or bullet point when schedule is displayed
+ * @property {string} dragBgColor - The background color when schedule dragging
+ * @example
+ * var cal = new Calendar('#calendar', {
+ *   ...
+ *   calendars: [
+ *     {
+ *       id: '1',
+ *       name: 'My Calendar',
+ *       color: '#ffffff',
+ *       bgColor: '#9e5fff',
+ *       dragBgColor: '#9e5fff',
+ *       borderColor: '#9e5fff'
+ *     },
+ *     {
+ *       id: '2',
+ *       name: 'Company',
+ *       color: '#00a9ff',
+ *       bgColor: '#00a9ff',
+ *       dragBgColor: '#00a9ff',
+ *       borderColor: '#00a9ff'
+ *     },
+ *   ]
+ * });
+ */
+
+/**
+ * @typedef {object} Options - Calendar option object
+ * @property {string} [defaultView='week'] - Default view of calendar. The default value is 'week'.
+ * @property {boolean|Array.<string>} [taskView=true] - Show the milestone and task in weekly, daily view. The default value is true. If the value is array, it can be &#91;'milestone', 'task'&#93;.
+ * @property {boolean|Array.<string>} [scheduleView=true] - Show the all day and time grid in weekly, daily view. The default value is false. If the value is array, it can be &#91;'allday', 'time'&#93;.
+ * @property {themeConfig} [theme=themeConfig] - {@link themeConfig} for custom style.
+ * @property {Template} [template={}] - {@link Template} for further information
+ * @property {WeekOptions} [week={}] - {@link WeekOptions} for week view
+ * @property {MonthOptions} [month={}] - {@link MonthOptions} for month view
+ * @property {Array.<CalendarProps>} [calendars=[]] - {@link CalendarProps} List that can be used to add new schedule. The default value is [].
+ * @property {boolean} [useCreationPopup=false] - Whether use default creation popup or not. The default value is false.
+ * @property {boolean} [useDetailPopup=false] - Whether use default detail popup or not. The default value is false.
+ * @property {Array.<Timezone>} [timezones] - {@link Timezone} array.
+ *  The first Timezone element is primary and can override Calendar#setTimezoneOffset function
+ *  The rest timezone elements are shown in left timegrid of weekly/daily view
+ * @property {boolean} [disableDblClick=false] - Disable double click to create a schedule. The default value is false.
+ * @property {boolean} [disableClick=false] - Disable click to create a schedule. The default value is false.
+ * @property {boolean} [isReadOnly=false] - {@link Calendar} is read-only mode and a user can't create and modify any schedule. The default value is false.
+ * @property {boolean} [usageStatistics=true] - Let us know the hostname. If you don't want to send the hostname, please set to false.
+ */
+
+/**
+ * {@link https://nhn.github.io/tui.code-snippet/latest/CustomEvents CustomEvents} document at {@link https://github.com/nhn/tui.code-snippet tui-code-snippet}
+ * @typedef {class} CustomEvents
+ */
+
+/**
+ * @typedef {object} TimeCreationGuide - Time creation guide instance to present selected time period
+ * @property {HTMLElement} guideElement - Guide element
+ * @property {Object.<string, HTMLElement>} guideElements - Map by key. It can be used in monthly view
+ * @property {function} clearGuideElement - Hide the creation guide
+ * @example
+ * calendar.on('beforeCreateSchedule', function(event) {
+ *     var guide = event.guide;
+ *     // Use guideEl$'s left, top to locate your schedule creation popup
+ *     var guideEl$ = guide.guideElement ?
+ *          guide.guideElement : guide.guideElements[Object.keys(guide.guideElements)[0]];
+ *
+ *     // After that call this to hide the creation guide
+ *     guide.clearGuideElement();
+ * });
+ */
+
+/**
+ * Calendar class
+ * @constructor
+ * @mixes CustomEvents
+ * @param {HTMLElement|string} container - The container element or selector id
+ * @param {Options} options - The calendar {@link Options} object
+ * @example
+ * var calendar = new tui.Calendar(document.getElementById('calendar'), {
+ *     defaultView: 'week',
+ *     taskView: true,    // Can be also ['milestone', 'task']
+ *     scheduleView: true,  // Can be also ['allday', 'time']
+ *     template: {
+ *         milestone: function(schedule) {
+ *             return '<span style="color:red;"><i class="fa fa-flag"></i> ' + schedule.title + '</span>';
+ *         },
+ *         milestoneTitle: function() {
+ *             return 'Milestone';
+ *         },
+ *         task: function(schedule) {
+ *             return '&nbsp;&nbsp;#' + schedule.title;
+ *         },
+ *         taskTitle: function() {
+ *             return '<label><input type="checkbox" />Task</label>';
+ *         },
+ *         allday: function(schedule) {
+ *             return schedule.title + ' <i class="fa fa-refresh"></i>';
+ *         },
+ *         alldayTitle: function() {
+ *             return 'All Day';
+ *         },
+ *         time: function(schedule) {
+ *             return schedule.title + ' <i class="fa fa-refresh"></i>' + schedule.start;
+ *         }
+ *     },
+ *     month: {
+ *         daynames: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],
+ *         startDayOfWeek: 0,
+ *         narrowWeekend: true
+ *     },
+ *     week: {
+ *         daynames: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],
+ *         startDayOfWeek: 0,
+ *         narrowWeekend: true
+ *     }
+ * });
+ */
+function Calendar(container, options) {
+    options = util.extend({
+        usageStatistics: true
+    }, options);
+
+    if (options.usageStatistics === true && util.sendHostname) {
+        util.sendHostname('calendar', GA_TRACKING_ID);
+    }
+
+    if (util.isString(container)) {
+        container = document.querySelector(container);
+    }
+
+    /**
+     * Calendar color map
+     * @type {object}
+     * @private
+     */
+    this._calendarColor = {};
+
+    /**
+     * Current rendered date
+     * @type {TZDate}
+     * @private
+     */
+    this._renderDate = datetime.start();
+
+    /**
+     * start and end date of weekly, monthly
+     * @type {object}
+     * @private
+     */
+    this._renderRange = {
+        start: null,
+        end: null
+    };
+
+    /**
+     * base controller
+     * @type {Base}
+     * @private
+     */
+    this._controller = _createController(options);
+    this._controller.setCalendars(options.calendars);
+
+    /**
+     * layout view (layout manager)
+     * @type {Layout}
+     * @private
+     */
+    this._layout = new Layout(container, this._controller.theme);
+
+    /**
+     * global drag handler
+     * @type {Drag}
+     * @private
+     */
+    this._dragHandler = new Drag({distance: 10}, this._layout.container);
+
+    /**
+     * current rendered view name. ('day', 'week', 'month')
+     * @type {string}
+     * @default 'week'
+     * @private
+     */
+    this._viewName = options.defaultView || 'week';
+
+    /**
+     * Refresh method. it can be ref different functions for each view modes.
+     * @type {function}
+     * @private
+     */
+    this._refreshMethod = null;
+
+    /**
+     * Scroll to now. It can be called for 'week', 'day' view modes.
+     * @type {function}
+     * @private
+     */
+    this._scrollToNowMethod = null;
+
+    /**
+     * It's true if Calendar.prototype.scrollToNow() is called.
+     * @type {boolean}
+     * @private
+     */
+    this._requestScrollToNow = false;
+
+    /**
+     * Open schedule creation popup
+     * @type {function}
+     * @private
+     */
+    this._openCreationPopup = null;
+
+    /**
+     * Hide the more view
+     * @type {function}
+     * @private
+     */
+    this._hideMoreView = null;
+
+    /**
+     * Unique id for requestAnimFrame()
+     * @type {number}
+     * @private
+     */
+    this._requestRender = 0;
+
+    /**
+     * calendar options
+     * @type {Options}
+     * @private
+     */
+    this._options = {};
+
+    this._initialize(options);
+}
+
+/**
+ * destroy calendar instance.
+ */
+Calendar.prototype.destroy = function() {
+    this._dragHandler.destroy();
+    this._controller.off();
+    this._layout.clear();
+    this._layout.destroy();
+
+    util.forEach(this._options.template, function(func, name) {
+        if (func) {
+            Handlebars.unregisterHelper(name + '-tmpl');
+        }
+    });
+
+    this._options = this._renderDate = this._controller =
+        this._layout = this._dragHandler = this._viewName =
+        this._refreshMethod = this._scrollToNowMethod = null;
+};
+
+/**
+ * Initialize calendar
+ * @param {Options} options - calendar options
+ * @private
+ */
+Calendar.prototype._initialize = function(options) {
+    var controller = this._controller,
+        viewName = this._viewName;
+
+    this._options = util.extend({
+        defaultView: viewName,
+        taskView: true,
+        scheduleView: true,
+        template: util.extend({
+            allday: null,
+            time: null
+        }, util.pick(options, 'template') || {}),
+        week: util.extend({}, util.pick(options, 'week') || {}),
+        month: util.extend({}, util.pick(options, 'month') || {}),
+        calendars: [],
+        useCreationPopup: false,
+        useDetailPopup: false,
+        timezones: options.timezones || [],
+        disableDblClick: false,
+        disableClick: false,
+        isReadOnly: false
+    }, options);
+
+    this._options.week = util.extend({
+        startDayOfWeek: 0,
+        workweek: false
+    }, util.pick(this._options, 'week') || {});
+
+    this._options.month = util.extend({
+        startDayOfWeek: 0,
+        workweek: false,
+        scheduleFilter: function(schedule) {
+            return Boolean(schedule.isVisible) &&
+              (schedule.category === 'allday' || schedule.category === 'time');
+        }
+    }, util.pick(options, 'month') || {});
+
+    if (this._options.isReadOnly) {
+        this._options.useCreationPopup = false;
+    }
+
+    this._layout.controller = controller;
+
+    this._setAdditionalInternalOptions(options);
+
+    this.changeView(viewName, true);
+};
+
+/**
+ * Set additional internal options
+ * 1. Register to the template handlebar
+ * 2. Update the calendar list and set the color of the calendar.
+ * 3. Change the primary timezone offset of the timezones.
+ * @param {Options} options - calendar options
+ * @private
+ */
+Calendar.prototype._setAdditionalInternalOptions = function(options) {
+    var timezones = options.timezones || [];
+
+    util.forEach(options.template, function(func, name) {
+        if (func) {
+            Handlebars.registerHelper(name + '-tmpl', func);
+        }
+    });
+
+    util.forEach(options.calendars || [], function(calendar) {
+        this.setCalendarColor(calendar.id, calendar, true);
+    }, this);
+
+    if (timezones.length) {
+        timezone.setOffsetByTimezoneOption(timezones[0].timezoneOffset);
+    }
+};
+
+/**********
+ * CRUD Methods
+ **********/
+
+/**
+ * Create schedules and render calendar.
+ * @param {Array.<Schedule>} schedules - {@link Schedule} data list
+ * @param {boolean} [silent=false] - no auto render after creation when set true
+ * @example
+ * calendar.createSchedules([
+ *     {
+ *         id: '1',
+ *         calendarId: '1',
+ *         title: 'my schedule',
+ *         category: 'time',
+ *         dueDateClass: '',
+ *         start: '2018-01-18T22:30:00+09:00',
+ *         end: '2018-01-19T02:30:00+09:00'
+ *     },
+ *     {
+ *         id: '2',
+ *         calendarId: '1',
+ *         title: 'second schedule',
+ *         category: 'time',
+ *         dueDateClass: '',
+ *         start: '2018-01-18T17:30:00+09:00',
+ *         end: '2018-01-19T17:31:00+09:00'
+ *     }
+ * ]);
+ */
+Calendar.prototype.createSchedules = function(schedules, silent) {
+    util.forEach(schedules, function(obj) {
+        this._setScheduleColor(obj.calendarId, obj);
+    }, this);
+
+    this._controller.createSchedules(schedules, silent);
+
+    if (!silent) {
+        this.render();
+    }
+};
+
+/**
+ * Get a {@link Schedule} object by schedule id and calendar id.
+ * @param {string} scheduleId - ID of schedule
+ * @param {string} calendarId - calendarId of the schedule
+ * @returns {Schedule} schedule object
+ * @example
+ * var schedule = calendar.getSchedule(scheduleId, calendarId);
+ * console.log(schedule.title);
+ */
+Calendar.prototype.getSchedule = function(scheduleId, calendarId) {
+    return this._controller.schedules.single(function(model) {
+        return model.id === scheduleId && model.calendarId === calendarId;
+    });
+};
+
+/**
+ * Update the schedule
+ * @param {string} scheduleId - ID of the original schedule to update
+ * @param {string} calendarId - The calendarId of the original schedule to update
+ * @param {object} changes - The {@link Schedule} properties and values with changes to update
+ * @param {boolean} [silent=false] - No auto render after creation when set true
+ * @example
+ * calendar.updateSchedule(schedule.id, schedule.calendarId, {
+ *     title: 'Changed schedule',
+ *     start: new Date('2019-11-05T09:00:00'),
+ *     end: new Date('2019-11-05T10:00:00'),
+ *     category: 'time'
+ * });
+ */
+Calendar.prototype.updateSchedule = function(scheduleId, calendarId, changes, silent) {
+    var ctrl = this._controller,
+        ownSchedules = ctrl.schedules,
+        schedule = ownSchedules.single(function(model) {
+            return model.id === scheduleId && model.calendarId === calendarId;
+        });
+    var hasChangedCalendar = false;
+
+    if (!changes || !schedule) {
+        return;
+    }
+
+    hasChangedCalendar = this._hasChangedCalendar(schedule, changes);
+    changes = hasChangedCalendar ?
+        this._setScheduleColor(changes.calendarId, changes) :
+        changes;
+
+    ctrl.updateSchedule(schedule, changes);
+
+    if (!silent) {
+        this.render();
+    }
+};
+
+Calendar.prototype._hasChangedCalendar = function(schedule, changes) {
+    return schedule &&
+        changes.calendarId &&
+        schedule.calendarId !== changes.calendarId;
+};
+
+Calendar.prototype._setScheduleColor = function(calendarId, schedule) {
+    var calColor = this._calendarColor;
+    var color = calColor[calendarId];
+
+    if (color) {
+        schedule.color = schedule.color || color.color;
+        schedule.bgColor = schedule.bgColor || color.bgColor;
+        schedule.borderColor = schedule.borderColor || color.borderColor;
+        schedule.dragBgColor = schedule.dragBgColor || color.dragBgColor;
+    }
+
+    return schedule;
+};
+
+/**
+ * Delete a schedule.
+ * @param {string} scheduleId - ID of schedule to delete
+ * @param {string} calendarId - The CalendarId of the schedule to delete
+ * @param {boolean} [silent=false] - No auto render after creation when set true
+ */
+Calendar.prototype.deleteSchedule = function(scheduleId, calendarId, silent) {
+    var ctrl = this._controller,
+        ownSchedules = ctrl.schedules,
+        schedule = ownSchedules.single(function(model) {
+            return model.id === scheduleId && model.calendarId === calendarId;
+        });
+
+    if (!schedule) {
+        return;
+    }
+
+    ctrl.deleteSchedule(schedule);
+    if (!silent) {
+        this.render();
+    }
+};
+
+/**********
+ * Private Methods
+ **********/
+
+/**
+ * @param {string|Date} date - The Date to show in calendar
+ * @param {number} [startDayOfWeek=0] - The Start day of week
+ * @param {boolean} [workweek=false] - The only show work week
+ * @returns {array} render range
+ * @private
+ */
+Calendar.prototype._getWeekDayRange = function(date, startDayOfWeek, workweek) {
+    var day;
+    var start;
+    var end;
+    var range;
+
+    startDayOfWeek = (startDayOfWeek || 0); // eslint-disable-line
+    date = util.isDate(date) ? date : new TZDate(date);
+    day = date.getDay();
+
+    // calculate default render range first.
+    start = new TZDate(date).addDate(-day + startDayOfWeek);
+
+    end = new TZDate(start).addDate(6);
+
+    if (day < startDayOfWeek) {
+        start = new TZDate(start).addDate(-7);
+        end = new TZDate(end).addDate(-7);
+    }
+
+    if (workweek) {
+        range = datetime.range(
+            datetime.start(start),
+            datetime.end(end),
+            datetime.MILLISECONDS_PER_DAY
+        );
+
+        range = util.filter(range, function(weekday) {
+            return !datetime.isWeekend(weekday.getDay());
+        });
+
+        start = range[0];
+        end = range[range.length - 1];
+    }
+
+    start = datetime.start(start);
+    end = datetime.start(end);
+
+    return [start, end];
+};
+
+/**
+ * Toggle schedules' visibility by calendar ID
+ * @param {string} calendarId - The calendar id value
+ * @param {boolean} toHide - Set true to hide schedules
+ * @param {boolean} [render=true] - set true then render after change visible property each models
+ */
+Calendar.prototype.toggleSchedules = function(calendarId, toHide, render) {
+    var ownSchedules = this._controller.schedules;
+
+    render = util.isExisty(render) ? render : true;
+    calendarId = util.isArray(calendarId) ? calendarId : [calendarId];
+
+    ownSchedules.each(function(schedule) {
+        if (~util.inArray(schedule.calendarId, calendarId)) {
+            schedule.set('isVisible', !toHide);
+        }
+    });
+
+    if (render) {
+        this.render();
+    }
+};
+
+/**********
+ * General Methods
+ **********/
+
+/**
+ * Render the calendar. The real rendering occurs after requestAnimationFrame.
+ * If you have to render immediately, use the 'immediately' parameter as true.
+ * @param {boolean} [immediately=false] - Render it immediately
+ * @example
+ * var silent = true;
+ * calendar.clear();
+ * calendar.createSchedules(schedules, silent);
+ * calendar.render();
+ * @example
+ * // Render a calendar when resizing a window.
+ * window.addEventListener('resize', function() {
+ *     calendar.render();
+ * });
+ */
+Calendar.prototype.render = function(immediately) {
+    if (this._requestRender) {
+        reqAnimFrame.cancelAnimFrame(this._requestRender);
+    }
+
+    if (immediately) {
+        this._renderFunc();
+    } else {
+        this._requestRender = reqAnimFrame.requestAnimFrame(this._renderFunc, this);
+    }
+};
+
+/**
+ * Render and refresh all layout and process requests.
+ * @private
+ */
+Calendar.prototype._renderFunc = function() {
+    if (this._refreshMethod) {
+        this._refreshMethod();
+    }
+    if (this._layout) {
+        this._layout.render();
+    }
+    if (this._scrollToNowMethod && this._requestScrollToNow) {
+        this._scrollToNowMethod();
+    }
+
+    this._requestScrollToNow = false;
+    this._requestRender = null;
+};
+
+/**
+ * Delete all schedules and clear view. The real rendering occurs after requestAnimationFrame.
+ * If you have to render immediately, use the 'immediately' parameter as true.
+ * @param {boolean} [immediately=false] - Render it immediately
+ * @example
+ * calendar.clear();
+ * calendar.createSchedules(schedules, true);
+ * calendar.render();
+ */
+Calendar.prototype.clear = function(immediately) {
+    this._controller.clearSchedules();
+    this.render(immediately);
+};
+
+/**
+ * Scroll to current time on today in case of daily, weekly view
+ * @example
+ * function onNewSchedules(schedules) {
+ *     calendar.createSchedules(schedules);
+ *     if (calendar.getViewName() !== 'month') {
+ *         calendar.scrollToNow();
+ *     }
+ * }
+ */
+Calendar.prototype.scrollToNow = function() {
+    if (this._scrollToNowMethod) {
+        this._requestScrollToNow = true;
+        // this._scrollToNowMethod() will be called at next frame rendering.
+    }
+};
+
+/**
+ * Move to today.
+ * @example
+ * function onClickTodayBtn() {
+ *     calendar.today();
+ * }
+ */
+Calendar.prototype.today = function() {
+    this._renderDate = datetime.start();
+
+    this._setViewName(this._viewName);
+    this.move();
+    this.render();
+};
+
+/**
+ * Move the calendar amount of offset value
+ * @param {number} offset - The offset value.
+ * @private
+ * @example
+ * // move previous week when "week" view.
+ * // move previous month when "month" view.
+ * calendar.move(-1);
+ */
+Calendar.prototype.move = function(offset) {
+    var renderDate = dw(datetime.start(this._renderDate)),
+        viewName = this._viewName,
+        view = this._getCurrentView(),
+        recursiveSet = _setOptionRecurseively,
+        startDate, endDate, tempDate,
+        startDayOfWeek, visibleWeeksCount, workweek, isAlways6Week, datetimeOptions;
+
+    offset = util.isExisty(offset) ? offset : 0;
+
+    if (viewName === 'month') {
+        startDayOfWeek = util.pick(this._options, 'month', 'startDayOfWeek') || 0;
+        visibleWeeksCount = mmin(util.pick(this._options, 'month', 'visibleWeeksCount') || 0, 6);
+        workweek = util.pick(this._options, 'month', 'workweek') || false;
+        isAlways6Week = util.pick(this._options, 'month', 'isAlways6Week');
+
+        if (visibleWeeksCount) {
+            datetimeOptions = {
+                startDayOfWeek: startDayOfWeek,
+                isAlways6Week: false,
+                visibleWeeksCount: visibleWeeksCount,
+                workweek: workweek
+            };
+
+            renderDate.addDate(offset * 7 * datetimeOptions.visibleWeeksCount);
+            tempDate = datetime.arr2dCalendar(renderDate.d, datetimeOptions);
+
+            recursiveSet(view, function(childView, opt) {
+                opt.renderMonth = new TZDate(renderDate.d);
+            });
+        } else {
+            datetimeOptions = {
+                startDayOfWeek: startDayOfWeek,
+                isAlways6Week: isAlways6Week,
+                workweek: workweek
+            };
+
+            renderDate.addMonth(offset);
+            tempDate = datetime.arr2dCalendar(renderDate.d, datetimeOptions);
+
+            recursiveSet(view, function(childView, opt) {
+                opt.renderMonth = new TZDate(renderDate.d);
+            });
+        }
+
+        startDate = tempDate[0][0];
+        endDate = tempDate[tempDate.length - 1][tempDate[tempDate.length - 1].length - 1];
+    } else if (viewName === 'week') {
+        renderDate.addDate(offset * 7);
+        startDayOfWeek = util.pick(this._options, 'week', 'startDayOfWeek') || 0;
+        workweek = util.pick(this._options, 'week', 'workweek') || false;
+        tempDate = this._getWeekDayRange(renderDate.d, startDayOfWeek, workweek);
+
+        startDate = tempDate[0];
+        endDate = tempDate[1];
+
+        recursiveSet(view, function(childView, opt) {
+            opt.renderStartDate = new TZDate(startDate);
+            opt.renderEndDate = new TZDate(endDate);
+
+            childView.setState({
+                collapsed: true
+            });
+        });
+    } else if (viewName === 'day') {
+        renderDate.addDate(offset);
+        startDate = datetime.start(renderDate.d);
+        endDate = datetime.end(renderDate.d);
+
+        recursiveSet(view, function(childView, opt) {
+            opt.renderStartDate = new TZDate(startDate);
+            opt.renderEndDate = new TZDate(endDate);
+
+            childView.setState({
+                collapsed: true
+            });
+        });
+    }
+
+    this._renderDate = renderDate.d;
+    this._renderRange = {
+        start: startDate,
+        end: endDate
+    };
+};
+
+/**
+ * Move to specific date
+ * @param {(Date|string)} date - The date to move
+ * @example
+ * calendar.on('clickDayname', function(event) {
+ *     if (calendar.getViewName() === 'week') {
+ *         calendar.setDate(new Date(event.date));
+ *         calendar.changeView('day', true);
+ *     }
+ * });
+ */
+Calendar.prototype.setDate = function(date) {
+    if (util.isString(date)) {
+        date = datetime.parse(date);
+    }
+
+    this._renderDate = new TZDate(date);
+    this._setViewName(this._viewName);
+    this.move(0);
+    this.render();
+};
+
+/**
+ * Move the calendar forward a day, a week, a month, 2 weeks, 3 weeks.
+ * @example
+ * function moveToNextOrPrevRange(val) {
+    if (val === -1) {
+        calendar.prev();
+    } else if (val === 1) {
+        calendar.next();
+    }
+}
+ */
+Calendar.prototype.next = function() {
+    this.move(1);
+    this.render();
+};
+
+/**
+ * Move the calendar backward a day, a week, a month, 2 weeks, 3 weeks.
+ * @example
+ * function moveToNextOrPrevRange(val) {
+    if (val === -1) {
+        calendar.prev();
+    } else if (val === 1) {
+        calendar.next();
+    }
+}
+ */
+Calendar.prototype.prev = function() {
+    this.move(-1);
+    this.render();
+};
+
+/**
+ * Return current rendered view.
+ * @returns {View} current view instance
+ * @private
+ */
+Calendar.prototype._getCurrentView = function() {
+    var viewName = this._viewName;
+
+    if (viewName === 'day') {
+        viewName = 'week';
+    }
+
+    return util.pick(this._layout.children.items, viewName);
+};
+
+/**
+ * Change calendar's schedule color with option
+ * @param {string} calendarId - The calendar ID
+ * @param {CalendarColor} option - The {@link CalendarColor} object
+ * @param {boolean} [silent=false] - No auto render after creation when set true
+ * @example
+ * calendar.setCalendarColor('1', {
+ *     color: '#e8e8e8',
+ *     bgColor: '#585858',
+ *     borderColor: '#a1b56c'
+ *     dragBgColor: '#585858',
+ * });
+ * calendar.setCalendarColor('2', {
+ *     color: '#282828',
+ *     bgColor: '#dc9656',
+ *     borderColor: '#a1b56c',
+ *     dragBgColor: '#dc9656',
+ * });
+ * calendar.setCalendarColor('3', {
+ *     color: '#a16946',
+ *     bgColor: '#ab4642',
+ *     borderColor: '#a1b56c',
+ *     dragBgColor: '#ab4642',
+ * });
+ */
+Calendar.prototype.setCalendarColor = function(calendarId, option, silent) {
+    var calColor = this._calendarColor,
+        ownSchedules = this._controller.schedules,
+        ownColor = calColor[calendarId];
+
+    if (!util.isObject(option)) {
+        config.throwError('Calendar#changeCalendarColor(): color 는 {color: \'\', bgColor: \'\'} 형태여야 합니다.');
+    }
+
+    ownColor = calColor[calendarId] = util.extend({
+        color: '#000',
+        bgColor: '#a1b56c',
+        borderColor: '#a1b56c',
+        dragBgColor: '#a1b56c'
+    }, option);
+
+    ownSchedules.each(function(model) {
+        if (model.calendarId !== calendarId) {
+            return;
+        }
+
+        model.color = ownColor.color;
+        model.bgColor = ownColor.bgColor;
+        model.borderColor = ownColor.borderColor;
+        model.dragBgColor = ownColor.dragBgColor;
+    });
+
+    if (!silent) {
+        this.render();
+    }
+};
+
+/**********
+ * Custom Events
+ **********/
+
+/**
+ * A bridge-based event handler for connecting a click handler to a user click event handler for each view
+ * @fires Calendar#clickSchedule
+ * @param {object} clickScheduleData - The event data of 'clickSchedule' handler
+ * @private
+ */
+Calendar.prototype._onClick = function(clickScheduleData) {
+    /**
+     * Fire this event when click a schedule.
+     * @event Calendar#clickSchedule
+     * @type {object}
+     * @property {Schedule} schedule - The {@link Schedule} instance
+     * @property {MouseEvent} event - MouseEvent
+     * @example
+     * calendar.on('clickSchedule', function(event) {
+     *     var schedule = event.schedule;
+     *
+     *     if (lastClickSchedule) {
+     *         calendar.updateSchedule(lastClickSchedule.id, lastClickSchedule.calendarId, {
+     *             isFocused: false
+     *         });
+     *     }
+     *     calendar.updateSchedule(schedule.id, schedule.calendarId, {
+     *         isFocused: true
+     *     });
+     *
+     *     lastClickSchedule = schedule;
+     *     // open detail view
+     * });
+     */
+    this.fire('clickSchedule', clickScheduleData);
+};
+
+/**
+ * A bridge-based event handler for connecting a click handler to a user click event handler for each view
+ * @fires Calendar#clickMore
+ * @param {object} clickMoreSchedule - The event data of 'clickMore' handler
+ * @private
+ */
+Calendar.prototype._onClickMore = function(clickMoreSchedule) {
+    /**
+     * Fire this event when click a schedule.
+     * @event Calendar#clickMore
+     * @type {object}
+     * @property {Date} date - The Clicked date
+     * @property {HTMLElement} target - The more element
+     * @example
+     * calendar.on('clickMore', function(event) {
+     *     console.log('clickMore', event.date, event.target);
+     * });
+     */
+    this.fire('clickMore', clickMoreSchedule);
+};
+
+/**
+ * dayname click event handler
+ * @fires Calendar#clickDayname
+ * @param {object} clickScheduleData - The event data of 'clickDayname' handler
+ * @private
+ */
+Calendar.prototype._onClickDayname = function(clickScheduleData) {
+    /**
+     * Fire this event when click a day name in weekly.
+     * @event Calendar#clickDayname
+     * @type {object}
+     * @property {string} date - The date string by format 'YYYY-MM-DD'
+     * @example
+     * calendar.on('clickDayname', function(event) {
+     *     if (calendar.getViewName() === 'week') {
+     *         calendar.setDate(new Date(event.date));
+     *         calendar.changeView('day', true);
+     *     }
+     * });
+     */
+    this.fire('clickDayname', clickScheduleData);
+};
+
+/**
+ * @fires {Calendar#n('beforeCreateSchedule', function}
+ * @param {object} createScheduleData - select schedule data from allday, time
+ * @private
+ */
+Calendar.prototype._onBeforeCreate = function(createScheduleData) {
+    if (this._options.useCreationPopup && !createScheduleData.useCreationPopup) {
+        if (this._showCreationPopup) {
+            this._showCreationPopup(createScheduleData);
+
+            return;
+        }
+    }
+    /**
+     * Fire this event when select time period in daily, weekly, monthly.
+     * @event Calendar#beforeCreateSchedule
+     * @type {object}
+     * @property {boolean} isAllDay - The allday schedule
+     * @property {Date} start - The selected start time
+     * @property {Date} end - The selected end time
+     * @property {TimeCreationGuide} guide - {@link TimeCreationGuide} instance
+     * @property {string} triggerEventName - The event name like 'click', 'dblclick'
+     * @example
+     * calendar.on('beforeCreateSchedule', function(event) {
+     *     var startTime = event.start;
+     *     var endTime = event.end;
+     *     var isAllDay = event.isAllDay;
+     *     var guide = event.guide;
+     *     var triggerEventName = event.triggerEventName;
+     *     var schedule;
+     *
+     *     if (triggerEventName === 'click') {
+     *         // open writing simple schedule popup
+     *         schedule = {...};
+     *     } else if (triggerEventName === 'dblclick') {
+     *         // open writing detail schedule popup
+     *         schedule = {...};
+     *     }
+     *
+     *     calendar.createSchedules([schedule]);
+     * });
+     */
+    this.fire('beforeCreateSchedule', createScheduleData);
+};
+
+/**
+ * @fires Calendar#beforeUpdateSchedule
+ * @param {object} updateScheduleData - update {@link Schedule} data
+ * @private
+ */
+Calendar.prototype._onBeforeUpdate = function(updateScheduleData) {
+    /**
+     * Fire this event when drag a schedule to change time in daily, weekly, monthly.
+     * @event Calendar#beforeUpdateSchedule
+     * @type {object}
+     * @property {Schedule} schedule - The original {@link Schedule} instance
+     * @property {object} changes - The {@link Schedule} properties and values with changes to update
+     * @property {Date} start - Deprecated: start time to update
+     * @property {Date} end - Deprecated: end time to update
+     * @example
+     * calendar.on('beforeUpdateSchedule', function(event) {
+     *     var schedule = event.schedule;
+     *     var changes = event.changes;
+     *
+     *     calendar.updateSchedule(schedule.id, schedule.calendarId, changes);
+     * });
+     */
+    this.fire('beforeUpdateSchedule', updateScheduleData);
+};
+
+/**
+ * @fires Calendar#beforeDeleteSchedule
+ * @param {object} deleteScheduleData - delete schedule data
+ * @private
+ */
+Calendar.prototype._onBeforeDelete = function(deleteScheduleData) {
+    /**
+     * Fire this event when delete a schedule.
+     * @event Calendar#beforeDeleteSchedule
+     * @type {object}
+     * @property {Schedule} schedule - The {@link Schedule} instance to delete
+     * @example
+     * calendar.on('beforeDeleteSchedule', function(event) {
+     *     var schedule = event.schedule;
+     *     alert('The schedule is removed.', schedule);
+     * });
+     */
+    this.fire('beforeDeleteSchedule', deleteScheduleData);
+};
+
+/**
+ * @fires Calendar#afterRenderSchedule
+ * @param {Schedule} scheduleData - The schedule data
+ * @private
+ */
+Calendar.prototype._onAfterRenderSchedule = function(scheduleData) {
+    /**
+     * Fire this event by every single schedule after rendering whole calendar.
+     * @event Calendar#afterRenderSchedule
+     * @type {object}
+     * @property {Schedule} schedule - A rendered {@link Schedule} instance
+     * @example
+     * calendar.on('afterRenderSchedule', function(event) {
+     *     var schedule = event.schedule;
+     *     var element = calendar.getElement(schedule.id, schedule.calendarId);
+     *     // use the element
+     *     console.log(element);
+     * });
+     */
+    this.fire('afterRenderSchedule', scheduleData);
+};
+
+/**
+ * @fires Calendar#clickTimezonesCollapseBtn
+ * @param {boolean} timezonesCollapsed - timezones collapsed flag
+ * @private
+ */
+Calendar.prototype._onClickTimezonesCollapseBtn = function(timezonesCollapsed) {
+    /**
+     * Fire this event by clicking timezones collapse button
+     * @event Calendar#clickTimezonesCollapseBtn
+     * @type {object}
+     * @property {boolean} timezonesCollapsed - The timezones collapes flag
+     * @example
+     * calendar.on('clickTimezonesCollapseBtn', function(timezonesCollapsed) {
+     *     console.log(timezonesCollapsed);
+     * });
+     */
+    this.fire('clickTimezonesCollapseBtn', timezonesCollapsed);
+};
+
+/**
+ * Toggle calendar factory class, main view, wallview event connection
+ * @param {boolean} isAttach - attach events if true.
+ * @param {Week|Month} view - Weekly view or Monthly view
+ * @private
+ */
+Calendar.prototype._toggleViewSchedule = function(isAttach, view) {
+    var self = this,
+        handler = view.handler,
+        method = isAttach ? 'on' : 'off';
+
+    util.forEach(handler.click, function(clickHandler) {
+        clickHandler[method]('clickSchedule', self._onClick, self);
+    });
+
+    util.forEach(handler.dayname, function(clickHandler) {
+        clickHandler[method]('clickDayname', self._onClickDayname, self);
+    });
+
+    util.forEach(handler.creation, function(creationHandler) {
+        creationHandler[method]('beforeCreateSchedule', self._onBeforeCreate, self);
+        creationHandler[method]('beforeDeleteSchedule', self._onBeforeDelete, self);
+    });
+
+    util.forEach(handler.move, function(moveHandler) {
+        moveHandler[method]('beforeUpdateSchedule', self._onBeforeUpdate, self);
+    });
+
+    util.forEach(handler.resize, function(resizeHandler) {
+        resizeHandler[method]('beforeUpdateSchedule', self._onBeforeUpdate, self);
+    });
+
+    // bypass events from view
+    view[method]('afterRenderSchedule', self._onAfterRenderSchedule, self);
+    view[method]('clickTimezonesCollapseBtn', self._onClickTimezonesCollapseBtn, self);
+    view[method]('clickMore', self._onClickMore, self);
+};
+
+/**
+ * Change current view with view name('day', 'week', 'month')
+ * @param {string} newViewName - The New view name to render
+ * @param {boolean} force - Force render despite of current view and new view are equal
+ * @example
+ * // daily view
+ * calendar.changeView('day', true);
+ *
+ * // weekly view
+ * calendar.changeView('week', true);
+ *
+ * // monthly view(default 6 weeks view)
+ * calendar.setOptions({month: {visibleWeeksCount: 6}}, true); // or null
+ * calendar.changeView('month', true);
+ *
+ * // 2 weeks monthly view
+ * calendar.setOptions({month: {visibleWeeksCount: 2}}, true);
+ * calendar.changeView('month', true);
+ *
+ * // 3 weeks monthly view
+ * calendar.setOptions({month: {visibleWeeksCount: 3}}, true);
+ * calendar.changeView('month', true);
+ *
+ * // narrow weekend
+ * calendar.setOptions({month: {narrowWeekend: true}}, true);
+ * calendar.setOptions({week: {narrowWeekend: true}}, true);
+ * calendar.changeView(calendar.getViewName(), true);
+ *
+ * // change start day of week(from monday)
+ * calendar.setOptions({week: {startDayOfWeek: 1}}, true);
+ * calendar.setOptions({month: {startDayOfWeek: 1}}, true);
+ * calendar.changeView(calendar.getViewName(), true);
+ *
+ * // work week
+ * calendar.setOptions({week: {workweek: true}}, true);
+ * calendar.setOptions({month: {workweek: true}}, true);
+ * calendar.changeView(calendar.getViewName(), true);
+ */
+Calendar.prototype.changeView = function(newViewName, force) {
+    var self = this,
+        layout = this._layout,
+        controller = this._controller,
+        dragHandler = this._dragHandler,
+        options = this._options,
+        viewName = this._viewName,
+        created;
+
+    if (!force && viewName === newViewName) {
+        return;
+    }
+
+    this._setViewName(newViewName);
+
+    // convert day to week
+    if (viewName === 'day') {
+        viewName = 'week';
+    }
+
+    if (newViewName === 'day') {
+        newViewName = 'week';
+    }
+    layout.children.doWhenHas(viewName, function(view) {
+        self._toggleViewSchedule(false, view);
+    });
+
+    layout.clear();
+
+    if (newViewName === 'month') {
+        created = _createMonthView(
+            controller,
+            layout.container,
+            dragHandler,
+            options
+        );
+    } else if (newViewName === 'week') {
+        created = _createWeekView(
+            controller,
+            layout.container,
+            dragHandler,
+            options,
+            this.getViewName()
+        );
+    }
+
+    layout.addChild(created.view);
+
+    layout.children.doWhenHas(newViewName, function(view) {
+        self._toggleViewSchedule(true, view);
+    });
+
+    this._refreshMethod = created.refresh;
+    this._scrollToNowMethod = created.scrollToNow;
+    this._openCreationPopup = created.openCreationPopup;
+    this._showCreationPopup = created.showCreationPopup;
+    this._hideMoreView = created.hideMoreView;
+
+    this.move();
+    this.render();
+};
+
+/**
+ * @deprecated
+ * Toggle task view('Milestone', 'Task') panel
+ * @param {boolean} enabled - use task view
+ * @example
+ * // There is no milestone, task, so hide those view panel
+ * calendar.toggleTaskView(false);
+ *
+ * // There are some milestone, task, so show those view panel.
+ * calendar.toggleTaskView(true);
+ */
+Calendar.prototype.toggleTaskView = function(enabled) {
+    var viewName = this._viewName,
+        options = this._options;
+
+    options.taskView = enabled;
+
+    this.changeView(viewName, true);
+};
+
+/**
+ * @deprecated
+ * Toggle schedule view('AllDay', TimeGrid') panel
+ * @param {boolean} enabled - use task view
+ * @example
+ * // hide those view panel to show only 'Milestone', 'Task'
+ * calendar.toggleScheduleView(false);
+ *
+ * // show those view panel.
+ * calendar.toggleScheduleView(true);
+ */
+Calendar.prototype.toggleScheduleView = function(enabled) {
+    var viewName = this._viewName,
+        options = this._options;
+
+    options.scheduleView = enabled;
+
+    this.changeView(viewName, true);
+};
+
+/**
+ * Set current view name
+ * @param {string} viewName - new view name to render
+ * @private
+ */
+Calendar.prototype._setViewName = function(viewName) {
+    this._viewName = viewName;
+};
+
+/**
+ * Get a schedule element by schedule id and calendar id.
+ * @param {string} scheduleId - ID of schedule
+ * @param {string} calendarId - calendarId of schedule
+ * @returns {HTMLElement} schedule element if found or null
+ * @example
+ * var element = calendar.getElement(scheduleId, calendarId);
+ * console.log(element);
+ */
+Calendar.prototype.getElement = function(scheduleId, calendarId) {
+    var schedule = this.getSchedule(scheduleId, calendarId);
+    if (schedule) {
+        return document.querySelector('[data-schedule-id="' + scheduleId + '"][data-calendar-id="' + calendarId + '"]');
+    }
+
+    return null;
+};
+
+/**
+ * Set a theme. If some keys are not defined in the preset, will be return.
+ * @param {object} theme - multiple styles map
+ * @returns {Array.<string>} keys - error keys not predefined.
+ * @example
+ * cal.setTheme({
+    'month.dayname.height': '31px',
+    'common.dayname.color': '#333',
+    'month.dayname.borderBottom': '1px solid #e5e5e5' // Not valid key  will be return.
+ * });
+ */
+Calendar.prototype.setTheme = function(theme) {
+    var result = this._controller.setTheme(theme);
+    this.render(true);
+
+    return result;
+};
+
+/**
+ * Set options of calendar
+ * @param {Options} options - set {@link Options}
+ * @param {boolean} [silent=false] - no auto render after creation when set true
+ */
+Calendar.prototype.setOptions = function(options, silent) {
+    util.forEach(options, function(value, name) {
+        if (util.isObject(value) && !util.isArray(value)) {
+            util.forEach(value, function(innerValue, innerName) {
+                this._options[name][innerName] = innerValue;
+            }, this);
+        } else {
+            this._options[name] = value;
+        }
+    }, this);
+
+    this._setAdditionalInternalOptions(options);
+
+    if (!silent) {
+        this.changeView(this._viewName, true);
+    }
+};
+
+/**
+ * Get current {@link Options}.
+ * @returns {Options} options
+ */
+Calendar.prototype.getOptions = function() {
+    return this._options;
+};
+
+/**
+ * Current rendered date ({@link TZDate} for further information)
+ * @returns {TZDate}
+ */
+Calendar.prototype.getDate = function() {
+    return this._renderDate;
+};
+
+/**
+ * Start time of rendered date range ({@link TZDate} for further information)
+ * @returns {TZDate}
+ */
+Calendar.prototype.getDateRangeStart = function() {
+    return this._renderRange.start;
+};
+
+/**
+ * End time of rendered date range ({@link TZDate} for further information)
+ * @returns {TZDate}
+ */
+Calendar.prototype.getDateRangeEnd = function() {
+    return this._renderRange.end;
+};
+
+/**
+ * Get current view name('day', 'week', 'month')
+ * @returns {string} view name
+ */
+Calendar.prototype.getViewName = function() {
+    return this._viewName;
+};
+
+/**
+ * Set calendar list
+ * @param {Array.<CalendarProps>} calendars - {@link CalendarProps} List
+ */
+Calendar.prototype.setCalendars = function(calendars) {
+    util.forEach(calendars || [], function(calendar) {
+        this.setCalendarColor(calendar.id, calendar, true);
+    }, this);
+
+    this._controller.setCalendars(calendars);
+
+    this.render();
+};
+
+/**
+ * Open schedule creation popup
+ * @param {Schedule} schedule - The preset {@link Schedule} data
+ */
+Calendar.prototype.openCreationPopup = function(schedule) {
+    if (this._openCreationPopup) {
+        this._openCreationPopup(schedule);
+    }
+};
+
+/**
+ * Hide the more view
+ */
+Calendar.prototype.hideMoreView = function() {
+    if (this._hideMoreView) {
+        this._hideMoreView();
+    }
+};
+
+/**
+ * Set timezone offset
+ * @param {number} offset - The offset (min)
+ * @static
+ * @deprecated
+ * @example
+ * var timezoneName = moment.tz.guess();
+ * tui.Calendar.setTimezoneOffset(moment.tz.zone(timezoneName).utcOffset(moment()));
+ */
+Calendar.setTimezoneOffset = function(offset) {
+    timezone.setOffset(offset);
+};
+
+/**
+ * Set a callback function to get timezone offset by timestamp
+ * @param {function} callback - The callback function
+ * @static
+ * @deprecated
+ * @example
+ * var timezoneName = moment.tz.guess();
+ * tui.Calendar.setTimezoneOffsetCallback(function(timestamp) {
+ *      return moment.tz.zone(timezoneName).utcOffset(timestamp));
+ * });
+ */
+Calendar.setTimezoneOffsetCallback = function(callback) {
+    timezone.setOffsetCallback(callback);
+};
+
+/**
+ * Create controller instance
+ * @returns {Base} controller instance
+ * @param {Options} options - calendar options
+ * @private
+ */
+function _createController(options) {
+    return controllerFactory(options);
+}
+
+/**
+ * Create week view instance by dependent module instances
+ * @param {Base} controller - controller
+ * @param {HTMLElement} container - container element
+ * @param {Drag} dragHandler - global drag handler
+ * @param {object} options - options for week view
+ * @param {string} viewName - 'week', 'day'
+ * @returns {Week} week view instance
+ * @private
+ */
+function _createWeekView(controller, container, dragHandler, options, viewName) {
+    return weekViewFactory(
+        controller,
+        container,
+        dragHandler,
+        options,
+        viewName
+    );
+}
+
+/**
+ * Create week view instance by dependent module instances
+ * @param {Base} controller - controller
+ * @param {HTMLElement} container - container element
+ * @param {Drag} dragHandler - global drag handler
+ * @param {object} options - options for week view
+ * @returns {Month} month view instance
+ * @private
+ */
+function _createMonthView(controller, container, dragHandler, options) {
+    return monthViewFactory(
+        controller,
+        container,
+        dragHandler,
+        options
+    );
+}
+
+/**
+ * Set child view's options recursively
+ * @param {View} view - parent view
+ * @param {function} func - option manipulate function
+ * @private
+ */
+function _setOptionRecurseively(view, func) {
+    view.recursive(function(childView) {
+        var opt = childView.options;
+
+        if (!opt) {
+            return;
+        }
+
+        func(childView, opt);
+    });
+}
+
+util.CustomEvents.mixin(Calendar);
+
+module.exports = Calendar;
+
+
+/***/ }),
+
+/***/ "./src/js/factory/controller.js":
+/*!**************************************!*\
+  !*** ./src/js/factory/controller.js ***!
+  \**************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/**
+ * @fileoverview Controller factory module.
+ * @author NHN FE Development Lab <dl_javascript@nhn.com>
+ */
+
+
+var util = __webpack_require__(/*! tui-code-snippet */ "tui-code-snippet");
+var Base = __webpack_require__(/*! ../controller/base */ "./src/js/controller/base.js"),
+    Core = __webpack_require__(/*! ../controller/viewMixin/core */ "./src/js/controller/viewMixin/core.js"),
+    Week = __webpack_require__(/*! ../controller/viewMixin/week */ "./src/js/controller/viewMixin/week.js"),
+    Month = __webpack_require__(/*! ../controller/viewMixin/month */ "./src/js/controller/viewMixin/month.js");
+
+/**
+ * Mixin object. create object property to target and mix to that
+ * @param {object} from - source object
+ * @param {object} to - target object
+ * @param {string} propertyName - property name
+ */
+function mixin(from, to, propertyName) {
+    var obj = to[propertyName] = {};
+
+    util.forEach(from, function(method, methodName) {
+        obj[methodName] = method.bind(to);
+    });
+}
+
+/**
+ * @param {object} options - options for base controller
+ * @param {function} [options.groupFunc] - function for group each models {@see Collection#groupBy}
+ * @returns {Base} The controller instance.
+ */
+module.exports = function(options) {
+    var controller = new Base(options);
+
+    mixin(Core, controller, 'Core');
+    mixin(Week, controller, 'Week');
+    mixin(Month, controller, 'Month');
+
+    // for Theme
+    controller.Core.theme = controller.theme;
+    controller.Week.theme = controller.theme;
+    controller.Month.theme = controller.theme;
+
+    return controller;
+};
+
+
+/***/ }),
+
+/***/ "./src/js/factory/monthView.js":
+/*!*************************************!*\
+  !*** ./src/js/factory/monthView.js ***!
+  \*************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/**
+ * @fileoverview Month view factory module
+ * @author NHN FE Development Lab <dl_javascript@nhn.com>
+ */
+
+
+var util = __webpack_require__(/*! tui-code-snippet */ "tui-code-snippet");
+var config = __webpack_require__(/*! ../config */ "./src/js/config.js"),
+    array = __webpack_require__(/*! ../common/array */ "./src/js/common/array.js"),
+    datetime = __webpack_require__(/*! ../common/datetime */ "./src/js/common/datetime.js"),
+    domutil = __webpack_require__(/*! ../common/domutil */ "./src/js/common/domutil.js"),
+    common = __webpack_require__(/*! ../common/common */ "./src/js/common/common.js"),
+    Month = __webpack_require__(/*! ../view/month/month */ "./src/js/view/month/month.js"),
+    MonthClick = __webpack_require__(/*! ../handler/month/click */ "./src/js/handler/month/click.js"),
+    MonthCreation = __webpack_require__(/*! ../handler/month/creation */ "./src/js/handler/month/creation.js"),
+    MonthResize = __webpack_require__(/*! ../handler/month/resize */ "./src/js/handler/month/resize.js"),
+    MonthMove = __webpack_require__(/*! ../handler/month/move */ "./src/js/handler/month/move.js"),
+    More = __webpack_require__(/*! ../view/month/more */ "./src/js/view/month/more.js"),
+    ScheduleCreationPopup = __webpack_require__(/*! ../view/popup/scheduleCreationPopup */ "./src/js/view/popup/scheduleCreationPopup.js"),
+    ScheduleDetailPopup = __webpack_require__(/*! ../view/popup/scheduleDetailPopup */ "./src/js/view/popup/scheduleDetailPopup.js"),
+    Schedule = __webpack_require__(/*! ../model/schedule */ "./src/js/model/schedule.js");
+
+/**
+ * Get the view model for more layer
+ * @param {TZDate} date - date has more schedules
+ * @param {HTMLElement} target - target element
+ * @param {Collection} schedules - schedule collection
+ * @param {string[]} daynames - daynames to use upside of month more view
+ * @returns {object} view model
+ */
+function getViewModelForMoreLayer(date, target, schedules, daynames) {
+    schedules.each(function(schedule) {
+        var model = schedule.model;
+        schedule.hasMultiDates = datetime.hasMultiDates(model.start, model.end);
+    });
+
+    return {
+        target: target,
+        date: datetime.format(date, 'YYYY.MM.DD'),
+        dayname: daynames[date.getDay()],
+        schedules: schedules.sort(array.compare.schedule.asc)
+    };
+}
+
+/**
+ * @param {Base} baseController - controller instance
+ * @param {HTMLElement} layoutContainer - container element for month view
+ * @param {Drag} dragHandler - drag handler instance
+ * @param {object} options - options
+ * @returns {object} view instance and refresh method
+ */
+function createMonthView(baseController, layoutContainer, dragHandler, options) {
+    var monthViewContainer, monthView, moreView, createView;
+    var clickHandler, creationHandler, resizeHandler, moveHandler, clearSchedulesHandler, onUpdateSchedule;
+    var onShowCreationPopup, onSaveNewSchedule, onShowEditPopup;
+    var detailView, onShowDetailPopup, onDeleteSchedule, onEditSchedule;
+
+    monthViewContainer = domutil.appendHTMLElement(
+        'div', layoutContainer, config.classname('month'));
+
+    monthView = new Month(options, monthViewContainer, baseController.Month);
+    moreView = new More(options.month, layoutContainer, baseController.theme);
+
+    // handlers
+    clickHandler = new MonthClick(dragHandler, monthView, baseController);
+    if (!options.isReadOnly) {
+        creationHandler = new MonthCreation(dragHandler, monthView, baseController, options);
+        resizeHandler = new MonthResize(dragHandler, monthView, baseController);
+        moveHandler = new MonthMove(dragHandler, monthView, baseController);
+    }
+
+    clearSchedulesHandler = function() {
+        if (moreView) {
+            moreView.hide();
+        }
+    };
+
+    onUpdateSchedule = function() {
+        if (moreView) {
+            moreView.refresh();
+        }
+    };
+
+    // binding +n click schedule
+    clickHandler.on('clickMore', function(clickMoreSchedule) {
+        var date = clickMoreSchedule.date,
+            target = clickMoreSchedule.target,
+            schedules = util.pick(baseController.findByDateRange(
+                datetime.start(date),
+                datetime.end(date)
+            ), clickMoreSchedule.ymd);
+
+        schedules.items = util.filter(schedules.items, function(item) {
+            return options.month.scheduleFilter(item.model);
+        });
+
+        if (schedules && schedules.length) {
+            moreView.render(getViewModelForMoreLayer(date, target, schedules, monthView.options.daynames));
+
+            schedules.each(function(scheduleViewModel) {
+                if (scheduleViewModel) {
+                    /**
+                     * @event More#afterRenderSchedule
+                     */
+                    monthView.fire('afterRenderSchedule', {schedule: scheduleViewModel.model});
+                }
+            });
+
+            monthView.fire('clickMore', {
+                date: clickMoreSchedule.date,
+                target: moreView.getMoreViewElement()
+            });
+        }
+    });
+
+    // binding popup for schedules creation
+    if (options.useCreationPopup) {
+        createView = new ScheduleCreationPopup(layoutContainer, baseController.calendars, options.usageStatistics);
+
+        onSaveNewSchedule = function(scheduleData) {
+            creationHandler.fire('beforeCreateSchedule', util.extend(scheduleData, {
+                useCreationPopup: true
+            }));
+        };
+        createView.on('beforeCreateSchedule', onSaveNewSchedule);
+    }
+
+    // binding popup for schedule detail
+    if (options.useDetailPopup) {
+        detailView = new ScheduleDetailPopup(layoutContainer, baseController.calendars);
+        onShowDetailPopup = function(eventData) {
+            var scheduleId = eventData.schedule.calendarId;
+            eventData.calendar = common.find(baseController.calendars, function(calendar) {
+                return calendar.id === scheduleId;
+            });
+
+            if (options.isReadOnly) {
+                eventData.schedule = util.extend({}, eventData.schedule, {isReadOnly: true});
+            }
+
+            detailView.render(eventData);
+        };
+        onDeleteSchedule = function(eventData) {
+            if (creationHandler) {
+                creationHandler.fire('beforeDeleteSchedule', eventData);
+            }
+        };
+        onEditSchedule = function(eventData) {
+            moveHandler.fire('beforeUpdateSchedule', eventData);
+        };
+
+        clickHandler.on('clickSchedule', onShowDetailPopup);
+
+        detailView.on('beforeDeleteSchedule', onDeleteSchedule);
+
+        if (options.useCreationPopup) {
+            onShowEditPopup = function(eventData) {
+                createView.setCalendars(baseController.calendars);
+                createView.render(eventData);
+            };
+            createView.on('beforeUpdateSchedule', onEditSchedule);
+            detailView.on('beforeUpdateSchedule', onShowEditPopup);
+        } else {
+            detailView.on('beforeUpdateSchedule', onEditSchedule);
+        }
+    }
+
+    // binding clear schedules
+    baseController.on('clearSchedules', clearSchedulesHandler);
+
+    // bind update schedule event
+    baseController.on('updateSchedule', onUpdateSchedule);
+
+    if (moveHandler) {
+        moveHandler.on('monthMoveStart_from_morelayer', function() {
+            moreView.hide();
+        });
+    }
+
+    monthView.handler = {
+        click: {
+            'default': clickHandler
+        }
+    };
+
+    if (!options.isReadOnly) {
+        monthView.handler = util.extend(monthView.handler, {
+            creation: {
+                'default': creationHandler
+            },
+            resize: {
+                'default': resizeHandler
+            },
+            move: {
+                'default': moveHandler
+            }
+        });
+    }
+
+    monthView._beforeDestroy = function() {
+        moreView.destroy();
+        baseController.off('clearSchedules', clearSchedulesHandler);
+        baseController.off('updateSchedule', onUpdateSchedule);
+
+        util.forEach(monthView.handler, function(type) {
+            util.forEach(type, function(handler) {
+                handler.off();
+                handler.destroy();
+            });
+        });
+
+        if (options.useCreationPopup && options.useDetailPopup) {
+            createView.off('beforeUpdateSchedule', onUpdateSchedule);
+        }
+
+        if (options.useCreationPopup) {
+            if (creationHandler) {
+                creationHandler.off('beforeCreateSchedule', onShowCreationPopup);
+            }
+            createView.off('saveSchedule', onSaveNewSchedule);
+            createView.destroy();
+        }
+
+        if (options.useDetailPopup) {
+            clickHandler.off('clickSchedule', onShowDetailPopup);
+            detailView.off('beforeUpdateSchedule', onUpdateSchedule);
+            detailView.off('beforeDeleteSchedule', onDeleteSchedule);
+            detailView.destroy();
+        }
+    };
+
+    // add controller
+    monthView.controller = baseController.Month;
+
+    return {
+        view: monthView,
+        refresh: function() {
+            monthView.vLayout.refresh();
+        },
+        openCreationPopup: function(schedule) {
+            if (createView && creationHandler) {
+                creationHandler.invokeCreationClick(Schedule.create(schedule));
+            }
+        },
+        showCreationPopup: function(eventData) {
+            if (createView) {
+                createView.setCalendars(baseController.calendars);
+                createView.render(eventData);
+            }
+        },
+        hideMoreView: function() {
+            if (moreView) {
+                moreView.hide();
+            }
+        }
+    };
+}
+
+module.exports = createMonthView;
+
+
+/***/ }),
+
+/***/ "./src/js/factory/weekView.js":
+/*!************************************!*\
+  !*** ./src/js/factory/weekView.js ***!
+  \************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/**
+ * @fileoverview Factory module for WeekView
+ * @author NHN FE Development Lab <dl_javascript@nhn.com>
+ */
+
+
+var util = __webpack_require__(/*! tui-code-snippet */ "tui-code-snippet");
+var config = __webpack_require__(/*! ../config */ "./src/js/config.js");
+var domutil = __webpack_require__(/*! ../common/domutil */ "./src/js/common/domutil.js");
+var common = __webpack_require__(/*! ../common/common */ "./src/js/common/common.js");
+var VLayout = __webpack_require__(/*! ../common/vlayout */ "./src/js/common/vlayout.js");
+var reqAnimFrame = __webpack_require__(/*! ../common/reqAnimFrame */ "./src/js/common/reqAnimFrame.js");
+var Schedule = __webpack_require__(/*! ../model/schedule */ "./src/js/model/schedule.js");
+// Parent views
+var Week = __webpack_require__(/*! ../view/week/week */ "./src/js/view/week/week.js");
+
+// Sub views
+var DayName = __webpack_require__(/*! ../view/week/dayname */ "./src/js/view/week/dayname.js");
+var DayGrid = __webpack_require__(/*! ../view/week/dayGrid */ "./src/js/view/week/dayGrid.js");
+var TimeGrid = __webpack_require__(/*! ../view/week/timeGrid */ "./src/js/view/week/timeGrid.js");
+var ScheduleCreationPopup = __webpack_require__(/*! ../view/popup/scheduleCreationPopup */ "./src/js/view/popup/scheduleCreationPopup.js");
+var ScheduleDetailPopup = __webpack_require__(/*! ../view/popup/scheduleDetailPopup */ "./src/js/view/popup/scheduleDetailPopup.js");
+
+// Handlers
+var DayNameClick = __webpack_require__(/*! ../handler/time/clickDayname */ "./src/js/handler/time/clickDayname.js");
+var DayGridClick = __webpack_require__(/*! ../handler/daygrid/click */ "./src/js/handler/daygrid/click.js");
+var DayGridCreation = __webpack_require__(/*! ../handler/daygrid/creation */ "./src/js/handler/daygrid/creation.js");
+var DayGridMove = __webpack_require__(/*! ../handler/daygrid/move */ "./src/js/handler/daygrid/move.js");
+var DayGridResize = __webpack_require__(/*! ../handler/daygrid/resize */ "./src/js/handler/daygrid/resize.js");
+var TimeClick = __webpack_require__(/*! ../handler/time/click */ "./src/js/handler/time/click.js");
+var TimeCreation = __webpack_require__(/*! ../handler/time/creation */ "./src/js/handler/time/creation.js");
+var TimeMove = __webpack_require__(/*! ../handler/time/move */ "./src/js/handler/time/move.js");
+var TimeResize = __webpack_require__(/*! ../handler/time/resize */ "./src/js/handler/time/resize.js");
+
+var DAYGRID_HANDLDERS = {
+    'click': DayGridClick,
+    'creation': DayGridCreation,
+    'move': DayGridMove,
+    'resize': DayGridResize
+};
+var TIMEGRID_HANDLERS = {
+    'click': TimeClick,
+    'creation': TimeCreation,
+    'move': TimeMove,
+    'resize': TimeResize
+};
+var DEFAULT_PANELS = [
+    {
+        name: 'milestone',
+        type: 'daygrid',
+        minHeight: 20,
+        maxHeight: 80,
+        showExpandableButton: true,
+        maxExpandableHeight: 210,
+        handlers: ['click'],
+        show: true
+    },
+    {
+        name: 'task',
+        type: 'daygrid',
+        minHeight: 40,
+        maxHeight: 120,
+        showExpandableButton: true,
+        maxExpandableHeight: 210,
+        handlers: ['click', 'move'],
+        show: true
+    },
+    {
+        name: 'allday',
+        type: 'daygrid',
+        minHeight: 30,
+        maxHeight: 80,
+        showExpandableButton: true,
+        maxExpandableHeight: 210,
+        handlers: ['click', 'creation', 'move', 'resize'],
+        show: true
+    },
+    {
+        name: 'time',
+        type: 'timegrid',
+        autoHeight: true,
+        handlers: ['click', 'creation', 'move', 'resize'],
+        show: true
+    }
+];
+
+/* eslint-disable complexity*/
+module.exports = function(baseController, layoutContainer, dragHandler, options, viewName) {
+    var panels = [],
+        vpanels = [];
+    var weekView, dayNameContainer, dayNameView, vLayoutContainer, vLayout;
+    var createView, onSaveNewSchedule, onSetCalendars, lastVPanel;
+    var detailView, onShowDetailPopup, onDeleteSchedule, onShowEditPopup, onEditSchedule;
+    var taskView = options.taskView;
+    var scheduleView = options.scheduleView;
+    var viewVisibilities = {
+        'milestone': util.isArray(taskView) ? util.inArray('milestone', taskView) >= 0 : taskView,
+        'task': util.isArray(taskView) ? util.inArray('task', taskView) >= 0 : taskView,
+        'allday': util.isArray(scheduleView) ? util.inArray('allday', scheduleView) >= 0 : scheduleView,
+        'time': util.isArray(scheduleView) ? util.inArray('time', scheduleView) >= 0 : scheduleView
+    };
+
+    // Make panels by view sequence and visibilities
+    util.forEach(DEFAULT_PANELS, function(panel) {
+        var name = panel.name;
+
+        panel = util.extend({}, panel);
+        panels.push(panel);
+
+        // Change visibilities
+        panel.show = viewVisibilities[name];
+
+        if (panel.show) {
+            if (vpanels.length) {
+                vpanels.push({
+                    isSplitter: true
+                });
+            }
+            vpanels.push(util.extend({}, panel));
+        }
+    });
+
+    if (vpanels.length) {
+        lastVPanel = vpanels[vpanels.length - 1];
+        lastVPanel.autoHeight = true;
+        lastVPanel.maxHeight = null;
+        lastVPanel.showExpandableButton = false;
+
+        util.forEach(panels, function(panel) {
+            if (panel.name === lastVPanel.name) {
+                panel.showExpandableButton = false;
+
+                return false;
+            }
+
+            return true;
+        });
+    }
+
+    util.extend(options.week, {panels: panels});
+
+    weekView = new Week(null, options.week, layoutContainer, panels, viewName);
+    weekView.handler = {
+        click: {},
+        dayname: {},
+        creation: {},
+        move: {},
+        resize: {}
+    };
+
+    dayNameContainer = domutil.appendHTMLElement('div', weekView.container, config.classname('dayname-layout'));
+
+    /**********
+     * Day name (top row(Mon, Tue, Wed...))
+     **********/
+    dayNameView = new DayName(options, dayNameContainer, baseController.theme);
+    weekView.handler.dayname.date = new DayNameClick(dragHandler, dayNameView, baseController);
+    weekView.addChild(dayNameView);
+
+    /**********
+     * Initialize vertical layout module
+     **********/
+    vLayoutContainer = domutil.appendHTMLElement('div', weekView.container, config.classname('vlayout-area'));
+    vLayoutContainer.style.height = (domutil.getSize(weekView.container)[1] - dayNameView.container.offsetHeight) + 'px';
+
+    vLayout = new VLayout({
+        panels: vpanels,
+        panelHeights: options.week.panelHeights || []
+    }, vLayoutContainer, baseController.theme);
+
+    weekView.vLayout = vLayout;
+
+    util.forEach(panels, function(panel) {
+        var name = panel.name;
+        var handlers = panel.handlers;
+        var view;
+
+        if (!panel.show) {
+            return;
+        }
+
+        if (panel.type === 'daygrid') {
+            /**********
+             * Schedule panel by Grid
+             **********/
+            view = new DayGrid(name, options, vLayout.getPanelByName(panel.name).container, baseController.theme);
+            view.on('afterRender', function(viewModel) {
+                vLayout.getPanelByName(name).setHeight(null, viewModel.height);
+            });
+
+            weekView.addChild(view);
+
+            util.forEach(handlers, function(type) {
+                if (!options.isReadOnly || type === 'click') {
+                    weekView.handler[type][name] =
+                        new DAYGRID_HANDLDERS[type](dragHandler, view, baseController, options);
+                    view.addHandler(type, weekView.handler[type][name], vLayout.getPanelByName(name));
+                }
+            });
+        } else if (panel.type === 'timegrid') {
+            /**********
+             * Schedule panel by TimeGrid
+             **********/
+            view = new TimeGrid(name, options, vLayout.getPanelByName(name).container);
+            weekView.addChild(view);
+            util.forEach(handlers, function(type) {
+                if (!options.isReadOnly || type === 'click') {
+                    weekView.handler[type][name] =
+                        new TIMEGRID_HANDLERS[type](dragHandler, view, baseController, options);
+                }
+            });
+
+            view.on('clickTimezonesCollapsedBtn', function() {
+                var timezonesCollapsed = !weekView.state.timezonesCollapsed;
+
+                weekView.setState({
+                    timezonesCollapsed: timezonesCollapsed
+                });
+                reqAnimFrame.requestAnimFrame(function() {
+                    if (!weekView.invoke('clickTimezonesCollapseBtn', timezonesCollapsed)) {
+                        weekView.render();
+                    }
+                });
+            });
+        }
+    });
+
+    vLayout.on('resize', function() {
+        reqAnimFrame.requestAnimFrame(function() {
+            weekView.render();
+        });
+    });
+
+    // binding create schedules event
+    if (options.useCreationPopup) {
+        createView = new ScheduleCreationPopup(layoutContainer, baseController.calendars, options.usageStatistics);
+
+        onSaveNewSchedule = function(scheduleData) {
+            util.extend(scheduleData, {
+                useCreationPopup: true
+            });
+            if (scheduleData.isAllDay) {
+                weekView.handler.creation.allday.fire('beforeCreateSchedule', scheduleData);
+            } else {
+                weekView.handler.creation.time.fire('beforeCreateSchedule', scheduleData);
+            }
+        };
+        createView.on('beforeCreateSchedule', onSaveNewSchedule);
+    }
+
+    onSetCalendars = function(calendars) {
+        if (createView) {
+            createView.setCalendars(calendars);
+        }
+    };
+
+    baseController.on('setCalendars', onSetCalendars);
+
+    // binding popup for schedule detail
+    if (options.useDetailPopup) {
+        detailView = new ScheduleDetailPopup(layoutContainer, baseController.calendars);
+        onShowDetailPopup = function(eventData) {
+            var scheduleId = eventData.schedule.calendarId;
+            eventData.calendar = common.find(baseController.calendars, function(calendar) {
+                return calendar.id === scheduleId;
+            });
+
+            if (options.isReadOnly) {
+                eventData.schedule = util.extend({}, eventData.schedule, {isReadOnly: true});
+            }
+
+            detailView.render(eventData);
+        };
+        onDeleteSchedule = function(eventData) {
+            if (eventData.isAllDay) {
+                weekView.handler.creation.allday.fire('beforeDeleteSchedule', eventData);
+            } else {
+                weekView.handler.creation.time.fire('beforeDeleteSchedule', eventData);
+            }
+        };
+        onEditSchedule = function(eventData) {
+            if (eventData.isAllDay) {
+                weekView.handler.move.allday.fire('beforeUpdateSchedule', eventData);
+            } else {
+                weekView.handler.move.time.fire('beforeUpdateSchedule', eventData);
+            }
+        };
+
+        util.forEach(weekView.handler.click, function(panel) {
+            panel.on('clickSchedule', onShowDetailPopup);
+        });
+        if (options.useCreationPopup) {
+            onShowEditPopup = function(eventData) {
+                var calendars = baseController.calendars;
+                eventData.isEditMode = true;
+                createView.setCalendars(calendars);
+                createView.render(eventData);
+            };
+            createView.on('beforeUpdateSchedule', onEditSchedule);
+            detailView.on('beforeUpdateSchedule', onShowEditPopup);
+        } else {
+            detailView.on('beforeUpdateSchedule', onEditSchedule);
+        }
+        detailView.on('beforeDeleteSchedule', onDeleteSchedule);
+    }
+
+    weekView.on('afterRender', function() {
+        vLayout.refresh();
+    });
+
+    // add controller
+    weekView.controller = baseController.Week;
+
+    // add destroy
+    weekView._beforeDestroy = function() {
+        util.forEach(weekView.handler, function(type) {
+            util.forEach(type, function(handler) {
+                handler.off();
+                handler.destroy();
+            });
+        });
+
+        if (options.useCreationPopup) {
+            createView.off('beforeCreateSchedule', onSaveNewSchedule);
+            createView.destroy();
+        }
+
+        if (options.useDetailPopup) {
+            detailView.off('beforeDeleteSchedule', onDeleteSchedule);
+            detailView.destroy();
+        }
+
+        weekView.off();
+    };
+
+    return {
+        view: weekView,
+        refresh: function() {
+            var weekViewHeight = weekView.getViewBound().height,
+                daynameViewHeight = domutil.getBCRect(
+                    dayNameView.container
+                ).height;
+
+            vLayout.container.style.height =
+                weekViewHeight - daynameViewHeight + 'px';
+            vLayout.refresh();
+        },
+        scrollToNow: function() {
+            weekView.children.each(function(childView) {
+                if (childView.scrollToNow) {
+                    childView.scrollToNow();
+                }
+            });
+        },
+        openCreationPopup: function(schedule) {
+            if (createView) {
+                if (schedule.isAllDay) {
+                    weekView.handler.creation.allday.invokeCreationClick(Schedule.create(schedule));
+                } else {
+                    weekView.handler.creation.time.invokeCreationClick(Schedule.create(schedule));
+                }
+            }
+        },
+        showCreationPopup: function(eventData) {
+            if (createView) {
+                createView.setCalendars(baseController.calendars);
+                createView.render(eventData);
+            }
+        }
+    };
+};
+
+
+/***/ }),
+
+/***/ "./src/js/handler/daygrid/click.js":
+/*!*****************************************!*\
+  !*** ./src/js/handler/daygrid/click.js ***!
+  \*****************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/**
+ * @fileoverview Click handle module for daygrid schedules
+ * @author NHN FE Development Lab <dl_javascript@nhn.com>
+ */
+
+
+var util = __webpack_require__(/*! tui-code-snippet */ "tui-code-snippet");
+var config = __webpack_require__(/*! ../../config */ "./src/js/config.js");
+var domutil = __webpack_require__(/*! ../../common/domutil */ "./src/js/common/domutil.js");
+var DayGridMove = __webpack_require__(/*! ./move */ "./src/js/handler/daygrid/move.js");
+
+/**
+ * @constructor
+ * @implements {Handler}
+ * @mixes CustomEvents
+ * @param {Drag} [dragHandler] - Drag handler instance.
+ * @param {DayGrid} [view] - daygrid view instance.
+ * @param {Base} [controller] - Base controller instance.
+ */
+function DayGridClick(dragHandler, view, controller) {
+    /**
+     * @type {Drag}
+     */
+    this.dragHandler = dragHandler;
+
+    /**
+     * @type {DayGrid}
+     */
+    this.view = view;
+
+    /**
+     * @type {Base}
+     */
+    this.controller = controller;
+
+    dragHandler.on({
+        'click': this._onClick
+    }, this);
+}
+
+/**
+ * Destroy handler module
+ */
+DayGridClick.prototype.destroy = function() {
+    this.dragHandler.off(this);
+    this.view = this.controller = this.dragHandler = null;
+};
+
+/**
+ * Check target element is expected condition for activate this plugins.
+ * @param {HTMLElement} target - The element to check
+ * @returns {string} - model id
+ */
+DayGridClick.prototype.checkExpectCondition = DayGridMove.prototype.checkExpectedCondition;
+
+/**
+ * Click event handler
+ * @param {object} clickEvent - click event data
+ * @emits DayGridClick#clickSchedule
+ * @emits DayGridClick#collapse
+ * @emits DayGridClick#expand
+ */
+DayGridClick.prototype._onClick = function(clickEvent) {
+    var self = this,
+        target = clickEvent.target,
+        dayGridScheduleView = this.checkExpectCondition(target),
+        scheduleCollection = this.controller.schedules,
+        collapseBtnElement = domutil.closest(
+            target,
+            config.classname('.weekday-collapse-btn')
+        ),
+        expandBtnElement = domutil.closest(
+            target,
+            config.classname('.weekday-exceed-in-week')
+        ),
+        containsTarget = this.view.container.contains(target);
+    var blockElement, scheduleElement;
+
+    if (!containsTarget) {
+        return;
+    }
+
+    if (collapseBtnElement) {
+        /**
+         * click collpase btn event
+         * @events DayGridClick#collapse
+         */
+        self.fire('collapse');
+
+        return;
+    }
+
+    if (expandBtnElement) {
+        this.view.setState({
+            clickedExpandBtnIndex: parseInt(domutil.getData(expandBtnElement, 'index'), 10)
+        });
+
+        /**
+         * click expand btn event
+         * @events DayGridClick#expand
+         */
+        self.fire('expand');
+
+        return;
+    }
+
+    if (!dayGridScheduleView) {
+        return;
+    }
+
+    scheduleElement = domutil.closest(target, config.classname('.weekday-schedule'));
+    if (scheduleElement) {
+        blockElement = domutil.closest(target, config.classname('.weekday-schedule-block'));
+        scheduleCollection.doWhenHas(domutil.getData(blockElement, 'id'), function(schedule) {
+            /**
+             * @events DayGridClick#clickSchedule
+             * @type {object}
+             * @property {Schedule} schedule - schedule instance
+             * @property {MouseEvent} event - MouseEvent object
+             */
+            self.fire('clickSchedule', {
+                schedule: schedule,
+                event: clickEvent.originEvent
+            });
+        });
+    }
+};
+
+util.CustomEvents.mixin(DayGridClick);
+
+module.exports = DayGridClick;
+
+
+/***/ }),
+
+/***/ "./src/js/handler/daygrid/core.js":
+/*!****************************************!*\
+  !*** ./src/js/handler/daygrid/core.js ***!
+  \****************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/* eslint no-shadow: 0 */
+/**
+ * @fileoverview Base mixin object for handler/daygrid
+ * @author NHN FE Development Lab <dl_javascript@nhn.com>
+ */
+
+
+var util = __webpack_require__(/*! tui-code-snippet */ "tui-code-snippet");
+var domutil = __webpack_require__(/*! ../../common/domutil */ "./src/js/common/domutil.js");
+var domevent = __webpack_require__(/*! ../../common/domevent */ "./src/js/common/domevent.js");
+var common = __webpack_require__(/*! ../../common/common */ "./src/js/common/common.js");
+var datetime = __webpack_require__(/*! ../../common/datetime */ "./src/js/common/datetime.js");
+
+var mmax = Math.max,
+    mmin = Math.min;
+
+/**
+ * @mixin dayGridCore
+ */
+var dayGridCore = {
+    /**
+     * @param {view} view - view instance.
+     * @param {MouseEvent} mouseEvent - mouse schedule object.
+     * @returns {function|boolean} function that return schedule data by mouse events.
+     */
+    _retriveScheduleData: function(view, mouseEvent) {
+        var weekdayView = view.children.single(),
+            container,
+            datesInRange,
+            containerWidth,
+            mousePos,
+            dragStartXIndex,
+            grids,
+            range;
+
+        if (!weekdayView) {
+            return false;
+        }
+
+        container = weekdayView.container;
+        range = weekdayView.getRenderDateRange();
+        datesInRange = range.length;
+        grids = weekdayView.getRenderDateGrids();
+
+        containerWidth = domutil.getSize(container)[0];
+        mousePos = domevent.getMousePosition(mouseEvent, container);
+        dragStartXIndex = getX(grids, common.ratio(containerWidth, 100, mousePos[0]));
+
+        /**
+         * @param {MouseEvent} mouseEvent - mouse schedule in drag actions.
+         * @returns {object} schedule data.
+         */
+        return function(mouseEvent) {
+            var pos = domevent.getMousePosition(mouseEvent, container),
+                mouseX = pos[0],
+                xIndex = getX(grids, common.ratio(containerWidth, 100, mouseX));
+
+            // apply limitation of creation schedule X index.
+            xIndex = mmax(xIndex, 0);
+            xIndex = mmin(xIndex, datesInRange - 1);
+
+            return {
+                relatedView: view,
+                dragStartXIndex: dragStartXIndex,
+                datesInRange: datesInRange,
+                xIndex: xIndex,
+                triggerEvent: mouseEvent.type,
+                grids: grids,
+                range: range
+            };
+        };
+    },
+
+    /**
+     * @param {view} view - view instance.
+     * @param {TZDate} startDate - start date
+     * @returns {object} schedule data by mouse events.
+     */
+    _retriveScheduleDataFromDate: function(view, startDate) {
+        var weekdayView = view.children.single(),
+            xIndex = 0,
+            datesInRange,
+            dragStartXIndex = 0,
+            grids,
+            range;
+
+        if (!weekdayView) {
+            return false;
+        }
+
+        range = weekdayView.getRenderDateRange();
+        datesInRange = range.length;
+        grids = weekdayView.getRenderDateGrids();
+
+        util.forEach(range, function(date, index) {
+            if (datetime.isSameDate(date, startDate)) {
+                xIndex = dragStartXIndex = index;
+            }
+        });
+
+        // apply limitation of creation schedule X index.
+        xIndex = mmax(xIndex, 0);
+        xIndex = mmin(xIndex, datesInRange - 1);
+
+        return {
+            relatedView: view,
+            dragStartXIndex: dragStartXIndex,
+            datesInRange: datesInRange,
+            xIndex: xIndex,
+            triggerEvent: 'manual',
+            grids: grids,
+            range: range
+        };
+    }
+};
+
+/**
+ * Get the left index
+ * @param {Array} grids - grid size information
+ * @param {number} left - left position(percent)
+ * @returns {number} grid left index
+ */
+function getX(grids, left) {
+    var i = 0;
+    var length = grids.length;
+    var grid;
+    if (left < 0) {
+        left = 0;
+    }
+
+    for (; i < length; i += 1) {
+        grid = grids[i];
+        if (grid.left <= left && left <= (grid.left + grid.width)) {
+            return i;
+        }
+    }
+
+    return i;
+}
+
+module.exports = dayGridCore;
+
+
+/***/ }),
+
+/***/ "./src/js/handler/daygrid/creation.js":
+/*!********************************************!*\
+  !*** ./src/js/handler/daygrid/creation.js ***!
+  \********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/**
+ * @fileoverview Handler module for WeekdayInWeek view's creation actions.
+ * @author NHN FE Development Lab <dl_javascript@nhn.com>
+ */
+
+
+var util = __webpack_require__(/*! tui-code-snippet */ "tui-code-snippet");
+var config = __webpack_require__(/*! ../../config */ "./src/js/config.js");
+var datetime = __webpack_require__(/*! ../../common/datetime */ "./src/js/common/datetime.js");
+var common = __webpack_require__(/*! ../../common/common */ "./src/js/common/common.js");
+var domutil = __webpack_require__(/*! ../../common/domutil */ "./src/js/common/domutil.js");
+var domevent = __webpack_require__(/*! ../../common/domevent */ "./src/js/common/domevent.js");
+var dayGridCore = __webpack_require__(/*! ./core */ "./src/js/handler/daygrid/core.js");
+var DayGridCreationGuide = __webpack_require__(/*! ./creationGuide */ "./src/js/handler/daygrid/creationGuide.js");
+var TZDate = __webpack_require__(/*! ../../common/timezone */ "./src/js/common/timezone.js").Date;
+
+var CLICK_DELAY = 300;
+
+/**
+ * @constructor
+ * @implements {Handler}
+ * @mixes dayGridCore
+ * @mixes CutomEvents
+ * @param {Drag} [dragHandler] - Drag handler instance.
+ * @param {DayGrid} [view] - DayGrid view instance.
+ * @param {Base} [controller] - Base controller instance.
+ * @param {Options} [options] - calendar Options
+ */
+function DayGridCreation(dragHandler, view, controller, options) {
+    /**
+     * Drag handler instance.
+     * @type {Drag}
+     */
+    this.dragHandler = dragHandler;
+
+    /**
+     * view instance.
+     * @type {DayGrid}
+     */
+    this.view = view;
+
+    /**
+     * Base controller instance.
+     * @type {Base}
+     */
+    this.controller = controller;
+
+    /**
+     * @type {function}
+     */
+    this.getScheduleDataFunc = null;
+
+    /**
+     * @type {DayGridCreationGuide}
+     */
+    this.guide = new DayGridCreationGuide(this);
+
+    /**
+     * @type {boolean}
+     */
+    this._requestOnClick = false;
+
+    /**
+     * @type {boolean}
+     */
+    this._disableDblClick = options.disableDblClick;
+
+    /**
+     * @type {boolean}
+     */
+    this._disableClick = options.disableClick;
+
+    dragHandler.on('dragStart', this._onDragStart, this);
+    dragHandler.on('click', this._onClick, this);
+
+    if (this._disableDblClick) {
+        CLICK_DELAY = 0;
+    } else {
+        domevent.on(view.container, 'dblclick', this._onDblClick, this);
+    }
+}
+
+/**
+ * Destroy method
+ */
+DayGridCreation.prototype.destroy = function() {
+    this.guide.destroy();
+    this.dragHandler.off(this);
+
+    if (this.view && this.view.container) {
+        domevent.off(this.view.container, 'dblclick', this._onDblClick, this);
+    }
+
+    this.dragHandler = this.view = this.controller = this.getScheduleDataFunc = null;
+};
+
+/**
+ * Check dragstart target is expected conditions for this handler.
+ * @param {HTMLElement} target - dragstart event handler's target element.
+ * @returns {boolean|WeekdayInWeek} return WeekdayInWeek view instance when satiate condition.
+ */
+DayGridCreation.prototype.checkExpectedCondition = function(target) {
+    var cssClass = domutil.getClass(target).trim();
+    var excludeTarget = true;
+    var matches, schedulesElement;
+
+    if (domutil.closest(target, config.classname('.weekday-exceed-in-week'))
+        || domutil.closest(target, config.classname('.weekday-collapse-btn'))
+    ) {
+        return false;
+    }
+
+    if (domutil.closest(target, config.classname('.weekday-schedule-block'), excludeTarget)) {
+        return false;
+    }
+
+    schedulesElement = domutil.closest(target, config.classname('.weekday-schedules'));
+    if (!schedulesElement && cssClass !== config.classname('weekday-schedules')) {
+        return false;
+    }
+
+    target = schedulesElement ? schedulesElement.parentNode : target.parentNode;
+    cssClass = domutil.getClass(target);
+    matches = cssClass.match(config.daygrid.getViewIDRegExp);
+
+    if (!matches || matches.length < 2) {
+        return false;
+    }
+
+    return util.pick(this.view.children.items, matches[1]);
+};
+
+/**
+ * Request schedule model creation to controller by custom schedules.
+ * @fires {DayGridCreation#beforeCreateSchedule}
+ * @param {object} scheduleData - schedule data from DayGridCreation module.
+ */
+DayGridCreation.prototype._createSchedule = function(scheduleData) {
+    var dateRange = scheduleData.range,
+        startXIndex = scheduleData.dragStartXIndex,
+        xIndex = scheduleData.xIndex,
+        start, end;
+
+    // when inverse start, end then change it.
+    if (xIndex < startXIndex) {
+        startXIndex = xIndex + startXIndex;
+        xIndex = startXIndex - xIndex;
+        startXIndex = startXIndex - xIndex;
+    }
+
+    start = new TZDate(dateRange[startXIndex]);
+    end = datetime.end(dateRange[xIndex]);
+
+    /**
+     * @event {DayGridCreation#beforeCreateSchedule}
+     * @type {object}
+     * @property {string} category - schedule category
+     * @property {boolean} isAllDay - whether schedule is fired in view area?
+     * @property {Date} start - select start time
+     * @property {Date} end - select end time
+     * @property {DayGridCreationGuide} guide - DayGridCreationGuide instance
+     * @property {string} triggerEventName - event name
+     */
+    this.fire('beforeCreateSchedule', {
+        category: this.view.options.viewName,
+        isAllDay: true,
+        start: start,
+        end: end,
+        guide: this.guide,
+        triggerEventName: scheduleData.triggerEvent
+    });
+};
+
+/**
+ * DragStart event handler method.
+ * @emits DayGridCreation#dragstart
+ * @param {object} dragStartEventData - Drag#dragStart event handler schedule data.
+ */
+DayGridCreation.prototype._onDragStart = function(dragStartEventData) {
+    var target = dragStartEventData.target,
+        result = this.checkExpectedCondition(target),
+        getScheduleDataFunc,
+        scheduleData;
+
+    if (!result) {
+        return;
+    }
+
+    this.dragHandler.on({
+        drag: this._onDrag,
+        dragEnd: this._onDragEnd
+    }, this);
+
+    getScheduleDataFunc = this._retriveScheduleData(this.view, dragStartEventData.originEvent);
+    this.getScheduleDataFunc = getScheduleDataFunc;
+
+    scheduleData = getScheduleDataFunc(dragStartEventData.originEvent);
+
+    /**
+     * @event DayGridCreation#dragstart
+     * @type {object}
+     * @property {DayGridView} relatedView - view instance.
+     * @property {number} datesInRange - date count of this view.
+     * @property {number} dragStartXIndex - index number of dragstart grid index.
+     * @property {number} xIndex - index number of mouse positions.
+     */
+    this.fire('dragstart', scheduleData);
+};
+
+/**
+ * Drag event handler method.
+ * @emits DayGridCreation#drag
+ * @param {object} dragEventData - Drag#drag event handler scheduledata.
+ */
+DayGridCreation.prototype._onDrag = function(dragEventData) {
+    var getScheduleDataFunc = this.getScheduleDataFunc,
+        scheduleData;
+
+    if (!getScheduleDataFunc) {
+        return;
+    }
+
+    scheduleData = getScheduleDataFunc(dragEventData.originEvent);
+
+    /**
+     * @event DayGridCreation#drag
+     * @type {object}
+     * @property {DayGridView} relatedView - view instance.
+     * @property {number} datesInRange - date count of this view.
+     * @property {number} dragStartXIndex - index number of dragstart grid index.
+     * @property {number} xIndex - index number of mouse positions.
+     */
+    this.fire('drag', scheduleData);
+};
+
+/**
+ * DragEnd event hander method.
+ * @emits DayGridCreation#dragend
+ * @param {object} dragEndEventData - Drag#dragEnd event handler data.
+ * @param {string} [overrideEventName] - override emitted event name when supplied.
+ */
+DayGridCreation.prototype._onDragEnd = function(dragEndEventData, overrideEventName) {
+    var getScheduleDataFunc = this.getScheduleDataFunc;
+    var scheduleData;
+
+    if (!getScheduleDataFunc) {
+        return;
+    }
+
+    this.dragHandler.off({
+        drag: this._onDrag,
+        dragEnd: this._onDragEnd
+    }, this);
+
+    scheduleData = getScheduleDataFunc(dragEndEventData.originEvent);
+
+    this._createSchedule(scheduleData);
+
+    /**
+     * @event DayGridCreation#dragend
+     * @type {object}
+     * @property {DayGridView} relatedView - view instance.
+     * @property {number} datesInRange - date count of this view.
+     * @property {number} dragStartXIndex - index number of dragstart grid index.
+     * @property {number} xIndex - index number of mouse positions.
+     */
+    this.fire(overrideEventName || 'dragend', scheduleData);
+
+    this.getScheduleDataFunc = null;
+};
+
+/**
+ * Click event handler method.
+ * @emits DayGridCreation#click
+ * @param {object} clickEventData - Drag#click event handler data.
+ */
+DayGridCreation.prototype._onClick = function(clickEventData) {
+    var self = this;
+    var getScheduleDataFunc, scheduleData;
+
+    if (!this.checkExpectedCondition(clickEventData.target) || this._disableClick) {
+        return;
+    }
+
+    getScheduleDataFunc = this._retriveScheduleData(this.view, clickEventData.originEvent);
+    scheduleData = getScheduleDataFunc(clickEventData.originEvent);
+
+    this._requestOnClick = true;
+    setTimeout(function() {
+        if (self._requestOnClick) {
+            self.fire('click', scheduleData);
+            self._createSchedule(scheduleData);
+        }
+        self._requestOnClick = false;
+    }, CLICK_DELAY);
+};
+
+/**
+ * Dblclick event handler method.
+ * @emits DayGridCreation#click
+ * @param {object} clickEventData - Drag#Click event handler data.
+ */
+DayGridCreation.prototype._onDblClick = function(clickEventData) {
+    var getScheduleDataFunc, scheduleData;
+
+    if (!this.checkExpectedCondition(clickEventData.target)) {
+        return;
+    }
+
+    getScheduleDataFunc = this._retriveScheduleData(this.view, clickEventData);
+    scheduleData = getScheduleDataFunc(clickEventData);
+
+    this.fire('click', scheduleData);
+
+    this._createSchedule(scheduleData);
+
+    this._requestOnClick = false;
+};
+
+/**
+ * Invoke creation click
+ * @param {Schedule} schedule - schedule instance
+ */
+DayGridCreation.prototype.invokeCreationClick = function(schedule) {
+    var scheduleData = this._retriveScheduleDataFromDate(this.view, schedule.start);
+
+    this.fire('click', scheduleData);
+
+    this._createSchedule(scheduleData);
+};
+
+common.mixin(dayGridCore, DayGridCreation);
+util.CustomEvents.mixin(DayGridCreation);
+
+module.exports = DayGridCreation;
+
+
+/***/ }),
+
+/***/ "./src/js/handler/daygrid/creationGuide.js":
+/*!*************************************************!*\
+  !*** ./src/js/handler/daygrid/creationGuide.js ***!
+  \*************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/**
+ * @fileoverview Guide element for DayGrid.Creation
+ * @author NHN FE Development Lab <dl_javascript@nhn.com>
+ */
+
+
+var config = __webpack_require__(/*! ../../config */ "./src/js/config.js");
+var domutil = __webpack_require__(/*! ../../common/domutil */ "./src/js/common/domutil.js");
+var reqAnimFrame = __webpack_require__(/*! ../../common/reqAnimFrame */ "./src/js/common/reqAnimFrame.js");
+
+/**
+ * Class for DayGrid.Creation dragging effect.
+ * @constructor
+ * @param {DayGridCreation} creation - instance of DayGridCreation.
+ */
+function DayGridCreationGuide(creation) {
+    /**
+     * @type {DayGridCreation}
+     */
+    this.creation = creation;
+
+    /**
+     * @type {HTMLDIVElement}
+     */
+    this.scheduleContainer = null;
+
+    /**
+     * @type {HTMLDIVElement}
+     */
+    this.guideElement = document.createElement('div');
+
+    this.initializeGuideElement();
+    this.applyTheme(creation.controller.theme);
+
+    creation.on({
+        dragstart: this._createGuideElement,
+        drag: this._onDrag,
+        click: this._createGuideElement
+    }, this);
+}
+
+/**
+ * Destroy method
+ */
+DayGridCreationGuide.prototype.destroy = function() {
+    this.clearGuideElement();
+    this.creation.off(this);
+    this.creation = this.scheduleContainer = this.guideElement = null;
+};
+
+/**
+ * initialize guide element's default style.
+ */
+DayGridCreationGuide.prototype.initializeGuideElement = function() {
+    domutil.addClass(this.guideElement, config.classname('daygrid-guide-creation-block'));
+};
+
+/**
+ * Drag event handler
+ * @param {object} scheduleData - schedule data from DayGrid.Creation handler.
+ */
+DayGridCreationGuide.prototype._onDrag = function(scheduleData) {
+    this._refreshGuideElement(scheduleData, true);
+};
+
+/**
+ * Get element width based on narrowWeekend
+ * @param {number} dragStartIndex - grid start index
+ * @param {number} dragEndIndex - grid end index
+ * @param {Array} grids - dates information
+ * @returns {number} element width
+ */
+DayGridCreationGuide.prototype._getGuideWidth = function(dragStartIndex, dragEndIndex, grids) {
+    var width = 0;
+    var i = dragStartIndex;
+    for (; i <= dragEndIndex; i += 1) {
+        width += grids[i] ? grids[i].width : 0;
+    }
+
+    return width;
+};
+
+/**
+ * Refresh guide element.
+ * @param {object} scheduleData - schedule data from DayGrid.Creation handler.
+ * @param {boolean} defer - If set to true, set style in the next frame
+ */
+DayGridCreationGuide.prototype._refreshGuideElement = function(scheduleData, defer) {
+    var guideElement = this.guideElement,
+        data = scheduleData,
+        dragStartXIndex = data.dragStartXIndex < data.xIndex ? data.dragStartXIndex : data.xIndex,
+        dragEndXIndex = data.dragStartXIndex < data.xIndex ? data.xIndex : data.dragStartXIndex,
+        leftPercent,
+        widthPercent;
+
+    leftPercent = data.grids[dragStartXIndex] ? data.grids[dragStartXIndex].left : 0;
+    widthPercent = this._getGuideWidth(dragStartXIndex, dragEndXIndex, data.grids);
+
+    /** eslint-disable require-jsdoc */
+    function setStyle() {
+        guideElement.style.display = 'block';
+        guideElement.style.left = leftPercent + '%';
+        guideElement.style.width = widthPercent + '%';
+    }
+
+    if (defer) {
+        reqAnimFrame.requestAnimFrame(setStyle);
+    } else {
+        setStyle();
+    }
+};
+
+/**
+ * Clear guide element.
+ */
+DayGridCreationGuide.prototype.clearGuideElement = function() {
+    var guideElement = this.guideElement;
+
+    domutil.remove(guideElement);
+
+    guideElement.style.display = 'none';
+    guideElement.style.left = '';
+    guideElement.style.width = '';
+};
+
+/**
+ * Create guide element
+ * @param {object} dragStartEventData - schedule data object of DayGrid.Creation.
+ */
+DayGridCreationGuide.prototype._createGuideElement = function(dragStartEventData) {
+    var creation = this.creation,
+        view = creation.view,
+        container = view.container,
+        scheduleContainer = domutil.find(config.classname('.weekday-grid'), container);
+
+    scheduleContainer.appendChild(this.guideElement);
+    this._refreshGuideElement(dragStartEventData);
+};
+
+/**
+ * Drag event handler.
+ * @param {object} dragEventData - event data object of DayGrid.Creation.
+ */
+DayGridCreationGuide.prototype._onDrag = function(dragEventData) {
+    this._refreshGuideElement(dragEventData);
+};
+
+DayGridCreationGuide.prototype.applyTheme = function(theme) {
+    var style = this.guideElement.style;
+
+    style.backgroundColor = theme.common.creationGuide.backgroundColor;
+    style.border = theme.common.creationGuide.border;
+};
+
+module.exports = DayGridCreationGuide;
+
+
+/***/ }),
+
+/***/ "./src/js/handler/daygrid/move.js":
+/*!****************************************!*\
+  !*** ./src/js/handler/daygrid/move.js ***!
+  \****************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/**
+ * @fileoverview Move handler for DayGrid view.
+ * @author NHN FE Development Lab <dl_javascript@nhn.com>
+ */
+
+
+var util = __webpack_require__(/*! tui-code-snippet */ "tui-code-snippet");
+var config = __webpack_require__(/*! ../../config */ "./src/js/config.js");
+var common = __webpack_require__(/*! ../../common/common */ "./src/js/common/common.js");
+var domutil = __webpack_require__(/*! ../../common/domutil */ "./src/js/common/domutil.js");
+var dayGridCore = __webpack_require__(/*! ./core */ "./src/js/handler/daygrid/core.js");
+var DayGridMoveGuide = __webpack_require__(/*! ./moveGuide */ "./src/js/handler/daygrid/moveGuide.js");
+var TZDate = __webpack_require__(/*! ../../common/timezone */ "./src/js/common/timezone.js").Date;
+
+/**
+ * @constructor
+ * @implements {Handler}
+ * @mixes dayGridCore
+ * @mixes CustomEvents
+ * @param {Drag} dragHandler - Drag handler instance.
+ * @param {DayGrid} view - view instance.
+ * @param {Base} controller - Base controller instance.
+ */
+function DayGridMove(dragHandler, view, controller) {
+    /**
+     * Drag handler instance.
+     * @type {Drag}
+     */
+    this.dragHandler = dragHandler;
+
+    /**
+     * view instance.
+     * @type {DayGrid}
+     */
+    this.view = view;
+
+    /**
+     * Base controller instance.
+     * @type {Base}
+     */
+    this.controller = controller;
+
+    /**
+     * Temporary variable for dragstart event data.
+     * @type {object}
+     */
+    this._dragStart = null;
+
+    dragHandler.on({
+        dragStart: this._onDragStart
+    }, this);
+
+    /**
+     * @type {DayGridMoveGuide}
+     */
+    this.guide = new DayGridMoveGuide(this);
+}
+
+DayGridMove.prototype.destroy = function() {
+    this.guide.destroy();
+    this.dragHandler.off(this);
+    this.dragHandler = this.view = this.controller =
+        this.guide = this._dragStart = null;
+};
+
+/**
+ * Check dragstart target is expected conditions for this handler.
+ * @param {HTMLElement} target - dragstart event handler's target element.
+ * @returns {boolean|DayGridSchedule} return DayGridSchedule view instance when satiate condition.
+ */
+DayGridMove.prototype.checkExpectedCondition = function(target) {
+    var cssClass = domutil.getClass(target),
+        parentView,
+        matches;
+
+    if (~cssClass.indexOf(config.classname('weekday-resize-handle'))) {
+        return false;
+    }
+
+    parentView = domutil.closest(target, config.classname('.weekday'));
+
+    if (!parentView) {
+        return false;
+    }
+
+    cssClass = domutil.getClass(parentView);
+    matches = cssClass.match(config.daygrid.getViewIDRegExp);
+
+    if (!matches || matches.length < 2) {
+        return false;
+    }
+
+    return util.pick(this.view.children.items, matches[1]);
+};
+
+/**
+ * DragStart event handler method.
+ * @emits DayGridMove#dragstart
+ * @param {object} dragStartEventData - Drag#dragStart event handler event data.
+ */
+DayGridMove.prototype._onDragStart = function(dragStartEventData) {
+    var target = dragStartEventData.target,
+        result = this.checkExpectedCondition(target),
+        controller = this.controller,
+        excludeTarget = true,
+        scheduleBlockElement,
+        modelID,
+        targetModel,
+        getScheduleDataFunc,
+        scheduleData;
+
+    if (!result) {
+        return;
+    }
+
+    scheduleBlockElement = domutil.closest(target, config.classname('.weekday-schedule-block'), excludeTarget);
+    if (!scheduleBlockElement) {
+        return;
+    }
+
+    modelID = domutil.getData(scheduleBlockElement, 'id');
+    targetModel = controller.schedules.items[modelID];
+
+    if (!targetModel) {
+        return;
+    }
+
+    if (targetModel.isReadOnly) {
+        return;
+    }
+
+    getScheduleDataFunc = this._retriveScheduleData(this.view, dragStartEventData.originEvent);
+    this.getScheduleDataFunc = getScheduleDataFunc;
+    scheduleData = this._dragStart = getScheduleDataFunc(dragStartEventData.originEvent);
+
+    util.extend(scheduleData, {
+        scheduleBlockElement: scheduleBlockElement,
+        model: targetModel
+    });
+
+    this.dragHandler.on({
+        drag: this._onDrag,
+        dragEnd: this._onDragEnd,
+        click: this._onClick
+    }, this);
+
+    /**
+     * @event DayGridMove#dragstart
+     * @type {object}
+     * @property {DayGrid} relatedView - view instance.
+     * @property {number} datesInRange - date count of this view.
+     * @property {number} dragStartXIndex - index number of dragstart grid index.
+     * @property {number} xIndex - index number of mouse positions.
+     * @property {Schedule} model - data object of model isntance.
+     * @property {HTMLDivElement} scheduleBlockElement - target schedule block element.
+     */
+    this.fire('dragstart', scheduleData);
+};
+
+/**
+ * Drag event handler method.
+ * @emits DayGridMove#drag
+ * @param {object} dragEventData - Drag#drag event handler eventdata.
+ */
+DayGridMove.prototype._onDrag = function(dragEventData) {
+    var getScheduleDataFunc = this.getScheduleDataFunc;
+
+    if (!getScheduleDataFunc) {
+        return;
+    }
+
+    /**
+     * @schedule DayGridMove#drag
+     * @type {object}
+     * @property {DayGrid} relatedView - view instance.
+     * @property {number} datesInRange - date count of this view.
+     * @property {number} dragStartXIndex - index number of dragstart grid index.
+     * @property {number} xIndex - index number of mouse positions.
+     */
+    this.fire('drag', getScheduleDataFunc(dragEventData.originEvent));
+};
+
+/**
+ * Request update schedule model to base controller.
+ * @fires DayGridMove#beforeUpdateSchedule
+ * @param {object} scheduleData - schedule data from DayGridMove handler module.
+ */
+DayGridMove.prototype._updateSchedule = function(scheduleData) {
+    var schedule = scheduleData.targetModel,
+        dateOffset = scheduleData.xIndex - scheduleData.dragStartXIndex,
+        newStarts = new TZDate(schedule.start),
+        newEnds = new TZDate(schedule.end);
+
+    newStarts = newStarts.addDate(dateOffset);
+    newEnds = newEnds.addDate(dateOffset);
+
+    /**
+     * @event DayGridMove#beforeUpdateSchedule
+     * @type {object}
+     * @property {Schedule} schedule - The original schedule instance
+     * @property {Date} start - Deprecated: start time to update
+     * @property {Date} end - Deprecated: end time to update
+     * @property {object} changes - start and end time to update
+     *  @property {Date} start - start time to update
+     *  @property {Date} end - end time to update
+     */
+    this.fire('beforeUpdateSchedule', {
+        schedule: schedule,
+        changes: {
+            start: newStarts,
+            end: newEnds
+        },
+        start: newStarts,
+        end: newEnds
+    });
+};
+
+/**
+ * DragEnd event hander method.
+ * @emits DayGridMove#dragend
+ * @param {object} dragEndEventData - Drag#DragEnd event handler data.
+ * @param {string} [overrideEventName] - override emitted event name when supplied.
+ * @param {?boolean} skipUpdate - true then skip update schedule model.
+ */
+DayGridMove.prototype._onDragEnd = function(dragEndEventData, overrideEventName, skipUpdate) {
+    var getScheduleDataFunc = this.getScheduleDataFunc,
+        dragStart = this._dragStart,
+        scheduleData;
+
+    if (!getScheduleDataFunc || !dragStart) {
+        return;
+    }
+
+    this.dragHandler.off({
+        drag: this._onDrag,
+        dragEnd: this._onDragEnd,
+        click: this._onClick
+    }, this);
+
+    scheduleData = getScheduleDataFunc(dragEndEventData.originEvent);
+    util.extend(scheduleData, {
+        targetModel: dragStart.model
+    });
+
+    if (!skipUpdate) {
+        this._updateSchedule(scheduleData);
+    }
+
+    /**
+     * @event DayGridMove#dragend
+     * @type {object}
+     * @property {DayGrid} relatedView - view instance.
+     * @property {number} datesInRange - date count of this view.
+     * @property {number} dragStartXIndex - index number of dragstart grid index.
+     * @property {number} xIndex - index number of mouse positions.
+     */
+    this.fire(overrideEventName || 'dragend', scheduleData);
+
+    this.getScheduleDataFunc = this._dragStart = null;
+};
+
+/**
+ * Click event handler method.
+ * @emits DayGridMove#click
+ * @param {object} clickEventData - Drag#Click event handler data.
+ */
+DayGridMove.prototype._onClick = function(clickEventData) {
+    /**
+     * @event DayGridMove#click
+     * @type {object}
+     * @property {DayGrid} relatedView - view instance.
+     * @property {number} datesInRange - date count of this view.
+     * @property {number} dragStartXIndex - index number of dragstart grid index.
+     * @property {number} xIndex - index number of mouse positions.
+     */
+    this._onDragEnd(clickEventData, 'click', true);
+};
+
+common.mixin(dayGridCore, DayGridMove);
+util.CustomEvents.mixin(DayGridMove);
+
+module.exports = DayGridMove;
+
+
+/***/ }),
+
+/***/ "./src/js/handler/daygrid/moveGuide.js":
+/*!*********************************************!*\
+  !*** ./src/js/handler/daygrid/moveGuide.js ***!
+  \*********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/* WEBPACK VAR INJECTION */(function(global) {/**
+ * @fileoverview Effect module for DayGrid.Move
+ * @author NHN FE Development Lab <dl_javascript@nhn.com>
+ */
+
+
+var util = __webpack_require__(/*! tui-code-snippet */ "tui-code-snippet");
+var config = __webpack_require__(/*! ../../config */ "./src/js/config.js");
+var datetime = __webpack_require__(/*! ../../common/datetime */ "./src/js/common/datetime.js");
+var domutil = __webpack_require__(/*! ../../common/domutil */ "./src/js/common/domutil.js");
+var reqAnimFrame = __webpack_require__(/*! ../../common/reqAnimFrame */ "./src/js/common/reqAnimFrame.js");
+
+/**
+ * Class for DayGrid.Move dragging effect.
+ * @constructor
+ * @param {DayGridMove} daygridMove - instance of DayGridMove.
+ */
+function DayGridMoveGuide(daygridMove) {
+    /**
+     * @type {DayGridMove}
+     */
+    this.daygridMove = daygridMove;
+
+    /**
+     * The element that actually contains the event element
+     * @type {HTMLDIVElement}
+     */
+    this.scheduleContainer = null;
+
+    /**
+     * @type {number}
+     */
+    this._dragStartXIndex = null;
+
+    /**
+     * @type {HTMLDIVElement}
+     */
+    this.guideElement = null;
+
+    /**
+     * @type {HTMLElement[]}
+     */
+    this.elements = null;
+
+    daygridMove.on({
+        'dragstart': this._onDragStart,
+        'drag': this._onDrag,
+        'dragend': this._clearGuideElement,
+        'click': this._clearGuideElement
+    }, this);
+}
+
+/**
+ * Destroy method
+ */
+DayGridMoveGuide.prototype.destroy = function() {
+    this._clearGuideElement();
+    this.daygridMove.off(this);
+    this.daygridMove = this.scheduleContainer = this._dragStartXIndex =
+        this.elements = this.guideElement = null;
+};
+
+/**
+ * Clear guide element.
+ */
+DayGridMoveGuide.prototype._clearGuideElement = function() {
+    this._showOriginScheduleBlocks();
+
+    domutil.remove(this.guideElement);
+
+    if (!util.browser.msie) {
+        domutil.removeClass(global.document.body, config.classname('dragging'));
+    }
+
+    this._dragStartXIndex = this.getScheduleDataFunc = this.guideElement = null;
+};
+
+/**
+ * Dim element blocks
+ * @param {number} modelID - Schedule model instance ID
+ */
+DayGridMoveGuide.prototype._hideOriginScheduleBlocks = function(modelID) {
+    var className = config.classname('weekday-schedule-block-dragging-dim');
+    var scheduleBlocks = domutil.find(
+        config.classname('.weekday-schedule-block'),
+        this.daygridMove.view.container,
+        true
+    );
+
+    this.elements = util.filter(scheduleBlocks, function(schedule) {
+        return domutil.getData(schedule, 'id') === modelID;
+    });
+
+    util.forEach(this.elements, function(el) {
+        domutil.addClass(el, className);
+    });
+};
+
+/**
+ * Show element blocks
+ */
+DayGridMoveGuide.prototype._showOriginScheduleBlocks = function() {
+    var className = config.classname('weekday-schedule-block-dragging-dim');
+
+    util.forEach(this.elements, function(el) {
+        domutil.removeClass(el, className);
+    });
+};
+
+/**
+ * Highlight element blocks
+ * @param {Schedule} model - model
+ * @param {HTMLElement} parent - parent element
+ */
+DayGridMoveGuide.prototype._highlightScheduleBlocks = function(model, parent) {
+    var elements = domutil.find(config.classname('.weekday-schedule'), parent, true);
+
+    util.forEach(elements, function(el) {
+        el.style.margin = '0';
+
+        if (!model.isFocused) {
+            el.style.backgroundColor = model.dragBgColor;
+            el.style.borderLeftColor = model.borderColor;
+            el.style.color = '#ffffff';
+        }
+    });
+};
+
+/**
+ * Refresh guide element.
+ * @param {number} leftPercent - left percent of guide element.
+ * @param {number} widthPercent - width percent of guide element.
+ * @param {boolean} isExceededLeft - schedule start is faster then render start date?
+ * @param {boolean} isExceededRight - schedule end is later then render end date?
+ */
+DayGridMoveGuide.prototype.refreshGuideElement = function(leftPercent, widthPercent, isExceededLeft, isExceededRight) {
+    var guideElement = this.guideElement;
+
+    reqAnimFrame.requestAnimFrame(function() {
+        guideElement.style.left = leftPercent + '%';
+        guideElement.style.width = widthPercent + '%';
+
+        if (isExceededLeft) {
+            domutil.addClass(guideElement, config.classname('weekday-exceed-left'));
+        } else {
+            domutil.removeClass(guideElement, config.classname('weekday-exceed-left'));
+        }
+
+        if (isExceededRight) {
+            domutil.addClass(guideElement, config.classname('weekday-exceed-right'));
+        } else {
+            domutil.removeClass(guideElement, config.classname('weekday-exceed-right'));
+        }
+    });
+};
+
+/**
+ * Get schedule block information from schedule data.
+ *
+ * For example, there is single schedule has 10 length. but render range in view is 5 then
+ * rendered block must be cut out to render properly. in this case, this method return
+ * how many block are cut before rendering.
+ *
+ * @param {object} dragStartEventData - schedule data from DayGrid.Move handler.
+ * @returns {function} function that return schedule block information.
+ */
+DayGridMoveGuide.prototype._getScheduleBlockDataFunc = function(dragStartEventData) {
+    var model = dragStartEventData.model,
+        datesInRange = dragStartEventData.datesInRange,
+        range = dragStartEventData.range,
+        baseWidthPercent = (100 / datesInRange),
+        originScheduleStarts = datetime.start(model.start),
+        originScheduleEnds = datetime.end(model.end),
+        renderStartDate = datetime.start(range[0]),
+        renderEndDate = datetime.end(range[range.length - 1]),
+        fromLeft = Math.ceil((originScheduleStarts.getTime() -
+            renderStartDate.getTime()) / datetime.MILLISECONDS_PER_DAY) || 0,
+        fromRight = Math.ceil((originScheduleEnds.getTime() -
+            renderEndDate.getTime()) / datetime.MILLISECONDS_PER_DAY) || 0;
+
+    return function(indexOffset) {
+        return {
+            baseWidthPercent: baseWidthPercent,
+            fromLeft: fromLeft + indexOffset,
+            fromRight: fromRight + indexOffset
+        };
+    };
+};
+
+/**
+ * DragStart event handler.
+ * @param {object} dragStartEventData - schedule data.
+ */
+DayGridMoveGuide.prototype._onDragStart = function(dragStartEventData) {
+    var container = this.daygridMove.view.container,
+        guideElement = this.guideElement = dragStartEventData.scheduleBlockElement.cloneNode(true),
+        scheduleContainer;
+
+    if (!util.browser.msie) {
+        domutil.addClass(global.document.body, config.classname('dragging'));
+    }
+
+    this._hideOriginScheduleBlocks(String(dragStartEventData.model.cid()));
+
+    scheduleContainer = domutil.find(config.classname('.weekday-schedules'), container);
+    domutil.appendHTMLElement('div', guideElement, config.classname('weekday-schedule-cover'));
+    scheduleContainer.appendChild(guideElement);
+
+    this._dragStartXIndex = dragStartEventData.xIndex;
+    this.getScheduleDataFunc = this._getScheduleBlockDataFunc(dragStartEventData);
+
+    this._highlightScheduleBlocks(dragStartEventData.model, guideElement);
+};
+
+/**
+ * Drag event handler.
+ * @param {object} dragEventData - schedule data.
+ */
+DayGridMoveGuide.prototype._onDrag = function(dragEventData) {
+    var getScheduleDataFunc = this.getScheduleDataFunc,
+        dragStartXIndex = this._dragStartXIndex,
+        datesInRange = dragEventData.datesInRange,
+        grids = dragEventData.grids,
+        scheduleData,
+        isExceededLeft,
+        isExceededRight,
+        originLength,
+        leftIndex,
+        size,
+        newLeft,
+        newWidth;
+
+    if (!getScheduleDataFunc) {
+        return;
+    }
+
+    scheduleData = getScheduleDataFunc(dragEventData.xIndex - dragStartXIndex);
+    isExceededLeft = scheduleData.fromLeft < 0;
+    isExceededRight = scheduleData.fromRight > 0;
+
+    leftIndex = Math.max(0, scheduleData.fromLeft);
+    originLength = (scheduleData.fromLeft * -1) + (datesInRange + scheduleData.fromRight);
+    size = isExceededLeft ? (originLength + scheduleData.fromLeft) : originLength;
+    size = isExceededRight ? (size - scheduleData.fromRight) : size;
+
+    newLeft = grids[leftIndex] ? grids[leftIndex].left : 0;
+    newWidth = getScheduleBlockWidth(leftIndex, size, grids);
+
+    this.refreshGuideElement(newLeft, newWidth, isExceededLeft, isExceededRight);
+};
+
+/**
+ * Get schedule width based on grids
+ * @param {number} left - left index
+ * @param {number} size - schedule width
+ * @param {Array} grids - dates information
+ * @returns {number} element width
+ */
+function getScheduleBlockWidth(left, size, grids) {
+    var width = 0;
+    var i = 0;
+    var length = grids.length;
+    for (; i < size; i += 1) {
+        left = (left + i) % length;
+        if (left < length) {
+            width += grids[left] ? grids[left].width : 0;
+        }
+    }
+
+    return width;
+}
+
+module.exports = DayGridMoveGuide;
+
+/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../../node_modules/webpack/buildin/global.js */ "./node_modules/webpack/buildin/global.js")))
+
+/***/ }),
+
+/***/ "./src/js/handler/daygrid/resize.js":
+/*!******************************************!*\
+  !*** ./src/js/handler/daygrid/resize.js ***!
+  \******************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/**
+ * @fileoverview Resize handler module for DayGrid view.
+ * @author NHN FE Development Lab <dl_javascript@nhn.com>
+ */
+
+
+var util = __webpack_require__(/*! tui-code-snippet */ "tui-code-snippet");
+var config = __webpack_require__(/*! ../../config */ "./src/js/config.js");
+var datetime = __webpack_require__(/*! ../../common/datetime */ "./src/js/common/datetime.js");
+var domutil = __webpack_require__(/*! ../../common/domutil */ "./src/js/common/domutil.js");
+var common = __webpack_require__(/*! ../../common/common */ "./src/js/common/common.js");
+var dayGridCore = __webpack_require__(/*! ./core */ "./src/js/handler/daygrid/core.js");
+var DayGridResizeGuide = __webpack_require__(/*! ./resizeGuide */ "./src/js/handler/daygrid/resizeGuide.js");
+var TZDate = __webpack_require__(/*! ../../common/timezone */ "./src/js/common/timezone.js").Date;
+
+/**
+ * @constructor
+ * @implements {Handler}
+ * @mixes dayGridCore
+ * @mixes CustomEvents
+ * @param {Drag} [dragHandler] - Drag handler instance.
+ * @param {DayGrid} [view] - view instance.
+ * @param {Base} [controller] - Base controller instance.
+ */
+function DayGridResize(dragHandler, view, controller) {
+    /**
+     * Drag handler instance.
+     * @type {Drag}
+     */
+    this.dragHandler = dragHandler;
+
+    /**
+     * view instance.
+     * @type {DayGrid}
+     */
+    this.view = view;
+
+    /**
+     * Base controller instance.
+     * @type {Base}
+     */
+    this.controller = controller;
+
+    /**
+     * Temporary variable for dragStart event data.
+     * @type {object}
+     */
+    this._dragStart = null;
+
+    dragHandler.on({
+        dragStart: this._onDragStart
+    }, this);
+
+    /**
+     * @type {DayGridResizeGuide}
+     */
+    this.guide = new DayGridResizeGuide(this);
+}
+
+/**
+ * Destroy method
+ */
+DayGridResize.prototype.destroy = function() {
+    this.guide.destroy();
+    this.dragHandler.off(this);
+    this.dragHandler = this.view = this.controller =
+        this.guide = this._dragStart = null;
+};
+
+/**
+ * Check dragstart target is expected conditions for this handler.
+ * @param {HTMLElement} target - dragstart event handler's target element.
+ * @returns {boolean|WeekdayInWeek} return WeekdayInWeek view instance when satiate condition.
+ */
+DayGridResize.prototype.checkExpectedCondition = function(target) {
+    var cssClass = domutil.getClass(target),
+        matches;
+
+    if (!~cssClass.indexOf(config.classname('weekday-resize-handle'))) {
+        return false;
+    }
+
+    target = domutil.closest(target, config.classname('.weekday'));
+
+    if (!target) {
+        return false;
+    }
+
+    cssClass = domutil.getClass(target);
+    matches = cssClass.match(config.daygrid.getViewIDRegExp);
+
+    if (!matches || matches.length < 2) {
+        return false;
+    }
+
+    return util.pick(this.view.children.items, matches[1]);
+};
+
+/**
+ * DragStart event handler.
+ * @emits DayGridResize#dragstart
+ * @param {object} dragStartEventData - schedule data.
+ */
+DayGridResize.prototype._onDragStart = function(dragStartEventData) {
+    var target = dragStartEventData.target,
+        result = this.checkExpectedCondition(target),
+        controller = this.controller,
+        scheduleBlockElement,
+        modelID,
+        targetModel,
+        getScheduleDataFunc,
+        scheduleData;
+
+    if (!result) {
+        return;
+    }
+
+    scheduleBlockElement = domutil.closest(target, config.classname('.weekday-schedule-block'));
+    modelID = domutil.getData(scheduleBlockElement, 'id');
+    targetModel = controller.schedules.items[modelID];
+
+    if (!targetModel) {
+        return;
+    }
+
+    getScheduleDataFunc = this._retriveScheduleData(this.view, dragStartEventData.originEvent);
+    this.getScheduleDataFunc = getScheduleDataFunc;
+    scheduleData = this._dragStart = getScheduleDataFunc(dragStartEventData.originEvent);
+
+    util.extend(scheduleData, {
+        scheduleBlockElement: scheduleBlockElement,
+        model: targetModel
+    });
+
+    this.dragHandler.on({
+        drag: this._onDrag,
+        dragEnd: this._onDragEnd,
+        click: this._onClick
+    }, this);
+
+    /**
+     * @event DayGridResize#dragstart
+     * @type {object}
+     * @property {View} relatedView - view instance.
+     * @property {number} datesInRange - date count of this view.
+     * @property {number} dragStartXIndex - index number of dragstart grid index.
+     * @property {number} xIndex - index number of mouse positions.
+     * @property {Schedule} model - data object of model isntance.
+     * @property {HTMLDivElement} scheduleBlockElement - target schedule block element.
+     */
+    this.fire('dragstart', scheduleData);
+};
+
+/**
+ * Drag event handler method.
+ * @emits DayGridResize#drag
+ * @param {object} dragEventData - Drag#drag event handler scheduledata.
+ */
+DayGridResize.prototype._onDrag = function(dragEventData) {
+    var getScheduleDataFunc = this.getScheduleDataFunc;
+
+    if (!getScheduleDataFunc) {
+        return;
+    }
+
+    /**
+     * @event DayGridResize#drag
+     * @type {object}
+     * @property {View} relatedView - view instance.
+     * @property {number} datesInRange - date count of this view.
+     * @property {number} dragStartXIndex - index number of dragstart grid index.
+     * @property {number} xIndex - index number of mouse positions.
+     */
+    this.fire('drag', getScheduleDataFunc(dragEventData.originEvent));
+};
+
+/**
+ * Request update schedule instance to base controller.
+ * @fires DayGridResize#beforeUpdateSchedule
+ * @param {object} scheduleData - schedule data from DayGridResize handler.
+ */
+DayGridResize.prototype._updateSchedule = function(scheduleData) {
+    var schedule = scheduleData.targetModel,
+        dateOffset = scheduleData.xIndex - scheduleData.dragStartXIndex,
+        newEnds = new TZDate(schedule.end);
+    var changes;
+
+    newEnds = newEnds.addDate(dateOffset);
+    newEnds = new TZDate(common.maxDate(datetime.end(schedule.start), newEnds));
+
+    changes = common.getScheduleChanges(
+        schedule,
+        ['end'],
+        {end: newEnds}
+    );
+
+    /**
+     * @event DayGridResize#beforeUpdateSchedule
+     * @type {object}
+     * @property {Schedule} schedule - The original schedule instance
+     * @property {Date} start - Deprecated: start time to update
+     * @property {Date} end - Deprecated: end time to update
+     * @property {object} changes - end time to update
+     *  @property {date} end - end time to update
+     */
+    this.fire('beforeUpdateSchedule', {
+        schedule: schedule,
+        changes: changes,
+        start: schedule.getStarts(),
+        end: newEnds
+    });
+};
+
+/**
+ * DragEnd event hander method.
+ * @emits DayGridResize#dragend
+ * @param {object} dragEndEventData - Drag#DragEnd event handler data.
+ * @param {string} [overrideEventName] - override emitted event name when supplied.
+ * @param {?boolean} skipUpdate - true then skip update schedule model.
+ */
+DayGridResize.prototype._onDragEnd = function(dragEndEventData, overrideEventName, skipUpdate) {
+    var getScheduleDataFunc = this.getScheduleDataFunc,
+        dragStart = this._dragStart,
+        scheduleData;
+
+    if (!getScheduleDataFunc || !dragStart) {
+        return;
+    }
+
+    this.dragHandler.off({
+        drag: this._onDrag,
+        dragEnd: this._onDragEnd,
+        click: this._onClick
+    }, this);
+
+    scheduleData = getScheduleDataFunc(dragEndEventData.originEvent);
+    util.extend(scheduleData, {
+        targetModel: dragStart.model
+    });
+
+    if (!skipUpdate) {
+        this._updateSchedule(scheduleData);
+    }
+
+    /**
+     * @event DayGridResize#dragend
+     * @type {object}
+     * @property {View} relatedView - view instance.
+     * @property {number} datesInRange - date count of this view.
+     * @property {number} dragStartXIndex - index number of dragstart grid index.
+     * @property {number} xIndex - index number of mouse positions.
+     */
+    this.fire(overrideEventName || 'dragend', scheduleData);
+
+    this.getScheduleDataFunc = this._dragStart = null;
+};
+
+/**
+ * Click event handler method.
+ * @emits DayGridResize#click
+ * @param {object} clickEventData - Drag#Click event handler data.
+ */
+DayGridResize.prototype._onClick = function(clickEventData) {
+    /**
+     * @event DayGridResize#click
+     * @type {object}
+     * @property {View} relatedView - view instance.
+     * @property {number} datesInRange - date count of this view.
+     * @property {number} dragStartXIndex - index number of dragstart grid index.
+     * @property {number} xIndex - index number of mouse positions.
+     */
+    this._onDragEnd(clickEventData, 'click', true);
+};
+
+common.mixin(dayGridCore, DayGridResize);
+util.CustomEvents.mixin(DayGridResize);
+
+module.exports = DayGridResize;
+
+
+/***/ }),
+
+/***/ "./src/js/handler/daygrid/resizeGuide.js":
+/*!***********************************************!*\
+  !*** ./src/js/handler/daygrid/resizeGuide.js ***!
+  \***********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/* WEBPACK VAR INJECTION */(function(global) {/**
+ * @fileoverview Resize Guide module.
+ * @author NHN FE Development Lab <dl_javascript@nhn.com>
+ */
+
+
+var util = __webpack_require__(/*! tui-code-snippet */ "tui-code-snippet");
+var config = __webpack_require__(/*! ../../config */ "./src/js/config.js");
+var domutil = __webpack_require__(/*! ../../common/domutil */ "./src/js/common/domutil.js");
+var datetime = __webpack_require__(/*! ../../common/datetime */ "./src/js/common/datetime.js");
+var reqAnimFrame = __webpack_require__(/*! ../../common/reqAnimFrame */ "./src/js/common/reqAnimFrame.js");
+
+/**
+ * @constructor
+ * @param {DayGridResize} resizeHandler - instance of DayGridResize
+ */
+function DayGridResizeGuide(resizeHandler) {
+    /**
+     * @type {DayGridResize}
+     */
+    this.resizeHandler = resizeHandler;
+
+    /**
+     * The element that actually contains the event element
+     * @type {HTMLDIVElement}
+     */
+    this.scheduleContainer = null;
+
+    /**
+     * @type {function}
+     */
+    this.getScheduleDataFunc = null;
+
+    /**
+     * @type {HTMLDIVElement}
+     */
+    this.guideElement = null;
+
+    /**
+     * @type {HTMLDIVElement}
+     */
+    this.scheduleBlockElement = null;
+
+    resizeHandler.on({
+        'dragstart': this._onDragStart,
+        'drag': this._onDrag,
+        'dragend': this._clearGuideElement,
+        'click': this._clearGuideElement
+    }, this);
+}
+
+/**
+ * Destroy method
+ */
+DayGridResizeGuide.prototype.destroy = function() {
+    this._clearGuideElement();
+    this.resizeHandler.off(this);
+    this.resizeHandler = this.scheduleContainer = this.getScheduleDataFunc =
+        this.guideElement = this.scheduleBlockElement = null;
+};
+
+/**
+ * Clear guide element.
+ */
+DayGridResizeGuide.prototype._clearGuideElement = function() {
+    domutil.remove(this.guideElement);
+
+    if (!util.browser.msie) {
+        domutil.removeClass(global.document.body, config.classname('resizing-x'));
+    }
+
+    if (this.scheduleBlockElement) {
+        domutil.removeClass(this.scheduleBlockElement, config.classname('weekday-schedule-block-dragging-dim'));
+    }
+
+    this.getScheduleDataFunc = null;
+};
+
+/**
+ * Refresh guide element
+ * @param {number} newWidth - new width percentage value to resize guide element.
+ */
+DayGridResizeGuide.prototype.refreshGuideElement = function(newWidth) {
+    var guideElement = this.guideElement;
+
+    reqAnimFrame.requestAnimFrame(function() {
+        guideElement.style.width = newWidth + '%';
+    });
+};
+
+/**
+ * Return function that calculate guide element's new width percentage value.
+ * @param {object} dragStartEventData - dragstart schedule data.
+ * @returns {function} return function that calculate guide element new width percentage.
+ */
+DayGridResizeGuide.prototype.getGuideElementWidthFunc = function(dragStartEventData) {
+    var model = dragStartEventData.model,
+        viewOptions = this.resizeHandler.view.options,
+        fromLeft = Math.ceil(
+            (model.start - viewOptions.renderStartDate) / datetime.MILLISECONDS_PER_DAY
+        ) || 0,
+        grids = dragStartEventData.grids;
+
+    return function(xIndex) {
+        var width = 0;
+        var i = 0;
+        var length = grids.length;
+        width += grids[fromLeft] ? grids[fromLeft].width : 0;
+
+        for (; i < length; i += 1) {
+            if (i > fromLeft && i <= xIndex) {
+                width += grids[i] ? grids[i].width : 0;
+            }
+        }
+
+        return width;
+    };
+};
+
+/**
+ * DragStart event handler.
+ * @param {object} dragStartEventData - schedule data.
+ */
+DayGridResizeGuide.prototype._onDragStart = function(dragStartEventData) {
+    var container = this.resizeHandler.view.container,
+        scheduleBlockElement = this.scheduleBlockElement = dragStartEventData.scheduleBlockElement,
+        guideElement = this.guideElement = scheduleBlockElement.cloneNode(true),
+        scheduleContainer;
+
+    if (!util.browser.msie) {
+        domutil.addClass(global.document.body, config.classname('resizing-x'));
+    }
+
+    scheduleContainer = domutil.find(config.classname('.weekday-schedules'), container);
+    domutil.addClass(guideElement, config.classname('daygrid-guide-move'));
+    domutil.addClass(scheduleBlockElement, config.classname('weekday-schedule-block-dragging-dim'));
+
+    scheduleContainer.appendChild(guideElement);
+
+    this.getScheduleDataFunc = this.getGuideElementWidthFunc(dragStartEventData);
+};
+
+/**
+ * Drag event handler.
+ * @param {object} dragEventData - schedule data.
+ */
+DayGridResizeGuide.prototype._onDrag = function(dragEventData) {
+    var func = this.getScheduleDataFunc;
+
+    if (!func) {
+        return;
+    }
+
+    this.refreshGuideElement(func(dragEventData.xIndex));
+};
+
+module.exports = DayGridResizeGuide;
+
+/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../../node_modules/webpack/buildin/global.js */ "./node_modules/webpack/buildin/global.js")))
+
+/***/ }),
+
+/***/ "./src/js/handler/drag.js":
+/*!********************************!*\
+  !*** ./src/js/handler/drag.js ***!
+  \********************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/* WEBPACK VAR INJECTION */(function(global) {/**
+ * @fileoverview Drag handler for calendar.
+ * @author NHN FE Development Lab <dl_javascript@nhn.com>
+ */
+
+
+var util = __webpack_require__(/*! tui-code-snippet */ "tui-code-snippet");
+var domutil = __webpack_require__(/*! ../common/domutil */ "./src/js/common/domutil.js");
+var domevent = __webpack_require__(/*! ../common/domevent */ "./src/js/common/domevent.js");
+var config = __webpack_require__(/*! ../config */ "./src/js/config.js");
+
+/**
+ * @constructor
+ * @mixes CustomEvents
+ * @param {object} options - options for drag handler
+ * @param {number} [options.distance=10] - distance in pixels after mouse must move before dragging should start
+ * @param {function} [options.exclude] - filter function for don't fire drag events that specific conditions.
+ * @param {HTMLElement} container element to watching drag interaction.
+ */
+function Drag(options, container) {
+    domevent.on(container, 'mousedown', this._onMouseDown, this);
+
+    this.options = util.extend({
+        distance: 10,
+        exclude: null
+    }, options);
+
+    /**
+     * @type {HTMLElement}
+     */
+    this.container = container;
+
+    /**
+     * Flag for represent current dragging session has been cancelled for exclude option.
+     * @type {boolean}
+     */
+    this._cancelled = false;
+
+    /**
+     * @type {boolean}
+     */
+    this._isMoved = false;
+
+    /**
+     * dragging distance in pixel between mousedown and firing dragStart events
+     * @type {number}
+     */
+    this._distance = 0;
+
+    /**
+     * @type {boolean}
+     */
+    this._dragStartFired = false;
+
+    /**
+     * @type {object}
+     */
+    this._dragStartEventData = null;
+}
+
+/**
+ * Destroy method.
+ */
+Drag.prototype.destroy = function() {
+    domevent.off(this.container, 'mousedown', this._onMouseDown, this);
+    this._isMoved = null;
+    this.container = null;
+};
+
+/**
+ * Clear cache data for single dragging session.
+ */
+Drag.prototype._clearData = function() {
+    this._cancelled = false;
+    this._distance = 0;
+    this._isMoved = false;
+    this._dragStartFired = false;
+    this._dragStartEventData = null;
+};
+
+/**
+ * Toggle events for mouse dragging.
+ * @param {boolean} toBind - bind events related with dragging when supplied "true"
+ */
+Drag.prototype._toggleDragEvent = function(toBind) {
+    var container = this.container,
+        domMethod,
+        method;
+
+    if (toBind) {
+        domMethod = 'on';
+        method = 'disable';
+    } else {
+        domMethod = 'off';
+        method = 'enable';
+    }
+
+    domutil[method + 'TextSelection'](container, preventDefaultWhenNotPopup);
+    domutil[method + 'ImageDrag'](container, preventDefaultWhenNotPopup);
+    domevent[domMethod](global.document, {
+        mousemove: this._onMouseMove,
+        mouseup: this._onMouseUp
+    }, this);
+};
+
+/**
+ * Normalize mouse event object.
+ * @param {MouseEvent} mouseEvent - mouse event object.
+ * @returns {object} normalized mouse event data.
+ */
+Drag.prototype._getEventData = function(mouseEvent) {
+    return {
+        target: domevent.getEventTarget(mouseEvent),
+        originEvent: mouseEvent
+    };
+};
+
+/**
+ * MouseDown DOM event handler.
+ * @param {MouseEvent} mouseDownEvent MouseDown event object.
+ */
+Drag.prototype._onMouseDown = function(mouseDownEvent) {
+    var opt = this.options,
+        target = domevent.getEventTarget(mouseDownEvent);
+
+    // only primary button can start drag.
+    if (domevent.getMouseButton(mouseDownEvent) !== 0) {
+        return;
+    }
+
+    if (opt.exclude && opt.exclude(target)) {
+        this._cancelled = true;
+
+        return;
+    }
+
+    this._clearData();
+    this._dragStartEventData = this._getEventData(mouseDownEvent);
+
+    this._toggleDragEvent(true);
+
+    /**
+     * mousedown event for firefox bug. cancelable.
+     * @event Drag#mouseDown
+     * @type {object}
+     * @property {HTMLElement} target - target element in this event.
+     * @property {MouseEvent} originEvent - original mouse event object.
+     */
+    this.fire('mousedown', this._dragStartEventData);
+};
+
+/**
+ * MouseMove DOM event handler.
+ * @emits Drag#drag
+ * @emits Drag#dragStart
+ * @param {MouseEvent} mouseMoveEvent MouseMove event object.
+ */
+Drag.prototype._onMouseMove = function(mouseMoveEvent) {
+    var distance;
+
+    if (this._cancelled) {
+        this._clearData();
+
+        return;
+    }
+
+    distance = this.options.distance;
+    // prevent automatic scrolling.
+    preventDefaultWhenNotPopup(mouseMoveEvent);
+
+    if (this._distance < distance) {
+        this._distance += 1;
+
+        return;
+    }
+    this._isMoved = true;
+
+    if (!this._dragStartFired) {
+        this._dragStartFired = true;
+
+        /**
+         * Drag start events. cancelable.
+         * @event Drag#dragStart
+         * @type {object}
+         * @property {HTMLElement} target - target element in this event.
+         * @property {MouseEvent} originEvent - original mouse event object.
+         */
+        if (!this.invoke('dragStart', this._dragStartEventData)) {
+            this._toggleDragEvent(false);
+            this._clearData();
+
+            return;
+        }
+    }
+
+    /**
+     * CalEvents while dragging.
+     * @event Drag#drag
+     * @type {object}
+     * @property {HTMLElement} target - target element in this event.
+     * @property {MouseEvent} originEvent - original mouse event object.
+     */
+    this.fire('drag', this._getEventData(mouseMoveEvent));
+};
+
+/**
+ * MouseUp DOM event handler.
+ * @param {MouseEvent} mouseUpEvent MouseUp event object.
+ * @emits Drag#dragEnd
+ * @emits Drag#click
+ */
+Drag.prototype._onMouseUp = function(mouseUpEvent) {
+    if (this._cancelled) {
+        return;
+    }
+
+    this._toggleDragEvent(false);
+
+    // emit "click" event when not emitted drag event between mousedown and mouseup.
+    if (this._isMoved) {
+        this._isMoved = false;
+        /**
+         * Drag end events.
+         * @event Drag#dragEnd
+         * @type {MouseEvent}
+         * @property {HTMLElement} target - target element in this event.
+         * @property {MouseEvent} originEvent - original mouse event object.
+         */
+        this.fire('dragEnd', this._getEventData(mouseUpEvent));
+    } else {
+        /**
+         * Click events.
+         * @event Drag#click
+         * @type {MouseEvent}
+         * @property {HTMLElement} target - target element in this event.
+         * @property {MouseEvent} originEvent - original mouse event object.
+         */
+        this.fire('click', this._getEventData(mouseUpEvent));
+    }
+
+    this._clearData();
+};
+
+/**
+ * If the target is not a popup, it prevents the default.
+ * @method
+ * @param {MouseEvent} event - Mouse event object
+ */
+function preventDefaultWhenNotPopup(event) {
+    var popup = domutil.closest(event.target, config.classname('.popup'));
+
+    if (!popup) {
+        domevent.preventDefault(event);
+    }
+}
+
+util.CustomEvents.mixin(Drag);
+
+module.exports = Drag;
+
+/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../node_modules/webpack/buildin/global.js */ "./node_modules/webpack/buildin/global.js")))
+
+/***/ }),
+
+/***/ "./src/js/handler/month/click.js":
+/*!***************************************!*\
+  !*** ./src/js/handler/month/click.js ***!
+  \***************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/**
+ * @fileoverview Click handler for month view
+ * @author NHN FE Development Lab <dl_javascript@nhn.com>
+ */
+
+
+var util = __webpack_require__(/*! tui-code-snippet */ "tui-code-snippet");
+var config = __webpack_require__(/*! ../../config */ "./src/js/config.js"),
+    datetime = __webpack_require__(/*! ../../common/datetime */ "./src/js/common/datetime.js"),
+    domutil = __webpack_require__(/*! ../../common/domutil */ "./src/js/common/domutil.js");
+
+/**
+ * @constructor
+ * @implements {Handler}
+ * @mixes util.CustomEvents
+ * @param {Drag} [dragHandler] - Drag handler instance.
+ * @param {Month} [monthView] - Month view instance.
+ * @param {Base} [baseController] - Base controller instance.
+ */
+function MonthClick(dragHandler, monthView, baseController) {
+    /**
+     * @type {Drag}
+     */
+    this.dragHandler = dragHandler;
+
+    /**
+     * @type {Month}
+     */
+    this.monthView = monthView;
+
+    /**
+     * @type {Base}
+     */
+    this.baseController = baseController;
+
+    dragHandler.on({
+        'click': this._onClick
+    }, this);
+}
+
+/**
+ * Destructor
+ */
+MonthClick.prototype.destroy = function() {
+    this.dragHandler.off(this);
+    this.monthView = this.baseController = this.dragHandler = null;
+};
+
+/**
+ * @fires MonthClick#clickMore
+ * @param {object} clickEvent - click event object
+ */
+MonthClick.prototype._onClick = function(clickEvent) {
+    var self = this,
+        moreElement,
+        scheduleCollection = this.baseController.schedules,
+        blockElement = domutil.closest(clickEvent.target, config.classname('.weekday-schedule-block'))
+                    || domutil.closest(clickEvent.target, config.classname('.month-more-schedule'));
+
+    moreElement = domutil.closest(
+        clickEvent.target,
+        config.classname('.weekday-exceed-in-month')
+    );
+
+    if (moreElement) {
+        self.fire('clickMore', {
+            date: datetime.parse(domutil.getData(moreElement, 'ymd')),
+            target: moreElement,
+            ymd: domutil.getData(moreElement, 'ymd')
+        });
+    }
+
+    if (blockElement) {
+        scheduleCollection.doWhenHas(domutil.getData(blockElement, 'id'), function(schedule) {
+            /**
+             * @events AlldayClick#clickSchedule
+             * @type {object}
+             * @property {Schedule} schedule - schedule instance
+             * @property {MouseEvent} event - MouseEvent object
+             */
+            self.fire('clickSchedule', {
+                schedule: schedule,
+                event: clickEvent.originEvent
+            });
+        });
+    }
+};
+
+util.CustomEvents.mixin(MonthClick);
+
+module.exports = MonthClick;
+
+
+/***/ }),
+
+/***/ "./src/js/handler/month/core.js":
+/*!**************************************!*\
+  !*** ./src/js/handler/month/core.js ***!
+  \**************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/* eslint-disable complexity */
+/**
+ * @fileoverview Module for calculate date by month view and mouse event object
+ * @author NHN FE Development Lab <dl_javascript@nhn.com>
+ */
+
+
+var util = __webpack_require__(/*! tui-code-snippet */ "tui-code-snippet");
+var common = __webpack_require__(/*! ../../common/common */ "./src/js/common/common.js"),
+    domutil = __webpack_require__(/*! ../../common/domutil */ "./src/js/common/domutil.js"),
+    domevent = __webpack_require__(/*! ../../common/domevent */ "./src/js/common/domevent.js"),
+    datetime = __webpack_require__(/*! ../../common/datetime */ "./src/js/common/datetime.js");
+var mfloor = Math.floor;
+
+/**
+ * Get high order function that can calc date in mouse point
+ * @param {Month} monthView - month view
+ * @returns {function} function return event data by mouse event object
+ */
+function getMousePosDate(monthView) {
+    var weekColl = monthView.children,
+        weeks = weekColl.sort(function(a, b) {
+            return util.stamp(a) - util.stamp(b);
+        }),
+        weekCount = weekColl.length,
+        days = weekColl.single().getRenderDateRange(),
+        dayCount = days.length,
+        relativeContainer = util.pick(monthView.vLayout.panels[1], 'container'),
+        size = domutil.getSize(relativeContainer),
+        grids = monthView.grids;
+
+    /**
+     * Get the left index
+     * @param {number} left - left position(percent)
+     * @returns {number} grid left index
+     */
+    function getX(left) {
+        var i = 0;
+        var length = grids.length;
+        var grid;
+        for (; i < length; i += 1) {
+            grid = grids[i];
+            if (grid.left <= left && left <= (grid.left + grid.width)) {
+                return i;
+            }
+        }
+
+        return left < 0 ? -1 : i;
+    }
+
+    /**
+     * Get date related with mouse event object
+     * @param {object} mouseEvent - click event data
+     * @returns {object} data related with mouse event
+     */
+    function getDate(mouseEvent) {
+        var pos = domevent.getMousePosition(mouseEvent, relativeContainer),
+            x = getX(common.ratio(size[0], 100, pos[0])),
+            y = mfloor(common.ratio(size[1], weekCount, pos[1])),
+            weekdayView,
+            date,
+            dateRange;
+
+        if (y < 0) {
+            y = 0;
+        }
+        if (y >= weeks.length) {
+            y = weeks.length - 1;
+        }
+
+        weekdayView = util.pick(weeks, y);
+
+        if (!weekdayView) {
+            return null;
+        }
+
+        dateRange = weekdayView.getRenderDateRange();
+        if (x < 0) {
+            x = 0;
+        }
+        if (x >= dateRange.length) {
+            x = dateRange.length - 1;
+        }
+
+        date = util.pick(dateRange, x);
+
+        if (!date) {
+            return null;
+        }
+
+        return {
+            x: x,
+            y: y,
+            sizeX: dayCount,
+            sizeY: weekCount,
+            date: datetime.end(date),
+            weekdayView: weekdayView,
+            triggerEvent: mouseEvent.type
+        };
+    }
+
+    return getDate;
+}
+
+module.exports = getMousePosDate;
+
+
+/***/ }),
+
+/***/ "./src/js/handler/month/creation.js":
+/*!******************************************!*\
+  !*** ./src/js/handler/month/creation.js ***!
+  \******************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/**
+ * @fileoverview Creation handler for month view
+ * @author NHN FE Development Lab <dl_javascript@nhn.com>
+ */
+
+
+var util = __webpack_require__(/*! tui-code-snippet */ "tui-code-snippet");
+
+var config = __webpack_require__(/*! ../../config */ "./src/js/config.js");
+var datetime = __webpack_require__(/*! ../../common/datetime */ "./src/js/common/datetime.js");
+var array = __webpack_require__(/*! ../../common/array */ "./src/js/common/array.js");
+var domutil = __webpack_require__(/*! ../../common/domutil */ "./src/js/common/domutil.js");
+var domevent = __webpack_require__(/*! ../../common/domevent */ "./src/js/common/domevent.js");
+var getMousePosDate = __webpack_require__(/*! ./core */ "./src/js/handler/month/core.js");
+var Guide = __webpack_require__(/*! ./creationGuide */ "./src/js/handler/month/creationGuide.js");
+var TZDate = __webpack_require__(/*! ../../common/timezone */ "./src/js/common/timezone.js").Date;
+
+var CLICK_DELAY = 300;
+
+/**
+ * @constructor
+ * @param {Drag} dragHandler - Drag handler instance.
+ * @param {Month} monthView - Month view instance.
+ * @param {Base} baseController - Base controller instance.
+ * @param {Options} [options] - calendar Options
+ */
+function MonthCreation(dragHandler, monthView, baseController, options) {
+    /**
+     * @type {Drag}
+     */
+    this.dragHandler = dragHandler;
+
+    /**
+     * @type {Month}
+     */
+    this.monthView = monthView;
+
+    /**
+     * @type {Base}
+     */
+    this.baseController = baseController;
+
+    /**
+     * @type {function}
+     */
+    this.getScheduleData = null;
+
+    /**
+     * Cache for dragging session
+     * @type {object}
+     */
+    this._cache = null;
+
+    /**
+     * @type {MonthCreationGuide}
+     */
+    this.guide = new Guide(this);
+
+    /**
+     * @type {boolean}
+     */
+    this._requestOnClick = false;
+
+    /**
+     * @type {boolean}
+     */
+    this._disableDblClick = options.disableDblClick;
+
+    /**
+     * @type {boolean}
+     */
+    this._disableClick = options.disableClick;
+
+    dragHandler.on('dragStart', this._onDragStart, this);
+    dragHandler.on('click', this._onClick, this);
+
+    if (this._disableDblClick) {
+        CLICK_DELAY = 0;
+    } else {
+        domevent.on(monthView.container, 'dblclick', this._onDblClick, this);
+    }
+}
+
+/**
+ * Destructor
+ */
+MonthCreation.prototype.destroy = function() {
+    this.dragHandler.off(this);
+    this.guide.destroy();
+
+    if (this.monthView && this.monthView.container) {
+        domevent.off(this.monthView.container, 'dblclick', this._onDblClick, this);
+    }
+
+    this.dragHandler = this.monthView = this.baseController =
+        this.getScheduleData = this._cache = this.guide = null;
+};
+
+/**
+ * Fire before create schedule
+ * @fires {MonthCreation#beforeCreateSchedule}
+ * @param {object} eventData - cache data from single dragging session
+ */
+MonthCreation.prototype._createSchedule = function(eventData) {
+    /**
+     * @event {MonthCreation#beforeCreateSchedule}
+     * @type {object}
+     * @property {boolean} isAllDay - whether schedule is fired in allday view area?
+     * @property {Date} start - select start time
+     * @property {Date} end - select end time
+     * @property {TimeCreationGuide} guide - TimeCreationGuide instance
+     * @property {string} triggerEventName - event name
+     */
+    this.fire('beforeCreateSchedule', {
+        isAllDay: eventData.isAllDay,
+        start: eventData.start,
+        end: eventData.end,
+        guide: this.guide.guide,
+        triggerEventName: eventData.triggerEvent
+    });
+};
+
+/**
+ * DragStart event handler
+ * @fires {MonthCreation#monthCreationDragstart}
+ * @param {object} dragStartEvent - dragStart event data
+ */
+MonthCreation.prototype._onDragStart = function(dragStartEvent) {
+    var eventData;
+
+    if (!isElementWeekdayGrid(dragStartEvent.target)) {
+        return;
+    }
+
+    this.dragHandler.on({
+        drag: this._onDrag,
+        dragEnd: this._onDragEnd
+    }, this);
+
+    this.getScheduleData = getMousePosDate(this.monthView);
+
+    eventData = this.getScheduleData(dragStartEvent.originEvent);
+
+    this._cache = {
+        start: new TZDate(eventData.date)
+    };
+
+    /**
+     * @event {MonthCreation#monthCreationDragstart}
+     * @type {object}
+     * @property {number} x - x index
+     * @property {number} y - y index
+     * @property {Date} date - drag date
+     */
+    this.fire('monthCreationDragstart', eventData);
+};
+
+/**
+ * Drag event handler
+ * @fires {MonthCreation#monthCreationDrag}
+ * @param {object} dragEvent - drag event data
+ */
+MonthCreation.prototype._onDrag = function(dragEvent) {
+    var eventData;
+
+    if (!this.getScheduleData) {
+        return;
+    }
+
+    eventData = this.getScheduleData(dragEvent.originEvent);
+
+    if (!eventData) {
+        return;
+    }
+
+    /**
+     * @event {MonthCreation#monthCreationDrag}
+     * @type {object}
+     * @property {number} x - x index
+     * @property {number} y - y index
+     * @property {Date} date - drag date
+     */
+    this.fire('monthCreationDrag', eventData);
+};
+
+/**
+ * DragEnd event handler
+ * @fires {MonthCreation#monthCreationDragend}
+ * @param {object} dragEndEvent - drag end event data
+ */
+MonthCreation.prototype._onDragEnd = function(dragEndEvent) {
+    var cache = this._cache;
+    var eventData;
+    var times;
+
+    this.dragHandler.off({
+        drag: this._onDrag,
+        dragEnd: this._onDragEnd
+    }, this);
+
+    if (!this.getScheduleData) {
+        return;
+    }
+
+    eventData = this.getScheduleData(dragEndEvent.originEvent);
+
+    if (eventData) {
+        cache.end = new TZDate(eventData.date);
+        cache.isAllDay = true;
+
+        times = [
+            cache.start,
+            cache.end
+        ].sort(array.compare.num.asc);
+
+        cache.start = new TZDate(times[0]);
+        cache.end = datetime.end(times[1]);
+
+        this._createSchedule(cache);
+    }
+
+    /**
+     * @event {MonthCreation#monthCreationDragend}
+     * @type {object}
+     * @property {number} x - x index
+     * @property {number} y - y index
+     * @property {Date} date - drag date
+     */
+    this.fire('monthCreationDragend', eventData);
+
+    this.getScheduleData = this._cache = null;
+};
+
+/**
+ * Dblclick event handler
+ * @fires {MonthCreation#monthCreationDragstart}
+ * @param {MouseEvent} e - Native MouseEvent
+ */
+MonthCreation.prototype._onDblClick = function(e) {
+    var eventData, range;
+
+    if (!isElementWeekdayGrid(e.target)) {
+        return;
+    }
+
+    eventData = getMousePosDate(this.monthView)(e);
+
+    this.fire('monthCreationClick', eventData);
+
+    range = this._adjustStartAndEndTime(new TZDate(eventData.date), new TZDate(eventData.date));
+
+    this._createSchedule({
+        start: range.start,
+        end: range.end,
+        isAllDay: false,
+        triggerEvent: eventData.triggerEvent
+    });
+
+    this._requestOnClick = false;
+};
+
+/**
+ * Click event handler
+ * @fires {MonthCreation#monthCreationDragstart}
+ * @param {MouseEvent} e - Native MouseEvent
+ */
+MonthCreation.prototype._onClick = function(e) {
+    var self = this;
+    var eventData, range;
+
+    if (!isElementWeekdayGrid(e.target) || this._disableClick) {
+        return;
+    }
+
+    eventData = getMousePosDate(this.monthView)(e.originEvent);
+
+    this._requestOnClick = true;
+    setTimeout(function() {
+        if (self._requestOnClick) {
+            self.fire('monthCreationClick', eventData);
+
+            range = self._adjustStartAndEndTime(new TZDate(eventData.date), new TZDate(eventData.date));
+
+            self._createSchedule({
+                start: range.start,
+                end: range.end,
+                isAllDay: false,
+                triggerEvent: eventData.triggerEvent
+            });
+        }
+        self._requestOnClick = false;
+    }, CLICK_DELAY);
+};
+
+/**
+ * Adjust time to our o'clock
+ * @param {TZDate} start - start time
+ * @param {TZDate} end - end time
+ * @returns {Object} start and end
+ */
+MonthCreation.prototype._adjustStartAndEndTime = function(start, end) {
+    var now = new TZDate();
+    var hours = now.getHours();
+    var minutes = now.getMinutes();
+
+    // adjust start to less time. Adjusting had been greater time in monthly view when clicking grid
+    if (minutes <= 30) {
+        minutes = 0;
+    } else {
+        minutes = 30;
+    }
+    start.setHours(hours, minutes, 0, 0);
+    end.setHours(hours + 1, minutes, 0, 0);
+
+    return {
+        start: start,
+        end: end
+    };
+};
+
+/**
+ * Invoke creation click
+ * @param {Schedule} schedule - schedule instance
+ */
+MonthCreation.prototype.invokeCreationClick = function(schedule) {
+    var eventData = {
+        model: schedule
+    };
+
+    this.fire('monthCreationClick', eventData);
+
+    this._createSchedule({
+        start: schedule.start,
+        end: schedule.end,
+        isAllDay: schedule.isAllDay,
+        triggerEvent: 'manual'
+    });
+};
+
+/**
+ * Returns whether the given element is Weekday-Schedule.
+ * @param {HTMLElement} el - target element
+ * @returns {boolean}
+ */
+function isElementWeekdayGrid(el) {
+    return domutil.closest(el, config.classname('.weekday-grid'))
+        && !domutil.closest(el, config.classname('.weekday-exceed-in-month'));
+}
+
+util.CustomEvents.mixin(MonthCreation);
+
+module.exports = MonthCreation;
+
+
+/***/ }),
+
+/***/ "./src/js/handler/month/creationGuide.js":
+/*!***********************************************!*\
+  !*** ./src/js/handler/month/creationGuide.js ***!
+  \***********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/**
+ * @fileoverview Creation guide module for month view
+ * @author NHN FE Development Lab <dl_javascript@nhn.com>
+ */
+
+
+var MonthGuide = __webpack_require__(/*! ./guide */ "./src/js/handler/month/guide.js");
+
+/**
+ * @constructor
+ * @param {MonthCreation} monthCreation - instance of MonthCreation
+ */
+function MonthCreationGuide(monthCreation) {
+    /**
+     * @type {MonthCreation}
+     */
+    this.monthCreation = monthCreation;
+
+    /**
+     * @type {MonthGuide}
+     */
+    this.guide = null;
+
+    monthCreation.on({
+        monthCreationDragstart: this._createGuideElement,
+        monthCreationDrag: this._onDrag,
+        monthCreationDragend: this._onDragEnd,
+        monthCreationClick: this._createGuideElement
+    }, this);
+}
+
+/**
+ * Destructor
+ */
+MonthCreationGuide.prototype.destroy = function() {
+    this.monthCreation.off(this);
+
+    if (this.guide) {
+        this.guide.destroy();
+    }
+
+    this.guide = this.monthCreation = null;
+};
+
+/**
+ * Drag start event handler
+ * @param {object} dragStartEvent - schedule data from MonthCreation
+ */
+MonthCreationGuide.prototype._createGuideElement = function(dragStartEvent) {
+    var options = {
+        isCreationMode: true,
+        height: '100%',
+        top: 0
+    };
+
+    this.guide = new MonthGuide(options, this.monthCreation.monthView);
+    this.guide.start(dragStartEvent);
+};
+
+/**
+ * Drag event handler
+ * @param {object} dragEvent - schedule data from MonthCreation
+ */
+MonthCreationGuide.prototype._onDrag = function(dragEvent) {
+    this.guide.update(dragEvent.x, dragEvent.y);
+};
+
+/**
+ * Drag end event handler
+ */
+MonthCreationGuide.prototype._onDragEnd = function() {
+    // Do nothing. User calls destroy directly.
+    this.guide = null;
+};
+
+module.exports = MonthCreationGuide;
+
+
+/***/ }),
+
+/***/ "./src/js/handler/month/guide.hbs":
+/*!****************************************!*\
+  !*** ./src/js/handler/month/guide.hbs ***!
+  \****************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var Handlebars = __webpack_require__(/*! ./node_modules/handlebars/runtime.js */ "./node_modules/handlebars/runtime.js");
+module.exports = (Handlebars['default'] || Handlebars).template({"1":function(container,depth0,helpers,partials,data) {
+    var stack1, helper, alias1=container.escapeExpression, alias2=container.lambda, lookupProperty = container.lookupProperty || function(parent, propertyName) {
+        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+          return parent[propertyName];
+        }
+        return undefined
+    };
+
+  return "<div class=\""
+    + alias1(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === "function" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":3,"column":16},"end":{"line":3,"column":30}}}) : helper)))
+    + "month-creation-guide\" style=\"border: "
+    + alias1(alias2(((stack1 = (depth0 != null ? lookupProperty(depth0,"styles") : depth0)) != null ? lookupProperty(stack1,"border") : stack1), depth0))
+    + "; background-color: "
+    + alias1(alias2(((stack1 = (depth0 != null ? lookupProperty(depth0,"styles") : depth0)) != null ? lookupProperty(stack1,"backgroundColor") : stack1), depth0))
+    + ";\"></div>\n";
+},"3":function(container,depth0,helpers,partials,data) {
+    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3="function", alias4=container.escapeExpression, alias5=container.lambda, lookupProperty = container.lookupProperty || function(parent, propertyName) {
+        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+          return parent[propertyName];
+        }
+        return undefined
+    };
+
+  return "<div class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":5,"column":16},"end":{"line":5,"column":30}}}) : helper)))
+    + "weekday-schedule\"\n        style=\"height: "
+    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,"styles") : depth0)) != null ? lookupProperty(stack1,"scheduleHeight") : stack1), depth0))
+    + "; line-height: "
+    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,"styles") : depth0)) != null ? lookupProperty(stack1,"scheduleHeight") : stack1), depth0))
+    + "; margin-top: "
+    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,"styles") : depth0)) != null ? lookupProperty(stack1,"scheduleGutter") : stack1), depth0))
+    + "; border-radius:"
+    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,"styles") : depth0)) != null ? lookupProperty(stack1,"borderRadius") : stack1), depth0))
+    + "; margin-left: "
+    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,"styles") : depth0)) != null ? lookupProperty(stack1,"marginLeft") : stack1), depth0))
+    + "; margin-right: "
+    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,"styles") : depth0)) != null ? lookupProperty(stack1,"marginRight") : stack1), depth0))
+    + ";\n            color:"
+    + alias4(((helper = (helper = lookupProperty(helpers,"color") || (depth0 != null ? lookupProperty(depth0,"color") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"color","hash":{},"data":data,"loc":{"start":{"line":7,"column":18},"end":{"line":7,"column":27}}}) : helper)))
+    + ";border-color:"
+    + alias4(((helper = (helper = lookupProperty(helpers,"borderColor") || (depth0 != null ? lookupProperty(depth0,"borderColor") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"borderColor","hash":{},"data":data,"loc":{"start":{"line":7,"column":41},"end":{"line":7,"column":56}}}) : helper)))
+    + ";background-color:"
+    + alias4(((helper = (helper = lookupProperty(helpers,"bgColor") || (depth0 != null ? lookupProperty(depth0,"bgColor") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"bgColor","hash":{},"data":data,"loc":{"start":{"line":7,"column":74},"end":{"line":7,"column":85}}}) : helper)))
+    + "\">\n        <div class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":8,"column":20},"end":{"line":8,"column":34}}}) : helper)))
+    + "weekday-schedule-title\">\n"
+    + ((stack1 = lookupProperty(helpers,"if").call(alias1,(depth0 != null ? lookupProperty(depth0,"isAllDay") : depth0),{"name":"if","hash":{},"fn":container.program(4, data, 0),"inverse":container.program(6, data, 0),"data":data,"loc":{"start":{"line":9,"column":12},"end":{"line":13,"column":19}}})) != null ? stack1 : "")
+    + "        </div>\n        <div class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":15,"column":20},"end":{"line":15,"column":34}}}) : helper)))
+    + "weekday-resize-handle handle-y\" style=\"line-height: "
+    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,"styles") : depth0)) != null ? lookupProperty(stack1,"scheduleHeight") : stack1), depth0))
+    + ";\">&nbsp;</div>\n    </div>\n";
+},"4":function(container,depth0,helpers,partials,data) {
+    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {
+        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+          return parent[propertyName];
+        }
+        return undefined
+    };
+
+  return "                "
+    + ((stack1 = (lookupProperty(helpers,"allday-tmpl")||(depth0 && lookupProperty(depth0,"allday-tmpl"))||container.hooks.helperMissing).call(depth0 != null ? depth0 : (container.nullContext || {}),depth0,{"name":"allday-tmpl","hash":{},"data":data,"loc":{"start":{"line":10,"column":16},"end":{"line":10,"column":38}}})) != null ? stack1 : "")
+    + "\n";
+},"6":function(container,depth0,helpers,partials,data) {
+    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {
+        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+          return parent[propertyName];
+        }
+        return undefined
+    };
+
+  return "                "
+    + ((stack1 = (lookupProperty(helpers,"time-tmpl")||(depth0 && lookupProperty(depth0,"time-tmpl"))||container.hooks.helperMissing).call(depth0 != null ? depth0 : (container.nullContext || {}),depth0,{"name":"time-tmpl","hash":{},"data":data,"loc":{"start":{"line":12,"column":16},"end":{"line":12,"column":36}}})) != null ? stack1 : "")
+    + "\n";
+},"compiler":[8,">= 4.3.0"],"main":function(container,depth0,helpers,partials,data) {
+    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3="function", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {
+        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+          return parent[propertyName];
+        }
+        return undefined
+    };
+
+  return "<div class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":1,"column":12},"end":{"line":1,"column":26}}}) : helper)))
+    + "month-guide-block\" style=\"top:"
+    + alias4(((helper = (helper = lookupProperty(helpers,"top") || (depth0 != null ? lookupProperty(depth0,"top") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"top","hash":{},"data":data,"loc":{"start":{"line":1,"column":56},"end":{"line":1,"column":63}}}) : helper)))
+    + ";height:"
+    + alias4(((helper = (helper = lookupProperty(helpers,"height") || (depth0 != null ? lookupProperty(depth0,"height") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"height","hash":{},"data":data,"loc":{"start":{"line":1,"column":71},"end":{"line":1,"column":81}}}) : helper)))
+    + ";display:none\">\n"
+    + ((stack1 = lookupProperty(helpers,"if").call(alias1,(depth0 != null ? lookupProperty(depth0,"isCreationMode") : depth0),{"name":"if","hash":{},"fn":container.program(1, data, 0),"inverse":container.program(3, data, 0),"data":data,"loc":{"start":{"line":2,"column":4},"end":{"line":17,"column":11}}})) != null ? stack1 : "")
+    + "</div>\n";
+},"useData":true});
+
+/***/ }),
+
+/***/ "./src/js/handler/month/guide.js":
+/*!***************************************!*\
+  !*** ./src/js/handler/month/guide.js ***!
+  \***************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/**
+ * @fileoverview Guide element controller for creation, resize in month view
+ * @author NHN FE Development Lab <dl_javascript@nhn.com>
+ */
+
+
+var util = __webpack_require__(/*! tui-code-snippet */ "tui-code-snippet");
+var config = __webpack_require__(/*! ../../config */ "./src/js/config.js"),
+    domutil = __webpack_require__(/*! ../../common/domutil */ "./src/js/common/domutil.js"),
+    datetime = __webpack_require__(/*! ../../common/datetime */ "./src/js/common/datetime.js"),
+    TZDate = __webpack_require__(/*! ../../common/timezone */ "./src/js/common/timezone.js").Date,
+    tmpl = __webpack_require__(/*! ./guide.hbs */ "./src/js/handler/month/guide.hbs");
+var mmax = Math.max,
+    mmin = Math.min,
+    mabs = Math.abs,
+    mfloor = Math.floor;
+
+/**
+ * @constructor
+ * @param {object} [options] - options
+ * @param {boolean} [options.useHandle=false] - whether displaying resize handle on
+ *  guide element?
+ * @param {boolean} [options.isResizeMode=false] - whether resize mode?
+ * @param {Month} monthView - Month view instance
+ */
+function MonthGuide(options, monthView) {
+    /**
+     * @type {object}
+     */
+    this.options = util.extend({
+        top: 0,
+        height: '20px',
+        bgColor: '#f7ca88',
+        label: 'New event',
+        isResizeMode: false,
+        isCreationMode: false,
+        styles: this._getStyles(monthView.controller.theme)
+    }, options);
+
+    /**
+     * @type {Month}
+     */
+    this.view = monthView;
+
+    /**
+     * @type {WeekdayInMonth[]}
+     */
+    this.weeks = monthView.children.sort(function(a, b) {
+        return util.stamp(a) - util.stamp(b);
+    });
+
+    /**
+     * @type {number}
+     */
+    this.days = monthView.children.single().getRenderDateRange().length;
+
+    /**
+     * start coordinate of guide effect. (x, y) (days, weeks) effect can't
+     *  start lower than this coordinate.
+     * @type {number[]}
+     */
+    this.startCoord = [0, 0];
+
+    /**
+     * @type {Object.<string, HTMLElement>}
+     */
+    this.guideElements = {};
+
+    /**
+     * horizontal grid information
+     * @type {Object}
+     */
+    this.grids = monthView.grids;
+}
+
+/**
+ * Destructor
+ */
+MonthGuide.prototype.destroy = function() {
+    this.clear();
+
+    this.options = this.view = this.weeks = this.days =
+        this.startCoord = this.guideElements = null;
+};
+
+MonthGuide.prototype.clearGuideElement = function() {
+    this.destroy();
+};
+
+/**
+ * Get ratio value in week.
+ * @param {number} value - value for calc ratio in week
+ * @returns {number} percent value
+ */
+MonthGuide.prototype._getRatioValueInWeek = function(value) {
+    var grid = this.grids[value] || {left: 100};
+
+    return grid.left;
+};
+
+/**
+ * Create guide element
+ * @returns {HTMLElement} guide element
+ */
+MonthGuide.prototype._createGuideElement = function() {
+    var guide = document.createElement('div');
+
+    guide.innerHTML = tmpl(this.options);
+
+    return guide.firstChild;
+};
+
+/**
+ * Get guide element. if not exist then create one
+ * @param {number} y - y coordinate
+ * @returns {?HTMLElement} guide element
+ */
+MonthGuide.prototype._getGuideElement = function(y) {
+    var guideElements = this.guideElements,
+        guide = guideElements[y],
+        weekdayView = this.weeks[y],
+        container;
+
+    if (!weekdayView) {
+        return null;
+    }
+
+    if (!guide) {
+        guide = this._createGuideElement();
+        container = weekdayView.container;
+        container.appendChild(guide);
+        guideElements[y] = guide;
+    }
+
+    return guide;
+};
+
+/**
+ * Get coordinate by supplied date in month
+ * @param {TZDate} date - date to find coordinate
+ * @returns {number[]} coordinate (x, y)
+ */
+MonthGuide.prototype._getCoordByDate = function(date) {
+    var WEEKEND_DAYS = 2;
+    var weeks = this.weeks;
+    var isWorkWeek = util.pick(this.view, 'options', 'workweek');
+    var days = isWorkWeek ? this.days + WEEKEND_DAYS : this.days;
+
+    var getIdxFromDiff = function(d1, d2) {
+            return mfloor(datetime.millisecondsTo('day', mabs(d2 - d1)));
+        },
+        monthStart = datetime.start(weeks[0].options.renderStartDate),
+        isBefore = date < monthStart,
+        start = new TZDate(monthStart),
+        end = new TZDate(monthStart).addDate(isBefore ? -days : days).addDate(-1),
+        x = getIdxFromDiff(date, start),
+        y = 0;
+
+    while (!datetime.isBetweenWithDate(date, start, end)) {
+        start.addDate(isBefore ? -days : days);
+        end = new TZDate(start).addDate(days - 1);
+        x = getIdxFromDiff(date, start);
+        y += (isBefore ? -1 : 1);
+    }
+
+    return [x, y];
+};
+
+/**
+ * Get limited coordinate by supplied coodinates
+ * @param {number[]} coord - coordinate need to limit
+ * @param {number[]} [min] - minimum limitaion of coordinate
+ * @param {number[]} [max] - maximum limitation of coordinate
+ * @returns {number[]} limited coordiate
+ */
+MonthGuide.prototype._getLimitedCoord = function(coord, min, max) {
+    var toIndex = 1,
+        x = coord[0],
+        y = coord[1],
+        result;
+
+    min = min || [0, 0];
+    max = max || [this.days - toIndex, this.weeks.length - toIndex];
+
+    if (y < min[1]) {
+        result = min.slice(0);
+    } else if (y > max[1]) {
+        result = max.slice(0);
+    } else {
+        x = mmax(min[0], x);
+        x = mmin(max[0], x);
+        result = [x, y];
+    }
+
+    return result;
+};
+
+/**
+ * Prepare guide element modification
+ * @param {object} dragStartEvent - dragStart schedule data from *guide
+ */
+MonthGuide.prototype.start = function(dragStartEvent) {
+    var opt = this.options,
+        target = dragStartEvent.target,
+        model = dragStartEvent.model,
+        x = dragStartEvent.x,
+        y = dragStartEvent.y,
+        renderMonth = new TZDate(this.view.options.renderMonth),
+        temp;
+
+    if (opt.isCreationMode) {
+        if (model && !datetime.isSameMonth(renderMonth, model.start)) {
+            model.start.setMonth(renderMonth.getMonth());
+            model.start.setDate(1);
+            model.end.setMonth(renderMonth.getMonth());
+            model.end.setDate(1);
+        }
+    } else {
+        temp = this._getCoordByDate(model.getStarts());
+        x = temp[0];
+        y = temp[1];
+
+        util.extend(this.options, {
+            top: parseInt(target.style.top, 10) + 'px',
+            height: parseInt(target.style.height, 10) + 'px',
+            label: model.title
+        }, model);
+    }
+
+    if (util.isUndefined(x) || util.isUndefined(y)) {
+        temp = this._getCoordByDate(model.getStarts());
+        x = temp[0];
+        y = temp[1];
+    }
+
+    this.startCoord = [x, y];
+    this.update(x, y);
+};
+
+/**
+ * Data for update several guide elements
+ * @typedef UpdateIndication
+ * @type {object}
+ * @property {HTMLElement} guide - guide element
+ * @property {number} left - left style value
+ * @property {number} width - width style value
+ * @property {boolean} [exceedL=false] - whether schedule is exceeded past weeks?
+ * @property {boolean} [exceedR=false] - whether schedule is exceeded future weeks?
+ */
+
+/**
+ * Modify HTML element that uses for guide element
+ * @param {UpdateIndication[]} inds - indication of update severel guide element
+ */
+MonthGuide.prototype._updateGuides = function(inds) {
+    util.forEach(inds, function(ind) {
+        var guide = ind.guide,
+            exceedLClass = config.classname('month-exceed-left'),
+            exceedRClass = config.classname('month-exceed-right');
+
+        guide.style.display = 'block';
+        guide.style.left = ind.left + '%';
+        guide.style.width = ind.width + '%';
+
+        if (ind.exceedL) {
+            domutil.addClass(guide, exceedLClass);
+        } else {
+            domutil.removeClass(guide, exceedLClass);
+        }
+
+        if (ind.exceedR) {
+            domutil.addClass(guide, exceedRClass);
+        } else {
+            domutil.removeClass(guide, exceedRClass);
+        }
+    });
+};
+
+/**
+ * Get guide element indicate for origin week
+ * @param {number[]} startCoord - drag start coordinate
+ * @param {number[]} mouseCoord - mouse coordinate
+ * @returns {object} indicate
+ */
+MonthGuide.prototype._getOriginIndicate = function(startCoord, mouseCoord) {
+    var left = mmin(startCoord[0], mouseCoord[0]),
+        right = mmax(startCoord[0], mouseCoord[0]) + 1,
+        exceedL, exceedR;
+
+    if (mouseCoord[1] > startCoord[1]) {
+        left = startCoord[0];
+        right = this.days;
+        exceedR = true;
+    } else if (mouseCoord[1] < startCoord[1]) {
+        left = 0;
+        right = startCoord[0] + 1;
+        exceedL = true;
+    }
+
+    return {
+        left: this._getRatioValueInWeek(left),
+        width: this._getRatioValueInWeek(right) -
+            this._getRatioValueInWeek(left),
+        exceedL: exceedL,
+        exceedR: exceedR
+    };
+};
+
+/**
+ * Get guide element indicate for week related with mouse position
+ * @param {number[]} startCoord - drag start coordinate
+ * @param {number[]} mouseCoord - mouse coordinate
+ * @returns {object} indicate
+ */
+MonthGuide.prototype._getMouseIndicate = function(startCoord, mouseCoord) {
+    var left = mouseCoord[0],
+        right = mouseCoord[0] + 1,
+        exceedL, exceedR;
+
+    if (mouseCoord[1] > startCoord[1]) {
+        left = 0;
+        exceedL = true;
+    } else if (mouseCoord[1] < startCoord[1]) {
+        right = this.days;
+        exceedR = true;
+    }
+
+    return {
+        left: this._getRatioValueInWeek(left),
+        width: this._getRatioValueInWeek(right) -
+            this._getRatioValueInWeek(left),
+        exceedL: exceedL,
+        exceedR: exceedR
+    };
+};
+
+/**
+ * Get guide element indicate for contained weeks
+ * @returns {object} indicate
+ */
+MonthGuide.prototype._getContainIndicate = function() {
+    return {
+        left: 0,
+        width: 100,
+        exceedL: true,
+        exceedR: true
+    };
+};
+
+/**
+ * Remove several guide element that supplied by parameter
+ * @param {number[]} yCoords - array of y coordinate to remove guide element
+ */
+MonthGuide.prototype._removeGuideElements = function(yCoords) {
+    var guides = this.guideElements;
+
+    util.forEach(yCoords, function(y) {
+        domutil.remove(guides[y]);
+        delete guides[y];
+    });
+};
+
+/**
+ * Get excluded numbers in range
+ * @param {number[]} range - the range. value must be sequencial.
+ * @param {number[]} numbers - numbers to check
+ * @returns {number[]} excluded numbers
+ */
+MonthGuide.prototype._getExcludesInRange = function(range, numbers) {
+    var min = mmin.apply(null, range),
+        max = mmax.apply(null, range),
+        excludes = [];
+
+    util.forEach(numbers, function(num) {
+        num = parseInt(num, 10);
+        if (num < min || num > max) {
+            excludes.push(num);
+        }
+    });
+
+    return excludes;
+};
+
+/**
+ * Update guide elements by coordinate in month grid from mousemove event
+ * @param {number} x - x coordinate
+ * @param {number} y - y coordinate
+ */
+MonthGuide.prototype.update = function(x, y) {
+    var self = this,
+        startCoord = this.startCoord,
+        mouseCoord = [x, y],
+        limitedCoord = this.options.isResizeMode ?
+            this._getLimitedCoord(mouseCoord, startCoord) : mouseCoord,
+        renderedYIndex = util.keys(this.guideElements),
+        yCoordsToUpdate = util.range(
+            mmin(startCoord[1], limitedCoord[1]),
+            mmax(startCoord[1], limitedCoord[1]) + 1
+        ),
+        yCoordsToRemove = this._getExcludesInRange(
+            yCoordsToUpdate,
+            renderedYIndex
+        ),
+        renderIndication = {};
+
+    this._removeGuideElements(yCoordsToRemove);
+
+    util.forEach(yCoordsToUpdate, function(guideYCoord) {
+        var guide = self._getGuideElement(guideYCoord),
+            indicate;
+
+        if (!guide) {
+            return;
+        }
+
+        if (guideYCoord === startCoord[1]) {
+            indicate = self._getOriginIndicate(startCoord, limitedCoord);
+        } else if (guideYCoord === mouseCoord[1]) {
+            indicate = self._getMouseIndicate(startCoord, mouseCoord);
+        } else {
+            indicate = self._getContainIndicate();
+        }
+
+        renderIndication[guideYCoord] = util.extend({
+            guide: guide
+        }, indicate);
+    });
+
+    this._updateGuides(renderIndication);
+};
+
+/**
+ * Clear all guide elements
+ */
+MonthGuide.prototype.clear = function() {
+    util.forEach(this.guideElements, function(element) {
+        domutil.remove(element);
+    });
+
+    this.guideElements = {};
+};
+
+/**
+ * Get the styles from theme
+ * @param {Theme} theme - theme instance
+ * @returns {object} styles - styles object
+ */
+MonthGuide.prototype._getStyles = function(theme) {
+    var styles = {};
+
+    if (theme) {
+        styles.border = theme.common.creationGuide.border;
+        styles.backgroundColor = theme.common.creationGuide.backgroundColor;
+        styles.scheduleHeight = theme.month.schedule.height;
+        styles.scheduleGutter = theme.month.schedule.marginTop;
+        styles.marginLeft = theme.month.schedule.marginLeft;
+        styles.marginRight = theme.month.schedule.marginRight;
+        styles.borderRadius = theme.month.schedule.borderRadius;
+    }
+
+    return styles;
+};
+
+module.exports = MonthGuide;
+
+
+/***/ }),
+
+/***/ "./src/js/handler/month/move.js":
+/*!**************************************!*\
+  !*** ./src/js/handler/month/move.js ***!
+  \**************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/**
+ * @fileoverview Move handler for month view
+ * @author NHN FE Development Lab <dl_javascript@nhn.com>
+ */
+
+
+var util = __webpack_require__(/*! tui-code-snippet */ "tui-code-snippet");
+
+var config = __webpack_require__(/*! ../../config */ "./src/js/config.js"),
+    domutil = __webpack_require__(/*! ../../common/domutil */ "./src/js/common/domutil.js"),
+    datetime = __webpack_require__(/*! ../../common/datetime */ "./src/js/common/datetime.js"),
+    getMousePosData = __webpack_require__(/*! ./core */ "./src/js/handler/month/core.js"),
+    MonthMoveGuide = __webpack_require__(/*! ./moveGuide */ "./src/js/handler/month/moveGuide.js"),
+    TZDate = __webpack_require__(/*! ../../common/timezone */ "./src/js/common/timezone.js").Date;
+
+/**
+ * @constructor
+ * @mixes CustomEvents
+ * @param {Drag} dragHandler - Drag handler instance.
+ * @param {Month} monthView - Month view instance.
+ * @param {Base} baseController - Base controller instance.
+ */
+function MonthMove(dragHandler, monthView, baseController) {
+    /**
+     * @type {Drag}
+     */
+    this.dragHandler = dragHandler;
+
+    /**
+     * @type {Month}
+     */
+    this.monthView = monthView;
+
+    /**
+     * @type {Base}
+     */
+    this.baseController = baseController;
+
+    /**
+     * @type {function}
+     */
+    this.getScheduleData = null;
+
+    /**
+     * @type {object}
+     */
+    this._cache = null;
+
+    /**
+     * @type {MonthMoveGuide}
+     */
+    this.guide = new MonthMoveGuide(this);
+
+    dragHandler.on('dragStart', this._onDragStart, this);
+}
+
+/**
+ * Destructor
+ */
+MonthMove.prototype.destroy = function() {
+    this.dragHandler.off(this);
+
+    this.dragHandler = this.monthView = this.baseController = null;
+};
+
+/**
+ * Update target schedule
+ * @fires {MonthMove#beforeUpdateSchedule}
+ * @param {object} scheduleCache - cache object that result of single dragging
+ *  session.
+ */
+MonthMove.prototype.updateSchedule = function(scheduleCache) {
+    var schedule = scheduleCache.model;
+    var duration = schedule.duration();
+    var startDateRaw = datetime.raw(schedule.start);
+    var dragEndTime = new TZDate(scheduleCache.end);
+    var newStartDate = new TZDate(dragEndTime);
+
+    newStartDate.setHours(startDateRaw.h, startDateRaw.m, startDateRaw.s, startDateRaw.ms);
+
+    /**
+     * @event MonthMove#beforeUpdateSchedule
+     * @type {object}
+     * @property {Schedule} schedule - The original schedule instance
+     * @property {Date} start - Deprecated: start time to update
+     * @property {Date} end - Deprecated: end time to update
+     * @property {object} changes - start and end time to update
+     *  @property {Date} start - start time to update
+     *  @property {Date} end - end time to update
+     */
+    this.fire('beforeUpdateSchedule', {
+        schedule: schedule,
+        changes: {
+            start: newStartDate,
+            end: new TZDate(newStartDate).addMilliseconds(duration)
+        },
+        start: newStartDate,
+        end: new TZDate(newStartDate).addMilliseconds(duration)
+    });
+};
+
+/**
+ * Get schedule block to clone for month guide effect
+ * @param {HTMLElement} target - target element that related with drag schedule
+ * @returns {HTMLElement} element to create guide effect
+ */
+MonthMove.prototype.getMonthScheduleBlock = function(target) {
+    var blockSelector = config.classname('.weekday-schedule-block');
+
+    return domutil.closest(target, blockSelector);
+};
+
+/**
+ * Get schedule block from more layer
+ * @param {HTMLElement} target - element to check
+ * @returns {HTMLElement} schedule element
+ */
+MonthMove.prototype.getMoreLayerScheduleBlock = function(target) {
+    var className = config.classname('.month-more-schedule');
+
+    return domutil.closest(target, className);
+};
+
+/**
+ * Check handler has permission to handle fired schedule
+ * @fires {MonthMove#monthMoveStart_from_morelayer}
+ * @param {HTMLElement} target - target element of fired schedule
+ * @returns {(string|null)} model instance ID related with schedule. if handle
+ *  has not permission to handle the schedule then return null.
+ */
+MonthMove.prototype.hasPermissionToHandle = function(target) {
+    var modelID = null;
+    var blockElement;
+
+    if (domutil.hasClass(target, config.classname('weekday-resize-handle'))) {
+        return null;
+    }
+
+    blockElement = this.getMonthScheduleBlock(target);
+
+    if (blockElement) {
+        modelID = domutil.getData(blockElement, 'id');
+    } else {
+        blockElement = this.getMoreLayerScheduleBlock(target);
+
+        if (blockElement) {
+            modelID = domutil.getData(blockElement, 'id');
+            /**
+             * Fire for notificate that the drag schedule start at more layer view.
+             * @event {MonthMove#monthMoveStart_from_morelayer}
+             */
+            this.fire('monthMoveStart_from_morelayer');
+        }
+    }
+
+    return modelID;
+};
+
+/**
+ * Event handler for Drag#dragStart
+ * @fires {MonthMove#monthMoveDragstart}
+ * @param {object} dragStartEvent - drag start schedule data
+ */
+MonthMove.prototype._onDragStart = function(dragStartEvent) {
+    var target = dragStartEvent.target,
+        modelID = this.hasPermissionToHandle(target),
+        model = this.baseController.schedules.items[modelID],
+        scheduleData;
+
+    if (!modelID || !model || model.isReadOnly || model.isPending) {
+        return;
+    }
+
+    this.dragHandler.on({
+        drag: this._onDrag,
+        dragEnd: this._onDragEnd
+    }, this);
+
+    this.getScheduleData = getMousePosData(this.monthView);
+
+    scheduleData = this.getScheduleData(dragStartEvent.originEvent);
+    scheduleData.originEvent = dragStartEvent.originEvent;
+    scheduleData.target = this.getMonthScheduleBlock(target);
+    scheduleData.model = model;
+
+    this._cache = {
+        model: model,
+        target: target,
+        start: new TZDate(Number(scheduleData.date))
+    };
+
+    /**
+     * @event {MonthMove#monthMoveDragstart}
+     * @type {object}
+     * @property {number} x - x index
+     * @property {number} y - y index
+     * @property {Date} date - drag date
+     * @property {HTMLElement} target - schedule block element
+     * @property {Schedule} model - model instance
+     */
+    this.fire('monthMoveDragstart', scheduleData);
+};
+
+/**
+ * @fires {MonthMove#monthMoveDrag}
+ * @param {object} dragEvent - drag event data
+ */
+MonthMove.prototype._onDrag = function(dragEvent) {
+    var scheduleData;
+
+    if (!this.getScheduleData) {
+        return;
+    }
+
+    scheduleData = util.extend({
+        originEvent: dragEvent.originEvent
+    }, this.getScheduleData(dragEvent.originEvent));
+
+    if (!scheduleData) {
+        return;
+    }
+
+    /**
+     * @event {MonthMove#monthMoveDrag}
+     * @type {object}
+     * @property {number} x - x index
+     * @property {number} y - y index
+     * @property {Date} date - drag date
+     */
+    this.fire('monthMoveDrag', scheduleData);
+};
+
+/**
+ * Event handler for Drag#dragEnd
+ * @fires {MonthMove#monthMoveDragend}
+ * @param {object} dragEndEvent - dragend event data
+ */
+MonthMove.prototype._onDragEnd = function(dragEndEvent) {
+    var cache = this._cache;
+    var scheduleData;
+
+    this.dragHandler.off({
+        drag: this._onDrag,
+        dragEnd: this._onDragEnd
+    }, this);
+
+    if (!this.getScheduleData) {
+        return;
+    }
+
+    scheduleData = this.getScheduleData(dragEndEvent.originEvent);
+
+    if (scheduleData) {
+        cache.end = new TZDate(scheduleData.date);
+        this.updateSchedule(cache);
+    }
+
+    /**
+     * @event {MonthResize#monthMoveDragend}
+     * @type {object}
+     * @property {number} x - x index
+     * @property {number} y - y index
+     * @property {Date} date - drag date
+     */
+    this.fire('monthMoveDragend', scheduleData);
+
+    this.getScheduleData = this._cache = null;
+};
+
+util.CustomEvents.mixin(MonthMove);
+
+module.exports = MonthMove;
+
+
+/***/ }),
+
+/***/ "./src/js/handler/month/moveGuide.hbs":
+/*!********************************************!*\
+  !*** ./src/js/handler/month/moveGuide.hbs ***!
+  \********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var Handlebars = __webpack_require__(/*! ./node_modules/handlebars/runtime.js */ "./node_modules/handlebars/runtime.js");
+module.exports = (Handlebars['default'] || Handlebars).template({"1":function(container,depth0,helpers,partials,data) {
+    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {
+        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+          return parent[propertyName];
+        }
+        return undefined
+    };
+
+  return "            border-left:3px solid "
+    + container.escapeExpression(container.lambda(((stack1 = (depth0 != null ? lookupProperty(depth0,"model") : depth0)) != null ? lookupProperty(stack1,"borderColor") : stack1), depth0))
+    + ";\n            ";
+},"3":function(container,depth0,helpers,partials,data) {
+    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3="function", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {
+        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+          return parent[propertyName];
+        }
+        return undefined
+    };
+
+  return "    <span class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":14,"column":17},"end":{"line":14,"column":31}}}) : helper)))
+    + "weekday-schedule-bullet "
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":14,"column":55},"end":{"line":14,"column":69}}}) : helper)))
+    + "weekday-schedule-bullet-focused\" style=\"top: "
+    + alias4(container.lambda(((stack1 = (depth0 != null ? lookupProperty(depth0,"styles") : depth0)) != null ? lookupProperty(stack1,"scheduleBulletTop") : stack1), depth0))
+    + "px;\"></span>\n";
+},"5":function(container,depth0,helpers,partials,data) {
+    var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {
+        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+          return parent[propertyName];
+        }
+        return undefined
+    };
+
+  return container.escapeExpression(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === "function" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":16,"column":110},"end":{"line":16,"column":124}}}) : helper)))
+    + "weekday-schedule-title-focused";
+},"7":function(container,depth0,helpers,partials,data) {
+    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {
+        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+          return parent[propertyName];
+        }
+        return undefined
+    };
+
+  return "            "
+    + ((stack1 = (lookupProperty(helpers,"allday-tmpl")||(depth0 && lookupProperty(depth0,"allday-tmpl"))||container.hooks.helperMissing).call(depth0 != null ? depth0 : (container.nullContext || {}),(depth0 != null ? lookupProperty(depth0,"model") : depth0),{"name":"allday-tmpl","hash":{},"data":data,"loc":{"start":{"line":18,"column":12},"end":{"line":18,"column":35}}})) != null ? stack1 : "")
+    + "\n";
+},"9":function(container,depth0,helpers,partials,data) {
+    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {
+        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+          return parent[propertyName];
+        }
+        return undefined
+    };
+
+  return "            "
+    + ((stack1 = (lookupProperty(helpers,"time-tmpl")||(depth0 && lookupProperty(depth0,"time-tmpl"))||container.hooks.helperMissing).call(depth0 != null ? depth0 : (container.nullContext || {}),(depth0 != null ? lookupProperty(depth0,"model") : depth0),{"name":"time-tmpl","hash":{},"data":data,"loc":{"start":{"line":20,"column":12},"end":{"line":20,"column":33}}})) != null ? stack1 : "")
+    + "\n";
+},"compiler":[8,">= 4.3.0"],"main":function(container,depth0,helpers,partials,data) {
+    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3="function", alias4=container.escapeExpression, alias5=container.lambda, lookupProperty = container.lookupProperty || function(parent, propertyName) {
+        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+          return parent[propertyName];
+        }
+        return undefined
+    };
+
+  return "<div class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":1,"column":12},"end":{"line":1,"column":26}}}) : helper)))
+    + "month-guide "
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":1,"column":38},"end":{"line":1,"column":52}}}) : helper)))
+    + "month-guide-focused\"\n     style=\"top: -50%;\n            left: -50%;\n            width: 100%;\n            color: #ffffff;\n            background-color:"
+    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,"model") : depth0)) != null ? lookupProperty(stack1,"dragBgColor") : stack1), depth0))
+    + ";\n            height:"
+    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,"styles") : depth0)) != null ? lookupProperty(stack1,"scheduleHeight") : stack1), depth0))
+    + "px;\n            line-height:"
+    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,"styles") : depth0)) != null ? lookupProperty(stack1,"scheduleHeight") : stack1), depth0))
+    + "px;\n            border-radius: "
+    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,"styles") : depth0)) != null ? lookupProperty(stack1,"borderRadius") : stack1), depth0))
+    + ";\n"
+    + ((stack1 = lookupProperty(helpers,"if").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,"model") : depth0)) != null ? lookupProperty(stack1,"isAllDay") : stack1),{"name":"if","hash":{},"fn":container.program(1, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":10,"column":12},"end":{"line":12,"column":19}}})) != null ? stack1 : "")
+    + "\">\n"
+    + ((stack1 = lookupProperty(helpers,"unless").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,"model") : depth0)) != null ? lookupProperty(stack1,"isAllDay") : stack1),{"name":"unless","hash":{},"fn":container.program(3, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":13,"column":4},"end":{"line":15,"column":15}}})) != null ? stack1 : "")
+    + "    <div class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":16,"column":16},"end":{"line":16,"column":30}}}) : helper)))
+    + "month-move-guide "
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":16,"column":47},"end":{"line":16,"column":61}}}) : helper)))
+    + "weekday-schedule-title "
+    + ((stack1 = lookupProperty(helpers,"unless").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,"model") : depth0)) != null ? lookupProperty(stack1,"isAllDay") : stack1),{"name":"unless","hash":{},"fn":container.program(5, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":16,"column":84},"end":{"line":16,"column":165}}})) != null ? stack1 : "")
+    + "\">\n"
+    + ((stack1 = lookupProperty(helpers,"if").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,"model") : depth0)) != null ? lookupProperty(stack1,"isAllDay") : stack1),{"name":"if","hash":{},"fn":container.program(7, data, 0),"inverse":container.program(9, data, 0),"data":data,"loc":{"start":{"line":17,"column":8},"end":{"line":21,"column":15}}})) != null ? stack1 : "")
+    + "    </div>\n</div>\n<div class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":24,"column":12},"end":{"line":24,"column":26}}}) : helper)))
+    + "month-guide-cover\" style=\"height:"
+    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,"styles") : depth0)) != null ? lookupProperty(stack1,"scheduleHeight") : stack1), depth0))
+    + "px; border-radius: "
+    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,"styles") : depth0)) != null ? lookupProperty(stack1,"borderRadius") : stack1), depth0))
+    + ";\"></div>\n";
+},"useData":true});
+
+/***/ }),
+
+/***/ "./src/js/handler/month/moveGuide.js":
+/*!*******************************************!*\
+  !*** ./src/js/handler/month/moveGuide.js ***!
+  \*******************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/* WEBPACK VAR INJECTION */(function(global) {/**
+ * @fileoverview Module for modification of guide element for move in month view
+ * @author NHN FE Development Lab <dl_javascript@nhn.com>
+ */
+
+
+var util = __webpack_require__(/*! tui-code-snippet */ "tui-code-snippet");
+
+var config = __webpack_require__(/*! ../../config */ "./src/js/config.js"),
+    domutil = __webpack_require__(/*! ../../common/domutil */ "./src/js/common/domutil.js"),
+    domevent = __webpack_require__(/*! ../../common/domevent */ "./src/js/common/domevent.js"),
+    FloatingLayer = __webpack_require__(/*! ../../common/floatingLayer */ "./src/js/common/floatingLayer.js"),
+    tmpl = __webpack_require__(/*! ./moveGuide.hbs */ "./src/js/handler/month/moveGuide.hbs"),
+    Schedule = __webpack_require__(/*! ../../model/schedule */ "./src/js/model/schedule.js");
+
+/**
+ * @constructor
+ * @param {MonthMove} monthMove - month/move module instance
+ */
+function MonthMoveGuide(monthMove) {
+    /**
+     * @type {MonthMove}
+     */
+    this.monthMove = monthMove;
+
+    /**
+     * @type {HTMLElement[]}
+     */
+    this.elements = null;
+
+    /**
+     * @type {FloatingLayer}
+     */
+    this.layer = null;
+
+    monthMove.on({
+        monthMoveDragstart: this._onDragStart,
+        monthMoveDrag: this._onDrag,
+        monthMoveDragend: this._onDragEnd
+    }, this);
+}
+
+/**
+ * Destructor
+ */
+MonthMoveGuide.prototype.destroy = function() {
+    this.monthMove.off(this);
+    this._clearGridBgColor();
+
+    if (this.layer) {
+        this.layer.destroy();
+    }
+
+    if (this.element) {
+        domutil.remove(this.element);
+    }
+
+    this.monthMove = this.elements = this.layer = null;
+};
+
+/**
+ * Hide element blocks for resize effect
+ * @param {number} modelID - Schedule model instance ID
+ */
+MonthMoveGuide.prototype._hideOriginScheduleBlocks = function(modelID) {
+    var className = config.classname('weekday-schedule-block-dragging-dim');
+
+    this.elements = domutil.find(
+        config.classname('.weekday-schedule-block-' + modelID),
+        this.monthMove.monthView.container,
+        true
+    );
+
+    util.forEach(this.elements, function(el) {
+        domutil.addClass(el, className);
+    });
+};
+
+/**
+ * Show element blocks
+ */
+MonthMoveGuide.prototype._showOriginScheduleBlocks = function() {
+    var className = config.classname('weekday-schedule-block-dragging-dim');
+
+    util.forEach(this.elements, function(el) {
+        domutil.removeClass(el, className);
+    });
+};
+
+/**
+ * Clear background color for filled grid element.
+ */
+MonthMoveGuide.prototype._clearGridBgColor = function() {
+    var selector = config.classname('.weekday-filled'),
+        className = config.classname('weekday-filled'),
+        beforeGridElement = domutil.find(selector,
+            this.monthMove.monthView.container);
+
+    if (beforeGridElement) {
+        domutil.removeClass(beforeGridElement, className);
+    }
+};
+
+/**
+ * Fill background color of date grids relatied with model updates.
+ * @param {object} dragEvent - drag event data from MonthMoveGuide#_onDrag
+ */
+MonthMoveGuide.prototype._updateGridBgColor = function(dragEvent) {
+    var gridElements = domutil.find(config.classname('.weekday-grid-line'), this.monthMove.monthView.container, true),
+        className = config.classname('weekday-filled'),
+        targetIndex = (dragEvent.x + (dragEvent.sizeX * dragEvent.y));
+
+    this._clearGridBgColor();
+
+    if (!gridElements || !gridElements[targetIndex]) {
+        return;
+    }
+
+    domutil.addClass(gridElements[targetIndex], className);
+};
+
+/**
+ * Handler for MonthMove#dragStart
+ * @param {object} dragStartEvent - dragStart schedule data object
+ */
+MonthMoveGuide.prototype._onDragStart = function(dragStartEvent) {
+    var monthView = this.monthMove.monthView,
+        firstWeekdayView = monthView.children.single(),
+        weekdayOptions = firstWeekdayView.options,
+        widthPercent = 100 / firstWeekdayView.getRenderDateRange().length,
+        height = weekdayOptions.scheduleGutter + weekdayOptions.scheduleHeight,
+        container = monthView.container,
+        mousePos = domevent.getMousePosition(dragStartEvent.originEvent, container),
+        model = dragStartEvent.model,
+        layer = new FloatingLayer(null, container);
+
+    this._hideOriginScheduleBlocks(model.cid());
+
+    this.layer = layer;
+    layer.setSize(widthPercent + '%', height);
+    layer.setPosition(mousePos[0], mousePos[1]);
+    layer.setContent(tmpl({
+        model: util.extend(
+            Schedule.create(model),
+            model
+        ),
+        styles: {
+            scheduleHeight: weekdayOptions.scheduleHeight,
+            scheduleBulletTop: weekdayOptions.scheduleHeight / 3,
+            borderRadius: monthView.controller.theme.month.schedule.borderRadius
+        }
+    }));
+    layer.show();
+
+    if (!util.browser.msie) {
+        domutil.addClass(global.document.body, config.classname('dragging'));
+    }
+};
+
+/**
+ * Handler for MonthMove#drag
+ * @param {object} dragEvent - drag event data object
+ */
+MonthMoveGuide.prototype._onDrag = function(dragEvent) {
+    var container = this.monthMove.monthView.container,
+        mousePos = domevent.getMousePosition(
+            dragEvent.originEvent,
+            container
+        );
+
+    this._updateGridBgColor(dragEvent);
+
+    if (!this.layer) {
+        return;
+    }
+
+    this.layer.setPosition(mousePos[0], mousePos[1]);
+};
+
+/**
+ * Handler for MonthMove#dragEnd
+ */
+MonthMoveGuide.prototype._onDragEnd = function() {
+    this._showOriginScheduleBlocks();
+
+    if (!util.browser.msie) {
+        domutil.removeClass(global.document.body, config.classname('dragging'));
+    }
+
+    this._clearGridBgColor();
+    this.layer.destroy();
+    this.layer = null;
+};
+
+module.exports = MonthMoveGuide;
+
+/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../../node_modules/webpack/buildin/global.js */ "./node_modules/webpack/buildin/global.js")))
+
+/***/ }),
+
+/***/ "./src/js/handler/month/resize.js":
+/*!****************************************!*\
+  !*** ./src/js/handler/month/resize.js ***!
+  \****************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/**
+ * @fileoverview Module for resize schedule in month view
+ * @author NHN FE Development Lab <dl_javascript@nhn.com>
+ */
+
+
+var util = __webpack_require__(/*! tui-code-snippet */ "tui-code-snippet");
+
+var config = __webpack_require__(/*! ../../config */ "./src/js/config.js"),
+    datetime = __webpack_require__(/*! ../../common/datetime */ "./src/js/common/datetime.js"),
+    domutil = __webpack_require__(/*! ../../common/domutil */ "./src/js/common/domutil.js"),
+    getMousePosData = __webpack_require__(/*! ./core */ "./src/js/handler/month/core.js"),
+    MonthResizeGuide = __webpack_require__(/*! ./resizeGuide */ "./src/js/handler/month/resizeGuide.js"),
+    TZDate = __webpack_require__(/*! ../../common/timezone */ "./src/js/common/timezone.js").Date;
+
+var common = __webpack_require__(/*! ../../common/common */ "./src/js/common/common.js");
+
+/**
+ * @constructor
+ * @param {Drag} dragHandler - Drag handler instance.
+ * @param {Month} monthView - Month view instance.
+ * @param {Base} baseController - Base controller instance.
+ */
+function MonthResize(dragHandler, monthView, baseController) {
+    /**
+     * @type {Drag}
+     */
+    this.dragHandler = dragHandler;
+
+    /**
+     * @type {Month}
+     */
+    this.monthView = monthView;
+
+    /**
+     * @type {Base}
+     */
+    this.baseController = baseController;
+
+    /**
+     * @type {function}
+     */
+    this.getScheduleData = null;
+
+    /**
+     * @type {object}
+     */
+    this._cache = null;
+
+    /**
+     * @type {MonthResizeGuide}
+     */
+    this.guide = new MonthResizeGuide(this);
+
+    dragHandler.on('dragStart', this._onDragStart, this);
+}
+
+/**
+ * Destructor
+ */
+MonthResize.prototype.destroy = function() {
+    this.dragHandler.off(this);
+
+    this.dragHandler = this.monthView = this.baseController = null;
+};
+
+/**
+ * Fire event for update model
+ * @fires {MonthResize#beforeUpdateSchedule}
+ * @param {object} scheduleCache - cache object that result of single dragging
+ *  session.
+ */
+MonthResize.prototype._updateSchedule = function(scheduleCache) {
+    // You can not change the start date of the event. Only the end time can be changed.
+    var newEnd = datetime.end(new TZDate(scheduleCache.end)),
+        schedule = scheduleCache.schedule;
+    var changes = common.getScheduleChanges(
+        schedule,
+        ['end'],
+        {end: newEnd}
+    );
+
+    /**
+     * @event MonthResize#beforeUpdateSchedule
+     * @type {object}
+     * @property {Schedule} schedule - The original schedule instance
+     * @property {Date} start - Deprecated: start time to update
+     * @property {Date} end - Deprecated: end time to update
+     * @property {object} changes - end time to update
+     *  @property {date} end - end time to update
+     */
+    this.fire('beforeUpdateSchedule', {
+        schedule: schedule,
+        changes: changes,
+        start: new TZDate(schedule.getStarts()),
+        end: newEnd
+    });
+};
+
+/**
+ * Event handler for Drag#dragStart
+ * @fires {MonthResize#monthResizeDragstart}
+ * @param {object} dragStartEvent - drag start event data
+ */
+MonthResize.prototype._onDragStart = function(dragStartEvent) {
+    var target = dragStartEvent.target,
+        modelID, schedule,
+        scheduleData;
+
+    if (!domutil.hasClass(target, config.classname('weekday-resize-handle'))) {
+        return;
+    }
+
+    target = domutil.closest(target, config.classname('.weekday-schedule-block'));
+
+    if (!target) {
+        return;
+    }
+
+    modelID = domutil.getData(target, 'id');
+    schedule = this.baseController.schedules.items[modelID];
+
+    this.dragHandler.on({
+        drag: this._onDrag,
+        dragEnd: this._onDragEnd
+    }, this);
+
+    this.getScheduleData = getMousePosData(this.monthView);
+    scheduleData = this.getScheduleData(dragStartEvent.originEvent);
+    scheduleData.target = target;
+    scheduleData.model = schedule;
+
+    this._cache = {
+        schedule: schedule,
+        target: target,
+        start: new TZDate(scheduleData.date)
+    };
+
+    /**
+     * @event {MonthCreation#monthResizeDragstart}
+     * @type {object}
+     * @property {number} x - x index
+     * @property {number} y - y index
+     * @property {Date} date - drag date
+     * @property {HTMLElement} target - schedule block element
+     * @property {Schedule} model - model instance
+     */
+    this.fire('monthResizeDragstart', scheduleData);
+};
+
+/**
+ * @fires {MonthResize#monthResizeDrag}
+ * @param {object} dragEvent - drag event data
+ */
+MonthResize.prototype._onDrag = function(dragEvent) {
+    var scheduleData;
+
+    if (!this.getScheduleData) {
+        return;
+    }
+
+    scheduleData = this.getScheduleData(dragEvent.originEvent);
+
+    if (!scheduleData) {
+        return;
+    }
+
+    /**
+     * @event {MonthResize#monthResizeDrag}
+     * @type {object}
+     * @property {number} x - x index
+     * @property {number} y - y index
+     * @property {Date} date - drag date
+     */
+    this.fire('monthResizeDrag', scheduleData);
+};
+
+/**
+ * @fires {MonthResize#monthResizeDragend}
+ * @param {object} dragEndEvent - drag end event data
+ */
+MonthResize.prototype._onDragEnd = function(dragEndEvent) {
+    var cache = this._cache;
+    var scheduleData;
+    var start, end;
+
+    this.dragHandler.off({
+        drag: this._onDrag,
+        dragEnd: this._onDragEnd
+    }, this);
+
+    if (!this.getScheduleData) {
+        return;
+    }
+
+    scheduleData = this.getScheduleData(dragEndEvent.originEvent);
+
+    if (scheduleData) {
+        start = new TZDate(cache.schedule.getStarts());
+        end = new TZDate(scheduleData.date);
+        cache.end = end;
+
+        if (start <= cache.end) {
+            this._updateSchedule(cache);
+        }
+    }
+
+    /**
+     * @event {MonthResize#monthResizeDragend}
+     * @type {object}
+     * @property {number} x - x index
+     * @property {number} y - y index
+     * @property {Date} date - drag date
+     */
+    this.fire('monthResizeDragend', scheduleData);
+
+    this.getScheduleData = this._cache = null;
+};
+
+util.CustomEvents.mixin(MonthResize);
+
+module.exports = MonthResize;
+
+
+/***/ }),
+
+/***/ "./src/js/handler/month/resizeGuide.js":
+/*!*********************************************!*\
+  !*** ./src/js/handler/month/resizeGuide.js ***!
+  \*********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/* WEBPACK VAR INJECTION */(function(global) {/**
+ * @fileoverview Module for modification of guide element in schedule resize
+ * @author NHN FE Development Lab <dl_javascript@nhn.com>
+ */
+
+
+var util = __webpack_require__(/*! tui-code-snippet */ "tui-code-snippet");
+
+var config = __webpack_require__(/*! ../../config */ "./src/js/config.js"),
+    domutil = __webpack_require__(/*! ../../common/domutil */ "./src/js/common/domutil.js"),
+    MonthGuide = __webpack_require__(/*! ./guide */ "./src/js/handler/month/guide.js");
+
+/**
+ * @constructor
+ * @param {MonthResize} monthResize - month/resize module instance
+ */
+function MonthResizeGuide(monthResize) {
+    /**
+     * @type {MonthResize}
+     */
+    this.monthResize = monthResize;
+
+    /**
+     * @type {HTMLElement[]}
+     */
+    this.elements = null;
+
+    /**
+     * @type {MonthGuide}
+     */
+    this.guide = null;
+
+    monthResize.on({
+        monthResizeDragstart: this._onDragStart,
+        monthResizeDrag: this._onDrag,
+        monthResizeDragend: this._onDragEnd
+    }, this);
+}
+
+/**
+ * Destructor
+ */
+MonthResizeGuide.prototype.destroy = function() {
+    this.monthResize.off(this);
+    this.guide.destroy();
+
+    this.guide = this.monthResize = null;
+};
+
+/**
+ * Hide element blocks for resize effect
+ * @param {number} modelID - Schedule model instance ID
+ */
+MonthResizeGuide.prototype._hideScheduleBlocks = function(modelID) {
+    this.elements = domutil.find(
+        config.classname('.weekday-schedule-block-' + modelID),
+        this.monthResize.monthView.container,
+        true
+    );
+
+    util.forEach(this.elements, function(el) {
+        el.style.display = 'none';
+    });
+};
+
+/**
+ * Show element blocks
+ */
+MonthResizeGuide.prototype._showScheduleBlocks = function() {
+    util.forEach(this.elements, function(el) {
+        el.style.display = 'block';
+    });
+};
+
+/**
+ * Drag start event handler
+ * @param {object} dragStartEvent - schedule data from MonthResize
+ */
+MonthResizeGuide.prototype._onDragStart = function(dragStartEvent) {
+    this.guide = new MonthGuide({
+        isResizeMode: true
+    }, this.monthResize.monthView);
+
+    this.guide.start(dragStartEvent);
+
+    this._hideScheduleBlocks(dragStartEvent.model.cid());
+
+    if (!util.browser.msie) {
+        domutil.addClass(global.document.body, config.classname('resizing-x'));
+    }
+};
+
+/**
+ * Drag event handler
+ * @param {object} dragEvent - event data from MonthCreation
+ */
+MonthResizeGuide.prototype._onDrag = function(dragEvent) {
+    this.guide.update(dragEvent.x, dragEvent.y);
+};
+
+/**
+ * Drag end event handler
+ */
+MonthResizeGuide.prototype._onDragEnd = function() {
+    this._showScheduleBlocks();
+
+    this.guide.destroy();
+    this.elements = this.guide = null;
+
+    if (!util.browser.msie) {
+        domutil.removeClass(global.document.body, config.classname('resizing-x'));
+    }
+};
+
+module.exports = MonthResizeGuide;
+
+/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../../node_modules/webpack/buildin/global.js */ "./node_modules/webpack/buildin/global.js")))
+
+/***/ }),
+
+/***/ "./src/js/handler/time/click.js":
+/*!**************************************!*\
+  !*** ./src/js/handler/time/click.js ***!
+  \**************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/**
+ * @fileoverview Allday event click event hander module
+ * @author NHN FE Development Lab <dl_javascript@nhn.com>
+ */
+
+
+var util = __webpack_require__(/*! tui-code-snippet */ "tui-code-snippet");
+var config = __webpack_require__(/*! ../../config */ "./src/js/config.js");
+var domutil = __webpack_require__(/*! ../../common/domutil */ "./src/js/common/domutil.js");
+
+/**
+ * @constructor
+ * @implements {Handler}
+ * @mixes util.CustomEvents
+ * @param {Drag} [dragHandler] - Drag handler instance.
+ * @param {TimeGrid} [timeGridView] - TimeGrid view instance.
+ * @param {Base} [baseController] - Base controller instance.
+ */
+function TimeClick(dragHandler, timeGridView, baseController) {
+    /**
+     * @type {Drag}
+     */
+    this.dragHandler = dragHandler;
+
+    /**
+     * @type {TimeGrid}
+     */
+    this.timeGridView = timeGridView;
+
+    /**
+     * @type {Base}
+     */
+    this.baseController = baseController;
+
+    dragHandler.on({
+        'click': this._onClick
+    }, this);
+}
+
+/**
+ * Destroy method
+ */
+TimeClick.prototype.destroy = function() {
+    this.dragHandler.off(this);
+    this.timeGridView = this.baseController = this.dragHandler = null;
+};
+
+/**
+ * Check target element is expected condition for activate this plugins.
+ * @param {HTMLElement} target - The element to check
+ * @returns {string} - model id
+ */
+TimeClick.prototype.checkExpectCondition = function(target) {
+    var container,
+        matches;
+
+    container = domutil.closest(target, config.classname('.time-date'));
+
+    if (!container) {
+        return false;
+    }
+
+    matches = domutil.getClass(container).match(config.time.getViewIDRegExp);
+
+    if (!matches || matches.length < 2) {
+        return false;
+    }
+
+    return util.pick(this.timeGridView.children.items, Number(matches[1]));
+};
+
+/**
+ * Click event hander
+ * @param {object} clickEvent - click event from {@link Drag}
+ * @emits TimeClick#clickEvent
+ */
+TimeClick.prototype._onClick = function(clickEvent) {
+    var self = this,
+        target = clickEvent.target,
+        timeView = this.checkExpectCondition(target),
+        blockElement = domutil.closest(target, config.classname('.time-date-schedule-block')),
+        schedulesCollection = this.baseController.schedules;
+
+    if (!timeView || !blockElement) {
+        return;
+    }
+
+    schedulesCollection.doWhenHas(domutil.getData(blockElement, 'id'), function(schedule) {
+        /**
+         * @events TimeClick#clickSchedule
+         * @type {object}
+         * @property {Schedule} schedule - schedule instance
+         * @property {MouseEvent} event - MouseEvent object
+         */
+        self.fire('clickSchedule', {
+            schedule: schedule,
+            event: clickEvent.originEvent
+        });
+    });
+};
+
+util.CustomEvents.mixin(TimeClick);
+
+module.exports = TimeClick;
+
+
+/***/ }),
+
+/***/ "./src/js/handler/time/clickDayname.js":
+/*!*********************************************!*\
+  !*** ./src/js/handler/time/clickDayname.js ***!
+  \*********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/**
+ * @fileoverview Dayname click event hander module
+ * @author NHN FE Development Lab <dl_javascript@nhn.com>
+ */
+
+
+var util = __webpack_require__(/*! tui-code-snippet */ "tui-code-snippet");
+var config = __webpack_require__(/*! ../../config */ "./src/js/config.js");
+var domutil = __webpack_require__(/*! ../../common/domutil */ "./src/js/common/domutil.js");
+
+/**
+ * @constructor
+ * @implements {Handler}
+ * @mixes util.CustomEvents
+ * @param {Drag} [dragHandler] - Drag handler instance.
+ * @param {DayName} [dayNameView] - DayName view instance.
+ * @param {Base} [baseController] - Base controller instance.
+ */
+function DayNameClick(dragHandler, dayNameView, baseController) {
+    /**
+     * @type {Drag}
+     */
+    this.dragHandler = dragHandler;
+
+    /**
+     * @type {DayName}
+     */
+    this.dayNameView = dayNameView;
+
+    /**
+     * @type {Base}
+     */
+    this.baseController = baseController;
+
+    dragHandler.on({
+        'click': this._onClick
+    }, this);
+}
+
+/**
+ * Destroy method
+ */
+DayNameClick.prototype.destroy = function() {
+    this.dragHandler.off(this);
+    this.dayNameView = this.baseController = this.dragHandler = null;
+};
+
+/**
+ * Check target element is expected condition for activate this plugins.
+ * @param {HTMLElement} target - The element to check
+ * @returns {string} - model id
+ */
+DayNameClick.prototype.checkExpectCondition = function(target) {
+    var container = domutil.closest(target, config.classname('.dayname-date-area'));
+
+    if (!container) {
+        return false;
+    }
+
+    return true;
+};
+
+/**
+ * Click event hander
+ * @param {object} clickEvent - click event from {@link Drag}
+ * @emits DayNameClick#clickDayname
+ */
+DayNameClick.prototype._onClick = function(clickEvent) {
+    var self = this,
+        target = clickEvent.target,
+        daynameView = this.checkExpectCondition(target),
+        blockElement = domutil.closest(target, config.classname('.dayname'));
+
+    if (!daynameView || !blockElement) {
+        return;
+    }
+
+    /**
+     * @events DayNameClick#clickDayname
+     * @type {object}
+     * @property {string} date - click date
+     */
+    self.fire('clickDayname', {
+        date: domutil.getData(blockElement, 'date')
+    });
+};
+
+util.CustomEvents.mixin(DayNameClick);
+
+module.exports = DayNameClick;
+
+
+/***/ }),
+
+/***/ "./src/js/handler/time/core.js":
+/*!*************************************!*\
+  !*** ./src/js/handler/time/core.js ***!
+  \*************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/**
+ * @fileoverview Core methods for dragging actions
+ * @author NHN FE Development Lab <dl_javascript@nhn.com>
+ */
+
+
+var util = __webpack_require__(/*! tui-code-snippet */ "tui-code-snippet");
+var common = __webpack_require__(/*! ../../common/common */ "./src/js/common/common.js");
+var datetime = __webpack_require__(/*! ../../common/datetime */ "./src/js/common/datetime.js");
+var domevent = __webpack_require__(/*! ../../common/domevent */ "./src/js/common/domevent.js");
+var Point = __webpack_require__(/*! ../../common/point */ "./src/js/common/point.js");
+var TZDate = __webpack_require__(/*! ../../common/timezone */ "./src/js/common/timezone.js").Date;
+
+/**
+ * @mixin Time.Core
+ */
+var timeCore = {
+    /**
+     * Get Y index ratio(hour) in time grids by supplied parameters.
+     * @param {number} baseMil - base milliseconds number for supplied height.
+     * @param {number} height - container element height.
+     * @param {number} y - Y coordinate to calculate hour ratio.
+     * @returns {number} hour index ratio value.
+     */
+    _calcGridYIndex: function(baseMil, height, y) {
+        // get ratio from right expression > point.y : x = session.height : baseMil
+        // and convert milliseconds value to hours.
+        var result = datetime.millisecondsTo('hour', (y * baseMil) / height),
+            floored = result | 0,
+            nearest = common.nearest(result - floored, [0, 1]);
+
+        return floored + (nearest ? 0.5 : 0);
+    },
+
+    /**
+     * Get function to makes event data from Time and mouseEvent
+     * @param {Time} timeView - Instance of time view.
+     * @returns {function} - Function that return event data from mouse event.
+     */
+    _retriveScheduleData: function(timeView) {
+        var self = this,
+            container = timeView.container,
+            options = timeView.options,
+            viewHeight = timeView.getViewBound().height,
+            viewTime = timeView.getDate(),
+            hourLength = options.hourEnd - options.hourStart,
+            baseMil = datetime.millisecondsFrom('hour', hourLength);
+
+        /**
+         * @param {MouseEvent} mouseEvent - mouse event object to get common event data.
+         * @param {object} [extend] - object to extend event data before return.
+         * @returns {object} - common event data for time
+         */
+        return function(mouseEvent, extend) {
+            var mouseY = Point.n(domevent.getMousePosition(mouseEvent, container)).y,
+                gridY = common.ratio(viewHeight, hourLength, mouseY),
+                timeY = new TZDate(viewTime).addMinutes(datetime.minutesFromHours(gridY)),
+                nearestGridY = self._calcGridYIndex(baseMil, viewHeight, mouseY),
+                nearestGridTimeY = new TZDate(viewTime).addMinutes(
+                    datetime.minutesFromHours(nearestGridY + options.hourStart)
+                );
+
+            return util.extend({
+                target: domevent.getEventTarget(mouseEvent),
+                relatedView: timeView,
+                originEvent: mouseEvent,
+                mouseY: mouseY,
+                gridY: gridY,
+                timeY: timeY,
+                nearestGridY: nearestGridY,
+                nearestGridTimeY: nearestGridTimeY,
+                triggerEvent: mouseEvent.type
+            }, extend);
+        };
+    },
+
+    /**
+     * Get function to makes event data from Time and mouseEvent
+     * @param {Time} timeView - Instance of time view.
+     * @param {TZDate} startDate - start date
+     * @param {TZDate} endDate - end date
+     * @param {number} hourStart Can limit of render hour start.
+     * @returns {object} - common event data for time from mouse event.
+     */
+    _retriveScheduleDataFromDate: function(timeView, startDate, endDate, hourStart) {
+        var viewTime = timeView.getDate();
+        var gridY, timeY, nearestGridY, nearestGridTimeY, nearestGridEndY, nearestGridEndTimeY;
+
+        gridY = startDate.getHours() - hourStart + getNearestHour(startDate.getMinutes());
+        timeY = new TZDate(viewTime).addMinutes(datetime.minutesFromHours(gridY));
+        nearestGridY = gridY;
+        nearestGridTimeY = new TZDate(viewTime).addMinutes(datetime.minutesFromHours(nearestGridY));
+        nearestGridEndY = endDate.getHours() - hourStart + getNearestHour(endDate.getMinutes());
+        nearestGridEndTimeY = new TZDate(viewTime).addMinutes(datetime.minutesFromHours(nearestGridEndY));
+
+        return {
+            target: timeView,
+            relatedView: timeView,
+            gridY: gridY,
+            timeY: timeY,
+            nearestGridY: nearestGridY,
+            nearestGridTimeY: nearestGridTimeY,
+            nearestGridEndY: nearestGridEndY,
+            nearestGridEndTimeY: nearestGridEndTimeY,
+            triggerEvent: 'manual',
+            hourStart: hourStart
+        };
+    },
+
+    /**
+     * Mixin method.
+     * @param {(TimeCreation|TimeMove)} obj - Constructor functions
+     */
+    mixin: function(obj) {
+        var proto = obj.prototype;
+        util.forEach(timeCore, function(method, methodName) {
+            if (methodName === 'mixin') {
+                return;
+            }
+
+            proto[methodName] = method;
+        });
+    }
+};
+
+/**
+ * Get the nearest hour
+ * @param {number} minutes - minutes
+ * @returns {number} hour
+ */
+function getNearestHour(minutes) {
+    var nearestHour;
+    if (minutes === 0) {
+        nearestHour = 0;
+    } else if (minutes > 30) {
+        nearestHour = 1;
+    } else if (minutes <= 30) {
+        nearestHour = 0.5;
+    }
+
+    return nearestHour;
+}
+
+module.exports = timeCore;
+
+
+/***/ }),
+
+/***/ "./src/js/handler/time/creation.js":
+/*!*****************************************!*\
+  !*** ./src/js/handler/time/creation.js ***!
+  \*****************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/**
+ * @fileoverview Handling creation events from drag handler and time grid view
+ * @author NHN FE Development Lab <dl_javascript@nhn.com>
+ */
+
+
+var util = __webpack_require__(/*! tui-code-snippet */ "tui-code-snippet");
+var config = __webpack_require__(/*! ../../config */ "./src/js/config.js");
+var array = __webpack_require__(/*! ../../common/array */ "./src/js/common/array.js");
+var datetime = __webpack_require__(/*! ../../common/datetime */ "./src/js/common/datetime.js");
+var domutil = __webpack_require__(/*! ../../common/domutil */ "./src/js/common/domutil.js");
+var domevent = __webpack_require__(/*! ../../common/domevent */ "./src/js/common/domevent.js");
+var common = __webpack_require__(/*! ../../common/common */ "./src/js/common/common.js");
+var TimeCreationGuide = __webpack_require__(/*! ./creationGuide */ "./src/js/handler/time/creationGuide.js");
+var TZDate = __webpack_require__(/*! ../../common/timezone */ "./src/js/common/timezone.js").Date;
+var timeCore = __webpack_require__(/*! ./core */ "./src/js/handler/time/core.js");
+
+var CLICK_DELAY = 300;
+
+/**
+ * @constructor
+ * @implements {Handler}
+ * @mixes timeCore
+ * @mixes CustomEvents
+ * @param {Drag} [dragHandler] - Drag handler instance.
+ * @param {TimeGrid} [timeGridView] - TimeGrid view instance.
+ * @param {Base} [baseController] - Base controller instance.
+ * @param {Options} [options] - calendar Options
+ */
+function TimeCreation(dragHandler, timeGridView, baseController, options) {
+    /**
+     * Drag handler instance.
+     * @type {Drag}
+     */
+    this.dragHandler = dragHandler;
+
+    /**
+     * TimeGrid view instance.
+     * @type {TimeGrid}
+     */
+    this.timeGridView = timeGridView;
+
+    /**
+     * Base controller instance.
+     * @type {Base}
+     */
+    this.baseController = baseController;
+
+    /**
+     * @type {TimeCreationGuide}
+     */
+    this.guide = new TimeCreationGuide(this);
+
+    /**
+     * Temporary function for single drag session's calc.
+     * @type {function}
+     */
+    this._getScheduleDataFunc = null;
+
+    /**
+     * Temporary function for drag start data cache.
+     * @type {object}
+     */
+    this._dragStart = null;
+
+    /**
+     * @type {boolean}
+     */
+    this._requestOnClick = false;
+
+    /**
+     * @type {boolean}
+     */
+    this._disableDblClick = options.disableDblClick;
+
+    /**
+     * @type {boolean}
+     */
+    this._disableClick = options.disableClick;
+
+    dragHandler.on('dragStart', this._onDragStart, this);
+    dragHandler.on('click', this._onClick, this);
+
+    if (this._disableDblClick) {
+        CLICK_DELAY = 0;
+    } else {
+        domevent.on(timeGridView.container, 'dblclick', this._onDblClick, this);
+    }
+}
+
+/**
+ * Destroy method
+ */
+TimeCreation.prototype.destroy = function() {
+    var timeGridView = this.timeGridView;
+
+    this.guide.destroy();
+    this.dragHandler.off(this);
+
+    if (timeGridView && timeGridView.container) {
+        domevent.off(timeGridView.container, 'dblclick', this._onDblClick, this);
+    }
+
+    this.dragHandler = this.timeGridView = this.baseController =
+        this._getScheduleDataFunc = this._dragStart = this.guide = null;
+};
+
+/**
+ * Check target element is expected condition for activate this plugins.
+ * @param {HTMLElement} target - The element to check
+ * @returns {(boolean|Time)} - return Time view instance when satiate condition.
+ */
+TimeCreation.prototype.checkExpectedCondition = function(target) {
+    var cssClass = domutil.getClass(target),
+        matches;
+
+    if (cssClass === config.classname('time-date-schedule-block-wrap')) {
+        target = target.parentNode;
+        cssClass = domutil.getClass(target);
+    }
+
+    matches = cssClass.match(config.time.getViewIDRegExp);
+
+    if (!matches || matches.length < 2) {
+        return false;
+    }
+
+    return util.pick(this.timeGridView.children.items, matches[1]);
+};
+
+/**
+ * Drag#dragStart event handler.
+ * @emits TimeCreation#timeCreationDragstart
+ * @param {object} dragStartEventData - Drag#dragStart event data.
+ * @param {string} [overrideEventName] - override emitted event name when supplied.
+ * @param {function} [revise] - supply function for revise event data before emit.
+ */
+TimeCreation.prototype._onDragStart = function(dragStartEventData, overrideEventName, revise) {
+    var target = dragStartEventData.target,
+        result = this.checkExpectedCondition(target),
+        getScheduleDataFunc,
+        eventData;
+
+    if (!result) {
+        return;
+    }
+
+    getScheduleDataFunc = this._getScheduleDataFunc = this._retriveScheduleData(result);
+    eventData = this._dragStart = getScheduleDataFunc(dragStartEventData.originEvent);
+
+    if (revise) {
+        revise(eventData);
+    }
+
+    this.dragHandler.on({
+        drag: this._onDrag,
+        dragEnd: this._onDragEnd
+    }, this);
+
+    /**
+     * @event TimeCreation#timeCreationDragstart
+     * @type {object}
+     * @property {Time} relatedView - time view instance related with mouse position.
+     * @property {MouseEvent} originEvent - mouse event object.
+     * @property {number} mouseY - mouse Y px mouse event.
+     * @property {number} gridY - grid Y index value related with mouseY value.
+     * @property {number} timeY - milliseconds value of mouseY points.
+     * @property {number} nearestGridY - nearest grid index related with mouseY value.
+     * @property {number} nearestGridTimeY - time value for nearestGridY.
+     */
+    this.fire(overrideEventName || 'timeCreationDragstart', eventData);
+};
+
+/**
+ * Drag#drag event handler
+ * @emits TimeCreation#timeCreationDrag
+ * @param {object} dragEventData - event data from Drag#drag.
+ * @param {string} [overrideEventName] - override emitted event name when supplied.
+ * @param {function} [revise] - supply function for revise event data before emit.
+ */
+TimeCreation.prototype._onDrag = function(dragEventData, overrideEventName, revise) {
+    var getScheduleDataFunc = this._getScheduleDataFunc,
+        eventData;
+
+    if (!getScheduleDataFunc) {
+        return;
+    }
+
+    eventData = getScheduleDataFunc(dragEventData.originEvent);
+
+    if (revise) {
+        revise(eventData);
+    }
+
+    /**
+     * @event TimeCreation#timeCreationDrag
+     * @type {object}
+     * @property {Time} relatedView - time view instance related with mouse position.
+     * @property {MouseEvent} originEvent - mouse event object.
+     * @property {number} mouseY - mouse Y px mouse event.
+     * @property {number} gridY - grid Y index value related with mouseY value.
+     * @property {number} timeY - milliseconds value of mouseY points.
+     * @property {number} nearestGridY - nearest grid index related with mouseY value.
+     * @property {number} nearestGridTimeY - time value for nearestGridY.
+     */
+    this.fire(overrideEventName || 'timeCreationDrag', eventData);
+};
+
+/**
+ * @fires TimeCreation#beforeCreateSchedule
+ * @param {object} eventData - event data object from TimeCreation#timeCreationDragend
+ * or TimeCreation#timeCreationClick
+ */
+TimeCreation.prototype._createSchedule = function(eventData) {
+    var relatedView = eventData.relatedView,
+        createRange = eventData.createRange,
+        nearestGridTimeY = eventData.nearestGridTimeY,
+        nearestGridEndTimeY = eventData.nearestGridEndTimeY
+            ? eventData.nearestGridEndTimeY
+            : new TZDate(nearestGridTimeY).addMinutes(30),
+        baseDate,
+        dateStart,
+        dateEnd,
+        start,
+        end;
+
+    if (!createRange) {
+        createRange = [
+            nearestGridTimeY,
+            nearestGridEndTimeY
+        ];
+    }
+
+    baseDate = new TZDate(relatedView.getDate());
+    dateStart = datetime.start(baseDate);
+    dateEnd = datetime.getStartOfNextDay(baseDate);
+    start = common.limitDate(createRange[0], dateStart, dateEnd);
+    end = common.limitDate(createRange[1], dateStart, dateEnd);
+
+    /**
+     * @event TimeCreation#beforeCreateSchedule
+     * @type {object}
+     * @property {boolean} isAllDay - whether schedule is fired in allday view area?
+     * @property {Date} start - select start time
+     * @property {Date} end - select end time
+     * @property {TimeCreationGuide} guide - TimeCreationGuide instance
+     * @property {string} triggerEventName - event name
+     */
+    this.fire('beforeCreateSchedule', {
+        isAllDay: false,
+        start: new TZDate(start),
+        end: new TZDate(end),
+        guide: this.guide,
+        triggerEventName: eventData.triggerEvent
+    });
+};
+
+/**
+ * Drag#dragEnd event handler
+ * @emits TimeCreation#timeCreationDragend
+ * @param {object} dragEndEventData - event data from Drag#dragend
+ */
+TimeCreation.prototype._onDragEnd = function(dragEndEventData) {
+    var self = this,
+        dragStart = this._dragStart;
+
+    this.dragHandler.off({
+        drag: this._onDrag,
+        dragEnd: this._onDragEnd
+    }, this);
+
+    /**
+     * Function for manipulate event data before firing event
+     * @param {object} eventData - event data
+     */
+    function reviseFunc(eventData) {
+        var range = [
+            dragStart.nearestGridTimeY,
+            eventData.nearestGridTimeY
+        ].sort(array.compare.num.asc);
+        range[1].addMinutes(30);
+
+        eventData.createRange = range;
+
+        self._createSchedule(eventData);
+    }
+
+    /**
+     * @event TimeCreation#timeCreationDragend
+     * @type {object}
+     * @property {Time} relatedView - time view instance related with mouse position.
+     * @property {MouseEvent} originEvent - mouse event object.
+     * @property {number} mouseY - mouse Y px mouse event.
+     * @property {number} gridY - grid Y index value related with mouseY value.
+     * @property {number} timeY - milliseconds value of mouseY points.
+     * @property {number} nearestGridY - nearest grid index related with mouseY value.
+     * @property {number} nearestGridTimeY - time value for nearestGridY.
+     * @property {number[]} createRange - milliseconds range between drag start and end to create.
+     */
+    this._onDrag(dragEndEventData, 'timeCreationDragend', reviseFunc);
+
+    this._dragStart = this._getScheduleDataFunc = null;
+};
+
+/**
+ * Drag#click event handler
+ * @emits TimeCreation#timeCreationClick
+ * @param {object} clickEventData - event data from Drag#click.
+ */
+TimeCreation.prototype._onClick = function(clickEventData) {
+    var self = this;
+    var condResult, getScheduleDataFunc, eventData;
+
+    this.dragHandler.off({
+        drag: this._onDrag,
+        dragEnd: this._onDragEnd
+    }, this);
+
+    condResult = this.checkExpectedCondition(clickEventData.target);
+    if (!condResult || this._disableClick) {
+        return;
+    }
+
+    getScheduleDataFunc = this._retriveScheduleData(condResult);
+    eventData = getScheduleDataFunc(clickEventData.originEvent);
+
+    this._requestOnClick = true;
+    setTimeout(function() {
+        if (self._requestOnClick) {
+            self.fire('timeCreationClick', eventData);
+            self._createSchedule(eventData);
+        }
+        self._requestOnClick = false;
+    }, CLICK_DELAY);
+    this._dragStart = this._getScheduleDataFunc = null;
+};
+
+/**
+ * Dblclick event handler
+ * @param {MouseEvent} e - Native MouseEvent
+ */
+TimeCreation.prototype._onDblClick = function(e) {
+    var condResult, getScheduleDataFunc, eventData;
+
+    condResult = this.checkExpectedCondition(e.target);
+    if (!condResult) {
+        return;
+    }
+
+    getScheduleDataFunc = this._retriveScheduleData(condResult);
+    eventData = getScheduleDataFunc(e);
+
+    this.fire('timeCreationClick', eventData);
+
+    this._createSchedule(eventData);
+
+    this._requestOnClick = false;
+};
+
+/**
+ * Invoke creation click
+ * @param {Schedule} schedule - schedule instance
+ */
+TimeCreation.prototype.invokeCreationClick = function(schedule) {
+    var opt = this.timeGridView.options,
+        range = datetime.range(
+            opt.renderStartDate,
+            opt.renderEndDate,
+            datetime.MILLISECONDS_PER_DAY),
+        hourStart = opt.hourStart,
+        targetDate = schedule.start;
+    var eventData, timeView;
+
+    util.forEach(range, function(date, index) {
+        if (datetime.isSameDate(date, targetDate)) {
+            timeView = this.timeGridView.children.toArray()[index];
+        }
+    }, this);
+
+    // If start date is not in current date, set start date as first date.
+    if (!timeView) {
+        timeView = this.timeGridView.children.toArray()[0];
+    }
+
+    eventData = this._retriveScheduleDataFromDate(timeView, schedule.start, schedule.end, hourStart);
+
+    this.fire('timeCreationClick', eventData);
+
+    this._createSchedule(eventData);
+};
+
+timeCore.mixin(TimeCreation);
+util.CustomEvents.mixin(TimeCreation);
+
+module.exports = TimeCreation;
+
+
+/***/ }),
+
+/***/ "./src/js/handler/time/creationGuide.js":
+/*!**********************************************!*\
+  !*** ./src/js/handler/time/creationGuide.js ***!
+  \**********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/* WEBPACK VAR INJECTION */(function(global) {/**
+ * @fileoverview Module for Time.Creation effect while dragging.
+ * @author NHN FE Development Lab <dl_javascript@nhn.com>
+ */
+
+
+var common = __webpack_require__(/*! ../../common/common */ "./src/js/common/common.js");
+var datetime = __webpack_require__(/*! ../../common/datetime */ "./src/js/common/datetime.js");
+var config = __webpack_require__(/*! ../../config */ "./src/js/config.js");
+var domutil = __webpack_require__(/*! ../../common/domutil */ "./src/js/common/domutil.js");
+var reqAnimFrame = __webpack_require__(/*! ../../common/reqAnimFrame */ "./src/js/common/reqAnimFrame.js");
+var ratio = __webpack_require__(/*! ../../common/common */ "./src/js/common/common.js").ratio;
+var TZDate = __webpack_require__(/*! ../../common/timezone */ "./src/js/common/timezone.js").Date;
+var MIN60 = (datetime.MILLISECONDS_PER_MINUTES * 60);
+
+/**
+ * Class for Time.Creation dragging effect.
+ * @constructor
+ * @param {TimeCreation} timeCreation - instance of TimeCreation.
+ */
+function TimeCreationGuide(timeCreation) {
+    /**
+     * Guide element for creation effect.
+     * @type {HTMLElement}
+     */
+    this.guideElement = global.document.createElement('div');
+
+    /**
+     * @type {HTMLDivElement}
+     */
+    this.guideTimeElement = domutil.appendHTMLElement(
+        'span',
+        this.guideElement,
+        config.classname('time-guide-creation-label')
+    );
+
+    domutil.addClass(this.guideElement, config.classname('time-guide-creation'));
+
+    /**
+     * @type {TimeCreation}
+     */
+    this.timeCreation = timeCreation;
+
+    /**
+     * @type {array}
+     */
+    this._styleUnit = null;
+
+    /**
+     * @type {array}
+     */
+    this._styleStart = null;
+
+    /**
+     * @type {function}
+     */
+    this._styleFunc = null;
+
+    timeCreation.on({
+        timeCreationDragstart: this._createGuideElement,
+        timeCreationDrag: this._onDrag,
+        timeCreationClick: this._createGuideElement
+    }, this);
+
+    this.applyTheme(timeCreation.baseController.theme);
+}
+
+/**
+ * Destroy method.
+ */
+TimeCreationGuide.prototype.destroy = function() {
+    this.clearGuideElement();
+    this.timeCreation.off(this);
+    this.timeCreation = this._styleUnit = this._styleStart =
+        this._styleFunc = this.guideElement = this.guideTimeElement = null;
+};
+
+/**
+ * Clear guide element.
+ */
+TimeCreationGuide.prototype.clearGuideElement = function() {
+    var guideElement = this.guideElement,
+        timeElement = this.guideTimeElement;
+
+    domutil.remove(guideElement);
+
+    reqAnimFrame.requestAnimFrame(function() {
+        guideElement.style.display = 'none';
+        guideElement.style.top = '';
+        guideElement.style.height = '';
+        timeElement.innerHTML = '';
+    });
+};
+
+/**
+ * Refresh guide element
+ * @param {number} top - The number of guide element's style top
+ * @param {number} height - The number of guide element's style height
+ * @param {TZDate} start - start time of schedule to create
+ * @param {TZDate} end - end time of schedule to create
+ * @param {boolean} bottomLabel - is label need to render bottom of guide element?
+ */
+TimeCreationGuide.prototype._refreshGuideElement = function(top, height, start, end, bottomLabel) {
+    var guideElement = this.guideElement;
+    var timeElement = this.guideTimeElement;
+
+    guideElement.style.top = top + 'px';
+    guideElement.style.height = height + 'px';
+    guideElement.style.display = 'block';
+
+    timeElement.innerHTML = datetime.format(start, 'HH:mm') +
+        ' - ' + datetime.format(end, 'HH:mm');
+
+    if (bottomLabel) {
+        domutil.removeClass(timeElement, config.classname('time-guide-bottom'));
+    } else {
+        domutil.addClass(timeElement, config.classname('time-guide-bottom'));
+    }
+};
+
+/**
+ * Get unit data of calculating new style of guide element by user interaction
+ * @param {Time} relatedView - time view instance related with schedule
+ * @returns {array} unit data.
+ */
+TimeCreationGuide.prototype._getUnitData = function(relatedView) {
+    var viewOpt = relatedView.options,
+        viewHeight = relatedView.getViewBound().height,
+        hourLength = viewOpt.hourEnd - viewOpt.hourStart,
+        todayStart = datetime.parse(viewOpt.ymd),
+        todayEnd = datetime.getStartOfNextDay(todayStart);
+
+    todayStart.setHours(0, 0, 0, 0);
+    todayStart.setHours(viewOpt.hourStart);
+
+    // [0] height of view
+    // [1] hour length of view
+    // [2] start time of view
+    // [3] end time of view
+    // [4] height of view for one hour
+    return [
+        viewHeight,
+        hourLength,
+        todayStart,
+        todayEnd,
+        viewHeight / hourLength
+    ];
+};
+
+/**
+ * Applying limitation to supplied data and return it.
+ * @param {number} top - top pixel of guide element
+ * @param {number} height - height pixel of guide element
+ * @param {TZDate} start - relative time value of dragstart point
+ * @param {TZDate} end - relative time value of dragend point
+ * @returns {array} limited style data
+ */
+TimeCreationGuide.prototype._limitStyleData = function(top, height, start, end) {
+    var unitData = this._styleUnit;
+
+    top = common.limit(top, [0], [unitData[0]]);
+    height = common.limit(top + height, [0], [unitData[0]]) - top;
+    start = common.limitDate(start, unitData[2], unitData[3]);
+    end = common.limitDate(end, unitData[2], unitData[3]);
+
+    return [top, height, start, end];
+};
+
+/**
+ * Get function to calculate guide element UI data from supplied units
+ * @param {number} viewHeight - total height of view's container element
+ * @param {number} hourLength - hour length that rendered in time view
+ * @param {TZDate} todayStart - time for view's start date
+ * @returns {function} UI data calculator function
+ */
+TimeCreationGuide.prototype._getStyleDataFunc = function(viewHeight, hourLength, todayStart) {
+    var todayStartTime = todayStart;
+    var todayEndTime = datetime.end(todayStart);
+
+    /**
+     * Get top, time value from schedule data
+     * @param {object} scheduleData - schedule data object
+     * @returns {number[]} top, time
+     */
+    function getStyleData(scheduleData) {
+        var minMinutes = 30;
+        var gridY = scheduleData.nearestGridY,
+            gridTimeY = scheduleData.nearestGridTimeY,
+            gridEndTimeY = scheduleData.nearestGridEndTimeY || new TZDate(gridTimeY).addMinutes(minMinutes),
+            top, startTime, endTime;
+
+        top = common.limit(ratio(hourLength, viewHeight, gridY), [0], [viewHeight]);
+        startTime = common.limitDate(gridTimeY, todayStartTime, todayEndTime);
+        endTime = common.limitDate(gridEndTimeY, todayStartTime, todayEndTime);
+
+        return [top, startTime, endTime];
+    }
+
+    return getStyleData;
+};
+
+/**
+ * DragStart event handler
+ * @param {object} dragStartEventData - dragStart schedule data.
+ */
+TimeCreationGuide.prototype._createGuideElement = function(dragStartEventData) {
+    var relatedView = dragStartEventData.relatedView,
+        hourStart = datetime.millisecondsFrom('hour', dragStartEventData.hourStart) || 0,
+        unitData, styleFunc, styleData, result, top, height, start, end;
+
+    unitData = this._styleUnit = this._getUnitData(relatedView);
+    styleFunc = this._styleFunc = this._getStyleDataFunc.apply(this, unitData);
+    styleData = this._styleStart = styleFunc(dragStartEventData);
+
+    start = new TZDate(styleData[1]).addMinutes(datetime.minutesFromHours(hourStart));
+    end = new TZDate(styleData[2]).addMinutes(datetime.minutesFromHours(hourStart));
+    top = styleData[0];
+    height = (unitData[4] * (end - start) / MIN60);
+
+    result = this._limitStyleData(
+        top,
+        height,
+        start,
+        end
+    );
+
+    this._refreshGuideElement.apply(this, result);
+
+    relatedView.container.appendChild(this.guideElement);
+};
+
+/**
+ * Drag event handler
+ * @param {object} dragEventData - drag schedule data.
+ */
+TimeCreationGuide.prototype._onDrag = function(dragEventData) {
+    var minutes30 = 30;
+    var styleFunc = this._styleFunc,
+        unitData = this._styleUnit,
+        startStyle = this._styleStart,
+        refreshGuideElement = this._refreshGuideElement.bind(this),
+        heightOfHalfHour,
+        endStyle,
+        result;
+
+    if (!styleFunc || !unitData || !startStyle) {
+        return;
+    }
+
+    heightOfHalfHour = (unitData[4] / 2);
+    endStyle = styleFunc(dragEventData);
+
+    if (endStyle[0] > startStyle[0]) {
+        result = this._limitStyleData(
+            startStyle[0],
+            (endStyle[0] - startStyle[0]) + heightOfHalfHour,
+            startStyle[1],
+            new TZDate(endStyle[1]).addMinutes(minutes30)
+        );
+    } else {
+        result = this._limitStyleData(
+            endStyle[0],
+            (startStyle[0] - endStyle[0]) + heightOfHalfHour,
+            endStyle[1],
+            new TZDate(startStyle[1]).addMinutes(minutes30)
+        );
+        result.push(true);
+    }
+
+    reqAnimFrame.requestAnimFrame(function() {
+        refreshGuideElement.apply(null, result);
+    });
+};
+
+TimeCreationGuide.prototype.applyTheme = function(theme) {
+    var style = this.guideElement.style;
+    var timeStyle = this.guideTimeElement.style;
+
+    // block
+    style.backgroundColor = theme.common.creationGuide.backgroundColor;
+    style.border = theme.common.creationGuide.border;
+
+    // label
+    timeStyle.color = theme.week.creationGuide.color;
+    timeStyle.fontSize = theme.week.creationGuide.fontSize;
+    timeStyle.fontWeight = theme.week.creationGuide.fontWeight;
+};
+
+module.exports = TimeCreationGuide;
+
+/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../../node_modules/webpack/buildin/global.js */ "./node_modules/webpack/buildin/global.js")))
+
+/***/ }),
+
+/***/ "./src/js/handler/time/move.js":
+/*!*************************************!*\
+  !*** ./src/js/handler/time/move.js ***!
+  \*************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/**
+ * @fileoverview Handling move schedules from drag handler and time grid view
+ * @author NHN FE Development Lab <dl_javascript@nhn.com>
+ */
+
+
+var util = __webpack_require__(/*! tui-code-snippet */ "tui-code-snippet");
+var config = __webpack_require__(/*! ../../config */ "./src/js/config.js");
+var datetime = __webpack_require__(/*! ../../common/datetime */ "./src/js/common/datetime.js");
+var domutil = __webpack_require__(/*! ../../common/domutil */ "./src/js/common/domutil.js");
+var domevent = __webpack_require__(/*! ../../common/domevent */ "./src/js/common/domevent.js");
+var TZDate = __webpack_require__(/*! ../../common/timezone */ "./src/js/common/timezone.js").Date;
+var timeCore = __webpack_require__(/*! ./core */ "./src/js/handler/time/core.js");
+var TimeMoveGuide = __webpack_require__(/*! ./moveGuide */ "./src/js/handler/time/moveGuide.js");
+
+/**
+ * @constructor
+ * @implements {Handler}
+ * @mixes timeCore
+ * @mixes util.CustomEvents
+ * @param {Drag} [dragHandler] - Drag handler instance.
+ * @param {TimeGrid} [timeGridView] - TimeGrid view instance.
+ * @param {Base} [baseController] - Base controller instance.
+ */
+function TimeMove(dragHandler, timeGridView, baseController) {
+    /**
+     * @type {Drag}
+     */
+    this.dragHandler = dragHandler;
+
+    /**
+     * @type {TimeGrid}
+     */
+    this.timeGridView = timeGridView;
+
+    /**
+     * @type {Base}
+     */
+    this.baseController = baseController;
+
+    /**
+     * @type {function}
+     */
+    this._getScheduleDataFunc = null;
+
+    /**
+     * @type {object}
+     */
+    this._dragStart = null;
+
+    /**
+     * @type {TimeMoveGuide}
+     */
+    this._guide = new TimeMoveGuide(this);
+
+    dragHandler.on('dragStart', this._onDragStart, this);
+    dragHandler.on('mousedown', this._onMouseDown, this);
+}
+
+/**
+ * Destroy method.
+ */
+TimeMove.prototype.destroy = function() {
+    this._guide.destroy();
+    this.dragHandler.off(this);
+    this.dragHandler = this.timeGridView = this.baseController =
+        this._getScheduleDataFunc = this._dragStart = this._guide = null;
+};
+
+/**
+ * Check target element is expected condition for activate this plugins.
+ * @param {HTMLElement} target - The element to check
+ * @returns {boolean|object} - return object when satiate condition.
+ */
+TimeMove.prototype.checkExpectCondition = function(target) {
+    if (!domutil.closest(target, config.classname('.time-schedule'))) {
+        return false;
+    }
+
+    return this._getTimeView(target);
+};
+
+/**
+ * Get Time view container from supplied element.
+ * @param {HTMLElement} target - element to find time view container.
+ * @returns {object|boolean} - return time view instance when finded.
+ */
+TimeMove.prototype._getTimeView = function(target) {
+    var container = domutil.closest(target, config.classname('.time-date')),
+        matches;
+
+    if (!container) {
+        return false;
+    }
+
+    matches = domutil.getClass(container).match(config.time.getViewIDRegExp);
+
+    if (!matches || matches.length < 2) {
+        return false;
+    }
+
+    return util.pick(this.timeGridView.children.items, Number(matches[1]));
+};
+
+/**
+ * @emits TimeMove#mousedown
+ * @param {object} mouseDownEventData - Drag#mousedown schedule data.
+ */
+TimeMove.prototype._onMouseDown = function(mouseDownEventData) {
+    var target = mouseDownEventData.target,
+        timeView = this.checkExpectCondition(target),
+        blockElement = domutil.closest(target, config.classname('.time-date-schedule-block'));
+
+    if (!timeView || !blockElement) {
+        return;
+    }
+
+    // EventTarget.target is not changed in mousemove event even if mouse is over the other element.
+    // It's different with other browsers(IE, Chrome, Safari)
+    if (util.browser.firefox) {
+        domevent.preventDefault(mouseDownEventData.originEvent);
+    }
+};
+
+/**
+ * @emits TimeMove#timeMoveDragstart
+ * @param {object} dragStartEventData - Drag#dragStart schedule data.
+ */
+TimeMove.prototype._onDragStart = function(dragStartEventData) {
+    var target = dragStartEventData.target,
+        timeView = this.checkExpectCondition(target),
+        blockElement = domutil.closest(target, config.classname('.time-date-schedule-block')),
+        getScheduleDataFunc,
+        scheduleData,
+        ctrl = this.baseController,
+        targetModelID,
+        targetModel;
+
+    if (!timeView || !blockElement) {
+        return;
+    }
+
+    targetModelID = domutil.getData(blockElement, 'id');
+    targetModel = ctrl.schedules.items[targetModelID];
+
+    if (targetModel.isReadOnly) {
+        return;
+    }
+
+    getScheduleDataFunc = this._getScheduleDataFunc = this._retriveScheduleData(timeView);
+    scheduleData = this._dragStart = getScheduleDataFunc(
+        dragStartEventData.originEvent, {
+            targetModelID: targetModelID,
+            model: targetModel
+        }
+    );
+
+    this.dragHandler.on({
+        drag: this._onDrag,
+        dragEnd: this._onDragEnd,
+        click: this._onClick
+    }, this);
+
+    /**
+     * @event TimeMove#timeMoveDragstart
+     * @type {object}
+     * @property {HTMLElement} target - current target in mouse event object.
+     * @property {Time} relatedView - time view instance related with mouse position.
+     * @property {MouseEvent} originEvent - mouse event object.
+     * @property {number} mouseY - mouse Y px mouse event.
+     * @property {number} gridY - grid Y index value related with mouseY value.
+     * @property {number} timeY - milliseconds value of mouseY points.
+     * @property {number} nearestGridY - nearest grid index related with mouseY value.
+     * @property {number} nearestGridTimeY - time value for nearestGridY.
+     * @property {string} targetModelID - The model unique id emitted move schedule.
+     * @property {Schedule} model - model instance
+     */
+    this.fire('timeMoveDragstart', scheduleData);
+};
+
+/**
+ * @emits TimeMove#timeMoveDrag
+ * @param {MouseEvent} dragEventData - mousemove event object
+ * @param {string} [overrideEventName] - name of emitting event to override.
+ * @param {function} [revise] - supply function for revise schedule data before emit.
+ */
+TimeMove.prototype._onDrag = function(dragEventData, overrideEventName, revise) {
+    var getScheduleDataFunc = this._getScheduleDataFunc,
+        timeView = this._getTimeView(dragEventData.target),
+        dragStart = this._dragStart,
+        scheduleData;
+
+    if (!timeView || !getScheduleDataFunc || !dragStart) {
+        return;
+    }
+
+    scheduleData = getScheduleDataFunc(dragEventData.originEvent, {
+        currentView: timeView,
+        targetModelID: dragStart.targetModelID
+    });
+
+    if (revise) {
+        revise(scheduleData);
+    }
+
+    /**
+     * @event TimeMove#timeMoveDrag
+     * @type {object}
+     * @property {HTMLElement} target - current target in mouse event object.
+     * @property {Time} relatedView - time view instance related with drag start position.
+     * @property {MouseEvent} originEvent - mouse event object.
+     * @property {number} mouseY - mouse Y px mouse event.
+     * @property {number} gridY - grid Y index value related with mouseY value.
+     * @property {number} timeY - milliseconds value of mouseY points.
+     * @property {number} nearestGridY - nearest grid index related with mouseY value.
+     * @property {number} nearestGridTimeY - time value for nearestGridY.
+     * @property {Time} currentView - time view instance related with current mouse position.
+     * @property {string} targetModelID - The model unique id emitted move schedule.
+     */
+    this.fire(overrideEventName || 'timeMoveDrag', scheduleData);
+};
+
+/**
+ * Update model instance by dragend event results.
+ * @fires TimeMove#beforeUpdateSchedule
+ * @param {object} scheduleData - schedule data from TimeMove#timeMoveDragend
+ */
+TimeMove.prototype._updateSchedule = function(scheduleData) {
+    var ctrl = this.baseController,
+        modelID = scheduleData.targetModelID,
+        range = scheduleData.nearestRange,
+        timeDiff = range[1] - range[0],
+        dateDiff = 0,
+        schedule = ctrl.schedules.items[modelID],
+        relatedView = scheduleData.relatedView,
+        currentView = scheduleData.currentView,
+        newStarts,
+        newEnds;
+
+    if (!schedule || !currentView) {
+        return;
+    }
+
+    timeDiff -= datetime.millisecondsFrom('minutes', 30);
+    newStarts = new TZDate(schedule.getStarts()).addMilliseconds(timeDiff);
+    newEnds = new TZDate(schedule.getEnds()).addMilliseconds(timeDiff);
+
+    if (currentView) {
+        dateDiff = currentView.getDate() - relatedView.getDate();
+    }
+
+    newStarts.addMilliseconds(dateDiff);
+    newEnds.addMilliseconds(dateDiff);
+
+    /**
+     * @event TimeMove#beforeUpdateSchedule
+     * @type {object}
+     * @property {Schedule} schedule - The original schedule instance
+     * @property {Date} start - Deprecated: start time to update
+     * @property {Date} end - Deprecated: end time to update
+     * @property {object} changes - start and end time to update
+     *  @property {Date} start - start time to update
+     *  @property {Date} end - end time to update
+     */
+    this.fire('beforeUpdateSchedule', {
+        schedule: schedule,
+        changes: {
+            start: newStarts,
+            end: newEnds
+        },
+        start: newStarts,
+        end: newEnds
+    });
+};
+
+/**
+ * @emits TimeMove#timeMoveDragend
+ * @param {MouseEvent} dragEndEventData - mouseup mouse event object.
+ */
+TimeMove.prototype._onDragEnd = function(dragEndEventData) {
+    var getScheduleDataFunc = this._getScheduleDataFunc,
+        currentView = this._getTimeView(dragEndEventData.target),
+        dragStart = this._dragStart,
+        scheduleData;
+
+    this.dragHandler.off({
+        drag: this._onDrag,
+        dragEnd: this._onDragEnd,
+        click: this._onClick
+    }, this);
+
+    if (!getScheduleDataFunc || !dragStart) {
+        return;
+    }
+
+    scheduleData = getScheduleDataFunc(dragEndEventData.originEvent, {
+        currentView: currentView,
+        targetModelID: dragStart.targetModelID
+    });
+
+    scheduleData.range = [
+        dragStart.timeY,
+        new TZDate(scheduleData.timeY).addMinutes(30)
+    ];
+
+    scheduleData.nearestRange = [
+        dragStart.nearestGridTimeY,
+        new TZDate(scheduleData.nearestGridTimeY).addMinutes(30)
+    ];
+
+    this._updateSchedule(scheduleData);
+
+    /**
+     * @event TimeMove#timeMoveDragend
+     * @type {object}
+     * @property {HTMLElement} target - current target in mouse event object.
+     * @property {Time} relatedView - time view instance related with drag start position.
+     * @property {Time} currentView - time view instance related with current mouse position.
+     * @property {MouseEvent} originEvent - mouse event object.
+     * @property {number} mouseY - mouse Y px mouse event.
+     * @property {number} gridY - grid Y index value related with mouseY value.
+     * @property {number} timeY - milliseconds value of mouseY points.
+     * @property {number} nearestGridY - nearest grid index related with mouseY value.
+     * @property {number} nearestGridTimeY - time value for nearestGridY.
+     * @property {string} targetModelID - The model unique id emitted move schedule.
+     * @property {number[]} range - milliseconds range between drag start and end.
+     * @property {number[]} nearestRange - milliseconds range related with nearestGridY between start and end.
+     */
+    this.fire('timeMoveDragend', scheduleData);
+};
+
+/**
+ * @emits TimeMove#timeMoveClick
+ * @param {MouseEvent} clickEventData - click mouse event object.
+ */
+TimeMove.prototype._onClick = function(clickEventData) {
+    var getScheduleDataFunc = this._getScheduleDataFunc,
+        dragStart = this._dragStart,
+        scheduleData;
+
+    this.dragHandler.off({
+        drag: this._onDrag,
+        dragEnd: this._onDragEnd,
+        click: this._onClick
+    }, this);
+
+    if (!getScheduleDataFunc || !dragStart) {
+        return;
+    }
+
+    scheduleData = getScheduleDataFunc(clickEventData.originEvent, {
+        targetModelID: dragStart.targetModelID
+    });
+
+    /**
+     * @event TimeMove#timeMoveClick
+     * @type {object}
+     * @property {HTMLElement} target - current target in mouse event object.
+     * @property {Time} relatedView - time view instance related with drag start position.
+     * @property {MouseEvent} originEvent - mouse event object.
+     * @property {number} mouseY - mouse Y px mouse event.
+     * @property {number} gridY - grid Y index value related with mouseY value.
+     * @property {number} timeY - milliseconds value of mouseY points.
+     * @property {number} nearestGridY - nearest grid index related with mouseY value.
+     * @property {number} nearestGridTimeY - time value for nearestGridY.
+     * @property {string} targetModelID - The model unique id emitted move schedule.
+     */
+    this.fire('timeMoveClick', scheduleData);
+};
+
+timeCore.mixin(TimeMove);
+util.CustomEvents.mixin(TimeMove);
+
+module.exports = TimeMove;
+
+
+/***/ }),
+
+/***/ "./src/js/handler/time/moveGuide.js":
+/*!******************************************!*\
+  !*** ./src/js/handler/time/moveGuide.js ***!
+  \******************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/* WEBPACK VAR INJECTION */(function(global) {/**
+ * @fileoverview Module for Time.Move effect while dragging.
+ * @author NHN FE Development Lab <dl_javascript@nhn.com>
+ */
+
+
+var util = __webpack_require__(/*! tui-code-snippet */ "tui-code-snippet");
+var config = __webpack_require__(/*! ../../config */ "./src/js/config.js");
+var domutil = __webpack_require__(/*! ../../common/domutil */ "./src/js/common/domutil.js");
+var reqAnimFrame = __webpack_require__(/*! ../../common/reqAnimFrame */ "./src/js/common/reqAnimFrame.js");
+var ratio = __webpack_require__(/*! ../../common/common */ "./src/js/common/common.js").ratio;
+var FloatingLayer = __webpack_require__(/*! ../../common/floatingLayer */ "./src/js/common/floatingLayer.js");
+var tmpl = __webpack_require__(/*! ../../view/template/week/timeMoveGuide.hbs */ "./src/js/view/template/week/timeMoveGuide.hbs");
+var TZDate = __webpack_require__(/*! ../../common/timezone */ "./src/js/common/timezone.js").Date;
+var Schedule = __webpack_require__(/*! ../../model/schedule */ "./src/js/model/schedule.js");
+var datetime = __webpack_require__(/*! ../../common/datetime */ "./src/js/common/datetime.js");
+var common = __webpack_require__(/*! ../../common/common */ "./src/js/common/common.js");
+
+var SCHEDULE_MIN_DURATION = datetime.MILLISECONDS_SCHEDULE_MIN_DURATION;
+
+/**
+ * Class for Time.Move effect.
+ * @constructor
+ * @param {TimeMove} timeMove - The instance of TimeMove.
+ */
+function TimeMoveGuide(timeMove) {
+    /**
+     * @type {FloatingLayer}
+     */
+    this._guideLayer = null;
+
+    /**
+     * @Type {Schedule}
+     */
+    this._model = null;
+
+    /**
+     * @type {object}
+     */
+    this._viewModel = null;
+
+    /**
+     * @type {object}
+     */
+    this._lastDrag = null;
+
+    /**
+     * @type {HTMLElement}
+     */
+    this.guideElement = null;
+
+    /**
+     * @type {TimeMove}
+     */
+    this.timeMove = timeMove;
+
+    /**
+     * @type {HTMLElement}
+     */
+    this._container = null;
+
+    /**
+     * @type {function}
+     */
+    this._getTopFunc = null;
+
+    /**
+     * @type {number}
+     */
+    this._startGridY = 0;
+
+    /**
+     * @type {number}
+     */
+    this._startTopPixel = 0;
+
+    timeMove.on({
+        'timeMoveDragstart': this._onDragStart,
+        'timeMoveDrag': this._onDrag,
+        'timeMoveDragend': this._clearGuideElement,
+        'timeMoveClick': this._clearGuideElement
+    }, this);
+}
+
+/**
+ * Destroy method
+ */
+TimeMoveGuide.prototype.destroy = function() {
+    this._clearGuideElement();
+    this.timeMove.off(this);
+    if (this._guideLayer) {
+        this._guideLayer.destroy();
+    }
+    this.guideElement = this.timeMove = this._container = this._guideLayer = this._lastDrag =
+        this._getTopFunc = this._startGridY = this._startTopPixel = this._viewModel = null;
+};
+
+/**
+ * Clear guide element.
+ */
+TimeMoveGuide.prototype._clearGuideElement = function() {
+    if (!util.browser.msie) {
+        domutil.removeClass(global.document.body, config.classname('dragging'));
+    }
+    if (this._guideLayer) {
+        this._guideLayer.destroy();
+    }
+
+    this._showOriginScheduleBlocks();
+
+    this.guideElement = this._getTopFunc = this._guideLayer = this._model = this._lastDrag =
+        this._startGridY = this._startTopPixel = this._viewModel = null;
+};
+
+/**
+ * Dim element blocks
+ * @param {number} modelID - Schedule model instance ID
+ */
+TimeMoveGuide.prototype._hideOriginScheduleBlocks = function() {
+    var className = config.classname('time-date-schedule-block-dragging-dim');
+    if (this.guideElement) {
+        domutil.addClass(this.guideElement, className);
+    }
+};
+
+/**
+ * Show element blocks
+ */
+TimeMoveGuide.prototype._showOriginScheduleBlocks = function() {
+    var className = config.classname('time-date-schedule-block-dragging-dim');
+    if (this.guideElement) {
+        domutil.removeClass(this.guideElement, className);
+    }
+};
+
+/**
+ * Refresh guide element
+ * @param {string} top - guide element's style top.
+ * @param {Schedule} model - updated model
+ * @param {object} viewModel - view model
+ */
+TimeMoveGuide.prototype._refreshGuideElement = function(top, model, viewModel) {
+    var self = this;
+
+    reqAnimFrame.requestAnimFrame(function() {
+        if (!self._guideLayer) {
+            return;
+        }
+        self._guideLayer.setPosition(0, top);
+        self._guideLayer.setContent(tmpl(util.extend({model: model}, viewModel)));
+    });
+};
+
+/**
+ * TimeMove#timeMoveDragstart event handler
+ * @param {object} dragStartEventData - dragstart event data
+ */
+TimeMoveGuide.prototype._onDragStart = function(dragStartEventData) {
+    var guideElement = domutil.closest(
+        dragStartEventData.target,
+        config.classname('.time-date-schedule-block')
+    );
+    var duration, modelDuration, goingDuration, comingDuration;
+
+    if (!guideElement) {
+        return;
+    }
+
+    this._startTopPixel = parseFloat(guideElement.style.top);
+    this._startGridY = dragStartEventData.nearestGridY;
+    this.guideElement = guideElement;
+    this._container = dragStartEventData.relatedView.container;
+
+    this._model = util.extend(
+        Schedule.create(dragStartEventData.model),
+        dragStartEventData.model
+    );
+
+    modelDuration = this._model.duration();
+    modelDuration = modelDuration > SCHEDULE_MIN_DURATION ? modelDuration : SCHEDULE_MIN_DURATION;
+    goingDuration = datetime.millisecondsFrom('minutes', this._model.goingDuration);
+    comingDuration = datetime.millisecondsFrom('minutes', this._model.comingDuration);
+    duration = goingDuration + modelDuration + comingDuration;
+
+    this._lastDrag = dragStartEventData;
+    this._viewModel = {
+        hasGoingDuration: goingDuration > 0,
+        hasComingDuration: comingDuration > 0,
+        goingDurationHeight: common.ratio(duration, goingDuration, 100),
+        modelDurationHeight: common.ratio(duration, modelDuration, 100),
+        comingDurationHeight: common.ratio(duration, comingDuration, 100)
+    };
+
+    this._resetGuideLayer();
+    this._hideOriginScheduleBlocks();
+};
+
+/**
+ * TimeMove#timeMoveDrag event handler
+ * @param {object} dragEventData - drag event data
+ */
+TimeMoveGuide.prototype._onDrag = function(dragEventData) {
+    var timeView = dragEventData.currentView,
+        viewOptions = timeView.options,
+        viewHeight = timeView.getViewBound().height,
+        guideHeight = parseFloat(this.guideElement.style.height),
+        hourLength = viewOptions.hourEnd - viewOptions.hourStart,
+        gridYOffset = dragEventData.nearestGridY - this._startGridY,
+        gridYOffsetPixel = ratio(hourLength, viewHeight, gridYOffset),
+        gridDiff = dragEventData.nearestGridY - this._lastDrag.nearestGridY,
+        bottomLimit,
+        top;
+
+    if (!util.browser.msie) {
+        domutil.addClass(global.document.body, config.classname('dragging'));
+    }
+
+    if (this._container !== timeView.container) {
+        this._container = timeView.container;
+        this._resetGuideLayer();
+    }
+
+    top = this._startTopPixel + gridYOffsetPixel;
+    bottomLimit = viewHeight - guideHeight;
+
+    top = Math.max(top, 0);
+    top = Math.min(top, bottomLimit);
+
+    // update time
+    this._model.start = new TZDate(this._model.getStarts()).addMinutes(datetime.minutesFromHours(gridDiff));
+    this._model.end = new TZDate(this._model.getEnds()).addMinutes(datetime.minutesFromHours(gridDiff));
+    this._lastDrag = dragEventData;
+
+    this._refreshGuideElement(top, this._model, this._viewModel);
+};
+
+TimeMoveGuide.prototype._resetGuideLayer = function() {
+    if (this._guideLayer) {
+        this._guideLayer.destroy();
+        this._guideLayer = null;
+    }
+    this._guideLayer = new FloatingLayer(null, this._container);
+    this._guideLayer.setSize(this._container.getBoundingClientRect().width, this.guideElement.style.height);
+    this._guideLayer.setPosition(0, this.guideElement.style.top);
+    this._guideLayer.setContent(tmpl(util.extend({model: this._model}, this._viewModel)));
+    this._guideLayer.show();
+};
+
+module.exports = TimeMoveGuide;
+
+/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../../node_modules/webpack/buildin/global.js */ "./node_modules/webpack/buildin/global.js")))
+
+/***/ }),
+
+/***/ "./src/js/handler/time/resize.js":
+/*!***************************************!*\
+  !*** ./src/js/handler/time/resize.js ***!
+  \***************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/**
+ * @fileoverview Handling resize schedules from drag handler and time grid view
+ * @author NHN FE Development Lab <dl_javascript@nhn.com>
+ */
+
+
+var util = __webpack_require__(/*! tui-code-snippet */ "tui-code-snippet");
+var config = __webpack_require__(/*! ../../config */ "./src/js/config.js");
+var datetime = __webpack_require__(/*! ../../common/datetime */ "./src/js/common/datetime.js");
+var domutil = __webpack_require__(/*! ../../common/domutil */ "./src/js/common/domutil.js");
+var TZDate = __webpack_require__(/*! ../../common/timezone */ "./src/js/common/timezone.js").Date;
+var common = __webpack_require__(/*! ../../common/common */ "./src/js/common/common.js");
+var timeCore = __webpack_require__(/*! ./core */ "./src/js/handler/time/core.js");
+var TimeResizeGuide = __webpack_require__(/*! ./resizeGuide */ "./src/js/handler/time/resizeGuide.js");
+
+/**
+ * @constructor
+ * @implements {Handler}
+ * @mixes timeCore
+ * @mixes util.CustomEvents
+ * @param {Drag} [dragHandler] - Drag handler instance.
+ * @param {TimeGrid} [timeGridView] - TimeGrid view instance.
+ * @param {Base} [baseController] - Base controller instance.
+ */
+function TimeResize(dragHandler, timeGridView, baseController) {
+    /**
+     * @type {Drag}
+     */
+    this.dragHandler = dragHandler;
+
+    /**
+     * @type {TimeGrid}
+     */
+    this.timeGridView = timeGridView;
+
+    /**
+     * @type {Base}
+     */
+    this.baseController = baseController;
+
+    /**
+     * @type {function}
+     */
+    this._getScheduleDataFunc = null;
+
+    /**
+     * @type {object}
+     */
+    this._dragStart = null;
+
+    /**
+     * @type {TimeResizeGuide}
+     */
+    this._guide = new TimeResizeGuide(this);
+
+    dragHandler.on('dragStart', this._onDragStart, this);
+}
+
+/**
+ * Destroy method
+ */
+TimeResize.prototype.destroy = function() {
+    this._guide.destroy();
+    this.dragHandler.off(this);
+    this.dragHandler = this.timeGridView = this.baseController =
+        this._getScheduleDataFunc = this._dragStart = this._guide = null;
+};
+
+/**
+ * @param {HTMLElement} target - element to check condition.
+ * @returns {object|boolean} - return time view instance or false
+ */
+TimeResize.prototype.checkExpectCondition = function(target) {
+    var container,
+        matches;
+
+    if (!domutil.hasClass(target, config.classname('time-resize-handle'))) {
+        return false;
+    }
+
+    container = domutil.closest(target, config.classname('.time-date'));
+
+    if (!container) {
+        return false;
+    }
+
+    matches = domutil.getClass(container).match(config.time.getViewIDRegExp);
+
+    if (!matches || matches.length < 2) {
+        return false;
+    }
+
+    return util.pick(this.timeGridView.children.items, Number(matches[1]));
+};
+
+/**
+ * @emits TimeResize#timeResizeDragstart
+ * @param {object} dragStartEventData - event data of Drag#dragstart
+ */
+TimeResize.prototype._onDragStart = function(dragStartEventData) {
+    var target = dragStartEventData.target,
+        timeView = this.checkExpectCondition(target),
+        blockElement = domutil.closest(target, config.classname('.time-date-schedule-block')),
+        ctrl = this.baseController,
+        targetModelID,
+        getScheduleDataFunc,
+        scheduleData;
+
+    if (!timeView || !blockElement) {
+        return;
+    }
+
+    targetModelID = domutil.getData(blockElement, 'id');
+    getScheduleDataFunc = this._getScheduleDataFunc = this._retriveScheduleData(timeView);
+    scheduleData = this._dragStart = getScheduleDataFunc(
+        dragStartEventData.originEvent, {
+            targetModelID: targetModelID,
+            schedule: ctrl.schedules.items[targetModelID]
+        }
+    );
+
+    this.dragHandler.on({
+        drag: this._onDrag,
+        dragEnd: this._onDragEnd,
+        click: this._onClick
+    }, this);
+
+    /**
+     * @event TimeResize#timeResizeDragstart
+     * @type {object}
+     * @property {HTMLElement} target - current target in mouse event object.
+     * @property {Time} relatedView - time view instance related with mouse position.
+     * @property {MouseEvent} originEvent - mouse event object.
+     * @property {number} mouseY - mouse Y px mouse event.
+     * @property {number} gridY - grid Y index value related with mouseY value.
+     * @property {number} timeY - milliseconds value of mouseY points.
+     * @property {number} nearestGridY - nearest grid index related with mouseY value.
+     * @property {number} nearestGridTimeY - time value for nearestGridY.
+     * @property {string} targetModelID - The model unique id emitted move schedule.
+     * @property {Schedule} schedule - schedule data
+     */
+    this.fire('timeResizeDragstart', scheduleData);
+};
+
+/**
+ * Drag#drag event handler
+ * @emits TimeResize#timeResizeDrag
+ * @param {object} dragEventData - event data of Drag#drag custom event.
+ * @param {string} [overrideEventName] - override emitted event name when supplied.
+ * @param {function} [revise] - supply function for revise schedule data before emit.
+ */
+TimeResize.prototype._onDrag = function(dragEventData, overrideEventName, revise) {
+    var getScheduleDataFunc = this._getScheduleDataFunc,
+        startScheduleData = this._dragStart,
+        scheduleData;
+
+    if (!getScheduleDataFunc || !startScheduleData) {
+        return;
+    }
+
+    scheduleData = getScheduleDataFunc(dragEventData.originEvent, {
+        targetModelID: startScheduleData.targetModelID
+    });
+
+    if (revise) {
+        revise(scheduleData);
+    }
+
+    /**
+     * @event TimeResize#timeResizeDrag
+     * @type {object}
+     * @property {HTMLElement} target - current target in mouse event object.
+     * @property {Time} relatedView - time view instance related with drag start position.
+     * @property {MouseEvent} originEvent - mouse event object.
+     * @property {number} mouseY - mouse Y px mouse event.
+     * @property {number} gridY - grid Y index value related with mouseY value.
+     * @property {number} timeY - milliseconds value of mouseY points.
+     * @property {number} nearestGridY - nearest grid index related with mouseY value.
+     * @property {number} nearestGridTimeY - time value for nearestGridY.
+     * @property {string} targetModelID - The model unique id emitted move schedule.
+     */
+    this.fire(overrideEventName || 'timeResizeDrag', scheduleData);
+};
+
+/**
+ * Update model instance by dragend event results.
+ * @fires TimeResize#beforeUpdateSchedule
+ * @param {object} scheduleData - schedule data from TimeResize#timeResizeDragend
+ */
+TimeResize.prototype._updateSchedule = function(scheduleData) {
+    var ctrl = this.baseController,
+        modelID = scheduleData.targetModelID,
+        range = scheduleData.nearestRange,
+        timeDiff = range[1] - range[0],
+        schedule = ctrl.schedules.items[modelID],
+        relatedView = scheduleData.relatedView,
+        dateEnd,
+        newEnds,
+        baseDate;
+    var changes;
+
+    if (!schedule) {
+        return;
+    }
+
+    timeDiff -= datetime.millisecondsFrom('minutes', 30);
+
+    baseDate = new TZDate(relatedView.getDate());
+    dateEnd = datetime.end(baseDate);
+    newEnds = new TZDate(schedule.getEnds()).addMilliseconds(timeDiff);
+
+    if (newEnds > dateEnd) {
+        newEnds = new TZDate(dateEnd);
+    }
+
+    if (newEnds.getTime() - schedule.getStarts().getTime() < datetime.millisecondsFrom('minutes', 30)) {
+        newEnds = new TZDate(schedule.getStarts()).addMinutes(30);
+    }
+
+    changes = common.getScheduleChanges(
+        schedule,
+        ['end'],
+        {end: newEnds}
+    );
+
+    /**
+     * @event TimeResize#beforeUpdateSchedule
+     * @type {object}
+     * @property {Schedule} schedule - The original schedule instance
+     * @property {Date} start - Deprecated: start time to update
+     * @property {Date} end - Deprecated: end time to update
+     * @property {object} changes - end time to update
+     *  @property {date} end - end time to update
+     */
+    this.fire('beforeUpdateSchedule', {
+        schedule: schedule,
+        changes: changes,
+        start: schedule.getStarts(),
+        end: newEnds
+    });
+};
+
+/**
+ * Drag#dragEnd event handler
+ * @emits TimeResize#timeResizeDragend
+ * @param {MouseEvent} dragEndEventData - Mouse event of Drag#dragEnd custom event.
+ */
+TimeResize.prototype._onDragEnd = function(dragEndEventData) {
+    var getScheduleDataFunc = this._getScheduleDataFunc,
+        dragStart = this._dragStart,
+        scheduleData;
+
+    this.dragHandler.off({
+        drag: this._onDrag,
+        dragEnd: this._onDragEnd,
+        click: this._onClick
+    }, this);
+
+    if (!getScheduleDataFunc || !dragStart) {
+        return;
+    }
+
+    scheduleData = getScheduleDataFunc(dragEndEventData.originEvent, {
+        targetModelID: dragStart.targetModelID
+    });
+
+    scheduleData.range = [
+        dragStart.timeY,
+        new TZDate(scheduleData.timeY).addMinutes(30)
+    ];
+
+    scheduleData.nearestRange = [
+        dragStart.nearestGridTimeY,
+        scheduleData.nearestGridTimeY.addMinutes(30)
+    ];
+
+    this._updateSchedule(scheduleData);
+
+    /**
+     * @event TimeResize#timeResizeDragend
+     * @type {object}
+     * @property {HTMLElement} target - current target in mouse event object.
+     * @property {Time} relatedView - time view instance related with drag start position.
+     * @property {MouseEvent} originEvent - mouse event object.
+     * @property {number} mouseY - mouse Y px mouse event.
+     * @property {number} gridY - grid Y index value related with mouseY value.
+     * @property {number} timeY - milliseconds value of mouseY points.
+     * @property {number} nearestGridY - nearest grid index related with mouseY value.
+     * @property {number} nearestGridTimeY - time value for nearestGridY.
+     * @property {string} targetModelID - The model unique id emitted move schedule.
+     * @property {number[]} range - milliseconds range between drag start and end.
+     * @property {number[]} nearestRange - milliseconds range related with nearestGridY between start and end.
+     */
+    this.fire('timeResizeDragend', scheduleData);
+
+    this._getScheduleDataFunc = this._dragStart = null;
+};
+
+/**
+ * @emits TimeResize#timeResizeClick
+ */
+TimeResize.prototype._onClick = function() {
+    this.dragHandler.off({
+        drag: this._onDrag,
+        dragEnd: this._onDragEnd,
+        click: this._onClick
+    }, this);
+
+    /**
+     * @event TimeResize#timeResizeClick
+     */
+    this.fire('timeResizeClick');
+};
+
+timeCore.mixin(TimeResize);
+util.CustomEvents.mixin(TimeResize);
+
+module.exports = TimeResize;
+
+
+/***/ }),
+
+/***/ "./src/js/handler/time/resizeGuide.js":
+/*!********************************************!*\
+  !*** ./src/js/handler/time/resizeGuide.js ***!
+  \********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/* WEBPACK VAR INJECTION */(function(global) {/**
+ * @fileoverview Module for Time.Resize effect while dragging.
+ * @author NHN FE Development Lab <dl_javascript@nhn.com>
+ */
+
+
+var util = __webpack_require__(/*! tui-code-snippet */ "tui-code-snippet");
+var config = __webpack_require__(/*! ../../config */ "./src/js/config.js");
+var domutil = __webpack_require__(/*! ../../common/domutil */ "./src/js/common/domutil.js");
+var reqAnimFrame = __webpack_require__(/*! ../../common/reqAnimFrame */ "./src/js/common/reqAnimFrame.js");
+var ratio = __webpack_require__(/*! ../../common/common */ "./src/js/common/common.js").ratio;
+var datetime = __webpack_require__(/*! ../../common/datetime */ "./src/js/common/datetime.js");
+
+/**
+ * Class for Time.Resize effect.
+ * @constructor
+ * @param {TimeResize} timeResize - the instance of TimeResize handler.
+ */
+function TimeResizeGuide(timeResize) {
+    /**
+     * @type {HTMLElement}
+     */
+    this.guideElement = null;
+
+    /**
+     * @type {TimeResize}
+     */
+    this.timeResize = timeResize;
+
+    /**
+     * @type {function}
+     */
+    this._getTopFunc = null;
+
+    /**
+     * @type {HTMLElement}
+     */
+    this._originScheduleElement = null;
+
+    /**
+     * @type {number}
+     */
+    this._startTopPixel = 0;
+
+    /**
+     * @type {number}
+     */
+    this._startHeightPixel = 0;
+
+    /**
+     * @type {number}
+     */
+    this._startGridY = 0;
+
+    /**
+     * @type {Schedule}
+     */
+    this._schedule = null;
+
+    timeResize.on({
+        'timeResizeDragstart': this._onDragStart,
+        'timeResizeDrag': this._onDrag,
+        'timeResizeDragend': this._clearGuideElement,
+        'timeResizeClick': this._clearGuideElement
+    }, this);
+}
+
+/**
+ * Destroy method
+ */
+TimeResizeGuide.prototype.destroy = function() {
+    this._clearGuideElement();
+    this.timeResize.off(this);
+    this.guideElement = this.timeResize = this._getTopFunc =
+        this._originScheduleElement = this._startHeightPixel =
+        this._startGridY = this._startTopPixel = null;
+};
+
+/**
+ * Clear guide element.
+ */
+TimeResizeGuide.prototype._clearGuideElement = function() {
+    var guideElement = this.guideElement,
+        originElement = this._originScheduleElement;
+
+    if (!util.browser.msie) {
+        domutil.removeClass(global.document.body, config.classname('resizing'));
+    }
+
+    if (originElement) {
+        originElement.style.display = 'block';
+    }
+
+    domutil.remove(guideElement);
+
+    this.guideElement = this._getTopFunc = this._originScheduleElement =
+        this._startHeightPixel = this._startGridY = this._startTopPixel = null;
+};
+
+/**
+ * Refresh guide element
+ * @param {number} guideHeight - guide element's style height.
+ * @param {number} minTimeHeight - time element's min height
+ * @param {number} timeHeight - time element's height.
+ */
+TimeResizeGuide.prototype._refreshGuideElement = function(guideHeight, minTimeHeight, timeHeight) {
+    var guideElement = this.guideElement;
+    var timeElement;
+
+    if (!guideElement) {
+        return;
+    }
+
+    timeElement = domutil.find(config.classname('.time-schedule-content-time'), guideElement);
+
+    reqAnimFrame.requestAnimFrame(function() {
+        guideElement.style.height = guideHeight + 'px';
+        guideElement.style.display = 'block';
+
+        if (timeElement) {
+            timeElement.style.height = timeHeight + 'px';
+            timeElement.style.minHeight = minTimeHeight + 'px';
+        }
+    });
+};
+
+/**
+ * TimeMove#timeMoveDragstart event handler
+ * @param {object} dragStartEventData - dragstart event data
+ */
+TimeResizeGuide.prototype._onDragStart = function(dragStartEventData) {
+    var originElement = domutil.closest(
+            dragStartEventData.target,
+            config.classname('.time-date-schedule-block')
+        ),
+        schedule = dragStartEventData.schedule,
+        guideElement;
+
+    if (!util.browser.msie) {
+        domutil.addClass(global.document.body, config.classname('resizing'));
+    }
+
+    if (!originElement || !schedule) {
+        return;
+    }
+
+    this._startGridY = dragStartEventData.nearestGridY;
+    this._startHeightPixel = parseFloat(originElement.style.height);
+    this._startTopPixel = parseFloat(originElement.style.top);
+
+    this._originScheduleElement = originElement;
+    this._schedule = schedule;
+
+    guideElement = this.guideElement = originElement.cloneNode(true);
+    domutil.addClass(guideElement, config.classname('time-guide-resize'));
+
+    originElement.style.display = 'none';
+    dragStartEventData.relatedView.container.appendChild(guideElement);
+};
+
+/**
+ * @param {object} dragEventData - event data from Drag#drag.
+ */
+TimeResizeGuide.prototype._onDrag = function(dragEventData) {
+    var timeView = dragEventData.relatedView,
+        viewOptions = timeView.options,
+        viewHeight = timeView.getViewBound().height,
+        hourLength = viewOptions.hourEnd - viewOptions.hourStart,
+        guideElement = this.guideElement,
+        guideTop = parseFloat(guideElement.style.top),
+        gridYOffset = dragEventData.nearestGridY - this._startGridY,
+        // hourLength : viewHeight = gridYOffset : X;
+        gridYOffsetPixel = ratio(hourLength, viewHeight, gridYOffset),
+        goingDuration = this._schedule.goingDuration,
+        modelDuration = this._schedule.duration() / datetime.MILLISECONDS_PER_MINUTES,
+        comingDuration = this._schedule.comingDuration,
+        minutesLength = hourLength * 60,
+        timeHeight,
+        timeMinHeight,
+        minHeight,
+        maxHeight,
+        height;
+
+    height = (this._startHeightPixel + gridYOffsetPixel);
+    // at least large than 30min from schedule start time.
+    minHeight = guideTop + ratio(hourLength, viewHeight, 0.5);
+    minHeight -= this._startTopPixel;
+    timeMinHeight = minHeight;
+    minHeight += ratio(minutesLength, viewHeight, goingDuration) + ratio(minutesLength, viewHeight, comingDuration);
+    // smaller than 24h
+    maxHeight = viewHeight - guideTop;
+
+    height = Math.max(height, minHeight);
+    height = Math.min(height, maxHeight);
+
+    timeHeight = ratio(minutesLength, viewHeight, modelDuration) + gridYOffsetPixel;
+
+    this._refreshGuideElement(height, timeMinHeight, timeHeight);
+};
+
+module.exports = TimeResizeGuide;
+
+/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../../node_modules/webpack/buildin/global.js */ "./node_modules/webpack/buildin/global.js")))
+
+/***/ }),
+
+/***/ "./src/js/model/schedule.js":
+/*!**********************************!*\
+  !*** ./src/js/model/schedule.js ***!
+  \**********************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/* eslint complexity: 0 */
+/**
+ * @fileoverview Model of schedule.
+ * @author NHN FE Development Lab <dl_javascript@nhn.com>
+ */
+
+
+var util = __webpack_require__(/*! tui-code-snippet */ "tui-code-snippet");
+var TZDate = __webpack_require__(/*! ../common/timezone */ "./src/js/common/timezone.js").Date;
+var datetime = __webpack_require__(/*! ../common/datetime */ "./src/js/common/datetime.js");
+var dirty = __webpack_require__(/*! ../common/dirty */ "./src/js/common/dirty.js");
+var model = __webpack_require__(/*! ../common/model */ "./src/js/common/model.js");
+
+var SCHEDULE_MIN_DURATION = datetime.MILLISECONDS_SCHEDULE_MIN_DURATION;
+
+/**
+ * Schedule category
+ * @readonly
+ * @enum {string}
+ */
+var SCHEDULE_CATEGORY = {
+    /** milestone */
+    MILESTONE: 'milestone',
+
+    /** task */
+    TASK: 'task',
+
+    /** all-day schedule */
+    ALLDAY: 'allday',
+
+    /** normal schedule */
+    TIME: 'time'
+};
+
+/**
+ * The model of calendar schedules.
+ * @constructor
+ * @mixes dirty
+ * @mixes model
+ */
+function Schedule() {
+    /**
+     * `Optional` unique id for various use.
+     * @type {string}
+     */
+    this.id = '';
+
+    /**
+     * title for schedule.
+     * @type {string}
+     */
+    this.title = '';
+
+    /**
+     * body for schedule.
+     * @type {string}
+     */
+    this.body = '';
+
+    /**
+     * is schedule is all day schedule?
+     * @type {boolean}
+     */
+    this.isAllDay = false;
+
+    /**
+     * schedule start
+     * @type {TZDate}
+     */
+    this.start = null;
+
+    /**
+     * schedule end
+     * @type {TZDate}
+     */
+    this.end = null;
+
+    /**
+     * schedule text color
+     * @type {string}
+     */
+    this.color = '#000';
+
+    /**
+     * schedule block visibility
+     * @type {boolean}
+     */
+    this.isVisible = true;
+
+    /**
+     * schedule background color
+     * @type {string}
+     */
+    this.bgColor = '#a1b56c';
+
+    /**
+     * schedule background color when dragging it
+     * @type {string}
+     */
+    this.dragBgColor = '#a1b56c';
+
+    /**
+     * schedule left border color
+     * @type {string}
+     */
+    this.borderColor = '#000';
+
+    /**
+     * calendar ID
+     * @type {string}
+     */
+    this.calendarId = '';
+
+    /**
+     * Schedule category(milestone, task, allday, time)
+     * @type {string}
+     */
+    this.category = '';
+
+    /**
+     * Classification of work schedules (before work, before lunch, before work)
+     * @type {string}
+     */
+    this.dueDateClass = '';
+
+    /**
+     * Custom style for schedule element
+     * @type {string}
+     */
+    this.customStyle = '';
+
+    /**
+     * in progress flag to do something
+     * @type {boolean}
+     */
+    this.isPending = false;
+
+    /**
+     * focused schedule flag
+     * @type {boolean}
+     */
+    this.isFocused = false;
+
+    /**
+     * read-only schedule flag
+     * @type {boolean}
+     */
+    this.isReadOnly = false;
+
+    /**
+     * private schedule
+     * @type {boolean}
+     */
+    this.isPrivate = false;
+
+    /**
+     * location
+     * @type {string}
+     */
+    this.location = '';
+
+    /**
+     * attendees
+     * @type {Array.<string>}
+     */
+    this.attendees = [];
+
+    /**
+     * recurrence rule
+     * @type {any}
+     */
+    this.recurrenceRule = '';
+
+    /**
+     * state. 'Busy' is default.
+     * @type {string}
+     */
+    this.state = '';
+
+    /**
+     * travelTime: going-Duration minutes
+     * @type {number}
+     */
+    this.goingDuration = 0;
+
+    /**
+     * travelTime: coming-Duration minutes
+     * @type {number}
+     */
+    this.comingDuration = 0;
+
+    /**
+     * Separate data storage space independent of rendering.
+     * @type {object}
+     */
+    this.raw = null;
+
+    // initialize model id
+    util.stamp(this);
+}
+
+/**********
+ * static props
+ **********/
+
+Schedule.schema = {
+    required: ['title'],
+    dateRange: ['start', 'end']
+};
+
+/**
+ * create schedule model from json(object) data.
+ * @param {object} data object for model.
+ * @returns {Schedule} Schedule model instance.
+ */
+Schedule.create = function(data) {
+    var inst = new Schedule();
+    inst.init(data);
+
+    return inst;
+};
+
+/**********
+ * prototype props
+ **********/
+
+/**
+ * Initialize schedule instance.
+ * @param {object} options options.
+ */
+Schedule.prototype.init = function(options) {
+    options = util.extend({}, options);
+    if (options.category === SCHEDULE_CATEGORY.ALLDAY) {
+        options.isAllDay = true;
+    }
+
+    this.id = options.id || '';
+    this.title = options.title || '';
+    this.body = options.body || '';
+    this.isAllDay = util.isExisty(options.isAllDay) ? options.isAllDay : false;
+    this.isVisible = util.isExisty(options.isVisible) ? options.isVisible : true;
+
+    this.color = options.color || this.color;
+    this.bgColor = options.bgColor || this.bgColor;
+    this.dragBgColor = options.dragBgColor || this.dragBgColor;
+    this.borderColor = options.borderColor || this.borderColor;
+    this.calendarId = options.calendarId || '';
+    this.category = options.category || '';
+    this.dueDateClass = options.dueDateClass || '';
+    this.customStyle = options.customStyle || '';
+    this.location = options.location || '';
+    this.attendees = options.attendees || [];
+    this.recurrenceRule = options.recurrenceRule || '';
+    this.isPrivate = options.isPrivate || false;
+    this.isPending = options.isPending || false;
+    this.isFocused = options.isFocused || false;
+    this.isReadOnly = options.isReadOnly || false;
+    this.goingDuration = options.goingDuration || 0;
+    this.comingDuration = options.comingDuration || 0;
+    this.state = options.state || '';
+
+    if (this.isAllDay) {
+        this.setAllDayPeriod(options.start, options.end);
+    } else {
+        this.setTimePeriod(options.start, options.end);
+    }
+
+    this.raw = options.raw || null;
+};
+
+Schedule.prototype.setAllDayPeriod = function(start, end) {
+    // If it is an all-day schedule, only the date information of the string is used.
+    if (util.isString(start) && start.length === 10) {
+        start = datetime.parse(start);
+    } else {
+        start = new TZDate(start || Date.now());
+    }
+
+    if (util.isString(end) && end.length === 10) {
+        end = datetime.parse(end);
+        end.setHours(23, 59, 59);
+    } else {
+        end = new TZDate(end || start);
+    }
+
+    this.start = datetime.start(start);
+    this.end = datetime.renderEnd(start, end);
+};
+
+Schedule.prototype.setTimePeriod = function(start, end) {
+    this.start = new TZDate(start || Date.now());
+    this.end = new TZDate(end || this.start);
+
+    if (!end) {
+        this.end.setMinutes(this.end.getMinutes() + 30);
+    }
+};
+
+/**
+ * @returns {Date} render start date.
+ */
+Schedule.prototype.getStarts = function() {
+    return this.start;
+};
+
+/**
+ * @returns {Date} render end date.
+ */
+Schedule.prototype.getEnds = function() {
+    return this.end;
+};
+
+/**
+ * @returns {number} instance unique id.
+ */
+Schedule.prototype.cid = function() {
+    return util.stamp(this);
+};
+
+/**
+ * Check two schedule are equals (means title, isAllDay, start, end are same)
+ * @param {Schedule} schedule Schedule model instance to compare.
+ * @returns {boolean} Return false when not same.
+ */
+Schedule.prototype.equals = function(schedule) {
+    if (this.id !== schedule.id) {
+        return false;
+    }
+
+    if (this.title !== schedule.title) {
+        return false;
+    }
+
+    if (this.body !== schedule.body) {
+        return false;
+    }
+
+    if (this.isAllDay !== schedule.isAllDay) {
+        return false;
+    }
+
+    if (datetime.compare(this.getStarts(), schedule.getStarts()) !== 0) {
+        return false;
+    }
+
+    if (datetime.compare(this.getEnds(), schedule.getEnds()) !== 0) {
+        return false;
+    }
+
+    if (this.color !== schedule.color) {
+        return false;
+    }
+
+    if (this.bgColor !== schedule.bgColor) {
+        return false;
+    }
+
+    if (this.dragBgColor !== schedule.dragBgColor) {
+        return false;
+    }
+
+    if (this.borderColor !== schedule.borderColor) {
+        return false;
+    }
+
+    return true;
+};
+
+/**
+ * return duration between start and end.
+ * @returns {Date} duration (UTC)
+ */
+Schedule.prototype.duration = function() {
+    var start = this.getStarts(),
+        end = this.getEnds(),
+        duration;
+
+    if (this.isAllDay) {
+        duration = datetime.end(end) - datetime.start(start);
+    } else {
+        duration = end - start;
+    }
+
+    return duration;
+};
+
+/**
+ * Returns true if the given Schedule coincides with the same time as the
+ * calling Schedule.
+ * @param {Schedule} schedule The other schedule to compare with this Schedule.
+ * @returns {boolean} If the other schedule occurs within the same time as the first object.
+ */
+Schedule.prototype.collidesWith = function(schedule) {
+    var ownStarts = this.getStarts(),
+        ownEnds = this.getEnds(),
+        start = schedule.getStarts(),
+        end = schedule.getEnds();
+    var ownGoingDuration = datetime.millisecondsFrom('minutes', this.goingDuration),
+        ownComingDuration = datetime.millisecondsFrom('minutes', this.comingDuration),
+        goingDuration = datetime.millisecondsFrom('minutes', schedule.goingDuration),
+        comingDuration = datetime.millisecondsFrom('minutes', schedule.comingDuration);
+
+    if (Math.abs(ownEnds - ownStarts) < SCHEDULE_MIN_DURATION) {
+        ownEnds += SCHEDULE_MIN_DURATION;
+    }
+
+    if (Math.abs(end - start) < SCHEDULE_MIN_DURATION) {
+        end += SCHEDULE_MIN_DURATION;
+    }
+
+    ownStarts -= ownGoingDuration;
+    ownEnds += ownComingDuration;
+    start -= goingDuration;
+    end += comingDuration;
+
+    if ((start > ownStarts && start < ownEnds) ||
+        (end > ownStarts && end < ownEnds) ||
+        (start <= ownStarts && end >= ownEnds)) {
+        return true;
+    }
+
+    return false;
+};
+
+model.mixin(Schedule.prototype);
+dirty.mixin(Schedule.prototype);
+
+module.exports = Schedule;
+
+
+/***/ }),
+
+/***/ "./src/js/model/viewModel/scheduleViewModel.js":
+/*!*****************************************************!*\
+  !*** ./src/js/model/viewModel/scheduleViewModel.js ***!
+  \*****************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/**
+ * @fileoverview Model for views
+ * @author NHN FE Development Lab <dl_javascript@nhn.com>
+ */
+
+
+var util = __webpack_require__(/*! tui-code-snippet */ "tui-code-snippet");
+var datetime = __webpack_require__(/*! ../../common/datetime */ "./src/js/common/datetime.js");
+
+var SCHEDULE_MIN_DURATION = datetime.MILLISECONDS_SCHEDULE_MIN_DURATION;
+
+/**
+ * Schedule ViewModel
+ * @constructor
+ * @param {Schedule} schedule Schedule instance.
+ */
+function ScheduleViewModel(schedule) {
+    /**
+     * The model of schedule.
+     * @type {Schedule}
+     */
+    this.model = schedule;
+
+    /**
+     * @type {number}
+     */
+    this.top = 0;
+
+    /**
+     * @type {number}
+     */
+    this.left = 0;
+
+    /**
+     * @type {number}
+     */
+    this.width = 0;
+
+    /**
+     * @type {number}
+     */
+    this.height = 0;
+
+    /**
+     * Represent schedule has collide with other schedules when rendering.
+     * @type {boolean}
+     */
+    this.hasCollide = false;
+
+    /**
+     * Extra space at rigth side of this schedule.
+     * @type {number}
+     */
+    this.extraSpace = 0;
+
+    /**
+     * represent this schedule block is not visible after rendered.
+     *
+     * in month view, some viewmodel in date need to hide when already rendered before dates.
+     *
+     * set true then it just shows empty space.
+     * @type {boolean}
+     */
+    this.hidden = false;
+
+    /**
+     * whether the schedule includes multiple dates
+     */
+    this.hasMultiDates = false;
+
+    /**
+     * represent render start date used at rendering.
+     *
+     * if set null then use model's 'start' property.
+     * @type {TZDate}
+     */
+    this.renderStarts = null;
+
+    /**
+     * whether the actual start-date is before the render-start-date
+     * @type {boolean}
+     */
+    this.exceedLeft = false;
+
+    /**
+     * represent render end date used at rendering.
+     *
+     * if set null then use model's 'end' property.
+     * @type {TZDate}
+     */
+    this.renderEnds = null;
+
+    /**
+     * whether the actual end-date is after the render-end-date
+     * @type {boolean}
+     */
+    this.exceedRight = false;
+}
+
+/**********
+ * static props
+ **********/
+
+/**
+ * ScheduleViewModel factory method.
+ * @param {Schedule} schedule Schedule instance.
+ * @returns {ScheduleViewModel} ScheduleViewModel instance.
+ */
+ScheduleViewModel.create = function(schedule) {
+    return new ScheduleViewModel(schedule);
+};
+
+/**********
+ * prototype props
+ **********/
+
+/**
+ * return renderStarts property to render properly when specific schedule that exceed rendering date range.
+ *
+ * if renderStarts is not set. return model's start property.
+ * @override
+ * @returns {Date} render start date.
+ */
+ScheduleViewModel.prototype.getStarts = function() {
+    if (this.renderStarts) {
+        return this.renderStarts;
+    }
+
+    return this.model.start;
+};
+
+/**
+ * return renderStarts property to render properly when specific schedule that exceed rendering date range.
+ *
+ * if renderEnds is not set. return model's end property.
+ * @override
+ * @returns {Date} render end date.
+ */
+ScheduleViewModel.prototype.getEnds = function() {
+    if (this.renderEnds) {
+        return this.renderEnds;
+    }
+
+    return this.model.end;
+};
+
+/**
+ * @returns {number} unique number for model.
+ */
+ScheduleViewModel.prototype.cid = function() {
+    return util.stamp(this.model);
+};
+
+/**
+ * Shadowing valueOf method for schedule sorting.
+ * @returns {Schedule} The model of schedule.
+ */
+ScheduleViewModel.prototype.valueOf = function() {
+    return this.model;
+};
+
+/**
+ * Link duration method
+ * @returns {number} Schedule#duration result.
+ */
+ScheduleViewModel.prototype.duration = function() {
+    return this.model.duration();
+};
+
+/**
+ * Link collidesWith method
+ * @param {Schedule|ScheduleViewModel} viewModel - Model or viewmodel instance of Schedule.
+ * @returns {boolean} Schedule#collidesWith result.
+ */
+ScheduleViewModel.prototype.collidesWith = function(viewModel) {
+    var ownStarts = this.getStarts(),
+        ownEnds = this.getEnds(),
+        start = viewModel.getStarts(),
+        end = viewModel.getEnds();
+    var ownGoingDuration = datetime.millisecondsFrom('minutes', this.valueOf().goingDuration),
+        ownComingDuration = datetime.millisecondsFrom('minutes', this.valueOf().comingDuration),
+        goingDuration = datetime.millisecondsFrom('minutes', viewModel.valueOf().goingDuration),
+        comingDuration = datetime.millisecondsFrom('minutes', viewModel.valueOf().comingDuration);
+
+    if (Math.abs(ownEnds - ownStarts) < SCHEDULE_MIN_DURATION) {
+        ownEnds += SCHEDULE_MIN_DURATION;
+    }
+
+    if (Math.abs(end - start) < SCHEDULE_MIN_DURATION) {
+        end += SCHEDULE_MIN_DURATION;
+    }
+
+    ownStarts -= ownGoingDuration;
+    ownEnds += ownComingDuration;
+    start -= goingDuration;
+    end += comingDuration;
+
+    if ((start > ownStarts && start < ownEnds) ||
+        (end > ownStarts && end < ownEnds) ||
+        (start <= ownStarts && end >= ownEnds)) {
+        return true;
+    }
+
+    return false;
+};
+
+module.exports = ScheduleViewModel;
+
+
+/***/ }),
+
+/***/ "./src/js/theme/standard.js":
+/*!**********************************!*\
+  !*** ./src/js/theme/standard.js ***!
+  \**********************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/**
+ * @fileoverview The standard theme
+ * @author NHN FE Development Lab <dl_javascript@nhn.com>
+ */
+
+
+/**
+ * "common" prefix is for entire calendar. "common" properties can be overriden by "week", "month".
+ * "week" prefix is for weekly and daily view.
+ * "month" prefix is for monthly view.
+ */
+var theme = {
+    'common.border': '1px solid #e5e5e5',
+    'common.backgroundColor': 'white',
+    'common.holiday.color': '#ff4040',
+    'common.saturday.color': '#333',
+    'common.dayname.color': '#333',
+    'common.today.color': '#333',
+
+    // creation guide style
+    'common.creationGuide.backgroundColor': 'rgba(81, 92, 230, 0.05)',
+    'common.creationGuide.border': '1px solid #515ce6',
+
+    // month header 'dayname'
+    'month.dayname.height': '31px',
+    'month.dayname.borderLeft': 'none',
+    'month.dayname.paddingLeft': '10px',
+    'month.dayname.paddingRight': '0',
+    'month.dayname.backgroundColor': 'inherit',
+    'month.dayname.fontSize': '12px',
+    'month.dayname.fontWeight': 'normal',
+    'month.dayname.textAlign': 'left',
+
+    // month day grid cell 'day'
+    'month.holidayExceptThisMonth.color': 'rgba(255, 64, 64, 0.4)',
+    'month.dayExceptThisMonth.color': 'rgba(51, 51, 51, 0.4)',
+    'month.weekend.backgroundColor': 'inherit',
+    'month.day.fontSize': '14px',
+
+    // month schedule style
+    'month.schedule.borderRadius': '2px',
+    'month.schedule.height': '24px',
+    'month.schedule.marginTop': '2px',
+    'month.schedule.marginLeft': '8px',
+    'month.schedule.marginRight': '8px',
+
+    // month more view
+    'month.moreView.border': '1px solid #d5d5d5',
+    'month.moreView.boxShadow': '0 2px 6px 0 rgba(0, 0, 0, 0.1)',
+    'month.moreView.backgroundColor': 'white',
+    'month.moreView.paddingBottom': '17px',
+    'month.moreViewTitle.height': '44px',
+    'month.moreViewTitle.marginBottom': '12px',
+    'month.moreViewTitle.borderBottom': 'none',
+    'month.moreViewTitle.padding': '12px 17px 0 17px',
+    'month.moreViewList.padding': '0 17px',
+
+    // week header 'dayname'
+    'week.dayname.height': '42px',
+    'week.dayname.borderTop': '1px solid #e5e5e5',
+    'week.dayname.borderBottom': '1px solid #e5e5e5',
+    'week.dayname.borderLeft': 'none',
+    'week.dayname.paddingLeft': '0',
+    'week.dayname.backgroundColor': 'inherit',
+    'week.dayname.textAlign': 'left',
+    'week.today.color': 'inherit',
+    'week.pastDay.color': '#bbb',
+
+    // week vertical panel 'vpanel'
+    'week.vpanelSplitter.border': '1px solid #e5e5e5',
+    'week.vpanelSplitter.height': '3px',
+
+    // week daygrid 'daygrid'
+    'week.daygrid.borderRight': '1px solid #e5e5e5',
+    'week.daygrid.backgroundColor': 'inherit',
+
+    'week.daygridLeft.width': '72px',
+    'week.daygridLeft.backgroundColor': 'inherit',
+    'week.daygridLeft.paddingRight': '8px',
+    'week.daygridLeft.borderRight': '1px solid #e5e5e5',
+
+    'week.today.backgroundColor': 'rgba(81, 92, 230, 0.05)',
+    'week.weekend.backgroundColor': 'inherit',
+
+    // week timegrid 'timegrid'
+    'week.timegridLeft.width': '72px',
+    'week.timegridLeft.backgroundColor': 'inherit',
+    'week.timegridLeft.borderRight': '1px solid #e5e5e5',
+    'week.timegridLeft.fontSize': '11px',
+
+    'week.timegridOneHour.height': '52px',
+    'week.timegridHalfHour.height': '26px',
+    'week.timegridHalfHour.borderBottom': 'none',
+    'week.timegridHorizontalLine.borderBottom': '1px solid #e5e5e5',
+
+    'week.timegrid.paddingRight': '8px',
+    'week.timegrid.borderRight': '1px solid #e5e5e5',
+    'week.timegridSchedule.borderRadius': '2px',
+    'week.timegridSchedule.paddingLeft': '2px',
+
+    'week.currentTime.color': '#515ce6',
+    'week.currentTime.fontSize': '11px',
+    'week.currentTime.fontWeight': 'normal',
+
+    'week.currentTimeLinePast.border': '1px dashed #515ce6',
+    'week.currentTimeLineBullet.backgroundColor': '#515ce6',
+    'week.currentTimeLineToday.border': '1px solid #515ce6',
+    'week.currentTimeLineFuture.border': 'none',
+
+    // week creation guide style
+    'week.creationGuide.color': '#515ce6',
+    'week.creationGuide.fontSize': '11px',
+    'week.creationGuide.fontWeight': 'bold',
+
+    // week daygrid schedule style
+    'week.dayGridSchedule.borderRadius': '2px',
+    'week.dayGridSchedule.height': '24px',
+    'week.dayGridSchedule.marginTop': '2px',
+    'week.dayGridSchedule.marginLeft': '8px',
+    'week.dayGridSchedule.marginRight': '8px'
+};
+
+module.exports = theme;
+
+
+/***/ }),
+
+/***/ "./src/js/theme/theme.js":
+/*!*******************************!*\
+  !*** ./src/js/theme/theme.js ***!
+  \*******************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/**
+ * @fileoverview The all configuration of a theme
+ * @author NHN FE Development Lab <dl_javascript@nhn.com>
+ */
+
+
+var util = __webpack_require__(/*! tui-code-snippet */ "tui-code-snippet");
+var themeStandard = __webpack_require__(/*! ./standard */ "./src/js/theme/standard.js");
+var themeConfig = __webpack_require__(/*! ./themeConfig */ "./src/js/theme/themeConfig.js");
+var common = __webpack_require__(/*! ../common/common */ "./src/js/common/common.js");
+
+/**
+ * Theme manager
+ * @param {object} customTheme - custom theme
+ */
+function Theme(customTheme) {
+    var theme = customTheme || themeStandard;
+
+    /**
+     * @type {util.HashMap}
+     */
+    this._map = new util.HashMap();
+
+    this.setStyles(theme);
+}
+
+/**
+ * Get a style with key
+ * @param {string} key - key for getting a style
+ * @returns {string|undefined} style
+ */
+Theme.prototype.getStyle = function(key) {
+    return this._map.get(key);
+};
+
+/**
+ * Set a style
+ * @param {string} key - key for setting a style
+ * @param {string} style - style value
+ * @returns {boolean} true if the give key is valid or false
+ */
+Theme.prototype.setStyle = function(key, style) {
+    var styles = {};
+    styles[key] = style;
+
+    return this.setStyles(styles).length === 0;
+};
+
+/**
+ * Set styles
+ * @param {object} styles - multiple styles map
+ * @returns {Array.<string>} error keys
+ */
+Theme.prototype.setStyles = function(styles) {
+    var errors = [];
+
+    util.forEach(styles, function(style, key) {
+        if (util.isUndefined(themeConfig[key])) {
+            errors.push(key);
+        } else {
+            this._map.set(key, style);
+            common.set(this, key, style);
+        }
+    }, this);
+
+    // apply missing styles which have to be default
+    util.forEach(themeConfig, function(style, key) {
+        if (!this.getStyle(key)) {
+            this._map.set(key, style);
+            common.set(this, key, style);
+        }
+    }, this);
+
+    return errors;
+};
+
+/**
+ * Delete all styles
+ */
+Theme.prototype.clear = function() {
+    var keys = this._map.keys();
+    var categories = {};
+    util.forEach(keys, function(key) {
+        var category = key.split('.')[0];
+        if (!categories[category]) {
+            categories[category] = category;
+        }
+    });
+
+    util.forEach(categories, function(child) {
+        delete this[child];
+    }, this);
+
+    this._map.removeAll();
+};
+
+module.exports = Theme;
+
+
+/***/ }),
+
+/***/ "./src/js/theme/themeConfig.js":
+/*!*************************************!*\
+  !*** ./src/js/theme/themeConfig.js ***!
+  \*************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/**
+ * @fileoverview The all configuration of a theme
+ * @author NHN FE Development Lab <dl_javascript@nhn.com>
+ */
+
+
+/**
+ * Full configuration for theme.
+ * "common" prefix is for entire calendar. "common" properties can be overriden by "week", "month".
+ * "week" prefix is for weekly and daily view.
+ * "month" prefix is for monthly view.
+ * @typedef {object} themeConfig
+ * @example
+ // default keys and styles
+ var themeConfig = {
+    'common.border': '1px solid #e5e5e5',
+    'common.backgroundColor': 'white',
+    'common.holiday.color': '#ff4040',
+    'common.saturday.color': '#333',
+    'common.dayname.color': '#333',
+    'common.today.color': '#333',
+
+    // creation guide style
+    'common.creationGuide.backgroundColor': 'rgba(81, 92, 230, 0.05)',
+    'common.creationGuide.border': '1px solid #515ce6',
+
+    // month header 'dayname'
+    'month.dayname.height': '31px',
+    'month.dayname.borderLeft': '1px solid #e5e5e5',
+    'month.dayname.paddingLeft': '10px',
+    'month.dayname.paddingRight': '10px',
+    'month.dayname.backgroundColor': 'inherit',
+    'month.dayname.fontSize': '12px',
+    'month.dayname.fontWeight': 'normal',
+    'month.dayname.textAlign': 'left',
+
+    // month day grid cell 'day'
+    'month.holidayExceptThisMonth.color': 'rgba(255, 64, 64, 0.4)',
+    'month.dayExceptThisMonth.color': 'rgba(51, 51, 51, 0.4)',
+    'month.weekend.backgroundColor': 'inherit',
+    'month.day.fontSize': '14px',
+
+    // month schedule style
+    'month.schedule.borderRadius': '2px',
+    'month.schedule.height': '24px',
+    'month.schedule.marginTop': '2px',
+    'month.schedule.marginLeft': '8px',
+    'month.schedule.marginRight': '8px',
+
+    // month more view
+    'month.moreView.border': '1px solid #d5d5d5',
+    'month.moreView.boxShadow': '0 2px 6px 0 rgba(0, 0, 0, 0.1)',
+    'month.moreView.backgroundColor': 'white',
+    'month.moreView.paddingBottom': '17px',
+    'month.moreViewTitle.height': '44px',
+    'month.moreViewTitle.marginBottom': '12px',
+    'month.moreViewTitle.backgroundColor': 'inherit',
+    'month.moreViewTitle.borderBottom': 'none',
+    'month.moreViewTitle.padding': '12px 17px 0 17px',
+    'month.moreViewList.padding': '0 17px',
+
+    // week header 'dayname'
+    'week.dayname.height': '42px',
+    'week.dayname.borderTop': '1px solid #e5e5e5',
+    'week.dayname.borderBottom': '1px solid #e5e5e5',
+    'week.dayname.borderLeft': 'inherit',
+    'week.dayname.paddingLeft': '0',
+    'week.dayname.backgroundColor': 'inherit',
+    'week.dayname.textAlign': 'left',
+    'week.today.color': '#333',
+    'week.pastDay.color': '#bbb',
+
+    // week vertical panel 'vpanel'
+    'week.vpanelSplitter.border': '1px solid #e5e5e5',
+    'week.vpanelSplitter.height': '3px',
+
+    // week daygrid 'daygrid'
+    'week.daygrid.borderRight': '1px solid #e5e5e5',
+    'week.daygrid.backgroundColor': 'inherit',
+
+    'week.daygridLeft.width': '72px',
+    'week.daygridLeft.backgroundColor': 'inherit',
+    'week.daygridLeft.paddingRight': '8px',
+    'week.daygridLeft.borderRight': '1px solid #e5e5e5',
+
+    'week.today.backgroundColor': 'rgba(81, 92, 230, 0.05)',
+    'week.weekend.backgroundColor': 'inherit',
+
+    // week timegrid 'timegrid'
+    'week.timegridLeft.width': '72px',
+    'week.timegridLeft.backgroundColor': 'inherit',
+    'week.timegridLeft.borderRight': '1px solid #e5e5e5',
+    'week.timegridLeft.fontSize': '11px',
+    'week.timegridLeftTimezoneLabel.height': '40px',
+    'week.timegridLeftAdditionalTimezone.backgroundColor': 'white',
+
+    'week.timegridOneHour.height': '52px',
+    'week.timegridHalfHour.height': '26px',
+    'week.timegridHalfHour.borderBottom': 'none',
+    'week.timegridHorizontalLine.borderBottom': '1px solid #e5e5e5',
+
+    'week.timegrid.paddingRight': '8px',
+    'week.timegrid.borderRight': '1px solid #e5e5e5',
+    'week.timegridSchedule.borderRadius': '2px',
+    'week.timegridSchedule.paddingLeft': '2px',
+
+    'week.currentTime.color': '#515ce6',
+    'week.currentTime.fontSize': '11px',
+    'week.currentTime.fontWeight': 'normal',
+
+    'week.pastTime.color': '#bbb',
+    'week.pastTime.fontWeight': 'normal',
+
+    'week.futureTime.color': '#333',
+    'week.futureTime.fontWeight': 'normal',
+
+    'week.currentTimeLinePast.border': '1px dashed #515ce6',
+    'week.currentTimeLineBullet.backgroundColor': '#515ce6',
+    'week.currentTimeLineToday.border': '1px solid #515ce6',
+    'week.currentTimeLineFuture.border': 'none',
+
+    // week creation guide style
+    'week.creationGuide.color': '#515ce6',
+    'week.creationGuide.fontSize': '11px',
+    'week.creationGuide.fontWeight': 'bold',
+
+    // week daygrid schedule style
+    'week.dayGridSchedule.borderRadius': '2px',
+    'week.dayGridSchedule.height': '24px',
+    'week.dayGridSchedule.marginTop': '2px',
+    'week.dayGridSchedule.marginLeft': '8px',
+    'week.dayGridSchedule.marginRight': '8px'
+};
+ */
+var themeConfig = {
+    'common.border': '1px solid #e5e5e5',
+    'common.backgroundColor': 'white',
+    'common.holiday.color': '#ff4040',
+    'common.saturday.color': '#333',
+    'common.dayname.color': '#333',
+    'common.today.color': '#333',
+
+    // creation guide style
+    'common.creationGuide.backgroundColor': 'rgba(81, 92, 230, 0.05)',
+    'common.creationGuide.border': '1px solid #515ce6',
+
+    // month header 'dayname'
+    'month.dayname.height': '31px',
+    'month.dayname.borderLeft': '1px solid #e5e5e5',
+    'month.dayname.paddingLeft': '10px',
+    'month.dayname.paddingRight': '10px',
+    'month.dayname.backgroundColor': 'inherit',
+    'month.dayname.fontSize': '12px',
+    'month.dayname.fontWeight': 'normal',
+    'month.dayname.textAlign': 'left',
+
+    // month day grid cell 'day'
+    'month.holidayExceptThisMonth.color': 'rgba(255, 64, 64, 0.4)',
+    'month.dayExceptThisMonth.color': 'rgba(51, 51, 51, 0.4)',
+    'month.weekend.backgroundColor': 'inherit',
+    'month.day.fontSize': '14px',
+
+    // month schedule style
+    'month.schedule.borderRadius': '2px',
+    'month.schedule.height': '24px',
+    'month.schedule.marginTop': '2px',
+    'month.schedule.marginLeft': '8px',
+    'month.schedule.marginRight': '8px',
+
+    // month more view
+    'month.moreView.border': '1px solid #d5d5d5',
+    'month.moreView.boxShadow': '0 2px 6px 0 rgba(0, 0, 0, 0.1)',
+    'month.moreView.backgroundColor': 'white',
+    'month.moreView.paddingBottom': '17px',
+    'month.moreViewTitle.height': '44px',
+    'month.moreViewTitle.marginBottom': '12px',
+    'month.moreViewTitle.backgroundColor': 'inherit',
+    'month.moreViewTitle.borderBottom': 'none',
+    'month.moreViewTitle.padding': '12px 17px 0 17px',
+    'month.moreViewList.padding': '0 17px',
+
+    // week header 'dayname'
+    'week.dayname.height': '42px',
+    'week.dayname.borderTop': '1px solid #e5e5e5',
+    'week.dayname.borderBottom': '1px solid #e5e5e5',
+    'week.dayname.borderLeft': 'inherit',
+    'week.dayname.paddingLeft': '0',
+    'week.dayname.backgroundColor': 'inherit',
+    'week.dayname.textAlign': 'left',
+    'week.today.color': '#333',
+    'week.pastDay.color': '#bbb',
+
+    // week vertical panel 'vpanel'
+    'week.vpanelSplitter.border': '1px solid #e5e5e5',
+    'week.vpanelSplitter.height': '3px',
+
+    // week daygrid 'daygrid'
+    'week.daygrid.borderRight': '1px solid #e5e5e5',
+    'week.daygrid.backgroundColor': 'inherit',
+
+    'week.daygridLeft.width': '72px',
+    'week.daygridLeft.backgroundColor': 'inherit',
+    'week.daygridLeft.paddingRight': '8px',
+    'week.daygridLeft.borderRight': '1px solid #e5e5e5',
+
+    'week.today.backgroundColor': 'rgba(81, 92, 230, 0.05)',
+    'week.weekend.backgroundColor': 'inherit',
+
+    // week timegrid 'timegrid'
+    'week.timegridLeft.width': '72px',
+    'week.timegridLeft.backgroundColor': 'inherit',
+    'week.timegridLeft.borderRight': '1px solid #e5e5e5',
+    'week.timegridLeft.fontSize': '11px',
+    'week.timegridLeftTimezoneLabel.height': '40px',
+    'week.timegridLeftAdditionalTimezone.backgroundColor': 'white',
+
+    'week.timegridOneHour.height': '52px',
+    'week.timegridHalfHour.height': '26px',
+    'week.timegridHalfHour.borderBottom': 'none',
+    'week.timegridHorizontalLine.borderBottom': '1px solid #e5e5e5',
+
+    'week.timegrid.paddingRight': '8px',
+    'week.timegrid.borderRight': '1px solid #e5e5e5',
+    'week.timegridSchedule.borderRadius': '2px',
+    'week.timegridSchedule.paddingLeft': '2px',
+
+    'week.currentTime.color': '#515ce6',
+    'week.currentTime.fontSize': '11px',
+    'week.currentTime.fontWeight': 'normal',
+
+    'week.pastTime.color': '#bbb',
+    'week.pastTime.fontWeight': 'normal',
+
+    'week.futureTime.color': '#333',
+    'week.futureTime.fontWeight': 'normal',
+
+    'week.currentTimeLinePast.border': '1px dashed #515ce6',
+    'week.currentTimeLineBullet.backgroundColor': '#515ce6',
+    'week.currentTimeLineToday.border': '1px solid #515ce6',
+    'week.currentTimeLineFuture.border': 'none',
+
+    // week creation guide style
+    'week.creationGuide.color': '#515ce6',
+    'week.creationGuide.fontSize': '11px',
+    'week.creationGuide.fontWeight': 'bold',
+
+    // week daygrid schedule style
+    'week.dayGridSchedule.borderRadius': '2px',
+    'week.dayGridSchedule.height': '24px',
+    'week.dayGridSchedule.marginTop': '2px',
+    'week.dayGridSchedule.marginLeft': '8px',
+    'week.dayGridSchedule.marginRight': '8px'
+};
+
+module.exports = themeConfig;
+
+
+/***/ }),
+
+/***/ "./src/js/view/layout.js":
+/*!*******************************!*\
+  !*** ./src/js/view/layout.js ***!
+  \*******************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/**
+ * @fileoverview Layout view. wrap all view containers at outside.
+ * @author NHN FE Development Lab <dl_javascript@nhn.com>
+ */
+
+
+var util = __webpack_require__(/*! tui-code-snippet */ "tui-code-snippet");
+var config = __webpack_require__(/*! ../config */ "./src/js/config.js");
+var domutil = __webpack_require__(/*! ../common/domutil */ "./src/js/common/domutil.js");
+var Collection = __webpack_require__(/*! ../common/collection */ "./src/js/common/collection.js");
+var View = __webpack_require__(/*! ./view */ "./src/js/view/view.js");
+
+/**
+ * Layout view for toggle each child view. It will controlled via navigation UI.
+ * @constructor
+ * @extends {View}
+ * @param {HTMLElement} container Container element to use layout view.
+ * @param {Theme} theme - theme instance
+ */
+function Layout(container, theme) {
+    container = domutil.appendHTMLElement('div', container, config.classname('layout'));
+
+    /**
+     * @type {HTMLElement}
+     */
+    this.container = container;
+
+    /*eslint-disable*/
+    /**
+     * @type {Collection} Child view collection.
+     */
+    this.children = new Collection(function(childView) {
+        return childView.viewName;
+    });
+    /* eslint-enable*/
+
+    /**
+     * @type {Theme}
+     */
+    this.theme = theme;
+
+    this.applyTheme();
+}
+
+util.inherit(Layout, View);
+
+/**
+ * Clear child views.
+ */
+Layout.prototype.clear = function() {
+    this.children.each(function(childView) {
+        childView.destroy();
+    });
+
+    this.children.clear();
+    this.container.innerHTML = '';
+};
+
+/**
+ * Remove child view.
+ * @override
+ * @param {(string|View)} viewName - name of view or instance.
+ */
+Layout.prototype.removeChild = function(viewName) {
+    this.children.remove(viewName);
+};
+
+/**
+ * Toggle child views.
+ * @param {string} viewName - Name of view.
+ */
+Layout.prototype.toggleChildView = function(viewName) {
+    var container,
+        prefix = ['add', 'remove'],
+        flag;
+
+    this.children.each(function(childView) {
+        container = childView.container;
+        flag = Number(childView.viewName === viewName);
+        domutil[prefix[flag] + 'Class'](container, config.classname('hidden'));
+    });
+};
+
+Layout.prototype.applyTheme = function() {
+    var style = this.container.style;
+    var theme = this.theme.common;
+
+    // background color
+    style.backgroundColor = theme.backgroundColor;
+};
+
+module.exports = Layout;
+
+
+/***/ }),
+
+/***/ "./src/js/view/month/month.js":
+/*!************************************!*\
+  !*** ./src/js/view/month/month.js ***!
+  \************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/**
+ * @fileoverview Month view
+ * @author NHN FE Development Lab <dl_javascript@nhn.com>
+ */
+
+
+var util = __webpack_require__(/*! tui-code-snippet */ "tui-code-snippet");
+var config = __webpack_require__(/*! ../../config */ "./src/js/config.js"),
+    datetime = __webpack_require__(/*! ../../common/datetime */ "./src/js/common/datetime.js"),
+    domutil = __webpack_require__(/*! ../../common/domutil */ "./src/js/common/domutil.js"),
+    TZDate = __webpack_require__(/*! ../../common/timezone */ "./src/js/common/timezone.js").Date,
+    tmpl = __webpack_require__(/*! ../template/month/month.hbs */ "./src/js/view/template/month/month.hbs"),
+    View = __webpack_require__(/*! ../view */ "./src/js/view/view.js"),
+    VLayout = __webpack_require__(/*! ../..//common/vlayout */ "./src/js/common/vlayout.js"),
+    WeekdayInMonth = __webpack_require__(/*! ./weekdayInMonth */ "./src/js/view/month/weekdayInMonth.js");
+var mmin = Math.min;
+
+/**
+ * @constructor
+ * @extends {View}
+ * @param {object} options - options
+ * @param {function} [options.scheduleFilter] - schedule filter
+ * @param {number} [options.startDayOfWeek=0] - start day of week
+ * @param {string} [options.renderMonth='2015-12'] - render month
+ * @param {string[]} [options.daynames] - daynames to use upside of month view
+ * @param {HTMLElement} container - container element
+ * @param {Base.Month} controller - controller instance
+ */
+function Month(options, container, controller) {
+    var theme = controller ? controller.theme : null;
+    var monthOption;
+
+    options = options || {};
+    monthOption = options ? options.month : {};
+
+    View.call(this, container);
+
+    /**
+     * @type {Base.Month}
+     */
+    this.controller = controller;
+
+    /**
+     * @type {VLayout}
+     */
+    this.vLayout = new VLayout({
+        panels: [
+            {height: parseInt(controller.theme.month.dayname.height, 10) || 42},
+            {autoHeight: true}
+        ]
+    }, container, theme);
+
+    /**
+     * @type {string}
+     */
+    this.options = util.extend({
+        scheduleFilter: function(schedule) {
+            return Boolean(schedule.isVisible);
+        },
+        startDayOfWeek: 0,
+        renderMonth: '2018-01',
+        daynames: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],
+        narrowWeekend: false,
+        visibleWeeksCount: null,
+        isAlways6Week: true,
+        isReadOnly: options.isReadOnly,
+        grid: {
+            header: {
+                height: 34
+            },
+            footer: {
+                height: 3
+            }
+        }
+    }, monthOption);
+
+    this.options.grid.header = util.extend({
+        height: 34
+    }, util.pick(monthOption, 'grid', 'header'));
+    this.options.grid.footer = util.extend({
+        height: 3
+    }, util.pick(monthOption, 'grid', 'footer'));
+
+    /**
+     * horizontal grid information
+     * @type {Object}
+     */
+    this.grids = datetime.getGridLeftAndWidth(
+        this.options.daynames.length,
+        this.options.narrowWeekend,
+        this.options.startDayOfWeek);
+}
+
+util.inherit(Month, View);
+
+/**
+ * Name of view. for managing subview at layout view
+ * @type {string}
+ */
+Month.prototype.viewName = 'month';
+
+/**
+ * Get calendar array by supplied date
+ * @param {string} renderMonth - month to render YYYY-MM, weeks2/3 to render YYYY-MM-DD
+ * @returns {array.<Date[]>} calendar array
+ */
+Month.prototype._getMonthCalendar = function(renderMonth) {
+    var date = new TZDate(renderMonth);
+    var startDayOfWeek = this.options.startDayOfWeek || 0;
+    var visibleWeeksCount = mmin(this.options.visibleWeeksCount || 0, 6);
+    var workweek = this.options.workweek || false;
+    var datetimeOptions, calendar;
+
+    if (this.options.visibleWeeksCount) {
+        datetimeOptions = {
+            startDayOfWeek: startDayOfWeek,
+            isAlways6Week: false,
+            visibleWeeksCount: visibleWeeksCount,
+            workweek: workweek
+        };
+    } else {
+        datetimeOptions = {
+            startDayOfWeek: startDayOfWeek,
+            isAlways6Week: this.options.isAlways6Week,
+            workweek: workweek
+        };
+    }
+
+    calendar = datetime.arr2dCalendar(date, datetimeOptions);
+
+    return calendar;
+};
+
+/**
+ * Create children view (week) and add children
+ * @param {HTMLElement} container - container element to render weeks
+ * @param {array.<Date[]>} calendar - calendar array from datetime#arr2dCalendar
+ * @param {Theme} theme - theme instance
+ */
+Month.prototype._renderChildren = function(container, calendar, theme) {
+    var self = this;
+    var weekCount = calendar.length;
+    var heightPercent = 100 / weekCount;
+    var opt = this.options;
+    var renderMonth = opt.renderMonth;
+    var narrowWeekend = opt.narrowWeekend;
+    var startDayOfWeek = opt.startDayOfWeek;
+    var visibleWeeksCount = opt.visibleWeeksCount;
+    var visibleScheduleCount = opt.visibleScheduleCount;
+    var gridOption = opt.grid;
+    var isReadOnly = opt.isReadOnly;
+
+    container.innerHTML = '';
+    this.children.clear();
+
+    util.forEach(calendar, function(weekArr) {
+        var start = new TZDate(weekArr[0]),
+            end = new TZDate(weekArr[weekArr.length - 1]),
+            weekdayViewContainer,
+            weekdayView;
+
+        weekdayViewContainer = domutil.appendHTMLElement(
+            'div', container, config.classname('month-week-item'));
+
+        weekdayView = new WeekdayInMonth({
+            renderMonth: renderMonth,
+            heightPercent: heightPercent,
+            renderStartDate: start,
+            renderEndDate: end,
+            narrowWeekend: narrowWeekend,
+            startDayOfWeek: startDayOfWeek,
+            visibleWeeksCount: visibleWeeksCount,
+            visibleScheduleCount: visibleScheduleCount,
+            grid: gridOption,
+            scheduleHeight: parseInt(theme.month.schedule.height, 10),
+            scheduleGutter: parseInt(theme.month.schedule.marginTop, 10),
+            isReadOnly: isReadOnly
+        }, weekdayViewContainer);
+
+        self.addChild(weekdayView);
+    });
+};
+
+/**
+ * Render month view
+ * @override
+ */
+Month.prototype.render = function() {
+    var self = this,
+        opt = this.options,
+        vLayout = this.vLayout,
+        controller = this.controller,
+        daynames = opt.daynames,
+        workweek = opt.workweek,
+        calendar = this._getMonthCalendar(opt.renderMonth),
+        scheduleFilter = opt.scheduleFilter,
+        theme = controller ? controller.theme : null,
+        styles = this._getStyles(theme),
+        grids,
+        daynameViewModel,
+        baseViewModel;
+
+    grids = this.grids = datetime.getGridLeftAndWidth(
+        opt.daynames.length,
+        opt.narrowWeekend,
+        opt.startDayOfWeek
+    );
+
+    daynameViewModel = util.map(
+        util.range(opt.startDayOfWeek, 7).concat(util.range(7)).slice(0, 7),
+        function(day, index) {
+            return {
+                day: day,
+                label: daynames[day],
+                width: grids[index] ? grids[index].width : 0,
+                left: grids[index] ? grids[index].left : 0,
+                color: this._getDayNameColor(theme, day)
+            };
+        },
+        this
+    );
+
+    if (workweek) {
+        grids = this.grids = datetime.getGridLeftAndWidth(5, opt.narrowWeekend, opt.startDayOfWeek, workweek);
+
+        daynameViewModel = util.filter(daynameViewModel, function(daynameModel) {
+            return !datetime.isWeekend(daynameModel.day);
+        });
+
+        util.forEach(daynameViewModel, function(daynameModel, index) {
+            daynameModel.width = grids[index] ? grids[index].width : 0;
+            daynameModel.left = grids[index] ? grids[index].left : 0;
+        });
+    }
+
+    baseViewModel = {
+        daynames: daynameViewModel,
+        styles: styles
+    };
+
+    vLayout.panels[0].container.innerHTML = tmpl(baseViewModel);
+
+    this._renderChildren(vLayout.panels[1].container, calendar, theme);
+
+    baseViewModel.panelHeight = vLayout.panels[1].getHeight();
+
+    this.children.each(function(childView) {
+        var start = datetime.start(childView.options.renderStartDate);
+        var end = datetime.start(childView.options.renderEndDate);
+        var eventsInDateRange = controller.findByDateRange(
+            datetime.start(start),
+            datetime.end(end),
+            scheduleFilter
+        );
+        var dateRange = datetime.range(
+            datetime.start(start),
+            datetime.end(end),
+            datetime.MILLISECONDS_PER_DAY);
+        var viewModel = {
+            eventsInDateRange: eventsInDateRange,
+            range: dateRange.slice(0, grids.length),
+            grids: grids,
+            panelHeight: baseViewModel.panelHeight,
+            theme: theme
+        };
+
+        childView.render(viewModel);
+
+        self._invokeAfterRenderSchedule(eventsInDateRange);
+    });
+};
+
+/**
+ * Fire 'afterRenderSchedule' event
+ * @param {Array} matrices - schedule matrices from view model
+ * @fires Month#afterRenderSchedule
+ */
+Month.prototype._invokeAfterRenderSchedule = function(matrices) {
+    var self = this;
+    util.forEachArray(matrices, function(matrix) {
+        util.forEachArray(matrix, function(column) {
+            util.forEachArray(column, function(scheduleViewModel) {
+                if (scheduleViewModel && !scheduleViewModel.hidden) {
+                    /**
+                     * @event Month#afterRenderSchedule
+                     */
+                    self.fire('afterRenderSchedule', {schedule: scheduleViewModel.model});
+                }
+            });
+        });
+    });
+};
+
+/**
+ * Get the styles from theme
+ * @param {Theme} theme - theme instance
+ * @returns {object} styles - styles object
+ */
+Month.prototype._getStyles = function(theme) {
+    var styles = {};
+    var dayname;
+
+    if (theme) {
+        dayname = theme.month.dayname;
+
+        styles.borderTop = dayname.borderTop || theme.common.border;
+        styles.borderLeft = dayname.borderLeft || theme.common.border;
+        styles.height = dayname.height;
+        styles.paddingLeft = dayname.paddingLeft;
+        styles.paddingRight = dayname.paddingRight;
+        styles.fontSize = dayname.fontSize;
+        styles.backgroundColor = dayname.backgroundColor;
+        styles.fontWeight = dayname.fontWeight;
+        styles.textAlign = dayname.textAlign;
+    }
+
+    return styles;
+};
+
+/**
+ * Get a day name color
+ * @param {Theme} theme - theme instance
+ * @param {number} day - day number
+ * @returns {string} style - color style
+ */
+Month.prototype._getDayNameColor = function(theme, day) {
+    var color = '';
+
+    if (theme) {
+        if (day === 0) {
+            color = theme.common.holiday.color;
+        } else if (day === 6) {
+            color = theme.common.saturday.color;
+        } else {
+            color = theme.common.dayname.color;
+        }
+    }
+
+    return color;
+};
+
+module.exports = Month;
+
+
+/***/ }),
+
+/***/ "./src/js/view/month/more.js":
+/*!***********************************!*\
+  !*** ./src/js/view/month/more.js ***!
+  \***********************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/**
+ * @fileoverview Floating layer for displaying schedule in specific date
+ * @author NHN FE Development Lab <dl_javascript@nhn.com>
+ */
+
+
+var OUT_PADDING = 5;
+var VIEW_MIN_WIDTH = 280;
+var util = __webpack_require__(/*! tui-code-snippet */ "tui-code-snippet");
+var config = __webpack_require__(/*! ../../config */ "./src/js/config.js"),
+    domevent = __webpack_require__(/*! ../../common/domevent */ "./src/js/common/domevent.js"),
+    domutil = __webpack_require__(/*! ../../common/domutil */ "./src/js/common/domutil.js"),
+    View = __webpack_require__(/*! ../../view/view */ "./src/js/view/view.js"),
+    FloatingLayer = __webpack_require__(/*! ../../common/floatingLayer */ "./src/js/common/floatingLayer.js"),
+    common = __webpack_require__(/*! ../../common/common */ "./src/js/common/common.js"),
+    tmpl = __webpack_require__(/*! ../template/month/more.hbs */ "./src/js/view/template/month/more.hbs");
+
+/**
+ * @constructor
+ * @extends {View}
+ * @param {object} options - options
+ * @param {object} [options.moreLayerSize] - more layer size
+ * @param {object} [options.moreLayerSize.width=null] - css width value(px, auto).
+ *                                                           The default value 'null' is to fit a grid cell.
+ * @param {object} [options.moreLayerSize.height=null] - css height value(px, auto).
+ *                                                            The default value 'null' is to fit a grid cell.
+ * @param {HTMLElement} container = container element
+ * @param {Theme} theme - theme instance
+ */
+function More(options, container, theme) {
+    View.call(this, container);
+
+    /**
+     * @type {FloatingLayer}
+     */
+    this.layer = new FloatingLayer(null, container);
+
+    /**
+     * cached view model
+     * @type {object}
+     */
+    this._viewModel = null;
+
+    /**
+     * @type {object}
+     */
+    this.options = util.extend({
+        moreLayerSize: {
+            width: null,
+            height: null
+        },
+        scheduleHeight: parseInt(theme.month.schedule.height, 10) || 18,
+        scheduleGutter: parseInt(theme.month.schedule.marginTop, 10) || 2,
+        scheduleBulletTop: (parseInt(theme.month.schedule.height, 10) || 18) / 3,
+        borderRadius: theme.month.schedule.borderRadius
+    }, options);
+
+    /**
+     * @type {Theme}
+     */
+    this.theme = theme;
+
+    domevent.on(container, 'click', this._onClick, this);
+}
+
+util.inherit(More, View);
+
+/**
+ * Click event handler for close button
+ * @param {MouseEvent} clickEvent - mouse event object
+ */
+More.prototype._onClick = function(clickEvent) {
+    var target = domevent.getEventTarget(clickEvent);
+    var className = config.classname('month-more-close');
+
+    if (!domutil.hasClass(target, className) && !domutil.closest(target, '.' + className)) {
+        return;
+    }
+
+    this.hide();
+};
+
+/**
+ * Mousedown event handler for hiding more layer when user mousedown outside of
+ * layer
+ * @param {MouseEvent} mouseDownEvent - mouse event object
+ */
+More.prototype._onMouseDown = function(mouseDownEvent) {
+    var target = domevent.getEventTarget(mouseDownEvent),
+        moreLayer = domutil.closest(target, config.classname('.month-more'));
+
+    if (moreLayer) {
+        return;
+    }
+
+    this.hide();
+};
+
+/**
+ * Get new position for more layer by +n element itself
+ * @param {HTMLElement} target - parent grid-line element of +n element
+ * @param {HTMLElement} weekItem - weekItem container element
+ * @returns {number[]} new position of more layer
+ */
+More.prototype._getRenderPosition = function(target, weekItem) {
+    var pos = domevent.getMousePosition({
+        clientX: domutil.getPosition(target)[0],
+        clientY: domutil.getPosition(weekItem)[1]
+    }, this.container);
+    var containerSize = domutil.getSize(this.container);
+    var left = pos[0] - OUT_PADDING;
+    var top = pos[1] - OUT_PADDING;
+
+    left = common.ratio(containerSize[0], 100, left);
+    top = common.ratio(containerSize[1], 100, top);
+
+    return [left, top];
+};
+
+/**
+ * @override
+ */
+More.prototype.destroy = function() {
+    this.layer.destroy();
+    this.layer = null;
+    domevent.off(this.container, 'click', this._onClick, this);
+    domevent.off(document.body, 'mousedown', this._onMouseDown, this);
+    View.prototype.destroy.call(this);
+};
+
+/**
+ * @override
+ * @param {object} viewModel - view model from factory/monthView
+ */
+More.prototype.render = function(viewModel) {
+    var target = domutil.closest(viewModel.target, config.classname('.weekday-grid-line'));
+    var weekItem = domutil.closest(target, config.classname('.month-week-item'));
+    var layer = this.layer;
+    var self = this;
+    var pos = this._getRenderPosition(target, weekItem);
+    var minHeight = domutil.getSize(weekItem)[1] + (OUT_PADDING * 2);
+    var width = target.offsetWidth + (OUT_PADDING * 2);
+    var opt = this.options;
+    var optMoreLayerSize = opt.moreLayerSize;
+    var styles = this._getStyles(this.theme);
+    var maxVisibleSchedulesInLayer = 10;
+    var height = '';
+    var containerSize = domutil.getSize(this.container);
+    var calWidth = 0;
+    var calHeight = 0;
+    var isOverWidth = false;
+    var isOverHeight = false;
+    var leftPos = pos[0];
+    var topPos = pos[1];
+
+    this._viewModel = util.extend(viewModel, {
+        scheduleGutter: opt.scheduleGutter,
+        scheduleHeight: opt.scheduleHeight,
+        scheduleBulletTop: opt.scheduleBulletTop,
+        borderRadius: opt.borderRadius,
+        styles: styles
+    });
+
+    width = Math.max(width, VIEW_MIN_WIDTH);
+    height = parseInt(styles.titleHeight, 10);
+    height += parseInt(styles.titleMarginBottom, 10);
+    if (viewModel.schedules.length <= maxVisibleSchedulesInLayer) {
+        height += (opt.scheduleGutter + opt.scheduleHeight) * viewModel.schedules.length;
+    } else {
+        height += (opt.scheduleGutter + opt.scheduleHeight) * maxVisibleSchedulesInLayer;
+    }
+    height += parseInt(styles.paddingBottom, 10);
+    height += OUT_PADDING; // for border
+
+    if (optMoreLayerSize.width) {
+        width = optMoreLayerSize.width;
+    }
+
+    if (optMoreLayerSize.height) {
+        height = optMoreLayerSize.height;
+    }
+
+    if (isNaN(height) || height < minHeight) {
+        height = minHeight;
+    }
+
+    layer.setContent(tmpl(viewModel));
+
+    calWidth = leftPos * containerSize[0] / 100;
+    calHeight = topPos * containerSize[1] / 100;
+    isOverWidth = calWidth + width >= containerSize[0];
+    isOverHeight = calHeight + height >= containerSize[1];
+    leftPos = leftPos + '%';
+    topPos = topPos + '%';
+
+    if (isOverWidth && isOverHeight) {
+        layer.setLTRB({
+            right: 0,
+            bottom: 0
+        });
+    } else if (!isOverWidth && isOverHeight) {
+        layer.setLTRB({
+            left: leftPos,
+            bottom: 0
+        });
+    } else if (isOverWidth && !isOverHeight) {
+        layer.setLTRB({
+            right: 0,
+            top: topPos
+        });
+    } else {
+        layer.setPosition(leftPos, topPos);
+    }
+
+    layer.setSize(width, height);
+
+    layer.show();
+
+    util.debounce(function() {
+        domevent.on(document.body, 'mousedown', self._onMouseDown, self);
+    })();
+};
+
+/**
+ * Hide layer
+ */
+More.prototype.hide = function() {
+    this.layer.hide();
+    domevent.off(document.body, 'mousedown', this._onMouseDown, this);
+};
+
+/**
+ * refresh layer
+ */
+More.prototype.refresh = function() {
+    if (this._viewModel) {
+        this.layer.setContent(tmpl(this._viewModel));
+    }
+};
+
+/**
+ * Return more layer root element
+ * @returns {HTMLElement} root element
+ */
+More.prototype.getMoreViewElement = function() {
+    return domutil.find(config.classname('.month-more'), this.layer.container);
+};
+
+/**
+ * Get the styles from theme
+ * @param {Theme} theme - theme instance
+ * @returns {object} styles - styles object
+ */
+More.prototype._getStyles = function(theme) {
+    var styles = {};
+    var listHeight = '';
+
+    if (theme) {
+        styles.border = theme.month.moreView.border || theme.common.border;
+        styles.boxShadow = theme.month.moreView.boxShadow;
+        styles.backgroundColor = theme.month.moreView.backgroundColor || theme.common.backgroundColor;
+        styles.paddingBottom = theme.month.moreView.paddingBottom;
+        styles.titleHeight = theme.month.moreViewTitle.height;
+        styles.titleMarginBottom = theme.month.moreViewTitle.marginBottom;
+        styles.titleBackgroundColor = theme.month.moreViewTitle.backgroundColor;
+        styles.titleBorderBottom = theme.month.moreViewTitle.borderBottom;
+        styles.titlePadding = theme.month.moreViewTitle.padding;
+        styles.listPadding = theme.month.moreViewList.padding;
+        listHeight = 'calc(100%';
+
+        if (parseInt(styles.titleHeight, 10)) {
+            listHeight += ' - ' + styles.titleHeight;
+        }
+        if (parseInt(styles.titleMarginBottom, 10)) {
+            listHeight += ' - ' + styles.titleMarginBottom;
+        }
+        listHeight += ')';
+
+        styles.listHeight = listHeight;
+    }
+
+    return styles;
+};
+
+module.exports = More;
+
+
+/***/ }),
+
+/***/ "./src/js/view/month/weekdayInMonth.js":
+/*!*********************************************!*\
+  !*** ./src/js/view/month/weekdayInMonth.js ***!
+  \*********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/**
+ * @fileoverview Monthday in month view
+ * @author NHN FE Development Lab <dl_javascript@nhn.com>
+ */
+
+
+var util = __webpack_require__(/*! tui-code-snippet */ "tui-code-snippet");
+var config = __webpack_require__(/*! ../../config */ "./src/js/config.js"),
+    common = __webpack_require__(/*! ../../common/common.js */ "./src/js/common/common.js"),
+    domutil = __webpack_require__(/*! ../../common/domutil */ "./src/js/common/domutil.js"),
+    View = __webpack_require__(/*! ../../view/view */ "./src/js/view/view.js"),
+    Weekday = __webpack_require__(/*! ../weekday */ "./src/js/view/weekday.js"),
+    baseTmpl = __webpack_require__(/*! ../template/month/weekdayInMonth.hbs */ "./src/js/view/template/month/weekdayInMonth.hbs"),
+    scheduleTmpl = __webpack_require__(/*! ../template/month/weekdayInMonthSchedule.hbs */ "./src/js/view/template/month/weekdayInMonthSchedule.hbs");
+var mfloor = Math.floor,
+    mmin = Math.min;
+
+/**
+ * @constructor
+ * @extends {Weekday}
+ * @param {object} options - options for WeekdayInWeek view
+ * @param {number} [options.heightPercent] - height percent of view
+ * @param {number} [options.containerButtonGutter=8] - free space at bottom to
+ *  make create easy.
+ * @param {number} [options.scheduleHeight=18] - height of each schedule block.
+ * @param {number} [options.scheduleGutter=2] - gutter height of each schedule block.
+ * @param {HTMLDIVElement} container - DOM element to use container for this
+ *  view.
+ */
+function WeekdayInMonth(options, container) {
+    Weekday.call(this, options, container);
+    container.style.height = options.heightPercent + '%';
+}
+
+util.inherit(WeekdayInMonth, Weekday);
+
+/**
+ * Get schedule container element's bound properly by override
+ *
+ * View#getViewBound.
+ * @override
+ */
+WeekdayInMonth.prototype.getViewBound = function() {
+    var bound = View.prototype.getViewBound.call(this);
+
+    return bound;
+};
+
+/**
+ * Get limit index of schedule block in current view
+ * @param {number} panelHeight - panel's height for pre-calculation
+ * @returns {number} limit index
+ */
+WeekdayInMonth.prototype._getRenderLimitIndex = function(panelHeight) {
+    var opt = this.options;
+    var containerHeight = panelHeight || this.getViewBound().height;
+    var gridHeaderHeight = util.pick(opt, 'grid', 'header', 'height') || 0;
+    var gridFooterHeight = util.pick(opt, 'grid', 'footer', 'height') || 0;
+    var visibleScheduleCount = opt.visibleScheduleCount || 0;
+    var count;
+
+    containerHeight -= (gridHeaderHeight + gridFooterHeight);
+
+    count = mfloor(containerHeight / (opt.scheduleHeight + opt.scheduleGutter));
+
+    if (!visibleScheduleCount) {
+        visibleScheduleCount = count;
+    }
+
+    return mmin(count, visibleScheduleCount); // subtraction for '+n' label block
+};
+
+/**
+ * @override
+ * @param {object} viewModel - schedules view models
+ */
+WeekdayInMonth.prototype.getBaseViewModel = function(viewModel) {
+    var opt = this.options,
+        gridHeaderHeight = util.pick(opt, 'grid', 'header', 'height') || 0,
+        gridFooterHeight = util.pick(opt, 'grid', 'footer', 'height') || 0,
+        renderLimitIdx = this._getRenderLimitIndex() + 1,
+        exceedDate = this.getExceedDate(renderLimitIdx, viewModel.eventsInDateRange, viewModel.range),
+        styles = this._getStyles(viewModel.theme);
+    var baseViewModel;
+
+    viewModel = util.extend({
+        exceedDate: exceedDate
+    }, viewModel);
+
+    baseViewModel = Weekday.prototype.getBaseViewModel.call(this, viewModel);
+
+    baseViewModel = util.extend({
+        matrices: viewModel.eventsInDateRange,
+        gridHeaderHeight: gridHeaderHeight,
+        gridFooterHeight: gridFooterHeight,
+        renderLimitIdx: renderLimitIdx,
+        isReadOnly: opt.isReadOnly,
+        styles: styles
+    }, baseViewModel);
+
+    return baseViewModel;
+};
+
+/**
+ * @override
+ * @param {object} viewModel - schedules view models
+ */
+WeekdayInMonth.prototype.render = function(viewModel) {
+    var container = this.container,
+        baseViewModel = this.getBaseViewModel(viewModel),
+        scheduleContainer;
+
+    if (!this.options.visibleWeeksCount) {
+        setIsOtherMonthFlag(baseViewModel.dates, this.options.renderMonth, viewModel.theme);
+    }
+
+    container.innerHTML = baseTmpl(baseViewModel);
+
+    scheduleContainer = domutil.find(
+        config.classname('.weekday-schedules'),
+        container
+    );
+
+    if (!scheduleContainer) {
+        return;
+    }
+
+    scheduleContainer.innerHTML = scheduleTmpl(baseViewModel);
+
+    common.setAutoEllipsis(
+        config.classname('.weekday-schedule-title'),
+        container,
+        true
+    );
+};
+
+WeekdayInMonth.prototype._beforeDestroy = function() {
+};
+
+/**
+ * Get the styles from theme
+ * @param {Theme} theme - theme instance
+ * @returns {object} styles - styles object
+ */
+WeekdayInMonth.prototype._getStyles = function(theme) {
+    var styles = {};
+
+    if (theme) {
+        styles.borderTop = theme.common.border;
+        styles.borderLeft = theme.common.border;
+        styles.fontSize = theme.month.day.fontSize;
+        styles.borderRadius = theme.month.schedule.borderRadius;
+        styles.marginLeft = theme.month.schedule.marginLeft;
+        styles.marginRight = theme.month.schedule.marginRight;
+        styles.scheduleBulletTop = this.options.scheduleHeight / 3;
+    }
+
+    return styles;
+};
+
+/**
+ * 현재 달이 아닌 날짜에 대해 isOtherMonth = true 플래그를 추가한다.
+ * @param {Array} dates - 날짜정보 배열
+ * @param {TZDate} renderMonth - 현재 렌더링중인 월 (YYYYMM)
+ * @param {Theme} theme - theme instance
+ */
+function setIsOtherMonthFlag(dates, renderMonth, theme) {
+    var month = renderMonth.getMonth() + 1;
+
+    util.forEach(dates, function(dateObj) {
+        var isOtherMonth = dateObj.month !== month;
+        dateObj.isOtherMonth = isOtherMonth;
+
+        if (isOtherMonth) {
+            dateObj.color = Weekday.prototype._getDayNameColor(theme, dateObj.day, dateObj.isToday, isOtherMonth);
+        }
+    });
+}
+
+module.exports = WeekdayInMonth;
+
+
+/***/ }),
+
+/***/ "./src/js/view/popup/scheduleCreationPopup.js":
+/*!****************************************************!*\
+  !*** ./src/js/view/popup/scheduleCreationPopup.js ***!
+  \****************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/**
+ * @fileoverview Floating layer for writing new schedules
+ * @author NHN FE Development Lab <dl_javascript@nhn.com>
+ */
+
+
+var View = __webpack_require__(/*! ../../view/view */ "./src/js/view/view.js");
+var FloatingLayer = __webpack_require__(/*! ../../common/floatingLayer */ "./src/js/common/floatingLayer.js");
+var util = __webpack_require__(/*! tui-code-snippet */ "tui-code-snippet");
+var DatePicker = __webpack_require__(/*! tui-date-picker */ "tui-date-picker");
+var timezone = __webpack_require__(/*! ../../common/timezone */ "./src/js/common/timezone.js");
+var config = __webpack_require__(/*! ../../config */ "./src/js/config.js");
+var domevent = __webpack_require__(/*! ../../common/domevent */ "./src/js/common/domevent.js");
+var domutil = __webpack_require__(/*! ../../common/domutil */ "./src/js/common/domutil.js");
+var common = __webpack_require__(/*! ../../common/common */ "./src/js/common/common.js");
+var datetime = __webpack_require__(/*! ../../common/datetime */ "./src/js/common/datetime.js");
+var tmpl = __webpack_require__(/*! ../template/popup/scheduleCreationPopup.hbs */ "./src/js/view/template/popup/scheduleCreationPopup.hbs");
+var TZDate = timezone.Date;
+var MAX_WEEK_OF_MONTH = 6;
+
+/**
+ * @constructor
+ * @extends {View}
+ * @param {HTMLElement} container - container element
+ * @param {Array.<Calendar>} calendars - calendar list used to create new schedule
+ * @param {boolean} usageStatistics - GA tracking options in Calendar
+ */
+function ScheduleCreationPopup(container, calendars, usageStatistics) {
+    View.call(this, container);
+    /**
+     * @type {FloatingLayer}
+     */
+    this.layer = new FloatingLayer(null, container);
+
+    /**
+     * cached view model
+     * @type {object}
+     */
+    this._viewModel = null;
+    this._selectedCal = null;
+    this._schedule = null;
+    this.calendars = calendars;
+    this._focusedDropdown = null;
+    this._usageStatistics = usageStatistics;
+    this._onClickListeners = [
+        this._selectDropdownMenuItem.bind(this),
+        this._toggleDropdownMenuView.bind(this),
+        this._closeDropdownMenuView.bind(this, null),
+        this._closePopup.bind(this),
+        this._toggleIsAllday.bind(this),
+        this._toggleIsPrivate.bind(this),
+        this._onClickSaveSchedule.bind(this)
+    ];
+
+    domevent.on(container, 'click', this._onClick, this);
+}
+
+util.inherit(ScheduleCreationPopup, View);
+
+/**
+ * Mousedown event handler for hiding popup layer when user mousedown outside of
+ * layer
+ * @param {MouseEvent} mouseDownEvent - mouse event object
+ */
+ScheduleCreationPopup.prototype._onMouseDown = function(mouseDownEvent) {
+    var target = domevent.getEventTarget(mouseDownEvent),
+        popupLayer = domutil.closest(target, config.classname('.floating-layer'));
+
+    if (popupLayer) {
+        return;
+    }
+
+    this.hide();
+};
+
+/**
+ * @override
+ */
+ScheduleCreationPopup.prototype.destroy = function() {
+    this.layer.destroy();
+    this.layer = null;
+    domevent.off(this.container, 'click', this._onClick, this);
+    domevent.off(document.body, 'mousedown', this._onMouseDown, this);
+    View.prototype.destroy.call(this);
+};
+
+/**
+ * @override
+ * Click event handler for close button
+ * @param {MouseEvent} clickEvent - mouse event object
+ */
+ScheduleCreationPopup.prototype._onClick = function(clickEvent) {
+    var target = domevent.getEventTarget(clickEvent);
+
+    util.forEach(this._onClickListeners, function(listener) {
+        return !listener(target);
+    });
+};
+
+/**
+ * Test click event target is close button, and return layer is closed(hidden)
+ * @param {HTMLElement} target click event target
+ * @returns {boolean} whether popup layer is closed or not
+ */
+ScheduleCreationPopup.prototype._closePopup = function(target) {
+    var className = config.classname('popup-close');
+
+    if (domutil.hasClass(target, className) || domutil.closest(target, '.' + className)) {
+        this.hide();
+
+        return true;
+    }
+
+    return false;
+};
+
+/**
+ * Toggle dropdown menu view, when user clicks dropdown button
+ * @param {HTMLElement} target click event target
+ * @returns {boolean} whether user clicked dropdown button or not
+ */
+ScheduleCreationPopup.prototype._toggleDropdownMenuView = function(target) {
+    var className = config.classname('dropdown-button');
+    var dropdownBtn = domutil.hasClass(target, className) ? target : domutil.closest(target, '.' + className);
+
+    if (!dropdownBtn) {
+        return false;
+    }
+
+    if (domutil.hasClass(dropdownBtn.parentNode, config.classname('open'))) {
+        this._closeDropdownMenuView(dropdownBtn.parentNode);
+    } else {
+        this._openDropdownMenuView(dropdownBtn.parentNode);
+    }
+
+    return true;
+};
+
+/**
+ * Close drop down menu
+ * @param {HTMLElement} dropdown - dropdown element that has a opened dropdown menu
+ */
+ScheduleCreationPopup.prototype._closeDropdownMenuView = function(dropdown) {
+    dropdown = dropdown || this._focusedDropdown;
+    if (dropdown) {
+        domutil.removeClass(dropdown, config.classname('open'));
+        this._focusedDropdown = null;
+    }
+};
+
+/**
+ * Open drop down menu
+ * @param {HTMLElement} dropdown - dropdown element that has a closed dropdown menu
+ */
+ScheduleCreationPopup.prototype._openDropdownMenuView = function(dropdown) {
+    domutil.addClass(dropdown, config.classname('open'));
+    this._focusedDropdown = dropdown;
+};
+
+/**
+ * If click dropdown menu item, close dropdown menu
+ * @param {HTMLElement} target click event target
+ * @returns {boolean} whether
+ */
+ScheduleCreationPopup.prototype._selectDropdownMenuItem = function(target) {
+    var itemClassName = config.classname('dropdown-menu-item');
+    var iconClassName = config.classname('icon');
+    var contentClassName = config.classname('content');
+    var selectedItem = domutil.hasClass(target, itemClassName) ? target : domutil.closest(target, '.' + itemClassName);
+    var bgColor, title, dropdown, dropdownBtn;
+
+    if (!selectedItem) {
+        return false;
+    }
+
+    bgColor = domutil.find('.' + iconClassName, selectedItem).style.backgroundColor || 'transparent';
+    title = domutil.find('.' + contentClassName, selectedItem).innerHTML;
+
+    dropdown = domutil.closest(selectedItem, config.classname('.dropdown'));
+    dropdownBtn = domutil.find(config.classname('.dropdown-button'), dropdown);
+    domutil.find('.' + contentClassName, dropdownBtn).innerText = title;
+
+    if (domutil.hasClass(dropdown, config.classname('section-calendar'))) {
+        domutil.find('.' + iconClassName, dropdownBtn).style.backgroundColor = bgColor;
+        this._selectedCal = common.find(this.calendars, function(cal) {
+            return cal.id === domutil.getData(selectedItem, 'calendarId');
+        });
+    }
+
+    domutil.removeClass(dropdown, config.classname('open'));
+
+    return true;
+};
+
+/**
+ * Toggle allday checkbox state
+ * @param {HTMLElement} target click event target
+ * @returns {boolean} whether event target is allday section or not
+ */
+ScheduleCreationPopup.prototype._toggleIsAllday = function(target) {
+    var className = config.classname('section-allday');
+    var alldaySection = domutil.hasClass(target, className) ? target : domutil.closest(target, '.' + className);
+    var checkbox;
+
+    if (alldaySection) {
+        checkbox = domutil.find(config.classname('.checkbox-square'), alldaySection);
+        checkbox.checked = !checkbox.checked;
+
+        return true;
+    }
+
+    return false;
+};
+
+/**
+ * Toggle private button
+ * @param {HTMLElement} target click event target
+ * @returns {boolean} whether event target is private section or not
+ */
+ScheduleCreationPopup.prototype._toggleIsPrivate = function(target) {
+    var className = config.classname('section-private');
+    var privateSection = domutil.hasClass(target, className) ? target : domutil.closest(target, '.' + className);
+
+    if (privateSection) {
+        if (domutil.hasClass(privateSection, config.classname('public'))) {
+            domutil.removeClass(privateSection, config.classname('public'));
+        } else {
+            domutil.addClass(privateSection, config.classname('public'));
+        }
+
+        return true;
+    }
+
+    return false;
+};
+
+/**
+ * Save new schedule if user clicked save button
+ * @emits ScheduleCreationPopup#saveSchedule
+ * @param {HTMLElement} target click event target
+ * @returns {boolean} whether save button is clicked or not
+ */
+// eslint-disable-next-line complexity
+ScheduleCreationPopup.prototype._onClickSaveSchedule = function(target) {
+    var className = config.classname('popup-save');
+    var cssPrefix = config.cssPrefix;
+    var title;
+    var startDate;
+    var endDate;
+    var rangeDate;
+    var form;
+    var isAllDay;
+
+    if (!domutil.hasClass(target, className) && !domutil.closest(target, '.' + className)) {
+        return false;
+    }
+
+    title = domutil.get(cssPrefix + 'schedule-title');
+    startDate = new TZDate(this.rangePicker.getStartDate()).toLocalTime();
+    endDate = new TZDate(this.rangePicker.getEndDate()).toLocalTime();
+
+    if (!this._validateForm(title, startDate, endDate)) {
+        if (!title.value) {
+            title.focus();
+        }
+
+        return false;
+    }
+
+    isAllDay = !!domutil.get(cssPrefix + 'schedule-allday').checked;
+    rangeDate = this._getRangeDate(startDate, endDate, isAllDay);
+
+    form = {
+        calendarId: this._selectedCal ? this._selectedCal.id : null,
+        title: title,
+        location: domutil.get(cssPrefix + 'schedule-location'),
+        start: rangeDate.start,
+        end: rangeDate.end,
+        isAllDay: isAllDay,
+        state: domutil.get(cssPrefix + 'schedule-state').innerText,
+        isPrivate: !domutil.hasClass(domutil.get(cssPrefix + 'schedule-private'), config.classname('public'))
+    };
+
+    if (this._isEditMode) {
+        this._onClickUpdateSchedule(form);
+    } else {
+        this._onClickCreateSchedule(form);
+    }
+
+    this.hide();
+
+    return true;
+};
+
+/**
+ * @override
+ * @param {object} viewModel - view model from factory/monthView
+ */
+ScheduleCreationPopup.prototype.render = function(viewModel) {
+    var calendars = this.calendars;
+    var layer = this.layer;
+    var self = this;
+    var boxElement, guideElements;
+
+    viewModel.zIndex = this.layer.zIndex + 5;
+    viewModel.calendars = calendars;
+    if (calendars.length) {
+        viewModel.selectedCal = this._selectedCal = calendars[0];
+    }
+
+    this._isEditMode = viewModel.schedule && viewModel.schedule.id;
+    if (this._isEditMode) {
+        boxElement = viewModel.target;
+        viewModel = this._makeEditModeData(viewModel);
+    } else {
+        this.guide = viewModel.guide;
+        guideElements = this._getGuideElements(this.guide);
+        boxElement = guideElements.length ? guideElements[0] : null;
+    }
+    layer.setContent(tmpl(viewModel));
+    this._createDatepicker(viewModel.start, viewModel.end, viewModel.isAllDay);
+    layer.show();
+
+    if (boxElement) {
+        this._setPopupPositionAndArrowDirection(boxElement.getBoundingClientRect());
+    }
+
+    util.debounce(function() {
+        domevent.on(document.body, 'mousedown', self._onMouseDown, self);
+    })();
+};
+
+/**
+ * Make view model for edit mode
+ * @param {object} viewModel - original view model from 'beforeCreateEditPopup'
+ * @returns {object} - edit mode view model
+ */
+ScheduleCreationPopup.prototype._makeEditModeData = function(viewModel) {
+    var schedule = viewModel.schedule;
+    var title, isPrivate, location, startDate, endDate, isAllDay, state;
+    var raw = schedule.raw || {};
+    var calendars = this.calendars;
+
+    var id = schedule.id;
+    title = schedule.title;
+    isPrivate = raw['class'] === 'private';
+    location = schedule.location;
+    startDate = schedule.start;
+    endDate = schedule.end;
+    isAllDay = schedule.isAllDay;
+    state = schedule.state;
+
+    viewModel.selectedCal = this._selectedCal = common.find(this.calendars, function(cal) {
+        return cal.id === viewModel.schedule.calendarId;
+    });
+
+    this._schedule = schedule;
+
+    return {
+        id: id,
+        selectedCal: this._selectedCal,
+        calendars: calendars,
+        title: title,
+        isPrivate: isPrivate,
+        location: location,
+        isAllDay: isAllDay,
+        state: state,
+        start: startDate,
+        end: endDate,
+        raw: {
+            class: isPrivate ? 'private' : 'public'
+        },
+        zIndex: this.layer.zIndex + 5,
+        isEditMode: this._isEditMode
+    };
+};
+
+/**
+ * Set popup position and arrow direction to apear near guide element
+ * @param {MonthCreationGuide|TimeCreationGuide|DayGridCreationGuide} guideBound - creation guide element
+ */
+ScheduleCreationPopup.prototype._setPopupPositionAndArrowDirection = function(guideBound) {
+    var layer = domutil.find(config.classname('.popup'), this.layer.container);
+    var layerSize = {
+        width: layer.offsetWidth,
+        height: layer.offsetHeight
+    };
+    var containerBound = this.container.getBoundingClientRect();
+    var pos = this._calcRenderingData(layerSize, containerBound, guideBound);
+
+    this.layer.setPosition(pos.x, pos.y);
+    this._setArrowDirection(pos.arrow);
+};
+
+/**
+ * Get guide elements from creation guide object
+ * It is used to calculate rendering position of popup
+ * It will be disappeared when hiding popup
+ * @param {MonthCreationGuide|TimeCreationGuide|AlldayCreationGuide} guide - creation guide
+ * @returns {Array.<HTMLElement>} creation guide element
+ */
+ScheduleCreationPopup.prototype._getGuideElements = function(guide) {
+    var guideElements = [];
+    var i = 0;
+
+    if (guide.guideElement) {
+        guideElements.push(guide.guideElement);
+    } else if (guide.guideElements) {
+        for (; i < MAX_WEEK_OF_MONTH; i += 1) {
+            if (guide.guideElements[i]) {
+                guideElements.push(guide.guideElements[i]);
+            }
+        }
+    }
+
+    return guideElements;
+};
+
+/**
+ * Get guide element's bound data which only includes top, right, bottom, left
+ * @param {Array.<HTMLElement>} guideElements - creation guide elements
+ * @returns {Object} - popup bound data
+ */
+ScheduleCreationPopup.prototype._getBoundOfFirstRowGuideElement = function(guideElements) {
+    var bound;
+
+    if (!guideElements.length) {
+        return null;
+    }
+
+    bound = guideElements[0].getBoundingClientRect();
+
+    return {
+        top: bound.top,
+        left: bound.left,
+        bottom: bound.bottom,
+        right: bound.right
+    };
+};
+
+/**
+ * Get calculate rendering positions of y and arrow direction by guide block elements
+ * @param {number} guideBoundTop - guide block's top
+ * @param {number} guideBoundBottom - guide block's bottom
+ * @param {number} layerHeight - popup layer's height
+ * @param {number} containerTop - container's top
+ * @param {number} containerBottom - container's bottom
+ * @returns {YAndArrowDirection} y and arrowDirection
+ */
+ScheduleCreationPopup.prototype._getYAndArrowDirection = function(
+    guideBoundTop,
+    guideBoundBottom,
+    layerHeight,
+    containerTop,
+    containerBottom
+) {
+    var arrowDirection = 'arrow-bottom';
+    var MARGIN = 3;
+    var y = guideBoundTop - layerHeight;
+
+    if (y < containerTop) {
+        y = guideBoundBottom - containerTop + MARGIN;
+        arrowDirection = 'arrow-top';
+    } else {
+        y = y - containerTop - MARGIN;
+    }
+
+    if (y + layerHeight > containerBottom) {
+        y = containerBottom - layerHeight - containerTop - MARGIN;
+    }
+
+    /**
+     * @typedef {Object} YAndArrowDirection
+     * @property {number} y - top position of popup layer
+     * @property {string} [arrowDirection] - direction of popup arrow
+     */
+    return {
+        y: y,
+        arrowDirection: arrowDirection
+    };
+};
+
+/**
+* Get calculate rendering x position and arrow left by guide block elements
+* @param {number} guideBoundLeft - guide block's left
+* @param {number} guideBoundRight - guide block's right
+* @param {number} layerWidth - popup layer's width
+* @param {number} containerLeft - container's left
+* @param {number} containerRight - container's right
+* @returns {XAndArrowLeft} x and arrowLeft
+*/
+ScheduleCreationPopup.prototype._getXAndArrowLeft = function(
+    guideBoundLeft,
+    guideBoundRight,
+    layerWidth,
+    containerLeft,
+    containerRight
+) {
+    var guideHorizontalCenter = (guideBoundLeft + guideBoundRight) / 2;
+    var x = guideHorizontalCenter - (layerWidth / 2);
+    var ARROW_WIDTH_HALF = 8;
+    var arrowLeft;
+
+    if (x + layerWidth > containerRight) {
+        x = guideBoundRight - layerWidth + ARROW_WIDTH_HALF;
+        arrowLeft = guideHorizontalCenter - x;
+    } else {
+        x += ARROW_WIDTH_HALF;
+    }
+
+    if (x < containerLeft) {
+        x = 0;
+        arrowLeft = guideHorizontalCenter - containerLeft - ARROW_WIDTH_HALF;
+    } else {
+        x = x - containerLeft - ARROW_WIDTH_HALF;
+    }
+
+    /**
+     * @typedef {Object} XAndArrowLeft
+     * @property {number} x - left position of popup layer
+     * @property {numbe3er} arrowLeft - relative position of popup arrow, if it is not set, arrow appears on the middle of popup
+     */
+    return {
+        x: x,
+        arrowLeft: arrowLeft
+    };
+};
+
+/**
+ * Calculate rendering position usering guide elements
+ * @param {{width: {number}, height: {number}}} layerSize - popup layer's width and height
+ * @param {{top: {number}, left: {number}, right: {number}, bottom: {number}}} containerBound - width and height of the upper layer, that acts as a border of popup
+ * @param {{top: {number}, left: {number}, right: {number}, bottom: {number}}} guideBound - guide element bound data
+ * @returns {PopupRenderingData} rendering position of popup and popup arrow
+ */
+ScheduleCreationPopup.prototype._calcRenderingData = function(layerSize, containerBound, guideBound) {
+    var yPosInfo = this._getYAndArrowDirection(
+        guideBound.top,
+        guideBound.bottom,
+        layerSize.height,
+        containerBound.top,
+        containerBound.bottom
+    );
+    var xPosInfo = this._getXAndArrowLeft(
+        guideBound.left,
+        guideBound.right,
+        layerSize.width,
+        containerBound.left,
+        containerBound.right
+    );
+
+    /**
+     * @typedef {Object} PopupRenderingData
+     * @property {number} x - left position
+     * @property {number} y - top position
+     * @property {string} arrow.direction - direction of popup arrow
+     * @property {number} [arrow.position] - relative position of popup arrow, if it is not set, arrow appears on the middle of popup
+     */
+    return {
+        x: xPosInfo.x,
+        y: yPosInfo.y,
+        arrow: {
+            direction: yPosInfo.arrowDirection,
+            position: xPosInfo.arrowLeft
+        }
+    };
+};
+
+/**
+ * Set arrow's direction and position
+ * @param {Object} arrow rendering data for popup arrow
+ */
+ScheduleCreationPopup.prototype._setArrowDirection = function(arrow) {
+    var direction = arrow.direction || 'arrow-bottom';
+    var arrowEl = domutil.get(config.classname('popup-arrow'));
+    var borderElement = domutil.find(config.classname('.popup-arrow-border', arrowEl));
+
+    if (direction !== config.classname('arrow-bottom')) {
+        domutil.removeClass(arrowEl, config.classname('arrow-bottom'));
+        domutil.addClass(arrowEl, config.classname(direction));
+    }
+
+    if (arrow.position) {
+        borderElement.style.left = arrow.position + 'px';
+    }
+};
+
+/**
+ * Create date range picker using start date and end date
+ * @param {TZDate} start - start date
+ * @param {TZDate} end - end date
+ * @param {boolean} isAllDay - isAllDay
+ */
+ScheduleCreationPopup.prototype._createDatepicker = function(start, end, isAllDay) {
+    var cssPrefix = config.cssPrefix;
+
+    this.rangePicker = DatePicker.createRangePicker({
+        startpicker: {
+            date: new TZDate(start).toDate(),
+            input: '#' + cssPrefix + 'schedule-start-date',
+            container: '#' + cssPrefix + 'startpicker-container'
+        },
+        endpicker: {
+            date: new TZDate(end).toDate(),
+            input: '#' + cssPrefix + 'schedule-end-date',
+            container: '#' + cssPrefix + 'endpicker-container'
+        },
+        format: isAllDay ? 'yyyy-MM-dd' : 'yyyy-MM-dd HH:mm',
+        timepicker: isAllDay ? null : {
+            showMeridiem: false,
+            usageStatistics: this._usageStatistics
+        },
+        usageStatistics: this._usageStatistics
+    });
+};
+
+/**
+ * Hide layer
+ */
+ScheduleCreationPopup.prototype.hide = function() {
+    this.layer.hide();
+
+    if (this.guide) {
+        this.guide.clearGuideElement();
+        this.guide = null;
+    }
+
+    domevent.off(document.body, 'mousedown', this._onMouseDown, this);
+};
+
+/**
+ * refresh layer
+ */
+ScheduleCreationPopup.prototype.refresh = function() {
+    if (this._viewModel) {
+        this.layer.setContent(this.tmpl(this._viewModel));
+    }
+};
+
+/**
+ * Set calendar list
+ * @param {Array.<Calendar>} calendars - calendar list
+ */
+ScheduleCreationPopup.prototype.setCalendars = function(calendars) {
+    this.calendars = calendars || [];
+};
+
+/**
+ * Validate the form
+ * @param {string} title title of then entered schedule
+ * @param {TZDate} startDate start date time from range picker
+ * @param {TZDate} endDate end date time from range picker
+ * @returns {boolean} Returns false if the form is not valid for submission.
+ */
+ScheduleCreationPopup.prototype._validateForm = function(title, startDate, endDate) {
+    if (!title.value) {
+        return false;
+    }
+
+    if (!startDate && !endDate) {
+        return false;
+    }
+
+    if (datetime.compare(startDate, endDate) === 1) {
+        return false;
+    }
+
+    return true;
+};
+
+/**
+ * Get range date from range picker
+ * @param {TZDate} startDate start date time from range picker
+ * @param {TZDate} endDate end date time from range picker
+ * @param {boolean} isAllDay whether it is an all-day schedule
+ * @returns {RangeDate} Returns the start and end time data that is the range date
+ */
+ScheduleCreationPopup.prototype._getRangeDate = function(startDate, endDate, isAllDay) {
+    var start = isAllDay ? datetime.start(startDate) : startDate;
+    var end = isAllDay ? datetime.renderEnd(startDate, endDate) : endDate;
+
+    /**
+     * @typedef {object} RangeDate
+     * @property {TZDate} start start time
+     * @property {TZDate} end end time
+     */
+    return {
+        start: new TZDate(start),
+        end: new TZDate(end)
+    };
+};
+
+/**
+ * Request schedule model creation to controller by custom schedules.
+ * @fires {ScheduleCreationPopup#beforeUpdateSchedule}
+ * @param {{
+    calendarId: {string},
+    title: {string},
+    location: {string},
+    start: {TZDate},
+    end: {TZDate},
+    isAllDay: {boolean},
+    state: {string},
+    isPrivate: {boolean}
+  }} form schedule input form data
+*/
+ScheduleCreationPopup.prototype._onClickUpdateSchedule = function(form) {
+    var changes = common.getScheduleChanges(
+        this._schedule,
+        ['calendarId', 'title', 'location', 'start', 'end', 'isAllDay', 'state'],
+        {
+            calendarId: form.calendarId,
+            title: form.title.value,
+            location: form.location.value,
+            start: form.start,
+            end: form.end,
+            isAllDay: form.isAllDay,
+            state: form.state
+        }
+    );
+
+    /**
+     * @event ScheduleCreationPopup#beforeUpdateSchedule
+     * @type {object}
+     * @property {Schedule} schedule - schedule object to be updated
+     */
+    this.fire('beforeUpdateSchedule', {
+        schedule: util.extend({
+            raw: {
+                class: form.isPrivate ? 'private' : 'public'
+            }
+        }, this._schedule),
+        changes: changes,
+        start: form.start,
+        end: form.end,
+        calendar: this._selectedCal,
+        triggerEventName: 'click'
+    });
+};
+
+/**
+ * Request the controller to update the schedule model according to the custom schedule.
+ * @fires {ScheduleCreationPopup#beforeCreateSchedule}
+ * @param {{
+    calendarId: {string},
+    title: {string},
+    location: {string},
+    start: {TZDate},
+    end: {TZDate},
+    isAllDay: {boolean},
+    state: {string}
+  }} form schedule input form data
+ */
+ScheduleCreationPopup.prototype._onClickCreateSchedule = function(form) {
+    /**
+     * @event ScheduleCreationPopup#beforeCreateSchedule
+     * @type {object}
+     * @property {Schedule} schedule - new schedule instance to be added
+     */
+    this.fire('beforeCreateSchedule', {
+        calendarId: form.calendarId,
+        title: form.title.value,
+        location: form.location.value,
+        raw: {
+            class: form.isPrivate ? 'private' : 'public'
+        },
+        start: form.start,
+        end: form.end,
+        isAllDay: form.isAllDay,
+        state: form.state
+    });
+};
+
+module.exports = ScheduleCreationPopup;
+
+
+/***/ }),
+
+/***/ "./src/js/view/popup/scheduleDetailPopup.js":
+/*!**************************************************!*\
+  !*** ./src/js/view/popup/scheduleDetailPopup.js ***!
+  \**************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/**
+ * @fileoverview Floating layer for showing detail schedule
+ * @author NHN FE Development Lab <dl_javascript@nhn.com>
+ */
+
+
+var View = __webpack_require__(/*! ../../view/view */ "./src/js/view/view.js");
+var FloatingLayer = __webpack_require__(/*! ../../common/floatingLayer */ "./src/js/common/floatingLayer.js");
+var util = __webpack_require__(/*! tui-code-snippet */ "tui-code-snippet");
+var config = __webpack_require__(/*! ../../config */ "./src/js/config.js"),
+    domevent = __webpack_require__(/*! ../../common/domevent */ "./src/js/common/domevent.js"),
+    domutil = __webpack_require__(/*! ../../common/domutil */ "./src/js/common/domutil.js");
+var tmpl = __webpack_require__(/*! ../template/popup/scheduleDetailPopup.hbs */ "./src/js/view/template/popup/scheduleDetailPopup.hbs");
+
+/**
+ * @constructor
+ * @extends {View}
+ * @param {HTMLElement} container - container element
+ */
+function ScheduleDetailPopup(container) {
+    View.call(this, container);
+    /**
+     * @type {FloatingLayer}
+     */
+    this.layer = new FloatingLayer(null, container);
+
+    /**
+     * cached view model
+     * @type {object}
+     */
+    this._viewModel = null;
+    this._schedule = null;
+    this._calendar = null;
+
+    domevent.on(container, 'click', this._onClick, this);
+}
+
+util.inherit(ScheduleDetailPopup, View);
+
+/**
+ * Mousedown event handler for hiding popup layer when user mousedown outside of
+ * layer
+ * @param {MouseEvent} mouseDownEvent - mouse event object
+ */
+ScheduleDetailPopup.prototype._onMouseDown = function(mouseDownEvent) {
+    var target = domevent.getEventTarget(mouseDownEvent),
+        popupLayer = domutil.closest(target, config.classname('.floating-layer'));
+
+    if (popupLayer) {
+        return;
+    }
+
+    this.hide();
+};
+
+/**
+ * @override
+ */
+ScheduleDetailPopup.prototype.destroy = function() {
+    this.layer.destroy();
+    this.layer = null;
+    domevent.off(this.container, 'click', this._onClick, this);
+    domevent.off(document.body, 'mousedown', this._onMouseDown, this);
+    View.prototype.destroy.call(this);
+};
+
+/**
+ * @override
+ * Click event handler for close button
+ * @param {MouseEvent} clickEvent - mouse event object
+ */
+ScheduleDetailPopup.prototype._onClick = function(clickEvent) {
+    var target = domevent.getEventTarget(clickEvent);
+
+    this._onClickEditSchedule(target);
+
+    this._onClickDeleteSchedule(target);
+};
+
+/**
+ * @fires ScheduleDetailPopup#clickEditSchedule
+ * @param {HTMLElement} target - event target
+ */
+ScheduleDetailPopup.prototype._onClickEditSchedule = function(target) {
+    var className = config.classname('popup-edit');
+
+    if (domutil.hasClass(target, className) || domutil.closest(target, '.' + className)) {
+        this.fire('beforeUpdateSchedule', {
+            schedule: this._schedule,
+            triggerEventName: 'click',
+            target: this._scheduleEl
+        });
+
+        this.hide();
+    }
+};
+
+/**
+ * @fires ScheduleDetailPopup#clickEditSchedule
+ * @param {HTMLElement} target - event target
+ */
+ScheduleDetailPopup.prototype._onClickDeleteSchedule = function(target) {
+    var className = config.classname('popup-delete');
+
+    if (domutil.hasClass(target, className) || domutil.closest(target, '.' + className)) {
+        this.fire('beforeDeleteSchedule', {
+            schedule: this._schedule
+        });
+
+        this.hide();
+    }
+};
+
+/**
+ * @override
+ * @param {object} viewModel - view model from factory/monthView
+ */
+ScheduleDetailPopup.prototype.render = function(viewModel) {
+    var layer = this.layer;
+    var self = this;
+
+    layer.setContent(tmpl({
+        schedule: viewModel.schedule,
+        calendar: viewModel.calendar
+    }));
+    layer.show();
+    this._setPopupPositionAndArrowDirection(viewModel.event);
+
+    this._schedule = viewModel.schedule;
+    this._calendar = viewModel.calendar;
+
+    util.debounce(function() {
+        domevent.on(document.body, 'mousedown', self._onMouseDown, self);
+    })();
+};
+
+/**
+ * Set popup position and arrow direction to apear near guide element
+ * @param {Event} event - creation guide element
+ */
+ScheduleDetailPopup.prototype._setPopupPositionAndArrowDirection = function(event) {
+    var layer = domutil.find(config.classname('.popup'), this.layer.container);
+    var layerSize = {
+        width: layer.offsetWidth,
+        height: layer.offsetHeight
+    };
+
+    var containerBound = this.container.getBoundingClientRect();
+    var scheduleEl = domevent.getEventTarget(event);
+    var blockEl = domutil.closest(scheduleEl, config.classname('.time-date-schedule-block'))
+        || domutil.closest(scheduleEl, config.classname('.weekday-schedule'))
+        || scheduleEl;
+    var scheduleBound = blockEl.getBoundingClientRect();
+    var pos;
+
+    this._scheduleEl = blockEl;
+
+    pos = this._calcRenderingData(layerSize, containerBound, scheduleBound);
+    this.layer.setPosition(pos.x, pos.y);
+    this._setArrowDirection(pos.arrow);
+};
+
+/**
+ * Get calculate rendering positions of y and arrow top by schedule block elements
+ * @param {number} scheduleBoundTop - schedule block's top
+ * @param {number} scheduleBoundBottom - schedule block's bottom
+ * @param {number} layerHeight - popup layer's height
+ * @param {number} containerTop - container's top
+ * @param {number} containerBottom - container's bottom
+ * @returns {YAndArrowTop} y and arrowTop
+ */
+ScheduleDetailPopup.prototype._getYAndArrowTop = function(
+    scheduleBoundTop,
+    scheduleBoundBottom,
+    layerHeight,
+    containerTop,
+    containerBottom
+) {
+    var ARROW_WIDTH_HALF = 8;
+    var scheduleVerticalCenter, y, arrowTop;
+
+    scheduleBoundTop = scheduleBoundTop < 0 ? 0 : scheduleBoundTop;
+    scheduleVerticalCenter = (scheduleBoundTop + scheduleBoundBottom) / 2;
+    y = scheduleVerticalCenter - (layerHeight / 2);
+
+    if (y < containerTop) {
+        y = 0;
+        arrowTop = scheduleVerticalCenter - containerTop - ARROW_WIDTH_HALF;
+    } else if (y + layerHeight > containerBottom) {
+        y = Math.max(containerBottom - layerHeight - containerTop, 0);
+        arrowTop = scheduleVerticalCenter - y - containerTop - ARROW_WIDTH_HALF;
+    } else {
+        y -= containerTop;
+    }
+
+    if (arrowTop < 0 || arrowTop > layerHeight) {
+        arrowTop = null;
+    }
+
+    /**
+     * @typedef {Object} YAndArrowTop
+     * @property {number} y - top position of popup layer
+     * @property {number} [arrowTop] - relative position of popup arrow, if it is not set, arrow appears on the middle of popup
+     */
+    return {
+        y: y,
+        arrowTop: arrowTop
+    };
+};
+
+/**
+ * Get calculate rendering x position and arrow direction by schedule block elements
+ * @param {number} scheduleBoundLeft - schedule block's left
+ * @param {number} scheduleBoundRight - schedule block's right
+ * @param {number} layerWidth - popup layer's width
+ * @param {number} containerLeft - container's left
+ * @param {number} containerRight - container's right
+ * @returns {XAndArrowDirection} x and arrowDirection
+ */
+ScheduleDetailPopup.prototype._getXAndArrowDirection = function(
+    scheduleBoundLeft,
+    scheduleBoundRight,
+    layerWidth,
+    containerLeft,
+    containerRight
+) {
+    var arrowDirection = 'arrow-left';
+    var x = scheduleBoundRight;
+    var MARGIN = 4;
+
+    if (x + layerWidth > containerRight) {
+        arrowDirection = 'arrow-right';
+        x = scheduleBoundLeft - layerWidth - MARGIN;
+    } else {
+        x += MARGIN;
+    }
+
+    if (x < containerLeft) {
+        x = 0;
+    } else {
+        x -= containerLeft;
+    }
+
+    /**
+     * @typedef {Object} XAndArrowDirection
+     * @property {number} x - left position of popup layer
+     * @property {string} arrowDirection - direction of popup arrow
+     */
+    return {
+        x: x,
+        arrowDirection: arrowDirection
+    };
+};
+
+/**
+ * Calculate rendering position usering guide elements
+ * @param {{width: {number}, height: {number}}} layerSize - popup layer's width and height
+ * @param {{top: {number}, left: {number}, right: {number}, bottom: {number}}} containerBound - width and height of the upper layer, that acts as a border of popup
+ * @param {{top: {number}, left: {number}, right: {number}, bottom: {number}}} scheduleBound - guide element bound data
+ * @returns {PopupRenderingData} rendering position of popup and popup arrow
+ */
+ScheduleDetailPopup.prototype._calcRenderingData = function(layerSize, containerBound, scheduleBound) {
+    var yPosInfo = this._getYAndArrowTop(
+        scheduleBound.top,
+        scheduleBound.bottom,
+        layerSize.height,
+        containerBound.top,
+        containerBound.bottom
+    );
+    var xPosInfo = this._getXAndArrowDirection(
+        scheduleBound.left,
+        scheduleBound.right,
+        layerSize.width,
+        containerBound.left,
+        containerBound.right
+    );
+
+    /**
+     * @typedef {Object} PopupRenderingData
+     * @property {number} x - left position
+     * @property {number} y - top position
+     * @property {string} arrow.direction - direction of popup arrow
+     * @property {number} [arrow.position] - relative position of popup arrow, if it is not set, arrow appears on the middle of popup
+     */
+    return {
+        x: xPosInfo.x,
+        y: yPosInfo.y,
+        arrow: {
+            direction: xPosInfo.arrowDirection,
+            position: yPosInfo.arrowTop
+        }
+    };
+};
+
+/**
+ * Set arrow's direction and position
+ * @param {Object} arrow rendering data for popup arrow
+ */
+ScheduleDetailPopup.prototype._setArrowDirection = function(arrow) {
+    var direction = arrow.direction || 'arrow-left';
+    var arrowEl = domutil.find(config.classname('.popup-arrow'), this.layer.container);
+    var borderElement = domutil.find(config.classname('.popup-arrow-border'), arrowEl);
+
+    if (direction !== config.classname('arrow-left')) {
+        domutil.removeClass(arrowEl, config.classname('arrow-left'));
+        domutil.addClass(arrowEl, config.classname(direction));
+    }
+
+    if (arrow.position) {
+        borderElement.style.top = arrow.position + 'px';
+    }
+};
+
+/**
+ * Hide layer
+ */
+ScheduleDetailPopup.prototype.hide = function() {
+    this.layer.hide();
+
+    if (this.guide) {
+        this.guide.clearGuideElement();
+        this.guide = null;
+    }
+
+    domevent.off(document.body, 'mousedown', this._onMouseDown, this);
+};
+
+/**
+ * refresh layer
+ */
+ScheduleDetailPopup.prototype.refresh = function() {
+    if (this._viewModel) {
+        this.layer.setContent(this.tmpl(this._viewModel));
+    }
+};
+
+module.exports = ScheduleDetailPopup;
+
+
+/***/ }),
+
+/***/ "./src/js/view/template/helper.js":
+/*!****************************************!*\
+  !*** ./src/js/view/template/helper.js ***!
+  \****************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/* eslint complexity: 0 */
+/**
+ * @fileoverview Helpers for handlebar templates.
+ * @author NHN FE Development Lab <dl_javascript@nhn.com>
+ */
+
+
+var util = __webpack_require__(/*! tui-code-snippet */ "tui-code-snippet");
+var Handlebars = __webpack_require__(/*! handlebars-template-loader/runtime */ "./node_modules/handlebars-template-loader/runtime/index.js");
+var datetime = __webpack_require__(/*! ../../common/datetime */ "./src/js/common/datetime.js");
+var common = __webpack_require__(/*! ../../common/common */ "./src/js/common/common.js");
+var config = __webpack_require__(/*! ../../config */ "./src/js/config.js");
+var mmax = Math.max;
+var SIXTY_MINUTES = 60;
+var helpers = {
+    /**
+     * Stamp supplied object
+     *
+     * Commonly use for rendering object's unique ID to rendered view
+     * @param {object} obj - object to stamp
+     * @returns {number} stamp value
+     */
+    'stamp': function(obj) {
+        return util.stamp(obj);
+    },
+
+    /**
+     * Whether supplied object are equal?
+     * @param {*} a - a
+     * @param {*} b - b
+     * @returns {boolean} result of operation
+     */
+    'equal': function(a, b) {
+        return a === b;
+    },
+
+    /**
+     * OR
+     * @param {*} a - a
+     * @param {*} b - b
+     * @returns {boolean} or
+     */
+    'or': function(a, b) {
+        return a || b;
+    },
+
+    /**
+     * AND
+     * @param {*} a - a
+     * @param {*} b - b
+     * @returns {boolean} or
+     */
+    'and': function(a, b) {
+        return a && b;
+    },
+
+    /**
+     * Compare object or apply logical operation by customizable oper parameter
+     * @param {*} a - a
+     * @param {string} oper - operator ex) '==', '<'
+     * @param {*} b - b
+     * @param {Handlebars} options - handlebar options
+     * @returns {boolean} result of operation
+     */
+    'fi': function(a, oper, b, options) {
+        switch (oper) {
+            case '==':
+                return (a == b) ? options.fn(this) : options.inverse(this);  // eslint-disable-line
+            case '===':
+                return (a === b) ? options.fn(this) : options.inverse(this);
+            case '!==':
+                return (a !== b) ? options.fn(this) : options.inverse(this);
+            case '<':
+                return (a < b) ? options.fn(this) : options.inverse(this);
+            case '||':
+                return (a || b) ? options.fn(this) : options.inverse(this);
+            default:
+                throw new Error('Not match operation');
+        }
+    },
+
+    /**
+     * Get hhmm formatted time str
+     * @param {Date} date - date object
+     * @returns {string} formatted value
+     */
+    'hhmm': function(date) {
+        return datetime.format(date, 'HH:mm');
+    },
+
+    /**
+     * Get `width` stylesheet string
+     * @param {number} width - width percentage
+     * @returns {string} css style part
+     */
+    'common-width': function(width) {
+        return getElSize(width, '%', 'width');
+    },
+
+    /**
+     * Get element left based on narrowWeekend
+     * @param {object} viewModel - view model
+     * @param {Array} grids - dates information
+     * @returns {number} element left
+     */
+    'grid-left': function(viewModel, grids) {
+        return getElLeft(viewModel, grids);
+    },
+
+    /**
+     * Get element width based on narrowWeekend
+     * @param {object} viewModel - view model
+     * @param {Array} grids - dates information
+     * @returns {number} element width
+     */
+    'grid-width': function(viewModel, grids) {
+        return getElWidth(viewModel, grids);
+    },
+
+    /**
+     * Use in time.hbs
+     * @param {ScheduleViewModel} viewModel viewModel
+     * @returns {string} element size css class
+     */
+    'time-scheduleBlock': function(viewModel) {
+        var top = getElSize(viewModel.top, 'px', 'top'),
+            left = getElSize(viewModel.left, '%', 'left'),
+            width = getElSize(viewModel.width, '%', 'width'),
+            height = getElSize(viewModel.height, 'px', 'height');
+
+        return [top, left, width, height].join(';');
+    },
+
+    'month-scheduleBlock': function(viewModel, grids, blockHeight, paddingTop) {
+        var top = getElSize(((viewModel.top - 1) * blockHeight) + paddingTop, 'px', 'top');
+        var left = getElSize(grids[viewModel.left] ? grids[viewModel.left].left : 0, '%', 'left');
+        var width = getElSize(getElWidth(viewModel, grids), '%', 'width');
+        var height = getElSize(viewModel.height, 'px', 'height');
+
+        return [top, left, width, height].join(';');
+    },
+
+    'holiday': function(day) {
+        var cssClass = '';
+
+        if (day === 0) {
+            cssClass = config.classname('holiday-sun');
+        }
+
+        if (day === 6) {
+            cssClass = config.classname('holiday-sat');
+        }
+
+        return cssClass;
+    },
+
+    /**
+     * Add supplied two parameter
+     * @param {*} a - a
+     * @param {*} b - b
+     * @returns {number} result of operation
+     */
+    'add': function(a, b) {
+        return a + b;
+    },
+
+    /**
+     * Multiply supplied two parameter
+     * @param {*} a - a
+     * @param {*} b - b
+     * @returns {number} result of operation
+     */
+    'multiply': function(a, b) {
+        return a * b;
+    },
+
+    /**
+     * Divide supplied two parameter
+     * @param {*} a - a
+     * @param {*} b - b
+     * @returns {number} result of operation
+     */
+    'divide': function(a, b) {
+        return a / b;
+    },
+
+    /**
+     * Subtract supplied two parameter
+     * @param {*} a - a
+     * @param {*} b - b
+     * @returns {number} result of operation
+     */
+    'subtract': function(a, b) {
+        return a - b;
+    },
+
+    'getRight': function(a, b) {
+        return mmax(0, 100 - (a + b));
+    },
+
+    /**
+     * Get css prefix in global configuration
+     * @returns {string} css prefix
+     */
+    'CSS_PREFIX': function() {
+        return config.cssPrefix;
+    },
+
+    'reverse': function(array) {
+        return array.slice().reverse();
+    },
+
+    /**********
+     * Default schedule template
+     **********/
+
+    'milestone-tmpl': function(model) {
+        var icon = config.classname('icon');
+        var iconName = config.classname('ic-milestone');
+
+        return '<span class="' + icon + ' ' + iconName + '"></span><span style="background-color: ' + model.bgColor + '">' + common.stripTags(model.title) + '</span>';
+    },
+
+    'milestoneTitle-tmpl': function() {
+        var className = config.classname('left-content');
+
+        return '<span class="' + className + '">Milestone</span>';
+    },
+
+    'task-tmpl': function(model) {
+        return '#' + model.title;
+    },
+
+    'taskTitle-tmpl': function() {
+        var className = config.classname('left-content');
+
+        return '<span class="' + className + '">Task</span>';
+    },
+
+    'alldayTitle-tmpl': function() {
+        var className = config.classname('left-content');
+
+        return '<span class="' + className + '">All Day</span>';
+    },
+
+    'allday-tmpl': function(model) {
+        return common.stripTags(model.title);
+    },
+
+    'time-tmpl': function(model) {
+        return common.stripTags(model.title);
+    },
+
+    'goingDuration-tmpl': function(model) {
+        var goingDuration = model.goingDuration;
+        var hour = parseInt(goingDuration / SIXTY_MINUTES, 10);
+        var minutes = goingDuration % SIXTY_MINUTES;
+
+        return 'GoingTime ' + datetime.leadingZero(hour, 2) + ':' + datetime.leadingZero(minutes, 2);
+    },
+
+    'comingDuration-tmpl': function(model) {
+        var goingDuration = model.goingDuration;
+        var hour = parseInt(goingDuration / SIXTY_MINUTES, 10);
+        var minutes = goingDuration % SIXTY_MINUTES;
+
+        return 'ComingTime ' + datetime.leadingZero(hour, 2) + ':' + datetime.leadingZero(minutes, 2);
+    },
+
+    'monthMoreTitleDate-tmpl': function(date, dayname) {
+        var classDay = config.classname('month-more-title-day');
+        var classDayLabel = config.classname('month-more-title-day-label');
+        var day = util.pick(date.split('.'), 2);
+
+        return '<span class="' + classDay + '">' + day + '</span> <span class="' + classDayLabel + '">' + dayname + '</span>';
+    },
+
+    'monthMoreClose-tmpl': function() {
+        return '';
+    },
+
+    'monthGridHeader-tmpl': function(model) {
+        var date = parseInt(model.date.split('-')[2], 10);
+        var classNames = [];
+
+        classNames.push(config.classname('weekday-grid-date'));
+        if (model.isToday) {
+            classNames.push(config.classname('weekday-grid-date-decorator'));
+        }
+
+        return '<span class="' + classNames.join(' ') + '">' + date + '</span>';
+    },
+
+    'monthGridHeaderExceed-tmpl': function(hiddenSchedules) {
+        var className = config.classname('weekday-grid-more-schedules');
+
+        return '<span class="' + className + '">' + hiddenSchedules + ' more</span>';
+    },
+
+    'monthGridFooter-tmpl': function() {
+        return '';
+    },
+
+    /* eslint no-unused-vars: 0 */
+    'monthGridFooterExceed-tmpl': function(hiddenSchedules) {
+        return '';
+    },
+
+    'monthDayname-tmpl': function(model) {
+        return model.label;
+    },
+
+    'weekDayname-tmpl': function(model) {
+        var classDate = config.classname('dayname-date');
+        var className = config.classname('dayname-name');
+
+        return '<span class="' + classDate + '">' + model.date + '</span>&nbsp;&nbsp;<span class="' + className + '">' + model.dayName + '</span>';
+    },
+
+    'weekGridFooterExceed-tmpl': function(hiddenSchedules) {
+        return '+' + hiddenSchedules;
+    },
+
+    'dayGridTitle-tmpl': function(viewName) {
+        var tmpl = Handlebars.helpers[viewName + 'Title-tmpl'];
+        if (tmpl) {
+            return tmpl(viewName);
+        }
+
+        return viewName;
+    },
+
+    'schedule-tmpl': function(model) {
+        var tmpl = Handlebars.helpers[model.category + '-tmpl'];
+        if (tmpl) {
+            return tmpl(model);
+        }
+
+        return '';
+    },
+
+    'collapseBtnTitle-tmpl': function() {
+        var iconName = config.classname('icon');
+        var closeIconName = config.classname('ic-arrow-solid-top');
+
+        return '<span class="' + iconName + ' ' + closeIconName + '"></span>';
+    },
+
+    'timezoneDisplayLabel-tmpl': function(timezoneOffset, displayLabel) {
+        var gmt, hour, minutes;
+
+        if (util.isUndefined(displayLabel)) {
+            gmt = timezoneOffset < 0 ? '-' : '+';
+            hour = Math.abs(parseInt(timezoneOffset / SIXTY_MINUTES, 10));
+            minutes = Math.abs(timezoneOffset % SIXTY_MINUTES);
+            displayLabel = gmt + datetime.leadingZero(hour, 2) + ':' + datetime.leadingZero(minutes, 2);
+        }
+
+        return displayLabel;
+    },
+
+    'timegridDisplayPrimayTime-tmpl': function(time) {
+        /* TODO: 삭제 필요 (will be deprecated) */
+        return Handlebars.helpers['timegridDisplayPrimaryTime-tmpl'](time);
+    },
+
+    'timegridDisplayPrimaryTime-tmpl': function(time) {
+        var hour = time.hour;
+        var meridiem = hour >= 12 ? 'pm' : 'am';
+
+        if (hour > 12) {
+            hour = hour - 12;
+        }
+
+        return hour + ' ' + meridiem;
+    },
+
+    'timegridDisplayTime-tmpl': function(time) {
+        return datetime.leadingZero(time.hour, 2) + ':' + datetime.leadingZero(time.minutes, 2);
+    },
+
+    'timegridCurrentTime-tmpl': function(timezone) {
+        var templates = [];
+
+        if (timezone.dateDifference) {
+            templates.push('[' + timezone.dateDifferenceSign + timezone.dateDifference + ']<br>');
+        }
+
+        templates.push(datetime.format(timezone.hourmarker, 'HH:mm'));
+
+        return templates.join('');
+    },
+
+    'popupIsAllDay-tmpl': function() {
+        return 'All day';
+    },
+
+    'popupStateFree-tmpl': function() {
+        return 'Free';
+    },
+
+    'popupStateBusy-tmpl': function() {
+        return 'Busy';
+    },
+
+    'titlePlaceholder-tmpl': function() {
+        return 'Subject';
+    },
+
+    'locationPlaceholder-tmpl': function() {
+        return 'Location';
+    },
+
+    'startDatePlaceholder-tmpl': function() {
+        return 'Start date';
+    },
+
+    'endDatePlaceholder-tmpl': function() {
+        return 'End date';
+    },
+    'popupSave-tmpl': function() {
+        return 'Save';
+    },
+    'popupUpdate-tmpl': function() {
+        return 'Update';
+    },
+    'popupDetailDate-tmpl': function(isAllDay, start, end) {
+        var isSameDate = datetime.isSameDate(start, end);
+        var endFormat = (isSameDate ? '' : 'YYYY.MM.DD ') + 'hh:mm tt';
+
+        if (isAllDay) {
+            return datetime.format(start, 'YYYY.MM.DD') + (isSameDate ? '' : ' - ' + datetime.format(end, 'YYYY.MM.DD'));
+        }
+
+        return (datetime.format(start, 'YYYY.MM.DD hh:mm tt') + ' - ' + datetime.format(end, endFormat));
+    },
+    'popupDetailLocation-tmpl': function(schedule) {
+        return schedule.location;
+    },
+    'popupDetailUser-tmpl': function(schedule) {
+        return (schedule.attendees || []).join(', ');
+    },
+    'popupDetailState-tmpl': function(schedule) {
+        return schedule.state || 'Busy';
+    },
+    'popupDetailRepeat-tmpl': function(schedule) {
+        return schedule.recurrenceRule;
+    },
+    'popupDetailBody-tmpl': function(schedule) {
+        return schedule.body;
+    },
+    'popupEdit-tmpl': function() {
+        return 'Edit';
+    },
+    'popupDelete-tmpl': function() {
+        return 'Delete';
+    }
+};
+
+/**
+ * Get CSS syntax for element size
+ * @param {number} value - size value to apply element
+ * @param {string} postfix - postfix string ex) px, em, %
+ * @param {string} prefix - property name ex) width, height
+ * @returns {string} CSS syntax
+ */
+function getElSize(value, postfix, prefix) {
+    prefix = prefix || '';
+    if (util.isNumber(value)) {
+        return prefix + ':' + value + postfix;
+    }
+
+    return prefix + ':auto';
+}
+
+/**
+ * Get element left based on narrowWeekend
+ * @param {object} viewModel - view model
+ * @param {Array} grids - dates information
+ * @returns {number} element left
+ */
+function getElLeft(viewModel, grids) {
+    return grids[viewModel.left] ? grids[viewModel.left].left : 0;
+}
+
+/**
+ * Get element width based on narrowWeekend
+ * @param {object} viewModel - view model
+ * @param {Array} grids - dates information
+ * @returns {number} element width
+ */
+function getElWidth(viewModel, grids) {
+    var width = 0;
+    var i = 0;
+    var length = grids.length;
+    var left;
+    for (; i < viewModel.width; i += 1) {
+        left = (viewModel.left + i) % length;
+        left += parseInt((viewModel.left + i) / length, 10);
+        if (left < length) {
+            width += grids[left] ? grids[left].width : 0;
+        }
+    }
+
+    return width;
+}
+
+Handlebars.registerHelper(helpers);
+
+
+/***/ }),
+
+/***/ "./src/js/view/template/month/month.hbs":
+/*!**********************************************!*\
+  !*** ./src/js/view/template/month/month.hbs ***!
+  \**********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var Handlebars = __webpack_require__(/*! ./node_modules/handlebars/runtime.js */ "./node_modules/handlebars/runtime.js");
+module.exports = (Handlebars['default'] || Handlebars).template({"1":function(container,depth0,helpers,partials,data) {
+    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3="function", alias4=container.escapeExpression, alias5=container.lambda, lookupProperty = container.lookupProperty || function(parent, propertyName) {
+        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+          return parent[propertyName];
+        }
+        return undefined
+    };
+
+  return "    <div class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":4,"column":16},"end":{"line":4,"column":30}}}) : helper)))
+    + "month-dayname-item\"\n         style=\"position: absolute;\n                width: "
+    + alias4(((helper = (helper = lookupProperty(helpers,"width") || (depth0 != null ? lookupProperty(depth0,"width") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"width","hash":{},"data":data,"loc":{"start":{"line":6,"column":23},"end":{"line":6,"column":32}}}) : helper)))
+    + "%;\n                left: "
+    + alias4(((helper = (helper = lookupProperty(helpers,"left") || (depth0 != null ? lookupProperty(depth0,"left") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"left","hash":{},"data":data,"loc":{"start":{"line":7,"column":22},"end":{"line":7,"column":30}}}) : helper)))
+    + "%;\n                padding-left: "
+    + alias4(alias5(((stack1 = ((stack1 = (data && lookupProperty(data,"root"))) && lookupProperty(stack1,"styles"))) && lookupProperty(stack1,"paddingLeft")), depth0))
+    + ";\n                padding-right: "
+    + alias4(alias5(((stack1 = ((stack1 = (data && lookupProperty(data,"root"))) && lookupProperty(stack1,"styles"))) && lookupProperty(stack1,"paddingRight")), depth0))
+    + ";\n                line-height: "
+    + alias4(alias5(((stack1 = ((stack1 = (data && lookupProperty(data,"root"))) && lookupProperty(stack1,"styles"))) && lookupProperty(stack1,"height")), depth0))
+    + ";\n"
+    + ((stack1 = lookupProperty(helpers,"unless").call(alias1,(data && lookupProperty(data,"last")),{"name":"unless","hash":{},"fn":container.program(2, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":11,"column":16},"end":{"line":13,"column":27}}})) != null ? stack1 : "")
+    + "                \">\n        <span class=\""
+    + alias4((lookupProperty(helpers,"holiday")||(depth0 && lookupProperty(depth0,"holiday"))||alias2).call(alias1,(depth0 != null ? lookupProperty(depth0,"day") : depth0),{"name":"holiday","hash":{},"data":data,"loc":{"start":{"line":15,"column":21},"end":{"line":15,"column":36}}}))
+    + "\" style=\"color: "
+    + alias4(((helper = (helper = lookupProperty(helpers,"color") || (depth0 != null ? lookupProperty(depth0,"color") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"color","hash":{},"data":data,"loc":{"start":{"line":15,"column":52},"end":{"line":15,"column":61}}}) : helper)))
+    + ";\">\n            "
+    + ((stack1 = (lookupProperty(helpers,"monthDayname-tmpl")||(depth0 && lookupProperty(depth0,"monthDayname-tmpl"))||alias2).call(alias1,depth0,{"name":"monthDayname-tmpl","hash":{},"data":data,"loc":{"start":{"line":16,"column":12},"end":{"line":16,"column":40}}})) != null ? stack1 : "")
+    + "\n        </span>\n    </div>\n";
+},"2":function(container,depth0,helpers,partials,data) {
+    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {
+        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+          return parent[propertyName];
+        }
+        return undefined
+    };
+
+  return "                border-right: "
+    + container.escapeExpression(container.lambda(((stack1 = ((stack1 = (data && lookupProperty(data,"root"))) && lookupProperty(stack1,"styles"))) && lookupProperty(stack1,"borderLeft")), depth0))
+    + ";\n";
+},"compiler":[8,">= 4.3.0"],"main":function(container,depth0,helpers,partials,data) {
+    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.escapeExpression, alias3=container.lambda, lookupProperty = container.lookupProperty || function(parent, propertyName) {
+        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+          return parent[propertyName];
+        }
+        return undefined
+    };
+
+  return "<div class=\""
+    + alias2(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === "function" ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":1,"column":12},"end":{"line":1,"column":26}}}) : helper)))
+    + "month-dayname\"\n    style=\"border-top: "
+    + alias2(alias3(((stack1 = (depth0 != null ? lookupProperty(depth0,"styles") : depth0)) != null ? lookupProperty(stack1,"borderTop") : stack1), depth0))
+    + "; height: "
+    + alias2(alias3(((stack1 = (depth0 != null ? lookupProperty(depth0,"styles") : depth0)) != null ? lookupProperty(stack1,"height") : stack1), depth0))
+    + "; font-size: "
+    + alias2(alias3(((stack1 = (depth0 != null ? lookupProperty(depth0,"styles") : depth0)) != null ? lookupProperty(stack1,"fontSize") : stack1), depth0))
+    + "; background-color: "
+    + alias2(alias3(((stack1 = (depth0 != null ? lookupProperty(depth0,"styles") : depth0)) != null ? lookupProperty(stack1,"backgroundColor") : stack1), depth0))
+    + "; text-align: "
+    + alias2(alias3(((stack1 = (depth0 != null ? lookupProperty(depth0,"styles") : depth0)) != null ? lookupProperty(stack1,"textAlign") : stack1), depth0))
+    + "; font-weight: "
+    + alias2(alias3(((stack1 = (depth0 != null ? lookupProperty(depth0,"styles") : depth0)) != null ? lookupProperty(stack1,"fontWeight") : stack1), depth0))
+    + ";\">\n"
+    + ((stack1 = lookupProperty(helpers,"each").call(alias1,(depth0 != null ? lookupProperty(depth0,"daynames") : depth0),{"name":"each","hash":{},"fn":container.program(1, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":3,"column":0},"end":{"line":19,"column":9}}})) != null ? stack1 : "")
+    + "</div>\n";
+},"useData":true});
+
+/***/ }),
+
+/***/ "./src/js/view/template/month/more.hbs":
+/*!*********************************************!*\
+  !*** ./src/js/view/template/month/more.hbs ***!
+  \*********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var Handlebars = __webpack_require__(/*! ./node_modules/handlebars/runtime.js */ "./node_modules/handlebars/runtime.js");
+module.exports = (Handlebars['default'] || Handlebars).template({"1":function(container,depth0,helpers,partials,data) {
+    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {
+        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+          return parent[propertyName];
+        }
+        return undefined
+    };
+
+  return ((stack1 = (lookupProperty(helpers,"fi")||(depth0 && lookupProperty(depth0,"fi"))||container.hooks.helperMissing).call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = (depth0 != null ? lookupProperty(depth0,"model") : depth0)) != null ? lookupProperty(stack1,"isAllDay") : stack1),"||",(depth0 != null ? lookupProperty(depth0,"hasMultiDates") : depth0),{"name":"fi","hash":{},"fn":container.program(2, data, 0),"inverse":container.program(7, data, 0),"data":data,"loc":{"start":{"line":9,"column":8},"end":{"line":65,"column":15}}})) != null ? stack1 : "");
+},"2":function(container,depth0,helpers,partials,data) {
+    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=container.escapeExpression, alias4=container.lambda, alias5="function", lookupProperty = container.lookupProperty || function(parent, propertyName) {
+        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+          return parent[propertyName];
+        }
+        return undefined
+    };
+
+  return "<div data-id=\""
+    + alias3((lookupProperty(helpers,"stamp")||(depth0 && lookupProperty(depth0,"stamp"))||alias2).call(alias1,(depth0 != null ? lookupProperty(depth0,"model") : depth0),{"name":"stamp","hash":{},"data":data,"loc":{"start":{"line":10,"column":26},"end":{"line":10,"column":41}}}))
+    + "\"\n                data-schedule-id=\""
+    + alias3(alias4(((stack1 = (depth0 != null ? lookupProperty(depth0,"model") : depth0)) != null ? lookupProperty(stack1,"id") : stack1), depth0))
+    + "\" data-calendar-id=\""
+    + alias3(alias4(((stack1 = (depth0 != null ? lookupProperty(depth0,"model") : depth0)) != null ? lookupProperty(stack1,"calendarId") : stack1), depth0))
+    + "\"\n                class=\""
+    + alias3(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias5 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":12,"column":23},"end":{"line":12,"column":37}}}) : helper)))
+    + "month-more-schedule "
+    + alias3(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias5 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":12,"column":57},"end":{"line":12,"column":71}}}) : helper)))
+    + "month-more-allday "
+    + alias3(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias5 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":12,"column":89},"end":{"line":12,"column":103}}}) : helper)))
+    + "weekday-schedule-title\"\n                style=\"height: "
+    + alias3(alias4(((stack1 = (data && lookupProperty(data,"root"))) && lookupProperty(stack1,"scheduleHeight")), depth0))
+    + "px; line-height: "
+    + alias3(alias4(((stack1 = (data && lookupProperty(data,"root"))) && lookupProperty(stack1,"scheduleHeight")), depth0))
+    + "px; margin-top: "
+    + alias3(alias4(((stack1 = (data && lookupProperty(data,"root"))) && lookupProperty(stack1,"scheduleGutter")), depth0))
+    + "px; border-radius: "
+    + alias3(alias4(((stack1 = (data && lookupProperty(data,"root"))) && lookupProperty(stack1,"borderRadius")), depth0))
+    + ";\n"
+    + ((stack1 = lookupProperty(helpers,"if").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,"model") : depth0)) != null ? lookupProperty(stack1,"isFocused") : stack1),{"name":"if","hash":{},"fn":container.program(3, data, 0),"inverse":container.program(5, data, 0),"data":data,"loc":{"start":{"line":14,"column":20},"end":{"line":18,"column":27}}})) != null ? stack1 : "")
+    + "                    "
+    + alias3(alias4(((stack1 = (depth0 != null ? lookupProperty(depth0,"model") : depth0)) != null ? lookupProperty(stack1,"customStyle") : stack1), depth0))
+    + "\">\n                    "
+    + ((stack1 = (lookupProperty(helpers,"allday-tmpl")||(depth0 && lookupProperty(depth0,"allday-tmpl"))||alias2).call(alias1,(depth0 != null ? lookupProperty(depth0,"model") : depth0),{"name":"allday-tmpl","hash":{},"data":data,"loc":{"start":{"line":20,"column":20},"end":{"line":20,"column":43}}})) != null ? stack1 : "")
+    + "\n            </div>\n";
+},"3":function(container,depth0,helpers,partials,data) {
+    var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {
+        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+          return parent[propertyName];
+        }
+        return undefined
+    };
+
+  return "                        color: #ffffff; background-color:"
+    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,"model") : depth0)) != null ? lookupProperty(stack1,"color") : stack1), depth0))
+    + "; border-left:3px solid "
+    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,"model") : depth0)) != null ? lookupProperty(stack1,"borderColor") : stack1), depth0))
+    + ";\n";
+},"5":function(container,depth0,helpers,partials,data) {
+    var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {
+        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+          return parent[propertyName];
+        }
+        return undefined
+    };
+
+  return "                        color:"
+    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,"model") : depth0)) != null ? lookupProperty(stack1,"color") : stack1), depth0))
+    + "; background-color:"
+    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,"model") : depth0)) != null ? lookupProperty(stack1,"bgColor") : stack1), depth0))
+    + "; border-left:3px solid "
+    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,"model") : depth0)) != null ? lookupProperty(stack1,"borderColor") : stack1), depth0))
+    + ";\n";
+},"7":function(container,depth0,helpers,partials,data) {
+    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {
+        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+          return parent[propertyName];
+        }
+        return undefined
+    };
+
+  return ((stack1 = (lookupProperty(helpers,"fi")||(depth0 && lookupProperty(depth0,"fi"))||container.hooks.helperMissing).call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = (depth0 != null ? lookupProperty(depth0,"model") : depth0)) != null ? lookupProperty(stack1,"category") : stack1),"===","time",{"name":"fi","hash":{},"fn":container.program(8, data, 0),"inverse":container.program(17, data, 0),"data":data,"loc":{"start":{"line":23,"column":12},"end":{"line":64,"column":19}}})) != null ? stack1 : "");
+},"8":function(container,depth0,helpers,partials,data) {
+    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=container.escapeExpression, alias4=container.lambda, alias5="function", lookupProperty = container.lookupProperty || function(parent, propertyName) {
+        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+          return parent[propertyName];
+        }
+        return undefined
+    };
+
+  return "                <div data-id=\""
+    + alias3((lookupProperty(helpers,"stamp")||(depth0 && lookupProperty(depth0,"stamp"))||alias2).call(alias1,(depth0 != null ? lookupProperty(depth0,"model") : depth0),{"name":"stamp","hash":{},"data":data,"loc":{"start":{"line":24,"column":30},"end":{"line":24,"column":45}}}))
+    + "\"\n                    data-schedule-id=\""
+    + alias3(alias4(((stack1 = (depth0 != null ? lookupProperty(depth0,"model") : depth0)) != null ? lookupProperty(stack1,"id") : stack1), depth0))
+    + "\" data-calendar-id=\""
+    + alias3(alias4(((stack1 = (depth0 != null ? lookupProperty(depth0,"model") : depth0)) != null ? lookupProperty(stack1,"calendarId") : stack1), depth0))
+    + "\"\n                    class=\""
+    + alias3(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias5 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":26,"column":27},"end":{"line":26,"column":41}}}) : helper)))
+    + "month-more-schedule "
+    + alias3(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias5 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":26,"column":61},"end":{"line":26,"column":75}}}) : helper)))
+    + "weekday-schedule "
+    + alias3(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias5 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":26,"column":92},"end":{"line":26,"column":106}}}) : helper)))
+    + "weekday-schedule-time\"\n                    style=\"height: "
+    + alias3(alias4(((stack1 = (data && lookupProperty(data,"root"))) && lookupProperty(stack1,"scheduleHeight")), depth0))
+    + "px; line-height: "
+    + alias3(alias4(((stack1 = (data && lookupProperty(data,"root"))) && lookupProperty(stack1,"scheduleHeight")), depth0))
+    + "px; margin-top: "
+    + alias3(alias4(((stack1 = (data && lookupProperty(data,"root"))) && lookupProperty(stack1,"scheduleGutter")), depth0))
+    + "px;"
+    + alias3(alias4(((stack1 = (depth0 != null ? lookupProperty(depth0,"model") : depth0)) != null ? lookupProperty(stack1,"customStyle") : stack1), depth0))
+    + "\">\n                    <span class=\""
+    + alias3(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias5 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":28,"column":33},"end":{"line":28,"column":47}}}) : helper)))
+    + "weekday-schedule-bullet\"\n                        style=\"top: "
+    + alias3(alias4(((stack1 = (data && lookupProperty(data,"root"))) && lookupProperty(stack1,"scheduleBulletTop")), depth0))
+    + "px;\n"
+    + ((stack1 = lookupProperty(helpers,"if").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,"model") : depth0)) != null ? lookupProperty(stack1,"isFocused") : stack1),{"name":"if","hash":{},"fn":container.program(9, data, 0),"inverse":container.program(11, data, 0),"data":data,"loc":{"start":{"line":30,"column":28},"end":{"line":34,"column":35}}})) != null ? stack1 : "")
+    + "\"></span>\n                    <span class=\""
+    + alias3(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias5 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":35,"column":33},"end":{"line":35,"column":47}}}) : helper)))
+    + "weekday-schedule-title\"\n                        style=\""
+    + ((stack1 = lookupProperty(helpers,"if").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,"model") : depth0)) != null ? lookupProperty(stack1,"isFocused") : stack1),{"name":"if","hash":{},"fn":container.program(13, data, 0),"inverse":container.program(15, data, 0),"data":data,"loc":{"start":{"line":36,"column":31},"end":{"line":41,"column":35}}})) != null ? stack1 : "")
+    + "\"\n                        data-title=\""
+    + alias3(alias4(((stack1 = (depth0 != null ? lookupProperty(depth0,"model") : depth0)) != null ? lookupProperty(stack1,"title") : stack1), depth0))
+    + "\">"
+    + ((stack1 = (lookupProperty(helpers,"time-tmpl")||(depth0 && lookupProperty(depth0,"time-tmpl"))||alias2).call(alias1,(depth0 != null ? lookupProperty(depth0,"model") : depth0),{"name":"time-tmpl","hash":{},"data":data,"loc":{"start":{"line":42,"column":53},"end":{"line":42,"column":74}}})) != null ? stack1 : "")
+    + "</span>\n                </div>\n";
+},"9":function(container,depth0,helpers,partials,data) {
+    return "                                background: #ffffff\n";
+},"11":function(container,depth0,helpers,partials,data) {
+    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {
+        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+          return parent[propertyName];
+        }
+        return undefined
+    };
+
+  return "                                background:"
+    + container.escapeExpression(container.lambda(((stack1 = (depth0 != null ? lookupProperty(depth0,"model") : depth0)) != null ? lookupProperty(stack1,"borderColor") : stack1), depth0))
+    + "\n                            ";
+},"13":function(container,depth0,helpers,partials,data) {
+    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {
+        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+          return parent[propertyName];
+        }
+        return undefined
+    };
+
+  return "\n                                color: #ffffff;\n                                background-color: "
+    + container.escapeExpression(container.lambda(((stack1 = (depth0 != null ? lookupProperty(depth0,"model") : depth0)) != null ? lookupProperty(stack1,"color") : stack1), depth0))
+    + "\n";
+},"15":function(container,depth0,helpers,partials,data) {
+    return "                                color:#333;\n                            ";
+},"17":function(container,depth0,helpers,partials,data) {
+    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=container.escapeExpression, alias4=container.lambda, alias5="function", lookupProperty = container.lookupProperty || function(parent, propertyName) {
+        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+          return parent[propertyName];
+        }
+        return undefined
+    };
+
+  return "<div data-id=\""
+    + alias3((lookupProperty(helpers,"stamp")||(depth0 && lookupProperty(depth0,"stamp"))||alias2).call(alias1,(depth0 != null ? lookupProperty(depth0,"model") : depth0),{"name":"stamp","hash":{},"data":data,"loc":{"start":{"line":45,"column":30},"end":{"line":45,"column":45}}}))
+    + "\"\n                    data-schedule-id=\""
+    + alias3(alias4(((stack1 = (depth0 != null ? lookupProperty(depth0,"model") : depth0)) != null ? lookupProperty(stack1,"id") : stack1), depth0))
+    + "\" data-calendar-id=\""
+    + alias3(alias4(((stack1 = (depth0 != null ? lookupProperty(depth0,"model") : depth0)) != null ? lookupProperty(stack1,"calendarId") : stack1), depth0))
+    + "\"\n                    class=\""
+    + alias3(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias5 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":47,"column":27},"end":{"line":47,"column":41}}}) : helper)))
+    + "month-more-schedule "
+    + alias3(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias5 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":47,"column":61},"end":{"line":47,"column":75}}}) : helper)))
+    + "weekday-schedule "
+    + ((stack1 = lookupProperty(helpers,"if").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,"model") : depth0)) != null ? lookupProperty(stack1,"isFocused") : stack1),{"name":"if","hash":{},"fn":container.program(18, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":47,"column":92},"end":{"line":47,"column":161}}})) != null ? stack1 : "")
+    + "\"\n                    style=\"height:"
+    + alias3(alias4(((stack1 = (data && lookupProperty(data,"root"))) && lookupProperty(stack1,"scheduleHeight")), depth0))
+    + "px; line-height:"
+    + alias3(alias4(((stack1 = (data && lookupProperty(data,"root"))) && lookupProperty(stack1,"scheduleHeight")), depth0))
+    + "px; border-radius: "
+    + alias3(alias4(((stack1 = ((stack1 = (data && lookupProperty(data,"root"))) && lookupProperty(stack1,"styles"))) && lookupProperty(stack1,"borderRadius")), depth0))
+    + ";\n"
+    + ((stack1 = lookupProperty(helpers,"unless").call(alias1,(depth0 != null ? lookupProperty(depth0,"exceedLeft") : depth0),{"name":"unless","hash":{},"fn":container.program(20, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":49,"column":20},"end":{"line":51,"column":31}}})) != null ? stack1 : "")
+    + ((stack1 = lookupProperty(helpers,"unless").call(alias1,(depth0 != null ? lookupProperty(depth0,"exceedRight") : depth0),{"name":"unless","hash":{},"fn":container.program(22, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":52,"column":20},"end":{"line":54,"column":31}}})) != null ? stack1 : "")
+    + ((stack1 = lookupProperty(helpers,"if").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,"model") : depth0)) != null ? lookupProperty(stack1,"isFocused") : stack1),{"name":"if","hash":{},"fn":container.program(24, data, 0),"inverse":container.program(26, data, 0),"data":data,"loc":{"start":{"line":55,"column":20},"end":{"line":59,"column":27}}})) != null ? stack1 : "")
+    + "                        "
+    + alias3(alias4(((stack1 = (depth0 != null ? lookupProperty(depth0,"model") : depth0)) != null ? lookupProperty(stack1,"customStyle") : stack1), depth0))
+    + "\">\n                    <span class=\""
+    + alias3(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias5 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":61,"column":33},"end":{"line":61,"column":47}}}) : helper)))
+    + "weekday-schedule-title\"\n                                    data-title=\""
+    + alias3(alias4(((stack1 = (depth0 != null ? lookupProperty(depth0,"model") : depth0)) != null ? lookupProperty(stack1,"title") : stack1), depth0))
+    + "\">"
+    + ((stack1 = (lookupProperty(helpers,"schedule-tmpl")||(depth0 && lookupProperty(depth0,"schedule-tmpl"))||alias2).call(alias1,(depth0 != null ? lookupProperty(depth0,"model") : depth0),{"name":"schedule-tmpl","hash":{},"data":data,"loc":{"start":{"line":62,"column":65},"end":{"line":62,"column":90}}})) != null ? stack1 : "")
+    + "</span>\n                </div>\n";
+},"18":function(container,depth0,helpers,partials,data) {
+    var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {
+        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+          return parent[propertyName];
+        }
+        return undefined
+    };
+
+  return container.escapeExpression(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === "function" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":47,"column":115},"end":{"line":47,"column":129}}}) : helper)))
+    + "weekday-schedule-focused ";
+},"20":function(container,depth0,helpers,partials,data) {
+    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {
+        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+          return parent[propertyName];
+        }
+        return undefined
+    };
+
+  return "                        margin-left: "
+    + container.escapeExpression(container.lambda(((stack1 = ((stack1 = (data && lookupProperty(data,"root"))) && lookupProperty(stack1,"styles"))) && lookupProperty(stack1,"marginLeft")), depth0))
+    + ";\n";
+},"22":function(container,depth0,helpers,partials,data) {
+    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {
+        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+          return parent[propertyName];
+        }
+        return undefined
+    };
+
+  return "                        margin-right: "
+    + container.escapeExpression(container.lambda(((stack1 = ((stack1 = (data && lookupProperty(data,"root"))) && lookupProperty(stack1,"styles"))) && lookupProperty(stack1,"marginRight")), depth0))
+    + ";\n";
+},"24":function(container,depth0,helpers,partials,data) {
+    var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {
+        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+          return parent[propertyName];
+        }
+        return undefined
+    };
+
+  return "                        color: #ffffff; background-color:"
+    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,"model") : depth0)) != null ? lookupProperty(stack1,"color") : stack1), depth0))
+    + "; border-color:"
+    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,"model") : depth0)) != null ? lookupProperty(stack1,"color") : stack1), depth0))
+    + ";\n";
+},"26":function(container,depth0,helpers,partials,data) {
+    var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {
+        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+          return parent[propertyName];
+        }
+        return undefined
+    };
+
+  return "                        color:"
+    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,"model") : depth0)) != null ? lookupProperty(stack1,"color") : stack1), depth0))
+    + "; background-color:"
+    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,"model") : depth0)) != null ? lookupProperty(stack1,"bgColor") : stack1), depth0))
+    + "; border-color:"
+    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,"model") : depth0)) != null ? lookupProperty(stack1,"borderColor") : stack1), depth0))
+    + ";\n";
+},"compiler":[8,">= 4.3.0"],"main":function(container,depth0,helpers,partials,data) {
+    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3="function", alias4=container.escapeExpression, alias5=container.lambda, lookupProperty = container.lookupProperty || function(parent, propertyName) {
+        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+          return parent[propertyName];
+        }
+        return undefined
+    };
+
+  return "<div class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":1,"column":12},"end":{"line":1,"column":26}}}) : helper)))
+    + "month-more\" style=\"padding-bottom: "
+    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,"styles") : depth0)) != null ? lookupProperty(stack1,"paddingBottom") : stack1), depth0))
+    + "; border: "
+    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,"styles") : depth0)) != null ? lookupProperty(stack1,"border") : stack1), depth0))
+    + "; box-shadow: "
+    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,"styles") : depth0)) != null ? lookupProperty(stack1,"boxShadow") : stack1), depth0))
+    + "; background-color: "
+    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,"styles") : depth0)) != null ? lookupProperty(stack1,"backgroundColor") : stack1), depth0))
+    + ";\">\n    <div class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":2,"column":16},"end":{"line":2,"column":30}}}) : helper)))
+    + "month-more-title\"\n        style=\"height: "
+    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,"styles") : depth0)) != null ? lookupProperty(stack1,"titleHeight") : stack1), depth0))
+    + "; margin-bottom: "
+    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,"styles") : depth0)) != null ? lookupProperty(stack1,"titleMarginBottom") : stack1), depth0))
+    + "; background-color: "
+    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,"styles") : depth0)) != null ? lookupProperty(stack1,"titleBackgroundColor") : stack1), depth0))
+    + "; border-bottom: "
+    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,"styles") : depth0)) != null ? lookupProperty(stack1,"titleBorderBottom") : stack1), depth0))
+    + "; padding: "
+    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,"styles") : depth0)) != null ? lookupProperty(stack1,"titlePadding") : stack1), depth0))
+    + ";\">\n        <span class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":4,"column":21},"end":{"line":4,"column":35}}}) : helper)))
+    + "month-more-title-date\">"
+    + ((stack1 = (lookupProperty(helpers,"monthMoreTitleDate-tmpl")||(depth0 && lookupProperty(depth0,"monthMoreTitleDate-tmpl"))||alias2).call(alias1,(depth0 != null ? lookupProperty(depth0,"date") : depth0),(depth0 != null ? lookupProperty(depth0,"dayname") : depth0),{"name":"monthMoreTitleDate-tmpl","hash":{},"data":data,"loc":{"start":{"line":4,"column":58},"end":{"line":4,"column":100}}})) != null ? stack1 : "")
+    + "</span>\n        <button type=\"button\" class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":5,"column":37},"end":{"line":5,"column":51}}}) : helper)))
+    + "month-more-close\">"
+    + ((stack1 = ((helper = (helper = lookupProperty(helpers,"monthMoreClose-tmpl") || (depth0 != null ? lookupProperty(depth0,"monthMoreClose-tmpl") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"monthMoreClose-tmpl","hash":{},"data":data,"loc":{"start":{"line":5,"column":69},"end":{"line":5,"column":94}}}) : helper))) != null ? stack1 : "")
+    + "</button>\n    </div>\n    <div class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":7,"column":16},"end":{"line":7,"column":30}}}) : helper)))
+    + "month-more-list\" style=\"padding: "
+    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,"styles") : depth0)) != null ? lookupProperty(stack1,"listPadding") : stack1), depth0))
+    + "; height: "
+    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,"styles") : depth0)) != null ? lookupProperty(stack1,"listHeight") : stack1), depth0))
+    + ";\">\n"
+    + ((stack1 = lookupProperty(helpers,"each").call(alias1,(depth0 != null ? lookupProperty(depth0,"schedules") : depth0),{"name":"each","hash":{},"fn":container.program(1, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":8,"column":8},"end":{"line":66,"column":17}}})) != null ? stack1 : "")
+    + "    </div>\n</div>\n";
+},"useData":true});
+
+/***/ }),
+
+/***/ "./src/js/view/template/month/weekdayInMonth.hbs":
+/*!*******************************************************!*\
+  !*** ./src/js/view/template/month/weekdayInMonth.hbs ***!
+  \*******************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var Handlebars = __webpack_require__(/*! ./node_modules/handlebars/runtime.js */ "./node_modules/handlebars/runtime.js");
+module.exports = (Handlebars['default'] || Handlebars).template({"1":function(container,depth0,helpers,partials,data) {
+    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3="function", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {
+        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+          return parent[propertyName];
+        }
+        return undefined
+    };
+
+  return "<div class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":7,"column":16},"end":{"line":7,"column":30}}}) : helper)))
+    + "weekday-grid-line "
+    + alias4((lookupProperty(helpers,"holiday")||(depth0 && lookupProperty(depth0,"holiday"))||alias2).call(alias1,(depth0 != null ? lookupProperty(depth0,"day") : depth0),{"name":"holiday","hash":{},"data":data,"loc":{"start":{"line":7,"column":48},"end":{"line":7,"column":63}}}))
+    + ((stack1 = (lookupProperty(helpers,"fi")||(depth0 && lookupProperty(depth0,"fi"))||alias2).call(alias1,(depth0 != null ? lookupProperty(depth0,"date") : depth0),"!==",1,{"name":"fi","hash":{},"fn":container.program(2, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":7,"column":63},"end":{"line":7,"column":119}}})) != null ? stack1 : "")
+    + ((stack1 = lookupProperty(helpers,"if").call(alias1,(depth0 != null ? lookupProperty(depth0,"isToday") : depth0),{"name":"if","hash":{},"fn":container.program(4, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":7,"column":119},"end":{"line":7,"column":161}}})) != null ? stack1 : "")
+    + ((stack1 = lookupProperty(helpers,"if").call(alias1,(depth0 != null ? lookupProperty(depth0,"isOtherMonth") : depth0),{"name":"if","hash":{},"fn":container.program(6, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":7,"column":161},"end":{"line":7,"column":213}}})) != null ? stack1 : "")
+    + "\"\n        style=\"width:"
+    + alias4(((helper = (helper = lookupProperty(helpers,"width") || (depth0 != null ? lookupProperty(depth0,"width") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"width","hash":{},"data":data,"loc":{"start":{"line":8,"column":21},"end":{"line":8,"column":30}}}) : helper)))
+    + "%; left:"
+    + alias4(((helper = (helper = lookupProperty(helpers,"left") || (depth0 != null ? lookupProperty(depth0,"left") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"left","hash":{},"data":data,"loc":{"start":{"line":8,"column":38},"end":{"line":8,"column":46}}}) : helper)))
+    + "%; background-color: "
+    + alias4(((helper = (helper = lookupProperty(helpers,"backgroundColor") || (depth0 != null ? lookupProperty(depth0,"backgroundColor") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"backgroundColor","hash":{},"data":data,"loc":{"start":{"line":8,"column":67},"end":{"line":8,"column":86}}}) : helper)))
+    + "; font-size: "
+    + alias4(container.lambda(((stack1 = ((stack1 = (data && lookupProperty(data,"root"))) && lookupProperty(stack1,"styles"))) && lookupProperty(stack1,"fontSize")), depth0))
+    + ";\n"
+    + ((stack1 = lookupProperty(helpers,"unless").call(alias1,(data && lookupProperty(data,"last")),{"name":"unless","hash":{},"fn":container.program(8, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":9,"column":8},"end":{"line":11,"column":19}}})) != null ? stack1 : "")
+    + "        \">\n        <div class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":13,"column":20},"end":{"line":13,"column":34}}}) : helper)))
+    + "weekday-grid-header\">\n            <span style=\"color: "
+    + alias4(((helper = (helper = lookupProperty(helpers,"color") || (depth0 != null ? lookupProperty(depth0,"color") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"color","hash":{},"data":data,"loc":{"start":{"line":14,"column":32},"end":{"line":14,"column":41}}}) : helper)))
+    + ";\">"
+    + ((stack1 = (lookupProperty(helpers,"monthGridHeader-tmpl")||(depth0 && lookupProperty(depth0,"monthGridHeader-tmpl"))||alias2).call(alias1,depth0,{"name":"monthGridHeader-tmpl","hash":{},"data":data,"loc":{"start":{"line":14,"column":44},"end":{"line":14,"column":75}}})) != null ? stack1 : "")
+    + "</span>\n"
+    + ((stack1 = lookupProperty(helpers,"if").call(alias1,(depth0 != null ? lookupProperty(depth0,"hiddenSchedules") : depth0),{"name":"if","hash":{},"fn":container.program(10, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":15,"column":12},"end":{"line":17,"column":19}}})) != null ? stack1 : "")
+    + "        </div>\n        <div class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":19,"column":20},"end":{"line":19,"column":34}}}) : helper)))
+    + "weekday-grid-footer\">\n            <span style=\"color: "
+    + alias4(((helper = (helper = lookupProperty(helpers,"color") || (depth0 != null ? lookupProperty(depth0,"color") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"color","hash":{},"data":data,"loc":{"start":{"line":20,"column":32},"end":{"line":20,"column":41}}}) : helper)))
+    + ";\">"
+    + ((stack1 = (lookupProperty(helpers,"monthGridFooter-tmpl")||(depth0 && lookupProperty(depth0,"monthGridFooter-tmpl"))||alias2).call(alias1,depth0,{"name":"monthGridFooter-tmpl","hash":{},"data":data,"loc":{"start":{"line":20,"column":44},"end":{"line":20,"column":75}}})) != null ? stack1 : "")
+    + "</span>\n"
+    + ((stack1 = lookupProperty(helpers,"if").call(alias1,(depth0 != null ? lookupProperty(depth0,"hiddenSchedules") : depth0),{"name":"if","hash":{},"fn":container.program(12, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":21,"column":12},"end":{"line":23,"column":19}}})) != null ? stack1 : "")
+    + "        </div>\n    </div>\n";
+},"2":function(container,depth0,helpers,partials,data) {
+    var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {
+        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+          return parent[propertyName];
+        }
+        return undefined
+    };
+
+  return " "
+    + container.escapeExpression(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === "function" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":7,"column":84},"end":{"line":7,"column":98}}}) : helper)))
+    + "near-month-day";
+},"4":function(container,depth0,helpers,partials,data) {
+    var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {
+        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+          return parent[propertyName];
+        }
+        return undefined
+    };
+
+  return " "
+    + container.escapeExpression(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === "function" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":7,"column":135},"end":{"line":7,"column":149}}}) : helper)))
+    + "today";
+},"6":function(container,depth0,helpers,partials,data) {
+    var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {
+        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+          return parent[propertyName];
+        }
+        return undefined
+    };
+
+  return " "
+    + container.escapeExpression(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === "function" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":7,"column":182},"end":{"line":7,"column":196}}}) : helper)))
+    + "extra-date";
+},"8":function(container,depth0,helpers,partials,data) {
+    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {
+        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+          return parent[propertyName];
+        }
+        return undefined
+    };
+
+  return "        border-right:"
+    + container.escapeExpression(container.lambda(((stack1 = ((stack1 = (data && lookupProperty(data,"root"))) && lookupProperty(stack1,"styles"))) && lookupProperty(stack1,"borderLeft")), depth0))
+    + ";\n";
+},"10":function(container,depth0,helpers,partials,data) {
+    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3="function", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {
+        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+          return parent[propertyName];
+        }
+        return undefined
+    };
+
+  return "                <span class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":16,"column":29},"end":{"line":16,"column":43}}}) : helper)))
+    + "weekday-exceed-in-month\" data-ymd=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"ymd") || (depth0 != null ? lookupProperty(depth0,"ymd") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"ymd","hash":{},"data":data,"loc":{"start":{"line":16,"column":78},"end":{"line":16,"column":85}}}) : helper)))
+    + "\">"
+    + ((stack1 = (lookupProperty(helpers,"monthGridHeaderExceed-tmpl")||(depth0 && lookupProperty(depth0,"monthGridHeaderExceed-tmpl"))||alias2).call(alias1,(depth0 != null ? lookupProperty(depth0,"hiddenSchedules") : depth0),{"name":"monthGridHeaderExceed-tmpl","hash":{},"data":data,"loc":{"start":{"line":16,"column":87},"end":{"line":16,"column":135}}})) != null ? stack1 : "")
+    + "</span>\n";
+},"12":function(container,depth0,helpers,partials,data) {
+    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3="function", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {
+        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+          return parent[propertyName];
+        }
+        return undefined
+    };
+
+  return "                <span class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":22,"column":29},"end":{"line":22,"column":43}}}) : helper)))
+    + "weekday-exceed-in-month\" data-ymd=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"ymd") || (depth0 != null ? lookupProperty(depth0,"ymd") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"ymd","hash":{},"data":data,"loc":{"start":{"line":22,"column":78},"end":{"line":22,"column":85}}}) : helper)))
+    + "\">"
+    + ((stack1 = (lookupProperty(helpers,"monthGridFooterExceed-tmpl")||(depth0 && lookupProperty(depth0,"monthGridFooterExceed-tmpl"))||alias2).call(alias1,(depth0 != null ? lookupProperty(depth0,"hiddenSchedules") : depth0),{"name":"monthGridFooterExceed-tmpl","hash":{},"data":data,"loc":{"start":{"line":22,"column":87},"end":{"line":22,"column":135}}})) != null ? stack1 : "")
+    + "</span>\n";
+},"compiler":[8,">= 4.3.0"],"main":function(container,depth0,helpers,partials,data) {
+    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3="function", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {
+        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+          return parent[propertyName];
+        }
+        return undefined
+    };
+
+  return "<div class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":1,"column":12},"end":{"line":1,"column":26}}}) : helper)))
+    + "weekday-border\"\n    style=\"\n    border-top: "
+    + alias4(container.lambda(((stack1 = (depth0 != null ? lookupProperty(depth0,"styles") : depth0)) != null ? lookupProperty(stack1,"borderTop") : stack1), depth0))
+    + ";\n\"></div>\n<div class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":5,"column":12},"end":{"line":5,"column":26}}}) : helper)))
+    + "weekday-grid\">\n"
+    + ((stack1 = lookupProperty(helpers,"each").call(alias1,(depth0 != null ? lookupProperty(depth0,"dates") : depth0),{"name":"each","hash":{},"fn":container.program(1, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":6,"column":0},"end":{"line":26,"column":11}}})) != null ? stack1 : "")
+    + "</div>\n<div class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":28,"column":12},"end":{"line":28,"column":26}}}) : helper)))
+    + "weekday-schedules\"></div>\n";
+},"useData":true});
+
+/***/ }),
+
+/***/ "./src/js/view/template/month/weekdayInMonthSchedule.hbs":
+/*!***************************************************************!*\
+  !*** ./src/js/view/template/month/weekdayInMonthSchedule.hbs ***!
+  \***************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var Handlebars = __webpack_require__(/*! ./node_modules/handlebars/runtime.js */ "./node_modules/handlebars/runtime.js");
+module.exports = (Handlebars['default'] || Handlebars).template({"1":function(container,depth0,helpers,partials,data) {
+    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {
+        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+          return parent[propertyName];
+        }
+        return undefined
+    };
+
+  return ((stack1 = lookupProperty(helpers,"each").call(depth0 != null ? depth0 : (container.nullContext || {}),depth0,{"name":"each","hash":{},"fn":container.program(2, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":2,"column":0},"end":{"line":80,"column":11}}})) != null ? stack1 : "");
+},"2":function(container,depth0,helpers,partials,data) {
+    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {
+        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+          return parent[propertyName];
+        }
+        return undefined
+    };
+
+  return "\n"
+    + ((stack1 = lookupProperty(helpers,"each").call(depth0 != null ? depth0 : (container.nullContext || {}),depth0,{"name":"each","hash":{},"fn":container.program(3, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":3,"column":0},"end":{"line":79,"column":11}}})) != null ? stack1 : "");
+},"3":function(container,depth0,helpers,partials,data) {
+    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {
+        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+          return parent[propertyName];
+        }
+        return undefined
+    };
+
+  return "\n"
+    + ((stack1 = lookupProperty(helpers,"if").call(depth0 != null ? depth0 : (container.nullContext || {}),depth0,{"name":"if","hash":{},"fn":container.program(4, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":4,"column":0},"end":{"line":78,"column":9}}})) != null ? stack1 : "");
+},"4":function(container,depth0,helpers,partials,data) {
+    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {
+        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+          return parent[propertyName];
+        }
+        return undefined
+    };
+
+  return "\n"
+    + ((stack1 = (lookupProperty(helpers,"fi")||(depth0 && lookupProperty(depth0,"fi"))||container.hooks.helperMissing).call(depth0 != null ? depth0 : (container.nullContext || {}),(depth0 != null ? lookupProperty(depth0,"top") : depth0),"<",((stack1 = (data && lookupProperty(data,"root"))) && lookupProperty(stack1,"renderLimitIdx")),{"name":"fi","hash":{},"fn":container.program(5, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":5,"column":4},"end":{"line":77,"column":13}}})) != null ? stack1 : "");
+},"5":function(container,depth0,helpers,partials,data) {
+    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=container.escapeExpression, alias4="function", lookupProperty = container.lookupProperty || function(parent, propertyName) {
+        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+          return parent[propertyName];
+        }
+        return undefined
+    };
+
+  return "<div data-id=\""
+    + alias3((lookupProperty(helpers,"stamp")||(depth0 && lookupProperty(depth0,"stamp"))||alias2).call(alias1,(depth0 != null ? lookupProperty(depth0,"model") : depth0),{"name":"stamp","hash":{},"data":data,"loc":{"start":{"line":6,"column":18},"end":{"line":6,"column":33}}}))
+    + "\"\n         class=\""
+    + alias3(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias4 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":7,"column":16},"end":{"line":7,"column":30}}}) : helper)))
+    + "weekday-schedule-block\n                "
+    + alias3(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias4 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":8,"column":16},"end":{"line":8,"column":30}}}) : helper)))
+    + "weekday-schedule-block-"
+    + alias3((lookupProperty(helpers,"stamp")||(depth0 && lookupProperty(depth0,"stamp"))||alias2).call(alias1,(depth0 != null ? lookupProperty(depth0,"model") : depth0),{"name":"stamp","hash":{},"data":data,"loc":{"start":{"line":8,"column":53},"end":{"line":8,"column":68}}}))
+    + "\n            "
+    + ((stack1 = lookupProperty(helpers,"if").call(alias1,(depth0 != null ? lookupProperty(depth0,"exceedLeft") : depth0),{"name":"if","hash":{},"fn":container.program(6, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":9,"column":12},"end":{"line":9,"column":71}}})) != null ? stack1 : "")
+    + "\n            "
+    + ((stack1 = lookupProperty(helpers,"if").call(alias1,(depth0 != null ? lookupProperty(depth0,"exceedRight") : depth0),{"name":"if","hash":{},"fn":container.program(8, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":10,"column":12},"end":{"line":10,"column":73}}})) != null ? stack1 : "")
+    + "\"\n         style=\""
+    + alias3((lookupProperty(helpers,"month-scheduleBlock")||(depth0 && lookupProperty(depth0,"month-scheduleBlock"))||alias2).call(alias1,depth0,((stack1 = (data && lookupProperty(data,"root"))) && lookupProperty(stack1,"dates")),((stack1 = (data && lookupProperty(data,"root"))) && lookupProperty(stack1,"scheduleBlockHeight")),((stack1 = (data && lookupProperty(data,"root"))) && lookupProperty(stack1,"gridHeaderHeight")),{"name":"month-scheduleBlock","hash":{},"data":data,"loc":{"start":{"line":11,"column":16},"end":{"line":11,"column":105}}}))
+    + ";\n                margin-top:"
+    + alias3(container.lambda(((stack1 = (data && lookupProperty(data,"root"))) && lookupProperty(stack1,"scheduleBlockGutter")), depth0))
+    + "px\">\n"
+    + ((stack1 = (lookupProperty(helpers,"fi")||(depth0 && lookupProperty(depth0,"fi"))||alias2).call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,"model") : depth0)) != null ? lookupProperty(stack1,"isAllDay") : stack1),"||",(depth0 != null ? lookupProperty(depth0,"hasMultiDates") : depth0),{"name":"fi","hash":{},"fn":container.program(10, data, 0),"inverse":container.program(23, data, 0),"data":data,"loc":{"start":{"line":13,"column":8},"end":{"line":75,"column":15}}})) != null ? stack1 : "")
+    + "    </div>\n";
+},"6":function(container,depth0,helpers,partials,data) {
+    var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {
+        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+          return parent[propertyName];
+        }
+        return undefined
+    };
+
+  return " "
+    + container.escapeExpression(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === "function" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":9,"column":31},"end":{"line":9,"column":45}}}) : helper)))
+    + "weekday-exceed-left";
+},"8":function(container,depth0,helpers,partials,data) {
+    var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {
+        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+          return parent[propertyName];
+        }
+        return undefined
+    };
+
+  return " "
+    + container.escapeExpression(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === "function" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":10,"column":32},"end":{"line":10,"column":46}}}) : helper)))
+    + "weekday-exceed-right";
+},"10":function(container,depth0,helpers,partials,data) {
+    var stack1, helper, alias1=container.lambda, alias2=container.escapeExpression, alias3=depth0 != null ? depth0 : (container.nullContext || {}), alias4=container.hooks.helperMissing, alias5="function", lookupProperty = container.lookupProperty || function(parent, propertyName) {
+        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+          return parent[propertyName];
+        }
+        return undefined
+    };
+
+  return "        <div data-schedule-id=\""
+    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,"model") : depth0)) != null ? lookupProperty(stack1,"id") : stack1), depth0))
+    + "\" data-calendar-id=\""
+    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,"model") : depth0)) != null ? lookupProperty(stack1,"calendarId") : stack1), depth0))
+    + "\" class=\""
+    + alias2(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias4),(typeof helper === alias5 ? helper.call(alias3,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":14,"column":92},"end":{"line":14,"column":106}}}) : helper)))
+    + "weekday-schedule "
+    + ((stack1 = lookupProperty(helpers,"if").call(alias3,((stack1 = (depth0 != null ? lookupProperty(depth0,"model") : depth0)) != null ? lookupProperty(stack1,"isFocused") : stack1),{"name":"if","hash":{},"fn":container.program(11, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":14,"column":123},"end":{"line":14,"column":192}}})) != null ? stack1 : "")
+    + "\"\n             style=\"height:"
+    + alias2(alias1(((stack1 = (data && lookupProperty(data,"root"))) && lookupProperty(stack1,"scheduleHeight")), depth0))
+    + "px; line-height:"
+    + alias2(alias1(((stack1 = (data && lookupProperty(data,"root"))) && lookupProperty(stack1,"scheduleHeight")), depth0))
+    + "px; border-radius: "
+    + alias2(alias1(((stack1 = ((stack1 = (data && lookupProperty(data,"root"))) && lookupProperty(stack1,"styles"))) && lookupProperty(stack1,"borderRadius")), depth0))
+    + ";\n"
+    + ((stack1 = lookupProperty(helpers,"unless").call(alias3,(depth0 != null ? lookupProperty(depth0,"exceedLeft") : depth0),{"name":"unless","hash":{},"fn":container.program(13, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":16,"column":16},"end":{"line":18,"column":27}}})) != null ? stack1 : "")
+    + ((stack1 = lookupProperty(helpers,"unless").call(alias3,(depth0 != null ? lookupProperty(depth0,"exceedRight") : depth0),{"name":"unless","hash":{},"fn":container.program(15, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":19,"column":16},"end":{"line":21,"column":27}}})) != null ? stack1 : "")
+    + ((stack1 = lookupProperty(helpers,"if").call(alias3,((stack1 = (depth0 != null ? lookupProperty(depth0,"model") : depth0)) != null ? lookupProperty(stack1,"isFocused") : stack1),{"name":"if","hash":{},"fn":container.program(17, data, 0),"inverse":container.program(19, data, 0),"data":data,"loc":{"start":{"line":22,"column":16},"end":{"line":26,"column":23}}})) != null ? stack1 : "")
+    + "                    "
+    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,"model") : depth0)) != null ? lookupProperty(stack1,"customStyle") : stack1), depth0))
+    + "\">\n            <span class=\""
+    + alias2(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias4),(typeof helper === alias5 ? helper.call(alias3,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":28,"column":25},"end":{"line":28,"column":39}}}) : helper)))
+    + "weekday-schedule-title\"\n                  data-title=\""
+    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,"model") : depth0)) != null ? lookupProperty(stack1,"title") : stack1), depth0))
+    + "\">"
+    + ((stack1 = (lookupProperty(helpers,"allday-tmpl")||(depth0 && lookupProperty(depth0,"allday-tmpl"))||alias4).call(alias3,(depth0 != null ? lookupProperty(depth0,"model") : depth0),{"name":"allday-tmpl","hash":{},"data":data,"loc":{"start":{"line":29,"column":47},"end":{"line":29,"column":70}}})) != null ? stack1 : "")
+    + "</span>\n            "
+    + ((stack1 = lookupProperty(helpers,"unless").call(alias3,(lookupProperty(helpers,"or")||(depth0 && lookupProperty(depth0,"or"))||alias4).call(alias3,((stack1 = (data && lookupProperty(data,"root"))) && lookupProperty(stack1,"isReadOnly")),((stack1 = (depth0 != null ? lookupProperty(depth0,"model") : depth0)) != null ? lookupProperty(stack1,"isReadOnly") : stack1),{"name":"or","hash":{},"data":data,"loc":{"start":{"line":30,"column":22},"end":{"line":30,"column":60}}}),{"name":"unless","hash":{},"fn":container.program(21, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":30,"column":12},"end":{"line":30,"column":194}}})) != null ? stack1 : "")
+    + "\n        </div>\n";
+},"11":function(container,depth0,helpers,partials,data) {
+    var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {
+        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+          return parent[propertyName];
+        }
+        return undefined
+    };
+
+  return container.escapeExpression(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === "function" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":14,"column":146},"end":{"line":14,"column":160}}}) : helper)))
+    + "weekday-schedule-focused ";
+},"13":function(container,depth0,helpers,partials,data) {
+    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {
+        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+          return parent[propertyName];
+        }
+        return undefined
+    };
+
+  return "                    margin-left: "
+    + container.escapeExpression(container.lambda(((stack1 = ((stack1 = (data && lookupProperty(data,"root"))) && lookupProperty(stack1,"styles"))) && lookupProperty(stack1,"marginLeft")), depth0))
+    + ";\n";
+},"15":function(container,depth0,helpers,partials,data) {
+    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {
+        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+          return parent[propertyName];
+        }
+        return undefined
+    };
+
+  return "                    margin-right: "
+    + container.escapeExpression(container.lambda(((stack1 = ((stack1 = (data && lookupProperty(data,"root"))) && lookupProperty(stack1,"styles"))) && lookupProperty(stack1,"marginRight")), depth0))
+    + ";\n";
+},"17":function(container,depth0,helpers,partials,data) {
+    var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {
+        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+          return parent[propertyName];
+        }
+        return undefined
+    };
+
+  return "                    color: #ffffff; background-color:"
+    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,"model") : depth0)) != null ? lookupProperty(stack1,"color") : stack1), depth0))
+    + "; border-color:"
+    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,"model") : depth0)) != null ? lookupProperty(stack1,"color") : stack1), depth0))
+    + ";\n";
+},"19":function(container,depth0,helpers,partials,data) {
+    var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {
+        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+          return parent[propertyName];
+        }
+        return undefined
+    };
+
+  return "                    color:"
+    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,"model") : depth0)) != null ? lookupProperty(stack1,"color") : stack1), depth0))
+    + "; background-color:"
+    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,"model") : depth0)) != null ? lookupProperty(stack1,"bgColor") : stack1), depth0))
+    + "; border-color:"
+    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,"model") : depth0)) != null ? lookupProperty(stack1,"borderColor") : stack1), depth0))
+    + ";\n";
+},"21":function(container,depth0,helpers,partials,data) {
+    var stack1, helper, alias1=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {
+        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+          return parent[propertyName];
+        }
+        return undefined
+    };
+
+  return "<span class=\""
+    + alias1(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === "function" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":30,"column":75},"end":{"line":30,"column":89}}}) : helper)))
+    + "weekday-resize-handle handle-y\" style=\"line-height: "
+    + alias1(container.lambda(((stack1 = (data && lookupProperty(data,"root"))) && lookupProperty(stack1,"scheduleHeight")), depth0))
+    + "px;\">&nbsp;</span>";
+},"23":function(container,depth0,helpers,partials,data) {
+    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {
+        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+          return parent[propertyName];
+        }
+        return undefined
+    };
+
+  return ((stack1 = (lookupProperty(helpers,"fi")||(depth0 && lookupProperty(depth0,"fi"))||container.hooks.helperMissing).call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = (depth0 != null ? lookupProperty(depth0,"model") : depth0)) != null ? lookupProperty(stack1,"category") : stack1),"===","time",{"name":"fi","hash":{},"fn":container.program(24, data, 0),"inverse":container.program(33, data, 0),"data":data,"loc":{"start":{"line":33,"column":12},"end":{"line":74,"column":19}}})) != null ? stack1 : "");
+},"24":function(container,depth0,helpers,partials,data) {
+    var stack1, helper, alias1=container.lambda, alias2=container.escapeExpression, alias3=depth0 != null ? depth0 : (container.nullContext || {}), alias4=container.hooks.helperMissing, alias5="function", lookupProperty = container.lookupProperty || function(parent, propertyName) {
+        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+          return parent[propertyName];
+        }
+        return undefined
+    };
+
+  return "                <div data-schedule-id=\""
+    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,"model") : depth0)) != null ? lookupProperty(stack1,"id") : stack1), depth0))
+    + "\" data-calendar-id=\""
+    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,"model") : depth0)) != null ? lookupProperty(stack1,"calendarId") : stack1), depth0))
+    + "\" class=\""
+    + alias2(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias4),(typeof helper === alias5 ? helper.call(alias3,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":34,"column":100},"end":{"line":34,"column":114}}}) : helper)))
+    + "weekday-schedule "
+    + alias2(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias4),(typeof helper === alias5 ? helper.call(alias3,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":34,"column":131},"end":{"line":34,"column":145}}}) : helper)))
+    + "weekday-schedule-time\"\n                    style=\"height:"
+    + alias2(alias1(((stack1 = (data && lookupProperty(data,"root"))) && lookupProperty(stack1,"scheduleHeight")), depth0))
+    + "px; line-height:"
+    + alias2(alias1(((stack1 = (data && lookupProperty(data,"root"))) && lookupProperty(stack1,"scheduleHeight")), depth0))
+    + "px; "
+    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,"model") : depth0)) != null ? lookupProperty(stack1,"customStyle") : stack1), depth0))
+    + "\">\n                    <span class=\""
+    + alias2(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias4),(typeof helper === alias5 ? helper.call(alias3,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":36,"column":33},"end":{"line":36,"column":47}}}) : helper)))
+    + "weekday-schedule-bullet\"\n                        style=\"top: "
+    + alias2(alias1(((stack1 = ((stack1 = (data && lookupProperty(data,"root"))) && lookupProperty(stack1,"styles"))) && lookupProperty(stack1,"scheduleBulletTop")), depth0))
+    + "px;\n"
+    + ((stack1 = lookupProperty(helpers,"if").call(alias3,((stack1 = (depth0 != null ? lookupProperty(depth0,"model") : depth0)) != null ? lookupProperty(stack1,"isFocused") : stack1),{"name":"if","hash":{},"fn":container.program(25, data, 0),"inverse":container.program(27, data, 0),"data":data,"loc":{"start":{"line":38,"column":28},"end":{"line":42,"column":35}}})) != null ? stack1 : "")
+    + "                            \"\n                    ></span>\n                    <span class=\""
+    + alias2(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias4),(typeof helper === alias5 ? helper.call(alias3,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":45,"column":33},"end":{"line":45,"column":47}}}) : helper)))
+    + "weekday-schedule-title\"\n                        style=\"\n"
+    + ((stack1 = lookupProperty(helpers,"if").call(alias3,((stack1 = (depth0 != null ? lookupProperty(depth0,"model") : depth0)) != null ? lookupProperty(stack1,"isFocused") : stack1),{"name":"if","hash":{},"fn":container.program(29, data, 0),"inverse":container.program(31, data, 0),"data":data,"loc":{"start":{"line":47,"column":28},"end":{"line":52,"column":35}}})) != null ? stack1 : "")
+    + "                            \"\n                        data-title=\""
+    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,"model") : depth0)) != null ? lookupProperty(stack1,"title") : stack1), depth0))
+    + "\">"
+    + ((stack1 = (lookupProperty(helpers,"time-tmpl")||(depth0 && lookupProperty(depth0,"time-tmpl"))||alias4).call(alias3,(depth0 != null ? lookupProperty(depth0,"model") : depth0),{"name":"time-tmpl","hash":{},"data":data,"loc":{"start":{"line":54,"column":53},"end":{"line":54,"column":74}}})) != null ? stack1 : "")
+    + "</span>\n                </div>\n";
+},"25":function(container,depth0,helpers,partials,data) {
+    return "                                background: #ffffff\n";
+},"27":function(container,depth0,helpers,partials,data) {
+    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {
+        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+          return parent[propertyName];
+        }
+        return undefined
+    };
+
+  return "                                background:"
+    + container.escapeExpression(container.lambda(((stack1 = (depth0 != null ? lookupProperty(depth0,"model") : depth0)) != null ? lookupProperty(stack1,"borderColor") : stack1), depth0))
+    + "\n";
+},"29":function(container,depth0,helpers,partials,data) {
+    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {
+        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+          return parent[propertyName];
+        }
+        return undefined
+    };
+
+  return "                                color: #ffffff;\n                                background-color: "
+    + container.escapeExpression(container.lambda(((stack1 = (depth0 != null ? lookupProperty(depth0,"model") : depth0)) != null ? lookupProperty(stack1,"color") : stack1), depth0))
+    + "\n";
+},"31":function(container,depth0,helpers,partials,data) {
+    return "                                color:#333;\n";
+},"33":function(container,depth0,helpers,partials,data) {
+    var stack1, helper, alias1=container.lambda, alias2=container.escapeExpression, alias3=depth0 != null ? depth0 : (container.nullContext || {}), alias4=container.hooks.helperMissing, alias5="function", lookupProperty = container.lookupProperty || function(parent, propertyName) {
+        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+          return parent[propertyName];
+        }
+        return undefined
+    };
+
+  return "<div data-schedule-id=\""
+    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,"model") : depth0)) != null ? lookupProperty(stack1,"id") : stack1), depth0))
+    + "\" data-calendar-id=\""
+    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,"model") : depth0)) != null ? lookupProperty(stack1,"calendarId") : stack1), depth0))
+    + "\" class=\""
+    + alias2(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias4),(typeof helper === alias5 ? helper.call(alias3,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":57,"column":100},"end":{"line":57,"column":114}}}) : helper)))
+    + "weekday-schedule "
+    + ((stack1 = lookupProperty(helpers,"if").call(alias3,((stack1 = (depth0 != null ? lookupProperty(depth0,"model") : depth0)) != null ? lookupProperty(stack1,"isFocused") : stack1),{"name":"if","hash":{},"fn":container.program(11, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":57,"column":131},"end":{"line":57,"column":200}}})) != null ? stack1 : "")
+    + "\"\n                    style=\"height:"
+    + alias2(alias1(((stack1 = (data && lookupProperty(data,"root"))) && lookupProperty(stack1,"scheduleHeight")), depth0))
+    + "px; line-height:"
+    + alias2(alias1(((stack1 = (data && lookupProperty(data,"root"))) && lookupProperty(stack1,"scheduleHeight")), depth0))
+    + "px; border-radius: "
+    + alias2(alias1(((stack1 = ((stack1 = (data && lookupProperty(data,"root"))) && lookupProperty(stack1,"styles"))) && lookupProperty(stack1,"borderRadius")), depth0))
+    + ";\n"
+    + ((stack1 = lookupProperty(helpers,"unless").call(alias3,(depth0 != null ? lookupProperty(depth0,"exceedLeft") : depth0),{"name":"unless","hash":{},"fn":container.program(34, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":59,"column":20},"end":{"line":61,"column":31}}})) != null ? stack1 : "")
+    + ((stack1 = lookupProperty(helpers,"unless").call(alias3,(depth0 != null ? lookupProperty(depth0,"exceedRight") : depth0),{"name":"unless","hash":{},"fn":container.program(36, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":62,"column":20},"end":{"line":64,"column":31}}})) != null ? stack1 : "")
+    + ((stack1 = lookupProperty(helpers,"if").call(alias3,((stack1 = (depth0 != null ? lookupProperty(depth0,"model") : depth0)) != null ? lookupProperty(stack1,"isFocused") : stack1),{"name":"if","hash":{},"fn":container.program(38, data, 0),"inverse":container.program(40, data, 0),"data":data,"loc":{"start":{"line":65,"column":20},"end":{"line":69,"column":27}}})) != null ? stack1 : "")
+    + "                        "
+    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,"model") : depth0)) != null ? lookupProperty(stack1,"customStyle") : stack1), depth0))
+    + "\">\n                    <span class=\""
+    + alias2(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias4),(typeof helper === alias5 ? helper.call(alias3,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":71,"column":33},"end":{"line":71,"column":47}}}) : helper)))
+    + "weekday-schedule-title\"\n                                    data-title=\""
+    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,"model") : depth0)) != null ? lookupProperty(stack1,"title") : stack1), depth0))
+    + "\">"
+    + ((stack1 = (lookupProperty(helpers,"schedule-tmpl")||(depth0 && lookupProperty(depth0,"schedule-tmpl"))||alias4).call(alias3,(depth0 != null ? lookupProperty(depth0,"model") : depth0),{"name":"schedule-tmpl","hash":{},"data":data,"loc":{"start":{"line":72,"column":65},"end":{"line":72,"column":90}}})) != null ? stack1 : "")
+    + "</span>\n                </div>\n";
+},"34":function(container,depth0,helpers,partials,data) {
+    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {
+        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+          return parent[propertyName];
+        }
+        return undefined
+    };
+
+  return "                        margin-left: "
+    + container.escapeExpression(container.lambda(((stack1 = ((stack1 = (data && lookupProperty(data,"root"))) && lookupProperty(stack1,"styles"))) && lookupProperty(stack1,"marginLeft")), depth0))
+    + ";\n";
+},"36":function(container,depth0,helpers,partials,data) {
+    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {
+        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+          return parent[propertyName];
+        }
+        return undefined
+    };
+
+  return "                        margin-right: "
+    + container.escapeExpression(container.lambda(((stack1 = ((stack1 = (data && lookupProperty(data,"root"))) && lookupProperty(stack1,"styles"))) && lookupProperty(stack1,"marginRight")), depth0))
+    + ";\n";
+},"38":function(container,depth0,helpers,partials,data) {
+    var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {
+        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+          return parent[propertyName];
+        }
+        return undefined
+    };
+
+  return "                        color: #ffffff; background-color:"
+    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,"model") : depth0)) != null ? lookupProperty(stack1,"color") : stack1), depth0))
+    + "; border-color:"
+    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,"model") : depth0)) != null ? lookupProperty(stack1,"color") : stack1), depth0))
+    + ";\n";
+},"40":function(container,depth0,helpers,partials,data) {
+    var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {
+        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+          return parent[propertyName];
+        }
+        return undefined
+    };
+
+  return "                        color:"
+    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,"model") : depth0)) != null ? lookupProperty(stack1,"color") : stack1), depth0))
+    + "; background-color:"
+    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,"model") : depth0)) != null ? lookupProperty(stack1,"bgColor") : stack1), depth0))
+    + "; border-color:"
+    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,"model") : depth0)) != null ? lookupProperty(stack1,"borderColor") : stack1), depth0))
+    + ";\n";
+},"compiler":[8,">= 4.3.0"],"main":function(container,depth0,helpers,partials,data) {
+    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {
+        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+          return parent[propertyName];
+        }
+        return undefined
+    };
+
+  return ((stack1 = lookupProperty(helpers,"each").call(depth0 != null ? depth0 : (container.nullContext || {}),(depth0 != null ? lookupProperty(depth0,"matrices") : depth0),{"name":"each","hash":{},"fn":container.program(1, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":1,"column":0},"end":{"line":81,"column":11}}})) != null ? stack1 : "");
+},"useData":true});
+
+/***/ }),
+
+/***/ "./src/js/view/template/popup/scheduleCreationPopup.hbs":
+/*!**************************************************************!*\
+  !*** ./src/js/view/template/popup/scheduleCreationPopup.hbs ***!
+  \**************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var Handlebars = __webpack_require__(/*! ./node_modules/handlebars/runtime.js */ "./node_modules/handlebars/runtime.js");
+module.exports = (Handlebars['default'] || Handlebars).template({"1":function(container,depth0,helpers,partials,data) {
+    var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {
+        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+          return parent[propertyName];
+        }
+        return undefined
+    };
+
+  return " "
+    + container.escapeExpression(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === "function" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":3,"column":150},"end":{"line":3,"column":164}}}) : helper)))
+    + "hide";
+},"3":function(container,depth0,helpers,partials,data) {
+    var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3="function", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {
+        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+          return parent[propertyName];
+        }
+        return undefined
+    };
+
+  return "                    <li class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":11,"column":31},"end":{"line":11,"column":45}}}) : helper)))
+    + "popup-section-item "
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":11,"column":64},"end":{"line":11,"column":78}}}) : helper)))
+    + "dropdown-menu-item\" data-calendar-id=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"id") || (depth0 != null ? lookupProperty(depth0,"id") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"id","hash":{},"data":data,"loc":{"start":{"line":11,"column":116},"end":{"line":11,"column":122}}}) : helper)))
+    + "\">\n                        <span class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":12,"column":37},"end":{"line":12,"column":51}}}) : helper)))
+    + "icon "
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":12,"column":56},"end":{"line":12,"column":70}}}) : helper)))
+    + "calendar-dot\" style=\"background-color: "
+    + alias4(((helper = (helper = lookupProperty(helpers,"bgColor") || (depth0 != null ? lookupProperty(depth0,"bgColor") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"bgColor","hash":{},"data":data,"loc":{"start":{"line":12,"column":109},"end":{"line":12,"column":120}}}) : helper)))
+    + "\"></span>\n                        <span class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":13,"column":37},"end":{"line":13,"column":51}}}) : helper)))
+    + "content\">"
+    + alias4(((helper = (helper = lookupProperty(helpers,"name") || (depth0 != null ? lookupProperty(depth0,"name") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"name","hash":{},"data":data,"loc":{"start":{"line":13,"column":60},"end":{"line":13,"column":68}}}) : helper)))
+    + "</span>\n                    </li>\n";
+},"5":function(container,depth0,helpers,partials,data) {
+    var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {
+        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+          return parent[propertyName];
+        }
+        return undefined
+    };
+
+  return " "
+    + container.escapeExpression(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === "function" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":23,"column":135},"end":{"line":23,"column":149}}}) : helper)))
+    + "public";
+},"7":function(container,depth0,helpers,partials,data) {
+    return " checked";
+},"9":function(container,depth0,helpers,partials,data) {
+    var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {
+        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+          return parent[propertyName];
+        }
+        return undefined
+    };
+
+  return container.escapeExpression(((helper = (helper = lookupProperty(helpers,"state") || (depth0 != null ? lookupProperty(depth0,"state") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === "function" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{"name":"state","hash":{},"data":data,"loc":{"start":{"line":54,"column":99},"end":{"line":54,"column":108}}}) : helper)));
+},"11":function(container,depth0,helpers,partials,data) {
+    var stack1, helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {
+        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+          return parent[propertyName];
+        }
+        return undefined
+    };
+
+  return ((stack1 = ((helper = (helper = lookupProperty(helpers,"popupStateBusy-tmpl") || (depth0 != null ? lookupProperty(depth0,"popupStateBusy-tmpl") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === "function" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{"name":"popupStateBusy-tmpl","hash":{},"data":data,"loc":{"start":{"line":54,"column":116},"end":{"line":54,"column":141}}}) : helper))) != null ? stack1 : "");
+},"13":function(container,depth0,helpers,partials,data) {
+    var stack1, helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {
+        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+          return parent[propertyName];
+        }
+        return undefined
+    };
+
+  return ((stack1 = ((helper = (helper = lookupProperty(helpers,"popupUpdate-tmpl") || (depth0 != null ? lookupProperty(depth0,"popupUpdate-tmpl") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === "function" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{"name":"popupUpdate-tmpl","hash":{},"data":data,"loc":{"start":{"line":69,"column":163},"end":{"line":69,"column":185}}}) : helper))) != null ? stack1 : "");
+},"15":function(container,depth0,helpers,partials,data) {
+    var stack1, helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {
+        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+          return parent[propertyName];
+        }
+        return undefined
+    };
+
+  return ((stack1 = ((helper = (helper = lookupProperty(helpers,"popupSave-tmpl") || (depth0 != null ? lookupProperty(depth0,"popupSave-tmpl") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === "function" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{"name":"popupSave-tmpl","hash":{},"data":data,"loc":{"start":{"line":69,"column":193},"end":{"line":69,"column":213}}}) : helper))) != null ? stack1 : "");
+},"compiler":[8,">= 4.3.0"],"main":function(container,depth0,helpers,partials,data) {
+    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3="function", alias4=container.escapeExpression, alias5=container.lambda, lookupProperty = container.lookupProperty || function(parent, propertyName) {
+        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+          return parent[propertyName];
+        }
+        return undefined
+    };
+
+  return "<div class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":1,"column":12},"end":{"line":1,"column":26}}}) : helper)))
+    + "popup\">\n    <div class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":2,"column":16},"end":{"line":2,"column":30}}}) : helper)))
+    + "popup-container\">\n        <div class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":3,"column":20},"end":{"line":3,"column":34}}}) : helper)))
+    + "popup-section "
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":3,"column":48},"end":{"line":3,"column":62}}}) : helper)))
+    + "dropdown "
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":3,"column":71},"end":{"line":3,"column":85}}}) : helper)))
+    + "close "
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":3,"column":91},"end":{"line":3,"column":105}}}) : helper)))
+    + "section-calendar"
+    + ((stack1 = lookupProperty(helpers,"unless").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,"calendars") : depth0)) != null ? lookupProperty(stack1,"length") : stack1),{"name":"unless","hash":{},"fn":container.program(1, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":3,"column":121},"end":{"line":3,"column":179}}})) != null ? stack1 : "")
+    + "\">\n            <button class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":4,"column":27},"end":{"line":4,"column":41}}}) : helper)))
+    + "button "
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":4,"column":48},"end":{"line":4,"column":62}}}) : helper)))
+    + "dropdown-button "
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":4,"column":78},"end":{"line":4,"column":92}}}) : helper)))
+    + "popup-section-item\">\n                <span class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":5,"column":29},"end":{"line":5,"column":43}}}) : helper)))
+    + "icon "
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":5,"column":48},"end":{"line":5,"column":62}}}) : helper)))
+    + "calendar-dot\" style=\"background-color: "
+    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,"selectedCal") : depth0)) != null ? lookupProperty(stack1,"bgColor") : stack1), depth0))
+    + "\"></span>\n                <span id=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":6,"column":26},"end":{"line":6,"column":40}}}) : helper)))
+    + "schedule-calendar\" class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":6,"column":66},"end":{"line":6,"column":80}}}) : helper)))
+    + "content\">"
+    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,"selectedCal") : depth0)) != null ? lookupProperty(stack1,"name") : stack1), depth0))
+    + "</span>\n                <span class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":7,"column":29},"end":{"line":7,"column":43}}}) : helper)))
+    + "icon "
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":7,"column":48},"end":{"line":7,"column":62}}}) : helper)))
+    + "dropdown-arrow\"></span>\n            </button>\n            <ul class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":9,"column":23},"end":{"line":9,"column":37}}}) : helper)))
+    + "dropdown-menu\" style=\"z-index: "
+    + alias4(((helper = (helper = lookupProperty(helpers,"zIndex") || (depth0 != null ? lookupProperty(depth0,"zIndex") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"zIndex","hash":{},"data":data,"loc":{"start":{"line":9,"column":68},"end":{"line":9,"column":78}}}) : helper)))
+    + "\">\n"
+    + ((stack1 = lookupProperty(helpers,"each").call(alias1,(depth0 != null ? lookupProperty(depth0,"calendars") : depth0),{"name":"each","hash":{},"fn":container.program(3, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":10,"column":16},"end":{"line":15,"column":25}}})) != null ? stack1 : "")
+    + "            </ul>\n        </div>\n        <div class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":18,"column":20},"end":{"line":18,"column":34}}}) : helper)))
+    + "popup-section\">\n            <div class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":19,"column":24},"end":{"line":19,"column":38}}}) : helper)))
+    + "popup-section-item "
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":19,"column":57},"end":{"line":19,"column":71}}}) : helper)))
+    + "section-title\">\n            <span class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":20,"column":25},"end":{"line":20,"column":39}}}) : helper)))
+    + "icon "
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":20,"column":44},"end":{"line":20,"column":58}}}) : helper)))
+    + "ic-title\"></span>\n                <input id=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":21,"column":27},"end":{"line":21,"column":41}}}) : helper)))
+    + "schedule-title\" class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":21,"column":64},"end":{"line":21,"column":78}}}) : helper)))
+    + "content\" placeholder=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"titlePlaceholder-tmpl") || (depth0 != null ? lookupProperty(depth0,"titlePlaceholder-tmpl") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"titlePlaceholder-tmpl","hash":{},"data":data,"loc":{"start":{"line":21,"column":100},"end":{"line":21,"column":125}}}) : helper)))
+    + "\" value=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"title") || (depth0 != null ? lookupProperty(depth0,"title") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"title","hash":{},"data":data,"loc":{"start":{"line":21,"column":134},"end":{"line":21,"column":143}}}) : helper)))
+    + "\">\n            </div>\n            <button id=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":23,"column":24},"end":{"line":23,"column":38}}}) : helper)))
+    + "schedule-private\" class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":23,"column":63},"end":{"line":23,"column":77}}}) : helper)))
+    + "button "
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":23,"column":84},"end":{"line":23,"column":98}}}) : helper)))
+    + "section-private"
+    + ((stack1 = lookupProperty(helpers,"unless").call(alias1,(depth0 != null ? lookupProperty(depth0,"isPrivate") : depth0),{"name":"unless","hash":{},"fn":container.program(5, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":23,"column":113},"end":{"line":23,"column":166}}})) != null ? stack1 : "")
+    + "\">\n            <span class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":24,"column":25},"end":{"line":24,"column":39}}}) : helper)))
+    + "icon "
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":24,"column":44},"end":{"line":24,"column":58}}}) : helper)))
+    + "ic-private\"></span>\n            </button>\n        </div>\n        <div class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":27,"column":20},"end":{"line":27,"column":34}}}) : helper)))
+    + "popup-section\">\n            <div class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":28,"column":24},"end":{"line":28,"column":38}}}) : helper)))
+    + "popup-section-item "
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":28,"column":57},"end":{"line":28,"column":71}}}) : helper)))
+    + "section-location\">\n            <span class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":29,"column":25},"end":{"line":29,"column":39}}}) : helper)))
+    + "icon "
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":29,"column":44},"end":{"line":29,"column":58}}}) : helper)))
+    + "ic-location\"></span>\n                <input id=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":30,"column":27},"end":{"line":30,"column":41}}}) : helper)))
+    + "schedule-location\" class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":30,"column":67},"end":{"line":30,"column":81}}}) : helper)))
+    + "content\" placeholder=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"locationPlaceholder-tmpl") || (depth0 != null ? lookupProperty(depth0,"locationPlaceholder-tmpl") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"locationPlaceholder-tmpl","hash":{},"data":data,"loc":{"start":{"line":30,"column":103},"end":{"line":30,"column":131}}}) : helper)))
+    + "\" value=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"location") || (depth0 != null ? lookupProperty(depth0,"location") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"location","hash":{},"data":data,"loc":{"start":{"line":30,"column":140},"end":{"line":30,"column":152}}}) : helper)))
+    + "\">\n            </div>\n        </div>\n        <div class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":33,"column":20},"end":{"line":33,"column":34}}}) : helper)))
+    + "popup-section\">\n            <div class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":34,"column":24},"end":{"line":34,"column":38}}}) : helper)))
+    + "popup-section-item "
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":34,"column":57},"end":{"line":34,"column":71}}}) : helper)))
+    + "section-start-date\">\n                <span class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":35,"column":29},"end":{"line":35,"column":43}}}) : helper)))
+    + "icon "
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":35,"column":48},"end":{"line":35,"column":62}}}) : helper)))
+    + "ic-date\"></span>\n                <input id=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":36,"column":27},"end":{"line":36,"column":41}}}) : helper)))
+    + "schedule-start-date\" class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":36,"column":69},"end":{"line":36,"column":83}}}) : helper)))
+    + "content\" placeholder=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"startDatePlaceholder-tmpl") || (depth0 != null ? lookupProperty(depth0,"startDatePlaceholder-tmpl") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"startDatePlaceholder-tmpl","hash":{},"data":data,"loc":{"start":{"line":36,"column":105},"end":{"line":36,"column":134}}}) : helper)))
+    + "\">\n                <div id=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":37,"column":25},"end":{"line":37,"column":39}}}) : helper)))
+    + "startpicker-container\" style=\"margin-left: -1px; position: relative\"></div>\n            </div>\n            <span class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":39,"column":25},"end":{"line":39,"column":39}}}) : helper)))
+    + "section-date-dash\">-</span>\n            <div class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":40,"column":24},"end":{"line":40,"column":38}}}) : helper)))
+    + "popup-section-item "
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":40,"column":57},"end":{"line":40,"column":71}}}) : helper)))
+    + "section-end-date\">\n                <span class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":41,"column":29},"end":{"line":41,"column":43}}}) : helper)))
+    + "icon "
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":41,"column":48},"end":{"line":41,"column":62}}}) : helper)))
+    + "ic-date\"></span>\n                <input id=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":42,"column":27},"end":{"line":42,"column":41}}}) : helper)))
+    + "schedule-end-date\" class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":42,"column":67},"end":{"line":42,"column":81}}}) : helper)))
+    + "content\" placeholder=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"endDatePlaceholder-tmpl") || (depth0 != null ? lookupProperty(depth0,"endDatePlaceholder-tmpl") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"endDatePlaceholder-tmpl","hash":{},"data":data,"loc":{"start":{"line":42,"column":103},"end":{"line":42,"column":130}}}) : helper)))
+    + "\">\n                <div id=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":43,"column":25},"end":{"line":43,"column":39}}}) : helper)))
+    + "endpicker-container\" style=\"margin-left: -1px; position: relative\"></div>\n            </div>\n            <div class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":45,"column":24},"end":{"line":45,"column":38}}}) : helper)))
+    + "popup-section-item "
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":45,"column":57},"end":{"line":45,"column":71}}}) : helper)))
+    + "section-allday\">\n                <input id=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":46,"column":27},"end":{"line":46,"column":41}}}) : helper)))
+    + "schedule-allday\" type=\"checkbox\" class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":46,"column":81},"end":{"line":46,"column":95}}}) : helper)))
+    + "checkbox-square\""
+    + ((stack1 = lookupProperty(helpers,"if").call(alias1,(depth0 != null ? lookupProperty(depth0,"isAllDay") : depth0),{"name":"if","hash":{},"fn":container.program(7, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":46,"column":111},"end":{"line":46,"column":142}}})) != null ? stack1 : "")
+    + ">\n                <span class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":47,"column":29},"end":{"line":47,"column":43}}}) : helper)))
+    + "icon "
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":47,"column":48},"end":{"line":47,"column":62}}}) : helper)))
+    + "ic-checkbox\"></span>\n                <span class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":48,"column":29},"end":{"line":48,"column":43}}}) : helper)))
+    + "content\">"
+    + ((stack1 = ((helper = (helper = lookupProperty(helpers,"popupIsAllDay-tmpl") || (depth0 != null ? lookupProperty(depth0,"popupIsAllDay-tmpl") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"popupIsAllDay-tmpl","hash":{},"data":data,"loc":{"start":{"line":48,"column":52},"end":{"line":48,"column":76}}}) : helper))) != null ? stack1 : "")
+    + "</span>\n            </div>\n        </div>\n        <div class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":51,"column":20},"end":{"line":51,"column":34}}}) : helper)))
+    + "popup-section "
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":51,"column":48},"end":{"line":51,"column":62}}}) : helper)))
+    + "dropdown "
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":51,"column":71},"end":{"line":51,"column":85}}}) : helper)))
+    + "close "
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":51,"column":91},"end":{"line":51,"column":105}}}) : helper)))
+    + "section-state\">\n            <button class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":52,"column":27},"end":{"line":52,"column":41}}}) : helper)))
+    + "button "
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":52,"column":48},"end":{"line":52,"column":62}}}) : helper)))
+    + "dropdown-button "
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":52,"column":78},"end":{"line":52,"column":92}}}) : helper)))
+    + "popup-section-item\">\n                <span class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":53,"column":29},"end":{"line":53,"column":43}}}) : helper)))
+    + "icon "
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":53,"column":48},"end":{"line":53,"column":62}}}) : helper)))
+    + "ic-state\"></span>\n                <span id=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":54,"column":26},"end":{"line":54,"column":40}}}) : helper)))
+    + "schedule-state\" class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":54,"column":63},"end":{"line":54,"column":77}}}) : helper)))
+    + "content\">"
+    + ((stack1 = lookupProperty(helpers,"if").call(alias1,(depth0 != null ? lookupProperty(depth0,"state") : depth0),{"name":"if","hash":{},"fn":container.program(9, data, 0),"inverse":container.program(11, data, 0),"data":data,"loc":{"start":{"line":54,"column":86},"end":{"line":54,"column":148}}})) != null ? stack1 : "")
+    + "</span>\n                <span class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":55,"column":29},"end":{"line":55,"column":43}}}) : helper)))
+    + "icon "
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":55,"column":48},"end":{"line":55,"column":62}}}) : helper)))
+    + "dropdown-arrow\"></span>\n            </button>\n            <ul class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":57,"column":23},"end":{"line":57,"column":37}}}) : helper)))
+    + "dropdown-menu\" style=\"z-index: "
+    + alias4(((helper = (helper = lookupProperty(helpers,"zIndex") || (depth0 != null ? lookupProperty(depth0,"zIndex") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"zIndex","hash":{},"data":data,"loc":{"start":{"line":57,"column":68},"end":{"line":57,"column":78}}}) : helper)))
+    + "\">\n                <li class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":58,"column":27},"end":{"line":58,"column":41}}}) : helper)))
+    + "popup-section-item "
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":58,"column":60},"end":{"line":58,"column":74}}}) : helper)))
+    + "dropdown-menu-item\">\n                <span class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":59,"column":29},"end":{"line":59,"column":43}}}) : helper)))
+    + "icon "
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":59,"column":48},"end":{"line":59,"column":62}}}) : helper)))
+    + "none\"></span>\n                <span class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":60,"column":29},"end":{"line":60,"column":43}}}) : helper)))
+    + "content\">"
+    + ((stack1 = ((helper = (helper = lookupProperty(helpers,"popupStateBusy-tmpl") || (depth0 != null ? lookupProperty(depth0,"popupStateBusy-tmpl") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"popupStateBusy-tmpl","hash":{},"data":data,"loc":{"start":{"line":60,"column":52},"end":{"line":60,"column":77}}}) : helper))) != null ? stack1 : "")
+    + "</span>\n                </li>\n                <li class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":62,"column":27},"end":{"line":62,"column":41}}}) : helper)))
+    + "popup-section-item "
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":62,"column":60},"end":{"line":62,"column":74}}}) : helper)))
+    + "dropdown-menu-item\">\n                <span class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":63,"column":29},"end":{"line":63,"column":43}}}) : helper)))
+    + "icon "
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":63,"column":48},"end":{"line":63,"column":62}}}) : helper)))
+    + "none\"></span>\n                <span class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":64,"column":29},"end":{"line":64,"column":43}}}) : helper)))
+    + "content\">"
+    + ((stack1 = ((helper = (helper = lookupProperty(helpers,"popupStateFree-tmpl") || (depth0 != null ? lookupProperty(depth0,"popupStateFree-tmpl") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"popupStateFree-tmpl","hash":{},"data":data,"loc":{"start":{"line":64,"column":52},"end":{"line":64,"column":77}}}) : helper))) != null ? stack1 : "")
+    + "</span>\n                </li>\n            </ul>\n        </div>\n        <button class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":68,"column":23},"end":{"line":68,"column":37}}}) : helper)))
+    + "button "
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":68,"column":44},"end":{"line":68,"column":58}}}) : helper)))
+    + "popup-close\"><span class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":68,"column":84},"end":{"line":68,"column":98}}}) : helper)))
+    + "icon "
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":68,"column":103},"end":{"line":68,"column":117}}}) : helper)))
+    + "ic-close\"></span></button>\n        <div class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":69,"column":20},"end":{"line":69,"column":34}}}) : helper)))
+    + "section-button-save\"><button class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":69,"column":70},"end":{"line":69,"column":84}}}) : helper)))
+    + "button "
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":69,"column":91},"end":{"line":69,"column":105}}}) : helper)))
+    + "confirm "
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":69,"column":113},"end":{"line":69,"column":127}}}) : helper)))
+    + "popup-save\"><span>"
+    + ((stack1 = lookupProperty(helpers,"if").call(alias1,(depth0 != null ? lookupProperty(depth0,"isEditMode") : depth0),{"name":"if","hash":{},"fn":container.program(13, data, 0),"inverse":container.program(15, data, 0),"data":data,"loc":{"start":{"line":69,"column":145},"end":{"line":69,"column":220}}})) != null ? stack1 : "")
+    + "</span></button></div>\n    </div>\n    <div id=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":71,"column":13},"end":{"line":71,"column":27}}}) : helper)))
+    + "popup-arrow\" class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":71,"column":47},"end":{"line":71,"column":61}}}) : helper)))
+    + "popup-arrow "
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":71,"column":73},"end":{"line":71,"column":87}}}) : helper)))
+    + "arrow-bottom\">\n        <div class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":72,"column":20},"end":{"line":72,"column":34}}}) : helper)))
+    + "popup-arrow-border\">\n            <div class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":73,"column":24},"end":{"line":73,"column":38}}}) : helper)))
+    + "popup-arrow-fill\"></div>\n        </div>\n    </div>\n</div>\n";
+},"useData":true});
+
+/***/ }),
+
+/***/ "./src/js/view/template/popup/scheduleDetailPopup.hbs":
+/*!************************************************************!*\
+  !*** ./src/js/view/template/popup/scheduleDetailPopup.hbs ***!
+  \************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var Handlebars = __webpack_require__(/*! ./node_modules/handlebars/runtime.js */ "./node_modules/handlebars/runtime.js");
+module.exports = (Handlebars['default'] || Handlebars).template({"1":function(container,depth0,helpers,partials,data) {
+    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3="function", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {
+        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+          return parent[propertyName];
+        }
+        return undefined
+    };
+
+  return "<div class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":11,"column":45},"end":{"line":11,"column":59}}}) : helper)))
+    + "popup-detail-item\"><span class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":11,"column":91},"end":{"line":11,"column":105}}}) : helper)))
+    + "icon "
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":11,"column":110},"end":{"line":11,"column":124}}}) : helper)))
+    + "ic-location-b\"></span><span class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":11,"column":159},"end":{"line":11,"column":173}}}) : helper)))
+    + "content\">"
+    + ((stack1 = (lookupProperty(helpers,"popupDetailLocation-tmpl")||(depth0 && lookupProperty(depth0,"popupDetailLocation-tmpl"))||alias2).call(alias1,(depth0 != null ? lookupProperty(depth0,"schedule") : depth0),{"name":"popupDetailLocation-tmpl","hash":{},"data":data,"loc":{"start":{"line":11,"column":182},"end":{"line":11,"column":221}}})) != null ? stack1 : "")
+    + "</span></div>";
+},"3":function(container,depth0,helpers,partials,data) {
+    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3="function", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {
+        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+          return parent[propertyName];
+        }
+        return undefined
+    };
+
+  return "<div class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":12,"column":51},"end":{"line":12,"column":65}}}) : helper)))
+    + "popup-detail-item\"><span class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":12,"column":97},"end":{"line":12,"column":111}}}) : helper)))
+    + "icon "
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":12,"column":116},"end":{"line":12,"column":130}}}) : helper)))
+    + "ic-repeat-b\"></span><span class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":12,"column":163},"end":{"line":12,"column":177}}}) : helper)))
+    + "content\">"
+    + ((stack1 = (lookupProperty(helpers,"popupDetailRepeat-tmpl")||(depth0 && lookupProperty(depth0,"popupDetailRepeat-tmpl"))||alias2).call(alias1,(depth0 != null ? lookupProperty(depth0,"schedule") : depth0),{"name":"popupDetailRepeat-tmpl","hash":{},"data":data,"loc":{"start":{"line":12,"column":186},"end":{"line":12,"column":223}}})) != null ? stack1 : "")
+    + "</span></div>";
+},"5":function(container,depth0,helpers,partials,data) {
+    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3="function", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {
+        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+          return parent[propertyName];
+        }
+        return undefined
+    };
+
+  return "<div class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":13,"column":46},"end":{"line":13,"column":60}}}) : helper)))
+    + "popup-detail-item "
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":13,"column":78},"end":{"line":13,"column":92}}}) : helper)))
+    + "popup-detail-item-indent\"><span class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":13,"column":131},"end":{"line":13,"column":145}}}) : helper)))
+    + "icon "
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":13,"column":150},"end":{"line":13,"column":164}}}) : helper)))
+    + "ic-user-b\"></span><span class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":13,"column":195},"end":{"line":13,"column":209}}}) : helper)))
+    + "content\">"
+    + ((stack1 = (lookupProperty(helpers,"popupDetailUser-tmpl")||(depth0 && lookupProperty(depth0,"popupDetailUser-tmpl"))||alias2).call(alias1,(depth0 != null ? lookupProperty(depth0,"schedule") : depth0),{"name":"popupDetailUser-tmpl","hash":{},"data":data,"loc":{"start":{"line":13,"column":218},"end":{"line":13,"column":253}}})) != null ? stack1 : "")
+    + "</span></div>";
+},"7":function(container,depth0,helpers,partials,data) {
+    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3="function", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {
+        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+          return parent[propertyName];
+        }
+        return undefined
+    };
+
+  return "<div class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":14,"column":42},"end":{"line":14,"column":56}}}) : helper)))
+    + "popup-detail-item\"><span class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":14,"column":88},"end":{"line":14,"column":102}}}) : helper)))
+    + "icon "
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":14,"column":107},"end":{"line":14,"column":121}}}) : helper)))
+    + "ic-state-b\"></span><span class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":14,"column":153},"end":{"line":14,"column":167}}}) : helper)))
+    + "content\">"
+    + ((stack1 = (lookupProperty(helpers,"popupDetailState-tmpl")||(depth0 && lookupProperty(depth0,"popupDetailState-tmpl"))||alias2).call(alias1,(depth0 != null ? lookupProperty(depth0,"schedule") : depth0),{"name":"popupDetailState-tmpl","hash":{},"data":data,"loc":{"start":{"line":14,"column":176},"end":{"line":14,"column":212}}})) != null ? stack1 : "")
+    + "</span></div>";
+},"9":function(container,depth0,helpers,partials,data) {
+    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3="function", alias4=container.escapeExpression, alias5=container.lambda, lookupProperty = container.lookupProperty || function(parent, propertyName) {
+        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+          return parent[propertyName];
+        }
+        return undefined
+    };
+
+  return "        <div class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":16,"column":20},"end":{"line":16,"column":34}}}) : helper)))
+    + "popup-detail-item\"><span class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":16,"column":66},"end":{"line":16,"column":80}}}) : helper)))
+    + "icon "
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":16,"column":85},"end":{"line":16,"column":99}}}) : helper)))
+    + "calendar-dot\" style=\"background-color: "
+    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,"schedule") : depth0)) != null ? lookupProperty(stack1,"bgColor") : stack1), depth0))
+    + "\"></span><span class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":16,"column":180},"end":{"line":16,"column":194}}}) : helper)))
+    + "content\">"
+    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,"calendar") : depth0)) != null ? lookupProperty(stack1,"name") : stack1), depth0))
+    + "</span></div>\n";
+},"11":function(container,depth0,helpers,partials,data) {
+    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3="function", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {
+        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+          return parent[propertyName];
+        }
+        return undefined
+    };
+
+  return "<div class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":18,"column":41},"end":{"line":18,"column":55}}}) : helper)))
+    + "popup-detail-item "
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":18,"column":73},"end":{"line":18,"column":87}}}) : helper)))
+    + "popup-detail-item-separate\"><span class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":18,"column":128},"end":{"line":18,"column":142}}}) : helper)))
+    + "content\">"
+    + ((stack1 = (lookupProperty(helpers,"popupDetailBody-tmpl")||(depth0 && lookupProperty(depth0,"popupDetailBody-tmpl"))||alias2).call(alias1,(depth0 != null ? lookupProperty(depth0,"schedule") : depth0),{"name":"popupDetailBody-tmpl","hash":{},"data":data,"loc":{"start":{"line":18,"column":151},"end":{"line":18,"column":186}}})) != null ? stack1 : "")
+    + "</span></div>";
+},"13":function(container,depth0,helpers,partials,data) {
+    return "";
+},"15":function(container,depth0,helpers,partials,data) {
+    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3="function", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {
+        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+          return parent[propertyName];
+        }
+        return undefined
+    };
+
+  return "    <div class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":22,"column":16},"end":{"line":22,"column":30}}}) : helper)))
+    + "section-button\">\n      <button class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":23,"column":21},"end":{"line":23,"column":35}}}) : helper)))
+    + "popup-edit\"><span class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":23,"column":60},"end":{"line":23,"column":74}}}) : helper)))
+    + "icon "
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":23,"column":79},"end":{"line":23,"column":93}}}) : helper)))
+    + "ic-edit\"></span><span class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":23,"column":122},"end":{"line":23,"column":136}}}) : helper)))
+    + "content\">"
+    + ((stack1 = ((helper = (helper = lookupProperty(helpers,"popupEdit-tmpl") || (depth0 != null ? lookupProperty(depth0,"popupEdit-tmpl") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"popupEdit-tmpl","hash":{},"data":data,"loc":{"start":{"line":23,"column":145},"end":{"line":23,"column":165}}}) : helper))) != null ? stack1 : "")
+    + "</span></button>\n      <div class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":24,"column":18},"end":{"line":24,"column":32}}}) : helper)))
+    + "popup-vertical-line\"></div>\n      <button class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":25,"column":21},"end":{"line":25,"column":35}}}) : helper)))
+    + "popup-delete\"><span class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":25,"column":62},"end":{"line":25,"column":76}}}) : helper)))
+    + "icon "
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":25,"column":81},"end":{"line":25,"column":95}}}) : helper)))
+    + "ic-delete\"></span><span class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":25,"column":126},"end":{"line":25,"column":140}}}) : helper)))
+    + "content\">"
+    + ((stack1 = ((helper = (helper = lookupProperty(helpers,"popupDelete-tmpl") || (depth0 != null ? lookupProperty(depth0,"popupDelete-tmpl") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"popupDelete-tmpl","hash":{},"data":data,"loc":{"start":{"line":25,"column":149},"end":{"line":25,"column":171}}}) : helper))) != null ? stack1 : "")
+    + "</span></button>\n    </div>\n";
+},"compiler":[8,">= 4.3.0"],"main":function(container,depth0,helpers,partials,data) {
+    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3="function", alias4=container.escapeExpression, alias5=container.lambda, lookupProperty = container.lookupProperty || function(parent, propertyName) {
+        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+          return parent[propertyName];
+        }
+        return undefined
+    };
+
+  return "<div class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":1,"column":12},"end":{"line":1,"column":26}}}) : helper)))
+    + "popup "
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":1,"column":32},"end":{"line":1,"column":46}}}) : helper)))
+    + "popup-detail\">\n  <div class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":2,"column":14},"end":{"line":2,"column":28}}}) : helper)))
+    + "popup-container\">\n    <div class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":3,"column":16},"end":{"line":3,"column":30}}}) : helper)))
+    + "popup-section "
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":3,"column":44},"end":{"line":3,"column":58}}}) : helper)))
+    + "section-header\">\n      <div>\n        <span class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":5,"column":21},"end":{"line":5,"column":35}}}) : helper)))
+    + "schedule-private "
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":5,"column":52},"end":{"line":5,"column":66}}}) : helper)))
+    + "icon "
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":5,"column":71},"end":{"line":5,"column":85}}}) : helper)))
+    + "ic-private\"></span>\n        <span class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":6,"column":21},"end":{"line":6,"column":35}}}) : helper)))
+    + "schedule-title\">"
+    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,"schedule") : depth0)) != null ? lookupProperty(stack1,"title") : stack1), depth0))
+    + "</span>\n      </div>\n      <div class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":8,"column":18},"end":{"line":8,"column":32}}}) : helper)))
+    + "popup-detail-date "
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":8,"column":50},"end":{"line":8,"column":64}}}) : helper)))
+    + "content\">"
+    + ((stack1 = (lookupProperty(helpers,"popupDetailDate-tmpl")||(depth0 && lookupProperty(depth0,"popupDetailDate-tmpl"))||alias2).call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,"schedule") : depth0)) != null ? lookupProperty(stack1,"isAllDay") : stack1),((stack1 = (depth0 != null ? lookupProperty(depth0,"schedule") : depth0)) != null ? lookupProperty(stack1,"start") : stack1),((stack1 = (depth0 != null ? lookupProperty(depth0,"schedule") : depth0)) != null ? lookupProperty(stack1,"end") : stack1),{"name":"popupDetailDate-tmpl","hash":{},"data":data,"loc":{"start":{"line":8,"column":73},"end":{"line":8,"column":145}}})) != null ? stack1 : "")
+    + "</div>\n    </div>\n    <div class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":10,"column":16},"end":{"line":10,"column":30}}}) : helper)))
+    + "section-detail\">\n        "
+    + ((stack1 = lookupProperty(helpers,"if").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,"schedule") : depth0)) != null ? lookupProperty(stack1,"location") : stack1),{"name":"if","hash":{},"fn":container.program(1, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":11,"column":8},"end":{"line":11,"column":241}}})) != null ? stack1 : "")
+    + "\n        "
+    + ((stack1 = lookupProperty(helpers,"if").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,"schedule") : depth0)) != null ? lookupProperty(stack1,"recurrenceRule") : stack1),{"name":"if","hash":{},"fn":container.program(3, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":12,"column":8},"end":{"line":12,"column":243}}})) != null ? stack1 : "")
+    + "\n        "
+    + ((stack1 = lookupProperty(helpers,"if").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,"schedule") : depth0)) != null ? lookupProperty(stack1,"attendees") : stack1),{"name":"if","hash":{},"fn":container.program(5, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":13,"column":8},"end":{"line":13,"column":273}}})) != null ? stack1 : "")
+    + "\n        "
+    + ((stack1 = lookupProperty(helpers,"if").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,"schedule") : depth0)) != null ? lookupProperty(stack1,"state") : stack1),{"name":"if","hash":{},"fn":container.program(7, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":14,"column":8},"end":{"line":14,"column":232}}})) != null ? stack1 : "")
+    + "\n"
+    + ((stack1 = lookupProperty(helpers,"if").call(alias1,(depth0 != null ? lookupProperty(depth0,"calendar") : depth0),{"name":"if","hash":{},"fn":container.program(9, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":15,"column":8},"end":{"line":17,"column":15}}})) != null ? stack1 : "")
+    + "        "
+    + ((stack1 = lookupProperty(helpers,"if").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,"schedule") : depth0)) != null ? lookupProperty(stack1,"body") : stack1),{"name":"if","hash":{},"fn":container.program(11, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":18,"column":8},"end":{"line":18,"column":206}}})) != null ? stack1 : "")
+    + "\n    </div>\n"
+    + ((stack1 = lookupProperty(helpers,"if").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,"schedule") : depth0)) != null ? lookupProperty(stack1,"isReadOnly") : stack1),{"name":"if","hash":{},"fn":container.program(13, data, 0),"inverse":container.program(15, data, 0),"data":data,"loc":{"start":{"line":20,"column":4},"end":{"line":27,"column":11}}})) != null ? stack1 : "")
+    + "  </div>\n  <div class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":29,"column":14},"end":{"line":29,"column":28}}}) : helper)))
+    + "popup-top-line\" style=\"background-color: "
+    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,"schedule") : depth0)) != null ? lookupProperty(stack1,"bgColor") : stack1), depth0))
+    + "\"></div>\n  <div id=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":30,"column":11},"end":{"line":30,"column":25}}}) : helper)))
+    + "popup-arrow\" class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":30,"column":45},"end":{"line":30,"column":59}}}) : helper)))
+    + "popup-arrow "
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":30,"column":71},"end":{"line":30,"column":85}}}) : helper)))
+    + "arrow-left\">\n    <div class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":31,"column":16},"end":{"line":31,"column":30}}}) : helper)))
+    + "popup-arrow-border\">\n        <div class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":32,"column":20},"end":{"line":32,"column":34}}}) : helper)))
+    + "popup-arrow-fill\"></div>\n    </div>\n  </div>\n</div>\n";
+},"useData":true});
+
+/***/ }),
+
+/***/ "./src/js/view/template/week/dayGrid.hbs":
+/*!***********************************************!*\
+  !*** ./src/js/view/template/week/dayGrid.hbs ***!
+  \***********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var Handlebars = __webpack_require__(/*! ./node_modules/handlebars/runtime.js */ "./node_modules/handlebars/runtime.js");
+module.exports = (Handlebars['default'] || Handlebars).template({"1":function(container,depth0,helpers,partials,data) {
+    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3="function", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {
+        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+          return parent[propertyName];
+        }
+        return undefined
+    };
+
+  return "<div class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":8,"column":24},"end":{"line":8,"column":38}}}) : helper)))
+    + "weekday-grid-line\"\n                style=\"left:"
+    + alias4(((helper = (helper = lookupProperty(helpers,"left") || (depth0 != null ? lookupProperty(depth0,"left") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"left","hash":{},"data":data,"loc":{"start":{"line":9,"column":28},"end":{"line":9,"column":36}}}) : helper)))
+    + "%; width:"
+    + alias4(((helper = (helper = lookupProperty(helpers,"width") || (depth0 != null ? lookupProperty(depth0,"width") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"width","hash":{},"data":data,"loc":{"start":{"line":9,"column":45},"end":{"line":9,"column":54}}}) : helper)))
+    + "%; background-color: "
+    + alias4(((helper = (helper = lookupProperty(helpers,"backgroundColor") || (depth0 != null ? lookupProperty(depth0,"backgroundColor") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"backgroundColor","hash":{},"data":data,"loc":{"start":{"line":9,"column":75},"end":{"line":9,"column":94}}}) : helper)))
+    + ";\n"
+    + ((stack1 = lookupProperty(helpers,"unless").call(alias1,(data && lookupProperty(data,"last")),{"name":"unless","hash":{},"fn":container.program(2, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":10,"column":20},"end":{"line":12,"column":31}}})) != null ? stack1 : "")
+    + "            \"></div>\n";
+},"2":function(container,depth0,helpers,partials,data) {
+    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {
+        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+          return parent[propertyName];
+        }
+        return undefined
+    };
+
+  return "                    border-right: "
+    + container.escapeExpression(container.lambda(((stack1 = ((stack1 = (data && lookupProperty(data,"root"))) && lookupProperty(stack1,"styles"))) && lookupProperty(stack1,"borderRight")), depth0))
+    + ";\n";
+},"4":function(container,depth0,helpers,partials,data) {
+    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {
+        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+          return parent[propertyName];
+        }
+        return undefined
+    };
+
+  return ((stack1 = lookupProperty(helpers,"each").call(depth0 != null ? depth0 : (container.nullContext || {}),(depth0 != null ? lookupProperty(depth0,"days") : depth0),{"name":"each","hash":{},"fn":container.program(5, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":17,"column":8},"end":{"line":27,"column":19}}})) != null ? stack1 : "");
+},"5":function(container,depth0,helpers,partials,data) {
+    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {
+        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+          return parent[propertyName];
+        }
+        return undefined
+    };
+
+  return ((stack1 = lookupProperty(helpers,"if").call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = (data && lookupProperty(data,"root"))) && lookupProperty(stack1,"collapsed")),{"name":"if","hash":{},"fn":container.program(6, data, 0),"inverse":container.program(9, data, 0),"data":data,"loc":{"start":{"line":18,"column":12},"end":{"line":26,"column":19}}})) != null ? stack1 : "");
+},"6":function(container,depth0,helpers,partials,data) {
+    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {
+        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+          return parent[propertyName];
+        }
+        return undefined
+    };
+
+  return ((stack1 = lookupProperty(helpers,"if").call(depth0 != null ? depth0 : (container.nullContext || {}),(depth0 != null ? lookupProperty(depth0,"hiddenSchedules") : depth0),{"name":"if","hash":{},"fn":container.program(7, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":19,"column":16},"end":{"line":21,"column":23}}})) != null ? stack1 : "");
+},"7":function(container,depth0,helpers,partials,data) {
+    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3="function", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {
+        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+          return parent[propertyName];
+        }
+        return undefined
+    };
+
+  return "                    <span class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":20,"column":33},"end":{"line":20,"column":47}}}) : helper)))
+    + "weekday-exceed-in-week\" style=\"z-index: 1; right:"
+    + alias4((lookupProperty(helpers,"getRight")||(depth0 && lookupProperty(depth0,"getRight"))||alias2).call(alias1,(depth0 != null ? lookupProperty(depth0,"left") : depth0),(depth0 != null ? lookupProperty(depth0,"width") : depth0),{"name":"getRight","hash":{},"data":data,"loc":{"start":{"line":20,"column":96},"end":{"line":20,"column":119}}}))
+    + "%;\" data-index=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"key") || (data && lookupProperty(data,"key"))) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"key","hash":{},"data":data,"loc":{"start":{"line":20,"column":135},"end":{"line":20,"column":143}}}) : helper)))
+    + "\">"
+    + ((stack1 = (lookupProperty(helpers,"weekGridFooterExceed-tmpl")||(depth0 && lookupProperty(depth0,"weekGridFooterExceed-tmpl"))||alias2).call(alias1,(depth0 != null ? lookupProperty(depth0,"hiddenSchedules") : depth0),{"name":"weekGridFooterExceed-tmpl","hash":{},"data":data,"loc":{"start":{"line":20,"column":145},"end":{"line":20,"column":192}}})) != null ? stack1 : "")
+    + "</span>\n";
+},"9":function(container,depth0,helpers,partials,data) {
+    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {
+        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+          return parent[propertyName];
+        }
+        return undefined
+    };
+
+  return ((stack1 = (lookupProperty(helpers,"fi")||(depth0 && lookupProperty(depth0,"fi"))||container.hooks.helperMissing).call(depth0 != null ? depth0 : (container.nullContext || {}),(data && lookupProperty(data,"key")),"===",((stack1 = (data && lookupProperty(data,"root"))) && lookupProperty(stack1,"collapseBtnIndex")),{"name":"fi","hash":{},"fn":container.program(10, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":23,"column":16},"end":{"line":25,"column":23}}})) != null ? stack1 : "");
+},"10":function(container,depth0,helpers,partials,data) {
+    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3="function", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {
+        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+          return parent[propertyName];
+        }
+        return undefined
+    };
+
+  return "                    <span class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":24,"column":33},"end":{"line":24,"column":47}}}) : helper)))
+    + "weekday-collapse-btn\" style=\"z-index: 1; right:"
+    + alias4((lookupProperty(helpers,"getRight")||(depth0 && lookupProperty(depth0,"getRight"))||alias2).call(alias1,(depth0 != null ? lookupProperty(depth0,"left") : depth0),(depth0 != null ? lookupProperty(depth0,"width") : depth0),{"name":"getRight","hash":{},"data":data,"loc":{"start":{"line":24,"column":94},"end":{"line":24,"column":117}}}))
+    + "%;\">"
+    + ((stack1 = ((helper = (helper = lookupProperty(helpers,"collapseBtnTitle-tmpl") || (depth0 != null ? lookupProperty(depth0,"collapseBtnTitle-tmpl") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"collapseBtnTitle-tmpl","hash":{},"data":data,"loc":{"start":{"line":24,"column":121},"end":{"line":24,"column":148}}}) : helper))) != null ? stack1 : "")
+    + "</span>\n";
+},"compiler":[8,">= 4.3.0"],"main":function(container,depth0,helpers,partials,data) {
+    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3="function", alias4=container.escapeExpression, alias5=container.lambda, lookupProperty = container.lookupProperty || function(parent, propertyName) {
+        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+          return parent[propertyName];
+        }
+        return undefined
+    };
+
+  return "<div class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":1,"column":12},"end":{"line":1,"column":26}}}) : helper)))
+    + alias4(((helper = (helper = lookupProperty(helpers,"viewName") || (depth0 != null ? lookupProperty(depth0,"viewName") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"viewName","hash":{},"data":data,"loc":{"start":{"line":1,"column":26},"end":{"line":1,"column":38}}}) : helper)))
+    + "-left "
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":1,"column":44},"end":{"line":1,"column":58}}}) : helper)))
+    + "left\" style=\"border-right: "
+    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,"styles") : depth0)) != null ? lookupProperty(stack1,"leftBorderRight") : stack1), depth0))
+    + "; width: "
+    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,"styles") : depth0)) != null ? lookupProperty(stack1,"leftWidth") : stack1), depth0))
+    + "; background-color: "
+    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,"styles") : depth0)) != null ? lookupProperty(stack1,"leftBackgroundColor") : stack1), depth0))
+    + "; padding-right: "
+    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,"styles") : depth0)) != null ? lookupProperty(stack1,"leftPaddingRight") : stack1), depth0))
+    + ";\">\n    "
+    + ((stack1 = (lookupProperty(helpers,"dayGridTitle-tmpl")||(depth0 && lookupProperty(depth0,"dayGridTitle-tmpl"))||alias2).call(alias1,(depth0 != null ? lookupProperty(depth0,"viewName") : depth0),{"name":"dayGridTitle-tmpl","hash":{},"data":data,"loc":{"start":{"line":2,"column":4},"end":{"line":2,"column":36}}})) != null ? stack1 : "")
+    + "\n</div>\n<div class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":4,"column":12},"end":{"line":4,"column":26}}}) : helper)))
+    + alias4(((helper = (helper = lookupProperty(helpers,"viewName") || (depth0 != null ? lookupProperty(depth0,"viewName") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"viewName","hash":{},"data":data,"loc":{"start":{"line":4,"column":26},"end":{"line":4,"column":38}}}) : helper)))
+    + "-right "
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":4,"column":45},"end":{"line":4,"column":59}}}) : helper)))
+    + "right\">\n    <div class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":5,"column":16},"end":{"line":5,"column":30}}}) : helper)))
+    + "container\">\n        <div class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":6,"column":20},"end":{"line":6,"column":34}}}) : helper)))
+    + "weekday-grid\">\n"
+    + ((stack1 = lookupProperty(helpers,"each").call(alias1,(depth0 != null ? lookupProperty(depth0,"days") : depth0),{"name":"each","hash":{},"fn":container.program(1, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":7,"column":8},"end":{"line":14,"column":19}}})) != null ? stack1 : "")
+    + ((stack1 = lookupProperty(helpers,"if").call(alias1,((stack1 = (data && lookupProperty(data,"root"))) && lookupProperty(stack1,"showExpandableButton")),{"name":"if","hash":{},"fn":container.program(4, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":16,"column":8},"end":{"line":28,"column":15}}})) != null ? stack1 : "")
+    + "        </div>\n    </div>\n</div>\n";
+},"useData":true});
+
+/***/ }),
+
+/***/ "./src/js/view/template/week/dayGridSchedule.hbs":
+/*!*******************************************************!*\
+  !*** ./src/js/view/template/week/dayGridSchedule.hbs ***!
+  \*******************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var Handlebars = __webpack_require__(/*! ./node_modules/handlebars/runtime.js */ "./node_modules/handlebars/runtime.js");
+module.exports = (Handlebars['default'] || Handlebars).template({"1":function(container,depth0,helpers,partials,data) {
+    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {
+        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+          return parent[propertyName];
+        }
+        return undefined
+    };
+
+  return ((stack1 = lookupProperty(helpers,"each").call(depth0 != null ? depth0 : (container.nullContext || {}),depth0,{"name":"each","hash":{},"fn":container.program(2, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":3,"column":4},"end":{"line":27,"column":15}}})) != null ? stack1 : "");
+},"2":function(container,depth0,helpers,partials,data) {
+    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {
+        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+          return parent[propertyName];
+        }
+        return undefined
+    };
+
+  return "\n    "
+    + ((stack1 = lookupProperty(helpers,"each").call(depth0 != null ? depth0 : (container.nullContext || {}),depth0,{"name":"each","hash":{},"fn":container.program(3, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":4,"column":4},"end":{"line":26,"column":15}}})) != null ? stack1 : "");
+},"3":function(container,depth0,helpers,partials,data) {
+    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {
+        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+          return parent[propertyName];
+        }
+        return undefined
+    };
+
+  return "\n    "
+    + ((stack1 = lookupProperty(helpers,"if").call(depth0 != null ? depth0 : (container.nullContext || {}),depth0,{"name":"if","hash":{},"fn":container.program(4, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":5,"column":4},"end":{"line":25,"column":13}}})) != null ? stack1 : "");
+},"4":function(container,depth0,helpers,partials,data) {
+    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=container.escapeExpression, alias4="function", alias5=container.lambda, lookupProperty = container.lookupProperty || function(parent, propertyName) {
+        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+          return parent[propertyName];
+        }
+        return undefined
+    };
+
+  return "\n    <div data-id=\""
+    + alias3((lookupProperty(helpers,"stamp")||(depth0 && lookupProperty(depth0,"stamp"))||alias2).call(alias1,(depth0 != null ? lookupProperty(depth0,"model") : depth0),{"name":"stamp","hash":{},"data":data,"loc":{"start":{"line":6,"column":18},"end":{"line":6,"column":33}}}))
+    + "\"\n        class=\""
+    + alias3(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias4 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":7,"column":15},"end":{"line":7,"column":29}}}) : helper)))
+    + "weekday-schedule-block\n            "
+    + ((stack1 = lookupProperty(helpers,"if").call(alias1,(depth0 != null ? lookupProperty(depth0,"exceedLeft") : depth0),{"name":"if","hash":{},"fn":container.program(5, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":8,"column":12},"end":{"line":8,"column":71}}})) != null ? stack1 : "")
+    + "\n            "
+    + ((stack1 = lookupProperty(helpers,"if").call(alias1,(depth0 != null ? lookupProperty(depth0,"exceedRight") : depth0),{"name":"if","hash":{},"fn":container.program(7, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":9,"column":12},"end":{"line":9,"column":73}}})) != null ? stack1 : "")
+    + "\"\n        style=\"top:"
+    + alias3((lookupProperty(helpers,"multiply")||(depth0 && lookupProperty(depth0,"multiply"))||alias2).call(alias1,(depth0 != null ? lookupProperty(depth0,"top") : depth0),((stack1 = (data && lookupProperty(data,"root"))) && lookupProperty(stack1,"scheduleBlockHeight")),{"name":"multiply","hash":{},"data":data,"loc":{"start":{"line":10,"column":19},"end":{"line":10,"column":61}}}))
+    + "px;\n                left:"
+    + alias3((lookupProperty(helpers,"grid-left")||(depth0 && lookupProperty(depth0,"grid-left"))||alias2).call(alias1,depth0,((stack1 = (data && lookupProperty(data,"root"))) && lookupProperty(stack1,"dates")),{"name":"grid-left","hash":{},"data":data,"loc":{"start":{"line":11,"column":21},"end":{"line":11,"column":51}}}))
+    + "%;\n                width:"
+    + alias3((lookupProperty(helpers,"grid-width")||(depth0 && lookupProperty(depth0,"grid-width"))||alias2).call(alias1,depth0,((stack1 = (data && lookupProperty(data,"root"))) && lookupProperty(stack1,"dates")),{"name":"grid-width","hash":{},"data":data,"loc":{"start":{"line":12,"column":22},"end":{"line":12,"column":53}}}))
+    + "%\">\n        <div data-schedule-id=\""
+    + alias3(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,"model") : depth0)) != null ? lookupProperty(stack1,"id") : stack1), depth0))
+    + "\" data-calendar-id=\""
+    + alias3(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,"model") : depth0)) != null ? lookupProperty(stack1,"calendarId") : stack1), depth0))
+    + "\" class=\""
+    + alias3(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias4 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":13,"column":92},"end":{"line":13,"column":106}}}) : helper)))
+    + "weekday-schedule "
+    + ((stack1 = lookupProperty(helpers,"if").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,"model") : depth0)) != null ? lookupProperty(stack1,"isFocused") : stack1),{"name":"if","hash":{},"fn":container.program(9, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":13,"column":123},"end":{"line":13,"column":192}}})) != null ? stack1 : "")
+    + "\"\n            style=\"height:"
+    + alias3(alias5(((stack1 = (data && lookupProperty(data,"root"))) && lookupProperty(stack1,"scheduleHeight")), depth0))
+    + "px; line-height:"
+    + alias3(alias5(((stack1 = (data && lookupProperty(data,"root"))) && lookupProperty(stack1,"scheduleHeight")), depth0))
+    + "px; border-radius: "
+    + alias3(alias5(((stack1 = ((stack1 = (data && lookupProperty(data,"root"))) && lookupProperty(stack1,"styles"))) && lookupProperty(stack1,"borderRadius")), depth0))
+    + ";\n"
+    + ((stack1 = lookupProperty(helpers,"if").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,"model") : depth0)) != null ? lookupProperty(stack1,"isFocused") : stack1),{"name":"if","hash":{},"fn":container.program(11, data, 0),"inverse":container.program(13, data, 0),"data":data,"loc":{"start":{"line":15,"column":16},"end":{"line":19,"column":23}}})) != null ? stack1 : "")
+    + "            "
+    + alias3(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,"model") : depth0)) != null ? lookupProperty(stack1,"customStyle") : stack1), depth0))
+    + "\">\n            <span class=\""
+    + alias3(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias4 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":21,"column":25},"end":{"line":21,"column":39}}}) : helper)))
+    + "weekday-schedule-title\" title=\""
+    + alias3(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,"model") : depth0)) != null ? lookupProperty(stack1,"title") : stack1), depth0))
+    + "\">"
+    + ((stack1 = (lookupProperty(helpers,"schedule-tmpl")||(depth0 && lookupProperty(depth0,"schedule-tmpl"))||alias2).call(alias1,(depth0 != null ? lookupProperty(depth0,"model") : depth0),{"name":"schedule-tmpl","hash":{},"data":data,"loc":{"start":{"line":21,"column":87},"end":{"line":21,"column":112}}})) != null ? stack1 : "")
+    + "</span>\n            "
+    + ((stack1 = lookupProperty(helpers,"unless").call(alias1,(lookupProperty(helpers,"or")||(depth0 && lookupProperty(depth0,"or"))||alias2).call(alias1,((stack1 = (data && lookupProperty(data,"root"))) && lookupProperty(stack1,"isReadOnly")),((stack1 = (depth0 != null ? lookupProperty(depth0,"model") : depth0)) != null ? lookupProperty(stack1,"isReadOnly") : stack1),{"name":"or","hash":{},"data":data,"loc":{"start":{"line":22,"column":22},"end":{"line":22,"column":60}}}),{"name":"unless","hash":{},"fn":container.program(15, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":22,"column":12},"end":{"line":22,"column":193}}})) != null ? stack1 : "")
+    + "\n        </div>\n    </div>\n";
+},"5":function(container,depth0,helpers,partials,data) {
+    var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {
+        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+          return parent[propertyName];
+        }
+        return undefined
+    };
+
+  return " "
+    + container.escapeExpression(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === "function" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":8,"column":31},"end":{"line":8,"column":45}}}) : helper)))
+    + "weekday-exceed-left";
+},"7":function(container,depth0,helpers,partials,data) {
+    var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {
+        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+          return parent[propertyName];
+        }
+        return undefined
+    };
+
+  return " "
+    + container.escapeExpression(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === "function" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":9,"column":32},"end":{"line":9,"column":46}}}) : helper)))
+    + "weekday-exceed-right";
+},"9":function(container,depth0,helpers,partials,data) {
+    var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {
+        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+          return parent[propertyName];
+        }
+        return undefined
+    };
+
+  return container.escapeExpression(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === "function" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":13,"column":146},"end":{"line":13,"column":160}}}) : helper)))
+    + "weekday-schedule-focused ";
+},"11":function(container,depth0,helpers,partials,data) {
+    var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {
+        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+          return parent[propertyName];
+        }
+        return undefined
+    };
+
+  return "                    color: #ffffff; background-color:"
+    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,"model") : depth0)) != null ? lookupProperty(stack1,"color") : stack1), depth0))
+    + "; border-color:"
+    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,"model") : depth0)) != null ? lookupProperty(stack1,"color") : stack1), depth0))
+    + ";\n";
+},"13":function(container,depth0,helpers,partials,data) {
+    var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {
+        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+          return parent[propertyName];
+        }
+        return undefined
+    };
+
+  return "                    color:"
+    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,"model") : depth0)) != null ? lookupProperty(stack1,"color") : stack1), depth0))
+    + "; background-color:"
+    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,"model") : depth0)) != null ? lookupProperty(stack1,"bgColor") : stack1), depth0))
+    + "; border-color:"
+    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,"model") : depth0)) != null ? lookupProperty(stack1,"borderColor") : stack1), depth0))
+    + ";\n";
+},"15":function(container,depth0,helpers,partials,data) {
+    var stack1, helper, alias1=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {
+        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+          return parent[propertyName];
+        }
+        return undefined
+    };
+
+  return "<span class=\""
+    + alias1(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === "function" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":22,"column":75},"end":{"line":22,"column":89}}}) : helper)))
+    + "weekday-resize-handle handle-y\" style=\"line-height:"
+    + alias1(container.lambda(((stack1 = (data && lookupProperty(data,"root"))) && lookupProperty(stack1,"scheduleHeight")), depth0))
+    + "px;\">&nbsp;</span>";
+},"compiler":[8,">= 4.3.0"],"main":function(container,depth0,helpers,partials,data) {
+    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3="function", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {
+        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+          return parent[propertyName];
+        }
+        return undefined
+    };
+
+  return "<div class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":1,"column":12},"end":{"line":1,"column":26}}}) : helper)))
+    + "weekday-schedules "
+    + alias4(((helper = (helper = lookupProperty(helpers,"collapsed") || (depth0 != null ? lookupProperty(depth0,"collapsed") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"collapsed","hash":{},"data":data,"loc":{"start":{"line":1,"column":44},"end":{"line":1,"column":57}}}) : helper)))
+    + "\"style=\"top:"
+    + alias4(container.lambda(((stack1 = (data && lookupProperty(data,"root"))) && lookupProperty(stack1,"scheduleContainerTop")), depth0))
+    + "px;\">\n"
+    + ((stack1 = lookupProperty(helpers,"each").call(alias1,(depth0 != null ? lookupProperty(depth0,"matrices") : depth0),{"name":"each","hash":{},"fn":container.program(1, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":2,"column":4},"end":{"line":28,"column":15}}})) != null ? stack1 : "")
+    + "</div>\n";
+},"useData":true});
+
+/***/ }),
+
+/***/ "./src/js/view/template/week/daynames.hbs":
+/*!************************************************!*\
+  !*** ./src/js/view/template/week/daynames.hbs ***!
+  \************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var Handlebars = __webpack_require__(/*! ./node_modules/handlebars/runtime.js */ "./node_modules/handlebars/runtime.js");
+module.exports = (Handlebars['default'] || Handlebars).template({"1":function(container,depth0,helpers,partials,data) {
+    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3="function", alias4=container.escapeExpression, alias5=container.lambda, lookupProperty = container.lookupProperty || function(parent, propertyName) {
+        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+          return parent[propertyName];
+        }
+        return undefined
+    };
+
+  return "<div class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":3,"column":12},"end":{"line":3,"column":26}}}) : helper)))
+    + "dayname "
+    + ((stack1 = lookupProperty(helpers,"if").call(alias1,(depth0 != null ? lookupProperty(depth0,"isToday") : depth0),{"name":"if","hash":{},"fn":container.program(2, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":3,"column":34},"end":{"line":3,"column":75}}})) != null ? stack1 : "")
+    + " "
+    + alias4((lookupProperty(helpers,"holiday")||(depth0 && lookupProperty(depth0,"holiday"))||alias2).call(alias1,(depth0 != null ? lookupProperty(depth0,"day") : depth0),{"name":"holiday","hash":{},"data":data,"loc":{"start":{"line":3,"column":76},"end":{"line":3,"column":91}}}))
+    + "\"\n     data-date=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"renderDate") || (depth0 != null ? lookupProperty(depth0,"renderDate") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"renderDate","hash":{},"data":data,"loc":{"start":{"line":4,"column":16},"end":{"line":4,"column":30}}}) : helper)))
+    + "\"\n     style=\""
+    + alias4((lookupProperty(helpers,"common-width")||(depth0 && lookupProperty(depth0,"common-width"))||alias2).call(alias1,(depth0 != null ? lookupProperty(depth0,"width") : depth0),{"name":"common-width","hash":{},"data":data,"loc":{"start":{"line":5,"column":12},"end":{"line":5,"column":34}}}))
+    + ";left:"
+    + alias4(((helper = (helper = lookupProperty(helpers,"left") || (depth0 != null ? lookupProperty(depth0,"left") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"left","hash":{},"data":data,"loc":{"start":{"line":5,"column":40},"end":{"line":5,"column":48}}}) : helper)))
+    + "%; line-height: "
+    + alias4(alias5(((stack1 = ((stack1 = (data && lookupProperty(data,"root"))) && lookupProperty(stack1,"styles"))) && lookupProperty(stack1,"height")), depth0))
+    + "; border-left: "
+    + alias4(alias5(((stack1 = ((stack1 = (data && lookupProperty(data,"root"))) && lookupProperty(stack1,"styles"))) && lookupProperty(stack1,"borderLeft")), depth0))
+    + "; padding-left: "
+    + alias4(alias5(((stack1 = ((stack1 = (data && lookupProperty(data,"root"))) && lookupProperty(stack1,"styles"))) && lookupProperty(stack1,"paddingLeft")), depth0))
+    + ";\">\n    <span class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":6,"column":17},"end":{"line":6,"column":31}}}) : helper)))
+    + "dayname-date-area\" style=\"color: "
+    + alias4(((helper = (helper = lookupProperty(helpers,"color") || (depth0 != null ? lookupProperty(depth0,"color") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"color","hash":{},"data":data,"loc":{"start":{"line":6,"column":64},"end":{"line":6,"column":73}}}) : helper)))
+    + ";\">\n        "
+    + ((stack1 = (lookupProperty(helpers,"weekDayname-tmpl")||(depth0 && lookupProperty(depth0,"weekDayname-tmpl"))||alias2).call(alias1,depth0,{"name":"weekDayname-tmpl","hash":{},"data":data,"loc":{"start":{"line":7,"column":8},"end":{"line":7,"column":35}}})) != null ? stack1 : "")
+    + "\n    </span>\n</div>\n";
+},"2":function(container,depth0,helpers,partials,data) {
+    var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {
+        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+          return parent[propertyName];
+        }
+        return undefined
+    };
+
+  return container.escapeExpression(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === "function" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":3,"column":49},"end":{"line":3,"column":63}}}) : helper)))
+    + "today";
+},"compiler":[8,">= 4.3.0"],"main":function(container,depth0,helpers,partials,data) {
+    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {
+        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+          return parent[propertyName];
+        }
+        return undefined
+    };
+
+  return "<div class=\""
+    + alias2(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === "function" ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":1,"column":12},"end":{"line":1,"column":26}}}) : helper)))
+    + "dayname-leftmargin\" style=\"margin-left: "
+    + alias2(container.lambda(((stack1 = ((stack1 = (data && lookupProperty(data,"root"))) && lookupProperty(stack1,"styles"))) && lookupProperty(stack1,"marginLeft")), depth0))
+    + ";\">\n"
+    + ((stack1 = lookupProperty(helpers,"each").call(alias1,(depth0 != null ? lookupProperty(depth0,"dayNames") : depth0),{"name":"each","hash":{},"fn":container.program(1, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":2,"column":0},"end":{"line":10,"column":9}}})) != null ? stack1 : "")
+    + "</div>\n";
+},"useData":true});
+
+/***/ }),
+
+/***/ "./src/js/view/template/week/time.hbs":
+/*!********************************************!*\
+  !*** ./src/js/view/template/week/time.hbs ***!
+  \********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var Handlebars = __webpack_require__(/*! ./node_modules/handlebars/runtime.js */ "./node_modules/handlebars/runtime.js");
+module.exports = (Handlebars['default'] || Handlebars).template({"1":function(container,depth0,helpers,partials,data) {
+    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {
+        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+          return parent[propertyName];
+        }
+        return undefined
+    };
+
+  return ((stack1 = lookupProperty(helpers,"each").call(depth0 != null ? depth0 : (container.nullContext || {}),depth0,{"name":"each","hash":{},"fn":container.program(2, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":3,"column":4},"end":{"line":60,"column":13}}})) != null ? stack1 : "");
+},"2":function(container,depth0,helpers,partials,data) {
+    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {
+        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+          return parent[propertyName];
+        }
+        return undefined
+    };
+
+  return ((stack1 = lookupProperty(helpers,"each").call(depth0 != null ? depth0 : (container.nullContext || {}),depth0,{"name":"each","hash":{},"fn":container.program(3, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":4,"column":8},"end":{"line":59,"column":17}}})) != null ? stack1 : "");
+},"3":function(container,depth0,helpers,partials,data) {
+    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {
+        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+          return parent[propertyName];
+        }
+        return undefined
+    };
+
+  return ((stack1 = lookupProperty(helpers,"if").call(depth0 != null ? depth0 : (container.nullContext || {}),depth0,{"name":"if","hash":{},"fn":container.program(4, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":5,"column":8},"end":{"line":58,"column":17}}})) != null ? stack1 : "");
+},"4":function(container,depth0,helpers,partials,data) {
+    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3="function", alias4=container.escapeExpression, alias5=container.lambda, lookupProperty = container.lookupProperty || function(parent, propertyName) {
+        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+          return parent[propertyName];
+        }
+        return undefined
+    };
+
+  return "<div class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":6,"column":20},"end":{"line":6,"column":34}}}) : helper)))
+    + "time-date-schedule-block "
+    + ((stack1 = lookupProperty(helpers,"if").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,"model") : depth0)) != null ? lookupProperty(stack1,"isPending") : stack1),{"name":"if","hash":{},"fn":container.program(5, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":6,"column":59},"end":{"line":6,"column":136}}})) != null ? stack1 : "")
+    + "\" data-id=\""
+    + alias4((lookupProperty(helpers,"stamp")||(depth0 && lookupProperty(depth0,"stamp"))||alias2).call(alias1,(depth0 != null ? lookupProperty(depth0,"model") : depth0),{"name":"stamp","hash":{},"data":data,"loc":{"start":{"line":6,"column":147},"end":{"line":6,"column":162}}}))
+    + "\"\n            style=\""
+    + alias4((lookupProperty(helpers,"time-scheduleBlock")||(depth0 && lookupProperty(depth0,"time-scheduleBlock"))||alias2).call(alias1,depth0,{"name":"time-scheduleBlock","hash":{},"data":data,"loc":{"start":{"line":7,"column":19},"end":{"line":7,"column":46}}}))
+    + ";\n"
+    + ((stack1 = (lookupProperty(helpers,"fi")||(depth0 && lookupProperty(depth0,"fi"))||alias2).call(alias1,(depth0 != null ? lookupProperty(depth0,"left") : depth0),"!==",0,{"name":"fi","hash":{},"fn":container.program(7, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":8,"column":16},"end":{"line":10,"column":23}}})) != null ? stack1 : "")
+    + "            \">\n            <div data-schedule-id=\""
+    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,"model") : depth0)) != null ? lookupProperty(stack1,"id") : stack1), depth0))
+    + "\" data-calendar-id=\""
+    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,"model") : depth0)) != null ? lookupProperty(stack1,"calendarId") : stack1), depth0))
+    + "\" class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":12,"column":96},"end":{"line":12,"column":110}}}) : helper)))
+    + "time-schedule "
+    + ((stack1 = lookupProperty(helpers,"if").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,"model") : depth0)) != null ? lookupProperty(stack1,"isFocused") : stack1),{"name":"if","hash":{},"fn":container.program(9, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":12,"column":124},"end":{"line":12,"column":190}}})) != null ? stack1 : "")
+    + "\"\n                style=\"\n"
+    + ((stack1 = lookupProperty(helpers,"unless").call(alias1,(depth0 != null ? lookupProperty(depth0,"croppedEnd") : depth0),{"name":"unless","hash":{},"fn":container.program(11, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":14,"column":16},"end":{"line":17,"column":27}}})) != null ? stack1 : "")
+    + ((stack1 = lookupProperty(helpers,"unless").call(alias1,(depth0 != null ? lookupProperty(depth0,"croppedStart") : depth0),{"name":"unless","hash":{},"fn":container.program(13, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":18,"column":16},"end":{"line":21,"column":27}}})) != null ? stack1 : "")
+    + ((stack1 = lookupProperty(helpers,"if").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,"model") : depth0)) != null ? lookupProperty(stack1,"isFocused") : stack1),{"name":"if","hash":{},"fn":container.program(15, data, 0),"inverse":container.program(17, data, 0),"data":data,"loc":{"start":{"line":22,"column":16},"end":{"line":26,"column":23}}})) != null ? stack1 : "")
+    + "                 "
+    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,"model") : depth0)) != null ? lookupProperty(stack1,"customStyle") : stack1), depth0))
+    + "\"\n            >\n"
+    + ((stack1 = lookupProperty(helpers,"if").call(alias1,(depth0 != null ? lookupProperty(depth0,"hasGoingDuration") : depth0),{"name":"if","hash":{},"fn":container.program(19, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":29,"column":12},"end":{"line":37,"column":19}}})) != null ? stack1 : "")
+    + "                <div class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":38,"column":28},"end":{"line":38,"column":42}}}) : helper)))
+    + "time-schedule-content "
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":38,"column":64},"end":{"line":38,"column":78}}}) : helper)))
+    + "time-schedule-content-time\" style=\"height: "
+    + alias4(((helper = (helper = lookupProperty(helpers,"modelDurationHeight") || (depth0 != null ? lookupProperty(depth0,"modelDurationHeight") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"modelDurationHeight","hash":{},"data":data,"loc":{"start":{"line":38,"column":121},"end":{"line":38,"column":144}}}) : helper)))
+    + "px;\n"
+    + ((stack1 = lookupProperty(helpers,"if").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,"model") : depth0)) != null ? lookupProperty(stack1,"isFocused") : stack1),{"name":"if","hash":{},"fn":container.program(20, data, 0),"inverse":container.program(22, data, 0),"data":data,"loc":{"start":{"line":39,"column":16},"end":{"line":43,"column":23}}})) != null ? stack1 : "")
+    + "                "
+    + ((stack1 = lookupProperty(helpers,"if").call(alias1,(depth0 != null ? lookupProperty(depth0,"hasComingDuration") : depth0),{"name":"if","hash":{},"fn":container.program(24, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":44,"column":16},"end":{"line":44,"column":96}}})) != null ? stack1 : "")
+    + "\">\n                    "
+    + ((stack1 = (lookupProperty(helpers,"time-tmpl")||(depth0 && lookupProperty(depth0,"time-tmpl"))||alias2).call(alias1,(depth0 != null ? lookupProperty(depth0,"model") : depth0),{"name":"time-tmpl","hash":{},"data":data,"loc":{"start":{"line":45,"column":20},"end":{"line":45,"column":41}}})) != null ? stack1 : "")
+    + "\n                </div>\n"
+    + ((stack1 = lookupProperty(helpers,"if").call(alias1,(depth0 != null ? lookupProperty(depth0,"hasComingDuration") : depth0),{"name":"if","hash":{},"fn":container.program(26, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":47,"column":12},"end":{"line":54,"column":19}}})) != null ? stack1 : "")
+    + "            </div>\n            "
+    + ((stack1 = lookupProperty(helpers,"unless").call(alias1,(lookupProperty(helpers,"or")||(depth0 && lookupProperty(depth0,"or"))||alias2).call(alias1,(depth0 != null ? lookupProperty(depth0,"croppedEnd") : depth0),(lookupProperty(helpers,"or")||(depth0 && lookupProperty(depth0,"or"))||alias2).call(alias1,((stack1 = (data && lookupProperty(data,"root"))) && lookupProperty(stack1,"isReadOnly")),((stack1 = (depth0 != null ? lookupProperty(depth0,"model") : depth0)) != null ? lookupProperty(stack1,"isReadOnly") : stack1),{"name":"or","hash":{},"data":data,"loc":{"start":{"line":56,"column":37},"end":{"line":56,"column":75}}}),{"name":"or","hash":{},"data":data,"loc":{"start":{"line":56,"column":22},"end":{"line":56,"column":76}}}),{"name":"unless","hash":{},"fn":container.program(29, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":56,"column":12},"end":{"line":56,"column":207}}})) != null ? stack1 : "")
+    + "\n        </div>\n";
+},"5":function(container,depth0,helpers,partials,data) {
+    var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {
+        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+          return parent[propertyName];
+        }
+        return undefined
+    };
+
+  return " "
+    + container.escapeExpression(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === "function" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":6,"column":83},"end":{"line":6,"column":97}}}) : helper)))
+    + "time-date-schedule-block-pending";
+},"7":function(container,depth0,helpers,partials,data) {
+    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {
+        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+          return parent[propertyName];
+        }
+        return undefined
+    };
+
+  return "                    padding-left: "
+    + container.escapeExpression(container.lambda(((stack1 = ((stack1 = (data && lookupProperty(data,"root"))) && lookupProperty(stack1,"styles"))) && lookupProperty(stack1,"paddingLeft")), depth0))
+    + ";\n";
+},"9":function(container,depth0,helpers,partials,data) {
+    var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {
+        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+          return parent[propertyName];
+        }
+        return undefined
+    };
+
+  return container.escapeExpression(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === "function" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":12,"column":147},"end":{"line":12,"column":161}}}) : helper)))
+    + "time-schedule-focused ";
+},"11":function(container,depth0,helpers,partials,data) {
+    var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {
+        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+          return parent[propertyName];
+        }
+        return undefined
+    };
+
+  return "                    border-bottom-left-radius: "
+    + alias2(alias1(((stack1 = ((stack1 = (data && lookupProperty(data,"root"))) && lookupProperty(stack1,"styles"))) && lookupProperty(stack1,"borderRadius")), depth0))
+    + ";\n                    border-bottom-right-radius: "
+    + alias2(alias1(((stack1 = ((stack1 = (data && lookupProperty(data,"root"))) && lookupProperty(stack1,"styles"))) && lookupProperty(stack1,"borderRadius")), depth0))
+    + ";\n";
+},"13":function(container,depth0,helpers,partials,data) {
+    var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {
+        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+          return parent[propertyName];
+        }
+        return undefined
+    };
+
+  return "                    border-top-left-radius: "
+    + alias2(alias1(((stack1 = ((stack1 = (data && lookupProperty(data,"root"))) && lookupProperty(stack1,"styles"))) && lookupProperty(stack1,"borderRadius")), depth0))
+    + ";\n                    border-top-right-radius: "
+    + alias2(alias1(((stack1 = ((stack1 = (data && lookupProperty(data,"root"))) && lookupProperty(stack1,"styles"))) && lookupProperty(stack1,"borderRadius")), depth0))
+    + ";\n";
+},"15":function(container,depth0,helpers,partials,data) {
+    var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {
+        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+          return parent[propertyName];
+        }
+        return undefined
+    };
+
+  return "                    color: #ffffff; background-color:"
+    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,"model") : depth0)) != null ? lookupProperty(stack1,"color") : stack1), depth0))
+    + "; border-color:"
+    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,"model") : depth0)) != null ? lookupProperty(stack1,"color") : stack1), depth0))
+    + ";\n";
+},"17":function(container,depth0,helpers,partials,data) {
+    var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {
+        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+          return parent[propertyName];
+        }
+        return undefined
+    };
+
+  return "                    color:"
+    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,"model") : depth0)) != null ? lookupProperty(stack1,"color") : stack1), depth0))
+    + "; background-color:"
+    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,"model") : depth0)) != null ? lookupProperty(stack1,"bgColor") : stack1), depth0))
+    + "; border-color:"
+    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,"model") : depth0)) != null ? lookupProperty(stack1,"borderColor") : stack1), depth0))
+    + ";\n";
+},"19":function(container,depth0,helpers,partials,data) {
+    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3="function", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {
+        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+          return parent[propertyName];
+        }
+        return undefined
+    };
+
+  return "                <div class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":30,"column":28},"end":{"line":30,"column":42}}}) : helper)))
+    + "time-schedule-content "
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":30,"column":64},"end":{"line":30,"column":78}}}) : helper)))
+    + "time-schedule-content-travel-time\" style=\"height: "
+    + alias4(((helper = (helper = lookupProperty(helpers,"goingDurationHeight") || (depth0 != null ? lookupProperty(depth0,"goingDurationHeight") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"goingDurationHeight","hash":{},"data":data,"loc":{"start":{"line":30,"column":128},"end":{"line":30,"column":151}}}) : helper)))
+    + "px;\n"
+    + ((stack1 = lookupProperty(helpers,"if").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,"model") : depth0)) != null ? lookupProperty(stack1,"isFocused") : stack1),{"name":"if","hash":{},"fn":container.program(20, data, 0),"inverse":container.program(22, data, 0),"data":data,"loc":{"start":{"line":31,"column":16},"end":{"line":35,"column":23}}})) != null ? stack1 : "")
+    + "                border-bottom: 1px dashed "
+    + alias4(((helper = (helper = lookupProperty(helpers,"travelBorderColor") || (depth0 != null ? lookupProperty(depth0,"travelBorderColor") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"travelBorderColor","hash":{},"data":data,"loc":{"start":{"line":36,"column":42},"end":{"line":36,"column":63}}}) : helper)))
+    + ";\">"
+    + ((stack1 = (lookupProperty(helpers,"goingDuration-tmpl")||(depth0 && lookupProperty(depth0,"goingDuration-tmpl"))||alias2).call(alias1,(depth0 != null ? lookupProperty(depth0,"model") : depth0),{"name":"goingDuration-tmpl","hash":{},"data":data,"loc":{"start":{"line":36,"column":66},"end":{"line":36,"column":96}}})) != null ? stack1 : "")
+    + "</div>\n";
+},"20":function(container,depth0,helpers,partials,data) {
+    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {
+        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+          return parent[propertyName];
+        }
+        return undefined
+    };
+
+  return "                    border-color:"
+    + container.escapeExpression(container.lambda(((stack1 = (depth0 != null ? lookupProperty(depth0,"model") : depth0)) != null ? lookupProperty(stack1,"color") : stack1), depth0))
+    + ";\n";
+},"22":function(container,depth0,helpers,partials,data) {
+    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {
+        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+          return parent[propertyName];
+        }
+        return undefined
+    };
+
+  return "                    border-color:"
+    + container.escapeExpression(container.lambda(((stack1 = (depth0 != null ? lookupProperty(depth0,"model") : depth0)) != null ? lookupProperty(stack1,"borderColor") : stack1), depth0))
+    + ";\n";
+},"24":function(container,depth0,helpers,partials,data) {
+    var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {
+        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+          return parent[propertyName];
+        }
+        return undefined
+    };
+
+  return "border-bottom: 1px dashed "
+    + container.escapeExpression(((helper = (helper = lookupProperty(helpers,"travelBorderColor") || (depth0 != null ? lookupProperty(depth0,"travelBorderColor") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === "function" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{"name":"travelBorderColor","hash":{},"data":data,"loc":{"start":{"line":44,"column":67},"end":{"line":44,"column":88}}}) : helper)))
+    + ";";
+},"26":function(container,depth0,helpers,partials,data) {
+    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3="function", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {
+        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+          return parent[propertyName];
+        }
+        return undefined
+    };
+
+  return "                <div class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":48,"column":28},"end":{"line":48,"column":42}}}) : helper)))
+    + "time-schedule-content "
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":48,"column":64},"end":{"line":48,"column":78}}}) : helper)))
+    + "time-schedule-content-travel-time\" style=\"height: "
+    + alias4(((helper = (helper = lookupProperty(helpers,"comingDurationHeight") || (depth0 != null ? lookupProperty(depth0,"comingDurationHeight") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"comingDurationHeight","hash":{},"data":data,"loc":{"start":{"line":48,"column":128},"end":{"line":48,"column":152}}}) : helper)))
+    + "px;\n"
+    + ((stack1 = lookupProperty(helpers,"if").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,"model") : depth0)) != null ? lookupProperty(stack1,"isFocused") : stack1),{"name":"if","hash":{},"fn":container.program(20, data, 0),"inverse":container.program(27, data, 0),"data":data,"loc":{"start":{"line":49,"column":16},"end":{"line":53,"column":23}}})) != null ? stack1 : "")
+    + ";\">"
+    + ((stack1 = (lookupProperty(helpers,"comingDuration-tmpl")||(depth0 && lookupProperty(depth0,"comingDuration-tmpl"))||alias2).call(alias1,(depth0 != null ? lookupProperty(depth0,"model") : depth0),{"name":"comingDuration-tmpl","hash":{},"data":data,"loc":{"start":{"line":53,"column":26},"end":{"line":53,"column":57}}})) != null ? stack1 : "")
+    + "</div>\n";
+},"27":function(container,depth0,helpers,partials,data) {
+    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {
+        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+          return parent[propertyName];
+        }
+        return undefined
+    };
+
+  return "                    border-color:"
+    + container.escapeExpression(container.lambda(((stack1 = (depth0 != null ? lookupProperty(depth0,"model") : depth0)) != null ? lookupProperty(stack1,"borderColor") : stack1), depth0))
+    + ";\n                ";
+},"29":function(container,depth0,helpers,partials,data) {
+    var stack1, helper, alias1=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {
+        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+          return parent[propertyName];
+        }
+        return undefined
+    };
+
+  return "<div class=\""
+    + alias1(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === "function" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":56,"column":90},"end":{"line":56,"column":104}}}) : helper)))
+    + "time-resize-handle handle-x\" style=\"margin-left: "
+    + alias1(container.lambda(((stack1 = ((stack1 = (data && lookupProperty(data,"root"))) && lookupProperty(stack1,"styles"))) && lookupProperty(stack1,"paddingLeft")), depth0))
+    + ";\">&nbsp;</div>";
+},"compiler":[8,">= 4.3.0"],"main":function(container,depth0,helpers,partials,data) {
+    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {
+        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+          return parent[propertyName];
+        }
+        return undefined
+    };
+
+  return "<div class=\""
+    + alias2(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === "function" ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":1,"column":12},"end":{"line":1,"column":26}}}) : helper)))
+    + "time-date-schedule-block-wrap\" style=\"margin-right: "
+    + alias2(container.lambda(((stack1 = (depth0 != null ? lookupProperty(depth0,"styles") : depth0)) != null ? lookupProperty(stack1,"marginRight") : stack1), depth0))
+    + ";\">\n"
+    + ((stack1 = lookupProperty(helpers,"each").call(alias1,(depth0 != null ? lookupProperty(depth0,"matrices") : depth0),{"name":"each","hash":{},"fn":container.program(1, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":2,"column":0},"end":{"line":61,"column":9}}})) != null ? stack1 : "")
+    + "</div>\n";
+},"useData":true});
+
+/***/ }),
+
+/***/ "./src/js/view/template/week/timeGrid.hbs":
+/*!************************************************!*\
+  !*** ./src/js/view/template/week/timeGrid.hbs ***!
+  \************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var Handlebars = __webpack_require__(/*! ./node_modules/handlebars/runtime.js */ "./node_modules/handlebars/runtime.js");
+module.exports = (Handlebars['default'] || Handlebars).template({"1":function(container,depth0,helpers,partials,data) {
+    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3="function", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {
+        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+          return parent[propertyName];
+        }
+        return undefined
+    };
+
+  return "<div class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":3,"column":20},"end":{"line":3,"column":34}}}) : helper)))
+    + "timegrid-timezone\" data-timezone-index=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"index") || (data && lookupProperty(data,"index"))) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"index","hash":{},"data":data,"loc":{"start":{"line":3,"column":74},"end":{"line":3,"column":84}}}) : helper)))
+    + "\" style=\""
+    + ((stack1 = lookupProperty(helpers,"if").call(alias1,(depth0 != null ? lookupProperty(depth0,"hidden") : depth0),{"name":"if","hash":{},"fn":container.program(2, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":3,"column":93},"end":{"line":3,"column":127}}})) != null ? stack1 : "")
+    + "position: absolute; top: 0; width: "
+    + alias4(((helper = (helper = lookupProperty(helpers,"width") || (depth0 != null ? lookupProperty(depth0,"width") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"width","hash":{},"data":data,"loc":{"start":{"line":3,"column":162},"end":{"line":3,"column":171}}}) : helper)))
+    + "%; left: "
+    + alias4(((helper = (helper = lookupProperty(helpers,"left") || (depth0 != null ? lookupProperty(depth0,"left") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"left","hash":{},"data":data,"loc":{"start":{"line":3,"column":180},"end":{"line":3,"column":188}}}) : helper)))
+    + "%; border-right: "
+    + alias4(container.lambda(((stack1 = ((stack1 = (data && lookupProperty(data,"root"))) && lookupProperty(stack1,"styles"))) && lookupProperty(stack1,"leftBorderRight")), depth0))
+    + "; background-color: "
+    + alias4(((helper = (helper = lookupProperty(helpers,"backgroundColor") || (depth0 != null ? lookupProperty(depth0,"backgroundColor") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"backgroundColor","hash":{},"data":data,"loc":{"start":{"line":3,"column":257},"end":{"line":3,"column":276}}}) : helper)))
+    + ";\" >\n"
+    + ((stack1 = lookupProperty(helpers,"if").call(alias1,(depth0 != null ? lookupProperty(depth0,"isPrimary") : depth0),{"name":"if","hash":{},"fn":container.program(4, data, 0),"inverse":container.program(10, data, 0),"data":data,"loc":{"start":{"line":4,"column":8},"end":{"line":26,"column":15}}})) != null ? stack1 : "")
+    + "        </div>\n";
+},"2":function(container,depth0,helpers,partials,data) {
+    return "display:none;";
+},"4":function(container,depth0,helpers,partials,data) {
+    var stack1, alias1=depth0 != null ? depth0 : (container.nullContext || {}), lookupProperty = container.lookupProperty || function(parent, propertyName) {
+        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+          return parent[propertyName];
+        }
+        return undefined
+    };
+
+  return ((stack1 = lookupProperty(helpers,"each").call(alias1,(depth0 != null ? lookupProperty(depth0,"timeSlots") : depth0),{"name":"each","hash":{},"fn":container.program(5, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":5,"column":12},"end":{"line":9,"column":23}}})) != null ? stack1 : "")
+    + ((stack1 = lookupProperty(helpers,"if").call(alias1,((stack1 = (data && lookupProperty(data,"root"))) && lookupProperty(stack1,"showHourMarker")),{"name":"if","hash":{},"fn":container.program(8, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":10,"column":12},"end":{"line":14,"column":19}}})) != null ? stack1 : "");
+},"5":function(container,depth0,helpers,partials,data) {
+    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3="function", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {
+        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+          return parent[propertyName];
+        }
+        return undefined
+    };
+
+  return "<div class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":6,"column":28},"end":{"line":6,"column":42}}}) : helper)))
+    + "timegrid-hour\" style=\"height: "
+    + alias4(container.lambda(((stack1 = ((stack1 = (data && lookupProperty(data,"root"))) && lookupProperty(stack1,"styles"))) && lookupProperty(stack1,"oneHourHeight")), depth0))
+    + "; color: "
+    + alias4(((helper = (helper = lookupProperty(helpers,"color") || (depth0 != null ? lookupProperty(depth0,"color") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"color","hash":{},"data":data,"loc":{"start":{"line":6,"column":111},"end":{"line":6,"column":120}}}) : helper)))
+    + "; font-weight: "
+    + alias4(((helper = (helper = lookupProperty(helpers,"fontWeight") || (depth0 != null ? lookupProperty(depth0,"fontWeight") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"fontWeight","hash":{},"data":data,"loc":{"start":{"line":6,"column":135},"end":{"line":6,"column":149}}}) : helper)))
+    + ";\">\n                    <span style=\""
+    + ((stack1 = lookupProperty(helpers,"if").call(alias1,(depth0 != null ? lookupProperty(depth0,"hidden") : depth0),{"name":"if","hash":{},"fn":container.program(6, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":7,"column":33},"end":{"line":7,"column":66}}})) != null ? stack1 : "")
+    + "\">"
+    + ((stack1 = (lookupProperty(helpers,"timegridDisplayPrimayTime-tmpl")||(depth0 && lookupProperty(depth0,"timegridDisplayPrimayTime-tmpl"))||alias2).call(alias1,depth0,{"name":"timegridDisplayPrimayTime-tmpl","hash":{},"data":data,"loc":{"start":{"line":7,"column":68},"end":{"line":7,"column":109}}})) != null ? stack1 : "")
+    + "</span>\n                </div>\n";
+},"6":function(container,depth0,helpers,partials,data) {
+    return "display:none";
+},"8":function(container,depth0,helpers,partials,data) {
+    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3="function", alias4=container.escapeExpression, alias5=container.lambda, lookupProperty = container.lookupProperty || function(parent, propertyName) {
+        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+          return parent[propertyName];
+        }
+        return undefined
+    };
+
+  return "                <div class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":11,"column":28},"end":{"line":11,"column":42}}}) : helper)))
+    + "timegrid-hourmarker\" style=\"top:"
+    + alias4(alias5(((stack1 = (data && lookupProperty(data,"root"))) && lookupProperty(stack1,"hourmarkerTop")), depth0))
+    + "%; margin-top: calc(6px - "
+    + alias4(alias5(((stack1 = ((stack1 = (data && lookupProperty(data,"root"))) && lookupProperty(stack1,"styles"))) && lookupProperty(stack1,"halfHourHeight")), depth0))
+    + "); height: "
+    + alias4(alias5(((stack1 = ((stack1 = (data && lookupProperty(data,"root"))) && lookupProperty(stack1,"styles"))) && lookupProperty(stack1,"halfHourHeight")), depth0))
+    + ";\">\n                    <div class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":12,"column":32},"end":{"line":12,"column":46}}}) : helper)))
+    + "timegrid-hourmarker-time\" style=\"color: "
+    + alias4(alias5(((stack1 = ((stack1 = (data && lookupProperty(data,"root"))) && lookupProperty(stack1,"styles"))) && lookupProperty(stack1,"currentTimeColor")), depth0))
+    + "; font-size: "
+    + alias4(alias5(((stack1 = ((stack1 = (data && lookupProperty(data,"root"))) && lookupProperty(stack1,"styles"))) && lookupProperty(stack1,"currentTimeFontSize")), depth0))
+    + "; font-weight: "
+    + alias4(alias5(((stack1 = ((stack1 = (data && lookupProperty(data,"root"))) && lookupProperty(stack1,"styles"))) && lookupProperty(stack1,"currentTimeFontWeight")), depth0))
+    + "\">"
+    + ((stack1 = (lookupProperty(helpers,"timegridCurrentTime-tmpl")||(depth0 && lookupProperty(depth0,"timegridCurrentTime-tmpl"))||alias2).call(alias1,depth0,{"name":"timegridCurrentTime-tmpl","hash":{},"data":data,"loc":{"start":{"line":12,"column":223},"end":{"line":12,"column":258}}})) != null ? stack1 : "")
+    + "</div>\n                </div>\n";
+},"10":function(container,depth0,helpers,partials,data) {
+    var stack1, alias1=depth0 != null ? depth0 : (container.nullContext || {}), lookupProperty = container.lookupProperty || function(parent, propertyName) {
+        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+          return parent[propertyName];
+        }
+        return undefined
+    };
+
+  return ((stack1 = lookupProperty(helpers,"each").call(alias1,(depth0 != null ? lookupProperty(depth0,"timeSlots") : depth0),{"name":"each","hash":{},"fn":container.program(11, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":16,"column":12},"end":{"line":20,"column":23}}})) != null ? stack1 : "")
+    + ((stack1 = lookupProperty(helpers,"if").call(alias1,((stack1 = (data && lookupProperty(data,"root"))) && lookupProperty(stack1,"showHourMarker")),{"name":"if","hash":{},"fn":container.program(13, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":21,"column":12},"end":{"line":25,"column":19}}})) != null ? stack1 : "");
+},"11":function(container,depth0,helpers,partials,data) {
+    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3="function", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {
+        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+          return parent[propertyName];
+        }
+        return undefined
+    };
+
+  return "<div class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":17,"column":28},"end":{"line":17,"column":42}}}) : helper)))
+    + "timegrid-hour\" style=\"height: "
+    + alias4(container.lambda(((stack1 = ((stack1 = (data && lookupProperty(data,"root"))) && lookupProperty(stack1,"styles"))) && lookupProperty(stack1,"oneHourHeight")), depth0))
+    + "; color: "
+    + alias4(((helper = (helper = lookupProperty(helpers,"color") || (depth0 != null ? lookupProperty(depth0,"color") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"color","hash":{},"data":data,"loc":{"start":{"line":17,"column":111},"end":{"line":17,"column":120}}}) : helper)))
+    + "; font-weight: "
+    + alias4(((helper = (helper = lookupProperty(helpers,"fontWeight") || (depth0 != null ? lookupProperty(depth0,"fontWeight") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"fontWeight","hash":{},"data":data,"loc":{"start":{"line":17,"column":135},"end":{"line":17,"column":149}}}) : helper)))
+    + ";\">\n                    <span style=\""
+    + ((stack1 = lookupProperty(helpers,"if").call(alias1,(depth0 != null ? lookupProperty(depth0,"hidden") : depth0),{"name":"if","hash":{},"fn":container.program(6, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":18,"column":33},"end":{"line":18,"column":66}}})) != null ? stack1 : "")
+    + "\">"
+    + ((stack1 = (lookupProperty(helpers,"timegridDisplayTime-tmpl")||(depth0 && lookupProperty(depth0,"timegridDisplayTime-tmpl"))||alias2).call(alias1,depth0,{"name":"timegridDisplayTime-tmpl","hash":{},"data":data,"loc":{"start":{"line":18,"column":68},"end":{"line":18,"column":103}}})) != null ? stack1 : "")
+    + "</span>\n                </div>\n";
+},"13":function(container,depth0,helpers,partials,data) {
+    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3="function", alias4=container.escapeExpression, alias5=container.lambda, lookupProperty = container.lookupProperty || function(parent, propertyName) {
+        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+          return parent[propertyName];
+        }
+        return undefined
+    };
+
+  return "                <div class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":22,"column":28},"end":{"line":22,"column":42}}}) : helper)))
+    + "timegrid-hourmarker\" style=\"top:"
+    + alias4(alias5(((stack1 = (data && lookupProperty(data,"root"))) && lookupProperty(stack1,"hourmarkerTop")), depth0))
+    + "%; margin-top: calc(6px - "
+    + alias4(alias5(((stack1 = ((stack1 = (data && lookupProperty(data,"root"))) && lookupProperty(stack1,"styles"))) && lookupProperty(stack1,"halfHourHeight")), depth0))
+    + "); height: "
+    + alias4(alias5(((stack1 = ((stack1 = (data && lookupProperty(data,"root"))) && lookupProperty(stack1,"styles"))) && lookupProperty(stack1,"halfHourHeight")), depth0))
+    + ";\">\n                    <div class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":23,"column":32},"end":{"line":23,"column":46}}}) : helper)))
+    + "timegrid-hourmarker-time\" style=\"color: "
+    + alias4(alias5(((stack1 = ((stack1 = (data && lookupProperty(data,"root"))) && lookupProperty(stack1,"styles"))) && lookupProperty(stack1,"currentTimeColor")), depth0))
+    + "; font-size: "
+    + alias4(alias5(((stack1 = ((stack1 = (data && lookupProperty(data,"root"))) && lookupProperty(stack1,"styles"))) && lookupProperty(stack1,"currentTimeFontSize")), depth0))
+    + ";\">"
+    + ((stack1 = (lookupProperty(helpers,"timegridCurrentTime-tmpl")||(depth0 && lookupProperty(depth0,"timegridCurrentTime-tmpl"))||alias2).call(alias1,depth0,{"name":"timegridCurrentTime-tmpl","hash":{},"data":data,"loc":{"start":{"line":23,"column":171},"end":{"line":23,"column":206}}})) != null ? stack1 : "")
+    + "</div>\n                </div>\n";
+},"15":function(container,depth0,helpers,partials,data) {
+    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3="function", alias4=container.escapeExpression, alias5=container.lambda, lookupProperty = container.lookupProperty || function(parent, propertyName) {
+        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+          return parent[propertyName];
+        }
+        return undefined
+    };
+
+  return "<div class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":33,"column":20},"end":{"line":33,"column":34}}}) : helper)))
+    + "timegrid-gridline\" style=\"height: "
+    + alias4(alias5(((stack1 = ((stack1 = (data && lookupProperty(data,"root"))) && lookupProperty(stack1,"styles"))) && lookupProperty(stack1,"oneHourHeight")), depth0))
+    + ";\n"
+    + ((stack1 = lookupProperty(helpers,"unless").call(alias1,(data && lookupProperty(data,"last")),{"name":"unless","hash":{},"fn":container.program(16, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":34,"column":12},"end":{"line":36,"column":23}}})) != null ? stack1 : "")
+    + "        \">\n            <div class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":38,"column":24},"end":{"line":38,"column":38}}}) : helper)))
+    + "timegrid-gridline-half\" style=\"height: "
+    + alias4(alias5(((stack1 = ((stack1 = (data && lookupProperty(data,"root"))) && lookupProperty(stack1,"styles"))) && lookupProperty(stack1,"halfHourHeight")), depth0))
+    + "; border-bottom: "
+    + alias4(alias5(((stack1 = ((stack1 = (data && lookupProperty(data,"root"))) && lookupProperty(stack1,"styles"))) && lookupProperty(stack1,"halfHourBorderBottom")), depth0))
+    + ";\"></div>\n        </div>\n";
+},"16":function(container,depth0,helpers,partials,data) {
+    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {
+        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+          return parent[propertyName];
+        }
+        return undefined
+    };
+
+  return "            border-bottom: "
+    + container.escapeExpression(container.lambda(((stack1 = ((stack1 = (data && lookupProperty(data,"root"))) && lookupProperty(stack1,"styles"))) && lookupProperty(stack1,"borderBottom")), depth0))
+    + ";\n";
+},"18":function(container,depth0,helpers,partials,data) {
+    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3="function", alias4=container.escapeExpression, alias5=container.lambda, lookupProperty = container.lookupProperty || function(parent, propertyName) {
+        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+          return parent[propertyName];
+        }
+        return undefined
+    };
+
+  return "    <div class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":47,"column":16},"end":{"line":47,"column":30}}}) : helper)))
+    + "timegrid-hourmarker\" style=\"top:"
+    + alias4(((helper = (helper = lookupProperty(helpers,"hourmarkerTop") || (depth0 != null ? lookupProperty(depth0,"hourmarkerTop") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"hourmarkerTop","hash":{},"data":data,"loc":{"start":{"line":47,"column":62},"end":{"line":47,"column":79}}}) : helper)))
+    + "%\">\n        <div class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":48,"column":20},"end":{"line":48,"column":34}}}) : helper)))
+    + "timegrid-hourmarker-line-left\" style=\"width:"
+    + alias4(((helper = (helper = lookupProperty(helpers,"todaymarkerLeft") || (depth0 != null ? lookupProperty(depth0,"todaymarkerLeft") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"todaymarkerLeft","hash":{},"data":data,"loc":{"start":{"line":48,"column":78},"end":{"line":48,"column":97}}}) : helper)))
+    + "%; border-top: "
+    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,"styles") : depth0)) != null ? lookupProperty(stack1,"currentTimeLeftBorderTop") : stack1), depth0))
+    + ";\"></div>\n        <div class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":49,"column":20},"end":{"line":49,"column":34}}}) : helper)))
+    + "timegrid-todaymarker\" style=\"left:"
+    + alias4(((helper = (helper = lookupProperty(helpers,"todaymarkerLeft") || (depth0 != null ? lookupProperty(depth0,"todaymarkerLeft") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"todaymarkerLeft","hash":{},"data":data,"loc":{"start":{"line":49,"column":68},"end":{"line":49,"column":87}}}) : helper)))
+    + "%; background-color: "
+    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,"styles") : depth0)) != null ? lookupProperty(stack1,"currentTimeBulletBackgroundColor") : stack1), depth0))
+    + "; \">today</div>\n        <div class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":50,"column":20},"end":{"line":50,"column":34}}}) : helper)))
+    + "timegrid-hourmarker-line-today\" style=\"left:"
+    + alias4(((helper = (helper = lookupProperty(helpers,"todaymarkerLeft") || (depth0 != null ? lookupProperty(depth0,"todaymarkerLeft") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"todaymarkerLeft","hash":{},"data":data,"loc":{"start":{"line":50,"column":78},"end":{"line":50,"column":97}}}) : helper)))
+    + "%; width: "
+    + alias4(((helper = (helper = lookupProperty(helpers,"todaymarkerWidth") || (depth0 != null ? lookupProperty(depth0,"todaymarkerWidth") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"todaymarkerWidth","hash":{},"data":data,"loc":{"start":{"line":50,"column":107},"end":{"line":50,"column":127}}}) : helper)))
+    + "%; border-top: "
+    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,"styles") : depth0)) != null ? lookupProperty(stack1,"currentTimeTodayBorderTop") : stack1), depth0))
+    + ";\"></div>\n        <div class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":51,"column":20},"end":{"line":51,"column":34}}}) : helper)))
+    + "timegrid-hourmarker-line-right\" style=\"left:"
+    + alias4(((helper = (helper = lookupProperty(helpers,"todaymarkerRight") || (depth0 != null ? lookupProperty(depth0,"todaymarkerRight") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"todaymarkerRight","hash":{},"data":data,"loc":{"start":{"line":51,"column":78},"end":{"line":51,"column":98}}}) : helper)))
+    + "%; border-top: "
+    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,"styles") : depth0)) != null ? lookupProperty(stack1,"currentTimeRightBorderTop") : stack1), depth0))
+    + ";\"></div>\n    </div>\n";
+},"compiler":[8,">= 4.3.0"],"main":function(container,depth0,helpers,partials,data) {
+    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3="function", alias4=container.escapeExpression, alias5=container.lambda, lookupProperty = container.lookupProperty || function(parent, propertyName) {
+        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+          return parent[propertyName];
+        }
+        return undefined
+    };
+
+  return "<div class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":1,"column":12},"end":{"line":1,"column":26}}}) : helper)))
+    + "timegrid-left\" style=\"width: "
+    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,"styles") : depth0)) != null ? lookupProperty(stack1,"leftWidth") : stack1), depth0))
+    + "; font-size: "
+    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,"styles") : depth0)) != null ? lookupProperty(stack1,"leftFontSize") : stack1), depth0))
+    + ";\">\n"
+    + ((stack1 = lookupProperty(helpers,"each").call(alias1,(depth0 != null ? lookupProperty(depth0,"timezones") : depth0),{"name":"each","hash":{},"fn":container.program(1, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":2,"column":4},"end":{"line":28,"column":15}}})) != null ? stack1 : "")
+    + "</div>\n<div class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":30,"column":12},"end":{"line":30,"column":26}}}) : helper)))
+    + "timegrid-right\" style=\"margin-left: "
+    + alias4(alias5(((stack1 = ((stack1 = (data && lookupProperty(data,"root"))) && lookupProperty(stack1,"styles"))) && lookupProperty(stack1,"leftWidth")), depth0))
+    + ";\">\n    <div class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":31,"column":16},"end":{"line":31,"column":30}}}) : helper)))
+    + "timegrid-h-grid\">\n"
+    + ((stack1 = lookupProperty(helpers,"each").call(alias1,(depth0 != null ? lookupProperty(depth0,"hoursLabels") : depth0),{"name":"each","hash":{},"fn":container.program(15, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":32,"column":8},"end":{"line":40,"column":19}}})) != null ? stack1 : "")
+    + "</div>\n    <div class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":42,"column":16},"end":{"line":42,"column":30}}}) : helper)))
+    + "timegrid-schedules\">\n        <div class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":43,"column":20},"end":{"line":43,"column":34}}}) : helper)))
+    + "timegrid-schedules-container\"></div>\n    </div>\n\n"
+    + ((stack1 = lookupProperty(helpers,"if").call(alias1,(depth0 != null ? lookupProperty(depth0,"showHourMarker") : depth0),{"name":"if","hash":{},"fn":container.program(18, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":46,"column":4},"end":{"line":53,"column":11}}})) != null ? stack1 : "")
+    + "</div>\n";
+},"useData":true});
+
+/***/ }),
+
+/***/ "./src/js/view/template/week/timeGridCurrentTime.hbs":
+/*!***********************************************************!*\
+  !*** ./src/js/view/template/week/timeGridCurrentTime.hbs ***!
+  \***********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var Handlebars = __webpack_require__(/*! ./node_modules/handlebars/runtime.js */ "./node_modules/handlebars/runtime.js");
+module.exports = (Handlebars['default'] || Handlebars).template({"compiler":[8,">= 4.3.0"],"main":function(container,depth0,helpers,partials,data) {
+    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {
+        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+          return parent[propertyName];
+        }
+        return undefined
+    };
+
+  return ((stack1 = (lookupProperty(helpers,"timegridCurrentTime-tmpl")||(depth0 && lookupProperty(depth0,"timegridCurrentTime-tmpl"))||container.hooks.helperMissing).call(depth0 != null ? depth0 : (container.nullContext || {}),depth0,{"name":"timegridCurrentTime-tmpl","hash":{},"data":data,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":35}}})) != null ? stack1 : "")
+    + "\n";
+},"useData":true});
+
+/***/ }),
+
+/***/ "./src/js/view/template/week/timeMoveGuide.hbs":
+/*!*****************************************************!*\
+  !*** ./src/js/view/template/week/timeMoveGuide.hbs ***!
+  \*****************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var Handlebars = __webpack_require__(/*! ./node_modules/handlebars/runtime.js */ "./node_modules/handlebars/runtime.js");
+module.exports = (Handlebars['default'] || Handlebars).template({"1":function(container,depth0,helpers,partials,data) {
+    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3="function", alias4=container.escapeExpression, alias5=container.lambda, lookupProperty = container.lookupProperty || function(parent, propertyName) {
+        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+          return parent[propertyName];
+        }
+        return undefined
+    };
+
+  return "            <div class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":4,"column":24},"end":{"line":4,"column":38}}}) : helper)))
+    + "time-schedule-content "
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":4,"column":60},"end":{"line":4,"column":74}}}) : helper)))
+    + "time-schedule-content-travel-time\" style=\"border-color:"
+    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,"model") : depth0)) != null ? lookupProperty(stack1,"borderColor") : stack1), depth0))
+    + "; border-bottom: 1px dashed "
+    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,"model") : depth0)) != null ? lookupProperty(stack1,"color") : stack1), depth0))
+    + "; height: "
+    + alias4(((helper = (helper = lookupProperty(helpers,"goingDurationHeight") || (depth0 != null ? lookupProperty(depth0,"goingDurationHeight") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"goingDurationHeight","hash":{},"data":data,"loc":{"start":{"line":4,"column":203},"end":{"line":4,"column":226}}}) : helper)))
+    + "%;\">"
+    + ((stack1 = (lookupProperty(helpers,"goingDuration-tmpl")||(depth0 && lookupProperty(depth0,"goingDuration-tmpl"))||alias2).call(alias1,(depth0 != null ? lookupProperty(depth0,"model") : depth0),{"name":"goingDuration-tmpl","hash":{},"data":data,"loc":{"start":{"line":4,"column":230},"end":{"line":4,"column":260}}})) != null ? stack1 : "")
+    + "</div>\n";
+},"3":function(container,depth0,helpers,partials,data) {
+    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3="function", alias4=container.escapeExpression, alias5=container.lambda, lookupProperty = container.lookupProperty || function(parent, propertyName) {
+        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+          return parent[propertyName];
+        }
+        return undefined
+    };
+
+  return "            <div class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":10,"column":24},"end":{"line":10,"column":38}}}) : helper)))
+    + "time-schedule-content "
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":10,"column":60},"end":{"line":10,"column":74}}}) : helper)))
+    + "time-schedule-content-travel-time\" style=\"border-color:"
+    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,"model") : depth0)) != null ? lookupProperty(stack1,"borderColor") : stack1), depth0))
+    + "; border-top: 1px dashed "
+    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,"model") : depth0)) != null ? lookupProperty(stack1,"color") : stack1), depth0))
+    + "; height: "
+    + alias4(((helper = (helper = lookupProperty(helpers,"comingDurationHeight") || (depth0 != null ? lookupProperty(depth0,"comingDurationHeight") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"comingDurationHeight","hash":{},"data":data,"loc":{"start":{"line":10,"column":200},"end":{"line":10,"column":224}}}) : helper)))
+    + "%;\">"
+    + ((stack1 = (lookupProperty(helpers,"comingDuration-tmpl")||(depth0 && lookupProperty(depth0,"comingDuration-tmpl"))||alias2).call(alias1,(depth0 != null ? lookupProperty(depth0,"model") : depth0),{"name":"comingDuration-tmpl","hash":{},"data":data,"loc":{"start":{"line":10,"column":228},"end":{"line":10,"column":259}}})) != null ? stack1 : "")
+    + "</div>\n";
+},"5":function(container,depth0,helpers,partials,data) {
+    var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {
+        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+          return parent[propertyName];
+        }
+        return undefined
+    };
+
+  return "<div class=\""
+    + container.escapeExpression(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === "function" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":13,"column":38},"end":{"line":13,"column":52}}}) : helper)))
+    + "time-resize-handle handle-x\">&nbsp;</div>";
+},"compiler":[8,">= 4.3.0"],"main":function(container,depth0,helpers,partials,data) {
+    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3="function", alias4=container.escapeExpression, alias5=container.lambda, lookupProperty = container.lookupProperty || function(parent, propertyName) {
+        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+          return parent[propertyName];
+        }
+        return undefined
+    };
+
+  return "<div class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":1,"column":12},"end":{"line":1,"column":26}}}) : helper)))
+    + "time-date-schedule-block\" data-id=\""
+    + alias4((lookupProperty(helpers,"stamp")||(depth0 && lookupProperty(depth0,"stamp"))||alias2).call(alias1,(depth0 != null ? lookupProperty(depth0,"model") : depth0),{"name":"stamp","hash":{},"data":data,"loc":{"start":{"line":1,"column":61},"end":{"line":1,"column":76}}}))
+    + "\" style=\"width: 100%; height: 100%;\">\n    <div class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":2,"column":16},"end":{"line":2,"column":30}}}) : helper)))
+    + "time-schedule "
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":2,"column":44},"end":{"line":2,"column":58}}}) : helper)))
+    + "time-date-schedule-block-focused\" style=\"color: #ffffff; background-color:"
+    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,"model") : depth0)) != null ? lookupProperty(stack1,"dragBgColor") : stack1), depth0))
+    + ";\">\n"
+    + ((stack1 = lookupProperty(helpers,"if").call(alias1,(depth0 != null ? lookupProperty(depth0,"hasGoingDuration") : depth0),{"name":"if","hash":{},"fn":container.program(1, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":3,"column":8},"end":{"line":5,"column":15}}})) != null ? stack1 : "")
+    + "            <div class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":6,"column":24},"end":{"line":6,"column":38}}}) : helper)))
+    + "time-schedule-content\" style=\"height: "
+    + alias4(((helper = (helper = lookupProperty(helpers,"modelDurationHeight") || (depth0 != null ? lookupProperty(depth0,"modelDurationHeight") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"modelDurationHeight","hash":{},"data":data,"loc":{"start":{"line":6,"column":76},"end":{"line":6,"column":99}}}) : helper)))
+    + "%; border-color:"
+    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,"model") : depth0)) != null ? lookupProperty(stack1,"borderColor") : stack1), depth0))
+    + ";\">\n                "
+    + ((stack1 = (lookupProperty(helpers,"time-tmpl")||(depth0 && lookupProperty(depth0,"time-tmpl"))||alias2).call(alias1,(depth0 != null ? lookupProperty(depth0,"model") : depth0),{"name":"time-tmpl","hash":{},"data":data,"loc":{"start":{"line":7,"column":16},"end":{"line":7,"column":37}}})) != null ? stack1 : "")
+    + "\n            </div>\n"
+    + ((stack1 = lookupProperty(helpers,"if").call(alias1,(depth0 != null ? lookupProperty(depth0,"hasComingDuration") : depth0),{"name":"if","hash":{},"fn":container.program(3, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":9,"column":8},"end":{"line":11,"column":15}}})) != null ? stack1 : "")
+    + "    </div>\n    "
+    + ((stack1 = lookupProperty(helpers,"unless").call(alias1,(depth0 != null ? lookupProperty(depth0,"croppedEnd") : depth0),{"name":"unless","hash":{},"fn":container.program(5, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":13,"column":4},"end":{"line":13,"column":104}}})) != null ? stack1 : "")
+    + "\n    <div class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":14,"column":16},"end":{"line":14,"column":30}}}) : helper)))
+    + "time-date-schedule-block-cover\"></div>\n</div>\n";
+},"useData":true});
+
+/***/ }),
+
+/***/ "./src/js/view/template/week/timezoneSticky.hbs":
+/*!******************************************************!*\
+  !*** ./src/js/view/template/week/timezoneSticky.hbs ***!
+  \******************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var Handlebars = __webpack_require__(/*! ./node_modules/handlebars/runtime.js */ "./node_modules/handlebars/runtime.js");
+module.exports = (Handlebars['default'] || Handlebars).template({"1":function(container,depth0,helpers,partials,data) {
+    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3="function", alias4=container.escapeExpression, alias5=container.lambda, lookupProperty = container.lookupProperty || function(parent, propertyName) {
+        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+          return parent[propertyName];
+        }
+        return undefined
+    };
+
+  return "<div class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":2,"column":12},"end":{"line":2,"column":26}}}) : helper)))
+    + "timegrid-timezone-label-container\" style=\""
+    + ((stack1 = lookupProperty(helpers,"if").call(alias1,(depth0 != null ? lookupProperty(depth0,"hidden") : depth0),{"name":"if","hash":{},"fn":container.program(2, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":2,"column":68},"end":{"line":2,"column":102}}})) != null ? stack1 : "")
+    + "background-color: "
+    + alias4(((helper = (helper = lookupProperty(helpers,"backgroundColor") || (depth0 != null ? lookupProperty(depth0,"backgroundColor") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"backgroundColor","hash":{},"data":data,"loc":{"start":{"line":2,"column":120},"end":{"line":2,"column":139}}}) : helper)))
+    + "; height: 100%; width: "
+    + alias4(((helper = (helper = lookupProperty(helpers,"width") || (depth0 != null ? lookupProperty(depth0,"width") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"width","hash":{},"data":data,"loc":{"start":{"line":2,"column":162},"end":{"line":2,"column":171}}}) : helper)))
+    + "%; left: "
+    + alias4(((helper = (helper = lookupProperty(helpers,"left") || (depth0 != null ? lookupProperty(depth0,"left") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"left","hash":{},"data":data,"loc":{"start":{"line":2,"column":180},"end":{"line":2,"column":188}}}) : helper)))
+    + "%; font-size: "
+    + alias4(alias5(((stack1 = ((stack1 = (data && lookupProperty(data,"root"))) && lookupProperty(stack1,"styles"))) && lookupProperty(stack1,"leftFontSize")), depth0))
+    + "; border-right: "
+    + alias4(alias5(((stack1 = ((stack1 = (data && lookupProperty(data,"root"))) && lookupProperty(stack1,"styles"))) && lookupProperty(stack1,"leftBorderRight")), depth0))
+    + ";\">\n    <div title=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"tooltip") || (depth0 != null ? lookupProperty(depth0,"tooltip") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"tooltip","hash":{},"data":data,"loc":{"start":{"line":3,"column":16},"end":{"line":3,"column":27}}}) : helper)))
+    + "\" class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":3,"column":36},"end":{"line":3,"column":50}}}) : helper)))
+    + "timegrid-timezone-label-cell\" data-timezone=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"displayLabel") || (depth0 != null ? lookupProperty(depth0,"displayLabel") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"displayLabel","hash":{},"data":data,"loc":{"start":{"line":3,"column":95},"end":{"line":3,"column":111}}}) : helper)))
+    + "\" style=\"height: 100%; width: 100%;\">\n"
+    + ((stack1 = lookupProperty(helpers,"if").call(alias1,(lookupProperty(helpers,"and")||(depth0 && lookupProperty(depth0,"and"))||alias2).call(alias1,(depth0 != null ? lookupProperty(depth0,"isPrimary") : depth0),((stack1 = (data && lookupProperty(data,"root"))) && lookupProperty(stack1,"showTimezoneCollapseButton")),{"name":"and","hash":{},"data":data,"loc":{"start":{"line":4,"column":14},"end":{"line":4,"column":62}}}),{"name":"if","hash":{},"fn":container.program(4, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":4,"column":8},"end":{"line":10,"column":15}}})) != null ? stack1 : "")
+    + "        <div class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":11,"column":20},"end":{"line":11,"column":34}}}) : helper)))
+    + "timegrid-timezone-label\">"
+    + ((stack1 = (lookupProperty(helpers,"timezoneDisplayLabel-tmpl")||(depth0 && lookupProperty(depth0,"timezoneDisplayLabel-tmpl"))||alias2).call(alias1,(depth0 != null ? lookupProperty(depth0,"timezoneOffset") : depth0),(depth0 != null ? lookupProperty(depth0,"displayLabel") : depth0),{"name":"timezoneDisplayLabel-tmpl","hash":{},"data":data,"loc":{"start":{"line":11,"column":59},"end":{"line":11,"column":118}}})) != null ? stack1 : "")
+    + "</div>\n    </div>\n</div>\n";
+},"2":function(container,depth0,helpers,partials,data) {
+    return "display:none;";
+},"4":function(container,depth0,helpers,partials,data) {
+    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3="function", alias4=container.escapeExpression, alias5=container.lambda, lookupProperty = container.lookupProperty || function(parent, propertyName) {
+        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+          return parent[propertyName];
+        }
+        return undefined
+    };
+
+  return "            <div class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":5,"column":24},"end":{"line":5,"column":38}}}) : helper)))
+    + "timegrid-timezone-close-btn\" style=\"border: 1px solid #ddd; top:2px; bottom: 2px; width: 10px; border-left: none;\">\n                <span style=\"color: #777; height: calc("
+    + alias4(alias5(((stack1 = ((stack1 = (data && lookupProperty(data,"root"))) && lookupProperty(stack1,"styles"))) && lookupProperty(stack1,"displayTimezoneLabelHeight")), depth0))
+    + " - 6px); line-height: calc("
+    + alias4(alias5(((stack1 = ((stack1 = (data && lookupProperty(data,"root"))) && lookupProperty(stack1,"styles"))) && lookupProperty(stack1,"displayTimezoneLabelHeight")), depth0))
+    + " - 6px);\">\n                    <span class=\""
+    + alias4(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":7,"column":33},"end":{"line":7,"column":47}}}) : helper)))
+    + "icon "
+    + ((stack1 = lookupProperty(helpers,"if").call(alias1,((stack1 = (data && lookupProperty(data,"root"))) && lookupProperty(stack1,"timezonesCollapsed")),{"name":"if","hash":{},"fn":container.program(5, data, 0),"inverse":container.program(7, data, 0),"data":data,"loc":{"start":{"line":7,"column":52},"end":{"line":7,"column":154}}})) != null ? stack1 : "")
+    + "\"></span>\n                </span>\n            </div>\n";
+},"5":function(container,depth0,helpers,partials,data) {
+    var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {
+        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+          return parent[propertyName];
+        }
+        return undefined
+    };
+
+  return container.escapeExpression(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === "function" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":7,"column":84},"end":{"line":7,"column":98}}}) : helper)))
+    + "ic-arrow-right";
+},"7":function(container,depth0,helpers,partials,data) {
+    var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {
+        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+          return parent[propertyName];
+        }
+        return undefined
+    };
+
+  return container.escapeExpression(((helper = (helper = lookupProperty(helpers,"CSS_PREFIX") || (depth0 != null ? lookupProperty(depth0,"CSS_PREFIX") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === "function" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{"name":"CSS_PREFIX","hash":{},"data":data,"loc":{"start":{"line":7,"column":120},"end":{"line":7,"column":134}}}) : helper)))
+    + "ic-arrow-left";
+},"compiler":[8,">= 4.3.0"],"main":function(container,depth0,helpers,partials,data) {
+    var stack1, alias1=depth0 != null ? depth0 : (container.nullContext || {}), lookupProperty = container.lookupProperty || function(parent, propertyName) {
+        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+          return parent[propertyName];
+        }
+        return undefined
+    };
+
+  return ((stack1 = lookupProperty(helpers,"each").call(alias1,(lookupProperty(helpers,"reverse")||(depth0 && lookupProperty(depth0,"reverse"))||container.hooks.helperMissing).call(alias1,(depth0 != null ? lookupProperty(depth0,"timezones") : depth0),{"name":"reverse","hash":{},"data":data,"loc":{"start":{"line":1,"column":8},"end":{"line":1,"column":27}}}),{"name":"each","hash":{},"fn":container.program(1, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":1,"column":0},"end":{"line":14,"column":11}}})) != null ? stack1 : "");
+},"useData":true});
+
+/***/ }),
+
+/***/ "./src/js/view/view.js":
+/*!*****************************!*\
+  !*** ./src/js/view/view.js ***!
+  \*****************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/**
+ * @fileoverview The base class of views.
+ * @author NHN FE Development Lab <dl_javascript@nhn.com>
+ */
+
+
+var util = __webpack_require__(/*! tui-code-snippet */ "tui-code-snippet");
+var domutil = __webpack_require__(/*! ../common/domutil */ "./src/js/common/domutil.js");
+var Collection = __webpack_require__(/*! ../common/collection */ "./src/js/common/collection.js");
+
+/**
+ * Base class of views.
+ *
+ * All views create own container element inside supplied container element.
+ * @constructor
+ * @param {HTMLElement} container Default container element for view.
+ *  you can use this element for this.container syntax.
+ */
+function View(container) {
+    var id = util.stamp(this);
+
+    if (util.isUndefined(container)) {
+        container = domutil.appendHTMLElement('div');
+    }
+
+    domutil.addClass(container, this.cssprefix(id));
+
+    /**
+     * unique id
+     * @type {number}
+     */
+    this.id = id;
+
+    /**
+     * base element of view.
+     * @type {HTMLDIVElement}
+     */
+    this.container = container;
+
+    /*eslint-disable*/
+    /**
+     * child views.
+     * @type {Collection}
+     */
+    this.children = new Collection(function(view) {
+        return util.stamp(view);
+    });
+    /* eslint-enable*/
+
+    /**
+     * parent view instance.
+     * @type {View}
+     */
+    this.parent = null;
+
+    /**
+     * state of view
+     */
+    this.state = {};
+}
+
+/**
+ * CSS classname prefix
+ * @type {string}
+ */
+View.prototype.cssPrefix = 'tui-view-';
+
+/**
+ * Add child views.
+ * @param {View} view The view instance to add.
+ * @param {function} [fn] Function for invoke before add. parent view class is supplied first arguments.
+ */
+View.prototype.addChild = function(view, fn) {
+    if (fn) {
+        fn.call(view, this);
+    }
+    // add parent view
+    view.parent = this;
+
+    this.children.add(view);
+};
+
+/**
+ * Remove added child view.
+ * @param {(number|View)} id View id or instance itself to remove.
+ * @param {function} [fn] Function for invoke before remove. parent view class is supplied first arguments.
+ */
+View.prototype.removeChild = function(id, fn) {
+    var view = util.isNumber(id) ? this.children.items[id] : id;
+
+    id = util.stamp(view);
+
+    if (fn) {
+        fn.call(view, this);
+    }
+
+    this.children.remove(id);
+};
+
+/**
+ * Render view recursively.
+ */
+View.prototype.render = function() {
+    this.children.each(function(childView) {
+        childView.render();
+    });
+};
+
+/**
+ * Invoke function recursively.
+ * @param {function} fn - function to invoke child view recursively
+ * @param {boolean} [skipThis=false] - set true then skip invoke with this(root) view.
+ */
+View.prototype.recursive = function(fn, skipThis) {
+    if (!util.isFunction(fn)) {
+        return;
+    }
+
+    if (!skipThis) {
+        fn(this);
+    }
+
+    this.children.each(function(childView) {
+        childView.recursive(fn);
+    });
+};
+
+/**
+ * Resize view recursively to parent.
+ */
+View.prototype.resize = function() {
+    var args = Array.prototype.slice.call(arguments),
+        parent = this.parent;
+
+    while (parent) {
+        if (util.isFunction(parent._onResize)) {
+            parent._onResize.apply(parent, args);
+        }
+
+        parent = parent.parent;
+    }
+};
+
+/**
+ * Invoking method before destroying.
+ */
+View.prototype._beforeDestroy = function() {};
+
+/**
+ * Clear properties
+ */
+View.prototype._destroy = function() {
+    this._beforeDestroy();
+    this.children.clear();
+    this.container.innerHTML = '';
+
+    this.id = this.parent = this.children = this.container = null;
+};
+
+/*eslint-disable*/
+/**
+ * Destroy child view recursively.
+ */
+View.prototype.destroy = function(isChildView) {
+    this.children.each(function(childView) {
+        childView.destroy(true);
+        childView._destroy();
+    });
+
+    if (isChildView) {
+        return;
+    }
+
+    this._destroy();
+};
+/* eslint-enable*/
+
+/**
+ * Calculate view's container element bound.
+ * @returns {object} The bound of container element.
+ */
+View.prototype.getViewBound = function() {
+    var container = this.container,
+        position = domutil.getPosition(container),
+        size = domutil.getSize(container);
+
+    return {
+        x: position[0],
+        y: position[1],
+        width: size[0],
+        height: size[1]
+    };
+};
+
+/**
+ * Return view default CSS prefix
+ * @param {string} [className] - if supplied then return prefix added class name
+ * @returns {string} CSS prefix value
+ */
+View.prototype.cssprefix = function(className) {
+    return this.cssPrefix + (className || '');
+};
+
+/**
+ * set state
+ * @param {object} state - state
+ */
+View.prototype.setState = function(state) {
+    util.extend(this.state, state);
+};
+
+util.CustomEvents.mixin(View);
+
+module.exports = View;
+
+
+/***/ }),
+
+/***/ "./src/js/view/week/dayGrid.js":
+/*!*************************************!*\
+  !*** ./src/js/view/week/dayGrid.js ***!
+  \*************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/**
+ * @fileoverview DayGrid in weekly view
+ * @author NHN FE Development Lab <dl_javascript@nhn.com>
+ */
+
+
+var util = __webpack_require__(/*! tui-code-snippet */ "tui-code-snippet");
+var config = __webpack_require__(/*! ../../config */ "./src/js/config.js"),
+    common = __webpack_require__(/*! ../../common/common */ "./src/js/common/common.js"),
+    datetime = __webpack_require__(/*! ../../common/datetime */ "./src/js/common/datetime.js"),
+    domutil = __webpack_require__(/*! ../../common/domutil */ "./src/js/common/domutil.js"),
+    TZDate = __webpack_require__(/*! ../../common/timezone */ "./src/js/common/timezone.js").Date,
+    View = __webpack_require__(/*! ../../view/view */ "./src/js/view/view.js"),
+    DayGridSchedule = __webpack_require__(/*! ./dayGridSchedule */ "./src/js/view/week/dayGridSchedule.js"),
+    baseTmpl = __webpack_require__(/*! ../template/week/dayGrid.hbs */ "./src/js/view/template/week/dayGrid.hbs"),
+    reqAnimFrame = __webpack_require__(/*! ../../common/reqAnimFrame */ "./src/js/common/reqAnimFrame.js");
+var mmax = Math.max,
+    mmin = Math.min;
+
+/**
+ * @constructor
+ * @extends {Weekday}
+ * @param {string} name - view name
+ * @param {object} options - options for DayGridSchedule view
+ * @param {number} [options.heightPercent] - height percent of view
+ * @param {number} [options.containerButtonGutter=8] - free space at bottom to
+ *  make create easy.
+ * @param {number} [options.scheduleHeight=18] - height of each schedule block.
+ * @param {number} [options.scheduleGutter=2] - gutter height of each schedule block.
+ * @param {HTMLDIVElement} container - DOM element to use container for this
+ *  view.
+ * @param {Theme} theme - theme instance
+ */
+function DayGrid(name, options, container, theme) {
+    container = domutil.appendHTMLElement(
+        'div',
+        container,
+        config.classname('daygrid-layout')
+    );
+    View.call(this, container);
+
+    name = name || 'daygrid';
+
+    this.options = util.extend({
+        viewName: name,
+        daynames: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],
+        renderStartDate: '',
+        renderEndDate: '',
+        containerBottomGutter: 18,
+        scheduleHeight: parseInt(theme.week.dayGridSchedule.height, 10),
+        scheduleGutter: parseInt(theme.week.dayGridSchedule.marginTop, 10),
+        scheduleContainerTop: 1,
+        timezones: options.timezones,
+        isReadOnly: options.isReadOnly,
+        getViewModelFunc: function(viewModel) {
+            return viewModel.schedulesInDateRange[name];
+        },
+        setViewModelFunc: function(viewModel, matrices) {
+            viewModel.schedulesInDateRange[name] = matrices;
+        }
+    }, options.week);
+
+    this.handler = {};
+    this.vPanel = null;
+
+    this.state.collapsed = true;
+}
+
+util.inherit(DayGrid, View);
+
+/**
+ * @override
+ * @param {object} viewModel - schedules view models
+ */
+DayGrid.prototype.getBaseViewModel = function(viewModel) {
+    var opt = this.options,
+        daynames = opt.daynames,
+        range = viewModel.range,
+        grids = viewModel.grids,
+        matrices = opt.getViewModelFunc(viewModel),
+        exceedDate = {},
+        panel = getPanel(opt.panels, opt.viewName),
+        panelHeight = this.getViewBound().height,
+        collapsed = this.state.collapsed,
+        heightForcedSet = this.vPanel ? this.vPanel.getHeightForcedSet() : false,
+        timezonesCollapsed = viewModel.state.timezonesCollapsed,
+        styles = this._getStyles(viewModel.theme, timezonesCollapsed);
+
+    var baseViewModel, visibleScheduleCount;
+    var now = new TZDate().toLocalTime();
+
+    if (panel.showExpandableButton) {
+        if (!heightForcedSet) {
+            if (collapsed) {
+                panelHeight = mmax(panelHeight, panel.maxHeight);
+            } else {
+                panelHeight = mmin(panelHeight, panel.maxExpandableHeight);
+            }
+        }
+
+        visibleScheduleCount = Math.floor(panelHeight / (opt.scheduleHeight + opt.scheduleGutter));
+        if (collapsed) {
+            exceedDate = this.parent.controller.getExceedDate(visibleScheduleCount,
+                matrices,
+                viewModel.range
+            );
+            matrices = this.parent.controller.excludeExceedSchedules(matrices, visibleScheduleCount);
+            opt.setViewModelFunc(viewModel, matrices);
+        }
+    }
+
+    baseViewModel = {
+        viewName: opt.viewName,
+        range: range,
+        grids: grids,
+        days: util.map(viewModel.range, function(d, index) {
+            var day = d.getDay();
+            var ymd = datetime.format(d, 'YYYYMMDD');
+            var isToday = datetime.isSameDate(now, d);
+
+            return {
+                day: day,
+                dayName: daynames[day],
+                isToday: isToday,
+                date: d.getDate(),
+                renderDate: datetime.format(d, 'YYYY-MM-DD'),
+                hiddenSchedules: exceedDate[ymd] || 0,
+                width: grids[index] ? grids[index].width : 0,
+                left: grids[index] ? grids[index].left : 0,
+                backgroundColor: viewModel.range.length > 1 ?
+                    getWeekBackgroundColor(day, isToday, styles) : styles.backgroundColor
+            };
+        }),
+        exceedDate: exceedDate,
+        showExpandableButton: panel.showExpandableButton,
+        collapsed: collapsed,
+        collapseBtnIndex: this.state.clickedExpandBtnIndex,
+        styles: styles
+    };
+
+    return baseViewModel;
+};
+
+/**
+ * @override
+ * @param {object} viewModel - schedules view models
+ */
+DayGrid.prototype.render = function(viewModel) {
+    var opt = this.options,
+        container = this.container,
+        baseViewModel = this.getBaseViewModel(viewModel),
+        scheduleContainerTop = this.options.scheduleContainerTop;
+    var dayGridSchedule;
+
+    container.innerHTML = baseTmpl(baseViewModel);
+
+    this.children.clear();
+
+    dayGridSchedule = new DayGridSchedule(
+        opt,
+        domutil.find(config.classname('.container'), container)
+    );
+    this.addChild(dayGridSchedule);
+
+    dayGridSchedule.on('afterRender', function(weekdayViewModel) {
+        baseViewModel.height = weekdayViewModel.minHeight + scheduleContainerTop;
+    });
+
+    this.children.each(function(childView) {
+        childView.render(viewModel);
+    }, this);
+
+    this.fire('afterRender', baseViewModel);
+};
+
+DayGrid.prototype._beforeDestroy = function() {
+};
+
+DayGrid.prototype.addHandler = function(type, handler, vPanel) {
+    var self = this;
+
+    this.handler[type] = handler;
+    this.vPanel = vPanel;
+
+    if (type === 'click') {
+        handler.on('expand', function() {
+            self.setState({
+                collapsed: false
+            });
+        }, this);
+        handler.on('collapse', function() {
+            self.setState({
+                collapsed: true
+            });
+        }, this);
+    }
+};
+
+DayGrid.prototype._expand = function() {
+    reqAnimFrame.requestAnimFrame(function() {
+        var vPanel = this.vPanel;
+        var opt = this.options;
+        var panel = getPanel(opt.panels, opt.viewName);
+
+        vPanel.setMaxHeight(panel.maxExpandableHeight);
+        vPanel.setHeightForcedSet(false);
+        vPanel.setHeight(null, panel.maxExpandableHeight);
+
+        if (this.parent) {
+            this.parent.render();
+        }
+    }, this);
+};
+
+DayGrid.prototype._collapse = function() {
+    reqAnimFrame.requestAnimFrame(function() {
+        var vPanel = this.vPanel;
+        var opt = this.options;
+        var panel = getPanel(opt.panels, opt.viewName);
+
+        vPanel.setMaxHeight(panel.maxHeight);
+        vPanel.setHeightForcedSet(false);
+        vPanel.setHeight(null, panel.minHeight);
+
+        if (this.parent) {
+            this.parent.render();
+        }
+    }, this);
+};
+
+/**
+ * set state
+ * @param {object} state - state
+ */
+DayGrid.prototype.setState = function(state) {
+    var collapsed = this.state.collapsed;
+    View.prototype.setState.call(this, state);
+
+    if (this.state.collapsed === collapsed) {
+        return;
+    }
+
+    if (this.state.collapsed) {
+        this._collapse();
+    } else {
+        this._expand();
+    }
+};
+
+/**
+ * Get the styles from theme
+ * @param {Theme} theme - theme instance
+ * @param {boolean} timezonesCollapsed - multiple timezones are collapsed.
+ * @returns {object} styles - styles object
+ */
+DayGrid.prototype._getStyles = function(theme, timezonesCollapsed) {
+    var styles = {};
+    var timezonesLength = this.options.timezones.length;
+    var collapsed = timezonesCollapsed;
+    var numberAndUnit;
+
+    if (theme) {
+        styles.borderRight = theme.week.daygrid.borderRight || theme.common.border;
+        styles.todayBackgroundColor = theme.week.today.backgroundColor;
+        styles.weekendBackgroundColor = theme.week.weekend.backgroundColor;
+        styles.backgroundColor = theme.week.daygrid.backgroundColor;
+        styles.leftWidth = theme.week.daygridLeft.width;
+        styles.leftBackgroundColor = theme.week.daygridLeft.backgroundColor;
+        styles.leftPaddingRight = theme.week.daygridLeft.paddingRight;
+        styles.leftBorderRight = theme.week.daygridLeft.borderRight;
+
+        if (!collapsed && timezonesLength > 1) {
+            numberAndUnit = common.parseUnit(styles.leftWidth);
+            styles.leftWidth = (numberAndUnit[0] * timezonesLength) + numberAndUnit[1];
+        }
+    }
+
+    return styles;
+};
+
+/**
+ * Get a background color based on day.
+ * @param {number} day - day number
+ * @param {boolean} isToday - today flag
+ * @param {object} styles - style object
+ * @returns {string} backgroundColor
+ */
+function getWeekBackgroundColor(day, isToday, styles) {
+    var backgroundColor = '';
+
+    if (day === 0 || day === 6) {
+        backgroundColor = styles.weekendBackgroundColor;
+    } else if (isToday) {
+        backgroundColor = styles.todayBackgroundColor;
+    } else {
+        backgroundColor = styles.backgroundColor;
+    }
+
+    return backgroundColor;
+}
+
+/**
+ * get a panel infomation
+ * @param {Array.<object[]>} panels - panel infomations
+ * @param {string} name - panel name
+ * @returns {object} panel information
+ */
+function getPanel(panels, name) {
+    var found;
+
+    util.forEach(panels, function(panel) {
+        if (panel.name === name) {
+            found = panel;
+        }
+    });
+
+    return found;
+}
+
+module.exports = DayGrid;
+
+
+/***/ }),
+
+/***/ "./src/js/view/week/dayGridSchedule.js":
+/*!*********************************************!*\
+  !*** ./src/js/view/week/dayGridSchedule.js ***!
+  \*********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/**
+ * @fileoverview Weekday view for week
+ * @author NHN FE Development Lab <dl_javascript@nhn.com>
+ */
+
+
+var util = __webpack_require__(/*! tui-code-snippet */ "tui-code-snippet");
+var Weekday = __webpack_require__(/*! ../weekday */ "./src/js/view/weekday.js"),
+    tmpl = __webpack_require__(/*! ../template/week/dayGridSchedule.hbs */ "./src/js/view/template/week/dayGridSchedule.hbs");
+var mmax = Math.max;
+
+/**
+ * @constructor
+ * @extends {Weekday}
+ * @param {object} options - options for DayGridSchedule view
+ * @param {number} [options.containerButtonGutter=8] - free space at bottom to
+ *  make create easy.
+ * @param {number} [options.scheduleHeight=18] - height of each schedule block.
+ * @param {number} [options.scheduleGutter=2] - gutter height of each schedule block.
+ * @param {HTMLDIVElement} container - DOM element to use container for this
+ *  view.
+ */
+function DayGridSchedule(options, container) {
+    Weekday.call(this, options, container);
+
+    this.collapsed = true;
+}
+
+util.inherit(DayGridSchedule, Weekday);
+
+/**
+ * Render Weekday view
+ * @override
+ */
+DayGridSchedule.prototype.render = function(viewModel) {
+    var container = this.container;
+    var baseViewModel;
+
+    baseViewModel = this.getBaseViewModel(viewModel);
+
+    container.innerHTML = tmpl(baseViewModel);
+
+    this.fire('afterRender', baseViewModel);
+};
+
+/**
+ * returns maximum schedule count in day
+ * @param {array} matrices - The matrices for schedule placing.
+ * @returns {number} maximum schedule count in day
+ */
+DayGridSchedule.prototype._getMaxScheduleInDay = function(matrices) {
+    return mmax.apply(
+        null,
+        util.map(matrices, function(matrix) {
+            return Math.max.apply(null, util.map(matrix, function(row) {
+                return row.length;
+            }));
+        })
+    );
+};
+
+/**
+ * returns minimum height for container.
+ * @param {number} maxScheduleInDay - max schedule blocks in one day
+ * @returns {number}
+ */
+DayGridSchedule.prototype._getMinHeight = function(maxScheduleInDay) {
+    var opt = this.options;
+    var contentHeight = (maxScheduleInDay * opt.scheduleHeight)
+        + ((maxScheduleInDay - 1) * opt.scheduleGutter);
+
+    // if (this.collapsed && this.aboutMe.maxHeight >= contentHeight + opt.containerBottomGutter) {
+    //     contentHeight += opt.containerBottomGutter;
+    // }
+
+    return contentHeight;
+};
+
+/**
+ * @override
+ * @param {object} viewModel - schedules view models
+ */
+DayGridSchedule.prototype.getBaseViewModel = function(viewModel) {
+    var opt = this.options;
+    var matrices = opt.getViewModelFunc(viewModel);
+    var maxScheduleInDay = this._getMaxScheduleInDay(matrices);
+    var baseViewModel;
+    var styles = this._getStyles(viewModel.theme);
+
+    baseViewModel = Weekday.prototype.getBaseViewModel.call(this, viewModel);
+
+    baseViewModel = util.extend({
+        minHeight: this._getMinHeight(maxScheduleInDay),
+        matrices: matrices,
+        scheduleContainerTop: this.options.scheduleContainerTop,
+        maxScheduleInDay: maxScheduleInDay,
+        isReadOnly: opt.isReadOnly,
+        styles: styles
+    }, baseViewModel);
+
+    return baseViewModel;
+};
+
+/**
+ * Get the styles from theme
+ * @param {Theme} theme - theme instance
+ * @returns {object} styles - styles object
+ */
+DayGridSchedule.prototype._getStyles = function(theme) {
+    var styles = {};
+
+    if (theme) {
+        styles.borderRadius = theme.week.dayGridSchedule.borderRadius;
+    }
+
+    return styles;
+};
+
+module.exports = DayGridSchedule;
+
+
+/***/ }),
+
+/***/ "./src/js/view/week/dayname.js":
+/*!*************************************!*\
+  !*** ./src/js/view/week/dayname.js ***!
+  \*************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/**
+ * @fileoverview View for rendering daynames
+ * @author NHN FE Development Lab <dl_javascript@nhn.com>
+ */
+
+
+var util = __webpack_require__(/*! tui-code-snippet */ "tui-code-snippet");
+var config = __webpack_require__(/*! ../../config */ "./src/js/config.js");
+var common = __webpack_require__(/*! ../../common/common */ "./src/js/common/common.js");
+var datetime = __webpack_require__(/*! ../../common/datetime */ "./src/js/common/datetime.js");
+var TZDate = __webpack_require__(/*! ../../common/timezone */ "./src/js/common/timezone.js").Date;
+var domutil = __webpack_require__(/*! ../../common/domutil */ "./src/js/common/domutil.js");
+var View = __webpack_require__(/*! ../view */ "./src/js/view/view.js");
+var daynameTmpl = __webpack_require__(/*! ../template/week/daynames.hbs */ "./src/js/view/template/week/daynames.hbs");
+
+/**
+ * @constructor
+ * @param {object} options - options for dayname view
+ * @param {HTMLElement} container Container element to use.
+ * @param {Theme} theme - theme instance
+ * @extends {View}
+ */
+function DayName(options, container, theme) {
+    container = domutil.appendHTMLElement(
+        'div',
+        container,
+        config.classname('dayname-container')
+    );
+
+    this.options = util.extend({
+        daynames: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],
+        timezones: options.timezones
+    }, options.week);
+
+    /**
+     * @type {Theme}
+     */
+    this.theme = theme;
+
+    View.call(this, container);
+
+    this.applyTheme();
+}
+
+util.inherit(DayName, View);
+
+/**
+ * Get default viewmodels.
+ * @param {Date} start The date of start render
+ * @param {Date} end The end of end render
+ * @param {object} grids grid data(width, left, day)
+ * @returns {array} viewmodel.
+ */
+DayName.prototype._getBaseViewModel = function(start, end, grids) {
+    var daynames = this.options.daynames,
+        theme = this.theme,
+        now = new TZDate().toLocalTime(),
+        viewModel;
+
+    viewModel = util.map(datetime.range(
+        datetime.start(start),
+        datetime.end(end),
+        datetime.MILLISECONDS_PER_DAY
+    ), function(d, i) {
+        var day = d.getDay();
+        var isToday = datetime.isSameDate(d, now);
+        var isPastDay = d < now && !isToday;
+
+        return {
+            day: day,
+            dayName: daynames[day],
+            isToday: isToday,
+            date: d.getDate(),
+            left: grids[i] ? grids[i].left : 0,
+            width: grids[i] ? grids[i].width : 0,
+            renderDate: datetime.format(d, 'YYYY-MM-DD'),
+            color: this._getDayNameColor(theme, day, isToday, isPastDay)
+        };
+    }, this);
+
+    return viewModel;
+};
+
+/**
+ * @override
+ * @param {object} viewModel View model from parent (WeekView)
+ */
+DayName.prototype.render = function(viewModel) {
+    var dayNames = this._getBaseViewModel(
+        viewModel.renderStartDate,
+        viewModel.renderEndDate,
+        viewModel.grids
+    );
+    var timezonesCollapsed = viewModel.state.timezonesCollapsed;
+    var styles = this._getStyles(this.theme, timezonesCollapsed);
+    var baseViewModel = util.extend({}, {
+        dayNames: dayNames,
+        styles: styles
+    });
+
+    this.container.innerHTML = daynameTmpl(baseViewModel);
+};
+
+/**
+ * Get a day name color
+ * @param {Theme} theme - theme instance
+ * @param {number} day - day number
+ * @param {boolean} isToday - today flag
+ * @param {boolean} isPastDay - is past day flag
+ * @returns {string} style - color style
+ */
+DayName.prototype._getDayNameColor = function(theme, day, isToday, isPastDay) {
+    var color = '';
+
+    if (theme) {
+        if (day === 0) {
+            color = theme.common.holiday.color;
+        } else if (isPastDay) {
+            color = theme.week.pastDay.color || theme.common.dayname.color;
+        } else if (day === 6) {
+            color = theme.common.saturday.color;
+        } else if (isToday) {
+            color = theme.week.today.color || theme.common.today.color;
+        } else {
+            color = theme.common.dayname.color;
+        }
+    }
+
+    return color;
+};
+
+/**
+ * Get the styles from theme
+ * @param {Theme} theme - theme instance
+ * @param {boolean} timezonesCollapsed - multiple timezones are collapsed.
+ * @returns {object} styles - styles object
+ */
+DayName.prototype._getStyles = function(theme, timezonesCollapsed) {
+    var styles = {};
+    var timezonesLength = this.options.timezones.length;
+    var collapsed = timezonesCollapsed;
+    var numberAndUnit;
+
+    if (theme) {
+        styles.borderTop = theme.week.dayname.borderTop || theme.common.border;
+        styles.borderBottom = theme.week.dayname.borderBottom || theme.common.border;
+        styles.borderLeft = theme.week.dayname.borderLeft || theme.common.border;
+        styles.paddingLeft = theme.week.dayname.paddingLeft;
+        styles.backgroundColor = theme.week.dayname.backgroundColor;
+        styles.height = theme.week.dayname.height;
+        styles.textAlign = theme.week.dayname.textAlign;
+        styles.marginLeft = theme.week.daygridLeft.width;
+
+        if (!collapsed && timezonesLength > 1) {
+            numberAndUnit = common.parseUnit(styles.marginLeft);
+            styles.marginLeft = (numberAndUnit[0] * timezonesLength) + numberAndUnit[1];
+        }
+    }
+
+    return styles;
+};
+
+DayName.prototype.applyTheme = function() {
+    var styles = this._getStyles(this.theme);
+    var style = this.container.style;
+
+    style.borderTop = styles.borderTop;
+    style.borderBottom = styles.borderBottom;
+    style.height = styles.height;
+    style.backgroundColor = styles.backgroundColor;
+    style.textAlign = styles.textAlign;
+
+    return style;
+};
+
+module.exports = DayName;
+
+
+/***/ }),
+
+/***/ "./src/js/view/week/time.js":
+/*!**********************************!*\
+  !*** ./src/js/view/week/time.js ***!
+  \**********************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/**
+ * @fileoverview View of time.
+ * @author NHN FE Development Lab <dl_javascript@nhn.com>
+ */
+
+
+var util = __webpack_require__(/*! tui-code-snippet */ "tui-code-snippet");
+var config = __webpack_require__(/*! ../../config */ "./src/js/config.js");
+var datetime = __webpack_require__(/*! ../../common/datetime */ "./src/js/common/datetime.js");
+var domutil = __webpack_require__(/*! ../../common/domutil */ "./src/js/common/domutil.js");
+var View = __webpack_require__(/*! ../view */ "./src/js/view/view.js");
+var timeTmpl = __webpack_require__(/*! ../template/week/time.hbs */ "./src/js/view/template/week/time.hbs");
+
+var forEachArr = util.forEachArray;
+var SCHEDULE_MIN_DURATION = datetime.MILLISECONDS_SCHEDULE_MIN_DURATION;
+
+/**
+ * @constructor
+ * @extends {View}
+ * @param {object} options Options
+ * @param {number} options.index Date index in week view.
+ * @param {number} options.width Date element width (percent)
+ * @param {string} options.ymd YYYMMDD string for this view
+ * @param {boolean} options.isToday when set true then assign today design class to container.
+ * @param {number} options.hourStart Can limit of render hour start.
+ * @param {number} options.hourEnd Can limit of render hour end.
+ * @param {HTMLElement} container Element to use container for this view.
+ * @param {Theme} theme - theme instance
+ */
+function Time(options, container, theme) {
+    View.call(this, container);
+
+    this.options = util.extend({
+        index: 0,
+        width: 0,
+        ymd: '',
+        isToday: false,
+        pending: false,
+        hourStart: 0,
+        hourEnd: 24,
+        defaultMarginBottom: 2,
+        minHeight: 18.5,
+        isReadOnly: false
+    }, options);
+
+    this.timeTmpl = timeTmpl;
+
+    /**
+     * @type {Theme}
+     */
+    this.theme = theme;
+
+    container.style.width = options.width + '%';
+    container.style.left = options.left + '%';
+
+    if (this.options.isToday) {
+        domutil.addClass(this.container, config.classname('today'));
+    }
+
+    this.applyTheme();
+}
+
+util.inherit(Time, View);
+
+/**
+ * Convert YYYYMMDD formatted string date to Date.
+ * @param {string} str formatted string.
+ * @returns {Date} start of date.
+ */
+Time.prototype._parseDateGroup = function(str) {
+    var y = parseInt(str.substr(0, 4), 10),
+        m = parseInt(str.substr(4, 2), 10),
+        d = parseInt(str.substr(6, 2), 10);
+    var date = datetime.start();
+
+    date.setFullYear(y, m - 1, d);
+
+    return datetime.start(date);
+};
+
+/**
+ * calculate left and width
+ * @param {ScheduleViewModel} viewModel - view model instance to calculate bound.
+ * @param {object} options - options for calculating schedule element's bound.
+ * @returns {object} - left and width
+ */
+Time.prototype._getScheduleViewBoundX = function(viewModel, options) {
+    var width = options.baseWidth * (viewModel.extraSpace + 1);
+
+    // set width auto when has no collisions.
+    if (!viewModel.hasCollide) {
+        width = null;
+    }
+
+    return {
+        left: options.baseLeft[options.columnIndex],
+        width: width
+    };
+};
+
+/**
+ * calculate top, height, croppedStart and croppedEnd
+ * @param {ScheduleViewModel} viewModel - view model instance to calculate bound.
+ * @param {object} options - options for calculating schedule element's bound.
+ * @returns {object} - left and width
+ */
+Time.prototype._getScheduleViewBoundY = function(viewModel, options) {
+    var baseMS = options.baseMS;
+    var baseHeight = options.baseHeight;
+    var croppedStart = false;
+    var croppedEnd = false;
+    var goingDuration = datetime.millisecondsFrom('minutes', viewModel.valueOf().goingDuration);
+    var comingDuration = datetime.millisecondsFrom('minutes', viewModel.valueOf().comingDuration);
+    var offsetStart = viewModel.valueOf().start - goingDuration - options.todayStart;
+    // containerHeight : milliseconds in day = x : schedule's milliseconds
+    var top = (baseHeight * offsetStart) / baseMS;
+    var modelDuration = viewModel.duration();
+    var height;
+    var duration;
+    var goingDurationHeight;
+    var modelDurationHeight;
+    var comingDurationHeight;
+
+    modelDuration = modelDuration > SCHEDULE_MIN_DURATION ? modelDuration : SCHEDULE_MIN_DURATION;
+    duration = modelDuration + goingDuration + comingDuration;
+    height = (baseHeight * duration) / baseMS;
+
+    goingDurationHeight = (baseHeight * goingDuration) / baseMS; // common.ratio(duration, goingDuration, 100);
+    modelDurationHeight = (baseHeight * modelDuration) / baseMS; // common.ratio(duration, modelDuration, 100);
+    comingDurationHeight = (baseHeight * comingDuration) / baseMS; // common.ratio(duration, comingDuration, 100);
+
+    if (offsetStart < 0) {
+        top = 0;
+        height += ((baseHeight * offsetStart) / baseMS);
+        croppedStart = true;
+    }
+
+    if (height + top > baseHeight) {
+        height = baseHeight - top;
+        croppedEnd = true;
+    }
+
+    return {
+        top: top,
+        height: Math.max(height, this.options.minHeight) - this.options.defaultMarginBottom,
+        modelDurationHeight: modelDurationHeight,
+        goingDurationHeight: goingDurationHeight,
+        comingDurationHeight: comingDurationHeight,
+        hasGoingDuration: goingDuration > 0,
+        hasComingDuration: comingDuration > 0,
+        croppedStart: croppedStart,
+        croppedEnd: croppedEnd
+    };
+};
+
+/**
+ * @param {ScheduleViewModel} viewModel - view model instance to calculate bound.
+ * @param {object} options - options for calculating schedule element's bound.
+ * @param {Date} options.todayStart - date object represent schedule date's start (00:00:00)
+ * @param {number} options.baseMS - the number of milliseconds to render schedule blocks.
+ * @param {number} options.baseHeight - pixel value related with baseMS options.
+ * @param {number[]} options.baseLeft - left position percents for each columns.
+ * @param {number} options.baseWidth - the unit of schedule blocks width percent.
+ * @param {number} options.columnIndex - the number index of schedule blocks.
+ * it represent rendering index from left sides in view.
+ * @returns {object} bound object for supplied view model.
+ */
+Time.prototype.getScheduleViewBound = function(viewModel, options) {
+    var boundX = this._getScheduleViewBoundX(viewModel, options);
+    var boundY = this._getScheduleViewBoundY(viewModel, options);
+    var schedule = viewModel.model;
+    var isReadOnly = util.pick(schedule, 'isReadOnly') || false;
+    var travelBorderColor = schedule.isFocused ? '#ffffff' : schedule.borderColor;
+    if (travelBorderColor === schedule.bgColor) {
+        travelBorderColor = null; // follow text color
+    }
+
+    return util.extend({
+        isReadOnly: isReadOnly,
+        travelBorderColor: travelBorderColor
+    }, boundX, boundY);
+};
+
+/**
+ * Set viewmodels for rendering.
+ * @param {string} ymd The date of schedules. YYYYMMDD format.
+ * @param {array} matrices The matrices for schedule placing.
+ * @param {number} containerHeight - container's height
+ */
+Time.prototype._getBaseViewModel = function(ymd, matrices, containerHeight) {
+    var self = this,
+        options = this.options,
+        hourStart = options.hourStart,
+        hourEnd = options.hourEnd,
+        isReadOnly = options.isReadOnly,
+        todayStart,
+        baseMS;
+
+    /**
+     * Calculate each schedule element bounds relative with rendered hour milliseconds and
+     * wrap each schedule model to viewmodels.
+     */
+    containerHeight = containerHeight || this.getViewBound().height;
+    todayStart = this._parseDateGroup(ymd);
+    todayStart.setHours(hourStart);
+    baseMS = datetime.millisecondsFrom('hour', (hourEnd - hourStart));
+
+    forEachArr(matrices, function(matrix) {
+        var maxRowLength,
+            widthPercent,
+            leftPercents,
+            i;
+
+        maxRowLength = Math.max.apply(null, util.map(matrix, function(row) {
+            return row.length;
+        }));
+
+        widthPercent = 100 / maxRowLength;
+
+        leftPercents = [];
+        for (i = 0; i < maxRowLength; i += 1) {
+            leftPercents[i] = widthPercent * i;
+        }
+
+        forEachArr(matrix, function(row) {
+            forEachArr(row, function(viewModel, col) {
+                var viewBound;
+
+                if (!viewModel) {
+                    return;
+                }
+
+                viewBound = self.getScheduleViewBound(viewModel, {
+                    todayStart: todayStart,
+                    baseMS: baseMS,
+                    baseLeft: leftPercents,
+                    baseWidth: widthPercent,
+                    baseHeight: containerHeight,
+                    columnIndex: col,
+                    isReadOnly: isReadOnly
+                });
+
+                util.extend(viewModel, viewBound);
+            });
+        });
+    });
+};
+
+/**
+ * @returns {Date} - Date of this view.
+ */
+Time.prototype.getDate = function() {
+    return this._parseDateGroup(this.options.ymd);
+};
+
+/**
+ * @override
+ * @param {string} ymd The date of schedules. YYYYMMDD format
+ * @param {array} matrices Matrices for placing schedules
+ * @param {number} containerHeight - container's height
+ */
+Time.prototype.render = function(ymd, matrices, containerHeight) {
+    this._getBaseViewModel(ymd, matrices, containerHeight);
+    this.container.innerHTML = this.timeTmpl({
+        matrices: matrices,
+        styles: this._getStyles(this.theme),
+        isReadOnly: this.options.isReadOnly
+    });
+};
+
+/**
+ * Get the styles from theme
+ * @param {Theme} theme - theme instance
+ * @returns {object} styles - styles object
+ */
+Time.prototype._getStyles = function(theme) {
+    var styles = {};
+    var options = this.options;
+
+    if (theme) {
+        styles.borderRight = theme.week.timegrid.borderRight || theme.common.border;
+        styles.marginRight = theme.week.timegrid.paddingRight;
+        styles.borderRadius = theme.week.timegridSchedule.borderRadius;
+        styles.paddingLeft = theme.week.timegridSchedule.paddingLeft;
+        styles.backgroundColor = options.isToday ? theme.week.today.backgroundColor : 'inherit';
+    }
+
+    return styles;
+};
+
+Time.prototype.applyTheme = function() {
+    var style = this.container.style;
+    var styles = this._getStyles(this.theme);
+
+    style.borderRight = styles.borderRight;
+    style.backgroundColor = styles.backgroundColor;
+};
+
+module.exports = Time;
+
+
+/***/ }),
+
+/***/ "./src/js/view/week/timeGrid.js":
+/*!**************************************!*\
+  !*** ./src/js/view/week/timeGrid.js ***!
+  \**************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/**
+ * @fileoverview View for rendered schedules by times.
+ * @author NHN FE Development Lab <dl_javascript@nhn.com>
+ */
+
+
+var util = __webpack_require__(/*! tui-code-snippet */ "tui-code-snippet");
+var config = __webpack_require__(/*! ../../config */ "./src/js/config.js");
+var common = __webpack_require__(/*! ../../common/common */ "./src/js/common/common.js");
+var domutil = __webpack_require__(/*! ../../common/domutil */ "./src/js/common/domutil.js");
+var domevent = __webpack_require__(/*! ../../common/domevent */ "./src/js/common/domevent.js");
+var datetime = __webpack_require__(/*! ../../common/datetime */ "./src/js/common/datetime.js");
+var Timezone = __webpack_require__(/*! ../../common/timezone */ "./src/js/common/timezone.js");
+var reqAnimFrame = __webpack_require__(/*! ../../common/reqAnimFrame */ "./src/js/common/reqAnimFrame.js");
+var View = __webpack_require__(/*! ../view */ "./src/js/view/view.js");
+var Time = __webpack_require__(/*! ./time */ "./src/js/view/week/time.js");
+var AutoScroll = __webpack_require__(/*! ../../common/autoScroll */ "./src/js/common/autoScroll.js");
+var mainTmpl = __webpack_require__(/*! ../template/week/timeGrid.hbs */ "./src/js/view/template/week/timeGrid.hbs");
+var timezoneStickyTmpl = __webpack_require__(/*! ../template/week/timezoneSticky.hbs */ "./src/js/view/template/week/timezoneSticky.hbs");
+var timegridCurrentTimeTmpl = __webpack_require__(/*! ../template/week/timeGridCurrentTime.hbs */ "./src/js/view/template/week/timeGridCurrentTime.hbs");
+var TZDate = Timezone.Date;
+var HOURMARKER_REFRESH_INTERVAL = 1000 * 60;
+var SIXTY_SECONDS = 60;
+var SIXTY_MINUTES = 60;
+
+/**
+ * Returns a list of time labels from start to end.
+ * For hidden labels near the current time, set to hidden: true.
+ * @param {object} opt - TimeGrid.options
+ * @param {boolean} hasHourMarker - Whether the current time is displayed
+ * @param {number} timezoneOffset - timezone offset
+ * @param {object} styles - styles
+ * @returns {Array.<Object>}
+ */
+function getHoursLabels(opt, hasHourMarker, timezoneOffset, styles) {
+    var hourStart = opt.hourStart;
+    var hourEnd = opt.hourEnd;
+    var renderEndDate = new TZDate(opt.renderEndDate);
+    var shiftByOffset = parseInt(timezoneOffset / SIXTY_MINUTES, 10);
+    var shiftMinutes = Math.abs(timezoneOffset % SIXTY_MINUTES);
+    var now = new TZDate().toLocalTime();
+    var nowMinutes = now.getMinutes();
+    var hoursRange = util.range(0, 24);
+    var nowAroundHours = null;
+    var nowHours, nowHoursIndex;
+    var isNegativeZero = 1 / -Infinity === shiftByOffset;
+
+    if ((shiftByOffset < 0 || isNegativeZero) && shiftMinutes > 0) {
+        shiftByOffset -= 1;
+    }
+
+    // shift the array and take elements between start and end
+    common.shiftArray(hoursRange, shiftByOffset);
+    common.takeArray(hoursRange, hourStart, hourEnd);
+
+    nowHours = common.shiftHours(now.getHours(), shiftByOffset) % 24;
+    nowHoursIndex = util.inArray(nowHours, hoursRange);
+
+    if (hasHourMarker) {
+        if (nowMinutes < 20) {
+            nowAroundHours = nowHours;
+        } else if (nowMinutes > 40) {
+            nowAroundHours = nowHours + 1;
+        }
+
+        if (util.isNumber(nowAroundHours)) {
+            nowAroundHours %= 24;
+        }
+    }
+
+    return util.map(hoursRange, function(hour, index) {
+        var color;
+        var fontWeight;
+        var isPast = (hasHourMarker && index <= nowHoursIndex) ||
+                     (renderEndDate < now && !datetime.isSameDate(renderEndDate, now));
+
+        if (isPast) {
+            // past
+            color = styles.pastTimeColor;
+            fontWeight = styles.pastTimeFontWeight;
+        } else {
+            // future
+            color = styles.futureTimeColor;
+            fontWeight = styles.futureTimeFontWeight;
+        }
+
+        return {
+            hour: hour,
+            minutes: shiftMinutes,
+            hidden: nowAroundHours === hour || index === 0,
+            color: color || '',
+            fontWeight: fontWeight || ''
+        };
+    });
+}
+/**
+ * @constructor
+ * @extends {View}
+ * @param {string} name - view name
+ * @param {object} options The object for view customization.
+ * @param {string} options.renderStartDate - render start date. YYYY-MM-DD
+ * @param {string} options.renderEndDate - render end date. YYYY-MM-DD
+ * @param {number} [options.hourStart=0] You can change view's start hours.
+ * @param {number} [options.hourEnd=0] You can change view's end hours.
+ * @param {HTMLElement} panelElement panel element.
+ */
+function TimeGrid(name, options, panelElement) {
+    var container = domutil.appendHTMLElement(
+        'div',
+        panelElement,
+        config.classname('timegrid-container')
+    );
+    var stickyContainer = domutil.appendHTMLElement(
+        'div',
+        panelElement,
+        config.classname('timegrid-sticky-container')
+    );
+
+    panelElement.style.position = 'relative'; // for stickyContainer
+
+    name = name || 'time';
+
+    View.call(this, container);
+
+    if (!util.browser.safari) {
+        /**
+         * @type {AutoScroll}
+         */
+        this._autoScroll = new AutoScroll(container);
+    }
+
+    this.stickyContainer = stickyContainer;
+
+    /**
+     * Time view options.
+     * @type {object}
+     */
+    this.options = util.extend({
+        viewName: name,
+        renderStartDate: '',
+        renderEndDate: '',
+        hourStart: 0,
+        hourEnd: 24,
+        timezones: options.timezones,
+        isReadOnly: options.isReadOnly,
+        showTimezoneCollapseButton: false
+    }, options.week);
+
+    if (this.options.timezones.length < 1) {
+        this.options.timezones = [{
+            timezoneOffset: Timezone.getOffset()
+        }];
+    }
+
+    /**
+     * Interval id for hourmarker animation.
+     * @type {number}
+     */
+    this.intervalID = 0;
+
+    /**
+     * timer id for hourmarker initial state
+     * @type {number}
+     */
+    this.timerID = 0;
+
+    /**
+     * requestAnimationFrame unique ID
+     * @type {number}
+     */
+    this.rAnimationFrameID = 0;
+
+    /**
+     * @type {boolean}
+     */
+    this._scrolled = false;
+
+    /**
+     * cache parent's view model
+     * @type {object}
+     */
+    this._cacheParentViewModel = null;
+
+    /**
+     * cache hoursLabels view model to render again TimeGrid
+     * @type {object}
+     */
+    this._cacheHoursLabels = null;
+
+    this.attachEvent();
+}
+
+util.inherit(TimeGrid, View);
+
+/**********
+ * Prototype props
+ **********/
+
+/**
+ * @type {string}
+ */
+TimeGrid.prototype.viewName = 'timegrid';
+
+/**
+ * Destroy view.
+ * @override
+ */
+TimeGrid.prototype._beforeDestroy = function() {
+    clearInterval(this.intervalID);
+    clearTimeout(this.timerID);
+    reqAnimFrame.cancelAnimFrame(this.rAnimationFrameID);
+
+    if (this._autoScroll) {
+        this._autoScroll.destroy();
+    }
+
+    domevent.off(this.stickyContainer, 'click', this._onClickStickyContainer, this);
+
+    this._autoScroll = this.hourmarkers = this.intervalID =
+    this.timerID = this.rAnimationFrameID = this._cacheParentViewModel = this.stickyContainer = null;
+};
+
+/**
+ * @param {Date} [time] - date object to convert pixel in grids.
+ * use **Date.now()** when not supplied.
+ * @returns {number} The pixel value represent current time in grids.
+ */
+TimeGrid.prototype._getTopPercentByTime = function(time) {
+    var opt = this.options,
+        raw = datetime.raw(time || new TZDate()),
+        hourLength = util.range(opt.hourStart, opt.hourEnd).length,
+        maxMilliseconds = hourLength * datetime.MILLISECONDS_PER_HOUR,
+        hmsMilliseconds = datetime.millisecondsFrom('hour', raw.h) +
+            datetime.millisecondsFrom('minutes', raw.m) +
+            datetime.millisecondsFrom('seconds', raw.s) +
+            raw.ms,
+        topPercent;
+
+    topPercent = common.ratio(maxMilliseconds, 100, hmsMilliseconds);
+    topPercent -= common.ratio(maxMilliseconds, 100, datetime.millisecondsFrom('hour', opt.hourStart));
+
+    return common.limit(topPercent, [0], [100]);
+};
+
+/**
+ * Get Hourmarker viewmodel.
+ * @param {TZDate} now - now
+ * @param {object} grids grid information(width, left, day)
+ * @param {Array.<TZDate>} range render range
+ * @returns {object} ViewModel of hourmarker.
+ */
+TimeGrid.prototype._getHourmarkerViewModel = function(now, grids, range) {
+    var todaymarkerLeft = -1;
+    var todaymarkerWidth = -1;
+    var hourmarkerTimzones = [];
+    var opt = this.options;
+    var primaryOffset = Timezone.getOffset();
+    var timezones = opt.timezones;
+    var viewModel;
+
+    util.forEach(range, function(date, index) {
+        if (datetime.isSameDate(now, date)) {
+            todaymarkerLeft = grids[index] ? grids[index].left : 0;
+            todaymarkerWidth = grids[index] ? grids[index].width : 0;
+        }
+    });
+
+    util.forEach(timezones, function(timezone) {
+        var timezoneDifference = timezone.timezoneOffset + primaryOffset;
+        var hourmarker = new TZDate(now);
+        var dateDifference;
+
+        hourmarker.setMinutes(hourmarker.getMinutes() + timezoneDifference);
+        dateDifference = datetime.getDateDifference(hourmarker, now);
+
+        hourmarkerTimzones.push({
+            hourmarker: hourmarker,
+            dateDifferenceSign: (dateDifference < 0) ? '-' : '+',
+            dateDifference: Math.abs(dateDifference)
+        });
+    });
+
+    viewModel = {
+        currentHours: now.getHours(),
+        hourmarkerTop: this._getTopPercentByTime(now),
+        hourmarkerTimzones: hourmarkerTimzones,
+        todaymarkerLeft: todaymarkerLeft,
+        todaymarkerWidth: todaymarkerWidth,
+        todaymarkerRight: todaymarkerLeft + todaymarkerWidth
+    };
+
+    return viewModel;
+};
+
+/**
+ * Get timezone view model
+ * @param {number} currentHours - current hour
+ * @param {boolean} timezonesCollapsed - multiple timezones are collapsed.
+ * @param {object} styles - styles
+ * @returns {object} ViewModel
+ */
+TimeGrid.prototype._getTimezoneViewModel = function(currentHours, timezonesCollapsed, styles) {
+    var opt = this.options;
+    var primaryOffset = Timezone.getOffset();
+    var timezones = opt.timezones;
+    var timezonesLength = timezones.length;
+    var timezoneViewModel = [];
+    var collapsed = timezonesCollapsed;
+    var width = collapsed ? 100 : 100 / timezonesLength;
+    var now = new TZDate().toLocalTime();
+    var backgroundColor = styles.displayTimezoneLabelBackgroundColor;
+
+    util.forEach(timezones, function(timezone, index) {
+        var hourmarker = new TZDate(now);
+        var timezoneDifference;
+        var timeSlots;
+        var dateDifference;
+
+        timezoneDifference = timezone.timezoneOffset + primaryOffset;
+        timeSlots = getHoursLabels(opt, currentHours >= 0, timezoneDifference, styles);
+
+        hourmarker.setMinutes(hourmarker.getMinutes() + timezoneDifference);
+        dateDifference = datetime.getDateDifference(hourmarker, now);
+
+        if (index > 0) {
+            backgroundColor = styles.additionalTimezoneBackgroundColor;
+        }
+
+        timezoneViewModel.push({
+            timeSlots: timeSlots,
+            displayLabel: timezone.displayLabel,
+            timezoneOffset: timezone.timezoneOffset,
+            tooltip: timezone.tooltip || '',
+            width: width,
+            left: collapsed ? 0 : (timezones.length - index - 1) * width,
+            isPrimary: index === 0,
+            backgroundColor: backgroundColor || '',
+            hidden: index !== 0 && collapsed,
+            hourmarker: hourmarker,
+            dateDifferenceSign: (dateDifference < 0) ? '-' : '+',
+            dateDifference: Math.abs(dateDifference)
+        });
+    });
+
+    return timezoneViewModel;
+};
+
+/**
+ * Get base viewModel.
+ * @param {object} viewModel - view model
+ * @returns {object} ViewModel
+ */
+TimeGrid.prototype._getBaseViewModel = function(viewModel) {
+    var grids = viewModel.grids;
+    var range = viewModel.range;
+    var opt = this.options;
+    var baseViewModel = this._getHourmarkerViewModel(new TZDate().toLocalTime(), grids, range);
+    var timezonesCollapsed = util.pick(viewModel, 'state', 'timezonesCollapsed');
+    var styles = this._getStyles(viewModel.theme, timezonesCollapsed);
+
+    return util.extend(baseViewModel, {
+        timezones: this._getTimezoneViewModel(baseViewModel.todaymarkerLeft, timezonesCollapsed, styles),
+        hoursLabels: getHoursLabels(opt, baseViewModel.todaymarkerLeft >= 0, 0, styles),
+        styles: styles,
+        showTimezoneCollapseButton: util.pick(opt, 'showTimezoneCollapseButton'),
+        timezonesCollapsed: timezonesCollapsed
+    });
+};
+
+/**
+ * Reconcilation child views and render.
+ * @param {object} viewModels Viewmodel
+ * @param {object} grids grid information(width, left, day)
+ * @param {HTMLElement} container Container element for each time view.
+ * @param {Theme} theme - theme instance
+ */
+TimeGrid.prototype._renderChildren = function(viewModels, grids, container, theme) {
+    var self = this,
+        options = this.options,
+        childOption,
+        child,
+        isToday,
+        containerHeight,
+        today = datetime.format(new TZDate(), 'YYYYMMDD'),
+        i = 0;
+
+    // clear contents
+    container.innerHTML = '';
+    this.children.clear();
+
+    containerHeight = domutil.getSize(container.parentElement)[1];
+
+    // reconcilation of child views
+    util.forEach(viewModels, function(schedules, ymd) {
+        isToday = ymd === today;
+
+        childOption = {
+            index: i,
+            left: grids[i] ? grids[i].left : 0,
+            width: grids[i] ? grids[i].width : 0,
+            ymd: ymd,
+            isToday: isToday,
+            isPending: options.isPending,
+            isFocused: options.isFocused,
+            isReadOnly: options.isReadOnly,
+            hourStart: options.hourStart,
+            hourEnd: options.hourEnd
+        };
+
+        child = new Time(
+            childOption,
+            domutil.appendHTMLElement('div', container, config.classname('time-date')),
+            theme
+        );
+        child.render(ymd, schedules, containerHeight);
+
+        self.addChild(child);
+
+        i += 1;
+    });
+};
+
+/**
+ * @override
+ * @param {object} viewModel ViewModel list from Week view.
+ */
+TimeGrid.prototype.render = function(viewModel) {
+    var opt = this.options,
+        timeViewModel = viewModel.schedulesInDateRange[opt.viewName],
+        container = this.container,
+        grids = viewModel.grids,
+        baseViewModel = this._getBaseViewModel(viewModel),
+        scheduleLen = util.keys(timeViewModel).length;
+
+    this._cacheParentViewModel = viewModel;
+    this._cacheHoursLabels = baseViewModel.hoursLabels;
+
+    if (!scheduleLen) {
+        return;
+    }
+
+    baseViewModel.showHourMarker = baseViewModel.todaymarkerLeft >= 0;
+
+    container.innerHTML = mainTmpl(baseViewModel);
+
+    /**********
+     * Render sticky container for timezone display label
+     **********/
+    this.renderStickyContainer(baseViewModel);
+
+    /**********
+     * Render children
+     **********/
+    this._renderChildren(
+        timeViewModel,
+        grids,
+        domutil.find(config.classname('.timegrid-schedules-container'), container),
+        viewModel.theme
+    );
+
+    this._hourLabels = domutil.find('ul', container);
+
+    /**********
+     * Render hourmarker
+     **********/
+    this.hourmarkers = domutil.find(config.classname('.timegrid-hourmarker'), container, true);
+
+    if (!this._scrolled) {
+        this._scrolled = true;
+        this.scrollToNow();
+    }
+};
+
+TimeGrid.prototype.renderStickyContainer = function(baseViewModel) {
+    var stickyContainer = this.stickyContainer;
+
+    stickyContainer.innerHTML = timezoneStickyTmpl(baseViewModel);
+
+    stickyContainer.style.display = baseViewModel.timezones.length > 1 ? 'block' : 'none';
+    stickyContainer.style.width = baseViewModel.styles.leftWidth;
+    stickyContainer.style.height = baseViewModel.styles.displayTimezoneLabelHeight;
+    stickyContainer.style.borderBottom = baseViewModel.styles.leftBorderRight;
+};
+
+/**
+ * Refresh hourmarker element.
+ */
+TimeGrid.prototype.refreshHourmarker = function() {
+    var hourmarkers = this.hourmarkers;
+    var viewModel = this._cacheParentViewModel;
+    var hoursLabels = this._cacheHoursLabels;
+    var rAnimationFrameID = this.rAnimationFrameID;
+    var baseViewModel;
+
+    if (!hourmarkers || !viewModel || rAnimationFrameID) {
+        return;
+    }
+
+    baseViewModel = this._getBaseViewModel(viewModel);
+
+    this.rAnimationFrameID = reqAnimFrame.requestAnimFrame(function() {
+        var needsRender = false;
+
+        util.forEach(hoursLabels, function(hoursLabel, index) {
+            if (hoursLabel.hidden !== baseViewModel.hoursLabels[index].hidden) {
+                needsRender = true;
+
+                return false;
+            }
+
+            return true;
+        });
+
+        if (needsRender) {
+            this.render(viewModel);
+        } else {
+            util.forEach(hourmarkers, function(hourmarker) {
+                var todaymarker = domutil.find(config.classname('.timegrid-todaymarker'), hourmarker);
+                var hourmarkerContainer = domutil.find(config.classname('.timegrid-hourmarker-time'), hourmarker);
+                var timezone = domutil.closest(hourmarker, config.classname('.timegrid-timezone'));
+                var timezoneIndex = timezone ? domutil.getData(timezone, 'timezoneIndex') : 0;
+
+                hourmarker.style.top = baseViewModel.hourmarkerTop + '%';
+
+                if (todaymarker) {
+                    todaymarker.style.display = (baseViewModel.todaymarkerLeft >= 0) ? 'block' : 'none';
+                }
+                if (hourmarkerContainer) {
+                    hourmarkerContainer.innerHTML = timegridCurrentTimeTmpl(
+                        baseViewModel.hourmarkerTimzones[timezoneIndex]
+                    );
+                }
+            });
+        }
+
+        this.rAnimationFrameID = null;
+    }, this);
+};
+
+/**
+ * Attach events
+ */
+TimeGrid.prototype.attachEvent = function() {
+    clearInterval(this.intervalID);
+    clearTimeout(this.timerID);
+    this.intervalID = this.timerID = this.rAnimationFrameID = null;
+
+    this.timerID = setTimeout(this.onTick.bind(this), (SIXTY_SECONDS - new TZDate().getSeconds()) * 1000);
+
+    domevent.on(this.stickyContainer, 'click', this._onClickStickyContainer, this);
+};
+
+/**
+ * Scroll time grid to current hourmarker.
+ */
+TimeGrid.prototype.scrollToNow = function() {
+    var container = this.container;
+    var offsetTop,
+        viewBound,
+        scrollTop,
+        scrollAmount,
+        scrollBy,
+        scrollFn;
+
+    if (!this.hourmarkers || !this.hourmarkers.length) {
+        return;
+    }
+
+    offsetTop = this.hourmarkers[0].offsetTop;
+    viewBound = this.getViewBound();
+    scrollTop = offsetTop;
+    scrollAmount = viewBound.height / 4;
+    scrollBy = 10;
+
+    scrollFn = function() {
+        if (scrollTop > offsetTop - scrollAmount) {
+            scrollTop -= scrollBy;
+            container.scrollTop = scrollTop;
+
+            reqAnimFrame.requestAnimFrame(scrollFn);
+        } else {
+            container.scrollTop = offsetTop - scrollAmount;
+        }
+    };
+
+    reqAnimFrame.requestAnimFrame(scrollFn);
+};
+
+/**********
+ * Schedule handlers
+ **********/
+
+/**
+ * Interval tick handler
+ */
+TimeGrid.prototype.onTick = function() {
+    if (this.timerID) {
+        clearTimeout(this.timerID);
+        this.timerID = null;
+    }
+
+    if (!this.intervalID) {
+        this.intervalID = setInterval(this.onTick.bind(this), HOURMARKER_REFRESH_INTERVAL);
+    }
+    this.refreshHourmarker();
+};
+
+/**
+ * Get the styles from theme
+ * @param {Theme} theme - theme instance
+ * @param {boolean} timezonesCollapsed - multiple timezones are collapsed.
+ * @returns {object} styles - styles object
+ */
+TimeGrid.prototype._getStyles = function(theme, timezonesCollapsed) {
+    var styles = {};
+    var timezonesLength = this.options.timezones.length;
+    var collapsed = timezonesCollapsed;
+    var numberAndUnit;
+
+    if (theme) {
+        styles.borderBottom = theme.week.timegridHorizontalLine.borderBottom || theme.common.border;
+        styles.halfHourBorderBottom = theme.week.timegridHalfHour.borderBottom || theme.common.border;
+
+        styles.todayBackgroundColor = theme.week.today.backgroundColor;
+        styles.weekendBackgroundColor = theme.week.weekend.backgroundColor;
+        styles.backgroundColor = theme.week.daygrid.backgroundColor;
+        styles.leftWidth = theme.week.timegridLeft.width;
+        styles.leftBackgroundColor = theme.week.timegridLeft.backgroundColor;
+        styles.leftBorderRight = theme.week.timegridLeft.borderRight || theme.common.border;
+        styles.leftFontSize = theme.week.timegridLeft.fontSize;
+        styles.timezoneWidth = theme.week.timegridLeft.width;
+        styles.additionalTimezoneBackgroundColor = theme.week.timegridLeftAdditionalTimezone.backgroundColor
+                                                || styles.leftBackgroundColor;
+
+        styles.displayTimezoneLabelHeight = theme.week.timegridLeftTimezoneLabel.height;
+        styles.displayTimezoneLabelBackgroundColor = theme.week.timegridLeft.backgroundColor === 'inherit' ? 'white' : theme.week.timegridLeft.backgroundColor;
+
+        styles.oneHourHeight = theme.week.timegridOneHour.height;
+        styles.halfHourHeight = theme.week.timegridHalfHour.height;
+        styles.quaterHourHeight = (parseInt(styles.halfHourHeight, 10) / 2) + 'px';
+
+        styles.currentTimeColor = theme.week.currentTime.color;
+        styles.currentTimeFontSize = theme.week.currentTime.fontSize;
+        styles.currentTimeFontWeight = theme.week.currentTime.fontWeight;
+
+        styles.pastTimeColor = theme.week.pastTime.color;
+        styles.pastTimeFontWeight = theme.week.pastTime.fontWeight;
+
+        styles.futureTimeColor = theme.week.futureTime.color;
+        styles.futureTimeFontWeight = theme.week.futureTime.fontWeight;
+
+        styles.currentTimeLeftBorderTop = theme.week.currentTimeLinePast.border;
+        styles.currentTimeBulletBackgroundColor = theme.week.currentTimeLineBullet.backgroundColor;
+        styles.currentTimeTodayBorderTop = theme.week.currentTimeLineToday.border;
+        styles.currentTimeRightBorderTop = theme.week.currentTimeLineFuture.border;
+
+        if (!collapsed && timezonesLength > 1) {
+            numberAndUnit = common.parseUnit(styles.leftWidth);
+            styles.leftWidth = (numberAndUnit[0] * timezonesLength) + numberAndUnit[1];
+        }
+    }
+
+    return styles;
+};
+
+/**
+ * @param {MouseEvent} event - mouse event object
+ */
+TimeGrid.prototype._onClickStickyContainer = function(event) {
+    var target = domevent.getEventTarget(event);
+    var closeBtn = domutil.closest(target, config.classname('.timegrid-timezone-close-btn'));
+
+    if (!closeBtn) {
+        return;
+    }
+
+    this.fire('clickTimezonesCollapsedBtn');
+};
+
+module.exports = TimeGrid;
+
+
+/***/ }),
+
+/***/ "./src/js/view/week/week.js":
+/*!**********************************!*\
+  !*** ./src/js/view/week/week.js ***!
+  \**********************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/**
+ * @fileoverview View of days UI.
+ * @author NHN FE Development Lab <dl_javascript@nhn.com>
+ */
+
+
+var util = __webpack_require__(/*! tui-code-snippet */ "tui-code-snippet");
+var config = __webpack_require__(/*! ../../config */ "./src/js/config.js");
+var domutil = __webpack_require__(/*! ../../common/domutil */ "./src/js/common/domutil.js");
+var datetime = __webpack_require__(/*! ../../common/datetime */ "./src/js/common/datetime.js");
+var TZDate = __webpack_require__(/*! ../../common/timezone */ "./src/js/common/timezone.js").Date;
+var View = __webpack_require__(/*! ../view */ "./src/js/view/view.js");
+
+/**
+ * @constructor
+ * @param {Base.Week} controller The controller mixin part.
+ * @param {object} options View options
+ * @param {string} [options.renderStartDate] Start date of render.
+ *  if not supplied then use -3d from today. YYYY-MM-DD format.
+ * @param {string} [options.renderEndDate] End date of render.
+ *  if not supplied then use +3d from today. YYYY-MM-DD format.
+ * @param {string} [options.cssPrefix] - CSS classname prefix
+ * @param {HTMLElement} container The element to use container for this view.
+ * @param {object} panels - schedule panels like 'milestone', 'task', 'allday', 'time'
+ * @param {string} viewName - 'week', 'day'
+ * @extends {View}
+ */
+function Week(controller, options, container, panels, viewName) {
+    var range;
+
+    container = domutil.appendHTMLElement('div', container);
+
+    View.call(this, container);
+
+    domutil.addClass(container, config.classname('week-container'));
+
+    range = this._getRenderDateRange(new TZDate());
+
+    /**
+     * @type {object} Options for view.
+     */
+    this.options = util.extend({
+        scheduleFilter: [function(schedule) {
+            return Boolean(schedule.isVisible);
+        }],
+        renderStartDate: datetime.format(range.start, 'YYYY-MM-DD'),
+        renderEndDate: datetime.format(range.end, 'YYYY-MM-DD'),
+        narrowWeekend: false,
+        startDayOfWeek: 0,
+        workweek: false,
+        showTimezoneCollapseButton: false,
+        timezonesCollapsed: false,
+        hourStart: 0,
+        hourEnd: 24
+    }, options);
+
+    /**
+     * Week controller mixin.
+     * @type {Base.Week}
+     */
+    this.controller = controller;
+
+    /**
+     * Schedule Panels
+     * @type {Array.<object>}
+     */
+    this.panels = panels;
+
+    /**
+     * Week view states
+     * @type {object}
+     */
+    this.state = {
+        timezonesCollapsed: this.options.timezonesCollapsed
+    };
+
+    if (viewName === 'day') {
+        _disableDayOptions(this.options);
+    }
+}
+
+util.inherit(Week, View);
+
+/**********
+ * Override props
+ **********/
+
+/**
+ * Render each child view with schedules in ranges.
+ * @fires Week#afterRender
+ * @override
+ */
+Week.prototype.render = function() {
+    var self = this,
+        options = this.options,
+        scheduleFilter = options.scheduleFilter,
+        narrowWeekend = options.narrowWeekend,
+        startDayOfWeek = options.startDayOfWeek,
+        workweek = options.workweek,
+        theme = this.controller.theme || {},
+        state = this.state;
+    var renderStartDate, renderEndDate, schedulesInDateRange, viewModel, grids, range;
+
+    renderStartDate = new TZDate(options.renderStartDate);
+    renderEndDate = new TZDate(options.renderEndDate);
+
+    range = datetime.range(
+        datetime.start(renderStartDate),
+        datetime.end(renderEndDate),
+        datetime.MILLISECONDS_PER_DAY
+    );
+
+    if (options.workweek && datetime.compare(renderStartDate, renderEndDate)) {
+        range = util.filter(range, function(date) {
+            return !datetime.isWeekend(date.getDay());
+        });
+
+        renderStartDate = range[0];
+        renderEndDate = range[range.length - 1];
+    }
+
+    schedulesInDateRange = this.controller.findByDateRange(
+        datetime.start(renderStartDate),
+        datetime.end(renderEndDate),
+        this.panels,
+        scheduleFilter,
+        this.options
+    );
+
+    grids = datetime.getGridLeftAndWidth(
+        range.length,
+        narrowWeekend,
+        startDayOfWeek,
+        workweek
+    );
+
+    viewModel = {
+        schedulesInDateRange: schedulesInDateRange,
+        renderStartDate: renderStartDate,
+        renderEndDate: renderEndDate,
+        grids: grids,
+        range: range,
+        theme: theme,
+        state: state
+    };
+
+    this.children.each(function(childView) {
+        var matrices;
+        var viewName = util.pick(childView.options, 'viewName');
+        childView.render(viewModel);
+
+        if (viewName) {
+            matrices = viewModel.schedulesInDateRange[viewName]; // DayGrid limits schedule count by visibleScheduleCount after rendering it.
+
+            if (util.isArray(matrices)) {
+                self._invokeAfterRenderSchedule(matrices);
+            } else {
+                util.forEach(matrices, function(matricesOfDay) {
+                    self._invokeAfterRenderSchedule(matricesOfDay);
+                });
+            }
+        }
+    });
+
+    /**
+     * @event Week#afterRender
+     */
+    this.fire('afterRender');
+};
+
+/**
+ * Fire 'afterRenderSchedule' event
+ * @param {Array} matrices - schedule matrices from view model
+ * @fires Week#afterRenderSchedule
+ */
+Week.prototype._invokeAfterRenderSchedule = function(matrices) {
+    var self = this;
+    util.forEachArray(matrices, function(matrix) {
+        util.forEachArray(matrix, function(column) {
+            util.forEachArray(column, function(scheduleViewModel) {
+                if (scheduleViewModel) {
+                    /**
+                     * @event Week#afterRenderSchedule
+                     */
+                    self.fire('afterRenderSchedule', {schedule: scheduleViewModel.model});
+                }
+            });
+        });
+    });
+};
+
+/**********
+ * Prototype props
+ **********/
+
+Week.prototype.viewName = 'week';
+
+/**
+ * Calculate default render date range from supplied date.
+ * @param {Date} baseDate base date.
+ * @returns {object} date range.
+ */
+Week.prototype._getRenderDateRange = function(baseDate) {
+    var base = datetime.start(baseDate),
+        start = new TZDate(Number(base)),
+        end = new TZDate(Number(base));
+
+    start.setDate(start.getDate() - 3);
+    end.setDate(end.getDate() + 3);
+
+    return {
+        start: start,
+        end: end
+    };
+};
+
+/**
+ * disable options for day view
+ * @param {WeekOptions} options - week options to disable
+ */
+function _disableDayOptions(options) {
+    options.workweek = false;
+}
+
+util.CustomEvents.mixin(Week);
+
+module.exports = Week;
+
+
+/***/ }),
+
+/***/ "./src/js/view/weekday.js":
+/*!********************************!*\
+  !*** ./src/js/view/weekday.js ***!
+  \********************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/**
+ * @fileoverview Weekday view
+ * @author NHN FE Development Lab <dl_javascript@nhn.com>
+ */
+
+
+var util = __webpack_require__(/*! tui-code-snippet */ "tui-code-snippet");
+var config = __webpack_require__(/*! ../config */ "./src/js/config.js"),
+    domutil = __webpack_require__(/*! ../common/domutil */ "./src/js/common/domutil.js"),
+    datetime = __webpack_require__(/*! ../common/datetime */ "./src/js/common/datetime.js"),
+    TZDate = __webpack_require__(/*! ../common/timezone */ "./src/js/common/timezone.js").Date,
+    View = __webpack_require__(/*! ./view */ "./src/js/view/view.js");
+
+/**
+ * @constructor
+ * @extends {View}
+ * @param {object} options - view options.
+ * @param {number} [options.containerButtonGutter=8] - free space at bottom to
+ *  make create easy.
+ * @param {number} [options.scheduleHeight=18] - height of each schedule block.
+ * @param {number} [options.scheduleGutter=2] - gutter height of each schedule block.
+ * @param {HTMLDIVElement} container - DOM element to use container for this
+ *  view.
+ */
+function Weekday(options, container) {
+    container = domutil.appendHTMLElement(
+        'div',
+        container,
+        config.classname('weekday')
+    );
+
+    /**
+     * @type {object}
+     */
+    this.options = util.extend({
+        containerBottomGutter: 8,
+        scheduleHeight: 18,
+        scheduleGutter: 2,
+        narrowWeekend: false,
+        startDayOfWeek: 0,
+        workweek: false
+    }, options);
+
+    /*
+     * cache parent's view model
+     * @type {object}
+     */
+    this._cacheParentViewModel = null;
+
+    View.call(this, container);
+}
+
+util.inherit(Weekday, View);
+
+/**
+ * Get render date range
+ * @returns {Date[]} rendered date range
+ */
+Weekday.prototype.getRenderDateRange = function() {
+    return this._cacheParentViewModel.range;
+};
+
+/**
+ * Get render date grids information
+ * @returns {Date[]} rendered date grids information
+ */
+Weekday.prototype.getRenderDateGrids = function() {
+    return this._cacheParentViewModel.grids;
+};
+
+/**
+ * Get default view model.
+ * @param {object} viewModel parent's view model
+ * @returns {object} viewModel to rendering.
+ */
+Weekday.prototype.getBaseViewModel = function(viewModel) {
+    var opt = this.options;
+    var range = viewModel.range;
+    var gridWidth = (100 / range.length);
+    var grids = viewModel.grids;
+    var exceedDate = viewModel.exceedDate || {};
+    var theme = viewModel.theme;
+    var now = new TZDate().toLocalTime();
+
+    this._cacheParentViewModel = viewModel;
+
+    return {
+        width: gridWidth,
+        scheduleHeight: opt.scheduleHeight,
+        scheduleBlockHeight: (opt.scheduleHeight + opt.scheduleGutter),
+        scheduleBlockGutter: opt.scheduleGutter,
+        dates: util.map(range, function(date, index) {
+            var day = date.getDay();
+            var ymd = datetime.format(new TZDate(date), 'YYYYMMDD');
+            var isToday = datetime.isSameDate(now, date);
+
+            return {
+                date: datetime.format(date, 'YYYY-MM-DD'),
+                month: date.getMonth() + 1,
+                day: day,
+                isToday: isToday,
+                ymd: ymd,
+                hiddenSchedules: exceedDate[ymd] || 0,
+                width: grids[index] ? grids[index].width : 0,
+                left: grids[index] ? grids[index].left : 0,
+                color: this._getDayNameColor(theme, day, isToday),
+                backgroundColor: this._getDayBackgroundColor(theme, day)
+            };
+        }, this)
+    };
+};
+
+/* eslint max-nested-callbacks: 0 */
+/**
+ * Make exceed date information
+ * @param {number} maxCount - exceed schedule count
+ * @param {Array} eventsInDateRange  - matrix of ScheduleViewModel
+ * @param {Array.<TZDate>} range - date range of one week
+ * @returns {object} exceedDate
+ */
+Weekday.prototype.getExceedDate = function(maxCount, eventsInDateRange, range) {
+    var exceedDate = this._initExceedDate(range);
+
+    util.forEach(eventsInDateRange, function(matrix) {
+        util.forEach(matrix, function(column) {
+            util.forEach(column, function(viewModel) {
+                var period;
+                if (!viewModel || viewModel.top < maxCount) {
+                    return;
+                }
+
+                // check that this schedule block is not visible after rendered.
+                viewModel.hidden = true;
+
+                period = datetime.range(
+                    viewModel.getStarts(),
+                    viewModel.getEnds(),
+                    datetime.MILLISECONDS_PER_DAY
+                );
+
+                util.forEach(period, function(date) {
+                    var ymd = datetime.format(date, 'YYYYMMDD');
+                    exceedDate[ymd] += 1;
+                });
+            });
+        });
+    });
+
+    return exceedDate;
+};
+
+/**
+ * Initiate exceed date information
+ * @param {Array.<TZDate>} range - date range of one week
+ * @returns {Object} - initiated exceed date
+ */
+Weekday.prototype._initExceedDate = function(range) {
+    var exceedDate = {};
+
+    util.forEach(range, function(date) {
+        var ymd = datetime.format(date, 'YYYYMMDD');
+        exceedDate[ymd] = 0;
+    });
+
+    return exceedDate;
+};
+
+/**
+ * Get a day name color
+ * @param {Theme} theme - theme instance
+ * @param {number} day - day number
+ * @param {boolean} isToday - today flag
+ * @param {boolean} isOtherMonth - not this month flag
+ * @returns {string} style - color style
+ */
+Weekday.prototype._getDayNameColor = function(theme, day, isToday, isOtherMonth) {
+    var color = '';
+
+    if (theme) {
+        if (day === 0) {
+            color = isOtherMonth ? theme.month.holidayExceptThisMonth.color : theme.common.holiday.color;
+        } else if (day === 6) {
+            color = isOtherMonth ? theme.month.dayExceptThisMonth.color : theme.common.saturday.color;
+        } else if (isToday) {
+            color = theme.common.today.color;
+        } else {
+            color = isOtherMonth ? theme.month.dayExceptThisMonth.color : theme.common.dayname.color;
+        }
+    }
+
+    return color;
+};
+
+/**
+ * Get a day background color
+ * @param {Theme} theme - theme instance
+ * @param {number} day - day number
+ * @returns {string} style - color style
+ */
+Weekday.prototype._getDayBackgroundColor = function(theme, day) {
+    var color = '';
+
+    if (theme) {
+        if (day === 0 || day === 6) {
+            color = theme.month.weekend.backgroundColor;
+        } else {
+            color = 'inherit';
+        }
+    }
+
+    return color;
+};
+
+module.exports = Weekday;
+
+
+/***/ }),
+
+/***/ "tui-code-snippet":
+/*!******************************************************************************************************************************!*\
+  !*** external {"commonjs":"tui-code-snippet","commonjs2":"tui-code-snippet","amd":"tui-code-snippet","root":["tui","util"]} ***!
+  \******************************************************************************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+module.exports = __WEBPACK_EXTERNAL_MODULE_tui_code_snippet__;
+
+/***/ }),
+
+/***/ "tui-date-picker":
+/*!*********************************************************************************************************************************!*\
+  !*** external {"commonjs":"tui-date-picker","commonjs2":"tui-date-picker","amd":"tui-date-picker","root":["tui","DatePicker"]} ***!
+  \*********************************************************************************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+module.exports = __WEBPACK_EXTERNAL_MODULE_tui_date_picker__;
+
+/***/ })
+
+/******/ });
+});
+//# sourceMappingURL=tui-calendar.js.map
\ No newline at end of file
diff --git a/admin/js/vendors/tui.calendar/tui-calendar.js.map b/admin/js/vendors/tui.calendar/tui-calendar.js.map
new file mode 100644 (file)
index 0000000..78f0cdb
--- /dev/null
@@ -0,0 +1 @@
+{"version":3,"sources":["webpack://tui.Calendar/webpack/universalModuleDefinition","webpack://tui.Calendar/webpack/bootstrap","webpack://tui.Calendar/./node_modules/handlebars-template-loader/runtime/index.js","webpack://tui.Calendar/./node_modules/handlebars/dist/cjs/handlebars.runtime.js","webpack://tui.Calendar/./node_modules/handlebars/dist/cjs/handlebars/base.js","webpack://tui.Calendar/./node_modules/handlebars/dist/cjs/handlebars/decorators.js","webpack://tui.Calendar/./node_modules/handlebars/dist/cjs/handlebars/decorators/inline.js","webpack://tui.Calendar/./node_modules/handlebars/dist/cjs/handlebars/exception.js","webpack://tui.Calendar/./node_modules/handlebars/dist/cjs/handlebars/helpers.js","webpack://tui.Calendar/./node_modules/handlebars/dist/cjs/handlebars/helpers/block-helper-missing.js","webpack://tui.Calendar/./node_modules/handlebars/dist/cjs/handlebars/helpers/each.js","webpack://tui.Calendar/./node_modules/handlebars/dist/cjs/handlebars/helpers/helper-missing.js","webpack://tui.Calendar/./node_modules/handlebars/dist/cjs/handlebars/helpers/if.js","webpack://tui.Calendar/./node_modules/handlebars/dist/cjs/handlebars/helpers/log.js","webpack://tui.Calendar/./node_modules/handlebars/dist/cjs/handlebars/helpers/lookup.js","webpack://tui.Calendar/./node_modules/handlebars/dist/cjs/handlebars/helpers/with.js","webpack://tui.Calendar/./node_modules/handlebars/dist/cjs/handlebars/internal/create-new-lookup-object.js","webpack://tui.Calendar/./node_modules/handlebars/dist/cjs/handlebars/internal/proto-access.js","webpack://tui.Calendar/./node_modules/handlebars/dist/cjs/handlebars/internal/wrapHelper.js","webpack://tui.Calendar/./node_modules/handlebars/dist/cjs/handlebars/logger.js","webpack://tui.Calendar/./node_modules/handlebars/dist/cjs/handlebars/no-conflict.js","webpack://tui.Calendar/./node_modules/handlebars/dist/cjs/handlebars/runtime.js","webpack://tui.Calendar/./node_modules/handlebars/dist/cjs/handlebars/safe-string.js","webpack://tui.Calendar/./node_modules/handlebars/dist/cjs/handlebars/utils.js","webpack://tui.Calendar/./node_modules/handlebars/runtime.js","webpack://tui.Calendar/(webpack)/buildin/global.js","webpack://tui.Calendar/./src/css/main.styl","webpack://tui.Calendar/./src/index.js","webpack://tui.Calendar/./src/js/common/array.js","webpack://tui.Calendar/./src/js/common/autoScroll.js","webpack://tui.Calendar/./src/js/common/collection.js","webpack://tui.Calendar/./src/js/common/common.js","webpack://tui.Calendar/./src/js/common/datetime.js","webpack://tui.Calendar/./src/js/common/dirty.js","webpack://tui.Calendar/./src/js/common/domevent.js","webpack://tui.Calendar/./src/js/common/domutil.js","webpack://tui.Calendar/./src/js/common/dw.js","webpack://tui.Calendar/./src/js/common/floatingLayer.js","webpack://tui.Calendar/./src/js/common/model.js","webpack://tui.Calendar/./src/js/common/point.js","webpack://tui.Calendar/./src/js/common/reqAnimFrame.js","webpack://tui.Calendar/./src/js/common/timezone.js","webpack://tui.Calendar/./src/js/common/vlayout.js","webpack://tui.Calendar/./src/js/common/vpanel.js","webpack://tui.Calendar/./src/js/config.js","webpack://tui.Calendar/./src/js/controller/base.js","webpack://tui.Calendar/./src/js/controller/viewMixin/core.js","webpack://tui.Calendar/./src/js/controller/viewMixin/month.js","webpack://tui.Calendar/./src/js/controller/viewMixin/week.js","webpack://tui.Calendar/./src/js/factory/calendar.js","webpack://tui.Calendar/./src/js/factory/controller.js","webpack://tui.Calendar/./src/js/factory/monthView.js","webpack://tui.Calendar/./src/js/factory/weekView.js","webpack://tui.Calendar/./src/js/handler/daygrid/click.js","webpack://tui.Calendar/./src/js/handler/daygrid/core.js","webpack://tui.Calendar/./src/js/handler/daygrid/creation.js","webpack://tui.Calendar/./src/js/handler/daygrid/creationGuide.js","webpack://tui.Calendar/./src/js/handler/daygrid/move.js","webpack://tui.Calendar/./src/js/handler/daygrid/moveGuide.js","webpack://tui.Calendar/./src/js/handler/daygrid/resize.js","webpack://tui.Calendar/./src/js/handler/daygrid/resizeGuide.js","webpack://tui.Calendar/./src/js/handler/drag.js","webpack://tui.Calendar/./src/js/handler/month/click.js","webpack://tui.Calendar/./src/js/handler/month/core.js","webpack://tui.Calendar/./src/js/handler/month/creation.js","webpack://tui.Calendar/./src/js/handler/month/creationGuide.js","webpack://tui.Calendar/./src/js/handler/month/guide.hbs","webpack://tui.Calendar/./src/js/handler/month/guide.js","webpack://tui.Calendar/./src/js/handler/month/move.js","webpack://tui.Calendar/./src/js/handler/month/moveGuide.hbs","webpack://tui.Calendar/./src/js/handler/month/moveGuide.js","webpack://tui.Calendar/./src/js/handler/month/resize.js","webpack://tui.Calendar/./src/js/handler/month/resizeGuide.js","webpack://tui.Calendar/./src/js/handler/time/click.js","webpack://tui.Calendar/./src/js/handler/time/clickDayname.js","webpack://tui.Calendar/./src/js/handler/time/core.js","webpack://tui.Calendar/./src/js/handler/time/creation.js","webpack://tui.Calendar/./src/js/handler/time/creationGuide.js","webpack://tui.Calendar/./src/js/handler/time/move.js","webpack://tui.Calendar/./src/js/handler/time/moveGuide.js","webpack://tui.Calendar/./src/js/handler/time/resize.js","webpack://tui.Calendar/./src/js/handler/time/resizeGuide.js","webpack://tui.Calendar/./src/js/model/schedule.js","webpack://tui.Calendar/./src/js/model/viewModel/scheduleViewModel.js","webpack://tui.Calendar/./src/js/theme/standard.js","webpack://tui.Calendar/./src/js/theme/theme.js","webpack://tui.Calendar/./src/js/theme/themeConfig.js","webpack://tui.Calendar/./src/js/view/layout.js","webpack://tui.Calendar/./src/js/view/month/month.js","webpack://tui.Calendar/./src/js/view/month/more.js","webpack://tui.Calendar/./src/js/view/month/weekdayInMonth.js","webpack://tui.Calendar/./src/js/view/popup/scheduleCreationPopup.js","webpack://tui.Calendar/./src/js/view/popup/scheduleDetailPopup.js","webpack://tui.Calendar/./src/js/view/template/helper.js","webpack://tui.Calendar/./src/js/view/template/month/month.hbs","webpack://tui.Calendar/./src/js/view/template/month/more.hbs","webpack://tui.Calendar/./src/js/view/template/month/weekdayInMonth.hbs","webpack://tui.Calendar/./src/js/view/template/month/weekdayInMonthSchedule.hbs","webpack://tui.Calendar/./src/js/view/template/popup/scheduleCreationPopup.hbs","webpack://tui.Calendar/./src/js/view/template/popup/scheduleDetailPopup.hbs","webpack://tui.Calendar/./src/js/view/template/week/dayGrid.hbs","webpack://tui.Calendar/./src/js/view/template/week/dayGridSchedule.hbs","webpack://tui.Calendar/./src/js/view/template/week/daynames.hbs","webpack://tui.Calendar/./src/js/view/template/week/time.hbs","webpack://tui.Calendar/./src/js/view/template/week/timeGrid.hbs","webpack://tui.Calendar/./src/js/view/template/week/timeGridCurrentTime.hbs","webpack://tui.Calendar/./src/js/view/template/week/timeMoveGuide.hbs","webpack://tui.Calendar/./src/js/view/template/week/timezoneSticky.hbs","webpack://tui.Calendar/./src/js/view/view.js","webpack://tui.Calendar/./src/js/view/week/dayGrid.js","webpack://tui.Calendar/./src/js/view/week/dayGridSchedule.js","webpack://tui.Calendar/./src/js/view/week/dayname.js","webpack://tui.Calendar/./src/js/view/week/time.js","webpack://tui.Calendar/./src/js/view/week/timeGrid.js","webpack://tui.Calendar/./src/js/view/week/week.js","webpack://tui.Calendar/./src/js/view/weekday.js","webpack://tui.Calendar/external {\"commonjs\":\"tui-code-snippet\",\"commonjs2\":\"tui-code-snippet\",\"amd\":\"tui-code-snippet\",\"root\":[\"tui\",\"util\"]}","webpack://tui.Calendar/external {\"commonjs\":\"tui-date-picker\",\"commonjs2\":\"tui-date-picker\",\"amd\":\"tui-date-picker\",\"root\":[\"tui\",\"DatePicker\"]}"],"names":[],"mappings":";;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC,CAAC;AACD,O;QCVA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;;;QAGA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA,0CAA0C,gCAAgC;QAC1E;QACA;;QAEA;QACA;QACA;QACA,wDAAwD,kBAAkB;QAC1E;QACA,iDAAiD,cAAc;QAC/D;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA,yCAAyC,iCAAiC;QAC1E,gHAAgH,mBAAmB,EAAE;QACrI;QACA;;QAEA;QACA;QACA;QACA,2BAA2B,0BAA0B,EAAE;QACvD,iCAAiC,eAAe;QAChD;QACA;QACA;;QAEA;QACA,sDAAsD,+DAA+D;;QAErH;QACA;;;QAGA;QACA;;;;;;;;;;;;AClFA,iBAAiB,mBAAO,CAAC,oFAAoB,E;;;;;;;;;;;;ACAhC;;AAEb;AACA;;AAEA,sCAAsC,uCAAuC,kBAAkB;;AAE/F;;AAEA,uCAAuC,6BAA6B,YAAY,EAAE,OAAO,iBAAiB,mBAAmB,uBAAuB,4EAA4E,EAAE,EAAE,yBAAyB,eAAe,EAAE;;AAE9Q,sBAAsB,mBAAO,CAAC,gFAAmB;;AAEjD;;AAEA;AACA;;AAEA,4BAA4B,mBAAO,CAAC,8FAA0B;;AAE9D;;AAEA,2BAA2B,mBAAO,CAAC,0FAAwB;;AAE3D;;AAEA,uBAAuB,mBAAO,CAAC,kFAAoB;;AAEnD;;AAEA,yBAAyB,mBAAO,CAAC,sFAAsB;;AAEvD;;AAEA,4BAA4B,mBAAO,CAAC,8FAA0B;;AAE9D;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA,2CAA2C,cAAc;;;;;;;;;;;;;ACjE5C;;AAEb;AACA;AACA;;AAEA,sCAAsC,uCAAuC,kBAAkB;;AAE/F,aAAa,mBAAO,CAAC,uEAAS;;AAE9B,iBAAiB,mBAAO,CAAC,+EAAa;;AAEtC;;AAEA,eAAe,mBAAO,CAAC,2EAAW;;AAElC,kBAAkB,mBAAO,CAAC,iFAAc;;AAExC,cAAc,mBAAO,CAAC,yEAAU;;AAEhC;;AAEA,2BAA2B,mBAAO,CAAC,uGAAyB;;AAE5D;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,2CAA2C,cAAc;;;;;;;;;;;;;ACnH5C;;AAEb;AACA;AACA;;AAEA,sCAAsC,uCAAuC,kBAAkB;;AAE/F,wBAAwB,mBAAO,CAAC,+FAAqB;;AAErD;;AAEA;AACA;AACA;AACA,2CAA2C,cAAc;;;;;;;;;;;;;ACf5C;;AAEb;;AAEA,aAAa,mBAAO,CAAC,wEAAU;;AAE/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C;AAC7C;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,GAAG;AACH;;AAEA;AACA,2CAA2C,cAAc;;;;;;;;;;;;;AC5B5C;;AAEb;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA,mBAAmB,yBAAyB;AAC5C;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AA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,KAAK;AACL;AACA;AACA,GAAG;AACH;;AAEA;AACA,2CAA2C,cAAc;;;;;;;;;;;;;AC1C5C;;AAEb;AACA;;AAEA,aAAa,mBAAO,CAAC,wEAAU;;AAE/B;AACA;AACA;AACA,WAAW,UAAU;AACrB,aAAa;AACb;;AAEA;AACA,oEAAoE,aAAa;AACjF;AACA;;AAEA;AACA;AACA,2CAA2C,cAAc;;;;;;;;;;;;;ACrB5C;;AAEb;AACA;AACA;AACA;AACA;;AAEA,uCAAuC,6BAA6B,YAAY,EAAE,OAAO,iBAAiB,mBAAmB,uBAAuB,4EAA4E,EAAE,EAAE,yBAAyB,eAAe,EAAE;;AAE9Q,6BAA6B,mBAAO,CAAC,sHAA4B;;AAEjE,cAAc,mBAAO,CAAC,0EAAW;;AAEjC;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA,2CAA2C,cAAc;;;;;;;;;;;;;ACxE5C;;AAEb;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,cAAc;;;;;;;;;;;;;AClB5C;;AAEb;;AAEA,aAAa,mBAAO,CAAC,uEAAS;;AAE9B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,2FAA2F,aAAa;AACxG;AACA;;AAEA,8CAA8C;AAC9C;AACA;AACA;;AAEA;AACA;AACA,2CAA2C,cAAc;;;;;;;;;;;;;AC9CzD,8CAAa;;AAEb;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,2CAA2C,cAAc;;;;;;;;;;;;;;AClB5C;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,sCAAsC,uCAAuC,kBAAkB;;AAE/F;;AAEA,uCAAuC,6BAA6B,YAAY,EAAE,OAAO,iBAAiB,mBAAmB,uBAAuB,4EAA4E,EAAE,EAAE,yBAAyB,eAAe,EAAE;;AAE9Q,aAAa,mBAAO,CAAC,uEAAS;;AAE9B;;AAEA,iBAAiB,mBAAO,CAAC,+EAAa;;AAEtC;;AAEA,YAAY,mBAAO,CAAC,qEAAQ;;AAE5B,eAAe,mBAAO,CAAC,2EAAW;;AAElC,0BAA0B,mBAAO,CAAC,mGAAuB;;AAEzD,2BAA2B,mBAAO,CAAC,uGAAyB;;AAE5D;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;;AAEA,yCAAyC;AACzC;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,OAAO;AAChD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,qBAAqB,SAAS;AAC9B;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA,6BAA6B;AAC7B;;AAEA;AACA,KAAK;AACL;AACA,+BAA+B;;AAE/B;AACA;AACA;;AAEA;AACA,0EAA0E;;AAE1E;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,yCAAyC;AACzC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,8CAA8C;AAC9C;;AAEA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL,gEAAgE;AAChE;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,0EAA0E;;AAE1E;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8EAA8E;;AAE9E;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C;AAC1C;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA,yBAAyB,iCAAiC;AAC1D,GAAG;AACH;AACA,2CAA2C,cAAc;;;;;;;;;;;;;ACnXzD;AACa;;AAEb;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,2CAA2C,cAAc;;;;;;;;;;;;;ACd5C;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,YAAY;AACZ,YAAY;AACZ,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,iBAAiB,sBAAsB;AACvC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,qCAAqC,SAAS;AAC9C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA,uBAAuB;AACvB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,2CAA2C,cAAc;;;;;;;;;;;;AC3HzD;AACA;AACA,iBAAiB,mBAAO,CAAC,+FAA+B;;;;;;;;;;;;ACFxD;;AAEA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;;AAEA;AACA;AACA,4CAA4C;;AAE5C;;;;;;;;;;;;ACnBA,uC;;;;;;;;;;;;ACAA;AACA;AACA;AACA;;AAEa;;AAEb,WAAW,mBAAO,CAAC,0CAAkB;AACrC,eAAe,mBAAO,CAAC,2DAAuB;;AAE9C,mBAAO,CAAC,4CAAiB;AACzB,mBAAO,CAAC,mEAA2B;;AAEnC;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;;;;;;;;;;;;;ACxCA;AACA;AACA;AACA;AACa;;AAEb,WAAW,mBAAO,CAAC,0CAAkB;AACrC,eAAe,mBAAO,CAAC,uDAAoB;;AAE3C;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,wBAAwB;AACnC,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC,sCAAsC;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,qDAAqD;AACrD;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,2BAA2B;AACtC,WAAW,2BAA2B;AACtC,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AC7RA;AACA;AACA;AACA;AACa;;AAEb,WAAW,mBAAO,CAAC,0CAAkB;AACrC,eAAe,mBAAO,CAAC,uDAAoB;AAC3C,cAAc,mBAAO,CAAC,qDAAmB;AACzC,YAAY,mBAAO,CAAC,iDAAiB;;AAErC;AACA;AACA,+BAA+B;;AAE/B;AACA;AACA;AACA,WAAW,YAAY;AACvB;AACA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA,cAAc;AACd;AACA;;AAEA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA,WAAW,WAAW;AACtB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,YAAY;AACvB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW,YAAY;AACvB,aAAa,UAAU;AACvB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAW,YAAY;AACvB,WAAW,WAAW;AACtB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW,WAAW;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA,WAAW,WAAW;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;;;ACpPA;AACA;AACA;AACA;AACa;;AAEb,WAAW,mBAAO,CAAC,0CAAkB;AACrC;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,iEAAiE;AACjE;AACA,WAAW,SAAS;AACpB;AACA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,WAAW,YAAY;AACvB,aAAa,SAAS;AACtB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,cAAc,SAAS;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,KAAK;AAChB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;;AAET;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,0BAA0B;AACrC,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;;AAET;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,gCAAgC;AAC3C,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,6BAA6B;AAC7B;;AAEA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW,gBAAgB;AAC3B,WAAW,SAAS;AACpB,WAAW,EAAE;AACb;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW,SAAS;AACpB,aAAa,WAAW;AACxB;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,+BAA+B;AAC1C;AACA,WAAW,SAAS;AACpB,aAAa,4BAA4B;AACzC;AACA;AACA;AACA,gCAAgC;AAChC,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,yBAAyB;AACzB;AACA;AACA;;AAEA,yBAAyB;AACzB;;AAEA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA,WAAW,SAAS;AACpB,aAAa,MAAM;AACnB;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,EAAE;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;;AAEA;;;;;;;;;;;;;ACzYA;AACA;AACA;AACA;AACa;;AAEb,WAAW,mBAAO,CAAC,0CAAkB;;AAErC,cAAc,mBAAO,CAAC,qDAAmB;AACzC,iBAAiB,mBAAO,CAAC,2DAAsB;AAC/C,eAAe,mBAAO,CAAC,uDAAoB;;AAE3C;AACA;AACA,WAAW,SAAS;AACpB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAiB,WAAW;AAC5B;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,eAAe,OAAO;AACtB,eAAe,MAAM;AACrB,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,eAAe,OAAO;AACtB,eAAe,MAAM;AACrB,eAAe,MAAM;AACrB,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,eAAe,cAAc;AAC7B,iBAAiB,EAAE;AACnB;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,eAAe,cAAc;AAC7B,iBAAiB,EAAE;AACnB;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA,eAAe,OAAO,0BAA0B;AAChD,eAAe,YAAY;AAC3B,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;AACA;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,EAAE;AACjB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT,KAAK;;AAEL;AACA;AACA,eAAe,YAAY;AAC3B,eAAe,OAAO;AACtB,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;;AAEA;AACA,uBAAuB,YAAY;AACnC;AACA;AACA,SAAS;AACT,uBAAuB,YAAY;AACnC;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA,eAAe,YAAY;AAC3B,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA,eAAe,OAAO;AACtB,iBAAiB,MAAM;AACvB;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,SAAS;;AAET;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;;AAET;AACA;AACA;;;;;;;;;;;;;AChSA;AACA;AACA;AACA;AACa;;AAEb,aAAa,mBAAO,CAAC,+CAAY;AACjC,SAAS,mBAAO,CAAC,2CAAc;AAC/B,WAAW,mBAAO,CAAC,0CAAkB;AACrC;AACA,yBAAyB,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE;AACzE;;AAEA;AACA,sBAAsB;AACtB;AACA;;AAEA;AACA;AACA,eAAe,OAAO;AACtB,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,eAAe,OAAO;AACtB,iBAAiB,OAAO;AACxB;AACA;AACA;AACA,KAAK;;AAEL;AACA,eAAe,OAAO;AACtB,iBAAiB,OAAO;AACxB;AACA;AACA;AACA,KAAK;;AAEL;AACA,eAAe,OAAO;AACtB,iBAAiB,OAAO;AACxB;AACA;AACA;AACA,KAAK;;AAEL;AACA,eAAe,OAAO;AACtB,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA,eAAe,OAAO;AACtB,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA,eAAe,OAAO;AACtB,iBAAiB,OAAO;AACxB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,SAAS;AACxB,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA,eAAe,KAAK;AACpB;AACA,eAAe,MAAM;AACrB,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,SAAS;;AAET;AACA,KAAK;;AAEL;AACA;AACA,eAAe,KAAK;AACpB,eAAe,MAAM;AACrB,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,SAAS;;AAET;AACA,KAAK;;AAEL;AACA;AACA,eAAe,OAAO;AACtB,iBAAiB,OAAO;AACxB;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA,eAAe,OAAO;AACtB,iBAAiB,OAAO;AACxB;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,iBAAiB,QAAQ;AACzB;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA,eAAe,EAAE;AACjB,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA,eAAe,OAAO;AACtB,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,cAAc,kBAAkB;AAChC;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,iBAAiB,iBAAiB;AAClC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,eAAe,OAAO;AACtB,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,eAAe,OAAO;AACtB,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA,eAAe,OAAO;AACtB,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA,KAAK;;AAEL;AACA;AACA,eAAe,OAAO;AACtB,iBAAiB,OAAO;AACxB;AACA;AACA;;AAEA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA,eAAe,OAAO;AACtB,iBAAiB,OAAO;AACxB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,QAAQ;AACvB,eAAe,OAAO;AACtB,eAAe,QAAQ;AACvB,eAAe,SAAS;AACxB,iBAAiB,iBAAiB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;;AAET;AACA,KAAK;;AAEL;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,QAAQ;AACvB,eAAe,OAAO;AACtB,eAAe,QAAQ;AACvB,iBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,SAAS;AACT,KAAK;;AAEL;AACA;AACA,eAAe,OAAO;AACtB,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;;;ACjpBA;AACA;AACA;AACA;AACa;;AAEb,aAAa,mBAAO,CAAC,0CAAkB;AACvC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA,iBAAiB;AACjB,8BAA8B;AAC9B,6BAA6B;AAC7B;AACA;AACA,iBAAiB;AACjB,8BAA8B;AAC9B;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,EAAE;AACjB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;;AAEA;;AAEA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA,eAAe,OAAO;AACtB;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,eAAe,OAAO;AACtB,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,gBAAgB;AAC/B;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;;AAEb;AACA;;AAEA;;AAEA;AACA;AACA,uBAAuB,SAAS;AAChC,uBAAuB,QAAQ;AAC/B,yBAAyB,EAAE;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD;AACvD,4CAA4C;;AAE5C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;;AC3MA;AACA;AACA;AACA;AACA;AACa;;AAEb,WAAW,mBAAO,CAAC,0CAAkB;AACrC;AACA;;AAEA;AACA;AACA;AACA,eAAe,YAAY;AAC3B,eAAe,gBAAgB;AAC/B,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB;AACA;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;;AAEA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;AACA;AACA,eAAe,YAAY;AAC3B,eAAe,OAAO;AACtB,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA,eAAe,YAAY;AAC3B,eAAe,gBAAgB;AAC/B,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB;AACA;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;;AAEA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;AACA;AACA,eAAe,YAAY;AAC3B,eAAe,OAAO;AACtB,eAAe,WAAW;AAC1B,eAAe,EAAE;AACjB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA,aAAa,aAAa;AAC1B;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA,eAAe,YAAY;AAC3B,eAAe,gBAAgB;AAC/B,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;;AAEb;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA,eAAe,MAAM;AACrB;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA,eAAe,MAAM;AACrB;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA,eAAe,MAAM;AACrB;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,eAAe,YAAY;AAC3B;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,eAAe,YAAY;AAC3B;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,eAAe,MAAM;AACrB,eAAe,YAAY;AAC3B,iBAAiB,SAAS;AAC1B;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,eAAe,WAAW;AAC1B,iBAAiB,OAAO;AACxB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA,eAAe,YAAY;AAC3B,eAAe,WAAW;AAC1B,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA,eAAe,YAAY;AAC3B,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,iBAAiB,WAAW;AAC5B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA,aAAa;AACb,0BAA0B;AAC1B;AACA,qBAAqB;AACrB;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,WAAW;AAC1B,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA,eAAe,MAAM;AACrB,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;;ACjaA;AACA;AACA;AACA;AACA;AACa;;AAEb,eAAe,mBAAO,CAAC,+CAAY;AACnC,iBAAiB,mBAAO,CAAC,mDAAc;AACvC,WAAW,mBAAO,CAAC,0CAAkB;;AAErC;AACA;;AAEA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,YAAY;AAC3B;AACA,eAAe,OAAO;AACtB,iBAAiB,YAAY;AAC7B;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA,eAAe,YAAY;AAC3B;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,eAAe,OAAO;AACtB,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,eAAe,YAAY;AAC3B,eAAe,OAAO;AACtB,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,qBAAqB;AACpC;AACA,eAAe,iBAAiB;AAChC;AACA,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,mBAAmB,YAAY;AAC/B,mBAAmB,OAAO;AAC1B;AACA;AACA;AACA;AACA;AACA;;AAEA,kBAAkB,SAAS;AAC3B;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA,eAAe,YAAY;AAC3B,eAAe,OAAO;AACtB,eAAe,QAAQ;AACvB,iBAAiB,YAAY;AAC7B;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA,eAAe,YAAY;AAC3B,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,wCAAwC,IAAI;AAC5C;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;AACT,kBAAkB,OAAO;AACzB;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA,eAAe,YAAY;AAC3B,eAAe,OAAO;AACtB,eAAe,cAAc;AAC7B;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA,eAAe,YAAY;AAC3B,eAAe,OAAO;AACtB,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA,eAAe,YAAY;AAC3B,eAAe,OAAO;AACtB,iBAAiB,QAAQ;AACzB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA,eAAe,YAAY;AAC3B,eAAe,OAAO;AACtB;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,eAAe,YAAY;AAC3B,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,eAAe,YAAY;AAC3B,eAAe,OAAO;AACtB;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,eAAe,YAAY;AAC3B,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA,eAAe,YAAY;AAC3B,eAAe,OAAO;AACtB,iBAAiB,cAAc;AAC/B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,eAAe,YAAY;AAC3B,iBAAiB,OAAO;AACxB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,yCAAyC,EAAE;AAC3C;AACA;AACA;;AAEA;AACA;AACA;AACA,yBAAyB;AACzB;;AAEA;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA,eAAe,YAAY;AAC3B,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA,eAAe,YAAY;AAC3B,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;AACA;AACA,eAAe,YAAY;AAC3B,eAAe,QAAQ;AACvB,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA,eAAe,YAAY;AAC3B,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA,eAAe,YAAY;AAC3B,iBAAiB,OAAO;AACxB;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;;AAET;AACA,KAAK;;AAEL;AACA;AACA,eAAe,MAAM;AACrB,iBAAiB,iBAAiB;AAClC;AACA;AACA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;;AAEA,cAAc,SAAS;AACvB;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA,eAAe,gBAAgB;AAC/B,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,6BAA6B;AAC7B;AACA,qBAAqB;AACrB,iBAAiB;AACjB;AACA;AACA,qBAAqB;AACrB;;AAEA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA,iBAAiB;AACjB;AACA;;AAEA;AACA,aAAa;AACb,SAAS;;AAET;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;;AC7oBA;AACA;AACA;AACA;AACa;;AAEb,aAAa,mBAAO,CAAC,+CAAY;;AAEjC;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,aAAa,GAAG;AAChB;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,GAAG;AAChB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,GAAG;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,GAAG;AAChB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW,UAAU;AACrB,WAAW,UAAU;AACrB,aAAa,QAAQ;AACrB;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;;;;AC9HA;AACA;AACA;AACA;AACa;;AAEb,WAAW,mBAAO,CAAC,0CAAkB;AACrC,aAAa,mBAAO,CAAC,qCAAW;AAChC,cAAc,mBAAO,CAAC,qDAAmB;AACzC,WAAW,mBAAO,CAAC,2CAAc;;AAEjC;AACA;AACA,aAAa;AACb,WAAW,OAAO;AAClB,WAAW,YAAY;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,cAAc;AACd;AACA;;AAEA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,cAAc;AACd;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,UAAU,SAAS;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,cAAc;AACzB,WAAW,cAAc;AACzB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;;ACvLA;AACA;AACA;AACA;AACa;;AAEb,aAAa,mBAAO,CAAC,uDAAoB;AACzC,WAAW,mBAAO,CAAC,0CAAkB;AACrC;AACA;;AAEA,eAAe,mBAAO,CAAC,uDAAoB;;AAE3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,iBAAiB,OAAO;AACxB;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,OAAO;AAC1B,mBAAmB,SAAS;AAC5B,qBAAqB,QAAQ;AAC7B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,aAAa;;AAEb;AACA,SAAS;;AAET;AACA;AACA,mBAAmB,OAAO;AAC1B,mBAAmB,OAAO;AAC1B,qBAAqB,QAAQ;AAC7B;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,6BAA6B;AAC7B;;AAEA;AACA,SAAS;;AAET;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,iBAAiB,OAAO;AACxB;AACA;AACA,sBAAsB;AACtB;;AAEA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA,KAAK;;AAEL;AACA;AACA,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;;;;;;;;;;;;;ACtJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACa;;AAEb,WAAW,mBAAO,CAAC,0CAAkB;;AAErC;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW,wBAAwB;AACnC,WAAW,iBAAiB;AAC5B,WAAW,QAAQ;AACnB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,MAAM;AACjB,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,MAAM;AACjB,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW,MAAM;AACjB,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,MAAM;AACjB,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,MAAM;AACjB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,MAAM;AACjB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW,MAAM;AACjB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW,MAAM;AACjB,aAAa,QAAQ;AACrB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,SAAS;AACtB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;;ACnVA;AACA;AACA;AACA;AACa;;AAEb;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,SAAS;AACxB,eAAe,EAAE;AACjB,iBAAiB,OAAO;AACxB;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;;;;;;;;;;;;ACvDA;AACA;AACA;AACA;AACa;;AAEb,WAAW,mBAAO,CAAC,0CAAkB;;AAErC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW,MAAM;AACjB,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW,mBAAmB;AAC9B,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW,YAAY;AACvB,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW,YAAY;AACvB,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,0BAA0B;AACrC;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;;AAEA;AACA;AACA,CAAC;;AAED;AACA;;AAEA;AACA;AACA,eAAe,OAAO;AACtB;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA,eAAe,SAAS;AACxB;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACzSA;AACA;AACA;AACA;AACa;;AAEb,WAAW,mBAAO,CAAC,0CAAkB;AACrC,aAAa,mBAAO,CAAC,qCAAW;AAChC,aAAa,mBAAO,CAAC,2CAAU;AAC/B,cAAc,mBAAO,CAAC,6CAAW;AACjC,eAAe,mBAAO,CAAC,+CAAY;AACnC,WAAW,mBAAO,CAAC,2CAAc;AACjC,aAAa,mBAAO,CAAC,2CAAU;AAC/B,WAAW,mBAAO,CAAC,iDAAiB;;AAEpC;;AAEA;AACA;AACA,UAAU;AACV,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,QAAQ;AACtB,cAAc,QAAQ;AACtB,cAAc,OAAO;AACrB;;AAEA;AACA;AACA,aAAa;AACb,WAAW,OAAO;AAClB,YAAY,eAAe;AAC3B,YAAY,SAAS;AACrB,WAAW,YAAY;AACvB,WAAW,MAAM;AACjB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA,cAAc;AACd;AACA;;AAEA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA,cAAc;AACd;AACA;;AAEA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA,aAAa,SAAS;AACtB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA,WAAW,SAAS;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,YAAY;AACvB,WAAW,OAAO;AAClB,aAAa,YAAY;AACzB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW,YAAY;AACvB,WAAW,OAAO;AAClB;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,YAAY;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,cAAc;AACd,kBAAkB,SAAS;AAC3B;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA,WAAW,aAAa;AACxB,WAAW,UAAU;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;;AAEA;AACA;AACA,WAAW,eAAe;AAC1B,WAAW,YAAY;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;;;;;;;;;;;;;AC1aA;AACA;AACA;AACA;AACa;;AAEb,WAAW,mBAAO,CAAC,0CAAkB;AACrC,aAAa,mBAAO,CAAC,qCAAW;AAChC,aAAa,mBAAO,CAAC,2CAAU;AAC/B,cAAc,mBAAO,CAAC,6CAAW;AACjC,WAAW,mBAAO,CAAC,2CAAc;;AAEjC;AACA;AACA,aAAa;AACb,WAAW,OAAO;AAClB,YAAY,OAAO;AACnB,YAAY,OAAO;AACnB,YAAY,OAAO;AACnB,YAAY,QAAQ;AACpB,YAAY,QAAQ;AACpB,YAAY,OAAO;AACnB,WAAW,YAAY;AACvB,WAAW,MAAM;AACjB;AACA;AACA;;AAEA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA,cAAc;AACd;AACA;;AAEA;AACA,cAAc;AACd;AACA;;AAEA;;AAEA;AACA,cAAc;AACd;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,QAAQ;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,YAAY;AACvB,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,aAAa;AACxB,WAAW,eAAe;AAC1B;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;;ACjNA;AACA;AACA;AACA;AACa;;AAEb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;;AC3CA;AACA;AACA;AACA;AACa;;AAEb,WAAW,mBAAO,CAAC,0CAAkB;AACrC,eAAe,mBAAO,CAAC,qDAAmB;AAC1C,wBAAwB,mBAAO,CAAC,2FAAsC;AACtE,eAAe,mBAAO,CAAC,uDAAoB;AAC3C,aAAa,mBAAO,CAAC,mDAAkB;AACvC,YAAY,mBAAO,CAAC,+CAAgB;;AAEpC;AACA;AACA,WAAW,OAAO;AAClB,WAAW,SAAS,uDAAuD;AAC3E,WAAW,YAAY;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd,eAAe,kBAAkB;AACjC,iBAAiB,OAAO;AACxB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,SAAS;AACpB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,WAAW,oBAAoB;AAC/B,WAAW,QAAQ;AACnB,aAAa,WAAW;AACxB;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW,SAAS;AACpB,aAAa,SAAS;AACtB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW,SAAS;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,KAAK;AACL;;AAEA;AACA;AACA,WAAW,SAAS;AACpB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,QAAQ;AACnB,aAAa,SAAS;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,WAAW,WAAW;AACtB,aAAa,4BAA4B;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,4BAA4B;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA,WAAW,YAAY;AACvB,aAAa,eAAe;AAC5B;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,iBAAiB;AAC5B;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;;;;AC9ZA;AACA;AACA;AACA;AACa;;AAEb,WAAW,mBAAO,CAAC,0CAAkB;AACrC;AACA;;AAEA,eAAe,mBAAO,CAAC,0DAAuB;AAC9C,aAAa,mBAAO,CAAC,0DAAuB;AAC5C,iBAAiB,mBAAO,CAAC,8DAAyB;AAClD,wBAAwB,mBAAO,CAAC,8FAAyC;;AAEzE;AACA;AACA;AACA,eAAe,MAAM;AACrB,iBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,yCAAyC;AACzC;;AAEA;AACA,qBAAqB;;AAErB,iCAAiC;AACjC;;AAEA;AACA,aAAa;;AAEb;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA,KAAK;;AAEL;AACA;AACA,eAAe,QAAQ;AACvB,eAAe,OAAO;AACtB,iBAAiB,OAAO;AACxB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA,eAAe,WAAW;AAC1B,eAAe,QAAQ;AACvB,iBAAiB,MAAM;AACvB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa;;AAEb;AACA,SAAS;;AAET;AACA,KAAK;;AAEL;AACA;AACA,eAAe,KAAK;AACpB,eAAe,KAAK;AACpB,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,eAAe,KAAK;AACpB,eAAe,KAAK;AACpB,eAAe,MAAM;AACrB,eAAe,SAAS;AACxB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb,SAAS;AACT,KAAK;;AAEL;AACA;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,6BAA6B;AAC5C;AACA,iBAAiB,kBAAkB;AACnC;AACA;AACA;AACA;AACA;AACA,mBAAmB,kBAAkB;AACrC,qBAAqB,kBAAkB;AACvC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA,eAAe,WAAW;AAC1B,iBAAiB,WAAW;AAC5B;AACA;AACA;;AAEA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;;AAEA;;;;;;;;;;;;;AC/PA;AACA;AACA;AACA;AACa;;AAEb,WAAW,mBAAO,CAAC,0CAAkB;AACrC,YAAY,mBAAO,CAAC,oDAAoB;AACxC,eAAe,mBAAO,CAAC,0DAAuB;AAC9C,iBAAiB,mBAAO,CAAC,8DAAyB;AAClD;;AAEA;AACA;AACA;AACA,eAAe,kBAAkB;AACjC,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,eAAe,kBAAkB;AACjC,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,eAAe,kBAAkB;AACjC;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,WAAW;AAC1B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,WAAW;AAC1B,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;;AAET;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA,eAAe,WAAW;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;AACA;AACA;AACA,eAAe,WAAW;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB;;AAEA;AACA;AACA,2BAA2B,kBAAkB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;AACA;AACA;AACA,eAAe,WAAW;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,WAAW;AAC1B,eAAe,QAAQ;AACvB,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;;AAEA;;;;;;;;;;;;;AClNA;AACA;AACA;AACA;AACA;AACa;;AAEb,WAAW,mBAAO,CAAC,0CAAkB;;AAErC,iBAAiB,mBAAO,CAAC,8DAAyB;AAClD,YAAY,mBAAO,CAAC,oDAAoB;AACxC,eAAe,mBAAO,CAAC,0DAAuB;AAC9C,aAAa,mBAAO,CAAC,0DAAuB;;AAE5C;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,QAAQ;AACvB,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;;AAEb,qBAAqB,iBAAiB;AACtC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA,eAAe,iBAAiB;AAChC,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA,uCAAuC,kBAAkB;AACzD;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb,SAAS;AACT,KAAK;;AAEL;AACA;AACA;AACA,eAAe,KAAK;AACpB,eAAe,KAAK;AACpB,eAAe,WAAW;AAC1B,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,SAAS;;AAET;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,WAAW;AAC1B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;AACA;AACA;AACA,eAAe,KAAK;AACpB,eAAe,KAAK;AACpB,eAAe,WAAW;AAC1B,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,KAAK;AACpB,eAAe,KAAK;AACpB,eAAe,eAAe;AAC9B,eAAe,WAAW;AAC1B,eAAe,OAAO;AACtB,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;;AAET;AACA,KAAK;;AAEL;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,MAAM;AACrB,eAAe,eAAe;AAC9B,iBAAiB,OAAO;AACxB;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB,aAAa;AACb,SAAS;;AAET;AACA,KAAK;;AAEL;AACA;AACA,eAAe,MAAM;AACrB,eAAe,OAAO;AACtB,iBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;;AAEA;AACA,aAAa;AACb,SAAS;AACT;AACA;;AAEA;;;;;;;;;;;;;ACrYA;AACA;AACA;AACA;AACa;;AAEb;;AAEA,WAAW,mBAAO,CAAC,0CAAkB;AACrC,iBAAiB,mBAAO,CAAC,sGAAoC;AAC7D,SAAS,mBAAO,CAAC,2CAAc;AAC/B,eAAe,mBAAO,CAAC,uDAAoB;AAC3C,aAAa,mBAAO,CAAC,+CAAgB;AACrC,WAAW,mBAAO,CAAC,iDAAiB;AACpC,wBAAwB,mBAAO,CAAC,oDAAc;AAC9C,sBAAsB,mBAAO,CAAC,gDAAY;AAC1C,uBAAuB,mBAAO,CAAC,kDAAa;AAC5C,aAAa,mBAAO,CAAC,uDAAoB;AACzC,aAAa,mBAAO,CAAC,qCAAW;AAChC,eAAe,mBAAO,CAAC,uDAAoB;AAC3C,mBAAmB,mBAAO,CAAC,+DAAwB;;AAEnD;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,cAAc;AAC5B,cAAc,cAAc;AAC5B,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,QAAQ;AACtB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB;AACA,cAAc,OAAO;AACrB,cAAc,eAAe;AAC7B,cAAc,OAAO;AACrB,cAAc,QAAQ;AACtB,cAAc,QAAQ;AACtB,cAAc,QAAQ;AACtB,cAAc,QAAQ;AACtB,cAAc,QAAQ;AACtB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,IAAI;AAClB,cAAc,OAAO;AACrB;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,cAAc,SAAS;AACvB,cAAc,SAAS;AACvB,cAAc,SAAS;AACvB,cAAc,SAAS;AACvB,cAAc,SAAS;AACvB,cAAc,SAAS;AACvB,cAAc,SAAS;AACvB,cAAc,SAAS;AACvB,cAAc,SAAS;AACvB,cAAc,SAAS;AACvB,cAAc,SAAS;AACvB,cAAc,SAAS;AACvB,cAAc,SAAS;AACvB,cAAc,SAAS;AACvB,cAAc,SAAS;AACvB,cAAc,SAAS;AACvB,cAAc,SAAS;AACvB,cAAc,SAAS;AACvB,cAAc,SAAS;AACvB,cAAc,SAAS;AACvB,cAAc,SAAS;AACvB,cAAc,SAAS;AACvB,cAAc,SAAS;AACvB,cAAc,SAAS;AACvB,cAAc,SAAS;AACvB,cAAc,SAAS;AACvB,cAAc,SAAS;AACvB,cAAc,SAAS;AACvB,cAAc,SAAS;AACvB,cAAc,SAAS;AACvB,cAAc,SAAS;AACvB,cAAc,SAAS;AACvB,cAAc,SAAS;AACvB,cAAc,SAAS;AACvB,cAAc,SAAS;AACvB,cAAc,SAAS;AACvB,cAAc,SAAS;AACvB,cAAc,SAAS;AACvB,cAAc,SAAS;AACvB,cAAc,SAAS;AACvB,cAAc,SAAS;AACvB,cAAc,SAAS;AACvB,cAAc,SAAS;AACvB;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA,YAAY;AACZ;AACA;AACA,YAAY;AACZ;AACA;AACA,YAAY;AACZ;AACA;AACA,YAAY;AACZ;AACA;AACA,YAAY;AACZ;AACA;AACA,YAAY;AACZ;AACA;AACA,YAAY;AACZ;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA,YAAY;AACZ;AACA;AACA,YAAY;AACZ;AACA;AACA,YAAY;AACZ;AACA;AACA,YAAY;AACZ;AACA,mGAAmG,MAAM;AACzG,YAAY;AACZ;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA,8CAA8C;AAC9C,yCAAyC;AACzC,2CAA2C;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA,yCAAyC;AACzC,oCAAoC;AACpC,sCAAsC;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA,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AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA,kCAAkC,aAAa;;AAE/C;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,sCAAsC;AAC/C,4BAA4B,kCAAkC;AAC9D,6BAA6B,mCAAmC;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK,wCAAwC;;AAE7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,mCAAmC;;AAExC;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,WAAW,iBAAiB,cAAc,eAAe;AACzD,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;AACA;AACA;;AAEA;AACA,UAAU,eAAe;AACzB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO,gBAAgB,eAAe;AACjD,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,WAAW,YAAY;AACvB,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,2CAA2C;AAC3C;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;;AAET;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,aAAa;AACb,SAAS;AACT,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,aAAa;AACb,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,cAAc;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,KAAK;AAClB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,cAAc,eAAe,oBAAoB;AAC5D,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;;AAEA;AACA,oEAAoE,2BAA2B;AAC/F;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd,kBAAkB,SAAS,iBAAiB,eAAe;AAC3D,kBAAkB,WAAW;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd,kBAAkB,KAAK;AACvB,kBAAkB,YAAY;AAC9B;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd,kBAAkB,OAAO;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;;AAEA;AACA,WAAW;AACX,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd,kBAAkB,QAAQ;AAC1B,kBAAkB,KAAK;AACvB,kBAAkB,KAAK;AACvB,kBAAkB,kBAAkB,UAAU,wBAAwB;AACtE,kBAAkB,OAAO;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B,YAAY;AACZ;AACA,2BAA2B;AAC3B;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO,8BAA8B,eAAe;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd,kBAAkB,SAAS,0BAA0B,eAAe;AACpE,kBAAkB,OAAO,gBAAgB,eAAe;AACxD,kBAAkB,KAAK;AACvB,kBAAkB,KAAK;AACvB;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd,kBAAkB,SAAS,iBAAiB,eAAe;AAC3D;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;;AAEA;AACA;AACA,WAAW,SAAS;AACpB;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd,kBAAkB,SAAS,wBAAwB,eAAe;AAClE;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;;AAEA;AACA;AACA,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd,kBAAkB,QAAQ;AAC1B;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;;AAEA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,WAAW;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,QAAQ,sBAAsB,QAAQ;AAC9D;AACA;AACA;AACA,wBAAwB,QAAQ,sBAAsB;AACtD;AACA;AACA;AACA,wBAAwB,QAAQ,sBAAsB;AACtD;AACA;AACA;AACA,wBAAwB,QAAQ,qBAAqB;AACrD,wBAAwB,OAAO,qBAAqB;AACpD;AACA;AACA;AACA,wBAAwB,OAAO,mBAAmB;AAClD,wBAAwB,QAAQ,mBAAmB;AACnD;AACA;AACA;AACA,wBAAwB,OAAO,gBAAgB;AAC/C,wBAAwB,QAAQ,gBAAgB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,YAAY;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,eAAe;AAC5B;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW,QAAQ,gBAAgB;AACnC,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;AACA;AACA;;AAEA;AACA,gBAAgB,cAAc;AAC9B,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA,2BAA2B,aAAa;AACxC,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA,uCAAuC,aAAa;AACpD,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA,qCAAqC,aAAa;AAClD,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,sBAAsB,cAAc,oBAAoB;AACnE;AACA;AACA;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;;AAEA;AACA;AACA,WAAW,SAAS,wBAAwB,eAAe;AAC3D;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,SAAS;AACpB;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,KAAK;AAClB,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,YAAY;AACvB,WAAW,KAAK;AAChB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,YAAY;AACvB,WAAW,KAAK;AAChB,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,SAAS;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,KAAK;AACL;;AAEA;;AAEA;;;;;;;;;;;;;AC/1DA;AACA;AACA;AACA;AACa;;AAEb,WAAW,mBAAO,CAAC,0CAAkB;AACrC,WAAW,mBAAO,CAAC,uDAAoB;AACvC,WAAW,mBAAO,CAAC,2EAA8B;AACjD,WAAW,mBAAO,CAAC,2EAA8B;AACjD,YAAY,mBAAO,CAAC,6EAA+B;;AAEnD;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;;AAEA;AACA,WAAW,OAAO;AAClB,WAAW,SAAS,uDAAuD;AAC3E,aAAa,KAAK;AAClB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;;AC5CA;AACA;AACA;AACA;AACa;;AAEb,WAAW,mBAAO,CAAC,0CAAkB;AACrC,aAAa,mBAAO,CAAC,qCAAW;AAChC,YAAY,mBAAO,CAAC,iDAAiB;AACrC,eAAe,mBAAO,CAAC,uDAAoB;AAC3C,cAAc,mBAAO,CAAC,qDAAmB;AACzC,aAAa,mBAAO,CAAC,mDAAkB;AACvC,YAAY,mBAAO,CAAC,yDAAqB;AACzC,iBAAiB,mBAAO,CAAC,+DAAwB;AACjD,oBAAoB,mBAAO,CAAC,qEAA2B;AACvD,kBAAkB,mBAAO,CAAC,iEAAyB;AACnD,gBAAgB,mBAAO,CAAC,6DAAuB;AAC/C,WAAW,mBAAO,CAAC,uDAAoB;AACvC,4BAA4B,mBAAO,CAAC,yFAAqC;AACzE,0BAA0B,mBAAO,CAAC,qFAAmC;AACrE,eAAe,mBAAO,CAAC,qDAAmB;;AAE1C;AACA;AACA,WAAW,OAAO;AAClB,WAAW,YAAY;AACvB,WAAW,WAAW;AACtB,WAAW,SAAS;AACpB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAW,KAAK;AAChB,WAAW,YAAY;AACvB,WAAW,KAAK;AAChB,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;;AAET;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,2DAA2D,kCAAkC;AAC7F;AACA,aAAa;;AAEb;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA,mDAAmD,uBAAuB,iBAAiB;AAC3F;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;;AAET;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;;AClQA;AACA;AACA;AACA;AACa;;AAEb,WAAW,mBAAO,CAAC,0CAAkB;AACrC,aAAa,mBAAO,CAAC,qCAAW;AAChC,cAAc,mBAAO,CAAC,qDAAmB;AACzC,aAAa,mBAAO,CAAC,mDAAkB;AACvC,cAAc,mBAAO,CAAC,qDAAmB;AACzC,mBAAmB,mBAAO,CAAC,+DAAwB;AACnD,eAAe,mBAAO,CAAC,qDAAmB;AAC1C;AACA,WAAW,mBAAO,CAAC,qDAAmB;;AAEtC;AACA,cAAc,mBAAO,CAAC,2DAAsB;AAC5C,cAAc,mBAAO,CAAC,2DAAsB;AAC5C,eAAe,mBAAO,CAAC,6DAAuB;AAC9C,4BAA4B,mBAAO,CAAC,yFAAqC;AACzE,0BAA0B,mBAAO,CAAC,qFAAmC;;AAErE;AACA,mBAAmB,mBAAO,CAAC,2EAA8B;AACzD,mBAAmB,mBAAO,CAAC,mEAA0B;AACrD,sBAAsB,mBAAO,CAAC,yEAA6B;AAC3D,kBAAkB,mBAAO,CAAC,iEAAyB;AACnD,oBAAoB,mBAAO,CAAC,qEAA2B;AACvD,gBAAgB,mBAAO,CAAC,6DAAuB;AAC/C,mBAAmB,mBAAO,CAAC,mEAA0B;AACrD,eAAe,mBAAO,CAAC,2DAAsB;AAC7C,iBAAiB,mBAAO,CAAC,+DAAwB;;AAEjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,8BAA8B;AAC9B;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,uCAAuC;AACvC;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,SAAS;AACT;;AAEA,+BAA+B,eAAe;;AAE9C;AACA;AACA,iBAAiB;AACjB,mBAAmB;AACnB,oBAAoB;AACpB,gBAAgB;AAChB;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;;AAEb;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;;AAEA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA,KAAK;;AAEL;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA,mDAAmD,uBAAuB,iBAAiB;AAC3F;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;;AAET;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AClXA;AACA;AACA;AACA;AACa;;AAEb,WAAW,mBAAO,CAAC,0CAAkB;AACrC,aAAa,mBAAO,CAAC,wCAAc;AACnC,cAAc,mBAAO,CAAC,wDAAsB;AAC5C,kBAAkB,mBAAO,CAAC,gDAAQ;;AAElC;AACA;AACA,gBAAgB;AAChB;AACA,WAAW,KAAK;AAChB,WAAW,QAAQ;AACnB,WAAW,KAAK;AAChB;AACA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA,cAAc;AACd;AACA;;AAEA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,YAAY;AACvB,aAAa,OAAO;AACpB;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB,0BAA0B,SAAS;AACnC,0BAA0B,WAAW;AACrC;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;;AAEA;;AAEA;;;;;;;;;;;;;AClIA;AACA;AACA;AACA;AACA;AACa;;AAEb,WAAW,mBAAO,CAAC,0CAAkB;AACrC,cAAc,mBAAO,CAAC,wDAAsB;AAC5C,eAAe,mBAAO,CAAC,0DAAuB;AAC9C,aAAa,mBAAO,CAAC,sDAAqB;AAC1C,eAAe,mBAAO,CAAC,0DAAuB;;AAE9C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe,KAAK;AACpB,eAAe,WAAW;AAC1B,iBAAiB,iBAAiB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,mBAAmB,WAAW;AAC9B,qBAAqB,OAAO;AAC5B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA,eAAe,KAAK;AACpB,eAAe,OAAO;AACtB,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,UAAU,YAAY;AACtB;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;;;;AC5IA;AACA;AACA;AACA;AACa;;AAEb,WAAW,mBAAO,CAAC,0CAAkB;AACrC,aAAa,mBAAO,CAAC,wCAAc;AACnC,eAAe,mBAAO,CAAC,0DAAuB;AAC9C,aAAa,mBAAO,CAAC,sDAAqB;AAC1C,cAAc,mBAAO,CAAC,wDAAsB;AAC5C,eAAe,mBAAO,CAAC,0DAAuB;AAC9C,kBAAkB,mBAAO,CAAC,gDAAQ;AAClC,2BAA2B,mBAAO,CAAC,kEAAiB;AACpD,aAAa,mBAAO,CAAC,0DAAuB;;AAE5C;;AAEA;AACA;AACA,gBAAgB;AAChB;AACA;AACA,WAAW,KAAK;AAChB,WAAW,QAAQ;AACnB,WAAW,KAAK;AAChB,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA,cAAc;AACd;AACA;;AAEA;AACA,cAAc;AACd;AACA;;AAEA;AACA,cAAc;AACd;AACA;;AAEA;AACA,cAAc;AACd;AACA;;AAEA;AACA,cAAc;AACd;AACA;;AAEA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW,YAAY;AACvB,aAAa,sBAAsB;AACnC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW;AACX,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,eAAe;AACf,cAAc;AACd,kBAAkB,OAAO;AACzB,kBAAkB,QAAQ;AAC1B,kBAAkB,KAAK;AACvB,kBAAkB,KAAK;AACvB,kBAAkB,qBAAqB;AACvC,kBAAkB,OAAO;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;;AAEA;AACA;AACA,cAAc;AACd,kBAAkB,YAAY;AAC9B,kBAAkB,OAAO;AACzB,kBAAkB,OAAO;AACzB,kBAAkB,OAAO;AACzB;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,cAAc;AACd,kBAAkB,YAAY;AAC9B,kBAAkB,OAAO;AACzB,kBAAkB,OAAO;AACzB,kBAAkB,OAAO;AACzB;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;;AAEA;;AAEA;AACA;AACA,cAAc;AACd,kBAAkB,YAAY;AAC9B,kBAAkB,OAAO;AACzB,kBAAkB,OAAO;AACzB,kBAAkB,OAAO;AACzB;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW,SAAS;AACpB;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;;;;AC9UA;AACA;AACA;AACA;AACa;;AAEb,aAAa,mBAAO,CAAC,wCAAc;AACnC,cAAc,mBAAO,CAAC,wDAAsB;AAC5C,mBAAmB,mBAAO,CAAC,kEAA2B;;AAEtD;AACA;AACA;AACA,WAAW,gBAAgB;AAC3B;AACA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA,cAAc;AACd;AACA;;AAEA;AACA,cAAc;AACd;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,MAAM;AACjB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA,UAAU,mBAAmB;AAC7B;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;;;;;;;;;;;;AC1JA;AACA;AACA;AACA;AACa;;AAEb,WAAW,mBAAO,CAAC,0CAAkB;AACrC,aAAa,mBAAO,CAAC,wCAAc;AACnC,aAAa,mBAAO,CAAC,sDAAqB;AAC1C,cAAc,mBAAO,CAAC,wDAAsB;AAC5C,kBAAkB,mBAAO,CAAC,gDAAQ;AAClC,uBAAuB,mBAAO,CAAC,0DAAa;AAC5C,aAAa,mBAAO,CAAC,0DAAuB;;AAE5C;AACA;AACA,gBAAgB;AAChB;AACA;AACA,WAAW,KAAK;AAChB,WAAW,QAAQ;AACnB,WAAW,KAAK;AAChB;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,YAAY;AACvB,aAAa,wBAAwB;AACrC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,cAAc;AACd,kBAAkB,QAAQ;AAC1B,kBAAkB,OAAO;AACzB,kBAAkB,OAAO;AACzB,kBAAkB,OAAO;AACzB,kBAAkB,SAAS;AAC3B,kBAAkB,eAAe;AACjC;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd,kBAAkB,QAAQ;AAC1B,kBAAkB,OAAO;AACzB,kBAAkB,OAAO;AACzB,kBAAkB,OAAO;AACzB;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,cAAc;AACd,kBAAkB,SAAS;AAC3B,kBAAkB,KAAK;AACvB,kBAAkB,KAAK;AACvB,kBAAkB,OAAO;AACzB,mBAAmB,KAAK;AACxB,mBAAmB,KAAK;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd,kBAAkB,QAAQ;AAC1B,kBAAkB,OAAO;AACzB,kBAAkB,OAAO;AACzB,kBAAkB,OAAO;AACzB;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA,cAAc;AACd,kBAAkB,QAAQ;AAC1B,kBAAkB,OAAO;AACzB,kBAAkB,OAAO;AACzB,kBAAkB,OAAO;AACzB;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;;;;ACzRA;AACA;AACA;AACA;AACa;;AAEb,WAAW,mBAAO,CAAC,0CAAkB;AACrC,aAAa,mBAAO,CAAC,wCAAc;AACnC,eAAe,mBAAO,CAAC,0DAAuB;AAC9C,cAAc,mBAAO,CAAC,wDAAsB;AAC5C,mBAAmB,mBAAO,CAAC,kEAA2B;;AAEtD;AACA;AACA;AACA,WAAW,YAAY;AACvB;AACA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA,cAAc;AACd;AACA;;AAEA;AACA,cAAc;AACd;AACA;;AAEA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,YAAY;AACvB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,MAAM;AACjB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA,UAAU,UAAU;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;;;;;AChRA;AACA;AACA;AACA;AACa;;AAEb,WAAW,mBAAO,CAAC,0CAAkB;AACrC,aAAa,mBAAO,CAAC,wCAAc;AACnC,eAAe,mBAAO,CAAC,0DAAuB;AAC9C,cAAc,mBAAO,CAAC,wDAAsB;AAC5C,aAAa,mBAAO,CAAC,sDAAqB;AAC1C,kBAAkB,mBAAO,CAAC,gDAAQ;AAClC,yBAAyB,mBAAO,CAAC,8DAAe;AAChD,aAAa,mBAAO,CAAC,0DAAuB;;AAE5C;AACA;AACA,gBAAgB;AAChB;AACA;AACA,WAAW,KAAK;AAChB,WAAW,QAAQ;AACnB,WAAW,KAAK;AAChB;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,YAAY;AACvB,aAAa,sBAAsB;AACnC;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,cAAc;AACd,kBAAkB,KAAK;AACvB,kBAAkB,OAAO;AACzB,kBAAkB,OAAO;AACzB,kBAAkB,OAAO;AACzB,kBAAkB,SAAS;AAC3B,kBAAkB,eAAe;AACjC;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd,kBAAkB,KAAK;AACvB,kBAAkB,OAAO;AACzB,kBAAkB,OAAO;AACzB,kBAAkB,OAAO;AACzB;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA,cAAc;AACd,kBAAkB,SAAS;AAC3B,kBAAkB,KAAK;AACvB,kBAAkB,KAAK;AACvB,kBAAkB,OAAO;AACzB,mBAAmB,KAAK;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd,kBAAkB,KAAK;AACvB,kBAAkB,OAAO;AACzB,kBAAkB,OAAO;AACzB,kBAAkB,OAAO;AACzB;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA,cAAc;AACd,kBAAkB,KAAK;AACvB,kBAAkB,OAAO;AACzB,kBAAkB,OAAO;AACzB,kBAAkB,OAAO;AACzB;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;;;;ACrRA;AACA;AACA;AACA;AACa;;AAEb,WAAW,mBAAO,CAAC,0CAAkB;AACrC,aAAa,mBAAO,CAAC,wCAAc;AACnC,cAAc,mBAAO,CAAC,wDAAsB;AAC5C,eAAe,mBAAO,CAAC,0DAAuB;AAC9C,mBAAmB,mBAAO,CAAC,kEAA2B;;AAEtD;AACA;AACA,WAAW,cAAc;AACzB;AACA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA,cAAc;AACd;AACA;;AAEA;AACA,cAAc;AACd;AACA;;AAEA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,cAAc,YAAY;AAC1B;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;;;;;AC5JA;AACA;AACA;AACA;AACa;;AAEb,WAAW,mBAAO,CAAC,0CAAkB;AACrC,cAAc,mBAAO,CAAC,qDAAmB;AACzC,eAAe,mBAAO,CAAC,uDAAoB;AAC3C,aAAa,mBAAO,CAAC,qCAAW;;AAEhC;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,WAAW,YAAY;AACvB;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA,cAAc;AACd;AACA;;AAEA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA,WAAW,WAAW;AACtB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,WAAW;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,cAAc;AACd,kBAAkB,YAAY;AAC9B,kBAAkB,WAAW;AAC7B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,WAAW;AACtB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,kBAAkB;AAClB,sBAAsB,YAAY;AAClC,sBAAsB,WAAW;AACjC;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc;AACd,kBAAkB,YAAY;AAC9B,kBAAkB,WAAW;AAC7B;AACA;AACA;;AAEA;AACA;AACA,WAAW,WAAW;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB,sBAAsB,YAAY;AAClC,sBAAsB,WAAW;AACjC;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kBAAkB;AAClB,sBAAsB,YAAY;AAClC,sBAAsB,WAAW;AACjC;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,WAAW,WAAW;AACtB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;;;;;;;;;;;;;AClQA;AACA;AACA;AACA;AACa;;AAEb,WAAW,mBAAO,CAAC,0CAAkB;AACrC,aAAa,mBAAO,CAAC,wCAAc;AACnC,eAAe,mBAAO,CAAC,0DAAuB;AAC9C,cAAc,mBAAO,CAAC,wDAAsB;;AAE5C;AACA;AACA,gBAAgB;AAChB;AACA,WAAW,KAAK;AAChB,WAAW,MAAM;AACjB,WAAW,KAAK;AAChB;AACA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA,cAAc;AACd;AACA;;AAEA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA,sBAAsB;AACtB,0BAA0B,SAAS;AACnC,0BAA0B,WAAW;AACrC;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;;AAEA;;AAEA;;;;;;;;;;;;;AC1FA;AACA;AACA;AACA;AACA;AACa;;AAEb,WAAW,mBAAO,CAAC,0CAAkB;AACrC,aAAa,mBAAO,CAAC,sDAAqB;AAC1C,cAAc,mBAAO,CAAC,wDAAsB;AAC5C,eAAe,mBAAO,CAAC,0DAAuB;AAC9C,eAAe,mBAAO,CAAC,0DAAuB;AAC9C;;AAEA;AACA;AACA,WAAW,MAAM;AACjB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,OAAO;AACtB,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA,cAAc,YAAY;AAC1B;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,eAAe,OAAO;AACtB,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;;;;ACxGA;AACA;AACA;AACA;AACa;;AAEb,WAAW,mBAAO,CAAC,0CAAkB;;AAErC,aAAa,mBAAO,CAAC,wCAAc;AACnC,eAAe,mBAAO,CAAC,0DAAuB;AAC9C,YAAY,mBAAO,CAAC,oDAAoB;AACxC,cAAc,mBAAO,CAAC,wDAAsB;AAC5C,eAAe,mBAAO,CAAC,0DAAuB;AAC9C,sBAAsB,mBAAO,CAAC,8CAAQ;AACtC,YAAY,mBAAO,CAAC,gEAAiB;AACrC,aAAa,mBAAO,CAAC,0DAAuB;;AAE5C;;AAEA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,MAAM;AACjB,WAAW,KAAK;AAChB,WAAW,QAAQ;AACnB;AACA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA,cAAc;AACd;AACA;;AAEA;AACA,cAAc;AACd;AACA;;AAEA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA,cAAc;AACd;AACA;;AAEA;AACA,cAAc;AACd;AACA;;AAEA;AACA,cAAc;AACd;AACA;;AAEA;AACA,cAAc;AACd;AACA;;AAEA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,WAAW;AACX,WAAW,OAAO;AAClB;AACA;AACA;AACA,eAAe;AACf,cAAc;AACd,kBAAkB,QAAQ;AAC1B,kBAAkB,KAAK;AACvB,kBAAkB,KAAK;AACvB,kBAAkB,kBAAkB;AACpC,kBAAkB,OAAO;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA,WAAW;AACX,WAAW,OAAO;AAClB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,eAAe;AACf,cAAc;AACd,kBAAkB,OAAO;AACzB,kBAAkB,OAAO;AACzB,kBAAkB,KAAK;AACvB;AACA;AACA;;AAEA;AACA;AACA,WAAW;AACX,WAAW,OAAO;AAClB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,eAAe;AACf,cAAc;AACd,kBAAkB,OAAO;AACzB,kBAAkB,OAAO;AACzB,kBAAkB,KAAK;AACvB;AACA;AACA;;AAEA;AACA;AACA,WAAW;AACX,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,eAAe;AACf,cAAc;AACd,kBAAkB,OAAO;AACzB,kBAAkB,OAAO;AACzB,kBAAkB,KAAK;AACvB;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW;AACX,WAAW,WAAW;AACtB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA,WAAW;AACX,WAAW,WAAW;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,SAAS;AACpB;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA,WAAW,YAAY;AACvB,aAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;;;;;;;;;;;;AC/VA;AACA;AACA;AACA;AACa;;AAEb,iBAAiB,mBAAO,CAAC,gDAAS;;AAElC;AACA;AACA,WAAW,cAAc;AACzB;AACA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AC3EA,iBAAiB,mBAAO,CAAC,kFAAyF;AAClH,iEAAiE;AACjE;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,+RAA+R,GAAG,6BAA6B,oBAAoB,SAAS,qBAAqB,QAAQ,uBAAuB;AAChZ;AACA;AACA,QAAQ;AACR;AACA,QAAQ;AACR,CAAC;AACD,qFAAqF;AACrF;AACA;AACA;AACA;AACA;;AAEA;AACA,sNAAsN,6BAA6B,oBAAoB,SAAS,qBAAqB,QAAQ,uBAAuB;AACpU;AACA;AACA,QAAQ;AACR;AACA,QAAQ;AACR;AACA,QAAQ;AACR;AACA,QAAQ;AACR;AACA,QAAQ;AACR;AACA,QAAQ;AACR,4MAA4M,wBAAwB,oBAAoB,SAAS,qBAAqB,QAAQ,uBAAuB;AACrT,QAAQ;AACR,wNAAwN,8BAA8B,oBAAoB,SAAS,qBAAqB,QAAQ,uBAAuB;AACvU,QAAQ;AACR,gNAAgN,0BAA0B,oBAAoB,SAAS,qBAAqB,QAAQ,uBAAuB;AAC3T;AACA,sNAAsN,6BAA6B,oBAAoB,SAAS,qBAAqB,QAAQ,uBAAuB;AACpU;AACA,yHAAyH,qBAAqB,+FAA+F,SAAS,qBAAqB,QAAQ,wBAAwB;AAC3S;AACA,sNAAsN,6BAA6B,oBAAoB,SAAS,sBAAsB,QAAQ,wBAAwB;AACtU;AACA;AACA,QAAQ,SAAS;AACjB,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,qMAAqM,UAAU,8BAA8B,oBAAoB,SAAS,sBAAsB,QAAQ,wBAAwB;AAChU;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,iMAAiM,UAAU,4BAA4B,oBAAoB,SAAS,sBAAsB,QAAQ,wBAAwB;AAC1T;AACA,CAAC;AACD,qFAAqF;AACrF;AACA;AACA;AACA;AACA;;AAEA;AACA,sNAAsN,6BAA6B,oBAAoB,SAAS,qBAAqB,QAAQ,uBAAuB;AACpU;AACA,wMAAwM,sBAAsB,oBAAoB,SAAS,qBAAqB,QAAQ,uBAAuB;AAC/S,QAAQ;AACR,8MAA8M,yBAAyB,oBAAoB,SAAS,qBAAqB,QAAQ,uBAAuB;AACxT,QAAQ;AACR,+HAA+H,qBAAqB,+FAA+F,SAAS,oBAAoB,QAAQ,wBAAwB;AAChT;AACA,CAAC,gBAAgB,E;;;;;;;;;;;;AC5FjB;AACA;AACA;AACA;AACa;;AAEb,WAAW,mBAAO,CAAC,0CAAkB;AACrC,aAAa,mBAAO,CAAC,wCAAc;AACnC,cAAc,mBAAO,CAAC,wDAAsB;AAC5C,eAAe,mBAAO,CAAC,0DAAuB;AAC9C,aAAa,mBAAO,CAAC,0DAAuB;AAC5C,WAAW,mBAAO,CAAC,qDAAa;AAChC;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB;AACA,WAAW,QAAQ;AACnB,WAAW,MAAM;AACjB;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA,cAAc;AACd;AACA;;AAEA;AACA,cAAc;AACd;AACA;AACA;AACA,KAAK;;AAEL;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA,qCAAqC;;AAErC;AACA;;AAEA;AACA;AACA,aAAa,YAAY;AACzB;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,aAAa;AAC1B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU;AACV,cAAc,YAAY;AAC1B,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,QAAQ;AACtB,cAAc,QAAQ;AACtB;;AAEA;AACA;AACA,WAAW,mBAAmB;AAC9B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,SAAS;AACpB;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA,WAAW,MAAM;AACjB,aAAa,OAAO;AACpB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;;;;AC/cA;AACA;AACA;AACA;AACa;;AAEb,WAAW,mBAAO,CAAC,0CAAkB;;AAErC,aAAa,mBAAO,CAAC,wCAAc;AACnC,cAAc,mBAAO,CAAC,wDAAsB;AAC5C,eAAe,mBAAO,CAAC,0DAAuB;AAC9C,sBAAsB,mBAAO,CAAC,8CAAQ;AACtC,qBAAqB,mBAAO,CAAC,wDAAa;AAC1C,aAAa,mBAAO,CAAC,0DAAuB;;AAE5C;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,MAAM;AACjB,WAAW,KAAK;AAChB;AACA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA,cAAc;AACd;AACA;;AAEA;AACA,cAAc;AACd;AACA;;AAEA;AACA,cAAc;AACd;AACA;;AAEA;AACA,cAAc;AACd;AACA;;AAEA;AACA,cAAc;AACd;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW;AACX,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,cAAc;AACd,kBAAkB,SAAS;AAC3B,kBAAkB,KAAK;AACvB,kBAAkB,KAAK;AACvB,kBAAkB,OAAO;AACzB,mBAAmB,KAAK;AACxB,mBAAmB,KAAK;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA,WAAW,YAAY;AACvB,aAAa,YAAY;AACzB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW,YAAY;AACvB,aAAa,YAAY;AACzB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW;AACX,WAAW,YAAY;AACvB,aAAa,cAAc;AAC3B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA,uBAAuB;AAC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CA,cAAc;AACd;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;;;AClMA;AACA;AACA;AACA;AACa;;AAEb,WAAW,mBAAO,CAAC,0CAAkB;;AAErC,aAAa,mBAAO,CAAC,wCAAc;AACnC,eAAe,mBAAO,CAAC,0DAAuB;AAC9C,cAAc,mBAAO,CAAC,wDAAsB;AAC5C,sBAAsB,mBAAO,CAAC,8CAAQ;AACtC,uBAAuB,mBAAO,CAAC,4DAAe;AAC9C,aAAa,mBAAO,CAAC,0DAAuB;;AAE5C,aAAa,mBAAO,CAAC,sDAAqB;;AAE1C;AACA;AACA,WAAW,KAAK;AAChB,WAAW,MAAM;AACjB,WAAW,KAAK;AAChB;AACA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA,cAAc;AACd;AACA;;AAEA;AACA,cAAc;AACd;AACA;;AAEA;AACA,cAAc;AACd;AACA;;AAEA;AACA,cAAc;AACd;AACA;;AAEA;AACA,cAAc;AACd;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW;AACX,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA,cAAc;AACd,kBAAkB,SAAS;AAC3B,kBAAkB,KAAK;AACvB,kBAAkB,KAAK;AACvB,kBAAkB,OAAO;AACzB,mBAAmB,KAAK;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA,WAAW;AACX,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,eAAe;AACf,cAAc;AACd,kBAAkB,OAAO;AACzB,kBAAkB,OAAO;AACzB,kBAAkB,KAAK;AACvB,kBAAkB,YAAY;AAC9B,kBAAkB,SAAS;AAC3B;AACA;AACA;;AAEA;AACA,WAAW;AACX,WAAW,OAAO;AAClB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,eAAe;AACf,cAAc;AACd,kBAAkB,OAAO;AACzB,kBAAkB,OAAO;AACzB,kBAAkB,KAAK;AACvB;AACA;AACA;;AAEA;AACA,WAAW;AACX,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,eAAe;AACf,cAAc;AACd,kBAAkB,OAAO;AACzB,kBAAkB,OAAO;AACzB,kBAAkB,KAAK;AACvB;AACA;;AAEA;AACA;;AAEA;;AAEA;;;;;;;;;;;;;AC7NA;AACA;AACA;AACA;AACa;;AAEb,WAAW,mBAAO,CAAC,0CAAkB;;AAErC,aAAa,mBAAO,CAAC,wCAAc;AACnC,cAAc,mBAAO,CAAC,wDAAsB;AAC5C,iBAAiB,mBAAO,CAAC,gDAAS;;AAElC;AACA;AACA,WAAW,YAAY;AACvB;AACA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA,cAAc;AACd;AACA;;AAEA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA,KAAK;;AAEL;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;;;AClHA;AACA;AACA;AACA;AACa;;AAEb,WAAW,mBAAO,CAAC,0CAAkB;AACrC,aAAa,mBAAO,CAAC,wCAAc;AACnC,cAAc,mBAAO,CAAC,wDAAsB;;AAE5C;AACA;AACA,gBAAgB;AAChB;AACA,WAAW,KAAK;AAChB,WAAW,SAAS;AACpB,WAAW,KAAK;AAChB;AACA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA,cAAc;AACd;AACA;;AAEA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,YAAY;AACvB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW,OAAO,gCAAgC;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,kBAAkB;AAClB,sBAAsB,SAAS;AAC/B,sBAAsB,WAAW;AACjC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;;AAEA;;AAEA;;;;;;;;;;;;;ACvGA;AACA;AACA;AACA;AACa;;AAEb,WAAW,mBAAO,CAAC,0CAAkB;AACrC,aAAa,mBAAO,CAAC,wCAAc;AACnC,cAAc,mBAAO,CAAC,wDAAsB;;AAE5C;AACA;AACA,gBAAgB;AAChB;AACA,WAAW,KAAK;AAChB,WAAW,QAAQ;AACnB,WAAW,KAAK;AAChB;AACA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA,cAAc;AACd;AACA;;AAEA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,YAAY;AACvB,aAAa,OAAO;AACpB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW,OAAO,gCAAgC;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd,kBAAkB,OAAO;AACzB;AACA;AACA;AACA,KAAK;AACL;;AAEA;;AAEA;;;;;;;;;;;;;ACzFA;AACA;AACA;AACA;AACa;;AAEb,WAAW,mBAAO,CAAC,0CAAkB;AACrC,aAAa,mBAAO,CAAC,sDAAqB;AAC1C,eAAe,mBAAO,CAAC,0DAAuB;AAC9C,eAAe,mBAAO,CAAC,0DAAuB;AAC9C,YAAY,mBAAO,CAAC,oDAAoB;AACxC,aAAa,mBAAO,CAAC,0DAAuB;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA,eAAe,KAAK;AACpB,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,mBAAmB,WAAW;AAC9B,mBAAmB,OAAO;AAC1B,qBAAqB,OAAO;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;;AAEL;AACA;AACA,eAAe,KAAK;AACpB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,eAAe,wBAAwB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;;;;AC/IA;AACA;AACA;AACA;AACa;;AAEb,WAAW,mBAAO,CAAC,0CAAkB;AACrC,aAAa,mBAAO,CAAC,wCAAc;AACnC,YAAY,mBAAO,CAAC,oDAAoB;AACxC,eAAe,mBAAO,CAAC,0DAAuB;AAC9C,cAAc,mBAAO,CAAC,wDAAsB;AAC5C,eAAe,mBAAO,CAAC,0DAAuB;AAC9C,aAAa,mBAAO,CAAC,sDAAqB;AAC1C,wBAAwB,mBAAO,CAAC,+DAAiB;AACjD,aAAa,mBAAO,CAAC,0DAAuB;AAC5C,eAAe,mBAAO,CAAC,6CAAQ;;AAE/B;;AAEA;AACA;AACA,gBAAgB;AAChB;AACA;AACA,WAAW,KAAK;AAChB,WAAW,SAAS;AACpB,WAAW,KAAK;AAChB,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA,cAAc;AACd;AACA;;AAEA;AACA,cAAc;AACd;AACA;;AAEA;AACA,cAAc;AACd;AACA;;AAEA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,WAAW,YAAY;AACvB,aAAa,eAAe;AAC5B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,cAAc;AACd,kBAAkB,KAAK;AACvB,kBAAkB,WAAW;AAC7B,kBAAkB,OAAO;AACzB,kBAAkB,OAAO;AACzB,kBAAkB,OAAO;AACzB,kBAAkB,OAAO;AACzB,kBAAkB,OAAO;AACzB;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd,kBAAkB,KAAK;AACvB,kBAAkB,WAAW;AAC7B,kBAAkB,OAAO;AACzB,kBAAkB,OAAO;AACzB,kBAAkB,OAAO;AACzB,kBAAkB,OAAO;AACzB,kBAAkB,OAAO;AACzB;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd,kBAAkB,QAAQ;AAC1B,kBAAkB,KAAK;AACvB,kBAAkB,KAAK;AACvB,kBAAkB,kBAAkB;AACpC,kBAAkB,OAAO;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA,cAAc;AACd,kBAAkB,KAAK;AACvB,kBAAkB,WAAW;AAC7B,kBAAkB,OAAO;AACzB,kBAAkB,OAAO;AACzB,kBAAkB,OAAO;AACzB,kBAAkB,OAAO;AACzB,kBAAkB,OAAO;AACzB,kBAAkB,SAAS;AAC3B;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA,WAAW,WAAW;AACtB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW,SAAS;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;;;;AC1YA;AACA;AACA;AACA;AACa;;AAEb,aAAa,mBAAO,CAAC,sDAAqB;AAC1C,eAAe,mBAAO,CAAC,0DAAuB;AAC9C,aAAa,mBAAO,CAAC,wCAAc;AACnC,cAAc,mBAAO,CAAC,wDAAsB;AAC5C,mBAAmB,mBAAO,CAAC,kEAA2B;AACtD,YAAY,mBAAO,CAAC,sDAAqB;AACzC,aAAa,mBAAO,CAAC,0DAAuB;AAC5C;;AAEA;AACA;AACA;AACA,WAAW,aAAa;AACxB;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,cAAc;AACd;AACA;;AAEA;AACA,cAAc;AACd;AACA;;AAEA;AACA,cAAc;AACd;AACA;;AAEA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA,WAAW,KAAK;AAChB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,SAAS;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,OAAO;AACtB,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;;;AChSA;AACA;AACA;AACA;AACa;;AAEb,WAAW,mBAAO,CAAC,0CAAkB;AACrC,aAAa,mBAAO,CAAC,wCAAc;AACnC,eAAe,mBAAO,CAAC,0DAAuB;AAC9C,cAAc,mBAAO,CAAC,wDAAsB;AAC5C,eAAe,mBAAO,CAAC,0DAAuB;AAC9C,aAAa,mBAAO,CAAC,0DAAuB;AAC5C,eAAe,mBAAO,CAAC,6CAAQ;AAC/B,oBAAoB,mBAAO,CAAC,uDAAa;;AAEzC;AACA;AACA,gBAAgB;AAChB;AACA;AACA,WAAW,KAAK;AAChB,WAAW,SAAS;AACpB,WAAW,KAAK;AAChB;AACA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA,cAAc;AACd;AACA;;AAEA;AACA,cAAc;AACd;AACA;;AAEA;AACA,cAAc;AACd;AACA;;AAEA;AACA,cAAc;AACd;AACA;;AAEA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,YAAY;AACvB,aAAa,eAAe;AAC5B;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW,YAAY;AACvB,aAAa,eAAe;AAC5B;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA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ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,sDAAsD,aAAa;AACnE,KAAK;AACL;;AAEA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,mBAAmB;AACrE;AACA;;AAEA;;;;;;;;;;;;;;ACxPA;AACA;AACA;AACA;AACa;;AAEb,WAAW,mBAAO,CAAC,0CAAkB;AACrC,aAAa,mBAAO,CAAC,wCAAc;AACnC,eAAe,mBAAO,CAAC,0DAAuB;AAC9C,cAAc,mBAAO,CAAC,wDAAsB;AAC5C,aAAa,mBAAO,CAAC,0DAAuB;AAC5C,aAAa,mBAAO,CAAC,sDAAqB;AAC1C,eAAe,mBAAO,CAAC,6CAAQ;AAC/B,sBAAsB,mBAAO,CAAC,2DAAe;;AAE7C;AACA;AACA,gBAAgB;AAChB;AACA;AACA,WAAW,KAAK;AAChB,WAAW,SAAS;AACpB,WAAW,KAAK;AAChB;AACA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA,cAAc;AACd;AACA;;AAEA;AACA,cAAc;AACd;AACA;;AAEA;AACA,cAAc;AACd;AACA;;AAEA;AACA,cAAc;AACd;AACA;;AAEA;AACA,cAAc;AACd;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAW,YAAY;AACvB,aAAa,eAAe;AAC5B;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,cAAc;AACd,kBAAkB,YAAY;AAC9B,kBAAkB,KAAK;AACvB,kBAAkB,WAAW;AAC7B,kBAAkB,OAAO;AACzB,kBAAkB,OAAO;AACzB,kBAAkB,OAAO;AACzB,kBAAkB,OAAO;AACzB,kBAAkB,OAAO;AACzB,kBAAkB,OAAO;AACzB,kBAAkB,SAAS;AAC3B;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd,kBAAkB,YAAY;AAC9B,kBAAkB,KAAK;AACvB,kBAAkB,WAAW;AAC7B,kBAAkB,OAAO;AACzB,kBAAkB,OAAO;AACzB,kBAAkB,OAAO;AACzB,kBAAkB,OAAO;AACzB,kBAAkB,OAAO;AACzB,kBAAkB,OAAO;AACzB;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA,cAAc;AACd,kBAAkB,SAAS;AAC3B,kBAAkB,KAAK;AACvB,kBAAkB,KAAK;AACvB,kBAAkB,OAAO;AACzB,mBAAmB,KAAK;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA,WAAW,WAAW;AACtB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,cAAc;AACd,kBAAkB,YAAY;AAC9B,kBAAkB,KAAK;AACvB,kBAAkB,WAAW;AAC7B,kBAAkB,OAAO;AACzB,kBAAkB,OAAO;AACzB,kBAAkB,OAAO;AACzB,kBAAkB,OAAO;AACzB,kBAAkB,OAAO;AACzB,kBAAkB,OAAO;AACzB,kBAAkB,SAAS;AAC3B,kBAAkB,SAAS;AAC3B;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;;;;AC7TA;AACA;AACA;AACA;AACa;;AAEb,WAAW,mBAAO,CAAC,0CAAkB;AACrC,aAAa,mBAAO,CAAC,wCAAc;AACnC,cAAc,mBAAO,CAAC,wDAAsB;AAC5C,mBAAmB,mBAAO,CAAC,kEAA2B;AACtD,YAAY,mBAAO,CAAC,sDAAqB;AACzC,eAAe,mBAAO,CAAC,0DAAuB;;AAE9C;AACA;AACA;AACA,WAAW,WAAW;AACtB;AACA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA,cAAc;AACd;AACA;;AAEA;AACA,cAAc;AACd;AACA;;AAEA;AACA,cAAc;AACd;AACA;;AAEA;AACA,cAAc;AACd;AACA;;AAEA;AACA,cAAc;AACd;AACA;;AAEA;AACA,cAAc;AACd;AACA;;AAEA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;;;;;;;;;;;;;;ACxMA;AACA;AACA;AACA;AACA;AACa;;AAEb,WAAW,mBAAO,CAAC,0CAAkB;AACrC,aAAa,mBAAO,CAAC,uDAAoB;AACzC,eAAe,mBAAO,CAAC,uDAAoB;AAC3C,YAAY,mBAAO,CAAC,iDAAiB;AACrC,YAAY,mBAAO,CAAC,iDAAiB;;AAErC;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,SAAS;AACtB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA,4BAA4B;AAC5B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,aAAa,KAAK;AAClB;AACA;AACA;AACA;;AAEA;AACA,aAAa,KAAK;AAClB;AACA;AACA;AACA;;AAEA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,SAAS;AACpB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,WAAW,SAAS;AACpB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;;;;AC3aA;AACA;AACA;AACA;AACa;;AAEb,WAAW,mBAAO,CAAC,0CAAkB;AACrC,eAAe,mBAAO,CAAC,0DAAuB;;AAE9C;;AAEA;AACA;AACA;AACA,WAAW,SAAS;AACpB;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA,cAAc;AACd;AACA;;AAEA;AACA,cAAc;AACd;AACA;;AAEA;AACA,cAAc;AACd;AACA;;AAEA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,WAAW,SAAS;AACpB,aAAa,kBAAkB;AAC/B;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,SAAS;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,2BAA2B;AACtC,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;;;;AC9MA;AACA;AACA;AACA;AACa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;;AC1HA;AACA;AACA;AACA;AACa;;AAEb,WAAW,mBAAO,CAAC,0CAAkB;AACrC,oBAAoB,mBAAO,CAAC,8CAAY;AACxC,kBAAkB,mBAAO,CAAC,oDAAe;AACzC,aAAa,mBAAO,CAAC,mDAAkB;;AAEvC;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;;AAEA;AACA,cAAc;AACd;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,iBAAiB;AAC9B;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,eAAe;AAC5B;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;;;;;;;;;;;;;AChGA;AACA;AACA;AACA;AACa;;AAEb;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;;AC9PA;AACA;AACA;AACA;AACa;;AAEb,WAAW,mBAAO,CAAC,0CAAkB;AACrC,aAAa,mBAAO,CAAC,qCAAW;AAChC,cAAc,mBAAO,CAAC,qDAAmB;AACzC,iBAAiB,mBAAO,CAAC,2DAAsB;AAC/C,WAAW,mBAAO,CAAC,qCAAQ;;AAE3B;AACA;AACA;AACA,aAAa;AACb,WAAW,YAAY;AACvB,WAAW,MAAM;AACjB;AACA;AACA;;AAEA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc,WAAW;AACzB;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA,cAAc;AACd;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,cAAc;AACzB;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;;;;;;;;;;;;AC3FA;AACA;AACA;AACA;AACa;;AAEb,WAAW,mBAAO,CAAC,0CAAkB;AACrC,aAAa,mBAAO,CAAC,wCAAc;AACnC,eAAe,mBAAO,CAAC,0DAAuB;AAC9C,cAAc,mBAAO,CAAC,wDAAsB;AAC5C,aAAa,mBAAO,CAAC,0DAAuB;AAC5C,WAAW,mBAAO,CAAC,2EAA6B;AAChD,WAAW,mBAAO,CAAC,sCAAS;AAC5B,cAAc,mBAAO,CAAC,yDAAuB;AAC7C,qBAAqB,mBAAO,CAAC,+DAAkB;AAC/C;;AAEA;AACA;AACA,aAAa;AACb,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,WAAW,YAAY;AACvB,WAAW,WAAW;AACtB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA,cAAc;AACd;AACA;;AAEA;AACA,cAAc;AACd;AACA;AACA;AACA,aAAa,kEAAkE;AAC/E,aAAa;AACb;AACA,KAAK;;AAEL;AACA,cAAc;AACd;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;;AAEL;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,UAAU;AACV;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,eAAe;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW,YAAY;AACvB,WAAW,eAAe;AAC1B,WAAW,MAAM;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;;AAEA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,KAAK;AACL;;AAEA;AACA;AACA,WAAW,MAAM;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,kCAAkC;AACxF;AACA,aAAa;AACb,SAAS;AACT,KAAK;AACL;;AAEA;AACA;AACA,WAAW,MAAM;AACjB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;;;;ACrVA;AACA;AACA;AACA;AACa;;AAEb;AACA;AACA,WAAW,mBAAO,CAAC,0CAAkB;AACrC,aAAa,mBAAO,CAAC,wCAAc;AACnC,eAAe,mBAAO,CAAC,0DAAuB;AAC9C,cAAc,mBAAO,CAAC,wDAAsB;AAC5C,WAAW,mBAAO,CAAC,8CAAiB;AACpC,oBAAoB,mBAAO,CAAC,oEAA4B;AACxD,aAAa,mBAAO,CAAC,sDAAqB;AAC1C,WAAW,mBAAO,CAAC,yEAA4B;;AAE/C;AACA;AACA,aAAa;AACb,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB;AACA,WAAW,OAAO;AAClB;AACA,WAAW,YAAY;AACvB,WAAW,MAAM;AACjB;AACA;AACA;;AAEA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA,cAAc;AACd;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA,WAAW,WAAW;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,WAAW,WAAW;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW,YAAY;AACvB,WAAW,YAAY;AACvB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,0BAA0B;;AAE1B;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,YAAY;AACzB;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,MAAM;AACjB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;;;;AC5RA;AACA;AACA;AACA;AACa;;AAEb,WAAW,mBAAO,CAAC,0CAAkB;AACrC,aAAa,mBAAO,CAAC,wCAAc;AACnC,aAAa,mBAAO,CAAC,yDAAwB;AAC7C,cAAc,mBAAO,CAAC,wDAAsB;AAC5C,WAAW,mBAAO,CAAC,8CAAiB;AACpC,cAAc,mBAAO,CAAC,4CAAY;AAClC,eAAe,mBAAO,CAAC,6FAAsC;AAC7D,mBAAmB,mBAAO,CAAC,6GAA8C;AACzE;AACA;;AAEA;AACA;AACA,aAAa;AACb,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,eAAe;AAC1B;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA,6CAA6C;AAC7C;;AAEA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW,MAAM;AACjB,aAAa,OAAO;AACpB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,OAAO;AAClB,WAAW,MAAM;AACjB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;;AAEA;;;;;;;;;;;;;ACnLA;AACA;AACA;AACA;AACa;;AAEb,WAAW,mBAAO,CAAC,8CAAiB;AACpC,oBAAoB,mBAAO,CAAC,oEAA4B;AACxD,WAAW,mBAAO,CAAC,0CAAkB;AACrC,iBAAiB,mBAAO,CAAC,wCAAiB;AAC1C,eAAe,mBAAO,CAAC,0DAAuB;AAC9C,aAAa,mBAAO,CAAC,wCAAc;AACnC,eAAe,mBAAO,CAAC,0DAAuB;AAC9C,cAAc,mBAAO,CAAC,wDAAsB;AAC5C,aAAa,mBAAO,CAAC,sDAAqB;AAC1C,eAAe,mBAAO,CAAC,0DAAuB;AAC9C,WAAW,mBAAO,CAAC,2GAA6C;AAChE;AACA;;AAEA;AACA;AACA,aAAa;AACb,WAAW,YAAY;AACvB,WAAW,iBAAiB;AAC5B,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,WAAW,WAAW;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,WAAW;AACtB;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA,WAAW,YAAY;AACvB,aAAa,QAAQ;AACrB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW,YAAY;AACvB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW,YAAY;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,YAAY;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,YAAY;AACvB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW,YAAY;AACvB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW,YAAY;AACvB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,WAAW,YAAY;AACvB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,0DAA0D;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,yDAAyD;AACpE,aAAa,oBAAoB;AACjC;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL,cAAc,uBAAuB;AACrC;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW,oBAAoB;AAC/B,aAAa,OAAO;AACpB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,mBAAmB;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA,iBAAiB,OAAO;AACxB,kBAAkB,OAAO;AACzB,kBAAkB,OAAO;AACzB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU,OAAO;AACjB,UAAU,OAAO;AACjB,UAAU,OAAO;AACjB,UAAU,OAAO;AACjB,UAAU,OAAO;AACjB,YAAY,cAAc;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA,iBAAiB,OAAO;AACxB,kBAAkB,OAAO;AACzB,kBAAkB,SAAS;AAC3B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAY,QAAQ,OAAO,WAAW,SAAS;AAC/C,YAAY,MAAM,OAAO,SAAS,OAAO,UAAU,OAAO,WAAW,SAAS;AAC9E,YAAY,MAAM,OAAO,SAAS,OAAO,UAAU,OAAO,WAAW,SAAS;AAC9E,aAAa,mBAAmB;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,iBAAiB,OAAO;AACxB,kBAAkB,OAAO;AACzB,kBAAkB,OAAO;AACzB,kBAAkB,OAAO;AACzB,kBAAkB,OAAO;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,iBAAiB;AAC5B;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB,aAAa,UAAU;AACvB;AACA;AACA;AACA;;AAEA;AACA,iBAAiB,OAAO;AACxB,kBAAkB,OAAO;AACzB,kBAAkB,OAAO;AACzB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW;AACX;AACA,iBAAiB,OAAO;AACxB,YAAY,OAAO;AACnB,eAAe,OAAO;AACtB,YAAY,OAAO;AACnB,UAAU,OAAO;AACjB,eAAe,QAAQ;AACvB,YAAY,OAAO;AACnB,gBAAgB;AAChB,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd,kBAAkB,SAAS;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA,WAAW;AACX;AACA,iBAAiB,OAAO;AACxB,YAAY,OAAO;AACnB,eAAe,OAAO;AACtB,YAAY,OAAO;AACnB,UAAU,OAAO;AACjB,eAAe,QAAQ;AACvB,YAAY;AACZ,IAAI;AACJ;AACA;AACA;AACA;AACA,cAAc;AACd,kBAAkB,SAAS;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;;;;;;;;;;;;;ACrwBA;AACA;AACA;AACA;AACa;;AAEb,WAAW,mBAAO,CAAC,8CAAiB;AACpC,oBAAoB,mBAAO,CAAC,oEAA4B;AACxD,WAAW,mBAAO,CAAC,0CAAkB;AACrC,aAAa,mBAAO,CAAC,wCAAc;AACnC,eAAe,mBAAO,CAAC,0DAAuB;AAC9C,cAAc,mBAAO,CAAC,wDAAsB;AAC5C,WAAW,mBAAO,CAAC,uGAA2C;;AAE9D;AACA;AACA,aAAa;AACb,WAAW,YAAY;AACvB;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,WAAW,WAAW;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,WAAW;AACtB;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW,YAAY;AACvB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;;AAEA;AACA;AACA,WAAW,YAAY;AACvB;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA,WAAW,MAAM;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,aAAa;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA,iBAAiB,OAAO;AACxB,kBAAkB,OAAO;AACzB,kBAAkB,OAAO;AACzB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,mBAAmB;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA,iBAAiB,OAAO;AACxB,kBAAkB,OAAO;AACzB,kBAAkB,OAAO;AACzB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAY,QAAQ,OAAO,WAAW,SAAS;AAC/C,YAAY,MAAM,OAAO,SAAS,OAAO,UAAU,OAAO,WAAW,SAAS;AAC9E,YAAY,MAAM,OAAO,SAAS,OAAO,UAAU,OAAO,WAAW,SAAS;AAC9E,aAAa,mBAAmB;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,iBAAiB,OAAO;AACxB,kBAAkB,OAAO;AACzB,kBAAkB,OAAO;AACzB,kBAAkB,OAAO;AACzB,kBAAkB,OAAO;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;;AChVA;AACA;AACA;AACA;AACA;AACa;;AAEb,WAAW,mBAAO,CAAC,0CAAkB;AACrC,iBAAiB,mBAAO,CAAC,sGAAoC;AAC7D,eAAe,mBAAO,CAAC,0DAAuB;AAC9C,aAAa,mBAAO,CAAC,sDAAqB;AAC1C,aAAa,mBAAO,CAAC,wCAAc;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,iBAAiB,OAAO;AACxB;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,eAAe,EAAE;AACjB,eAAe,OAAO;AACtB,eAAe,EAAE;AACjB,eAAe,WAAW;AAC1B,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA,2EAA2E;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,eAAe,KAAK;AACpB,iBAAiB,OAAO;AACxB;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,eAAe,OAAO;AACtB,iBAAiB,OAAO;AACxB;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,eAAe,OAAO;AACtB,eAAe,MAAM;AACrB,iBAAiB,OAAO;AACxB;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,eAAe,OAAO;AACtB,eAAe,MAAM;AACrB,iBAAiB,OAAO;AACxB;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,eAAe,kBAAkB;AACjC,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;;AAEA,iDAAiD;AACjD,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA,iDAAiD;AACjD,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,iBAAiB,OAAO;AACxB;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,iBAAiB,OAAO;AACxB;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,iBAAiB,OAAO;AACxB;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,iBAAiB,OAAO;AACxB;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,iBAAiB,OAAO;AACxB;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA,+EAA+E,MAAM;AACrF,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,MAAM;AACjB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,MAAM;AACjB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,qBAAqB;AAC/B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;;;AC3fA,iBAAiB,mBAAO,CAAC,kFAAyF;AAClH,iEAAiE;AACjE,qFAAqF;AACrF;AACA;AACA;AACA;AACA;;AAEA;AACA,sNAAsN,6BAA6B,oBAAoB,SAAS,qBAAqB,QAAQ,uBAAuB;AACpU,iEAAiE;AACjE,4MAA4M,wBAAwB,oBAAoB,SAAS,qBAAqB,QAAQ,uBAAuB;AACrT,SAAS;AACT,0M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ACA;AACA;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA;;AAEA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,SAAS;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW,cAAc;AACzB,WAAW,SAAS;AACpB;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;;AAEA;;AAEA;;;;;;;;;;;;;ACrNA;AACA;AACA;AACA;AACa;;AAEb,WAAW,mBAAO,CAAC,0CAAkB;AACrC,aAAa,mBAAO,CAAC,wCAAc;AACnC,aAAa,mBAAO,CAAC,sDAAqB;AAC1C,eAAe,mBAAO,CAAC,0DAAuB;AAC9C,cAAc,mBAAO,CAAC,wDAAsB;AAC5C,aAAa,mBAAO,CAAC,0DAAuB;AAC5C,WAAW,mBAAO,CAAC,8CAAiB;AACpC,sBAAsB,mBAAO,CAAC,gEAAmB;AACjD,eAAe,mBAAO,CAAC,6EAA8B;AACrD,mBAAmB,mBAAO,CAAC,kEAA2B;AACtD;AACA;;AAEA;AACA;AACA,aAAa;AACb,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,eAAe;AAC1B;AACA,WAAW,MAAM;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,QAAQ;AACnB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW,iBAAiB;AAC5B,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;;;;;;;;;;;;;AC/TA;AACA;AACA;AACA;AACa;;AAEb,WAAW,mBAAO,CAAC,0CAAkB;AACrC,cAAc,mBAAO,CAAC,4CAAY;AAClC,WAAW,mBAAO,CAAC,6FAAsC;AACzD;;AAEA;AACA;AACA,aAAa;AACb,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,eAAe;AAC1B;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW,MAAM;AACjB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,aAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA,WAAW,MAAM;AACjB,aAAa,OAAO;AACpB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;;;;ACtHA;AACA;AACA;AACA;AACa;;AAEb,WAAW,mBAAO,CAAC,0CAAkB;AACrC,aAAa,mBAAO,CAAC,wCAAc;AACnC,aAAa,mBAAO,CAAC,sDAAqB;AAC1C,eAAe,mBAAO,CAAC,0DAAuB;AAC9C,aAAa,mBAAO,CAAC,0DAAuB;AAC5C,cAAc,mBAAO,CAAC,wDAAsB;AAC5C,WAAW,mBAAO,CAAC,sCAAS;AAC5B,kBAAkB,mBAAO,CAAC,+EAA+B;;AAEzD;AACA;AACA,WAAW,OAAO;AAClB,WAAW,YAAY;AACvB,WAAW,MAAM;AACjB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;AACA,cAAc;AACd;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,aAAa,OAAO;AACpB;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,QAAQ;AACnB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;;;;AC/KA;AACA;AACA;AACA;AACa;;AAEb,WAAW,mBAAO,CAAC,0CAAkB;AACrC,aAAa,mBAAO,CAAC,wCAAc;AACnC,eAAe,mBAAO,CAAC,0DAAuB;AAC9C,cAAc,mBAAO,CAAC,wDAAsB;AAC5C,WAAW,mBAAO,CAAC,sCAAS;AAC5B,eAAe,mBAAO,CAAC,uEAA2B;;AAElD;AACA;;AAEA;AACA;AACA,aAAa;AACb,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,YAAY;AACvB,WAAW,MAAM;AACjB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;;AAEA;AACA,cAAc;AACd;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW,kBAAkB;AAC7B,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,kBAAkB;AAC7B,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,gEAAgE;AAChE,gEAAgE;AAChE,kEAAkE;;AAElE;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAW,kBAAkB;AAC7B,WAAW,OAAO;AAClB,WAAW,KAAK;AAChB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;;AAEA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,MAAM;AACjB,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;;AAET;;AAEA;AACA,mBAAmB,kBAAkB;AACrC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA,aAAa;AACb,SAAS;AACT,KAAK;AACL;;AAEA;AACA,aAAa,KAAK;AAClB;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,MAAM;AACjB,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA,WAAW,MAAM;AACjB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;;;;;;;;;;;;AC1SA;AACA;AACA;AACA;AACa;;AAEb,WAAW,mBAAO,CAAC,0CAAkB;AACrC,aAAa,mBAAO,CAAC,wCAAc;AACnC,aAAa,mBAAO,CAAC,sDAAqB;AAC1C,cAAc,mBAAO,CAAC,wDAAsB;AAC5C,eAAe,mBAAO,CAAC,0DAAuB;AAC9C,eAAe,mBAAO,CAAC,0DAAuB;AAC9C,eAAe,mBAAO,CAAC,0DAAuB;AAC9C,mBAAmB,mBAAO,CAAC,kEAA2B;AACtD,WAAW,mBAAO,CAAC,sCAAS;AAC5B,WAAW,mBAAO,CAAC,0CAAQ;AAC3B,iBAAiB,mBAAO,CAAC,8DAAyB;AAClD,eAAe,mBAAO,CAAC,+EAA+B;AACtD,yBAAyB,mBAAO,CAAC,2FAAqC;AACtE,8BAA8B,mBAAO,CAAC,qGAA0C;AAChF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,aAAa;AACb,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,YAAY;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,6CAA6C;;AAE7C;;AAEA;;AAEA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;;AAEA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;AACV;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,WAAW,KAAK;AAChB;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,eAAe;AAC1B,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,YAAY;AACvB,WAAW,MAAM;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,KAAK;AACL;;AAEA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,SAAS;;AAET;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,QAAQ;AACnB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,WAAW,WAAW;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;;;;ACvqBA;AACA;AACA;AACA;AACa;;AAEb,WAAW,mBAAO,CAAC,0CAAkB;AACrC,aAAa,mBAAO,CAAC,wCAAc;AACnC,cAAc,mBAAO,CAAC,wDAAsB;AAC5C,eAAe,mBAAO,CAAC,0DAAuB;AAC9C,aAAa,mBAAO,CAAC,0DAAuB;AAC5C,WAAW,mBAAO,CAAC,sCAAS;;AAE5B;AACA;AACA,WAAW,UAAU;AACrB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB;AACA,WAAW,OAAO;AAClB;AACA,WAAW,OAAO;AAClB,WAAW,YAAY;AACvB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa;AACb;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C;AAC3C;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,gEAAgE;;AAEhE;AACA;AACA,aAAa;AACb;AACA;AACA,iBAAiB;AACjB;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,MAAM;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,kCAAkC;AACxF;AACA,aAAa;AACb,SAAS;AACT,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,WAAW,KAAK;AAChB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,YAAY;AACvB;AACA;AACA;AACA;;AAEA;;AAEA;;;;;;;;;;;;;AClOA;AACA;AACA;AACA;AACa;;AAEb,WAAW,mBAAO,CAAC,0CAAkB;AACrC,aAAa,mBAAO,CAAC,qCAAW;AAChC,cAAc,mBAAO,CAAC,qDAAmB;AACzC,eAAe,mBAAO,CAAC,uDAAoB;AAC3C,aAAa,mBAAO,CAAC,uDAAoB;AACzC,WAAW,mBAAO,CAAC,qCAAQ;;AAE3B;AACA;AACA,aAAa;AACb,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,eAAe;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,MAAM;AACjB,WAAW,eAAe;AAC1B,aAAa,OAAO;AACpB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb,SAAS;AACT,KAAK;;AAEL;AACA;;AAEA;AACA;AACA,WAAW,eAAe;AAC1B,aAAa,OAAO;AACpB;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,aAAa,OAAO;AACpB;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;;;ACrNA,8D;;;;;;;;;;;ACAA,6D","file":"tui-calendar.js","sourcesContent":[null," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/dist\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"./src/index.js\");\n","module.exports = require('handlebars/runtime');","'use strict';\n\nexports.__esModule = true;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\n// istanbul ignore next\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } }\n\nvar _handlebarsBase = require('./handlebars/base');\n\nvar base = _interopRequireWildcard(_handlebarsBase);\n\n// Each of these augment the Handlebars object. No need to setup here.\n// (This is done to easily share code between commonjs and browse envs)\n\nvar _handlebarsSafeString = require('./handlebars/safe-string');\n\nvar _handlebarsSafeString2 = _interopRequireDefault(_handlebarsSafeString);\n\nvar _handlebarsException = require('./handlebars/exception');\n\nvar _handlebarsException2 = _interopRequireDefault(_handlebarsException);\n\nvar _handlebarsUtils = require('./handlebars/utils');\n\nvar Utils = _interopRequireWildcard(_handlebarsUtils);\n\nvar _handlebarsRuntime = require('./handlebars/runtime');\n\nvar runtime = _interopRequireWildcard(_handlebarsRuntime);\n\nvar _handlebarsNoConflict = require('./handlebars/no-conflict');\n\nvar _handlebarsNoConflict2 = _interopRequireDefault(_handlebarsNoConflict);\n\n// For compatibility and usage outside of module systems, make the Handlebars object a namespace\nfunction create() {\n  var hb = new base.HandlebarsEnvironment();\n\n  Utils.extend(hb, base);\n  hb.SafeString = _handlebarsSafeString2['default'];\n  hb.Exception = _handlebarsException2['default'];\n  hb.Utils = Utils;\n  hb.escapeExpression = Utils.escapeExpression;\n\n  hb.VM = runtime;\n  hb.template = function (spec) {\n    return runtime.template(spec, hb);\n  };\n\n  return hb;\n}\n\nvar inst = create();\ninst.create = create;\n\n_handlebarsNoConflict2['default'](inst);\n\ninst['default'] = inst;\n\nexports['default'] = inst;\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9oYW5kbGViYXJzLnJ1bnRpbWUuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OEJBQXNCLG1CQUFtQjs7SUFBN0IsSUFBSTs7Ozs7b0NBSU8sMEJBQTBCOzs7O21DQUMzQix3QkFBd0I7Ozs7K0JBQ3ZCLG9CQUFvQjs7SUFBL0IsS0FBSzs7aUNBQ1Esc0JBQXNCOztJQUFuQyxPQUFPOztvQ0FFSSwwQkFBMEI7Ozs7O0FBR2pELFNBQVMsTUFBTSxHQUFHO0FBQ2hCLE1BQUksRUFBRSxHQUFHLElBQUksSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7O0FBRTFDLE9BQUssQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ3ZCLElBQUUsQ0FBQyxVQUFVLG9DQUFhLENBQUM7QUFDM0IsSUFBRSxDQUFDLFNBQVMsbUNBQVksQ0FBQztBQUN6QixJQUFFLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztBQUNqQixJQUFFLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDLGdCQUFnQixDQUFDOztBQUU3QyxJQUFFLENBQUMsRUFBRSxHQUFHLE9BQU8sQ0FBQztBQUNoQixJQUFFLENBQUMsUUFBUSxHQUFHLFVBQVMsSUFBSSxFQUFFO0FBQzNCLFdBQU8sT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7R0FDbkMsQ0FBQzs7QUFFRixTQUFPLEVBQUUsQ0FBQztDQUNYOztBQUVELElBQUksSUFBSSxHQUFHLE1BQU0sRUFBRSxDQUFDO0FBQ3BCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDOztBQUVyQixrQ0FBVyxJQUFJLENBQUMsQ0FBQzs7QUFFakIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLElBQUksQ0FBQzs7cUJBRVIsSUFBSSIsImZpbGUiOiJoYW5kbGViYXJzLnJ1bnRpbWUuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBiYXNlIGZyb20gJy4vaGFuZGxlYmFycy9iYXNlJztcblxuLy8gRWFjaCBvZiB0aGVzZSBhdWdtZW50IHRoZSBIYW5kbGViYXJzIG9iamVjdC4gTm8gbmVlZCB0byBzZXR1cCBoZXJlLlxuLy8gKFRoaXMgaXMgZG9uZSB0byBlYXNpbHkgc2hhcmUgY29kZSBiZXR3ZWVuIGNvbW1vbmpzIGFuZCBicm93c2UgZW52cylcbmltcG9ydCBTYWZlU3RyaW5nIGZyb20gJy4vaGFuZGxlYmFycy9zYWZlLXN0cmluZyc7XG5pbXBvcnQgRXhjZXB0aW9uIGZyb20gJy4vaGFuZGxlYmFycy9leGNlcHRpb24nO1xuaW1wb3J0ICogYXMgVXRpbHMgZnJvbSAnLi9oYW5kbGViYXJzL3V0aWxzJztcbmltcG9ydCAqIGFzIHJ1bnRpbWUgZnJvbSAnLi9oYW5kbGViYXJzL3J1bnRpbWUnO1xuXG5pbXBvcnQgbm9Db25mbGljdCBmcm9tICcuL2hhbmRsZWJhcnMvbm8tY29uZmxpY3QnO1xuXG4vLyBGb3IgY29tcGF0aWJpbGl0eSBhbmQgdXNhZ2Ugb3V0c2lkZSBvZiBtb2R1bGUgc3lzdGVtcywgbWFrZSB0aGUgSGFuZGxlYmFycyBvYmplY3QgYSBuYW1lc3BhY2VcbmZ1bmN0aW9uIGNyZWF0ZSgpIHtcbiAgbGV0IGhiID0gbmV3IGJhc2UuSGFuZGxlYmFyc0Vudmlyb25tZW50KCk7XG5cbiAgVXRpbHMuZXh0ZW5kKGhiLCBiYXNlKTtcbiAgaGIuU2FmZVN0cmluZyA9IFNhZmVTdHJpbmc7XG4gIGhiLkV4Y2VwdGlvbiA9IEV4Y2VwdGlvbjtcbiAgaGIuVXRpbHMgPSBVdGlscztcbiAgaGIuZXNjYXBlRXhwcmVzc2lvbiA9IFV0aWxzLmVzY2FwZUV4cHJlc3Npb247XG5cbiAgaGIuVk0gPSBydW50aW1lO1xuICBoYi50ZW1wbGF0ZSA9IGZ1bmN0aW9uKHNwZWMpIHtcbiAgICByZXR1cm4gcnVudGltZS50ZW1wbGF0ZShzcGVjLCBoYik7XG4gIH07XG5cbiAgcmV0dXJuIGhiO1xufVxuXG5sZXQgaW5zdCA9IGNyZWF0ZSgpO1xuaW5zdC5jcmVhdGUgPSBjcmVhdGU7XG5cbm5vQ29uZmxpY3QoaW5zdCk7XG5cbmluc3RbJ2RlZmF1bHQnXSA9IGluc3Q7XG5cbmV4cG9ydCBkZWZhdWx0IGluc3Q7XG4iXX0=\n","'use strict';\n\nexports.__esModule = true;\nexports.HandlebarsEnvironment = HandlebarsEnvironment;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _utils = require('./utils');\n\nvar _exception = require('./exception');\n\nvar _exception2 = _interopRequireDefault(_exception);\n\nvar _helpers = require('./helpers');\n\nvar _decorators = require('./decorators');\n\nvar _logger = require('./logger');\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _internalProtoAccess = require('./internal/proto-access');\n\nvar VERSION = '4.7.6';\nexports.VERSION = VERSION;\nvar COMPILER_REVISION = 8;\nexports.COMPILER_REVISION = COMPILER_REVISION;\nvar LAST_COMPATIBLE_COMPILER_REVISION = 7;\n\nexports.LAST_COMPATIBLE_COMPILER_REVISION = LAST_COMPATIBLE_COMPILER_REVISION;\nvar REVISION_CHANGES = {\n  1: '<= 1.0.rc.2', // 1.0.rc.2 is actually rev2 but doesn't report it\n  2: '== 1.0.0-rc.3',\n  3: '== 1.0.0-rc.4',\n  4: '== 1.x.x',\n  5: '== 2.0.0-alpha.x',\n  6: '>= 2.0.0-beta.1',\n  7: '>= 4.0.0 <4.3.0',\n  8: '>= 4.3.0'\n};\n\nexports.REVISION_CHANGES = REVISION_CHANGES;\nvar objectType = '[object Object]';\n\nfunction HandlebarsEnvironment(helpers, partials, decorators) {\n  this.helpers = helpers || {};\n  this.partials = partials || {};\n  this.decorators = decorators || {};\n\n  _helpers.registerDefaultHelpers(this);\n  _decorators.registerDefaultDecorators(this);\n}\n\nHandlebarsEnvironment.prototype = {\n  constructor: HandlebarsEnvironment,\n\n  logger: _logger2['default'],\n  log: _logger2['default'].log,\n\n  registerHelper: function registerHelper(name, fn) {\n    if (_utils.toString.call(name) === objectType) {\n      if (fn) {\n        throw new _exception2['default']('Arg not supported with multiple helpers');\n      }\n      _utils.extend(this.helpers, name);\n    } else {\n      this.helpers[name] = fn;\n    }\n  },\n  unregisterHelper: function unregisterHelper(name) {\n    delete this.helpers[name];\n  },\n\n  registerPartial: function registerPartial(name, partial) {\n    if (_utils.toString.call(name) === objectType) {\n      _utils.extend(this.partials, name);\n    } else {\n      if (typeof partial === 'undefined') {\n        throw new _exception2['default']('Attempting to register a partial called \"' + name + '\" as undefined');\n      }\n      this.partials[name] = partial;\n    }\n  },\n  unregisterPartial: function unregisterPartial(name) {\n    delete this.partials[name];\n  },\n\n  registerDecorator: function registerDecorator(name, fn) {\n    if (_utils.toString.call(name) === objectType) {\n      if (fn) {\n        throw new _exception2['default']('Arg not supported with multiple decorators');\n      }\n      _utils.extend(this.decorators, name);\n    } else {\n      this.decorators[name] = fn;\n    }\n  },\n  unregisterDecorator: function unregisterDecorator(name) {\n    delete this.decorators[name];\n  },\n  /**\n   * Reset the memory of illegal property accesses that have already been logged.\n   * @deprecated should only be used in handlebars test-cases\n   */\n  resetLoggedPropertyAccesses: function resetLoggedPropertyAccesses() {\n    _internalProtoAccess.resetLoggedProperties();\n  }\n};\n\nvar log = _logger2['default'].log;\n\nexports.log = log;\nexports.createFrame = _utils.createFrame;\nexports.logger = _logger2['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2Jhc2UuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7cUJBQThDLFNBQVM7O3lCQUNqQyxhQUFhOzs7O3VCQUNJLFdBQVc7OzBCQUNSLGNBQWM7O3NCQUNyQyxVQUFVOzs7O21DQUNTLHlCQUF5Qjs7QUFFeEQsSUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDOztBQUN4QixJQUFNLGlCQUFpQixHQUFHLENBQUMsQ0FBQzs7QUFDNUIsSUFBTSxpQ0FBaUMsR0FBRyxDQUFDLENBQUM7OztBQUU1QyxJQUFNLGdCQUFnQixHQUFHO0FBQzlCLEdBQUMsRUFBRSxhQUFhO0FBQ2hCLEdBQUMsRUFBRSxlQUFlO0FBQ2xCLEdBQUMsRUFBRSxlQUFlO0FBQ2xCLEdBQUMsRUFBRSxVQUFVO0FBQ2IsR0FBQyxFQUFFLGtCQUFrQjtBQUNyQixHQUFDLEVBQUUsaUJBQWlCO0FBQ3BCLEdBQUMsRUFBRSxpQkFBaUI7QUFDcEIsR0FBQyxFQUFFLFVBQVU7Q0FDZCxDQUFDOzs7QUFFRixJQUFNLFVBQVUsR0FBRyxpQkFBaUIsQ0FBQzs7QUFFOUIsU0FBUyxxQkFBcUIsQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRTtBQUNuRSxNQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sSUFBSSxFQUFFLENBQUM7QUFDN0IsTUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLElBQUksRUFBRSxDQUFDO0FBQy9CLE1BQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxJQUFJLEVBQUUsQ0FBQzs7QUFFbkMsa0NBQXVCLElBQUksQ0FBQyxDQUFDO0FBQzdCLHdDQUEwQixJQUFJLENBQUMsQ0FBQztDQUNqQzs7QUFFRCxxQkFBcUIsQ0FBQyxTQUFTLEdBQUc7QUFDaEMsYUFBVyxFQUFFLHFCQUFxQjs7QUFFbEMsUUFBTSxxQkFBUTtBQUNkLEtBQUcsRUFBRSxvQkFBTyxHQUFHOztBQUVmLGdCQUFjLEVBQUUsd0JBQVMsSUFBSSxFQUFFLEVBQUUsRUFBRTtBQUNqQyxRQUFJLGdCQUFTLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxVQUFVLEVBQUU7QUFDdEMsVUFBSSxFQUFFLEVBQUU7QUFDTixjQUFNLDJCQUFjLHlDQUF5QyxDQUFDLENBQUM7T0FDaEU7QUFDRCxvQkFBTyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO0tBQzVCLE1BQU07QUFDTCxVQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztLQUN6QjtHQUNGO0FBQ0Qsa0JBQWdCLEVBQUUsMEJBQVMsSUFBSSxFQUFFO0FBQy9CLFdBQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztHQUMzQjs7QUFFRCxpQkFBZSxFQUFFLHlCQUFTLElBQUksRUFBRSxPQUFPLEVBQUU7QUFDdkMsUUFBSSxnQkFBUyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssVUFBVSxFQUFFO0FBQ3RDLG9CQUFPLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7S0FDN0IsTUFBTTtBQUNMLFVBQUksT0FBTyxPQUFPLEtBQUssV0FBVyxFQUFFO0FBQ2xDLGNBQU0seUVBQ3dDLElBQUksb0JBQ2pELENBQUM7T0FDSDtBQUNELFVBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsT0FBTyxDQUFDO0tBQy9CO0dBQ0Y7QUFDRCxtQkFBaUIsRUFBRSwyQkFBUyxJQUFJLEVBQUU7QUFDaEMsV0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0dBQzVCOztBQUVELG1CQUFpQixFQUFFLDJCQUFTLElBQUksRUFBRSxFQUFFLEVBQUU7QUFDcEMsUUFBSSxnQkFBUyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssVUFBVSxFQUFFO0FBQ3RDLFVBQUksRUFBRSxFQUFFO0FBQ04sY0FBTSwyQkFBYyw0Q0FBNEMsQ0FBQyxDQUFDO09BQ25FO0FBQ0Qsb0JBQU8sSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQztLQUMvQixNQUFNO0FBQ0wsVUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7S0FDNUI7R0FDRjtBQUNELHFCQUFtQixFQUFFLDZCQUFTLElBQUksRUFBRTtBQUNsQyxXQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7R0FDOUI7Ozs7O0FBS0QsNkJBQTJCLEVBQUEsdUNBQUc7QUFDNUIsZ0RBQXVCLENBQUM7R0FDekI7Q0FDRixDQUFDOztBQUVLLElBQUksR0FBRyxHQUFHLG9CQUFPLEdBQUcsQ0FBQzs7O1FBRW5CLFdBQVc7UUFBRSxNQUFNIiwiZmlsZSI6ImJhc2UuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGVGcmFtZSwgZXh0ZW5kLCB0b1N0cmluZyB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IEV4Y2VwdGlvbiBmcm9tICcuL2V4Y2VwdGlvbic7XG5pbXBvcnQgeyByZWdpc3RlckRlZmF1bHRIZWxwZXJzIH0gZnJvbSAnLi9oZWxwZXJzJztcbmltcG9ydCB7IHJlZ2lzdGVyRGVmYXVsdERlY29yYXRvcnMgfSBmcm9tICcuL2RlY29yYXRvcnMnO1xuaW1wb3J0IGxvZ2dlciBmcm9tICcuL2xvZ2dlcic7XG5pbXBvcnQgeyByZXNldExvZ2dlZFByb3BlcnRpZXMgfSBmcm9tICcuL2ludGVybmFsL3Byb3RvLWFjY2Vzcyc7XG5cbmV4cG9ydCBjb25zdCBWRVJTSU9OID0gJzQuNy42JztcbmV4cG9ydCBjb25zdCBDT01QSUxFUl9SRVZJU0lPTiA9IDg7XG5leHBvcnQgY29uc3QgTEFTVF9DT01QQVRJQkxFX0NPTVBJTEVSX1JFVklTSU9OID0gNztcblxuZXhwb3J0IGNvbnN0IFJFVklTSU9OX0NIQU5HRVMgPSB7XG4gIDE6ICc8PSAxLjAucmMuMicsIC8vIDEuMC5yYy4yIGlzIGFjdHVhbGx5IHJldjIgYnV0IGRvZXNuJ3QgcmVwb3J0IGl0XG4gIDI6ICc9PSAxLjAuMC1yYy4zJyxcbiAgMzogJz09IDEuMC4wLXJjLjQnLFxuICA0OiAnPT0gMS54LngnLFxuICA1OiAnPT0gMi4wLjAtYWxwaGEueCcsXG4gIDY6ICc+PSAyLjAuMC1iZXRhLjEnLFxuICA3OiAnPj0gNC4wLjAgPDQuMy4wJyxcbiAgODogJz49IDQuMy4wJ1xufTtcblxuY29uc3Qgb2JqZWN0VHlwZSA9ICdbb2JqZWN0IE9iamVjdF0nO1xuXG5leHBvcnQgZnVuY3Rpb24gSGFuZGxlYmFyc0Vudmlyb25tZW50KGhlbHBlcnMsIHBhcnRpYWxzLCBkZWNvcmF0b3JzKSB7XG4gIHRoaXMuaGVscGVycyA9IGhlbHBlcnMgfHwge307XG4gIHRoaXMucGFydGlhbHMgPSBwYXJ0aWFscyB8fCB7fTtcbiAgdGhpcy5kZWNvcmF0b3JzID0gZGVjb3JhdG9ycyB8fCB7fTtcblxuICByZWdpc3RlckRlZmF1bHRIZWxwZXJzKHRoaXMpO1xuICByZWdpc3RlckRlZmF1bHREZWNvcmF0b3JzKHRoaXMpO1xufVxuXG5IYW5kbGViYXJzRW52aXJvbm1lbnQucHJvdG90eXBlID0ge1xuICBjb25zdHJ1Y3RvcjogSGFuZGxlYmFyc0Vudmlyb25tZW50LFxuXG4gIGxvZ2dlcjogbG9nZ2VyLFxuICBsb2c6IGxvZ2dlci5sb2csXG5cbiAgcmVnaXN0ZXJIZWxwZXI6IGZ1bmN0aW9uKG5hbWUsIGZuKSB7XG4gICAgaWYgKHRvU3RyaW5nLmNhbGwobmFtZSkgPT09IG9iamVjdFR5cGUpIHtcbiAgICAgIGlmIChmbikge1xuICAgICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCdBcmcgbm90IHN1cHBvcnRlZCB3aXRoIG11bHRpcGxlIGhlbHBlcnMnKTtcbiAgICAgIH1cbiAgICAgIGV4dGVuZCh0aGlzLmhlbHBlcnMsIG5hbWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmhlbHBlcnNbbmFtZV0gPSBmbjtcbiAgICB9XG4gIH0sXG4gIHVucmVnaXN0ZXJIZWxwZXI6IGZ1bmN0aW9uKG5hbWUpIHtcbiAgICBkZWxldGUgdGhpcy5oZWxwZXJzW25hbWVdO1xuICB9LFxuXG4gIHJlZ2lzdGVyUGFydGlhbDogZnVuY3Rpb24obmFtZSwgcGFydGlhbCkge1xuICAgIGlmICh0b1N0cmluZy5jYWxsKG5hbWUpID09PSBvYmplY3RUeXBlKSB7XG4gICAgICBleHRlbmQodGhpcy5wYXJ0aWFscywgbmFtZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh0eXBlb2YgcGFydGlhbCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbihcbiAgICAgICAgICBgQXR0ZW1wdGluZyB0byByZWdpc3RlciBhIHBhcnRpYWwgY2FsbGVkIFwiJHtuYW1lfVwiIGFzIHVuZGVmaW5lZGBcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHRoaXMucGFydGlhbHNbbmFtZV0gPSBwYXJ0aWFsO1xuICAgIH1cbiAgfSxcbiAgdW5yZWdpc3RlclBhcnRpYWw6IGZ1bmN0aW9uKG5hbWUpIHtcbiAgICBkZWxldGUgdGhpcy5wYXJ0aWFsc1tuYW1lXTtcbiAgfSxcblxuICByZWdpc3RlckRlY29yYXRvcjogZnVuY3Rpb24obmFtZSwgZm4pIHtcbiAgICBpZiAodG9TdHJpbmcuY2FsbChuYW1lKSA9PT0gb2JqZWN0VHlwZSkge1xuICAgICAgaWYgKGZuKSB7XG4gICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ0FyZyBub3Qgc3VwcG9ydGVkIHdpdGggbXVsdGlwbGUgZGVjb3JhdG9ycycpO1xuICAgICAgfVxuICAgICAgZXh0ZW5kKHRoaXMuZGVjb3JhdG9ycywgbmFtZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZGVjb3JhdG9yc1tuYW1lXSA9IGZuO1xuICAgIH1cbiAgfSxcbiAgdW5yZWdpc3RlckRlY29yYXRvcjogZnVuY3Rpb24obmFtZSkge1xuICAgIGRlbGV0ZSB0aGlzLmRlY29yYXRvcnNbbmFtZV07XG4gIH0sXG4gIC8qKlxuICAgKiBSZXNldCB0aGUgbWVtb3J5IG9mIGlsbGVnYWwgcHJvcGVydHkgYWNjZXNzZXMgdGhhdCBoYXZlIGFscmVhZHkgYmVlbiBsb2dnZWQuXG4gICAqIEBkZXByZWNhdGVkIHNob3VsZCBvbmx5IGJlIHVzZWQgaW4gaGFuZGxlYmFycyB0ZXN0LWNhc2VzXG4gICAqL1xuICByZXNldExvZ2dlZFByb3BlcnR5QWNjZXNzZXMoKSB7XG4gICAgcmVzZXRMb2dnZWRQcm9wZXJ0aWVzKCk7XG4gIH1cbn07XG5cbmV4cG9ydCBsZXQgbG9nID0gbG9nZ2VyLmxvZztcblxuZXhwb3J0IHsgY3JlYXRlRnJhbWUsIGxvZ2dlciB9O1xuIl19\n","'use strict';\n\nexports.__esModule = true;\nexports.registerDefaultDecorators = registerDefaultDecorators;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _decoratorsInline = require('./decorators/inline');\n\nvar _decoratorsInline2 = _interopRequireDefault(_decoratorsInline);\n\nfunction registerDefaultDecorators(instance) {\n  _decoratorsInline2['default'](instance);\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2RlY29yYXRvcnMuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Z0NBQTJCLHFCQUFxQjs7OztBQUV6QyxTQUFTLHlCQUF5QixDQUFDLFFBQVEsRUFBRTtBQUNsRCxnQ0FBZSxRQUFRLENBQUMsQ0FBQztDQUMxQiIsImZpbGUiOiJkZWNvcmF0b3JzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHJlZ2lzdGVySW5saW5lIGZyb20gJy4vZGVjb3JhdG9ycy9pbmxpbmUnO1xuXG5leHBvcnQgZnVuY3Rpb24gcmVnaXN0ZXJEZWZhdWx0RGVjb3JhdG9ycyhpbnN0YW5jZSkge1xuICByZWdpc3RlcklubGluZShpbnN0YW5jZSk7XG59XG4iXX0=\n","'use strict';\n\nexports.__esModule = true;\n\nvar _utils = require('../utils');\n\nexports['default'] = function (instance) {\n  instance.registerDecorator('inline', function (fn, props, container, options) {\n    var ret = fn;\n    if (!props.partials) {\n      props.partials = {};\n      ret = function (context, options) {\n        // Create a new partials stack frame prior to exec.\n        var original = container.partials;\n        container.partials = _utils.extend({}, original, props.partials);\n        var ret = fn(context, options);\n        container.partials = original;\n        return ret;\n      };\n    }\n\n    props.partials[options.args[0]] = options.fn;\n\n    return ret;\n  });\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2RlY29yYXRvcnMvaW5saW5lLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7cUJBQXVCLFVBQVU7O3FCQUVsQixVQUFTLFFBQVEsRUFBRTtBQUNoQyxVQUFRLENBQUMsaUJBQWlCLENBQUMsUUFBUSxFQUFFLFVBQVMsRUFBRSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFO0FBQzNFLFFBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQztBQUNiLFFBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFO0FBQ25CLFdBQUssQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO0FBQ3BCLFNBQUcsR0FBRyxVQUFTLE9BQU8sRUFBRSxPQUFPLEVBQUU7O0FBRS9CLFlBQUksUUFBUSxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUM7QUFDbEMsaUJBQVMsQ0FBQyxRQUFRLEdBQUcsY0FBTyxFQUFFLEVBQUUsUUFBUSxFQUFFLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUMxRCxZQUFJLEdBQUcsR0FBRyxFQUFFLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQy9CLGlCQUFTLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztBQUM5QixlQUFPLEdBQUcsQ0FBQztPQUNaLENBQUM7S0FDSDs7QUFFRCxTQUFLLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsRUFBRSxDQUFDOztBQUU3QyxXQUFPLEdBQUcsQ0FBQztHQUNaLENBQUMsQ0FBQztDQUNKIiwiZmlsZSI6ImlubGluZS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGV4dGVuZCB9IGZyb20gJy4uL3V0aWxzJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oaW5zdGFuY2UpIHtcbiAgaW5zdGFuY2UucmVnaXN0ZXJEZWNvcmF0b3IoJ2lubGluZScsIGZ1bmN0aW9uKGZuLCBwcm9wcywgY29udGFpbmVyLCBvcHRpb25zKSB7XG4gICAgbGV0IHJldCA9IGZuO1xuICAgIGlmICghcHJvcHMucGFydGlhbHMpIHtcbiAgICAgIHByb3BzLnBhcnRpYWxzID0ge307XG4gICAgICByZXQgPSBmdW5jdGlvbihjb250ZXh0LCBvcHRpb25zKSB7XG4gICAgICAgIC8vIENyZWF0ZSBhIG5ldyBwYXJ0aWFscyBzdGFjayBmcmFtZSBwcmlvciB0byBleGVjLlxuICAgICAgICBsZXQgb3JpZ2luYWwgPSBjb250YWluZXIucGFydGlhbHM7XG4gICAgICAgIGNvbnRhaW5lci5wYXJ0aWFscyA9IGV4dGVuZCh7fSwgb3JpZ2luYWwsIHByb3BzLnBhcnRpYWxzKTtcbiAgICAgICAgbGV0IHJldCA9IGZuKGNvbnRleHQsIG9wdGlvbnMpO1xuICAgICAgICBjb250YWluZXIucGFydGlhbHMgPSBvcmlnaW5hbDtcbiAgICAgICAgcmV0dXJuIHJldDtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcHJvcHMucGFydGlhbHNbb3B0aW9ucy5hcmdzWzBdXSA9IG9wdGlvbnMuZm47XG5cbiAgICByZXR1cm4gcmV0O1xuICB9KTtcbn1cbiJdfQ==\n","'use strict';\n\nexports.__esModule = true;\nvar errorProps = ['description', 'fileName', 'lineNumber', 'endLineNumber', 'message', 'name', 'number', 'stack'];\n\nfunction Exception(message, node) {\n  var loc = node && node.loc,\n      line = undefined,\n      endLineNumber = undefined,\n      column = undefined,\n      endColumn = undefined;\n\n  if (loc) {\n    line = loc.start.line;\n    endLineNumber = loc.end.line;\n    column = loc.start.column;\n    endColumn = loc.end.column;\n\n    message += ' - ' + line + ':' + column;\n  }\n\n  var tmp = Error.prototype.constructor.call(this, message);\n\n  // Unfortunately errors are not enumerable in Chrome (at least), so `for prop in tmp` doesn't work.\n  for (var idx = 0; idx < errorProps.length; idx++) {\n    this[errorProps[idx]] = tmp[errorProps[idx]];\n  }\n\n  /* istanbul ignore else */\n  if (Error.captureStackTrace) {\n    Error.captureStackTrace(this, Exception);\n  }\n\n  try {\n    if (loc) {\n      this.lineNumber = line;\n      this.endLineNumber = endLineNumber;\n\n      // Work around issue under safari where we can't directly set the column value\n      /* istanbul ignore next */\n      if (Object.defineProperty) {\n        Object.defineProperty(this, 'column', {\n          value: column,\n          enumerable: true\n        });\n        Object.defineProperty(this, 'endColumn', {\n          value: endColumn,\n          enumerable: true\n        });\n      } else {\n        this.column = column;\n        this.endColumn = endColumn;\n      }\n    }\n  } catch (nop) {\n    /* Ignore if the browser is very particular */\n  }\n}\n\nException.prototype = new Error();\n\nexports['default'] = Exception;\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2V4Y2VwdGlvbi5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxJQUFNLFVBQVUsR0FBRyxDQUNqQixhQUFhLEVBQ2IsVUFBVSxFQUNWLFlBQVksRUFDWixlQUFlLEVBQ2YsU0FBUyxFQUNULE1BQU0sRUFDTixRQUFRLEVBQ1IsT0FBTyxDQUNSLENBQUM7O0FBRUYsU0FBUyxTQUFTLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRTtBQUNoQyxNQUFJLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxDQUFDLEdBQUc7TUFDeEIsSUFBSSxZQUFBO01BQ0osYUFBYSxZQUFBO01BQ2IsTUFBTSxZQUFBO01BQ04sU0FBUyxZQUFBLENBQUM7O0FBRVosTUFBSSxHQUFHLEVBQUU7QUFDUCxRQUFJLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUM7QUFDdEIsaUJBQWEsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQztBQUM3QixVQUFNLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUM7QUFDMUIsYUFBUyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDOztBQUUzQixXQUFPLElBQUksS0FBSyxHQUFHLElBQUksR0FBRyxHQUFHLEdBQUcsTUFBTSxDQUFDO0dBQ3hDOztBQUVELE1BQUksR0FBRyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7OztBQUcxRCxPQUFLLElBQUksR0FBRyxHQUFHLENBQUMsRUFBRSxHQUFHLEdBQUcsVUFBVSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsRUFBRTtBQUNoRCxRQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0dBQzlDOzs7QUFHRCxNQUFJLEtBQUssQ0FBQyxpQkFBaUIsRUFBRTtBQUMzQixTQUFLLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0dBQzFDOztBQUVELE1BQUk7QUFDRixRQUFJLEdBQUcsRUFBRTtBQUNQLFVBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO0FBQ3ZCLFVBQUksQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFDOzs7O0FBSW5DLFVBQUksTUFBTSxDQUFDLGNBQWMsRUFBRTtBQUN6QixjQUFNLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUU7QUFDcEMsZUFBSyxFQUFFLE1BQU07QUFDYixvQkFBVSxFQUFFLElBQUk7U0FDakIsQ0FBQyxDQUFDO0FBQ0gsY0FBTSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsV0FBVyxFQUFFO0FBQ3ZDLGVBQUssRUFBRSxTQUFTO0FBQ2hCLG9CQUFVLEVBQUUsSUFBSTtTQUNqQixDQUFDLENBQUM7T0FDSixNQUFNO0FBQ0wsWUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7QUFDckIsWUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7T0FDNUI7S0FDRjtHQUNGLENBQUMsT0FBTyxHQUFHLEVBQUU7O0dBRWI7Q0FDRjs7QUFFRCxTQUFTLENBQUMsU0FBUyxHQUFHLElBQUksS0FBSyxFQUFFLENBQUM7O3FCQUVuQixTQUFTIiwiZmlsZSI6ImV4Y2VwdGlvbi5qcyIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IGVycm9yUHJvcHMgPSBbXG4gICdkZXNjcmlwdGlvbicsXG4gICdmaWxlTmFtZScsXG4gICdsaW5lTnVtYmVyJyxcbiAgJ2VuZExpbmVOdW1iZXInLFxuICAnbWVzc2FnZScsXG4gICduYW1lJyxcbiAgJ251bWJlcicsXG4gICdzdGFjaydcbl07XG5cbmZ1bmN0aW9uIEV4Y2VwdGlvbihtZXNzYWdlLCBub2RlKSB7XG4gIGxldCBsb2MgPSBub2RlICYmIG5vZGUubG9jLFxuICAgIGxpbmUsXG4gICAgZW5kTGluZU51bWJlcixcbiAgICBjb2x1bW4sXG4gICAgZW5kQ29sdW1uO1xuXG4gIGlmIChsb2MpIHtcbiAgICBsaW5lID0gbG9jLnN0YXJ0LmxpbmU7XG4gICAgZW5kTGluZU51bWJlciA9IGxvYy5lbmQubGluZTtcbiAgICBjb2x1bW4gPSBsb2Muc3RhcnQuY29sdW1uO1xuICAgIGVuZENvbHVtbiA9IGxvYy5lbmQuY29sdW1uO1xuXG4gICAgbWVzc2FnZSArPSAnIC0gJyArIGxpbmUgKyAnOicgKyBjb2x1bW47XG4gIH1cblxuICBsZXQgdG1wID0gRXJyb3IucHJvdG90eXBlLmNvbnN0cnVjdG9yLmNhbGwodGhpcywgbWVzc2FnZSk7XG5cbiAgLy8gVW5mb3J0dW5hdGVseSBlcnJvcnMgYXJlIG5vdCBlbnVtZXJhYmxlIGluIENocm9tZSAoYXQgbGVhc3QpLCBzbyBgZm9yIHByb3AgaW4gdG1wYCBkb2Vzbid0IHdvcmsuXG4gIGZvciAobGV0IGlkeCA9IDA7IGlkeCA8IGVycm9yUHJvcHMubGVuZ3RoOyBpZHgrKykge1xuICAgIHRoaXNbZXJyb3JQcm9wc1tpZHhdXSA9IHRtcFtlcnJvclByb3BzW2lkeF1dO1xuICB9XG5cbiAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgaWYgKEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKSB7XG4gICAgRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UodGhpcywgRXhjZXB0aW9uKTtcbiAgfVxuXG4gIHRyeSB7XG4gICAgaWYgKGxvYykge1xuICAgICAgdGhpcy5saW5lTnVtYmVyID0gbGluZTtcbiAgICAgIHRoaXMuZW5kTGluZU51bWJlciA9IGVuZExpbmVOdW1iZXI7XG5cbiAgICAgIC8vIFdvcmsgYXJvdW5kIGlzc3VlIHVuZGVyIHNhZmFyaSB3aGVyZSB3ZSBjYW4ndCBkaXJlY3RseSBzZXQgdGhlIGNvbHVtbiB2YWx1ZVxuICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgIGlmIChPYmplY3QuZGVmaW5lUHJvcGVydHkpIHtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsICdjb2x1bW4nLCB7XG4gICAgICAgICAgdmFsdWU6IGNvbHVtbixcbiAgICAgICAgICBlbnVtZXJhYmxlOiB0cnVlXG4gICAgICAgIH0pO1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgJ2VuZENvbHVtbicsIHtcbiAgICAgICAgICB2YWx1ZTogZW5kQ29sdW1uLFxuICAgICAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmNvbHVtbiA9IGNvbHVtbjtcbiAgICAgICAgdGhpcy5lbmRDb2x1bW4gPSBlbmRDb2x1bW47XG4gICAgICB9XG4gICAgfVxuICB9IGNhdGNoIChub3ApIHtcbiAgICAvKiBJZ25vcmUgaWYgdGhlIGJyb3dzZXIgaXMgdmVyeSBwYXJ0aWN1bGFyICovXG4gIH1cbn1cblxuRXhjZXB0aW9uLnByb3RvdHlwZSA9IG5ldyBFcnJvcigpO1xuXG5leHBvcnQgZGVmYXVsdCBFeGNlcHRpb247XG4iXX0=\n","'use strict';\n\nexports.__esModule = true;\nexports.registerDefaultHelpers = registerDefaultHelpers;\nexports.moveHelperToHooks = moveHelperToHooks;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _helpersBlockHelperMissing = require('./helpers/block-helper-missing');\n\nvar _helpersBlockHelperMissing2 = _interopRequireDefault(_helpersBlockHelperMissing);\n\nvar _helpersEach = require('./helpers/each');\n\nvar _helpersEach2 = _interopRequireDefault(_helpersEach);\n\nvar _helpersHelperMissing = require('./helpers/helper-missing');\n\nvar _helpersHelperMissing2 = _interopRequireDefault(_helpersHelperMissing);\n\nvar _helpersIf = require('./helpers/if');\n\nvar _helpersIf2 = _interopRequireDefault(_helpersIf);\n\nvar _helpersLog = require('./helpers/log');\n\nvar _helpersLog2 = _interopRequireDefault(_helpersLog);\n\nvar _helpersLookup = require('./helpers/lookup');\n\nvar _helpersLookup2 = _interopRequireDefault(_helpersLookup);\n\nvar _helpersWith = require('./helpers/with');\n\nvar _helpersWith2 = _interopRequireDefault(_helpersWith);\n\nfunction registerDefaultHelpers(instance) {\n  _helpersBlockHelperMissing2['default'](instance);\n  _helpersEach2['default'](instance);\n  _helpersHelperMissing2['default'](instance);\n  _helpersIf2['default'](instance);\n  _helpersLog2['default'](instance);\n  _helpersLookup2['default'](instance);\n  _helpersWith2['default'](instance);\n}\n\nfunction moveHelperToHooks(instance, helperName, keepHelper) {\n  if (instance.helpers[helperName]) {\n    instance.hooks[helperName] = instance.helpers[helperName];\n    if (!keepHelper) {\n      delete instance.helpers[helperName];\n    }\n  }\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O3lDQUF1QyxnQ0FBZ0M7Ozs7MkJBQzlDLGdCQUFnQjs7OztvQ0FDUCwwQkFBMEI7Ozs7eUJBQ3JDLGNBQWM7Ozs7MEJBQ2IsZUFBZTs7Ozs2QkFDWixrQkFBa0I7Ozs7MkJBQ3BCLGdCQUFnQjs7OztBQUVsQyxTQUFTLHNCQUFzQixDQUFDLFFBQVEsRUFBRTtBQUMvQyx5Q0FBMkIsUUFBUSxDQUFDLENBQUM7QUFDckMsMkJBQWEsUUFBUSxDQUFDLENBQUM7QUFDdkIsb0NBQXNCLFFBQVEsQ0FBQyxDQUFDO0FBQ2hDLHlCQUFXLFFBQVEsQ0FBQyxDQUFDO0FBQ3JCLDBCQUFZLFFBQVEsQ0FBQyxDQUFDO0FBQ3RCLDZCQUFlLFFBQVEsQ0FBQyxDQUFDO0FBQ3pCLDJCQUFhLFFBQVEsQ0FBQyxDQUFDO0NBQ3hCOztBQUVNLFNBQVMsaUJBQWlCLENBQUMsUUFBUSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUU7QUFDbEUsTUFBSSxRQUFRLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFO0FBQ2hDLFlBQVEsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUMxRCxRQUFJLENBQUMsVUFBVSxFQUFFO0FBQ2YsYUFBTyxRQUFRLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0tBQ3JDO0dBQ0Y7Q0FDRiIsImZpbGUiOiJoZWxwZXJzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHJlZ2lzdGVyQmxvY2tIZWxwZXJNaXNzaW5nIGZyb20gJy4vaGVscGVycy9ibG9jay1oZWxwZXItbWlzc2luZyc7XG5pbXBvcnQgcmVnaXN0ZXJFYWNoIGZyb20gJy4vaGVscGVycy9lYWNoJztcbmltcG9ydCByZWdpc3RlckhlbHBlck1pc3NpbmcgZnJvbSAnLi9oZWxwZXJzL2hlbHBlci1taXNzaW5nJztcbmltcG9ydCByZWdpc3RlcklmIGZyb20gJy4vaGVscGVycy9pZic7XG5pbXBvcnQgcmVnaXN0ZXJMb2cgZnJvbSAnLi9oZWxwZXJzL2xvZyc7XG5pbXBvcnQgcmVnaXN0ZXJMb29rdXAgZnJvbSAnLi9oZWxwZXJzL2xvb2t1cCc7XG5pbXBvcnQgcmVnaXN0ZXJXaXRoIGZyb20gJy4vaGVscGVycy93aXRoJztcblxuZXhwb3J0IGZ1bmN0aW9uIHJlZ2lzdGVyRGVmYXVsdEhlbHBlcnMoaW5zdGFuY2UpIHtcbiAgcmVnaXN0ZXJCbG9ja0hlbHBlck1pc3NpbmcoaW5zdGFuY2UpO1xuICByZWdpc3RlckVhY2goaW5zdGFuY2UpO1xuICByZWdpc3RlckhlbHBlck1pc3NpbmcoaW5zdGFuY2UpO1xuICByZWdpc3RlcklmKGluc3RhbmNlKTtcbiAgcmVnaXN0ZXJMb2coaW5zdGFuY2UpO1xuICByZWdpc3Rlckxvb2t1cChpbnN0YW5jZSk7XG4gIHJlZ2lzdGVyV2l0aChpbnN0YW5jZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtb3ZlSGVscGVyVG9Ib29rcyhpbnN0YW5jZSwgaGVscGVyTmFtZSwga2VlcEhlbHBlcikge1xuICBpZiAoaW5zdGFuY2UuaGVscGVyc1toZWxwZXJOYW1lXSkge1xuICAgIGluc3RhbmNlLmhvb2tzW2hlbHBlck5hbWVdID0gaW5zdGFuY2UuaGVscGVyc1toZWxwZXJOYW1lXTtcbiAgICBpZiAoIWtlZXBIZWxwZXIpIHtcbiAgICAgIGRlbGV0ZSBpbnN0YW5jZS5oZWxwZXJzW2hlbHBlck5hbWVdO1xuICAgIH1cbiAgfVxufVxuIl19\n","'use strict';\n\nexports.__esModule = true;\n\nvar _utils = require('../utils');\n\nexports['default'] = function (instance) {\n  instance.registerHelper('blockHelperMissing', function (context, options) {\n    var inverse = options.inverse,\n        fn = options.fn;\n\n    if (context === true) {\n      return fn(this);\n    } else if (context === false || context == null) {\n      return inverse(this);\n    } else if (_utils.isArray(context)) {\n      if (context.length > 0) {\n        if (options.ids) {\n          options.ids = [options.name];\n        }\n\n        return instance.helpers.each(context, options);\n      } else {\n        return inverse(this);\n      }\n    } else {\n      if (options.data && options.ids) {\n        var data = _utils.createFrame(options.data);\n        data.contextPath = _utils.appendContextPath(options.data.contextPath, options.name);\n        options = { data: data };\n      }\n\n      return fn(context, options);\n    }\n  });\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMvYmxvY2staGVscGVyLW1pc3NpbmcuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztxQkFBd0QsVUFBVTs7cUJBRW5ELFVBQVMsUUFBUSxFQUFFO0FBQ2hDLFVBQVEsQ0FBQyxjQUFjLENBQUMsb0JBQW9CLEVBQUUsVUFBUyxPQUFPLEVBQUUsT0FBTyxFQUFFO0FBQ3ZFLFFBQUksT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPO1FBQzNCLEVBQUUsR0FBRyxPQUFPLENBQUMsRUFBRSxDQUFDOztBQUVsQixRQUFJLE9BQU8sS0FBSyxJQUFJLEVBQUU7QUFDcEIsYUFBTyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDakIsTUFBTSxJQUFJLE9BQU8sS0FBSyxLQUFLLElBQUksT0FBTyxJQUFJLElBQUksRUFBRTtBQUMvQyxhQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUN0QixNQUFNLElBQUksZUFBUSxPQUFPLENBQUMsRUFBRTtBQUMzQixVQUFJLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO0FBQ3RCLFlBQUksT0FBTyxDQUFDLEdBQUcsRUFBRTtBQUNmLGlCQUFPLENBQUMsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQzlCOztBQUVELGVBQU8sUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO09BQ2hELE1BQU07QUFDTCxlQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztPQUN0QjtLQUNGLE1BQU07QUFDTCxVQUFJLE9BQU8sQ0FBQyxJQUFJLElBQUksT0FBTyxDQUFDLEdBQUcsRUFBRTtBQUMvQixZQUFJLElBQUksR0FBRyxtQkFBWSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDckMsWUFBSSxDQUFDLFdBQVcsR0FBRyx5QkFDakIsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQ3hCLE9BQU8sQ0FBQyxJQUFJLENBQ2IsQ0FBQztBQUNGLGVBQU8sR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQztPQUMxQjs7QUFFRCxhQUFPLEVBQUUsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7S0FDN0I7R0FDRixDQUFDLENBQUM7Q0FDSiIsImZpbGUiOiJibG9jay1oZWxwZXItbWlzc2luZy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFwcGVuZENvbnRleHRQYXRoLCBjcmVhdGVGcmFtZSwgaXNBcnJheSB9IGZyb20gJy4uL3V0aWxzJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oaW5zdGFuY2UpIHtcbiAgaW5zdGFuY2UucmVnaXN0ZXJIZWxwZXIoJ2Jsb2NrSGVscGVyTWlzc2luZycsIGZ1bmN0aW9uKGNvbnRleHQsIG9wdGlvbnMpIHtcbiAgICBsZXQgaW52ZXJzZSA9IG9wdGlvbnMuaW52ZXJzZSxcbiAgICAgIGZuID0gb3B0aW9ucy5mbjtcblxuICAgIGlmIChjb250ZXh0ID09PSB0cnVlKSB7XG4gICAgICByZXR1cm4gZm4odGhpcyk7XG4gICAgfSBlbHNlIGlmIChjb250ZXh0ID09PSBmYWxzZSB8fCBjb250ZXh0ID09IG51bGwpIHtcbiAgICAgIHJldHVybiBpbnZlcnNlKHRoaXMpO1xuICAgIH0gZWxzZSBpZiAoaXNBcnJheShjb250ZXh0KSkge1xuICAgICAgaWYgKGNvbnRleHQubGVuZ3RoID4gMCkge1xuICAgICAgICBpZiAob3B0aW9ucy5pZHMpIHtcbiAgICAgICAgICBvcHRpb25zLmlkcyA9IFtvcHRpb25zLm5hbWVdO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGluc3RhbmNlLmhlbHBlcnMuZWFjaChjb250ZXh0LCBvcHRpb25zKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBpbnZlcnNlKHRoaXMpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAob3B0aW9ucy5kYXRhICYmIG9wdGlvbnMuaWRzKSB7XG4gICAgICAgIGxldCBkYXRhID0gY3JlYXRlRnJhbWUob3B0aW9ucy5kYXRhKTtcbiAgICAgICAgZGF0YS5jb250ZXh0UGF0aCA9IGFwcGVuZENvbnRleHRQYXRoKFxuICAgICAgICAgIG9wdGlvbnMuZGF0YS5jb250ZXh0UGF0aCxcbiAgICAgICAgICBvcHRpb25zLm5hbWVcbiAgICAgICAgKTtcbiAgICAgICAgb3B0aW9ucyA9IHsgZGF0YTogZGF0YSB9O1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZm4oY29udGV4dCwgb3B0aW9ucyk7XG4gICAgfVxuICB9KTtcbn1cbiJdfQ==\n","'use strict';\n\nexports.__esModule = true;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _utils = require('../utils');\n\nvar _exception = require('../exception');\n\nvar _exception2 = _interopRequireDefault(_exception);\n\nexports['default'] = function (instance) {\n  instance.registerHelper('each', function (context, options) {\n    if (!options) {\n      throw new _exception2['default']('Must pass iterator to #each');\n    }\n\n    var fn = options.fn,\n        inverse = options.inverse,\n        i = 0,\n        ret = '',\n        data = undefined,\n        contextPath = undefined;\n\n    if (options.data && options.ids) {\n      contextPath = _utils.appendContextPath(options.data.contextPath, options.ids[0]) + '.';\n    }\n\n    if (_utils.isFunction(context)) {\n      context = context.call(this);\n    }\n\n    if (options.data) {\n      data = _utils.createFrame(options.data);\n    }\n\n    function execIteration(field, index, last) {\n      if (data) {\n        data.key = field;\n        data.index = index;\n        data.first = index === 0;\n        data.last = !!last;\n\n        if (contextPath) {\n          data.contextPath = contextPath + field;\n        }\n      }\n\n      ret = ret + fn(context[field], {\n        data: data,\n        blockParams: _utils.blockParams([context[field], field], [contextPath + field, null])\n      });\n    }\n\n    if (context && typeof context === 'object') {\n      if (_utils.isArray(context)) {\n        for (var j = context.length; i < j; i++) {\n          if (i in context) {\n            execIteration(i, i, i === context.length - 1);\n          }\n        }\n      } else if (global.Symbol && context[global.Symbol.iterator]) {\n        var newContext = [];\n        var iterator = context[global.Symbol.iterator]();\n        for (var it = iterator.next(); !it.done; it = iterator.next()) {\n          newContext.push(it.value);\n        }\n        context = newContext;\n        for (var j = context.length; i < j; i++) {\n          execIteration(i, i, i === context.length - 1);\n        }\n      } else {\n        (function () {\n          var priorKey = undefined;\n\n          Object.keys(context).forEach(function (key) {\n            // We're running the iterations one step out of sync so we can detect\n            // the last iteration without have to scan the object twice and create\n            // an itermediate keys array.\n            if (priorKey !== undefined) {\n              execIteration(priorKey, i - 1);\n            }\n            priorKey = key;\n            i++;\n          });\n          if (priorKey !== undefined) {\n            execIteration(priorKey, i - 1, true);\n          }\n        })();\n      }\n    }\n\n    if (i === 0) {\n      ret = inverse(this);\n    }\n\n    return ret;\n  });\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMvZWFjaC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O3FCQU1PLFVBQVU7O3lCQUNLLGNBQWM7Ozs7cUJBRXJCLFVBQVMsUUFBUSxFQUFFO0FBQ2hDLFVBQVEsQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLFVBQVMsT0FBTyxFQUFFLE9BQU8sRUFBRTtBQUN6RCxRQUFJLENBQUMsT0FBTyxFQUFFO0FBQ1osWUFBTSwyQkFBYyw2QkFBNkIsQ0FBQyxDQUFDO0tBQ3BEOztBQUVELFFBQUksRUFBRSxHQUFHLE9BQU8sQ0FBQyxFQUFFO1FBQ2pCLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTztRQUN6QixDQUFDLEdBQUcsQ0FBQztRQUNMLEdBQUcsR0FBRyxFQUFFO1FBQ1IsSUFBSSxZQUFBO1FBQ0osV0FBVyxZQUFBLENBQUM7O0FBRWQsUUFBSSxPQUFPLENBQUMsSUFBSSxJQUFJLE9BQU8sQ0FBQyxHQUFHLEVBQUU7QUFDL0IsaUJBQVcsR0FDVCx5QkFBa0IsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQztLQUNyRTs7QUFFRCxRQUFJLGtCQUFXLE9BQU8sQ0FBQyxFQUFFO0FBQ3ZCLGFBQU8sR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQzlCOztBQUVELFFBQUksT0FBTyxDQUFDLElBQUksRUFBRTtBQUNoQixVQUFJLEdBQUcsbUJBQVksT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQ2xDOztBQUVELGFBQVMsYUFBYSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFO0FBQ3pDLFVBQUksSUFBSSxFQUFFO0FBQ1IsWUFBSSxDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUM7QUFDakIsWUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7QUFDbkIsWUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLEtBQUssQ0FBQyxDQUFDO0FBQ3pCLFlBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQzs7QUFFbkIsWUFBSSxXQUFXLEVBQUU7QUFDZixjQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsR0FBRyxLQUFLLENBQUM7U0FDeEM7T0FDRjs7QUFFRCxTQUFHLEdBQ0QsR0FBRyxHQUNILEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7QUFDakIsWUFBSSxFQUFFLElBQUk7QUFDVixtQkFBVyxFQUFFLG1CQUNYLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUN2QixDQUFDLFdBQVcsR0FBRyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQzVCO09BQ0YsQ0FBQyxDQUFDO0tBQ047O0FBRUQsUUFBSSxPQUFPLElBQUksT0FBTyxPQUFPLEtBQUssUUFBUSxFQUFFO0FBQzFDLFVBQUksZUFBUSxPQUFPLENBQUMsRUFBRTtBQUNwQixhQUFLLElBQUksQ0FBQyxHQUFHLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUN2QyxjQUFJLENBQUMsSUFBSSxPQUFPLEVBQUU7QUFDaEIseUJBQWEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1dBQy9DO1NBQ0Y7T0FDRixNQUFNLElBQUksTUFBTSxDQUFDLE1BQU0sSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsRUFBRTtBQUMzRCxZQUFNLFVBQVUsR0FBRyxFQUFFLENBQUM7QUFDdEIsWUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztBQUNuRCxhQUFLLElBQUksRUFBRSxHQUFHLFFBQVEsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxHQUFHLFFBQVEsQ0FBQyxJQUFJLEVBQUUsRUFBRTtBQUM3RCxvQkFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDM0I7QUFDRCxlQUFPLEdBQUcsVUFBVSxDQUFDO0FBQ3JCLGFBQUssSUFBSSxDQUFDLEdBQUcsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQ3ZDLHVCQUFhLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztTQUMvQztPQUNGLE1BQU07O0FBQ0wsY0FBSSxRQUFRLFlBQUEsQ0FBQzs7QUFFYixnQkFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBQSxHQUFHLEVBQUk7Ozs7QUFJbEMsZ0JBQUksUUFBUSxLQUFLLFNBQVMsRUFBRTtBQUMxQiwyQkFBYSxDQUFDLFFBQVEsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7YUFDaEM7QUFDRCxvQkFBUSxHQUFHLEdBQUcsQ0FBQztBQUNmLGFBQUMsRUFBRSxDQUFDO1dBQ0wsQ0FBQyxDQUFDO0FBQ0gsY0FBSSxRQUFRLEtBQUssU0FBUyxFQUFFO0FBQzFCLHlCQUFhLENBQUMsUUFBUSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7V0FDdEM7O09BQ0Y7S0FDRjs7QUFFRCxRQUFJLENBQUMsS0FBSyxDQUFDLEVBQUU7QUFDWCxTQUFHLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQ3JCOztBQUVELFdBQU8sR0FBRyxDQUFDO0dBQ1osQ0FBQyxDQUFDO0NBQ0oiLCJmaWxlIjoiZWFjaC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIGFwcGVuZENvbnRleHRQYXRoLFxuICBibG9ja1BhcmFtcyxcbiAgY3JlYXRlRnJhbWUsXG4gIGlzQXJyYXksXG4gIGlzRnVuY3Rpb25cbn0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IEV4Y2VwdGlvbiBmcm9tICcuLi9leGNlcHRpb24nO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihpbnN0YW5jZSkge1xuICBpbnN0YW5jZS5yZWdpc3RlckhlbHBlcignZWFjaCcsIGZ1bmN0aW9uKGNvbnRleHQsIG9wdGlvbnMpIHtcbiAgICBpZiAoIW9wdGlvbnMpIHtcbiAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ011c3QgcGFzcyBpdGVyYXRvciB0byAjZWFjaCcpO1xuICAgIH1cblxuICAgIGxldCBmbiA9IG9wdGlvbnMuZm4sXG4gICAgICBpbnZlcnNlID0gb3B0aW9ucy5pbnZlcnNlLFxuICAgICAgaSA9IDAsXG4gICAgICByZXQgPSAnJyxcbiAgICAgIGRhdGEsXG4gICAgICBjb250ZXh0UGF0aDtcblxuICAgIGlmIChvcHRpb25zLmRhdGEgJiYgb3B0aW9ucy5pZHMpIHtcbiAgICAgIGNvbnRleHRQYXRoID1cbiAgICAgICAgYXBwZW5kQ29udGV4dFBhdGgob3B0aW9ucy5kYXRhLmNvbnRleHRQYXRoLCBvcHRpb25zLmlkc1swXSkgKyAnLic7XG4gICAgfVxuXG4gICAgaWYgKGlzRnVuY3Rpb24oY29udGV4dCkpIHtcbiAgICAgIGNvbnRleHQgPSBjb250ZXh0LmNhbGwodGhpcyk7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMuZGF0YSkge1xuICAgICAgZGF0YSA9IGNyZWF0ZUZyYW1lKG9wdGlvbnMuZGF0YSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZXhlY0l0ZXJhdGlvbihmaWVsZCwgaW5kZXgsIGxhc3QpIHtcbiAgICAgIGlmIChkYXRhKSB7XG4gICAgICAgIGRhdGEua2V5ID0gZmllbGQ7XG4gICAgICAgIGRhdGEuaW5kZXggPSBpbmRleDtcbiAgICAgICAgZGF0YS5maXJzdCA9IGluZGV4ID09PSAwO1xuICAgICAgICBkYXRhLmxhc3QgPSAhIWxhc3Q7XG5cbiAgICAgICAgaWYgKGNvbnRleHRQYXRoKSB7XG4gICAgICAgICAgZGF0YS5jb250ZXh0UGF0aCA9IGNvbnRleHRQYXRoICsgZmllbGQ7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0ID1cbiAgICAgICAgcmV0ICtcbiAgICAgICAgZm4oY29udGV4dFtmaWVsZF0sIHtcbiAgICAgICAgICBkYXRhOiBkYXRhLFxuICAgICAgICAgIGJsb2NrUGFyYW1zOiBibG9ja1BhcmFtcyhcbiAgICAgICAgICAgIFtjb250ZXh0W2ZpZWxkXSwgZmllbGRdLFxuICAgICAgICAgICAgW2NvbnRleHRQYXRoICsgZmllbGQsIG51bGxdXG4gICAgICAgICAgKVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAoY29udGV4dCAmJiB0eXBlb2YgY29udGV4dCA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGlmIChpc0FycmF5KGNvbnRleHQpKSB7XG4gICAgICAgIGZvciAobGV0IGogPSBjb250ZXh0Lmxlbmd0aDsgaSA8IGo7IGkrKykge1xuICAgICAgICAgIGlmIChpIGluIGNvbnRleHQpIHtcbiAgICAgICAgICAgIGV4ZWNJdGVyYXRpb24oaSwgaSwgaSA9PT0gY29udGV4dC5sZW5ndGggLSAxKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoZ2xvYmFsLlN5bWJvbCAmJiBjb250ZXh0W2dsb2JhbC5TeW1ib2wuaXRlcmF0b3JdKSB7XG4gICAgICAgIGNvbnN0IG5ld0NvbnRleHQgPSBbXTtcbiAgICAgICAgY29uc3QgaXRlcmF0b3IgPSBjb250ZXh0W2dsb2JhbC5TeW1ib2wuaXRlcmF0b3JdKCk7XG4gICAgICAgIGZvciAobGV0IGl0ID0gaXRlcmF0b3IubmV4dCgpOyAhaXQuZG9uZTsgaXQgPSBpdGVyYXRvci5uZXh0KCkpIHtcbiAgICAgICAgICBuZXdDb250ZXh0LnB1c2goaXQudmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnRleHQgPSBuZXdDb250ZXh0O1xuICAgICAgICBmb3IgKGxldCBqID0gY29udGV4dC5sZW5ndGg7IGkgPCBqOyBpKyspIHtcbiAgICAgICAgICBleGVjSXRlcmF0aW9uKGksIGksIGkgPT09IGNvbnRleHQubGVuZ3RoIC0gMSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxldCBwcmlvcktleTtcblxuICAgICAgICBPYmplY3Qua2V5cyhjb250ZXh0KS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICAgICAgLy8gV2UncmUgcnVubmluZyB0aGUgaXRlcmF0aW9ucyBvbmUgc3RlcCBvdXQgb2Ygc3luYyBzbyB3ZSBjYW4gZGV0ZWN0XG4gICAgICAgICAgLy8gdGhlIGxhc3QgaXRlcmF0aW9uIHdpdGhvdXQgaGF2ZSB0byBzY2FuIHRoZSBvYmplY3QgdHdpY2UgYW5kIGNyZWF0ZVxuICAgICAgICAgIC8vIGFuIGl0ZXJtZWRpYXRlIGtleXMgYXJyYXkuXG4gICAgICAgICAgaWYgKHByaW9yS2V5ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGV4ZWNJdGVyYXRpb24ocHJpb3JLZXksIGkgLSAxKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcHJpb3JLZXkgPSBrZXk7XG4gICAgICAgICAgaSsrO1xuICAgICAgICB9KTtcbiAgICAgICAgaWYgKHByaW9yS2V5ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBleGVjSXRlcmF0aW9uKHByaW9yS2V5LCBpIC0gMSwgdHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoaSA9PT0gMCkge1xuICAgICAgcmV0ID0gaW52ZXJzZSh0aGlzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmV0O1xuICB9KTtcbn1cbiJdfQ==\n","'use strict';\n\nexports.__esModule = true;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _exception = require('../exception');\n\nvar _exception2 = _interopRequireDefault(_exception);\n\nexports['default'] = function (instance) {\n  instance.registerHelper('helperMissing', function () /* [args, ]options */{\n    if (arguments.length === 1) {\n      // A missing field in a {{foo}} construct.\n      return undefined;\n    } else {\n      // Someone is actually trying to call something, blow up.\n      throw new _exception2['default']('Missing helper: \"' + arguments[arguments.length - 1].name + '\"');\n    }\n  });\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMvaGVscGVyLW1pc3NpbmcuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozt5QkFBc0IsY0FBYzs7OztxQkFFckIsVUFBUyxRQUFRLEVBQUU7QUFDaEMsVUFBUSxDQUFDLGNBQWMsQ0FBQyxlQUFlLEVBQUUsaUNBQWdDO0FBQ3ZFLFFBQUksU0FBUyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7O0FBRTFCLGFBQU8sU0FBUyxDQUFDO0tBQ2xCLE1BQU07O0FBRUwsWUFBTSwyQkFDSixtQkFBbUIsR0FBRyxTQUFTLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUNqRSxDQUFDO0tBQ0g7R0FDRixDQUFDLENBQUM7Q0FDSiIsImZpbGUiOiJoZWxwZXItbWlzc2luZy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBFeGNlcHRpb24gZnJvbSAnLi4vZXhjZXB0aW9uJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oaW5zdGFuY2UpIHtcbiAgaW5zdGFuY2UucmVnaXN0ZXJIZWxwZXIoJ2hlbHBlck1pc3NpbmcnLCBmdW5jdGlvbigvKiBbYXJncywgXW9wdGlvbnMgKi8pIHtcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgLy8gQSBtaXNzaW5nIGZpZWxkIGluIGEge3tmb299fSBjb25zdHJ1Y3QuXG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBTb21lb25lIGlzIGFjdHVhbGx5IHRyeWluZyB0byBjYWxsIHNvbWV0aGluZywgYmxvdyB1cC5cbiAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oXG4gICAgICAgICdNaXNzaW5nIGhlbHBlcjogXCInICsgYXJndW1lbnRzW2FyZ3VtZW50cy5sZW5ndGggLSAxXS5uYW1lICsgJ1wiJ1xuICAgICAgKTtcbiAgICB9XG4gIH0pO1xufVxuIl19\n","'use strict';\n\nexports.__esModule = true;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _utils = require('../utils');\n\nvar _exception = require('../exception');\n\nvar _exception2 = _interopRequireDefault(_exception);\n\nexports['default'] = function (instance) {\n  instance.registerHelper('if', function (conditional, options) {\n    if (arguments.length != 2) {\n      throw new _exception2['default']('#if requires exactly one argument');\n    }\n    if (_utils.isFunction(conditional)) {\n      conditional = conditional.call(this);\n    }\n\n    // Default behavior is to render the positive path if the value is truthy and not empty.\n    // The `includeZero` option may be set to treat the condtional as purely not empty based on the\n    // behavior of isEmpty. Effectively this determines if 0 is handled by the positive path or negative.\n    if (!options.hash.includeZero && !conditional || _utils.isEmpty(conditional)) {\n      return options.inverse(this);\n    } else {\n      return options.fn(this);\n    }\n  });\n\n  instance.registerHelper('unless', function (conditional, options) {\n    if (arguments.length != 2) {\n      throw new _exception2['default']('#unless requires exactly one argument');\n    }\n    return instance.helpers['if'].call(this, conditional, {\n      fn: options.inverse,\n      inverse: options.fn,\n      hash: options.hash\n    });\n  });\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMvaWYuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7OztxQkFBb0MsVUFBVTs7eUJBQ3hCLGNBQWM7Ozs7cUJBRXJCLFVBQVMsUUFBUSxFQUFFO0FBQ2hDLFVBQVEsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLFVBQVMsV0FBVyxFQUFFLE9BQU8sRUFBRTtBQUMzRCxRQUFJLFNBQVMsQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFO0FBQ3pCLFlBQU0sMkJBQWMsbUNBQW1DLENBQUMsQ0FBQztLQUMxRDtBQUNELFFBQUksa0JBQVcsV0FBVyxDQUFDLEVBQUU7QUFDM0IsaUJBQVcsR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQ3RDOzs7OztBQUtELFFBQUksQUFBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxJQUFJLENBQUMsV0FBVyxJQUFLLGVBQVEsV0FBVyxDQUFDLEVBQUU7QUFDdkUsYUFBTyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQzlCLE1BQU07QUFDTCxhQUFPLE9BQU8sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDekI7R0FDRixDQUFDLENBQUM7O0FBRUgsVUFBUSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsVUFBUyxXQUFXLEVBQUUsT0FBTyxFQUFFO0FBQy9ELFFBQUksU0FBUyxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUU7QUFDekIsWUFBTSwyQkFBYyx1Q0FBdUMsQ0FBQyxDQUFDO0tBQzlEO0FBQ0QsV0FBTyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsV0FBVyxFQUFFO0FBQ3BELFFBQUUsRUFBRSxPQUFPLENBQUMsT0FBTztBQUNuQixhQUFPLEVBQUUsT0FBTyxDQUFDLEVBQUU7QUFDbkIsVUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJO0tBQ25CLENBQUMsQ0FBQztHQUNKLENBQUMsQ0FBQztDQUNKIiwiZmlsZSI6ImlmLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNFbXB0eSwgaXNGdW5jdGlvbiB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCBFeGNlcHRpb24gZnJvbSAnLi4vZXhjZXB0aW9uJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oaW5zdGFuY2UpIHtcbiAgaW5zdGFuY2UucmVnaXN0ZXJIZWxwZXIoJ2lmJywgZnVuY3Rpb24oY29uZGl0aW9uYWwsIG9wdGlvbnMpIHtcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCAhPSAyKSB7XG4gICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCcjaWYgcmVxdWlyZXMgZXhhY3RseSBvbmUgYXJndW1lbnQnKTtcbiAgICB9XG4gICAgaWYgKGlzRnVuY3Rpb24oY29uZGl0aW9uYWwpKSB7XG4gICAgICBjb25kaXRpb25hbCA9IGNvbmRpdGlvbmFsLmNhbGwodGhpcyk7XG4gICAgfVxuXG4gICAgLy8gRGVmYXVsdCBiZWhhdmlvciBpcyB0byByZW5kZXIgdGhlIHBvc2l0aXZlIHBhdGggaWYgdGhlIHZhbHVlIGlzIHRydXRoeSBhbmQgbm90IGVtcHR5LlxuICAgIC8vIFRoZSBgaW5jbHVkZVplcm9gIG9wdGlvbiBtYXkgYmUgc2V0IHRvIHRyZWF0IHRoZSBjb25kdGlvbmFsIGFzIHB1cmVseSBub3QgZW1wdHkgYmFzZWQgb24gdGhlXG4gICAgLy8gYmVoYXZpb3Igb2YgaXNFbXB0eS4gRWZmZWN0aXZlbHkgdGhpcyBkZXRlcm1pbmVzIGlmIDAgaXMgaGFuZGxlZCBieSB0aGUgcG9zaXRpdmUgcGF0aCBvciBuZWdhdGl2ZS5cbiAgICBpZiAoKCFvcHRpb25zLmhhc2guaW5jbHVkZVplcm8gJiYgIWNvbmRpdGlvbmFsKSB8fCBpc0VtcHR5KGNvbmRpdGlvbmFsKSkge1xuICAgICAgcmV0dXJuIG9wdGlvbnMuaW52ZXJzZSh0aGlzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG9wdGlvbnMuZm4odGhpcyk7XG4gICAgfVxuICB9KTtcblxuICBpbnN0YW5jZS5yZWdpc3RlckhlbHBlcigndW5sZXNzJywgZnVuY3Rpb24oY29uZGl0aW9uYWwsIG9wdGlvbnMpIHtcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCAhPSAyKSB7XG4gICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCcjdW5sZXNzIHJlcXVpcmVzIGV4YWN0bHkgb25lIGFyZ3VtZW50Jyk7XG4gICAgfVxuICAgIHJldHVybiBpbnN0YW5jZS5oZWxwZXJzWydpZiddLmNhbGwodGhpcywgY29uZGl0aW9uYWwsIHtcbiAgICAgIGZuOiBvcHRpb25zLmludmVyc2UsXG4gICAgICBpbnZlcnNlOiBvcHRpb25zLmZuLFxuICAgICAgaGFzaDogb3B0aW9ucy5oYXNoXG4gICAgfSk7XG4gIH0pO1xufVxuIl19\n","'use strict';\n\nexports.__esModule = true;\n\nexports['default'] = function (instance) {\n  instance.registerHelper('log', function () /* message, options */{\n    var args = [undefined],\n        options = arguments[arguments.length - 1];\n    for (var i = 0; i < arguments.length - 1; i++) {\n      args.push(arguments[i]);\n    }\n\n    var level = 1;\n    if (options.hash.level != null) {\n      level = options.hash.level;\n    } else if (options.data && options.data.level != null) {\n      level = options.data.level;\n    }\n    args[0] = level;\n\n    instance.log.apply(instance, args);\n  });\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMvbG9nLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7cUJBQWUsVUFBUyxRQUFRLEVBQUU7QUFDaEMsVUFBUSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsa0NBQWlDO0FBQzlELFFBQUksSUFBSSxHQUFHLENBQUMsU0FBUyxDQUFDO1FBQ3BCLE9BQU8sR0FBRyxTQUFTLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztBQUM1QyxTQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDN0MsVUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUN6Qjs7QUFFRCxRQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7QUFDZCxRQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksRUFBRTtBQUM5QixXQUFLLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7S0FDNUIsTUFBTSxJQUFJLE9BQU8sQ0FBQyxJQUFJLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxFQUFFO0FBQ3JELFdBQUssR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztLQUM1QjtBQUNELFFBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUM7O0FBRWhCLFlBQVEsQ0FBQyxHQUFHLE1BQUEsQ0FBWixRQUFRLEVBQVEsSUFBSSxDQUFDLENBQUM7R0FDdkIsQ0FBQyxDQUFDO0NBQ0oiLCJmaWxlIjoibG9nLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oaW5zdGFuY2UpIHtcbiAgaW5zdGFuY2UucmVnaXN0ZXJIZWxwZXIoJ2xvZycsIGZ1bmN0aW9uKC8qIG1lc3NhZ2UsIG9wdGlvbnMgKi8pIHtcbiAgICBsZXQgYXJncyA9IFt1bmRlZmluZWRdLFxuICAgICAgb3B0aW9ucyA9IGFyZ3VtZW50c1thcmd1bWVudHMubGVuZ3RoIC0gMV07XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoIC0gMTsgaSsrKSB7XG4gICAgICBhcmdzLnB1c2goYXJndW1lbnRzW2ldKTtcbiAgICB9XG5cbiAgICBsZXQgbGV2ZWwgPSAxO1xuICAgIGlmIChvcHRpb25zLmhhc2gubGV2ZWwgIT0gbnVsbCkge1xuICAgICAgbGV2ZWwgPSBvcHRpb25zLmhhc2gubGV2ZWw7XG4gICAgfSBlbHNlIGlmIChvcHRpb25zLmRhdGEgJiYgb3B0aW9ucy5kYXRhLmxldmVsICE9IG51bGwpIHtcbiAgICAgIGxldmVsID0gb3B0aW9ucy5kYXRhLmxldmVsO1xuICAgIH1cbiAgICBhcmdzWzBdID0gbGV2ZWw7XG5cbiAgICBpbnN0YW5jZS5sb2coLi4uYXJncyk7XG4gIH0pO1xufVxuIl19\n","'use strict';\n\nexports.__esModule = true;\n\nexports['default'] = function (instance) {\n  instance.registerHelper('lookup', function (obj, field, options) {\n    if (!obj) {\n      // Note for 5.0: Change to \"obj == null\" in 5.0\n      return obj;\n    }\n    return options.lookupProperty(obj, field);\n  });\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMvbG9va3VwLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7cUJBQWUsVUFBUyxRQUFRLEVBQUU7QUFDaEMsVUFBUSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsVUFBUyxHQUFHLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRTtBQUM5RCxRQUFJLENBQUMsR0FBRyxFQUFFOztBQUVSLGFBQU8sR0FBRyxDQUFDO0tBQ1o7QUFDRCxXQUFPLE9BQU8sQ0FBQyxjQUFjLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0dBQzNDLENBQUMsQ0FBQztDQUNKIiwiZmlsZSI6Imxvb2t1cC5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGluc3RhbmNlKSB7XG4gIGluc3RhbmNlLnJlZ2lzdGVySGVscGVyKCdsb29rdXAnLCBmdW5jdGlvbihvYmosIGZpZWxkLCBvcHRpb25zKSB7XG4gICAgaWYgKCFvYmopIHtcbiAgICAgIC8vIE5vdGUgZm9yIDUuMDogQ2hhbmdlIHRvIFwib2JqID09IG51bGxcIiBpbiA1LjBcbiAgICAgIHJldHVybiBvYmo7XG4gICAgfVxuICAgIHJldHVybiBvcHRpb25zLmxvb2t1cFByb3BlcnR5KG9iaiwgZmllbGQpO1xuICB9KTtcbn1cbiJdfQ==\n","'use strict';\n\nexports.__esModule = true;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _utils = require('../utils');\n\nvar _exception = require('../exception');\n\nvar _exception2 = _interopRequireDefault(_exception);\n\nexports['default'] = function (instance) {\n  instance.registerHelper('with', function (context, options) {\n    if (arguments.length != 2) {\n      throw new _exception2['default']('#with requires exactly one argument');\n    }\n    if (_utils.isFunction(context)) {\n      context = context.call(this);\n    }\n\n    var fn = options.fn;\n\n    if (!_utils.isEmpty(context)) {\n      var data = options.data;\n      if (options.data && options.ids) {\n        data = _utils.createFrame(options.data);\n        data.contextPath = _utils.appendContextPath(options.data.contextPath, options.ids[0]);\n      }\n\n      return fn(context, {\n        data: data,\n        blockParams: _utils.blockParams([context], [data && data.contextPath])\n      });\n    } else {\n      return options.inverse(this);\n    }\n  });\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMvd2l0aC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O3FCQU1PLFVBQVU7O3lCQUNLLGNBQWM7Ozs7cUJBRXJCLFVBQVMsUUFBUSxFQUFFO0FBQ2hDLFVBQVEsQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLFVBQVMsT0FBTyxFQUFFLE9BQU8sRUFBRTtBQUN6RCxRQUFJLFNBQVMsQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFO0FBQ3pCLFlBQU0sMkJBQWMscUNBQXFDLENBQUMsQ0FBQztLQUM1RDtBQUNELFFBQUksa0JBQVcsT0FBTyxDQUFDLEVBQUU7QUFDdkIsYUFBTyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDOUI7O0FBRUQsUUFBSSxFQUFFLEdBQUcsT0FBTyxDQUFDLEVBQUUsQ0FBQzs7QUFFcEIsUUFBSSxDQUFDLGVBQVEsT0FBTyxDQUFDLEVBQUU7QUFDckIsVUFBSSxJQUFJLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQztBQUN4QixVQUFJLE9BQU8sQ0FBQyxJQUFJLElBQUksT0FBTyxDQUFDLEdBQUcsRUFBRTtBQUMvQixZQUFJLEdBQUcsbUJBQVksT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2pDLFlBQUksQ0FBQyxXQUFXLEdBQUcseUJBQ2pCLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUN4QixPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUNmLENBQUM7T0FDSDs7QUFFRCxhQUFPLEVBQUUsQ0FBQyxPQUFPLEVBQUU7QUFDakIsWUFBSSxFQUFFLElBQUk7QUFDVixtQkFBVyxFQUFFLG1CQUFZLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO09BQ2hFLENBQUMsQ0FBQztLQUNKLE1BQU07QUFDTCxhQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDOUI7R0FDRixDQUFDLENBQUM7Q0FDSiIsImZpbGUiOiJ3aXRoLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgYXBwZW5kQ29udGV4dFBhdGgsXG4gIGJsb2NrUGFyYW1zLFxuICBjcmVhdGVGcmFtZSxcbiAgaXNFbXB0eSxcbiAgaXNGdW5jdGlvblxufSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQgRXhjZXB0aW9uIGZyb20gJy4uL2V4Y2VwdGlvbic7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGluc3RhbmNlKSB7XG4gIGluc3RhbmNlLnJlZ2lzdGVySGVscGVyKCd3aXRoJywgZnVuY3Rpb24oY29udGV4dCwgb3B0aW9ucykge1xuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoICE9IDIpIHtcbiAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJyN3aXRoIHJlcXVpcmVzIGV4YWN0bHkgb25lIGFyZ3VtZW50Jyk7XG4gICAgfVxuICAgIGlmIChpc0Z1bmN0aW9uKGNvbnRleHQpKSB7XG4gICAgICBjb250ZXh0ID0gY29udGV4dC5jYWxsKHRoaXMpO1xuICAgIH1cblxuICAgIGxldCBmbiA9IG9wdGlvbnMuZm47XG5cbiAgICBpZiAoIWlzRW1wdHkoY29udGV4dCkpIHtcbiAgICAgIGxldCBkYXRhID0gb3B0aW9ucy5kYXRhO1xuICAgICAgaWYgKG9wdGlvbnMuZGF0YSAmJiBvcHRpb25zLmlkcykge1xuICAgICAgICBkYXRhID0gY3JlYXRlRnJhbWUob3B0aW9ucy5kYXRhKTtcbiAgICAgICAgZGF0YS5jb250ZXh0UGF0aCA9IGFwcGVuZENvbnRleHRQYXRoKFxuICAgICAgICAgIG9wdGlvbnMuZGF0YS5jb250ZXh0UGF0aCxcbiAgICAgICAgICBvcHRpb25zLmlkc1swXVxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZm4oY29udGV4dCwge1xuICAgICAgICBkYXRhOiBkYXRhLFxuICAgICAgICBibG9ja1BhcmFtczogYmxvY2tQYXJhbXMoW2NvbnRleHRdLCBbZGF0YSAmJiBkYXRhLmNvbnRleHRQYXRoXSlcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gb3B0aW9ucy5pbnZlcnNlKHRoaXMpO1xuICAgIH1cbiAgfSk7XG59XG4iXX0=\n","'use strict';\n\nexports.__esModule = true;\nexports.createNewLookupObject = createNewLookupObject;\n\nvar _utils = require('../utils');\n\n/**\n * Create a new object with \"null\"-prototype to avoid truthy results on prototype properties.\n * The resulting object can be used with \"object[property]\" to check if a property exists\n * @param {...object} sources a varargs parameter of source objects that will be merged\n * @returns {object}\n */\n\nfunction createNewLookupObject() {\n  for (var _len = arguments.length, sources = Array(_len), _key = 0; _key < _len; _key++) {\n    sources[_key] = arguments[_key];\n  }\n\n  return _utils.extend.apply(undefined, [Object.create(null)].concat(sources));\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2ludGVybmFsL2NyZWF0ZS1uZXctbG9va3VwLW9iamVjdC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztxQkFBdUIsVUFBVTs7Ozs7Ozs7O0FBUTFCLFNBQVMscUJBQXFCLEdBQWE7b0NBQVQsT0FBTztBQUFQLFdBQU87OztBQUM5QyxTQUFPLGdDQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQUssT0FBTyxFQUFDLENBQUM7Q0FDaEQiLCJmaWxlIjoiY3JlYXRlLW5ldy1sb29rdXAtb2JqZWN0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZXh0ZW5kIH0gZnJvbSAnLi4vdXRpbHMnO1xuXG4vKipcbiAqIENyZWF0ZSBhIG5ldyBvYmplY3Qgd2l0aCBcIm51bGxcIi1wcm90b3R5cGUgdG8gYXZvaWQgdHJ1dGh5IHJlc3VsdHMgb24gcHJvdG90eXBlIHByb3BlcnRpZXMuXG4gKiBUaGUgcmVzdWx0aW5nIG9iamVjdCBjYW4gYmUgdXNlZCB3aXRoIFwib2JqZWN0W3Byb3BlcnR5XVwiIHRvIGNoZWNrIGlmIGEgcHJvcGVydHkgZXhpc3RzXG4gKiBAcGFyYW0gey4uLm9iamVjdH0gc291cmNlcyBhIHZhcmFyZ3MgcGFyYW1ldGVyIG9mIHNvdXJjZSBvYmplY3RzIHRoYXQgd2lsbCBiZSBtZXJnZWRcbiAqIEByZXR1cm5zIHtvYmplY3R9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVOZXdMb29rdXBPYmplY3QoLi4uc291cmNlcykge1xuICByZXR1cm4gZXh0ZW5kKE9iamVjdC5jcmVhdGUobnVsbCksIC4uLnNvdXJjZXMpO1xufVxuIl19\n","'use strict';\n\nexports.__esModule = true;\nexports.createProtoAccessControl = createProtoAccessControl;\nexports.resultIsAllowed = resultIsAllowed;\nexports.resetLoggedProperties = resetLoggedProperties;\n// istanbul ignore next\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } }\n\nvar _createNewLookupObject = require('./create-new-lookup-object');\n\nvar _logger = require('../logger');\n\nvar logger = _interopRequireWildcard(_logger);\n\nvar loggedProperties = Object.create(null);\n\nfunction createProtoAccessControl(runtimeOptions) {\n  var defaultMethodWhiteList = Object.create(null);\n  defaultMethodWhiteList['constructor'] = false;\n  defaultMethodWhiteList['__defineGetter__'] = false;\n  defaultMethodWhiteList['__defineSetter__'] = false;\n  defaultMethodWhiteList['__lookupGetter__'] = false;\n\n  var defaultPropertyWhiteList = Object.create(null);\n  // eslint-disable-next-line no-proto\n  defaultPropertyWhiteList['__proto__'] = false;\n\n  return {\n    properties: {\n      whitelist: _createNewLookupObject.createNewLookupObject(defaultPropertyWhiteList, runtimeOptions.allowedProtoProperties),\n      defaultValue: runtimeOptions.allowProtoPropertiesByDefault\n    },\n    methods: {\n      whitelist: _createNewLookupObject.createNewLookupObject(defaultMethodWhiteList, runtimeOptions.allowedProtoMethods),\n      defaultValue: runtimeOptions.allowProtoMethodsByDefault\n    }\n  };\n}\n\nfunction resultIsAllowed(result, protoAccessControl, propertyName) {\n  if (typeof result === 'function') {\n    return checkWhiteList(protoAccessControl.methods, propertyName);\n  } else {\n    return checkWhiteList(protoAccessControl.properties, propertyName);\n  }\n}\n\nfunction checkWhiteList(protoAccessControlForType, propertyName) {\n  if (protoAccessControlForType.whitelist[propertyName] !== undefined) {\n    return protoAccessControlForType.whitelist[propertyName] === true;\n  }\n  if (protoAccessControlForType.defaultValue !== undefined) {\n    return protoAccessControlForType.defaultValue;\n  }\n  logUnexpecedPropertyAccessOnce(propertyName);\n  return false;\n}\n\nfunction logUnexpecedPropertyAccessOnce(propertyName) {\n  if (loggedProperties[propertyName] !== true) {\n    loggedProperties[propertyName] = true;\n    logger.log('error', 'Handlebars: Access has been denied to resolve the property \"' + propertyName + '\" because it is not an \"own property\" of its parent.\\n' + 'You can add a runtime option to disable the check or this warning:\\n' + 'See https://handlebarsjs.com/api-reference/runtime-options.html#options-to-control-prototype-access for details');\n  }\n}\n\nfunction resetLoggedProperties() {\n  Object.keys(loggedProperties).forEach(function (propertyName) {\n    delete loggedProperties[propertyName];\n  });\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2ludGVybmFsL3Byb3RvLWFjY2Vzcy5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O3FDQUFzQyw0QkFBNEI7O3NCQUMxQyxXQUFXOztJQUF2QixNQUFNOztBQUVsQixJQUFNLGdCQUFnQixHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7O0FBRXRDLFNBQVMsd0JBQXdCLENBQUMsY0FBYyxFQUFFO0FBQ3ZELE1BQUksc0JBQXNCLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNqRCx3QkFBc0IsQ0FBQyxhQUFhLENBQUMsR0FBRyxLQUFLLENBQUM7QUFDOUMsd0JBQXNCLENBQUMsa0JBQWtCLENBQUMsR0FBRyxLQUFLLENBQUM7QUFDbkQsd0JBQXNCLENBQUMsa0JBQWtCLENBQUMsR0FBRyxLQUFLLENBQUM7QUFDbkQsd0JBQXNCLENBQUMsa0JBQWtCLENBQUMsR0FBRyxLQUFLLENBQUM7O0FBRW5ELE1BQUksd0JBQXdCLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQzs7QUFFbkQsMEJBQXdCLENBQUMsV0FBVyxDQUFDLEdBQUcsS0FBSyxDQUFDOztBQUU5QyxTQUFPO0FBQ0wsY0FBVSxFQUFFO0FBQ1YsZUFBUyxFQUFFLDZDQUNULHdCQUF3QixFQUN4QixjQUFjLENBQUMsc0JBQXNCLENBQ3RDO0FBQ0Qsa0JBQVksRUFBRSxjQUFjLENBQUMsNkJBQTZCO0tBQzNEO0FBQ0QsV0FBTyxFQUFFO0FBQ1AsZUFBUyxFQUFFLDZDQUNULHNCQUFzQixFQUN0QixjQUFjLENBQUMsbUJBQW1CLENBQ25DO0FBQ0Qsa0JBQVksRUFBRSxjQUFjLENBQUMsMEJBQTBCO0tBQ3hEO0dBQ0YsQ0FBQztDQUNIOztBQUVNLFNBQVMsZUFBZSxDQUFDLE1BQU0sRUFBRSxrQkFBa0IsRUFBRSxZQUFZLEVBQUU7QUFDeEUsTUFBSSxPQUFPLE1BQU0sS0FBSyxVQUFVLEVBQUU7QUFDaEMsV0FBTyxjQUFjLENBQUMsa0JBQWtCLENBQUMsT0FBTyxFQUFFLFlBQVksQ0FBQyxDQUFDO0dBQ2pFLE1BQU07QUFDTCxXQUFPLGNBQWMsQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLEVBQUUsWUFBWSxDQUFDLENBQUM7R0FDcEU7Q0FDRjs7QUFFRCxTQUFTLGNBQWMsQ0FBQyx5QkFBeUIsRUFBRSxZQUFZLEVBQUU7QUFDL0QsTUFBSSx5QkFBeUIsQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLEtBQUssU0FBUyxFQUFFO0FBQ25FLFdBQU8seUJBQXlCLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxLQUFLLElBQUksQ0FBQztHQUNuRTtBQUNELE1BQUkseUJBQXlCLENBQUMsWUFBWSxLQUFLLFNBQVMsRUFBRTtBQUN4RCxXQUFPLHlCQUF5QixDQUFDLFlBQVksQ0FBQztHQUMvQztBQUNELGdDQUE4QixDQUFDLFlBQVksQ0FBQyxDQUFDO0FBQzdDLFNBQU8sS0FBSyxDQUFDO0NBQ2Q7O0FBRUQsU0FBUyw4QkFBOEIsQ0FBQyxZQUFZLEVBQUU7QUFDcEQsTUFBSSxnQkFBZ0IsQ0FBQyxZQUFZLENBQUMsS0FBSyxJQUFJLEVBQUU7QUFDM0Msb0JBQWdCLENBQUMsWUFBWSxDQUFDLEdBQUcsSUFBSSxDQUFDO0FBQ3RDLFVBQU0sQ0FBQyxHQUFHLENBQ1IsT0FBTyxFQUNQLGlFQUErRCxZQUFZLG9JQUNILG9IQUMyQyxDQUNwSCxDQUFDO0dBQ0g7Q0FDRjs7QUFFTSxTQUFTLHFCQUFxQixHQUFHO0FBQ3RDLFFBQU0sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBQSxZQUFZLEVBQUk7QUFDcEQsV0FBTyxnQkFBZ0IsQ0FBQyxZQUFZLENBQUMsQ0FBQztHQUN2QyxDQUFDLENBQUM7Q0FDSiIsImZpbGUiOiJwcm90by1hY2Nlc3MuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGVOZXdMb29rdXBPYmplY3QgfSBmcm9tICcuL2NyZWF0ZS1uZXctbG9va3VwLW9iamVjdCc7XG5pbXBvcnQgKiBhcyBsb2dnZXIgZnJvbSAnLi4vbG9nZ2VyJztcblxuY29uc3QgbG9nZ2VkUHJvcGVydGllcyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVQcm90b0FjY2Vzc0NvbnRyb2wocnVudGltZU9wdGlvbnMpIHtcbiAgbGV0IGRlZmF1bHRNZXRob2RXaGl0ZUxpc3QgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICBkZWZhdWx0TWV0aG9kV2hpdGVMaXN0Wydjb25zdHJ1Y3RvciddID0gZmFsc2U7XG4gIGRlZmF1bHRNZXRob2RXaGl0ZUxpc3RbJ19fZGVmaW5lR2V0dGVyX18nXSA9IGZhbHNlO1xuICBkZWZhdWx0TWV0aG9kV2hpdGVMaXN0WydfX2RlZmluZVNldHRlcl9fJ10gPSBmYWxzZTtcbiAgZGVmYXVsdE1ldGhvZFdoaXRlTGlzdFsnX19sb29rdXBHZXR0ZXJfXyddID0gZmFsc2U7XG5cbiAgbGV0IGRlZmF1bHRQcm9wZXJ0eVdoaXRlTGlzdCA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wcm90b1xuICBkZWZhdWx0UHJvcGVydHlXaGl0ZUxpc3RbJ19fcHJvdG9fXyddID0gZmFsc2U7XG5cbiAgcmV0dXJuIHtcbiAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICB3aGl0ZWxpc3Q6IGNyZWF0ZU5ld0xvb2t1cE9iamVjdChcbiAgICAgICAgZGVmYXVsdFByb3BlcnR5V2hpdGVMaXN0LFxuICAgICAgICBydW50aW1lT3B0aW9ucy5hbGxvd2VkUHJvdG9Qcm9wZXJ0aWVzXG4gICAgICApLFxuICAgICAgZGVmYXVsdFZhbHVlOiBydW50aW1lT3B0aW9ucy5hbGxvd1Byb3RvUHJvcGVydGllc0J5RGVmYXVsdFxuICAgIH0sXG4gICAgbWV0aG9kczoge1xuICAgICAgd2hpdGVsaXN0OiBjcmVhdGVOZXdMb29rdXBPYmplY3QoXG4gICAgICAgIGRlZmF1bHRNZXRob2RXaGl0ZUxpc3QsXG4gICAgICAgIHJ1bnRpbWVPcHRpb25zLmFsbG93ZWRQcm90b01ldGhvZHNcbiAgICAgICksXG4gICAgICBkZWZhdWx0VmFsdWU6IHJ1bnRpbWVPcHRpb25zLmFsbG93UHJvdG9NZXRob2RzQnlEZWZhdWx0XG4gICAgfVxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVzdWx0SXNBbGxvd2VkKHJlc3VsdCwgcHJvdG9BY2Nlc3NDb250cm9sLCBwcm9wZXJ0eU5hbWUpIHtcbiAgaWYgKHR5cGVvZiByZXN1bHQgPT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gY2hlY2tXaGl0ZUxpc3QocHJvdG9BY2Nlc3NDb250cm9sLm1ldGhvZHMsIHByb3BlcnR5TmFtZSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGNoZWNrV2hpdGVMaXN0KHByb3RvQWNjZXNzQ29udHJvbC5wcm9wZXJ0aWVzLCBwcm9wZXJ0eU5hbWUpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNoZWNrV2hpdGVMaXN0KHByb3RvQWNjZXNzQ29udHJvbEZvclR5cGUsIHByb3BlcnR5TmFtZSkge1xuICBpZiAocHJvdG9BY2Nlc3NDb250cm9sRm9yVHlwZS53aGl0ZWxpc3RbcHJvcGVydHlOYW1lXSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIHByb3RvQWNjZXNzQ29udHJvbEZvclR5cGUud2hpdGVsaXN0W3Byb3BlcnR5TmFtZV0gPT09IHRydWU7XG4gIH1cbiAgaWYgKHByb3RvQWNjZXNzQ29udHJvbEZvclR5cGUuZGVmYXVsdFZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gcHJvdG9BY2Nlc3NDb250cm9sRm9yVHlwZS5kZWZhdWx0VmFsdWU7XG4gIH1cbiAgbG9nVW5leHBlY2VkUHJvcGVydHlBY2Nlc3NPbmNlKHByb3BlcnR5TmFtZSk7XG4gIHJldHVybiBmYWxzZTtcbn1cblxuZnVuY3Rpb24gbG9nVW5leHBlY2VkUHJvcGVydHlBY2Nlc3NPbmNlKHByb3BlcnR5TmFtZSkge1xuICBpZiAobG9nZ2VkUHJvcGVydGllc1twcm9wZXJ0eU5hbWVdICE9PSB0cnVlKSB7XG4gICAgbG9nZ2VkUHJvcGVydGllc1twcm9wZXJ0eU5hbWVdID0gdHJ1ZTtcbiAgICBsb2dnZXIubG9nKFxuICAgICAgJ2Vycm9yJyxcbiAgICAgIGBIYW5kbGViYXJzOiBBY2Nlc3MgaGFzIGJlZW4gZGVuaWVkIHRvIHJlc29sdmUgdGhlIHByb3BlcnR5IFwiJHtwcm9wZXJ0eU5hbWV9XCIgYmVjYXVzZSBpdCBpcyBub3QgYW4gXCJvd24gcHJvcGVydHlcIiBvZiBpdHMgcGFyZW50LlxcbmAgK1xuICAgICAgICBgWW91IGNhbiBhZGQgYSBydW50aW1lIG9wdGlvbiB0byBkaXNhYmxlIHRoZSBjaGVjayBvciB0aGlzIHdhcm5pbmc6XFxuYCArXG4gICAgICAgIGBTZWUgaHR0cHM6Ly9oYW5kbGViYXJzanMuY29tL2FwaS1yZWZlcmVuY2UvcnVudGltZS1vcHRpb25zLmh0bWwjb3B0aW9ucy10by1jb250cm9sLXByb3RvdHlwZS1hY2Nlc3MgZm9yIGRldGFpbHNgXG4gICAgKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVzZXRMb2dnZWRQcm9wZXJ0aWVzKCkge1xuICBPYmplY3Qua2V5cyhsb2dnZWRQcm9wZXJ0aWVzKS5mb3JFYWNoKHByb3BlcnR5TmFtZSA9PiB7XG4gICAgZGVsZXRlIGxvZ2dlZFByb3BlcnRpZXNbcHJvcGVydHlOYW1lXTtcbiAgfSk7XG59XG4iXX0=\n","'use strict';\n\nexports.__esModule = true;\nexports.wrapHelper = wrapHelper;\n\nfunction wrapHelper(helper, transformOptionsFn) {\n  if (typeof helper !== 'function') {\n    // This should not happen, but apparently it does in https://github.com/wycats/handlebars.js/issues/1639\n    // We try to make the wrapper least-invasive by not wrapping it, if the helper is not a function.\n    return helper;\n  }\n  var wrapper = function wrapper() /* dynamic arguments */{\n    var options = arguments[arguments.length - 1];\n    arguments[arguments.length - 1] = transformOptionsFn(options);\n    return helper.apply(this, arguments);\n  };\n  return wrapper;\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2ludGVybmFsL3dyYXBIZWxwZXIuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBTyxTQUFTLFVBQVUsQ0FBQyxNQUFNLEVBQUUsa0JBQWtCLEVBQUU7QUFDckQsTUFBSSxPQUFPLE1BQU0sS0FBSyxVQUFVLEVBQUU7OztBQUdoQyxXQUFPLE1BQU0sQ0FBQztHQUNmO0FBQ0QsTUFBSSxPQUFPLEdBQUcsU0FBVixPQUFPLDBCQUFxQztBQUM5QyxRQUFNLE9BQU8sR0FBRyxTQUFTLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNoRCxhQUFTLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsR0FBRyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUM5RCxXQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0dBQ3RDLENBQUM7QUFDRixTQUFPLE9BQU8sQ0FBQztDQUNoQiIsImZpbGUiOiJ3cmFwSGVscGVyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIHdyYXBIZWxwZXIoaGVscGVyLCB0cmFuc2Zvcm1PcHRpb25zRm4pIHtcbiAgaWYgKHR5cGVvZiBoZWxwZXIgIT09ICdmdW5jdGlvbicpIHtcbiAgICAvLyBUaGlzIHNob3VsZCBub3QgaGFwcGVuLCBidXQgYXBwYXJlbnRseSBpdCBkb2VzIGluIGh0dHBzOi8vZ2l0aHViLmNvbS93eWNhdHMvaGFuZGxlYmFycy5qcy9pc3N1ZXMvMTYzOVxuICAgIC8vIFdlIHRyeSB0byBtYWtlIHRoZSB3cmFwcGVyIGxlYXN0LWludmFzaXZlIGJ5IG5vdCB3cmFwcGluZyBpdCwgaWYgdGhlIGhlbHBlciBpcyBub3QgYSBmdW5jdGlvbi5cbiAgICByZXR1cm4gaGVscGVyO1xuICB9XG4gIGxldCB3cmFwcGVyID0gZnVuY3Rpb24oLyogZHluYW1pYyBhcmd1bWVudHMgKi8pIHtcbiAgICBjb25zdCBvcHRpb25zID0gYXJndW1lbnRzW2FyZ3VtZW50cy5sZW5ndGggLSAxXTtcbiAgICBhcmd1bWVudHNbYXJndW1lbnRzLmxlbmd0aCAtIDFdID0gdHJhbnNmb3JtT3B0aW9uc0ZuKG9wdGlvbnMpO1xuICAgIHJldHVybiBoZWxwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgfTtcbiAgcmV0dXJuIHdyYXBwZXI7XG59XG4iXX0=\n","'use strict';\n\nexports.__esModule = true;\n\nvar _utils = require('./utils');\n\nvar logger = {\n  methodMap: ['debug', 'info', 'warn', 'error'],\n  level: 'info',\n\n  // Maps a given level value to the `methodMap` indexes above.\n  lookupLevel: function lookupLevel(level) {\n    if (typeof level === 'string') {\n      var levelMap = _utils.indexOf(logger.methodMap, level.toLowerCase());\n      if (levelMap >= 0) {\n        level = levelMap;\n      } else {\n        level = parseInt(level, 10);\n      }\n    }\n\n    return level;\n  },\n\n  // Can be overridden in the host environment\n  log: function log(level) {\n    level = logger.lookupLevel(level);\n\n    if (typeof console !== 'undefined' && logger.lookupLevel(logger.level) <= level) {\n      var method = logger.methodMap[level];\n      // eslint-disable-next-line no-console\n      if (!console[method]) {\n        method = 'log';\n      }\n\n      for (var _len = arguments.length, message = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n        message[_key - 1] = arguments[_key];\n      }\n\n      console[method].apply(console, message); // eslint-disable-line no-console\n    }\n  }\n};\n\nexports['default'] = logger;\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2xvZ2dlci5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O3FCQUF3QixTQUFTOztBQUVqQyxJQUFJLE1BQU0sR0FBRztBQUNYLFdBQVMsRUFBRSxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQztBQUM3QyxPQUFLLEVBQUUsTUFBTTs7O0FBR2IsYUFBVyxFQUFFLHFCQUFTLEtBQUssRUFBRTtBQUMzQixRQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRTtBQUM3QixVQUFJLFFBQVEsR0FBRyxlQUFRLE1BQU0sQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7QUFDOUQsVUFBSSxRQUFRLElBQUksQ0FBQyxFQUFFO0FBQ2pCLGFBQUssR0FBRyxRQUFRLENBQUM7T0FDbEIsTUFBTTtBQUNMLGFBQUssR0FBRyxRQUFRLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO09BQzdCO0tBQ0Y7O0FBRUQsV0FBTyxLQUFLLENBQUM7R0FDZDs7O0FBR0QsS0FBRyxFQUFFLGFBQVMsS0FBSyxFQUFjO0FBQy9CLFNBQUssR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDOztBQUVsQyxRQUNFLE9BQU8sT0FBTyxLQUFLLFdBQVcsSUFDOUIsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxFQUN6QztBQUNBLFVBQUksTUFBTSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7O0FBRXJDLFVBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUU7QUFDcEIsY0FBTSxHQUFHLEtBQUssQ0FBQztPQUNoQjs7d0NBWG1CLE9BQU87QUFBUCxlQUFPOzs7QUFZM0IsYUFBTyxDQUFDLE1BQU0sT0FBQyxDQUFmLE9BQU8sRUFBWSxPQUFPLENBQUMsQ0FBQztLQUM3QjtHQUNGO0NBQ0YsQ0FBQzs7cUJBRWEsTUFBTSIsImZpbGUiOiJsb2dnZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmRleE9mIH0gZnJvbSAnLi91dGlscyc7XG5cbmxldCBsb2dnZXIgPSB7XG4gIG1ldGhvZE1hcDogWydkZWJ1ZycsICdpbmZvJywgJ3dhcm4nLCAnZXJyb3InXSxcbiAgbGV2ZWw6ICdpbmZvJyxcblxuICAvLyBNYXBzIGEgZ2l2ZW4gbGV2ZWwgdmFsdWUgdG8gdGhlIGBtZXRob2RNYXBgIGluZGV4ZXMgYWJvdmUuXG4gIGxvb2t1cExldmVsOiBmdW5jdGlvbihsZXZlbCkge1xuICAgIGlmICh0eXBlb2YgbGV2ZWwgPT09ICdzdHJpbmcnKSB7XG4gICAgICBsZXQgbGV2ZWxNYXAgPSBpbmRleE9mKGxvZ2dlci5tZXRob2RNYXAsIGxldmVsLnRvTG93ZXJDYXNlKCkpO1xuICAgICAgaWYgKGxldmVsTWFwID49IDApIHtcbiAgICAgICAgbGV2ZWwgPSBsZXZlbE1hcDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxldmVsID0gcGFyc2VJbnQobGV2ZWwsIDEwKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbGV2ZWw7XG4gIH0sXG5cbiAgLy8gQ2FuIGJlIG92ZXJyaWRkZW4gaW4gdGhlIGhvc3QgZW52aXJvbm1lbnRcbiAgbG9nOiBmdW5jdGlvbihsZXZlbCwgLi4ubWVzc2FnZSkge1xuICAgIGxldmVsID0gbG9nZ2VyLmxvb2t1cExldmVsKGxldmVsKTtcblxuICAgIGlmIChcbiAgICAgIHR5cGVvZiBjb25zb2xlICE9PSAndW5kZWZpbmVkJyAmJlxuICAgICAgbG9nZ2VyLmxvb2t1cExldmVsKGxvZ2dlci5sZXZlbCkgPD0gbGV2ZWxcbiAgICApIHtcbiAgICAgIGxldCBtZXRob2QgPSBsb2dnZXIubWV0aG9kTWFwW2xldmVsXTtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICBpZiAoIWNvbnNvbGVbbWV0aG9kXSkge1xuICAgICAgICBtZXRob2QgPSAnbG9nJztcbiAgICAgIH1cbiAgICAgIGNvbnNvbGVbbWV0aG9kXSguLi5tZXNzYWdlKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1jb25zb2xlXG4gICAgfVxuICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBsb2dnZXI7XG4iXX0=\n","'use strict';\n\nexports.__esModule = true;\n\nexports['default'] = function (Handlebars) {\n  /* istanbul ignore next */\n  var root = typeof global !== 'undefined' ? global : window,\n      $Handlebars = root.Handlebars;\n  /* istanbul ignore next */\n  Handlebars.noConflict = function () {\n    if (root.Handlebars === Handlebars) {\n      root.Handlebars = $Handlebars;\n    }\n    return Handlebars;\n  };\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL25vLWNvbmZsaWN0LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7cUJBQWUsVUFBUyxVQUFVLEVBQUU7O0FBRWxDLE1BQUksSUFBSSxHQUFHLE9BQU8sTUFBTSxLQUFLLFdBQVcsR0FBRyxNQUFNLEdBQUcsTUFBTTtNQUN4RCxXQUFXLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQzs7QUFFaEMsWUFBVSxDQUFDLFVBQVUsR0FBRyxZQUFXO0FBQ2pDLFFBQUksSUFBSSxDQUFDLFVBQVUsS0FBSyxVQUFVLEVBQUU7QUFDbEMsVUFBSSxDQUFDLFVBQVUsR0FBRyxXQUFXLENBQUM7S0FDL0I7QUFDRCxXQUFPLFVBQVUsQ0FBQztHQUNuQixDQUFDO0NBQ0giLCJmaWxlIjoibm8tY29uZmxpY3QuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbihIYW5kbGViYXJzKSB7XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIGxldCByb290ID0gdHlwZW9mIGdsb2JhbCAhPT0gJ3VuZGVmaW5lZCcgPyBnbG9iYWwgOiB3aW5kb3csXG4gICAgJEhhbmRsZWJhcnMgPSByb290LkhhbmRsZWJhcnM7XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIEhhbmRsZWJhcnMubm9Db25mbGljdCA9IGZ1bmN0aW9uKCkge1xuICAgIGlmIChyb290LkhhbmRsZWJhcnMgPT09IEhhbmRsZWJhcnMpIHtcbiAgICAgIHJvb3QuSGFuZGxlYmFycyA9ICRIYW5kbGViYXJzO1xuICAgIH1cbiAgICByZXR1cm4gSGFuZGxlYmFycztcbiAgfTtcbn1cbiJdfQ==\n","'use strict';\n\nexports.__esModule = true;\nexports.checkRevision = checkRevision;\nexports.template = template;\nexports.wrapProgram = wrapProgram;\nexports.resolvePartial = resolvePartial;\nexports.invokePartial = invokePartial;\nexports.noop = noop;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\n// istanbul ignore next\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } }\n\nvar _utils = require('./utils');\n\nvar Utils = _interopRequireWildcard(_utils);\n\nvar _exception = require('./exception');\n\nvar _exception2 = _interopRequireDefault(_exception);\n\nvar _base = require('./base');\n\nvar _helpers = require('./helpers');\n\nvar _internalWrapHelper = require('./internal/wrapHelper');\n\nvar _internalProtoAccess = require('./internal/proto-access');\n\nfunction checkRevision(compilerInfo) {\n  var compilerRevision = compilerInfo && compilerInfo[0] || 1,\n      currentRevision = _base.COMPILER_REVISION;\n\n  if (compilerRevision >= _base.LAST_COMPATIBLE_COMPILER_REVISION && compilerRevision <= _base.COMPILER_REVISION) {\n    return;\n  }\n\n  if (compilerRevision < _base.LAST_COMPATIBLE_COMPILER_REVISION) {\n    var runtimeVersions = _base.REVISION_CHANGES[currentRevision],\n        compilerVersions = _base.REVISION_CHANGES[compilerRevision];\n    throw new _exception2['default']('Template was precompiled with an older version of Handlebars than the current runtime. ' + 'Please update your precompiler to a newer version (' + runtimeVersions + ') or downgrade your runtime to an older version (' + compilerVersions + ').');\n  } else {\n    // Use the embedded version info since the runtime doesn't know about this revision yet\n    throw new _exception2['default']('Template was precompiled with a newer version of Handlebars than the current runtime. ' + 'Please update your runtime to a newer version (' + compilerInfo[1] + ').');\n  }\n}\n\nfunction template(templateSpec, env) {\n  /* istanbul ignore next */\n  if (!env) {\n    throw new _exception2['default']('No environment passed to template');\n  }\n  if (!templateSpec || !templateSpec.main) {\n    throw new _exception2['default']('Unknown template object: ' + typeof templateSpec);\n  }\n\n  templateSpec.main.decorator = templateSpec.main_d;\n\n  // Note: Using env.VM references rather than local var references throughout this section to allow\n  // for external users to override these as pseudo-supported APIs.\n  env.VM.checkRevision(templateSpec.compiler);\n\n  // backwards compatibility for precompiled templates with compiler-version 7 (<4.3.0)\n  var templateWasPrecompiledWithCompilerV7 = templateSpec.compiler && templateSpec.compiler[0] === 7;\n\n  function invokePartialWrapper(partial, context, options) {\n    if (options.hash) {\n      context = Utils.extend({}, context, options.hash);\n      if (options.ids) {\n        options.ids[0] = true;\n      }\n    }\n    partial = env.VM.resolvePartial.call(this, partial, context, options);\n\n    var extendedOptions = Utils.extend({}, options, {\n      hooks: this.hooks,\n      protoAccessControl: this.protoAccessControl\n    });\n\n    var result = env.VM.invokePartial.call(this, partial, context, extendedOptions);\n\n    if (result == null && env.compile) {\n      options.partials[options.name] = env.compile(partial, templateSpec.compilerOptions, env);\n      result = options.partials[options.name](context, extendedOptions);\n    }\n    if (result != null) {\n      if (options.indent) {\n        var lines = result.split('\\n');\n        for (var i = 0, l = lines.length; i < l; i++) {\n          if (!lines[i] && i + 1 === l) {\n            break;\n          }\n\n          lines[i] = options.indent + lines[i];\n        }\n        result = lines.join('\\n');\n      }\n      return result;\n    } else {\n      throw new _exception2['default']('The partial ' + options.name + ' could not be compiled when running in runtime-only mode');\n    }\n  }\n\n  // Just add water\n  var container = {\n    strict: function strict(obj, name, loc) {\n      if (!obj || !(name in obj)) {\n        throw new _exception2['default']('\"' + name + '\" not defined in ' + obj, {\n          loc: loc\n        });\n      }\n      return obj[name];\n    },\n    lookupProperty: function lookupProperty(parent, propertyName) {\n      var result = parent[propertyName];\n      if (result == null) {\n        return result;\n      }\n      if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n        return result;\n      }\n\n      if (_internalProtoAccess.resultIsAllowed(result, container.protoAccessControl, propertyName)) {\n        return result;\n      }\n      return undefined;\n    },\n    lookup: function lookup(depths, name) {\n      var len = depths.length;\n      for (var i = 0; i < len; i++) {\n        var result = depths[i] && container.lookupProperty(depths[i], name);\n        if (result != null) {\n          return depths[i][name];\n        }\n      }\n    },\n    lambda: function lambda(current, context) {\n      return typeof current === 'function' ? current.call(context) : current;\n    },\n\n    escapeExpression: Utils.escapeExpression,\n    invokePartial: invokePartialWrapper,\n\n    fn: function fn(i) {\n      var ret = templateSpec[i];\n      ret.decorator = templateSpec[i + '_d'];\n      return ret;\n    },\n\n    programs: [],\n    program: function program(i, data, declaredBlockParams, blockParams, depths) {\n      var programWrapper = this.programs[i],\n          fn = this.fn(i);\n      if (data || depths || blockParams || declaredBlockParams) {\n        programWrapper = wrapProgram(this, i, fn, data, declaredBlockParams, blockParams, depths);\n      } else if (!programWrapper) {\n        programWrapper = this.programs[i] = wrapProgram(this, i, fn);\n      }\n      return programWrapper;\n    },\n\n    data: function data(value, depth) {\n      while (value && depth--) {\n        value = value._parent;\n      }\n      return value;\n    },\n    mergeIfNeeded: function mergeIfNeeded(param, common) {\n      var obj = param || common;\n\n      if (param && common && param !== common) {\n        obj = Utils.extend({}, common, param);\n      }\n\n      return obj;\n    },\n    // An empty object to use as replacement for null-contexts\n    nullContext: Object.seal({}),\n\n    noop: env.VM.noop,\n    compilerInfo: templateSpec.compiler\n  };\n\n  function ret(context) {\n    var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];\n\n    var data = options.data;\n\n    ret._setup(options);\n    if (!options.partial && templateSpec.useData) {\n      data = initData(context, data);\n    }\n    var depths = undefined,\n        blockParams = templateSpec.useBlockParams ? [] : undefined;\n    if (templateSpec.useDepths) {\n      if (options.depths) {\n        depths = context != options.depths[0] ? [context].concat(options.depths) : options.depths;\n      } else {\n        depths = [context];\n      }\n    }\n\n    function main(context /*, options*/) {\n      return '' + templateSpec.main(container, context, container.helpers, container.partials, data, blockParams, depths);\n    }\n\n    main = executeDecorators(templateSpec.main, main, container, options.depths || [], data, blockParams);\n    return main(context, options);\n  }\n\n  ret.isTop = true;\n\n  ret._setup = function (options) {\n    if (!options.partial) {\n      var mergedHelpers = Utils.extend({}, env.helpers, options.helpers);\n      wrapHelpersToPassLookupProperty(mergedHelpers, container);\n      container.helpers = mergedHelpers;\n\n      if (templateSpec.usePartial) {\n        // Use mergeIfNeeded here to prevent compiling global partials multiple times\n        container.partials = container.mergeIfNeeded(options.partials, env.partials);\n      }\n      if (templateSpec.usePartial || templateSpec.useDecorators) {\n        container.decorators = Utils.extend({}, env.decorators, options.decorators);\n      }\n\n      container.hooks = {};\n      container.protoAccessControl = _internalProtoAccess.createProtoAccessControl(options);\n\n      var keepHelperInHelpers = options.allowCallsToHelperMissing || templateWasPrecompiledWithCompilerV7;\n      _helpers.moveHelperToHooks(container, 'helperMissing', keepHelperInHelpers);\n      _helpers.moveHelperToHooks(container, 'blockHelperMissing', keepHelperInHelpers);\n    } else {\n      container.protoAccessControl = options.protoAccessControl; // internal option\n      container.helpers = options.helpers;\n      container.partials = options.partials;\n      container.decorators = options.decorators;\n      container.hooks = options.hooks;\n    }\n  };\n\n  ret._child = function (i, data, blockParams, depths) {\n    if (templateSpec.useBlockParams && !blockParams) {\n      throw new _exception2['default']('must pass block params');\n    }\n    if (templateSpec.useDepths && !depths) {\n      throw new _exception2['default']('must pass parent depths');\n    }\n\n    return wrapProgram(container, i, templateSpec[i], data, 0, blockParams, depths);\n  };\n  return ret;\n}\n\nfunction wrapProgram(container, i, fn, data, declaredBlockParams, blockParams, depths) {\n  function prog(context) {\n    var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];\n\n    var currentDepths = depths;\n    if (depths && context != depths[0] && !(context === container.nullContext && depths[0] === null)) {\n      currentDepths = [context].concat(depths);\n    }\n\n    return fn(container, context, container.helpers, container.partials, options.data || data, blockParams && [options.blockParams].concat(blockParams), currentDepths);\n  }\n\n  prog = executeDecorators(fn, prog, container, depths, data, blockParams);\n\n  prog.program = i;\n  prog.depth = depths ? depths.length : 0;\n  prog.blockParams = declaredBlockParams || 0;\n  return prog;\n}\n\n/**\n * This is currently part of the official API, therefore implementation details should not be changed.\n */\n\nfunction resolvePartial(partial, context, options) {\n  if (!partial) {\n    if (options.name === '@partial-block') {\n      partial = options.data['partial-block'];\n    } else {\n      partial = options.partials[options.name];\n    }\n  } else if (!partial.call && !options.name) {\n    // This is a dynamic partial that returned a string\n    options.name = partial;\n    partial = options.partials[partial];\n  }\n  return partial;\n}\n\nfunction invokePartial(partial, context, options) {\n  // Use the current closure context to save the partial-block if this partial\n  var currentPartialBlock = options.data && options.data['partial-block'];\n  options.partial = true;\n  if (options.ids) {\n    options.data.contextPath = options.ids[0] || options.data.contextPath;\n  }\n\n  var partialBlock = undefined;\n  if (options.fn && options.fn !== noop) {\n    (function () {\n      options.data = _base.createFrame(options.data);\n      // Wrapper function to get access to currentPartialBlock from the closure\n      var fn = options.fn;\n      partialBlock = options.data['partial-block'] = function partialBlockWrapper(context) {\n        var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];\n\n        // Restore the partial-block from the closure for the execution of the block\n        // i.e. the part inside the block of the partial call.\n        options.data = _base.createFrame(options.data);\n        options.data['partial-block'] = currentPartialBlock;\n        return fn(context, options);\n      };\n      if (fn.partials) {\n        options.partials = Utils.extend({}, options.partials, fn.partials);\n      }\n    })();\n  }\n\n  if (partial === undefined && partialBlock) {\n    partial = partialBlock;\n  }\n\n  if (partial === undefined) {\n    throw new _exception2['default']('The partial ' + options.name + ' could not be found');\n  } else if (partial instanceof Function) {\n    return partial(context, options);\n  }\n}\n\nfunction noop() {\n  return '';\n}\n\nfunction initData(context, data) {\n  if (!data || !('root' in data)) {\n    data = data ? _base.createFrame(data) : {};\n    data.root = context;\n  }\n  return data;\n}\n\nfunction executeDecorators(fn, prog, container, depths, data, blockParams) {\n  if (fn.decorator) {\n    var props = {};\n    prog = fn.decorator(prog, props, container, depths && depths[0], data, blockParams, depths);\n    Utils.extend(prog, props);\n  }\n  return prog;\n}\n\nfunction wrapHelpersToPassLookupProperty(mergedHelpers, container) {\n  Object.keys(mergedHelpers).forEach(function (helperName) {\n    var helper = mergedHelpers[helperName];\n    mergedHelpers[helperName] = passLookupPropertyOption(helper, container);\n  });\n}\n\nfunction passLookupPropertyOption(helper, container) {\n  var lookupProperty = container.lookupProperty;\n  return _internalWrapHelper.wrapHelper(helper, function (options) {\n    return Utils.extend({ lookupProperty: lookupProperty }, options);\n  });\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL3J1bnRpbWUuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7cUJBQXVCLFNBQVM7O0lBQXBCLEtBQUs7O3lCQUNLLGFBQWE7Ozs7b0JBTTVCLFFBQVE7O3VCQUNtQixXQUFXOztrQ0FDbEIsdUJBQXVCOzttQ0FJM0MseUJBQXlCOztBQUV6QixTQUFTLGFBQWEsQ0FBQyxZQUFZLEVBQUU7QUFDMUMsTUFBTSxnQkFBZ0IsR0FBRyxBQUFDLFlBQVksSUFBSSxZQUFZLENBQUMsQ0FBQyxDQUFDLElBQUssQ0FBQztNQUM3RCxlQUFlLDBCQUFvQixDQUFDOztBQUV0QyxNQUNFLGdCQUFnQiwyQ0FBcUMsSUFDckQsZ0JBQWdCLDJCQUFxQixFQUNyQztBQUNBLFdBQU87R0FDUjs7QUFFRCxNQUFJLGdCQUFnQiwwQ0FBb0MsRUFBRTtBQUN4RCxRQUFNLGVBQWUsR0FBRyx1QkFBaUIsZUFBZSxDQUFDO1FBQ3ZELGdCQUFnQixHQUFHLHVCQUFpQixnQkFBZ0IsQ0FBQyxDQUFDO0FBQ3hELFVBQU0sMkJBQ0oseUZBQXlGLEdBQ3ZGLHFEQUFxRCxHQUNyRCxlQUFlLEdBQ2YsbURBQW1ELEdBQ25ELGdCQUFnQixHQUNoQixJQUFJLENBQ1AsQ0FBQztHQUNILE1BQU07O0FBRUwsVUFBTSwyQkFDSix3RkFBd0YsR0FDdEYsaURBQWlELEdBQ2pELFlBQVksQ0FBQyxDQUFDLENBQUMsR0FDZixJQUFJLENBQ1AsQ0FBQztHQUNIO0NBQ0Y7O0FBRU0sU0FBUyxRQUFRLENBQUMsWUFBWSxFQUFFLEdBQUcsRUFBRTs7QUFFMUMsTUFBSSxDQUFDLEdBQUcsRUFBRTtBQUNSLFVBQU0sMkJBQWMsbUNBQW1DLENBQUMsQ0FBQztHQUMxRDtBQUNELE1BQUksQ0FBQyxZQUFZLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFO0FBQ3ZDLFVBQU0sMkJBQWMsMkJBQTJCLEdBQUcsT0FBTyxZQUFZLENBQUMsQ0FBQztH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LE1BQU0sQ0FBQyxFQUFFLGNBQWMsRUFBZCxjQUFjLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQztHQUNsRCxDQUFDLENBQUM7Q0FDSiIsImZpbGUiOiJydW50aW1lLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgVXRpbHMgZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgRXhjZXB0aW9uIGZyb20gJy4vZXhjZXB0aW9uJztcbmltcG9ydCB7XG4gIENPTVBJTEVSX1JFVklTSU9OLFxuICBjcmVhdGVGcmFtZSxcbiAgTEFTVF9DT01QQVRJQkxFX0NPTVBJTEVSX1JFVklTSU9OLFxuICBSRVZJU0lPTl9DSEFOR0VTXG59IGZyb20gJy4vYmFzZSc7XG5pbXBvcnQgeyBtb3ZlSGVscGVyVG9Ib29rcyB9IGZyb20gJy4vaGVscGVycyc7XG5pbXBvcnQgeyB3cmFwSGVscGVyIH0gZnJvbSAnLi9pbnRlcm5hbC93cmFwSGVscGVyJztcbmltcG9ydCB7XG4gIGNyZWF0ZVByb3RvQWNjZXNzQ29udHJvbCxcbiAgcmVzdWx0SXNBbGxvd2VkXG59IGZyb20gJy4vaW50ZXJuYWwvcHJvdG8tYWNjZXNzJztcblxuZXhwb3J0IGZ1bmN0aW9uIGNoZWNrUmV2aXNpb24oY29tcGlsZXJJbmZvKSB7XG4gIGNvbnN0IGNvbXBpbGVyUmV2aXNpb24gPSAoY29tcGlsZXJJbmZvICYmIGNvbXBpbGVySW5mb1swXSkgfHwgMSxcbiAgICBjdXJyZW50UmV2aXNpb24gPSBDT01QSUxFUl9SRVZJU0lPTjtcblxuICBpZiAoXG4gICAgY29tcGlsZXJSZXZpc2lvbiA+PSBMQVNUX0NPTVBBVElCTEVfQ09NUElMRVJfUkVWSVNJT04gJiZcbiAgICBjb21waWxlclJldmlzaW9uIDw9IENPTVBJTEVSX1JFVklTSU9OXG4gICkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmIChjb21waWxlclJldmlzaW9uIDwgTEFTVF9DT01QQVRJQkxFX0NPTVBJTEVSX1JFVklTSU9OKSB7XG4gICAgY29uc3QgcnVudGltZVZlcnNpb25zID0gUkVWSVNJT05fQ0hBTkdFU1tjdXJyZW50UmV2aXNpb25dLFxuICAgICAgY29tcGlsZXJWZXJzaW9ucyA9IFJFVklTSU9OX0NIQU5HRVNbY29tcGlsZXJSZXZpc2lvbl07XG4gICAgdGhyb3cgbmV3IEV4Y2VwdGlvbihcbiAgICAgICdUZW1wbGF0ZSB3YXMgcHJlY29tcGlsZWQgd2l0aCBhbiBvbGRlciB2ZXJzaW9uIG9mIEhhbmRsZWJhcnMgdGhhbiB0aGUgY3VycmVudCBydW50aW1lLiAnICtcbiAgICAgICAgJ1BsZWFzZSB1cGRhdGUgeW91ciBwcmVjb21waWxlciB0byBhIG5ld2VyIHZlcnNpb24gKCcgK1xuICAgICAgICBydW50aW1lVmVyc2lvbnMgK1xuICAgICAgICAnKSBvciBkb3duZ3JhZGUgeW91ciBydW50aW1lIHRvIGFuIG9sZGVyIHZlcnNpb24gKCcgK1xuICAgICAgICBjb21waWxlclZlcnNpb25zICtcbiAgICAgICAgJykuJ1xuICAgICk7XG4gIH0gZWxzZSB7XG4gICAgLy8gVXNlIHRoZSBlbWJlZGRlZCB2ZXJzaW9uIGluZm8gc2luY2UgdGhlIHJ1bnRpbWUgZG9lc24ndCBrbm93IGFib3V0IHRoaXMgcmV2aXNpb24geWV0XG4gICAgdGhyb3cgbmV3IEV4Y2VwdGlvbihcbiAgICAgICdUZW1wbGF0ZSB3YXMgcHJlY29tcGlsZWQgd2l0aCBhIG5ld2VyIHZlcnNpb24gb2YgSGFuZGxlYmFycyB0aGFuIHRoZSBjdXJyZW50IHJ1bnRpbWUuICcgK1xuICAgICAgICAnUGxlYXNlIHVwZGF0ZSB5b3VyIHJ1bnRpbWUgdG8gYSBuZXdlciB2ZXJzaW9uICgnICtcbiAgICAgICAgY29tcGlsZXJJbmZvWzFdICtcbiAgICAgICAgJykuJ1xuICAgICk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRlbXBsYXRlKHRlbXBsYXRlU3BlYywgZW52KSB7XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIGlmICghZW52KSB7XG4gICAgdGhyb3cgbmV3IEV4Y2VwdGlvbignTm8gZW52aXJvbm1lbnQgcGFzc2VkIHRvIHRlbXBsYXRlJyk7XG4gIH1cbiAgaWYgKCF0ZW1wbGF0ZVNwZWMgfHwgIXRlbXBsYXRlU3BlYy5tYWluKSB7XG4gICAgdGhyb3cgbmV3IEV4Y2VwdGlvbignVW5rbm93biB0ZW1wbGF0ZSBvYmplY3Q6ICcgKyB0eXBlb2YgdGVtcGxhdGVTcGVjKTtcbiAgfVxuXG4gIHRlbXBsYXRlU3BlYy5tYWluLmRlY29yYXRvciA9IHRlbXBsYXRlU3BlYy5tYWluX2Q7XG5cbiAgLy8gTm90ZTogVXNpbmcgZW52LlZNIHJlZmVyZW5jZXMgcmF0aGVyIHRoYW4gbG9jYWwgdmFyIHJlZmVyZW5jZXMgdGhyb3VnaG91dCB0aGlzIHNlY3Rpb24gdG8gYWxsb3dcbiAgLy8gZm9yIGV4dGVybmFsIHVzZXJzIHRvIG92ZXJyaWRlIHRoZXNlIGFzIHBzZXVkby1zdXBwb3J0ZWQgQVBJcy5cbiAgZW52LlZNLmNoZWNrUmV2aXNpb24odGVtcGxhdGVTcGVjLmNvbXBpbGVyKTtcblxuICAvLyBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSBmb3IgcHJlY29tcGlsZWQgdGVtcGxhdGVzIHdpdGggY29tcGlsZXItdmVyc2lvbiA3ICg8NC4zLjApXG4gIGNvbnN0IHRlbXBsYXRlV2FzUHJlY29tcGlsZWRXaXRoQ29tcGlsZXJWNyA9XG4gICAgdGVtcGxhdGVTcGVjLmNvbXBpbGVyICYmIHRlbXBsYXRlU3BlYy5jb21waWxlclswXSA9PT0gNztcblxuICBmdW5jdGlvbiBpbnZva2VQYXJ0aWFsV3JhcHBlcihwYXJ0aWFsLCBjb250ZXh0LCBvcHRpb25zKSB7XG4gICAgaWYgKG9wdGlvbnMuaGFzaCkge1xuICAgICAgY29udGV4dCA9IFV0aWxzLmV4dGVuZCh7fSwgY29udGV4dCwgb3B0aW9ucy5oYXNoKTtcbiAgICAgIGlmIChvcHRpb25zLmlkcykge1xuICAgICAgICBvcHRpb25zLmlkc1swXSA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIHBhcnRpYWwgPSBlbnYuVk0ucmVzb2x2ZVBhcnRpYWwuY2FsbCh0aGlzLCBwYXJ0aWFsLCBjb250ZXh0LCBvcHRpb25zKTtcblxuICAgIGxldCBleHRlbmRlZE9wdGlvbnMgPSBVdGlscy5leHRlbmQoe30sIG9wdGlvbnMsIHtcbiAgICAgIGhvb2tzOiB0aGlzLmhvb2tzLFxuICAgICAgcHJvdG9BY2Nlc3NDb250cm9sOiB0aGlzLnByb3RvQWNjZXNzQ29udHJvbFxuICAgIH0pO1xuXG4gICAgbGV0IHJlc3VsdCA9IGVudi5WTS5pbnZva2VQYXJ0aWFsLmNhbGwoXG4gICAgICB0aGlzLFxuICAgICAgcGFydGlhbCxcbiAgICAgIGNvbnRleHQsXG4gICAgICBleHRlbmRlZE9wdGlvbnNcbiAgICApO1xuXG4gICAgaWYgKHJlc3VsdCA9PSBudWxsICYmIGVudi5jb21waWxlKSB7XG4gICAgICBvcHRpb25zLnBhcnRpYWxzW29wdGlvbnMubmFtZV0gPSBlbnYuY29tcGlsZShcbiAgICAgICAgcGFydGlhbCxcbiAgICAgICAgdGVtcGxhdGVTcGVjLmNvbXBpbGVyT3B0aW9ucyxcbiAgICAgICAgZW52XG4gICAgICApO1xuICAgICAgcmVzdWx0ID0gb3B0aW9ucy5wYXJ0aWFsc1tvcHRpb25zLm5hbWVdKGNvbnRleHQsIGV4dGVuZGVkT3B0aW9ucyk7XG4gICAgfVxuICAgIGlmIChyZXN1bHQgIT0gbnVsbCkge1xuICAgICAgaWYgKG9wdGlvbnMuaW5kZW50KSB7XG4gICAgICAgIGxldCBsaW5lcyA9IHJlc3VsdC5zcGxpdCgnXFxuJyk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwLCBsID0gbGluZXMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgICAgaWYgKCFsaW5lc1tpXSAmJiBpICsgMSA9PT0gbCkge1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgbGluZXNbaV0gPSBvcHRpb25zLmluZGVudCArIGxpbmVzW2ldO1xuICAgICAgICB9XG4gICAgICAgIHJlc3VsdCA9IGxpbmVzLmpvaW4oJ1xcbicpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbihcbiAgICAgICAgJ1RoZSBwYXJ0aWFsICcgK1xuICAgICAgICAgIG9wdGlvbnMubmFtZSArXG4gICAgICAgICAgJyBjb3VsZCBub3QgYmUgY29tcGlsZWQgd2hlbiBydW5uaW5nIGluIHJ1bnRpbWUtb25seSBtb2RlJ1xuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAvLyBKdXN0IGFkZCB3YXRlclxuICBsZXQgY29udGFpbmVyID0ge1xuICAgIHN0cmljdDogZnVuY3Rpb24ob2JqLCBuYW1lLCBsb2MpIHtcbiAgICAgIGlmICghb2JqIHx8ICEobmFtZSBpbiBvYmopKSB7XG4gICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ1wiJyArIG5hbWUgKyAnXCIgbm90IGRlZmluZWQgaW4gJyArIG9iaiwge1xuICAgICAgICAgIGxvYzogbG9jXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG9ialtuYW1lXTtcbiAgICB9LFxuICAgIGxvb2t1cFByb3BlcnR5OiBmdW5jdGlvbihwYXJlbnQsIHByb3BlcnR5TmFtZSkge1xuICAgICAgbGV0IHJlc3VsdCA9IHBhcmVudFtwcm9wZXJ0eU5hbWVdO1xuICAgICAgaWYgKHJlc3VsdCA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9XG4gICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHBhcmVudCwgcHJvcGVydHlOYW1lKSkge1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuXG4gICAgICBpZiAocmVzdWx0SXNBbGxvd2VkKHJlc3VsdCwgY29udGFpbmVyLnByb3RvQWNjZXNzQ29udHJvbCwgcHJvcGVydHlOYW1lKSkge1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9LFxuICAgIGxvb2t1cDogZnVuY3Rpb24oZGVwdGhzLCBuYW1lKSB7XG4gICAgICBjb25zdCBsZW4gPSBkZXB0aHMubGVuZ3RoO1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgICAgICBsZXQgcmVzdWx0ID0gZGVwdGhzW2ldICYmIGNvbnRhaW5lci5sb29rdXBQcm9wZXJ0eShkZXB0aHNbaV0sIG5hbWUpO1xuICAgICAgICBpZiAocmVzdWx0ICE9IG51bGwpIHtcbiAgICAgICAgICByZXR1cm4gZGVwdGhzW2ldW25hbWVdO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBsYW1iZGE6IGZ1bmN0aW9uKGN1cnJlbnQsIGNvbnRleHQpIHtcbiAgICAgIHJldHVybiB0eXBlb2YgY3VycmVudCA9PT0gJ2Z1bmN0aW9uJyA/IGN1cnJlbnQuY2FsbChjb250ZXh0KSA6IGN1cnJlbnQ7XG4gICAgfSxcblxuICAgIGVzY2FwZUV4cHJlc3Npb246IFV0aWxzLmVzY2FwZUV4cHJlc3Npb24sXG4gICAgaW52b2tlUGFydGlhbDogaW52b2tlUGFydGlhbFdyYXBwZXIsXG5cbiAgICBmbjogZnVuY3Rpb24oaSkge1xuICAgICAgbGV0IHJldCA9IHRlbXBsYXRlU3BlY1tpXTtcbiAgICAgIHJldC5kZWNvcmF0b3IgPSB0ZW1wbGF0ZVNwZWNbaSArICdfZCddO1xuICAgICAgcmV0dXJuIHJldDtcbiAgICB9LFxuXG4gICAgcHJvZ3JhbXM6IFtdLFxuICAgIHByb2dyYW06IGZ1bmN0aW9uKGksIGRhdGEsIGRlY2xhcmVkQmxvY2tQYXJhbXMsIGJsb2NrUGFyYW1zLCBkZXB0aHMpIHtcbiAgICAgIGxldCBwcm9ncmFtV3JhcHBlciA9IHRoaXMucHJvZ3JhbXNbaV0sXG4gICAgICAgIGZuID0gdGhpcy5mbihpKTtcbiAgICAgIGlmIChkYXRhIHx8IGRlcHRocyB8fCBibG9ja1BhcmFtcyB8fCBkZWNsYXJlZEJsb2NrUGFyYW1zKSB7XG4gICAgICAgIHByb2dyYW1XcmFwcGVyID0gd3JhcFByb2dyYW0oXG4gICAgICAgICAgdGhpcyxcbiAgICAgICAgICBpLFxuICAgICAgICAgIGZuLFxuICAgICAgICAgIGRhdGEsXG4gICAgICAgICAgZGVjbGFyZWRCbG9ja1BhcmFtcyxcbiAgICAgICAgICBibG9ja1BhcmFtcyxcbiAgICAgICAgICBkZXB0aHNcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSBpZiAoIXByb2dyYW1XcmFwcGVyKSB7XG4gICAgICAgIHByb2dyYW1XcmFwcGVyID0gdGhpcy5wcm9ncmFtc1tpXSA9IHdyYXBQcm9ncmFtKHRoaXMsIGksIGZuKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBwcm9ncmFtV3JhcHBlcjtcbiAgICB9LFxuXG4gICAgZGF0YTogZnVuY3Rpb24odmFsdWUsIGRlcHRoKSB7XG4gICAgICB3aGlsZSAodmFsdWUgJiYgZGVwdGgtLSkge1xuICAgICAgICB2YWx1ZSA9IHZhbHVlLl9wYXJlbnQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfSxcbiAgICBtZXJnZUlmTmVlZGVkOiBmdW5jdGlvbihwYXJhbSwgY29tbW9uKSB7XG4gICAgICBsZXQgb2JqID0gcGFyYW0gfHwgY29tbW9uO1xuXG4gICAgICBpZiAocGFyYW0gJiYgY29tbW9uICYmIHBhcmFtICE9PSBjb21tb24pIHtcbiAgICAgICAgb2JqID0gVXRpbHMuZXh0ZW5kKHt9LCBjb21tb24sIHBhcmFtKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG9iajtcbiAgICB9LFxuICAgIC8vIEFuIGVtcHR5IG9iamVjdCB0byB1c2UgYXMgcmVwbGFjZW1lbnQgZm9yIG51bGwtY29udGV4dHNcbiAgICBudWxsQ29udGV4dDogT2JqZWN0LnNlYWwoe30pLFxuXG4gICAgbm9vcDogZW52LlZNLm5vb3AsXG4gICAgY29tcGlsZXJJbmZvOiB0ZW1wbGF0ZVNwZWMuY29tcGlsZXJcbiAgfTtcblxuICBmdW5jdGlvbiByZXQoY29udGV4dCwgb3B0aW9ucyA9IHt9KSB7XG4gICAgbGV0IGRhdGEgPSBvcHRpb25zLmRhdGE7XG5cbiAgICByZXQuX3NldHVwKG9wdGlvbnMpO1xuICAgIGlmICghb3B0aW9ucy5wYXJ0aWFsICYmIHRlbXBsYXRlU3BlYy51c2VEYXRhKSB7XG4gICAgICBkYXRhID0gaW5pdERhdGEoY29udGV4dCwgZGF0YSk7XG4gICAgfVxuICAgIGxldCBkZXB0aHMsXG4gICAgICBibG9ja1BhcmFtcyA9IHRlbXBsYXRlU3BlYy51c2VCbG9ja1BhcmFtcyA/IFtdIDogdW5kZWZpbmVkO1xuICAgIGlmICh0ZW1wbGF0ZVNwZWMudXNlRGVwdGhzKSB7XG4gICAgICBpZiAob3B0aW9ucy5kZXB0aHMpIHtcbiAgICAgICAgZGVwdGhzID1cbiAgICAgICAgICBjb250ZXh0ICE9IG9wdGlvbnMuZGVwdGhzWzBdXG4gICAgICAgICAgICA/IFtjb250ZXh0XS5jb25jYXQob3B0aW9ucy5kZXB0aHMpXG4gICAgICAgICAgICA6IG9wdGlvbnMuZGVwdGhzO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGVwdGhzID0gW2NvbnRleHRdO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIG1haW4oY29udGV4dCAvKiwgb3B0aW9ucyovKSB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICAnJyArXG4gICAgICAgIHRlbXBsYXRlU3BlYy5tYWluKFxuICAgICAgICAgIGNvbnRhaW5lcixcbiAgICAgICAgICBjb250ZXh0LFxuICAgICAgICAgIGNvbnRhaW5lci5oZWxwZXJzLFxuICAgICAgICAgIGNvbnRhaW5lci5wYXJ0aWFscyxcbiAgICAgICAgICBkYXRhLFxuICAgICAgICAgIGJsb2NrUGFyYW1zLFxuICAgICAgICAgIGRlcHRoc1xuICAgICAgICApXG4gICAgICApO1xuICAgIH1cblxuICAgIG1haW4gPSBleGVjdXRlRGVjb3JhdG9ycyhcbiAgICAgIHRlbXBsYXRlU3BlYy5tYWluLFxuICAgICAgbWFpbixcbiAgICAgIGNvbnRhaW5lcixcbiAgICAgIG9wdGlvbnMuZGVwdGhzIHx8IFtdLFxuICAgICAgZGF0YSxcbiAgICAgIGJsb2NrUGFyYW1zXG4gICAgKTtcbiAgICByZXR1cm4gbWFpbihjb250ZXh0LCBvcHRpb25zKTtcbiAgfVxuXG4gIHJldC5pc1RvcCA9IHRydWU7XG5cbiAgcmV0Ll9zZXR1cCA9IGZ1bmN0aW9uKG9wdGlvbnMpIHtcbiAgICBpZiAoIW9wdGlvbnMucGFydGlhbCkge1xuICAgICAgbGV0IG1lcmdlZEhlbHBlcnMgPSBVdGlscy5leHRlbmQoe30sIGVudi5oZWxwZXJzLCBvcHRpb25zLmhlbHBlcnMpO1xuICAgICAgd3JhcEhlbHBlcnNUb1Bhc3NMb29rdXBQcm9wZXJ0eShtZXJnZWRIZWxwZXJzLCBjb250YWluZXIpO1xuICAgICAgY29udGFpbmVyLmhlbHBlcnMgPSBtZXJnZWRIZWxwZXJzO1xuXG4gICAgICBpZiAodGVtcGxhdGVTcGVjLnVzZVBhcnRpYWwpIHtcbiAgICAgICAgLy8gVXNlIG1lcmdlSWZOZWVkZWQgaGVyZSB0byBwcmV2ZW50IGNvbXBpbGluZyBnbG9iYWwgcGFydGlhbHMgbXVsdGlwbGUgdGltZXNcbiAgICAgICAgY29udGFpbmVyLnBhcnRpYWxzID0gY29udGFpbmVyLm1lcmdlSWZOZWVkZWQoXG4gICAgICAgICAgb3B0aW9ucy5wYXJ0aWFscyxcbiAgICAgICAgICBlbnYucGFydGlhbHNcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGlmICh0ZW1wbGF0ZVNwZWMudXNlUGFydGlhbCB8fCB0ZW1wbGF0ZVNwZWMudXNlRGVjb3JhdG9ycykge1xuICAgICAgICBjb250YWluZXIuZGVjb3JhdG9ycyA9IFV0aWxzLmV4dGVuZChcbiAgICAgICAgICB7fSxcbiAgICAgICAgICBlbnYuZGVjb3JhdG9ycyxcbiAgICAgICAgICBvcHRpb25zLmRlY29yYXRvcnNcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgY29udGFpbmVyLmhvb2tzID0ge307XG4gICAgICBjb250YWluZXIucHJvdG9BY2Nlc3NDb250cm9sID0gY3JlYXRlUHJvdG9BY2Nlc3NDb250cm9sKG9wdGlvbnMpO1xuXG4gICAgICBsZXQga2VlcEhlbHBlckluSGVscGVycyA9XG4gICAgICAgIG9wdGlvbnMuYWxsb3dDYWxsc1RvSGVscGVyTWlzc2luZyB8fFxuICAgICAgICB0ZW1wbGF0ZVdhc1ByZWNvbXBpbGVkV2l0aENvbXBpbGVyVjc7XG4gICAgICBtb3ZlSGVscGVyVG9Ib29rcyhjb250YWluZXIsICdoZWxwZXJNaXNzaW5nJywga2VlcEhlbHBlckluSGVscGVycyk7XG4gICAgICBtb3ZlSGVscGVyVG9Ib29rcyhjb250YWluZXIsICdibG9ja0hlbHBlck1pc3NpbmcnLCBrZWVwSGVscGVySW5IZWxwZXJzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29udGFpbmVyLnByb3RvQWNjZXNzQ29udHJvbCA9IG9wdGlvbnMucHJvdG9BY2Nlc3NDb250cm9sOyAvLyBpbnRlcm5hbCBvcHRpb25cbiAgICAgIGNvbnRhaW5lci5oZWxwZXJzID0gb3B0aW9ucy5oZWxwZXJzO1xuICAgICAgY29udGFpbmVyLnBhcnRpYWxzID0gb3B0aW9ucy5wYXJ0aWFscztcbiAgICAgIGNvbnRhaW5lci5kZWNvcmF0b3JzID0gb3B0aW9ucy5kZWNvcmF0b3JzO1xuICAgICAgY29udGFpbmVyLmhvb2tzID0gb3B0aW9ucy5ob29rcztcbiAgICB9XG4gIH07XG5cbiAgcmV0Ll9jaGlsZCA9IGZ1bmN0aW9uKGksIGRhdGEsIGJsb2NrUGFyYW1zLCBkZXB0aHMpIHtcbiAgICBpZiAodGVtcGxhdGVTcGVjLnVzZUJsb2NrUGFyYW1zICYmICFibG9ja1BhcmFtcykge1xuICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbignbXVzdCBwYXNzIGJsb2NrIHBhcmFtcycpO1xuICAgIH1cbiAgICBpZiAodGVtcGxhdGVTcGVjLnVzZURlcHRocyAmJiAhZGVwdGhzKSB7XG4gICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCdtdXN0IHBhc3MgcGFyZW50IGRlcHRocycpO1xuICAgIH1cblxuICAgIHJldHVybiB3cmFwUHJvZ3JhbShcbiAgICAgIGNvbnRhaW5lcixcbiAgICAgIGksXG4gICAgICB0ZW1wbGF0ZVNwZWNbaV0sXG4gICAgICBkYXRhLFxuICAgICAgMCxcbiAgICAgIGJsb2NrUGFyYW1zLFxuICAgICAgZGVwdGhzXG4gICAgKTtcbiAgfTtcbiAgcmV0dXJuIHJldDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdyYXBQcm9ncmFtKFxuICBjb250YWluZXIsXG4gIGksXG4gIGZuLFxuICBkYXRhLFxuICBkZWNsYXJlZEJsb2NrUGFyYW1zLFxuICBibG9ja1BhcmFtcyxcbiAgZGVwdGhzXG4pIHtcbiAgZnVuY3Rpb24gcHJvZyhjb250ZXh0LCBvcHRpb25zID0ge30pIHtcbiAgICBsZXQgY3VycmVudERlcHRocyA9IGRlcHRocztcbiAgICBpZiAoXG4gICAgICBkZXB0aHMgJiZcbiAgICAgIGNvbnRleHQgIT0gZGVwdGhzWzBdICYmXG4gICAgICAhKGNvbnRleHQgPT09IGNvbnRhaW5lci5udWxsQ29udGV4dCAmJiBkZXB0aHNbMF0gPT09IG51bGwpXG4gICAgKSB7XG4gICAgICBjdXJyZW50RGVwdGhzID0gW2NvbnRleHRdLmNvbmNhdChkZXB0aHMpO1xuICAgIH1cblxuICAgIHJldHVybiBmbihcbiAgICAgIGNvbnRhaW5lcixcbiAgICAgIGNvbnRleHQsXG4gICAgICBjb250YWluZXIuaGVscGVycyxcbiAgICAgIGNvbnRhaW5lci5wYXJ0aWFscyxcbiAgICAgIG9wdGlvbnMuZGF0YSB8fCBkYXRhLFxuICAgICAgYmxvY2tQYXJhbXMgJiYgW29wdGlvbnMuYmxvY2tQYXJhbXNdLmNvbmNhdChibG9ja1BhcmFtcyksXG4gICAgICBjdXJyZW50RGVwdGhzXG4gICAgKTtcbiAgfVxuXG4gIHByb2cgPSBleGVjdXRlRGVjb3JhdG9ycyhmbiwgcHJvZywgY29udGFpbmVyLCBkZXB0aHMsIGRhdGEsIGJsb2NrUGFyYW1zKTtcblxuICBwcm9nLnByb2dyYW0gPSBpO1xuICBwcm9nLmRlcHRoID0gZGVwdGhzID8gZGVwdGhzLmxlbmd0aCA6IDA7XG4gIHByb2cuYmxvY2tQYXJhbXMgPSBkZWNsYXJlZEJsb2NrUGFyYW1zIHx8IDA7XG4gIHJldHVybiBwcm9nO1xufVxuXG4vKipcbiAqIFRoaXMgaXMgY3VycmVudGx5IHBhcnQgb2YgdGhlIG9mZmljaWFsIEFQSSwgdGhlcmVmb3JlIGltcGxlbWVudGF0aW9uIGRldGFpbHMgc2hvdWxkIG5vdCBiZSBjaGFuZ2VkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZVBhcnRpYWwocGFydGlhbCwgY29udGV4dCwgb3B0aW9ucykge1xuICBpZiAoIXBhcnRpYWwpIHtcbiAgICBpZiAob3B0aW9ucy5uYW1lID09PSAnQHBhcnRpYWwtYmxvY2snKSB7XG4gICAgICBwYXJ0aWFsID0gb3B0aW9ucy5kYXRhWydwYXJ0aWFsLWJsb2NrJ107XG4gICAgfSBlbHNlIHtcbiAgICAgIHBhcnRpYWwgPSBvcHRpb25zLnBhcnRpYWxzW29wdGlvbnMubmFtZV07XG4gICAgfVxuICB9IGVsc2UgaWYgKCFwYXJ0aWFsLmNhbGwgJiYgIW9wdGlvbnMubmFtZSkge1xuICAgIC8vIFRoaXMgaXMgYSBkeW5hbWljIHBhcnRpYWwgdGhhdCByZXR1cm5lZCBhIHN0cmluZ1xuICAgIG9wdGlvbnMubmFtZSA9IHBhcnRpYWw7XG4gICAgcGFydGlhbCA9IG9wdGlvbnMucGFydGlhbHNbcGFydGlhbF07XG4gIH1cbiAgcmV0dXJuIHBhcnRpYWw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnZva2VQYXJ0aWFsKHBhcnRpYWwsIGNvbnRleHQsIG9wdGlvbnMpIHtcbiAgLy8gVXNlIHRoZSBjdXJyZW50IGNsb3N1cmUgY29udGV4dCB0byBzYXZlIHRoZSBwYXJ0aWFsLWJsb2NrIGlmIHRoaXMgcGFydGlhbFxuICBjb25zdCBjdXJyZW50UGFydGlhbEJsb2NrID0gb3B0aW9ucy5kYXRhICYmIG9wdGlvbnMuZGF0YVsncGFydGlhbC1ibG9jayddO1xuICBvcHRpb25zLnBhcnRpYWwgPSB0cnVlO1xuICBpZiAob3B0aW9ucy5pZHMpIHtcbiAgICBvcHRpb25zLmRhdGEuY29udGV4dFBhdGggPSBvcHRpb25zLmlkc1swXSB8fCBvcHRpb25zLmRhdGEuY29udGV4dFBhdGg7XG4gIH1cblxuICBsZXQgcGFydGlhbEJsb2NrO1xuICBpZiAob3B0aW9ucy5mbiAmJiBvcHRpb25zLmZuICE9PSBub29wKSB7XG4gICAgb3B0aW9ucy5kYXRhID0gY3JlYXRlRnJhbWUob3B0aW9ucy5kYXRhKTtcbiAgICAvLyBXcmFwcGVyIGZ1bmN0aW9uIHRvIGdldCBhY2Nlc3MgdG8gY3VycmVudFBhcnRpYWxCbG9jayBmcm9tIHRoZSBjbG9zdXJlXG4gICAgbGV0IGZuID0gb3B0aW9ucy5mbjtcbiAgICBwYXJ0aWFsQmxvY2sgPSBvcHRpb25zLmRhdGFbJ3BhcnRpYWwtYmxvY2snXSA9IGZ1bmN0aW9uIHBhcnRpYWxCbG9ja1dyYXBwZXIoXG4gICAgICBjb250ZXh0LFxuICAgICAgb3B0aW9ucyA9IHt9XG4gICAgKSB7XG4gICAgICAvLyBSZXN0b3JlIHRoZSBwYXJ0aWFsLWJsb2NrIGZyb20gdGhlIGNsb3N1cmUgZm9yIHRoZSBleGVjdXRpb24gb2YgdGhlIGJsb2NrXG4gICAgICAvLyBpLmUuIHRoZSBwYXJ0IGluc2lkZSB0aGUgYmxvY2sgb2YgdGhlIHBhcnRpYWwgY2FsbC5cbiAgICAgIG9wdGlvbnMuZGF0YSA9IGNyZWF0ZUZyYW1lKG9wdGlvbnMuZGF0YSk7XG4gICAgICBvcHRpb25zLmRhdGFbJ3BhcnRpYWwtYmxvY2snXSA9IGN1cnJlbnRQYXJ0aWFsQmxvY2s7XG4gICAgICByZXR1cm4gZm4oY29udGV4dCwgb3B0aW9ucyk7XG4gICAgfTtcbiAgICBpZiAoZm4ucGFydGlhbHMpIHtcbiAgICAgIG9wdGlvbnMucGFydGlhbHMgPSBVdGlscy5leHRlbmQoe30sIG9wdGlvbnMucGFydGlhbHMsIGZuLnBhcnRpYWxzKTtcbiAgICB9XG4gIH1cblxuICBpZiAocGFydGlhbCA9PT0gdW5kZWZpbmVkICYmIHBhcnRpYWxCbG9jaykge1xuICAgIHBhcnRpYWwgPSBwYXJ0aWFsQmxvY2s7XG4gIH1cblxuICBpZiAocGFydGlhbCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgdGhyb3cgbmV3IEV4Y2VwdGlvbignVGhlIHBhcnRpYWwgJyArIG9wdGlvbnMubmFtZSArICcgY291bGQgbm90IGJlIGZvdW5kJyk7XG4gIH0gZWxzZSBpZiAocGFydGlhbCBpbnN0YW5jZW9mIEZ1bmN0aW9uKSB7XG4gICAgcmV0dXJuIHBhcnRpYWwoY29udGV4dCwgb3B0aW9ucyk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5vb3AoKSB7XG4gIHJldHVybiAnJztcbn1cblxuZnVuY3Rpb24gaW5pdERhdGEoY29udGV4dCwgZGF0YSkge1xuICBpZiAoIWRhdGEgfHwgISgncm9vdCcgaW4gZGF0YSkpIHtcbiAgICBkYXRhID0gZGF0YSA/IGNyZWF0ZUZyYW1lKGRhdGEpIDoge307XG4gICAgZGF0YS5yb290ID0gY29udGV4dDtcbiAgfVxuICByZXR1cm4gZGF0YTtcbn1cblxuZnVuY3Rpb24gZXhlY3V0ZURlY29yYXRvcnMoZm4sIHByb2csIGNvbnRhaW5lciwgZGVwdGhzLCBkYXRhLCBibG9ja1BhcmFtcykge1xuICBpZiAoZm4uZGVjb3JhdG9yKSB7XG4gICAgbGV0IHByb3BzID0ge307XG4gICAgcHJvZyA9IGZuLmRlY29yYXRvcihcbiAgICAgIHByb2csXG4gICAgICBwcm9wcyxcbiAgICAgIGNvbnRhaW5lcixcbiAgICAgIGRlcHRocyAmJiBkZXB0aHNbMF0sXG4gICAgICBkYXRhLFxuICAgICAgYmxvY2tQYXJhbXMsXG4gICAgICBkZXB0aHNcbiAgICApO1xuICAgIFV0aWxzLmV4dGVuZChwcm9nLCBwcm9wcyk7XG4gIH1cbiAgcmV0dXJuIHByb2c7XG59XG5cbmZ1bmN0aW9uIHdyYXBIZWxwZXJzVG9QYXNzTG9va3VwUHJvcGVydHkobWVyZ2VkSGVscGVycywgY29udGFpbmVyKSB7XG4gIE9iamVjdC5rZXlzKG1lcmdlZEhlbHBlcnMpLmZvckVhY2goaGVscGVyTmFtZSA9PiB7XG4gICAgbGV0IGhlbHBlciA9IG1lcmdlZEhlbHBlcnNbaGVscGVyTmFtZV07XG4gICAgbWVyZ2VkSGVscGVyc1toZWxwZXJOYW1lXSA9IHBhc3NMb29rdXBQcm9wZXJ0eU9wdGlvbihoZWxwZXIsIGNvbnRhaW5lcik7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBwYXNzTG9va3VwUHJvcGVydHlPcHRpb24oaGVscGVyLCBjb250YWluZXIpIHtcbiAgY29uc3QgbG9va3VwUHJvcGVydHkgPSBjb250YWluZXIubG9va3VwUHJvcGVydHk7XG4gIHJldHVybiB3cmFwSGVscGVyKGhlbHBlciwgb3B0aW9ucyA9PiB7XG4gICAgcmV0dXJuIFV0aWxzLmV4dGVuZCh7IGxvb2t1cFByb3BlcnR5IH0sIG9wdGlvbnMpO1xuICB9KTtcbn1cbiJdfQ==\n","// Build out our basic SafeString type\n'use strict';\n\nexports.__esModule = true;\nfunction SafeString(string) {\n  this.string = string;\n}\n\nSafeString.prototype.toString = SafeString.prototype.toHTML = function () {\n  return '' + this.string;\n};\n\nexports['default'] = SafeString;\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL3NhZmUtc3RyaW5nLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFDQSxTQUFTLFVBQVUsQ0FBQyxNQUFNLEVBQUU7QUFDMUIsTUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7Q0FDdEI7O0FBRUQsVUFBVSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsWUFBVztBQUN2RSxTQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO0NBQ3pCLENBQUM7O3FCQUVhLFVBQVUiLCJmaWxlIjoic2FmZS1zdHJpbmcuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBCdWlsZCBvdXQgb3VyIGJhc2ljIFNhZmVTdHJpbmcgdHlwZVxuZnVuY3Rpb24gU2FmZVN0cmluZyhzdHJpbmcpIHtcbiAgdGhpcy5zdHJpbmcgPSBzdHJpbmc7XG59XG5cblNhZmVTdHJpbmcucHJvdG90eXBlLnRvU3RyaW5nID0gU2FmZVN0cmluZy5wcm90b3R5cGUudG9IVE1MID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiAnJyArIHRoaXMuc3RyaW5nO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgU2FmZVN0cmluZztcbiJdfQ==\n","'use strict';\n\nexports.__esModule = true;\nexports.extend = extend;\nexports.indexOf = indexOf;\nexports.escapeExpression = escapeExpression;\nexports.isEmpty = isEmpty;\nexports.createFrame = createFrame;\nexports.blockParams = blockParams;\nexports.appendContextPath = appendContextPath;\nvar escape = {\n  '&': '&amp;',\n  '<': '&lt;',\n  '>': '&gt;',\n  '\"': '&quot;',\n  \"'\": '&#x27;',\n  '`': '&#x60;',\n  '=': '&#x3D;'\n};\n\nvar badChars = /[&<>\"'`=]/g,\n    possible = /[&<>\"'`=]/;\n\nfunction escapeChar(chr) {\n  return escape[chr];\n}\n\nfunction extend(obj /* , ...source */) {\n  for (var i = 1; i < arguments.length; i++) {\n    for (var key in arguments[i]) {\n      if (Object.prototype.hasOwnProperty.call(arguments[i], key)) {\n        obj[key] = arguments[i][key];\n      }\n    }\n  }\n\n  return obj;\n}\n\nvar toString = Object.prototype.toString;\n\nexports.toString = toString;\n// Sourced from lodash\n// https://github.com/bestiejs/lodash/blob/master/LICENSE.txt\n/* eslint-disable func-style */\nvar isFunction = function isFunction(value) {\n  return typeof value === 'function';\n};\n// fallback for older versions of Chrome and Safari\n/* istanbul ignore next */\nif (isFunction(/x/)) {\n  exports.isFunction = isFunction = function (value) {\n    return typeof value === 'function' && toString.call(value) === '[object Function]';\n  };\n}\nexports.isFunction = isFunction;\n\n/* eslint-enable func-style */\n\n/* istanbul ignore next */\nvar isArray = Array.isArray || function (value) {\n  return value && typeof value === 'object' ? toString.call(value) === '[object Array]' : false;\n};\n\nexports.isArray = isArray;\n// Older IE versions do not directly support indexOf so we must implement our own, sadly.\n\nfunction indexOf(array, value) {\n  for (var i = 0, len = array.length; i < len; i++) {\n    if (array[i] === value) {\n      return i;\n    }\n  }\n  return -1;\n}\n\nfunction escapeExpression(string) {\n  if (typeof string !== 'string') {\n    // don't escape SafeStrings, since they're already safe\n    if (string && string.toHTML) {\n      return string.toHTML();\n    } else if (string == null) {\n      return '';\n    } else if (!string) {\n      return string + '';\n    }\n\n    // Force a string conversion as this will be done by the append regardless and\n    // the regex test will do this transparently behind the scenes, causing issues if\n    // an object's to string has escaped characters in it.\n    string = '' + string;\n  }\n\n  if (!possible.test(string)) {\n    return string;\n  }\n  return string.replace(badChars, escapeChar);\n}\n\nfunction isEmpty(value) {\n  if (!value && value !== 0) {\n    return true;\n  } else if (isArray(value) && value.length === 0) {\n    return true;\n  } else {\n    return false;\n  }\n}\n\nfunction createFrame(object) {\n  var frame = extend({}, object);\n  frame._parent = object;\n  return frame;\n}\n\nfunction blockParams(params, ids) {\n  params.path = ids;\n  return params;\n}\n\nfunction appendContextPath(contextPath, id) {\n  return (contextPath ? contextPath + '.' : '') + id;\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL3V0aWxzLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQSxJQUFNLE1BQU0sR0FBRztBQUNiLEtBQUcsRUFBRSxPQUFPO0FBQ1osS0FBRyxFQUFFLE1BQU07QUFDWCxLQUFHLEVBQUUsTUFBTTtBQUNYLEtBQUcsRUFBRSxRQUFRO0FBQ2IsS0FBRyxFQUFFLFFBQVE7QUFDYixLQUFHLEVBQUUsUUFBUTtBQUNiLEtBQUcsRUFBRSxRQUFRO0NBQ2QsQ0FBQzs7QUFFRixJQUFNLFFBQVEsR0FBRyxZQUFZO0lBQzNCLFFBQVEsR0FBRyxXQUFXLENBQUM7O0FBRXpCLFNBQVMsVUFBVSxDQUFDLEdBQUcsRUFBRTtBQUN2QixTQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztDQUNwQjs7QUFFTSxTQUFTLE1BQU0sQ0FBQyxHQUFHLG9CQUFvQjtBQUM1QyxPQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUN6QyxTQUFLLElBQUksR0FBRyxJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRTtBQUM1QixVQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUU7QUFDM0QsV0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztPQUM5QjtLQUNGO0dBQ0Y7O0FBRUQsU0FBTyxHQUFHLENBQUM7Q0FDWjs7QUFFTSxJQUFJLFFBQVEsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQzs7Ozs7O0FBS2hELElBQUksVUFBVSxHQUFHLG9CQUFTLEtBQUssRUFBRTtBQUMvQixTQUFPLE9BQU8sS0FBSyxLQUFLLFVBQVUsQ0FBQztDQUNwQyxDQUFDOzs7QUFHRixJQUFJLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRTtBQUNuQixVQU9PLFVBQVUsR0FQakIsVUFBVSxHQUFHLFVBQVMsS0FBSyxFQUFFO0FBQzNCLFdBQ0UsT0FBTyxLQUFLLEtBQUssVUFBVSxJQUMzQixRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLG1CQUFtQixDQUM1QztHQUNILENBQUM7Q0FDSDtRQUNRLFVBQVUsR0FBVixVQUFVOzs7OztBQUlaLElBQU0sT0FBTyxHQUNsQixLQUFLLENBQUMsT0FBTyxJQUNiLFVBQVMsS0FBSyxFQUFFO0FBQ2QsU0FBTyxLQUFLLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxHQUNyQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLGdCQUFnQixHQUN6QyxLQUFLLENBQUM7Q0FDWCxDQUFDOzs7OztBQUdHLFNBQVMsT0FBTyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUU7QUFDcEMsT0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUNoRCxRQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxLQUFLLEVBQUU7QUFDdEIsYUFBTyxDQUFDLENBQUM7S0FDVjtHQUNGO0FBQ0QsU0FBTyxDQUFDLENBQUMsQ0FBQztDQUNYOztBQUVNLFNBQVMsZ0JBQWdCLENBQUMsTUFBTSxFQUFFO0FBQ3ZDLE1BQUksT0FBTyxNQUFNLEtBQUssUUFBUSxFQUFFOztBQUU5QixRQUFJLE1BQU0sSUFBSSxNQUFNLENBQUMsTUFBTSxFQUFFO0FBQzNCLGFBQU8sTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDO0tBQ3hCLE1BQU0sSUFBSSxNQUFNLElBQUksSUFBSSxFQUFFO0FBQ3pCLGFBQU8sRUFBRSxDQUFDO0tBQ1gsTUFBTSxJQUFJLENBQUMsTUFBTSxFQUFFO0FBQ2xCLGFBQU8sTUFBTSxHQUFHLEVBQUUsQ0FBQztLQUNwQjs7Ozs7QUFLRCxVQUFNLEdBQUcsRUFBRSxHQUFHLE1BQU0sQ0FBQztHQUN0Qjs7QUFFRCxNQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRTtBQUMxQixXQUFPLE1BQU0sQ0FBQztHQUNmO0FBQ0QsU0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQztDQUM3Qzs7QUFFTSxTQUFTLE9BQU8sQ0FBQyxLQUFLLEVBQUU7QUFDN0IsTUFBSSxDQUFDLEtBQUssSUFBSSxLQUFLLEtBQUssQ0FBQyxFQUFFO0FBQ3pCLFdBQU8sSUFBSSxDQUFDO0dBQ2IsTUFBTSxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtBQUMvQyxXQUFPLElBQUksQ0FBQztHQUNiLE1BQU07QUFDTCxXQUFPLEtBQUssQ0FBQztHQUNkO0NBQ0Y7O0FBRU0sU0FBUyxXQUFXLENBQUMsTUFBTSxFQUFFO0FBQ2xDLE1BQUksS0FBSyxHQUFHLE1BQU0sQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDL0IsT0FBSyxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7QUFDdkIsU0FBTyxLQUFLLENBQUM7Q0FDZDs7QUFFTSxTQUFTLFdBQVcsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFO0FBQ3ZDLFFBQU0sQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDO0FBQ2xCLFNBQU8sTUFBTSxDQUFDO0NBQ2Y7O0FBRU0sU0FBUyxpQkFBaUIsQ0FBQyxXQUFXLEVBQUUsRUFBRSxFQUFFO0FBQ2pELFNBQU8sQ0FBQyxXQUFXLEdBQUcsV0FBVyxHQUFHLEdBQUcsR0FBRyxFQUFFLENBQUEsR0FBSSxFQUFFLENBQUM7Q0FDcEQiLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBlc2NhcGUgPSB7XG4gICcmJzogJyZhbXA7JyxcbiAgJzwnOiAnJmx0OycsXG4gICc+JzogJyZndDsnLFxuICAnXCInOiAnJnF1b3Q7JyxcbiAgXCInXCI6ICcmI3gyNzsnLFxuICAnYCc6ICcmI3g2MDsnLFxuICAnPSc6ICcmI3gzRDsnXG59O1xuXG5jb25zdCBiYWRDaGFycyA9IC9bJjw+XCInYD1dL2csXG4gIHBvc3NpYmxlID0gL1smPD5cIidgPV0vO1xuXG5mdW5jdGlvbiBlc2NhcGVDaGFyKGNocikge1xuICByZXR1cm4gZXNjYXBlW2Nocl07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBleHRlbmQob2JqIC8qICwgLi4uc291cmNlICovKSB7XG4gIGZvciAobGV0IGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgZm9yIChsZXQga2V5IGluIGFyZ3VtZW50c1tpXSkge1xuICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChhcmd1bWVudHNbaV0sIGtleSkpIHtcbiAgICAgICAgb2JqW2tleV0gPSBhcmd1bWVudHNbaV1ba2V5XTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gb2JqO1xufVxuXG5leHBvcnQgbGV0IHRvU3RyaW5nID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZztcblxuLy8gU291cmNlZCBmcm9tIGxvZGFzaFxuLy8gaHR0cHM6Ly9naXRodWIuY29tL2Jlc3RpZWpzL2xvZGFzaC9ibG9iL21hc3Rlci9MSUNFTlNFLnR4dFxuLyogZXNsaW50LWRpc2FibGUgZnVuYy1zdHlsZSAqL1xubGV0IGlzRnVuY3Rpb24gPSBmdW5jdGlvbih2YWx1ZSkge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nO1xufTtcbi8vIGZhbGxiYWNrIGZvciBvbGRlciB2ZXJzaW9ucyBvZiBDaHJvbWUgYW5kIFNhZmFyaVxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbmlmIChpc0Z1bmN0aW9uKC94LykpIHtcbiAgaXNGdW5jdGlvbiA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJyAmJlxuICAgICAgdG9TdHJpbmcuY2FsbCh2YWx1ZSkgPT09ICdbb2JqZWN0IEZ1bmN0aW9uXSdcbiAgICApO1xuICB9O1xufVxuZXhwb3J0IHsgaXNGdW5jdGlvbiB9O1xuLyogZXNsaW50LWVuYWJsZSBmdW5jLXN0eWxlICovXG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5leHBvcnQgY29uc3QgaXNBcnJheSA9XG4gIEFycmF5LmlzQXJyYXkgfHxcbiAgZnVuY3Rpb24odmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWUgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0J1xuICAgICAgPyB0b1N0cmluZy5jYWxsKHZhbHVlKSA9PT0gJ1tvYmplY3QgQXJyYXldJ1xuICAgICAgOiBmYWxzZTtcbiAgfTtcblxuLy8gT2xkZXIgSUUgdmVyc2lvbnMgZG8gbm90IGRpcmVjdGx5IHN1cHBvcnQgaW5kZXhPZiBzbyB3ZSBtdXN0IGltcGxlbWVudCBvdXIgb3duLCBzYWRseS5cbmV4cG9ydCBmdW5jdGlvbiBpbmRleE9mKGFycmF5LCB2YWx1ZSkge1xuICBmb3IgKGxldCBpID0gMCwgbGVuID0gYXJyYXkubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICBpZiAoYXJyYXlbaV0gPT09IHZhbHVlKSB7XG4gICAgICByZXR1cm4gaTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIC0xO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXNjYXBlRXhwcmVzc2lvbihzdHJpbmcpIHtcbiAgaWYgKHR5cGVvZiBzdHJpbmcgIT09ICdzdHJpbmcnKSB7XG4gICAgLy8gZG9uJ3QgZXNjYXBlIFNhZmVTdHJpbmdzLCBzaW5jZSB0aGV5J3JlIGFscmVhZHkgc2FmZVxuICAgIGlmIChzdHJpbmcgJiYgc3RyaW5nLnRvSFRNTCkge1xuICAgICAgcmV0dXJuIHN0cmluZy50b0hUTUwoKTtcbiAgICB9IGVsc2UgaWYgKHN0cmluZyA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfSBlbHNlIGlmICghc3RyaW5nKSB7XG4gICAgICByZXR1cm4gc3RyaW5nICsgJyc7XG4gICAgfVxuXG4gICAgLy8gRm9yY2UgYSBzdHJpbmcgY29udmVyc2lvbiBhcyB0aGlzIHdpbGwgYmUgZG9uZSBieSB0aGUgYXBwZW5kIHJlZ2FyZGxlc3MgYW5kXG4gICAgLy8gdGhlIHJlZ2V4IHRlc3Qgd2lsbCBkbyB0aGlzIHRyYW5zcGFyZW50bHkgYmVoaW5kIHRoZSBzY2VuZXMsIGNhdXNpbmcgaXNzdWVzIGlmXG4gICAgLy8gYW4gb2JqZWN0J3MgdG8gc3RyaW5nIGhhcyBlc2NhcGVkIGNoYXJhY3RlcnMgaW4gaXQuXG4gICAgc3RyaW5nID0gJycgKyBzdHJpbmc7XG4gIH1cblxuICBpZiAoIXBvc3NpYmxlLnRlc3Qoc3RyaW5nKSkge1xuICAgIHJldHVybiBzdHJpbmc7XG4gIH1cbiAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKGJhZENoYXJzLCBlc2NhcGVDaGFyKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzRW1wdHkodmFsdWUpIHtcbiAgaWYgKCF2YWx1ZSAmJiB2YWx1ZSAhPT0gMCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9IGVsc2UgaWYgKGlzQXJyYXkodmFsdWUpICYmIHZhbHVlLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRnJhbWUob2JqZWN0KSB7XG4gIGxldCBmcmFtZSA9IGV4dGVuZCh7fSwgb2JqZWN0KTtcbiAgZnJhbWUuX3BhcmVudCA9IG9iamVjdDtcbiAgcmV0dXJuIGZyYW1lO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYmxvY2tQYXJhbXMocGFyYW1zLCBpZHMpIHtcbiAgcGFyYW1zLnBhdGggPSBpZHM7XG4gIHJldHVybiBwYXJhbXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhcHBlbmRDb250ZXh0UGF0aChjb250ZXh0UGF0aCwgaWQpIHtcbiAgcmV0dXJuIChjb250ZXh0UGF0aCA/IGNvbnRleHRQYXRoICsgJy4nIDogJycpICsgaWQ7XG59XG4iXX0=\n","// Create a simple path alias to allow browserify to resolve\n// the runtime on a supported path.\nmodule.exports = require('./dist/cjs/handlebars.runtime')['default'];\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","// extracted by mini-css-extract-plugin","/**\n * @fileoverview The entry file of fullcalendar\n * @author NHN FE Development Lab\n */\n\n'use strict';\n\nvar util = require('tui-code-snippet');\nvar Calendar = require('./js/factory/calendar');\n\nrequire('./css/main.styl');\nrequire('./js/view/template/helper');\n\n// for jquery\nif (global.jQuery) {\n    global.jQuery.fn.tuiCalendar = function() {\n        var options, instance;\n\n        var el = this.get(0);\n        var args = Array.prototype.slice.apply(arguments);\n\n        if (el) {\n            options = util.pick(args, 0) || {};\n\n            instance = global.jQuery.data(el, 'tuiCalendar');\n\n            if (instance) {\n                if (typeof options === 'string' && instance[options]) {\n                    return instance[options].apply(instance, args.slice(1));\n                }\n            } else {\n                instance = new Calendar(el, options);\n                global.jQuery.data(el, 'tuiCalendar', instance);\n            }\n        }\n\n        return this;\n    };\n}\n\nmodule.exports = Calendar;\n","/**\n * @fileoverview Utility module for array sort, binary search.\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\nvar util = require('tui-code-snippet');\nvar datetime = require('../common/datetime');\n\n/**\n * A module for sorting array.\n * @module array\n */\n\n/**********\n * Search\n **********/\n\n/**\n * search item index using binary search algorithm.\n *\n * the array must be sorted.\n * @param {array} arr array to search.\n * @param {(string|number|boolean)} search value to search.\n * @param {function} [fn] iteratee for retrieve each element's value to search.\n * @param {function} [compare] compare function for specific sort status. default is string ascending.\n * @returns {number} The number of item index searched. return negative number when no exist that item.\n * It can use insert index after Math.abs()\n * @example\n *\n * var arr = [1, 3, 7, 11, 15, 23];\n *\n * function sortNumber(a, b) {\n *     return a - b;\n * }\n *\n * bsearch(arr, 15, null, sortNumber);    // 4\n * bsearch(arr, 21, null, sortNumber);    // -5\n *\n * arr.splice(Math.abs(bsearch(arr, 21, null, sortNumber)), 0, 21);\n * // [1, 2, 7, 11, 15, 21, 23]\n */\nfunction bsearch(arr, search, fn, compare) {\n    var minIndex = 0,\n        maxIndex = arr.length - 1,\n        currentIndex,\n        value,\n        comp;\n\n    compare = compare || stringASC;\n\n    while (minIndex <= maxIndex) {\n        currentIndex = (minIndex + maxIndex) / 2 | 0; // Math.floor\n        value = fn ? fn(arr[currentIndex]) : arr[currentIndex];\n        comp = compare(value, search);\n\n        if (comp < 0) {\n            minIndex = currentIndex + 1;\n        } else if (comp > 0) {\n            maxIndex = currentIndex - 1;\n        } else {\n            return currentIndex;\n        }\n    }\n\n    return ~maxIndex;\n}\n\n/**********\n * Compare Functions\n **********/\n\n/**\n * compare function for array sort.\n *\n * sort array by ascending.\n * @param {boolean} a The boolean to compare\n * @param {boolean} b The boolean to compare.\n * @returns {number} Result of comparison.\n */\nfunction booleanASC(a, b) {\n    if (a !== b) {\n        return a ? -1 : 1;\n    }\n\n    return 0;\n}\n\n/**\n * compare function for array sort.\n *\n * sort array by descending.\n * @param {boolean} a The boolean to compare\n * @param {boolean} b The boolean to compare.\n * @returns {number} Result of comparison.\n */\nfunction booleanDESC(a, b) {\n    if (a !== b) {\n        return a ? 1 : -1;\n    }\n\n    return 0;\n}\n\n/**\n * compare function for array sort.\n *\n * sort array by number ascending.\n * @param {number} _a The number to compare.\n * @param {number} _b The number to compare.\n * @returns {number} Result of comparison.\n */\nfunction numberASC(_a, _b) {\n    var a = Number(_a),\n        b = Number(_b);\n\n    return a - b;\n}\n\n/**\n * compare function for array sort.\n *\n * sort array by number descending.\n * @param {number} _a The number to compare.\n * @param {number} _b The number to compare.\n * @returns {number} Result of comparison.\n */\nfunction numberDESC(_a, _b) {\n    var a = Number(_a),\n        b = Number(_b);\n\n    return b - a;\n}\n\n/**\n * compare function for array sort.\n *\n * sort array by string ascending\n * @param {string} _a The string to compare.\n * @param {string} _b The string to compare.\n * @returns {number} Result of comparison.\n */\nfunction stringASC(_a, _b) {\n    var a = String(_a),\n        b = String(_b);\n\n    if (a > b) {\n        return 1;\n    }\n    if (a < b) {\n        return -1;\n    }\n\n    return 0;\n}\n\n/**\n * compare function for array sort.\n *\n * sort array by string descending\n * @param {string} _a The string to compare.\n * @param {string} _b The string to compare.\n * @returns {number} Result of comparison.\n */\nfunction stringDESC(_a, _b) {\n    var a = String(_a),\n        b = String(_b);\n\n    if (a > b) {\n        return -1;\n    }\n    if (a < b) {\n        return 1;\n    }\n\n    return 0;\n}\n\n/**\n * compare function for array sort.\n *\n * sort array by string ascending with ignore case.\n * @param {string} _a The string to compare.\n * @param {string} _b The string to compare.\n * @returns {number} Result of comparison.\n */\nfunction stringASCIgnoreCase(_a, _b) {\n    var a = String(_a).toLowerCase(),\n        b = String(_b).toLowerCase();\n\n    if (a > b) {\n        return 1;\n    }\n    if (a < b) {\n        return -1;\n    }\n\n    return 0;\n}\n\n/**\n * compare function for array sort.\n *\n * sort array by string descending with ignore case.\n * @param {string} _a The string to compare.\n * @param {string} _b The string to compare.\n * @returns {number} Result of comparison.\n */\nfunction stringDESCIgnoreCase(_a, _b) {\n    var a = String(_a).toLowerCase(),\n        b = String(_b).toLowerCase();\n\n    if (a > b) {\n        return -1;\n    }\n    if (a < b) {\n        return 1;\n    }\n\n    return 0;\n}\n\n/**\n * Compare schedule models for sort.\n *\n * 1. all day schedule first.\n * 2. early start.\n * 3. longest duration.\n * 4. early created.\n * @param {Schedule|ScheduleViewModel} a The object schedule instance.\n * @param {Schedule|ScheduleViewModel} b The object schedule instance.\n * @returns {number} Result of comparison.\n */\nfunction scheduleASC(a, b) {\n    var durationA, durationB;\n    var allDayCompare, startsCompare;\n    var modelA = a.valueOf();\n    var modelB = b.valueOf();\n\n    allDayCompare = booleanASC(modelA.isAllDay || a.hasMultiDates, modelB.isAllDay || b.hasMultiDates);\n\n    if (allDayCompare) {\n        return allDayCompare;\n    }\n\n    startsCompare = datetime.compare(a.getStarts(), b.getStarts());\n\n    if (startsCompare) {\n        return startsCompare;\n    }\n\n    durationA = a.duration();\n    durationB = b.duration();\n\n    if (durationA < durationB) {\n        return 1;\n    }\n    if (durationA > durationB) {\n        return -1;\n    }\n\n    return util.stamp(modelA) - util.stamp(modelB);\n}\n\nmodule.exports = {\n    bsearch: bsearch,\n    compare: {\n        schedule: {\n            asc: scheduleASC\n        },\n        bool: {\n            asc: booleanASC,\n            desc: booleanDESC\n        },\n        num: {\n            asc: numberASC,\n            desc: numberDESC\n        },\n        str: {\n            asc: stringASC,\n            desc: stringDESC,\n            ascIgnoreCase: stringASCIgnoreCase,\n            descIgnoreCase: stringDESCIgnoreCase\n        }\n    }\n};\n","/**\n * @fileoverview Add autoscroll feature to elements that prevented text selection.\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\nvar util = require('tui-code-snippet');\nvar domevent = require('../common/domevent');\nvar domutil = require('../common/domutil');\nvar Point = require('../common/point');\n\nvar SCROLL_INTERVAL = 30;\nvar SCROLL_MAX = 15;\nvar SCROLL_CLICK_INCREASED = 2; // In IE, the offset of the actual UI pixel when the scroll bar is clicked is offset.\n\n/**\n * Add autoscroll feature to elements that prevented text selection.\n * @constructor\n * @param {HTMLElement} container - HTMLElement to add autoscroll features.\n */\nfunction AutoScroll(container) {\n    /**\n     * @type {HTMLElement}\n     */\n    this.container = container;\n\n    /**\n     * @type {AutoScroll.DIRECTION}\n     */\n    this._direction = AutoScroll.DIRECTION.INSIDE;\n\n    /**\n     * @type {number}\n     */\n    this._offset = 0;\n\n    /**\n     * interval to scrolling\n     * @type {number}\n     */\n    this._intervalID = 0;\n\n    domevent.on(container, {\n        'mousedown': this._onMouseDown\n    }, this);\n}\n\n/**\n * @enum\n */\nAutoScroll.DIRECTION = {\n    INSIDE: 0,\n    TOP: 1,\n    RIGHT: 2,\n    BOTTOM: 3,\n    LEFT: 4\n};\n\n/**\n * Instance destroy method.\n */\nAutoScroll.prototype.destroy = function() {\n    domevent.off(this.container, {\n        'mousedown': this._onMouseDown,\n        'mousemove': this._onMouseMove,\n        'mouseup': this._onMouseUp\n    }, this);\n\n    window.clearInterval(this._intervalID);\n    this._intervalID = this._direction = this.container = null;\n};\n\n/**\n * Normalize ClientRect and calculate each position of edges.\n * @param {ClientRect} clientRect - ClientRect object of element.\n * @returns {object} edges.\n */\nAutoScroll.prototype._getEdgePositions = function(clientRect) {\n    return {\n        top: clientRect.top,\n        right: clientRect.left + clientRect.width,\n        bottom: clientRect.bottom,\n        left: clientRect.left\n    };\n};\n\n/**\n * Get element real size (\"real size\" -> size without scrollbar)\n * @param {HTMLElement} el - element want to know real size (\"real size\" -> size without scrollbar)\n * @returns {number[]} real size [width, height]\n */\nAutoScroll.prototype.getRealSize = function(el) {\n    var computed = domutil.getComputedStyle(el),\n        border,\n        padding;\n\n    border = parseFloat(computed.getPropertyValue('border-top-width')) +\n        parseFloat(computed.getPropertyValue('border-bottom-width'));\n    padding = parseFloat(computed.getPropertyValue('padding-top')) +\n        parseFloat(computed.getPropertyValue('padding-bottom'));\n\n    return [el.clientWidth + border + padding, el.clientHeight + border + padding];\n};\n\n/**\n * Check supplied element has scrollbar.\n * @param {HTMLElement} el - element want to know has scrollbar.\n * @returns {boolean[]} has scrollbar? [horizontal, vertical]\n */\nAutoScroll.prototype.hasScrollbar = function(el) {\n    var realSize = this.getRealSize(el);\n\n    return [\n        el.offsetWidth > Math.ceil(realSize[0]),\n        el.offsetHeight > Math.ceil(realSize[1])\n    ];\n};\n\n/**\n * @param {HTMLElement} el - element want to know.\n * @param {MouseEvent} mouseEvent - mouse event object.\n * @returns {boolean} mouse pointer is on the scrollbar?\n */\nAutoScroll.prototype.isOnScrollbar = function(el, mouseEvent) {\n    var realSize = this.getRealSize(el),\n        pos = domevent.getMousePosition(mouseEvent, el),\n        mouseInScrollbar = false;\n\n    mouseInScrollbar = (realSize[0] - SCROLL_CLICK_INCREASED < pos[0] ||\n                        realSize[1] - SCROLL_CLICK_INCREASED < pos[1]);\n\n    return mouseInScrollbar;\n};\n\n/**\n * MouseDown event handler\n * @param {MouseEvent} mouseDownEvent - mouse down event\n */\nAutoScroll.prototype._onMouseDown = function(mouseDownEvent) {\n    // only primary button can start drag.\n    if (domevent.getMouseButton(mouseDownEvent) !== 0) {\n        return;\n    }\n\n    // deactivate autoscroll feature when mouse is on the scrollbar. (IE)\n    if (util.browser.msie && this.isOnScrollbar(this.container, mouseDownEvent)) {\n        return;\n    }\n\n    window.clearInterval(this._intervalID);\n    this._intervalID = window.setInterval(this._onTick.bind(this), SCROLL_INTERVAL);\n\n    domevent.on(global, {\n        'mousemove': this._onMouseMove,\n        'mouseup': this._onMouseUp\n    }, this);\n};\n\n/**\n * MouseMove event handler\n * @param {MouseEvent} mouseEvent - mouse move event object.\n */\nAutoScroll.prototype._onMouseMove = function(mouseEvent) {\n    var edge = this._getEdgePositions(this.container.getBoundingClientRect()),\n        pos = Point.n(domevent.getMousePosition(mouseEvent));\n\n    if (pos.y >= edge.top && pos.y <= edge.bottom &&\n        pos.x >= edge.left && pos.x <= edge.right) {\n        this._direction = AutoScroll.DIRECTION.INSIDE;\n\n        return;\n    }\n\n    if (pos.y < edge.top) {\n        this._direction = AutoScroll.DIRECTION.TOP;\n        this._offset = edge.top - pos.y;\n\n        return;\n    }\n\n    if (pos.y > edge.bottom) {\n        this._direction = AutoScroll.DIRECTION.BOTTOM;\n        this._offset = pos.y - edge.bottom;\n\n        return;\n    }\n\n    if (pos.x < edge.left) {\n        this._direction = AutoScroll.DIRECTION.LEFT;\n        this._offset = edge.left - pos.x;\n\n        return;\n    }\n\n    this._direction = AutoScroll.DIRECTION.RIGHT;\n    this._offset = pos.x - edge.right;\n};\n\n/**\n * MouseUp event handler.\n */\nAutoScroll.prototype._onMouseUp = function() {\n    window.clearInterval(this._intervalID);\n    this._intervalID = 0;\n    this._direction = AutoScroll.DIRECTION.INSIDE;\n    this._offset = 0;\n\n    domevent.off(global, {\n        'mousemove': this._onMouseMove,\n        'mouseup': this._onMouseUp\n    }, this);\n};\n\n/**\n * Interval tick event handler\n */\nAutoScroll.prototype._onTick = function() {\n    var direction = this._direction,\n        container,\n        factor;\n\n    if (!direction) {\n        return;\n    }\n\n    container = this.container;\n    factor = Math.min(this._offset, SCROLL_MAX);\n\n    switch (direction) {\n        case AutoScroll.DIRECTION.TOP:\n            container.scrollTop -= factor;\n            break;\n        case AutoScroll.DIRECTION.RIGHT:\n            container.scrollLeft += factor;\n            break;\n        case AutoScroll.DIRECTION.BOTTOM:\n            container.scrollTop += factor;\n            break;\n        default:\n            container.scrollLeft -= factor;\n            break;\n    }\n};\n\nmodule.exports = AutoScroll;\n","/**\n * @fileoverview Common collections.\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\nvar util = require('tui-code-snippet');\nvar forEachProp = util.forEachOwnProperties,\n    forEachArr = util.forEachArray,\n    isFunc = util.isFunction,\n    isObj = util.isObject;\n\nvar aps = Array.prototype.slice;\n\n/**\n * Common collection.\n *\n * It need function for get model's unique id.\n *\n * if the function is not supplied then it use default function {@link Collection#getItemID}\n * @constructor\n * @param {function} [getItemIDFn] function for get model's id.\n */\nfunction Collection(getItemIDFn) {\n    /**\n     * @type {object.<string, *>}\n     */\n    this.items = {};\n\n    /**\n     * @type {number}\n     */\n    this.length = 0;\n\n    if (isFunc(getItemIDFn)) {\n        /**\n         * @type {function}\n         */\n        this.getItemID = getItemIDFn;\n    }\n}\n\n/**********\n * static props\n **********/\n\n/**\n * Combind supplied function filters and condition.\n * @param {...function} filters - function filters\n * @returns {function} combined filter\n */\nCollection.and = function(filters) {\n    var cnt;\n\n    filters = aps.call(arguments);\n    cnt = filters.length;\n\n    return function(item) {\n        var i = 0;\n\n        for (; i < cnt; i += 1) {\n            if (!filters[i].call(null, item)) {\n                return false;\n            }\n        }\n\n        return true;\n    };\n};\n\n/**********\n * prototype props\n **********/\n\n/**\n * get model's unique id.\n * @param {object} item model instance.\n * @returns {number} model unique id.\n */\nCollection.prototype.getItemID = function(item) {\n    return String(item._id);\n};\n\n/**\n * add models.\n * @param {...*} item models to add this collection.\n */\nCollection.prototype.add = function(item) {\n    var self = this,\n        id,\n        ownItems;\n\n    if (arguments.length > 1) {\n        forEachArr(aps.call(arguments), function(o) {\n            self.add(o);\n        });\n\n        return;\n    }\n\n    id = this.getItemID(item);\n    ownItems = this.items;\n\n    if (!ownItems[id]) {\n        this.length += 1;\n    }\n    ownItems[id] = item;\n};\n\n/**\n * remove models.\n * @param {...(object|string|number)} id model instance or unique id to delete.\n * @returns {array} deleted model list.\n */\nCollection.prototype.remove = function(id) {\n    var self = this,\n        removed = [],\n        ownItems,\n        itemToRemove;\n\n    if (!this.length) {\n        return removed;\n    }\n\n    if (arguments.length > 1) {\n        removed = util.map(aps.call(arguments), function(_id) {\n            return self.remove(_id);\n        });\n\n        return removed;\n    }\n\n    ownItems = this.items;\n\n    if (isObj(id)) {\n        id = this.getItemID(id);\n    }\n\n    if (!ownItems[id]) {\n        return removed;\n    }\n\n    this.length -= 1;\n    itemToRemove = ownItems[id];\n    delete ownItems[id];\n\n    return itemToRemove;\n};\n\n/**\n * remove all models in collection.\n */\nCollection.prototype.clear = function() {\n    this.items = {};\n    this.length = 0;\n};\n\n/**\n * check collection has specific model.\n * @param {(object|string|number|function)} id model instance or id or filter function to check\n * @returns {boolean} is has model?\n */\nCollection.prototype.has = function(id) {\n    var isFilter,\n        has;\n\n    if (!this.length) {\n        return false;\n    }\n\n    isFilter = isFunc(id);\n    has = false;\n\n    if (isFilter) {\n        this.each(function(item) {\n            if (id(item) === true) {\n                has = true;\n\n                return false; // returning false can stop this loop\n            }\n\n            return true;\n        });\n    } else {\n        id = isObj(id) ? this.getItemID(id) : id;\n        has = util.isExisty(this.items[id]);\n    }\n\n    return has;\n};\n\n/**\n * invoke callback when model exist in collection.\n * @param {(string|number)} id model unique id.\n * @param {function} fn the callback.\n * @param {*} [context] callback context.\n */\nCollection.prototype.doWhenHas = function(id, fn, context) {\n    var item = this.items[id];\n\n    if (!util.isExisty(item)) {\n        return;\n    }\n\n    fn.call(context || this, item);\n};\n\n/**\n * Search model. and return new collection.\n * @param {function} filter filter function.\n * @returns {Collection} new collection with filtered models.\n * @example\n * collection.find(function(item) {\n *     return item.edited === true;\n * });\n *\n * function filter1(item) {\n *     return item.edited === false;\n * }\n *\n * function filter2(item) {\n *     return item.disabled === false;\n * }\n *\n * collection.find(Collection.and(filter1, filter2));\n */\nCollection.prototype.find = function(filter) {\n    var result = new Collection();\n\n    if (this.hasOwnProperty('getItemID')) {\n        result.getItemID = this.getItemID;\n    }\n\n    this.each(function(item) {\n        if (filter(item) === true) {\n            result.add(item);\n        }\n    });\n\n    return result;\n};\n\n/**\n * Group element by specific key values.\n *\n * if key parameter is function then invoke it and use returned value.\n * @param {(string|number|function|array)} key key property or getter function.\n *  if string[] supplied, create each collection before grouping.\n * @param {function} [groupFunc] - function that return each group's key\n * @returns {object.<string, Collection>} grouped object\n * @example\n *\n * // pass `string`, `number`, `boolean` type value then group by property value.\n * collection.groupBy('gender');    // group by 'gender' property value.\n * collection.groupBy(50);          // group by '50' property value.\n *\n * // pass `function` then group by return value. each invocation `function` is called with `(item)`.\n * collection.groupBy(function(item) {\n *     if (item.score > 60) {\n *         return 'pass';\n *     }\n *     return 'fail';\n * });\n *\n * // pass `array` with first arguments then create each collection before grouping.\n * collection.groupBy(['go', 'ruby', 'javascript']);\n * // result: { 'go': empty Collection, 'ruby': empty Collection, 'javascript': empty Collection }\n *\n * // can pass `function` with `array` then group each elements.\n * collection.groupBy(['go', 'ruby', 'javascript'], function(item) {\n *     if (item.isFast) {\n *         return 'go';\n *     }\n *\n *     return item.name;\n * });\n */\nCollection.prototype.groupBy = function(key, groupFunc) {\n    var result = {},\n        collection,\n        baseValue,\n        keyIsFunc = isFunc(key),\n        getItemIDFn = this.getItemID;\n\n    if (util.isArray(key)) {\n        util.forEachArray(key, function(k) {\n            result[String(k)] = new Collection(getItemIDFn);\n        });\n\n        if (!groupFunc) {\n            return result;\n        }\n\n        key = groupFunc;\n        keyIsFunc = true;\n    }\n\n    this.each(function(item) {\n        if (keyIsFunc) {\n            baseValue = key(item);\n        } else {\n            baseValue = item[key];\n\n            if (isFunc(baseValue)) {\n                baseValue = baseValue.apply(item);\n            }\n        }\n\n        collection = result[baseValue];\n\n        if (!collection) {\n            collection = result[baseValue] = new Collection(getItemIDFn);\n        }\n\n        collection.add(item);\n    });\n\n    return result;\n};\n\n/**\n * Return single item in collection.\n *\n * Returned item is inserted in this collection firstly.\n * @param {function} [filter] - function filter\n * @returns {object} item.\n */\nCollection.prototype.single = function(filter) {\n    var result,\n        useFilter = util.isFunction(filter);\n\n    this.each(function(item) {\n        if (!useFilter) {\n            result = item;\n\n            return false; // returning false can stop this loop\n        }\n        if (filter(item)) {\n            result = item;\n\n            return false; // returning false can stop this loop\n        }\n\n        return true;\n    }, this);\n\n    return result;\n};\n\n/**\n * sort a basis of supplied compare function.\n * @param {function} compareFunction compareFunction\n * @returns {array} sorted array.\n */\nCollection.prototype.sort = function(compareFunction) {\n    var arr = [];\n\n    this.each(function(item) {\n        arr.push(item);\n    });\n\n    if (isFunc(compareFunction)) {\n        arr = arr.sort(compareFunction);\n    }\n\n    return arr;\n};\n\n/**\n * iterate each model element.\n *\n * when iteratee return false then break the loop.\n * @param {function} iteratee iteratee(item, index, items)\n * @param {*} [context] context\n */\nCollection.prototype.each = function(iteratee, context) {\n    forEachProp(this.items, iteratee, context || this);\n};\n\n/**\n * return new array with collection items.\n * @returns {array} new array.\n */\nCollection.prototype.toArray = function() {\n    if (!this.length) {\n        return [];\n    }\n\n    return util.map(this.items, function(item) {\n        return item;\n    });\n};\n\nmodule.exports = Collection;\n","/**\n * @fileoverview common/general utilities.\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\nvar util = require('tui-code-snippet');\n\nvar domutil = require('../common/domutil'),\n    Collection = require('../common/collection');\nvar datetime = require('../common/datetime');\n\n/**\n * Default schedule id getter for collection\n * @param {Schedule} schedule - schedule instance\n * @returns {string} schedule id\n */\nfunction scheduleIDGetter(schedule) {\n    return schedule.cid();\n}\n\nmodule.exports = {\n    /**\n     * @returns {Collection} new collection for schedule models.\n     */\n    createScheduleCollection: function() {\n        return new Collection(scheduleIDGetter);\n    },\n\n    /**\n     * Get ratio value.\n     *\n     * a : b = y : X;\n     *\n     * =\n     *\n     * X = (b * y) / a;\n     * @param {number} a - a\n     * @param {number} b - b\n     * @param {number} y - y\n     * @returns {number} ratio value\n     */\n    ratio: function(a, b, y) {\n        // a : b = y : x;\n        return (b * y) / a;\n    },\n\n    /**\n     * Find nearest value from supplied params.\n     * @param {number} value - value to find.\n     * @param {array} nearest - nearest array.\n     * @returns {number} nearest value\n     */\n    nearest: function(value, nearest) {\n        var diff = util.map(nearest, function(v) {\n                return Math.abs(value - v);\n            }),\n            nearestIndex = util.inArray(Math.min.apply(null, diff), diff);\n\n        return nearest[nearestIndex];\n    },\n\n    /**\n     * Mixin method.\n     *\n     * (extend methods except property name 'mixin')\n     * @param {object} from - mixin object.\n     * @param {object} to - object to mixin.\n     */\n    mixin: function(from, to) {\n        util.extend(to.prototype, from);\n    },\n\n    /**\n     * Limit supplied value base on `minArr`, `maxArr`\n     * @param {number} value - value\n     * @param {array} minArr - min\n     * @param {array} maxArr - max\n     * @returns {number} limited value\n     */\n    limit: function(value, minArr, maxArr) {\n        var v = Math.max.apply(null, [value].concat(minArr));\n        v = Math.min.apply(null, [v].concat(maxArr));\n\n        return v;\n    },\n\n    /**\n     * Limit supplied date base on `min`, `max`\n     * @param {TZDate} date - date\n     * @param {TZDate} min - min\n     * @param {TZDate} max - max\n     * @returns {TZDate} limited value\n     */\n    limitDate: function(date, min, max) {\n        if (date < min) {\n            return min;\n        }\n        if (date > max) {\n            return max;\n        }\n\n        return date;\n    },\n\n    /**\n     * Max value with TZDate type for timezone calculation\n     * @param {TZDate} d1 - date 1\n     * @param {TZDate} d2 - date 2\n     * @returns {TZDate}\n     */\n    maxDate: function(d1, d2) {\n        if (d1 > d2) {\n            return d1;\n        }\n\n        return d2;\n    },\n\n    stripTags: function(str) {\n        return str.replace(/<([^>]+)>/ig, '');\n    },\n\n    /**\n     * Get first value in 2-dimentional array.\n     * @param {Array.<Array>} arr2d - 2-dimentional array\n     * @returns {*} first value in 2d array\n     */\n    firstIn2dArray: function(arr2d) {\n        return util.pick(arr2d, '0', '0');\n    },\n\n    /**\n     * Get last value in 2-dimentional array.\n     * @param {Array.<Array>} arr2d - 2-dimentional array\n     * @returns {*} last value in 2d array\n     */\n    lastIn2dArray: function(arr2d) {\n        var lastRow = arr2d.length - 1,\n            lastCol = arr2d[lastRow].length - 1;\n\n        return util.pick(arr2d, lastRow, lastCol);\n    },\n\n    /**\n     * Set 'title' attribute for all elements that have exceeded content in\n     * container\n     * @param {string} selector - CSS selector {@see domutil#find}\n     * @param {HTMLElement} container - container element\n     * @param {boolean} force - force to apply\n     */\n    setAutoEllipsis: function(selector, container, force) {\n        util.forEach(domutil.find(selector, container, true), function(el) {\n            if (force || el.offsetWidth < el.scrollWidth) {\n                el.setAttribute('title', domutil.getData(el, 'title'));\n            }\n        });\n    },\n\n    /**\n     * Set the value at path of object.\n     * @param {object} object - the object to modify\n     * @param {string} path -the path of property to set\n     * @param {*} value - the value to set\n     */\n    set: function(object, path, value) {\n        var names = path.split('.');\n        var store = object;\n\n        util.forEach(names, function(name, index) {\n            store[name] = store[name] || {};\n\n            if (index === names.length - 1) {\n                store[name] = value;\n            } else {\n                store = store[name];\n            }\n        });\n    },\n\n    /**\n     * shift a array\n     * @param {Array.<any>} array - array\n     * @param {number} shift - positive or negative integer to shift\n     * @returns {Array.<any>} shifted array\n     */\n    shiftArray: function(array, shift) {\n        var length = Math.abs(shift);\n        var i;\n\n        if (shift > 0) {\n            for (i = 0; i < length; i += 1) {\n                array.push(array.shift());\n            }\n        } else if (shift < 0) {\n            for (i = 0; i < length; i += 1) {\n                array.unshift(array.pop());\n            }\n        }\n\n        return array;\n    },\n\n    /**\n     * take elements from array between start and end.\n     * @param {Array.<any>} array - array\n     * @param {number} start - start index\n     * @param {number} end - end index\n     * @returns {Array.<any>}\n     */\n    takeArray: function(array, start, end) {\n        var length = array.length;\n        var rightCount = length - end;\n        var leftCount = start;\n\n        // remove right\n        array.splice(end, rightCount);\n        // remove left\n        array.splice(0, leftCount);\n\n        return array;\n    },\n\n    /**\n     * shift hours\n     * @param {number} hours - hours\n     * @param {number} shift - positive or negative integer to shift\n     * @returns {number} shifted hours\n     */\n    shiftHours: function(hours, shift) {\n        if (shift > 0) {\n            hours = (hours + shift) % 24;\n        } else if (shift < 0) {\n            hours += shift;\n            hours = hours > 0 ? hours : 24 + hours;\n        }\n\n        return hours;\n    },\n\n    /**\n     * Parse css value into number and units\n     * @param {string} cssValue - css value like '72px'\n     * @returns {Array} [number, unit]\n     */\n    parseUnit: function(cssValue) {\n        var number = parseFloat(cssValue, 10);\n        var unit = cssValue.match(/[\\d.\\-+]*\\s*(.*)/)[1] || '';\n\n        return [number, unit];\n    },\n\n    find: function(array, iteratee, contextopt) {\n        var found;\n\n        util.forEach(array, function(item) {\n            if (iteratee) {\n                found = iteratee(item);\n            }\n\n            if (found) {\n                found = item;\n\n                return false;\n            }\n\n            return true;\n        }, contextopt);\n\n        return found;\n    },\n\n    getScheduleChanges: function(schedule, propNames, data) {\n        var changes = {};\n        var dateProps = ['start', 'end'];\n\n        util.forEach(propNames, function(propName) {\n            if (dateProps.indexOf(propName) > -1) {\n                if (datetime.compare(schedule[propName], data[propName])) {\n                    changes[propName] = data[propName];\n                }\n            } else if (!util.isUndefined(data[propName]) && schedule[propName] !== data[propName]) {\n                changes[propName] = data[propName];\n            }\n        });\n\n        return util.isEmpty(changes) ? null : changes;\n    }\n};\n","/**\n * @fileoverview datetime utility module\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\nvar TZDate = require('./timezone').Date,\n    dw = require('../common/dw');\nvar util = require('tui-code-snippet');\n/* eslint-disable no-useless-escape */\nvar dateFormatRx = /^(\\d{4}[-|\\/]*\\d{2}[-|\\/]*\\d{2})\\s?(\\d{2}:\\d{2}:\\d{2})?$/;\nvar datetime, tokenFunc;\n\nvar memo = {\n    millisecondsTo: {},\n    millisecondsFrom: {}\n};\n\ntokenFunc = {\n    /**\n     * @param {TZDate} date date object.\n     * @returns {string} YYYYMMDD\n     */\n    'YYYYMMDD': function(date) {\n        return [\n            date.getFullYear(),\n            datetime.leadingZero(date.getMonth() + 1, 2),\n            datetime.leadingZero(date.getDate(), 2)\n        ].join('');\n    },\n    /**\n     * @param {TZDate} date date object\n     * @returns {string} four digit year number\n     */\n    'YYYY': function(date) {\n        return String(date.getFullYear());\n    },\n\n    /**\n     * @param {TZDate} date date object\n     * @returns {string} two digit month number\n     */\n    'MM': function(date) {\n        return datetime.leadingZero(date.getMonth() + 1, 2);\n    },\n\n    /**\n     * @param {TZDate} date date object\n     * @returns {string} two digit date number\n     */\n    'DD': function(date) {\n        return datetime.leadingZero(date.getDate(), 2);\n    },\n\n    /**\n     * @param {TZDate} date date object\n     * @returns {string} HH:mm\n     */\n    'HH:mm': function(date) {\n        var hour = date.getHours(),\n            minutes = date.getMinutes();\n\n        return datetime.leadingZero(hour, 2) + ':' +\n            datetime.leadingZero(minutes, 2);\n    },\n\n    /**\n     * @param {TZDate} date date object\n     * @returns {string} hh:mm\n     */\n    'hh:mm': function(date) {\n        var hour = date.getHours();\n        var minutes = date.getMinutes();\n\n        if (hour > 12) {\n            hour = hour % 12;\n        }\n\n        return datetime.leadingZero(hour, 2) + ':' +\n            datetime.leadingZero(minutes, 2);\n    },\n\n    /**\n     * @param {TZDate} date date object\n     * @returns {string} tt\n     */\n    'tt': function(date) {\n        var hour = date.getHours();\n\n        return hour < 12 ? 'am' : 'pm';\n    }\n};\n\ndatetime = {\n    /**\n     * The number of milliseconds one day.\n     * @type {number}\n     */\n    MILLISECONDS_PER_DAY: 86400000,\n\n    /**\n     * The number of milliseconds one hour.\n     * @type {number}\n     */\n    MILLISECONDS_PER_HOUR: 3600000,\n\n    /**\n     * The number of milliseconds one minutes.\n     * @type {number}\n     */\n    MILLISECONDS_PER_MINUTES: 60000,\n\n    /**\n     * The number of milliseconds 20 minutes for schedule min duration\n     * @type {number}\n     */\n    MILLISECONDS_SCHEDULE_MIN_DURATION: 20 * 60000,\n\n    /**\n     * convert milliseconds\n     * @param {string} type - type of value.\n     * @param {number} value - value to convert.\n     * @param {function} iteratee - iteratee function to use reduce.\n     * @returns {number} converted value.\n     */\n    _convMilliseconds: function(type, value, iteratee) {\n        var conv = [24, 60, 60, 1000],\n            index = {\n                day: 0,\n                hour: 1,\n                minutes: 2,\n                seconds: 3\n            };\n\n        if (!(type in index) || global.isNaN(value)) {\n            return false;\n        }\n\n        return util.reduce([value].concat(conv.slice(index[type])), iteratee);\n    },\n\n    /**\n     * Convert milliseconds value to other type\n     * @param {type} type convert to type want to. support \"day\", \"hour\",\n     *  \"minutes\", \"seconds\" only.\n     * @param {value} value - value to convert.\n     * @returns {number} converted value.\n     */\n    millisecondsTo: function(type, value) {\n        var cache = memo.millisecondsTo,\n            key = type + value;\n\n        if (cache[key]) {\n            return cache[key];\n        }\n\n        cache[key] = datetime._convMilliseconds(type, value, function(m, v) {\n            return m / v;\n        });\n\n        return cache[key];\n    },\n\n    /**\n     * Convert value to milliseconds\n     * @param {type} type - type of supplied value. support \"hour\", \"minutes\", \"seconds\" only.\n     * @param {value} value - value to convert.\n     * @returns {number} converted value.\n     */\n    millisecondsFrom: function(type, value) {\n        var cache = memo.millisecondsFrom,\n            key = type + value;\n\n        if (cache[key]) {\n            return cache[key];\n        }\n\n        cache[key] = datetime._convMilliseconds(type, value, function(m, v) {\n            return m * v;\n        });\n\n        return cache[key];\n    },\n\n    /**\n     * Convert hours to minutes\n     * @param {number} hours - hours\n     * @returns {number} minutes\n     */\n    minutesFromHours: function(hours) {\n        return hours * 60;\n    },\n\n    /**\n     * Make date array from supplied paramters.\n     * @param {TZDate} start Start date.\n     * @param {TZDate} end End date.\n     * @param {number} step The number of milliseconds to use increment.\n     * @returns {TZDate[]} TZDate array.\n     */\n    range: function(start, end, step) {\n        var startTime = start.getTime();\n        var endTime = end.getTime();\n        var cursor = startTime;\n        var date = dw(new TZDate(start));\n        var result = [];\n\n        while (cursor <= endTime && endTime >= date.d.getTime()) {\n            result.push(datetime.start(date.d));\n            cursor = cursor + step;\n            date.addDate(1);\n        }\n\n        return result;\n    },\n\n    /**\n     * Clone supplied date.\n     * @param {TZDate} date date object to clone.\n     * @returns {TZDate} Cloned date object\n     */\n    clone: function(date) {\n        return new TZDate(date);\n    },\n\n    /**\n     * Compare two dates.\n     *\n     * when first date is latest then seconds then return -1.\n     *\n     * return +1 reverse, and return 0 is same.\n     * @param {TZDate} d1 Date object to compare.\n     * @param {TZDate} d2 Date object to compare.\n     * @returns {number} result of compare\n     */\n    compare: function(d1, d2) {\n        var _d1 = d1.getTime(),\n            _d2 = d2.getTime();\n\n        if (_d1 < _d2) {\n            return -1;\n        }\n        if (_d1 > _d2) {\n            return 1;\n        }\n\n        return 0;\n    },\n\n    /**\n     * @param {TZDate} d1 - date one\n     * @param {TZDate} d2 - date two\n     * @returns {boolean} is two date are same year, month?\n     */\n    isSameMonth: function(d1, d2) {\n        return (d1.getFullYear() === d2.getFullYear() &&\n                d1.getMonth() === d2.getMonth());\n    },\n\n    /**\n     * @param {TZDate} d1 - date one\n     * @param {TZDate} d2 - date two\n     * @returns {boolean} is two date are same year, month, date?\n     */\n    isSameDate: function(d1, d2) {\n        var sameMonth = datetime.isSameMonth(d1, d2);\n\n        return sameMonth && (d1.getDate() === d2.getDate());\n    },\n\n    /**\n     * Check supplied parameter is valid date object.\n     * @param {*} d Object to validate.\n     * @returns {boolean} return true when parameter is valid date object.\n     */\n    isValid: function(d) {\n        if (d instanceof TZDate) {\n            return !window.isNaN(d.getTime());\n        }\n\n        return false;\n    },\n\n    /**\n     * convert non local date to UTC date.\n     * @param {TZDate} d Date to convert UTC.\n     * @returns {TZDate} The UTC Date.\n     */\n    toUTC: function(d) {\n        var l = d.getTime(),\n            offset = datetime.millisecondsFrom('minutes', new Date().getTimezoneOffset());\n\n        return new TZDate(l + offset);\n    },\n\n    /**\n     * pad left zero characters.\n     * @param {number} number number value to pad zero.\n     * @param {number} length pad length to want.\n     * @returns {string} padded string.\n     */\n    leadingZero: function(number, length) {\n        var zero = '',\n            i = 0;\n\n        if (String(number).length > length) {\n            return String(number);\n        }\n\n        for (; i < (length - 1); i += 1) {\n            zero += '0';\n        }\n\n        return (zero + number).slice(length * -1);\n    },\n\n    /**\n     * Convert date string to date object.\n     *\n     * Only listed below formats avaliable.\n     *\n     * - YYYYMMDD\n     * - YYYY/MM/DD\n     * - YYYY-MM-DD\n     * - YYYY/MM/DD HH:mm:SS\n     * - YYYY-MM-DD HH:mm:SS\n     *\n     * @param {string} str Formatted string.\n     * @param {number} [fixMonth=-1] - number for fix month calculating.\n     * @returns {(TZDate|boolean)} Converted Date object. when supplied str is not available then return false.\n     */\n    parse: function(str, fixMonth) {\n        var separator,\n            matches = str.match(dateFormatRx),\n            ymd,\n            hms;\n\n        if (util.isUndefined(fixMonth)) {\n            fixMonth = -1;\n        }\n\n        if (!matches) {\n            return false;\n        }\n\n        if (str.length > 8) {\n            // YYYY/MM/DD\n            // YYYY-MM-DD\n            // YYYY/MM/DD HH:mm:SS\n            // YYYY-MM-DD HH:mm:SS\n            separator = ~str.indexOf('/') ? '/' : '-';\n            matches = matches.splice(1);\n\n            ymd = matches[0].split(separator);\n            hms = matches[1] ? matches[1].split(':') : [0, 0, 0];\n        } else {\n            // YYYYMMDD\n            matches = matches[0];\n            ymd = [matches.substr(0, 4), matches.substr(4, 2), matches.substr(6, 2)];\n            hms = [0, 0, 0];\n        }\n\n        return new TZDate().setWithRaw(\n            Number(ymd[0]),\n            Number(ymd[1]) + fixMonth,\n            Number(ymd[2]),\n            Number(hms[0]),\n            Number(hms[1]),\n            Number(hms[2]),\n            0\n        );\n    },\n\n    /**\n     * Return date object from Date.\n     * @param {TZDate} date date\n     * @returns {object} Date object.\n     */\n    raw: function(date) {\n        return {\n            y: date.getFullYear(),\n            M: date.getMonth(),\n            d: date.getDate(),\n            h: date.getHours(),\n            m: date.getMinutes(),\n            s: date.getSeconds(),\n            ms: date.getMilliseconds()\n        };\n    },\n\n    /**\n     * Return 00:00:00 supplied date.\n     * @param {TZDate} date date. if undefined, use now.\n     * @returns {TZDate} start date.\n     */\n    start: function(date) {\n        var d = date ? new TZDate(date) : new TZDate();\n        d.setHours(0, 0, 0, 0);\n\n        return d;\n    },\n\n    /**\n     * Return 23:59:59 supplied date.\n     * @param {TZDate} date date. if undefined, use now.\n     * @returns {TZDate} end date.\n     */\n    end: function(date) {\n        var d = date ? new TZDate(date) : new TZDate();\n        d.setHours(23, 59, 59, 0);\n\n        return d;\n    },\n\n    /**\n     * Return formatted string as basis of supplied string.\n     *\n     * Supported Token Lists.\n     *\n     * - YYYY => 1988\n     * - MM => 01 ~ 12\n     * - DD => 01 ~ 31\n     * - YYYYMMDD => 19880925\n     * @param {TZDate} date String want to formatted.\n     * @param {string} format format str.\n     * @returns {string}  Formatted date string.\n     */\n    format: function(date, format) {\n        var result = format;\n        util.forEachOwnProperties(tokenFunc, function(converter, token) {\n            result = result.replace(token, converter(date));\n        });\n\n        return result;\n    },\n\n    /**\n     * Get start date of specific month\n     * @param {TZDate} date - date to get start date\n     * @returns {TZDate} start date of supplied month\n     */\n    startDateOfMonth: function(date) {\n        var startDate = new TZDate(date);\n\n        startDate.setDate(1);\n        startDate.setHours(0, 0, 0, 0);\n\n        return startDate;\n    },\n\n    /**\n     * Get end date of specific month\n     * @param {TZDate} date - date to get end date\n     * @returns {TZDate} end date of supplied month\n     */\n    endDateOfMonth: function(date) {\n        var endDate = datetime.startDateOfMonth(date);\n\n        endDate.setMonth(endDate.getMonth() + 1);\n        endDate.setDate(endDate.getDate() - 1);\n        endDate.setHours(23, 59, 59);\n\n        return endDate;\n    },\n\n    /**\n     * Return 2-dimensional array month calendar\n     *\n     * dates that different month with given date are negative values\n     * @param {TZDate} month - date want to calculate month calendar\n     * @param {object} options - options\n     * @param {number} [options.startDayOfWeek=0] - start day of week\n     * @param {boolean} options.isAlways6Week - whether the number of weeks are always 6\n     * @param {number} options.visibleWeeksCount visible weeks count\n     * @param {boolean} options.workweek - only show work week\n     * @param {function} [iteratee] - iteratee for customizing calendar object\n     * @returns {Array.<TZDate[]>} calendar 2d array\n     */\n    arr2dCalendar: function(month, options, iteratee) {\n        var weekArr,\n            start, end,\n            startIndex, endIndex,\n            totalDate, afterDates,\n            cursor, week,\n            calendar = [],\n            startDayOfWeek = options.startDayOfWeek,\n            isAlways6Week = util.isUndefined(options.isAlways6Week) || options.isAlways6Week,\n            visibleWeeksCount = options.visibleWeeksCount,\n            workweek = options.workweek;\n\n        if (visibleWeeksCount) {\n            start = new TZDate(month);\n            end = dw(new TZDate(month));\n            end.addDate(7 * (visibleWeeksCount - 1));\n            end = end.d;\n        } else {\n            start = datetime.startDateOfMonth(month);\n            end = datetime.endDateOfMonth(month);\n        }\n\n        // create day number array by startDayOfWeek number\n        // 4 -> [4, 5, 6, 0, 1, 2, 3]\n        // 2 -> [2, 3, 4, 5, 6, 0, 1]\n        weekArr = util.range(startDayOfWeek, 7).concat(util.range(7)).slice(0, 7);\n        startIndex = util.inArray(start.getDay(), weekArr);\n        endIndex = util.inArray(end.getDay(), weekArr);\n        // free dates after last date of this month\n        afterDates = 7 - (endIndex + 1);\n\n        if (visibleWeeksCount) {\n            totalDate = 7 * visibleWeeksCount;\n        } else {\n            totalDate = isAlways6Week ? (7 * 6) : (startIndex + end.getDate() + afterDates);\n        }\n        cursor = datetime.start(start).addDate(-startIndex);\n        // iteratee all dates to render\n        util.forEachArray(util.range(totalDate), function(i) {\n            var date;\n\n            if (!(i % 7)) {\n                // group each date by week\n                week = calendar[i / 7] = [];\n            }\n\n            date = datetime.start(cursor);\n            date = iteratee ? iteratee(date) : date;\n            if (!workweek || !datetime.isWeekend(date.getDay())) {\n                week.push(date);\n            }\n\n            // add date\n            cursor.setDate(cursor.getDate() + 1);\n        });\n\n        return calendar;\n    },\n\n    /**\n     * Calculate grid left(%), width(%) by narrowWeekend, startDayOfWeek, workweek\n     *\n     * @param {number} days - day length of week\n     * @param {boolean} narrowWeekend - narrow weekend\n     * @param {number} startDayOfWeek - start day of week\n     * @param {boolean} workweek - only show work week\n     * @returns {Array} day, left, width\n     */\n    getGridLeftAndWidth: function(days, narrowWeekend, startDayOfWeek, workweek) {\n        var limitDaysToApplyNarrowWeekend = 5;\n        var uniformWidth = 100 / days;\n        var wideWidth = days > limitDaysToApplyNarrowWeekend ? 100 / (days - 1) : uniformWidth;\n        var accumulatedWidth = 0;\n        var dates = util.range(startDayOfWeek, 7).concat(util.range(days)).slice(0, 7);\n\n        if (workweek) {\n            dates = util.filter(dates, function(day) {\n                return !datetime.isWeekend(day);\n            });\n        }\n\n        narrowWeekend = workweek ? false : narrowWeekend;\n\n        return util.map(dates, function(day) {\n            var model;\n            var width = narrowWeekend ? wideWidth : uniformWidth;\n            if (days > limitDaysToApplyNarrowWeekend && narrowWeekend && datetime.isWeekend(day)) {\n                width = wideWidth / 2;\n            }\n\n            model = {\n                day: day,\n                width: width,\n                left: accumulatedWidth\n            };\n\n            accumulatedWidth += width;\n\n            return model;\n        });\n    },\n\n    /**\n     * Get that day is weekend\n     * @param {number} day number\n     * @returns {boolean} true if weekend or false\n     */\n    isWeekend: function(day) {\n        return day === 0 || day === 6;\n    },\n\n    /**\n     * Whether date is between supplied dates with date value?\n     * @param {TZDate} d - target date\n     * @param {TZDate} d1 - from date\n     * @param {TZDate} d2 - to date\n     * @returns {boolean} is between?\n     */\n    isBetweenWithDate: function(d, d1, d2) {\n        var format = 'YYYYMMDD';\n        d = parseInt(datetime.format(d, format), 10);\n        d1 = parseInt(datetime.format(d1, format), 10);\n        d2 = parseInt(datetime.format(d2, format), 10);\n\n        return d1 <= d && d <= d2;\n    },\n\n    isStartOfDay: function(d) {\n        return !datetime.compare(datetime.start(d), d);\n    },\n\n    convertStartDayToLastDay: function(d) {\n        var date = new TZDate(d);\n        if (datetime.isStartOfDay(d)) {\n            date.setDate(date.getDate() - 1);\n            date.setHours(23, 59, 59);\n        }\n\n        return date;\n    },\n\n    getStartOfNextDay: function(d) {\n        var date = datetime.start(d);\n        date.setHours(24);\n\n        return date;\n    },\n\n    getDateDifference: function(d1, d2) {\n        var time1 = new TZDate(d1.getFullYear(), d1.getMonth(), d1.getDate()).getTime();\n        var time2 = new TZDate(d2.getFullYear(), d2.getMonth(), d2.getDate()).getTime();\n\n        return Math.round((time1 - time2) / datetime.MILLISECONDS_PER_DAY);\n    },\n\n    getHourDifference: function(d1, d2) {\n        var time1 = new TZDate(d1).getTime();\n        var time2 = new TZDate(d2).getTime();\n\n        return Math.round((time1 - time2) / datetime.MILLISECONDS_PER_HOUR);\n    },\n\n    hasMultiDates: function(start, end) {\n        var diffDays = datetime.getDateDifference(start, end);\n        var diffHours = Math.abs(datetime.getHourDifference(start, end));\n        var withinDay = Math.abs(diffDays) === 1 && diffHours < 24 && datetime.isStartOfDay(end);\n\n        return !datetime.isSameDate(start, end) && !withinDay;\n    },\n\n    renderEnd: function(start, end) {\n        var diffDays = datetime.getDateDifference(start, end);\n\n        return Math.abs(diffDays) >= 1 && datetime.isStartOfDay(end) ?\n            datetime.convertStartDayToLastDay(end) :\n            datetime.end(end);\n    }\n};\n\nmodule.exports = datetime;\n","/**\n * @fileoverview Dirty flagging module for objects.\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\nvar common = require('tui-code-snippet');\nvar existy = common.isExisty,\n    pick = common.pick,\n    isFunc = common.isFunction;\n\n/**\n * Mixin module for dirty flagging on specific objects.\n * @mixin\n * @example\n * var obj = { hello: 'good', test: '123' };\n * dirty.mixin(obj);\n *\n * obj.set('hello', 'world');\n * obj.isDirty();    // true\n * obj.isPropChanged('hello');    // true\n * obj.isPropChanged('test');    // false\n * obj.dirty(false);\n *\n * obj.isDirty();    // false\n * obj.isPropChanged('hello');    // false\n */\nvar dirty = {\n    /**\n     * Set property value with dirty flagging.\n     * @param {string} propName Property name.\n     * @param {*} value Proprty value.\n     */\n    set: function(propName, value) {\n        var originValue = this[propName];\n\n        if (originValue === value) {\n            return;\n        }\n\n        this[propName] = value;\n\n        if (!this._changed) {\n            /**\n             * Save changed properties.\n             * @memberof dirty\n             * @name _changed\n             * @type {Object}\n             */\n            this._changed = {};\n        }\n\n        this._changed[propName] = true;\n\n        /**\n         * Dirty flag\n         * @type {Boolean}\n         * @name _dirty\n         * @memberof dirty\n         */\n        this._dirty = true;\n    },\n\n    /**\n     * Check dirty flag.\n     * @returns {boolean} Property is changed.\n     */\n    isDirty: function() {\n        return !!this._dirty;\n    },\n\n    /**\n     * Set dirty flag manually.\n     * @param {Boolean} [toDirty=true] This will set dirty flag directly.\n     */\n    dirty: function(toDirty) {\n        toDirty = existy(toDirty) ? toDirty : true;\n\n        /* istanbul ignore else */\n        if (!toDirty) {\n            this._changed = {};\n        }\n\n        this._dirty = toDirty;\n    },\n\n    /**\n     * Delete property safety.\n     * @param {String} propName The name of property.\n     */\n    deleteProp: function(propName) {\n        delete this[propName];\n\n        if (this._changed) {\n            delete this._changed[propName];\n        }\n    },\n\n    /**\n     * Check the changes with specific property.\n     * @param {String} propName The name of property you want.\n     * @returns {boolean} Is property changed?\n     */\n    isPropChanged: function(propName) {\n        if (!this._changed) {\n            return false;\n        }\n\n        return this._changed[propName] === true;\n    },\n\n    /**\n     * Mixin to specific objects.\n     * @param {Object} target The object to mix this module.\n     * @memberof module:util/dirty\n     * @example\n     * function Animal() {}\n     * dirty.mixin(Animal.prototype);\n     */\n    mixin: function(target) {\n        var methodFilterR = /(^_|mixin|wrap)/;\n\n        common.forEachOwnProperties(dirty, function(o, k) {\n            if (!methodFilterR.test(k)) {\n                target[k] = dirty[k];\n            }\n        });\n    },\n\n    /**\n     * Wrapper method for dirty flagging.\n     *\n     * This method invoke after invoked specific method that added by you.\n     *\n     * The method want to add are must exist before add.\n     * @param {object} target Target object to method wrap.\n     * @param {(string|object)} methodName\n     *  Method name to wrap or methodName: flag objects.\n     * @param {boolean} [flag=true]\n     *  this will used to flagging by dirty flagger after invoke the methods added by you.\n     * @memberof module:util/dirty\n     * @example\n     * function Animal(name) {\n     *     this.name = name;\n     * }\n     * Animal.prototype.growl = jasmine.createSpy('growl');\n     * Animal.prototype.test = function() {\n     *     return this.name;\n     * };\n     *\n     * dirty.mixin(Animal.prototype);\n     * // single\n     * dirty.wrap(Animal.prototype, 'growl', true);\n     * // multiple\n     * dirty.wrap(Animap.prototype, {\n     *     growl: true,\n     *     test: false\n     * });\n     *\n     */\n    wrap: function(target, methodName, flag) {\n        var wrap = dirty.wrap,\n            fn;\n\n        if (common.isObject(methodName)) {\n            common.forEachOwnProperties(methodName, function(_flag, _name) {\n                wrap(target, _name, _flag);\n            });\n\n            return;\n        }\n\n        flag = existy(flag) ? flag : true;\n\n        if (!target._wrapper) {\n            /**\n             * @param {function} _fn Original method to wrap.\n             * @param {boolean} flagToSet The boolean value to using dirty flagging.\n             * @returns {*} The result value of original method.\n             * @name _wrapper\n             * @memberof dirty\n             */\n            target._wrapper = function(_fn, flagToSet) {\n                return function() {\n                    var args = Array.prototype.slice.call(arguments);\n                    var result = _fn.apply(this, args); // eslint-disable-line\n                    this._dirty = flagToSet; // eslint-disable-line\n\n                    return result;\n                };\n            };\n        }\n\n        if (existy(pick(target, methodName)) &&\n            isFunc(target[methodName]) &&\n            !existy(pick(target, methodName, '_wrapped'))) {\n            fn = target[methodName];\n            target[methodName] = target._wrapper(fn, flag);\n            target[methodName]._wrapped = true;\n        }\n    }\n};\n\nmodule.exports = dirty;\n","/* eslint complexity: 0 */\n/**\n * @fileoverview Utility module for handling DOM events.\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\nvar util = require('tui-code-snippet');\nvar eventKey = '_evt',\n    DRAG_START = ['touchstart', 'mousedown'];\n\nvar domevent = {\n    /**\n     * Bind dom events.\n     * @param {HTMLElement} obj HTMLElement to bind events.\n     * @param {(string|object)} types Space splitted events names or eventName:handler object.\n     * @param {*} fn handler function or context for handler method.\n     * @param {*} [context] context object for handler method.\n     */\n    on: function(obj, types, fn, context) {\n        if (util.isString(types)) {\n            util.forEach(types.split(' '), function(type) {\n                domevent._on(obj, type, fn, context);\n            });\n\n            return;\n        }\n\n        util.forEachOwnProperties(types, function(handler, type) {\n            domevent._on(obj, type, handler, fn);\n        });\n    },\n\n    /**\n     * DOM event binding.\n     * @param {HTMLElement} obj HTMLElement to bind events.\n     * @param {String} type The name of events.\n     * @param {*} fn handler function\n     * @param {*} [context] context object for handler method.\n     * @private\n     */\n    _on: function(obj, type, fn, context) {\n        var id,\n            handler,\n            originHandler;\n\n        id = type + util.stamp(fn) + (context ? '_' + util.stamp(context) : '');\n\n        if (obj[eventKey] && obj[eventKey][id]) {\n            return;\n        }\n\n        handler = function(e) {\n            fn.call(context || obj, e || window.event);\n        };\n\n        originHandler = handler;\n\n        if ('addEventListener' in obj) {\n            if (type === 'mouseenter' || type === 'mouseleave') {\n                handler = function(e) {\n                    e = e || window.event;\n                    if (!domevent._checkMouse(obj, e)) {\n                        return;\n                    }\n                    originHandler(e);\n                };\n                obj.addEventListener((type === 'mouseenter') ?\n                    'mouseover' : 'mouseout', handler, false);\n            } else {\n                if (type === 'mousewheel') {\n                    obj.addEventListener('DOMMouseScroll', handler, false);\n                }\n\n                obj.addEventListener(type, handler, false);\n            }\n        } else if ('attachEvent' in obj) {\n            obj.attachEvent('on' + type, handler);\n        }\n\n        obj[eventKey] = obj[eventKey] || {};\n        obj[eventKey][id] = handler;\n    },\n\n    /**\n     * Unbind DOM Event handler.\n     * @param {HTMLElement} obj HTMLElement to unbind.\n     * @param {(string|object)} types Space splitted events names or eventName:handler object.\n     * @param {*} fn handler function or context for handler method.\n     * @param {*} [context] context object for handler method.\n     */\n    off: function(obj, types, fn, context) {\n        if (util.isString(types)) {\n            util.forEach(types.split(' '), function(type) {\n                domevent._off(obj, type, fn, context);\n            });\n\n            return;\n        }\n\n        util.forEachOwnProperties(types, function(handler, type) {\n            domevent._off(obj, type, handler, fn);\n        });\n    },\n\n    /**\n     * Unbind DOM event handler.\n     * @param {HTMLElement} obj HTMLElement to unbind.\n     * @param {String} type The name of event to unbind.\n     * @param {function()} fn Event handler that supplied when binding.\n     * @param {*} context context object that supplied when binding.\n     * @private\n     */\n    _off: function(obj, type, fn, context) {\n        var id = type + util.stamp(fn) + (context ? '_' + util.stamp(context) : ''),\n            handler = obj[eventKey] && obj[eventKey][id];\n\n        if (!handler) {\n            return;\n        }\n\n        if ('removeEventListener' in obj) {\n            if (type === 'mouseenter' || type === 'mouseleave') {\n                obj.removeEventListener((type === 'mouseenter') ?\n                    'mouseover' : 'mouseout', handler, false);\n            } else {\n                if (type === 'mousewheel') {\n                    obj.removeEventListener('DOMMouseScroll', handler, false);\n                }\n\n                obj.removeEventListener(type, handler, false);\n            }\n        } else if ('detachEvent' in obj) {\n            try {\n                obj.detachEvent('on' + type, handler);\n            } catch (e) {}    //eslint-disable-line\n        }\n\n        delete obj[eventKey][id];\n\n        if (util.keys(obj[eventKey]).length) {\n            return;\n        }\n\n        delete obj[eventKey];\n    },\n\n    /**\n     * Bind DOM event. this event will unbind after invokes.\n     * @param {HTMLElement} obj HTMLElement to bind events.\n     * @param {(string|object)} types Space splitted events names or eventName:handler object.\n     * @param {*} fn handler function or context for handler method.\n     * @param {*} [context] context object for handler method.\n     */\n    once: function(obj, types, fn, context) {\n        var self = this;\n\n        if (util.isObject(types)) {\n            util.forEachOwnProperties(types, function(handler, type) {\n                domevent.once(obj, type, handler, fn);\n            });\n\n            return;\n        }\n\n        /**\n         * Handler for temporary usage for once implementation\n         */\n        function onceHandler() {\n            fn.apply(context || obj, arguments);\n            self._off(obj, types, onceHandler, context);\n        }\n\n        domevent.on(obj, types, onceHandler, context);\n    },\n\n    /**\n     * Cancel event bubbling.\n     * @param {Event} e Event object.\n     */\n    stopPropagation: function(e) {\n        if (e.stopPropagation) {\n            e.stopPropagation();\n        } else {\n            e.cancelBubble = true;\n        }\n    },\n\n    /**\n     * Cancel browser default actions.\n     * @param {Event} e Event object.\n     */\n    preventDefault: function(e) {\n        if (e.preventDefault) {\n            e.preventDefault();\n        } else {\n            e.returnValue = false;\n        }\n    },\n\n    /**\n     * Syntatic sugar of stopPropagation and preventDefault\n     * @param {Event} e Event object.\n     */\n    stop: function(e) {\n        domevent.preventDefault(e);\n        domevent.stopPropagation(e);\n    },\n\n    /**\n     * Stop scroll events.\n     * @param {HTMLElement} el HTML element to prevent scroll.\n     */\n    disableScrollPropagation: function(el) {\n        domevent.on(el, 'mousewheel MozMousePixelScroll', domevent.stopPropagation);\n    },\n\n    /**\n     * Stop all events related with click.\n     * @param {HTMLElement} el HTML element to prevent all event related with click.\n     */\n    disableClickPropagation: function(el) {\n        domevent.on(el, DRAG_START.join(' ') + ' click dblclick', domevent.stopPropagation);\n    },\n\n    /**\n     * Get mouse position from mouse event.\n     *\n     * If supplied relatveElement parameter then return relative position based on element.\n     * @param {Event} mouseEvent Mouse event object\n     * @param {HTMLElement} relativeElement HTML element that calculate relative position.\n     * @returns {number[]} mouse position.\n     */\n    getMousePosition: function(mouseEvent, relativeElement) {\n        var rect;\n\n        if (!relativeElement) {\n            return [mouseEvent.clientX, mouseEvent.clientY];\n        }\n\n        rect = relativeElement.getBoundingClientRect();\n\n        return [\n            mouseEvent.clientX - rect.left - relativeElement.clientLeft,\n            mouseEvent.clientY - rect.top - relativeElement.clientTop\n        ];\n    },\n\n    /**\n     * Normalize mouse wheel event that different each browsers.\n     * @param {MouseEvent} e Mouse wheel event.\n     * @returns {Number} delta\n     */\n    getWheelDelta: function(e) {\n        var delta = 0;\n\n        if (e.wheelDelta) {\n            delta = e.wheelDelta / 120;\n        }\n\n        if (e.detail) {\n            delta = -e.detail / 3;\n        }\n\n        return delta;\n    },\n\n    /**\n     * prevent firing mouseleave event when mouse entered child elements.\n     * @param {HTMLElement} el HTML element\n     * @param {MouseEvent} e Mouse event\n     * @returns {Boolean} leave?\n     * @private\n     */\n    _checkMouse: function(el, e) {\n        var related = e.relatedTarget;\n\n        if (!related) {\n            return true;\n        }\n\n        try {\n            while (related && (related !== el)) {\n                related = related.parentNode;\n            }\n        } catch (err) {\n            return false;\n        }\n\n        return (related !== el);\n    },\n\n    /**\n     * Trigger specific events to html element.\n     * @param {HTMLElement} obj HTMLElement\n     * @param {string} type Event type name\n     * @param {object} [eventData] Event data\n     */\n    trigger: function(obj, type, eventData) {\n        var rMouseEvent = /(mouse|click)/;\n        if (util.isUndefined(eventData) && rMouseEvent.exec(type)) {\n            eventData = domevent.mouseEvent(type);\n        }\n\n        if (obj.dispatchEvent) {\n            obj.dispatchEvent(eventData);\n        } else if (obj.fireEvent) {\n            obj.fireEvent('on' + type, eventData);\n        }\n    },\n\n    /**\n     * Create virtual mouse event.\n     *\n     * Tested at\n     *\n     * - IE7 ~ IE11\n     * - Chrome\n     * - Firefox\n     * - Safari\n     * @param {string} type Event type\n     * @param {object} [eventObj] Event data\n     * @returns {MouseEvent} Virtual mouse event.\n     */\n    mouseEvent: function(type, eventObj) {\n        var evt,\n            e;\n\n        e = util.extend({\n            bubbles: true,\n            cancelable: (type !== 'mousemove'),\n            view: window,\n            wheelDelta: 0,\n            detail: 0,\n            screenX: 0,\n            screenY: 0,\n            clientX: 0,\n            clientY: 0,\n            ctrlKey: false,\n            altKey: false,\n            shiftKey: false,\n            metaKey: false,\n            button: 0,\n            relatedTarget: undefined  // eslint-disable-line\n        }, eventObj);\n\n        if (typeof document.createEvent === 'function') {\n            evt = document.createEvent('MouseEvents');\n            evt.initMouseEvent(type,\n                e.bubbles, e.cancelable, e.view, e.detail,\n                e.screenX, e.screenY, e.clientX, e.clientY,\n                e.ctrlKey, e.altKey, e.shiftKey, e.metaKey,\n                e.button, document.body.parentNode\n            );\n        } else if (document.createEventObject) {\n            evt = document.createEventObject();\n\n            util.forEach(e, function(value, propName) {\n                evt[propName] = value;\n            }, this);\n            evt.button = {0: 1,\n                1: 4,\n                2: 2}[evt.button] || evt.button;\n        }\n\n        return evt;\n    },\n\n    /**\n     * Normalize mouse event's button attributes.\n     *\n     * Can detect which button is clicked by this method.\n     *\n     * Meaning of return numbers\n     *\n     * - 0: primary mouse button\n     * - 1: wheel button or center button\n     * - 2: secondary mouse button\n     * @param {MouseEvent} mouseEvent - The mouse event object want to know.\n     * @returns {number} - The value of meaning which button is clicked?\n     */\n    getMouseButton: function(mouseEvent) {\n        var button,\n            primary = '0,1,3,5,7',\n            secondary = '2,6',\n            wheel = '4';\n\n        /* istanbul ignore else */\n        if (document.implementation.hasFeature('MouseEvents', '2.0')) {\n            return mouseEvent.button;\n        }\n\n        button = String(mouseEvent.button);\n        if (primary.indexOf(button) > -1) {\n            return 0;\n        }\n        if (secondary.indexOf(button) > -1) {\n            return 2;\n        }\n        if (~wheel.indexOf(button)) {\n            return 1;\n        }\n\n        return -1;\n    },\n\n    /**\n     * Get target from event object\n     *\n     * @param {Event} event - The event object\n     * @returns {object} - The event target object\n     */\n    getEventTarget: function(event) {\n        return event.target || event.srcElement;\n    }\n};\n\nmodule.exports = domevent;\n","/* eslint complexity: 0, no-shadow: 0, max-nested-callbacks: 0  */\n/**\n * @fileoverview Utility modules for manipulate DOM elements.\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\nvar domevent = require('./domevent');\nvar Collection = require('./collection');\nvar util = require('tui-code-snippet');\n\nvar posKey = '_pos',\n    domutil;\n\nvar CSS_AUTO_REGEX = /^auto$|^$|%/;\n\n/**\n * Trim leading, trailing whitespace\n * @param {string} str - string to trim\n * @returns {string} trimmed string\n */\nfunction trim(str) {\n    return str.replace(/^\\s\\s*/, '').replace(/\\s\\s*$/, '');\n}\n\ndomutil = {\n    /**\n     * Create DOM element and return it.\n     * @param {string} tagName Tag name to append.\n     * @param {HTMLElement} [container] HTML element will be parent to created element.\n     * if not supplied, will use **document.body**\n     * @param {string} [className] Design class names to appling created element.\n     * @returns {HTMLElement} HTML element created.\n     */\n    appendHTMLElement: function(tagName, container, className) {\n        var el;\n\n        className = className || '';\n\n        el = document.createElement(tagName);\n        el.className = className;\n\n        if (container) {\n            container.appendChild(el);\n        } else {\n            document.body.appendChild(el);\n        }\n\n        return el;\n    },\n\n    /**\n     * Remove element from parent node.\n     * @param {HTMLElement} el - element to remove.\n     */\n    remove: function(el) {\n        if (el && el.parentNode) {\n            el.parentNode.removeChild(el);\n        }\n    },\n\n    /**\n     * Get element by id\n     * @param {string} id element id attribute\n     * @returns {HTMLElement} element\n     */\n    get: function(id) {\n        return document.getElementById(id);\n    },\n\n    /**\n     * Check supplied element is matched selector.\n     * @param {HTMLElement} el - element to check\n     * @param {string} selector - selector string to check\n     * @returns {boolean} match?\n     */\n    _matcher: function(el, selector) {\n        var cssClassSelector = /^\\./,\n            idSelector = /^#/;\n\n        if (cssClassSelector.test(selector)) {\n            return domutil.hasClass(el, selector.replace('.', ''));\n        }\n        if (idSelector.test(selector)) {\n            return el.id === selector.replace('#', '');\n        }\n\n        return el.nodeName.toLowerCase() === selector.toLowerCase();\n    },\n\n    /**\n     * Find DOM element by specific selectors.\n     * below three selector only supported.\n     *\n     * 1. css selector\n     * 2. id selector\n     * 3. nodeName selector\n     * @param {string} selector selector\n     * @param {(HTMLElement|string)} [root] You can assign root element to find\n     *  if not supplied, document.body will use.\n     * @param {boolean|function} [multiple=false] - set true then return all\n     *  elements that meet condition, if set function then use it filter function.\n     * @returns {HTMLElement} HTML element finded.\n     */\n    find: function(selector, root, multiple) {\n        var result = [],\n            found = false,\n            isFirst = util.isUndefined(multiple) || multiple === false,\n            isFilter = util.isFunction(multiple);\n\n        if (util.isString(root)) {\n            root = domutil.get(root);\n        }\n\n        root = root || window.document.body;\n\n        /**\n         * Function for recursive find specific node\n         * @param {HTMLElement} el - element to search\n         * @param {string} selector - selector\n         */\n        function recurse(el, selector) {\n            var childNodes = el.childNodes,\n                i = 0,\n                len = childNodes.length,\n                cursor;\n\n            for (; i < len; i += 1) {\n                cursor = childNodes[i];\n\n                if (cursor.nodeName === '#text') {\n                    continue;\n                }\n\n                if (domutil._matcher(cursor, selector)) {\n                    if ((isFilter && multiple(cursor)) || !isFilter) {\n                        result.push(cursor);\n                    }\n\n                    if (isFirst) {\n                        found = true;\n                        break;\n                    }\n                } else if (cursor.childNodes.length > 0) {\n                    recurse(cursor, selector);\n                    if (found) {\n                        break;\n                    }\n                }\n            }\n        }\n\n        recurse(root, selector);\n\n        return isFirst ? (result[0] || null) : result;\n    },\n\n    /**\n     * Find parent element recursively.\n     * @param {HTMLElement} el - base element to start find.\n     * @param {string} selector - selector string for find\n     * @param {boolean} excludeEl - exclude the base element to find\n     * @returns {HTMLElement} - element finded or null.\n     */\n    closest: function(el, selector, excludeEl) {\n        var parent;\n\n        if (!el) {\n            return null;\n        }\n\n        parent = el.parentNode;\n\n        if (!excludeEl && domutil._matcher(el, selector)) {\n            return el;\n        }\n\n        while (parent && parent !== window.document.body) {\n            if (domutil._matcher(parent, selector)) {\n                return parent;\n            }\n\n            parent = parent.parentNode;\n        }\n\n        return null;\n    },\n\n    /**\n     * Return texts inside element.\n     * @param {HTMLElement} el target element\n     * @returns {string} text inside node\n     */\n    text: function(el) {\n        var ret = '',\n            i = 0,\n            nodeType = el.nodeType;\n\n        if (nodeType) {\n            if (nodeType === 1 || nodeType === 9 || nodeType === 11) {\n                // nodes that available contain other nodes\n                if (typeof el.textContent === 'string') {\n                    return el.textContent;\n                }\n\n                for (el = el.firstChild; el; el = el.nextSibling) {\n                    ret += domutil.text(el);\n                }\n            } else if (nodeType === 3 || nodeType === 4) {\n                // TEXT, CDATA SECTION\n                return el.nodeValue;\n            }\n        } else {\n            for (; el[i]; i += 1) {\n                ret += domutil.text(el[i]);\n            }\n        }\n\n        return ret;\n    },\n\n    /**\n     * Set data attribute to target element\n     * @param {HTMLElement} el - element to set data attribute\n     * @param {string} key - key\n     * @param {string|number} data - data value\n     */\n    setData: function(el, key, data) {\n        if ('dataset' in el) {\n            el.dataset[key] = data;\n\n            return;\n        }\n\n        el.setAttribute('data-' + key, data);\n    },\n\n    /**\n     * Get data value from data-attribute\n     * @param {HTMLElement} el - target element\n     * @param {string} key - key\n     * @returns {string} value\n     */\n    getData: function(el, key) {\n        if ('dataset' in el) {\n            return el.dataset[key];\n        }\n\n        return el.getAttribute('data-' + key);\n    },\n\n    /**\n     * Check element has specific design class name.\n     * @param {HTMLElement} el target element\n     * @param {string} name css class\n     * @returns {boolean} return true when element has that css class name\n     */\n    hasClass: function(el, name) {\n        var className;\n\n        if (!util.isUndefined(el.classList)) {\n            return el.classList.contains(name);\n        }\n\n        className = domutil.getClass(el);\n\n        return className.length > 0 && new RegExp('(^|\\\\s)' + name + '(\\\\s|$)').test(className);\n    },\n\n    /**\n     * Add design class to HTML element.\n     * @param {HTMLElement} el target element\n     * @param {string} name css class name\n     */\n    addClass: function(el, name) {\n        var className;\n\n        if (!util.isUndefined(el.classList)) {\n            util.forEachArray(name.split(' '), function(value) {\n                el.classList.add(value);\n            });\n        } else if (!domutil.hasClass(el, name)) {\n            className = domutil.getClass(el);\n            domutil.setClass(el, (className ? className + ' ' : '') + name);\n        }\n    },\n\n    /**\n     *\n     * Overwrite design class to HTML element.\n     * @param {HTMLElement} el target element\n     * @param {string} name css class name\n     */\n    setClass: function(el, name) {\n        if (util.isUndefined(el.className.baseVal)) {\n            el.className = name;\n        } else {\n            el.className.baseVal = name;\n        }\n    },\n\n    /**\n     * Element에 cssClass속성을 제거하는 메서드\n     * Remove specific design class from HTML element.\n     * @param {HTMLElement} el target element\n     * @param {string} name class name to remove\n     */\n    removeClass: function(el, name) {\n        var removed = '';\n\n        if (!util.isUndefined(el.classList)) {\n            el.classList.remove(name);\n        } else {\n            removed = (' ' + domutil.getClass(el) + ' ').replace(' ' + name + ' ', ' ');\n            domutil.setClass(el, trim(removed));\n        }\n    },\n\n    /**\n     * Get HTML element's design classes.\n     * @param {HTMLElement} el target element\n     * @returns {string} element css class name\n     */\n    getClass: function(el) {\n        if (!el || !el.className) {\n            return '';\n        }\n\n        return util.isUndefined(el.className.baseVal) ? el.className : el.className.baseVal;\n    },\n\n    /**\n     * Get specific CSS style value from HTML element.\n     * @param {HTMLElement} el target element\n     * @param {string} style css attribute name\n     * @returns {(string|null)} css style value\n     */\n    getStyle: function(el, style) {\n        var value = el.style[style] || (el.currentStyle && el.currentStyle[style]),\n            css;\n\n        if ((!value || value === 'auto') && document.defaultView) {\n            css = document.defaultView.getComputedStyle(el, null);\n            value = css ? css[style] : null;\n        }\n\n        return value === 'auto' ? null : value;\n    },\n\n    /**\n     * get element's computed style values.\n     *\n     * in lower IE8. use polyfill function that return object. it has only one function 'getPropertyValue'\n     * @param {HTMLElement} el - element want to get style.\n     * @returns {object} virtual CSSStyleDeclaration object.\n     */\n    getComputedStyle: function(el) {\n        var defaultView = document.defaultView;\n\n        if (!defaultView || !defaultView.getComputedStyle) {\n            return {\n                getPropertyValue: function(prop) {\n                    /* eslint-disable no-useless-escape */\n                    var re = /(\\-([a-z]){1})/g;\n                    if (prop === 'float') {\n                        prop = 'styleFloat';\n                    }\n\n                    if (re.test(prop)) {\n                        prop = prop.replace(re, function() {\n                            return arguments[2].toUpperCase();\n                        });\n                    }\n\n                    return el.currentStyle[prop] || null;\n                }\n            };\n        }\n\n        return document.defaultView.getComputedStyle(el);\n    },\n\n    /**\n     * Set position CSS style.\n     * @param {HTMLElement} el target element\n     * @param {number} [x=0] left pixel value.\n     * @param {number} [y=0] top pixel value.\n     */\n    setPosition: function(el, x, y) {\n        x = util.isUndefined(x) ? 0 : x;\n        y = util.isUndefined(y) ? 0 : y;\n\n        el[posKey] = [x, y];\n\n        el.style.left = util.isNumber(x) ? (x + 'px') : x;\n        el.style.top = util.isNumber(y) ? (y + 'px') : y;\n    },\n\n    /**\n     * Set position CSS style with left, top, right, bottom\n     * @param {HTMLElement} el target element\n     * @param {object} ltrb object of left, top, right, bottom\n     * @param {number} [ltrb.left] left pixel value.\n     * @param {number} [ltrb.top] top pixel value.\n     * @param {number} [ltrb.right] right pixel value.\n     * @param {number} [ltrb.bottom] bottom pixel value.\n     */\n    setLTRB: function(el, ltrb) {\n        var props = ['left', 'top', 'right', 'bottom'];\n        var value;\n        props.forEach(function(prop) {\n            value = util.isUndefined(ltrb[prop]) ? '' : ltrb[prop];\n            el.style[prop] = util.isNumber(value) ? (value + 'px') : value;\n        });\n    },\n\n    /**\n     * Get position from HTML element.\n     * @param {HTMLElement} el target element\n     * @param {boolean} [clear=false] clear cache before calculating position.\n     * @returns {number[]} point\n     */\n    getPosition: function(el, clear) {\n        var left,\n            top,\n            bound;\n\n        if (clear) {\n            el[posKey] = null;\n        }\n\n        if (el[posKey]) {\n            return el[posKey];\n        }\n\n        left = 0;\n        top = 0;\n\n        if ((CSS_AUTO_REGEX.test(el.style.left) || CSS_AUTO_REGEX.test(el.style.top)) &&\n            'getBoundingClientRect' in el) {\n            // When the element's left or top is 'auto'\n            bound = el.getBoundingClientRect();\n\n            left = bound.left;\n            top = bound.top;\n        } else {\n            left = parseFloat(el.style.left || 0);\n            top = parseFloat(el.style.top || 0);\n        }\n\n        return [left, top];\n    },\n\n    /**\n     * Return element's size\n     * @param {HTMLElement} el target element\n     * @returns {number[]} width, height\n     */\n    getSize: function(el) {\n        var bound,\n            width = domutil.getStyle(el, 'width'),\n            height = domutil.getStyle(el, 'height');\n\n        if ((CSS_AUTO_REGEX.test(width) || CSS_AUTO_REGEX.test(height) ||\n             util.isNull(width) || util.isNull(height)) &&\n            'getBoundingClientRect' in el) {\n            bound = el.getBoundingClientRect();\n            width = bound.width || el.offsetWidth;\n            height = bound.height || el.offsetHeight;\n        } else {\n            width = parseFloat(width || 0);\n            height = parseFloat(height || 0);\n        }\n\n        return [width, height];\n    },\n\n    /**\n     * Fallback of getBoundingClientRect\n     * @param {HTMLElement} el - element\n     * @returns {object} rect\n     */\n    getBCRect: function(el) {\n        var rect = el.getBoundingClientRect();\n\n        rect = util.extend({\n            width: el.offsetWidth,\n            height: el.offsetHeight\n        }, rect);\n\n        return rect;\n    },\n\n    /**\n     * Check specific CSS style is available.\n     * @param {array} props property name to testing\n     * @returns {(string|boolean)} return true when property is available\n     * @example\n     * var props = ['transform', '-webkit-transform'];\n     * domutil.testProp(props);    // 'transform'\n     */\n    testProp: function(props) {\n        var style = document.documentElement.style,\n            i = 0,\n            len = props.length;\n\n        for (; i < len; i += 1) {\n            if (props[i] in style) {\n                return props[i];\n            }\n        }\n\n        return false;\n    },\n\n    /**\n     * Get form data\n     * @param {HTMLFormElement} formElement - form element to extract data\n     * @returns {object} form data\n     */\n    getFormData: function(formElement) {\n        var groupedByName = new Collection(function() {\n                return this.length;\n            }),\n            noDisabledFilter = function(el) {\n                return !el.disabled;\n            },\n            output = {};\n\n        groupedByName.add.apply(\n            groupedByName,\n            domutil.find('input', formElement, noDisabledFilter)\n                .concat(domutil.find('select', formElement, noDisabledFilter))\n                .concat(domutil.find('textarea', formElement, noDisabledFilter))\n        );\n\n        groupedByName = groupedByName.groupBy(function(el) {\n            return (el && el.getAttribute('name')) || '_other';\n        });\n\n        util.forEach(groupedByName, function(elements, name) {\n            if (name === '_other') {\n                return;\n            }\n\n            elements.each(function(el) {\n                var nodeName = el.nodeName.toLowerCase(),\n                    type = el.type,\n                    result = [];\n\n                if (type === 'radio') {\n                    result = [elements.find(function(el) {\n                        return el.checked;\n                    }).toArray().pop()];\n                } else if (type === 'checkbox') {\n                    result = elements.find(function(el) {\n                        return el.checked;\n                    }).toArray();\n                } else if (nodeName === 'select') {\n                    elements.find(function(el) {\n                        return !!el.childNodes.length;\n                    }).each(function(el) {\n                        result = result.concat(\n                            domutil.find('option', el, function(opt) {\n                                return opt.selected;\n                            })\n                        );\n                    });\n                } else {\n                    result = elements.find(function(el) {\n                        return el.value !== '';\n                    }).toArray();\n                }\n\n                result = util.map(result, function(el) {\n                    return el.value;\n                });\n\n                if (!result.length) {\n                    result = '';\n                } else if (result.length === 1) {\n                    result = result[0];\n                }\n\n                output[name] = result;\n            });\n        });\n\n        return output;\n    }\n};\n\n/* eslint-disable */\nvar userSelectProperty = domutil.testProp([\n    'userSelect',\n    'WebkitUserSelect',\n    'OUserSelect',\n    'MozUserSelect',\n    'msUserSelect'\n]);\nvar supportSelectStart = 'onselectstart' in document;\nvar prevSelectStyle = '';\n\n/* eslint-enable */\n\n/**\n * Disable browser's text selection behaviors.\n * @method\n */\ndomutil.disableTextSelection = (function() {\n    if (supportSelectStart) {\n        return function(dom, onSelectstartHandler) {\n            domevent.on(dom, 'selectstart', onSelectstartHandler || domevent.preventDefault);\n        };\n    }\n\n    return function(dom) {\n        var style = dom.style;\n        prevSelectStyle = style[userSelectProperty];\n        style[userSelectProperty] = 'none';\n    };\n})();\n\n/**\n * Enable browser's text selection behaviors.\n * @method\n */\ndomutil.enableTextSelection = (function() {\n    if (supportSelectStart) {\n        return function(dom, onSelectstartHandler) {\n            domevent.off(window, 'selectstart', onSelectstartHandler || domevent.preventDefault);\n        };\n    }\n\n    return function() {\n        document.documentElement.style[userSelectProperty] = prevSelectStyle;\n    };\n})();\n\n/**\n * Disable browser's image drag behaviors.\n */\ndomutil.disableImageDrag = function() {\n    domevent.on(window, 'dragstart', domevent.preventDefault);\n};\n\n/**\n * Enable browser's image drag behaviors.\n */\ndomutil.enableImageDrag = function() {\n    domevent.off(window, 'dragstart', domevent.preventDefault);\n};\n\nmodule.exports = domutil;\n","/**\n * @fileoverview Wrapper module for easy calc date object\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\nvar TZDate = require('./timezone').Date;\n\n/**\n * @constructor\n * @param {TZDate} date to wrapping DW class\n */\nfunction DW(date) {\n    if (!(this instanceof DW)) {\n        return new DW(date);\n    }\n\n    if (!(date instanceof TZDate)) {\n        date = new TZDate(date);\n    }\n\n    /**\n     * @type {TZDate}\n     */\n    this.d = date;\n}\n\n/**\n * Return d property when supplied object is DW. else return itself\n * @param {*} obj - object\n * @returns {TZDate} date\n */\nDW.prototype.safe = function(obj) {\n    if (obj.constructor === DW) {\n        return obj.d;\n    }\n\n    return obj;\n};\n\n/**\n * Clone DW object\n * @returns {DW} cloned dwrap object\n */\nDW.prototype.clone = function() {\n    return new DW(new TZDate(this.d));\n};\n\n/**\n * Add days\n * @param {number} day - day to add\n * @returns {DW} wrapper object\n */\nDW.prototype.addDate = function(day) {\n    this.d.setDate(this.d.getDate() + day);\n\n    return this;\n};\n\n/**\n * Add month.\n * @param {number} m - month to add\n * @returns {DW} wrapper object\n */\nDW.prototype.addMonth = function(m) {\n    var currentMonth = this.d.getMonth();\n    var currentDay = this.d.getDate();\n    var leapYear = this._isLeapYear();\n    var targetMonth = currentMonth + m;\n    var clone = this.clone();\n    var targetDaysOfMonth = currentDay;\n\n    if (m) {\n        if (targetMonth === 1) {\n            targetDaysOfMonth = leapYear ? 29 : 28;\n        } else {\n            if (m > 0) {\n                clone.d.setMonth(targetMonth + 1, 0);\n            } else {\n                clone.d.setMonth(currentMonth, 0);\n            }\n            targetDaysOfMonth = clone.d.getDate();\n        }\n    }\n\n    this.d.setMonth(targetMonth, Math.min(currentDay, targetDaysOfMonth));\n\n    return this;\n};\n\n/**\n * Is leap year or not\n * @returns {boolean}\n */\nDW.prototype._isLeapYear = function() {\n    var year = this.d.getFullYear();\n\n    return ((year % 4 === 0) && (year % 100 !== 0)) || !(year % 400);\n};\n\n/**\n * Set hour, minutes, seconds, milliseconds\n * @param {number} h - hours\n * @param {number} m - minutes\n * @param {number} s - seconds\n * @param {number} ms - milliseconds\n * @returns {DW} wrapper object\n */\nDW.prototype.setHours = function(h, m, s, ms) {\n    this.d.setHours(h, m, s, ms);\n\n    return this;\n};\n\n/**\n * Whether date is between supplied dates?\n * @param {TZDate|DW} d1 - from date\n * @param {TZDate|DW} d2 - to date\n * @returns {boolean} is between?\n */\nDW.prototype.isBetween = function(d1, d2) {\n    var safe = this.safe;\n\n    return safe(d1) <= this.d && this.d <= safe(d2);\n};\n\nmodule.exports = DW;\n","/**\n * @fileoverview Floating layer module\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\nvar util = require('tui-code-snippet');\nvar config = require('../config'),\n    domutil = require('../common/domutil'),\n    View = require('../view/view');\n\n/**\n * @constructor\n * @extends {View}\n * @param {object} options - options for floating layer module\n * @param {HTMLElement} container - parent continer for floating layer\n */\nfunction FloatingLayer(options, container) {\n    var sibling = container[FloatingLayer.PROP_KEY],\n        layerContainer;\n\n    if (!sibling) {\n        sibling = container[FloatingLayer.PROP_KEY] = [];\n    }\n\n    sibling.push(this);\n\n    /**\n     * @type {Collection}\n     */\n    this.sibling = sibling;\n\n    /**\n     * @type {number}\n     */\n    this.zIndex = this.getLargestZIndex() || FloatingLayer.INIT_ZINDEX;\n\n    layerContainer = document.createElement('div');\n    layerContainer.style.display = 'none';\n    layerContainer.style.position = 'absolute';\n    domutil.addClass(layerContainer, config.classname('floating-layer'));\n    container.appendChild(layerContainer);\n\n    View.call(this, layerContainer);\n\n    /**\n     * @type {HTMLElement}\n     */\n    this.parent = container;\n}\n\nutil.inherit(FloatingLayer, View);\n\n/**\n * @const\n */\nFloatingLayer.PROP_KEY = '__fe_floating_layer';\n\n/**\n * @const\n */\nFloatingLayer.INIT_ZINDEX = 999;\n\n/**\n * Destroy floating layer instance. if there no instnace in parent container\n *\n * remove instance cache property in container element\n */\nFloatingLayer.prototype.destroy = function() {\n    var parent = this.parent,\n        sibling = this.sibling,\n        i = 0, cnt = sibling.length;\n\n    for (; i < cnt; i += 1) {\n        if (sibling[i] === this) {\n            sibling.splice(i, 1);\n            break;\n        }\n    }\n\n    if (!sibling.length) {\n        try {\n            delete parent[FloatingLayer.PROP_KEY];\n        } catch (e) {\n            parent[FloatingLayer.PROP_KEY] = null;\n        }\n\n        parent.style.position = '';\n    }\n\n    domutil.remove(this.container);\n\n    this.sibling = null;\n\n    View.prototype.destroy.call(this);\n};\n\n/**\n * @returns {boolean} whether layer is visible?\n */\nFloatingLayer.prototype.isVisible = function() {\n    return this.container.style.display !== 'none';\n};\n\n/**\n * Set layer position\n * @param {number} x - x coordinate of layer\n * @param {number} y - y coordinate of layer\n */\nFloatingLayer.prototype.setPosition = function(x, y) {\n    domutil.setPosition(this.container, x, y);\n};\n\n/**\n * Set layer left, top, right, bottom position\n * @param {object} ltrb object of left, top, right, bottom\n * @param {number} [ltrb.left] left pixel value.\n * @param {number} [ltrb.top] top pixel value.\n * @param {number} [ltrb.right] right pixel value.\n * @param {number} [ltrb.bottom] bottom pixel value.\n */\nFloatingLayer.prototype.setLTRB = function(ltrb) {\n    domutil.setLTRB(this.container, ltrb);\n};\n\n/**\n * Set layer size\n * @param {number|string} w - layer width\n * @param {number|string} h - layer height\n */\nFloatingLayer.prototype.setSize = function(w, h) {\n    var container = this.container;\n\n    w = util.isNumber(w) ? w + 'px' : w;\n    h = util.isNumber(h) ? h + 'px' : h;\n\n    container.style.width = w;\n    container.style.height = h;\n};\n\n/**\n * Set layer content\n * @param {string} html - html string\n */\nFloatingLayer.prototype.setContent = function(html) {\n    this.container.innerHTML = html;\n};\n\n/**\n * Get largest z-index from sibling layers\n * @returns {number} largest z-index value\n */\nFloatingLayer.prototype.getLargestZIndex = function() {\n    var zIndexes = util.map(this.sibling, function(layer) {\n        return layer.zIndex;\n    });\n\n    return Math.max.apply(null, zIndexes);\n};\n\n/**\n * Set focus to layer\n */\nFloatingLayer.prototype.focus = function() {\n    var zIndexForShow = this.getLargestZIndex() + 1;\n    this.container.style.zIndex = this.zIndex = zIndexForShow;\n};\n\n/**\n * Show layer\n */\nFloatingLayer.prototype.show = function() {\n    this.focus();\n    this.container.style.display = 'block';\n};\n\n/**\n * Hide layer\n */\nFloatingLayer.prototype.hide = function() {\n    this.container.style.display = 'none';\n};\n\nmodule.exports = FloatingLayer;\n","/**\n * @fileoverview Mixin module for models.\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\nvar TZDate = require('../common/timezone').Date;\nvar util = require('tui-code-snippet');\nvar spaceRx = /^\\s*|\\s*$/g,\n    model;\n\nvar datetime = require('../common/datetime');\n\n/**\n * Mixin module for models.\n * @mixin\n */\nmodel = {\n    /**\n     * string trim\n     * @param {string} str string to trim\n     * @returns {string} trimed string\n     */\n    trim: function(str) {\n        return str.replace(spaceRx, '');\n    },\n    /**\n     * The collections of validator functions.\n     */\n    validators: {\n        /**\n         * check all of supplied fields(property) is not undefined or empty string.\n         * @param {object} instance model instance.\n         * @param {string[]} fields property names to check.\n         * @returns {boolean} return true when supplied fields are not undefined or empty string.\n         */\n        required: function(instance, fields) {\n            var valid = true,\n                isValid = function(obj) {\n                    return !util.isUndefined(obj) && model.trim(obj) !== '';\n                };\n\n            util.forEach(fields, function(fieldName) {\n                valid = isValid(instance[fieldName]);\n\n                return valid;\n            });\n\n            return valid;\n        },\n\n        /**\n         * check supplied fields are valid dates and valid date ranges.\n         * @param {object} instance model instance.\n         * @param {Date[]} fields array of date range (start, end)\n         * @returns {boolean} is valid date range?\n         */\n        dateRange: function(instance, fields) {\n            var start, end;\n\n            if (!util.isExisty(instance) || fields.length !== 2) {\n                return true;\n            }\n\n            start = new TZDate(instance[fields[0]]);\n            end = new TZDate(instance[fields[1]]);\n\n            if (!datetime.isValid(start) || !datetime.isValid(end)) {\n                return false;\n            }\n\n            if (datetime.compare(start, end) === 1) {\n                return false;\n            }\n\n            return true;\n        }\n    },\n\n    /**\n     * Check validate for model instance.\n     *\n     * The validate are works on a basis of constructor's \"schema\" property.\n     *\n     * You can customize validators add some method to model#validators.\n     * @returns {Boolean} model is valid?\n     */\n    isValid: function() {\n        var self = this,\n            schema = this.constructor.schema,\n            validators = model.validators,\n            validator,\n            valid = true;\n\n        if (!schema) {\n            return true;\n        }\n\n        util.forEach(schema, function(values, validatorName) {\n            validator = validators[validatorName];\n\n            if (validator) {\n                valid = validator(self, values);\n\n                return valid; // returning false can stop this loop\n            }\n\n            return true;\n        });\n\n        return valid;\n    },\n\n    /**\n     * Make data object form instance.\n     *\n     * It return object fill with all owned properties but exclude functions.\n     * @returns {object} Data object\n     */\n    parameterize: function() {\n        var param = {},\n            isFunc = util.isFunction;\n\n        util.forEach(this, function(value, propName) {\n            if (!isFunc(value)) {\n                param[propName] = value;\n            }\n        });\n\n        return param;\n    },\n\n    /**\n     * Mixin model module to supplied target.\n     * @param {Object} target The object of want to mixed.\n     * @example\n     * function Man() {\n     *     this.name = 'john';\n     * }\n     * model.mixin(Man.prototype);\n     */\n    mixin: function(target) {\n        util.forEach(model, function(method, name) {\n            if (name !== 'mixin') {\n                target[name] = method;\n            }\n        });\n    }\n};\n\nmodule.exports = model;\n","/**\n * @fileoverview\n * Class for represent two dimensional x, y coordinates.\n *\n * It suppliy a group of functions for manipulate coordinates.\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n * @example\n * var p = point(10, 10);\n * var r1 = p.add(Point(5, 5));\n * console.log(p.toString())    // \"Point(10, 10)\"\n * console.log(r1.toString())    // \"Point(15, 15)\"\n *\n * var p2 = new Point(10, 10);\n * p2._add(point(5, 5));\n * console.log(p2.toString())   // \"Point(15, 15)\"\n */\n'use strict';\n\nvar util = require('tui-code-snippet');\n\n/**\n * Class for represent two dimentional x, y coordinates.\n * @constructor\n * @param {number} x The number of X coordinates.\n * @param {number} y The number of Y coordinates.\n * @param {boolean} [useRound=false] set true when each coordinates are rounded before initialize.\n * @example\n * var t = new Point(13, 5);\n */\nfunction Point(x, y, useRound) {\n    /**\n     * @type {number}\n     */\n    this.x = (useRound ? Math.round(x) : x);\n\n    /**\n     * @type {number}\n     */\n    this.y = (useRound ? Math.round(y) : y);\n}\n\n/**********\n * static props\n **********/\n\n/**\n * Calculate point ratio.\n * @param {Point} point The instance of point.\n * @param {number} factor From factor\n * @param {number} toFactor To factor\n * @returns {Point} Point instance calculated.\n */\nPoint.getRatio = function(point, factor, toFactor) {\n    if (factor === toFactor) {\n        return point.clone();\n    }\n\n    return point.multiplyBy(toFactor)._divideBy(factor);\n};\n\n/**\n * Syntatic sugar of new Point()\n * @param {(Point|number|number[])} x X coordinate value.\n * @param {(number|boolean)} [y] Y coordinate value or boolean value for coordinates round.\n * @param {boolean} [useRound] Set true then round initial coordinate values.\n * @returns {Point} The instance of point.\n * @example\n * var p1 = point(10, 15);\n * var p2 = point([10, 15]);\n */\nPoint.n = function(x, y, useRound) {\n    if (x instanceof Point) {\n        return x;\n    }\n\n    if (util.isArray(x)) {\n        return new Point(x[0], x[1], y);\n    }\n\n    return new Point(x, y, useRound);\n};\n\n/**********\n * prototype props\n **********/\n\n/**\n * Clone points\n * @returns {Point} The point instance cloned.\n */\nPoint.prototype.clone = function() {\n    return new Point(this.x, this.y);\n};\n\n/**\n * Add points.\n * @param {Point} point The point instance to add.\n * @returns {Point} Point calculated.\n */\nPoint.prototype.add = function(point) {\n    return this.clone()._add(Point.n(point));\n};\n\n/**\n * Add self points.\n * @param {Point} point The point instance to add.\n * @returns {Point} Point calculated.\n */\nPoint.prototype._add = function(point) {\n    this.x += point.x;\n    this.y += point.y;\n\n    return this;\n};\n\n/**\n * Subtract points.\n * @param {Point} point The point instance to subtract.\n * @returns {Point} Point calculated.\n */\nPoint.prototype.subtract = function(point) {\n    return this.clone()._subtract(Point.n(point));\n};\n\n/**\n * Subtract points. (manipulate self)\n * @param {Point} point The point instance to subtract.\n * @returns {Point} Point calculated.\n */\nPoint.prototype._subtract = function(point) {\n    this.x -= point.x;\n    this.y -= point.y;\n\n    return this;\n};\n\n/**\n * Divide points.\n * @param {number} num The number to divide.\n * @returns {Point} Point calculated.\n */\nPoint.prototype.divideBy = function(num) {\n    return this.clone()._divideBy(num);\n};\n\n/**\n * Divide points. (manipulate self)\n * @param {number} num The number to divide.\n * @returns {Point} Point calculated.\n */\nPoint.prototype._divideBy = function(num) {\n    this.x /= num;\n    this.y /= num;\n\n    return this;\n};\n\n/**\n * Multiply coordinates.\n * @param {number} num Thyen number to multiply\n * @returns {Point} Point calculated.\n */\nPoint.prototype.multiplyBy = function(num) {\n    return this.clone()._multiplyBy(num);\n};\n\n/**\n * Multiply self coordinates.\n * @param {number} num The number to multiply.\n * @returns {Point} Point calculated.\n */\nPoint.prototype._multiplyBy = function(num) {\n    this.x *= num;\n    this.y *= num;\n\n    return this;\n};\n\n/**\n * Round coordinates.\n * @returns {Point} Point calculated.\n */\nPoint.prototype.round = function() {\n    return this.clone()._round();\n};\n\n/**\n * Round self coordinates.\n * @returns {Point} Point calculated.\n */\nPoint.prototype._round = function() {\n    this.x = Math.round(this.x);\n    this.y = Math.round(this.y);\n\n    return this;\n};\n\n/**\n * Reverse values between positive and negative.\n * @returns {Point} Point calculated.\n */\nPoint.prototype.reverse = function() {\n    return this.clone()._reverse();\n};\n\n/**\n * Reverse self values between positive and negative.\n * @returns {Point} Point calculated.\n */\nPoint.prototype._reverse = function() {\n    this.x *= -1;\n    this.y *= -1;\n\n    return this;\n};\n\n/**\n * Floor coordinates.\n * @returns {Point} Point calculated.\n */\nPoint.prototype.floor = function() {\n    return this.clone()._floor();\n};\n\n/**\n * Floor self coordinates.\n * @returns {Point} Point calculated.\n */\nPoint.prototype._floor = function() {\n    this.x = Math.floor(this.x);\n    this.y = Math.floor(this.y);\n\n    return this;\n};\n\n/**\n * Ceil coordinates.\n * @returns {Point} Point calculated.\n */\nPoint.prototype.ceil = function() {\n    return this.clone()._ceil();\n};\n\n/**\n * Ceil self coodinates.\n * @returns {Point} Point calculated.\n */\nPoint.prototype._ceil = function() {\n    this.x = Math.ceil(this.x);\n    this.y = Math.ceil(this.y);\n\n    return this;\n};\n\n/**\n * Rotate point.\n * @param {number} deg The number of rotate degree.\n * @param {Point} [center=this] Center point instance to use rotate center. use own when not supplied.\n * @param {number} [cos] Cosine values for rotate. it useful when multi point rotate.\n * @param {number} [sin] Sine values for rotate. it useful when multi point rotate.\n * @returns {Point} The point instance rotated.\n */\nPoint.prototype.rotate = function(deg, center, cos, sin) {\n    return this.clone()._rotate(deg, center, cos, sin);\n};\n\n/**\n * Rotate self.\n * @param {number} deg The number of rotate degree.\n * @param {Point} [center=this] Center point instance to use rotate center. use own when not supplied.\n * @param {number} [cos] Cosine values for rotate. it useful when multi point rotate.\n * @param {number} [sin] Sine values for rotate. it useful when multi point rotate.\n * @returns {Point} The point instance rotated.\n */\nPoint.prototype._rotate = function(deg, center, cos, sin) {\n    var rad = deg * (Math.PI / 180),\n        x,\n        y;\n\n    cos = cos || parseFloat(Math.cos(rad).toFixed(8));\n    sin = sin || parseFloat(Math.sin(rad).toFixed(8));\n\n    this._subtract(center);\n\n    x = this.x;\n    y = this.y;\n\n    this.x = (x * cos) - (y * sin);\n    this.y = (x * sin) + (y * cos);\n\n    this._add(center);\n\n    return this;\n};\n\n/**\n * Calculate distance between two points.\n * @param {Point} point Point instance.\n * @returns {number} The number of distance between two points.\n */\nPoint.prototype.distanceTo = function(point) {\n    var x,\n        y;\n\n    point = Point.n(point);\n\n    x = point.x - this.x;\n    y = point.y - this.y;\n\n    return Math.sqrt((x * x) + (y * y));\n};\n\n/**\n * Check point equals.\n * @param {Point} point Point instance to compare\n * @returns {boolean} equality\n */\nPoint.prototype.equals = function(point) {\n    point = Point.n(point);\n\n    return point.x === this.x && point.y === this.y;\n};\n\n/**\n * Return formatted string. 'Point(x, y)'\n * @returns {string} string\n */\nPoint.prototype.toString = function() {\n    return 'Point(' + this.x + ', ' + this.y + ')';\n};\n\n/**\n * Return coodinates to array. [x, y]\n * @returns {number[]} coordinate array.\n */\nPoint.prototype.toArray = function() {\n    return [this.x, this.y];\n};\n\nmodule.exports = Point;\n","/**\n * @fileoverview RequestAnimFrame\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\nvar requestFn,\n    cancelFn;\n\n/**\n * Get name with vendor prefix\n * @param {string} name - name to prepend prefix\n * @returns {string} vendor prefixed name\n */\nfunction getPrefixed(name) {\n    return global['webkit' + name] || global['moz' + name] || global['ms' + name];\n}\n\nrequestFn = global.requestAnimationFrame ||\n    getPrefixed('RequestAnimationFrame') ||\n    function(fn, context) {\n        fn.call(context);\n    };\n\ncancelFn = global.cancelAnimationFrame ||\n    getPrefixed('CancelAnimationFrame') ||\n    getPrefixed('CancelRequestAnimationFrame') ||\n    function() {};\n\n/**\n * @module module:reqAnimFrame\n */\n\nmodule.exports = {\n    /**\n     * Shim of requestAnimationFrame\n     * @param {function} fn callback function\n     * @param {*} context context for callback\n     * @returns {number} Unique id\n     */\n    requestAnimFrame: function(fn, context) {\n        return requestFn.call(global, fn.bind(context));\n    },\n\n    /**\n     * Shim of cancelAnimationFrame\n     * @param {number} id requestAnimationFrame id\n     */\n    cancelAnimFrame: function(id) {\n        if (!id) {\n            return;\n        }\n\n        cancelFn.call(global, id);\n    }\n};\n","/**\n * @fileoverview timezone\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\nvar util = require('tui-code-snippet');\n\nvar MIN_TO_MS = 60 * 1000;\nvar nativeOffsetMs = getTimezoneOffset();\nvar customOffsetMs = nativeOffsetMs;\nvar timezoneOffsetCallback = null;\nvar setByTimezoneOption = false;\n\nvar getterMethods = [\n    'getDate',\n    'getDay',\n    'getFullYear',\n    'getHours',\n    'getMilliseconds',\n    'getMinutes',\n    'getMonth',\n    'getSeconds'\n];\n\nvar setterMethods = [\n    'setDate',\n    'setFullYear',\n    'setHours',\n    'setMilliseconds',\n    'setMinutes',\n    'setMonth',\n    'setSeconds'\n];\n\n/**\n * Get the timezone offset by timestampe\n * @param {number} timestamp - timestamp\n * @returns {number} timezone offset\n * @private\n */\nfunction getTimezoneOffset(timestamp) {\n    timestamp = timestamp || Date.now();\n\n    return new Date(timestamp).getTimezoneOffset() * MIN_TO_MS;\n}\n\n/**\n * Get the custome timezone offset by timestampe\n * @param {number} timestamp - timestamp\n * @returns {number} timezone offset\n * @private\n */\nfunction getCustomTimezoneOffset(timestamp) {\n    if (!setByTimezoneOption && timezoneOffsetCallback) {\n        return timezoneOffsetCallback(timestamp) * MIN_TO_MS;\n    }\n\n    return customOffsetMs;\n}\n\n/**\n * Convert to local time\n * @param {number} time - time\n * @returns {number} local time\n */\nfunction getLocalTime(time) {\n    var timezoneOffset = getTimezoneOffset(time);\n    var customTimezoneOffset = getCustomTimezoneOffset(time);\n    var timezoneOffsetDiff = customTimezoneOffset ? 0 : nativeOffsetMs - timezoneOffset;\n    var localTime = time - customTimezoneOffset + timezoneOffset + timezoneOffsetDiff;\n\n    return localTime;\n}\n\n/**\n * Create a Date instance with multiple arguments\n * @param {Array} args - arguments\n * @returns {Date}\n * @private\n */\nfunction createDateWithMultipleArgs(args) {\n    var utc = Date.UTC.apply(null, args);\n\n    return new Date(utc + getTimezoneOffset(utc));\n}\n\n/**\n * To convert a Date to TZDate as it is.\n * @param {TZDate|number|null} arg - date\n * @returns {Date}\n */\nfunction createDateWithUTCTime(arg) {\n    var time;\n\n    if (arg instanceof TZDate) {\n        time = arg.getUTCTime();\n    } else if ((typeof arg) === 'number') {\n        time = arg;\n    } else if (arg === null) {\n        time = 0;\n    } else {\n        throw new Error('Invalid Type');\n    }\n\n    return new Date(time);\n}\n\n/**\n * Convert time to local time. Those times are only from API and not from inner source code.\n * @param {Date|string} arg - date\n * @returns {Date}\n */\nfunction createDateAsLocalTime(arg) {\n    var time;\n\n    if (arg instanceof Date) {\n        time = arg.getTime();\n    } else if ((typeof arg) === 'string') {\n        time = Date.parse(arg);\n    } else {\n        throw new Error('Invalid Type');\n    }\n\n    time = getLocalTime(time);\n\n    return new Date(time);\n}\n\n/**\n * is it for local time? These type can be used from Calendar API.\n * @param {Date|string} arg - date\n * @returns {boolean}\n */\nfunction useLocalTimeConverter(arg) {\n    return arg instanceof Date || (typeof arg) === 'string';\n}\n\n/**\n * Timezone Date Class\n * @param {number|TZDate|Date|string} date - date to be converted\n * @constructor\n */\nfunction TZDate(date) {\n    var nativeDate;\n\n    if (util.isUndefined(date)) {\n        date = Date.now();\n    }\n\n    if (arguments.length > 1) {\n        nativeDate = createDateWithMultipleArgs(arguments);\n    } else if (useLocalTimeConverter(date)) {\n        nativeDate = createDateAsLocalTime(date);\n    } else {\n        nativeDate = createDateWithUTCTime(date);\n    }\n\n    this._date = nativeDate;\n}\n\n/**\n * Get milliseconds which is converted by timezone\n * @returns {number} milliseconds\n */\nTZDate.prototype.getTime = function() {\n    var time = this._date.getTime();\n\n    return time + getCustomTimezoneOffset(time) - getTimezoneOffset(time);\n};\n\n/**\n * Get UTC milliseconds\n * @returns {number} milliseconds\n */\nTZDate.prototype.getUTCTime = function() {\n    return this._date.getTime();\n};\n\n/**\n * toUTCString\n * @returns {string}\n */\nTZDate.prototype.toUTCString = function() {\n    return this._date.toUTCString();\n};\n\n/**\n * to Date\n * @returns {Date}\n */\nTZDate.prototype.toDate = function() {\n    return this._date;\n};\n\nTZDate.prototype.valueOf = function() {\n    return this.getTime();\n};\n\nTZDate.prototype.addDate = function(day) {\n    this.setDate(this.getDate() + day);\n\n    return this;\n};\n\nTZDate.prototype.addMinutes = function(minutes) {\n    this.setMinutes(this.getMinutes() + minutes);\n\n    return this;\n};\n\nTZDate.prototype.addMilliseconds = function(milliseconds) {\n    this.setMilliseconds(this.getMilliseconds() + milliseconds);\n\n    return this;\n};\n\n/* eslint-disable max-params*/\nTZDate.prototype.setWithRaw = function(y, M, d, h, m, s, ms) {\n    this.setFullYear(y, M, d);\n    this.setHours(h, m, s, ms);\n\n    return this;\n};\n\n/**\n * @returns {TZDate} local time\n */\nTZDate.prototype.toLocalTime = function() {\n    var time = this.getTime();\n    var utcTime = this.getUTCTime();\n    var diff = time - utcTime;\n\n    return new TZDate(utcTime - diff);\n};\n\ngetterMethods.forEach(function(methodName) {\n    TZDate.prototype[methodName] = function() {\n        return this._date[methodName].apply(this._date, arguments);\n    };\n});\n\nsetterMethods.forEach(function(methodName) {\n    TZDate.prototype[methodName] = function() {\n        this._date[methodName].apply(this._date, arguments);\n\n        return this.getTime();\n    };\n});\n\nmodule.exports = {\n    Date: TZDate,\n\n    /**\n     * Set offset\n     * @param {number} offset - timezone offset based on minutes\n     */\n    setOffset: function(offset) {\n        customOffsetMs = offset * MIN_TO_MS;\n    },\n\n    /**\n     * Set offset\n     * @param {number} offset - timezone offset based on minutes\n     */\n    setOffsetByTimezoneOption: function(offset) {\n        this.setOffset(-offset);\n        setByTimezoneOption = true;\n    },\n\n    /**\n     * Get offset in case of `setByTimezoneOption`. Or return 0.\n     * @returns {number} timezone offset offset minutes\n     */\n    getOffset: function() {\n        if (setByTimezoneOption) {\n            return customOffsetMs / MIN_TO_MS;\n        }\n\n        return 0;\n    },\n\n    /**\n     * Set a callback function to get timezone offset by timestamp\n     * @param {function} callback - callback function\n     */\n    setOffsetCallback: function(callback) {\n        timezoneOffsetCallback = callback;\n    },\n\n    /**\n     * (Use this method only for testing)\n     * Reset system timezone and custom timezone\n     */\n    restoreOffset: function() {\n        customOffsetMs = getTimezoneOffset();\n    }\n};\n","/**\n * @fileoverview Layout module that supplied split height, resize height features.\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\nvar util = require('tui-code-snippet');\nvar config = require('../config'),\n    common = require('./common'),\n    domutil = require('./domutil'),\n    domevent = require('./domevent'),\n    View = require('../view/view'),\n    VPanel = require('./vpanel'),\n    Drag = require('../handler/drag');\n\nvar mAbs = Math.abs;\n\n/**\n * @typedef PanelOptions\n * @type {object}\n * @property {number} [minHeight=0] - minimum height of panel\n * @property {number} [height=0] - current panel height\n * @property {boolean} [splitter=false] - is this panel uses splitter?\n * @property {boolean} [autoHeight=false] - is this panel uses remain height of container?\n * @property {string} [className=''] - className string for add created element\n */\n\n/**\n * @constructor\n * @extends {View}\n * @param {object} options - options for VLayout module\n *  @param {PanelOptions[]} [options.panels] - panels to add layout when initialize\n *  @param {number[]} [options.panelHeights] - panel height list\n * @param {HTMLElement} container - container element\n * @param {Theme} theme - theme instance\n */\nfunction VLayout(options, container, theme) {\n    var opt, tempHeights;\n\n    if (!(this instanceof VLayout)) {\n        return new VLayout(options, container);\n    }\n\n    View.call(this, container);\n\n    domutil.addClass(container, config.classname('vlayout-container'));\n\n    /**\n     * @type {object}\n     */\n    opt = this.options = util.extend({\n        panels: [],\n        panelHeights: []\n    }, options);\n\n    /**\n     * @type {VPanel[]}\n     */\n    this.panels = [];\n\n    /**\n     * @type {Drag}\n     */\n    this._drag = new Drag({\n        distance: 10,\n        exclude: function(target) {\n            return !domutil.hasClass(target, config.classname('splitter'));\n        }\n    }, container);\n\n    this._drag.on({\n        dragStart: this._onDragStart,\n        drag: this._onDrag,\n        dragEnd: this._onDragEnd\n    }, this);\n\n    /**\n     * @type {object}\n     */\n    this._dragData = null;\n\n    /**\n     * @type {Theme}\n     */\n    this.theme = theme;\n\n    if (opt.panels.length) {\n        if (opt.panelHeights.length) {\n            tempHeights = opt.panelHeights.slice();\n            util.forEach(opt.panels, function(panelOpt) {\n                if (!panelOpt.isSplitter && !panelOpt.autoHeight) {\n                    panelOpt.height = tempHeights.shift();\n                }\n            });\n        }\n\n        this.addPanels(opt.panels, this.container);\n    }\n\n    this.refresh();\n}\n\nutil.inherit(VLayout, View);\n\n/**\n * Get current panels height in layout\n * @returns {number[]} height of panels with `autoHeight` false\n */\nVLayout.prototype.getLayoutData = function() {\n    var heightList = [];\n\n    util.forEach(this.panels, function(panel) {\n        if (panel.isSplitter() || panel.options.autoHeight) {\n            return;\n        }\n\n        heightList.push(panel.getHeight());\n    });\n\n    return heightList;\n};\n\n/**\n * Set panels height in layout\n * @param {number[]} heightList of panels with `autoHeight` false\n */\nVLayout.prototype.setLayoutData = function(heightList) {\n    if (!heightList.length) {\n        return;\n    }\n\n    util.forEach(this.panels, function(panel) {\n        if (panel.isSplitter() || panel.options.autoHeight) {\n            return;\n        }\n\n        panel.setHeight(null, heightList.shift());\n    });\n\n    this.refresh();\n};\n\n/**\n * Get next panel instance by specific panel\n * @param {VPanel} panel - panel instance\n * @returns {VPanel} next panel\n */\nVLayout.prototype.nextPanel = function(panel) {\n    return this.panels[panel.index + 1];\n};\n\n/**\n * Get previous panel instance by specific panel\n * @param {VPanel} panel - panel instance\n * @returns {VPanel} previous panel\n */\nVLayout.prototype.prevPanel = function(panel) {\n    return this.panels[panel.index - 1];\n};\n\n/**\n * Initialize resizing guide element\n * @param {HTMLElement} element - element to use guide element after cloned\n * @param {number} top - top pixel value for guide element\n * @returns {HTMLElement} cloned element == guide element\n */\nVLayout.prototype._initializeGuideElement = function(element, top) {\n    var cloned = element.cloneNode(true);\n\n    domutil.addClass(cloned, config.classname('splitter-guide'));\n    this._refreshGuideElement(cloned, top);\n    this.container.appendChild(cloned);\n\n    return cloned;\n};\n\n/**\n * Refresh guide element position\n * @param {HTMLElement} element - guide element\n * @param {number} top - top pixel value for guide element\n */\nVLayout.prototype._refreshGuideElement = function(element, top) {\n    element.style.top = top + 'px';\n};\n\n/**\n * Clear guide element position\n * @param {HTMLElement} element - guide element\n */\nVLayout.prototype._clearGuideElement = function(element) {\n    domutil.remove(element);\n};\n\n/**\n * Resize overall panels size\n * @param {VPanel} splPanel - splitter panel instance\n * @param {number} startY - dragstart Y position\n * @param {number} mouseY - dragend Y position\n */\nVLayout.prototype._resize = function(splPanel, startY, mouseY) {\n    var diffY = startY - mouseY,\n        resizedHeight = mAbs(diffY),\n        resizeMap = [],\n        toDown = mouseY > startY,\n        backwardMethod = toDown ? 'prevPanel' : 'nextPanel',\n        forwardMethod = toDown ? 'nextPanel' : 'prevPanel',\n        cursor, resizeInfo;\n\n    cursor = this[backwardMethod](splPanel);\n    resizeInfo = cursor.getResizeInfoByGrowth(resizedHeight);\n    resizeMap.push([cursor, resizeInfo[0]]);\n\n    for (cursor = this[forwardMethod](cursor);\n        util.isExisty(cursor);\n        cursor = this[forwardMethod](cursor)) {\n        if (cursor.isSplitter()) {\n            continue;\n        }\n\n        resizeInfo = cursor.getResizeInfoByGrowth(-resizedHeight);\n        resizeMap.push([cursor, resizeInfo[0]]);\n        resizedHeight -= resizeInfo[1];\n    }\n\n    util.forEach(resizeMap, function(pair) {\n        pair[0].setHeight(null, pair[1], true);\n        pair[0].fire('resize');\n    });\n};\n\n/**\n * Get summation of splitter and panel's minimum height upper and below of supplied splitter\n * @param {VPanel} splPanel - splitter panel instance\n * @returns {number[]} upper and below splitter's height and panel minimum height summation.\n */\nVLayout.prototype._getMouseYAdditionalLimit = function(splPanel) {\n    var upper = 0,\n        below = 0,\n        cursor,\n        func = function(panel) {\n            if (panel.isSplitter()) {\n                return panel.getHeight();\n            }\n\n            return panel.options.minHeight;\n        };\n\n    for (cursor = this.prevPanel(splPanel);\n        util.isExisty(cursor);\n        cursor = this.prevPanel(cursor)) {\n        upper += func(cursor);\n    }\n\n    for (cursor = this.nextPanel(splPanel);\n        util.isExisty(cursor);\n        cursor = this.nextPanel(cursor)) {\n        below += func(cursor);\n    }\n\n    return [upper, below];\n};\n\n/**********\n * Drag Handlers\n **********/\n\n/**\n * Drag start schedule handler\n * @param {object} e - drag start schedule data\n */\nVLayout.prototype._onDragStart = function(e) {\n    var oEvent = e.originEvent,\n        target = e.target,\n        splIndex = domutil.getData(target, 'panelIndex'),\n        splPanel = this.panels[splIndex],\n        splHeight = splPanel.getHeight(),\n        splOffsetY = domevent.getMousePosition(oEvent, target)[1],\n        mouseY = domevent.getMousePosition(oEvent, this.container)[1],\n        guideElement = this._initializeGuideElement(target, mouseY);\n\n    splPanel.addClass(config.classname('splitter-focused'));\n\n    this._dragData = {\n        splPanel: splPanel,\n        splOffsetY: splOffsetY,\n        guideElement: guideElement,\n        startY: mouseY - splOffsetY,\n        minY: 0,\n        maxY: this.getViewBound().height - splHeight\n    };\n\n    if (!util.browser.msie) {\n        domutil.addClass(document.body, config.classname('resizing'));\n    }\n};\n\n/**\n * Drag schedule handler\n * @param {object} e - drag schedule data\n */\nVLayout.prototype._onDrag = function(e) {\n    var dragData = this._dragData,\n        mouseY = domevent.getMousePosition(e.originEvent, this.container)[1];\n\n    mouseY = common.limit(mouseY - dragData.splOffsetY, [dragData.minY], [dragData.maxY]);\n\n    this._refreshGuideElement(dragData.guideElement, mouseY);\n};\n\n/**\n * Drag end schedule handler\n * @fires VLayout#resize\n * @param {object} e - dragend schedule data\n */\nVLayout.prototype._onDragEnd = function(e) {\n    var dragData = this._dragData,\n        asideMinMax = this._getMouseYAdditionalLimit(dragData.splPanel),\n        mouseY = domevent.getMousePosition(e.originEvent, this.container)[1];\n\n    // mouseY value can't exceed summation of splitter height and panel's minimum height based on target splitter.\n    mouseY = common.limit(\n        mouseY - dragData.splOffsetY,\n        [dragData.minY + asideMinMax[0]],\n        [dragData.maxY - asideMinMax[1]]\n    );\n\n    this._resize(dragData.splPanel, dragData.startY, mouseY);\n\n    /**\n     * @event VLayout#resize\n     * @type {object}\n     * @property {number[]} layoutData - layout data after resized\n     */\n    this.fire('resize', {\n        layoutData: this.getLayoutData()\n    });\n\n    this._dragData = null;\n    this._clearGuideElement(dragData.guideElement);\n    dragData.splPanel.removeClass(config.classname('splitter-focused'));\n    domutil.removeClass(document.body, config.classname('resizing'));\n};\n\n/**********\n * Methods\n **********/\n\n/**\n * refresh each panels\n */\nVLayout.prototype.refresh = function() {\n    var panelToFillHeight = [];\n    var layoutHeight = this.getViewBound().height;\n    var usedHeight = 0;\n    var remainHeight;\n\n    if (!layoutHeight) {\n        return;\n    }\n\n    util.forEach(this.panels, function(panel) {\n        if (panel.options.autoHeight) {\n            panelToFillHeight.push(panel);\n        } else {\n            usedHeight += panel.getHeight();\n        }\n    });\n\n    remainHeight = (layoutHeight - usedHeight) / panelToFillHeight.length;\n\n    util.forEach(panelToFillHeight, function(panel) {\n        panel.setHeight(null, remainHeight);\n    });\n};\n\n/**\n * add panel\n * @param {PanelOptions} options - options for panel\n * @param {container} [container] - container element\n */\nVLayout.prototype.addPanel = function(options, container) {\n    var element = document.createElement('div'),\n        panels = this.panels,\n        index = panels.length;\n\n    options = util.extend({\n        index: index\n    }, options);\n\n    panels.push(new VPanel(options, element, this.theme));\n\n    container.appendChild(element);\n};\n\n/**\n * Add multiple panel\n * @param {PanelOptions[]} options - panel options list\n * @param {HTMLElement} container - container element\n */\nVLayout.prototype.addPanels = function(options, container) {\n    var self = this,\n        frag = document.createDocumentFragment();\n\n    util.forEach(options, function(option) {\n        self.addPanel(option, frag);\n    });\n\n    container.appendChild(frag);\n};\n\n/**\n * Get a panel by name\n * @param {string} name - panel's name\n * @returns {VPanel}\n */\nVLayout.prototype.getPanelByName = function(name) {\n    var found;\n    util.forEach(this.panels, function(panel) {\n        if (panel.name === name) {\n            found = panel;\n        }\n    });\n\n    return found;\n};\n\nmodule.exports = VLayout;\n","/**\n * @fileoverview Panel class for VLayout module\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\nvar util = require('tui-code-snippet');\nvar config = require('../config'),\n    common = require('./common'),\n    domutil = require('./domutil'),\n    View = require('../view/view');\n\n/**\n * @constructor\n * @extends {View}\n * @param {object} options - options for VPanel\n *  @param {number} options.index - index of panel in vlayout\n *  @param {number} [options.minHeight=0] - minimum height of panel\n *  @param {number} [options.height] - initial height of panel\n *  @param {boolean} [options.isSplitter=false] - set true then this panel works splitter\n *  @param {boolean} [options.autoHeight=false] - set true then this panel use remain height after other panel resized.\n *  @param {string} [options.className] - additional class name to add element\n * @param {HTMLElement} container - container element\n * @param {Theme} theme - theme instance\n */\nfunction VPanel(options, container, theme) {\n    View.call(this, container);\n\n    /**\n     * @type {object}\n     */\n    this.options = util.extend({\n        index: 0,\n        name: '0',\n        minHeight: 0,\n        maxHeight: null,\n        height: null,\n        isSplitter: false,\n        autoHeight: false,\n        className: ''\n    }, options);\n\n    /**\n     * @type {number}\n     */\n    this.index = this.options.index;\n\n    /**\n     * @type {string}\n     */\n    this.name = this.options.name || String(this.index);\n\n    this.isHeightForcedSet = false;\n\n    /**\n     * @type {Theme}\n     */\n    this.theme = theme;\n\n    this._initPanel(this.options, container);\n}\n\nutil.inherit(VPanel, View);\n\n/**\n * whether this panel is splitter?\n * @returns {boolean} panel is splitter?\n */\nVPanel.prototype.isSplitter = function() {\n    return this.options.isSplitter;\n};\n\n/**\n * set max height of panel\n * @param {number} maxHeight - maxHeight\n */\nVPanel.prototype.setMaxHeight = function(maxHeight) {\n    if (!this.options.autoHeight) {\n        this.options.maxHeight = maxHeight;\n    }\n};\n\n/**\n * set forced height flag\n * @param {boolean} set - enable or not\n */\nVPanel.prototype.setHeightForcedSet = function(set) {\n    this.isHeightForcedSet = set;\n};\n\n/**\n * get forced height flag\n * @returns {boolean} set - enable or not\n */\nVPanel.prototype.getHeightForcedSet = function() {\n    return this.isHeightForcedSet;\n};\n\n/**\n * set height of html element\n * @param {HTMLElement} [container] - container element\n * @param {number} newHeight - height\n * @param {boolean} force - whether ignore max-length\n */\nVPanel.prototype.setHeight = function(container, newHeight, force) {\n    var maxHeight = this.options.maxHeight;\n    var minHeight = this.options.minHeight;\n    var autoHeight = this.options.autoHeight;\n    container = container || this.container;\n\n    // 한번 force 호출이 일어난 이후에는 force 호출만 허용한다\n    if (!force && this.isHeightForcedSet && !autoHeight) {\n        return;\n    }\n\n    if (force) {\n        this.isHeightForcedSet = true;\n    } else if (maxHeight) {\n        newHeight = Math.min(newHeight, maxHeight);\n    }\n    newHeight = Math.max(minHeight, newHeight);\n\n    container.style.height = newHeight + 'px';\n};\n\n/**\n * Calculate new height of panel and remains by supplied height growth\n * @param {number} growth - growth value\n * @returns {number[]} newHeight, remainHeight\n */\nVPanel.prototype.getResizeInfoByGrowth = function(growth) {\n    var height = this.getHeight(),\n        newHeight = height + growth,\n        resizeTo = Math.max(0, newHeight, this.options.minHeight);\n\n    return [resizeTo, height - resizeTo];\n};\n\n/**\n * get outer height of panel element\n * @returns {number} outer height of panel element\n */\nVPanel.prototype.getHeight = function() {\n    return domutil.getSize(this.container)[1];\n};\n\n/**\n * add design class to panel element\n * @param {string} className - classname string\n */\nVPanel.prototype.addClass = function(className) {\n    domutil.addClass(this.container, className);\n};\n\n/**\n * remove design class to panel element\n * @param {string} className - classname string\n */\nVPanel.prototype.removeClass = function(className) {\n    domutil.removeClass(this.container, className);\n};\n\n/**\n * initialize panel element\n * @param {PanelOptions} options - options for panel\n * @param {HTMLDivElement} container - panel element\n */\nVPanel.prototype._initPanel = function(options, container) {\n    var height;\n\n    domutil.setData(container, 'panelIndex', options.index);\n\n    if (options.isSplitter) {\n        domutil.addClass(container, config.classname('splitter'));\n        this.applyTheme();\n\n        return;\n    }\n\n    if (options.className) {\n        domutil.addClass(container, options.className);\n    }\n\n    if (options.autoHeight) {\n        domutil.setData(container, 'autoHeight', true);\n    } else {\n        height = common.limit(options.height || 0,\n            [options.minHeight],\n            [options.maxHeight || options.height]\n        );\n\n        options.height = height;\n        this.setHeight(container, height);\n    }\n};\n\nVPanel.prototype.applyTheme = function() {\n    var style = this.container.style;\n    var theme = this.theme;\n\n    if (!theme) {\n        return;\n    }\n\n    style.borderTop = theme.week.vpanelSplitter.border || theme.common.border;\n    style.borderBottom = theme.week.vpanelSplitter.border || theme.common.border;\n    style.height = theme.week.vpanelSplitter.height;\n};\n\nmodule.exports = VPanel;\n","/**\n * @fileoverview Global configuration object module. This @echo syntax will change preprocess context. See gulpfile.js\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\nvar cssPrefix = 'tui-full-calendar-',\n    alldayGetViewID = new RegExp('^' + cssPrefix + 'weekday[\\\\s]tui-view-(\\\\d+)'),\n    alldayCheckPermission = new RegExp('^' + cssPrefix + 'schedule(-title)?$'),\n    timeGetViewID = new RegExp('^' + cssPrefix + 'time-date[\\\\s]tui-view-(\\\\d+)');\n\nvar config = {\n    throwError: function(msg) {\n        throw new Error(msg);\n    },\n\n    cssPrefix: cssPrefix,\n\n    classname: function(str) {\n        str = str || '';\n\n        if (str.charAt(0) === '.') {\n            return '.' + config.cssPrefix + str.slice(1);\n        }\n\n        return config.cssPrefix + str;\n    },\n\n    allday: {\n        getViewIDRegExp: alldayGetViewID,\n        checkCondRegExp: alldayCheckPermission\n    },\n\n    daygrid: {\n        getViewIDRegExp: alldayGetViewID,\n        checkCondRegExp: alldayCheckPermission\n    },\n\n    time: {\n        getViewIDRegExp: timeGetViewID\n    }\n};\n\nmodule.exports = config;\n","/**\n * @fileoverview Base calendar controller\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\nvar util = require('tui-code-snippet');\nvar Schedule = require('../model/schedule');\nvar ScheduleViewModel = require('../model/viewModel/scheduleViewModel');\nvar datetime = require('../common/datetime');\nvar common = require('../common/common');\nvar Theme = require('../theme/theme');\n\n/**\n * @constructor\n * @param {object} options - options for base controller\n * @param {function} [options.groupFunc] - function for group each models {@see Collection#groupBy}\n * @param {themeConfig} [options.theme] - theme object\n * @mixes util.CustomEvents\n */\nfunction Base(options) {\n    options = options || {};\n\n    /**\n     * function for group each schedule models.\n     * @type {function}\n     * @param {ScheduleViewModel} viewModel - view model instance\n     * @returns {string} group key\n     */\n    this.groupFunc = options.groupFunc || function(viewModel) {\n        var model = viewModel.model;\n\n        if (viewModel.model.isAllDay) {\n            return 'allday';\n        }\n\n        if (model.category === 'time' && (model.end - model.start > datetime.MILLISECONDS_PER_DAY)) {\n            return 'allday';\n        }\n\n        return model.category;\n    };\n\n    /**\n     * schedules collection.\n     * @type {Collection}\n     */\n    this.schedules = common.createScheduleCollection();\n\n    /**\n     * Matrix for multidate schedules.\n     * @type {object.<string, array>}\n     */\n    this.dateMatrix = {};\n\n    /**\n     * Theme\n     * @type {Theme}\n     */\n    this.theme = new Theme(options.theme);\n\n    /**\n     * Calendar list\n     * @type {Array.<Calendar>}\n     */\n    this.calendars = [];\n}\n\n/**\n * Calculate contain dates in schedule.\n * @private\n * @param {Schedule} schedule The instance of schedule.\n * @returns {array} contain dates.\n */\nBase.prototype._getContainDatesInSchedule = function(schedule) {\n    var scheduleStart = schedule.getStarts();\n    var scheduleEnd = schedule.getEnds();\n    var start = datetime.start(scheduleStart);\n    var equalStartEnd = datetime.compare(scheduleStart, scheduleEnd) === 0;\n    var endDate = equalStartEnd ? scheduleEnd : datetime.convertStartDayToLastDay(scheduleEnd);\n    var end = datetime.end(endDate);\n    var range = datetime.range(\n        start,\n        end,\n        datetime.MILLISECONDS_PER_DAY\n    );\n\n    return range;\n};\n\n/****************\n * CRUD Schedule\n ****************/\n\n/**\n * Create a schedule instance from raw data.\n * @emits Base#beforeCreateSchedule\n * @emits Base#createdSchedule\n * @param {object} options Data object to create schedule.\n * @param {boolean} silent - set true then don't fire events.\n * @returns {Schedule} The instance of Schedule that created.\n */\nBase.prototype.createSchedule = function(options, silent) {\n    var schedule,\n        scheduleData = {\n            data: options\n        };\n\n    /**\n     * @event Base#beforeCreateSchedule\n     * @type {Calendar~Schedule[]}\n     */\n    if (!this.invoke('beforeCreateSchedule', scheduleData)) {\n        return null;\n    }\n\n    schedule = this.addSchedule(Schedule.create(options));\n\n    if (!silent) {\n        /**\n         * @event Base#createdSchedule\n         * @type {Schedule}\n         */\n        this.fire('createdSchedule', schedule);\n    }\n\n    return schedule;\n};\n\n/**\n * @emits Base#beforeCreateSchedule\n * @emits Base#createdSchedule\n * @param {Calendar~Schedule[]} dataList - dataObject list to create schedule.\n * @param {boolean} [silent=false] - set true then don't fire events.\n * @returns {Schedule[]} The instance list of Schedule that created.\n */\nBase.prototype.createSchedules = function(dataList, silent) {\n    var self = this;\n\n    return util.map(dataList, function(data) {\n        return self.createSchedule(data, silent);\n    });\n};\n\n/**\n * Update a schedule.\n * @emits Base#updateSchedule\n * @param {Schedule} schedule - schedule instance to update\n * @param {object} options updated object data.\n * @returns {Schedule} updated schedule instance\n */\n// eslint-disable-next-line complexity\nBase.prototype.updateSchedule = function(schedule, options) {\n    var start = options.start || schedule.start;\n    var end = options.end || schedule.end;\n\n    options = options || {};\n\n    if (['milestone', 'task', 'allday', 'time'].indexOf(options.category) > -1) {\n        schedule.set('category', options.category);\n    }\n\n    if (options.category === 'allday') {\n        options.isAllDay = true;\n    }\n\n    if (!util.isUndefined(options.isAllDay)) {\n        schedule.set('isAllDay', options.isAllDay);\n    }\n\n    if (!util.isUndefined(options.calendarId)) {\n        schedule.set('calendarId', options.calendarId);\n    }\n\n    if (options.title) {\n        schedule.set('title', options.title);\n    }\n\n    if (options.body) {\n        schedule.set('body', options.body);\n    }\n\n    if (options.start || options.end) {\n        if (schedule.isAllDay) {\n            schedule.setAllDayPeriod(start, end);\n        } else {\n            schedule.setTimePeriod(start, end);\n        }\n    }\n\n    if (options.color) {\n        schedule.set('color', options.color);\n    }\n\n    if (options.bgColor) {\n        schedule.set('bgColor', options.bgColor);\n    }\n\n    if (options.borderColor) {\n        schedule.set('borderColor', options.borderColor);\n    }\n\n    if (options.origin) {\n        schedule.set('origin', options.origin);\n    }\n\n    if (!util.isUndefined(options.isPending)) {\n        schedule.set('isPending', options.isPending);\n    }\n\n    if (!util.isUndefined(options.isFocused)) {\n        schedule.set('isFocused', options.isFocused);\n    }\n\n    if (!util.isUndefined(options.isReadOnly)) {\n        schedule.set('isReadOnly', options.isReadOnly);\n    }\n\n    if (options.location) {\n        schedule.set('location', options.location);\n    }\n\n    if (options.state) {\n        schedule.set('state', options.state);\n    }\n\n    if (options.raw) {\n        schedule.set('raw', options.raw);\n    }\n\n    if (options.attendees) {\n        schedule.set('attendees', options.attendees);\n    }\n\n    this._removeFromMatrix(schedule);\n    this._addToMatrix(schedule);\n\n    /**\n     * @event Base#updateSchedule\n     */\n    this.fire('updateSchedule');\n\n    return schedule;\n};\n\n/**\n * Delete schedule instance from controller.\n * @param {Schedule} schedule - schedule instance to delete\n * @returns {Schedule} deleted model instance.\n */\nBase.prototype.deleteSchedule = function(schedule) {\n    this._removeFromMatrix(schedule);\n    this.schedules.remove(schedule);\n\n    return schedule;\n};\n\n/**\n * Set date matrix to supplied schedule instance.\n * @param {Schedule} schedule - instance of schedule.\n */\nBase.prototype._addToMatrix = function(schedule) {\n    var ownMatrix = this.dateMatrix;\n    var containDates = this._getContainDatesInSchedule(schedule);\n\n    util.forEach(containDates, function(date) {\n        var ymd = datetime.format(date, 'YYYYMMDD'),\n            matrix = ownMatrix[ymd] = ownMatrix[ymd] || [];\n\n        matrix.push(util.stamp(schedule));\n    });\n};\n\n/**\n * Remove schedule's id from matrix.\n * @param {Schedule} schedule - instance of schedule\n */\nBase.prototype._removeFromMatrix = function(schedule) {\n    var modelID = util.stamp(schedule);\n\n    util.forEach(this.dateMatrix, function(matrix) {\n        var index = util.inArray(modelID, matrix);\n\n        if (~index) {\n            matrix.splice(index, 1);\n        }\n    }, this);\n};\n\n/**\n * Add a schedule instance.\n * @emits Base#addedSchedule\n * @param {Schedule} schedule The instance of Schedule.\n * @param {boolean} silent - set true then don't fire events.\n * @returns {Schedule} The instance of Schedule that added.\n */\nBase.prototype.addSchedule = function(schedule, silent) {\n    this.schedules.add(schedule);\n    this._addToMatrix(schedule);\n\n    if (!silent) {\n        /**\n         * @event Base#addedSchedule\n         * @type {object}\n         */\n        this.fire('addedSchedule', schedule);\n    }\n\n    return schedule;\n};\n\n/**\n * split schedule model by ymd.\n * @param {Date} start - start date\n * @param {Date} end - end date\n * @param {Collection} scheduleCollection - collection of schedule model.\n * @returns {object.<string, Collection>} splitted schedule model collections.\n */\nBase.prototype.splitScheduleByDateRange = function(start, end, scheduleCollection) {\n    var range = datetime.range(\n            datetime.start(start),\n            datetime.end(end),\n            datetime.MILLISECONDS_PER_DAY\n        ),\n        ownMatrix = this.dateMatrix,\n        result = {};\n\n    util.forEachArray(range, function(date) {\n        var ymd = datetime.format(date, 'YYYYMMDD'),\n            matrix = ownMatrix[ymd],\n            collection;\n\n        collection = result[ymd] = common.createScheduleCollection();\n\n        if (matrix && matrix.length) {\n            util.forEachArray(matrix, function(id) {\n                scheduleCollection.doWhenHas(id, function(schedule) {\n                    collection.add(schedule);\n                });\n            });\n        }\n    });\n\n    return result;\n};\n\n/**\n * Return schedules in supplied date range.\n *\n * available only YMD.\n * @param {TZDate} start start date.\n * @param {TZDate} end end date.\n * @returns {object.<string, Collection>} schedule collection grouped by dates.\n */\nBase.prototype.findByDateRange = function(start, end) {\n    var range = datetime.range(\n            datetime.start(start),\n            datetime.end(end),\n            datetime.MILLISECONDS_PER_DAY\n        ),\n        ownSchedules = this.schedules.items,\n        ownMatrix = this.dateMatrix,\n        dformat = datetime.format,\n        result = {},\n        matrix,\n        ymd,\n        viewModels;\n\n    util.forEachArray(range, function(date) {\n        ymd = dformat(date, 'YYYYMMDD');\n        matrix = ownMatrix[ymd];\n        viewModels = result[ymd] = common.createScheduleCollection();\n\n        if (matrix && matrix.length) {\n            viewModels.add.apply(viewModels, util.map(matrix, function(id) {\n                return ScheduleViewModel.create(ownSchedules[id]);\n            }));\n        }\n    });\n\n    return result;\n};\n\nBase.prototype.clearSchedules = function() {\n    this.dateMatrix = {};\n    this.schedules.clear();\n    /**\n     * for inner view when clear schedules\n     * @event Base#clearSchedules\n     * @type {Schedule}\n     */\n    this.fire('clearSchedules');\n};\n\n/**\n * Set a theme.\n * @param {themeConfig} theme - theme keys, styles\n * @returns {Array.<string>} keys - error keys not predefined.\n */\nBase.prototype.setTheme = function(theme) {\n    return this.theme.setStyles(theme);\n};\n\n/**\n * Set calendar list\n * @param {Array.<Calendar>} calendars - calendar list\n */\nBase.prototype.setCalendars = function(calendars) {\n    this.calendars = calendars;\n};\n\n// mixin\nutil.CustomEvents.mixin(Base);\n\nmodule.exports = Base;\n","/**\n * @fileoverview Core methods for schedule block placing\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\nvar util = require('tui-code-snippet');\nvar forEachArr = util.forEachArray,\n    aps = Array.prototype.slice;\n\nvar datetime = require('../../common/datetime');\nvar TZDate = require('../../common/timezone').Date;\nvar Collection = require('../../common/collection');\nvar ScheduleViewModel = require('../../model/viewModel/scheduleViewModel');\n\nvar Core = {\n    /**\n     * Calculate collision group.\n     * @param {array} viewModels List of viewmodels.\n     * @returns {array} Collision Group.\n     */\n    getCollisionGroup: function(viewModels) {\n        var collisionGroups = [],\n            foundPrevCollisionSchedule = false,\n            previousScheduleList;\n\n        if (!viewModels.length) {\n            return collisionGroups;\n        }\n\n        collisionGroups[0] = [util.stamp(viewModels[0].valueOf())];\n        forEachArr(viewModels.slice(1), function(schedule, index) {\n            foundPrevCollisionSchedule = false;\n            previousScheduleList = aps.apply(viewModels, [0, index + 1]).reverse();\n\n            forEachArr(previousScheduleList, function(previous) {\n                if (schedule.collidesWith(previous)) {\n                    // If overlapping previous schedules, find a Collision Group of overlapping schedules and add this schedules\n                    foundPrevCollisionSchedule = true;\n\n                    forEachArr(collisionGroups.slice(0).reverse(), function(group) {\n                        if (~util.inArray(util.stamp(previous.valueOf()), group)) {\n                            // If you find a previous schedule that overlaps, include it in the Collision Group to which it belongs.\n                            group.push(util.stamp(schedule.valueOf()));\n\n                            return false; // returning false can stop this loop\n                        }\n\n                        return true;\n                    });\n\n                    return false; // returning false can stop this loop\n                }\n\n                return true;\n            });\n\n            if (!foundPrevCollisionSchedule) {\n                // This schedule is a schedule that does not overlap with the previous schedule, so a new Collision Group is constructed.\n                collisionGroups.push([util.stamp(schedule.valueOf())]);\n            }\n        });\n\n        return collisionGroups;\n    },\n\n    /**\n     * Get row length by column index in 2d matrix.\n     * @param {array[]} arr2d Matrix\n     * @param {number} col Column index.\n     * @returns {number} Last row number in column.\n     */\n    getLastRowInColumn: function(arr2d, col) {\n        var row = arr2d.length;\n\n        while (row > 0) {\n            row -= 1;\n            if (!util.isUndefined(arr2d[row][col])) {\n                return row;\n            }\n        }\n\n        return false;\n    },\n\n    /**\n     * Calculate matrix for appointment block element placing.\n     * @param {Collection} collection model collection.\n     * @param {array[]} collisionGroups Collision groups for schedule set.\n     * @returns {array} matrices\n     */\n    getMatrices: function(collection, collisionGroups) {\n        var result = [],\n            getLastRowInColumn = Core.getLastRowInColumn;\n\n        forEachArr(collisionGroups, function(group) {\n            var matrix = [[]];\n\n            forEachArr(group, function(scheduleID) {\n                var schedule = collection.items[scheduleID],\n                    col = 0,\n                    found = false,\n                    nextRow,\n                    lastRowInColumn;\n\n                while (!found) {\n                    lastRowInColumn = getLastRowInColumn(matrix, col);\n\n                    if (lastRowInColumn === false) {\n                        matrix[0].push(schedule);\n                        found = true;\n                    } else if (!schedule.collidesWith(matrix[lastRowInColumn][col])) {\n                        nextRow = lastRowInColumn + 1;\n                        if (util.isUndefined(matrix[nextRow])) {\n                            matrix[nextRow] = [];\n                        }\n                        matrix[nextRow][col] = schedule;\n                        found = true;\n                    }\n\n                    col += 1;\n                }\n            });\n\n            result.push(matrix);\n        });\n\n        return result;\n    },\n\n    /**\n     * Filter that get schedule model in supplied date ranges.\n     * @param {Date} start - start date\n     * @param {Date} end - end date\n     * @returns {function} schedule filter function\n     */\n    getScheduleInDateRangeFilter: function(start, end) {\n        return function(model) {\n            var ownStarts = model.getStarts(),\n                ownEnds = model.getEnds();\n\n            // shorthand condition of\n            //\n            // (ownStarts >= start && ownEnds <= end) ||\n            // (ownStarts < start && ownEnds >= start) ||\n            // (ownEnds > end && ownStarts <= end)\n            return !(ownEnds < start || ownStarts > end);\n        };\n    },\n\n    /**\n     * Position each view model for placing into container\n     * @param {Date} start - start date to render\n     * @param {Date} end - end date to render\n     * @param {array} matrices - matrices from controller\n     * @param {function} [iteratee] - iteratee function invoke each view models\n     */\n    positionViewModels: function(start, end, matrices, iteratee) {\n        var ymdListToRender;\n\n        ymdListToRender = util.map(\n            datetime.range(start, end, datetime.MILLISECONDS_PER_DAY),\n            function(date) {\n                return datetime.format(date, 'YYYYMMDD');\n            }\n        );\n\n        forEachArr(matrices, function(matrix) {\n            forEachArr(matrix, function(column) {\n                forEachArr(column, function(viewModel, index) {\n                    var ymd, dateLength, startDate, endDate;\n\n                    if (!viewModel) {\n                        return;\n                    }\n\n                    startDate = viewModel.getStarts();\n                    endDate = viewModel.getEnds();\n                    dateLength = datetime.range(\n                        datetime.start(startDate),\n                        datetime.renderEnd(startDate, endDate),\n                        datetime.MILLISECONDS_PER_DAY\n                    ).length;\n\n                    ymd = datetime.format(startDate, 'YYYYMMDD');\n                    viewModel.top = index;\n                    viewModel.left = util.inArray(ymd, ymdListToRender);\n                    viewModel.width = dateLength;\n\n                    if (iteratee) {\n                        iteratee(viewModel);\n                    }\n                });\n            });\n        });\n    },\n\n    /**\n     * Limit start, end date each view model for render properly\n     * @param {TZDate} start - start date to render\n     * @param {TZDate} end - end date to render\n     * @param {Collection|ScheduleViewModel} viewModelColl - schedule view\n     *  model collection or ScheduleViewModel\n     * @returns {ScheduleViewModel} return view model when third parameter is\n     *  view model\n     */\n    limitRenderRange: function(start, end, viewModelColl) {\n        /**\n         * Limit render range for view models\n         * @param {ScheduleViewModel} viewModel - view model instance\n         * @returns {ScheduleViewModel} view model that limited render range\n         */\n        function limit(viewModel) {\n            if (viewModel.getStarts() < start) {\n                viewModel.exceedLeft = true;\n                viewModel.renderStarts = new TZDate(start);\n            }\n\n            if (viewModel.getEnds() > end) {\n                viewModel.exceedRight = true;\n                viewModel.renderEnds = new TZDate(end);\n            }\n\n            return viewModel;\n        }\n\n        if (viewModelColl.constructor === Collection) {\n            viewModelColl.each(limit);\n\n            return null;\n        }\n\n        return limit(viewModelColl);\n    },\n\n    /**\n     * Convert schedule model collection to view model collection.\n     * @param {Collection} modelColl - collection of schedule model\n     * @returns {Collection} collection of schedule view model\n     */\n    convertToViewModel: function(modelColl) {\n        var viewModelColl;\n\n        viewModelColl = new Collection(function(viewModel) {\n            return viewModel.cid();\n        });\n\n        modelColl.each(function(model) {\n            viewModelColl.add(ScheduleViewModel.create(model));\n        });\n\n        return viewModelColl;\n    }\n};\n\nmodule.exports = Core;\n","/**\n * @fileoverview Controller mixin for Month View\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\nvar util = require('tui-code-snippet');\nvar array = require('../../common/array'),\n    datetime = require('../../common/datetime'),\n    Collection = require('../../common/collection');\nvar mmax = Math.max;\n\nvar Month = {\n    /**\n     * Filter function for find time schedule\n     * @param {ScheduleViewModel} viewModel - schedule view model\n     * @returns {boolean} whether model is time schedule?\n     */\n    _onlyTimeFilter: function(viewModel) {\n        return !viewModel.model.isAllDay && !viewModel.hasMultiDates;\n    },\n\n    /**\n     * Filter function for find allday schedule\n     * @param {ScheduleViewModel} viewModel - schedule view model\n     * @returns {boolean} whether model is allday schedule?\n     */\n    _onlyAlldayFilter: function(viewModel) {\n        return viewModel.model.isAllDay || viewModel.hasMultiDates;\n    },\n\n    /**\n     * Weight top value +1 for month view render\n     * @param {ScheduleViewModel} viewModel - schedule view model\n     */\n    _weightTopValue: function(viewModel) {\n        viewModel.top = viewModel.top || 0;\n        viewModel.top += 1;\n    },\n\n    /**\n     * Adjust render range to render properly.\n     *\n     * Limit start, end for each allday schedules and expand start, end for\n     * each time schedules\n     * @this Base\n     * @param {TZDate} start - render start date\n     * @param {TZDate} end - render end date\n     * @param {Collection} vColl - view model collection\n     * property.\n     */\n    _adjustRenderRange: function(start, end, vColl) {\n        var ctrlCore = this.Core;\n\n        vColl.each(function(viewModel) {\n            if (viewModel.model.isAllDay || viewModel.hasMultiDates) {\n                ctrlCore.limitRenderRange(start, end, viewModel);\n            }\n        });\n    },\n\n    /**\n     * Get max top index value for allday schedules in specific date (YMD)\n     * @this Base\n     * @param {string} ymd - yyyymmdd formatted value\n     * @param {Collection} vAlldayColl - collection of allday schedules\n     * @returns {number} max top index value in date\n     */\n    _getAlldayMaxTopIndexAtYMD: function(ymd, vAlldayColl) {\n        var dateMatrix = this.dateMatrix,\n            topIndexesInDate = [];\n        util.forEach(dateMatrix[ymd], function(cid) {\n            vAlldayColl.doWhenHas(cid, function(viewModel) {\n                topIndexesInDate.push(viewModel.top);\n            });\n        });\n\n        if (topIndexesInDate.length > 0) {\n            return mmax.apply(null, topIndexesInDate);\n        }\n\n        return 0;\n    },\n\n    /**\n     * Adjust time view model's top index value\n     * @this Base\n     * @param {Collection} vColl - collection of schedules\n     */\n    _adjustTimeTopIndex: function(vColl) {\n        var ctrlMonth = this.Month;\n        var getAlldayMaxTopIndexAtYMD = ctrlMonth._getAlldayMaxTopIndexAtYMD;\n        var vAlldayColl = vColl.find(ctrlMonth._onlyAlldayFilter);\n        var sortedTimeSchedules = vColl.find(ctrlMonth._onlyTimeFilter).sort(array.compare.schedule.asc);\n        var maxIndexInYMD = {};\n\n        sortedTimeSchedules.forEach(function(timeViewModel) {\n            var scheduleYMD = datetime.format(timeViewModel.getStarts(), 'YYYYMMDD');\n            var alldayMaxTopInYMD = maxIndexInYMD[scheduleYMD];\n\n            if (util.isUndefined(alldayMaxTopInYMD)) {\n                alldayMaxTopInYMD = maxIndexInYMD[scheduleYMD] =\n                    getAlldayMaxTopIndexAtYMD(scheduleYMD, vAlldayColl);\n            }\n            maxIndexInYMD[scheduleYMD] = timeViewModel.top =\n                (alldayMaxTopInYMD + 1);\n        });\n    },\n\n    /**\n     * Adjust time view model's top index value\n     * @this Base\n     * @param {Collection} vColl - collection of schedules\n     */\n    _stackTimeFromTop: function(vColl) {\n        var ctrlMonth = this.Month;\n        var vAlldayColl = vColl.find(ctrlMonth._onlyAlldayFilter);\n        var sortedTimeSchedules = vColl.find(ctrlMonth._onlyTimeFilter).sort(array.compare.schedule.asc);\n        var indiceInYMD = {};\n        var dateMatrix = this.dateMatrix;\n\n        sortedTimeSchedules.forEach(function(timeViewModel) {\n            var scheduleYMD = datetime.format(timeViewModel.getStarts(), 'YYYYMMDD');\n            var topArrayInYMD = indiceInYMD[scheduleYMD];\n            var maxTopInYMD;\n            var i;\n\n            if (util.isUndefined(topArrayInYMD)) {\n                topArrayInYMD = indiceInYMD[scheduleYMD] = [];\n                util.forEach(dateMatrix[scheduleYMD], function(cid) {\n                    vAlldayColl.doWhenHas(cid, function(viewModel) {\n                        topArrayInYMD.push(viewModel.top);\n                    });\n                });\n            }\n\n            if (util.inArray(timeViewModel.top, topArrayInYMD) >= 0) {\n                maxTopInYMD = mmax.apply(null, topArrayInYMD) + 1;\n                for (i = 1; i <= maxTopInYMD; i += 1) {\n                    timeViewModel.top = i;\n                    if (util.inArray(timeViewModel.top, topArrayInYMD) < 0) {\n                        break;\n                    }\n                }\n            }\n            topArrayInYMD.push(timeViewModel.top);\n        });\n    },\n\n    /**\n     * Convert multi-date time schedule to all-day schedule\n     * @this Base\n     * @param {Collection} vColl - view model collection\n     * property.\n     */\n    _addMultiDatesInfo: function(vColl) {\n        vColl.each(function(viewModel) {\n            var model = viewModel.model;\n            var start = model.getStarts();\n            var end = model.getEnds();\n\n            viewModel.hasMultiDates = datetime.hasMultiDates(start, end);\n\n            if (!model.isAllDay && viewModel.hasMultiDates) {\n                viewModel.renderStarts = datetime.start(start);\n                viewModel.renderEnds = datetime.renderEnd(start, end);\n            }\n        });\n    },\n\n    /**\n     * Find schedule and get view model for specific month\n     * @this Base\n     * @param {TZDate} start - start date to find schedules\n     * @param {TZDate} end - end date to find schedules\n     * @param {function[]} [andFilters] - optional filters to applying search query\n     * @param {boolean} [alldayFirstMode=false] if true, time schedule is lower than all-day schedule. Or stack schedules from the top.\n     * @returns {object} view model data\n     */\n    findByDateRange: function(start, end, andFilters, alldayFirstMode) {\n        var ctrlCore = this.Core,\n            ctrlMonth = this.Month,\n            filter = ctrlCore.getScheduleInDateRangeFilter(start, end),\n            coll, vColl, vList,\n            collisionGroup,\n            matrices;\n\n        alldayFirstMode = alldayFirstMode || false;\n        andFilters = andFilters || [];\n        filter = Collection.and.apply(null, [filter].concat(andFilters));\n\n        coll = this.schedules.find(filter);\n        vColl = ctrlCore.convertToViewModel(coll);\n        ctrlMonth._addMultiDatesInfo(vColl);\n        ctrlMonth._adjustRenderRange(start, end, vColl);\n        vList = vColl.sort(array.compare.schedule.asc);\n\n        collisionGroup = ctrlCore.getCollisionGroup(vList);\n        matrices = ctrlCore.getMatrices(vColl, collisionGroup);\n        ctrlCore.positionViewModels(start, end, matrices, ctrlMonth._weightTopValue);\n        if (alldayFirstMode) {\n            ctrlMonth._adjustTimeTopIndex(vColl);\n        } else {\n            ctrlMonth._stackTimeFromTop(vColl);\n        }\n\n        return matrices;\n    }\n};\n\nmodule.exports = Month;\n","/* eslint no-shadow: 0 */\n/**\n * @fileoverview Controller mixin modules for day views.\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\nvar util = require('tui-code-snippet');\n\nvar Collection = require('../../common/collection');\nvar array = require('../../common/array');\nvar datetime = require('../../common/datetime');\nvar TZDate = require('../../common/timezone').Date;\n\nvar SCHEDULE_MIN_DURATION = datetime.MILLISECONDS_SCHEDULE_MIN_DURATION;\n\n/**\n * @mixin Base.Week\n */\nvar Week = {\n    /**********\n     * TIME GRID VIEW\n     **********/\n\n    /**\n     * Make array with start and end times on schedules.\n     * @this Base.Week\n     * @param {array[]} matrix - matrix from controller.\n     * @returns {array[]} starttime, endtime array (exclude first row's schedules)\n     */\n    generateTimeArrayInRow: function(matrix) {\n        var row,\n            col,\n            schedule,\n            start,\n            end,\n            map = [],\n            cursor = [],\n            maxColLen = Math.max.apply(null, util.map(matrix, function(col) {\n                return col.length;\n            }));\n\n        for (col = 1; col < maxColLen; col += 1) {\n            row = 0;\n            schedule = util.pick(matrix, row, col);\n\n            while (schedule) {\n                start = schedule.getStarts().getTime() - datetime.millisecondsFrom('minutes', schedule.valueOf().goingDuration);\n                end = schedule.getEnds().getTime() + datetime.millisecondsFrom('minutes', schedule.valueOf().comingDuration);\n\n                if (Math.abs(end - start) < SCHEDULE_MIN_DURATION) {\n                    end += SCHEDULE_MIN_DURATION;\n                }\n\n                cursor.push([start, end]);\n\n                row += 1;\n                schedule = util.pick(matrix, row, col);\n            }\n\n            map.push(cursor);\n            cursor = [];\n        }\n\n        return map;\n    },\n\n    /**\n     * Get collision information from list\n     * @this Base\n     * @param {array.<number[]>} arr - list to detecting collision. [[start, end], [start, end]]\n     * @param {number} start - schedule start time that want to detect collisions.\n     * @param {number} end - schedule end time that want to detect collisions.\n     * @returns {boolean} target has collide in supplied array?\n     */\n    hasCollide: function(arr, start, end) {\n        var startStart,\n            startEnd,\n            endStart,\n            endEnd,\n            getFunc = function(index) {\n                return function(block) {\n                    return block[index];\n                };\n            },\n            abs = Math.abs,\n            compare = array.compare.num.asc,\n            hasCollide;\n\n        if (!arr.length) {\n            return false;\n        }\n\n        startStart = abs(array.bsearch(arr, start, getFunc(0), compare));\n        startEnd = abs(array.bsearch(arr, start, getFunc(1), compare));\n        endStart = abs(array.bsearch(arr, end, getFunc(0), compare));\n        endEnd = abs(array.bsearch(arr, end, getFunc(1), compare));\n        hasCollide = !(startStart === startEnd && startEnd === endStart && endStart === endEnd);\n\n        return hasCollide;\n    },\n\n    /**\n     * Initialize values to viewmodels for detect real collision at rendering phase.\n     * @this Base\n     * @param {array[]} matrices - Matrix data.\n     */\n    getCollides: function(matrices) {\n        util.forEachArray(matrices, function(matrix) {\n            var binaryMap,\n                maxRowLength;\n\n            binaryMap = Week.generateTimeArrayInRow(matrix);\n            maxRowLength = Math.max.apply(null, util.map(matrix, function(row) {\n                return row.length;\n            }));\n\n            util.forEachArray(matrix, function(row) {\n                util.forEachArray(row, function(viewModel, col) {\n                    var startTime,\n                        endTime,\n                        hasCollide,\n                        i;\n\n                    if (!viewModel) {\n                        return;\n                    }\n\n                    startTime = viewModel.getStarts().getTime();\n                    endTime = viewModel.getEnds().getTime();\n\n                    if (Math.abs(endTime - startTime) < SCHEDULE_MIN_DURATION) {\n                        endTime += SCHEDULE_MIN_DURATION;\n                    }\n\n                    startTime -= datetime.millisecondsFrom('minutes', viewModel.valueOf().goingDuration);\n                    endTime += datetime.millisecondsFrom('minutes', viewModel.valueOf().comingDuration);\n\n                    endTime -= 1;\n\n                    for (i = (col + 1); i < maxRowLength; i += 1) {\n                        hasCollide = Week.hasCollide(binaryMap[i - 1], startTime, endTime);\n\n                        if (hasCollide) {\n                            viewModel.hasCollide = true;\n                            break;\n                        }\n\n                        viewModel.extraSpace += 1;\n                    }\n                });\n            });\n        });\n    },\n\n    /**\n     * create view model for time view part\n     * @this Base\n     * @param {Date} start - start date.\n     * @param {Date} end - end date.\n     * @param {Collection} time - view model collection.\n     * @param {number} hourStart - start hour to be shown\n     * @param {number} hourEnd - end hour to be shown\n     * @returns {object} view model for time part.\n     */\n    getViewModelForTimeView: function(start, end, time, hourStart, hourEnd) {\n        var self = this,\n            ymdSplitted = this.splitScheduleByDateRange(start, end, time),\n            result = {};\n\n        var _getViewModel = Week._makeGetViewModelFuncForTimeView(hourStart, hourEnd);\n\n        util.forEach(ymdSplitted, function(collection, ymd) {\n            var viewModels = _getViewModel(collection);\n            var collisionGroups, matrices;\n\n            collisionGroups = self.Core.getCollisionGroup(viewModels);\n            matrices = self.Core.getMatrices(collection, collisionGroups);\n            self.Week.getCollides(matrices);\n\n            result[ymd] = matrices;\n        });\n\n        return result;\n    },\n\n    /**\n     * make view model function depending on start and end hour\n     * if time view option has start or end hour condition\n     * it add filter\n     * @param {number} hourStart - start hour to be shown\n     * @param {number} hourEnd - end hour to be shown\n     * @returns {function} function\n     */\n    _makeGetViewModelFuncForTimeView: function(hourStart, hourEnd) {\n        if (hourStart === 0 && hourEnd === 24) {\n            return function(collection) {\n                return collection.sort(array.compare.schedule.asc);\n            };\n        }\n\n        return function(collection) {\n            return collection.find(Week._makeHourRangeFilter(hourStart, hourEnd))\n                .sort(array.compare.schedule.asc);\n        };\n    },\n\n    /**\n     * make a filter function that is not included range of start, end hour\n     * @param {number} hStart - hour start\n     * @param {number} hEnd - hour end\n     * @returns {function} - filtering function\n     */\n    _makeHourRangeFilter: function(hStart, hEnd) {\n        // eslint-disable-next-line complexity\n        return function(schedule) {\n            var ownHourStart = schedule.model.start;\n            var ownHourEnd = schedule.model.end;\n            var yyyy = ownHourStart.getFullYear();\n            var mm = ownHourStart.getMonth();\n            var dd = ownHourStart.getDate();\n\n            var hourStart = new TZDate(yyyy, mm, dd).setHours(hStart);\n            var hourEnd = new TZDate(yyyy, mm, dd).setHours(hEnd);\n\n            return (ownHourStart >= hourStart && ownHourStart < hourEnd) ||\n                (ownHourEnd > hourStart && ownHourEnd <= hourEnd) ||\n                (ownHourStart < hourStart && ownHourEnd > hourStart) ||\n                (ownHourEnd > hourEnd && ownHourStart < hourEnd);\n        };\n    },\n\n    /**********\n     * ALLDAY VIEW\n     **********/\n\n    /**\n     * Set hasMultiDates flag to true and set date ranges for rendering\n     * @this Base\n     * @param {Collection} vColl - view model collection\n     */\n    _addMultiDatesInfo: function(vColl) {\n        vColl.each(function(viewModel) {\n            var model = viewModel.model;\n            var start = model.getStarts();\n            var end = model.getEnds();\n\n            viewModel.hasMultiDates = true;\n            viewModel.renderStarts = datetime.start(start);\n            viewModel.renderEnds = datetime.renderEnd(start, end);\n        });\n    },\n\n    /**\n     * create view model for allday view part\n     * @this Base\n     * @param {Date} start start date.\n     * @param {Date} end end date.\n     * @param {Collection} viewModelColl - allday schedule viewModel viewModels.\n     * @returns {object} allday viewModel.\n     */\n    getViewModelForAlldayView: function(start, end, viewModelColl) {\n        var ctrlCore = this.Core,\n            ctrlWeek = this.Week,\n            viewModels,\n            collisionGroups,\n            matrices;\n\n        if (!viewModelColl || !viewModelColl.length) {\n            return [];\n        }\n\n        ctrlWeek._addMultiDatesInfo(viewModelColl);\n        ctrlCore.limitRenderRange(start, end, viewModelColl);\n\n        viewModels = viewModelColl.sort(array.compare.schedule.asc);\n        collisionGroups = ctrlCore.getCollisionGroup(viewModels);\n\n        matrices = ctrlCore.getMatrices(viewModelColl, collisionGroups);\n        ctrlCore.positionViewModels(start, end, matrices);\n\n        return matrices;\n    },\n\n    /**********\n     * READ\n     **********/\n\n    /**\n     * Populate schedules in date range.\n     * @this Base\n     * @param {Date} start start date.\n     * @param {Date} end end date.\n     * @param {Array.<object>} panels - schedule panels like 'milestone', 'task', 'allday', 'time'\n     * @param {function[]} [andFilters] - optional filters to applying search query\n     * @param {Object} options - week view options\n     * @returns {object} schedules grouped by dates.\n     */\n    findByDateRange: function(start, end, panels, andFilters, options) {\n        var ctrlCore = this.Core,\n            ctrlWeek = this.Week,\n            filter = ctrlCore.getScheduleInDateRangeFilter(start, end),\n            scheduleTypes = util.pluck(panels, 'name'),\n            hourStart = util.pick(options, 'hourStart'),\n            hourEnd = util.pick(options, 'hourEnd'),\n            modelColl,\n            group;\n\n        andFilters = andFilters || [];\n        filter = Collection.and.apply(null, [filter].concat(andFilters));\n\n        modelColl = this.schedules.find(filter);\n        modelColl = ctrlCore.convertToViewModel(modelColl);\n\n        group = modelColl.groupBy(scheduleTypes, this.groupFunc);\n        util.forEach(panels, function(panel) {\n            var name = panel.name;\n            if (panel.type === 'daygrid') {\n                group[name] = ctrlWeek.getViewModelForAlldayView(start, end, group[name]);\n            } else if (panel.type === 'timegrid') {\n                group[name] = ctrlWeek.getViewModelForTimeView(start, end, group[name], hourStart, hourEnd);\n            }\n        });\n\n        return group;\n    },\n\n    /* eslint max-nested-callbacks: 0 */\n    /**\n     * Make exceed date information\n     * @param {number} maxCount - exceed schedule count\n     * @param {Array} eventsInDateRange  - matrix of ScheduleViewModel\n     * @param {Array.<TZDate>} range - date range of one week\n     * @returns {object} exceedDate\n     */\n    getExceedDate: function(maxCount, eventsInDateRange, range) {\n        var exceedDate = {};\n\n        util.forEach(range, function(date) {\n            var ymd = datetime.format(date, 'YYYYMMDD');\n            exceedDate[ymd] = 0;\n        });\n\n        util.forEach(eventsInDateRange, function(matrix) {\n            util.forEach(matrix, function(column) {\n                util.forEach(column, function(viewModel) {\n                    var period;\n                    if (!viewModel || viewModel.top < maxCount) {\n                        return;\n                    }\n\n                    period = datetime.range(\n                        viewModel.getStarts(),\n                        viewModel.getEnds(),\n                        datetime.MILLISECONDS_PER_DAY\n                    );\n\n                    util.forEach(period, function(date) {\n                        var ymd = datetime.format(date, 'YYYYMMDD');\n                        exceedDate[ymd] += 1;\n                    });\n                });\n            });\n        });\n\n        return exceedDate;\n    },\n\n    /**\n     * Exclude overflow schedules from matrices\n     * @param {array} matrices - The matrices for schedule placing.\n     * @param {number} visibleScheduleCount - maximum visible count on panel\n     * @returns {array} - The matrices for schedule placing except overflowed schedules.\n     */\n    excludeExceedSchedules: function(matrices, visibleScheduleCount) {\n        return matrices.map(function(matrix) {\n            return matrix.map(function(row) {\n                if (row.length > visibleScheduleCount) {\n                    return row.filter(function(item) {\n                        return item.top < visibleScheduleCount;\n                    }, this);\n                }\n\n                return row;\n            }, this);\n        }, this);\n    }\n};\n\nmodule.exports = Week;\n","/**\n * @fileoverview Factory module for control all other factory.\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\nvar GA_TRACKING_ID = 'UA-129951699-1';\n\nvar util = require('tui-code-snippet'),\n    Handlebars = require('handlebars-template-loader/runtime');\nvar dw = require('../common/dw'),\n    datetime = require('../common/datetime'),\n    Layout = require('../view/layout'),\n    Drag = require('../handler/drag'),\n    controllerFactory = require('./controller'),\n    weekViewFactory = require('./weekView'),\n    monthViewFactory = require('./monthView'),\n    TZDate = require('../common/timezone').Date,\n    config = require('../config'),\n    timezone = require('../common/timezone'),\n    reqAnimFrame = require('../common/reqAnimFrame');\n\nvar mmin = Math.min;\n\n/**\n * Schedule information\n * @typedef {object} Schedule\n * @property {string} [id] - The unique schedule id depends on calendar id\n * @property {string} calendarId - The unique calendar id\n * @property {string} [title] - The schedule title\n * @property {string} [body] - The schedule body text which is text/plain\n * @property {string|TZDate} [start] - The start time. It's 'string' for input. It's 'TZDate' for output like event handler.\n * @property {string|TZDate} [end] - The end time. It's 'string' for input. It's 'TZDate' for output like event handler.\n * @property {number} [goingDuration] - The travel time: Going duration minutes\n * @property {number} [comingDuration] - The travel time: Coming duration minutes\n * @property {boolean} [isAllDay] - The all day schedule\n * @property {string} [category] - The schedule type('milestone', 'task', allday', 'time')\n * @property {string} [dueDateClass] - The task schedule type string\n *                                   (any string value is ok and mandatory if category is 'task')\n * @property {string} [location] - The location\n * @property {Array.<string>} [attendees] - The attendees\n * @property {string} [recurrenceRule] - The recurrence rule\n * @property {boolean} [isPending] - The in progress flag to do something like network job(The schedule will be transparent.)\n * @property {boolean} [isFocused] - The focused schedule flag\n * @property {boolean} [isVisible] - The schedule visibility flag\n * @property {boolean} [isReadOnly] - The schedule read-only flag\n * @property {boolean} [isPrivate] - The private schedule\n * @property {string} [color] - The schedule text color\n * @property {string} [bgColor] - The schedule background color\n * @property {string} [dragBgColor] - The schedule background color when dragging it\n * @property {string} [borderColor] - The schedule left border color\n * @property {string} [customStyle] - The schedule's custom css class\n * @property {any} [raw] - The user data\n * @property {string} [state] - The schedule's state ('busy', 'free')\n */\n\n/**\n * Template functions to support customer renderer\n * @typedef {object} Template\n * @property {function} [milestoneTitle] - The milestone title(at left column) template function\n * @property {function} [milestone] - The milestone template function\n * @property {function} [taskTitle] - The task title(at left column) template function\n * @property {function} [task] - The task template function\n * @property {function} [alldayTitle] - The allday title(at left column) template function\n * @property {function} [allday] - The allday template function\n * @property {function} [time] - The time template function\n * @property {function} [goingDuration] - The travel time(going duration) template function\n * @property {function} [comingDuration] - The travel time(coming duration) template function\n * @property {function} [monthMoreTitleDate] - The month more layer title template function\n * @property {function} [monthMoreClose] - The month more layer close button template function\n * @property {function} [monthGridHeader] - The month grid header(date, decorator, title) template function\n * @property {function} [monthGridHeaderExceed] - The month grid header(exceed schedule count) template function\n * @property {function} [monthGridFooter] - The month grid footer(date, decorator, title) template function\n * @property {function} [monthGridFooterExceed] - The month grid footer(exceed schedule count) template function\n * @property {function} [monthDayname] - The monthly dayname template function\n * @property {function} [weekDayname] - The weekly dayname template function\n * @property {function} [weekGridFooterExceed] - The week/day grid footer(exceed schedule count) template function\n * @property {function} [dayGridTitle] - The week/day grid title template function(e.g. milestone, task, allday)\n * @property {function} [schedule] - The week/day schedule template function(When the schedule category attribute is milestone, task, or all day)\n * @property {function} [collapseBtnTitle] - The week/day (exceed schedule more view) collapse button title template function\n * @property {function} [timezoneDisplayLabel] - The timezone display label template function in time grid\n * @property {function} [timegridDisplayPrimayTime] - Deprecated: use 'timegridDisplayPrimaryTime'\n * @property {function} [timegridDisplayPrimaryTime] - The display label template function of primary timezone in time grid\n * @property {function} [timegridDisplayTime] - The display time template function in time grid\n * @property {function} [timegridCurrentTime] - The current time template function in time grid\n * @property {function} [popupIsAllDay] - The all day checkbox label text template function in the default creation popup\n * @property {function} [popupStateFree] - The free option template function in the state select box of the default creation popup\n * @property {function} [popupStateBusy] - The busy option template function in the state select box of the default creation popup\n * @property {function} [titlePlaceholder] - The title input placeholder text template function in the default creation popup\n * @property {function} [locationPlaceholder] - The location input placeholder text template function in the default creation popup\n * @property {function} [startDatePlaceholder] - The start date input placeholder text template function in the default creation popup\n * @property {function} [endDatePlaceholder] - The end date input placeholder text template function in the default creation popup\n * @property {function} [popupSave] - The 'Save' button text template function in the default creation popup\n * @property {function} [popupUpdate] - The 'Update' button text template function in the default creation popup when in edit mode\n * @property {function} [popupDetailDate] - The schedule date information's template function on the default detail popup\n * @property {function} [popupDetailLocation] - The schedule location text information's template function on the default detail popup\n * @property {function} [popupDetailUser] - The schedule user text information's template function on the default detail popup\n * @property {function} [popupDetailState] - The schedule state(busy or free) text information's template function on the default detail popup\n * @property {function} [popupDetailRepeat] - The schedule repeat information's template function on the default detail popup\n * @property {function} [popupDetailBody] - The schedule body text information's template function on the default detail popup\n * @property {function} [popupEdit] - The 'Edit' button text template function on the default detail popup\n * @property {function} [popupDelete] - The 'Delete' button text template function on the default detail popup\n * @example\n * var calendar = new tui.Calendar(document.getElementById('calendar'), {\n *     ...\n *     template: {\n *         milestone: function(schedule) {\n *             return '<span class=\"calendar-font-icon ic-milestone-b\"></span> <span style=\"background-color: ' + schedule.bgColor + '\">' + schedule.title + '</span>';\n *         },\n *         milestoneTitle: function() {\n *             return '<span class=\"tui-full-calendar-left-content\">MILESTONE</span>';\n *         },\n *         task: function(schedule) {\n *             return '#' + schedule.title;\n *         },\n *         taskTitle: function() {\n *             return '<span class=\"tui-full-calendar-left-content\">TASK</span>';\n *         },\n *         allday: function(schedule) {\n *             return getTimeTemplate(schedule, true);\n *         },\n *         alldayTitle: function() {\n *             return '<span class=\"tui-full-calendar-left-content\">ALL DAY</span>';\n *         },\n *         time: function(schedule) {\n *             return '<strong>' + moment(schedule.start.getTime()).format('HH:mm') + '</strong> ' + schedule.title;\n *         },\n *         goingDuration: function(schedule) {\n *             return '<span class=\"calendar-icon ic-travel-time\"></span>' + schedule.goingDuration + 'min.';\n *         },\n *         comingDuration: function(schedule) {\n *             return '<span class=\"calendar-icon ic-travel-time\"></span>' + schedule.comingDuration + 'min.';\n *         },\n *         monthMoreTitleDate: function(date, dayname) {\n *             var day = date.split('.')[2];\n *\n *             return '<span class=\"tui-full-calendar-month-more-title-day\">' + day + '</span> <span class=\"tui-full-calendar-month-more-title-day-label\">' + dayname + '</span>';\n *         },\n *         monthMoreClose: function() {\n *             return '<span class=\"tui-full-calendar-icon tui-full-calendar-ic-close\"></span>';\n *         },\n *         monthGridHeader: function(dayModel) {\n *             var date = parseInt(dayModel.date.split('-')[2], 10);\n *             var classNames = ['tui-full-calendar-weekday-grid-date '];\n *\n *             if (dayModel.isToday) {\n *                 classNames.push('tui-full-calendar-weekday-grid-date-decorator');\n *             }\n *\n *             return '<span class=\"' + classNames.join(' ') + '\">' + date + '</span>';\n *         },\n *         monthGridHeaderExceed: function(hiddenSchedules) {\n *             return '<span class=\"weekday-grid-more-schedules\">+' + hiddenSchedules + '</span>';\n *         },\n *         monthGridFooter: function() {\n *             return '';\n *         },\n *         monthGridFooterExceed: function(hiddenSchedules) {\n *             return '';\n *         },\n *         monthDayname: function(model) {\n *             return (model.label).toString().toLocaleUpperCase();\n *         },\n *         weekDayname: function(model) {\n *             return '<span class=\"tui-full-calendar-dayname-date\">' + model.date + '</span>&nbsp;&nbsp;<span class=\"tui-full-calendar-dayname-name\">' + model.dayName + '</span>';\n *         },\n *         weekGridFooterExceed: function(hiddenSchedules) {\n *             return '+' + hiddenSchedules;\n *         },\n *         dayGridTitle: function(viewName) {\n *\n *             // use another functions instead of 'dayGridTitle'\n *             // milestoneTitle: function() {...}\n *             // taskTitle: function() {...}\n *             // alldayTitle: function() {...}\n *\n *             var title = '';\n *             switch(viewName) {\n *                 case 'milestone':\n *                     title = '<span class=\"tui-full-calendar-left-content\">MILESTONE</span>';\n *                     break;\n *                 case 'task':\n *                     title = '<span class=\"tui-full-calendar-left-content\">TASK</span>';\n *                     break;\n *                 case 'allday':\n *                     title = '<span class=\"tui-full-calendar-left-content\">ALL DAY</span>';\n *                     break;\n *             }\n *\n *             return title;\n *         },\n *         schedule: function(schedule) {\n *\n *             // use another functions instead of 'schedule'\n *             // milestone: function() {...}\n *             // task: function() {...}\n *             // allday: function() {...}\n *\n *             var tpl;\n *\n *             switch(category) {\n *                 case 'milestone':\n *                     tpl = '<span class=\"calendar-font-icon ic-milestone-b\"></span> <span style=\"background-color: ' + schedule.bgColor + '\">' + schedule.title + '</span>';\n *                     break;\n *                 case 'task':\n *                     tpl = '#' + schedule.title;\n *                     break;\n *                 case 'allday':\n *                     tpl = getTimeTemplate(schedule, true);\n *                     break;\n *             }\n *\n *             return tpl;\n *         },\n *         collapseBtnTitle: function() {\n *             return '<span class=\"tui-full-calendar-icon tui-full-calendar-ic-arrow-solid-top\"></span>';\n *         },\n *         timezoneDisplayLabel: function(timezoneOffset, displayLabel) {\n *             var gmt, hour, minutes;\n *\n *             if (!displayLabel) {\n *                 gmt = timezoneOffset < 0 ? '-' : '+';\n *                 hour = Math.abs(parseInt(timezoneOffset / 60, 10));\n *                 minutes = Math.abs(timezoneOffset % 60);\n *                 displayLabel = gmt + getPadStart(hour) + ':' + getPadStart(minutes);\n *             }\n *\n *             return displayLabel;\n *         },\n *         timegridDisplayPrimayTime: function(time) {\n *             // will be deprecated. use 'timegridDisplayPrimaryTime'\n *             var meridiem = 'am';\n *             var hour = time.hour;\n *\n *             if (time.hour > 12) {\n *                 meridiem = 'pm';\n *                 hour = time.hour - 12;\n *             }\n *\n *             return hour + ' ' + meridiem;\n *         },\n *         timegridDisplayPrimaryTime: function(time) {\n *             var meridiem = 'am';\n *             var hour = time.hour;\n *\n *             if (time.hour > 12) {\n *                 meridiem = 'pm';\n *                 hour = time.hour - 12;\n *             }\n *\n *             return hour + ' ' + meridiem;\n *         },\n *         timegridDisplayTime: function(time) {\n *             return getPadStart(time.hour) + ':' + getPadStart(time.hour);\n *         },\n *         timegridCurrentTime: function(timezone) {\n *             var templates = [];\n *\n *             if (timezone.dateDifference) {\n *                 templates.push('[' + timezone.dateDifferenceSign + timezone.dateDifference + ']<br>');\n *             }\n *\n *             templates.push(moment(timezone.hourmarker).format('HH:mm a'));\n *\n *             return templates.join('');\n *         },\n *         popupIsAllDay: function() {\n *             return 'All Day';\n *         },\n *         popupStateFree: function() {\n *             return 'Free';\n *         },\n *         popupStateBusy: function() {\n *             return 'Busy';\n *         },\n *         titlePlaceholder: function() {\n *             return 'Subject';\n *         },\n *         locationPlaceholder: function() {\n *             return 'Location';\n *         },\n *         startDatePlaceholder: function() {\n *             return 'Start date';\n *         },\n *         endDatePlaceholder: function() {\n *             return 'End date';\n *         },\n *         popupSave: function() {\n *             return 'Save';\n *         },\n *         popupUpdate: function() {\n *             return 'Update';\n *         },\n *         popupDetailDate: function(isAllDay, start, end) {\n *             var isSameDate = moment(start).isSame(end);\n *             var endFormat = (isSameDate ? '' : 'YYYY.MM.DD ') + 'hh:mm a';\n *\n *             if (isAllDay) {\n *                 return moment(start).format('YYYY.MM.DD') + (isSameDate ? '' : ' - ' + moment(end).format('YYYY.MM.DD'));\n *             }\n *\n *             return (moment(start).format('YYYY.MM.DD hh:mm a') + ' - ' + moment(end).format(endFormat));\n *         },\n *         popupDetailLocation: function(schedule) {\n *             return 'Location : ' + schedule.location;\n *         },\n *         popupDetailUser: function(schedule) {\n *             return 'User : ' + (schedule.attendees || []).join(', ');\n *         },\n *         popupDetailState: function(schedule) {\n *             return 'State : ' + schedule.state || 'Busy';\n *         },\n *         popupDetailRepeat: function(schedule) {\n *             return 'Repeat : ' + schedule.recurrenceRule;\n *         },\n *         popupDetailBody: function(schedule) {\n *             return 'Body : ' + schedule.body;\n *         },\n *         popupEdit: function() {\n *             return 'Edit';\n *         },\n *         popupDelete: function() {\n *             return 'Delete';\n *         }\n *     }\n * }\n */\n\n/**\n * Options for daily, weekly view.\n * @typedef {object} WeekOptions\n * @property {number} [startDayOfWeek=0] - The start day of week,\n * @property {Array.<string>} [daynames] - The day names in weekly and daily. Default values are ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat']\n * @property {boolean} [narrowWeekend=false] - Make weekend column narrow(1/2 width)\n * @property {boolean} [workweek=false] - Show only 5 days except for weekend\n * @property {boolean} [showTimezoneCollapseButton=false] - Show a collapse button to close multiple timezones\n * @property {boolean} [timezonesCollapsed=false] - An initial multiple timezones collapsed state\n * @property {number} [hourStart=0] - Can limit of render hour start.\n * @property {number} [hourEnd=24] - Can limit of render hour end.\n */\n\n/**\n * Options for monthly view.\n * @typedef {object} MonthOptions\n * @property {Array.<string>} [daynames] - The day names in monthly. Default values are ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat']\n * @property {number} [startDayOfWeek=0] - The start day of week\n * @property {boolean} [narrowWeekend=false] - Make weekend column narrow(1/2 width)\n * @property {number} [visibleWeeksCount=6] - The visible week count in monthly(0 or null are same with 6)\n * @property {boolean} [isAlways6Week=true] - Always show 6 weeks. If false, show 5 weeks or 6 weeks based on the month.\n * @property {boolean} [workweek=false] - Show only 5 days except for weekend\n * @property {number} [visibleScheduleCount] - The visible schedule count in monthly grid\n * @property {object} [moreLayerSize] - The more layer size\n * @property {object} [moreLayerSize.width=null] - The css width value(px, 'auto').\n*                                                  The default value 'null' is to fit a grid cell.\n * @property {object} [moreLayerSize.height=null] - The css height value(px, 'auto').\n*                                                   The default value 'null' is to fit a grid cell.\n * @property {object} [grid] - The grid's header and footer information\n *  @property {object} [grid.header] - The grid's header informatioin\n *   @property {number} [grid.header.height=34] - The grid's header height\n *  @property {object} [grid.footer] - The grid's footer informatioin\n *   @property {number} [grid.footer.height=34] - The grid's footer height\n * @property {function} [scheduleFilter=null] - The filter schedules on month view. A parameter is {Schedule} object.\n */\n\n/**\n * @typedef {object} CalendarColor\n * @property {string} [color] - The calendar color\n * @property {string} [bgColor] - The calendar background color\n * @property {string} [borderColor] - The calendar left border color\n * @property {string} [dragBgColor] - The Background color displayed when you drag a calendar's schedule\n */\n\n/**\n * @typedef {object} Timezone\n * @property {number} [timezoneOffset] - The minutes for your timezone offset. If null, use the browser's timezone. Refer to Date.prototype.getTimezoneOffset()\n * @property {string} [displayLabel] -  The display label of your timezone at weekly/daily view(e.g. 'GMT+09:00')\n * @property {string} [tooltip] -  The tooltip(e.g. 'Seoul')\n * @example\n * var cal = new Calendar('#calendar', {\n *  timezones: [{\n *      timezoneOffset: 540,\n *      displayLabel: 'GMT+09:00',\n *      tooltip: 'Seoul'\n *  }, {\n *      timezoneOffset: -420,\n *      displayLabel: 'GMT-08:00',\n *      tooltip: 'Los Angeles'\n *  }]\n * });\n */\n\n/**\n * @typedef {object} CalendarProps\n * @property {string|number} id - The calendar id\n * @property {string} name - The calendar name\n * @property {string} color - The text color when schedule is displayed\n * @property {string} bgColor - The background color schedule is displayed\n * @property {string} borderColor - The color of left border or bullet point when schedule is displayed\n * @property {string} dragBgColor - The background color when schedule dragging\n * @example\n * var cal = new Calendar('#calendar', {\n *   ...\n *   calendars: [\n *     {\n *       id: '1',\n *       name: 'My Calendar',\n *       color: '#ffffff',\n *       bgColor: '#9e5fff',\n *       dragBgColor: '#9e5fff',\n *       borderColor: '#9e5fff'\n *     },\n *     {\n *       id: '2',\n *       name: 'Company',\n *       color: '#00a9ff',\n *       bgColor: '#00a9ff',\n *       dragBgColor: '#00a9ff',\n *       borderColor: '#00a9ff'\n *     },\n *   ]\n * });\n */\n\n/**\n * @typedef {object} Options - Calendar option object\n * @property {string} [defaultView='week'] - Default view of calendar. The default value is 'week'.\n * @property {boolean|Array.<string>} [taskView=true] - Show the milestone and task in weekly, daily view. The default value is true. If the value is array, it can be &#91;'milestone', 'task'&#93;.\n * @property {boolean|Array.<string>} [scheduleView=true] - Show the all day and time grid in weekly, daily view. The default value is false. If the value is array, it can be &#91;'allday', 'time'&#93;.\n * @property {themeConfig} [theme=themeConfig] - {@link themeConfig} for custom style.\n * @property {Template} [template={}] - {@link Template} for further information\n * @property {WeekOptions} [week={}] - {@link WeekOptions} for week view\n * @property {MonthOptions} [month={}] - {@link MonthOptions} for month view\n * @property {Array.<CalendarProps>} [calendars=[]] - {@link CalendarProps} List that can be used to add new schedule. The default value is [].\n * @property {boolean} [useCreationPopup=false] - Whether use default creation popup or not. The default value is false.\n * @property {boolean} [useDetailPopup=false] - Whether use default detail popup or not. The default value is false.\n * @property {Array.<Timezone>} [timezones] - {@link Timezone} array.\n *  The first Timezone element is primary and can override Calendar#setTimezoneOffset function\n *  The rest timezone elements are shown in left timegrid of weekly/daily view\n * @property {boolean} [disableDblClick=false] - Disable double click to create a schedule. The default value is false.\n * @property {boolean} [disableClick=false] - Disable click to create a schedule. The default value is false.\n * @property {boolean} [isReadOnly=false] - {@link Calendar} is read-only mode and a user can't create and modify any schedule. The default value is false.\n * @property {boolean} [usageStatistics=true] - Let us know the hostname. If you don't want to send the hostname, please set to false.\n */\n\n/**\n * {@link https://nhn.github.io/tui.code-snippet/latest/CustomEvents CustomEvents} document at {@link https://github.com/nhn/tui.code-snippet tui-code-snippet}\n * @typedef {class} CustomEvents\n */\n\n/**\n * @typedef {object} TimeCreationGuide - Time creation guide instance to present selected time period\n * @property {HTMLElement} guideElement - Guide element\n * @property {Object.<string, HTMLElement>} guideElements - Map by key. It can be used in monthly view\n * @property {function} clearGuideElement - Hide the creation guide\n * @example\n * calendar.on('beforeCreateSchedule', function(event) {\n *     var guide = event.guide;\n *     // Use guideEl$'s left, top to locate your schedule creation popup\n *     var guideEl$ = guide.guideElement ?\n *          guide.guideElement : guide.guideElements[Object.keys(guide.guideElements)[0]];\n *\n *     // After that call this to hide the creation guide\n *     guide.clearGuideElement();\n * });\n */\n\n/**\n * Calendar class\n * @constructor\n * @mixes CustomEvents\n * @param {HTMLElement|string} container - The container element or selector id\n * @param {Options} options - The calendar {@link Options} object\n * @example\n * var calendar = new tui.Calendar(document.getElementById('calendar'), {\n *     defaultView: 'week',\n *     taskView: true,    // Can be also ['milestone', 'task']\n *     scheduleView: true,  // Can be also ['allday', 'time']\n *     template: {\n *         milestone: function(schedule) {\n *             return '<span style=\"color:red;\"><i class=\"fa fa-flag\"></i> ' + schedule.title + '</span>';\n *         },\n *         milestoneTitle: function() {\n *             return 'Milestone';\n *         },\n *         task: function(schedule) {\n *             return '&nbsp;&nbsp;#' + schedule.title;\n *         },\n *         taskTitle: function() {\n *             return '<label><input type=\"checkbox\" />Task</label>';\n *         },\n *         allday: function(schedule) {\n *             return schedule.title + ' <i class=\"fa fa-refresh\"></i>';\n *         },\n *         alldayTitle: function() {\n *             return 'All Day';\n *         },\n *         time: function(schedule) {\n *             return schedule.title + ' <i class=\"fa fa-refresh\"></i>' + schedule.start;\n *         }\n *     },\n *     month: {\n *         daynames: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n *         startDayOfWeek: 0,\n *         narrowWeekend: true\n *     },\n *     week: {\n *         daynames: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n *         startDayOfWeek: 0,\n *         narrowWeekend: true\n *     }\n * });\n */\nfunction Calendar(container, options) {\n    options = util.extend({\n        usageStatistics: true\n    }, options);\n\n    if (options.usageStatistics === true && util.sendHostname) {\n        util.sendHostname('calendar', GA_TRACKING_ID);\n    }\n\n    if (util.isString(container)) {\n        container = document.querySelector(container);\n    }\n\n    /**\n     * Calendar color map\n     * @type {object}\n     * @private\n     */\n    this._calendarColor = {};\n\n    /**\n     * Current rendered date\n     * @type {TZDate}\n     * @private\n     */\n    this._renderDate = datetime.start();\n\n    /**\n     * start and end date of weekly, monthly\n     * @type {object}\n     * @private\n     */\n    this._renderRange = {\n        start: null,\n        end: null\n    };\n\n    /**\n     * base controller\n     * @type {Base}\n     * @private\n     */\n    this._controller = _createController(options);\n    this._controller.setCalendars(options.calendars);\n\n    /**\n     * layout view (layout manager)\n     * @type {Layout}\n     * @private\n     */\n    this._layout = new Layout(container, this._controller.theme);\n\n    /**\n     * global drag handler\n     * @type {Drag}\n     * @private\n     */\n    this._dragHandler = new Drag({distance: 10}, this._layout.container);\n\n    /**\n     * current rendered view name. ('day', 'week', 'month')\n     * @type {string}\n     * @default 'week'\n     * @private\n     */\n    this._viewName = options.defaultView || 'week';\n\n    /**\n     * Refresh method. it can be ref different functions for each view modes.\n     * @type {function}\n     * @private\n     */\n    this._refreshMethod = null;\n\n    /**\n     * Scroll to now. It can be called for 'week', 'day' view modes.\n     * @type {function}\n     * @private\n     */\n    this._scrollToNowMethod = null;\n\n    /**\n     * It's true if Calendar.prototype.scrollToNow() is called.\n     * @type {boolean}\n     * @private\n     */\n    this._requestScrollToNow = false;\n\n    /**\n     * Open schedule creation popup\n     * @type {function}\n     * @private\n     */\n    this._openCreationPopup = null;\n\n    /**\n     * Hide the more view\n     * @type {function}\n     * @private\n     */\n    this._hideMoreView = null;\n\n    /**\n     * Unique id for requestAnimFrame()\n     * @type {number}\n     * @private\n     */\n    this._requestRender = 0;\n\n    /**\n     * calendar options\n     * @type {Options}\n     * @private\n     */\n    this._options = {};\n\n    this._initialize(options);\n}\n\n/**\n * destroy calendar instance.\n */\nCalendar.prototype.destroy = function() {\n    this._dragHandler.destroy();\n    this._controller.off();\n    this._layout.clear();\n    this._layout.destroy();\n\n    util.forEach(this._options.template, function(func, name) {\n        if (func) {\n            Handlebars.unregisterHelper(name + '-tmpl');\n        }\n    });\n\n    this._options = this._renderDate = this._controller =\n        this._layout = this._dragHandler = this._viewName =\n        this._refreshMethod = this._scrollToNowMethod = null;\n};\n\n/**\n * Initialize calendar\n * @param {Options} options - calendar options\n * @private\n */\nCalendar.prototype._initialize = function(options) {\n    var controller = this._controller,\n        viewName = this._viewName;\n\n    this._options = util.extend({\n        defaultView: viewName,\n        taskView: true,\n        scheduleView: true,\n        template: util.extend({\n            allday: null,\n            time: null\n        }, util.pick(options, 'template') || {}),\n        week: util.extend({}, util.pick(options, 'week') || {}),\n        month: util.extend({}, util.pick(options, 'month') || {}),\n        calendars: [],\n        useCreationPopup: false,\n        useDetailPopup: false,\n        timezones: options.timezones || [],\n        disableDblClick: false,\n        disableClick: false,\n        isReadOnly: false\n    }, options);\n\n    this._options.week = util.extend({\n        startDayOfWeek: 0,\n        workweek: false\n    }, util.pick(this._options, 'week') || {});\n\n    this._options.month = util.extend({\n        startDayOfWeek: 0,\n        workweek: false,\n        scheduleFilter: function(schedule) {\n            return Boolean(schedule.isVisible) &&\n              (schedule.category === 'allday' || schedule.category === 'time');\n        }\n    }, util.pick(options, 'month') || {});\n\n    if (this._options.isReadOnly) {\n        this._options.useCreationPopup = false;\n    }\n\n    this._layout.controller = controller;\n\n    this._setAdditionalInternalOptions(options);\n\n    this.changeView(viewName, true);\n};\n\n/**\n * Set additional internal options\n * 1. Register to the template handlebar\n * 2. Update the calendar list and set the color of the calendar.\n * 3. Change the primary timezone offset of the timezones.\n * @param {Options} options - calendar options\n * @private\n */\nCalendar.prototype._setAdditionalInternalOptions = function(options) {\n    var timezones = options.timezones || [];\n\n    util.forEach(options.template, function(func, name) {\n        if (func) {\n            Handlebars.registerHelper(name + '-tmpl', func);\n        }\n    });\n\n    util.forEach(options.calendars || [], function(calendar) {\n        this.setCalendarColor(calendar.id, calendar, true);\n    }, this);\n\n    if (timezones.length) {\n        timezone.setOffsetByTimezoneOption(timezones[0].timezoneOffset);\n    }\n};\n\n/**********\n * CRUD Methods\n **********/\n\n/**\n * Create schedules and render calendar.\n * @param {Array.<Schedule>} schedules - {@link Schedule} data list\n * @param {boolean} [silent=false] - no auto render after creation when set true\n * @example\n * calendar.createSchedules([\n *     {\n *         id: '1',\n *         calendarId: '1',\n *         title: 'my schedule',\n *         category: 'time',\n *         dueDateClass: '',\n *         start: '2018-01-18T22:30:00+09:00',\n *         end: '2018-01-19T02:30:00+09:00'\n *     },\n *     {\n *         id: '2',\n *         calendarId: '1',\n *         title: 'second schedule',\n *         category: 'time',\n *         dueDateClass: '',\n *         start: '2018-01-18T17:30:00+09:00',\n *         end: '2018-01-19T17:31:00+09:00'\n *     }\n * ]);\n */\nCalendar.prototype.createSchedules = function(schedules, silent) {\n    util.forEach(schedules, function(obj) {\n        this._setScheduleColor(obj.calendarId, obj);\n    }, this);\n\n    this._controller.createSchedules(schedules, silent);\n\n    if (!silent) {\n        this.render();\n    }\n};\n\n/**\n * Get a {@link Schedule} object by schedule id and calendar id.\n * @param {string} scheduleId - ID of schedule\n * @param {string} calendarId - calendarId of the schedule\n * @returns {Schedule} schedule object\n * @example\n * var schedule = calendar.getSchedule(scheduleId, calendarId);\n * console.log(schedule.title);\n */\nCalendar.prototype.getSchedule = function(scheduleId, calendarId) {\n    return this._controller.schedules.single(function(model) {\n        return model.id === scheduleId && model.calendarId === calendarId;\n    });\n};\n\n/**\n * Update the schedule\n * @param {string} scheduleId - ID of the original schedule to update\n * @param {string} calendarId - The calendarId of the original schedule to update\n * @param {object} changes - The {@link Schedule} properties and values with changes to update\n * @param {boolean} [silent=false] - No auto render after creation when set true\n * @example\n * calendar.updateSchedule(schedule.id, schedule.calendarId, {\n *     title: 'Changed schedule',\n *     start: new Date('2019-11-05T09:00:00'),\n *     end: new Date('2019-11-05T10:00:00'),\n *     category: 'time'\n * });\n */\nCalendar.prototype.updateSchedule = function(scheduleId, calendarId, changes, silent) {\n    var ctrl = this._controller,\n        ownSchedules = ctrl.schedules,\n        schedule = ownSchedules.single(function(model) {\n            return model.id === scheduleId && model.calendarId === calendarId;\n        });\n    var hasChangedCalendar = false;\n\n    if (!changes || !schedule) {\n        return;\n    }\n\n    hasChangedCalendar = this._hasChangedCalendar(schedule, changes);\n    changes = hasChangedCalendar ?\n        this._setScheduleColor(changes.calendarId, changes) :\n        changes;\n\n    ctrl.updateSchedule(schedule, changes);\n\n    if (!silent) {\n        this.render();\n    }\n};\n\nCalendar.prototype._hasChangedCalendar = function(schedule, changes) {\n    return schedule &&\n        changes.calendarId &&\n        schedule.calendarId !== changes.calendarId;\n};\n\nCalendar.prototype._setScheduleColor = function(calendarId, schedule) {\n    var calColor = this._calendarColor;\n    var color = calColor[calendarId];\n\n    if (color) {\n        schedule.color = schedule.color || color.color;\n        schedule.bgColor = schedule.bgColor || color.bgColor;\n        schedule.borderColor = schedule.borderColor || color.borderColor;\n        schedule.dragBgColor = schedule.dragBgColor || color.dragBgColor;\n    }\n\n    return schedule;\n};\n\n/**\n * Delete a schedule.\n * @param {string} scheduleId - ID of schedule to delete\n * @param {string} calendarId - The CalendarId of the schedule to delete\n * @param {boolean} [silent=false] - No auto render after creation when set true\n */\nCalendar.prototype.deleteSchedule = function(scheduleId, calendarId, silent) {\n    var ctrl = this._controller,\n        ownSchedules = ctrl.schedules,\n        schedule = ownSchedules.single(function(model) {\n            return model.id === scheduleId && model.calendarId === calendarId;\n        });\n\n    if (!schedule) {\n        return;\n    }\n\n    ctrl.deleteSchedule(schedule);\n    if (!silent) {\n        this.render();\n    }\n};\n\n/**********\n * Private Methods\n **********/\n\n/**\n * @param {string|Date} date - The Date to show in calendar\n * @param {number} [startDayOfWeek=0] - The Start day of week\n * @param {boolean} [workweek=false] - The only show work week\n * @returns {array} render range\n * @private\n */\nCalendar.prototype._getWeekDayRange = function(date, startDayOfWeek, workweek) {\n    var day;\n    var start;\n    var end;\n    var range;\n\n    startDayOfWeek = (startDayOfWeek || 0); // eslint-disable-line\n    date = util.isDate(date) ? date : new TZDate(date);\n    day = date.getDay();\n\n    // calculate default render range first.\n    start = new TZDate(date).addDate(-day + startDayOfWeek);\n\n    end = new TZDate(start).addDate(6);\n\n    if (day < startDayOfWeek) {\n        start = new TZDate(start).addDate(-7);\n        end = new TZDate(end).addDate(-7);\n    }\n\n    if (workweek) {\n        range = datetime.range(\n            datetime.start(start),\n            datetime.end(end),\n            datetime.MILLISECONDS_PER_DAY\n        );\n\n        range = util.filter(range, function(weekday) {\n            return !datetime.isWeekend(weekday.getDay());\n        });\n\n        start = range[0];\n        end = range[range.length - 1];\n    }\n\n    start = datetime.start(start);\n    end = datetime.start(end);\n\n    return [start, end];\n};\n\n/**\n * Toggle schedules' visibility by calendar ID\n * @param {string} calendarId - The calendar id value\n * @param {boolean} toHide - Set true to hide schedules\n * @param {boolean} [render=true] - set true then render after change visible property each models\n */\nCalendar.prototype.toggleSchedules = function(calendarId, toHide, render) {\n    var ownSchedules = this._controller.schedules;\n\n    render = util.isExisty(render) ? render : true;\n    calendarId = util.isArray(calendarId) ? calendarId : [calendarId];\n\n    ownSchedules.each(function(schedule) {\n        if (~util.inArray(schedule.calendarId, calendarId)) {\n            schedule.set('isVisible', !toHide);\n        }\n    });\n\n    if (render) {\n        this.render();\n    }\n};\n\n/**********\n * General Methods\n **********/\n\n/**\n * Render the calendar. The real rendering occurs after requestAnimationFrame.\n * If you have to render immediately, use the 'immediately' parameter as true.\n * @param {boolean} [immediately=false] - Render it immediately\n * @example\n * var silent = true;\n * calendar.clear();\n * calendar.createSchedules(schedules, silent);\n * calendar.render();\n * @example\n * // Render a calendar when resizing a window.\n * window.addEventListener('resize', function() {\n *     calendar.render();\n * });\n */\nCalendar.prototype.render = function(immediately) {\n    if (this._requestRender) {\n        reqAnimFrame.cancelAnimFrame(this._requestRender);\n    }\n\n    if (immediately) {\n        this._renderFunc();\n    } else {\n        this._requestRender = reqAnimFrame.requestAnimFrame(this._renderFunc, this);\n    }\n};\n\n/**\n * Render and refresh all layout and process requests.\n * @private\n */\nCalendar.prototype._renderFunc = function() {\n    if (this._refreshMethod) {\n        this._refreshMethod();\n    }\n    if (this._layout) {\n        this._layout.render();\n    }\n    if (this._scrollToNowMethod && this._requestScrollToNow) {\n        this._scrollToNowMethod();\n    }\n\n    this._requestScrollToNow = false;\n    this._requestRender = null;\n};\n\n/**\n * Delete all schedules and clear view. The real rendering occurs after requestAnimationFrame.\n * If you have to render immediately, use the 'immediately' parameter as true.\n * @param {boolean} [immediately=false] - Render it immediately\n * @example\n * calendar.clear();\n * calendar.createSchedules(schedules, true);\n * calendar.render();\n */\nCalendar.prototype.clear = function(immediately) {\n    this._controller.clearSchedules();\n    this.render(immediately);\n};\n\n/**\n * Scroll to current time on today in case of daily, weekly view\n * @example\n * function onNewSchedules(schedules) {\n *     calendar.createSchedules(schedules);\n *     if (calendar.getViewName() !== 'month') {\n *         calendar.scrollToNow();\n *     }\n * }\n */\nCalendar.prototype.scrollToNow = function() {\n    if (this._scrollToNowMethod) {\n        this._requestScrollToNow = true;\n        // this._scrollToNowMethod() will be called at next frame rendering.\n    }\n};\n\n/**\n * Move to today.\n * @example\n * function onClickTodayBtn() {\n *     calendar.today();\n * }\n */\nCalendar.prototype.today = function() {\n    this._renderDate = datetime.start();\n\n    this._setViewName(this._viewName);\n    this.move();\n    this.render();\n};\n\n/**\n * Move the calendar amount of offset value\n * @param {number} offset - The offset value.\n * @private\n * @example\n * // move previous week when \"week\" view.\n * // move previous month when \"month\" view.\n * calendar.move(-1);\n */\nCalendar.prototype.move = function(offset) {\n    var renderDate = dw(datetime.start(this._renderDate)),\n        viewName = this._viewName,\n        view = this._getCurrentView(),\n        recursiveSet = _setOptionRecurseively,\n        startDate, endDate, tempDate,\n        startDayOfWeek, visibleWeeksCount, workweek, isAlways6Week, datetimeOptions;\n\n    offset = util.isExisty(offset) ? offset : 0;\n\n    if (viewName === 'month') {\n        startDayOfWeek = util.pick(this._options, 'month', 'startDayOfWeek') || 0;\n        visibleWeeksCount = mmin(util.pick(this._options, 'month', 'visibleWeeksCount') || 0, 6);\n        workweek = util.pick(this._options, 'month', 'workweek') || false;\n        isAlways6Week = util.pick(this._options, 'month', 'isAlways6Week');\n\n        if (visibleWeeksCount) {\n            datetimeOptions = {\n                startDayOfWeek: startDayOfWeek,\n                isAlways6Week: false,\n                visibleWeeksCount: visibleWeeksCount,\n                workweek: workweek\n            };\n\n            renderDate.addDate(offset * 7 * datetimeOptions.visibleWeeksCount);\n            tempDate = datetime.arr2dCalendar(renderDate.d, datetimeOptions);\n\n            recursiveSet(view, function(childView, opt) {\n                opt.renderMonth = new TZDate(renderDate.d);\n            });\n        } else {\n            datetimeOptions = {\n                startDayOfWeek: startDayOfWeek,\n                isAlways6Week: isAlways6Week,\n                workweek: workweek\n            };\n\n            renderDate.addMonth(offset);\n            tempDate = datetime.arr2dCalendar(renderDate.d, datetimeOptions);\n\n            recursiveSet(view, function(childView, opt) {\n                opt.renderMonth = new TZDate(renderDate.d);\n            });\n        }\n\n        startDate = tempDate[0][0];\n        endDate = tempDate[tempDate.length - 1][tempDate[tempDate.length - 1].length - 1];\n    } else if (viewName === 'week') {\n        renderDate.addDate(offset * 7);\n        startDayOfWeek = util.pick(this._options, 'week', 'startDayOfWeek') || 0;\n        workweek = util.pick(this._options, 'week', 'workweek') || false;\n        tempDate = this._getWeekDayRange(renderDate.d, startDayOfWeek, workweek);\n\n        startDate = tempDate[0];\n        endDate = tempDate[1];\n\n        recursiveSet(view, function(childView, opt) {\n            opt.renderStartDate = new TZDate(startDate);\n            opt.renderEndDate = new TZDate(endDate);\n\n            childView.setState({\n                collapsed: true\n            });\n        });\n    } else if (viewName === 'day') {\n        renderDate.addDate(offset);\n        startDate = datetime.start(renderDate.d);\n        endDate = datetime.end(renderDate.d);\n\n        recursiveSet(view, function(childView, opt) {\n            opt.renderStartDate = new TZDate(startDate);\n            opt.renderEndDate = new TZDate(endDate);\n\n            childView.setState({\n                collapsed: true\n            });\n        });\n    }\n\n    this._renderDate = renderDate.d;\n    this._renderRange = {\n        start: startDate,\n        end: endDate\n    };\n};\n\n/**\n * Move to specific date\n * @param {(Date|string)} date - The date to move\n * @example\n * calendar.on('clickDayname', function(event) {\n *     if (calendar.getViewName() === 'week') {\n *         calendar.setDate(new Date(event.date));\n *         calendar.changeView('day', true);\n *     }\n * });\n */\nCalendar.prototype.setDate = function(date) {\n    if (util.isString(date)) {\n        date = datetime.parse(date);\n    }\n\n    this._renderDate = new TZDate(date);\n    this._setViewName(this._viewName);\n    this.move(0);\n    this.render();\n};\n\n/**\n * Move the calendar forward a day, a week, a month, 2 weeks, 3 weeks.\n * @example\n * function moveToNextOrPrevRange(val) {\n    if (val === -1) {\n        calendar.prev();\n    } else if (val === 1) {\n        calendar.next();\n    }\n}\n */\nCalendar.prototype.next = function() {\n    this.move(1);\n    this.render();\n};\n\n/**\n * Move the calendar backward a day, a week, a month, 2 weeks, 3 weeks.\n * @example\n * function moveToNextOrPrevRange(val) {\n    if (val === -1) {\n        calendar.prev();\n    } else if (val === 1) {\n        calendar.next();\n    }\n}\n */\nCalendar.prototype.prev = function() {\n    this.move(-1);\n    this.render();\n};\n\n/**\n * Return current rendered view.\n * @returns {View} current view instance\n * @private\n */\nCalendar.prototype._getCurrentView = function() {\n    var viewName = this._viewName;\n\n    if (viewName === 'day') {\n        viewName = 'week';\n    }\n\n    return util.pick(this._layout.children.items, viewName);\n};\n\n/**\n * Change calendar's schedule color with option\n * @param {string} calendarId - The calendar ID\n * @param {CalendarColor} option - The {@link CalendarColor} object\n * @param {boolean} [silent=false] - No auto render after creation when set true\n * @example\n * calendar.setCalendarColor('1', {\n *     color: '#e8e8e8',\n *     bgColor: '#585858',\n *     borderColor: '#a1b56c'\n *     dragBgColor: '#585858',\n * });\n * calendar.setCalendarColor('2', {\n *     color: '#282828',\n *     bgColor: '#dc9656',\n *     borderColor: '#a1b56c',\n *     dragBgColor: '#dc9656',\n * });\n * calendar.setCalendarColor('3', {\n *     color: '#a16946',\n *     bgColor: '#ab4642',\n *     borderColor: '#a1b56c',\n *     dragBgColor: '#ab4642',\n * });\n */\nCalendar.prototype.setCalendarColor = function(calendarId, option, silent) {\n    var calColor = this._calendarColor,\n        ownSchedules = this._controller.schedules,\n        ownColor = calColor[calendarId];\n\n    if (!util.isObject(option)) {\n        config.throwError('Calendar#changeCalendarColor(): color 는 {color: \\'\\', bgColor: \\'\\'} 형태여야 합니다.');\n    }\n\n    ownColor = calColor[calendarId] = util.extend({\n        color: '#000',\n        bgColor: '#a1b56c',\n        borderColor: '#a1b56c',\n        dragBgColor: '#a1b56c'\n    }, option);\n\n    ownSchedules.each(function(model) {\n        if (model.calendarId !== calendarId) {\n            return;\n        }\n\n        model.color = ownColor.color;\n        model.bgColor = ownColor.bgColor;\n        model.borderColor = ownColor.borderColor;\n        model.dragBgColor = ownColor.dragBgColor;\n    });\n\n    if (!silent) {\n        this.render();\n    }\n};\n\n/**********\n * Custom Events\n **********/\n\n/**\n * A bridge-based event handler for connecting a click handler to a user click event handler for each view\n * @fires Calendar#clickSchedule\n * @param {object} clickScheduleData - The event data of 'clickSchedule' handler\n * @private\n */\nCalendar.prototype._onClick = function(clickScheduleData) {\n    /**\n     * Fire this event when click a schedule.\n     * @event Calendar#clickSchedule\n     * @type {object}\n     * @property {Schedule} schedule - The {@link Schedule} instance\n     * @property {MouseEvent} event - MouseEvent\n     * @example\n     * calendar.on('clickSchedule', function(event) {\n     *     var schedule = event.schedule;\n     *\n     *     if (lastClickSchedule) {\n     *         calendar.updateSchedule(lastClickSchedule.id, lastClickSchedule.calendarId, {\n     *             isFocused: false\n     *         });\n     *     }\n     *     calendar.updateSchedule(schedule.id, schedule.calendarId, {\n     *         isFocused: true\n     *     });\n     *\n     *     lastClickSchedule = schedule;\n     *     // open detail view\n     * });\n     */\n    this.fire('clickSchedule', clickScheduleData);\n};\n\n/**\n * A bridge-based event handler for connecting a click handler to a user click event handler for each view\n * @fires Calendar#clickMore\n * @param {object} clickMoreSchedule - The event data of 'clickMore' handler\n * @private\n */\nCalendar.prototype._onClickMore = function(clickMoreSchedule) {\n    /**\n     * Fire this event when click a schedule.\n     * @event Calendar#clickMore\n     * @type {object}\n     * @property {Date} date - The Clicked date\n     * @property {HTMLElement} target - The more element\n     * @example\n     * calendar.on('clickMore', function(event) {\n     *     console.log('clickMore', event.date, event.target);\n     * });\n     */\n    this.fire('clickMore', clickMoreSchedule);\n};\n\n/**\n * dayname click event handler\n * @fires Calendar#clickDayname\n * @param {object} clickScheduleData - The event data of 'clickDayname' handler\n * @private\n */\nCalendar.prototype._onClickDayname = function(clickScheduleData) {\n    /**\n     * Fire this event when click a day name in weekly.\n     * @event Calendar#clickDayname\n     * @type {object}\n     * @property {string} date - The date string by format 'YYYY-MM-DD'\n     * @example\n     * calendar.on('clickDayname', function(event) {\n     *     if (calendar.getViewName() === 'week') {\n     *         calendar.setDate(new Date(event.date));\n     *         calendar.changeView('day', true);\n     *     }\n     * });\n     */\n    this.fire('clickDayname', clickScheduleData);\n};\n\n/**\n * @fires {Calendar#n('beforeCreateSchedule', function}\n * @param {object} createScheduleData - select schedule data from allday, time\n * @private\n */\nCalendar.prototype._onBeforeCreate = function(createScheduleData) {\n    if (this._options.useCreationPopup && !createScheduleData.useCreationPopup) {\n        if (this._showCreationPopup) {\n            this._showCreationPopup(createScheduleData);\n\n            return;\n        }\n    }\n    /**\n     * Fire this event when select time period in daily, weekly, monthly.\n     * @event Calendar#beforeCreateSchedule\n     * @type {object}\n     * @property {boolean} isAllDay - The allday schedule\n     * @property {Date} start - The selected start time\n     * @property {Date} end - The selected end time\n     * @property {TimeCreationGuide} guide - {@link TimeCreationGuide} instance\n     * @property {string} triggerEventName - The event name like 'click', 'dblclick'\n     * @example\n     * calendar.on('beforeCreateSchedule', function(event) {\n     *     var startTime = event.start;\n     *     var endTime = event.end;\n     *     var isAllDay = event.isAllDay;\n     *     var guide = event.guide;\n     *     var triggerEventName = event.triggerEventName;\n     *     var schedule;\n     *\n     *     if (triggerEventName === 'click') {\n     *         // open writing simple schedule popup\n     *         schedule = {...};\n     *     } else if (triggerEventName === 'dblclick') {\n     *         // open writing detail schedule popup\n     *         schedule = {...};\n     *     }\n     *\n     *     calendar.createSchedules([schedule]);\n     * });\n     */\n    this.fire('beforeCreateSchedule', createScheduleData);\n};\n\n/**\n * @fires Calendar#beforeUpdateSchedule\n * @param {object} updateScheduleData - update {@link Schedule} data\n * @private\n */\nCalendar.prototype._onBeforeUpdate = function(updateScheduleData) {\n    /**\n     * Fire this event when drag a schedule to change time in daily, weekly, monthly.\n     * @event Calendar#beforeUpdateSchedule\n     * @type {object}\n     * @property {Schedule} schedule - The original {@link Schedule} instance\n     * @property {object} changes - The {@link Schedule} properties and values with changes to update\n     * @property {Date} start - Deprecated: start time to update\n     * @property {Date} end - Deprecated: end time to update\n     * @example\n     * calendar.on('beforeUpdateSchedule', function(event) {\n     *     var schedule = event.schedule;\n     *     var changes = event.changes;\n     *\n     *     calendar.updateSchedule(schedule.id, schedule.calendarId, changes);\n     * });\n     */\n    this.fire('beforeUpdateSchedule', updateScheduleData);\n};\n\n/**\n * @fires Calendar#beforeDeleteSchedule\n * @param {object} deleteScheduleData - delete schedule data\n * @private\n */\nCalendar.prototype._onBeforeDelete = function(deleteScheduleData) {\n    /**\n     * Fire this event when delete a schedule.\n     * @event Calendar#beforeDeleteSchedule\n     * @type {object}\n     * @property {Schedule} schedule - The {@link Schedule} instance to delete\n     * @example\n     * calendar.on('beforeDeleteSchedule', function(event) {\n     *     var schedule = event.schedule;\n     *     alert('The schedule is removed.', schedule);\n     * });\n     */\n    this.fire('beforeDeleteSchedule', deleteScheduleData);\n};\n\n/**\n * @fires Calendar#afterRenderSchedule\n * @param {Schedule} scheduleData - The schedule data\n * @private\n */\nCalendar.prototype._onAfterRenderSchedule = function(scheduleData) {\n    /**\n     * Fire this event by every single schedule after rendering whole calendar.\n     * @event Calendar#afterRenderSchedule\n     * @type {object}\n     * @property {Schedule} schedule - A rendered {@link Schedule} instance\n     * @example\n     * calendar.on('afterRenderSchedule', function(event) {\n     *     var schedule = event.schedule;\n     *     var element = calendar.getElement(schedule.id, schedule.calendarId);\n     *     // use the element\n     *     console.log(element);\n     * });\n     */\n    this.fire('afterRenderSchedule', scheduleData);\n};\n\n/**\n * @fires Calendar#clickTimezonesCollapseBtn\n * @param {boolean} timezonesCollapsed - timezones collapsed flag\n * @private\n */\nCalendar.prototype._onClickTimezonesCollapseBtn = function(timezonesCollapsed) {\n    /**\n     * Fire this event by clicking timezones collapse button\n     * @event Calendar#clickTimezonesCollapseBtn\n     * @type {object}\n     * @property {boolean} timezonesCollapsed - The timezones collapes flag\n     * @example\n     * calendar.on('clickTimezonesCollapseBtn', function(timezonesCollapsed) {\n     *     console.log(timezonesCollapsed);\n     * });\n     */\n    this.fire('clickTimezonesCollapseBtn', timezonesCollapsed);\n};\n\n/**\n * Toggle calendar factory class, main view, wallview event connection\n * @param {boolean} isAttach - attach events if true.\n * @param {Week|Month} view - Weekly view or Monthly view\n * @private\n */\nCalendar.prototype._toggleViewSchedule = function(isAttach, view) {\n    var self = this,\n        handler = view.handler,\n        method = isAttach ? 'on' : 'off';\n\n    util.forEach(handler.click, function(clickHandler) {\n        clickHandler[method]('clickSchedule', self._onClick, self);\n    });\n\n    util.forEach(handler.dayname, function(clickHandler) {\n        clickHandler[method]('clickDayname', self._onClickDayname, self);\n    });\n\n    util.forEach(handler.creation, function(creationHandler) {\n        creationHandler[method]('beforeCreateSchedule', self._onBeforeCreate, self);\n        creationHandler[method]('beforeDeleteSchedule', self._onBeforeDelete, self);\n    });\n\n    util.forEach(handler.move, function(moveHandler) {\n        moveHandler[method]('beforeUpdateSchedule', self._onBeforeUpdate, self);\n    });\n\n    util.forEach(handler.resize, function(resizeHandler) {\n        resizeHandler[method]('beforeUpdateSchedule', self._onBeforeUpdate, self);\n    });\n\n    // bypass events from view\n    view[method]('afterRenderSchedule', self._onAfterRenderSchedule, self);\n    view[method]('clickTimezonesCollapseBtn', self._onClickTimezonesCollapseBtn, self);\n    view[method]('clickMore', self._onClickMore, self);\n};\n\n/**\n * Change current view with view name('day', 'week', 'month')\n * @param {string} newViewName - The New view name to render\n * @param {boolean} force - Force render despite of current view and new view are equal\n * @example\n * // daily view\n * calendar.changeView('day', true);\n *\n * // weekly view\n * calendar.changeView('week', true);\n *\n * // monthly view(default 6 weeks view)\n * calendar.setOptions({month: {visibleWeeksCount: 6}}, true); // or null\n * calendar.changeView('month', true);\n *\n * // 2 weeks monthly view\n * calendar.setOptions({month: {visibleWeeksCount: 2}}, true);\n * calendar.changeView('month', true);\n *\n * // 3 weeks monthly view\n * calendar.setOptions({month: {visibleWeeksCount: 3}}, true);\n * calendar.changeView('month', true);\n *\n * // narrow weekend\n * calendar.setOptions({month: {narrowWeekend: true}}, true);\n * calendar.setOptions({week: {narrowWeekend: true}}, true);\n * calendar.changeView(calendar.getViewName(), true);\n *\n * // change start day of week(from monday)\n * calendar.setOptions({week: {startDayOfWeek: 1}}, true);\n * calendar.setOptions({month: {startDayOfWeek: 1}}, true);\n * calendar.changeView(calendar.getViewName(), true);\n *\n * // work week\n * calendar.setOptions({week: {workweek: true}}, true);\n * calendar.setOptions({month: {workweek: true}}, true);\n * calendar.changeView(calendar.getViewName(), true);\n */\nCalendar.prototype.changeView = function(newViewName, force) {\n    var self = this,\n        layout = this._layout,\n        controller = this._controller,\n        dragHandler = this._dragHandler,\n        options = this._options,\n        viewName = this._viewName,\n        created;\n\n    if (!force && viewName === newViewName) {\n        return;\n    }\n\n    this._setViewName(newViewName);\n\n    // convert day to week\n    if (viewName === 'day') {\n        viewName = 'week';\n    }\n\n    if (newViewName === 'day') {\n        newViewName = 'week';\n    }\n    layout.children.doWhenHas(viewName, function(view) {\n        self._toggleViewSchedule(false, view);\n    });\n\n    layout.clear();\n\n    if (newViewName === 'month') {\n        created = _createMonthView(\n            controller,\n            layout.container,\n            dragHandler,\n            options\n        );\n    } else if (newViewName === 'week') {\n        created = _createWeekView(\n            controller,\n            layout.container,\n            dragHandler,\n            options,\n            this.getViewName()\n        );\n    }\n\n    layout.addChild(created.view);\n\n    layout.children.doWhenHas(newViewName, function(view) {\n        self._toggleViewSchedule(true, view);\n    });\n\n    this._refreshMethod = created.refresh;\n    this._scrollToNowMethod = created.scrollToNow;\n    this._openCreationPopup = created.openCreationPopup;\n    this._showCreationPopup = created.showCreationPopup;\n    this._hideMoreView = created.hideMoreView;\n\n    this.move();\n    this.render();\n};\n\n/**\n * @deprecated\n * Toggle task view('Milestone', 'Task') panel\n * @param {boolean} enabled - use task view\n * @example\n * // There is no milestone, task, so hide those view panel\n * calendar.toggleTaskView(false);\n *\n * // There are some milestone, task, so show those view panel.\n * calendar.toggleTaskView(true);\n */\nCalendar.prototype.toggleTaskView = function(enabled) {\n    var viewName = this._viewName,\n        options = this._options;\n\n    options.taskView = enabled;\n\n    this.changeView(viewName, true);\n};\n\n/**\n * @deprecated\n * Toggle schedule view('AllDay', TimeGrid') panel\n * @param {boolean} enabled - use task view\n * @example\n * // hide those view panel to show only 'Milestone', 'Task'\n * calendar.toggleScheduleView(false);\n *\n * // show those view panel.\n * calendar.toggleScheduleView(true);\n */\nCalendar.prototype.toggleScheduleView = function(enabled) {\n    var viewName = this._viewName,\n        options = this._options;\n\n    options.scheduleView = enabled;\n\n    this.changeView(viewName, true);\n};\n\n/**\n * Set current view name\n * @param {string} viewName - new view name to render\n * @private\n */\nCalendar.prototype._setViewName = function(viewName) {\n    this._viewName = viewName;\n};\n\n/**\n * Get a schedule element by schedule id and calendar id.\n * @param {string} scheduleId - ID of schedule\n * @param {string} calendarId - calendarId of schedule\n * @returns {HTMLElement} schedule element if found or null\n * @example\n * var element = calendar.getElement(scheduleId, calendarId);\n * console.log(element);\n */\nCalendar.prototype.getElement = function(scheduleId, calendarId) {\n    var schedule = this.getSchedule(scheduleId, calendarId);\n    if (schedule) {\n        return document.querySelector('[data-schedule-id=\"' + scheduleId + '\"][data-calendar-id=\"' + calendarId + '\"]');\n    }\n\n    return null;\n};\n\n/**\n * Set a theme. If some keys are not defined in the preset, will be return.\n * @param {object} theme - multiple styles map\n * @returns {Array.<string>} keys - error keys not predefined.\n * @example\n * cal.setTheme({\n    'month.dayname.height': '31px',\n    'common.dayname.color': '#333',\n    'month.dayname.borderBottom': '1px solid #e5e5e5' // Not valid key  will be return.\n * });\n */\nCalendar.prototype.setTheme = function(theme) {\n    var result = this._controller.setTheme(theme);\n    this.render(true);\n\n    return result;\n};\n\n/**\n * Set options of calendar\n * @param {Options} options - set {@link Options}\n * @param {boolean} [silent=false] - no auto render after creation when set true\n */\nCalendar.prototype.setOptions = function(options, silent) {\n    util.forEach(options, function(value, name) {\n        if (util.isObject(value) && !util.isArray(value)) {\n            util.forEach(value, function(innerValue, innerName) {\n                this._options[name][innerName] = innerValue;\n            }, this);\n        } else {\n            this._options[name] = value;\n        }\n    }, this);\n\n    this._setAdditionalInternalOptions(options);\n\n    if (!silent) {\n        this.changeView(this._viewName, true);\n    }\n};\n\n/**\n * Get current {@link Options}.\n * @returns {Options} options\n */\nCalendar.prototype.getOptions = function() {\n    return this._options;\n};\n\n/**\n * Current rendered date ({@link TZDate} for further information)\n * @returns {TZDate}\n */\nCalendar.prototype.getDate = function() {\n    return this._renderDate;\n};\n\n/**\n * Start time of rendered date range ({@link TZDate} for further information)\n * @returns {TZDate}\n */\nCalendar.prototype.getDateRangeStart = function() {\n    return this._renderRange.start;\n};\n\n/**\n * End time of rendered date range ({@link TZDate} for further information)\n * @returns {TZDate}\n */\nCalendar.prototype.getDateRangeEnd = function() {\n    return this._renderRange.end;\n};\n\n/**\n * Get current view name('day', 'week', 'month')\n * @returns {string} view name\n */\nCalendar.prototype.getViewName = function() {\n    return this._viewName;\n};\n\n/**\n * Set calendar list\n * @param {Array.<CalendarProps>} calendars - {@link CalendarProps} List\n */\nCalendar.prototype.setCalendars = function(calendars) {\n    util.forEach(calendars || [], function(calendar) {\n        this.setCalendarColor(calendar.id, calendar, true);\n    }, this);\n\n    this._controller.setCalendars(calendars);\n\n    this.render();\n};\n\n/**\n * Open schedule creation popup\n * @param {Schedule} schedule - The preset {@link Schedule} data\n */\nCalendar.prototype.openCreationPopup = function(schedule) {\n    if (this._openCreationPopup) {\n        this._openCreationPopup(schedule);\n    }\n};\n\n/**\n * Hide the more view\n */\nCalendar.prototype.hideMoreView = function() {\n    if (this._hideMoreView) {\n        this._hideMoreView();\n    }\n};\n\n/**\n * Set timezone offset\n * @param {number} offset - The offset (min)\n * @static\n * @deprecated\n * @example\n * var timezoneName = moment.tz.guess();\n * tui.Calendar.setTimezoneOffset(moment.tz.zone(timezoneName).utcOffset(moment()));\n */\nCalendar.setTimezoneOffset = function(offset) {\n    timezone.setOffset(offset);\n};\n\n/**\n * Set a callback function to get timezone offset by timestamp\n * @param {function} callback - The callback function\n * @static\n * @deprecated\n * @example\n * var timezoneName = moment.tz.guess();\n * tui.Calendar.setTimezoneOffsetCallback(function(timestamp) {\n *      return moment.tz.zone(timezoneName).utcOffset(timestamp));\n * });\n */\nCalendar.setTimezoneOffsetCallback = function(callback) {\n    timezone.setOffsetCallback(callback);\n};\n\n/**\n * Create controller instance\n * @returns {Base} controller instance\n * @param {Options} options - calendar options\n * @private\n */\nfunction _createController(options) {\n    return controllerFactory(options);\n}\n\n/**\n * Create week view instance by dependent module instances\n * @param {Base} controller - controller\n * @param {HTMLElement} container - container element\n * @param {Drag} dragHandler - global drag handler\n * @param {object} options - options for week view\n * @param {string} viewName - 'week', 'day'\n * @returns {Week} week view instance\n * @private\n */\nfunction _createWeekView(controller, container, dragHandler, options, viewName) {\n    return weekViewFactory(\n        controller,\n        container,\n        dragHandler,\n        options,\n        viewName\n    );\n}\n\n/**\n * Create week view instance by dependent module instances\n * @param {Base} controller - controller\n * @param {HTMLElement} container - container element\n * @param {Drag} dragHandler - global drag handler\n * @param {object} options - options for week view\n * @returns {Month} month view instance\n * @private\n */\nfunction _createMonthView(controller, container, dragHandler, options) {\n    return monthViewFactory(\n        controller,\n        container,\n        dragHandler,\n        options\n    );\n}\n\n/**\n * Set child view's options recursively\n * @param {View} view - parent view\n * @param {function} func - option manipulate function\n * @private\n */\nfunction _setOptionRecurseively(view, func) {\n    view.recursive(function(childView) {\n        var opt = childView.options;\n\n        if (!opt) {\n            return;\n        }\n\n        func(childView, opt);\n    });\n}\n\nutil.CustomEvents.mixin(Calendar);\n\nmodule.exports = Calendar;\n","/**\n * @fileoverview Controller factory module.\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\nvar util = require('tui-code-snippet');\nvar Base = require('../controller/base'),\n    Core = require('../controller/viewMixin/core'),\n    Week = require('../controller/viewMixin/week'),\n    Month = require('../controller/viewMixin/month');\n\n/**\n * Mixin object. create object property to target and mix to that\n * @param {object} from - source object\n * @param {object} to - target object\n * @param {string} propertyName - property name\n */\nfunction mixin(from, to, propertyName) {\n    var obj = to[propertyName] = {};\n\n    util.forEach(from, function(method, methodName) {\n        obj[methodName] = method.bind(to);\n    });\n}\n\n/**\n * @param {object} options - options for base controller\n * @param {function} [options.groupFunc] - function for group each models {@see Collection#groupBy}\n * @returns {Base} The controller instance.\n */\nmodule.exports = function(options) {\n    var controller = new Base(options);\n\n    mixin(Core, controller, 'Core');\n    mixin(Week, controller, 'Week');\n    mixin(Month, controller, 'Month');\n\n    // for Theme\n    controller.Core.theme = controller.theme;\n    controller.Week.theme = controller.theme;\n    controller.Month.theme = controller.theme;\n\n    return controller;\n};\n","/**\n * @fileoverview Month view factory module\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\nvar util = require('tui-code-snippet');\nvar config = require('../config'),\n    array = require('../common/array'),\n    datetime = require('../common/datetime'),\n    domutil = require('../common/domutil'),\n    common = require('../common/common'),\n    Month = require('../view/month/month'),\n    MonthClick = require('../handler/month/click'),\n    MonthCreation = require('../handler/month/creation'),\n    MonthResize = require('../handler/month/resize'),\n    MonthMove = require('../handler/month/move'),\n    More = require('../view/month/more'),\n    ScheduleCreationPopup = require('../view/popup/scheduleCreationPopup'),\n    ScheduleDetailPopup = require('../view/popup/scheduleDetailPopup'),\n    Schedule = require('../model/schedule');\n\n/**\n * Get the view model for more layer\n * @param {TZDate} date - date has more schedules\n * @param {HTMLElement} target - target element\n * @param {Collection} schedules - schedule collection\n * @param {string[]} daynames - daynames to use upside of month more view\n * @returns {object} view model\n */\nfunction getViewModelForMoreLayer(date, target, schedules, daynames) {\n    schedules.each(function(schedule) {\n        var model = schedule.model;\n        schedule.hasMultiDates = datetime.hasMultiDates(model.start, model.end);\n    });\n\n    return {\n        target: target,\n        date: datetime.format(date, 'YYYY.MM.DD'),\n        dayname: daynames[date.getDay()],\n        schedules: schedules.sort(array.compare.schedule.asc)\n    };\n}\n\n/**\n * @param {Base} baseController - controller instance\n * @param {HTMLElement} layoutContainer - container element for month view\n * @param {Drag} dragHandler - drag handler instance\n * @param {object} options - options\n * @returns {object} view instance and refresh method\n */\nfunction createMonthView(baseController, layoutContainer, dragHandler, options) {\n    var monthViewContainer, monthView, moreView, createView;\n    var clickHandler, creationHandler, resizeHandler, moveHandler, clearSchedulesHandler, onUpdateSchedule;\n    var onShowCreationPopup, onSaveNewSchedule, onShowEditPopup;\n    var detailView, onShowDetailPopup, onDeleteSchedule, onEditSchedule;\n\n    monthViewContainer = domutil.appendHTMLElement(\n        'div', layoutContainer, config.classname('month'));\n\n    monthView = new Month(options, monthViewContainer, baseController.Month);\n    moreView = new More(options.month, layoutContainer, baseController.theme);\n\n    // handlers\n    clickHandler = new MonthClick(dragHandler, monthView, baseController);\n    if (!options.isReadOnly) {\n        creationHandler = new MonthCreation(dragHandler, monthView, baseController, options);\n        resizeHandler = new MonthResize(dragHandler, monthView, baseController);\n        moveHandler = new MonthMove(dragHandler, monthView, baseController);\n    }\n\n    clearSchedulesHandler = function() {\n        if (moreView) {\n            moreView.hide();\n        }\n    };\n\n    onUpdateSchedule = function() {\n        if (moreView) {\n            moreView.refresh();\n        }\n    };\n\n    // binding +n click schedule\n    clickHandler.on('clickMore', function(clickMoreSchedule) {\n        var date = clickMoreSchedule.date,\n            target = clickMoreSchedule.target,\n            schedules = util.pick(baseController.findByDateRange(\n                datetime.start(date),\n                datetime.end(date)\n            ), clickMoreSchedule.ymd);\n\n        schedules.items = util.filter(schedules.items, function(item) {\n            return options.month.scheduleFilter(item.model);\n        });\n\n        if (schedules && schedules.length) {\n            moreView.render(getViewModelForMoreLayer(date, target, schedules, monthView.options.daynames));\n\n            schedules.each(function(scheduleViewModel) {\n                if (scheduleViewModel) {\n                    /**\n                     * @event More#afterRenderSchedule\n                     */\n                    monthView.fire('afterRenderSchedule', {schedule: scheduleViewModel.model});\n                }\n            });\n\n            monthView.fire('clickMore', {\n                date: clickMoreSchedule.date,\n                target: moreView.getMoreViewElement()\n            });\n        }\n    });\n\n    // binding popup for schedules creation\n    if (options.useCreationPopup) {\n        createView = new ScheduleCreationPopup(layoutContainer, baseController.calendars, options.usageStatistics);\n\n        onSaveNewSchedule = function(scheduleData) {\n            creationHandler.fire('beforeCreateSchedule', util.extend(scheduleData, {\n                useCreationPopup: true\n            }));\n        };\n        createView.on('beforeCreateSchedule', onSaveNewSchedule);\n    }\n\n    // binding popup for schedule detail\n    if (options.useDetailPopup) {\n        detailView = new ScheduleDetailPopup(layoutContainer, baseController.calendars);\n        onShowDetailPopup = function(eventData) {\n            var scheduleId = eventData.schedule.calendarId;\n            eventData.calendar = common.find(baseController.calendars, function(calendar) {\n                return calendar.id === scheduleId;\n            });\n\n            if (options.isReadOnly) {\n                eventData.schedule = util.extend({}, eventData.schedule, {isReadOnly: true});\n            }\n\n            detailView.render(eventData);\n        };\n        onDeleteSchedule = function(eventData) {\n            if (creationHandler) {\n                creationHandler.fire('beforeDeleteSchedule', eventData);\n            }\n        };\n        onEditSchedule = function(eventData) {\n            moveHandler.fire('beforeUpdateSchedule', eventData);\n        };\n\n        clickHandler.on('clickSchedule', onShowDetailPopup);\n\n        detailView.on('beforeDeleteSchedule', onDeleteSchedule);\n\n        if (options.useCreationPopup) {\n            onShowEditPopup = function(eventData) {\n                createView.setCalendars(baseController.calendars);\n                createView.render(eventData);\n            };\n            createView.on('beforeUpdateSchedule', onEditSchedule);\n            detailView.on('beforeUpdateSchedule', onShowEditPopup);\n        } else {\n            detailView.on('beforeUpdateSchedule', onEditSchedule);\n        }\n    }\n\n    // binding clear schedules\n    baseController.on('clearSchedules', clearSchedulesHandler);\n\n    // bind update schedule event\n    baseController.on('updateSchedule', onUpdateSchedule);\n\n    if (moveHandler) {\n        moveHandler.on('monthMoveStart_from_morelayer', function() {\n            moreView.hide();\n        });\n    }\n\n    monthView.handler = {\n        click: {\n            'default': clickHandler\n        }\n    };\n\n    if (!options.isReadOnly) {\n        monthView.handler = util.extend(monthView.handler, {\n            creation: {\n                'default': creationHandler\n            },\n            resize: {\n                'default': resizeHandler\n            },\n            move: {\n                'default': moveHandler\n            }\n        });\n    }\n\n    monthView._beforeDestroy = function() {\n        moreView.destroy();\n        baseController.off('clearSchedules', clearSchedulesHandler);\n        baseController.off('updateSchedule', onUpdateSchedule);\n\n        util.forEach(monthView.handler, function(type) {\n            util.forEach(type, function(handler) {\n                handler.off();\n                handler.destroy();\n            });\n        });\n\n        if (options.useCreationPopup && options.useDetailPopup) {\n            createView.off('beforeUpdateSchedule', onUpdateSchedule);\n        }\n\n        if (options.useCreationPopup) {\n            if (creationHandler) {\n                creationHandler.off('beforeCreateSchedule', onShowCreationPopup);\n            }\n            createView.off('saveSchedule', onSaveNewSchedule);\n            createView.destroy();\n        }\n\n        if (options.useDetailPopup) {\n            clickHandler.off('clickSchedule', onShowDetailPopup);\n            detailView.off('beforeUpdateSchedule', onUpdateSchedule);\n            detailView.off('beforeDeleteSchedule', onDeleteSchedule);\n            detailView.destroy();\n        }\n    };\n\n    // add controller\n    monthView.controller = baseController.Month;\n\n    return {\n        view: monthView,\n        refresh: function() {\n            monthView.vLayout.refresh();\n        },\n        openCreationPopup: function(schedule) {\n            if (createView && creationHandler) {\n                creationHandler.invokeCreationClick(Schedule.create(schedule));\n            }\n        },\n        showCreationPopup: function(eventData) {\n            if (createView) {\n                createView.setCalendars(baseController.calendars);\n                createView.render(eventData);\n            }\n        },\n        hideMoreView: function() {\n            if (moreView) {\n                moreView.hide();\n            }\n        }\n    };\n}\n\nmodule.exports = createMonthView;\n","/**\n * @fileoverview Factory module for WeekView\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\nvar util = require('tui-code-snippet');\nvar config = require('../config');\nvar domutil = require('../common/domutil');\nvar common = require('../common/common');\nvar VLayout = require('../common/vlayout');\nvar reqAnimFrame = require('../common/reqAnimFrame');\nvar Schedule = require('../model/schedule');\n// Parent views\nvar Week = require('../view/week/week');\n\n// Sub views\nvar DayName = require('../view/week/dayname');\nvar DayGrid = require('../view/week/dayGrid');\nvar TimeGrid = require('../view/week/timeGrid');\nvar ScheduleCreationPopup = require('../view/popup/scheduleCreationPopup');\nvar ScheduleDetailPopup = require('../view/popup/scheduleDetailPopup');\n\n// Handlers\nvar DayNameClick = require('../handler/time/clickDayname');\nvar DayGridClick = require('../handler/daygrid/click');\nvar DayGridCreation = require('../handler/daygrid/creation');\nvar DayGridMove = require('../handler/daygrid/move');\nvar DayGridResize = require('../handler/daygrid/resize');\nvar TimeClick = require('../handler/time/click');\nvar TimeCreation = require('../handler/time/creation');\nvar TimeMove = require('../handler/time/move');\nvar TimeResize = require('../handler/time/resize');\n\nvar DAYGRID_HANDLDERS = {\n    'click': DayGridClick,\n    'creation': DayGridCreation,\n    'move': DayGridMove,\n    'resize': DayGridResize\n};\nvar TIMEGRID_HANDLERS = {\n    'click': TimeClick,\n    'creation': TimeCreation,\n    'move': TimeMove,\n    'resize': TimeResize\n};\nvar DEFAULT_PANELS = [\n    {\n        name: 'milestone',\n        type: 'daygrid',\n        minHeight: 20,\n        maxHeight: 80,\n        showExpandableButton: true,\n        maxExpandableHeight: 210,\n        handlers: ['click'],\n        show: true\n    },\n    {\n        name: 'task',\n        type: 'daygrid',\n        minHeight: 40,\n        maxHeight: 120,\n        showExpandableButton: true,\n        maxExpandableHeight: 210,\n        handlers: ['click', 'move'],\n        show: true\n    },\n    {\n        name: 'allday',\n        type: 'daygrid',\n        minHeight: 30,\n        maxHeight: 80,\n        showExpandableButton: true,\n        maxExpandableHeight: 210,\n        handlers: ['click', 'creation', 'move', 'resize'],\n        show: true\n    },\n    {\n        name: 'time',\n        type: 'timegrid',\n        autoHeight: true,\n        handlers: ['click', 'creation', 'move', 'resize'],\n        show: true\n    }\n];\n\n/* eslint-disable complexity*/\nmodule.exports = function(baseController, layoutContainer, dragHandler, options, viewName) {\n    var panels = [],\n        vpanels = [];\n    var weekView, dayNameContainer, dayNameView, vLayoutContainer, vLayout;\n    var createView, onSaveNewSchedule, onSetCalendars, lastVPanel;\n    var detailView, onShowDetailPopup, onDeleteSchedule, onShowEditPopup, onEditSchedule;\n    var taskView = options.taskView;\n    var scheduleView = options.scheduleView;\n    var viewVisibilities = {\n        'milestone': util.isArray(taskView) ? util.inArray('milestone', taskView) >= 0 : taskView,\n        'task': util.isArray(taskView) ? util.inArray('task', taskView) >= 0 : taskView,\n        'allday': util.isArray(scheduleView) ? util.inArray('allday', scheduleView) >= 0 : scheduleView,\n        'time': util.isArray(scheduleView) ? util.inArray('time', scheduleView) >= 0 : scheduleView\n    };\n\n    // Make panels by view sequence and visibilities\n    util.forEach(DEFAULT_PANELS, function(panel) {\n        var name = panel.name;\n\n        panel = util.extend({}, panel);\n        panels.push(panel);\n\n        // Change visibilities\n        panel.show = viewVisibilities[name];\n\n        if (panel.show) {\n            if (vpanels.length) {\n                vpanels.push({\n                    isSplitter: true\n                });\n            }\n            vpanels.push(util.extend({}, panel));\n        }\n    });\n\n    if (vpanels.length) {\n        lastVPanel = vpanels[vpanels.length - 1];\n        lastVPanel.autoHeight = true;\n        lastVPanel.maxHeight = null;\n        lastVPanel.showExpandableButton = false;\n\n        util.forEach(panels, function(panel) {\n            if (panel.name === lastVPanel.name) {\n                panel.showExpandableButton = false;\n\n                return false;\n            }\n\n            return true;\n        });\n    }\n\n    util.extend(options.week, {panels: panels});\n\n    weekView = new Week(null, options.week, layoutContainer, panels, viewName);\n    weekView.handler = {\n        click: {},\n        dayname: {},\n        creation: {},\n        move: {},\n        resize: {}\n    };\n\n    dayNameContainer = domutil.appendHTMLElement('div', weekView.container, config.classname('dayname-layout'));\n\n    /**********\n     * Day name (top row(Mon, Tue, Wed...))\n     **********/\n    dayNameView = new DayName(options, dayNameContainer, baseController.theme);\n    weekView.handler.dayname.date = new DayNameClick(dragHandler, dayNameView, baseController);\n    weekView.addChild(dayNameView);\n\n    /**********\n     * Initialize vertical layout module\n     **********/\n    vLayoutContainer = domutil.appendHTMLElement('div', weekView.container, config.classname('vlayout-area'));\n    vLayoutContainer.style.height = (domutil.getSize(weekView.container)[1] - dayNameView.container.offsetHeight) + 'px';\n\n    vLayout = new VLayout({\n        panels: vpanels,\n        panelHeights: options.week.panelHeights || []\n    }, vLayoutContainer, baseController.theme);\n\n    weekView.vLayout = vLayout;\n\n    util.forEach(panels, function(panel) {\n        var name = panel.name;\n        var handlers = panel.handlers;\n        var view;\n\n        if (!panel.show) {\n            return;\n        }\n\n        if (panel.type === 'daygrid') {\n            /**********\n             * Schedule panel by Grid\n             **********/\n            view = new DayGrid(name, options, vLayout.getPanelByName(panel.name).container, baseController.theme);\n            view.on('afterRender', function(viewModel) {\n                vLayout.getPanelByName(name).setHeight(null, viewModel.height);\n            });\n\n            weekView.addChild(view);\n\n            util.forEach(handlers, function(type) {\n                if (!options.isReadOnly || type === 'click') {\n                    weekView.handler[type][name] =\n                        new DAYGRID_HANDLDERS[type](dragHandler, view, baseController, options);\n                    view.addHandler(type, weekView.handler[type][name], vLayout.getPanelByName(name));\n                }\n            });\n        } else if (panel.type === 'timegrid') {\n            /**********\n             * Schedule panel by TimeGrid\n             **********/\n            view = new TimeGrid(name, options, vLayout.getPanelByName(name).container);\n            weekView.addChild(view);\n            util.forEach(handlers, function(type) {\n                if (!options.isReadOnly || type === 'click') {\n                    weekView.handler[type][name] =\n                        new TIMEGRID_HANDLERS[type](dragHandler, view, baseController, options);\n                }\n            });\n\n            view.on('clickTimezonesCollapsedBtn', function() {\n                var timezonesCollapsed = !weekView.state.timezonesCollapsed;\n\n                weekView.setState({\n                    timezonesCollapsed: timezonesCollapsed\n                });\n                reqAnimFrame.requestAnimFrame(function() {\n                    if (!weekView.invoke('clickTimezonesCollapseBtn', timezonesCollapsed)) {\n                        weekView.render();\n                    }\n                });\n            });\n        }\n    });\n\n    vLayout.on('resize', function() {\n        reqAnimFrame.requestAnimFrame(function() {\n            weekView.render();\n        });\n    });\n\n    // binding create schedules event\n    if (options.useCreationPopup) {\n        createView = new ScheduleCreationPopup(layoutContainer, baseController.calendars, options.usageStatistics);\n\n        onSaveNewSchedule = function(scheduleData) {\n            util.extend(scheduleData, {\n                useCreationPopup: true\n            });\n            if (scheduleData.isAllDay) {\n                weekView.handler.creation.allday.fire('beforeCreateSchedule', scheduleData);\n            } else {\n                weekView.handler.creation.time.fire('beforeCreateSchedule', scheduleData);\n            }\n        };\n        createView.on('beforeCreateSchedule', onSaveNewSchedule);\n    }\n\n    onSetCalendars = function(calendars) {\n        if (createView) {\n            createView.setCalendars(calendars);\n        }\n    };\n\n    baseController.on('setCalendars', onSetCalendars);\n\n    // binding popup for schedule detail\n    if (options.useDetailPopup) {\n        detailView = new ScheduleDetailPopup(layoutContainer, baseController.calendars);\n        onShowDetailPopup = function(eventData) {\n            var scheduleId = eventData.schedule.calendarId;\n            eventData.calendar = common.find(baseController.calendars, function(calendar) {\n                return calendar.id === scheduleId;\n            });\n\n            if (options.isReadOnly) {\n                eventData.schedule = util.extend({}, eventData.schedule, {isReadOnly: true});\n            }\n\n            detailView.render(eventData);\n        };\n        onDeleteSchedule = function(eventData) {\n            if (eventData.isAllDay) {\n                weekView.handler.creation.allday.fire('beforeDeleteSchedule', eventData);\n            } else {\n                weekView.handler.creation.time.fire('beforeDeleteSchedule', eventData);\n            }\n        };\n        onEditSchedule = function(eventData) {\n            if (eventData.isAllDay) {\n                weekView.handler.move.allday.fire('beforeUpdateSchedule', eventData);\n            } else {\n                weekView.handler.move.time.fire('beforeUpdateSchedule', eventData);\n            }\n        };\n\n        util.forEach(weekView.handler.click, function(panel) {\n            panel.on('clickSchedule', onShowDetailPopup);\n        });\n        if (options.useCreationPopup) {\n            onShowEditPopup = function(eventData) {\n                var calendars = baseController.calendars;\n                eventData.isEditMode = true;\n                createView.setCalendars(calendars);\n                createView.render(eventData);\n            };\n            createView.on('beforeUpdateSchedule', onEditSchedule);\n            detailView.on('beforeUpdateSchedule', onShowEditPopup);\n        } else {\n            detailView.on('beforeUpdateSchedule', onEditSchedule);\n        }\n        detailView.on('beforeDeleteSchedule', onDeleteSchedule);\n    }\n\n    weekView.on('afterRender', function() {\n        vLayout.refresh();\n    });\n\n    // add controller\n    weekView.controller = baseController.Week;\n\n    // add destroy\n    weekView._beforeDestroy = function() {\n        util.forEach(weekView.handler, function(type) {\n            util.forEach(type, function(handler) {\n                handler.off();\n                handler.destroy();\n            });\n        });\n\n        if (options.useCreationPopup) {\n            createView.off('beforeCreateSchedule', onSaveNewSchedule);\n            createView.destroy();\n        }\n\n        if (options.useDetailPopup) {\n            detailView.off('beforeDeleteSchedule', onDeleteSchedule);\n            detailView.destroy();\n        }\n\n        weekView.off();\n    };\n\n    return {\n        view: weekView,\n        refresh: function() {\n            var weekViewHeight = weekView.getViewBound().height,\n                daynameViewHeight = domutil.getBCRect(\n                    dayNameView.container\n                ).height;\n\n            vLayout.container.style.height =\n                weekViewHeight - daynameViewHeight + 'px';\n            vLayout.refresh();\n        },\n        scrollToNow: function() {\n            weekView.children.each(function(childView) {\n                if (childView.scrollToNow) {\n                    childView.scrollToNow();\n                }\n            });\n        },\n        openCreationPopup: function(schedule) {\n            if (createView) {\n                if (schedule.isAllDay) {\n                    weekView.handler.creation.allday.invokeCreationClick(Schedule.create(schedule));\n                } else {\n                    weekView.handler.creation.time.invokeCreationClick(Schedule.create(schedule));\n                }\n            }\n        },\n        showCreationPopup: function(eventData) {\n            if (createView) {\n                createView.setCalendars(baseController.calendars);\n                createView.render(eventData);\n            }\n        }\n    };\n};\n","/**\n * @fileoverview Click handle module for daygrid schedules\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\nvar util = require('tui-code-snippet');\nvar config = require('../../config');\nvar domutil = require('../../common/domutil');\nvar DayGridMove = require('./move');\n\n/**\n * @constructor\n * @implements {Handler}\n * @mixes CustomEvents\n * @param {Drag} [dragHandler] - Drag handler instance.\n * @param {DayGrid} [view] - daygrid view instance.\n * @param {Base} [controller] - Base controller instance.\n */\nfunction DayGridClick(dragHandler, view, controller) {\n    /**\n     * @type {Drag}\n     */\n    this.dragHandler = dragHandler;\n\n    /**\n     * @type {DayGrid}\n     */\n    this.view = view;\n\n    /**\n     * @type {Base}\n     */\n    this.controller = controller;\n\n    dragHandler.on({\n        'click': this._onClick\n    }, this);\n}\n\n/**\n * Destroy handler module\n */\nDayGridClick.prototype.destroy = function() {\n    this.dragHandler.off(this);\n    this.view = this.controller = this.dragHandler = null;\n};\n\n/**\n * Check target element is expected condition for activate this plugins.\n * @param {HTMLElement} target - The element to check\n * @returns {string} - model id\n */\nDayGridClick.prototype.checkExpectCondition = DayGridMove.prototype.checkExpectedCondition;\n\n/**\n * Click event handler\n * @param {object} clickEvent - click event data\n * @emits DayGridClick#clickSchedule\n * @emits DayGridClick#collapse\n * @emits DayGridClick#expand\n */\nDayGridClick.prototype._onClick = function(clickEvent) {\n    var self = this,\n        target = clickEvent.target,\n        dayGridScheduleView = this.checkExpectCondition(target),\n        scheduleCollection = this.controller.schedules,\n        collapseBtnElement = domutil.closest(\n            target,\n            config.classname('.weekday-collapse-btn')\n        ),\n        expandBtnElement = domutil.closest(\n            target,\n            config.classname('.weekday-exceed-in-week')\n        ),\n        containsTarget = this.view.container.contains(target);\n    var blockElement, scheduleElement;\n\n    if (!containsTarget) {\n        return;\n    }\n\n    if (collapseBtnElement) {\n        /**\n         * click collpase btn event\n         * @events DayGridClick#collapse\n         */\n        self.fire('collapse');\n\n        return;\n    }\n\n    if (expandBtnElement) {\n        this.view.setState({\n            clickedExpandBtnIndex: parseInt(domutil.getData(expandBtnElement, 'index'), 10)\n        });\n\n        /**\n         * click expand btn event\n         * @events DayGridClick#expand\n         */\n        self.fire('expand');\n\n        return;\n    }\n\n    if (!dayGridScheduleView) {\n        return;\n    }\n\n    scheduleElement = domutil.closest(target, config.classname('.weekday-schedule'));\n    if (scheduleElement) {\n        blockElement = domutil.closest(target, config.classname('.weekday-schedule-block'));\n        scheduleCollection.doWhenHas(domutil.getData(blockElement, 'id'), function(schedule) {\n            /**\n             * @events DayGridClick#clickSchedule\n             * @type {object}\n             * @property {Schedule} schedule - schedule instance\n             * @property {MouseEvent} event - MouseEvent object\n             */\n            self.fire('clickSchedule', {\n                schedule: schedule,\n                event: clickEvent.originEvent\n            });\n        });\n    }\n};\n\nutil.CustomEvents.mixin(DayGridClick);\n\nmodule.exports = DayGridClick;\n","/* eslint no-shadow: 0 */\n/**\n * @fileoverview Base mixin object for handler/daygrid\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\nvar util = require('tui-code-snippet');\nvar domutil = require('../../common/domutil');\nvar domevent = require('../../common/domevent');\nvar common = require('../../common/common');\nvar datetime = require('../../common/datetime');\n\nvar mmax = Math.max,\n    mmin = Math.min;\n\n/**\n * @mixin dayGridCore\n */\nvar dayGridCore = {\n    /**\n     * @param {view} view - view instance.\n     * @param {MouseEvent} mouseEvent - mouse schedule object.\n     * @returns {function|boolean} function that return schedule data by mouse events.\n     */\n    _retriveScheduleData: function(view, mouseEvent) {\n        var weekdayView = view.children.single(),\n            container,\n            datesInRange,\n            containerWidth,\n            mousePos,\n            dragStartXIndex,\n            grids,\n            range;\n\n        if (!weekdayView) {\n            return false;\n        }\n\n        container = weekdayView.container;\n        range = weekdayView.getRenderDateRange();\n        datesInRange = range.length;\n        grids = weekdayView.getRenderDateGrids();\n\n        containerWidth = domutil.getSize(container)[0];\n        mousePos = domevent.getMousePosition(mouseEvent, container);\n        dragStartXIndex = getX(grids, common.ratio(containerWidth, 100, mousePos[0]));\n\n        /**\n         * @param {MouseEvent} mouseEvent - mouse schedule in drag actions.\n         * @returns {object} schedule data.\n         */\n        return function(mouseEvent) {\n            var pos = domevent.getMousePosition(mouseEvent, container),\n                mouseX = pos[0],\n                xIndex = getX(grids, common.ratio(containerWidth, 100, mouseX));\n\n            // apply limitation of creation schedule X index.\n            xIndex = mmax(xIndex, 0);\n            xIndex = mmin(xIndex, datesInRange - 1);\n\n            return {\n                relatedView: view,\n                dragStartXIndex: dragStartXIndex,\n                datesInRange: datesInRange,\n                xIndex: xIndex,\n                triggerEvent: mouseEvent.type,\n                grids: grids,\n                range: range\n            };\n        };\n    },\n\n    /**\n     * @param {view} view - view instance.\n     * @param {TZDate} startDate - start date\n     * @returns {object} schedule data by mouse events.\n     */\n    _retriveScheduleDataFromDate: function(view, startDate) {\n        var weekdayView = view.children.single(),\n            xIndex = 0,\n            datesInRange,\n            dragStartXIndex = 0,\n            grids,\n            range;\n\n        if (!weekdayView) {\n            return false;\n        }\n\n        range = weekdayView.getRenderDateRange();\n        datesInRange = range.length;\n        grids = weekdayView.getRenderDateGrids();\n\n        util.forEach(range, function(date, index) {\n            if (datetime.isSameDate(date, startDate)) {\n                xIndex = dragStartXIndex = index;\n            }\n        });\n\n        // apply limitation of creation schedule X index.\n        xIndex = mmax(xIndex, 0);\n        xIndex = mmin(xIndex, datesInRange - 1);\n\n        return {\n            relatedView: view,\n            dragStartXIndex: dragStartXIndex,\n            datesInRange: datesInRange,\n            xIndex: xIndex,\n            triggerEvent: 'manual',\n            grids: grids,\n            range: range\n        };\n    }\n};\n\n/**\n * Get the left index\n * @param {Array} grids - grid size information\n * @param {number} left - left position(percent)\n * @returns {number} grid left index\n */\nfunction getX(grids, left) {\n    var i = 0;\n    var length = grids.length;\n    var grid;\n    if (left < 0) {\n        left = 0;\n    }\n\n    for (; i < length; i += 1) {\n        grid = grids[i];\n        if (grid.left <= left && left <= (grid.left + grid.width)) {\n            return i;\n        }\n    }\n\n    return i;\n}\n\nmodule.exports = dayGridCore;\n","/**\n * @fileoverview Handler module for WeekdayInWeek view's creation actions.\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\nvar util = require('tui-code-snippet');\nvar config = require('../../config');\nvar datetime = require('../../common/datetime');\nvar common = require('../../common/common');\nvar domutil = require('../../common/domutil');\nvar domevent = require('../../common/domevent');\nvar dayGridCore = require('./core');\nvar DayGridCreationGuide = require('./creationGuide');\nvar TZDate = require('../../common/timezone').Date;\n\nvar CLICK_DELAY = 300;\n\n/**\n * @constructor\n * @implements {Handler}\n * @mixes dayGridCore\n * @mixes CutomEvents\n * @param {Drag} [dragHandler] - Drag handler instance.\n * @param {DayGrid} [view] - DayGrid view instance.\n * @param {Base} [controller] - Base controller instance.\n * @param {Options} [options] - calendar Options\n */\nfunction DayGridCreation(dragHandler, view, controller, options) {\n    /**\n     * Drag handler instance.\n     * @type {Drag}\n     */\n    this.dragHandler = dragHandler;\n\n    /**\n     * view instance.\n     * @type {DayGrid}\n     */\n    this.view = view;\n\n    /**\n     * Base controller instance.\n     * @type {Base}\n     */\n    this.controller = controller;\n\n    /**\n     * @type {function}\n     */\n    this.getScheduleDataFunc = null;\n\n    /**\n     * @type {DayGridCreationGuide}\n     */\n    this.guide = new DayGridCreationGuide(this);\n\n    /**\n     * @type {boolean}\n     */\n    this._requestOnClick = false;\n\n    /**\n     * @type {boolean}\n     */\n    this._disableDblClick = options.disableDblClick;\n\n    /**\n     * @type {boolean}\n     */\n    this._disableClick = options.disableClick;\n\n    dragHandler.on('dragStart', this._onDragStart, this);\n    dragHandler.on('click', this._onClick, this);\n\n    if (this._disableDblClick) {\n        CLICK_DELAY = 0;\n    } else {\n        domevent.on(view.container, 'dblclick', this._onDblClick, this);\n    }\n}\n\n/**\n * Destroy method\n */\nDayGridCreation.prototype.destroy = function() {\n    this.guide.destroy();\n    this.dragHandler.off(this);\n\n    if (this.view && this.view.container) {\n        domevent.off(this.view.container, 'dblclick', this._onDblClick, this);\n    }\n\n    this.dragHandler = this.view = this.controller = this.getScheduleDataFunc = null;\n};\n\n/**\n * Check dragstart target is expected conditions for this handler.\n * @param {HTMLElement} target - dragstart event handler's target element.\n * @returns {boolean|WeekdayInWeek} return WeekdayInWeek view instance when satiate condition.\n */\nDayGridCreation.prototype.checkExpectedCondition = function(target) {\n    var cssClass = domutil.getClass(target).trim();\n    var excludeTarget = true;\n    var matches, schedulesElement;\n\n    if (domutil.closest(target, config.classname('.weekday-exceed-in-week'))\n        || domutil.closest(target, config.classname('.weekday-collapse-btn'))\n    ) {\n        return false;\n    }\n\n    if (domutil.closest(target, config.classname('.weekday-schedule-block'), excludeTarget)) {\n        return false;\n    }\n\n    schedulesElement = domutil.closest(target, config.classname('.weekday-schedules'));\n    if (!schedulesElement && cssClass !== config.classname('weekday-schedules')) {\n        return false;\n    }\n\n    target = schedulesElement ? schedulesElement.parentNode : target.parentNode;\n    cssClass = domutil.getClass(target);\n    matches = cssClass.match(config.daygrid.getViewIDRegExp);\n\n    if (!matches || matches.length < 2) {\n        return false;\n    }\n\n    return util.pick(this.view.children.items, matches[1]);\n};\n\n/**\n * Request schedule model creation to controller by custom schedules.\n * @fires {DayGridCreation#beforeCreateSchedule}\n * @param {object} scheduleData - schedule data from DayGridCreation module.\n */\nDayGridCreation.prototype._createSchedule = function(scheduleData) {\n    var dateRange = scheduleData.range,\n        startXIndex = scheduleData.dragStartXIndex,\n        xIndex = scheduleData.xIndex,\n        start, end;\n\n    // when inverse start, end then change it.\n    if (xIndex < startXIndex) {\n        startXIndex = xIndex + startXIndex;\n        xIndex = startXIndex - xIndex;\n        startXIndex = startXIndex - xIndex;\n    }\n\n    start = new TZDate(dateRange[startXIndex]);\n    end = datetime.end(dateRange[xIndex]);\n\n    /**\n     * @event {DayGridCreation#beforeCreateSchedule}\n     * @type {object}\n     * @property {string} category - schedule category\n     * @property {boolean} isAllDay - whether schedule is fired in view area?\n     * @property {Date} start - select start time\n     * @property {Date} end - select end time\n     * @property {DayGridCreationGuide} guide - DayGridCreationGuide instance\n     * @property {string} triggerEventName - event name\n     */\n    this.fire('beforeCreateSchedule', {\n        category: this.view.options.viewName,\n        isAllDay: true,\n        start: start,\n        end: end,\n        guide: this.guide,\n        triggerEventName: scheduleData.triggerEvent\n    });\n};\n\n/**\n * DragStart event handler method.\n * @emits DayGridCreation#dragstart\n * @param {object} dragStartEventData - Drag#dragStart event handler schedule data.\n */\nDayGridCreation.prototype._onDragStart = function(dragStartEventData) {\n    var target = dragStartEventData.target,\n        result = this.checkExpectedCondition(target),\n        getScheduleDataFunc,\n        scheduleData;\n\n    if (!result) {\n        return;\n    }\n\n    this.dragHandler.on({\n        drag: this._onDrag,\n        dragEnd: this._onDragEnd\n    }, this);\n\n    getScheduleDataFunc = this._retriveScheduleData(this.view, dragStartEventData.originEvent);\n    this.getScheduleDataFunc = getScheduleDataFunc;\n\n    scheduleData = getScheduleDataFunc(dragStartEventData.originEvent);\n\n    /**\n     * @event DayGridCreation#dragstart\n     * @type {object}\n     * @property {DayGridView} relatedView - view instance.\n     * @property {number} datesInRange - date count of this view.\n     * @property {number} dragStartXIndex - index number of dragstart grid index.\n     * @property {number} xIndex - index number of mouse positions.\n     */\n    this.fire('dragstart', scheduleData);\n};\n\n/**\n * Drag event handler method.\n * @emits DayGridCreation#drag\n * @param {object} dragEventData - Drag#drag event handler scheduledata.\n */\nDayGridCreation.prototype._onDrag = function(dragEventData) {\n    var getScheduleDataFunc = this.getScheduleDataFunc,\n        scheduleData;\n\n    if (!getScheduleDataFunc) {\n        return;\n    }\n\n    scheduleData = getScheduleDataFunc(dragEventData.originEvent);\n\n    /**\n     * @event DayGridCreation#drag\n     * @type {object}\n     * @property {DayGridView} relatedView - view instance.\n     * @property {number} datesInRange - date count of this view.\n     * @property {number} dragStartXIndex - index number of dragstart grid index.\n     * @property {number} xIndex - index number of mouse positions.\n     */\n    this.fire('drag', scheduleData);\n};\n\n/**\n * DragEnd event hander method.\n * @emits DayGridCreation#dragend\n * @param {object} dragEndEventData - Drag#dragEnd event handler data.\n * @param {string} [overrideEventName] - override emitted event name when supplied.\n */\nDayGridCreation.prototype._onDragEnd = function(dragEndEventData, overrideEventName) {\n    var getScheduleDataFunc = this.getScheduleDataFunc;\n    var scheduleData;\n\n    if (!getScheduleDataFunc) {\n        return;\n    }\n\n    this.dragHandler.off({\n        drag: this._onDrag,\n        dragEnd: this._onDragEnd\n    }, this);\n\n    scheduleData = getScheduleDataFunc(dragEndEventData.originEvent);\n\n    this._createSchedule(scheduleData);\n\n    /**\n     * @event DayGridCreation#dragend\n     * @type {object}\n     * @property {DayGridView} relatedView - view instance.\n     * @property {number} datesInRange - date count of this view.\n     * @property {number} dragStartXIndex - index number of dragstart grid index.\n     * @property {number} xIndex - index number of mouse positions.\n     */\n    this.fire(overrideEventName || 'dragend', scheduleData);\n\n    this.getScheduleDataFunc = null;\n};\n\n/**\n * Click event handler method.\n * @emits DayGridCreation#click\n * @param {object} clickEventData - Drag#click event handler data.\n */\nDayGridCreation.prototype._onClick = function(clickEventData) {\n    var self = this;\n    var getScheduleDataFunc, scheduleData;\n\n    if (!this.checkExpectedCondition(clickEventData.target) || this._disableClick) {\n        return;\n    }\n\n    getScheduleDataFunc = this._retriveScheduleData(this.view, clickEventData.originEvent);\n    scheduleData = getScheduleDataFunc(clickEventData.originEvent);\n\n    this._requestOnClick = true;\n    setTimeout(function() {\n        if (self._requestOnClick) {\n            self.fire('click', scheduleData);\n            self._createSchedule(scheduleData);\n        }\n        self._requestOnClick = false;\n    }, CLICK_DELAY);\n};\n\n/**\n * Dblclick event handler method.\n * @emits DayGridCreation#click\n * @param {object} clickEventData - Drag#Click event handler data.\n */\nDayGridCreation.prototype._onDblClick = function(clickEventData) {\n    var getScheduleDataFunc, scheduleData;\n\n    if (!this.checkExpectedCondition(clickEventData.target)) {\n        return;\n    }\n\n    getScheduleDataFunc = this._retriveScheduleData(this.view, clickEventData);\n    scheduleData = getScheduleDataFunc(clickEventData);\n\n    this.fire('click', scheduleData);\n\n    this._createSchedule(scheduleData);\n\n    this._requestOnClick = false;\n};\n\n/**\n * Invoke creation click\n * @param {Schedule} schedule - schedule instance\n */\nDayGridCreation.prototype.invokeCreationClick = function(schedule) {\n    var scheduleData = this._retriveScheduleDataFromDate(this.view, schedule.start);\n\n    this.fire('click', scheduleData);\n\n    this._createSchedule(scheduleData);\n};\n\ncommon.mixin(dayGridCore, DayGridCreation);\nutil.CustomEvents.mixin(DayGridCreation);\n\nmodule.exports = DayGridCreation;\n","/**\n * @fileoverview Guide element for DayGrid.Creation\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\nvar config = require('../../config');\nvar domutil = require('../../common/domutil');\nvar reqAnimFrame = require('../../common/reqAnimFrame');\n\n/**\n * Class for DayGrid.Creation dragging effect.\n * @constructor\n * @param {DayGridCreation} creation - instance of DayGridCreation.\n */\nfunction DayGridCreationGuide(creation) {\n    /**\n     * @type {DayGridCreation}\n     */\n    this.creation = creation;\n\n    /**\n     * @type {HTMLDIVElement}\n     */\n    this.scheduleContainer = null;\n\n    /**\n     * @type {HTMLDIVElement}\n     */\n    this.guideElement = document.createElement('div');\n\n    this.initializeGuideElement();\n    this.applyTheme(creation.controller.theme);\n\n    creation.on({\n        dragstart: this._createGuideElement,\n        drag: this._onDrag,\n        click: this._createGuideElement\n    }, this);\n}\n\n/**\n * Destroy method\n */\nDayGridCreationGuide.prototype.destroy = function() {\n    this.clearGuideElement();\n    this.creation.off(this);\n    this.creation = this.scheduleContainer = this.guideElement = null;\n};\n\n/**\n * initialize guide element's default style.\n */\nDayGridCreationGuide.prototype.initializeGuideElement = function() {\n    domutil.addClass(this.guideElement, config.classname('daygrid-guide-creation-block'));\n};\n\n/**\n * Drag event handler\n * @param {object} scheduleData - schedule data from DayGrid.Creation handler.\n */\nDayGridCreationGuide.prototype._onDrag = function(scheduleData) {\n    this._refreshGuideElement(scheduleData, true);\n};\n\n/**\n * Get element width based on narrowWeekend\n * @param {number} dragStartIndex - grid start index\n * @param {number} dragEndIndex - grid end index\n * @param {Array} grids - dates information\n * @returns {number} element width\n */\nDayGridCreationGuide.prototype._getGuideWidth = function(dragStartIndex, dragEndIndex, grids) {\n    var width = 0;\n    var i = dragStartIndex;\n    for (; i <= dragEndIndex; i += 1) {\n        width += grids[i] ? grids[i].width : 0;\n    }\n\n    return width;\n};\n\n/**\n * Refresh guide element.\n * @param {object} scheduleData - schedule data from DayGrid.Creation handler.\n * @param {boolean} defer - If set to true, set style in the next frame\n */\nDayGridCreationGuide.prototype._refreshGuideElement = function(scheduleData, defer) {\n    var guideElement = this.guideElement,\n        data = scheduleData,\n        dragStartXIndex = data.dragStartXIndex < data.xIndex ? data.dragStartXIndex : data.xIndex,\n        dragEndXIndex = data.dragStartXIndex < data.xIndex ? data.xIndex : data.dragStartXIndex,\n        leftPercent,\n        widthPercent;\n\n    leftPercent = data.grids[dragStartXIndex] ? data.grids[dragStartXIndex].left : 0;\n    widthPercent = this._getGuideWidth(dragStartXIndex, dragEndXIndex, data.grids);\n\n    /** eslint-disable require-jsdoc */\n    function setStyle() {\n        guideElement.style.display = 'block';\n        guideElement.style.left = leftPercent + '%';\n        guideElement.style.width = widthPercent + '%';\n    }\n\n    if (defer) {\n        reqAnimFrame.requestAnimFrame(setStyle);\n    } else {\n        setStyle();\n    }\n};\n\n/**\n * Clear guide element.\n */\nDayGridCreationGuide.prototype.clearGuideElement = function() {\n    var guideElement = this.guideElement;\n\n    domutil.remove(guideElement);\n\n    guideElement.style.display = 'none';\n    guideElement.style.left = '';\n    guideElement.style.width = '';\n};\n\n/**\n * Create guide element\n * @param {object} dragStartEventData - schedule data object of DayGrid.Creation.\n */\nDayGridCreationGuide.prototype._createGuideElement = function(dragStartEventData) {\n    var creation = this.creation,\n        view = creation.view,\n        container = view.container,\n        scheduleContainer = domutil.find(config.classname('.weekday-grid'), container);\n\n    scheduleContainer.appendChild(this.guideElement);\n    this._refreshGuideElement(dragStartEventData);\n};\n\n/**\n * Drag event handler.\n * @param {object} dragEventData - event data object of DayGrid.Creation.\n */\nDayGridCreationGuide.prototype._onDrag = function(dragEventData) {\n    this._refreshGuideElement(dragEventData);\n};\n\nDayGridCreationGuide.prototype.applyTheme = function(theme) {\n    var style = this.guideElement.style;\n\n    style.backgroundColor = theme.common.creationGuide.backgroundColor;\n    style.border = theme.common.creationGuide.border;\n};\n\nmodule.exports = DayGridCreationGuide;\n","/**\n * @fileoverview Move handler for DayGrid view.\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\nvar util = require('tui-code-snippet');\nvar config = require('../../config');\nvar common = require('../../common/common');\nvar domutil = require('../../common/domutil');\nvar dayGridCore = require('./core');\nvar DayGridMoveGuide = require('./moveGuide');\nvar TZDate = require('../../common/timezone').Date;\n\n/**\n * @constructor\n * @implements {Handler}\n * @mixes dayGridCore\n * @mixes CustomEvents\n * @param {Drag} dragHandler - Drag handler instance.\n * @param {DayGrid} view - view instance.\n * @param {Base} controller - Base controller instance.\n */\nfunction DayGridMove(dragHandler, view, controller) {\n    /**\n     * Drag handler instance.\n     * @type {Drag}\n     */\n    this.dragHandler = dragHandler;\n\n    /**\n     * view instance.\n     * @type {DayGrid}\n     */\n    this.view = view;\n\n    /**\n     * Base controller instance.\n     * @type {Base}\n     */\n    this.controller = controller;\n\n    /**\n     * Temporary variable for dragstart event data.\n     * @type {object}\n     */\n    this._dragStart = null;\n\n    dragHandler.on({\n        dragStart: this._onDragStart\n    }, this);\n\n    /**\n     * @type {DayGridMoveGuide}\n     */\n    this.guide = new DayGridMoveGuide(this);\n}\n\nDayGridMove.prototype.destroy = function() {\n    this.guide.destroy();\n    this.dragHandler.off(this);\n    this.dragHandler = this.view = this.controller =\n        this.guide = this._dragStart = null;\n};\n\n/**\n * Check dragstart target is expected conditions for this handler.\n * @param {HTMLElement} target - dragstart event handler's target element.\n * @returns {boolean|DayGridSchedule} return DayGridSchedule view instance when satiate condition.\n */\nDayGridMove.prototype.checkExpectedCondition = function(target) {\n    var cssClass = domutil.getClass(target),\n        parentView,\n        matches;\n\n    if (~cssClass.indexOf(config.classname('weekday-resize-handle'))) {\n        return false;\n    }\n\n    parentView = domutil.closest(target, config.classname('.weekday'));\n\n    if (!parentView) {\n        return false;\n    }\n\n    cssClass = domutil.getClass(parentView);\n    matches = cssClass.match(config.daygrid.getViewIDRegExp);\n\n    if (!matches || matches.length < 2) {\n        return false;\n    }\n\n    return util.pick(this.view.children.items, matches[1]);\n};\n\n/**\n * DragStart event handler method.\n * @emits DayGridMove#dragstart\n * @param {object} dragStartEventData - Drag#dragStart event handler event data.\n */\nDayGridMove.prototype._onDragStart = function(dragStartEventData) {\n    var target = dragStartEventData.target,\n        result = this.checkExpectedCondition(target),\n        controller = this.controller,\n        excludeTarget = true,\n        scheduleBlockElement,\n        modelID,\n        targetModel,\n        getScheduleDataFunc,\n        scheduleData;\n\n    if (!result) {\n        return;\n    }\n\n    scheduleBlockElement = domutil.closest(target, config.classname('.weekday-schedule-block'), excludeTarget);\n    if (!scheduleBlockElement) {\n        return;\n    }\n\n    modelID = domutil.getData(scheduleBlockElement, 'id');\n    targetModel = controller.schedules.items[modelID];\n\n    if (!targetModel) {\n        return;\n    }\n\n    if (targetModel.isReadOnly) {\n        return;\n    }\n\n    getScheduleDataFunc = this._retriveScheduleData(this.view, dragStartEventData.originEvent);\n    this.getScheduleDataFunc = getScheduleDataFunc;\n    scheduleData = this._dragStart = getScheduleDataFunc(dragStartEventData.originEvent);\n\n    util.extend(scheduleData, {\n        scheduleBlockElement: scheduleBlockElement,\n        model: targetModel\n    });\n\n    this.dragHandler.on({\n        drag: this._onDrag,\n        dragEnd: this._onDragEnd,\n        click: this._onClick\n    }, this);\n\n    /**\n     * @event DayGridMove#dragstart\n     * @type {object}\n     * @property {DayGrid} relatedView - view instance.\n     * @property {number} datesInRange - date count of this view.\n     * @property {number} dragStartXIndex - index number of dragstart grid index.\n     * @property {number} xIndex - index number of mouse positions.\n     * @property {Schedule} model - data object of model isntance.\n     * @property {HTMLDivElement} scheduleBlockElement - target schedule block element.\n     */\n    this.fire('dragstart', scheduleData);\n};\n\n/**\n * Drag event handler method.\n * @emits DayGridMove#drag\n * @param {object} dragEventData - Drag#drag event handler eventdata.\n */\nDayGridMove.prototype._onDrag = function(dragEventData) {\n    var getScheduleDataFunc = this.getScheduleDataFunc;\n\n    if (!getScheduleDataFunc) {\n        return;\n    }\n\n    /**\n     * @schedule DayGridMove#drag\n     * @type {object}\n     * @property {DayGrid} relatedView - view instance.\n     * @property {number} datesInRange - date count of this view.\n     * @property {number} dragStartXIndex - index number of dragstart grid index.\n     * @property {number} xIndex - index number of mouse positions.\n     */\n    this.fire('drag', getScheduleDataFunc(dragEventData.originEvent));\n};\n\n/**\n * Request update schedule model to base controller.\n * @fires DayGridMove#beforeUpdateSchedule\n * @param {object} scheduleData - schedule data from DayGridMove handler module.\n */\nDayGridMove.prototype._updateSchedule = function(scheduleData) {\n    var schedule = scheduleData.targetModel,\n        dateOffset = scheduleData.xIndex - scheduleData.dragStartXIndex,\n        newStarts = new TZDate(schedule.start),\n        newEnds = new TZDate(schedule.end);\n\n    newStarts = newStarts.addDate(dateOffset);\n    newEnds = newEnds.addDate(dateOffset);\n\n    /**\n     * @event DayGridMove#beforeUpdateSchedule\n     * @type {object}\n     * @property {Schedule} schedule - The original schedule instance\n     * @property {Date} start - Deprecated: start time to update\n     * @property {Date} end - Deprecated: end time to update\n     * @property {object} changes - start and end time to update\n     *  @property {Date} start - start time to update\n     *  @property {Date} end - end time to update\n     */\n    this.fire('beforeUpdateSchedule', {\n        schedule: schedule,\n        changes: {\n            start: newStarts,\n            end: newEnds\n        },\n        start: newStarts,\n        end: newEnds\n    });\n};\n\n/**\n * DragEnd event hander method.\n * @emits DayGridMove#dragend\n * @param {object} dragEndEventData - Drag#DragEnd event handler data.\n * @param {string} [overrideEventName] - override emitted event name when supplied.\n * @param {?boolean} skipUpdate - true then skip update schedule model.\n */\nDayGridMove.prototype._onDragEnd = function(dragEndEventData, overrideEventName, skipUpdate) {\n    var getScheduleDataFunc = this.getScheduleDataFunc,\n        dragStart = this._dragStart,\n        scheduleData;\n\n    if (!getScheduleDataFunc || !dragStart) {\n        return;\n    }\n\n    this.dragHandler.off({\n        drag: this._onDrag,\n        dragEnd: this._onDragEnd,\n        click: this._onClick\n    }, this);\n\n    scheduleData = getScheduleDataFunc(dragEndEventData.originEvent);\n    util.extend(scheduleData, {\n        targetModel: dragStart.model\n    });\n\n    if (!skipUpdate) {\n        this._updateSchedule(scheduleData);\n    }\n\n    /**\n     * @event DayGridMove#dragend\n     * @type {object}\n     * @property {DayGrid} relatedView - view instance.\n     * @property {number} datesInRange - date count of this view.\n     * @property {number} dragStartXIndex - index number of dragstart grid index.\n     * @property {number} xIndex - index number of mouse positions.\n     */\n    this.fire(overrideEventName || 'dragend', scheduleData);\n\n    this.getScheduleDataFunc = this._dragStart = null;\n};\n\n/**\n * Click event handler method.\n * @emits DayGridMove#click\n * @param {object} clickEventData - Drag#Click event handler data.\n */\nDayGridMove.prototype._onClick = function(clickEventData) {\n    /**\n     * @event DayGridMove#click\n     * @type {object}\n     * @property {DayGrid} relatedView - view instance.\n     * @property {number} datesInRange - date count of this view.\n     * @property {number} dragStartXIndex - index number of dragstart grid index.\n     * @property {number} xIndex - index number of mouse positions.\n     */\n    this._onDragEnd(clickEventData, 'click', true);\n};\n\ncommon.mixin(dayGridCore, DayGridMove);\nutil.CustomEvents.mixin(DayGridMove);\n\nmodule.exports = DayGridMove;\n","/**\n * @fileoverview Effect module for DayGrid.Move\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\nvar util = require('tui-code-snippet');\nvar config = require('../../config');\nvar datetime = require('../../common/datetime');\nvar domutil = require('../../common/domutil');\nvar reqAnimFrame = require('../../common/reqAnimFrame');\n\n/**\n * Class for DayGrid.Move dragging effect.\n * @constructor\n * @param {DayGridMove} daygridMove - instance of DayGridMove.\n */\nfunction DayGridMoveGuide(daygridMove) {\n    /**\n     * @type {DayGridMove}\n     */\n    this.daygridMove = daygridMove;\n\n    /**\n     * The element that actually contains the event element\n     * @type {HTMLDIVElement}\n     */\n    this.scheduleContainer = null;\n\n    /**\n     * @type {number}\n     */\n    this._dragStartXIndex = null;\n\n    /**\n     * @type {HTMLDIVElement}\n     */\n    this.guideElement = null;\n\n    /**\n     * @type {HTMLElement[]}\n     */\n    this.elements = null;\n\n    daygridMove.on({\n        'dragstart': this._onDragStart,\n        'drag': this._onDrag,\n        'dragend': this._clearGuideElement,\n        'click': this._clearGuideElement\n    }, this);\n}\n\n/**\n * Destroy method\n */\nDayGridMoveGuide.prototype.destroy = function() {\n    this._clearGuideElement();\n    this.daygridMove.off(this);\n    this.daygridMove = this.scheduleContainer = this._dragStartXIndex =\n        this.elements = this.guideElement = null;\n};\n\n/**\n * Clear guide element.\n */\nDayGridMoveGuide.prototype._clearGuideElement = function() {\n    this._showOriginScheduleBlocks();\n\n    domutil.remove(this.guideElement);\n\n    if (!util.browser.msie) {\n        domutil.removeClass(global.document.body, config.classname('dragging'));\n    }\n\n    this._dragStartXIndex = this.getScheduleDataFunc = this.guideElement = null;\n};\n\n/**\n * Dim element blocks\n * @param {number} modelID - Schedule model instance ID\n */\nDayGridMoveGuide.prototype._hideOriginScheduleBlocks = function(modelID) {\n    var className = config.classname('weekday-schedule-block-dragging-dim');\n    var scheduleBlocks = domutil.find(\n        config.classname('.weekday-schedule-block'),\n        this.daygridMove.view.container,\n        true\n    );\n\n    this.elements = util.filter(scheduleBlocks, function(schedule) {\n        return domutil.getData(schedule, 'id') === modelID;\n    });\n\n    util.forEach(this.elements, function(el) {\n        domutil.addClass(el, className);\n    });\n};\n\n/**\n * Show element blocks\n */\nDayGridMoveGuide.prototype._showOriginScheduleBlocks = function() {\n    var className = config.classname('weekday-schedule-block-dragging-dim');\n\n    util.forEach(this.elements, function(el) {\n        domutil.removeClass(el, className);\n    });\n};\n\n/**\n * Highlight element blocks\n * @param {Schedule} model - model\n * @param {HTMLElement} parent - parent element\n */\nDayGridMoveGuide.prototype._highlightScheduleBlocks = function(model, parent) {\n    var elements = domutil.find(config.classname('.weekday-schedule'), parent, true);\n\n    util.forEach(elements, function(el) {\n        el.style.margin = '0';\n\n        if (!model.isFocused) {\n            el.style.backgroundColor = model.dragBgColor;\n            el.style.borderLeftColor = model.borderColor;\n            el.style.color = '#ffffff';\n        }\n    });\n};\n\n/**\n * Refresh guide element.\n * @param {number} leftPercent - left percent of guide element.\n * @param {number} widthPercent - width percent of guide element.\n * @param {boolean} isExceededLeft - schedule start is faster then render start date?\n * @param {boolean} isExceededRight - schedule end is later then render end date?\n */\nDayGridMoveGuide.prototype.refreshGuideElement = function(leftPercent, widthPercent, isExceededLeft, isExceededRight) {\n    var guideElement = this.guideElement;\n\n    reqAnimFrame.requestAnimFrame(function() {\n        guideElement.style.left = leftPercent + '%';\n        guideElement.style.width = widthPercent + '%';\n\n        if (isExceededLeft) {\n            domutil.addClass(guideElement, config.classname('weekday-exceed-left'));\n        } else {\n            domutil.removeClass(guideElement, config.classname('weekday-exceed-left'));\n        }\n\n        if (isExceededRight) {\n            domutil.addClass(guideElement, config.classname('weekday-exceed-right'));\n        } else {\n            domutil.removeClass(guideElement, config.classname('weekday-exceed-right'));\n        }\n    });\n};\n\n/**\n * Get schedule block information from schedule data.\n *\n * For example, there is single schedule has 10 length. but render range in view is 5 then\n * rendered block must be cut out to render properly. in this case, this method return\n * how many block are cut before rendering.\n *\n * @param {object} dragStartEventData - schedule data from DayGrid.Move handler.\n * @returns {function} function that return schedule block information.\n */\nDayGridMoveGuide.prototype._getScheduleBlockDataFunc = function(dragStartEventData) {\n    var model = dragStartEventData.model,\n        datesInRange = dragStartEventData.datesInRange,\n        range = dragStartEventData.range,\n        baseWidthPercent = (100 / datesInRange),\n        originScheduleStarts = datetime.start(model.start),\n        originScheduleEnds = datetime.end(model.end),\n        renderStartDate = datetime.start(range[0]),\n        renderEndDate = datetime.end(range[range.length - 1]),\n        fromLeft = Math.ceil((originScheduleStarts.getTime() -\n            renderStartDate.getTime()) / datetime.MILLISECONDS_PER_DAY) || 0,\n        fromRight = Math.ceil((originScheduleEnds.getTime() -\n            renderEndDate.getTime()) / datetime.MILLISECONDS_PER_DAY) || 0;\n\n    return function(indexOffset) {\n        return {\n            baseWidthPercent: baseWidthPercent,\n            fromLeft: fromLeft + indexOffset,\n            fromRight: fromRight + indexOffset\n        };\n    };\n};\n\n/**\n * DragStart event handler.\n * @param {object} dragStartEventData - schedule data.\n */\nDayGridMoveGuide.prototype._onDragStart = function(dragStartEventData) {\n    var container = this.daygridMove.view.container,\n        guideElement = this.guideElement = dragStartEventData.scheduleBlockElement.cloneNode(true),\n        scheduleContainer;\n\n    if (!util.browser.msie) {\n        domutil.addClass(global.document.body, config.classname('dragging'));\n    }\n\n    this._hideOriginScheduleBlocks(String(dragStartEventData.model.cid()));\n\n    scheduleContainer = domutil.find(config.classname('.weekday-schedules'), container);\n    domutil.appendHTMLElement('div', guideElement, config.classname('weekday-schedule-cover'));\n    scheduleContainer.appendChild(guideElement);\n\n    this._dragStartXIndex = dragStartEventData.xIndex;\n    this.getScheduleDataFunc = this._getScheduleBlockDataFunc(dragStartEventData);\n\n    this._highlightScheduleBlocks(dragStartEventData.model, guideElement);\n};\n\n/**\n * Drag event handler.\n * @param {object} dragEventData - schedule data.\n */\nDayGridMoveGuide.prototype._onDrag = function(dragEventData) {\n    var getScheduleDataFunc = this.getScheduleDataFunc,\n        dragStartXIndex = this._dragStartXIndex,\n        datesInRange = dragEventData.datesInRange,\n        grids = dragEventData.grids,\n        scheduleData,\n        isExceededLeft,\n        isExceededRight,\n        originLength,\n        leftIndex,\n        size,\n        newLeft,\n        newWidth;\n\n    if (!getScheduleDataFunc) {\n        return;\n    }\n\n    scheduleData = getScheduleDataFunc(dragEventData.xIndex - dragStartXIndex);\n    isExceededLeft = scheduleData.fromLeft < 0;\n    isExceededRight = scheduleData.fromRight > 0;\n\n    leftIndex = Math.max(0, scheduleData.fromLeft);\n    originLength = (scheduleData.fromLeft * -1) + (datesInRange + scheduleData.fromRight);\n    size = isExceededLeft ? (originLength + scheduleData.fromLeft) : originLength;\n    size = isExceededRight ? (size - scheduleData.fromRight) : size;\n\n    newLeft = grids[leftIndex] ? grids[leftIndex].left : 0;\n    newWidth = getScheduleBlockWidth(leftIndex, size, grids);\n\n    this.refreshGuideElement(newLeft, newWidth, isExceededLeft, isExceededRight);\n};\n\n/**\n * Get schedule width based on grids\n * @param {number} left - left index\n * @param {number} size - schedule width\n * @param {Array} grids - dates information\n * @returns {number} element width\n */\nfunction getScheduleBlockWidth(left, size, grids) {\n    var width = 0;\n    var i = 0;\n    var length = grids.length;\n    for (; i < size; i += 1) {\n        left = (left + i) % length;\n        if (left < length) {\n            width += grids[left] ? grids[left].width : 0;\n        }\n    }\n\n    return width;\n}\n\nmodule.exports = DayGridMoveGuide;\n","/**\n * @fileoverview Resize handler module for DayGrid view.\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\nvar util = require('tui-code-snippet');\nvar config = require('../../config');\nvar datetime = require('../../common/datetime');\nvar domutil = require('../../common/domutil');\nvar common = require('../../common/common');\nvar dayGridCore = require('./core');\nvar DayGridResizeGuide = require('./resizeGuide');\nvar TZDate = require('../../common/timezone').Date;\n\n/**\n * @constructor\n * @implements {Handler}\n * @mixes dayGridCore\n * @mixes CustomEvents\n * @param {Drag} [dragHandler] - Drag handler instance.\n * @param {DayGrid} [view] - view instance.\n * @param {Base} [controller] - Base controller instance.\n */\nfunction DayGridResize(dragHandler, view, controller) {\n    /**\n     * Drag handler instance.\n     * @type {Drag}\n     */\n    this.dragHandler = dragHandler;\n\n    /**\n     * view instance.\n     * @type {DayGrid}\n     */\n    this.view = view;\n\n    /**\n     * Base controller instance.\n     * @type {Base}\n     */\n    this.controller = controller;\n\n    /**\n     * Temporary variable for dragStart event data.\n     * @type {object}\n     */\n    this._dragStart = null;\n\n    dragHandler.on({\n        dragStart: this._onDragStart\n    }, this);\n\n    /**\n     * @type {DayGridResizeGuide}\n     */\n    this.guide = new DayGridResizeGuide(this);\n}\n\n/**\n * Destroy method\n */\nDayGridResize.prototype.destroy = function() {\n    this.guide.destroy();\n    this.dragHandler.off(this);\n    this.dragHandler = this.view = this.controller =\n        this.guide = this._dragStart = null;\n};\n\n/**\n * Check dragstart target is expected conditions for this handler.\n * @param {HTMLElement} target - dragstart event handler's target element.\n * @returns {boolean|WeekdayInWeek} return WeekdayInWeek view instance when satiate condition.\n */\nDayGridResize.prototype.checkExpectedCondition = function(target) {\n    var cssClass = domutil.getClass(target),\n        matches;\n\n    if (!~cssClass.indexOf(config.classname('weekday-resize-handle'))) {\n        return false;\n    }\n\n    target = domutil.closest(target, config.classname('.weekday'));\n\n    if (!target) {\n        return false;\n    }\n\n    cssClass = domutil.getClass(target);\n    matches = cssClass.match(config.daygrid.getViewIDRegExp);\n\n    if (!matches || matches.length < 2) {\n        return false;\n    }\n\n    return util.pick(this.view.children.items, matches[1]);\n};\n\n/**\n * DragStart event handler.\n * @emits DayGridResize#dragstart\n * @param {object} dragStartEventData - schedule data.\n */\nDayGridResize.prototype._onDragStart = function(dragStartEventData) {\n    var target = dragStartEventData.target,\n        result = this.checkExpectedCondition(target),\n        controller = this.controller,\n        scheduleBlockElement,\n        modelID,\n        targetModel,\n        getScheduleDataFunc,\n        scheduleData;\n\n    if (!result) {\n        return;\n    }\n\n    scheduleBlockElement = domutil.closest(target, config.classname('.weekday-schedule-block'));\n    modelID = domutil.getData(scheduleBlockElement, 'id');\n    targetModel = controller.schedules.items[modelID];\n\n    if (!targetModel) {\n        return;\n    }\n\n    getScheduleDataFunc = this._retriveScheduleData(this.view, dragStartEventData.originEvent);\n    this.getScheduleDataFunc = getScheduleDataFunc;\n    scheduleData = this._dragStart = getScheduleDataFunc(dragStartEventData.originEvent);\n\n    util.extend(scheduleData, {\n        scheduleBlockElement: scheduleBlockElement,\n        model: targetModel\n    });\n\n    this.dragHandler.on({\n        drag: this._onDrag,\n        dragEnd: this._onDragEnd,\n        click: this._onClick\n    }, this);\n\n    /**\n     * @event DayGridResize#dragstart\n     * @type {object}\n     * @property {View} relatedView - view instance.\n     * @property {number} datesInRange - date count of this view.\n     * @property {number} dragStartXIndex - index number of dragstart grid index.\n     * @property {number} xIndex - index number of mouse positions.\n     * @property {Schedule} model - data object of model isntance.\n     * @property {HTMLDivElement} scheduleBlockElement - target schedule block element.\n     */\n    this.fire('dragstart', scheduleData);\n};\n\n/**\n * Drag event handler method.\n * @emits DayGridResize#drag\n * @param {object} dragEventData - Drag#drag event handler scheduledata.\n */\nDayGridResize.prototype._onDrag = function(dragEventData) {\n    var getScheduleDataFunc = this.getScheduleDataFunc;\n\n    if (!getScheduleDataFunc) {\n        return;\n    }\n\n    /**\n     * @event DayGridResize#drag\n     * @type {object}\n     * @property {View} relatedView - view instance.\n     * @property {number} datesInRange - date count of this view.\n     * @property {number} dragStartXIndex - index number of dragstart grid index.\n     * @property {number} xIndex - index number of mouse positions.\n     */\n    this.fire('drag', getScheduleDataFunc(dragEventData.originEvent));\n};\n\n/**\n * Request update schedule instance to base controller.\n * @fires DayGridResize#beforeUpdateSchedule\n * @param {object} scheduleData - schedule data from DayGridResize handler.\n */\nDayGridResize.prototype._updateSchedule = function(scheduleData) {\n    var schedule = scheduleData.targetModel,\n        dateOffset = scheduleData.xIndex - scheduleData.dragStartXIndex,\n        newEnds = new TZDate(schedule.end);\n    var changes;\n\n    newEnds = newEnds.addDate(dateOffset);\n    newEnds = new TZDate(common.maxDate(datetime.end(schedule.start), newEnds));\n\n    changes = common.getScheduleChanges(\n        schedule,\n        ['end'],\n        {end: newEnds}\n    );\n\n    /**\n     * @event DayGridResize#beforeUpdateSchedule\n     * @type {object}\n     * @property {Schedule} schedule - The original schedule instance\n     * @property {Date} start - Deprecated: start time to update\n     * @property {Date} end - Deprecated: end time to update\n     * @property {object} changes - end time to update\n     *  @property {date} end - end time to update\n     */\n    this.fire('beforeUpdateSchedule', {\n        schedule: schedule,\n        changes: changes,\n        start: schedule.getStarts(),\n        end: newEnds\n    });\n};\n\n/**\n * DragEnd event hander method.\n * @emits DayGridResize#dragend\n * @param {object} dragEndEventData - Drag#DragEnd event handler data.\n * @param {string} [overrideEventName] - override emitted event name when supplied.\n * @param {?boolean} skipUpdate - true then skip update schedule model.\n */\nDayGridResize.prototype._onDragEnd = function(dragEndEventData, overrideEventName, skipUpdate) {\n    var getScheduleDataFunc = this.getScheduleDataFunc,\n        dragStart = this._dragStart,\n        scheduleData;\n\n    if (!getScheduleDataFunc || !dragStart) {\n        return;\n    }\n\n    this.dragHandler.off({\n        drag: this._onDrag,\n        dragEnd: this._onDragEnd,\n        click: this._onClick\n    }, this);\n\n    scheduleData = getScheduleDataFunc(dragEndEventData.originEvent);\n    util.extend(scheduleData, {\n        targetModel: dragStart.model\n    });\n\n    if (!skipUpdate) {\n        this._updateSchedule(scheduleData);\n    }\n\n    /**\n     * @event DayGridResize#dragend\n     * @type {object}\n     * @property {View} relatedView - view instance.\n     * @property {number} datesInRange - date count of this view.\n     * @property {number} dragStartXIndex - index number of dragstart grid index.\n     * @property {number} xIndex - index number of mouse positions.\n     */\n    this.fire(overrideEventName || 'dragend', scheduleData);\n\n    this.getScheduleDataFunc = this._dragStart = null;\n};\n\n/**\n * Click event handler method.\n * @emits DayGridResize#click\n * @param {object} clickEventData - Drag#Click event handler data.\n */\nDayGridResize.prototype._onClick = function(clickEventData) {\n    /**\n     * @event DayGridResize#click\n     * @type {object}\n     * @property {View} relatedView - view instance.\n     * @property {number} datesInRange - date count of this view.\n     * @property {number} dragStartXIndex - index number of dragstart grid index.\n     * @property {number} xIndex - index number of mouse positions.\n     */\n    this._onDragEnd(clickEventData, 'click', true);\n};\n\ncommon.mixin(dayGridCore, DayGridResize);\nutil.CustomEvents.mixin(DayGridResize);\n\nmodule.exports = DayGridResize;\n","/**\n * @fileoverview Resize Guide module.\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\nvar util = require('tui-code-snippet');\nvar config = require('../../config');\nvar domutil = require('../../common/domutil');\nvar datetime = require('../../common/datetime');\nvar reqAnimFrame = require('../../common/reqAnimFrame');\n\n/**\n * @constructor\n * @param {DayGridResize} resizeHandler - instance of DayGridResize\n */\nfunction DayGridResizeGuide(resizeHandler) {\n    /**\n     * @type {DayGridResize}\n     */\n    this.resizeHandler = resizeHandler;\n\n    /**\n     * The element that actually contains the event element\n     * @type {HTMLDIVElement}\n     */\n    this.scheduleContainer = null;\n\n    /**\n     * @type {function}\n     */\n    this.getScheduleDataFunc = null;\n\n    /**\n     * @type {HTMLDIVElement}\n     */\n    this.guideElement = null;\n\n    /**\n     * @type {HTMLDIVElement}\n     */\n    this.scheduleBlockElement = null;\n\n    resizeHandler.on({\n        'dragstart': this._onDragStart,\n        'drag': this._onDrag,\n        'dragend': this._clearGuideElement,\n        'click': this._clearGuideElement\n    }, this);\n}\n\n/**\n * Destroy method\n */\nDayGridResizeGuide.prototype.destroy = function() {\n    this._clearGuideElement();\n    this.resizeHandler.off(this);\n    this.resizeHandler = this.scheduleContainer = this.getScheduleDataFunc =\n        this.guideElement = this.scheduleBlockElement = null;\n};\n\n/**\n * Clear guide element.\n */\nDayGridResizeGuide.prototype._clearGuideElement = function() {\n    domutil.remove(this.guideElement);\n\n    if (!util.browser.msie) {\n        domutil.removeClass(global.document.body, config.classname('resizing-x'));\n    }\n\n    if (this.scheduleBlockElement) {\n        domutil.removeClass(this.scheduleBlockElement, config.classname('weekday-schedule-block-dragging-dim'));\n    }\n\n    this.getScheduleDataFunc = null;\n};\n\n/**\n * Refresh guide element\n * @param {number} newWidth - new width percentage value to resize guide element.\n */\nDayGridResizeGuide.prototype.refreshGuideElement = function(newWidth) {\n    var guideElement = this.guideElement;\n\n    reqAnimFrame.requestAnimFrame(function() {\n        guideElement.style.width = newWidth + '%';\n    });\n};\n\n/**\n * Return function that calculate guide element's new width percentage value.\n * @param {object} dragStartEventData - dragstart schedule data.\n * @returns {function} return function that calculate guide element new width percentage.\n */\nDayGridResizeGuide.prototype.getGuideElementWidthFunc = function(dragStartEventData) {\n    var model = dragStartEventData.model,\n        viewOptions = this.resizeHandler.view.options,\n        fromLeft = Math.ceil(\n            (model.start - viewOptions.renderStartDate) / datetime.MILLISECONDS_PER_DAY\n        ) || 0,\n        grids = dragStartEventData.grids;\n\n    return function(xIndex) {\n        var width = 0;\n        var i = 0;\n        var length = grids.length;\n        width += grids[fromLeft] ? grids[fromLeft].width : 0;\n\n        for (; i < length; i += 1) {\n            if (i > fromLeft && i <= xIndex) {\n                width += grids[i] ? grids[i].width : 0;\n            }\n        }\n\n        return width;\n    };\n};\n\n/**\n * DragStart event handler.\n * @param {object} dragStartEventData - schedule data.\n */\nDayGridResizeGuide.prototype._onDragStart = function(dragStartEventData) {\n    var container = this.resizeHandler.view.container,\n        scheduleBlockElement = this.scheduleBlockElement = dragStartEventData.scheduleBlockElement,\n        guideElement = this.guideElement = scheduleBlockElement.cloneNode(true),\n        scheduleContainer;\n\n    if (!util.browser.msie) {\n        domutil.addClass(global.document.body, config.classname('resizing-x'));\n    }\n\n    scheduleContainer = domutil.find(config.classname('.weekday-schedules'), container);\n    domutil.addClass(guideElement, config.classname('daygrid-guide-move'));\n    domutil.addClass(scheduleBlockElement, config.classname('weekday-schedule-block-dragging-dim'));\n\n    scheduleContainer.appendChild(guideElement);\n\n    this.getScheduleDataFunc = this.getGuideElementWidthFunc(dragStartEventData);\n};\n\n/**\n * Drag event handler.\n * @param {object} dragEventData - schedule data.\n */\nDayGridResizeGuide.prototype._onDrag = function(dragEventData) {\n    var func = this.getScheduleDataFunc;\n\n    if (!func) {\n        return;\n    }\n\n    this.refreshGuideElement(func(dragEventData.xIndex));\n};\n\nmodule.exports = DayGridResizeGuide;\n","/**\n * @fileoverview Drag handler for calendar.\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\nvar util = require('tui-code-snippet');\nvar domutil = require('../common/domutil');\nvar domevent = require('../common/domevent');\nvar config = require('../config');\n\n/**\n * @constructor\n * @mixes CustomEvents\n * @param {object} options - options for drag handler\n * @param {number} [options.distance=10] - distance in pixels after mouse must move before dragging should start\n * @param {function} [options.exclude] - filter function for don't fire drag events that specific conditions.\n * @param {HTMLElement} container element to watching drag interaction.\n */\nfunction Drag(options, container) {\n    domevent.on(container, 'mousedown', this._onMouseDown, this);\n\n    this.options = util.extend({\n        distance: 10,\n        exclude: null\n    }, options);\n\n    /**\n     * @type {HTMLElement}\n     */\n    this.container = container;\n\n    /**\n     * Flag for represent current dragging session has been cancelled for exclude option.\n     * @type {boolean}\n     */\n    this._cancelled = false;\n\n    /**\n     * @type {boolean}\n     */\n    this._isMoved = false;\n\n    /**\n     * dragging distance in pixel between mousedown and firing dragStart events\n     * @type {number}\n     */\n    this._distance = 0;\n\n    /**\n     * @type {boolean}\n     */\n    this._dragStartFired = false;\n\n    /**\n     * @type {object}\n     */\n    this._dragStartEventData = null;\n}\n\n/**\n * Destroy method.\n */\nDrag.prototype.destroy = function() {\n    domevent.off(this.container, 'mousedown', this._onMouseDown, this);\n    this._isMoved = null;\n    this.container = null;\n};\n\n/**\n * Clear cache data for single dragging session.\n */\nDrag.prototype._clearData = function() {\n    this._cancelled = false;\n    this._distance = 0;\n    this._isMoved = false;\n    this._dragStartFired = false;\n    this._dragStartEventData = null;\n};\n\n/**\n * Toggle events for mouse dragging.\n * @param {boolean} toBind - bind events related with dragging when supplied \"true\"\n */\nDrag.prototype._toggleDragEvent = function(toBind) {\n    var container = this.container,\n        domMethod,\n        method;\n\n    if (toBind) {\n        domMethod = 'on';\n        method = 'disable';\n    } else {\n        domMethod = 'off';\n        method = 'enable';\n    }\n\n    domutil[method + 'TextSelection'](container, preventDefaultWhenNotPopup);\n    domutil[method + 'ImageDrag'](container, preventDefaultWhenNotPopup);\n    domevent[domMethod](global.document, {\n        mousemove: this._onMouseMove,\n        mouseup: this._onMouseUp\n    }, this);\n};\n\n/**\n * Normalize mouse event object.\n * @param {MouseEvent} mouseEvent - mouse event object.\n * @returns {object} normalized mouse event data.\n */\nDrag.prototype._getEventData = function(mouseEvent) {\n    return {\n        target: domevent.getEventTarget(mouseEvent),\n        originEvent: mouseEvent\n    };\n};\n\n/**\n * MouseDown DOM event handler.\n * @param {MouseEvent} mouseDownEvent MouseDown event object.\n */\nDrag.prototype._onMouseDown = function(mouseDownEvent) {\n    var opt = this.options,\n        target = domevent.getEventTarget(mouseDownEvent);\n\n    // only primary button can start drag.\n    if (domevent.getMouseButton(mouseDownEvent) !== 0) {\n        return;\n    }\n\n    if (opt.exclude && opt.exclude(target)) {\n        this._cancelled = true;\n\n        return;\n    }\n\n    this._clearData();\n    this._dragStartEventData = this._getEventData(mouseDownEvent);\n\n    this._toggleDragEvent(true);\n\n    /**\n     * mousedown event for firefox bug. cancelable.\n     * @event Drag#mouseDown\n     * @type {object}\n     * @property {HTMLElement} target - target element in this event.\n     * @property {MouseEvent} originEvent - original mouse event object.\n     */\n    this.fire('mousedown', this._dragStartEventData);\n};\n\n/**\n * MouseMove DOM event handler.\n * @emits Drag#drag\n * @emits Drag#dragStart\n * @param {MouseEvent} mouseMoveEvent MouseMove event object.\n */\nDrag.prototype._onMouseMove = function(mouseMoveEvent) {\n    var distance;\n\n    if (this._cancelled) {\n        this._clearData();\n\n        return;\n    }\n\n    distance = this.options.distance;\n    // prevent automatic scrolling.\n    preventDefaultWhenNotPopup(mouseMoveEvent);\n\n    if (this._distance < distance) {\n        this._distance += 1;\n\n        return;\n    }\n    this._isMoved = true;\n\n    if (!this._dragStartFired) {\n        this._dragStartFired = true;\n\n        /**\n         * Drag start events. cancelable.\n         * @event Drag#dragStart\n         * @type {object}\n         * @property {HTMLElement} target - target element in this event.\n         * @property {MouseEvent} originEvent - original mouse event object.\n         */\n        if (!this.invoke('dragStart', this._dragStartEventData)) {\n            this._toggleDragEvent(false);\n            this._clearData();\n\n            return;\n        }\n    }\n\n    /**\n     * CalEvents while dragging.\n     * @event Drag#drag\n     * @type {object}\n     * @property {HTMLElement} target - target element in this event.\n     * @property {MouseEvent} originEvent - original mouse event object.\n     */\n    this.fire('drag', this._getEventData(mouseMoveEvent));\n};\n\n/**\n * MouseUp DOM event handler.\n * @param {MouseEvent} mouseUpEvent MouseUp event object.\n * @emits Drag#dragEnd\n * @emits Drag#click\n */\nDrag.prototype._onMouseUp = function(mouseUpEvent) {\n    if (this._cancelled) {\n        return;\n    }\n\n    this._toggleDragEvent(false);\n\n    // emit \"click\" event when not emitted drag event between mousedown and mouseup.\n    if (this._isMoved) {\n        this._isMoved = false;\n        /**\n         * Drag end events.\n         * @event Drag#dragEnd\n         * @type {MouseEvent}\n         * @property {HTMLElement} target - target element in this event.\n         * @property {MouseEvent} originEvent - original mouse event object.\n         */\n        this.fire('dragEnd', this._getEventData(mouseUpEvent));\n    } else {\n        /**\n         * Click events.\n         * @event Drag#click\n         * @type {MouseEvent}\n         * @property {HTMLElement} target - target element in this event.\n         * @property {MouseEvent} originEvent - original mouse event object.\n         */\n        this.fire('click', this._getEventData(mouseUpEvent));\n    }\n\n    this._clearData();\n};\n\n/**\n * If the target is not a popup, it prevents the default.\n * @method\n * @param {MouseEvent} event - Mouse event object\n */\nfunction preventDefaultWhenNotPopup(event) {\n    var popup = domutil.closest(event.target, config.classname('.popup'));\n\n    if (!popup) {\n        domevent.preventDefault(event);\n    }\n}\n\nutil.CustomEvents.mixin(Drag);\n\nmodule.exports = Drag;\n","/**\n * @fileoverview Click handler for month view\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\nvar util = require('tui-code-snippet');\nvar config = require('../../config'),\n    datetime = require('../../common/datetime'),\n    domutil = require('../../common/domutil');\n\n/**\n * @constructor\n * @implements {Handler}\n * @mixes util.CustomEvents\n * @param {Drag} [dragHandler] - Drag handler instance.\n * @param {Month} [monthView] - Month view instance.\n * @param {Base} [baseController] - Base controller instance.\n */\nfunction MonthClick(dragHandler, monthView, baseController) {\n    /**\n     * @type {Drag}\n     */\n    this.dragHandler = dragHandler;\n\n    /**\n     * @type {Month}\n     */\n    this.monthView = monthView;\n\n    /**\n     * @type {Base}\n     */\n    this.baseController = baseController;\n\n    dragHandler.on({\n        'click': this._onClick\n    }, this);\n}\n\n/**\n * Destructor\n */\nMonthClick.prototype.destroy = function() {\n    this.dragHandler.off(this);\n    this.monthView = this.baseController = this.dragHandler = null;\n};\n\n/**\n * @fires MonthClick#clickMore\n * @param {object} clickEvent - click event object\n */\nMonthClick.prototype._onClick = function(clickEvent) {\n    var self = this,\n        moreElement,\n        scheduleCollection = this.baseController.schedules,\n        blockElement = domutil.closest(clickEvent.target, config.classname('.weekday-schedule-block'))\n                    || domutil.closest(clickEvent.target, config.classname('.month-more-schedule'));\n\n    moreElement = domutil.closest(\n        clickEvent.target,\n        config.classname('.weekday-exceed-in-month')\n    );\n\n    if (moreElement) {\n        self.fire('clickMore', {\n            date: datetime.parse(domutil.getData(moreElement, 'ymd')),\n            target: moreElement,\n            ymd: domutil.getData(moreElement, 'ymd')\n        });\n    }\n\n    if (blockElement) {\n        scheduleCollection.doWhenHas(domutil.getData(blockElement, 'id'), function(schedule) {\n            /**\n             * @events AlldayClick#clickSchedule\n             * @type {object}\n             * @property {Schedule} schedule - schedule instance\n             * @property {MouseEvent} event - MouseEvent object\n             */\n            self.fire('clickSchedule', {\n                schedule: schedule,\n                event: clickEvent.originEvent\n            });\n        });\n    }\n};\n\nutil.CustomEvents.mixin(MonthClick);\n\nmodule.exports = MonthClick;\n","/* eslint-disable complexity */\n/**\n * @fileoverview Module for calculate date by month view and mouse event object\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\nvar util = require('tui-code-snippet');\nvar common = require('../../common/common'),\n    domutil = require('../../common/domutil'),\n    domevent = require('../../common/domevent'),\n    datetime = require('../../common/datetime');\nvar mfloor = Math.floor;\n\n/**\n * Get high order function that can calc date in mouse point\n * @param {Month} monthView - month view\n * @returns {function} function return event data by mouse event object\n */\nfunction getMousePosDate(monthView) {\n    var weekColl = monthView.children,\n        weeks = weekColl.sort(function(a, b) {\n            return util.stamp(a) - util.stamp(b);\n        }),\n        weekCount = weekColl.length,\n        days = weekColl.single().getRenderDateRange(),\n        dayCount = days.length,\n        relativeContainer = util.pick(monthView.vLayout.panels[1], 'container'),\n        size = domutil.getSize(relativeContainer),\n        grids = monthView.grids;\n\n    /**\n     * Get the left index\n     * @param {number} left - left position(percent)\n     * @returns {number} grid left index\n     */\n    function getX(left) {\n        var i = 0;\n        var length = grids.length;\n        var grid;\n        for (; i < length; i += 1) {\n            grid = grids[i];\n            if (grid.left <= left && left <= (grid.left + grid.width)) {\n                return i;\n            }\n        }\n\n        return left < 0 ? -1 : i;\n    }\n\n    /**\n     * Get date related with mouse event object\n     * @param {object} mouseEvent - click event data\n     * @returns {object} data related with mouse event\n     */\n    function getDate(mouseEvent) {\n        var pos = domevent.getMousePosition(mouseEvent, relativeContainer),\n            x = getX(common.ratio(size[0], 100, pos[0])),\n            y = mfloor(common.ratio(size[1], weekCount, pos[1])),\n            weekdayView,\n            date,\n            dateRange;\n\n        if (y < 0) {\n            y = 0;\n        }\n        if (y >= weeks.length) {\n            y = weeks.length - 1;\n        }\n\n        weekdayView = util.pick(weeks, y);\n\n        if (!weekdayView) {\n            return null;\n        }\n\n        dateRange = weekdayView.getRenderDateRange();\n        if (x < 0) {\n            x = 0;\n        }\n        if (x >= dateRange.length) {\n            x = dateRange.length - 1;\n        }\n\n        date = util.pick(dateRange, x);\n\n        if (!date) {\n            return null;\n        }\n\n        return {\n            x: x,\n            y: y,\n            sizeX: dayCount,\n            sizeY: weekCount,\n            date: datetime.end(date),\n            weekdayView: weekdayView,\n            triggerEvent: mouseEvent.type\n        };\n    }\n\n    return getDate;\n}\n\nmodule.exports = getMousePosDate;\n","/**\n * @fileoverview Creation handler for month view\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\nvar util = require('tui-code-snippet');\n\nvar config = require('../../config');\nvar datetime = require('../../common/datetime');\nvar array = require('../../common/array');\nvar domutil = require('../../common/domutil');\nvar domevent = require('../../common/domevent');\nvar getMousePosDate = require('./core');\nvar Guide = require('./creationGuide');\nvar TZDate = require('../../common/timezone').Date;\n\nvar CLICK_DELAY = 300;\n\n/**\n * @constructor\n * @param {Drag} dragHandler - Drag handler instance.\n * @param {Month} monthView - Month view instance.\n * @param {Base} baseController - Base controller instance.\n * @param {Options} [options] - calendar Options\n */\nfunction MonthCreation(dragHandler, monthView, baseController, options) {\n    /**\n     * @type {Drag}\n     */\n    this.dragHandler = dragHandler;\n\n    /**\n     * @type {Month}\n     */\n    this.monthView = monthView;\n\n    /**\n     * @type {Base}\n     */\n    this.baseController = baseController;\n\n    /**\n     * @type {function}\n     */\n    this.getScheduleData = null;\n\n    /**\n     * Cache for dragging session\n     * @type {object}\n     */\n    this._cache = null;\n\n    /**\n     * @type {MonthCreationGuide}\n     */\n    this.guide = new Guide(this);\n\n    /**\n     * @type {boolean}\n     */\n    this._requestOnClick = false;\n\n    /**\n     * @type {boolean}\n     */\n    this._disableDblClick = options.disableDblClick;\n\n    /**\n     * @type {boolean}\n     */\n    this._disableClick = options.disableClick;\n\n    dragHandler.on('dragStart', this._onDragStart, this);\n    dragHandler.on('click', this._onClick, this);\n\n    if (this._disableDblClick) {\n        CLICK_DELAY = 0;\n    } else {\n        domevent.on(monthView.container, 'dblclick', this._onDblClick, this);\n    }\n}\n\n/**\n * Destructor\n */\nMonthCreation.prototype.destroy = function() {\n    this.dragHandler.off(this);\n    this.guide.destroy();\n\n    if (this.monthView && this.monthView.container) {\n        domevent.off(this.monthView.container, 'dblclick', this._onDblClick, this);\n    }\n\n    this.dragHandler = this.monthView = this.baseController =\n        this.getScheduleData = this._cache = this.guide = null;\n};\n\n/**\n * Fire before create schedule\n * @fires {MonthCreation#beforeCreateSchedule}\n * @param {object} eventData - cache data from single dragging session\n */\nMonthCreation.prototype._createSchedule = function(eventData) {\n    /**\n     * @event {MonthCreation#beforeCreateSchedule}\n     * @type {object}\n     * @property {boolean} isAllDay - whether schedule is fired in allday view area?\n     * @property {Date} start - select start time\n     * @property {Date} end - select end time\n     * @property {TimeCreationGuide} guide - TimeCreationGuide instance\n     * @property {string} triggerEventName - event name\n     */\n    this.fire('beforeCreateSchedule', {\n        isAllDay: eventData.isAllDay,\n        start: eventData.start,\n        end: eventData.end,\n        guide: this.guide.guide,\n        triggerEventName: eventData.triggerEvent\n    });\n};\n\n/**\n * DragStart event handler\n * @fires {MonthCreation#monthCreationDragstart}\n * @param {object} dragStartEvent - dragStart event data\n */\nMonthCreation.prototype._onDragStart = function(dragStartEvent) {\n    var eventData;\n\n    if (!isElementWeekdayGrid(dragStartEvent.target)) {\n        return;\n    }\n\n    this.dragHandler.on({\n        drag: this._onDrag,\n        dragEnd: this._onDragEnd\n    }, this);\n\n    this.getScheduleData = getMousePosDate(this.monthView);\n\n    eventData = this.getScheduleData(dragStartEvent.originEvent);\n\n    this._cache = {\n        start: new TZDate(eventData.date)\n    };\n\n    /**\n     * @event {MonthCreation#monthCreationDragstart}\n     * @type {object}\n     * @property {number} x - x index\n     * @property {number} y - y index\n     * @property {Date} date - drag date\n     */\n    this.fire('monthCreationDragstart', eventData);\n};\n\n/**\n * Drag event handler\n * @fires {MonthCreation#monthCreationDrag}\n * @param {object} dragEvent - drag event data\n */\nMonthCreation.prototype._onDrag = function(dragEvent) {\n    var eventData;\n\n    if (!this.getScheduleData) {\n        return;\n    }\n\n    eventData = this.getScheduleData(dragEvent.originEvent);\n\n    if (!eventData) {\n        return;\n    }\n\n    /**\n     * @event {MonthCreation#monthCreationDrag}\n     * @type {object}\n     * @property {number} x - x index\n     * @property {number} y - y index\n     * @property {Date} date - drag date\n     */\n    this.fire('monthCreationDrag', eventData);\n};\n\n/**\n * DragEnd event handler\n * @fires {MonthCreation#monthCreationDragend}\n * @param {object} dragEndEvent - drag end event data\n */\nMonthCreation.prototype._onDragEnd = function(dragEndEvent) {\n    var cache = this._cache;\n    var eventData;\n    var times;\n\n    this.dragHandler.off({\n        drag: this._onDrag,\n        dragEnd: this._onDragEnd\n    }, this);\n\n    if (!this.getScheduleData) {\n        return;\n    }\n\n    eventData = this.getScheduleData(dragEndEvent.originEvent);\n\n    if (eventData) {\n        cache.end = new TZDate(eventData.date);\n        cache.isAllDay = true;\n\n        times = [\n            cache.start,\n            cache.end\n        ].sort(array.compare.num.asc);\n\n        cache.start = new TZDate(times[0]);\n        cache.end = datetime.end(times[1]);\n\n        this._createSchedule(cache);\n    }\n\n    /**\n     * @event {MonthCreation#monthCreationDragend}\n     * @type {object}\n     * @property {number} x - x index\n     * @property {number} y - y index\n     * @property {Date} date - drag date\n     */\n    this.fire('monthCreationDragend', eventData);\n\n    this.getScheduleData = this._cache = null;\n};\n\n/**\n * Dblclick event handler\n * @fires {MonthCreation#monthCreationDragstart}\n * @param {MouseEvent} e - Native MouseEvent\n */\nMonthCreation.prototype._onDblClick = function(e) {\n    var eventData, range;\n\n    if (!isElementWeekdayGrid(e.target)) {\n        return;\n    }\n\n    eventData = getMousePosDate(this.monthView)(e);\n\n    this.fire('monthCreationClick', eventData);\n\n    range = this._adjustStartAndEndTime(new TZDate(eventData.date), new TZDate(eventData.date));\n\n    this._createSchedule({\n        start: range.start,\n        end: range.end,\n        isAllDay: false,\n        triggerEvent: eventData.triggerEvent\n    });\n\n    this._requestOnClick = false;\n};\n\n/**\n * Click event handler\n * @fires {MonthCreation#monthCreationDragstart}\n * @param {MouseEvent} e - Native MouseEvent\n */\nMonthCreation.prototype._onClick = function(e) {\n    var self = this;\n    var eventData, range;\n\n    if (!isElementWeekdayGrid(e.target) || this._disableClick) {\n        return;\n    }\n\n    eventData = getMousePosDate(this.monthView)(e.originEvent);\n\n    this._requestOnClick = true;\n    setTimeout(function() {\n        if (self._requestOnClick) {\n            self.fire('monthCreationClick', eventData);\n\n            range = self._adjustStartAndEndTime(new TZDate(eventData.date), new TZDate(eventData.date));\n\n            self._createSchedule({\n                start: range.start,\n                end: range.end,\n                isAllDay: false,\n                triggerEvent: eventData.triggerEvent\n            });\n        }\n        self._requestOnClick = false;\n    }, CLICK_DELAY);\n};\n\n/**\n * Adjust time to our o'clock\n * @param {TZDate} start - start time\n * @param {TZDate} end - end time\n * @returns {Object} start and end\n */\nMonthCreation.prototype._adjustStartAndEndTime = function(start, end) {\n    var now = new TZDate();\n    var hours = now.getHours();\n    var minutes = now.getMinutes();\n\n    // adjust start to less time. Adjusting had been greater time in monthly view when clicking grid\n    if (minutes <= 30) {\n        minutes = 0;\n    } else {\n        minutes = 30;\n    }\n    start.setHours(hours, minutes, 0, 0);\n    end.setHours(hours + 1, minutes, 0, 0);\n\n    return {\n        start: start,\n        end: end\n    };\n};\n\n/**\n * Invoke creation click\n * @param {Schedule} schedule - schedule instance\n */\nMonthCreation.prototype.invokeCreationClick = function(schedule) {\n    var eventData = {\n        model: schedule\n    };\n\n    this.fire('monthCreationClick', eventData);\n\n    this._createSchedule({\n        start: schedule.start,\n        end: schedule.end,\n        isAllDay: schedule.isAllDay,\n        triggerEvent: 'manual'\n    });\n};\n\n/**\n * Returns whether the given element is Weekday-Schedule.\n * @param {HTMLElement} el - target element\n * @returns {boolean}\n */\nfunction isElementWeekdayGrid(el) {\n    return domutil.closest(el, config.classname('.weekday-grid'))\n        && !domutil.closest(el, config.classname('.weekday-exceed-in-month'));\n}\n\nutil.CustomEvents.mixin(MonthCreation);\n\nmodule.exports = MonthCreation;\n","/**\n * @fileoverview Creation guide module for month view\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\nvar MonthGuide = require('./guide');\n\n/**\n * @constructor\n * @param {MonthCreation} monthCreation - instance of MonthCreation\n */\nfunction MonthCreationGuide(monthCreation) {\n    /**\n     * @type {MonthCreation}\n     */\n    this.monthCreation = monthCreation;\n\n    /**\n     * @type {MonthGuide}\n     */\n    this.guide = null;\n\n    monthCreation.on({\n        monthCreationDragstart: this._createGuideElement,\n        monthCreationDrag: this._onDrag,\n        monthCreationDragend: this._onDragEnd,\n        monthCreationClick: this._createGuideElement\n    }, this);\n}\n\n/**\n * Destructor\n */\nMonthCreationGuide.prototype.destroy = function() {\n    this.monthCreation.off(this);\n\n    if (this.guide) {\n        this.guide.destroy();\n    }\n\n    this.guide = this.monthCreation = null;\n};\n\n/**\n * Drag start event handler\n * @param {object} dragStartEvent - schedule data from MonthCreation\n */\nMonthCreationGuide.prototype._createGuideElement = function(dragStartEvent) {\n    var options = {\n        isCreationMode: true,\n        height: '100%',\n        top: 0\n    };\n\n    this.guide = new MonthGuide(options, this.monthCreation.monthView);\n    this.guide.start(dragStartEvent);\n};\n\n/**\n * Drag event handler\n * @param {object} dragEvent - schedule data from MonthCreation\n */\nMonthCreationGuide.prototype._onDrag = function(dragEvent) {\n    this.guide.update(dragEvent.x, dragEvent.y);\n};\n\n/**\n * Drag end event handler\n */\nMonthCreationGuide.prototype._onDragEnd = function() {\n    // Do nothing. User calls destroy directly.\n    this.guide = null;\n};\n\nmodule.exports = MonthCreationGuide;\n","var Handlebars = require('/Users/nhnent/Jodeng/workspace/Work/tui.calendar-new/node_modules/handlebars/runtime.js');\nmodule.exports = (Handlebars['default'] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data) {\n    var stack1, helper, alias1=container.escapeExpression, alias2=container.lambda, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"<div class=\\\"\"\n    + alias1(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":3,\"column\":16},\"end\":{\"line\":3,\"column\":30}}}) : helper)))\n    + \"month-creation-guide\\\" style=\\\"border: \"\n    + alias1(alias2(((stack1 = (depth0 != null ? lookupProperty(depth0,\"styles\") : depth0)) != null ? lookupProperty(stack1,\"border\") : stack1), depth0))\n    + \"; background-color: \"\n    + alias1(alias2(((stack1 = (depth0 != null ? lookupProperty(depth0,\"styles\") : depth0)) != null ? lookupProperty(stack1,\"backgroundColor\") : stack1), depth0))\n    + \";\\\"></div>\\n\";\n},\"3\":function(container,depth0,helpers,partials,data) {\n    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, alias5=container.lambda, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"<div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":5,\"column\":16},\"end\":{\"line\":5,\"column\":30}}}) : helper)))\n    + \"weekday-schedule\\\"\\n        style=\\\"height: \"\n    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,\"styles\") : depth0)) != null ? lookupProperty(stack1,\"scheduleHeight\") : stack1), depth0))\n    + \"; line-height: \"\n    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,\"styles\") : depth0)) != null ? lookupProperty(stack1,\"scheduleHeight\") : stack1), depth0))\n    + \"; margin-top: \"\n    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,\"styles\") : depth0)) != null ? lookupProperty(stack1,\"scheduleGutter\") : stack1), depth0))\n    + \"; border-radius:\"\n    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,\"styles\") : depth0)) != null ? lookupProperty(stack1,\"borderRadius\") : stack1), depth0))\n    + \"; margin-left: \"\n    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,\"styles\") : depth0)) != null ? lookupProperty(stack1,\"marginLeft\") : stack1), depth0))\n    + \"; margin-right: \"\n    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,\"styles\") : depth0)) != null ? lookupProperty(stack1,\"marginRight\") : stack1), depth0))\n    + \";\\n            color:\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"color\") || (depth0 != null ? lookupProperty(depth0,\"color\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"color\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":7,\"column\":18},\"end\":{\"line\":7,\"column\":27}}}) : helper)))\n    + \";border-color:\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"borderColor\") || (depth0 != null ? lookupProperty(depth0,\"borderColor\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"borderColor\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":7,\"column\":41},\"end\":{\"line\":7,\"column\":56}}}) : helper)))\n    + \";background-color:\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"bgColor\") || (depth0 != null ? lookupProperty(depth0,\"bgColor\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"bgColor\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":7,\"column\":74},\"end\":{\"line\":7,\"column\":85}}}) : helper)))\n    + \"\\\">\\n        <div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":8,\"column\":20},\"end\":{\"line\":8,\"column\":34}}}) : helper)))\n    + \"weekday-schedule-title\\\">\\n\"\n    + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"isAllDay\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(4, data, 0),\"inverse\":container.program(6, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":9,\"column\":12},\"end\":{\"line\":13,\"column\":19}}})) != null ? stack1 : \"\")\n    + \"        </div>\\n        <div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":15,\"column\":20},\"end\":{\"line\":15,\"column\":34}}}) : helper)))\n    + \"weekday-resize-handle handle-y\\\" style=\\\"line-height: \"\n    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,\"styles\") : depth0)) != null ? lookupProperty(stack1,\"scheduleHeight\") : stack1), depth0))\n    + \";\\\">&nbsp;</div>\\n    </div>\\n\";\n},\"4\":function(container,depth0,helpers,partials,data) {\n    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"                \"\n    + ((stack1 = (lookupProperty(helpers,\"allday-tmpl\")||(depth0 && lookupProperty(depth0,\"allday-tmpl\"))||container.hooks.helperMissing).call(depth0 != null ? depth0 : (container.nullContext || {}),depth0,{\"name\":\"allday-tmpl\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":10,\"column\":16},\"end\":{\"line\":10,\"column\":38}}})) != null ? stack1 : \"\")\n    + \"\\n\";\n},\"6\":function(container,depth0,helpers,partials,data) {\n    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"                \"\n    + ((stack1 = (lookupProperty(helpers,\"time-tmpl\")||(depth0 && lookupProperty(depth0,\"time-tmpl\"))||container.hooks.helperMissing).call(depth0 != null ? depth0 : (container.nullContext || {}),depth0,{\"name\":\"time-tmpl\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":12,\"column\":16},\"end\":{\"line\":12,\"column\":36}}})) != null ? stack1 : \"\")\n    + \"\\n\";\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"<div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":1,\"column\":12},\"end\":{\"line\":1,\"column\":26}}}) : helper)))\n    + \"month-guide-block\\\" style=\\\"top:\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"top\") || (depth0 != null ? lookupProperty(depth0,\"top\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"top\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":1,\"column\":56},\"end\":{\"line\":1,\"column\":63}}}) : helper)))\n    + \";height:\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"height\") || (depth0 != null ? lookupProperty(depth0,\"height\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"height\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":1,\"column\":71},\"end\":{\"line\":1,\"column\":81}}}) : helper)))\n    + \";display:none\\\">\\n\"\n    + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"isCreationMode\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.program(3, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":2,\"column\":4},\"end\":{\"line\":17,\"column\":11}}})) != null ? stack1 : \"\")\n    + \"</div>\\n\";\n},\"useData\":true});","/**\n * @fileoverview Guide element controller for creation, resize in month view\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\nvar util = require('tui-code-snippet');\nvar config = require('../../config'),\n    domutil = require('../../common/domutil'),\n    datetime = require('../../common/datetime'),\n    TZDate = require('../../common/timezone').Date,\n    tmpl = require('./guide.hbs');\nvar mmax = Math.max,\n    mmin = Math.min,\n    mabs = Math.abs,\n    mfloor = Math.floor;\n\n/**\n * @constructor\n * @param {object} [options] - options\n * @param {boolean} [options.useHandle=false] - whether displaying resize handle on\n *  guide element?\n * @param {boolean} [options.isResizeMode=false] - whether resize mode?\n * @param {Month} monthView - Month view instance\n */\nfunction MonthGuide(options, monthView) {\n    /**\n     * @type {object}\n     */\n    this.options = util.extend({\n        top: 0,\n        height: '20px',\n        bgColor: '#f7ca88',\n        label: 'New event',\n        isResizeMode: false,\n        isCreationMode: false,\n        styles: this._getStyles(monthView.controller.theme)\n    }, options);\n\n    /**\n     * @type {Month}\n     */\n    this.view = monthView;\n\n    /**\n     * @type {WeekdayInMonth[]}\n     */\n    this.weeks = monthView.children.sort(function(a, b) {\n        return util.stamp(a) - util.stamp(b);\n    });\n\n    /**\n     * @type {number}\n     */\n    this.days = monthView.children.single().getRenderDateRange().length;\n\n    /**\n     * start coordinate of guide effect. (x, y) (days, weeks) effect can't\n     *  start lower than this coordinate.\n     * @type {number[]}\n     */\n    this.startCoord = [0, 0];\n\n    /**\n     * @type {Object.<string, HTMLElement>}\n     */\n    this.guideElements = {};\n\n    /**\n     * horizontal grid information\n     * @type {Object}\n     */\n    this.grids = monthView.grids;\n}\n\n/**\n * Destructor\n */\nMonthGuide.prototype.destroy = function() {\n    this.clear();\n\n    this.options = this.view = this.weeks = this.days =\n        this.startCoord = this.guideElements = null;\n};\n\nMonthGuide.prototype.clearGuideElement = function() {\n    this.destroy();\n};\n\n/**\n * Get ratio value in week.\n * @param {number} value - value for calc ratio in week\n * @returns {number} percent value\n */\nMonthGuide.prototype._getRatioValueInWeek = function(value) {\n    var grid = this.grids[value] || {left: 100};\n\n    return grid.left;\n};\n\n/**\n * Create guide element\n * @returns {HTMLElement} guide element\n */\nMonthGuide.prototype._createGuideElement = function() {\n    var guide = document.createElement('div');\n\n    guide.innerHTML = tmpl(this.options);\n\n    return guide.firstChild;\n};\n\n/**\n * Get guide element. if not exist then create one\n * @param {number} y - y coordinate\n * @returns {?HTMLElement} guide element\n */\nMonthGuide.prototype._getGuideElement = function(y) {\n    var guideElements = this.guideElements,\n        guide = guideElements[y],\n        weekdayView = this.weeks[y],\n        container;\n\n    if (!weekdayView) {\n        return null;\n    }\n\n    if (!guide) {\n        guide = this._createGuideElement();\n        container = weekdayView.container;\n        container.appendChild(guide);\n        guideElements[y] = guide;\n    }\n\n    return guide;\n};\n\n/**\n * Get coordinate by supplied date in month\n * @param {TZDate} date - date to find coordinate\n * @returns {number[]} coordinate (x, y)\n */\nMonthGuide.prototype._getCoordByDate = function(date) {\n    var WEEKEND_DAYS = 2;\n    var weeks = this.weeks;\n    var isWorkWeek = util.pick(this.view, 'options', 'workweek');\n    var days = isWorkWeek ? this.days + WEEKEND_DAYS : this.days;\n\n    var getIdxFromDiff = function(d1, d2) {\n            return mfloor(datetime.millisecondsTo('day', mabs(d2 - d1)));\n        },\n        monthStart = datetime.start(weeks[0].options.renderStartDate),\n        isBefore = date < monthStart,\n        start = new TZDate(monthStart),\n        end = new TZDate(monthStart).addDate(isBefore ? -days : days).addDate(-1),\n        x = getIdxFromDiff(date, start),\n        y = 0;\n\n    while (!datetime.isBetweenWithDate(date, start, end)) {\n        start.addDate(isBefore ? -days : days);\n        end = new TZDate(start).addDate(days - 1);\n        x = getIdxFromDiff(date, start);\n        y += (isBefore ? -1 : 1);\n    }\n\n    return [x, y];\n};\n\n/**\n * Get limited coordinate by supplied coodinates\n * @param {number[]} coord - coordinate need to limit\n * @param {number[]} [min] - minimum limitaion of coordinate\n * @param {number[]} [max] - maximum limitation of coordinate\n * @returns {number[]} limited coordiate\n */\nMonthGuide.prototype._getLimitedCoord = function(coord, min, max) {\n    var toIndex = 1,\n        x = coord[0],\n        y = coord[1],\n        result;\n\n    min = min || [0, 0];\n    max = max || [this.days - toIndex, this.weeks.length - toIndex];\n\n    if (y < min[1]) {\n        result = min.slice(0);\n    } else if (y > max[1]) {\n        result = max.slice(0);\n    } else {\n        x = mmax(min[0], x);\n        x = mmin(max[0], x);\n        result = [x, y];\n    }\n\n    return result;\n};\n\n/**\n * Prepare guide element modification\n * @param {object} dragStartEvent - dragStart schedule data from *guide\n */\nMonthGuide.prototype.start = function(dragStartEvent) {\n    var opt = this.options,\n        target = dragStartEvent.target,\n        model = dragStartEvent.model,\n        x = dragStartEvent.x,\n        y = dragStartEvent.y,\n        renderMonth = new TZDate(this.view.options.renderMonth),\n        temp;\n\n    if (opt.isCreationMode) {\n        if (model && !datetime.isSameMonth(renderMonth, model.start)) {\n            model.start.setMonth(renderMonth.getMonth());\n            model.start.setDate(1);\n            model.end.setMonth(renderMonth.getMonth());\n            model.end.setDate(1);\n        }\n    } else {\n        temp = this._getCoordByDate(model.getStarts());\n        x = temp[0];\n        y = temp[1];\n\n        util.extend(this.options, {\n            top: parseInt(target.style.top, 10) + 'px',\n            height: parseInt(target.style.height, 10) + 'px',\n            label: model.title\n        }, model);\n    }\n\n    if (util.isUndefined(x) || util.isUndefined(y)) {\n        temp = this._getCoordByDate(model.getStarts());\n        x = temp[0];\n        y = temp[1];\n    }\n\n    this.startCoord = [x, y];\n    this.update(x, y);\n};\n\n/**\n * Data for update several guide elements\n * @typedef UpdateIndication\n * @type {object}\n * @property {HTMLElement} guide - guide element\n * @property {number} left - left style value\n * @property {number} width - width style value\n * @property {boolean} [exceedL=false] - whether schedule is exceeded past weeks?\n * @property {boolean} [exceedR=false] - whether schedule is exceeded future weeks?\n */\n\n/**\n * Modify HTML element that uses for guide element\n * @param {UpdateIndication[]} inds - indication of update severel guide element\n */\nMonthGuide.prototype._updateGuides = function(inds) {\n    util.forEach(inds, function(ind) {\n        var guide = ind.guide,\n            exceedLClass = config.classname('month-exceed-left'),\n            exceedRClass = config.classname('month-exceed-right');\n\n        guide.style.display = 'block';\n        guide.style.left = ind.left + '%';\n        guide.style.width = ind.width + '%';\n\n        if (ind.exceedL) {\n            domutil.addClass(guide, exceedLClass);\n        } else {\n            domutil.removeClass(guide, exceedLClass);\n        }\n\n        if (ind.exceedR) {\n            domutil.addClass(guide, exceedRClass);\n        } else {\n            domutil.removeClass(guide, exceedRClass);\n        }\n    });\n};\n\n/**\n * Get guide element indicate for origin week\n * @param {number[]} startCoord - drag start coordinate\n * @param {number[]} mouseCoord - mouse coordinate\n * @returns {object} indicate\n */\nMonthGuide.prototype._getOriginIndicate = function(startCoord, mouseCoord) {\n    var left = mmin(startCoord[0], mouseCoord[0]),\n        right = mmax(startCoord[0], mouseCoord[0]) + 1,\n        exceedL, exceedR;\n\n    if (mouseCoord[1] > startCoord[1]) {\n        left = startCoord[0];\n        right = this.days;\n        exceedR = true;\n    } else if (mouseCoord[1] < startCoord[1]) {\n        left = 0;\n        right = startCoord[0] + 1;\n        exceedL = true;\n    }\n\n    return {\n        left: this._getRatioValueInWeek(left),\n        width: this._getRatioValueInWeek(right) -\n            this._getRatioValueInWeek(left),\n        exceedL: exceedL,\n        exceedR: exceedR\n    };\n};\n\n/**\n * Get guide element indicate for week related with mouse position\n * @param {number[]} startCoord - drag start coordinate\n * @param {number[]} mouseCoord - mouse coordinate\n * @returns {object} indicate\n */\nMonthGuide.prototype._getMouseIndicate = function(startCoord, mouseCoord) {\n    var left = mouseCoord[0],\n        right = mouseCoord[0] + 1,\n        exceedL, exceedR;\n\n    if (mouseCoord[1] > startCoord[1]) {\n        left = 0;\n        exceedL = true;\n    } else if (mouseCoord[1] < startCoord[1]) {\n        right = this.days;\n        exceedR = true;\n    }\n\n    return {\n        left: this._getRatioValueInWeek(left),\n        width: this._getRatioValueInWeek(right) -\n            this._getRatioValueInWeek(left),\n        exceedL: exceedL,\n        exceedR: exceedR\n    };\n};\n\n/**\n * Get guide element indicate for contained weeks\n * @returns {object} indicate\n */\nMonthGuide.prototype._getContainIndicate = function() {\n    return {\n        left: 0,\n        width: 100,\n        exceedL: true,\n        exceedR: true\n    };\n};\n\n/**\n * Remove several guide element that supplied by parameter\n * @param {number[]} yCoords - array of y coordinate to remove guide element\n */\nMonthGuide.prototype._removeGuideElements = function(yCoords) {\n    var guides = this.guideElements;\n\n    util.forEach(yCoords, function(y) {\n        domutil.remove(guides[y]);\n        delete guides[y];\n    });\n};\n\n/**\n * Get excluded numbers in range\n * @param {number[]} range - the range. value must be sequencial.\n * @param {number[]} numbers - numbers to check\n * @returns {number[]} excluded numbers\n */\nMonthGuide.prototype._getExcludesInRange = function(range, numbers) {\n    var min = mmin.apply(null, range),\n        max = mmax.apply(null, range),\n        excludes = [];\n\n    util.forEach(numbers, function(num) {\n        num = parseInt(num, 10);\n        if (num < min || num > max) {\n            excludes.push(num);\n        }\n    });\n\n    return excludes;\n};\n\n/**\n * Update guide elements by coordinate in month grid from mousemove event\n * @param {number} x - x coordinate\n * @param {number} y - y coordinate\n */\nMonthGuide.prototype.update = function(x, y) {\n    var self = this,\n        startCoord = this.startCoord,\n        mouseCoord = [x, y],\n        limitedCoord = this.options.isResizeMode ?\n            this._getLimitedCoord(mouseCoord, startCoord) : mouseCoord,\n        renderedYIndex = util.keys(this.guideElements),\n        yCoordsToUpdate = util.range(\n            mmin(startCoord[1], limitedCoord[1]),\n            mmax(startCoord[1], limitedCoord[1]) + 1\n        ),\n        yCoordsToRemove = this._getExcludesInRange(\n            yCoordsToUpdate,\n            renderedYIndex\n        ),\n        renderIndication = {};\n\n    this._removeGuideElements(yCoordsToRemove);\n\n    util.forEach(yCoordsToUpdate, function(guideYCoord) {\n        var guide = self._getGuideElement(guideYCoord),\n            indicate;\n\n        if (!guide) {\n            return;\n        }\n\n        if (guideYCoord === startCoord[1]) {\n            indicate = self._getOriginIndicate(startCoord, limitedCoord);\n        } else if (guideYCoord === mouseCoord[1]) {\n            indicate = self._getMouseIndicate(startCoord, mouseCoord);\n        } else {\n            indicate = self._getContainIndicate();\n        }\n\n        renderIndication[guideYCoord] = util.extend({\n            guide: guide\n        }, indicate);\n    });\n\n    this._updateGuides(renderIndication);\n};\n\n/**\n * Clear all guide elements\n */\nMonthGuide.prototype.clear = function() {\n    util.forEach(this.guideElements, function(element) {\n        domutil.remove(element);\n    });\n\n    this.guideElements = {};\n};\n\n/**\n * Get the styles from theme\n * @param {Theme} theme - theme instance\n * @returns {object} styles - styles object\n */\nMonthGuide.prototype._getStyles = function(theme) {\n    var styles = {};\n\n    if (theme) {\n        styles.border = theme.common.creationGuide.border;\n        styles.backgroundColor = theme.common.creationGuide.backgroundColor;\n        styles.scheduleHeight = theme.month.schedule.height;\n        styles.scheduleGutter = theme.month.schedule.marginTop;\n        styles.marginLeft = theme.month.schedule.marginLeft;\n        styles.marginRight = theme.month.schedule.marginRight;\n        styles.borderRadius = theme.month.schedule.borderRadius;\n    }\n\n    return styles;\n};\n\nmodule.exports = MonthGuide;\n","/**\n * @fileoverview Move handler for month view\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\nvar util = require('tui-code-snippet');\n\nvar config = require('../../config'),\n    domutil = require('../../common/domutil'),\n    datetime = require('../../common/datetime'),\n    getMousePosData = require('./core'),\n    MonthMoveGuide = require('./moveGuide'),\n    TZDate = require('../../common/timezone').Date;\n\n/**\n * @constructor\n * @mixes CustomEvents\n * @param {Drag} dragHandler - Drag handler instance.\n * @param {Month} monthView - Month view instance.\n * @param {Base} baseController - Base controller instance.\n */\nfunction MonthMove(dragHandler, monthView, baseController) {\n    /**\n     * @type {Drag}\n     */\n    this.dragHandler = dragHandler;\n\n    /**\n     * @type {Month}\n     */\n    this.monthView = monthView;\n\n    /**\n     * @type {Base}\n     */\n    this.baseController = baseController;\n\n    /**\n     * @type {function}\n     */\n    this.getScheduleData = null;\n\n    /**\n     * @type {object}\n     */\n    this._cache = null;\n\n    /**\n     * @type {MonthMoveGuide}\n     */\n    this.guide = new MonthMoveGuide(this);\n\n    dragHandler.on('dragStart', this._onDragStart, this);\n}\n\n/**\n * Destructor\n */\nMonthMove.prototype.destroy = function() {\n    this.dragHandler.off(this);\n\n    this.dragHandler = this.monthView = this.baseController = null;\n};\n\n/**\n * Update target schedule\n * @fires {MonthMove#beforeUpdateSchedule}\n * @param {object} scheduleCache - cache object that result of single dragging\n *  session.\n */\nMonthMove.prototype.updateSchedule = function(scheduleCache) {\n    var schedule = scheduleCache.model;\n    var duration = schedule.duration();\n    var startDateRaw = datetime.raw(schedule.start);\n    var dragEndTime = new TZDate(scheduleCache.end);\n    var newStartDate = new TZDate(dragEndTime);\n\n    newStartDate.setHours(startDateRaw.h, startDateRaw.m, startDateRaw.s, startDateRaw.ms);\n\n    /**\n     * @event MonthMove#beforeUpdateSchedule\n     * @type {object}\n     * @property {Schedule} schedule - The original schedule instance\n     * @property {Date} start - Deprecated: start time to update\n     * @property {Date} end - Deprecated: end time to update\n     * @property {object} changes - start and end time to update\n     *  @property {Date} start - start time to update\n     *  @property {Date} end - end time to update\n     */\n    this.fire('beforeUpdateSchedule', {\n        schedule: schedule,\n        changes: {\n            start: newStartDate,\n            end: new TZDate(newStartDate).addMilliseconds(duration)\n        },\n        start: newStartDate,\n        end: new TZDate(newStartDate).addMilliseconds(duration)\n    });\n};\n\n/**\n * Get schedule block to clone for month guide effect\n * @param {HTMLElement} target - target element that related with drag schedule\n * @returns {HTMLElement} element to create guide effect\n */\nMonthMove.prototype.getMonthScheduleBlock = function(target) {\n    var blockSelector = config.classname('.weekday-schedule-block');\n\n    return domutil.closest(target, blockSelector);\n};\n\n/**\n * Get schedule block from more layer\n * @param {HTMLElement} target - element to check\n * @returns {HTMLElement} schedule element\n */\nMonthMove.prototype.getMoreLayerScheduleBlock = function(target) {\n    var className = config.classname('.month-more-schedule');\n\n    return domutil.closest(target, className);\n};\n\n/**\n * Check handler has permission to handle fired schedule\n * @fires {MonthMove#monthMoveStart_from_morelayer}\n * @param {HTMLElement} target - target element of fired schedule\n * @returns {(string|null)} model instance ID related with schedule. if handle\n *  has not permission to handle the schedule then return null.\n */\nMonthMove.prototype.hasPermissionToHandle = function(target) {\n    var modelID = null;\n    var blockElement;\n\n    if (domutil.hasClass(target, config.classname('weekday-resize-handle'))) {\n        return null;\n    }\n\n    blockElement = this.getMonthScheduleBlock(target);\n\n    if (blockElement) {\n        modelID = domutil.getData(blockElement, 'id');\n    } else {\n        blockElement = this.getMoreLayerScheduleBlock(target);\n\n        if (blockElement) {\n            modelID = domutil.getData(blockElement, 'id');\n            /**\n             * Fire for notificate that the drag schedule start at more layer view.\n             * @event {MonthMove#monthMoveStart_from_morelayer}\n             */\n            this.fire('monthMoveStart_from_morelayer');\n        }\n    }\n\n    return modelID;\n};\n\n/**\n * Event handler for Drag#dragStart\n * @fires {MonthMove#monthMoveDragstart}\n * @param {object} dragStartEvent - drag start schedule data\n */\nMonthMove.prototype._onDragStart = function(dragStartEvent) {\n    var target = dragStartEvent.target,\n        modelID = this.hasPermissionToHandle(target),\n        model = this.baseController.schedules.items[modelID],\n        scheduleData;\n\n    if (!modelID || !model || model.isReadOnly || model.isPending) {\n        return;\n    }\n\n    this.dragHandler.on({\n        drag: this._onDrag,\n        dragEnd: this._onDragEnd\n    }, this);\n\n    this.getScheduleData = getMousePosData(this.monthView);\n\n    scheduleData = this.getScheduleData(dragStartEvent.originEvent);\n    scheduleData.originEvent = dragStartEvent.originEvent;\n    scheduleData.target = this.getMonthScheduleBlock(target);\n    scheduleData.model = model;\n\n    this._cache = {\n        model: model,\n        target: target,\n        start: new TZDate(Number(scheduleData.date))\n    };\n\n    /**\n     * @event {MonthMove#monthMoveDragstart}\n     * @type {object}\n     * @property {number} x - x index\n     * @property {number} y - y index\n     * @property {Date} date - drag date\n     * @property {HTMLElement} target - schedule block element\n     * @property {Schedule} model - model instance\n     */\n    this.fire('monthMoveDragstart', scheduleData);\n};\n\n/**\n * @fires {MonthMove#monthMoveDrag}\n * @param {object} dragEvent - drag event data\n */\nMonthMove.prototype._onDrag = function(dragEvent) {\n    var scheduleData;\n\n    if (!this.getScheduleData) {\n        return;\n    }\n\n    scheduleData = util.extend({\n        originEvent: dragEvent.originEvent\n    }, this.getScheduleData(dragEvent.originEvent));\n\n    if (!scheduleData) {\n        return;\n    }\n\n    /**\n     * @event {MonthMove#monthMoveDrag}\n     * @type {object}\n     * @property {number} x - x index\n     * @property {number} y - y index\n     * @property {Date} date - drag date\n     */\n    this.fire('monthMoveDrag', scheduleData);\n};\n\n/**\n * Event handler for Drag#dragEnd\n * @fires {MonthMove#monthMoveDragend}\n * @param {object} dragEndEvent - dragend event data\n */\nMonthMove.prototype._onDragEnd = function(dragEndEvent) {\n    var cache = this._cache;\n    var scheduleData;\n\n    this.dragHandler.off({\n        drag: this._onDrag,\n        dragEnd: this._onDragEnd\n    }, this);\n\n    if (!this.getScheduleData) {\n        return;\n    }\n\n    scheduleData = this.getScheduleData(dragEndEvent.originEvent);\n\n    if (scheduleData) {\n        cache.end = new TZDate(scheduleData.date);\n        this.updateSchedule(cache);\n    }\n\n    /**\n     * @event {MonthResize#monthMoveDragend}\n     * @type {object}\n     * @property {number} x - x index\n     * @property {number} y - y index\n     * @property {Date} date - drag date\n     */\n    this.fire('monthMoveDragend', scheduleData);\n\n    this.getScheduleData = this._cache = null;\n};\n\nutil.CustomEvents.mixin(MonthMove);\n\nmodule.exports = MonthMove;\n","var Handlebars = require('/Users/nhnent/Jodeng/workspace/Work/tui.calendar-new/node_modules/handlebars/runtime.js');\nmodule.exports = (Handlebars['default'] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data) {\n    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"            border-left:3px solid \"\n    + container.escapeExpression(container.lambda(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"borderColor\") : stack1), depth0))\n    + \";\\n            \";\n},\"3\":function(container,depth0,helpers,partials,data) {\n    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"    <span class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":14,\"column\":17},\"end\":{\"line\":14,\"column\":31}}}) : helper)))\n    + \"weekday-schedule-bullet \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":14,\"column\":55},\"end\":{\"line\":14,\"column\":69}}}) : helper)))\n    + \"weekday-schedule-bullet-focused\\\" style=\\\"top: \"\n    + alias4(container.lambda(((stack1 = (depth0 != null ? lookupProperty(depth0,\"styles\") : depth0)) != null ? lookupProperty(stack1,\"scheduleBulletTop\") : stack1), depth0))\n    + \"px;\\\"></span>\\n\";\n},\"5\":function(container,depth0,helpers,partials,data) {\n    var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return container.escapeExpression(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":16,\"column\":110},\"end\":{\"line\":16,\"column\":124}}}) : helper)))\n    + \"weekday-schedule-title-focused\";\n},\"7\":function(container,depth0,helpers,partials,data) {\n    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"            \"\n    + ((stack1 = (lookupProperty(helpers,\"allday-tmpl\")||(depth0 && lookupProperty(depth0,\"allday-tmpl\"))||container.hooks.helperMissing).call(depth0 != null ? depth0 : (container.nullContext || {}),(depth0 != null ? lookupProperty(depth0,\"model\") : depth0),{\"name\":\"allday-tmpl\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":18,\"column\":12},\"end\":{\"line\":18,\"column\":35}}})) != null ? stack1 : \"\")\n    + \"\\n\";\n},\"9\":function(container,depth0,helpers,partials,data) {\n    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"            \"\n    + ((stack1 = (lookupProperty(helpers,\"time-tmpl\")||(depth0 && lookupProperty(depth0,\"time-tmpl\"))||container.hooks.helperMissing).call(depth0 != null ? depth0 : (container.nullContext || {}),(depth0 != null ? lookupProperty(depth0,\"model\") : depth0),{\"name\":\"time-tmpl\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":20,\"column\":12},\"end\":{\"line\":20,\"column\":33}}})) != null ? stack1 : \"\")\n    + \"\\n\";\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, alias5=container.lambda, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"<div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":1,\"column\":12},\"end\":{\"line\":1,\"column\":26}}}) : helper)))\n    + \"month-guide \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":1,\"column\":38},\"end\":{\"line\":1,\"column\":52}}}) : helper)))\n    + \"month-guide-focused\\\"\\n     style=\\\"top: -50%;\\n            left: -50%;\\n            width: 100%;\\n            color: #ffffff;\\n            background-color:\"\n    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"dragBgColor\") : stack1), depth0))\n    + \";\\n            height:\"\n    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,\"styles\") : depth0)) != null ? lookupProperty(stack1,\"scheduleHeight\") : stack1), depth0))\n    + \"px;\\n            line-height:\"\n    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,\"styles\") : depth0)) != null ? lookupProperty(stack1,\"scheduleHeight\") : stack1), depth0))\n    + \"px;\\n            border-radius: \"\n    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,\"styles\") : depth0)) != null ? lookupProperty(stack1,\"borderRadius\") : stack1), depth0))\n    + \";\\n\"\n    + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"isAllDay\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":10,\"column\":12},\"end\":{\"line\":12,\"column\":19}}})) != null ? stack1 : \"\")\n    + \"\\\">\\n\"\n    + ((stack1 = lookupProperty(helpers,\"unless\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"isAllDay\") : stack1),{\"name\":\"unless\",\"hash\":{},\"fn\":container.program(3, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":13,\"column\":4},\"end\":{\"line\":15,\"column\":15}}})) != null ? stack1 : \"\")\n    + \"    <div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":16,\"column\":16},\"end\":{\"line\":16,\"column\":30}}}) : helper)))\n    + \"month-move-guide \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":16,\"column\":47},\"end\":{\"line\":16,\"column\":61}}}) : helper)))\n    + \"weekday-schedule-title \"\n    + ((stack1 = lookupProperty(helpers,\"unless\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"isAllDay\") : stack1),{\"name\":\"unless\",\"hash\":{},\"fn\":container.program(5, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":16,\"column\":84},\"end\":{\"line\":16,\"column\":165}}})) != null ? stack1 : \"\")\n    + \"\\\">\\n\"\n    + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"isAllDay\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(7, data, 0),\"inverse\":container.program(9, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":17,\"column\":8},\"end\":{\"line\":21,\"column\":15}}})) != null ? stack1 : \"\")\n    + \"    </div>\\n</div>\\n<div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":24,\"column\":12},\"end\":{\"line\":24,\"column\":26}}}) : helper)))\n    + \"month-guide-cover\\\" style=\\\"height:\"\n    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,\"styles\") : depth0)) != null ? lookupProperty(stack1,\"scheduleHeight\") : stack1), depth0))\n    + \"px; border-radius: \"\n    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,\"styles\") : depth0)) != null ? lookupProperty(stack1,\"borderRadius\") : stack1), depth0))\n    + \";\\\"></div>\\n\";\n},\"useData\":true});","/**\n * @fileoverview Module for modification of guide element for move in month view\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\nvar util = require('tui-code-snippet');\n\nvar config = require('../../config'),\n    domutil = require('../../common/domutil'),\n    domevent = require('../../common/domevent'),\n    FloatingLayer = require('../../common/floatingLayer'),\n    tmpl = require('./moveGuide.hbs'),\n    Schedule = require('../../model/schedule');\n\n/**\n * @constructor\n * @param {MonthMove} monthMove - month/move module instance\n */\nfunction MonthMoveGuide(monthMove) {\n    /**\n     * @type {MonthMove}\n     */\n    this.monthMove = monthMove;\n\n    /**\n     * @type {HTMLElement[]}\n     */\n    this.elements = null;\n\n    /**\n     * @type {FloatingLayer}\n     */\n    this.layer = null;\n\n    monthMove.on({\n        monthMoveDragstart: this._onDragStart,\n        monthMoveDrag: this._onDrag,\n        monthMoveDragend: this._onDragEnd\n    }, this);\n}\n\n/**\n * Destructor\n */\nMonthMoveGuide.prototype.destroy = function() {\n    this.monthMove.off(this);\n    this._clearGridBgColor();\n\n    if (this.layer) {\n        this.layer.destroy();\n    }\n\n    if (this.element) {\n        domutil.remove(this.element);\n    }\n\n    this.monthMove = this.elements = this.layer = null;\n};\n\n/**\n * Hide element blocks for resize effect\n * @param {number} modelID - Schedule model instance ID\n */\nMonthMoveGuide.prototype._hideOriginScheduleBlocks = function(modelID) {\n    var className = config.classname('weekday-schedule-block-dragging-dim');\n\n    this.elements = domutil.find(\n        config.classname('.weekday-schedule-block-' + modelID),\n        this.monthMove.monthView.container,\n        true\n    );\n\n    util.forEach(this.elements, function(el) {\n        domutil.addClass(el, className);\n    });\n};\n\n/**\n * Show element blocks\n */\nMonthMoveGuide.prototype._showOriginScheduleBlocks = function() {\n    var className = config.classname('weekday-schedule-block-dragging-dim');\n\n    util.forEach(this.elements, function(el) {\n        domutil.removeClass(el, className);\n    });\n};\n\n/**\n * Clear background color for filled grid element.\n */\nMonthMoveGuide.prototype._clearGridBgColor = function() {\n    var selector = config.classname('.weekday-filled'),\n        className = config.classname('weekday-filled'),\n        beforeGridElement = domutil.find(selector,\n            this.monthMove.monthView.container);\n\n    if (beforeGridElement) {\n        domutil.removeClass(beforeGridElement, className);\n    }\n};\n\n/**\n * Fill background color of date grids relatied with model updates.\n * @param {object} dragEvent - drag event data from MonthMoveGuide#_onDrag\n */\nMonthMoveGuide.prototype._updateGridBgColor = function(dragEvent) {\n    var gridElements = domutil.find(config.classname('.weekday-grid-line'), this.monthMove.monthView.container, true),\n        className = config.classname('weekday-filled'),\n        targetIndex = (dragEvent.x + (dragEvent.sizeX * dragEvent.y));\n\n    this._clearGridBgColor();\n\n    if (!gridElements || !gridElements[targetIndex]) {\n        return;\n    }\n\n    domutil.addClass(gridElements[targetIndex], className);\n};\n\n/**\n * Handler for MonthMove#dragStart\n * @param {object} dragStartEvent - dragStart schedule data object\n */\nMonthMoveGuide.prototype._onDragStart = function(dragStartEvent) {\n    var monthView = this.monthMove.monthView,\n        firstWeekdayView = monthView.children.single(),\n        weekdayOptions = firstWeekdayView.options,\n        widthPercent = 100 / firstWeekdayView.getRenderDateRange().length,\n        height = weekdayOptions.scheduleGutter + weekdayOptions.scheduleHeight,\n        container = monthView.container,\n        mousePos = domevent.getMousePosition(dragStartEvent.originEvent, container),\n        model = dragStartEvent.model,\n        layer = new FloatingLayer(null, container);\n\n    this._hideOriginScheduleBlocks(model.cid());\n\n    this.layer = layer;\n    layer.setSize(widthPercent + '%', height);\n    layer.setPosition(mousePos[0], mousePos[1]);\n    layer.setContent(tmpl({\n        model: util.extend(\n            Schedule.create(model),\n            model\n        ),\n        styles: {\n            scheduleHeight: weekdayOptions.scheduleHeight,\n            scheduleBulletTop: weekdayOptions.scheduleHeight / 3,\n            borderRadius: monthView.controller.theme.month.schedule.borderRadius\n        }\n    }));\n    layer.show();\n\n    if (!util.browser.msie) {\n        domutil.addClass(global.document.body, config.classname('dragging'));\n    }\n};\n\n/**\n * Handler for MonthMove#drag\n * @param {object} dragEvent - drag event data object\n */\nMonthMoveGuide.prototype._onDrag = function(dragEvent) {\n    var container = this.monthMove.monthView.container,\n        mousePos = domevent.getMousePosition(\n            dragEvent.originEvent,\n            container\n        );\n\n    this._updateGridBgColor(dragEvent);\n\n    if (!this.layer) {\n        return;\n    }\n\n    this.layer.setPosition(mousePos[0], mousePos[1]);\n};\n\n/**\n * Handler for MonthMove#dragEnd\n */\nMonthMoveGuide.prototype._onDragEnd = function() {\n    this._showOriginScheduleBlocks();\n\n    if (!util.browser.msie) {\n        domutil.removeClass(global.document.body, config.classname('dragging'));\n    }\n\n    this._clearGridBgColor();\n    this.layer.destroy();\n    this.layer = null;\n};\n\nmodule.exports = MonthMoveGuide;\n","/**\n * @fileoverview Module for resize schedule in month view\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\nvar util = require('tui-code-snippet');\n\nvar config = require('../../config'),\n    datetime = require('../../common/datetime'),\n    domutil = require('../../common/domutil'),\n    getMousePosData = require('./core'),\n    MonthResizeGuide = require('./resizeGuide'),\n    TZDate = require('../../common/timezone').Date;\n\nvar common = require('../../common/common');\n\n/**\n * @constructor\n * @param {Drag} dragHandler - Drag handler instance.\n * @param {Month} monthView - Month view instance.\n * @param {Base} baseController - Base controller instance.\n */\nfunction MonthResize(dragHandler, monthView, baseController) {\n    /**\n     * @type {Drag}\n     */\n    this.dragHandler = dragHandler;\n\n    /**\n     * @type {Month}\n     */\n    this.monthView = monthView;\n\n    /**\n     * @type {Base}\n     */\n    this.baseController = baseController;\n\n    /**\n     * @type {function}\n     */\n    this.getScheduleData = null;\n\n    /**\n     * @type {object}\n     */\n    this._cache = null;\n\n    /**\n     * @type {MonthResizeGuide}\n     */\n    this.guide = new MonthResizeGuide(this);\n\n    dragHandler.on('dragStart', this._onDragStart, this);\n}\n\n/**\n * Destructor\n */\nMonthResize.prototype.destroy = function() {\n    this.dragHandler.off(this);\n\n    this.dragHandler = this.monthView = this.baseController = null;\n};\n\n/**\n * Fire event for update model\n * @fires {MonthResize#beforeUpdateSchedule}\n * @param {object} scheduleCache - cache object that result of single dragging\n *  session.\n */\nMonthResize.prototype._updateSchedule = function(scheduleCache) {\n    // You can not change the start date of the event. Only the end time can be changed.\n    var newEnd = datetime.end(new TZDate(scheduleCache.end)),\n        schedule = scheduleCache.schedule;\n    var changes = common.getScheduleChanges(\n        schedule,\n        ['end'],\n        {end: newEnd}\n    );\n\n    /**\n     * @event MonthResize#beforeUpdateSchedule\n     * @type {object}\n     * @property {Schedule} schedule - The original schedule instance\n     * @property {Date} start - Deprecated: start time to update\n     * @property {Date} end - Deprecated: end time to update\n     * @property {object} changes - end time to update\n     *  @property {date} end - end time to update\n     */\n    this.fire('beforeUpdateSchedule', {\n        schedule: schedule,\n        changes: changes,\n        start: new TZDate(schedule.getStarts()),\n        end: newEnd\n    });\n};\n\n/**\n * Event handler for Drag#dragStart\n * @fires {MonthResize#monthResizeDragstart}\n * @param {object} dragStartEvent - drag start event data\n */\nMonthResize.prototype._onDragStart = function(dragStartEvent) {\n    var target = dragStartEvent.target,\n        modelID, schedule,\n        scheduleData;\n\n    if (!domutil.hasClass(target, config.classname('weekday-resize-handle'))) {\n        return;\n    }\n\n    target = domutil.closest(target, config.classname('.weekday-schedule-block'));\n\n    if (!target) {\n        return;\n    }\n\n    modelID = domutil.getData(target, 'id');\n    schedule = this.baseController.schedules.items[modelID];\n\n    this.dragHandler.on({\n        drag: this._onDrag,\n        dragEnd: this._onDragEnd\n    }, this);\n\n    this.getScheduleData = getMousePosData(this.monthView);\n    scheduleData = this.getScheduleData(dragStartEvent.originEvent);\n    scheduleData.target = target;\n    scheduleData.model = schedule;\n\n    this._cache = {\n        schedule: schedule,\n        target: target,\n        start: new TZDate(scheduleData.date)\n    };\n\n    /**\n     * @event {MonthCreation#monthResizeDragstart}\n     * @type {object}\n     * @property {number} x - x index\n     * @property {number} y - y index\n     * @property {Date} date - drag date\n     * @property {HTMLElement} target - schedule block element\n     * @property {Schedule} model - model instance\n     */\n    this.fire('monthResizeDragstart', scheduleData);\n};\n\n/**\n * @fires {MonthResize#monthResizeDrag}\n * @param {object} dragEvent - drag event data\n */\nMonthResize.prototype._onDrag = function(dragEvent) {\n    var scheduleData;\n\n    if (!this.getScheduleData) {\n        return;\n    }\n\n    scheduleData = this.getScheduleData(dragEvent.originEvent);\n\n    if (!scheduleData) {\n        return;\n    }\n\n    /**\n     * @event {MonthResize#monthResizeDrag}\n     * @type {object}\n     * @property {number} x - x index\n     * @property {number} y - y index\n     * @property {Date} date - drag date\n     */\n    this.fire('monthResizeDrag', scheduleData);\n};\n\n/**\n * @fires {MonthResize#monthResizeDragend}\n * @param {object} dragEndEvent - drag end event data\n */\nMonthResize.prototype._onDragEnd = function(dragEndEvent) {\n    var cache = this._cache;\n    var scheduleData;\n    var start, end;\n\n    this.dragHandler.off({\n        drag: this._onDrag,\n        dragEnd: this._onDragEnd\n    }, this);\n\n    if (!this.getScheduleData) {\n        return;\n    }\n\n    scheduleData = this.getScheduleData(dragEndEvent.originEvent);\n\n    if (scheduleData) {\n        start = new TZDate(cache.schedule.getStarts());\n        end = new TZDate(scheduleData.date);\n        cache.end = end;\n\n        if (start <= cache.end) {\n            this._updateSchedule(cache);\n        }\n    }\n\n    /**\n     * @event {MonthResize#monthResizeDragend}\n     * @type {object}\n     * @property {number} x - x index\n     * @property {number} y - y index\n     * @property {Date} date - drag date\n     */\n    this.fire('monthResizeDragend', scheduleData);\n\n    this.getScheduleData = this._cache = null;\n};\n\nutil.CustomEvents.mixin(MonthResize);\n\nmodule.exports = MonthResize;\n","/**\n * @fileoverview Module for modification of guide element in schedule resize\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\nvar util = require('tui-code-snippet');\n\nvar config = require('../../config'),\n    domutil = require('../../common/domutil'),\n    MonthGuide = require('./guide');\n\n/**\n * @constructor\n * @param {MonthResize} monthResize - month/resize module instance\n */\nfunction MonthResizeGuide(monthResize) {\n    /**\n     * @type {MonthResize}\n     */\n    this.monthResize = monthResize;\n\n    /**\n     * @type {HTMLElement[]}\n     */\n    this.elements = null;\n\n    /**\n     * @type {MonthGuide}\n     */\n    this.guide = null;\n\n    monthResize.on({\n        monthResizeDragstart: this._onDragStart,\n        monthResizeDrag: this._onDrag,\n        monthResizeDragend: this._onDragEnd\n    }, this);\n}\n\n/**\n * Destructor\n */\nMonthResizeGuide.prototype.destroy = function() {\n    this.monthResize.off(this);\n    this.guide.destroy();\n\n    this.guide = this.monthResize = null;\n};\n\n/**\n * Hide element blocks for resize effect\n * @param {number} modelID - Schedule model instance ID\n */\nMonthResizeGuide.prototype._hideScheduleBlocks = function(modelID) {\n    this.elements = domutil.find(\n        config.classname('.weekday-schedule-block-' + modelID),\n        this.monthResize.monthView.container,\n        true\n    );\n\n    util.forEach(this.elements, function(el) {\n        el.style.display = 'none';\n    });\n};\n\n/**\n * Show element blocks\n */\nMonthResizeGuide.prototype._showScheduleBlocks = function() {\n    util.forEach(this.elements, function(el) {\n        el.style.display = 'block';\n    });\n};\n\n/**\n * Drag start event handler\n * @param {object} dragStartEvent - schedule data from MonthResize\n */\nMonthResizeGuide.prototype._onDragStart = function(dragStartEvent) {\n    this.guide = new MonthGuide({\n        isResizeMode: true\n    }, this.monthResize.monthView);\n\n    this.guide.start(dragStartEvent);\n\n    this._hideScheduleBlocks(dragStartEvent.model.cid());\n\n    if (!util.browser.msie) {\n        domutil.addClass(global.document.body, config.classname('resizing-x'));\n    }\n};\n\n/**\n * Drag event handler\n * @param {object} dragEvent - event data from MonthCreation\n */\nMonthResizeGuide.prototype._onDrag = function(dragEvent) {\n    this.guide.update(dragEvent.x, dragEvent.y);\n};\n\n/**\n * Drag end event handler\n */\nMonthResizeGuide.prototype._onDragEnd = function() {\n    this._showScheduleBlocks();\n\n    this.guide.destroy();\n    this.elements = this.guide = null;\n\n    if (!util.browser.msie) {\n        domutil.removeClass(global.document.body, config.classname('resizing-x'));\n    }\n};\n\nmodule.exports = MonthResizeGuide;\n","/**\n * @fileoverview Allday event click event hander module\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\nvar util = require('tui-code-snippet');\nvar config = require('../../config');\nvar domutil = require('../../common/domutil');\n\n/**\n * @constructor\n * @implements {Handler}\n * @mixes util.CustomEvents\n * @param {Drag} [dragHandler] - Drag handler instance.\n * @param {TimeGrid} [timeGridView] - TimeGrid view instance.\n * @param {Base} [baseController] - Base controller instance.\n */\nfunction TimeClick(dragHandler, timeGridView, baseController) {\n    /**\n     * @type {Drag}\n     */\n    this.dragHandler = dragHandler;\n\n    /**\n     * @type {TimeGrid}\n     */\n    this.timeGridView = timeGridView;\n\n    /**\n     * @type {Base}\n     */\n    this.baseController = baseController;\n\n    dragHandler.on({\n        'click': this._onClick\n    }, this);\n}\n\n/**\n * Destroy method\n */\nTimeClick.prototype.destroy = function() {\n    this.dragHandler.off(this);\n    this.timeGridView = this.baseController = this.dragHandler = null;\n};\n\n/**\n * Check target element is expected condition for activate this plugins.\n * @param {HTMLElement} target - The element to check\n * @returns {string} - model id\n */\nTimeClick.prototype.checkExpectCondition = function(target) {\n    var container,\n        matches;\n\n    container = domutil.closest(target, config.classname('.time-date'));\n\n    if (!container) {\n        return false;\n    }\n\n    matches = domutil.getClass(container).match(config.time.getViewIDRegExp);\n\n    if (!matches || matches.length < 2) {\n        return false;\n    }\n\n    return util.pick(this.timeGridView.children.items, Number(matches[1]));\n};\n\n/**\n * Click event hander\n * @param {object} clickEvent - click event from {@link Drag}\n * @emits TimeClick#clickEvent\n */\nTimeClick.prototype._onClick = function(clickEvent) {\n    var self = this,\n        target = clickEvent.target,\n        timeView = this.checkExpectCondition(target),\n        blockElement = domutil.closest(target, config.classname('.time-date-schedule-block')),\n        schedulesCollection = this.baseController.schedules;\n\n    if (!timeView || !blockElement) {\n        return;\n    }\n\n    schedulesCollection.doWhenHas(domutil.getData(blockElement, 'id'), function(schedule) {\n        /**\n         * @events TimeClick#clickSchedule\n         * @type {object}\n         * @property {Schedule} schedule - schedule instance\n         * @property {MouseEvent} event - MouseEvent object\n         */\n        self.fire('clickSchedule', {\n            schedule: schedule,\n            event: clickEvent.originEvent\n        });\n    });\n};\n\nutil.CustomEvents.mixin(TimeClick);\n\nmodule.exports = TimeClick;\n","/**\n * @fileoverview Dayname click event hander module\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\nvar util = require('tui-code-snippet');\nvar config = require('../../config');\nvar domutil = require('../../common/domutil');\n\n/**\n * @constructor\n * @implements {Handler}\n * @mixes util.CustomEvents\n * @param {Drag} [dragHandler] - Drag handler instance.\n * @param {DayName} [dayNameView] - DayName view instance.\n * @param {Base} [baseController] - Base controller instance.\n */\nfunction DayNameClick(dragHandler, dayNameView, baseController) {\n    /**\n     * @type {Drag}\n     */\n    this.dragHandler = dragHandler;\n\n    /**\n     * @type {DayName}\n     */\n    this.dayNameView = dayNameView;\n\n    /**\n     * @type {Base}\n     */\n    this.baseController = baseController;\n\n    dragHandler.on({\n        'click': this._onClick\n    }, this);\n}\n\n/**\n * Destroy method\n */\nDayNameClick.prototype.destroy = function() {\n    this.dragHandler.off(this);\n    this.dayNameView = this.baseController = this.dragHandler = null;\n};\n\n/**\n * Check target element is expected condition for activate this plugins.\n * @param {HTMLElement} target - The element to check\n * @returns {string} - model id\n */\nDayNameClick.prototype.checkExpectCondition = function(target) {\n    var container = domutil.closest(target, config.classname('.dayname-date-area'));\n\n    if (!container) {\n        return false;\n    }\n\n    return true;\n};\n\n/**\n * Click event hander\n * @param {object} clickEvent - click event from {@link Drag}\n * @emits DayNameClick#clickDayname\n */\nDayNameClick.prototype._onClick = function(clickEvent) {\n    var self = this,\n        target = clickEvent.target,\n        daynameView = this.checkExpectCondition(target),\n        blockElement = domutil.closest(target, config.classname('.dayname'));\n\n    if (!daynameView || !blockElement) {\n        return;\n    }\n\n    /**\n     * @events DayNameClick#clickDayname\n     * @type {object}\n     * @property {string} date - click date\n     */\n    self.fire('clickDayname', {\n        date: domutil.getData(blockElement, 'date')\n    });\n};\n\nutil.CustomEvents.mixin(DayNameClick);\n\nmodule.exports = DayNameClick;\n","/**\n * @fileoverview Core methods for dragging actions\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\nvar util = require('tui-code-snippet');\nvar common = require('../../common/common');\nvar datetime = require('../../common/datetime');\nvar domevent = require('../../common/domevent');\nvar Point = require('../../common/point');\nvar TZDate = require('../../common/timezone').Date;\n\n/**\n * @mixin Time.Core\n */\nvar timeCore = {\n    /**\n     * Get Y index ratio(hour) in time grids by supplied parameters.\n     * @param {number} baseMil - base milliseconds number for supplied height.\n     * @param {number} height - container element height.\n     * @param {number} y - Y coordinate to calculate hour ratio.\n     * @returns {number} hour index ratio value.\n     */\n    _calcGridYIndex: function(baseMil, height, y) {\n        // get ratio from right expression > point.y : x = session.height : baseMil\n        // and convert milliseconds value to hours.\n        var result = datetime.millisecondsTo('hour', (y * baseMil) / height),\n            floored = result | 0,\n            nearest = common.nearest(result - floored, [0, 1]);\n\n        return floored + (nearest ? 0.5 : 0);\n    },\n\n    /**\n     * Get function to makes event data from Time and mouseEvent\n     * @param {Time} timeView - Instance of time view.\n     * @returns {function} - Function that return event data from mouse event.\n     */\n    _retriveScheduleData: function(timeView) {\n        var self = this,\n            container = timeView.container,\n            options = timeView.options,\n            viewHeight = timeView.getViewBound().height,\n            viewTime = timeView.getDate(),\n            hourLength = options.hourEnd - options.hourStart,\n            baseMil = datetime.millisecondsFrom('hour', hourLength);\n\n        /**\n         * @param {MouseEvent} mouseEvent - mouse event object to get common event data.\n         * @param {object} [extend] - object to extend event data before return.\n         * @returns {object} - common event data for time\n         */\n        return function(mouseEvent, extend) {\n            var mouseY = Point.n(domevent.getMousePosition(mouseEvent, container)).y,\n                gridY = common.ratio(viewHeight, hourLength, mouseY),\n                timeY = new TZDate(viewTime).addMinutes(datetime.minutesFromHours(gridY)),\n                nearestGridY = self._calcGridYIndex(baseMil, viewHeight, mouseY),\n                nearestGridTimeY = new TZDate(viewTime).addMinutes(\n                    datetime.minutesFromHours(nearestGridY + options.hourStart)\n                );\n\n            return util.extend({\n                target: domevent.getEventTarget(mouseEvent),\n                relatedView: timeView,\n                originEvent: mouseEvent,\n                mouseY: mouseY,\n                gridY: gridY,\n                timeY: timeY,\n                nearestGridY: nearestGridY,\n                nearestGridTimeY: nearestGridTimeY,\n                triggerEvent: mouseEvent.type\n            }, extend);\n        };\n    },\n\n    /**\n     * Get function to makes event data from Time and mouseEvent\n     * @param {Time} timeView - Instance of time view.\n     * @param {TZDate} startDate - start date\n     * @param {TZDate} endDate - end date\n     * @param {number} hourStart Can limit of render hour start.\n     * @returns {object} - common event data for time from mouse event.\n     */\n    _retriveScheduleDataFromDate: function(timeView, startDate, endDate, hourStart) {\n        var viewTime = timeView.getDate();\n        var gridY, timeY, nearestGridY, nearestGridTimeY, nearestGridEndY, nearestGridEndTimeY;\n\n        gridY = startDate.getHours() - hourStart + getNearestHour(startDate.getMinutes());\n        timeY = new TZDate(viewTime).addMinutes(datetime.minutesFromHours(gridY));\n        nearestGridY = gridY;\n        nearestGridTimeY = new TZDate(viewTime).addMinutes(datetime.minutesFromHours(nearestGridY));\n        nearestGridEndY = endDate.getHours() - hourStart + getNearestHour(endDate.getMinutes());\n        nearestGridEndTimeY = new TZDate(viewTime).addMinutes(datetime.minutesFromHours(nearestGridEndY));\n\n        return {\n            target: timeView,\n            relatedView: timeView,\n            gridY: gridY,\n            timeY: timeY,\n            nearestGridY: nearestGridY,\n            nearestGridTimeY: nearestGridTimeY,\n            nearestGridEndY: nearestGridEndY,\n            nearestGridEndTimeY: nearestGridEndTimeY,\n            triggerEvent: 'manual',\n            hourStart: hourStart\n        };\n    },\n\n    /**\n     * Mixin method.\n     * @param {(TimeCreation|TimeMove)} obj - Constructor functions\n     */\n    mixin: function(obj) {\n        var proto = obj.prototype;\n        util.forEach(timeCore, function(method, methodName) {\n            if (methodName === 'mixin') {\n                return;\n            }\n\n            proto[methodName] = method;\n        });\n    }\n};\n\n/**\n * Get the nearest hour\n * @param {number} minutes - minutes\n * @returns {number} hour\n */\nfunction getNearestHour(minutes) {\n    var nearestHour;\n    if (minutes === 0) {\n        nearestHour = 0;\n    } else if (minutes > 30) {\n        nearestHour = 1;\n    } else if (minutes <= 30) {\n        nearestHour = 0.5;\n    }\n\n    return nearestHour;\n}\n\nmodule.exports = timeCore;\n","/**\n * @fileoverview Handling creation events from drag handler and time grid view\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\nvar util = require('tui-code-snippet');\nvar config = require('../../config');\nvar array = require('../../common/array');\nvar datetime = require('../../common/datetime');\nvar domutil = require('../../common/domutil');\nvar domevent = require('../../common/domevent');\nvar common = require('../../common/common');\nvar TimeCreationGuide = require('./creationGuide');\nvar TZDate = require('../../common/timezone').Date;\nvar timeCore = require('./core');\n\nvar CLICK_DELAY = 300;\n\n/**\n * @constructor\n * @implements {Handler}\n * @mixes timeCore\n * @mixes CustomEvents\n * @param {Drag} [dragHandler] - Drag handler instance.\n * @param {TimeGrid} [timeGridView] - TimeGrid view instance.\n * @param {Base} [baseController] - Base controller instance.\n * @param {Options} [options] - calendar Options\n */\nfunction TimeCreation(dragHandler, timeGridView, baseController, options) {\n    /**\n     * Drag handler instance.\n     * @type {Drag}\n     */\n    this.dragHandler = dragHandler;\n\n    /**\n     * TimeGrid view instance.\n     * @type {TimeGrid}\n     */\n    this.timeGridView = timeGridView;\n\n    /**\n     * Base controller instance.\n     * @type {Base}\n     */\n    this.baseController = baseController;\n\n    /**\n     * @type {TimeCreationGuide}\n     */\n    this.guide = new TimeCreationGuide(this);\n\n    /**\n     * Temporary function for single drag session's calc.\n     * @type {function}\n     */\n    this._getScheduleDataFunc = null;\n\n    /**\n     * Temporary function for drag start data cache.\n     * @type {object}\n     */\n    this._dragStart = null;\n\n    /**\n     * @type {boolean}\n     */\n    this._requestOnClick = false;\n\n    /**\n     * @type {boolean}\n     */\n    this._disableDblClick = options.disableDblClick;\n\n    /**\n     * @type {boolean}\n     */\n    this._disableClick = options.disableClick;\n\n    dragHandler.on('dragStart', this._onDragStart, this);\n    dragHandler.on('click', this._onClick, this);\n\n    if (this._disableDblClick) {\n        CLICK_DELAY = 0;\n    } else {\n        domevent.on(timeGridView.container, 'dblclick', this._onDblClick, this);\n    }\n}\n\n/**\n * Destroy method\n */\nTimeCreation.prototype.destroy = function() {\n    var timeGridView = this.timeGridView;\n\n    this.guide.destroy();\n    this.dragHandler.off(this);\n\n    if (timeGridView && timeGridView.container) {\n        domevent.off(timeGridView.container, 'dblclick', this._onDblClick, this);\n    }\n\n    this.dragHandler = this.timeGridView = this.baseController =\n        this._getScheduleDataFunc = this._dragStart = this.guide = null;\n};\n\n/**\n * Check target element is expected condition for activate this plugins.\n * @param {HTMLElement} target - The element to check\n * @returns {(boolean|Time)} - return Time view instance when satiate condition.\n */\nTimeCreation.prototype.checkExpectedCondition = function(target) {\n    var cssClass = domutil.getClass(target),\n        matches;\n\n    if (cssClass === config.classname('time-date-schedule-block-wrap')) {\n        target = target.parentNode;\n        cssClass = domutil.getClass(target);\n    }\n\n    matches = cssClass.match(config.time.getViewIDRegExp);\n\n    if (!matches || matches.length < 2) {\n        return false;\n    }\n\n    return util.pick(this.timeGridView.children.items, matches[1]);\n};\n\n/**\n * Drag#dragStart event handler.\n * @emits TimeCreation#timeCreationDragstart\n * @param {object} dragStartEventData - Drag#dragStart event data.\n * @param {string} [overrideEventName] - override emitted event name when supplied.\n * @param {function} [revise] - supply function for revise event data before emit.\n */\nTimeCreation.prototype._onDragStart = function(dragStartEventData, overrideEventName, revise) {\n    var target = dragStartEventData.target,\n        result = this.checkExpectedCondition(target),\n        getScheduleDataFunc,\n        eventData;\n\n    if (!result) {\n        return;\n    }\n\n    getScheduleDataFunc = this._getScheduleDataFunc = this._retriveScheduleData(result);\n    eventData = this._dragStart = getScheduleDataFunc(dragStartEventData.originEvent);\n\n    if (revise) {\n        revise(eventData);\n    }\n\n    this.dragHandler.on({\n        drag: this._onDrag,\n        dragEnd: this._onDragEnd\n    }, this);\n\n    /**\n     * @event TimeCreation#timeCreationDragstart\n     * @type {object}\n     * @property {Time} relatedView - time view instance related with mouse position.\n     * @property {MouseEvent} originEvent - mouse event object.\n     * @property {number} mouseY - mouse Y px mouse event.\n     * @property {number} gridY - grid Y index value related with mouseY value.\n     * @property {number} timeY - milliseconds value of mouseY points.\n     * @property {number} nearestGridY - nearest grid index related with mouseY value.\n     * @property {number} nearestGridTimeY - time value for nearestGridY.\n     */\n    this.fire(overrideEventName || 'timeCreationDragstart', eventData);\n};\n\n/**\n * Drag#drag event handler\n * @emits TimeCreation#timeCreationDrag\n * @param {object} dragEventData - event data from Drag#drag.\n * @param {string} [overrideEventName] - override emitted event name when supplied.\n * @param {function} [revise] - supply function for revise event data before emit.\n */\nTimeCreation.prototype._onDrag = function(dragEventData, overrideEventName, revise) {\n    var getScheduleDataFunc = this._getScheduleDataFunc,\n        eventData;\n\n    if (!getScheduleDataFunc) {\n        return;\n    }\n\n    eventData = getScheduleDataFunc(dragEventData.originEvent);\n\n    if (revise) {\n        revise(eventData);\n    }\n\n    /**\n     * @event TimeCreation#timeCreationDrag\n     * @type {object}\n     * @property {Time} relatedView - time view instance related with mouse position.\n     * @property {MouseEvent} originEvent - mouse event object.\n     * @property {number} mouseY - mouse Y px mouse event.\n     * @property {number} gridY - grid Y index value related with mouseY value.\n     * @property {number} timeY - milliseconds value of mouseY points.\n     * @property {number} nearestGridY - nearest grid index related with mouseY value.\n     * @property {number} nearestGridTimeY - time value for nearestGridY.\n     */\n    this.fire(overrideEventName || 'timeCreationDrag', eventData);\n};\n\n/**\n * @fires TimeCreation#beforeCreateSchedule\n * @param {object} eventData - event data object from TimeCreation#timeCreationDragend\n * or TimeCreation#timeCreationClick\n */\nTimeCreation.prototype._createSchedule = function(eventData) {\n    var relatedView = eventData.relatedView,\n        createRange = eventData.createRange,\n        nearestGridTimeY = eventData.nearestGridTimeY,\n        nearestGridEndTimeY = eventData.nearestGridEndTimeY\n            ? eventData.nearestGridEndTimeY\n            : new TZDate(nearestGridTimeY).addMinutes(30),\n        baseDate,\n        dateStart,\n        dateEnd,\n        start,\n        end;\n\n    if (!createRange) {\n        createRange = [\n            nearestGridTimeY,\n            nearestGridEndTimeY\n        ];\n    }\n\n    baseDate = new TZDate(relatedView.getDate());\n    dateStart = datetime.start(baseDate);\n    dateEnd = datetime.getStartOfNextDay(baseDate);\n    start = common.limitDate(createRange[0], dateStart, dateEnd);\n    end = common.limitDate(createRange[1], dateStart, dateEnd);\n\n    /**\n     * @event TimeCreation#beforeCreateSchedule\n     * @type {object}\n     * @property {boolean} isAllDay - whether schedule is fired in allday view area?\n     * @property {Date} start - select start time\n     * @property {Date} end - select end time\n     * @property {TimeCreationGuide} guide - TimeCreationGuide instance\n     * @property {string} triggerEventName - event name\n     */\n    this.fire('beforeCreateSchedule', {\n        isAllDay: false,\n        start: new TZDate(start),\n        end: new TZDate(end),\n        guide: this.guide,\n        triggerEventName: eventData.triggerEvent\n    });\n};\n\n/**\n * Drag#dragEnd event handler\n * @emits TimeCreation#timeCreationDragend\n * @param {object} dragEndEventData - event data from Drag#dragend\n */\nTimeCreation.prototype._onDragEnd = function(dragEndEventData) {\n    var self = this,\n        dragStart = this._dragStart;\n\n    this.dragHandler.off({\n        drag: this._onDrag,\n        dragEnd: this._onDragEnd\n    }, this);\n\n    /**\n     * Function for manipulate event data before firing event\n     * @param {object} eventData - event data\n     */\n    function reviseFunc(eventData) {\n        var range = [\n            dragStart.nearestGridTimeY,\n            eventData.nearestGridTimeY\n        ].sort(array.compare.num.asc);\n        range[1].addMinutes(30);\n\n        eventData.createRange = range;\n\n        self._createSchedule(eventData);\n    }\n\n    /**\n     * @event TimeCreation#timeCreationDragend\n     * @type {object}\n     * @property {Time} relatedView - time view instance related with mouse position.\n     * @property {MouseEvent} originEvent - mouse event object.\n     * @property {number} mouseY - mouse Y px mouse event.\n     * @property {number} gridY - grid Y index value related with mouseY value.\n     * @property {number} timeY - milliseconds value of mouseY points.\n     * @property {number} nearestGridY - nearest grid index related with mouseY value.\n     * @property {number} nearestGridTimeY - time value for nearestGridY.\n     * @property {number[]} createRange - milliseconds range between drag start and end to create.\n     */\n    this._onDrag(dragEndEventData, 'timeCreationDragend', reviseFunc);\n\n    this._dragStart = this._getScheduleDataFunc = null;\n};\n\n/**\n * Drag#click event handler\n * @emits TimeCreation#timeCreationClick\n * @param {object} clickEventData - event data from Drag#click.\n */\nTimeCreation.prototype._onClick = function(clickEventData) {\n    var self = this;\n    var condResult, getScheduleDataFunc, eventData;\n\n    this.dragHandler.off({\n        drag: this._onDrag,\n        dragEnd: this._onDragEnd\n    }, this);\n\n    condResult = this.checkExpectedCondition(clickEventData.target);\n    if (!condResult || this._disableClick) {\n        return;\n    }\n\n    getScheduleDataFunc = this._retriveScheduleData(condResult);\n    eventData = getScheduleDataFunc(clickEventData.originEvent);\n\n    this._requestOnClick = true;\n    setTimeout(function() {\n        if (self._requestOnClick) {\n            self.fire('timeCreationClick', eventData);\n            self._createSchedule(eventData);\n        }\n        self._requestOnClick = false;\n    }, CLICK_DELAY);\n    this._dragStart = this._getScheduleDataFunc = null;\n};\n\n/**\n * Dblclick event handler\n * @param {MouseEvent} e - Native MouseEvent\n */\nTimeCreation.prototype._onDblClick = function(e) {\n    var condResult, getScheduleDataFunc, eventData;\n\n    condResult = this.checkExpectedCondition(e.target);\n    if (!condResult) {\n        return;\n    }\n\n    getScheduleDataFunc = this._retriveScheduleData(condResult);\n    eventData = getScheduleDataFunc(e);\n\n    this.fire('timeCreationClick', eventData);\n\n    this._createSchedule(eventData);\n\n    this._requestOnClick = false;\n};\n\n/**\n * Invoke creation click\n * @param {Schedule} schedule - schedule instance\n */\nTimeCreation.prototype.invokeCreationClick = function(schedule) {\n    var opt = this.timeGridView.options,\n        range = datetime.range(\n            opt.renderStartDate,\n            opt.renderEndDate,\n            datetime.MILLISECONDS_PER_DAY),\n        hourStart = opt.hourStart,\n        targetDate = schedule.start;\n    var eventData, timeView;\n\n    util.forEach(range, function(date, index) {\n        if (datetime.isSameDate(date, targetDate)) {\n            timeView = this.timeGridView.children.toArray()[index];\n        }\n    }, this);\n\n    // If start date is not in current date, set start date as first date.\n    if (!timeView) {\n        timeView = this.timeGridView.children.toArray()[0];\n    }\n\n    eventData = this._retriveScheduleDataFromDate(timeView, schedule.start, schedule.end, hourStart);\n\n    this.fire('timeCreationClick', eventData);\n\n    this._createSchedule(eventData);\n};\n\ntimeCore.mixin(TimeCreation);\nutil.CustomEvents.mixin(TimeCreation);\n\nmodule.exports = TimeCreation;\n","/**\n * @fileoverview Module for Time.Creation effect while dragging.\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\nvar common = require('../../common/common');\nvar datetime = require('../../common/datetime');\nvar config = require('../../config');\nvar domutil = require('../../common/domutil');\nvar reqAnimFrame = require('../../common/reqAnimFrame');\nvar ratio = require('../../common/common').ratio;\nvar TZDate = require('../../common/timezone').Date;\nvar MIN60 = (datetime.MILLISECONDS_PER_MINUTES * 60);\n\n/**\n * Class for Time.Creation dragging effect.\n * @constructor\n * @param {TimeCreation} timeCreation - instance of TimeCreation.\n */\nfunction TimeCreationGuide(timeCreation) {\n    /**\n     * Guide element for creation effect.\n     * @type {HTMLElement}\n     */\n    this.guideElement = global.document.createElement('div');\n\n    /**\n     * @type {HTMLDivElement}\n     */\n    this.guideTimeElement = domutil.appendHTMLElement(\n        'span',\n        this.guideElement,\n        config.classname('time-guide-creation-label')\n    );\n\n    domutil.addClass(this.guideElement, config.classname('time-guide-creation'));\n\n    /**\n     * @type {TimeCreation}\n     */\n    this.timeCreation = timeCreation;\n\n    /**\n     * @type {array}\n     */\n    this._styleUnit = null;\n\n    /**\n     * @type {array}\n     */\n    this._styleStart = null;\n\n    /**\n     * @type {function}\n     */\n    this._styleFunc = null;\n\n    timeCreation.on({\n        timeCreationDragstart: this._createGuideElement,\n        timeCreationDrag: this._onDrag,\n        timeCreationClick: this._createGuideElement\n    }, this);\n\n    this.applyTheme(timeCreation.baseController.theme);\n}\n\n/**\n * Destroy method.\n */\nTimeCreationGuide.prototype.destroy = function() {\n    this.clearGuideElement();\n    this.timeCreation.off(this);\n    this.timeCreation = this._styleUnit = this._styleStart =\n        this._styleFunc = this.guideElement = this.guideTimeElement = null;\n};\n\n/**\n * Clear guide element.\n */\nTimeCreationGuide.prototype.clearGuideElement = function() {\n    var guideElement = this.guideElement,\n        timeElement = this.guideTimeElement;\n\n    domutil.remove(guideElement);\n\n    reqAnimFrame.requestAnimFrame(function() {\n        guideElement.style.display = 'none';\n        guideElement.style.top = '';\n        guideElement.style.height = '';\n        timeElement.innerHTML = '';\n    });\n};\n\n/**\n * Refresh guide element\n * @param {number} top - The number of guide element's style top\n * @param {number} height - The number of guide element's style height\n * @param {TZDate} start - start time of schedule to create\n * @param {TZDate} end - end time of schedule to create\n * @param {boolean} bottomLabel - is label need to render bottom of guide element?\n */\nTimeCreationGuide.prototype._refreshGuideElement = function(top, height, start, end, bottomLabel) {\n    var guideElement = this.guideElement;\n    var timeElement = this.guideTimeElement;\n\n    guideElement.style.top = top + 'px';\n    guideElement.style.height = height + 'px';\n    guideElement.style.display = 'block';\n\n    timeElement.innerHTML = datetime.format(start, 'HH:mm') +\n        ' - ' + datetime.format(end, 'HH:mm');\n\n    if (bottomLabel) {\n        domutil.removeClass(timeElement, config.classname('time-guide-bottom'));\n    } else {\n        domutil.addClass(timeElement, config.classname('time-guide-bottom'));\n    }\n};\n\n/**\n * Get unit data of calculating new style of guide element by user interaction\n * @param {Time} relatedView - time view instance related with schedule\n * @returns {array} unit data.\n */\nTimeCreationGuide.prototype._getUnitData = function(relatedView) {\n    var viewOpt = relatedView.options,\n        viewHeight = relatedView.getViewBound().height,\n        hourLength = viewOpt.hourEnd - viewOpt.hourStart,\n        todayStart = datetime.parse(viewOpt.ymd),\n        todayEnd = datetime.getStartOfNextDay(todayStart);\n\n    todayStart.setHours(0, 0, 0, 0);\n    todayStart.setHours(viewOpt.hourStart);\n\n    // [0] height of view\n    // [1] hour length of view\n    // [2] start time of view\n    // [3] end time of view\n    // [4] height of view for one hour\n    return [\n        viewHeight,\n        hourLength,\n        todayStart,\n        todayEnd,\n        viewHeight / hourLength\n    ];\n};\n\n/**\n * Applying limitation to supplied data and return it.\n * @param {number} top - top pixel of guide element\n * @param {number} height - height pixel of guide element\n * @param {TZDate} start - relative time value of dragstart point\n * @param {TZDate} end - relative time value of dragend point\n * @returns {array} limited style data\n */\nTimeCreationGuide.prototype._limitStyleData = function(top, height, start, end) {\n    var unitData = this._styleUnit;\n\n    top = common.limit(top, [0], [unitData[0]]);\n    height = common.limit(top + height, [0], [unitData[0]]) - top;\n    start = common.limitDate(start, unitData[2], unitData[3]);\n    end = common.limitDate(end, unitData[2], unitData[3]);\n\n    return [top, height, start, end];\n};\n\n/**\n * Get function to calculate guide element UI data from supplied units\n * @param {number} viewHeight - total height of view's container element\n * @param {number} hourLength - hour length that rendered in time view\n * @param {TZDate} todayStart - time for view's start date\n * @returns {function} UI data calculator function\n */\nTimeCreationGuide.prototype._getStyleDataFunc = function(viewHeight, hourLength, todayStart) {\n    var todayStartTime = todayStart;\n    var todayEndTime = datetime.end(todayStart);\n\n    /**\n     * Get top, time value from schedule data\n     * @param {object} scheduleData - schedule data object\n     * @returns {number[]} top, time\n     */\n    function getStyleData(scheduleData) {\n        var minMinutes = 30;\n        var gridY = scheduleData.nearestGridY,\n            gridTimeY = scheduleData.nearestGridTimeY,\n            gridEndTimeY = scheduleData.nearestGridEndTimeY || new TZDate(gridTimeY).addMinutes(minMinutes),\n            top, startTime, endTime;\n\n        top = common.limit(ratio(hourLength, viewHeight, gridY), [0], [viewHeight]);\n        startTime = common.limitDate(gridTimeY, todayStartTime, todayEndTime);\n        endTime = common.limitDate(gridEndTimeY, todayStartTime, todayEndTime);\n\n        return [top, startTime, endTime];\n    }\n\n    return getStyleData;\n};\n\n/**\n * DragStart event handler\n * @param {object} dragStartEventData - dragStart schedule data.\n */\nTimeCreationGuide.prototype._createGuideElement = function(dragStartEventData) {\n    var relatedView = dragStartEventData.relatedView,\n        hourStart = datetime.millisecondsFrom('hour', dragStartEventData.hourStart) || 0,\n        unitData, styleFunc, styleData, result, top, height, start, end;\n\n    unitData = this._styleUnit = this._getUnitData(relatedView);\n    styleFunc = this._styleFunc = this._getStyleDataFunc.apply(this, unitData);\n    styleData = this._styleStart = styleFunc(dragStartEventData);\n\n    start = new TZDate(styleData[1]).addMinutes(datetime.minutesFromHours(hourStart));\n    end = new TZDate(styleData[2]).addMinutes(datetime.minutesFromHours(hourStart));\n    top = styleData[0];\n    height = (unitData[4] * (end - start) / MIN60);\n\n    result = this._limitStyleData(\n        top,\n        height,\n        start,\n        end\n    );\n\n    this._refreshGuideElement.apply(this, result);\n\n    relatedView.container.appendChild(this.guideElement);\n};\n\n/**\n * Drag event handler\n * @param {object} dragEventData - drag schedule data.\n */\nTimeCreationGuide.prototype._onDrag = function(dragEventData) {\n    var minutes30 = 30;\n    var styleFunc = this._styleFunc,\n        unitData = this._styleUnit,\n        startStyle = this._styleStart,\n        refreshGuideElement = this._refreshGuideElement.bind(this),\n        heightOfHalfHour,\n        endStyle,\n        result;\n\n    if (!styleFunc || !unitData || !startStyle) {\n        return;\n    }\n\n    heightOfHalfHour = (unitData[4] / 2);\n    endStyle = styleFunc(dragEventData);\n\n    if (endStyle[0] > startStyle[0]) {\n        result = this._limitStyleData(\n            startStyle[0],\n            (endStyle[0] - startStyle[0]) + heightOfHalfHour,\n            startStyle[1],\n            new TZDate(endStyle[1]).addMinutes(minutes30)\n        );\n    } else {\n        result = this._limitStyleData(\n            endStyle[0],\n            (startStyle[0] - endStyle[0]) + heightOfHalfHour,\n            endStyle[1],\n            new TZDate(startStyle[1]).addMinutes(minutes30)\n        );\n        result.push(true);\n    }\n\n    reqAnimFrame.requestAnimFrame(function() {\n        refreshGuideElement.apply(null, result);\n    });\n};\n\nTimeCreationGuide.prototype.applyTheme = function(theme) {\n    var style = this.guideElement.style;\n    var timeStyle = this.guideTimeElement.style;\n\n    // block\n    style.backgroundColor = theme.common.creationGuide.backgroundColor;\n    style.border = theme.common.creationGuide.border;\n\n    // label\n    timeStyle.color = theme.week.creationGuide.color;\n    timeStyle.fontSize = theme.week.creationGuide.fontSize;\n    timeStyle.fontWeight = theme.week.creationGuide.fontWeight;\n};\n\nmodule.exports = TimeCreationGuide;\n","/**\n * @fileoverview Handling move schedules from drag handler and time grid view\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\nvar util = require('tui-code-snippet');\nvar config = require('../../config');\nvar datetime = require('../../common/datetime');\nvar domutil = require('../../common/domutil');\nvar domevent = require('../../common/domevent');\nvar TZDate = require('../../common/timezone').Date;\nvar timeCore = require('./core');\nvar TimeMoveGuide = require('./moveGuide');\n\n/**\n * @constructor\n * @implements {Handler}\n * @mixes timeCore\n * @mixes util.CustomEvents\n * @param {Drag} [dragHandler] - Drag handler instance.\n * @param {TimeGrid} [timeGridView] - TimeGrid view instance.\n * @param {Base} [baseController] - Base controller instance.\n */\nfunction TimeMove(dragHandler, timeGridView, baseController) {\n    /**\n     * @type {Drag}\n     */\n    this.dragHandler = dragHandler;\n\n    /**\n     * @type {TimeGrid}\n     */\n    this.timeGridView = timeGridView;\n\n    /**\n     * @type {Base}\n     */\n    this.baseController = baseController;\n\n    /**\n     * @type {function}\n     */\n    this._getScheduleDataFunc = null;\n\n    /**\n     * @type {object}\n     */\n    this._dragStart = null;\n\n    /**\n     * @type {TimeMoveGuide}\n     */\n    this._guide = new TimeMoveGuide(this);\n\n    dragHandler.on('dragStart', this._onDragStart, this);\n    dragHandler.on('mousedown', this._onMouseDown, this);\n}\n\n/**\n * Destroy method.\n */\nTimeMove.prototype.destroy = function() {\n    this._guide.destroy();\n    this.dragHandler.off(this);\n    this.dragHandler = this.timeGridView = this.baseController =\n        this._getScheduleDataFunc = this._dragStart = this._guide = null;\n};\n\n/**\n * Check target element is expected condition for activate this plugins.\n * @param {HTMLElement} target - The element to check\n * @returns {boolean|object} - return object when satiate condition.\n */\nTimeMove.prototype.checkExpectCondition = function(target) {\n    if (!domutil.closest(target, config.classname('.time-schedule'))) {\n        return false;\n    }\n\n    return this._getTimeView(target);\n};\n\n/**\n * Get Time view container from supplied element.\n * @param {HTMLElement} target - element to find time view container.\n * @returns {object|boolean} - return time view instance when finded.\n */\nTimeMove.prototype._getTimeView = function(target) {\n    var container = domutil.closest(target, config.classname('.time-date')),\n        matches;\n\n    if (!container) {\n        return false;\n    }\n\n    matches = domutil.getClass(container).match(config.time.getViewIDRegExp);\n\n    if (!matches || matches.length < 2) {\n        return false;\n    }\n\n    return util.pick(this.timeGridView.children.items, Number(matches[1]));\n};\n\n/**\n * @emits TimeMove#mousedown\n * @param {object} mouseDownEventData - Drag#mousedown schedule data.\n */\nTimeMove.prototype._onMouseDown = function(mouseDownEventData) {\n    var target = mouseDownEventData.target,\n        timeView = this.checkExpectCondition(target),\n        blockElement = domutil.closest(target, config.classname('.time-date-schedule-block'));\n\n    if (!timeView || !blockElement) {\n        return;\n    }\n\n    // EventTarget.target is not changed in mousemove event even if mouse is over the other element.\n    // It's different with other browsers(IE, Chrome, Safari)\n    if (util.browser.firefox) {\n        domevent.preventDefault(mouseDownEventData.originEvent);\n    }\n};\n\n/**\n * @emits TimeMove#timeMoveDragstart\n * @param {object} dragStartEventData - Drag#dragStart schedule data.\n */\nTimeMove.prototype._onDragStart = function(dragStartEventData) {\n    var target = dragStartEventData.target,\n        timeView = this.checkExpectCondition(target),\n        blockElement = domutil.closest(target, config.classname('.time-date-schedule-block')),\n        getScheduleDataFunc,\n        scheduleData,\n        ctrl = this.baseController,\n        targetModelID,\n        targetModel;\n\n    if (!timeView || !blockElement) {\n        return;\n    }\n\n    targetModelID = domutil.getData(blockElement, 'id');\n    targetModel = ctrl.schedules.items[targetModelID];\n\n    if (targetModel.isReadOnly) {\n        return;\n    }\n\n    getScheduleDataFunc = this._getScheduleDataFunc = this._retriveScheduleData(timeView);\n    scheduleData = this._dragStart = getScheduleDataFunc(\n        dragStartEventData.originEvent, {\n            targetModelID: targetModelID,\n            model: targetModel\n        }\n    );\n\n    this.dragHandler.on({\n        drag: this._onDrag,\n        dragEnd: this._onDragEnd,\n        click: this._onClick\n    }, this);\n\n    /**\n     * @event TimeMove#timeMoveDragstart\n     * @type {object}\n     * @property {HTMLElement} target - current target in mouse event object.\n     * @property {Time} relatedView - time view instance related with mouse position.\n     * @property {MouseEvent} originEvent - mouse event object.\n     * @property {number} mouseY - mouse Y px mouse event.\n     * @property {number} gridY - grid Y index value related with mouseY value.\n     * @property {number} timeY - milliseconds value of mouseY points.\n     * @property {number} nearestGridY - nearest grid index related with mouseY value.\n     * @property {number} nearestGridTimeY - time value for nearestGridY.\n     * @property {string} targetModelID - The model unique id emitted move schedule.\n     * @property {Schedule} model - model instance\n     */\n    this.fire('timeMoveDragstart', scheduleData);\n};\n\n/**\n * @emits TimeMove#timeMoveDrag\n * @param {MouseEvent} dragEventData - mousemove event object\n * @param {string} [overrideEventName] - name of emitting event to override.\n * @param {function} [revise] - supply function for revise schedule data before emit.\n */\nTimeMove.prototype._onDrag = function(dragEventData, overrideEventName, revise) {\n    var getScheduleDataFunc = this._getScheduleDataFunc,\n        timeView = this._getTimeView(dragEventData.target),\n        dragStart = this._dragStart,\n        scheduleData;\n\n    if (!timeView || !getScheduleDataFunc || !dragStart) {\n        return;\n    }\n\n    scheduleData = getScheduleDataFunc(dragEventData.originEvent, {\n        currentView: timeView,\n        targetModelID: dragStart.targetModelID\n    });\n\n    if (revise) {\n        revise(scheduleData);\n    }\n\n    /**\n     * @event TimeMove#timeMoveDrag\n     * @type {object}\n     * @property {HTMLElement} target - current target in mouse event object.\n     * @property {Time} relatedView - time view instance related with drag start position.\n     * @property {MouseEvent} originEvent - mouse event object.\n     * @property {number} mouseY - mouse Y px mouse event.\n     * @property {number} gridY - grid Y index value related with mouseY value.\n     * @property {number} timeY - milliseconds value of mouseY points.\n     * @property {number} nearestGridY - nearest grid index related with mouseY value.\n     * @property {number} nearestGridTimeY - time value for nearestGridY.\n     * @property {Time} currentView - time view instance related with current mouse position.\n     * @property {string} targetModelID - The model unique id emitted move schedule.\n     */\n    this.fire(overrideEventName || 'timeMoveDrag', scheduleData);\n};\n\n/**\n * Update model instance by dragend event results.\n * @fires TimeMove#beforeUpdateSchedule\n * @param {object} scheduleData - schedule data from TimeMove#timeMoveDragend\n */\nTimeMove.prototype._updateSchedule = function(scheduleData) {\n    var ctrl = this.baseController,\n        modelID = scheduleData.targetModelID,\n        range = scheduleData.nearestRange,\n        timeDiff = range[1] - range[0],\n        dateDiff = 0,\n        schedule = ctrl.schedules.items[modelID],\n        relatedView = scheduleData.relatedView,\n        currentView = scheduleData.currentView,\n        newStarts,\n        newEnds;\n\n    if (!schedule || !currentView) {\n        return;\n    }\n\n    timeDiff -= datetime.millisecondsFrom('minutes', 30);\n    newStarts = new TZDate(schedule.getStarts()).addMilliseconds(timeDiff);\n    newEnds = new TZDate(schedule.getEnds()).addMilliseconds(timeDiff);\n\n    if (currentView) {\n        dateDiff = currentView.getDate() - relatedView.getDate();\n    }\n\n    newStarts.addMilliseconds(dateDiff);\n    newEnds.addMilliseconds(dateDiff);\n\n    /**\n     * @event TimeMove#beforeUpdateSchedule\n     * @type {object}\n     * @property {Schedule} schedule - The original schedule instance\n     * @property {Date} start - Deprecated: start time to update\n     * @property {Date} end - Deprecated: end time to update\n     * @property {object} changes - start and end time to update\n     *  @property {Date} start - start time to update\n     *  @property {Date} end - end time to update\n     */\n    this.fire('beforeUpdateSchedule', {\n        schedule: schedule,\n        changes: {\n            start: newStarts,\n            end: newEnds\n        },\n        start: newStarts,\n        end: newEnds\n    });\n};\n\n/**\n * @emits TimeMove#timeMoveDragend\n * @param {MouseEvent} dragEndEventData - mouseup mouse event object.\n */\nTimeMove.prototype._onDragEnd = function(dragEndEventData) {\n    var getScheduleDataFunc = this._getScheduleDataFunc,\n        currentView = this._getTimeView(dragEndEventData.target),\n        dragStart = this._dragStart,\n        scheduleData;\n\n    this.dragHandler.off({\n        drag: this._onDrag,\n        dragEnd: this._onDragEnd,\n        click: this._onClick\n    }, this);\n\n    if (!getScheduleDataFunc || !dragStart) {\n        return;\n    }\n\n    scheduleData = getScheduleDataFunc(dragEndEventData.originEvent, {\n        currentView: currentView,\n        targetModelID: dragStart.targetModelID\n    });\n\n    scheduleData.range = [\n        dragStart.timeY,\n        new TZDate(scheduleData.timeY).addMinutes(30)\n    ];\n\n    scheduleData.nearestRange = [\n        dragStart.nearestGridTimeY,\n        new TZDate(scheduleData.nearestGridTimeY).addMinutes(30)\n    ];\n\n    this._updateSchedule(scheduleData);\n\n    /**\n     * @event TimeMove#timeMoveDragend\n     * @type {object}\n     * @property {HTMLElement} target - current target in mouse event object.\n     * @property {Time} relatedView - time view instance related with drag start position.\n     * @property {Time} currentView - time view instance related with current mouse position.\n     * @property {MouseEvent} originEvent - mouse event object.\n     * @property {number} mouseY - mouse Y px mouse event.\n     * @property {number} gridY - grid Y index value related with mouseY value.\n     * @property {number} timeY - milliseconds value of mouseY points.\n     * @property {number} nearestGridY - nearest grid index related with mouseY value.\n     * @property {number} nearestGridTimeY - time value for nearestGridY.\n     * @property {string} targetModelID - The model unique id emitted move schedule.\n     * @property {number[]} range - milliseconds range between drag start and end.\n     * @property {number[]} nearestRange - milliseconds range related with nearestGridY between start and end.\n     */\n    this.fire('timeMoveDragend', scheduleData);\n};\n\n/**\n * @emits TimeMove#timeMoveClick\n * @param {MouseEvent} clickEventData - click mouse event object.\n */\nTimeMove.prototype._onClick = function(clickEventData) {\n    var getScheduleDataFunc = this._getScheduleDataFunc,\n        dragStart = this._dragStart,\n        scheduleData;\n\n    this.dragHandler.off({\n        drag: this._onDrag,\n        dragEnd: this._onDragEnd,\n        click: this._onClick\n    }, this);\n\n    if (!getScheduleDataFunc || !dragStart) {\n        return;\n    }\n\n    scheduleData = getScheduleDataFunc(clickEventData.originEvent, {\n        targetModelID: dragStart.targetModelID\n    });\n\n    /**\n     * @event TimeMove#timeMoveClick\n     * @type {object}\n     * @property {HTMLElement} target - current target in mouse event object.\n     * @property {Time} relatedView - time view instance related with drag start position.\n     * @property {MouseEvent} originEvent - mouse event object.\n     * @property {number} mouseY - mouse Y px mouse event.\n     * @property {number} gridY - grid Y index value related with mouseY value.\n     * @property {number} timeY - milliseconds value of mouseY points.\n     * @property {number} nearestGridY - nearest grid index related with mouseY value.\n     * @property {number} nearestGridTimeY - time value for nearestGridY.\n     * @property {string} targetModelID - The model unique id emitted move schedule.\n     */\n    this.fire('timeMoveClick', scheduleData);\n};\n\ntimeCore.mixin(TimeMove);\nutil.CustomEvents.mixin(TimeMove);\n\nmodule.exports = TimeMove;\n","/**\n * @fileoverview Module for Time.Move effect while dragging.\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\nvar util = require('tui-code-snippet');\nvar config = require('../../config');\nvar domutil = require('../../common/domutil');\nvar reqAnimFrame = require('../../common/reqAnimFrame');\nvar ratio = require('../../common/common').ratio;\nvar FloatingLayer = require('../../common/floatingLayer');\nvar tmpl = require('../../view/template/week/timeMoveGuide.hbs');\nvar TZDate = require('../../common/timezone').Date;\nvar Schedule = require('../../model/schedule');\nvar datetime = require('../../common/datetime');\nvar common = require('../../common/common');\n\nvar SCHEDULE_MIN_DURATION = datetime.MILLISECONDS_SCHEDULE_MIN_DURATION;\n\n/**\n * Class for Time.Move effect.\n * @constructor\n * @param {TimeMove} timeMove - The instance of TimeMove.\n */\nfunction TimeMoveGuide(timeMove) {\n    /**\n     * @type {FloatingLayer}\n     */\n    this._guideLayer = null;\n\n    /**\n     * @Type {Schedule}\n     */\n    this._model = null;\n\n    /**\n     * @type {object}\n     */\n    this._viewModel = null;\n\n    /**\n     * @type {object}\n     */\n    this._lastDrag = null;\n\n    /**\n     * @type {HTMLElement}\n     */\n    this.guideElement = null;\n\n    /**\n     * @type {TimeMove}\n     */\n    this.timeMove = timeMove;\n\n    /**\n     * @type {HTMLElement}\n     */\n    this._container = null;\n\n    /**\n     * @type {function}\n     */\n    this._getTopFunc = null;\n\n    /**\n     * @type {number}\n     */\n    this._startGridY = 0;\n\n    /**\n     * @type {number}\n     */\n    this._startTopPixel = 0;\n\n    timeMove.on({\n        'timeMoveDragstart': this._onDragStart,\n        'timeMoveDrag': this._onDrag,\n        'timeMoveDragend': this._clearGuideElement,\n        'timeMoveClick': this._clearGuideElement\n    }, this);\n}\n\n/**\n * Destroy method\n */\nTimeMoveGuide.prototype.destroy = function() {\n    this._clearGuideElement();\n    this.timeMove.off(this);\n    if (this._guideLayer) {\n        this._guideLayer.destroy();\n    }\n    this.guideElement = this.timeMove = this._container = this._guideLayer = this._lastDrag =\n        this._getTopFunc = this._startGridY = this._startTopPixel = this._viewModel = null;\n};\n\n/**\n * Clear guide element.\n */\nTimeMoveGuide.prototype._clearGuideElement = function() {\n    if (!util.browser.msie) {\n        domutil.removeClass(global.document.body, config.classname('dragging'));\n    }\n    if (this._guideLayer) {\n        this._guideLayer.destroy();\n    }\n\n    this._showOriginScheduleBlocks();\n\n    this.guideElement = this._getTopFunc = this._guideLayer = this._model = this._lastDrag =\n        this._startGridY = this._startTopPixel = this._viewModel = null;\n};\n\n/**\n * Dim element blocks\n * @param {number} modelID - Schedule model instance ID\n */\nTimeMoveGuide.prototype._hideOriginScheduleBlocks = function() {\n    var className = config.classname('time-date-schedule-block-dragging-dim');\n    if (this.guideElement) {\n        domutil.addClass(this.guideElement, className);\n    }\n};\n\n/**\n * Show element blocks\n */\nTimeMoveGuide.prototype._showOriginScheduleBlocks = function() {\n    var className = config.classname('time-date-schedule-block-dragging-dim');\n    if (this.guideElement) {\n        domutil.removeClass(this.guideElement, className);\n    }\n};\n\n/**\n * Refresh guide element\n * @param {string} top - guide element's style top.\n * @param {Schedule} model - updated model\n * @param {object} viewModel - view model\n */\nTimeMoveGuide.prototype._refreshGuideElement = function(top, model, viewModel) {\n    var self = this;\n\n    reqAnimFrame.requestAnimFrame(function() {\n        if (!self._guideLayer) {\n            return;\n        }\n        self._guideLayer.setPosition(0, top);\n        self._guideLayer.setContent(tmpl(util.extend({model: model}, viewModel)));\n    });\n};\n\n/**\n * TimeMove#timeMoveDragstart event handler\n * @param {object} dragStartEventData - dragstart event data\n */\nTimeMoveGuide.prototype._onDragStart = function(dragStartEventData) {\n    var guideElement = domutil.closest(\n        dragStartEventData.target,\n        config.classname('.time-date-schedule-block')\n    );\n    var duration, modelDuration, goingDuration, comingDuration;\n\n    if (!guideElement) {\n        return;\n    }\n\n    this._startTopPixel = parseFloat(guideElement.style.top);\n    this._startGridY = dragStartEventData.nearestGridY;\n    this.guideElement = guideElement;\n    this._container = dragStartEventData.relatedView.container;\n\n    this._model = util.extend(\n        Schedule.create(dragStartEventData.model),\n        dragStartEventData.model\n    );\n\n    modelDuration = this._model.duration();\n    modelDuration = modelDuration > SCHEDULE_MIN_DURATION ? modelDuration : SCHEDULE_MIN_DURATION;\n    goingDuration = datetime.millisecondsFrom('minutes', this._model.goingDuration);\n    comingDuration = datetime.millisecondsFrom('minutes', this._model.comingDuration);\n    duration = goingDuration + modelDuration + comingDuration;\n\n    this._lastDrag = dragStartEventData;\n    this._viewModel = {\n        hasGoingDuration: goingDuration > 0,\n        hasComingDuration: comingDuration > 0,\n        goingDurationHeight: common.ratio(duration, goingDuration, 100),\n        modelDurationHeight: common.ratio(duration, modelDuration, 100),\n        comingDurationHeight: common.ratio(duration, comingDuration, 100)\n    };\n\n    this._resetGuideLayer();\n    this._hideOriginScheduleBlocks();\n};\n\n/**\n * TimeMove#timeMoveDrag event handler\n * @param {object} dragEventData - drag event data\n */\nTimeMoveGuide.prototype._onDrag = function(dragEventData) {\n    var timeView = dragEventData.currentView,\n        viewOptions = timeView.options,\n        viewHeight = timeView.getViewBound().height,\n        guideHeight = parseFloat(this.guideElement.style.height),\n        hourLength = viewOptions.hourEnd - viewOptions.hourStart,\n        gridYOffset = dragEventData.nearestGridY - this._startGridY,\n        gridYOffsetPixel = ratio(hourLength, viewHeight, gridYOffset),\n        gridDiff = dragEventData.nearestGridY - this._lastDrag.nearestGridY,\n        bottomLimit,\n        top;\n\n    if (!util.browser.msie) {\n        domutil.addClass(global.document.body, config.classname('dragging'));\n    }\n\n    if (this._container !== timeView.container) {\n        this._container = timeView.container;\n        this._resetGuideLayer();\n    }\n\n    top = this._startTopPixel + gridYOffsetPixel;\n    bottomLimit = viewHeight - guideHeight;\n\n    top = Math.max(top, 0);\n    top = Math.min(top, bottomLimit);\n\n    // update time\n    this._model.start = new TZDate(this._model.getStarts()).addMinutes(datetime.minutesFromHours(gridDiff));\n    this._model.end = new TZDate(this._model.getEnds()).addMinutes(datetime.minutesFromHours(gridDiff));\n    this._lastDrag = dragEventData;\n\n    this._refreshGuideElement(top, this._model, this._viewModel);\n};\n\nTimeMoveGuide.prototype._resetGuideLayer = function() {\n    if (this._guideLayer) {\n        this._guideLayer.destroy();\n        this._guideLayer = null;\n    }\n    this._guideLayer = new FloatingLayer(null, this._container);\n    this._guideLayer.setSize(this._container.getBoundingClientRect().width, this.guideElement.style.height);\n    this._guideLayer.setPosition(0, this.guideElement.style.top);\n    this._guideLayer.setContent(tmpl(util.extend({model: this._model}, this._viewModel)));\n    this._guideLayer.show();\n};\n\nmodule.exports = TimeMoveGuide;\n","/**\n * @fileoverview Handling resize schedules from drag handler and time grid view\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\nvar util = require('tui-code-snippet');\nvar config = require('../../config');\nvar datetime = require('../../common/datetime');\nvar domutil = require('../../common/domutil');\nvar TZDate = require('../../common/timezone').Date;\nvar common = require('../../common/common');\nvar timeCore = require('./core');\nvar TimeResizeGuide = require('./resizeGuide');\n\n/**\n * @constructor\n * @implements {Handler}\n * @mixes timeCore\n * @mixes util.CustomEvents\n * @param {Drag} [dragHandler] - Drag handler instance.\n * @param {TimeGrid} [timeGridView] - TimeGrid view instance.\n * @param {Base} [baseController] - Base controller instance.\n */\nfunction TimeResize(dragHandler, timeGridView, baseController) {\n    /**\n     * @type {Drag}\n     */\n    this.dragHandler = dragHandler;\n\n    /**\n     * @type {TimeGrid}\n     */\n    this.timeGridView = timeGridView;\n\n    /**\n     * @type {Base}\n     */\n    this.baseController = baseController;\n\n    /**\n     * @type {function}\n     */\n    this._getScheduleDataFunc = null;\n\n    /**\n     * @type {object}\n     */\n    this._dragStart = null;\n\n    /**\n     * @type {TimeResizeGuide}\n     */\n    this._guide = new TimeResizeGuide(this);\n\n    dragHandler.on('dragStart', this._onDragStart, this);\n}\n\n/**\n * Destroy method\n */\nTimeResize.prototype.destroy = function() {\n    this._guide.destroy();\n    this.dragHandler.off(this);\n    this.dragHandler = this.timeGridView = this.baseController =\n        this._getScheduleDataFunc = this._dragStart = this._guide = null;\n};\n\n/**\n * @param {HTMLElement} target - element to check condition.\n * @returns {object|boolean} - return time view instance or false\n */\nTimeResize.prototype.checkExpectCondition = function(target) {\n    var container,\n        matches;\n\n    if (!domutil.hasClass(target, config.classname('time-resize-handle'))) {\n        return false;\n    }\n\n    container = domutil.closest(target, config.classname('.time-date'));\n\n    if (!container) {\n        return false;\n    }\n\n    matches = domutil.getClass(container).match(config.time.getViewIDRegExp);\n\n    if (!matches || matches.length < 2) {\n        return false;\n    }\n\n    return util.pick(this.timeGridView.children.items, Number(matches[1]));\n};\n\n/**\n * @emits TimeResize#timeResizeDragstart\n * @param {object} dragStartEventData - event data of Drag#dragstart\n */\nTimeResize.prototype._onDragStart = function(dragStartEventData) {\n    var target = dragStartEventData.target,\n        timeView = this.checkExpectCondition(target),\n        blockElement = domutil.closest(target, config.classname('.time-date-schedule-block')),\n        ctrl = this.baseController,\n        targetModelID,\n        getScheduleDataFunc,\n        scheduleData;\n\n    if (!timeView || !blockElement) {\n        return;\n    }\n\n    targetModelID = domutil.getData(blockElement, 'id');\n    getScheduleDataFunc = this._getScheduleDataFunc = this._retriveScheduleData(timeView);\n    scheduleData = this._dragStart = getScheduleDataFunc(\n        dragStartEventData.originEvent, {\n            targetModelID: targetModelID,\n            schedule: ctrl.schedules.items[targetModelID]\n        }\n    );\n\n    this.dragHandler.on({\n        drag: this._onDrag,\n        dragEnd: this._onDragEnd,\n        click: this._onClick\n    }, this);\n\n    /**\n     * @event TimeResize#timeResizeDragstart\n     * @type {object}\n     * @property {HTMLElement} target - current target in mouse event object.\n     * @property {Time} relatedView - time view instance related with mouse position.\n     * @property {MouseEvent} originEvent - mouse event object.\n     * @property {number} mouseY - mouse Y px mouse event.\n     * @property {number} gridY - grid Y index value related with mouseY value.\n     * @property {number} timeY - milliseconds value of mouseY points.\n     * @property {number} nearestGridY - nearest grid index related with mouseY value.\n     * @property {number} nearestGridTimeY - time value for nearestGridY.\n     * @property {string} targetModelID - The model unique id emitted move schedule.\n     * @property {Schedule} schedule - schedule data\n     */\n    this.fire('timeResizeDragstart', scheduleData);\n};\n\n/**\n * Drag#drag event handler\n * @emits TimeResize#timeResizeDrag\n * @param {object} dragEventData - event data of Drag#drag custom event.\n * @param {string} [overrideEventName] - override emitted event name when supplied.\n * @param {function} [revise] - supply function for revise schedule data before emit.\n */\nTimeResize.prototype._onDrag = function(dragEventData, overrideEventName, revise) {\n    var getScheduleDataFunc = this._getScheduleDataFunc,\n        startScheduleData = this._dragStart,\n        scheduleData;\n\n    if (!getScheduleDataFunc || !startScheduleData) {\n        return;\n    }\n\n    scheduleData = getScheduleDataFunc(dragEventData.originEvent, {\n        targetModelID: startScheduleData.targetModelID\n    });\n\n    if (revise) {\n        revise(scheduleData);\n    }\n\n    /**\n     * @event TimeResize#timeResizeDrag\n     * @type {object}\n     * @property {HTMLElement} target - current target in mouse event object.\n     * @property {Time} relatedView - time view instance related with drag start position.\n     * @property {MouseEvent} originEvent - mouse event object.\n     * @property {number} mouseY - mouse Y px mouse event.\n     * @property {number} gridY - grid Y index value related with mouseY value.\n     * @property {number} timeY - milliseconds value of mouseY points.\n     * @property {number} nearestGridY - nearest grid index related with mouseY value.\n     * @property {number} nearestGridTimeY - time value for nearestGridY.\n     * @property {string} targetModelID - The model unique id emitted move schedule.\n     */\n    this.fire(overrideEventName || 'timeResizeDrag', scheduleData);\n};\n\n/**\n * Update model instance by dragend event results.\n * @fires TimeResize#beforeUpdateSchedule\n * @param {object} scheduleData - schedule data from TimeResize#timeResizeDragend\n */\nTimeResize.prototype._updateSchedule = function(scheduleData) {\n    var ctrl = this.baseController,\n        modelID = scheduleData.targetModelID,\n        range = scheduleData.nearestRange,\n        timeDiff = range[1] - range[0],\n        schedule = ctrl.schedules.items[modelID],\n        relatedView = scheduleData.relatedView,\n        dateEnd,\n        newEnds,\n        baseDate;\n    var changes;\n\n    if (!schedule) {\n        return;\n    }\n\n    timeDiff -= datetime.millisecondsFrom('minutes', 30);\n\n    baseDate = new TZDate(relatedView.getDate());\n    dateEnd = datetime.end(baseDate);\n    newEnds = new TZDate(schedule.getEnds()).addMilliseconds(timeDiff);\n\n    if (newEnds > dateEnd) {\n        newEnds = new TZDate(dateEnd);\n    }\n\n    if (newEnds.getTime() - schedule.getStarts().getTime() < datetime.millisecondsFrom('minutes', 30)) {\n        newEnds = new TZDate(schedule.getStarts()).addMinutes(30);\n    }\n\n    changes = common.getScheduleChanges(\n        schedule,\n        ['end'],\n        {end: newEnds}\n    );\n\n    /**\n     * @event TimeResize#beforeUpdateSchedule\n     * @type {object}\n     * @property {Schedule} schedule - The original schedule instance\n     * @property {Date} start - Deprecated: start time to update\n     * @property {Date} end - Deprecated: end time to update\n     * @property {object} changes - end time to update\n     *  @property {date} end - end time to update\n     */\n    this.fire('beforeUpdateSchedule', {\n        schedule: schedule,\n        changes: changes,\n        start: schedule.getStarts(),\n        end: newEnds\n    });\n};\n\n/**\n * Drag#dragEnd event handler\n * @emits TimeResize#timeResizeDragend\n * @param {MouseEvent} dragEndEventData - Mouse event of Drag#dragEnd custom event.\n */\nTimeResize.prototype._onDragEnd = function(dragEndEventData) {\n    var getScheduleDataFunc = this._getScheduleDataFunc,\n        dragStart = this._dragStart,\n        scheduleData;\n\n    this.dragHandler.off({\n        drag: this._onDrag,\n        dragEnd: this._onDragEnd,\n        click: this._onClick\n    }, this);\n\n    if (!getScheduleDataFunc || !dragStart) {\n        return;\n    }\n\n    scheduleData = getScheduleDataFunc(dragEndEventData.originEvent, {\n        targetModelID: dragStart.targetModelID\n    });\n\n    scheduleData.range = [\n        dragStart.timeY,\n        new TZDate(scheduleData.timeY).addMinutes(30)\n    ];\n\n    scheduleData.nearestRange = [\n        dragStart.nearestGridTimeY,\n        scheduleData.nearestGridTimeY.addMinutes(30)\n    ];\n\n    this._updateSchedule(scheduleData);\n\n    /**\n     * @event TimeResize#timeResizeDragend\n     * @type {object}\n     * @property {HTMLElement} target - current target in mouse event object.\n     * @property {Time} relatedView - time view instance related with drag start position.\n     * @property {MouseEvent} originEvent - mouse event object.\n     * @property {number} mouseY - mouse Y px mouse event.\n     * @property {number} gridY - grid Y index value related with mouseY value.\n     * @property {number} timeY - milliseconds value of mouseY points.\n     * @property {number} nearestGridY - nearest grid index related with mouseY value.\n     * @property {number} nearestGridTimeY - time value for nearestGridY.\n     * @property {string} targetModelID - The model unique id emitted move schedule.\n     * @property {number[]} range - milliseconds range between drag start and end.\n     * @property {number[]} nearestRange - milliseconds range related with nearestGridY between start and end.\n     */\n    this.fire('timeResizeDragend', scheduleData);\n\n    this._getScheduleDataFunc = this._dragStart = null;\n};\n\n/**\n * @emits TimeResize#timeResizeClick\n */\nTimeResize.prototype._onClick = function() {\n    this.dragHandler.off({\n        drag: this._onDrag,\n        dragEnd: this._onDragEnd,\n        click: this._onClick\n    }, this);\n\n    /**\n     * @event TimeResize#timeResizeClick\n     */\n    this.fire('timeResizeClick');\n};\n\ntimeCore.mixin(TimeResize);\nutil.CustomEvents.mixin(TimeResize);\n\nmodule.exports = TimeResize;\n","/**\n * @fileoverview Module for Time.Resize effect while dragging.\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\nvar util = require('tui-code-snippet');\nvar config = require('../../config');\nvar domutil = require('../../common/domutil');\nvar reqAnimFrame = require('../../common/reqAnimFrame');\nvar ratio = require('../../common/common').ratio;\nvar datetime = require('../../common/datetime');\n\n/**\n * Class for Time.Resize effect.\n * @constructor\n * @param {TimeResize} timeResize - the instance of TimeResize handler.\n */\nfunction TimeResizeGuide(timeResize) {\n    /**\n     * @type {HTMLElement}\n     */\n    this.guideElement = null;\n\n    /**\n     * @type {TimeResize}\n     */\n    this.timeResize = timeResize;\n\n    /**\n     * @type {function}\n     */\n    this._getTopFunc = null;\n\n    /**\n     * @type {HTMLElement}\n     */\n    this._originScheduleElement = null;\n\n    /**\n     * @type {number}\n     */\n    this._startTopPixel = 0;\n\n    /**\n     * @type {number}\n     */\n    this._startHeightPixel = 0;\n\n    /**\n     * @type {number}\n     */\n    this._startGridY = 0;\n\n    /**\n     * @type {Schedule}\n     */\n    this._schedule = null;\n\n    timeResize.on({\n        'timeResizeDragstart': this._onDragStart,\n        'timeResizeDrag': this._onDrag,\n        'timeResizeDragend': this._clearGuideElement,\n        'timeResizeClick': this._clearGuideElement\n    }, this);\n}\n\n/**\n * Destroy method\n */\nTimeResizeGuide.prototype.destroy = function() {\n    this._clearGuideElement();\n    this.timeResize.off(this);\n    this.guideElement = this.timeResize = this._getTopFunc =\n        this._originScheduleElement = this._startHeightPixel =\n        this._startGridY = this._startTopPixel = null;\n};\n\n/**\n * Clear guide element.\n */\nTimeResizeGuide.prototype._clearGuideElement = function() {\n    var guideElement = this.guideElement,\n        originElement = this._originScheduleElement;\n\n    if (!util.browser.msie) {\n        domutil.removeClass(global.document.body, config.classname('resizing'));\n    }\n\n    if (originElement) {\n        originElement.style.display = 'block';\n    }\n\n    domutil.remove(guideElement);\n\n    this.guideElement = this._getTopFunc = this._originScheduleElement =\n        this._startHeightPixel = this._startGridY = this._startTopPixel = null;\n};\n\n/**\n * Refresh guide element\n * @param {number} guideHeight - guide element's style height.\n * @param {number} minTimeHeight - time element's min height\n * @param {number} timeHeight - time element's height.\n */\nTimeResizeGuide.prototype._refreshGuideElement = function(guideHeight, minTimeHeight, timeHeight) {\n    var guideElement = this.guideElement;\n    var timeElement;\n\n    if (!guideElement) {\n        return;\n    }\n\n    timeElement = domutil.find(config.classname('.time-schedule-content-time'), guideElement);\n\n    reqAnimFrame.requestAnimFrame(function() {\n        guideElement.style.height = guideHeight + 'px';\n        guideElement.style.display = 'block';\n\n        if (timeElement) {\n            timeElement.style.height = timeHeight + 'px';\n            timeElement.style.minHeight = minTimeHeight + 'px';\n        }\n    });\n};\n\n/**\n * TimeMove#timeMoveDragstart event handler\n * @param {object} dragStartEventData - dragstart event data\n */\nTimeResizeGuide.prototype._onDragStart = function(dragStartEventData) {\n    var originElement = domutil.closest(\n            dragStartEventData.target,\n            config.classname('.time-date-schedule-block')\n        ),\n        schedule = dragStartEventData.schedule,\n        guideElement;\n\n    if (!util.browser.msie) {\n        domutil.addClass(global.document.body, config.classname('resizing'));\n    }\n\n    if (!originElement || !schedule) {\n        return;\n    }\n\n    this._startGridY = dragStartEventData.nearestGridY;\n    this._startHeightPixel = parseFloat(originElement.style.height);\n    this._startTopPixel = parseFloat(originElement.style.top);\n\n    this._originScheduleElement = originElement;\n    this._schedule = schedule;\n\n    guideElement = this.guideElement = originElement.cloneNode(true);\n    domutil.addClass(guideElement, config.classname('time-guide-resize'));\n\n    originElement.style.display = 'none';\n    dragStartEventData.relatedView.container.appendChild(guideElement);\n};\n\n/**\n * @param {object} dragEventData - event data from Drag#drag.\n */\nTimeResizeGuide.prototype._onDrag = function(dragEventData) {\n    var timeView = dragEventData.relatedView,\n        viewOptions = timeView.options,\n        viewHeight = timeView.getViewBound().height,\n        hourLength = viewOptions.hourEnd - viewOptions.hourStart,\n        guideElement = this.guideElement,\n        guideTop = parseFloat(guideElement.style.top),\n        gridYOffset = dragEventData.nearestGridY - this._startGridY,\n        // hourLength : viewHeight = gridYOffset : X;\n        gridYOffsetPixel = ratio(hourLength, viewHeight, gridYOffset),\n        goingDuration = this._schedule.goingDuration,\n        modelDuration = this._schedule.duration() / datetime.MILLISECONDS_PER_MINUTES,\n        comingDuration = this._schedule.comingDuration,\n        minutesLength = hourLength * 60,\n        timeHeight,\n        timeMinHeight,\n        minHeight,\n        maxHeight,\n        height;\n\n    height = (this._startHeightPixel + gridYOffsetPixel);\n    // at least large than 30min from schedule start time.\n    minHeight = guideTop + ratio(hourLength, viewHeight, 0.5);\n    minHeight -= this._startTopPixel;\n    timeMinHeight = minHeight;\n    minHeight += ratio(minutesLength, viewHeight, goingDuration) + ratio(minutesLength, viewHeight, comingDuration);\n    // smaller than 24h\n    maxHeight = viewHeight - guideTop;\n\n    height = Math.max(height, minHeight);\n    height = Math.min(height, maxHeight);\n\n    timeHeight = ratio(minutesLength, viewHeight, modelDuration) + gridYOffsetPixel;\n\n    this._refreshGuideElement(height, timeMinHeight, timeHeight);\n};\n\nmodule.exports = TimeResizeGuide;\n","/* eslint complexity: 0 */\n/**\n * @fileoverview Model of schedule.\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\nvar util = require('tui-code-snippet');\nvar TZDate = require('../common/timezone').Date;\nvar datetime = require('../common/datetime');\nvar dirty = require('../common/dirty');\nvar model = require('../common/model');\n\nvar SCHEDULE_MIN_DURATION = datetime.MILLISECONDS_SCHEDULE_MIN_DURATION;\n\n/**\n * Schedule category\n * @readonly\n * @enum {string}\n */\nvar SCHEDULE_CATEGORY = {\n    /** milestone */\n    MILESTONE: 'milestone',\n\n    /** task */\n    TASK: 'task',\n\n    /** all-day schedule */\n    ALLDAY: 'allday',\n\n    /** normal schedule */\n    TIME: 'time'\n};\n\n/**\n * The model of calendar schedules.\n * @constructor\n * @mixes dirty\n * @mixes model\n */\nfunction Schedule() {\n    /**\n     * `Optional` unique id for various use.\n     * @type {string}\n     */\n    this.id = '';\n\n    /**\n     * title for schedule.\n     * @type {string}\n     */\n    this.title = '';\n\n    /**\n     * body for schedule.\n     * @type {string}\n     */\n    this.body = '';\n\n    /**\n     * is schedule is all day schedule?\n     * @type {boolean}\n     */\n    this.isAllDay = false;\n\n    /**\n     * schedule start\n     * @type {TZDate}\n     */\n    this.start = null;\n\n    /**\n     * schedule end\n     * @type {TZDate}\n     */\n    this.end = null;\n\n    /**\n     * schedule text color\n     * @type {string}\n     */\n    this.color = '#000';\n\n    /**\n     * schedule block visibility\n     * @type {boolean}\n     */\n    this.isVisible = true;\n\n    /**\n     * schedule background color\n     * @type {string}\n     */\n    this.bgColor = '#a1b56c';\n\n    /**\n     * schedule background color when dragging it\n     * @type {string}\n     */\n    this.dragBgColor = '#a1b56c';\n\n    /**\n     * schedule left border color\n     * @type {string}\n     */\n    this.borderColor = '#000';\n\n    /**\n     * calendar ID\n     * @type {string}\n     */\n    this.calendarId = '';\n\n    /**\n     * Schedule category(milestone, task, allday, time)\n     * @type {string}\n     */\n    this.category = '';\n\n    /**\n     * Classification of work schedules (before work, before lunch, before work)\n     * @type {string}\n     */\n    this.dueDateClass = '';\n\n    /**\n     * Custom style for schedule element\n     * @type {string}\n     */\n    this.customStyle = '';\n\n    /**\n     * in progress flag to do something\n     * @type {boolean}\n     */\n    this.isPending = false;\n\n    /**\n     * focused schedule flag\n     * @type {boolean}\n     */\n    this.isFocused = false;\n\n    /**\n     * read-only schedule flag\n     * @type {boolean}\n     */\n    this.isReadOnly = false;\n\n    /**\n     * private schedule\n     * @type {boolean}\n     */\n    this.isPrivate = false;\n\n    /**\n     * location\n     * @type {string}\n     */\n    this.location = '';\n\n    /**\n     * attendees\n     * @type {Array.<string>}\n     */\n    this.attendees = [];\n\n    /**\n     * recurrence rule\n     * @type {any}\n     */\n    this.recurrenceRule = '';\n\n    /**\n     * state. 'Busy' is default.\n     * @type {string}\n     */\n    this.state = '';\n\n    /**\n     * travelTime: going-Duration minutes\n     * @type {number}\n     */\n    this.goingDuration = 0;\n\n    /**\n     * travelTime: coming-Duration minutes\n     * @type {number}\n     */\n    this.comingDuration = 0;\n\n    /**\n     * Separate data storage space independent of rendering.\n     * @type {object}\n     */\n    this.raw = null;\n\n    // initialize model id\n    util.stamp(this);\n}\n\n/**********\n * static props\n **********/\n\nSchedule.schema = {\n    required: ['title'],\n    dateRange: ['start', 'end']\n};\n\n/**\n * create schedule model from json(object) data.\n * @param {object} data object for model.\n * @returns {Schedule} Schedule model instance.\n */\nSchedule.create = function(data) {\n    var inst = new Schedule();\n    inst.init(data);\n\n    return inst;\n};\n\n/**********\n * prototype props\n **********/\n\n/**\n * Initialize schedule instance.\n * @param {object} options options.\n */\nSchedule.prototype.init = function(options) {\n    options = util.extend({}, options);\n    if (options.category === SCHEDULE_CATEGORY.ALLDAY) {\n        options.isAllDay = true;\n    }\n\n    this.id = options.id || '';\n    this.title = options.title || '';\n    this.body = options.body || '';\n    this.isAllDay = util.isExisty(options.isAllDay) ? options.isAllDay : false;\n    this.isVisible = util.isExisty(options.isVisible) ? options.isVisible : true;\n\n    this.color = options.color || this.color;\n    this.bgColor = options.bgColor || this.bgColor;\n    this.dragBgColor = options.dragBgColor || this.dragBgColor;\n    this.borderColor = options.borderColor || this.borderColor;\n    this.calendarId = options.calendarId || '';\n    this.category = options.category || '';\n    this.dueDateClass = options.dueDateClass || '';\n    this.customStyle = options.customStyle || '';\n    this.location = options.location || '';\n    this.attendees = options.attendees || [];\n    this.recurrenceRule = options.recurrenceRule || '';\n    this.isPrivate = options.isPrivate || false;\n    this.isPending = options.isPending || false;\n    this.isFocused = options.isFocused || false;\n    this.isReadOnly = options.isReadOnly || false;\n    this.goingDuration = options.goingDuration || 0;\n    this.comingDuration = options.comingDuration || 0;\n    this.state = options.state || '';\n\n    if (this.isAllDay) {\n        this.setAllDayPeriod(options.start, options.end);\n    } else {\n        this.setTimePeriod(options.start, options.end);\n    }\n\n    this.raw = options.raw || null;\n};\n\nSchedule.prototype.setAllDayPeriod = function(start, end) {\n    // If it is an all-day schedule, only the date information of the string is used.\n    if (util.isString(start) && start.length === 10) {\n        start = datetime.parse(start);\n    } else {\n        start = new TZDate(start || Date.now());\n    }\n\n    if (util.isString(end) && end.length === 10) {\n        end = datetime.parse(end);\n        end.setHours(23, 59, 59);\n    } else {\n        end = new TZDate(end || start);\n    }\n\n    this.start = datetime.start(start);\n    this.end = datetime.renderEnd(start, end);\n};\n\nSchedule.prototype.setTimePeriod = function(start, end) {\n    this.start = new TZDate(start || Date.now());\n    this.end = new TZDate(end || this.start);\n\n    if (!end) {\n        this.end.setMinutes(this.end.getMinutes() + 30);\n    }\n};\n\n/**\n * @returns {Date} render start date.\n */\nSchedule.prototype.getStarts = function() {\n    return this.start;\n};\n\n/**\n * @returns {Date} render end date.\n */\nSchedule.prototype.getEnds = function() {\n    return this.end;\n};\n\n/**\n * @returns {number} instance unique id.\n */\nSchedule.prototype.cid = function() {\n    return util.stamp(this);\n};\n\n/**\n * Check two schedule are equals (means title, isAllDay, start, end are same)\n * @param {Schedule} schedule Schedule model instance to compare.\n * @returns {boolean} Return false when not same.\n */\nSchedule.prototype.equals = function(schedule) {\n    if (this.id !== schedule.id) {\n        return false;\n    }\n\n    if (this.title !== schedule.title) {\n        return false;\n    }\n\n    if (this.body !== schedule.body) {\n        return false;\n    }\n\n    if (this.isAllDay !== schedule.isAllDay) {\n        return false;\n    }\n\n    if (datetime.compare(this.getStarts(), schedule.getStarts()) !== 0) {\n        return false;\n    }\n\n    if (datetime.compare(this.getEnds(), schedule.getEnds()) !== 0) {\n        return false;\n    }\n\n    if (this.color !== schedule.color) {\n        return false;\n    }\n\n    if (this.bgColor !== schedule.bgColor) {\n        return false;\n    }\n\n    if (this.dragBgColor !== schedule.dragBgColor) {\n        return false;\n    }\n\n    if (this.borderColor !== schedule.borderColor) {\n        return false;\n    }\n\n    return true;\n};\n\n/**\n * return duration between start and end.\n * @returns {Date} duration (UTC)\n */\nSchedule.prototype.duration = function() {\n    var start = this.getStarts(),\n        end = this.getEnds(),\n        duration;\n\n    if (this.isAllDay) {\n        duration = datetime.end(end) - datetime.start(start);\n    } else {\n        duration = end - start;\n    }\n\n    return duration;\n};\n\n/**\n * Returns true if the given Schedule coincides with the same time as the\n * calling Schedule.\n * @param {Schedule} schedule The other schedule to compare with this Schedule.\n * @returns {boolean} If the other schedule occurs within the same time as the first object.\n */\nSchedule.prototype.collidesWith = function(schedule) {\n    var ownStarts = this.getStarts(),\n        ownEnds = this.getEnds(),\n        start = schedule.getStarts(),\n        end = schedule.getEnds();\n    var ownGoingDuration = datetime.millisecondsFrom('minutes', this.goingDuration),\n        ownComingDuration = datetime.millisecondsFrom('minutes', this.comingDuration),\n        goingDuration = datetime.millisecondsFrom('minutes', schedule.goingDuration),\n        comingDuration = datetime.millisecondsFrom('minutes', schedule.comingDuration);\n\n    if (Math.abs(ownEnds - ownStarts) < SCHEDULE_MIN_DURATION) {\n        ownEnds += SCHEDULE_MIN_DURATION;\n    }\n\n    if (Math.abs(end - start) < SCHEDULE_MIN_DURATION) {\n        end += SCHEDULE_MIN_DURATION;\n    }\n\n    ownStarts -= ownGoingDuration;\n    ownEnds += ownComingDuration;\n    start -= goingDuration;\n    end += comingDuration;\n\n    if ((start > ownStarts && start < ownEnds) ||\n        (end > ownStarts && end < ownEnds) ||\n        (start <= ownStarts && end >= ownEnds)) {\n        return true;\n    }\n\n    return false;\n};\n\nmodel.mixin(Schedule.prototype);\ndirty.mixin(Schedule.prototype);\n\nmodule.exports = Schedule;\n","/**\n * @fileoverview Model for views\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\nvar util = require('tui-code-snippet');\nvar datetime = require('../../common/datetime');\n\nvar SCHEDULE_MIN_DURATION = datetime.MILLISECONDS_SCHEDULE_MIN_DURATION;\n\n/**\n * Schedule ViewModel\n * @constructor\n * @param {Schedule} schedule Schedule instance.\n */\nfunction ScheduleViewModel(schedule) {\n    /**\n     * The model of schedule.\n     * @type {Schedule}\n     */\n    this.model = schedule;\n\n    /**\n     * @type {number}\n     */\n    this.top = 0;\n\n    /**\n     * @type {number}\n     */\n    this.left = 0;\n\n    /**\n     * @type {number}\n     */\n    this.width = 0;\n\n    /**\n     * @type {number}\n     */\n    this.height = 0;\n\n    /**\n     * Represent schedule has collide with other schedules when rendering.\n     * @type {boolean}\n     */\n    this.hasCollide = false;\n\n    /**\n     * Extra space at rigth side of this schedule.\n     * @type {number}\n     */\n    this.extraSpace = 0;\n\n    /**\n     * represent this schedule block is not visible after rendered.\n     *\n     * in month view, some viewmodel in date need to hide when already rendered before dates.\n     *\n     * set true then it just shows empty space.\n     * @type {boolean}\n     */\n    this.hidden = false;\n\n    /**\n     * whether the schedule includes multiple dates\n     */\n    this.hasMultiDates = false;\n\n    /**\n     * represent render start date used at rendering.\n     *\n     * if set null then use model's 'start' property.\n     * @type {TZDate}\n     */\n    this.renderStarts = null;\n\n    /**\n     * whether the actual start-date is before the render-start-date\n     * @type {boolean}\n     */\n    this.exceedLeft = false;\n\n    /**\n     * represent render end date used at rendering.\n     *\n     * if set null then use model's 'end' property.\n     * @type {TZDate}\n     */\n    this.renderEnds = null;\n\n    /**\n     * whether the actual end-date is after the render-end-date\n     * @type {boolean}\n     */\n    this.exceedRight = false;\n}\n\n/**********\n * static props\n **********/\n\n/**\n * ScheduleViewModel factory method.\n * @param {Schedule} schedule Schedule instance.\n * @returns {ScheduleViewModel} ScheduleViewModel instance.\n */\nScheduleViewModel.create = function(schedule) {\n    return new ScheduleViewModel(schedule);\n};\n\n/**********\n * prototype props\n **********/\n\n/**\n * return renderStarts property to render properly when specific schedule that exceed rendering date range.\n *\n * if renderStarts is not set. return model's start property.\n * @override\n * @returns {Date} render start date.\n */\nScheduleViewModel.prototype.getStarts = function() {\n    if (this.renderStarts) {\n        return this.renderStarts;\n    }\n\n    return this.model.start;\n};\n\n/**\n * return renderStarts property to render properly when specific schedule that exceed rendering date range.\n *\n * if renderEnds is not set. return model's end property.\n * @override\n * @returns {Date} render end date.\n */\nScheduleViewModel.prototype.getEnds = function() {\n    if (this.renderEnds) {\n        return this.renderEnds;\n    }\n\n    return this.model.end;\n};\n\n/**\n * @returns {number} unique number for model.\n */\nScheduleViewModel.prototype.cid = function() {\n    return util.stamp(this.model);\n};\n\n/**\n * Shadowing valueOf method for schedule sorting.\n * @returns {Schedule} The model of schedule.\n */\nScheduleViewModel.prototype.valueOf = function() {\n    return this.model;\n};\n\n/**\n * Link duration method\n * @returns {number} Schedule#duration result.\n */\nScheduleViewModel.prototype.duration = function() {\n    return this.model.duration();\n};\n\n/**\n * Link collidesWith method\n * @param {Schedule|ScheduleViewModel} viewModel - Model or viewmodel instance of Schedule.\n * @returns {boolean} Schedule#collidesWith result.\n */\nScheduleViewModel.prototype.collidesWith = function(viewModel) {\n    var ownStarts = this.getStarts(),\n        ownEnds = this.getEnds(),\n        start = viewModel.getStarts(),\n        end = viewModel.getEnds();\n    var ownGoingDuration = datetime.millisecondsFrom('minutes', this.valueOf().goingDuration),\n        ownComingDuration = datetime.millisecondsFrom('minutes', this.valueOf().comingDuration),\n        goingDuration = datetime.millisecondsFrom('minutes', viewModel.valueOf().goingDuration),\n        comingDuration = datetime.millisecondsFrom('minutes', viewModel.valueOf().comingDuration);\n\n    if (Math.abs(ownEnds - ownStarts) < SCHEDULE_MIN_DURATION) {\n        ownEnds += SCHEDULE_MIN_DURATION;\n    }\n\n    if (Math.abs(end - start) < SCHEDULE_MIN_DURATION) {\n        end += SCHEDULE_MIN_DURATION;\n    }\n\n    ownStarts -= ownGoingDuration;\n    ownEnds += ownComingDuration;\n    start -= goingDuration;\n    end += comingDuration;\n\n    if ((start > ownStarts && start < ownEnds) ||\n        (end > ownStarts && end < ownEnds) ||\n        (start <= ownStarts && end >= ownEnds)) {\n        return true;\n    }\n\n    return false;\n};\n\nmodule.exports = ScheduleViewModel;\n","/**\n * @fileoverview The standard theme\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\n/**\n * \"common\" prefix is for entire calendar. \"common\" properties can be overriden by \"week\", \"month\".\n * \"week\" prefix is for weekly and daily view.\n * \"month\" prefix is for monthly view.\n */\nvar theme = {\n    'common.border': '1px solid #e5e5e5',\n    'common.backgroundColor': 'white',\n    'common.holiday.color': '#ff4040',\n    'common.saturday.color': '#333',\n    'common.dayname.color': '#333',\n    'common.today.color': '#333',\n\n    // creation guide style\n    'common.creationGuide.backgroundColor': 'rgba(81, 92, 230, 0.05)',\n    'common.creationGuide.border': '1px solid #515ce6',\n\n    // month header 'dayname'\n    'month.dayname.height': '31px',\n    'month.dayname.borderLeft': 'none',\n    'month.dayname.paddingLeft': '10px',\n    'month.dayname.paddingRight': '0',\n    'month.dayname.backgroundColor': 'inherit',\n    'month.dayname.fontSize': '12px',\n    'month.dayname.fontWeight': 'normal',\n    'month.dayname.textAlign': 'left',\n\n    // month day grid cell 'day'\n    'month.holidayExceptThisMonth.color': 'rgba(255, 64, 64, 0.4)',\n    'month.dayExceptThisMonth.color': 'rgba(51, 51, 51, 0.4)',\n    'month.weekend.backgroundColor': 'inherit',\n    'month.day.fontSize': '14px',\n\n    // month schedule style\n    'month.schedule.borderRadius': '2px',\n    'month.schedule.height': '24px',\n    'month.schedule.marginTop': '2px',\n    'month.schedule.marginLeft': '8px',\n    'month.schedule.marginRight': '8px',\n\n    // month more view\n    'month.moreView.border': '1px solid #d5d5d5',\n    'month.moreView.boxShadow': '0 2px 6px 0 rgba(0, 0, 0, 0.1)',\n    'month.moreView.backgroundColor': 'white',\n    'month.moreView.paddingBottom': '17px',\n    'month.moreViewTitle.height': '44px',\n    'month.moreViewTitle.marginBottom': '12px',\n    'month.moreViewTitle.borderBottom': 'none',\n    'month.moreViewTitle.padding': '12px 17px 0 17px',\n    'month.moreViewList.padding': '0 17px',\n\n    // week header 'dayname'\n    'week.dayname.height': '42px',\n    'week.dayname.borderTop': '1px solid #e5e5e5',\n    'week.dayname.borderBottom': '1px solid #e5e5e5',\n    'week.dayname.borderLeft': 'none',\n    'week.dayname.paddingLeft': '0',\n    'week.dayname.backgroundColor': 'inherit',\n    'week.dayname.textAlign': 'left',\n    'week.today.color': 'inherit',\n    'week.pastDay.color': '#bbb',\n\n    // week vertical panel 'vpanel'\n    'week.vpanelSplitter.border': '1px solid #e5e5e5',\n    'week.vpanelSplitter.height': '3px',\n\n    // week daygrid 'daygrid'\n    'week.daygrid.borderRight': '1px solid #e5e5e5',\n    'week.daygrid.backgroundColor': 'inherit',\n\n    'week.daygridLeft.width': '72px',\n    'week.daygridLeft.backgroundColor': 'inherit',\n    'week.daygridLeft.paddingRight': '8px',\n    'week.daygridLeft.borderRight': '1px solid #e5e5e5',\n\n    'week.today.backgroundColor': 'rgba(81, 92, 230, 0.05)',\n    'week.weekend.backgroundColor': 'inherit',\n\n    // week timegrid 'timegrid'\n    'week.timegridLeft.width': '72px',\n    'week.timegridLeft.backgroundColor': 'inherit',\n    'week.timegridLeft.borderRight': '1px solid #e5e5e5',\n    'week.timegridLeft.fontSize': '11px',\n\n    'week.timegridOneHour.height': '52px',\n    'week.timegridHalfHour.height': '26px',\n    'week.timegridHalfHour.borderBottom': 'none',\n    'week.timegridHorizontalLine.borderBottom': '1px solid #e5e5e5',\n\n    'week.timegrid.paddingRight': '8px',\n    'week.timegrid.borderRight': '1px solid #e5e5e5',\n    'week.timegridSchedule.borderRadius': '2px',\n    'week.timegridSchedule.paddingLeft': '2px',\n\n    'week.currentTime.color': '#515ce6',\n    'week.currentTime.fontSize': '11px',\n    'week.currentTime.fontWeight': 'normal',\n\n    'week.currentTimeLinePast.border': '1px dashed #515ce6',\n    'week.currentTimeLineBullet.backgroundColor': '#515ce6',\n    'week.currentTimeLineToday.border': '1px solid #515ce6',\n    'week.currentTimeLineFuture.border': 'none',\n\n    // week creation guide style\n    'week.creationGuide.color': '#515ce6',\n    'week.creationGuide.fontSize': '11px',\n    'week.creationGuide.fontWeight': 'bold',\n\n    // week daygrid schedule style\n    'week.dayGridSchedule.borderRadius': '2px',\n    'week.dayGridSchedule.height': '24px',\n    'week.dayGridSchedule.marginTop': '2px',\n    'week.dayGridSchedule.marginLeft': '8px',\n    'week.dayGridSchedule.marginRight': '8px'\n};\n\nmodule.exports = theme;\n","/**\n * @fileoverview The all configuration of a theme\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\nvar util = require('tui-code-snippet');\nvar themeStandard = require('./standard');\nvar themeConfig = require('./themeConfig');\nvar common = require('../common/common');\n\n/**\n * Theme manager\n * @param {object} customTheme - custom theme\n */\nfunction Theme(customTheme) {\n    var theme = customTheme || themeStandard;\n\n    /**\n     * @type {util.HashMap}\n     */\n    this._map = new util.HashMap();\n\n    this.setStyles(theme);\n}\n\n/**\n * Get a style with key\n * @param {string} key - key for getting a style\n * @returns {string|undefined} style\n */\nTheme.prototype.getStyle = function(key) {\n    return this._map.get(key);\n};\n\n/**\n * Set a style\n * @param {string} key - key for setting a style\n * @param {string} style - style value\n * @returns {boolean} true if the give key is valid or false\n */\nTheme.prototype.setStyle = function(key, style) {\n    var styles = {};\n    styles[key] = style;\n\n    return this.setStyles(styles).length === 0;\n};\n\n/**\n * Set styles\n * @param {object} styles - multiple styles map\n * @returns {Array.<string>} error keys\n */\nTheme.prototype.setStyles = function(styles) {\n    var errors = [];\n\n    util.forEach(styles, function(style, key) {\n        if (util.isUndefined(themeConfig[key])) {\n            errors.push(key);\n        } else {\n            this._map.set(key, style);\n            common.set(this, key, style);\n        }\n    }, this);\n\n    // apply missing styles which have to be default\n    util.forEach(themeConfig, function(style, key) {\n        if (!this.getStyle(key)) {\n            this._map.set(key, style);\n            common.set(this, key, style);\n        }\n    }, this);\n\n    return errors;\n};\n\n/**\n * Delete all styles\n */\nTheme.prototype.clear = function() {\n    var keys = this._map.keys();\n    var categories = {};\n    util.forEach(keys, function(key) {\n        var category = key.split('.')[0];\n        if (!categories[category]) {\n            categories[category] = category;\n        }\n    });\n\n    util.forEach(categories, function(child) {\n        delete this[child];\n    }, this);\n\n    this._map.removeAll();\n};\n\nmodule.exports = Theme;\n","/**\n * @fileoverview The all configuration of a theme\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\n/**\n * Full configuration for theme.\n * \"common\" prefix is for entire calendar. \"common\" properties can be overriden by \"week\", \"month\".\n * \"week\" prefix is for weekly and daily view.\n * \"month\" prefix is for monthly view.\n * @typedef {object} themeConfig\n * @example\n // default keys and styles\n var themeConfig = {\n    'common.border': '1px solid #e5e5e5',\n    'common.backgroundColor': 'white',\n    'common.holiday.color': '#ff4040',\n    'common.saturday.color': '#333',\n    'common.dayname.color': '#333',\n    'common.today.color': '#333',\n\n    // creation guide style\n    'common.creationGuide.backgroundColor': 'rgba(81, 92, 230, 0.05)',\n    'common.creationGuide.border': '1px solid #515ce6',\n\n    // month header 'dayname'\n    'month.dayname.height': '31px',\n    'month.dayname.borderLeft': '1px solid #e5e5e5',\n    'month.dayname.paddingLeft': '10px',\n    'month.dayname.paddingRight': '10px',\n    'month.dayname.backgroundColor': 'inherit',\n    'month.dayname.fontSize': '12px',\n    'month.dayname.fontWeight': 'normal',\n    'month.dayname.textAlign': 'left',\n\n    // month day grid cell 'day'\n    'month.holidayExceptThisMonth.color': 'rgba(255, 64, 64, 0.4)',\n    'month.dayExceptThisMonth.color': 'rgba(51, 51, 51, 0.4)',\n    'month.weekend.backgroundColor': 'inherit',\n    'month.day.fontSize': '14px',\n\n    // month schedule style\n    'month.schedule.borderRadius': '2px',\n    'month.schedule.height': '24px',\n    'month.schedule.marginTop': '2px',\n    'month.schedule.marginLeft': '8px',\n    'month.schedule.marginRight': '8px',\n\n    // month more view\n    'month.moreView.border': '1px solid #d5d5d5',\n    'month.moreView.boxShadow': '0 2px 6px 0 rgba(0, 0, 0, 0.1)',\n    'month.moreView.backgroundColor': 'white',\n    'month.moreView.paddingBottom': '17px',\n    'month.moreViewTitle.height': '44px',\n    'month.moreViewTitle.marginBottom': '12px',\n    'month.moreViewTitle.backgroundColor': 'inherit',\n    'month.moreViewTitle.borderBottom': 'none',\n    'month.moreViewTitle.padding': '12px 17px 0 17px',\n    'month.moreViewList.padding': '0 17px',\n\n    // week header 'dayname'\n    'week.dayname.height': '42px',\n    'week.dayname.borderTop': '1px solid #e5e5e5',\n    'week.dayname.borderBottom': '1px solid #e5e5e5',\n    'week.dayname.borderLeft': 'inherit',\n    'week.dayname.paddingLeft': '0',\n    'week.dayname.backgroundColor': 'inherit',\n    'week.dayname.textAlign': 'left',\n    'week.today.color': '#333',\n    'week.pastDay.color': '#bbb',\n\n    // week vertical panel 'vpanel'\n    'week.vpanelSplitter.border': '1px solid #e5e5e5',\n    'week.vpanelSplitter.height': '3px',\n\n    // week daygrid 'daygrid'\n    'week.daygrid.borderRight': '1px solid #e5e5e5',\n    'week.daygrid.backgroundColor': 'inherit',\n\n    'week.daygridLeft.width': '72px',\n    'week.daygridLeft.backgroundColor': 'inherit',\n    'week.daygridLeft.paddingRight': '8px',\n    'week.daygridLeft.borderRight': '1px solid #e5e5e5',\n\n    'week.today.backgroundColor': 'rgba(81, 92, 230, 0.05)',\n    'week.weekend.backgroundColor': 'inherit',\n\n    // week timegrid 'timegrid'\n    'week.timegridLeft.width': '72px',\n    'week.timegridLeft.backgroundColor': 'inherit',\n    'week.timegridLeft.borderRight': '1px solid #e5e5e5',\n    'week.timegridLeft.fontSize': '11px',\n    'week.timegridLeftTimezoneLabel.height': '40px',\n    'week.timegridLeftAdditionalTimezone.backgroundColor': 'white',\n\n    'week.timegridOneHour.height': '52px',\n    'week.timegridHalfHour.height': '26px',\n    'week.timegridHalfHour.borderBottom': 'none',\n    'week.timegridHorizontalLine.borderBottom': '1px solid #e5e5e5',\n\n    'week.timegrid.paddingRight': '8px',\n    'week.timegrid.borderRight': '1px solid #e5e5e5',\n    'week.timegridSchedule.borderRadius': '2px',\n    'week.timegridSchedule.paddingLeft': '2px',\n\n    'week.currentTime.color': '#515ce6',\n    'week.currentTime.fontSize': '11px',\n    'week.currentTime.fontWeight': 'normal',\n\n    'week.pastTime.color': '#bbb',\n    'week.pastTime.fontWeight': 'normal',\n\n    'week.futureTime.color': '#333',\n    'week.futureTime.fontWeight': 'normal',\n\n    'week.currentTimeLinePast.border': '1px dashed #515ce6',\n    'week.currentTimeLineBullet.backgroundColor': '#515ce6',\n    'week.currentTimeLineToday.border': '1px solid #515ce6',\n    'week.currentTimeLineFuture.border': 'none',\n\n    // week creation guide style\n    'week.creationGuide.color': '#515ce6',\n    'week.creationGuide.fontSize': '11px',\n    'week.creationGuide.fontWeight': 'bold',\n\n    // week daygrid schedule style\n    'week.dayGridSchedule.borderRadius': '2px',\n    'week.dayGridSchedule.height': '24px',\n    'week.dayGridSchedule.marginTop': '2px',\n    'week.dayGridSchedule.marginLeft': '8px',\n    'week.dayGridSchedule.marginRight': '8px'\n};\n */\nvar themeConfig = {\n    'common.border': '1px solid #e5e5e5',\n    'common.backgroundColor': 'white',\n    'common.holiday.color': '#ff4040',\n    'common.saturday.color': '#333',\n    'common.dayname.color': '#333',\n    'common.today.color': '#333',\n\n    // creation guide style\n    'common.creationGuide.backgroundColor': 'rgba(81, 92, 230, 0.05)',\n    'common.creationGuide.border': '1px solid #515ce6',\n\n    // month header 'dayname'\n    'month.dayname.height': '31px',\n    'month.dayname.borderLeft': '1px solid #e5e5e5',\n    'month.dayname.paddingLeft': '10px',\n    'month.dayname.paddingRight': '10px',\n    'month.dayname.backgroundColor': 'inherit',\n    'month.dayname.fontSize': '12px',\n    'month.dayname.fontWeight': 'normal',\n    'month.dayname.textAlign': 'left',\n\n    // month day grid cell 'day'\n    'month.holidayExceptThisMonth.color': 'rgba(255, 64, 64, 0.4)',\n    'month.dayExceptThisMonth.color': 'rgba(51, 51, 51, 0.4)',\n    'month.weekend.backgroundColor': 'inherit',\n    'month.day.fontSize': '14px',\n\n    // month schedule style\n    'month.schedule.borderRadius': '2px',\n    'month.schedule.height': '24px',\n    'month.schedule.marginTop': '2px',\n    'month.schedule.marginLeft': '8px',\n    'month.schedule.marginRight': '8px',\n\n    // month more view\n    'month.moreView.border': '1px solid #d5d5d5',\n    'month.moreView.boxShadow': '0 2px 6px 0 rgba(0, 0, 0, 0.1)',\n    'month.moreView.backgroundColor': 'white',\n    'month.moreView.paddingBottom': '17px',\n    'month.moreViewTitle.height': '44px',\n    'month.moreViewTitle.marginBottom': '12px',\n    'month.moreViewTitle.backgroundColor': 'inherit',\n    'month.moreViewTitle.borderBottom': 'none',\n    'month.moreViewTitle.padding': '12px 17px 0 17px',\n    'month.moreViewList.padding': '0 17px',\n\n    // week header 'dayname'\n    'week.dayname.height': '42px',\n    'week.dayname.borderTop': '1px solid #e5e5e5',\n    'week.dayname.borderBottom': '1px solid #e5e5e5',\n    'week.dayname.borderLeft': 'inherit',\n    'week.dayname.paddingLeft': '0',\n    'week.dayname.backgroundColor': 'inherit',\n    'week.dayname.textAlign': 'left',\n    'week.today.color': '#333',\n    'week.pastDay.color': '#bbb',\n\n    // week vertical panel 'vpanel'\n    'week.vpanelSplitter.border': '1px solid #e5e5e5',\n    'week.vpanelSplitter.height': '3px',\n\n    // week daygrid 'daygrid'\n    'week.daygrid.borderRight': '1px solid #e5e5e5',\n    'week.daygrid.backgroundColor': 'inherit',\n\n    'week.daygridLeft.width': '72px',\n    'week.daygridLeft.backgroundColor': 'inherit',\n    'week.daygridLeft.paddingRight': '8px',\n    'week.daygridLeft.borderRight': '1px solid #e5e5e5',\n\n    'week.today.backgroundColor': 'rgba(81, 92, 230, 0.05)',\n    'week.weekend.backgroundColor': 'inherit',\n\n    // week timegrid 'timegrid'\n    'week.timegridLeft.width': '72px',\n    'week.timegridLeft.backgroundColor': 'inherit',\n    'week.timegridLeft.borderRight': '1px solid #e5e5e5',\n    'week.timegridLeft.fontSize': '11px',\n    'week.timegridLeftTimezoneLabel.height': '40px',\n    'week.timegridLeftAdditionalTimezone.backgroundColor': 'white',\n\n    'week.timegridOneHour.height': '52px',\n    'week.timegridHalfHour.height': '26px',\n    'week.timegridHalfHour.borderBottom': 'none',\n    'week.timegridHorizontalLine.borderBottom': '1px solid #e5e5e5',\n\n    'week.timegrid.paddingRight': '8px',\n    'week.timegrid.borderRight': '1px solid #e5e5e5',\n    'week.timegridSchedule.borderRadius': '2px',\n    'week.timegridSchedule.paddingLeft': '2px',\n\n    'week.currentTime.color': '#515ce6',\n    'week.currentTime.fontSize': '11px',\n    'week.currentTime.fontWeight': 'normal',\n\n    'week.pastTime.color': '#bbb',\n    'week.pastTime.fontWeight': 'normal',\n\n    'week.futureTime.color': '#333',\n    'week.futureTime.fontWeight': 'normal',\n\n    'week.currentTimeLinePast.border': '1px dashed #515ce6',\n    'week.currentTimeLineBullet.backgroundColor': '#515ce6',\n    'week.currentTimeLineToday.border': '1px solid #515ce6',\n    'week.currentTimeLineFuture.border': 'none',\n\n    // week creation guide style\n    'week.creationGuide.color': '#515ce6',\n    'week.creationGuide.fontSize': '11px',\n    'week.creationGuide.fontWeight': 'bold',\n\n    // week daygrid schedule style\n    'week.dayGridSchedule.borderRadius': '2px',\n    'week.dayGridSchedule.height': '24px',\n    'week.dayGridSchedule.marginTop': '2px',\n    'week.dayGridSchedule.marginLeft': '8px',\n    'week.dayGridSchedule.marginRight': '8px'\n};\n\nmodule.exports = themeConfig;\n","/**\n * @fileoverview Layout view. wrap all view containers at outside.\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\nvar util = require('tui-code-snippet');\nvar config = require('../config');\nvar domutil = require('../common/domutil');\nvar Collection = require('../common/collection');\nvar View = require('./view');\n\n/**\n * Layout view for toggle each child view. It will controlled via navigation UI.\n * @constructor\n * @extends {View}\n * @param {HTMLElement} container Container element to use layout view.\n * @param {Theme} theme - theme instance\n */\nfunction Layout(container, theme) {\n    container = domutil.appendHTMLElement('div', container, config.classname('layout'));\n\n    /**\n     * @type {HTMLElement}\n     */\n    this.container = container;\n\n    /*eslint-disable*/\n    /**\n     * @type {Collection} Child view collection.\n     */\n    this.children = new Collection(function(childView) {\n        return childView.viewName;\n    });\n    /* eslint-enable*/\n\n    /**\n     * @type {Theme}\n     */\n    this.theme = theme;\n\n    this.applyTheme();\n}\n\nutil.inherit(Layout, View);\n\n/**\n * Clear child views.\n */\nLayout.prototype.clear = function() {\n    this.children.each(function(childView) {\n        childView.destroy();\n    });\n\n    this.children.clear();\n    this.container.innerHTML = '';\n};\n\n/**\n * Remove child view.\n * @override\n * @param {(string|View)} viewName - name of view or instance.\n */\nLayout.prototype.removeChild = function(viewName) {\n    this.children.remove(viewName);\n};\n\n/**\n * Toggle child views.\n * @param {string} viewName - Name of view.\n */\nLayout.prototype.toggleChildView = function(viewName) {\n    var container,\n        prefix = ['add', 'remove'],\n        flag;\n\n    this.children.each(function(childView) {\n        container = childView.container;\n        flag = Number(childView.viewName === viewName);\n        domutil[prefix[flag] + 'Class'](container, config.classname('hidden'));\n    });\n};\n\nLayout.prototype.applyTheme = function() {\n    var style = this.container.style;\n    var theme = this.theme.common;\n\n    // background color\n    style.backgroundColor = theme.backgroundColor;\n};\n\nmodule.exports = Layout;\n","/**\n * @fileoverview Month view\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\nvar util = require('tui-code-snippet');\nvar config = require('../../config'),\n    datetime = require('../../common/datetime'),\n    domutil = require('../../common/domutil'),\n    TZDate = require('../../common/timezone').Date,\n    tmpl = require('../template/month/month.hbs'),\n    View = require('../view'),\n    VLayout = require('../..//common/vlayout'),\n    WeekdayInMonth = require('./weekdayInMonth');\nvar mmin = Math.min;\n\n/**\n * @constructor\n * @extends {View}\n * @param {object} options - options\n * @param {function} [options.scheduleFilter] - schedule filter\n * @param {number} [options.startDayOfWeek=0] - start day of week\n * @param {string} [options.renderMonth='2015-12'] - render month\n * @param {string[]} [options.daynames] - daynames to use upside of month view\n * @param {HTMLElement} container - container element\n * @param {Base.Month} controller - controller instance\n */\nfunction Month(options, container, controller) {\n    var theme = controller ? controller.theme : null;\n    var monthOption;\n\n    options = options || {};\n    monthOption = options ? options.month : {};\n\n    View.call(this, container);\n\n    /**\n     * @type {Base.Month}\n     */\n    this.controller = controller;\n\n    /**\n     * @type {VLayout}\n     */\n    this.vLayout = new VLayout({\n        panels: [\n            {height: parseInt(controller.theme.month.dayname.height, 10) || 42},\n            {autoHeight: true}\n        ]\n    }, container, theme);\n\n    /**\n     * @type {string}\n     */\n    this.options = util.extend({\n        scheduleFilter: function(schedule) {\n            return Boolean(schedule.isVisible);\n        },\n        startDayOfWeek: 0,\n        renderMonth: '2018-01',\n        daynames: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n        narrowWeekend: false,\n        visibleWeeksCount: null,\n        isAlways6Week: true,\n        isReadOnly: options.isReadOnly,\n        grid: {\n            header: {\n                height: 34\n            },\n            footer: {\n                height: 3\n            }\n        }\n    }, monthOption);\n\n    this.options.grid.header = util.extend({\n        height: 34\n    }, util.pick(monthOption, 'grid', 'header'));\n    this.options.grid.footer = util.extend({\n        height: 3\n    }, util.pick(monthOption, 'grid', 'footer'));\n\n    /**\n     * horizontal grid information\n     * @type {Object}\n     */\n    this.grids = datetime.getGridLeftAndWidth(\n        this.options.daynames.length,\n        this.options.narrowWeekend,\n        this.options.startDayOfWeek);\n}\n\nutil.inherit(Month, View);\n\n/**\n * Name of view. for managing subview at layout view\n * @type {string}\n */\nMonth.prototype.viewName = 'month';\n\n/**\n * Get calendar array by supplied date\n * @param {string} renderMonth - month to render YYYY-MM, weeks2/3 to render YYYY-MM-DD\n * @returns {array.<Date[]>} calendar array\n */\nMonth.prototype._getMonthCalendar = function(renderMonth) {\n    var date = new TZDate(renderMonth);\n    var startDayOfWeek = this.options.startDayOfWeek || 0;\n    var visibleWeeksCount = mmin(this.options.visibleWeeksCount || 0, 6);\n    var workweek = this.options.workweek || false;\n    var datetimeOptions, calendar;\n\n    if (this.options.visibleWeeksCount) {\n        datetimeOptions = {\n            startDayOfWeek: startDayOfWeek,\n            isAlways6Week: false,\n            visibleWeeksCount: visibleWeeksCount,\n            workweek: workweek\n        };\n    } else {\n        datetimeOptions = {\n            startDayOfWeek: startDayOfWeek,\n            isAlways6Week: this.options.isAlways6Week,\n            workweek: workweek\n        };\n    }\n\n    calendar = datetime.arr2dCalendar(date, datetimeOptions);\n\n    return calendar;\n};\n\n/**\n * Create children view (week) and add children\n * @param {HTMLElement} container - container element to render weeks\n * @param {array.<Date[]>} calendar - calendar array from datetime#arr2dCalendar\n * @param {Theme} theme - theme instance\n */\nMonth.prototype._renderChildren = function(container, calendar, theme) {\n    var self = this;\n    var weekCount = calendar.length;\n    var heightPercent = 100 / weekCount;\n    var opt = this.options;\n    var renderMonth = opt.renderMonth;\n    var narrowWeekend = opt.narrowWeekend;\n    var startDayOfWeek = opt.startDayOfWeek;\n    var visibleWeeksCount = opt.visibleWeeksCount;\n    var visibleScheduleCount = opt.visibleScheduleCount;\n    var gridOption = opt.grid;\n    var isReadOnly = opt.isReadOnly;\n\n    container.innerHTML = '';\n    this.children.clear();\n\n    util.forEach(calendar, function(weekArr) {\n        var start = new TZDate(weekArr[0]),\n            end = new TZDate(weekArr[weekArr.length - 1]),\n            weekdayViewContainer,\n            weekdayView;\n\n        weekdayViewContainer = domutil.appendHTMLElement(\n            'div', container, config.classname('month-week-item'));\n\n        weekdayView = new WeekdayInMonth({\n            renderMonth: renderMonth,\n            heightPercent: heightPercent,\n            renderStartDate: start,\n            renderEndDate: end,\n            narrowWeekend: narrowWeekend,\n            startDayOfWeek: startDayOfWeek,\n            visibleWeeksCount: visibleWeeksCount,\n            visibleScheduleCount: visibleScheduleCount,\n            grid: gridOption,\n            scheduleHeight: parseInt(theme.month.schedule.height, 10),\n            scheduleGutter: parseInt(theme.month.schedule.marginTop, 10),\n            isReadOnly: isReadOnly\n        }, weekdayViewContainer);\n\n        self.addChild(weekdayView);\n    });\n};\n\n/**\n * Render month view\n * @override\n */\nMonth.prototype.render = function() {\n    var self = this,\n        opt = this.options,\n        vLayout = this.vLayout,\n        controller = this.controller,\n        daynames = opt.daynames,\n        workweek = opt.workweek,\n        calendar = this._getMonthCalendar(opt.renderMonth),\n        scheduleFilter = opt.scheduleFilter,\n        theme = controller ? controller.theme : null,\n        styles = this._getStyles(theme),\n        grids,\n        daynameViewModel,\n        baseViewModel;\n\n    grids = this.grids = datetime.getGridLeftAndWidth(\n        opt.daynames.length,\n        opt.narrowWeekend,\n        opt.startDayOfWeek\n    );\n\n    daynameViewModel = util.map(\n        util.range(opt.startDayOfWeek, 7).concat(util.range(7)).slice(0, 7),\n        function(day, index) {\n            return {\n                day: day,\n                label: daynames[day],\n                width: grids[index] ? grids[index].width : 0,\n                left: grids[index] ? grids[index].left : 0,\n                color: this._getDayNameColor(theme, day)\n            };\n        },\n        this\n    );\n\n    if (workweek) {\n        grids = this.grids = datetime.getGridLeftAndWidth(5, opt.narrowWeekend, opt.startDayOfWeek, workweek);\n\n        daynameViewModel = util.filter(daynameViewModel, function(daynameModel) {\n            return !datetime.isWeekend(daynameModel.day);\n        });\n\n        util.forEach(daynameViewModel, function(daynameModel, index) {\n            daynameModel.width = grids[index] ? grids[index].width : 0;\n            daynameModel.left = grids[index] ? grids[index].left : 0;\n        });\n    }\n\n    baseViewModel = {\n        daynames: daynameViewModel,\n        styles: styles\n    };\n\n    vLayout.panels[0].container.innerHTML = tmpl(baseViewModel);\n\n    this._renderChildren(vLayout.panels[1].container, calendar, theme);\n\n    baseViewModel.panelHeight = vLayout.panels[1].getHeight();\n\n    this.children.each(function(childView) {\n        var start = datetime.start(childView.options.renderStartDate);\n        var end = datetime.start(childView.options.renderEndDate);\n        var eventsInDateRange = controller.findByDateRange(\n            datetime.start(start),\n            datetime.end(end),\n            scheduleFilter\n        );\n        var dateRange = datetime.range(\n            datetime.start(start),\n            datetime.end(end),\n            datetime.MILLISECONDS_PER_DAY);\n        var viewModel = {\n            eventsInDateRange: eventsInDateRange,\n            range: dateRange.slice(0, grids.length),\n            grids: grids,\n            panelHeight: baseViewModel.panelHeight,\n            theme: theme\n        };\n\n        childView.render(viewModel);\n\n        self._invokeAfterRenderSchedule(eventsInDateRange);\n    });\n};\n\n/**\n * Fire 'afterRenderSchedule' event\n * @param {Array} matrices - schedule matrices from view model\n * @fires Month#afterRenderSchedule\n */\nMonth.prototype._invokeAfterRenderSchedule = function(matrices) {\n    var self = this;\n    util.forEachArray(matrices, function(matrix) {\n        util.forEachArray(matrix, function(column) {\n            util.forEachArray(column, function(scheduleViewModel) {\n                if (scheduleViewModel && !scheduleViewModel.hidden) {\n                    /**\n                     * @event Month#afterRenderSchedule\n                     */\n                    self.fire('afterRenderSchedule', {schedule: scheduleViewModel.model});\n                }\n            });\n        });\n    });\n};\n\n/**\n * Get the styles from theme\n * @param {Theme} theme - theme instance\n * @returns {object} styles - styles object\n */\nMonth.prototype._getStyles = function(theme) {\n    var styles = {};\n    var dayname;\n\n    if (theme) {\n        dayname = theme.month.dayname;\n\n        styles.borderTop = dayname.borderTop || theme.common.border;\n        styles.borderLeft = dayname.borderLeft || theme.common.border;\n        styles.height = dayname.height;\n        styles.paddingLeft = dayname.paddingLeft;\n        styles.paddingRight = dayname.paddingRight;\n        styles.fontSize = dayname.fontSize;\n        styles.backgroundColor = dayname.backgroundColor;\n        styles.fontWeight = dayname.fontWeight;\n        styles.textAlign = dayname.textAlign;\n    }\n\n    return styles;\n};\n\n/**\n * Get a day name color\n * @param {Theme} theme - theme instance\n * @param {number} day - day number\n * @returns {string} style - color style\n */\nMonth.prototype._getDayNameColor = function(theme, day) {\n    var color = '';\n\n    if (theme) {\n        if (day === 0) {\n            color = theme.common.holiday.color;\n        } else if (day === 6) {\n            color = theme.common.saturday.color;\n        } else {\n            color = theme.common.dayname.color;\n        }\n    }\n\n    return color;\n};\n\nmodule.exports = Month;\n","/**\n * @fileoverview Floating layer for displaying schedule in specific date\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\nvar OUT_PADDING = 5;\nvar VIEW_MIN_WIDTH = 280;\nvar util = require('tui-code-snippet');\nvar config = require('../../config'),\n    domevent = require('../../common/domevent'),\n    domutil = require('../../common/domutil'),\n    View = require('../../view/view'),\n    FloatingLayer = require('../../common/floatingLayer'),\n    common = require('../../common/common'),\n    tmpl = require('../template/month/more.hbs');\n\n/**\n * @constructor\n * @extends {View}\n * @param {object} options - options\n * @param {object} [options.moreLayerSize] - more layer size\n * @param {object} [options.moreLayerSize.width=null] - css width value(px, auto).\n *                                                           The default value 'null' is to fit a grid cell.\n * @param {object} [options.moreLayerSize.height=null] - css height value(px, auto).\n *                                                            The default value 'null' is to fit a grid cell.\n * @param {HTMLElement} container = container element\n * @param {Theme} theme - theme instance\n */\nfunction More(options, container, theme) {\n    View.call(this, container);\n\n    /**\n     * @type {FloatingLayer}\n     */\n    this.layer = new FloatingLayer(null, container);\n\n    /**\n     * cached view model\n     * @type {object}\n     */\n    this._viewModel = null;\n\n    /**\n     * @type {object}\n     */\n    this.options = util.extend({\n        moreLayerSize: {\n            width: null,\n            height: null\n        },\n        scheduleHeight: parseInt(theme.month.schedule.height, 10) || 18,\n        scheduleGutter: parseInt(theme.month.schedule.marginTop, 10) || 2,\n        scheduleBulletTop: (parseInt(theme.month.schedule.height, 10) || 18) / 3,\n        borderRadius: theme.month.schedule.borderRadius\n    }, options);\n\n    /**\n     * @type {Theme}\n     */\n    this.theme = theme;\n\n    domevent.on(container, 'click', this._onClick, this);\n}\n\nutil.inherit(More, View);\n\n/**\n * Click event handler for close button\n * @param {MouseEvent} clickEvent - mouse event object\n */\nMore.prototype._onClick = function(clickEvent) {\n    var target = domevent.getEventTarget(clickEvent);\n    var className = config.classname('month-more-close');\n\n    if (!domutil.hasClass(target, className) && !domutil.closest(target, '.' + className)) {\n        return;\n    }\n\n    this.hide();\n};\n\n/**\n * Mousedown event handler for hiding more layer when user mousedown outside of\n * layer\n * @param {MouseEvent} mouseDownEvent - mouse event object\n */\nMore.prototype._onMouseDown = function(mouseDownEvent) {\n    var target = domevent.getEventTarget(mouseDownEvent),\n        moreLayer = domutil.closest(target, config.classname('.month-more'));\n\n    if (moreLayer) {\n        return;\n    }\n\n    this.hide();\n};\n\n/**\n * Get new position for more layer by +n element itself\n * @param {HTMLElement} target - parent grid-line element of +n element\n * @param {HTMLElement} weekItem - weekItem container element\n * @returns {number[]} new position of more layer\n */\nMore.prototype._getRenderPosition = function(target, weekItem) {\n    var pos = domevent.getMousePosition({\n        clientX: domutil.getPosition(target)[0],\n        clientY: domutil.getPosition(weekItem)[1]\n    }, this.container);\n    var containerSize = domutil.getSize(this.container);\n    var left = pos[0] - OUT_PADDING;\n    var top = pos[1] - OUT_PADDING;\n\n    left = common.ratio(containerSize[0], 100, left);\n    top = common.ratio(containerSize[1], 100, top);\n\n    return [left, top];\n};\n\n/**\n * @override\n */\nMore.prototype.destroy = function() {\n    this.layer.destroy();\n    this.layer = null;\n    domevent.off(this.container, 'click', this._onClick, this);\n    domevent.off(document.body, 'mousedown', this._onMouseDown, this);\n    View.prototype.destroy.call(this);\n};\n\n/**\n * @override\n * @param {object} viewModel - view model from factory/monthView\n */\nMore.prototype.render = function(viewModel) {\n    var target = domutil.closest(viewModel.target, config.classname('.weekday-grid-line'));\n    var weekItem = domutil.closest(target, config.classname('.month-week-item'));\n    var layer = this.layer;\n    var self = this;\n    var pos = this._getRenderPosition(target, weekItem);\n    var minHeight = domutil.getSize(weekItem)[1] + (OUT_PADDING * 2);\n    var width = target.offsetWidth + (OUT_PADDING * 2);\n    var opt = this.options;\n    var optMoreLayerSize = opt.moreLayerSize;\n    var styles = this._getStyles(this.theme);\n    var maxVisibleSchedulesInLayer = 10;\n    var height = '';\n    var containerSize = domutil.getSize(this.container);\n    var calWidth = 0;\n    var calHeight = 0;\n    var isOverWidth = false;\n    var isOverHeight = false;\n    var leftPos = pos[0];\n    var topPos = pos[1];\n\n    this._viewModel = util.extend(viewModel, {\n        scheduleGutter: opt.scheduleGutter,\n        scheduleHeight: opt.scheduleHeight,\n        scheduleBulletTop: opt.scheduleBulletTop,\n        borderRadius: opt.borderRadius,\n        styles: styles\n    });\n\n    width = Math.max(width, VIEW_MIN_WIDTH);\n    height = parseInt(styles.titleHeight, 10);\n    height += parseInt(styles.titleMarginBottom, 10);\n    if (viewModel.schedules.length <= maxVisibleSchedulesInLayer) {\n        height += (opt.scheduleGutter + opt.scheduleHeight) * viewModel.schedules.length;\n    } else {\n        height += (opt.scheduleGutter + opt.scheduleHeight) * maxVisibleSchedulesInLayer;\n    }\n    height += parseInt(styles.paddingBottom, 10);\n    height += OUT_PADDING; // for border\n\n    if (optMoreLayerSize.width) {\n        width = optMoreLayerSize.width;\n    }\n\n    if (optMoreLayerSize.height) {\n        height = optMoreLayerSize.height;\n    }\n\n    if (isNaN(height) || height < minHeight) {\n        height = minHeight;\n    }\n\n    layer.setContent(tmpl(viewModel));\n\n    calWidth = leftPos * containerSize[0] / 100;\n    calHeight = topPos * containerSize[1] / 100;\n    isOverWidth = calWidth + width >= containerSize[0];\n    isOverHeight = calHeight + height >= containerSize[1];\n    leftPos = leftPos + '%';\n    topPos = topPos + '%';\n\n    if (isOverWidth && isOverHeight) {\n        layer.setLTRB({\n            right: 0,\n            bottom: 0\n        });\n    } else if (!isOverWidth && isOverHeight) {\n        layer.setLTRB({\n            left: leftPos,\n            bottom: 0\n        });\n    } else if (isOverWidth && !isOverHeight) {\n        layer.setLTRB({\n            right: 0,\n            top: topPos\n        });\n    } else {\n        layer.setPosition(leftPos, topPos);\n    }\n\n    layer.setSize(width, height);\n\n    layer.show();\n\n    util.debounce(function() {\n        domevent.on(document.body, 'mousedown', self._onMouseDown, self);\n    })();\n};\n\n/**\n * Hide layer\n */\nMore.prototype.hide = function() {\n    this.layer.hide();\n    domevent.off(document.body, 'mousedown', this._onMouseDown, this);\n};\n\n/**\n * refresh layer\n */\nMore.prototype.refresh = function() {\n    if (this._viewModel) {\n        this.layer.setContent(tmpl(this._viewModel));\n    }\n};\n\n/**\n * Return more layer root element\n * @returns {HTMLElement} root element\n */\nMore.prototype.getMoreViewElement = function() {\n    return domutil.find(config.classname('.month-more'), this.layer.container);\n};\n\n/**\n * Get the styles from theme\n * @param {Theme} theme - theme instance\n * @returns {object} styles - styles object\n */\nMore.prototype._getStyles = function(theme) {\n    var styles = {};\n    var listHeight = '';\n\n    if (theme) {\n        styles.border = theme.month.moreView.border || theme.common.border;\n        styles.boxShadow = theme.month.moreView.boxShadow;\n        styles.backgroundColor = theme.month.moreView.backgroundColor || theme.common.backgroundColor;\n        styles.paddingBottom = theme.month.moreView.paddingBottom;\n        styles.titleHeight = theme.month.moreViewTitle.height;\n        styles.titleMarginBottom = theme.month.moreViewTitle.marginBottom;\n        styles.titleBackgroundColor = theme.month.moreViewTitle.backgroundColor;\n        styles.titleBorderBottom = theme.month.moreViewTitle.borderBottom;\n        styles.titlePadding = theme.month.moreViewTitle.padding;\n        styles.listPadding = theme.month.moreViewList.padding;\n        listHeight = 'calc(100%';\n\n        if (parseInt(styles.titleHeight, 10)) {\n            listHeight += ' - ' + styles.titleHeight;\n        }\n        if (parseInt(styles.titleMarginBottom, 10)) {\n            listHeight += ' - ' + styles.titleMarginBottom;\n        }\n        listHeight += ')';\n\n        styles.listHeight = listHeight;\n    }\n\n    return styles;\n};\n\nmodule.exports = More;\n","/**\n * @fileoverview Monthday in month view\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\nvar util = require('tui-code-snippet');\nvar config = require('../../config'),\n    common = require('../../common/common.js'),\n    domutil = require('../../common/domutil'),\n    View = require('../../view/view'),\n    Weekday = require('../weekday'),\n    baseTmpl = require('../template/month/weekdayInMonth.hbs'),\n    scheduleTmpl = require('../template/month/weekdayInMonthSchedule.hbs');\nvar mfloor = Math.floor,\n    mmin = Math.min;\n\n/**\n * @constructor\n * @extends {Weekday}\n * @param {object} options - options for WeekdayInWeek view\n * @param {number} [options.heightPercent] - height percent of view\n * @param {number} [options.containerButtonGutter=8] - free space at bottom to\n *  make create easy.\n * @param {number} [options.scheduleHeight=18] - height of each schedule block.\n * @param {number} [options.scheduleGutter=2] - gutter height of each schedule block.\n * @param {HTMLDIVElement} container - DOM element to use container for this\n *  view.\n */\nfunction WeekdayInMonth(options, container) {\n    Weekday.call(this, options, container);\n    container.style.height = options.heightPercent + '%';\n}\n\nutil.inherit(WeekdayInMonth, Weekday);\n\n/**\n * Get schedule container element's bound properly by override\n *\n * View#getViewBound.\n * @override\n */\nWeekdayInMonth.prototype.getViewBound = function() {\n    var bound = View.prototype.getViewBound.call(this);\n\n    return bound;\n};\n\n/**\n * Get limit index of schedule block in current view\n * @param {number} panelHeight - panel's height for pre-calculation\n * @returns {number} limit index\n */\nWeekdayInMonth.prototype._getRenderLimitIndex = function(panelHeight) {\n    var opt = this.options;\n    var containerHeight = panelHeight || this.getViewBound().height;\n    var gridHeaderHeight = util.pick(opt, 'grid', 'header', 'height') || 0;\n    var gridFooterHeight = util.pick(opt, 'grid', 'footer', 'height') || 0;\n    var visibleScheduleCount = opt.visibleScheduleCount || 0;\n    var count;\n\n    containerHeight -= (gridHeaderHeight + gridFooterHeight);\n\n    count = mfloor(containerHeight / (opt.scheduleHeight + opt.scheduleGutter));\n\n    if (!visibleScheduleCount) {\n        visibleScheduleCount = count;\n    }\n\n    return mmin(count, visibleScheduleCount); // subtraction for '+n' label block\n};\n\n/**\n * @override\n * @param {object} viewModel - schedules view models\n */\nWeekdayInMonth.prototype.getBaseViewModel = function(viewModel) {\n    var opt = this.options,\n        gridHeaderHeight = util.pick(opt, 'grid', 'header', 'height') || 0,\n        gridFooterHeight = util.pick(opt, 'grid', 'footer', 'height') || 0,\n        renderLimitIdx = this._getRenderLimitIndex() + 1,\n        exceedDate = this.getExceedDate(renderLimitIdx, viewModel.eventsInDateRange, viewModel.range),\n        styles = this._getStyles(viewModel.theme);\n    var baseViewModel;\n\n    viewModel = util.extend({\n        exceedDate: exceedDate\n    }, viewModel);\n\n    baseViewModel = Weekday.prototype.getBaseViewModel.call(this, viewModel);\n\n    baseViewModel = util.extend({\n        matrices: viewModel.eventsInDateRange,\n        gridHeaderHeight: gridHeaderHeight,\n        gridFooterHeight: gridFooterHeight,\n        renderLimitIdx: renderLimitIdx,\n        isReadOnly: opt.isReadOnly,\n        styles: styles\n    }, baseViewModel);\n\n    return baseViewModel;\n};\n\n/**\n * @override\n * @param {object} viewModel - schedules view models\n */\nWeekdayInMonth.prototype.render = function(viewModel) {\n    var container = this.container,\n        baseViewModel = this.getBaseViewModel(viewModel),\n        scheduleContainer;\n\n    if (!this.options.visibleWeeksCount) {\n        setIsOtherMonthFlag(baseViewModel.dates, this.options.renderMonth, viewModel.theme);\n    }\n\n    container.innerHTML = baseTmpl(baseViewModel);\n\n    scheduleContainer = domutil.find(\n        config.classname('.weekday-schedules'),\n        container\n    );\n\n    if (!scheduleContainer) {\n        return;\n    }\n\n    scheduleContainer.innerHTML = scheduleTmpl(baseViewModel);\n\n    common.setAutoEllipsis(\n        config.classname('.weekday-schedule-title'),\n        container,\n        true\n    );\n};\n\nWeekdayInMonth.prototype._beforeDestroy = function() {\n};\n\n/**\n * Get the styles from theme\n * @param {Theme} theme - theme instance\n * @returns {object} styles - styles object\n */\nWeekdayInMonth.prototype._getStyles = function(theme) {\n    var styles = {};\n\n    if (theme) {\n        styles.borderTop = theme.common.border;\n        styles.borderLeft = theme.common.border;\n        styles.fontSize = theme.month.day.fontSize;\n        styles.borderRadius = theme.month.schedule.borderRadius;\n        styles.marginLeft = theme.month.schedule.marginLeft;\n        styles.marginRight = theme.month.schedule.marginRight;\n        styles.scheduleBulletTop = this.options.scheduleHeight / 3;\n    }\n\n    return styles;\n};\n\n/**\n * 현재 달이 아닌 날짜에 대해 isOtherMonth = true 플래그를 추가한다.\n * @param {Array} dates - 날짜정보 배열\n * @param {TZDate} renderMonth - 현재 렌더링중인 월 (YYYYMM)\n * @param {Theme} theme - theme instance\n */\nfunction setIsOtherMonthFlag(dates, renderMonth, theme) {\n    var month = renderMonth.getMonth() + 1;\n\n    util.forEach(dates, function(dateObj) {\n        var isOtherMonth = dateObj.month !== month;\n        dateObj.isOtherMonth = isOtherMonth;\n\n        if (isOtherMonth) {\n            dateObj.color = Weekday.prototype._getDayNameColor(theme, dateObj.day, dateObj.isToday, isOtherMonth);\n        }\n    });\n}\n\nmodule.exports = WeekdayInMonth;\n","/**\n * @fileoverview Floating layer for writing new schedules\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\nvar View = require('../../view/view');\nvar FloatingLayer = require('../../common/floatingLayer');\nvar util = require('tui-code-snippet');\nvar DatePicker = require('tui-date-picker');\nvar timezone = require('../../common/timezone');\nvar config = require('../../config');\nvar domevent = require('../../common/domevent');\nvar domutil = require('../../common/domutil');\nvar common = require('../../common/common');\nvar datetime = require('../../common/datetime');\nvar tmpl = require('../template/popup/scheduleCreationPopup.hbs');\nvar TZDate = timezone.Date;\nvar MAX_WEEK_OF_MONTH = 6;\n\n/**\n * @constructor\n * @extends {View}\n * @param {HTMLElement} container - container element\n * @param {Array.<Calendar>} calendars - calendar list used to create new schedule\n * @param {boolean} usageStatistics - GA tracking options in Calendar\n */\nfunction ScheduleCreationPopup(container, calendars, usageStatistics) {\n    View.call(this, container);\n    /**\n     * @type {FloatingLayer}\n     */\n    this.layer = new FloatingLayer(null, container);\n\n    /**\n     * cached view model\n     * @type {object}\n     */\n    this._viewModel = null;\n    this._selectedCal = null;\n    this._schedule = null;\n    this.calendars = calendars;\n    this._focusedDropdown = null;\n    this._usageStatistics = usageStatistics;\n    this._onClickListeners = [\n        this._selectDropdownMenuItem.bind(this),\n        this._toggleDropdownMenuView.bind(this),\n        this._closeDropdownMenuView.bind(this, null),\n        this._closePopup.bind(this),\n        this._toggleIsAllday.bind(this),\n        this._toggleIsPrivate.bind(this),\n        this._onClickSaveSchedule.bind(this)\n    ];\n\n    domevent.on(container, 'click', this._onClick, this);\n}\n\nutil.inherit(ScheduleCreationPopup, View);\n\n/**\n * Mousedown event handler for hiding popup layer when user mousedown outside of\n * layer\n * @param {MouseEvent} mouseDownEvent - mouse event object\n */\nScheduleCreationPopup.prototype._onMouseDown = function(mouseDownEvent) {\n    var target = domevent.getEventTarget(mouseDownEvent),\n        popupLayer = domutil.closest(target, config.classname('.floating-layer'));\n\n    if (popupLayer) {\n        return;\n    }\n\n    this.hide();\n};\n\n/**\n * @override\n */\nScheduleCreationPopup.prototype.destroy = function() {\n    this.layer.destroy();\n    this.layer = null;\n    domevent.off(this.container, 'click', this._onClick, this);\n    domevent.off(document.body, 'mousedown', this._onMouseDown, this);\n    View.prototype.destroy.call(this);\n};\n\n/**\n * @override\n * Click event handler for close button\n * @param {MouseEvent} clickEvent - mouse event object\n */\nScheduleCreationPopup.prototype._onClick = function(clickEvent) {\n    var target = domevent.getEventTarget(clickEvent);\n\n    util.forEach(this._onClickListeners, function(listener) {\n        return !listener(target);\n    });\n};\n\n/**\n * Test click event target is close button, and return layer is closed(hidden)\n * @param {HTMLElement} target click event target\n * @returns {boolean} whether popup layer is closed or not\n */\nScheduleCreationPopup.prototype._closePopup = function(target) {\n    var className = config.classname('popup-close');\n\n    if (domutil.hasClass(target, className) || domutil.closest(target, '.' + className)) {\n        this.hide();\n\n        return true;\n    }\n\n    return false;\n};\n\n/**\n * Toggle dropdown menu view, when user clicks dropdown button\n * @param {HTMLElement} target click event target\n * @returns {boolean} whether user clicked dropdown button or not\n */\nScheduleCreationPopup.prototype._toggleDropdownMenuView = function(target) {\n    var className = config.classname('dropdown-button');\n    var dropdownBtn = domutil.hasClass(target, className) ? target : domutil.closest(target, '.' + className);\n\n    if (!dropdownBtn) {\n        return false;\n    }\n\n    if (domutil.hasClass(dropdownBtn.parentNode, config.classname('open'))) {\n        this._closeDropdownMenuView(dropdownBtn.parentNode);\n    } else {\n        this._openDropdownMenuView(dropdownBtn.parentNode);\n    }\n\n    return true;\n};\n\n/**\n * Close drop down menu\n * @param {HTMLElement} dropdown - dropdown element that has a opened dropdown menu\n */\nScheduleCreationPopup.prototype._closeDropdownMenuView = function(dropdown) {\n    dropdown = dropdown || this._focusedDropdown;\n    if (dropdown) {\n        domutil.removeClass(dropdown, config.classname('open'));\n        this._focusedDropdown = null;\n    }\n};\n\n/**\n * Open drop down menu\n * @param {HTMLElement} dropdown - dropdown element that has a closed dropdown menu\n */\nScheduleCreationPopup.prototype._openDropdownMenuView = function(dropdown) {\n    domutil.addClass(dropdown, config.classname('open'));\n    this._focusedDropdown = dropdown;\n};\n\n/**\n * If click dropdown menu item, close dropdown menu\n * @param {HTMLElement} target click event target\n * @returns {boolean} whether\n */\nScheduleCreationPopup.prototype._selectDropdownMenuItem = function(target) {\n    var itemClassName = config.classname('dropdown-menu-item');\n    var iconClassName = config.classname('icon');\n    var contentClassName = config.classname('content');\n    var selectedItem = domutil.hasClass(target, itemClassName) ? target : domutil.closest(target, '.' + itemClassName);\n    var bgColor, title, dropdown, dropdownBtn;\n\n    if (!selectedItem) {\n        return false;\n    }\n\n    bgColor = domutil.find('.' + iconClassName, selectedItem).style.backgroundColor || 'transparent';\n    title = domutil.find('.' + contentClassName, selectedItem).innerHTML;\n\n    dropdown = domutil.closest(selectedItem, config.classname('.dropdown'));\n    dropdownBtn = domutil.find(config.classname('.dropdown-button'), dropdown);\n    domutil.find('.' + contentClassName, dropdownBtn).innerText = title;\n\n    if (domutil.hasClass(dropdown, config.classname('section-calendar'))) {\n        domutil.find('.' + iconClassName, dropdownBtn).style.backgroundColor = bgColor;\n        this._selectedCal = common.find(this.calendars, function(cal) {\n            return cal.id === domutil.getData(selectedItem, 'calendarId');\n        });\n    }\n\n    domutil.removeClass(dropdown, config.classname('open'));\n\n    return true;\n};\n\n/**\n * Toggle allday checkbox state\n * @param {HTMLElement} target click event target\n * @returns {boolean} whether event target is allday section or not\n */\nScheduleCreationPopup.prototype._toggleIsAllday = function(target) {\n    var className = config.classname('section-allday');\n    var alldaySection = domutil.hasClass(target, className) ? target : domutil.closest(target, '.' + className);\n    var checkbox;\n\n    if (alldaySection) {\n        checkbox = domutil.find(config.classname('.checkbox-square'), alldaySection);\n        checkbox.checked = !checkbox.checked;\n\n        return true;\n    }\n\n    return false;\n};\n\n/**\n * Toggle private button\n * @param {HTMLElement} target click event target\n * @returns {boolean} whether event target is private section or not\n */\nScheduleCreationPopup.prototype._toggleIsPrivate = function(target) {\n    var className = config.classname('section-private');\n    var privateSection = domutil.hasClass(target, className) ? target : domutil.closest(target, '.' + className);\n\n    if (privateSection) {\n        if (domutil.hasClass(privateSection, config.classname('public'))) {\n            domutil.removeClass(privateSection, config.classname('public'));\n        } else {\n            domutil.addClass(privateSection, config.classname('public'));\n        }\n\n        return true;\n    }\n\n    return false;\n};\n\n/**\n * Save new schedule if user clicked save button\n * @emits ScheduleCreationPopup#saveSchedule\n * @param {HTMLElement} target click event target\n * @returns {boolean} whether save button is clicked or not\n */\n// eslint-disable-next-line complexity\nScheduleCreationPopup.prototype._onClickSaveSchedule = function(target) {\n    var className = config.classname('popup-save');\n    var cssPrefix = config.cssPrefix;\n    var title;\n    var startDate;\n    var endDate;\n    var rangeDate;\n    var form;\n    var isAllDay;\n\n    if (!domutil.hasClass(target, className) && !domutil.closest(target, '.' + className)) {\n        return false;\n    }\n\n    title = domutil.get(cssPrefix + 'schedule-title');\n    startDate = new TZDate(this.rangePicker.getStartDate()).toLocalTime();\n    endDate = new TZDate(this.rangePicker.getEndDate()).toLocalTime();\n\n    if (!this._validateForm(title, startDate, endDate)) {\n        if (!title.value) {\n            title.focus();\n        }\n\n        return false;\n    }\n\n    isAllDay = !!domutil.get(cssPrefix + 'schedule-allday').checked;\n    rangeDate = this._getRangeDate(startDate, endDate, isAllDay);\n\n    form = {\n        calendarId: this._selectedCal ? this._selectedCal.id : null,\n        title: title,\n        location: domutil.get(cssPrefix + 'schedule-location'),\n        start: rangeDate.start,\n        end: rangeDate.end,\n        isAllDay: isAllDay,\n        state: domutil.get(cssPrefix + 'schedule-state').innerText,\n        isPrivate: !domutil.hasClass(domutil.get(cssPrefix + 'schedule-private'), config.classname('public'))\n    };\n\n    if (this._isEditMode) {\n        this._onClickUpdateSchedule(form);\n    } else {\n        this._onClickCreateSchedule(form);\n    }\n\n    this.hide();\n\n    return true;\n};\n\n/**\n * @override\n * @param {object} viewModel - view model from factory/monthView\n */\nScheduleCreationPopup.prototype.render = function(viewModel) {\n    var calendars = this.calendars;\n    var layer = this.layer;\n    var self = this;\n    var boxElement, guideElements;\n\n    viewModel.zIndex = this.layer.zIndex + 5;\n    viewModel.calendars = calendars;\n    if (calendars.length) {\n        viewModel.selectedCal = this._selectedCal = calendars[0];\n    }\n\n    this._isEditMode = viewModel.schedule && viewModel.schedule.id;\n    if (this._isEditMode) {\n        boxElement = viewModel.target;\n        viewModel = this._makeEditModeData(viewModel);\n    } else {\n        this.guide = viewModel.guide;\n        guideElements = this._getGuideElements(this.guide);\n        boxElement = guideElements.length ? guideElements[0] : null;\n    }\n    layer.setContent(tmpl(viewModel));\n    this._createDatepicker(viewModel.start, viewModel.end, viewModel.isAllDay);\n    layer.show();\n\n    if (boxElement) {\n        this._setPopupPositionAndArrowDirection(boxElement.getBoundingClientRect());\n    }\n\n    util.debounce(function() {\n        domevent.on(document.body, 'mousedown', self._onMouseDown, self);\n    })();\n};\n\n/**\n * Make view model for edit mode\n * @param {object} viewModel - original view model from 'beforeCreateEditPopup'\n * @returns {object} - edit mode view model\n */\nScheduleCreationPopup.prototype._makeEditModeData = function(viewModel) {\n    var schedule = viewModel.schedule;\n    var title, isPrivate, location, startDate, endDate, isAllDay, state;\n    var raw = schedule.raw || {};\n    var calendars = this.calendars;\n\n    var id = schedule.id;\n    title = schedule.title;\n    isPrivate = raw['class'] === 'private';\n    location = schedule.location;\n    startDate = schedule.start;\n    endDate = schedule.end;\n    isAllDay = schedule.isAllDay;\n    state = schedule.state;\n\n    viewModel.selectedCal = this._selectedCal = common.find(this.calendars, function(cal) {\n        return cal.id === viewModel.schedule.calendarId;\n    });\n\n    this._schedule = schedule;\n\n    return {\n        id: id,\n        selectedCal: this._selectedCal,\n        calendars: calendars,\n        title: title,\n        isPrivate: isPrivate,\n        location: location,\n        isAllDay: isAllDay,\n        state: state,\n        start: startDate,\n        end: endDate,\n        raw: {\n            class: isPrivate ? 'private' : 'public'\n        },\n        zIndex: this.layer.zIndex + 5,\n        isEditMode: this._isEditMode\n    };\n};\n\n/**\n * Set popup position and arrow direction to apear near guide element\n * @param {MonthCreationGuide|TimeCreationGuide|DayGridCreationGuide} guideBound - creation guide element\n */\nScheduleCreationPopup.prototype._setPopupPositionAndArrowDirection = function(guideBound) {\n    var layer = domutil.find(config.classname('.popup'), this.layer.container);\n    var layerSize = {\n        width: layer.offsetWidth,\n        height: layer.offsetHeight\n    };\n    var containerBound = this.container.getBoundingClientRect();\n    var pos = this._calcRenderingData(layerSize, containerBound, guideBound);\n\n    this.layer.setPosition(pos.x, pos.y);\n    this._setArrowDirection(pos.arrow);\n};\n\n/**\n * Get guide elements from creation guide object\n * It is used to calculate rendering position of popup\n * It will be disappeared when hiding popup\n * @param {MonthCreationGuide|TimeCreationGuide|AlldayCreationGuide} guide - creation guide\n * @returns {Array.<HTMLElement>} creation guide element\n */\nScheduleCreationPopup.prototype._getGuideElements = function(guide) {\n    var guideElements = [];\n    var i = 0;\n\n    if (guide.guideElement) {\n        guideElements.push(guide.guideElement);\n    } else if (guide.guideElements) {\n        for (; i < MAX_WEEK_OF_MONTH; i += 1) {\n            if (guide.guideElements[i]) {\n                guideElements.push(guide.guideElements[i]);\n            }\n        }\n    }\n\n    return guideElements;\n};\n\n/**\n * Get guide element's bound data which only includes top, right, bottom, left\n * @param {Array.<HTMLElement>} guideElements - creation guide elements\n * @returns {Object} - popup bound data\n */\nScheduleCreationPopup.prototype._getBoundOfFirstRowGuideElement = function(guideElements) {\n    var bound;\n\n    if (!guideElements.length) {\n        return null;\n    }\n\n    bound = guideElements[0].getBoundingClientRect();\n\n    return {\n        top: bound.top,\n        left: bound.left,\n        bottom: bound.bottom,\n        right: bound.right\n    };\n};\n\n/**\n * Get calculate rendering positions of y and arrow direction by guide block elements\n * @param {number} guideBoundTop - guide block's top\n * @param {number} guideBoundBottom - guide block's bottom\n * @param {number} layerHeight - popup layer's height\n * @param {number} containerTop - container's top\n * @param {number} containerBottom - container's bottom\n * @returns {YAndArrowDirection} y and arrowDirection\n */\nScheduleCreationPopup.prototype._getYAndArrowDirection = function(\n    guideBoundTop,\n    guideBoundBottom,\n    layerHeight,\n    containerTop,\n    containerBottom\n) {\n    var arrowDirection = 'arrow-bottom';\n    var MARGIN = 3;\n    var y = guideBoundTop - layerHeight;\n\n    if (y < containerTop) {\n        y = guideBoundBottom - containerTop + MARGIN;\n        arrowDirection = 'arrow-top';\n    } else {\n        y = y - containerTop - MARGIN;\n    }\n\n    if (y + layerHeight > containerBottom) {\n        y = containerBottom - layerHeight - containerTop - MARGIN;\n    }\n\n    /**\n     * @typedef {Object} YAndArrowDirection\n     * @property {number} y - top position of popup layer\n     * @property {string} [arrowDirection] - direction of popup arrow\n     */\n    return {\n        y: y,\n        arrowDirection: arrowDirection\n    };\n};\n\n/**\n* Get calculate rendering x position and arrow left by guide block elements\n* @param {number} guideBoundLeft - guide block's left\n* @param {number} guideBoundRight - guide block's right\n* @param {number} layerWidth - popup layer's width\n* @param {number} containerLeft - container's left\n* @param {number} containerRight - container's right\n* @returns {XAndArrowLeft} x and arrowLeft\n*/\nScheduleCreationPopup.prototype._getXAndArrowLeft = function(\n    guideBoundLeft,\n    guideBoundRight,\n    layerWidth,\n    containerLeft,\n    containerRight\n) {\n    var guideHorizontalCenter = (guideBoundLeft + guideBoundRight) / 2;\n    var x = guideHorizontalCenter - (layerWidth / 2);\n    var ARROW_WIDTH_HALF = 8;\n    var arrowLeft;\n\n    if (x + layerWidth > containerRight) {\n        x = guideBoundRight - layerWidth + ARROW_WIDTH_HALF;\n        arrowLeft = guideHorizontalCenter - x;\n    } else {\n        x += ARROW_WIDTH_HALF;\n    }\n\n    if (x < containerLeft) {\n        x = 0;\n        arrowLeft = guideHorizontalCenter - containerLeft - ARROW_WIDTH_HALF;\n    } else {\n        x = x - containerLeft - ARROW_WIDTH_HALF;\n    }\n\n    /**\n     * @typedef {Object} XAndArrowLeft\n     * @property {number} x - left position of popup layer\n     * @property {numbe3er} arrowLeft - relative position of popup arrow, if it is not set, arrow appears on the middle of popup\n     */\n    return {\n        x: x,\n        arrowLeft: arrowLeft\n    };\n};\n\n/**\n * Calculate rendering position usering guide elements\n * @param {{width: {number}, height: {number}}} layerSize - popup layer's width and height\n * @param {{top: {number}, left: {number}, right: {number}, bottom: {number}}} containerBound - width and height of the upper layer, that acts as a border of popup\n * @param {{top: {number}, left: {number}, right: {number}, bottom: {number}}} guideBound - guide element bound data\n * @returns {PopupRenderingData} rendering position of popup and popup arrow\n */\nScheduleCreationPopup.prototype._calcRenderingData = function(layerSize, containerBound, guideBound) {\n    var yPosInfo = this._getYAndArrowDirection(\n        guideBound.top,\n        guideBound.bottom,\n        layerSize.height,\n        containerBound.top,\n        containerBound.bottom\n    );\n    var xPosInfo = this._getXAndArrowLeft(\n        guideBound.left,\n        guideBound.right,\n        layerSize.width,\n        containerBound.left,\n        containerBound.right\n    );\n\n    /**\n     * @typedef {Object} PopupRenderingData\n     * @property {number} x - left position\n     * @property {number} y - top position\n     * @property {string} arrow.direction - direction of popup arrow\n     * @property {number} [arrow.position] - relative position of popup arrow, if it is not set, arrow appears on the middle of popup\n     */\n    return {\n        x: xPosInfo.x,\n        y: yPosInfo.y,\n        arrow: {\n            direction: yPosInfo.arrowDirection,\n            position: xPosInfo.arrowLeft\n        }\n    };\n};\n\n/**\n * Set arrow's direction and position\n * @param {Object} arrow rendering data for popup arrow\n */\nScheduleCreationPopup.prototype._setArrowDirection = function(arrow) {\n    var direction = arrow.direction || 'arrow-bottom';\n    var arrowEl = domutil.get(config.classname('popup-arrow'));\n    var borderElement = domutil.find(config.classname('.popup-arrow-border', arrowEl));\n\n    if (direction !== config.classname('arrow-bottom')) {\n        domutil.removeClass(arrowEl, config.classname('arrow-bottom'));\n        domutil.addClass(arrowEl, config.classname(direction));\n    }\n\n    if (arrow.position) {\n        borderElement.style.left = arrow.position + 'px';\n    }\n};\n\n/**\n * Create date range picker using start date and end date\n * @param {TZDate} start - start date\n * @param {TZDate} end - end date\n * @param {boolean} isAllDay - isAllDay\n */\nScheduleCreationPopup.prototype._createDatepicker = function(start, end, isAllDay) {\n    var cssPrefix = config.cssPrefix;\n\n    this.rangePicker = DatePicker.createRangePicker({\n        startpicker: {\n            date: new TZDate(start).toDate(),\n            input: '#' + cssPrefix + 'schedule-start-date',\n            container: '#' + cssPrefix + 'startpicker-container'\n        },\n        endpicker: {\n            date: new TZDate(end).toDate(),\n            input: '#' + cssPrefix + 'schedule-end-date',\n            container: '#' + cssPrefix + 'endpicker-container'\n        },\n        format: isAllDay ? 'yyyy-MM-dd' : 'yyyy-MM-dd HH:mm',\n        timepicker: isAllDay ? null : {\n            showMeridiem: false,\n            usageStatistics: this._usageStatistics\n        },\n        usageStatistics: this._usageStatistics\n    });\n};\n\n/**\n * Hide layer\n */\nScheduleCreationPopup.prototype.hide = function() {\n    this.layer.hide();\n\n    if (this.guide) {\n        this.guide.clearGuideElement();\n        this.guide = null;\n    }\n\n    domevent.off(document.body, 'mousedown', this._onMouseDown, this);\n};\n\n/**\n * refresh layer\n */\nScheduleCreationPopup.prototype.refresh = function() {\n    if (this._viewModel) {\n        this.layer.setContent(this.tmpl(this._viewModel));\n    }\n};\n\n/**\n * Set calendar list\n * @param {Array.<Calendar>} calendars - calendar list\n */\nScheduleCreationPopup.prototype.setCalendars = function(calendars) {\n    this.calendars = calendars || [];\n};\n\n/**\n * Validate the form\n * @param {string} title title of then entered schedule\n * @param {TZDate} startDate start date time from range picker\n * @param {TZDate} endDate end date time from range picker\n * @returns {boolean} Returns false if the form is not valid for submission.\n */\nScheduleCreationPopup.prototype._validateForm = function(title, startDate, endDate) {\n    if (!title.value) {\n        return false;\n    }\n\n    if (!startDate && !endDate) {\n        return false;\n    }\n\n    if (datetime.compare(startDate, endDate) === 1) {\n        return false;\n    }\n\n    return true;\n};\n\n/**\n * Get range date from range picker\n * @param {TZDate} startDate start date time from range picker\n * @param {TZDate} endDate end date time from range picker\n * @param {boolean} isAllDay whether it is an all-day schedule\n * @returns {RangeDate} Returns the start and end time data that is the range date\n */\nScheduleCreationPopup.prototype._getRangeDate = function(startDate, endDate, isAllDay) {\n    var start = isAllDay ? datetime.start(startDate) : startDate;\n    var end = isAllDay ? datetime.renderEnd(startDate, endDate) : endDate;\n\n    /**\n     * @typedef {object} RangeDate\n     * @property {TZDate} start start time\n     * @property {TZDate} end end time\n     */\n    return {\n        start: new TZDate(start),\n        end: new TZDate(end)\n    };\n};\n\n/**\n * Request schedule model creation to controller by custom schedules.\n * @fires {ScheduleCreationPopup#beforeUpdateSchedule}\n * @param {{\n    calendarId: {string},\n    title: {string},\n    location: {string},\n    start: {TZDate},\n    end: {TZDate},\n    isAllDay: {boolean},\n    state: {string},\n    isPrivate: {boolean}\n  }} form schedule input form data\n*/\nScheduleCreationPopup.prototype._onClickUpdateSchedule = function(form) {\n    var changes = common.getScheduleChanges(\n        this._schedule,\n        ['calendarId', 'title', 'location', 'start', 'end', 'isAllDay', 'state'],\n        {\n            calendarId: form.calendarId,\n            title: form.title.value,\n            location: form.location.value,\n            start: form.start,\n            end: form.end,\n            isAllDay: form.isAllDay,\n            state: form.state\n        }\n    );\n\n    /**\n     * @event ScheduleCreationPopup#beforeUpdateSchedule\n     * @type {object}\n     * @property {Schedule} schedule - schedule object to be updated\n     */\n    this.fire('beforeUpdateSchedule', {\n        schedule: util.extend({\n            raw: {\n                class: form.isPrivate ? 'private' : 'public'\n            }\n        }, this._schedule),\n        changes: changes,\n        start: form.start,\n        end: form.end,\n        calendar: this._selectedCal,\n        triggerEventName: 'click'\n    });\n};\n\n/**\n * Request the controller to update the schedule model according to the custom schedule.\n * @fires {ScheduleCreationPopup#beforeCreateSchedule}\n * @param {{\n    calendarId: {string},\n    title: {string},\n    location: {string},\n    start: {TZDate},\n    end: {TZDate},\n    isAllDay: {boolean},\n    state: {string}\n  }} form schedule input form data\n */\nScheduleCreationPopup.prototype._onClickCreateSchedule = function(form) {\n    /**\n     * @event ScheduleCreationPopup#beforeCreateSchedule\n     * @type {object}\n     * @property {Schedule} schedule - new schedule instance to be added\n     */\n    this.fire('beforeCreateSchedule', {\n        calendarId: form.calendarId,\n        title: form.title.value,\n        location: form.location.value,\n        raw: {\n            class: form.isPrivate ? 'private' : 'public'\n        },\n        start: form.start,\n        end: form.end,\n        isAllDay: form.isAllDay,\n        state: form.state\n    });\n};\n\nmodule.exports = ScheduleCreationPopup;\n","/**\n * @fileoverview Floating layer for showing detail schedule\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\nvar View = require('../../view/view');\nvar FloatingLayer = require('../../common/floatingLayer');\nvar util = require('tui-code-snippet');\nvar config = require('../../config'),\n    domevent = require('../../common/domevent'),\n    domutil = require('../../common/domutil');\nvar tmpl = require('../template/popup/scheduleDetailPopup.hbs');\n\n/**\n * @constructor\n * @extends {View}\n * @param {HTMLElement} container - container element\n */\nfunction ScheduleDetailPopup(container) {\n    View.call(this, container);\n    /**\n     * @type {FloatingLayer}\n     */\n    this.layer = new FloatingLayer(null, container);\n\n    /**\n     * cached view model\n     * @type {object}\n     */\n    this._viewModel = null;\n    this._schedule = null;\n    this._calendar = null;\n\n    domevent.on(container, 'click', this._onClick, this);\n}\n\nutil.inherit(ScheduleDetailPopup, View);\n\n/**\n * Mousedown event handler for hiding popup layer when user mousedown outside of\n * layer\n * @param {MouseEvent} mouseDownEvent - mouse event object\n */\nScheduleDetailPopup.prototype._onMouseDown = function(mouseDownEvent) {\n    var target = domevent.getEventTarget(mouseDownEvent),\n        popupLayer = domutil.closest(target, config.classname('.floating-layer'));\n\n    if (popupLayer) {\n        return;\n    }\n\n    this.hide();\n};\n\n/**\n * @override\n */\nScheduleDetailPopup.prototype.destroy = function() {\n    this.layer.destroy();\n    this.layer = null;\n    domevent.off(this.container, 'click', this._onClick, this);\n    domevent.off(document.body, 'mousedown', this._onMouseDown, this);\n    View.prototype.destroy.call(this);\n};\n\n/**\n * @override\n * Click event handler for close button\n * @param {MouseEvent} clickEvent - mouse event object\n */\nScheduleDetailPopup.prototype._onClick = function(clickEvent) {\n    var target = domevent.getEventTarget(clickEvent);\n\n    this._onClickEditSchedule(target);\n\n    this._onClickDeleteSchedule(target);\n};\n\n/**\n * @fires ScheduleDetailPopup#clickEditSchedule\n * @param {HTMLElement} target - event target\n */\nScheduleDetailPopup.prototype._onClickEditSchedule = function(target) {\n    var className = config.classname('popup-edit');\n\n    if (domutil.hasClass(target, className) || domutil.closest(target, '.' + className)) {\n        this.fire('beforeUpdateSchedule', {\n            schedule: this._schedule,\n            triggerEventName: 'click',\n            target: this._scheduleEl\n        });\n\n        this.hide();\n    }\n};\n\n/**\n * @fires ScheduleDetailPopup#clickEditSchedule\n * @param {HTMLElement} target - event target\n */\nScheduleDetailPopup.prototype._onClickDeleteSchedule = function(target) {\n    var className = config.classname('popup-delete');\n\n    if (domutil.hasClass(target, className) || domutil.closest(target, '.' + className)) {\n        this.fire('beforeDeleteSchedule', {\n            schedule: this._schedule\n        });\n\n        this.hide();\n    }\n};\n\n/**\n * @override\n * @param {object} viewModel - view model from factory/monthView\n */\nScheduleDetailPopup.prototype.render = function(viewModel) {\n    var layer = this.layer;\n    var self = this;\n\n    layer.setContent(tmpl({\n        schedule: viewModel.schedule,\n        calendar: viewModel.calendar\n    }));\n    layer.show();\n    this._setPopupPositionAndArrowDirection(viewModel.event);\n\n    this._schedule = viewModel.schedule;\n    this._calendar = viewModel.calendar;\n\n    util.debounce(function() {\n        domevent.on(document.body, 'mousedown', self._onMouseDown, self);\n    })();\n};\n\n/**\n * Set popup position and arrow direction to apear near guide element\n * @param {Event} event - creation guide element\n */\nScheduleDetailPopup.prototype._setPopupPositionAndArrowDirection = function(event) {\n    var layer = domutil.find(config.classname('.popup'), this.layer.container);\n    var layerSize = {\n        width: layer.offsetWidth,\n        height: layer.offsetHeight\n    };\n\n    var containerBound = this.container.getBoundingClientRect();\n    var scheduleEl = domevent.getEventTarget(event);\n    var blockEl = domutil.closest(scheduleEl, config.classname('.time-date-schedule-block'))\n        || domutil.closest(scheduleEl, config.classname('.weekday-schedule'))\n        || scheduleEl;\n    var scheduleBound = blockEl.getBoundingClientRect();\n    var pos;\n\n    this._scheduleEl = blockEl;\n\n    pos = this._calcRenderingData(layerSize, containerBound, scheduleBound);\n    this.layer.setPosition(pos.x, pos.y);\n    this._setArrowDirection(pos.arrow);\n};\n\n/**\n * Get calculate rendering positions of y and arrow top by schedule block elements\n * @param {number} scheduleBoundTop - schedule block's top\n * @param {number} scheduleBoundBottom - schedule block's bottom\n * @param {number} layerHeight - popup layer's height\n * @param {number} containerTop - container's top\n * @param {number} containerBottom - container's bottom\n * @returns {YAndArrowTop} y and arrowTop\n */\nScheduleDetailPopup.prototype._getYAndArrowTop = function(\n    scheduleBoundTop,\n    scheduleBoundBottom,\n    layerHeight,\n    containerTop,\n    containerBottom\n) {\n    var ARROW_WIDTH_HALF = 8;\n    var scheduleVerticalCenter, y, arrowTop;\n\n    scheduleBoundTop = scheduleBoundTop < 0 ? 0 : scheduleBoundTop;\n    scheduleVerticalCenter = (scheduleBoundTop + scheduleBoundBottom) / 2;\n    y = scheduleVerticalCenter - (layerHeight / 2);\n\n    if (y < containerTop) {\n        y = 0;\n        arrowTop = scheduleVerticalCenter - containerTop - ARROW_WIDTH_HALF;\n    } else if (y + layerHeight > containerBottom) {\n        y = Math.max(containerBottom - layerHeight - containerTop, 0);\n        arrowTop = scheduleVerticalCenter - y - containerTop - ARROW_WIDTH_HALF;\n    } else {\n        y -= containerTop;\n    }\n\n    if (arrowTop < 0 || arrowTop > layerHeight) {\n        arrowTop = null;\n    }\n\n    /**\n     * @typedef {Object} YAndArrowTop\n     * @property {number} y - top position of popup layer\n     * @property {number} [arrowTop] - relative position of popup arrow, if it is not set, arrow appears on the middle of popup\n     */\n    return {\n        y: y,\n        arrowTop: arrowTop\n    };\n};\n\n/**\n * Get calculate rendering x position and arrow direction by schedule block elements\n * @param {number} scheduleBoundLeft - schedule block's left\n * @param {number} scheduleBoundRight - schedule block's right\n * @param {number} layerWidth - popup layer's width\n * @param {number} containerLeft - container's left\n * @param {number} containerRight - container's right\n * @returns {XAndArrowDirection} x and arrowDirection\n */\nScheduleDetailPopup.prototype._getXAndArrowDirection = function(\n    scheduleBoundLeft,\n    scheduleBoundRight,\n    layerWidth,\n    containerLeft,\n    containerRight\n) {\n    var arrowDirection = 'arrow-left';\n    var x = scheduleBoundRight;\n    var MARGIN = 4;\n\n    if (x + layerWidth > containerRight) {\n        arrowDirection = 'arrow-right';\n        x = scheduleBoundLeft - layerWidth - MARGIN;\n    } else {\n        x += MARGIN;\n    }\n\n    if (x < containerLeft) {\n        x = 0;\n    } else {\n        x -= containerLeft;\n    }\n\n    /**\n     * @typedef {Object} XAndArrowDirection\n     * @property {number} x - left position of popup layer\n     * @property {string} arrowDirection - direction of popup arrow\n     */\n    return {\n        x: x,\n        arrowDirection: arrowDirection\n    };\n};\n\n/**\n * Calculate rendering position usering guide elements\n * @param {{width: {number}, height: {number}}} layerSize - popup layer's width and height\n * @param {{top: {number}, left: {number}, right: {number}, bottom: {number}}} containerBound - width and height of the upper layer, that acts as a border of popup\n * @param {{top: {number}, left: {number}, right: {number}, bottom: {number}}} scheduleBound - guide element bound data\n * @returns {PopupRenderingData} rendering position of popup and popup arrow\n */\nScheduleDetailPopup.prototype._calcRenderingData = function(layerSize, containerBound, scheduleBound) {\n    var yPosInfo = this._getYAndArrowTop(\n        scheduleBound.top,\n        scheduleBound.bottom,\n        layerSize.height,\n        containerBound.top,\n        containerBound.bottom\n    );\n    var xPosInfo = this._getXAndArrowDirection(\n        scheduleBound.left,\n        scheduleBound.right,\n        layerSize.width,\n        containerBound.left,\n        containerBound.right\n    );\n\n    /**\n     * @typedef {Object} PopupRenderingData\n     * @property {number} x - left position\n     * @property {number} y - top position\n     * @property {string} arrow.direction - direction of popup arrow\n     * @property {number} [arrow.position] - relative position of popup arrow, if it is not set, arrow appears on the middle of popup\n     */\n    return {\n        x: xPosInfo.x,\n        y: yPosInfo.y,\n        arrow: {\n            direction: xPosInfo.arrowDirection,\n            position: yPosInfo.arrowTop\n        }\n    };\n};\n\n/**\n * Set arrow's direction and position\n * @param {Object} arrow rendering data for popup arrow\n */\nScheduleDetailPopup.prototype._setArrowDirection = function(arrow) {\n    var direction = arrow.direction || 'arrow-left';\n    var arrowEl = domutil.find(config.classname('.popup-arrow'), this.layer.container);\n    var borderElement = domutil.find(config.classname('.popup-arrow-border'), arrowEl);\n\n    if (direction !== config.classname('arrow-left')) {\n        domutil.removeClass(arrowEl, config.classname('arrow-left'));\n        domutil.addClass(arrowEl, config.classname(direction));\n    }\n\n    if (arrow.position) {\n        borderElement.style.top = arrow.position + 'px';\n    }\n};\n\n/**\n * Hide layer\n */\nScheduleDetailPopup.prototype.hide = function() {\n    this.layer.hide();\n\n    if (this.guide) {\n        this.guide.clearGuideElement();\n        this.guide = null;\n    }\n\n    domevent.off(document.body, 'mousedown', this._onMouseDown, this);\n};\n\n/**\n * refresh layer\n */\nScheduleDetailPopup.prototype.refresh = function() {\n    if (this._viewModel) {\n        this.layer.setContent(this.tmpl(this._viewModel));\n    }\n};\n\nmodule.exports = ScheduleDetailPopup;\n","/* eslint complexity: 0 */\n/**\n * @fileoverview Helpers for handlebar templates.\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\nvar util = require('tui-code-snippet');\nvar Handlebars = require('handlebars-template-loader/runtime');\nvar datetime = require('../../common/datetime');\nvar common = require('../../common/common');\nvar config = require('../../config');\nvar mmax = Math.max;\nvar SIXTY_MINUTES = 60;\nvar helpers = {\n    /**\n     * Stamp supplied object\n     *\n     * Commonly use for rendering object's unique ID to rendered view\n     * @param {object} obj - object to stamp\n     * @returns {number} stamp value\n     */\n    'stamp': function(obj) {\n        return util.stamp(obj);\n    },\n\n    /**\n     * Whether supplied object are equal?\n     * @param {*} a - a\n     * @param {*} b - b\n     * @returns {boolean} result of operation\n     */\n    'equal': function(a, b) {\n        return a === b;\n    },\n\n    /**\n     * OR\n     * @param {*} a - a\n     * @param {*} b - b\n     * @returns {boolean} or\n     */\n    'or': function(a, b) {\n        return a || b;\n    },\n\n    /**\n     * AND\n     * @param {*} a - a\n     * @param {*} b - b\n     * @returns {boolean} or\n     */\n    'and': function(a, b) {\n        return a && b;\n    },\n\n    /**\n     * Compare object or apply logical operation by customizable oper parameter\n     * @param {*} a - a\n     * @param {string} oper - operator ex) '==', '<'\n     * @param {*} b - b\n     * @param {Handlebars} options - handlebar options\n     * @returns {boolean} result of operation\n     */\n    'fi': function(a, oper, b, options) {\n        switch (oper) {\n            case '==':\n                return (a == b) ? options.fn(this) : options.inverse(this);  // eslint-disable-line\n            case '===':\n                return (a === b) ? options.fn(this) : options.inverse(this);\n            case '!==':\n                return (a !== b) ? options.fn(this) : options.inverse(this);\n            case '<':\n                return (a < b) ? options.fn(this) : options.inverse(this);\n            case '||':\n                return (a || b) ? options.fn(this) : options.inverse(this);\n            default:\n                throw new Error('Not match operation');\n        }\n    },\n\n    /**\n     * Get hhmm formatted time str\n     * @param {Date} date - date object\n     * @returns {string} formatted value\n     */\n    'hhmm': function(date) {\n        return datetime.format(date, 'HH:mm');\n    },\n\n    /**\n     * Get `width` stylesheet string\n     * @param {number} width - width percentage\n     * @returns {string} css style part\n     */\n    'common-width': function(width) {\n        return getElSize(width, '%', 'width');\n    },\n\n    /**\n     * Get element left based on narrowWeekend\n     * @param {object} viewModel - view model\n     * @param {Array} grids - dates information\n     * @returns {number} element left\n     */\n    'grid-left': function(viewModel, grids) {\n        return getElLeft(viewModel, grids);\n    },\n\n    /**\n     * Get element width based on narrowWeekend\n     * @param {object} viewModel - view model\n     * @param {Array} grids - dates information\n     * @returns {number} element width\n     */\n    'grid-width': function(viewModel, grids) {\n        return getElWidth(viewModel, grids);\n    },\n\n    /**\n     * Use in time.hbs\n     * @param {ScheduleViewModel} viewModel viewModel\n     * @returns {string} element size css class\n     */\n    'time-scheduleBlock': function(viewModel) {\n        var top = getElSize(viewModel.top, 'px', 'top'),\n            left = getElSize(viewModel.left, '%', 'left'),\n            width = getElSize(viewModel.width, '%', 'width'),\n            height = getElSize(viewModel.height, 'px', 'height');\n\n        return [top, left, width, height].join(';');\n    },\n\n    'month-scheduleBlock': function(viewModel, grids, blockHeight, paddingTop) {\n        var top = getElSize(((viewModel.top - 1) * blockHeight) + paddingTop, 'px', 'top');\n        var left = getElSize(grids[viewModel.left] ? grids[viewModel.left].left : 0, '%', 'left');\n        var width = getElSize(getElWidth(viewModel, grids), '%', 'width');\n        var height = getElSize(viewModel.height, 'px', 'height');\n\n        return [top, left, width, height].join(';');\n    },\n\n    'holiday': function(day) {\n        var cssClass = '';\n\n        if (day === 0) {\n            cssClass = config.classname('holiday-sun');\n        }\n\n        if (day === 6) {\n            cssClass = config.classname('holiday-sat');\n        }\n\n        return cssClass;\n    },\n\n    /**\n     * Add supplied two parameter\n     * @param {*} a - a\n     * @param {*} b - b\n     * @returns {number} result of operation\n     */\n    'add': function(a, b) {\n        return a + b;\n    },\n\n    /**\n     * Multiply supplied two parameter\n     * @param {*} a - a\n     * @param {*} b - b\n     * @returns {number} result of operation\n     */\n    'multiply': function(a, b) {\n        return a * b;\n    },\n\n    /**\n     * Divide supplied two parameter\n     * @param {*} a - a\n     * @param {*} b - b\n     * @returns {number} result of operation\n     */\n    'divide': function(a, b) {\n        return a / b;\n    },\n\n    /**\n     * Subtract supplied two parameter\n     * @param {*} a - a\n     * @param {*} b - b\n     * @returns {number} result of operation\n     */\n    'subtract': function(a, b) {\n        return a - b;\n    },\n\n    'getRight': function(a, b) {\n        return mmax(0, 100 - (a + b));\n    },\n\n    /**\n     * Get css prefix in global configuration\n     * @returns {string} css prefix\n     */\n    'CSS_PREFIX': function() {\n        return config.cssPrefix;\n    },\n\n    'reverse': function(array) {\n        return array.slice().reverse();\n    },\n\n    /**********\n     * Default schedule template\n     **********/\n\n    'milestone-tmpl': function(model) {\n        var icon = config.classname('icon');\n        var iconName = config.classname('ic-milestone');\n\n        return '<span class=\"' + icon + ' ' + iconName + '\"></span><span style=\"background-color: ' + model.bgColor + '\">' + common.stripTags(model.title) + '</span>';\n    },\n\n    'milestoneTitle-tmpl': function() {\n        var className = config.classname('left-content');\n\n        return '<span class=\"' + className + '\">Milestone</span>';\n    },\n\n    'task-tmpl': function(model) {\n        return '#' + model.title;\n    },\n\n    'taskTitle-tmpl': function() {\n        var className = config.classname('left-content');\n\n        return '<span class=\"' + className + '\">Task</span>';\n    },\n\n    'alldayTitle-tmpl': function() {\n        var className = config.classname('left-content');\n\n        return '<span class=\"' + className + '\">All Day</span>';\n    },\n\n    'allday-tmpl': function(model) {\n        return common.stripTags(model.title);\n    },\n\n    'time-tmpl': function(model) {\n        return common.stripTags(model.title);\n    },\n\n    'goingDuration-tmpl': function(model) {\n        var goingDuration = model.goingDuration;\n        var hour = parseInt(goingDuration / SIXTY_MINUTES, 10);\n        var minutes = goingDuration % SIXTY_MINUTES;\n\n        return 'GoingTime ' + datetime.leadingZero(hour, 2) + ':' + datetime.leadingZero(minutes, 2);\n    },\n\n    'comingDuration-tmpl': function(model) {\n        var goingDuration = model.goingDuration;\n        var hour = parseInt(goingDuration / SIXTY_MINUTES, 10);\n        var minutes = goingDuration % SIXTY_MINUTES;\n\n        return 'ComingTime ' + datetime.leadingZero(hour, 2) + ':' + datetime.leadingZero(minutes, 2);\n    },\n\n    'monthMoreTitleDate-tmpl': function(date, dayname) {\n        var classDay = config.classname('month-more-title-day');\n        var classDayLabel = config.classname('month-more-title-day-label');\n        var day = util.pick(date.split('.'), 2);\n\n        return '<span class=\"' + classDay + '\">' + day + '</span> <span class=\"' + classDayLabel + '\">' + dayname + '</span>';\n    },\n\n    'monthMoreClose-tmpl': function() {\n        return '';\n    },\n\n    'monthGridHeader-tmpl': function(model) {\n        var date = parseInt(model.date.split('-')[2], 10);\n        var classNames = [];\n\n        classNames.push(config.classname('weekday-grid-date'));\n        if (model.isToday) {\n            classNames.push(config.classname('weekday-grid-date-decorator'));\n        }\n\n        return '<span class=\"' + classNames.join(' ') + '\">' + date + '</span>';\n    },\n\n    'monthGridHeaderExceed-tmpl': function(hiddenSchedules) {\n        var className = config.classname('weekday-grid-more-schedules');\n\n        return '<span class=\"' + className + '\">' + hiddenSchedules + ' more</span>';\n    },\n\n    'monthGridFooter-tmpl': function() {\n        return '';\n    },\n\n    /* eslint no-unused-vars: 0 */\n    'monthGridFooterExceed-tmpl': function(hiddenSchedules) {\n        return '';\n    },\n\n    'monthDayname-tmpl': function(model) {\n        return model.label;\n    },\n\n    'weekDayname-tmpl': function(model) {\n        var classDate = config.classname('dayname-date');\n        var className = config.classname('dayname-name');\n\n        return '<span class=\"' + classDate + '\">' + model.date + '</span>&nbsp;&nbsp;<span class=\"' + className + '\">' + model.dayName + '</span>';\n    },\n\n    'weekGridFooterExceed-tmpl': function(hiddenSchedules) {\n        return '+' + hiddenSchedules;\n    },\n\n    'dayGridTitle-tmpl': function(viewName) {\n        var tmpl = Handlebars.helpers[viewName + 'Title-tmpl'];\n        if (tmpl) {\n            return tmpl(viewName);\n        }\n\n        return viewName;\n    },\n\n    'schedule-tmpl': function(model) {\n        var tmpl = Handlebars.helpers[model.category + '-tmpl'];\n        if (tmpl) {\n            return tmpl(model);\n        }\n\n        return '';\n    },\n\n    'collapseBtnTitle-tmpl': function() {\n        var iconName = config.classname('icon');\n        var closeIconName = config.classname('ic-arrow-solid-top');\n\n        return '<span class=\"' + iconName + ' ' + closeIconName + '\"></span>';\n    },\n\n    'timezoneDisplayLabel-tmpl': function(timezoneOffset, displayLabel) {\n        var gmt, hour, minutes;\n\n        if (util.isUndefined(displayLabel)) {\n            gmt = timezoneOffset < 0 ? '-' : '+';\n            hour = Math.abs(parseInt(timezoneOffset / SIXTY_MINUTES, 10));\n            minutes = Math.abs(timezoneOffset % SIXTY_MINUTES);\n            displayLabel = gmt + datetime.leadingZero(hour, 2) + ':' + datetime.leadingZero(minutes, 2);\n        }\n\n        return displayLabel;\n    },\n\n    'timegridDisplayPrimayTime-tmpl': function(time) {\n        /* TODO: 삭제 필요 (will be deprecated) */\n        return Handlebars.helpers['timegridDisplayPrimaryTime-tmpl'](time);\n    },\n\n    'timegridDisplayPrimaryTime-tmpl': function(time) {\n        var hour = time.hour;\n        var meridiem = hour >= 12 ? 'pm' : 'am';\n\n        if (hour > 12) {\n            hour = hour - 12;\n        }\n\n        return hour + ' ' + meridiem;\n    },\n\n    'timegridDisplayTime-tmpl': function(time) {\n        return datetime.leadingZero(time.hour, 2) + ':' + datetime.leadingZero(time.minutes, 2);\n    },\n\n    'timegridCurrentTime-tmpl': function(timezone) {\n        var templates = [];\n\n        if (timezone.dateDifference) {\n            templates.push('[' + timezone.dateDifferenceSign + timezone.dateDifference + ']<br>');\n        }\n\n        templates.push(datetime.format(timezone.hourmarker, 'HH:mm'));\n\n        return templates.join('');\n    },\n\n    'popupIsAllDay-tmpl': function() {\n        return 'All day';\n    },\n\n    'popupStateFree-tmpl': function() {\n        return 'Free';\n    },\n\n    'popupStateBusy-tmpl': function() {\n        return 'Busy';\n    },\n\n    'titlePlaceholder-tmpl': function() {\n        return 'Subject';\n    },\n\n    'locationPlaceholder-tmpl': function() {\n        return 'Location';\n    },\n\n    'startDatePlaceholder-tmpl': function() {\n        return 'Start date';\n    },\n\n    'endDatePlaceholder-tmpl': function() {\n        return 'End date';\n    },\n    'popupSave-tmpl': function() {\n        return 'Save';\n    },\n    'popupUpdate-tmpl': function() {\n        return 'Update';\n    },\n    'popupDetailDate-tmpl': function(isAllDay, start, end) {\n        var isSameDate = datetime.isSameDate(start, end);\n        var endFormat = (isSameDate ? '' : 'YYYY.MM.DD ') + 'hh:mm tt';\n\n        if (isAllDay) {\n            return datetime.format(start, 'YYYY.MM.DD') + (isSameDate ? '' : ' - ' + datetime.format(end, 'YYYY.MM.DD'));\n        }\n\n        return (datetime.format(start, 'YYYY.MM.DD hh:mm tt') + ' - ' + datetime.format(end, endFormat));\n    },\n    'popupDetailLocation-tmpl': function(schedule) {\n        return schedule.location;\n    },\n    'popupDetailUser-tmpl': function(schedule) {\n        return (schedule.attendees || []).join(', ');\n    },\n    'popupDetailState-tmpl': function(schedule) {\n        return schedule.state || 'Busy';\n    },\n    'popupDetailRepeat-tmpl': function(schedule) {\n        return schedule.recurrenceRule;\n    },\n    'popupDetailBody-tmpl': function(schedule) {\n        return schedule.body;\n    },\n    'popupEdit-tmpl': function() {\n        return 'Edit';\n    },\n    'popupDelete-tmpl': function() {\n        return 'Delete';\n    }\n};\n\n/**\n * Get CSS syntax for element size\n * @param {number} value - size value to apply element\n * @param {string} postfix - postfix string ex) px, em, %\n * @param {string} prefix - property name ex) width, height\n * @returns {string} CSS syntax\n */\nfunction getElSize(value, postfix, prefix) {\n    prefix = prefix || '';\n    if (util.isNumber(value)) {\n        return prefix + ':' + value + postfix;\n    }\n\n    return prefix + ':auto';\n}\n\n/**\n * Get element left based on narrowWeekend\n * @param {object} viewModel - view model\n * @param {Array} grids - dates information\n * @returns {number} element left\n */\nfunction getElLeft(viewModel, grids) {\n    return grids[viewModel.left] ? grids[viewModel.left].left : 0;\n}\n\n/**\n * Get element width based on narrowWeekend\n * @param {object} viewModel - view model\n * @param {Array} grids - dates information\n * @returns {number} element width\n */\nfunction getElWidth(viewModel, grids) {\n    var width = 0;\n    var i = 0;\n    var length = grids.length;\n    var left;\n    for (; i < viewModel.width; i += 1) {\n        left = (viewModel.left + i) % length;\n        left += parseInt((viewModel.left + i) / length, 10);\n        if (left < length) {\n            width += grids[left] ? grids[left].width : 0;\n        }\n    }\n\n    return width;\n}\n\nHandlebars.registerHelper(helpers);\n","var Handlebars = require('/Users/nhnent/Jodeng/workspace/Work/tui.calendar-new/node_modules/handlebars/runtime.js');\nmodule.exports = (Handlebars['default'] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data) {\n    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, alias5=container.lambda, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"    <div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":4,\"column\":16},\"end\":{\"line\":4,\"column\":30}}}) : helper)))\n    + \"month-dayname-item\\\"\\n         style=\\\"position: absolute;\\n                width: \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"width\") || (depth0 != null ? lookupProperty(depth0,\"width\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"width\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":6,\"column\":23},\"end\":{\"line\":6,\"column\":32}}}) : helper)))\n    + \"%;\\n                left: \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"left\") || (depth0 != null ? lookupProperty(depth0,\"left\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"left\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":7,\"column\":22},\"end\":{\"line\":7,\"column\":30}}}) : helper)))\n    + \"%;\\n                padding-left: \"\n    + alias4(alias5(((stack1 = ((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"styles\"))) && lookupProperty(stack1,\"paddingLeft\")), depth0))\n    + \";\\n                padding-right: \"\n    + alias4(alias5(((stack1 = ((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"styles\"))) && lookupProperty(stack1,\"paddingRight\")), depth0))\n    + \";\\n                line-height: \"\n    + alias4(alias5(((stack1 = ((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"styles\"))) && lookupProperty(stack1,\"height\")), depth0))\n    + \";\\n\"\n    + ((stack1 = lookupProperty(helpers,\"unless\").call(alias1,(data && lookupProperty(data,\"last\")),{\"name\":\"unless\",\"hash\":{},\"fn\":container.program(2, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":11,\"column\":16},\"end\":{\"line\":13,\"column\":27}}})) != null ? stack1 : \"\")\n    + \"                \\\">\\n        <span class=\\\"\"\n    + alias4((lookupProperty(helpers,\"holiday\")||(depth0 && lookupProperty(depth0,\"holiday\"))||alias2).call(alias1,(depth0 != null ? lookupProperty(depth0,\"day\") : depth0),{\"name\":\"holiday\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":15,\"column\":21},\"end\":{\"line\":15,\"column\":36}}}))\n    + \"\\\" style=\\\"color: \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"color\") || (depth0 != null ? lookupProperty(depth0,\"color\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"color\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":15,\"column\":52},\"end\":{\"line\":15,\"column\":61}}}) : helper)))\n    + \";\\\">\\n            \"\n    + ((stack1 = (lookupProperty(helpers,\"monthDayname-tmpl\")||(depth0 && lookupProperty(depth0,\"monthDayname-tmpl\"))||alias2).call(alias1,depth0,{\"name\":\"monthDayname-tmpl\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":16,\"column\":12},\"end\":{\"line\":16,\"column\":40}}})) != null ? stack1 : \"\")\n    + \"\\n        </span>\\n    </div>\\n\";\n},\"2\":function(container,depth0,helpers,partials,data) {\n    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"                border-right: \"\n    + container.escapeExpression(container.lambda(((stack1 = ((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"styles\"))) && lookupProperty(stack1,\"borderLeft\")), depth0))\n    + \";\\n\";\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.escapeExpression, alias3=container.lambda, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"<div class=\\\"\"\n    + alias2(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":1,\"column\":12},\"end\":{\"line\":1,\"column\":26}}}) : helper)))\n    + \"month-dayname\\\"\\n    style=\\\"border-top: \"\n    + alias2(alias3(((stack1 = (depth0 != null ? lookupProperty(depth0,\"styles\") : depth0)) != null ? lookupProperty(stack1,\"borderTop\") : stack1), depth0))\n    + \"; height: \"\n    + alias2(alias3(((stack1 = (depth0 != null ? lookupProperty(depth0,\"styles\") : depth0)) != null ? lookupProperty(stack1,\"height\") : stack1), depth0))\n    + \"; font-size: \"\n    + alias2(alias3(((stack1 = (depth0 != null ? lookupProperty(depth0,\"styles\") : depth0)) != null ? lookupProperty(stack1,\"fontSize\") : stack1), depth0))\n    + \"; background-color: \"\n    + alias2(alias3(((stack1 = (depth0 != null ? lookupProperty(depth0,\"styles\") : depth0)) != null ? lookupProperty(stack1,\"backgroundColor\") : stack1), depth0))\n    + \"; text-align: \"\n    + alias2(alias3(((stack1 = (depth0 != null ? lookupProperty(depth0,\"styles\") : depth0)) != null ? lookupProperty(stack1,\"textAlign\") : stack1), depth0))\n    + \"; font-weight: \"\n    + alias2(alias3(((stack1 = (depth0 != null ? lookupProperty(depth0,\"styles\") : depth0)) != null ? lookupProperty(stack1,\"fontWeight\") : stack1), depth0))\n    + \";\\\">\\n\"\n    + ((stack1 = lookupProperty(helpers,\"each\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"daynames\") : depth0),{\"name\":\"each\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":3,\"column\":0},\"end\":{\"line\":19,\"column\":9}}})) != null ? stack1 : \"\")\n    + \"</div>\\n\";\n},\"useData\":true});","var Handlebars = require('/Users/nhnent/Jodeng/workspace/Work/tui.calendar-new/node_modules/handlebars/runtime.js');\nmodule.exports = (Handlebars['default'] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data) {\n    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return ((stack1 = (lookupProperty(helpers,\"fi\")||(depth0 && lookupProperty(depth0,\"fi\"))||container.hooks.helperMissing).call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"isAllDay\") : stack1),\"||\",(depth0 != null ? lookupProperty(depth0,\"hasMultiDates\") : depth0),{\"name\":\"fi\",\"hash\":{},\"fn\":container.program(2, data, 0),\"inverse\":container.program(7, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":9,\"column\":8},\"end\":{\"line\":65,\"column\":15}}})) != null ? stack1 : \"\");\n},\"2\":function(container,depth0,helpers,partials,data) {\n    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=container.escapeExpression, alias4=container.lambda, alias5=\"function\", lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"<div data-id=\\\"\"\n    + alias3((lookupProperty(helpers,\"stamp\")||(depth0 && lookupProperty(depth0,\"stamp\"))||alias2).call(alias1,(depth0 != null ? lookupProperty(depth0,\"model\") : depth0),{\"name\":\"stamp\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":10,\"column\":26},\"end\":{\"line\":10,\"column\":41}}}))\n    + \"\\\"\\n                data-schedule-id=\\\"\"\n    + alias3(alias4(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"id\") : stack1), depth0))\n    + \"\\\" data-calendar-id=\\\"\"\n    + alias3(alias4(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"calendarId\") : stack1), depth0))\n    + \"\\\"\\n                class=\\\"\"\n    + alias3(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias5 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":12,\"column\":23},\"end\":{\"line\":12,\"column\":37}}}) : helper)))\n    + \"month-more-schedule \"\n    + alias3(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias5 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":12,\"column\":57},\"end\":{\"line\":12,\"column\":71}}}) : helper)))\n    + \"month-more-allday \"\n    + alias3(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias5 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":12,\"column\":89},\"end\":{\"line\":12,\"column\":103}}}) : helper)))\n    + \"weekday-schedule-title\\\"\\n                style=\\\"height: \"\n    + alias3(alias4(((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"scheduleHeight\")), depth0))\n    + \"px; line-height: \"\n    + alias3(alias4(((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"scheduleHeight\")), depth0))\n    + \"px; margin-top: \"\n    + alias3(alias4(((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"scheduleGutter\")), depth0))\n    + \"px; border-radius: \"\n    + alias3(alias4(((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"borderRadius\")), depth0))\n    + \";\\n\"\n    + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"isFocused\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(3, data, 0),\"inverse\":container.program(5, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":14,\"column\":20},\"end\":{\"line\":18,\"column\":27}}})) != null ? stack1 : \"\")\n    + \"                    \"\n    + alias3(alias4(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"customStyle\") : stack1), depth0))\n    + \"\\\">\\n                    \"\n    + ((stack1 = (lookupProperty(helpers,\"allday-tmpl\")||(depth0 && lookupProperty(depth0,\"allday-tmpl\"))||alias2).call(alias1,(depth0 != null ? lookupProperty(depth0,\"model\") : depth0),{\"name\":\"allday-tmpl\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":20,\"column\":20},\"end\":{\"line\":20,\"column\":43}}})) != null ? stack1 : \"\")\n    + \"\\n            </div>\\n\";\n},\"3\":function(container,depth0,helpers,partials,data) {\n    var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"                        color: #ffffff; background-color:\"\n    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"color\") : stack1), depth0))\n    + \"; border-left:3px solid \"\n    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"borderColor\") : stack1), depth0))\n    + \";\\n\";\n},\"5\":function(container,depth0,helpers,partials,data) {\n    var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"                        color:\"\n    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"color\") : stack1), depth0))\n    + \"; background-color:\"\n    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"bgColor\") : stack1), depth0))\n    + \"; border-left:3px solid \"\n    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"borderColor\") : stack1), depth0))\n    + \";\\n\";\n},\"7\":function(container,depth0,helpers,partials,data) {\n    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return ((stack1 = (lookupProperty(helpers,\"fi\")||(depth0 && lookupProperty(depth0,\"fi\"))||container.hooks.helperMissing).call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"category\") : stack1),\"===\",\"time\",{\"name\":\"fi\",\"hash\":{},\"fn\":container.program(8, data, 0),\"inverse\":container.program(17, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":23,\"column\":12},\"end\":{\"line\":64,\"column\":19}}})) != null ? stack1 : \"\");\n},\"8\":function(container,depth0,helpers,partials,data) {\n    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=container.escapeExpression, alias4=container.lambda, alias5=\"function\", lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"                <div data-id=\\\"\"\n    + alias3((lookupProperty(helpers,\"stamp\")||(depth0 && lookupProperty(depth0,\"stamp\"))||alias2).call(alias1,(depth0 != null ? lookupProperty(depth0,\"model\") : depth0),{\"name\":\"stamp\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":24,\"column\":30},\"end\":{\"line\":24,\"column\":45}}}))\n    + \"\\\"\\n                    data-schedule-id=\\\"\"\n    + alias3(alias4(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"id\") : stack1), depth0))\n    + \"\\\" data-calendar-id=\\\"\"\n    + alias3(alias4(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"calendarId\") : stack1), depth0))\n    + \"\\\"\\n                    class=\\\"\"\n    + alias3(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias5 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":26,\"column\":27},\"end\":{\"line\":26,\"column\":41}}}) : helper)))\n    + \"month-more-schedule \"\n    + alias3(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias5 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":26,\"column\":61},\"end\":{\"line\":26,\"column\":75}}}) : helper)))\n    + \"weekday-schedule \"\n    + alias3(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias5 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":26,\"column\":92},\"end\":{\"line\":26,\"column\":106}}}) : helper)))\n    + \"weekday-schedule-time\\\"\\n                    style=\\\"height: \"\n    + alias3(alias4(((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"scheduleHeight\")), depth0))\n    + \"px; line-height: \"\n    + alias3(alias4(((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"scheduleHeight\")), depth0))\n    + \"px; margin-top: \"\n    + alias3(alias4(((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"scheduleGutter\")), depth0))\n    + \"px;\"\n    + alias3(alias4(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"customStyle\") : stack1), depth0))\n    + \"\\\">\\n                    <span class=\\\"\"\n    + alias3(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias5 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":28,\"column\":33},\"end\":{\"line\":28,\"column\":47}}}) : helper)))\n    + \"weekday-schedule-bullet\\\"\\n                        style=\\\"top: \"\n    + alias3(alias4(((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"scheduleBulletTop\")), depth0))\n    + \"px;\\n\"\n    + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"isFocused\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(9, data, 0),\"inverse\":container.program(11, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":30,\"column\":28},\"end\":{\"line\":34,\"column\":35}}})) != null ? stack1 : \"\")\n    + \"\\\"></span>\\n                    <span class=\\\"\"\n    + alias3(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias5 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":35,\"column\":33},\"end\":{\"line\":35,\"column\":47}}}) : helper)))\n    + \"weekday-schedule-title\\\"\\n                        style=\\\"\"\n    + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"isFocused\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(13, data, 0),\"inverse\":container.program(15, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":36,\"column\":31},\"end\":{\"line\":41,\"column\":35}}})) != null ? stack1 : \"\")\n    + \"\\\"\\n                        data-title=\\\"\"\n    + alias3(alias4(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"title\") : stack1), depth0))\n    + \"\\\">\"\n    + ((stack1 = (lookupProperty(helpers,\"time-tmpl\")||(depth0 && lookupProperty(depth0,\"time-tmpl\"))||alias2).call(alias1,(depth0 != null ? lookupProperty(depth0,\"model\") : depth0),{\"name\":\"time-tmpl\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":42,\"column\":53},\"end\":{\"line\":42,\"column\":74}}})) != null ? stack1 : \"\")\n    + \"</span>\\n                </div>\\n\";\n},\"9\":function(container,depth0,helpers,partials,data) {\n    return \"                                background: #ffffff\\n\";\n},\"11\":function(container,depth0,helpers,partials,data) {\n    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"                                background:\"\n    + container.escapeExpression(container.lambda(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"borderColor\") : stack1), depth0))\n    + \"\\n                            \";\n},\"13\":function(container,depth0,helpers,partials,data) {\n    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"\\n                                color: #ffffff;\\n                                background-color: \"\n    + container.escapeExpression(container.lambda(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"color\") : stack1), depth0))\n    + \"\\n\";\n},\"15\":function(container,depth0,helpers,partials,data) {\n    return \"                                color:#333;\\n                            \";\n},\"17\":function(container,depth0,helpers,partials,data) {\n    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=container.escapeExpression, alias4=container.lambda, alias5=\"function\", lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"<div data-id=\\\"\"\n    + alias3((lookupProperty(helpers,\"stamp\")||(depth0 && lookupProperty(depth0,\"stamp\"))||alias2).call(alias1,(depth0 != null ? lookupProperty(depth0,\"model\") : depth0),{\"name\":\"stamp\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":45,\"column\":30},\"end\":{\"line\":45,\"column\":45}}}))\n    + \"\\\"\\n                    data-schedule-id=\\\"\"\n    + alias3(alias4(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"id\") : stack1), depth0))\n    + \"\\\" data-calendar-id=\\\"\"\n    + alias3(alias4(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"calendarId\") : stack1), depth0))\n    + \"\\\"\\n                    class=\\\"\"\n    + alias3(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias5 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":47,\"column\":27},\"end\":{\"line\":47,\"column\":41}}}) : helper)))\n    + \"month-more-schedule \"\n    + alias3(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias5 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":47,\"column\":61},\"end\":{\"line\":47,\"column\":75}}}) : helper)))\n    + \"weekday-schedule \"\n    + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"isFocused\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(18, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":47,\"column\":92},\"end\":{\"line\":47,\"column\":161}}})) != null ? stack1 : \"\")\n    + \"\\\"\\n                    style=\\\"height:\"\n    + alias3(alias4(((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"scheduleHeight\")), depth0))\n    + \"px; line-height:\"\n    + alias3(alias4(((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"scheduleHeight\")), depth0))\n    + \"px; border-radius: \"\n    + alias3(alias4(((stack1 = ((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"styles\"))) && lookupProperty(stack1,\"borderRadius\")), depth0))\n    + \";\\n\"\n    + ((stack1 = lookupProperty(helpers,\"unless\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"exceedLeft\") : depth0),{\"name\":\"unless\",\"hash\":{},\"fn\":container.program(20, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":49,\"column\":20},\"end\":{\"line\":51,\"column\":31}}})) != null ? stack1 : \"\")\n    + ((stack1 = lookupProperty(helpers,\"unless\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"exceedRight\") : depth0),{\"name\":\"unless\",\"hash\":{},\"fn\":container.program(22, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":52,\"column\":20},\"end\":{\"line\":54,\"column\":31}}})) != null ? stack1 : \"\")\n    + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"isFocused\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(24, data, 0),\"inverse\":container.program(26, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":55,\"column\":20},\"end\":{\"line\":59,\"column\":27}}})) != null ? stack1 : \"\")\n    + \"                        \"\n    + alias3(alias4(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"customStyle\") : stack1), depth0))\n    + \"\\\">\\n                    <span class=\\\"\"\n    + alias3(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias5 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":61,\"column\":33},\"end\":{\"line\":61,\"column\":47}}}) : helper)))\n    + \"weekday-schedule-title\\\"\\n                                    data-title=\\\"\"\n    + alias3(alias4(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"title\") : stack1), depth0))\n    + \"\\\">\"\n    + ((stack1 = (lookupProperty(helpers,\"schedule-tmpl\")||(depth0 && lookupProperty(depth0,\"schedule-tmpl\"))||alias2).call(alias1,(depth0 != null ? lookupProperty(depth0,\"model\") : depth0),{\"name\":\"schedule-tmpl\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":62,\"column\":65},\"end\":{\"line\":62,\"column\":90}}})) != null ? stack1 : \"\")\n    + \"</span>\\n                </div>\\n\";\n},\"18\":function(container,depth0,helpers,partials,data) {\n    var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return container.escapeExpression(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":47,\"column\":115},\"end\":{\"line\":47,\"column\":129}}}) : helper)))\n    + \"weekday-schedule-focused \";\n},\"20\":function(container,depth0,helpers,partials,data) {\n    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"                        margin-left: \"\n    + container.escapeExpression(container.lambda(((stack1 = ((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"styles\"))) && lookupProperty(stack1,\"marginLeft\")), depth0))\n    + \";\\n\";\n},\"22\":function(container,depth0,helpers,partials,data) {\n    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"                        margin-right: \"\n    + container.escapeExpression(container.lambda(((stack1 = ((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"styles\"))) && lookupProperty(stack1,\"marginRight\")), depth0))\n    + \";\\n\";\n},\"24\":function(container,depth0,helpers,partials,data) {\n    var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"                        color: #ffffff; background-color:\"\n    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"color\") : stack1), depth0))\n    + \"; border-color:\"\n    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"color\") : stack1), depth0))\n    + \";\\n\";\n},\"26\":function(container,depth0,helpers,partials,data) {\n    var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"                        color:\"\n    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"color\") : stack1), depth0))\n    + \"; background-color:\"\n    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"bgColor\") : stack1), depth0))\n    + \"; border-color:\"\n    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"borderColor\") : stack1), depth0))\n    + \";\\n\";\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, alias5=container.lambda, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"<div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":1,\"column\":12},\"end\":{\"line\":1,\"column\":26}}}) : helper)))\n    + \"month-more\\\" style=\\\"padding-bottom: \"\n    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,\"styles\") : depth0)) != null ? lookupProperty(stack1,\"paddingBottom\") : stack1), depth0))\n    + \"; border: \"\n    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,\"styles\") : depth0)) != null ? lookupProperty(stack1,\"border\") : stack1), depth0))\n    + \"; box-shadow: \"\n    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,\"styles\") : depth0)) != null ? lookupProperty(stack1,\"boxShadow\") : stack1), depth0))\n    + \"; background-color: \"\n    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,\"styles\") : depth0)) != null ? lookupProperty(stack1,\"backgroundColor\") : stack1), depth0))\n    + \";\\\">\\n    <div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":2,\"column\":16},\"end\":{\"line\":2,\"column\":30}}}) : helper)))\n    + \"month-more-title\\\"\\n        style=\\\"height: \"\n    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,\"styles\") : depth0)) != null ? lookupProperty(stack1,\"titleHeight\") : stack1), depth0))\n    + \"; margin-bottom: \"\n    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,\"styles\") : depth0)) != null ? lookupProperty(stack1,\"titleMarginBottom\") : stack1), depth0))\n    + \"; background-color: \"\n    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,\"styles\") : depth0)) != null ? lookupProperty(stack1,\"titleBackgroundColor\") : stack1), depth0))\n    + \"; border-bottom: \"\n    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,\"styles\") : depth0)) != null ? lookupProperty(stack1,\"titleBorderBottom\") : stack1), depth0))\n    + \"; padding: \"\n    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,\"styles\") : depth0)) != null ? lookupProperty(stack1,\"titlePadding\") : stack1), depth0))\n    + \";\\\">\\n        <span class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":4,\"column\":21},\"end\":{\"line\":4,\"column\":35}}}) : helper)))\n    + \"month-more-title-date\\\">\"\n    + ((stack1 = (lookupProperty(helpers,\"monthMoreTitleDate-tmpl\")||(depth0 && lookupProperty(depth0,\"monthMoreTitleDate-tmpl\"))||alias2).call(alias1,(depth0 != null ? lookupProperty(depth0,\"date\") : depth0),(depth0 != null ? lookupProperty(depth0,\"dayname\") : depth0),{\"name\":\"monthMoreTitleDate-tmpl\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":4,\"column\":58},\"end\":{\"line\":4,\"column\":100}}})) != null ? stack1 : \"\")\n    + \"</span>\\n        <button type=\\\"button\\\" class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":5,\"column\":37},\"end\":{\"line\":5,\"column\":51}}}) : helper)))\n    + \"month-more-close\\\">\"\n    + ((stack1 = ((helper = (helper = lookupProperty(helpers,\"monthMoreClose-tmpl\") || (depth0 != null ? lookupProperty(depth0,\"monthMoreClose-tmpl\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"monthMoreClose-tmpl\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":5,\"column\":69},\"end\":{\"line\":5,\"column\":94}}}) : helper))) != null ? stack1 : \"\")\n    + \"</button>\\n    </div>\\n    <div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":7,\"column\":16},\"end\":{\"line\":7,\"column\":30}}}) : helper)))\n    + \"month-more-list\\\" style=\\\"padding: \"\n    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,\"styles\") : depth0)) != null ? lookupProperty(stack1,\"listPadding\") : stack1), depth0))\n    + \"; height: \"\n    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,\"styles\") : depth0)) != null ? lookupProperty(stack1,\"listHeight\") : stack1), depth0))\n    + \";\\\">\\n\"\n    + ((stack1 = lookupProperty(helpers,\"each\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"schedules\") : depth0),{\"name\":\"each\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":8,\"column\":8},\"end\":{\"line\":66,\"column\":17}}})) != null ? stack1 : \"\")\n    + \"    </div>\\n</div>\\n\";\n},\"useData\":true});","var Handlebars = require('/Users/nhnent/Jodeng/workspace/Work/tui.calendar-new/node_modules/handlebars/runtime.js');\nmodule.exports = (Handlebars['default'] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data) {\n    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"<div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":7,\"column\":16},\"end\":{\"line\":7,\"column\":30}}}) : helper)))\n    + \"weekday-grid-line \"\n    + alias4((lookupProperty(helpers,\"holiday\")||(depth0 && lookupProperty(depth0,\"holiday\"))||alias2).call(alias1,(depth0 != null ? lookupProperty(depth0,\"day\") : depth0),{\"name\":\"holiday\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":7,\"column\":48},\"end\":{\"line\":7,\"column\":63}}}))\n    + ((stack1 = (lookupProperty(helpers,\"fi\")||(depth0 && lookupProperty(depth0,\"fi\"))||alias2).call(alias1,(depth0 != null ? lookupProperty(depth0,\"date\") : depth0),\"!==\",1,{\"name\":\"fi\",\"hash\":{},\"fn\":container.program(2, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":7,\"column\":63},\"end\":{\"line\":7,\"column\":119}}})) != null ? stack1 : \"\")\n    + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"isToday\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(4, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":7,\"column\":119},\"end\":{\"line\":7,\"column\":161}}})) != null ? stack1 : \"\")\n    + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"isOtherMonth\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(6, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":7,\"column\":161},\"end\":{\"line\":7,\"column\":213}}})) != null ? stack1 : \"\")\n    + \"\\\"\\n        style=\\\"width:\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"width\") || (depth0 != null ? lookupProperty(depth0,\"width\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"width\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":8,\"column\":21},\"end\":{\"line\":8,\"column\":30}}}) : helper)))\n    + \"%; left:\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"left\") || (depth0 != null ? lookupProperty(depth0,\"left\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"left\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":8,\"column\":38},\"end\":{\"line\":8,\"column\":46}}}) : helper)))\n    + \"%; background-color: \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"backgroundColor\") || (depth0 != null ? lookupProperty(depth0,\"backgroundColor\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"backgroundColor\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":8,\"column\":67},\"end\":{\"line\":8,\"column\":86}}}) : helper)))\n    + \"; font-size: \"\n    + alias4(container.lambda(((stack1 = ((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"styles\"))) && lookupProperty(stack1,\"fontSize\")), depth0))\n    + \";\\n\"\n    + ((stack1 = lookupProperty(helpers,\"unless\").call(alias1,(data && lookupProperty(data,\"last\")),{\"name\":\"unless\",\"hash\":{},\"fn\":container.program(8, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":9,\"column\":8},\"end\":{\"line\":11,\"column\":19}}})) != null ? stack1 : \"\")\n    + \"        \\\">\\n        <div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":13,\"column\":20},\"end\":{\"line\":13,\"column\":34}}}) : helper)))\n    + \"weekday-grid-header\\\">\\n            <span style=\\\"color: \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"color\") || (depth0 != null ? lookupProperty(depth0,\"color\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"color\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":14,\"column\":32},\"end\":{\"line\":14,\"column\":41}}}) : helper)))\n    + \";\\\">\"\n    + ((stack1 = (lookupProperty(helpers,\"monthGridHeader-tmpl\")||(depth0 && lookupProperty(depth0,\"monthGridHeader-tmpl\"))||alias2).call(alias1,depth0,{\"name\":\"monthGridHeader-tmpl\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":14,\"column\":44},\"end\":{\"line\":14,\"column\":75}}})) != null ? stack1 : \"\")\n    + \"</span>\\n\"\n    + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"hiddenSchedules\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(10, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":15,\"column\":12},\"end\":{\"line\":17,\"column\":19}}})) != null ? stack1 : \"\")\n    + \"        </div>\\n        <div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":19,\"column\":20},\"end\":{\"line\":19,\"column\":34}}}) : helper)))\n    + \"weekday-grid-footer\\\">\\n            <span style=\\\"color: \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"color\") || (depth0 != null ? lookupProperty(depth0,\"color\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"color\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":20,\"column\":32},\"end\":{\"line\":20,\"column\":41}}}) : helper)))\n    + \";\\\">\"\n    + ((stack1 = (lookupProperty(helpers,\"monthGridFooter-tmpl\")||(depth0 && lookupProperty(depth0,\"monthGridFooter-tmpl\"))||alias2).call(alias1,depth0,{\"name\":\"monthGridFooter-tmpl\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":20,\"column\":44},\"end\":{\"line\":20,\"column\":75}}})) != null ? stack1 : \"\")\n    + \"</span>\\n\"\n    + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"hiddenSchedules\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(12, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":21,\"column\":12},\"end\":{\"line\":23,\"column\":19}}})) != null ? stack1 : \"\")\n    + \"        </div>\\n    </div>\\n\";\n},\"2\":function(container,depth0,helpers,partials,data) {\n    var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \" \"\n    + container.escapeExpression(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":7,\"column\":84},\"end\":{\"line\":7,\"column\":98}}}) : helper)))\n    + \"near-month-day\";\n},\"4\":function(container,depth0,helpers,partials,data) {\n    var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \" \"\n    + container.escapeExpression(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":7,\"column\":135},\"end\":{\"line\":7,\"column\":149}}}) : helper)))\n    + \"today\";\n},\"6\":function(container,depth0,helpers,partials,data) {\n    var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \" \"\n    + container.escapeExpression(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":7,\"column\":182},\"end\":{\"line\":7,\"column\":196}}}) : helper)))\n    + \"extra-date\";\n},\"8\":function(container,depth0,helpers,partials,data) {\n    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"        border-right:\"\n    + container.escapeExpression(container.lambda(((stack1 = ((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"styles\"))) && lookupProperty(stack1,\"borderLeft\")), depth0))\n    + \";\\n\";\n},\"10\":function(container,depth0,helpers,partials,data) {\n    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"                <span class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":16,\"column\":29},\"end\":{\"line\":16,\"column\":43}}}) : helper)))\n    + \"weekday-exceed-in-month\\\" data-ymd=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"ymd\") || (depth0 != null ? lookupProperty(depth0,\"ymd\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"ymd\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":16,\"column\":78},\"end\":{\"line\":16,\"column\":85}}}) : helper)))\n    + \"\\\">\"\n    + ((stack1 = (lookupProperty(helpers,\"monthGridHeaderExceed-tmpl\")||(depth0 && lookupProperty(depth0,\"monthGridHeaderExceed-tmpl\"))||alias2).call(alias1,(depth0 != null ? lookupProperty(depth0,\"hiddenSchedules\") : depth0),{\"name\":\"monthGridHeaderExceed-tmpl\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":16,\"column\":87},\"end\":{\"line\":16,\"column\":135}}})) != null ? stack1 : \"\")\n    + \"</span>\\n\";\n},\"12\":function(container,depth0,helpers,partials,data) {\n    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"                <span class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":22,\"column\":29},\"end\":{\"line\":22,\"column\":43}}}) : helper)))\n    + \"weekday-exceed-in-month\\\" data-ymd=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"ymd\") || (depth0 != null ? lookupProperty(depth0,\"ymd\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"ymd\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":22,\"column\":78},\"end\":{\"line\":22,\"column\":85}}}) : helper)))\n    + \"\\\">\"\n    + ((stack1 = (lookupProperty(helpers,\"monthGridFooterExceed-tmpl\")||(depth0 && lookupProperty(depth0,\"monthGridFooterExceed-tmpl\"))||alias2).call(alias1,(depth0 != null ? lookupProperty(depth0,\"hiddenSchedules\") : depth0),{\"name\":\"monthGridFooterExceed-tmpl\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":22,\"column\":87},\"end\":{\"line\":22,\"column\":135}}})) != null ? stack1 : \"\")\n    + \"</span>\\n\";\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"<div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":1,\"column\":12},\"end\":{\"line\":1,\"column\":26}}}) : helper)))\n    + \"weekday-border\\\"\\n    style=\\\"\\n    border-top: \"\n    + alias4(container.lambda(((stack1 = (depth0 != null ? lookupProperty(depth0,\"styles\") : depth0)) != null ? lookupProperty(stack1,\"borderTop\") : stack1), depth0))\n    + \";\\n\\\"></div>\\n<div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":5,\"column\":12},\"end\":{\"line\":5,\"column\":26}}}) : helper)))\n    + \"weekday-grid\\\">\\n\"\n    + ((stack1 = lookupProperty(helpers,\"each\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"dates\") : depth0),{\"name\":\"each\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":6,\"column\":0},\"end\":{\"line\":26,\"column\":11}}})) != null ? stack1 : \"\")\n    + \"</div>\\n<div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":28,\"column\":12},\"end\":{\"line\":28,\"column\":26}}}) : helper)))\n    + \"weekday-schedules\\\"></div>\\n\";\n},\"useData\":true});","var Handlebars = require('/Users/nhnent/Jodeng/workspace/Work/tui.calendar-new/node_modules/handlebars/runtime.js');\nmodule.exports = (Handlebars['default'] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data) {\n    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return ((stack1 = lookupProperty(helpers,\"each\").call(depth0 != null ? depth0 : (container.nullContext || {}),depth0,{\"name\":\"each\",\"hash\":{},\"fn\":container.program(2, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":2,\"column\":0},\"end\":{\"line\":80,\"column\":11}}})) != null ? stack1 : \"\");\n},\"2\":function(container,depth0,helpers,partials,data) {\n    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"\\n\"\n    + ((stack1 = lookupProperty(helpers,\"each\").call(depth0 != null ? depth0 : (container.nullContext || {}),depth0,{\"name\":\"each\",\"hash\":{},\"fn\":container.program(3, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":3,\"column\":0},\"end\":{\"line\":79,\"column\":11}}})) != null ? stack1 : \"\");\n},\"3\":function(container,depth0,helpers,partials,data) {\n    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"\\n\"\n    + ((stack1 = lookupProperty(helpers,\"if\").call(depth0 != null ? depth0 : (container.nullContext || {}),depth0,{\"name\":\"if\",\"hash\":{},\"fn\":container.program(4, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":4,\"column\":0},\"end\":{\"line\":78,\"column\":9}}})) != null ? stack1 : \"\");\n},\"4\":function(container,depth0,helpers,partials,data) {\n    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"\\n\"\n    + ((stack1 = (lookupProperty(helpers,\"fi\")||(depth0 && lookupProperty(depth0,\"fi\"))||container.hooks.helperMissing).call(depth0 != null ? depth0 : (container.nullContext || {}),(depth0 != null ? lookupProperty(depth0,\"top\") : depth0),\"<\",((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"renderLimitIdx\")),{\"name\":\"fi\",\"hash\":{},\"fn\":container.program(5, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":5,\"column\":4},\"end\":{\"line\":77,\"column\":13}}})) != null ? stack1 : \"\");\n},\"5\":function(container,depth0,helpers,partials,data) {\n    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=container.escapeExpression, alias4=\"function\", lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"<div data-id=\\\"\"\n    + alias3((lookupProperty(helpers,\"stamp\")||(depth0 && lookupProperty(depth0,\"stamp\"))||alias2).call(alias1,(depth0 != null ? lookupProperty(depth0,\"model\") : depth0),{\"name\":\"stamp\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":6,\"column\":18},\"end\":{\"line\":6,\"column\":33}}}))\n    + \"\\\"\\n         class=\\\"\"\n    + alias3(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias4 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":7,\"column\":16},\"end\":{\"line\":7,\"column\":30}}}) : helper)))\n    + \"weekday-schedule-block\\n                \"\n    + alias3(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias4 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":8,\"column\":16},\"end\":{\"line\":8,\"column\":30}}}) : helper)))\n    + \"weekday-schedule-block-\"\n    + alias3((lookupProperty(helpers,\"stamp\")||(depth0 && lookupProperty(depth0,\"stamp\"))||alias2).call(alias1,(depth0 != null ? lookupProperty(depth0,\"model\") : depth0),{\"name\":\"stamp\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":8,\"column\":53},\"end\":{\"line\":8,\"column\":68}}}))\n    + \"\\n            \"\n    + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"exceedLeft\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(6, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":9,\"column\":12},\"end\":{\"line\":9,\"column\":71}}})) != null ? stack1 : \"\")\n    + \"\\n            \"\n    + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"exceedRight\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(8, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":10,\"column\":12},\"end\":{\"line\":10,\"column\":73}}})) != null ? stack1 : \"\")\n    + \"\\\"\\n         style=\\\"\"\n    + alias3((lookupProperty(helpers,\"month-scheduleBlock\")||(depth0 && lookupProperty(depth0,\"month-scheduleBlock\"))||alias2).call(alias1,depth0,((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"dates\")),((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"scheduleBlockHeight\")),((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"gridHeaderHeight\")),{\"name\":\"month-scheduleBlock\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":11,\"column\":16},\"end\":{\"line\":11,\"column\":105}}}))\n    + \";\\n                margin-top:\"\n    + alias3(container.lambda(((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"scheduleBlockGutter\")), depth0))\n    + \"px\\\">\\n\"\n    + ((stack1 = (lookupProperty(helpers,\"fi\")||(depth0 && lookupProperty(depth0,\"fi\"))||alias2).call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"isAllDay\") : stack1),\"||\",(depth0 != null ? lookupProperty(depth0,\"hasMultiDates\") : depth0),{\"name\":\"fi\",\"hash\":{},\"fn\":container.program(10, data, 0),\"inverse\":container.program(23, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":13,\"column\":8},\"end\":{\"line\":75,\"column\":15}}})) != null ? stack1 : \"\")\n    + \"    </div>\\n\";\n},\"6\":function(container,depth0,helpers,partials,data) {\n    var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \" \"\n    + container.escapeExpression(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":9,\"column\":31},\"end\":{\"line\":9,\"column\":45}}}) : helper)))\n    + \"weekday-exceed-left\";\n},\"8\":function(container,depth0,helpers,partials,data) {\n    var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \" \"\n    + container.escapeExpression(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":10,\"column\":32},\"end\":{\"line\":10,\"column\":46}}}) : helper)))\n    + \"weekday-exceed-right\";\n},\"10\":function(container,depth0,helpers,partials,data) {\n    var stack1, helper, alias1=container.lambda, alias2=container.escapeExpression, alias3=depth0 != null ? depth0 : (container.nullContext || {}), alias4=container.hooks.helperMissing, alias5=\"function\", lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"        <div data-schedule-id=\\\"\"\n    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"id\") : stack1), depth0))\n    + \"\\\" data-calendar-id=\\\"\"\n    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"calendarId\") : stack1), depth0))\n    + \"\\\" class=\\\"\"\n    + alias2(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias4),(typeof helper === alias5 ? helper.call(alias3,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":14,\"column\":92},\"end\":{\"line\":14,\"column\":106}}}) : helper)))\n    + \"weekday-schedule \"\n    + ((stack1 = lookupProperty(helpers,\"if\").call(alias3,((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"isFocused\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(11, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":14,\"column\":123},\"end\":{\"line\":14,\"column\":192}}})) != null ? stack1 : \"\")\n    + \"\\\"\\n             style=\\\"height:\"\n    + alias2(alias1(((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"scheduleHeight\")), depth0))\n    + \"px; line-height:\"\n    + alias2(alias1(((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"scheduleHeight\")), depth0))\n    + \"px; border-radius: \"\n    + alias2(alias1(((stack1 = ((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"styles\"))) && lookupProperty(stack1,\"borderRadius\")), depth0))\n    + \";\\n\"\n    + ((stack1 = lookupProperty(helpers,\"unless\").call(alias3,(depth0 != null ? lookupProperty(depth0,\"exceedLeft\") : depth0),{\"name\":\"unless\",\"hash\":{},\"fn\":container.program(13, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":16,\"column\":16},\"end\":{\"line\":18,\"column\":27}}})) != null ? stack1 : \"\")\n    + ((stack1 = lookupProperty(helpers,\"unless\").call(alias3,(depth0 != null ? lookupProperty(depth0,\"exceedRight\") : depth0),{\"name\":\"unless\",\"hash\":{},\"fn\":container.program(15, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":19,\"column\":16},\"end\":{\"line\":21,\"column\":27}}})) != null ? stack1 : \"\")\n    + ((stack1 = lookupProperty(helpers,\"if\").call(alias3,((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"isFocused\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(17, data, 0),\"inverse\":container.program(19, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":22,\"column\":16},\"end\":{\"line\":26,\"column\":23}}})) != null ? stack1 : \"\")\n    + \"                    \"\n    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"customStyle\") : stack1), depth0))\n    + \"\\\">\\n            <span class=\\\"\"\n    + alias2(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias4),(typeof helper === alias5 ? helper.call(alias3,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":28,\"column\":25},\"end\":{\"line\":28,\"column\":39}}}) : helper)))\n    + \"weekday-schedule-title\\\"\\n                  data-title=\\\"\"\n    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"title\") : stack1), depth0))\n    + \"\\\">\"\n    + ((stack1 = (lookupProperty(helpers,\"allday-tmpl\")||(depth0 && lookupProperty(depth0,\"allday-tmpl\"))||alias4).call(alias3,(depth0 != null ? lookupProperty(depth0,\"model\") : depth0),{\"name\":\"allday-tmpl\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":29,\"column\":47},\"end\":{\"line\":29,\"column\":70}}})) != null ? stack1 : \"\")\n    + \"</span>\\n            \"\n    + ((stack1 = lookupProperty(helpers,\"unless\").call(alias3,(lookupProperty(helpers,\"or\")||(depth0 && lookupProperty(depth0,\"or\"))||alias4).call(alias3,((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"isReadOnly\")),((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"isReadOnly\") : stack1),{\"name\":\"or\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":30,\"column\":22},\"end\":{\"line\":30,\"column\":60}}}),{\"name\":\"unless\",\"hash\":{},\"fn\":container.program(21, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":30,\"column\":12},\"end\":{\"line\":30,\"column\":194}}})) != null ? stack1 : \"\")\n    + \"\\n        </div>\\n\";\n},\"11\":function(container,depth0,helpers,partials,data) {\n    var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return container.escapeExpression(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":14,\"column\":146},\"end\":{\"line\":14,\"column\":160}}}) : helper)))\n    + \"weekday-schedule-focused \";\n},\"13\":function(container,depth0,helpers,partials,data) {\n    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"                    margin-left: \"\n    + container.escapeExpression(container.lambda(((stack1 = ((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"styles\"))) && lookupProperty(stack1,\"marginLeft\")), depth0))\n    + \";\\n\";\n},\"15\":function(container,depth0,helpers,partials,data) {\n    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"                    margin-right: \"\n    + container.escapeExpression(container.lambda(((stack1 = ((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"styles\"))) && lookupProperty(stack1,\"marginRight\")), depth0))\n    + \";\\n\";\n},\"17\":function(container,depth0,helpers,partials,data) {\n    var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"                    color: #ffffff; background-color:\"\n    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"color\") : stack1), depth0))\n    + \"; border-color:\"\n    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"color\") : stack1), depth0))\n    + \";\\n\";\n},\"19\":function(container,depth0,helpers,partials,data) {\n    var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"                    color:\"\n    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"color\") : stack1), depth0))\n    + \"; background-color:\"\n    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"bgColor\") : stack1), depth0))\n    + \"; border-color:\"\n    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"borderColor\") : stack1), depth0))\n    + \";\\n\";\n},\"21\":function(container,depth0,helpers,partials,data) {\n    var stack1, helper, alias1=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"<span class=\\\"\"\n    + alias1(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":30,\"column\":75},\"end\":{\"line\":30,\"column\":89}}}) : helper)))\n    + \"weekday-resize-handle handle-y\\\" style=\\\"line-height: \"\n    + alias1(container.lambda(((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"scheduleHeight\")), depth0))\n    + \"px;\\\">&nbsp;</span>\";\n},\"23\":function(container,depth0,helpers,partials,data) {\n    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return ((stack1 = (lookupProperty(helpers,\"fi\")||(depth0 && lookupProperty(depth0,\"fi\"))||container.hooks.helperMissing).call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"category\") : stack1),\"===\",\"time\",{\"name\":\"fi\",\"hash\":{},\"fn\":container.program(24, data, 0),\"inverse\":container.program(33, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":33,\"column\":12},\"end\":{\"line\":74,\"column\":19}}})) != null ? stack1 : \"\");\n},\"24\":function(container,depth0,helpers,partials,data) {\n    var stack1, helper, alias1=container.lambda, alias2=container.escapeExpression, alias3=depth0 != null ? depth0 : (container.nullContext || {}), alias4=container.hooks.helperMissing, alias5=\"function\", lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"                <div data-schedule-id=\\\"\"\n    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"id\") : stack1), depth0))\n    + \"\\\" data-calendar-id=\\\"\"\n    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"calendarId\") : stack1), depth0))\n    + \"\\\" class=\\\"\"\n    + alias2(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias4),(typeof helper === alias5 ? helper.call(alias3,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":34,\"column\":100},\"end\":{\"line\":34,\"column\":114}}}) : helper)))\n    + \"weekday-schedule \"\n    + alias2(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias4),(typeof helper === alias5 ? helper.call(alias3,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":34,\"column\":131},\"end\":{\"line\":34,\"column\":145}}}) : helper)))\n    + \"weekday-schedule-time\\\"\\n                    style=\\\"height:\"\n    + alias2(alias1(((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"scheduleHeight\")), depth0))\n    + \"px; line-height:\"\n    + alias2(alias1(((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"scheduleHeight\")), depth0))\n    + \"px; \"\n    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"customStyle\") : stack1), depth0))\n    + \"\\\">\\n                    <span class=\\\"\"\n    + alias2(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias4),(typeof helper === alias5 ? helper.call(alias3,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":36,\"column\":33},\"end\":{\"line\":36,\"column\":47}}}) : helper)))\n    + \"weekday-schedule-bullet\\\"\\n                        style=\\\"top: \"\n    + alias2(alias1(((stack1 = ((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"styles\"))) && lookupProperty(stack1,\"scheduleBulletTop\")), depth0))\n    + \"px;\\n\"\n    + ((stack1 = lookupProperty(helpers,\"if\").call(alias3,((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"isFocused\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(25, data, 0),\"inverse\":container.program(27, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":38,\"column\":28},\"end\":{\"line\":42,\"column\":35}}})) != null ? stack1 : \"\")\n    + \"                            \\\"\\n                    ></span>\\n                    <span class=\\\"\"\n    + alias2(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias4),(typeof helper === alias5 ? helper.call(alias3,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":45,\"column\":33},\"end\":{\"line\":45,\"column\":47}}}) : helper)))\n    + \"weekday-schedule-title\\\"\\n                        style=\\\"\\n\"\n    + ((stack1 = lookupProperty(helpers,\"if\").call(alias3,((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"isFocused\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(29, data, 0),\"inverse\":container.program(31, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":47,\"column\":28},\"end\":{\"line\":52,\"column\":35}}})) != null ? stack1 : \"\")\n    + \"                            \\\"\\n                        data-title=\\\"\"\n    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"title\") : stack1), depth0))\n    + \"\\\">\"\n    + ((stack1 = (lookupProperty(helpers,\"time-tmpl\")||(depth0 && lookupProperty(depth0,\"time-tmpl\"))||alias4).call(alias3,(depth0 != null ? lookupProperty(depth0,\"model\") : depth0),{\"name\":\"time-tmpl\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":54,\"column\":53},\"end\":{\"line\":54,\"column\":74}}})) != null ? stack1 : \"\")\n    + \"</span>\\n                </div>\\n\";\n},\"25\":function(container,depth0,helpers,partials,data) {\n    return \"                                background: #ffffff\\n\";\n},\"27\":function(container,depth0,helpers,partials,data) {\n    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"                                background:\"\n    + container.escapeExpression(container.lambda(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"borderColor\") : stack1), depth0))\n    + \"\\n\";\n},\"29\":function(container,depth0,helpers,partials,data) {\n    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"                                color: #ffffff;\\n                                background-color: \"\n    + container.escapeExpression(container.lambda(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"color\") : stack1), depth0))\n    + \"\\n\";\n},\"31\":function(container,depth0,helpers,partials,data) {\n    return \"                                color:#333;\\n\";\n},\"33\":function(container,depth0,helpers,partials,data) {\n    var stack1, helper, alias1=container.lambda, alias2=container.escapeExpression, alias3=depth0 != null ? depth0 : (container.nullContext || {}), alias4=container.hooks.helperMissing, alias5=\"function\", lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"<div data-schedule-id=\\\"\"\n    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"id\") : stack1), depth0))\n    + \"\\\" data-calendar-id=\\\"\"\n    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"calendarId\") : stack1), depth0))\n    + \"\\\" class=\\\"\"\n    + alias2(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias4),(typeof helper === alias5 ? helper.call(alias3,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":57,\"column\":100},\"end\":{\"line\":57,\"column\":114}}}) : helper)))\n    + \"weekday-schedule \"\n    + ((stack1 = lookupProperty(helpers,\"if\").call(alias3,((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"isFocused\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(11, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":57,\"column\":131},\"end\":{\"line\":57,\"column\":200}}})) != null ? stack1 : \"\")\n    + \"\\\"\\n                    style=\\\"height:\"\n    + alias2(alias1(((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"scheduleHeight\")), depth0))\n    + \"px; line-height:\"\n    + alias2(alias1(((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"scheduleHeight\")), depth0))\n    + \"px; border-radius: \"\n    + alias2(alias1(((stack1 = ((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"styles\"))) && lookupProperty(stack1,\"borderRadius\")), depth0))\n    + \";\\n\"\n    + ((stack1 = lookupProperty(helpers,\"unless\").call(alias3,(depth0 != null ? lookupProperty(depth0,\"exceedLeft\") : depth0),{\"name\":\"unless\",\"hash\":{},\"fn\":container.program(34, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":59,\"column\":20},\"end\":{\"line\":61,\"column\":31}}})) != null ? stack1 : \"\")\n    + ((stack1 = lookupProperty(helpers,\"unless\").call(alias3,(depth0 != null ? lookupProperty(depth0,\"exceedRight\") : depth0),{\"name\":\"unless\",\"hash\":{},\"fn\":container.program(36, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":62,\"column\":20},\"end\":{\"line\":64,\"column\":31}}})) != null ? stack1 : \"\")\n    + ((stack1 = lookupProperty(helpers,\"if\").call(alias3,((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"isFocused\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(38, data, 0),\"inverse\":container.program(40, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":65,\"column\":20},\"end\":{\"line\":69,\"column\":27}}})) != null ? stack1 : \"\")\n    + \"                        \"\n    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"customStyle\") : stack1), depth0))\n    + \"\\\">\\n                    <span class=\\\"\"\n    + alias2(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias4),(typeof helper === alias5 ? helper.call(alias3,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":71,\"column\":33},\"end\":{\"line\":71,\"column\":47}}}) : helper)))\n    + \"weekday-schedule-title\\\"\\n                                    data-title=\\\"\"\n    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"title\") : stack1), depth0))\n    + \"\\\">\"\n    + ((stack1 = (lookupProperty(helpers,\"schedule-tmpl\")||(depth0 && lookupProperty(depth0,\"schedule-tmpl\"))||alias4).call(alias3,(depth0 != null ? lookupProperty(depth0,\"model\") : depth0),{\"name\":\"schedule-tmpl\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":72,\"column\":65},\"end\":{\"line\":72,\"column\":90}}})) != null ? stack1 : \"\")\n    + \"</span>\\n                </div>\\n\";\n},\"34\":function(container,depth0,helpers,partials,data) {\n    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"                        margin-left: \"\n    + container.escapeExpression(container.lambda(((stack1 = ((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"styles\"))) && lookupProperty(stack1,\"marginLeft\")), depth0))\n    + \";\\n\";\n},\"36\":function(container,depth0,helpers,partials,data) {\n    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"                        margin-right: \"\n    + container.escapeExpression(container.lambda(((stack1 = ((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"styles\"))) && lookupProperty(stack1,\"marginRight\")), depth0))\n    + \";\\n\";\n},\"38\":function(container,depth0,helpers,partials,data) {\n    var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"                        color: #ffffff; background-color:\"\n    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"color\") : stack1), depth0))\n    + \"; border-color:\"\n    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"color\") : stack1), depth0))\n    + \";\\n\";\n},\"40\":function(container,depth0,helpers,partials,data) {\n    var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"                        color:\"\n    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"color\") : stack1), depth0))\n    + \"; background-color:\"\n    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"bgColor\") : stack1), depth0))\n    + \"; border-color:\"\n    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"borderColor\") : stack1), depth0))\n    + \";\\n\";\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return ((stack1 = lookupProperty(helpers,\"each\").call(depth0 != null ? depth0 : (container.nullContext || {}),(depth0 != null ? lookupProperty(depth0,\"matrices\") : depth0),{\"name\":\"each\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":1,\"column\":0},\"end\":{\"line\":81,\"column\":11}}})) != null ? stack1 : \"\");\n},\"useData\":true});","var Handlebars = require('/Users/nhnent/Jodeng/workspace/Work/tui.calendar-new/node_modules/handlebars/runtime.js');\nmodule.exports = (Handlebars['default'] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data) {\n    var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \" \"\n    + container.escapeExpression(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":3,\"column\":150},\"end\":{\"line\":3,\"column\":164}}}) : helper)))\n    + \"hide\";\n},\"3\":function(container,depth0,helpers,partials,data) {\n    var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"                    <li class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":11,\"column\":31},\"end\":{\"line\":11,\"column\":45}}}) : helper)))\n    + \"popup-section-item \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":11,\"column\":64},\"end\":{\"line\":11,\"column\":78}}}) : helper)))\n    + \"dropdown-menu-item\\\" data-calendar-id=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"id\") || (depth0 != null ? lookupProperty(depth0,\"id\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"id\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":11,\"column\":116},\"end\":{\"line\":11,\"column\":122}}}) : helper)))\n    + \"\\\">\\n                        <span class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":12,\"column\":37},\"end\":{\"line\":12,\"column\":51}}}) : helper)))\n    + \"icon \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":12,\"column\":56},\"end\":{\"line\":12,\"column\":70}}}) : helper)))\n    + \"calendar-dot\\\" style=\\\"background-color: \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"bgColor\") || (depth0 != null ? lookupProperty(depth0,\"bgColor\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"bgColor\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":12,\"column\":109},\"end\":{\"line\":12,\"column\":120}}}) : helper)))\n    + \"\\\"></span>\\n                        <span class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":13,\"column\":37},\"end\":{\"line\":13,\"column\":51}}}) : helper)))\n    + \"content\\\">\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"name\") || (depth0 != null ? lookupProperty(depth0,\"name\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"name\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":13,\"column\":60},\"end\":{\"line\":13,\"column\":68}}}) : helper)))\n    + \"</span>\\n                    </li>\\n\";\n},\"5\":function(container,depth0,helpers,partials,data) {\n    var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \" \"\n    + container.escapeExpression(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":23,\"column\":135},\"end\":{\"line\":23,\"column\":149}}}) : helper)))\n    + \"public\";\n},\"7\":function(container,depth0,helpers,partials,data) {\n    return \" checked\";\n},\"9\":function(container,depth0,helpers,partials,data) {\n    var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return container.escapeExpression(((helper = (helper = lookupProperty(helpers,\"state\") || (depth0 != null ? lookupProperty(depth0,\"state\") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"state\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":54,\"column\":99},\"end\":{\"line\":54,\"column\":108}}}) : helper)));\n},\"11\":function(container,depth0,helpers,partials,data) {\n    var stack1, helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return ((stack1 = ((helper = (helper = lookupProperty(helpers,\"popupStateBusy-tmpl\") || (depth0 != null ? lookupProperty(depth0,\"popupStateBusy-tmpl\") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"popupStateBusy-tmpl\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":54,\"column\":116},\"end\":{\"line\":54,\"column\":141}}}) : helper))) != null ? stack1 : \"\");\n},\"13\":function(container,depth0,helpers,partials,data) {\n    var stack1, helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return ((stack1 = ((helper = (helper = lookupProperty(helpers,\"popupUpdate-tmpl\") || (depth0 != null ? lookupProperty(depth0,\"popupUpdate-tmpl\") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"popupUpdate-tmpl\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":69,\"column\":163},\"end\":{\"line\":69,\"column\":185}}}) : helper))) != null ? stack1 : \"\");\n},\"15\":function(container,depth0,helpers,partials,data) {\n    var stack1, helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return ((stack1 = ((helper = (helper = lookupProperty(helpers,\"popupSave-tmpl\") || (depth0 != null ? lookupProperty(depth0,\"popupSave-tmpl\") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"popupSave-tmpl\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":69,\"column\":193},\"end\":{\"line\":69,\"column\":213}}}) : helper))) != null ? stack1 : \"\");\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, alias5=container.lambda, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"<div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":1,\"column\":12},\"end\":{\"line\":1,\"column\":26}}}) : helper)))\n    + \"popup\\\">\\n    <div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":2,\"column\":16},\"end\":{\"line\":2,\"column\":30}}}) : helper)))\n    + \"popup-container\\\">\\n        <div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":3,\"column\":20},\"end\":{\"line\":3,\"column\":34}}}) : helper)))\n    + \"popup-section \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":3,\"column\":48},\"end\":{\"line\":3,\"column\":62}}}) : helper)))\n    + \"dropdown \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":3,\"column\":71},\"end\":{\"line\":3,\"column\":85}}}) : helper)))\n    + \"close \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":3,\"column\":91},\"end\":{\"line\":3,\"column\":105}}}) : helper)))\n    + \"section-calendar\"\n    + ((stack1 = lookupProperty(helpers,\"unless\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"calendars\") : depth0)) != null ? lookupProperty(stack1,\"length\") : stack1),{\"name\":\"unless\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":3,\"column\":121},\"end\":{\"line\":3,\"column\":179}}})) != null ? stack1 : \"\")\n    + \"\\\">\\n            <button class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":4,\"column\":27},\"end\":{\"line\":4,\"column\":41}}}) : helper)))\n    + \"button \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":4,\"column\":48},\"end\":{\"line\":4,\"column\":62}}}) : helper)))\n    + \"dropdown-button \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":4,\"column\":78},\"end\":{\"line\":4,\"column\":92}}}) : helper)))\n    + \"popup-section-item\\\">\\n                <span class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":5,\"column\":29},\"end\":{\"line\":5,\"column\":43}}}) : helper)))\n    + \"icon \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":5,\"column\":48},\"end\":{\"line\":5,\"column\":62}}}) : helper)))\n    + \"calendar-dot\\\" style=\\\"background-color: \"\n    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,\"selectedCal\") : depth0)) != null ? lookupProperty(stack1,\"bgColor\") : stack1), depth0))\n    + \"\\\"></span>\\n                <span id=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":6,\"column\":26},\"end\":{\"line\":6,\"column\":40}}}) : helper)))\n    + \"schedule-calendar\\\" class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":6,\"column\":66},\"end\":{\"line\":6,\"column\":80}}}) : helper)))\n    + \"content\\\">\"\n    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,\"selectedCal\") : depth0)) != null ? lookupProperty(stack1,\"name\") : stack1), depth0))\n    + \"</span>\\n                <span class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":7,\"column\":29},\"end\":{\"line\":7,\"column\":43}}}) : helper)))\n    + \"icon \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":7,\"column\":48},\"end\":{\"line\":7,\"column\":62}}}) : helper)))\n    + \"dropdown-arrow\\\"></span>\\n            </button>\\n            <ul class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":9,\"column\":23},\"end\":{\"line\":9,\"column\":37}}}) : helper)))\n    + \"dropdown-menu\\\" style=\\\"z-index: \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"zIndex\") || (depth0 != null ? lookupProperty(depth0,\"zIndex\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"zIndex\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":9,\"column\":68},\"end\":{\"line\":9,\"column\":78}}}) : helper)))\n    + \"\\\">\\n\"\n    + ((stack1 = lookupProperty(helpers,\"each\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"calendars\") : depth0),{\"name\":\"each\",\"hash\":{},\"fn\":container.program(3, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":10,\"column\":16},\"end\":{\"line\":15,\"column\":25}}})) != null ? stack1 : \"\")\n    + \"            </ul>\\n        </div>\\n        <div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":18,\"column\":20},\"end\":{\"line\":18,\"column\":34}}}) : helper)))\n    + \"popup-section\\\">\\n            <div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":19,\"column\":24},\"end\":{\"line\":19,\"column\":38}}}) : helper)))\n    + \"popup-section-item \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":19,\"column\":57},\"end\":{\"line\":19,\"column\":71}}}) : helper)))\n    + \"section-title\\\">\\n            <span class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":20,\"column\":25},\"end\":{\"line\":20,\"column\":39}}}) : helper)))\n    + \"icon \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":20,\"column\":44},\"end\":{\"line\":20,\"column\":58}}}) : helper)))\n    + \"ic-title\\\"></span>\\n                <input id=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":21,\"column\":27},\"end\":{\"line\":21,\"column\":41}}}) : helper)))\n    + \"schedule-title\\\" class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":21,\"column\":64},\"end\":{\"line\":21,\"column\":78}}}) : helper)))\n    + \"content\\\" placeholder=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"titlePlaceholder-tmpl\") || (depth0 != null ? lookupProperty(depth0,\"titlePlaceholder-tmpl\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"titlePlaceholder-tmpl\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":21,\"column\":100},\"end\":{\"line\":21,\"column\":125}}}) : helper)))\n    + \"\\\" value=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"title\") || (depth0 != null ? lookupProperty(depth0,\"title\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"title\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":21,\"column\":134},\"end\":{\"line\":21,\"column\":143}}}) : helper)))\n    + \"\\\">\\n            </div>\\n            <button id=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":23,\"column\":24},\"end\":{\"line\":23,\"column\":38}}}) : helper)))\n    + \"schedule-private\\\" class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":23,\"column\":63},\"end\":{\"line\":23,\"column\":77}}}) : helper)))\n    + \"button \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":23,\"column\":84},\"end\":{\"line\":23,\"column\":98}}}) : helper)))\n    + \"section-private\"\n    + ((stack1 = lookupProperty(helpers,\"unless\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"isPrivate\") : depth0),{\"name\":\"unless\",\"hash\":{},\"fn\":container.program(5, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":23,\"column\":113},\"end\":{\"line\":23,\"column\":166}}})) != null ? stack1 : \"\")\n    + \"\\\">\\n            <span class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":24,\"column\":25},\"end\":{\"line\":24,\"column\":39}}}) : helper)))\n    + \"icon \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":24,\"column\":44},\"end\":{\"line\":24,\"column\":58}}}) : helper)))\n    + \"ic-private\\\"></span>\\n            </button>\\n        </div>\\n        <div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":27,\"column\":20},\"end\":{\"line\":27,\"column\":34}}}) : helper)))\n    + \"popup-section\\\">\\n            <div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":28,\"column\":24},\"end\":{\"line\":28,\"column\":38}}}) : helper)))\n    + \"popup-section-item \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":28,\"column\":57},\"end\":{\"line\":28,\"column\":71}}}) : helper)))\n    + \"section-location\\\">\\n            <span class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":29,\"column\":25},\"end\":{\"line\":29,\"column\":39}}}) : helper)))\n    + \"icon \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":29,\"column\":44},\"end\":{\"line\":29,\"column\":58}}}) : helper)))\n    + \"ic-location\\\"></span>\\n                <input id=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":30,\"column\":27},\"end\":{\"line\":30,\"column\":41}}}) : helper)))\n    + \"schedule-location\\\" class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":30,\"column\":67},\"end\":{\"line\":30,\"column\":81}}}) : helper)))\n    + \"content\\\" placeholder=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"locationPlaceholder-tmpl\") || (depth0 != null ? lookupProperty(depth0,\"locationPlaceholder-tmpl\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"locationPlaceholder-tmpl\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":30,\"column\":103},\"end\":{\"line\":30,\"column\":131}}}) : helper)))\n    + \"\\\" value=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"location\") || (depth0 != null ? lookupProperty(depth0,\"location\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"location\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":30,\"column\":140},\"end\":{\"line\":30,\"column\":152}}}) : helper)))\n    + \"\\\">\\n            </div>\\n        </div>\\n        <div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":33,\"column\":20},\"end\":{\"line\":33,\"column\":34}}}) : helper)))\n    + \"popup-section\\\">\\n            <div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":34,\"column\":24},\"end\":{\"line\":34,\"column\":38}}}) : helper)))\n    + \"popup-section-item \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":34,\"column\":57},\"end\":{\"line\":34,\"column\":71}}}) : helper)))\n    + \"section-start-date\\\">\\n                <span class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":35,\"column\":29},\"end\":{\"line\":35,\"column\":43}}}) : helper)))\n    + \"icon \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":35,\"column\":48},\"end\":{\"line\":35,\"column\":62}}}) : helper)))\n    + \"ic-date\\\"></span>\\n                <input id=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":36,\"column\":27},\"end\":{\"line\":36,\"column\":41}}}) : helper)))\n    + \"schedule-start-date\\\" class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":36,\"column\":69},\"end\":{\"line\":36,\"column\":83}}}) : helper)))\n    + \"content\\\" placeholder=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"startDatePlaceholder-tmpl\") || (depth0 != null ? lookupProperty(depth0,\"startDatePlaceholder-tmpl\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"startDatePlaceholder-tmpl\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":36,\"column\":105},\"end\":{\"line\":36,\"column\":134}}}) : helper)))\n    + \"\\\">\\n                <div id=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":37,\"column\":25},\"end\":{\"line\":37,\"column\":39}}}) : helper)))\n    + \"startpicker-container\\\" style=\\\"margin-left: -1px; position: relative\\\"></div>\\n            </div>\\n            <span class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":39,\"column\":25},\"end\":{\"line\":39,\"column\":39}}}) : helper)))\n    + \"section-date-dash\\\">-</span>\\n            <div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":40,\"column\":24},\"end\":{\"line\":40,\"column\":38}}}) : helper)))\n    + \"popup-section-item \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":40,\"column\":57},\"end\":{\"line\":40,\"column\":71}}}) : helper)))\n    + \"section-end-date\\\">\\n                <span class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":41,\"column\":29},\"end\":{\"line\":41,\"column\":43}}}) : helper)))\n    + \"icon \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":41,\"column\":48},\"end\":{\"line\":41,\"column\":62}}}) : helper)))\n    + \"ic-date\\\"></span>\\n                <input id=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":42,\"column\":27},\"end\":{\"line\":42,\"column\":41}}}) : helper)))\n    + \"schedule-end-date\\\" class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":42,\"column\":67},\"end\":{\"line\":42,\"column\":81}}}) : helper)))\n    + \"content\\\" placeholder=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"endDatePlaceholder-tmpl\") || (depth0 != null ? lookupProperty(depth0,\"endDatePlaceholder-tmpl\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"endDatePlaceholder-tmpl\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":42,\"column\":103},\"end\":{\"line\":42,\"column\":130}}}) : helper)))\n    + \"\\\">\\n                <div id=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":43,\"column\":25},\"end\":{\"line\":43,\"column\":39}}}) : helper)))\n    + \"endpicker-container\\\" style=\\\"margin-left: -1px; position: relative\\\"></div>\\n            </div>\\n            <div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":45,\"column\":24},\"end\":{\"line\":45,\"column\":38}}}) : helper)))\n    + \"popup-section-item \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":45,\"column\":57},\"end\":{\"line\":45,\"column\":71}}}) : helper)))\n    + \"section-allday\\\">\\n                <input id=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":46,\"column\":27},\"end\":{\"line\":46,\"column\":41}}}) : helper)))\n    + \"schedule-allday\\\" type=\\\"checkbox\\\" class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":46,\"column\":81},\"end\":{\"line\":46,\"column\":95}}}) : helper)))\n    + \"checkbox-square\\\"\"\n    + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"isAllDay\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(7, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":46,\"column\":111},\"end\":{\"line\":46,\"column\":142}}})) != null ? stack1 : \"\")\n    + \">\\n                <span class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":47,\"column\":29},\"end\":{\"line\":47,\"column\":43}}}) : helper)))\n    + \"icon \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":47,\"column\":48},\"end\":{\"line\":47,\"column\":62}}}) : helper)))\n    + \"ic-checkbox\\\"></span>\\n                <span class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":48,\"column\":29},\"end\":{\"line\":48,\"column\":43}}}) : helper)))\n    + \"content\\\">\"\n    + ((stack1 = ((helper = (helper = lookupProperty(helpers,\"popupIsAllDay-tmpl\") || (depth0 != null ? lookupProperty(depth0,\"popupIsAllDay-tmpl\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"popupIsAllDay-tmpl\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":48,\"column\":52},\"end\":{\"line\":48,\"column\":76}}}) : helper))) != null ? stack1 : \"\")\n    + \"</span>\\n            </div>\\n        </div>\\n        <div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":51,\"column\":20},\"end\":{\"line\":51,\"column\":34}}}) : helper)))\n    + \"popup-section \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":51,\"column\":48},\"end\":{\"line\":51,\"column\":62}}}) : helper)))\n    + \"dropdown \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":51,\"column\":71},\"end\":{\"line\":51,\"column\":85}}}) : helper)))\n    + \"close \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":51,\"column\":91},\"end\":{\"line\":51,\"column\":105}}}) : helper)))\n    + \"section-state\\\">\\n            <button class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":52,\"column\":27},\"end\":{\"line\":52,\"column\":41}}}) : helper)))\n    + \"button \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":52,\"column\":48},\"end\":{\"line\":52,\"column\":62}}}) : helper)))\n    + \"dropdown-button \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":52,\"column\":78},\"end\":{\"line\":52,\"column\":92}}}) : helper)))\n    + \"popup-section-item\\\">\\n                <span class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":53,\"column\":29},\"end\":{\"line\":53,\"column\":43}}}) : helper)))\n    + \"icon \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":53,\"column\":48},\"end\":{\"line\":53,\"column\":62}}}) : helper)))\n    + \"ic-state\\\"></span>\\n                <span id=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":54,\"column\":26},\"end\":{\"line\":54,\"column\":40}}}) : helper)))\n    + \"schedule-state\\\" class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":54,\"column\":63},\"end\":{\"line\":54,\"column\":77}}}) : helper)))\n    + \"content\\\">\"\n    + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"state\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(9, data, 0),\"inverse\":container.program(11, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":54,\"column\":86},\"end\":{\"line\":54,\"column\":148}}})) != null ? stack1 : \"\")\n    + \"</span>\\n                <span class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":55,\"column\":29},\"end\":{\"line\":55,\"column\":43}}}) : helper)))\n    + \"icon \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":55,\"column\":48},\"end\":{\"line\":55,\"column\":62}}}) : helper)))\n    + \"dropdown-arrow\\\"></span>\\n            </button>\\n            <ul class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":57,\"column\":23},\"end\":{\"line\":57,\"column\":37}}}) : helper)))\n    + \"dropdown-menu\\\" style=\\\"z-index: \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"zIndex\") || (depth0 != null ? lookupProperty(depth0,\"zIndex\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"zIndex\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":57,\"column\":68},\"end\":{\"line\":57,\"column\":78}}}) : helper)))\n    + \"\\\">\\n                <li class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":58,\"column\":27},\"end\":{\"line\":58,\"column\":41}}}) : helper)))\n    + \"popup-section-item \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":58,\"column\":60},\"end\":{\"line\":58,\"column\":74}}}) : helper)))\n    + \"dropdown-menu-item\\\">\\n                <span class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":59,\"column\":29},\"end\":{\"line\":59,\"column\":43}}}) : helper)))\n    + \"icon \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":59,\"column\":48},\"end\":{\"line\":59,\"column\":62}}}) : helper)))\n    + \"none\\\"></span>\\n                <span class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":60,\"column\":29},\"end\":{\"line\":60,\"column\":43}}}) : helper)))\n    + \"content\\\">\"\n    + ((stack1 = ((helper = (helper = lookupProperty(helpers,\"popupStateBusy-tmpl\") || (depth0 != null ? lookupProperty(depth0,\"popupStateBusy-tmpl\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"popupStateBusy-tmpl\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":60,\"column\":52},\"end\":{\"line\":60,\"column\":77}}}) : helper))) != null ? stack1 : \"\")\n    + \"</span>\\n                </li>\\n                <li class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":62,\"column\":27},\"end\":{\"line\":62,\"column\":41}}}) : helper)))\n    + \"popup-section-item \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":62,\"column\":60},\"end\":{\"line\":62,\"column\":74}}}) : helper)))\n    + \"dropdown-menu-item\\\">\\n                <span class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":63,\"column\":29},\"end\":{\"line\":63,\"column\":43}}}) : helper)))\n    + \"icon \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":63,\"column\":48},\"end\":{\"line\":63,\"column\":62}}}) : helper)))\n    + \"none\\\"></span>\\n                <span class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":64,\"column\":29},\"end\":{\"line\":64,\"column\":43}}}) : helper)))\n    + \"content\\\">\"\n    + ((stack1 = ((helper = (helper = lookupProperty(helpers,\"popupStateFree-tmpl\") || (depth0 != null ? lookupProperty(depth0,\"popupStateFree-tmpl\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"popupStateFree-tmpl\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":64,\"column\":52},\"end\":{\"line\":64,\"column\":77}}}) : helper))) != null ? stack1 : \"\")\n    + \"</span>\\n                </li>\\n            </ul>\\n        </div>\\n        <button class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":68,\"column\":23},\"end\":{\"line\":68,\"column\":37}}}) : helper)))\n    + \"button \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":68,\"column\":44},\"end\":{\"line\":68,\"column\":58}}}) : helper)))\n    + \"popup-close\\\"><span class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":68,\"column\":84},\"end\":{\"line\":68,\"column\":98}}}) : helper)))\n    + \"icon \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":68,\"column\":103},\"end\":{\"line\":68,\"column\":117}}}) : helper)))\n    + \"ic-close\\\"></span></button>\\n        <div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":69,\"column\":20},\"end\":{\"line\":69,\"column\":34}}}) : helper)))\n    + \"section-button-save\\\"><button class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":69,\"column\":70},\"end\":{\"line\":69,\"column\":84}}}) : helper)))\n    + \"button \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":69,\"column\":91},\"end\":{\"line\":69,\"column\":105}}}) : helper)))\n    + \"confirm \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":69,\"column\":113},\"end\":{\"line\":69,\"column\":127}}}) : helper)))\n    + \"popup-save\\\"><span>\"\n    + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"isEditMode\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(13, data, 0),\"inverse\":container.program(15, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":69,\"column\":145},\"end\":{\"line\":69,\"column\":220}}})) != null ? stack1 : \"\")\n    + \"</span></button></div>\\n    </div>\\n    <div id=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":71,\"column\":13},\"end\":{\"line\":71,\"column\":27}}}) : helper)))\n    + \"popup-arrow\\\" class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":71,\"column\":47},\"end\":{\"line\":71,\"column\":61}}}) : helper)))\n    + \"popup-arrow \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":71,\"column\":73},\"end\":{\"line\":71,\"column\":87}}}) : helper)))\n    + \"arrow-bottom\\\">\\n        <div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":72,\"column\":20},\"end\":{\"line\":72,\"column\":34}}}) : helper)))\n    + \"popup-arrow-border\\\">\\n            <div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":73,\"column\":24},\"end\":{\"line\":73,\"column\":38}}}) : helper)))\n    + \"popup-arrow-fill\\\"></div>\\n        </div>\\n    </div>\\n</div>\\n\";\n},\"useData\":true});","var Handlebars = require('/Users/nhnent/Jodeng/workspace/Work/tui.calendar-new/node_modules/handlebars/runtime.js');\nmodule.exports = (Handlebars['default'] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data) {\n    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"<div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":11,\"column\":45},\"end\":{\"line\":11,\"column\":59}}}) : helper)))\n    + \"popup-detail-item\\\"><span class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":11,\"column\":91},\"end\":{\"line\":11,\"column\":105}}}) : helper)))\n    + \"icon \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":11,\"column\":110},\"end\":{\"line\":11,\"column\":124}}}) : helper)))\n    + \"ic-location-b\\\"></span><span class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":11,\"column\":159},\"end\":{\"line\":11,\"column\":173}}}) : helper)))\n    + \"content\\\">\"\n    + ((stack1 = (lookupProperty(helpers,\"popupDetailLocation-tmpl\")||(depth0 && lookupProperty(depth0,\"popupDetailLocation-tmpl\"))||alias2).call(alias1,(depth0 != null ? lookupProperty(depth0,\"schedule\") : depth0),{\"name\":\"popupDetailLocation-tmpl\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":11,\"column\":182},\"end\":{\"line\":11,\"column\":221}}})) != null ? stack1 : \"\")\n    + \"</span></div>\";\n},\"3\":function(container,depth0,helpers,partials,data) {\n    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"<div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":12,\"column\":51},\"end\":{\"line\":12,\"column\":65}}}) : helper)))\n    + \"popup-detail-item\\\"><span class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":12,\"column\":97},\"end\":{\"line\":12,\"column\":111}}}) : helper)))\n    + \"icon \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":12,\"column\":116},\"end\":{\"line\":12,\"column\":130}}}) : helper)))\n    + \"ic-repeat-b\\\"></span><span class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":12,\"column\":163},\"end\":{\"line\":12,\"column\":177}}}) : helper)))\n    + \"content\\\">\"\n    + ((stack1 = (lookupProperty(helpers,\"popupDetailRepeat-tmpl\")||(depth0 && lookupProperty(depth0,\"popupDetailRepeat-tmpl\"))||alias2).call(alias1,(depth0 != null ? lookupProperty(depth0,\"schedule\") : depth0),{\"name\":\"popupDetailRepeat-tmpl\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":12,\"column\":186},\"end\":{\"line\":12,\"column\":223}}})) != null ? stack1 : \"\")\n    + \"</span></div>\";\n},\"5\":function(container,depth0,helpers,partials,data) {\n    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"<div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":13,\"column\":46},\"end\":{\"line\":13,\"column\":60}}}) : helper)))\n    + \"popup-detail-item \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":13,\"column\":78},\"end\":{\"line\":13,\"column\":92}}}) : helper)))\n    + \"popup-detail-item-indent\\\"><span class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":13,\"column\":131},\"end\":{\"line\":13,\"column\":145}}}) : helper)))\n    + \"icon \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":13,\"column\":150},\"end\":{\"line\":13,\"column\":164}}}) : helper)))\n    + \"ic-user-b\\\"></span><span class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":13,\"column\":195},\"end\":{\"line\":13,\"column\":209}}}) : helper)))\n    + \"content\\\">\"\n    + ((stack1 = (lookupProperty(helpers,\"popupDetailUser-tmpl\")||(depth0 && lookupProperty(depth0,\"popupDetailUser-tmpl\"))||alias2).call(alias1,(depth0 != null ? lookupProperty(depth0,\"schedule\") : depth0),{\"name\":\"popupDetailUser-tmpl\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":13,\"column\":218},\"end\":{\"line\":13,\"column\":253}}})) != null ? stack1 : \"\")\n    + \"</span></div>\";\n},\"7\":function(container,depth0,helpers,partials,data) {\n    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"<div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":14,\"column\":42},\"end\":{\"line\":14,\"column\":56}}}) : helper)))\n    + \"popup-detail-item\\\"><span class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":14,\"column\":88},\"end\":{\"line\":14,\"column\":102}}}) : helper)))\n    + \"icon \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":14,\"column\":107},\"end\":{\"line\":14,\"column\":121}}}) : helper)))\n    + \"ic-state-b\\\"></span><span class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":14,\"column\":153},\"end\":{\"line\":14,\"column\":167}}}) : helper)))\n    + \"content\\\">\"\n    + ((stack1 = (lookupProperty(helpers,\"popupDetailState-tmpl\")||(depth0 && lookupProperty(depth0,\"popupDetailState-tmpl\"))||alias2).call(alias1,(depth0 != null ? lookupProperty(depth0,\"schedule\") : depth0),{\"name\":\"popupDetailState-tmpl\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":14,\"column\":176},\"end\":{\"line\":14,\"column\":212}}})) != null ? stack1 : \"\")\n    + \"</span></div>\";\n},\"9\":function(container,depth0,helpers,partials,data) {\n    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, alias5=container.lambda, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"        <div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":16,\"column\":20},\"end\":{\"line\":16,\"column\":34}}}) : helper)))\n    + \"popup-detail-item\\\"><span class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":16,\"column\":66},\"end\":{\"line\":16,\"column\":80}}}) : helper)))\n    + \"icon \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":16,\"column\":85},\"end\":{\"line\":16,\"column\":99}}}) : helper)))\n    + \"calendar-dot\\\" style=\\\"background-color: \"\n    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,\"schedule\") : depth0)) != null ? lookupProperty(stack1,\"bgColor\") : stack1), depth0))\n    + \"\\\"></span><span class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":16,\"column\":180},\"end\":{\"line\":16,\"column\":194}}}) : helper)))\n    + \"content\\\">\"\n    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,\"calendar\") : depth0)) != null ? lookupProperty(stack1,\"name\") : stack1), depth0))\n    + \"</span></div>\\n\";\n},\"11\":function(container,depth0,helpers,partials,data) {\n    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"<div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":18,\"column\":41},\"end\":{\"line\":18,\"column\":55}}}) : helper)))\n    + \"popup-detail-item \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":18,\"column\":73},\"end\":{\"line\":18,\"column\":87}}}) : helper)))\n    + \"popup-detail-item-separate\\\"><span class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":18,\"column\":128},\"end\":{\"line\":18,\"column\":142}}}) : helper)))\n    + \"content\\\">\"\n    + ((stack1 = (lookupProperty(helpers,\"popupDetailBody-tmpl\")||(depth0 && lookupProperty(depth0,\"popupDetailBody-tmpl\"))||alias2).call(alias1,(depth0 != null ? lookupProperty(depth0,\"schedule\") : depth0),{\"name\":\"popupDetailBody-tmpl\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":18,\"column\":151},\"end\":{\"line\":18,\"column\":186}}})) != null ? stack1 : \"\")\n    + \"</span></div>\";\n},\"13\":function(container,depth0,helpers,partials,data) {\n    return \"\";\n},\"15\":function(container,depth0,helpers,partials,data) {\n    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"    <div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":22,\"column\":16},\"end\":{\"line\":22,\"column\":30}}}) : helper)))\n    + \"section-button\\\">\\n      <button class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":23,\"column\":21},\"end\":{\"line\":23,\"column\":35}}}) : helper)))\n    + \"popup-edit\\\"><span class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":23,\"column\":60},\"end\":{\"line\":23,\"column\":74}}}) : helper)))\n    + \"icon \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":23,\"column\":79},\"end\":{\"line\":23,\"column\":93}}}) : helper)))\n    + \"ic-edit\\\"></span><span class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":23,\"column\":122},\"end\":{\"line\":23,\"column\":136}}}) : helper)))\n    + \"content\\\">\"\n    + ((stack1 = ((helper = (helper = lookupProperty(helpers,\"popupEdit-tmpl\") || (depth0 != null ? lookupProperty(depth0,\"popupEdit-tmpl\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"popupEdit-tmpl\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":23,\"column\":145},\"end\":{\"line\":23,\"column\":165}}}) : helper))) != null ? stack1 : \"\")\n    + \"</span></button>\\n      <div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":24,\"column\":18},\"end\":{\"line\":24,\"column\":32}}}) : helper)))\n    + \"popup-vertical-line\\\"></div>\\n      <button class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":25,\"column\":21},\"end\":{\"line\":25,\"column\":35}}}) : helper)))\n    + \"popup-delete\\\"><span class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":25,\"column\":62},\"end\":{\"line\":25,\"column\":76}}}) : helper)))\n    + \"icon \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":25,\"column\":81},\"end\":{\"line\":25,\"column\":95}}}) : helper)))\n    + \"ic-delete\\\"></span><span class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":25,\"column\":126},\"end\":{\"line\":25,\"column\":140}}}) : helper)))\n    + \"content\\\">\"\n    + ((stack1 = ((helper = (helper = lookupProperty(helpers,\"popupDelete-tmpl\") || (depth0 != null ? lookupProperty(depth0,\"popupDelete-tmpl\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"popupDelete-tmpl\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":25,\"column\":149},\"end\":{\"line\":25,\"column\":171}}}) : helper))) != null ? stack1 : \"\")\n    + \"</span></button>\\n    </div>\\n\";\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, alias5=container.lambda, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"<div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":1,\"column\":12},\"end\":{\"line\":1,\"column\":26}}}) : helper)))\n    + \"popup \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":1,\"column\":32},\"end\":{\"line\":1,\"column\":46}}}) : helper)))\n    + \"popup-detail\\\">\\n  <div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":2,\"column\":14},\"end\":{\"line\":2,\"column\":28}}}) : helper)))\n    + \"popup-container\\\">\\n    <div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":3,\"column\":16},\"end\":{\"line\":3,\"column\":30}}}) : helper)))\n    + \"popup-section \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":3,\"column\":44},\"end\":{\"line\":3,\"column\":58}}}) : helper)))\n    + \"section-header\\\">\\n      <div>\\n        <span class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":5,\"column\":21},\"end\":{\"line\":5,\"column\":35}}}) : helper)))\n    + \"schedule-private \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":5,\"column\":52},\"end\":{\"line\":5,\"column\":66}}}) : helper)))\n    + \"icon \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":5,\"column\":71},\"end\":{\"line\":5,\"column\":85}}}) : helper)))\n    + \"ic-private\\\"></span>\\n        <span class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":6,\"column\":21},\"end\":{\"line\":6,\"column\":35}}}) : helper)))\n    + \"schedule-title\\\">\"\n    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,\"schedule\") : depth0)) != null ? lookupProperty(stack1,\"title\") : stack1), depth0))\n    + \"</span>\\n      </div>\\n      <div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":8,\"column\":18},\"end\":{\"line\":8,\"column\":32}}}) : helper)))\n    + \"popup-detail-date \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":8,\"column\":50},\"end\":{\"line\":8,\"column\":64}}}) : helper)))\n    + \"content\\\">\"\n    + ((stack1 = (lookupProperty(helpers,\"popupDetailDate-tmpl\")||(depth0 && lookupProperty(depth0,\"popupDetailDate-tmpl\"))||alias2).call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"schedule\") : depth0)) != null ? lookupProperty(stack1,\"isAllDay\") : stack1),((stack1 = (depth0 != null ? lookupProperty(depth0,\"schedule\") : depth0)) != null ? lookupProperty(stack1,\"start\") : stack1),((stack1 = (depth0 != null ? lookupProperty(depth0,\"schedule\") : depth0)) != null ? lookupProperty(stack1,\"end\") : stack1),{\"name\":\"popupDetailDate-tmpl\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":8,\"column\":73},\"end\":{\"line\":8,\"column\":145}}})) != null ? stack1 : \"\")\n    + \"</div>\\n    </div>\\n    <div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":10,\"column\":16},\"end\":{\"line\":10,\"column\":30}}}) : helper)))\n    + \"section-detail\\\">\\n        \"\n    + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"schedule\") : depth0)) != null ? lookupProperty(stack1,\"location\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":11,\"column\":8},\"end\":{\"line\":11,\"column\":241}}})) != null ? stack1 : \"\")\n    + \"\\n        \"\n    + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"schedule\") : depth0)) != null ? lookupProperty(stack1,\"recurrenceRule\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(3, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":12,\"column\":8},\"end\":{\"line\":12,\"column\":243}}})) != null ? stack1 : \"\")\n    + \"\\n        \"\n    + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"schedule\") : depth0)) != null ? lookupProperty(stack1,\"attendees\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(5, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":13,\"column\":8},\"end\":{\"line\":13,\"column\":273}}})) != null ? stack1 : \"\")\n    + \"\\n        \"\n    + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"schedule\") : depth0)) != null ? lookupProperty(stack1,\"state\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(7, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":14,\"column\":8},\"end\":{\"line\":14,\"column\":232}}})) != null ? stack1 : \"\")\n    + \"\\n\"\n    + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"calendar\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(9, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":15,\"column\":8},\"end\":{\"line\":17,\"column\":15}}})) != null ? stack1 : \"\")\n    + \"        \"\n    + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"schedule\") : depth0)) != null ? lookupProperty(stack1,\"body\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(11, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":18,\"column\":8},\"end\":{\"line\":18,\"column\":206}}})) != null ? stack1 : \"\")\n    + \"\\n    </div>\\n\"\n    + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"schedule\") : depth0)) != null ? lookupProperty(stack1,\"isReadOnly\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(13, data, 0),\"inverse\":container.program(15, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":20,\"column\":4},\"end\":{\"line\":27,\"column\":11}}})) != null ? stack1 : \"\")\n    + \"  </div>\\n  <div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":29,\"column\":14},\"end\":{\"line\":29,\"column\":28}}}) : helper)))\n    + \"popup-top-line\\\" style=\\\"background-color: \"\n    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,\"schedule\") : depth0)) != null ? lookupProperty(stack1,\"bgColor\") : stack1), depth0))\n    + \"\\\"></div>\\n  <div id=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":30,\"column\":11},\"end\":{\"line\":30,\"column\":25}}}) : helper)))\n    + \"popup-arrow\\\" class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":30,\"column\":45},\"end\":{\"line\":30,\"column\":59}}}) : helper)))\n    + \"popup-arrow \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":30,\"column\":71},\"end\":{\"line\":30,\"column\":85}}}) : helper)))\n    + \"arrow-left\\\">\\n    <div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":31,\"column\":16},\"end\":{\"line\":31,\"column\":30}}}) : helper)))\n    + \"popup-arrow-border\\\">\\n        <div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":32,\"column\":20},\"end\":{\"line\":32,\"column\":34}}}) : helper)))\n    + \"popup-arrow-fill\\\"></div>\\n    </div>\\n  </div>\\n</div>\\n\";\n},\"useData\":true});","var Handlebars = require('/Users/nhnent/Jodeng/workspace/Work/tui.calendar-new/node_modules/handlebars/runtime.js');\nmodule.exports = (Handlebars['default'] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data) {\n    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"<div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":8,\"column\":24},\"end\":{\"line\":8,\"column\":38}}}) : helper)))\n    + \"weekday-grid-line\\\"\\n                style=\\\"left:\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"left\") || (depth0 != null ? lookupProperty(depth0,\"left\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"left\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":9,\"column\":28},\"end\":{\"line\":9,\"column\":36}}}) : helper)))\n    + \"%; width:\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"width\") || (depth0 != null ? lookupProperty(depth0,\"width\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"width\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":9,\"column\":45},\"end\":{\"line\":9,\"column\":54}}}) : helper)))\n    + \"%; background-color: \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"backgroundColor\") || (depth0 != null ? lookupProperty(depth0,\"backgroundColor\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"backgroundColor\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":9,\"column\":75},\"end\":{\"line\":9,\"column\":94}}}) : helper)))\n    + \";\\n\"\n    + ((stack1 = lookupProperty(helpers,\"unless\").call(alias1,(data && lookupProperty(data,\"last\")),{\"name\":\"unless\",\"hash\":{},\"fn\":container.program(2, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":10,\"column\":20},\"end\":{\"line\":12,\"column\":31}}})) != null ? stack1 : \"\")\n    + \"            \\\"></div>\\n\";\n},\"2\":function(container,depth0,helpers,partials,data) {\n    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"                    border-right: \"\n    + container.escapeExpression(container.lambda(((stack1 = ((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"styles\"))) && lookupProperty(stack1,\"borderRight\")), depth0))\n    + \";\\n\";\n},\"4\":function(container,depth0,helpers,partials,data) {\n    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return ((stack1 = lookupProperty(helpers,\"each\").call(depth0 != null ? depth0 : (container.nullContext || {}),(depth0 != null ? lookupProperty(depth0,\"days\") : depth0),{\"name\":\"each\",\"hash\":{},\"fn\":container.program(5, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":17,\"column\":8},\"end\":{\"line\":27,\"column\":19}}})) != null ? stack1 : \"\");\n},\"5\":function(container,depth0,helpers,partials,data) {\n    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return ((stack1 = lookupProperty(helpers,\"if\").call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"collapsed\")),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(6, data, 0),\"inverse\":container.program(9, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":18,\"column\":12},\"end\":{\"line\":26,\"column\":19}}})) != null ? stack1 : \"\");\n},\"6\":function(container,depth0,helpers,partials,data) {\n    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return ((stack1 = lookupProperty(helpers,\"if\").call(depth0 != null ? depth0 : (container.nullContext || {}),(depth0 != null ? lookupProperty(depth0,\"hiddenSchedules\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(7, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":19,\"column\":16},\"end\":{\"line\":21,\"column\":23}}})) != null ? stack1 : \"\");\n},\"7\":function(container,depth0,helpers,partials,data) {\n    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"                    <span class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":20,\"column\":33},\"end\":{\"line\":20,\"column\":47}}}) : helper)))\n    + \"weekday-exceed-in-week\\\" style=\\\"z-index: 1; right:\"\n    + alias4((lookupProperty(helpers,\"getRight\")||(depth0 && lookupProperty(depth0,\"getRight\"))||alias2).call(alias1,(depth0 != null ? lookupProperty(depth0,\"left\") : depth0),(depth0 != null ? lookupProperty(depth0,\"width\") : depth0),{\"name\":\"getRight\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":20,\"column\":96},\"end\":{\"line\":20,\"column\":119}}}))\n    + \"%;\\\" data-index=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"key\") || (data && lookupProperty(data,\"key\"))) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"key\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":20,\"column\":135},\"end\":{\"line\":20,\"column\":143}}}) : helper)))\n    + \"\\\">\"\n    + ((stack1 = (lookupProperty(helpers,\"weekGridFooterExceed-tmpl\")||(depth0 && lookupProperty(depth0,\"weekGridFooterExceed-tmpl\"))||alias2).call(alias1,(depth0 != null ? lookupProperty(depth0,\"hiddenSchedules\") : depth0),{\"name\":\"weekGridFooterExceed-tmpl\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":20,\"column\":145},\"end\":{\"line\":20,\"column\":192}}})) != null ? stack1 : \"\")\n    + \"</span>\\n\";\n},\"9\":function(container,depth0,helpers,partials,data) {\n    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return ((stack1 = (lookupProperty(helpers,\"fi\")||(depth0 && lookupProperty(depth0,\"fi\"))||container.hooks.helperMissing).call(depth0 != null ? depth0 : (container.nullContext || {}),(data && lookupProperty(data,\"key\")),\"===\",((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"collapseBtnIndex\")),{\"name\":\"fi\",\"hash\":{},\"fn\":container.program(10, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":23,\"column\":16},\"end\":{\"line\":25,\"column\":23}}})) != null ? stack1 : \"\");\n},\"10\":function(container,depth0,helpers,partials,data) {\n    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"                    <span class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":24,\"column\":33},\"end\":{\"line\":24,\"column\":47}}}) : helper)))\n    + \"weekday-collapse-btn\\\" style=\\\"z-index: 1; right:\"\n    + alias4((lookupProperty(helpers,\"getRight\")||(depth0 && lookupProperty(depth0,\"getRight\"))||alias2).call(alias1,(depth0 != null ? lookupProperty(depth0,\"left\") : depth0),(depth0 != null ? lookupProperty(depth0,\"width\") : depth0),{\"name\":\"getRight\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":24,\"column\":94},\"end\":{\"line\":24,\"column\":117}}}))\n    + \"%;\\\">\"\n    + ((stack1 = ((helper = (helper = lookupProperty(helpers,\"collapseBtnTitle-tmpl\") || (depth0 != null ? lookupProperty(depth0,\"collapseBtnTitle-tmpl\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"collapseBtnTitle-tmpl\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":24,\"column\":121},\"end\":{\"line\":24,\"column\":148}}}) : helper))) != null ? stack1 : \"\")\n    + \"</span>\\n\";\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, alias5=container.lambda, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"<div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":1,\"column\":12},\"end\":{\"line\":1,\"column\":26}}}) : helper)))\n    + alias4(((helper = (helper = lookupProperty(helpers,\"viewName\") || (depth0 != null ? lookupProperty(depth0,\"viewName\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"viewName\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":1,\"column\":26},\"end\":{\"line\":1,\"column\":38}}}) : helper)))\n    + \"-left \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":1,\"column\":44},\"end\":{\"line\":1,\"column\":58}}}) : helper)))\n    + \"left\\\" style=\\\"border-right: \"\n    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,\"styles\") : depth0)) != null ? lookupProperty(stack1,\"leftBorderRight\") : stack1), depth0))\n    + \"; width: \"\n    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,\"styles\") : depth0)) != null ? lookupProperty(stack1,\"leftWidth\") : stack1), depth0))\n    + \"; background-color: \"\n    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,\"styles\") : depth0)) != null ? lookupProperty(stack1,\"leftBackgroundColor\") : stack1), depth0))\n    + \"; padding-right: \"\n    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,\"styles\") : depth0)) != null ? lookupProperty(stack1,\"leftPaddingRight\") : stack1), depth0))\n    + \";\\\">\\n    \"\n    + ((stack1 = (lookupProperty(helpers,\"dayGridTitle-tmpl\")||(depth0 && lookupProperty(depth0,\"dayGridTitle-tmpl\"))||alias2).call(alias1,(depth0 != null ? lookupProperty(depth0,\"viewName\") : depth0),{\"name\":\"dayGridTitle-tmpl\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":2,\"column\":4},\"end\":{\"line\":2,\"column\":36}}})) != null ? stack1 : \"\")\n    + \"\\n</div>\\n<div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":4,\"column\":12},\"end\":{\"line\":4,\"column\":26}}}) : helper)))\n    + alias4(((helper = (helper = lookupProperty(helpers,\"viewName\") || (depth0 != null ? lookupProperty(depth0,\"viewName\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"viewName\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":4,\"column\":26},\"end\":{\"line\":4,\"column\":38}}}) : helper)))\n    + \"-right \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":4,\"column\":45},\"end\":{\"line\":4,\"column\":59}}}) : helper)))\n    + \"right\\\">\\n    <div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":5,\"column\":16},\"end\":{\"line\":5,\"column\":30}}}) : helper)))\n    + \"container\\\">\\n        <div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":6,\"column\":20},\"end\":{\"line\":6,\"column\":34}}}) : helper)))\n    + \"weekday-grid\\\">\\n\"\n    + ((stack1 = lookupProperty(helpers,\"each\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"days\") : depth0),{\"name\":\"each\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":7,\"column\":8},\"end\":{\"line\":14,\"column\":19}}})) != null ? stack1 : \"\")\n    + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"showExpandableButton\")),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(4, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":16,\"column\":8},\"end\":{\"line\":28,\"column\":15}}})) != null ? stack1 : \"\")\n    + \"        </div>\\n    </div>\\n</div>\\n\";\n},\"useData\":true});","var Handlebars = require('/Users/nhnent/Jodeng/workspace/Work/tui.calendar-new/node_modules/handlebars/runtime.js');\nmodule.exports = (Handlebars['default'] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data) {\n    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return ((stack1 = lookupProperty(helpers,\"each\").call(depth0 != null ? depth0 : (container.nullContext || {}),depth0,{\"name\":\"each\",\"hash\":{},\"fn\":container.program(2, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":3,\"column\":4},\"end\":{\"line\":27,\"column\":15}}})) != null ? stack1 : \"\");\n},\"2\":function(container,depth0,helpers,partials,data) {\n    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"\\n    \"\n    + ((stack1 = lookupProperty(helpers,\"each\").call(depth0 != null ? depth0 : (container.nullContext || {}),depth0,{\"name\":\"each\",\"hash\":{},\"fn\":container.program(3, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":4,\"column\":4},\"end\":{\"line\":26,\"column\":15}}})) != null ? stack1 : \"\");\n},\"3\":function(container,depth0,helpers,partials,data) {\n    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"\\n    \"\n    + ((stack1 = lookupProperty(helpers,\"if\").call(depth0 != null ? depth0 : (container.nullContext || {}),depth0,{\"name\":\"if\",\"hash\":{},\"fn\":container.program(4, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":5,\"column\":4},\"end\":{\"line\":25,\"column\":13}}})) != null ? stack1 : \"\");\n},\"4\":function(container,depth0,helpers,partials,data) {\n    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=container.escapeExpression, alias4=\"function\", alias5=container.lambda, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"\\n    <div data-id=\\\"\"\n    + alias3((lookupProperty(helpers,\"stamp\")||(depth0 && lookupProperty(depth0,\"stamp\"))||alias2).call(alias1,(depth0 != null ? lookupProperty(depth0,\"model\") : depth0),{\"name\":\"stamp\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":6,\"column\":18},\"end\":{\"line\":6,\"column\":33}}}))\n    + \"\\\"\\n        class=\\\"\"\n    + alias3(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias4 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":7,\"column\":15},\"end\":{\"line\":7,\"column\":29}}}) : helper)))\n    + \"weekday-schedule-block\\n            \"\n    + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"exceedLeft\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(5, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":8,\"column\":12},\"end\":{\"line\":8,\"column\":71}}})) != null ? stack1 : \"\")\n    + \"\\n            \"\n    + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"exceedRight\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(7, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":9,\"column\":12},\"end\":{\"line\":9,\"column\":73}}})) != null ? stack1 : \"\")\n    + \"\\\"\\n        style=\\\"top:\"\n    + alias3((lookupProperty(helpers,\"multiply\")||(depth0 && lookupProperty(depth0,\"multiply\"))||alias2).call(alias1,(depth0 != null ? lookupProperty(depth0,\"top\") : depth0),((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"scheduleBlockHeight\")),{\"name\":\"multiply\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":10,\"column\":19},\"end\":{\"line\":10,\"column\":61}}}))\n    + \"px;\\n                left:\"\n    + alias3((lookupProperty(helpers,\"grid-left\")||(depth0 && lookupProperty(depth0,\"grid-left\"))||alias2).call(alias1,depth0,((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"dates\")),{\"name\":\"grid-left\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":11,\"column\":21},\"end\":{\"line\":11,\"column\":51}}}))\n    + \"%;\\n                width:\"\n    + alias3((lookupProperty(helpers,\"grid-width\")||(depth0 && lookupProperty(depth0,\"grid-width\"))||alias2).call(alias1,depth0,((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"dates\")),{\"name\":\"grid-width\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":12,\"column\":22},\"end\":{\"line\":12,\"column\":53}}}))\n    + \"%\\\">\\n        <div data-schedule-id=\\\"\"\n    + alias3(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"id\") : stack1), depth0))\n    + \"\\\" data-calendar-id=\\\"\"\n    + alias3(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"calendarId\") : stack1), depth0))\n    + \"\\\" class=\\\"\"\n    + alias3(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias4 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":13,\"column\":92},\"end\":{\"line\":13,\"column\":106}}}) : helper)))\n    + \"weekday-schedule \"\n    + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"isFocused\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(9, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":13,\"column\":123},\"end\":{\"line\":13,\"column\":192}}})) != null ? stack1 : \"\")\n    + \"\\\"\\n            style=\\\"height:\"\n    + alias3(alias5(((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"scheduleHeight\")), depth0))\n    + \"px; line-height:\"\n    + alias3(alias5(((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"scheduleHeight\")), depth0))\n    + \"px; border-radius: \"\n    + alias3(alias5(((stack1 = ((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"styles\"))) && lookupProperty(stack1,\"borderRadius\")), depth0))\n    + \";\\n\"\n    + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"isFocused\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(11, data, 0),\"inverse\":container.program(13, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":15,\"column\":16},\"end\":{\"line\":19,\"column\":23}}})) != null ? stack1 : \"\")\n    + \"            \"\n    + alias3(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"customStyle\") : stack1), depth0))\n    + \"\\\">\\n            <span class=\\\"\"\n    + alias3(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias4 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":21,\"column\":25},\"end\":{\"line\":21,\"column\":39}}}) : helper)))\n    + \"weekday-schedule-title\\\" title=\\\"\"\n    + alias3(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"title\") : stack1), depth0))\n    + \"\\\">\"\n    + ((stack1 = (lookupProperty(helpers,\"schedule-tmpl\")||(depth0 && lookupProperty(depth0,\"schedule-tmpl\"))||alias2).call(alias1,(depth0 != null ? lookupProperty(depth0,\"model\") : depth0),{\"name\":\"schedule-tmpl\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":21,\"column\":87},\"end\":{\"line\":21,\"column\":112}}})) != null ? stack1 : \"\")\n    + \"</span>\\n            \"\n    + ((stack1 = lookupProperty(helpers,\"unless\").call(alias1,(lookupProperty(helpers,\"or\")||(depth0 && lookupProperty(depth0,\"or\"))||alias2).call(alias1,((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"isReadOnly\")),((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"isReadOnly\") : stack1),{\"name\":\"or\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":22,\"column\":22},\"end\":{\"line\":22,\"column\":60}}}),{\"name\":\"unless\",\"hash\":{},\"fn\":container.program(15, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":22,\"column\":12},\"end\":{\"line\":22,\"column\":193}}})) != null ? stack1 : \"\")\n    + \"\\n        </div>\\n    </div>\\n\";\n},\"5\":function(container,depth0,helpers,partials,data) {\n    var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \" \"\n    + container.escapeExpression(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":8,\"column\":31},\"end\":{\"line\":8,\"column\":45}}}) : helper)))\n    + \"weekday-exceed-left\";\n},\"7\":function(container,depth0,helpers,partials,data) {\n    var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \" \"\n    + container.escapeExpression(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":9,\"column\":32},\"end\":{\"line\":9,\"column\":46}}}) : helper)))\n    + \"weekday-exceed-right\";\n},\"9\":function(container,depth0,helpers,partials,data) {\n    var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return container.escapeExpression(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":13,\"column\":146},\"end\":{\"line\":13,\"column\":160}}}) : helper)))\n    + \"weekday-schedule-focused \";\n},\"11\":function(container,depth0,helpers,partials,data) {\n    var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"                    color: #ffffff; background-color:\"\n    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"color\") : stack1), depth0))\n    + \"; border-color:\"\n    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"color\") : stack1), depth0))\n    + \";\\n\";\n},\"13\":function(container,depth0,helpers,partials,data) {\n    var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"                    color:\"\n    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"color\") : stack1), depth0))\n    + \"; background-color:\"\n    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"bgColor\") : stack1), depth0))\n    + \"; border-color:\"\n    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"borderColor\") : stack1), depth0))\n    + \";\\n\";\n},\"15\":function(container,depth0,helpers,partials,data) {\n    var stack1, helper, alias1=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"<span class=\\\"\"\n    + alias1(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":22,\"column\":75},\"end\":{\"line\":22,\"column\":89}}}) : helper)))\n    + \"weekday-resize-handle handle-y\\\" style=\\\"line-height:\"\n    + alias1(container.lambda(((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"scheduleHeight\")), depth0))\n    + \"px;\\\">&nbsp;</span>\";\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"<div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":1,\"column\":12},\"end\":{\"line\":1,\"column\":26}}}) : helper)))\n    + \"weekday-schedules \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"collapsed\") || (depth0 != null ? lookupProperty(depth0,\"collapsed\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"collapsed\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":1,\"column\":44},\"end\":{\"line\":1,\"column\":57}}}) : helper)))\n    + \"\\\"style=\\\"top:\"\n    + alias4(container.lambda(((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"scheduleContainerTop\")), depth0))\n    + \"px;\\\">\\n\"\n    + ((stack1 = lookupProperty(helpers,\"each\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"matrices\") : depth0),{\"name\":\"each\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":2,\"column\":4},\"end\":{\"line\":28,\"column\":15}}})) != null ? stack1 : \"\")\n    + \"</div>\\n\";\n},\"useData\":true});","var Handlebars = require('/Users/nhnent/Jodeng/workspace/Work/tui.calendar-new/node_modules/handlebars/runtime.js');\nmodule.exports = (Handlebars['default'] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data) {\n    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, alias5=container.lambda, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"<div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":3,\"column\":12},\"end\":{\"line\":3,\"column\":26}}}) : helper)))\n    + \"dayname \"\n    + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"isToday\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(2, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":3,\"column\":34},\"end\":{\"line\":3,\"column\":75}}})) != null ? stack1 : \"\")\n    + \" \"\n    + alias4((lookupProperty(helpers,\"holiday\")||(depth0 && lookupProperty(depth0,\"holiday\"))||alias2).call(alias1,(depth0 != null ? lookupProperty(depth0,\"day\") : depth0),{\"name\":\"holiday\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":3,\"column\":76},\"end\":{\"line\":3,\"column\":91}}}))\n    + \"\\\"\\n     data-date=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"renderDate\") || (depth0 != null ? lookupProperty(depth0,\"renderDate\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"renderDate\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":4,\"column\":16},\"end\":{\"line\":4,\"column\":30}}}) : helper)))\n    + \"\\\"\\n     style=\\\"\"\n    + alias4((lookupProperty(helpers,\"common-width\")||(depth0 && lookupProperty(depth0,\"common-width\"))||alias2).call(alias1,(depth0 != null ? lookupProperty(depth0,\"width\") : depth0),{\"name\":\"common-width\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":5,\"column\":12},\"end\":{\"line\":5,\"column\":34}}}))\n    + \";left:\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"left\") || (depth0 != null ? lookupProperty(depth0,\"left\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"left\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":5,\"column\":40},\"end\":{\"line\":5,\"column\":48}}}) : helper)))\n    + \"%; line-height: \"\n    + alias4(alias5(((stack1 = ((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"styles\"))) && lookupProperty(stack1,\"height\")), depth0))\n    + \"; border-left: \"\n    + alias4(alias5(((stack1 = ((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"styles\"))) && lookupProperty(stack1,\"borderLeft\")), depth0))\n    + \"; padding-left: \"\n    + alias4(alias5(((stack1 = ((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"styles\"))) && lookupProperty(stack1,\"paddingLeft\")), depth0))\n    + \";\\\">\\n    <span class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":6,\"column\":17},\"end\":{\"line\":6,\"column\":31}}}) : helper)))\n    + \"dayname-date-area\\\" style=\\\"color: \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"color\") || (depth0 != null ? lookupProperty(depth0,\"color\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"color\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":6,\"column\":64},\"end\":{\"line\":6,\"column\":73}}}) : helper)))\n    + \";\\\">\\n        \"\n    + ((stack1 = (lookupProperty(helpers,\"weekDayname-tmpl\")||(depth0 && lookupProperty(depth0,\"weekDayname-tmpl\"))||alias2).call(alias1,depth0,{\"name\":\"weekDayname-tmpl\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":7,\"column\":8},\"end\":{\"line\":7,\"column\":35}}})) != null ? stack1 : \"\")\n    + \"\\n    </span>\\n</div>\\n\";\n},\"2\":function(container,depth0,helpers,partials,data) {\n    var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return container.escapeExpression(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":3,\"column\":49},\"end\":{\"line\":3,\"column\":63}}}) : helper)))\n    + \"today\";\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"<div class=\\\"\"\n    + alias2(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":1,\"column\":12},\"end\":{\"line\":1,\"column\":26}}}) : helper)))\n    + \"dayname-leftmargin\\\" style=\\\"margin-left: \"\n    + alias2(container.lambda(((stack1 = ((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"styles\"))) && lookupProperty(stack1,\"marginLeft\")), depth0))\n    + \";\\\">\\n\"\n    + ((stack1 = lookupProperty(helpers,\"each\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"dayNames\") : depth0),{\"name\":\"each\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":2,\"column\":0},\"end\":{\"line\":10,\"column\":9}}})) != null ? stack1 : \"\")\n    + \"</div>\\n\";\n},\"useData\":true});","var Handlebars = require('/Users/nhnent/Jodeng/workspace/Work/tui.calendar-new/node_modules/handlebars/runtime.js');\nmodule.exports = (Handlebars['default'] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data) {\n    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return ((stack1 = lookupProperty(helpers,\"each\").call(depth0 != null ? depth0 : (container.nullContext || {}),depth0,{\"name\":\"each\",\"hash\":{},\"fn\":container.program(2, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":3,\"column\":4},\"end\":{\"line\":60,\"column\":13}}})) != null ? stack1 : \"\");\n},\"2\":function(container,depth0,helpers,partials,data) {\n    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return ((stack1 = lookupProperty(helpers,\"each\").call(depth0 != null ? depth0 : (container.nullContext || {}),depth0,{\"name\":\"each\",\"hash\":{},\"fn\":container.program(3, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":4,\"column\":8},\"end\":{\"line\":59,\"column\":17}}})) != null ? stack1 : \"\");\n},\"3\":function(container,depth0,helpers,partials,data) {\n    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return ((stack1 = lookupProperty(helpers,\"if\").call(depth0 != null ? depth0 : (container.nullContext || {}),depth0,{\"name\":\"if\",\"hash\":{},\"fn\":container.program(4, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":5,\"column\":8},\"end\":{\"line\":58,\"column\":17}}})) != null ? stack1 : \"\");\n},\"4\":function(container,depth0,helpers,partials,data) {\n    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, alias5=container.lambda, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"<div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":6,\"column\":20},\"end\":{\"line\":6,\"column\":34}}}) : helper)))\n    + \"time-date-schedule-block \"\n    + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"isPending\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(5, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":6,\"column\":59},\"end\":{\"line\":6,\"column\":136}}})) != null ? stack1 : \"\")\n    + \"\\\" data-id=\\\"\"\n    + alias4((lookupProperty(helpers,\"stamp\")||(depth0 && lookupProperty(depth0,\"stamp\"))||alias2).call(alias1,(depth0 != null ? lookupProperty(depth0,\"model\") : depth0),{\"name\":\"stamp\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":6,\"column\":147},\"end\":{\"line\":6,\"column\":162}}}))\n    + \"\\\"\\n            style=\\\"\"\n    + alias4((lookupProperty(helpers,\"time-scheduleBlock\")||(depth0 && lookupProperty(depth0,\"time-scheduleBlock\"))||alias2).call(alias1,depth0,{\"name\":\"time-scheduleBlock\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":7,\"column\":19},\"end\":{\"line\":7,\"column\":46}}}))\n    + \";\\n\"\n    + ((stack1 = (lookupProperty(helpers,\"fi\")||(depth0 && lookupProperty(depth0,\"fi\"))||alias2).call(alias1,(depth0 != null ? lookupProperty(depth0,\"left\") : depth0),\"!==\",0,{\"name\":\"fi\",\"hash\":{},\"fn\":container.program(7, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":8,\"column\":16},\"end\":{\"line\":10,\"column\":23}}})) != null ? stack1 : \"\")\n    + \"            \\\">\\n            <div data-schedule-id=\\\"\"\n    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"id\") : stack1), depth0))\n    + \"\\\" data-calendar-id=\\\"\"\n    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"calendarId\") : stack1), depth0))\n    + \"\\\" class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":12,\"column\":96},\"end\":{\"line\":12,\"column\":110}}}) : helper)))\n    + \"time-schedule \"\n    + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"isFocused\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(9, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":12,\"column\":124},\"end\":{\"line\":12,\"column\":190}}})) != null ? stack1 : \"\")\n    + \"\\\"\\n                style=\\\"\\n\"\n    + ((stack1 = lookupProperty(helpers,\"unless\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"croppedEnd\") : depth0),{\"name\":\"unless\",\"hash\":{},\"fn\":container.program(11, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":14,\"column\":16},\"end\":{\"line\":17,\"column\":27}}})) != null ? stack1 : \"\")\n    + ((stack1 = lookupProperty(helpers,\"unless\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"croppedStart\") : depth0),{\"name\":\"unless\",\"hash\":{},\"fn\":container.program(13, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":18,\"column\":16},\"end\":{\"line\":21,\"column\":27}}})) != null ? stack1 : \"\")\n    + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"isFocused\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(15, data, 0),\"inverse\":container.program(17, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":22,\"column\":16},\"end\":{\"line\":26,\"column\":23}}})) != null ? stack1 : \"\")\n    + \"                 \"\n    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"customStyle\") : stack1), depth0))\n    + \"\\\"\\n            >\\n\"\n    + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"hasGoingDuration\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(19, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":29,\"column\":12},\"end\":{\"line\":37,\"column\":19}}})) != null ? stack1 : \"\")\n    + \"                <div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":38,\"column\":28},\"end\":{\"line\":38,\"column\":42}}}) : helper)))\n    + \"time-schedule-content \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":38,\"column\":64},\"end\":{\"line\":38,\"column\":78}}}) : helper)))\n    + \"time-schedule-content-time\\\" style=\\\"height: \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"modelDurationHeight\") || (depth0 != null ? lookupProperty(depth0,\"modelDurationHeight\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"modelDurationHeight\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":38,\"column\":121},\"end\":{\"line\":38,\"column\":144}}}) : helper)))\n    + \"px;\\n\"\n    + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"isFocused\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(20, data, 0),\"inverse\":container.program(22, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":39,\"column\":16},\"end\":{\"line\":43,\"column\":23}}})) != null ? stack1 : \"\")\n    + \"                \"\n    + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"hasComingDuration\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(24, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":44,\"column\":16},\"end\":{\"line\":44,\"column\":96}}})) != null ? stack1 : \"\")\n    + \"\\\">\\n                    \"\n    + ((stack1 = (lookupProperty(helpers,\"time-tmpl\")||(depth0 && lookupProperty(depth0,\"time-tmpl\"))||alias2).call(alias1,(depth0 != null ? lookupProperty(depth0,\"model\") : depth0),{\"name\":\"time-tmpl\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":45,\"column\":20},\"end\":{\"line\":45,\"column\":41}}})) != null ? stack1 : \"\")\n    + \"\\n                </div>\\n\"\n    + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"hasComingDuration\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(26, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":47,\"column\":12},\"end\":{\"line\":54,\"column\":19}}})) != null ? stack1 : \"\")\n    + \"            </div>\\n            \"\n    + ((stack1 = lookupProperty(helpers,\"unless\").call(alias1,(lookupProperty(helpers,\"or\")||(depth0 && lookupProperty(depth0,\"or\"))||alias2).call(alias1,(depth0 != null ? lookupProperty(depth0,\"croppedEnd\") : depth0),(lookupProperty(helpers,\"or\")||(depth0 && lookupProperty(depth0,\"or\"))||alias2).call(alias1,((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"isReadOnly\")),((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"isReadOnly\") : stack1),{\"name\":\"or\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":56,\"column\":37},\"end\":{\"line\":56,\"column\":75}}}),{\"name\":\"or\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":56,\"column\":22},\"end\":{\"line\":56,\"column\":76}}}),{\"name\":\"unless\",\"hash\":{},\"fn\":container.program(29, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":56,\"column\":12},\"end\":{\"line\":56,\"column\":207}}})) != null ? stack1 : \"\")\n    + \"\\n        </div>\\n\";\n},\"5\":function(container,depth0,helpers,partials,data) {\n    var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \" \"\n    + container.escapeExpression(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":6,\"column\":83},\"end\":{\"line\":6,\"column\":97}}}) : helper)))\n    + \"time-date-schedule-block-pending\";\n},\"7\":function(container,depth0,helpers,partials,data) {\n    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"                    padding-left: \"\n    + container.escapeExpression(container.lambda(((stack1 = ((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"styles\"))) && lookupProperty(stack1,\"paddingLeft\")), depth0))\n    + \";\\n\";\n},\"9\":function(container,depth0,helpers,partials,data) {\n    var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return container.escapeExpression(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":12,\"column\":147},\"end\":{\"line\":12,\"column\":161}}}) : helper)))\n    + \"time-schedule-focused \";\n},\"11\":function(container,depth0,helpers,partials,data) {\n    var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"                    border-bottom-left-radius: \"\n    + alias2(alias1(((stack1 = ((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"styles\"))) && lookupProperty(stack1,\"borderRadius\")), depth0))\n    + \";\\n                    border-bottom-right-radius: \"\n    + alias2(alias1(((stack1 = ((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"styles\"))) && lookupProperty(stack1,\"borderRadius\")), depth0))\n    + \";\\n\";\n},\"13\":function(container,depth0,helpers,partials,data) {\n    var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"                    border-top-left-radius: \"\n    + alias2(alias1(((stack1 = ((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"styles\"))) && lookupProperty(stack1,\"borderRadius\")), depth0))\n    + \";\\n                    border-top-right-radius: \"\n    + alias2(alias1(((stack1 = ((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"styles\"))) && lookupProperty(stack1,\"borderRadius\")), depth0))\n    + \";\\n\";\n},\"15\":function(container,depth0,helpers,partials,data) {\n    var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"                    color: #ffffff; background-color:\"\n    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"color\") : stack1), depth0))\n    + \"; border-color:\"\n    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"color\") : stack1), depth0))\n    + \";\\n\";\n},\"17\":function(container,depth0,helpers,partials,data) {\n    var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"                    color:\"\n    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"color\") : stack1), depth0))\n    + \"; background-color:\"\n    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"bgColor\") : stack1), depth0))\n    + \"; border-color:\"\n    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"borderColor\") : stack1), depth0))\n    + \";\\n\";\n},\"19\":function(container,depth0,helpers,partials,data) {\n    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"                <div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":30,\"column\":28},\"end\":{\"line\":30,\"column\":42}}}) : helper)))\n    + \"time-schedule-content \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":30,\"column\":64},\"end\":{\"line\":30,\"column\":78}}}) : helper)))\n    + \"time-schedule-content-travel-time\\\" style=\\\"height: \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"goingDurationHeight\") || (depth0 != null ? lookupProperty(depth0,\"goingDurationHeight\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"goingDurationHeight\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":30,\"column\":128},\"end\":{\"line\":30,\"column\":151}}}) : helper)))\n    + \"px;\\n\"\n    + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"isFocused\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(20, data, 0),\"inverse\":container.program(22, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":31,\"column\":16},\"end\":{\"line\":35,\"column\":23}}})) != null ? stack1 : \"\")\n    + \"                border-bottom: 1px dashed \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"travelBorderColor\") || (depth0 != null ? lookupProperty(depth0,\"travelBorderColor\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"travelBorderColor\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":36,\"column\":42},\"end\":{\"line\":36,\"column\":63}}}) : helper)))\n    + \";\\\">\"\n    + ((stack1 = (lookupProperty(helpers,\"goingDuration-tmpl\")||(depth0 && lookupProperty(depth0,\"goingDuration-tmpl\"))||alias2).call(alias1,(depth0 != null ? lookupProperty(depth0,\"model\") : depth0),{\"name\":\"goingDuration-tmpl\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":36,\"column\":66},\"end\":{\"line\":36,\"column\":96}}})) != null ? stack1 : \"\")\n    + \"</div>\\n\";\n},\"20\":function(container,depth0,helpers,partials,data) {\n    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"                    border-color:\"\n    + container.escapeExpression(container.lambda(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"color\") : stack1), depth0))\n    + \";\\n\";\n},\"22\":function(container,depth0,helpers,partials,data) {\n    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"                    border-color:\"\n    + container.escapeExpression(container.lambda(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"borderColor\") : stack1), depth0))\n    + \";\\n\";\n},\"24\":function(container,depth0,helpers,partials,data) {\n    var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"border-bottom: 1px dashed \"\n    + container.escapeExpression(((helper = (helper = lookupProperty(helpers,\"travelBorderColor\") || (depth0 != null ? lookupProperty(depth0,\"travelBorderColor\") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"travelBorderColor\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":44,\"column\":67},\"end\":{\"line\":44,\"column\":88}}}) : helper)))\n    + \";\";\n},\"26\":function(container,depth0,helpers,partials,data) {\n    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"                <div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":48,\"column\":28},\"end\":{\"line\":48,\"column\":42}}}) : helper)))\n    + \"time-schedule-content \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":48,\"column\":64},\"end\":{\"line\":48,\"column\":78}}}) : helper)))\n    + \"time-schedule-content-travel-time\\\" style=\\\"height: \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"comingDurationHeight\") || (depth0 != null ? lookupProperty(depth0,\"comingDurationHeight\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"comingDurationHeight\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":48,\"column\":128},\"end\":{\"line\":48,\"column\":152}}}) : helper)))\n    + \"px;\\n\"\n    + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"isFocused\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(20, data, 0),\"inverse\":container.program(27, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":49,\"column\":16},\"end\":{\"line\":53,\"column\":23}}})) != null ? stack1 : \"\")\n    + \";\\\">\"\n    + ((stack1 = (lookupProperty(helpers,\"comingDuration-tmpl\")||(depth0 && lookupProperty(depth0,\"comingDuration-tmpl\"))||alias2).call(alias1,(depth0 != null ? lookupProperty(depth0,\"model\") : depth0),{\"name\":\"comingDuration-tmpl\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":53,\"column\":26},\"end\":{\"line\":53,\"column\":57}}})) != null ? stack1 : \"\")\n    + \"</div>\\n\";\n},\"27\":function(container,depth0,helpers,partials,data) {\n    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"                    border-color:\"\n    + container.escapeExpression(container.lambda(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"borderColor\") : stack1), depth0))\n    + \";\\n                \";\n},\"29\":function(container,depth0,helpers,partials,data) {\n    var stack1, helper, alias1=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"<div class=\\\"\"\n    + alias1(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":56,\"column\":90},\"end\":{\"line\":56,\"column\":104}}}) : helper)))\n    + \"time-resize-handle handle-x\\\" style=\\\"margin-left: \"\n    + alias1(container.lambda(((stack1 = ((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"styles\"))) && lookupProperty(stack1,\"paddingLeft\")), depth0))\n    + \";\\\">&nbsp;</div>\";\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"<div class=\\\"\"\n    + alias2(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":1,\"column\":12},\"end\":{\"line\":1,\"column\":26}}}) : helper)))\n    + \"time-date-schedule-block-wrap\\\" style=\\\"margin-right: \"\n    + alias2(container.lambda(((stack1 = (depth0 != null ? lookupProperty(depth0,\"styles\") : depth0)) != null ? lookupProperty(stack1,\"marginRight\") : stack1), depth0))\n    + \";\\\">\\n\"\n    + ((stack1 = lookupProperty(helpers,\"each\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"matrices\") : depth0),{\"name\":\"each\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":2,\"column\":0},\"end\":{\"line\":61,\"column\":9}}})) != null ? stack1 : \"\")\n    + \"</div>\\n\";\n},\"useData\":true});","var Handlebars = require('/Users/nhnent/Jodeng/workspace/Work/tui.calendar-new/node_modules/handlebars/runtime.js');\nmodule.exports = (Handlebars['default'] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data) {\n    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"<div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":3,\"column\":20},\"end\":{\"line\":3,\"column\":34}}}) : helper)))\n    + \"timegrid-timezone\\\" data-timezone-index=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"index\") || (data && lookupProperty(data,\"index\"))) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"index\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":3,\"column\":74},\"end\":{\"line\":3,\"column\":84}}}) : helper)))\n    + \"\\\" style=\\\"\"\n    + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"hidden\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(2, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":3,\"column\":93},\"end\":{\"line\":3,\"column\":127}}})) != null ? stack1 : \"\")\n    + \"position: absolute; top: 0; width: \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"width\") || (depth0 != null ? lookupProperty(depth0,\"width\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"width\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":3,\"column\":162},\"end\":{\"line\":3,\"column\":171}}}) : helper)))\n    + \"%; left: \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"left\") || (depth0 != null ? lookupProperty(depth0,\"left\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"left\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":3,\"column\":180},\"end\":{\"line\":3,\"column\":188}}}) : helper)))\n    + \"%; border-right: \"\n    + alias4(container.lambda(((stack1 = ((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"styles\"))) && lookupProperty(stack1,\"leftBorderRight\")), depth0))\n    + \"; background-color: \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"backgroundColor\") || (depth0 != null ? lookupProperty(depth0,\"backgroundColor\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"backgroundColor\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":3,\"column\":257},\"end\":{\"line\":3,\"column\":276}}}) : helper)))\n    + \";\\\" >\\n\"\n    + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"isPrimary\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(4, data, 0),\"inverse\":container.program(10, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":4,\"column\":8},\"end\":{\"line\":26,\"column\":15}}})) != null ? stack1 : \"\")\n    + \"        </div>\\n\";\n},\"2\":function(container,depth0,helpers,partials,data) {\n    return \"display:none;\";\n},\"4\":function(container,depth0,helpers,partials,data) {\n    var stack1, alias1=depth0 != null ? depth0 : (container.nullContext || {}), lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return ((stack1 = lookupProperty(helpers,\"each\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"timeSlots\") : depth0),{\"name\":\"each\",\"hash\":{},\"fn\":container.program(5, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":5,\"column\":12},\"end\":{\"line\":9,\"column\":23}}})) != null ? stack1 : \"\")\n    + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"showHourMarker\")),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(8, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":10,\"column\":12},\"end\":{\"line\":14,\"column\":19}}})) != null ? stack1 : \"\");\n},\"5\":function(container,depth0,helpers,partials,data) {\n    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"<div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":6,\"column\":28},\"end\":{\"line\":6,\"column\":42}}}) : helper)))\n    + \"timegrid-hour\\\" style=\\\"height: \"\n    + alias4(container.lambda(((stack1 = ((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"styles\"))) && lookupProperty(stack1,\"oneHourHeight\")), depth0))\n    + \"; color: \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"color\") || (depth0 != null ? lookupProperty(depth0,\"color\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"color\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":6,\"column\":111},\"end\":{\"line\":6,\"column\":120}}}) : helper)))\n    + \"; font-weight: \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"fontWeight\") || (depth0 != null ? lookupProperty(depth0,\"fontWeight\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"fontWeight\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":6,\"column\":135},\"end\":{\"line\":6,\"column\":149}}}) : helper)))\n    + \";\\\">\\n                    <span style=\\\"\"\n    + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"hidden\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(6, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":7,\"column\":33},\"end\":{\"line\":7,\"column\":66}}})) != null ? stack1 : \"\")\n    + \"\\\">\"\n    + ((stack1 = (lookupProperty(helpers,\"timegridDisplayPrimayTime-tmpl\")||(depth0 && lookupProperty(depth0,\"timegridDisplayPrimayTime-tmpl\"))||alias2).call(alias1,depth0,{\"name\":\"timegridDisplayPrimayTime-tmpl\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":7,\"column\":68},\"end\":{\"line\":7,\"column\":109}}})) != null ? stack1 : \"\")\n    + \"</span>\\n                </div>\\n\";\n},\"6\":function(container,depth0,helpers,partials,data) {\n    return \"display:none\";\n},\"8\":function(container,depth0,helpers,partials,data) {\n    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, alias5=container.lambda, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"                <div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":11,\"column\":28},\"end\":{\"line\":11,\"column\":42}}}) : helper)))\n    + \"timegrid-hourmarker\\\" style=\\\"top:\"\n    + alias4(alias5(((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"hourmarkerTop\")), depth0))\n    + \"%; margin-top: calc(6px - \"\n    + alias4(alias5(((stack1 = ((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"styles\"))) && lookupProperty(stack1,\"halfHourHeight\")), depth0))\n    + \"); height: \"\n    + alias4(alias5(((stack1 = ((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"styles\"))) && lookupProperty(stack1,\"halfHourHeight\")), depth0))\n    + \";\\\">\\n                    <div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":12,\"column\":32},\"end\":{\"line\":12,\"column\":46}}}) : helper)))\n    + \"timegrid-hourmarker-time\\\" style=\\\"color: \"\n    + alias4(alias5(((stack1 = ((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"styles\"))) && lookupProperty(stack1,\"currentTimeColor\")), depth0))\n    + \"; font-size: \"\n    + alias4(alias5(((stack1 = ((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"styles\"))) && lookupProperty(stack1,\"currentTimeFontSize\")), depth0))\n    + \"; font-weight: \"\n    + alias4(alias5(((stack1 = ((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"styles\"))) && lookupProperty(stack1,\"currentTimeFontWeight\")), depth0))\n    + \"\\\">\"\n    + ((stack1 = (lookupProperty(helpers,\"timegridCurrentTime-tmpl\")||(depth0 && lookupProperty(depth0,\"timegridCurrentTime-tmpl\"))||alias2).call(alias1,depth0,{\"name\":\"timegridCurrentTime-tmpl\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":12,\"column\":223},\"end\":{\"line\":12,\"column\":258}}})) != null ? stack1 : \"\")\n    + \"</div>\\n                </div>\\n\";\n},\"10\":function(container,depth0,helpers,partials,data) {\n    var stack1, alias1=depth0 != null ? depth0 : (container.nullContext || {}), lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return ((stack1 = lookupProperty(helpers,\"each\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"timeSlots\") : depth0),{\"name\":\"each\",\"hash\":{},\"fn\":container.program(11, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":16,\"column\":12},\"end\":{\"line\":20,\"column\":23}}})) != null ? stack1 : \"\")\n    + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"showHourMarker\")),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(13, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":21,\"column\":12},\"end\":{\"line\":25,\"column\":19}}})) != null ? stack1 : \"\");\n},\"11\":function(container,depth0,helpers,partials,data) {\n    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"<div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":17,\"column\":28},\"end\":{\"line\":17,\"column\":42}}}) : helper)))\n    + \"timegrid-hour\\\" style=\\\"height: \"\n    + alias4(container.lambda(((stack1 = ((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"styles\"))) && lookupProperty(stack1,\"oneHourHeight\")), depth0))\n    + \"; color: \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"color\") || (depth0 != null ? lookupProperty(depth0,\"color\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"color\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":17,\"column\":111},\"end\":{\"line\":17,\"column\":120}}}) : helper)))\n    + \"; font-weight: \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"fontWeight\") || (depth0 != null ? lookupProperty(depth0,\"fontWeight\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"fontWeight\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":17,\"column\":135},\"end\":{\"line\":17,\"column\":149}}}) : helper)))\n    + \";\\\">\\n                    <span style=\\\"\"\n    + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"hidden\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(6, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":18,\"column\":33},\"end\":{\"line\":18,\"column\":66}}})) != null ? stack1 : \"\")\n    + \"\\\">\"\n    + ((stack1 = (lookupProperty(helpers,\"timegridDisplayTime-tmpl\")||(depth0 && lookupProperty(depth0,\"timegridDisplayTime-tmpl\"))||alias2).call(alias1,depth0,{\"name\":\"timegridDisplayTime-tmpl\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":18,\"column\":68},\"end\":{\"line\":18,\"column\":103}}})) != null ? stack1 : \"\")\n    + \"</span>\\n                </div>\\n\";\n},\"13\":function(container,depth0,helpers,partials,data) {\n    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, alias5=container.lambda, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"                <div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":22,\"column\":28},\"end\":{\"line\":22,\"column\":42}}}) : helper)))\n    + \"timegrid-hourmarker\\\" style=\\\"top:\"\n    + alias4(alias5(((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"hourmarkerTop\")), depth0))\n    + \"%; margin-top: calc(6px - \"\n    + alias4(alias5(((stack1 = ((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"styles\"))) && lookupProperty(stack1,\"halfHourHeight\")), depth0))\n    + \"); height: \"\n    + alias4(alias5(((stack1 = ((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"styles\"))) && lookupProperty(stack1,\"halfHourHeight\")), depth0))\n    + \";\\\">\\n                    <div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":23,\"column\":32},\"end\":{\"line\":23,\"column\":46}}}) : helper)))\n    + \"timegrid-hourmarker-time\\\" style=\\\"color: \"\n    + alias4(alias5(((stack1 = ((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"styles\"))) && lookupProperty(stack1,\"currentTimeColor\")), depth0))\n    + \"; font-size: \"\n    + alias4(alias5(((stack1 = ((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"styles\"))) && lookupProperty(stack1,\"currentTimeFontSize\")), depth0))\n    + \";\\\">\"\n    + ((stack1 = (lookupProperty(helpers,\"timegridCurrentTime-tmpl\")||(depth0 && lookupProperty(depth0,\"timegridCurrentTime-tmpl\"))||alias2).call(alias1,depth0,{\"name\":\"timegridCurrentTime-tmpl\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":23,\"column\":171},\"end\":{\"line\":23,\"column\":206}}})) != null ? stack1 : \"\")\n    + \"</div>\\n                </div>\\n\";\n},\"15\":function(container,depth0,helpers,partials,data) {\n    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, alias5=container.lambda, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"<div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":33,\"column\":20},\"end\":{\"line\":33,\"column\":34}}}) : helper)))\n    + \"timegrid-gridline\\\" style=\\\"height: \"\n    + alias4(alias5(((stack1 = ((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"styles\"))) && lookupProperty(stack1,\"oneHourHeight\")), depth0))\n    + \";\\n\"\n    + ((stack1 = lookupProperty(helpers,\"unless\").call(alias1,(data && lookupProperty(data,\"last\")),{\"name\":\"unless\",\"hash\":{},\"fn\":container.program(16, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":34,\"column\":12},\"end\":{\"line\":36,\"column\":23}}})) != null ? stack1 : \"\")\n    + \"        \\\">\\n            <div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":38,\"column\":24},\"end\":{\"line\":38,\"column\":38}}}) : helper)))\n    + \"timegrid-gridline-half\\\" style=\\\"height: \"\n    + alias4(alias5(((stack1 = ((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"styles\"))) && lookupProperty(stack1,\"halfHourHeight\")), depth0))\n    + \"; border-bottom: \"\n    + alias4(alias5(((stack1 = ((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"styles\"))) && lookupProperty(stack1,\"halfHourBorderBottom\")), depth0))\n    + \";\\\"></div>\\n        </div>\\n\";\n},\"16\":function(container,depth0,helpers,partials,data) {\n    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"            border-bottom: \"\n    + container.escapeExpression(container.lambda(((stack1 = ((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"styles\"))) && lookupProperty(stack1,\"borderBottom\")), depth0))\n    + \";\\n\";\n},\"18\":function(container,depth0,helpers,partials,data) {\n    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, alias5=container.lambda, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"    <div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":47,\"column\":16},\"end\":{\"line\":47,\"column\":30}}}) : helper)))\n    + \"timegrid-hourmarker\\\" style=\\\"top:\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"hourmarkerTop\") || (depth0 != null ? lookupProperty(depth0,\"hourmarkerTop\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"hourmarkerTop\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":47,\"column\":62},\"end\":{\"line\":47,\"column\":79}}}) : helper)))\n    + \"%\\\">\\n        <div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":48,\"column\":20},\"end\":{\"line\":48,\"column\":34}}}) : helper)))\n    + \"timegrid-hourmarker-line-left\\\" style=\\\"width:\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"todaymarkerLeft\") || (depth0 != null ? lookupProperty(depth0,\"todaymarkerLeft\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"todaymarkerLeft\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":48,\"column\":78},\"end\":{\"line\":48,\"column\":97}}}) : helper)))\n    + \"%; border-top: \"\n    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,\"styles\") : depth0)) != null ? lookupProperty(stack1,\"currentTimeLeftBorderTop\") : stack1), depth0))\n    + \";\\\"></div>\\n        <div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":49,\"column\":20},\"end\":{\"line\":49,\"column\":34}}}) : helper)))\n    + \"timegrid-todaymarker\\\" style=\\\"left:\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"todaymarkerLeft\") || (depth0 != null ? lookupProperty(depth0,\"todaymarkerLeft\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"todaymarkerLeft\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":49,\"column\":68},\"end\":{\"line\":49,\"column\":87}}}) : helper)))\n    + \"%; background-color: \"\n    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,\"styles\") : depth0)) != null ? lookupProperty(stack1,\"currentTimeBulletBackgroundColor\") : stack1), depth0))\n    + \"; \\\">today</div>\\n        <div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":50,\"column\":20},\"end\":{\"line\":50,\"column\":34}}}) : helper)))\n    + \"timegrid-hourmarker-line-today\\\" style=\\\"left:\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"todaymarkerLeft\") || (depth0 != null ? lookupProperty(depth0,\"todaymarkerLeft\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"todaymarkerLeft\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":50,\"column\":78},\"end\":{\"line\":50,\"column\":97}}}) : helper)))\n    + \"%; width: \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"todaymarkerWidth\") || (depth0 != null ? lookupProperty(depth0,\"todaymarkerWidth\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"todaymarkerWidth\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":50,\"column\":107},\"end\":{\"line\":50,\"column\":127}}}) : helper)))\n    + \"%; border-top: \"\n    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,\"styles\") : depth0)) != null ? lookupProperty(stack1,\"currentTimeTodayBorderTop\") : stack1), depth0))\n    + \";\\\"></div>\\n        <div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":51,\"column\":20},\"end\":{\"line\":51,\"column\":34}}}) : helper)))\n    + \"timegrid-hourmarker-line-right\\\" style=\\\"left:\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"todaymarkerRight\") || (depth0 != null ? lookupProperty(depth0,\"todaymarkerRight\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"todaymarkerRight\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":51,\"column\":78},\"end\":{\"line\":51,\"column\":98}}}) : helper)))\n    + \"%; border-top: \"\n    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,\"styles\") : depth0)) != null ? lookupProperty(stack1,\"currentTimeRightBorderTop\") : stack1), depth0))\n    + \";\\\"></div>\\n    </div>\\n\";\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, alias5=container.lambda, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"<div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":1,\"column\":12},\"end\":{\"line\":1,\"column\":26}}}) : helper)))\n    + \"timegrid-left\\\" style=\\\"width: \"\n    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,\"styles\") : depth0)) != null ? lookupProperty(stack1,\"leftWidth\") : stack1), depth0))\n    + \"; font-size: \"\n    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,\"styles\") : depth0)) != null ? lookupProperty(stack1,\"leftFontSize\") : stack1), depth0))\n    + \";\\\">\\n\"\n    + ((stack1 = lookupProperty(helpers,\"each\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"timezones\") : depth0),{\"name\":\"each\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":2,\"column\":4},\"end\":{\"line\":28,\"column\":15}}})) != null ? stack1 : \"\")\n    + \"</div>\\n<div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":30,\"column\":12},\"end\":{\"line\":30,\"column\":26}}}) : helper)))\n    + \"timegrid-right\\\" style=\\\"margin-left: \"\n    + alias4(alias5(((stack1 = ((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"styles\"))) && lookupProperty(stack1,\"leftWidth\")), depth0))\n    + \";\\\">\\n    <div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":31,\"column\":16},\"end\":{\"line\":31,\"column\":30}}}) : helper)))\n    + \"timegrid-h-grid\\\">\\n\"\n    + ((stack1 = lookupProperty(helpers,\"each\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"hoursLabels\") : depth0),{\"name\":\"each\",\"hash\":{},\"fn\":container.program(15, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":32,\"column\":8},\"end\":{\"line\":40,\"column\":19}}})) != null ? stack1 : \"\")\n    + \"</div>\\n    <div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":42,\"column\":16},\"end\":{\"line\":42,\"column\":30}}}) : helper)))\n    + \"timegrid-schedules\\\">\\n        <div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":43,\"column\":20},\"end\":{\"line\":43,\"column\":34}}}) : helper)))\n    + \"timegrid-schedules-container\\\"></div>\\n    </div>\\n\\n\"\n    + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"showHourMarker\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(18, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":46,\"column\":4},\"end\":{\"line\":53,\"column\":11}}})) != null ? stack1 : \"\")\n    + \"</div>\\n\";\n},\"useData\":true});","var Handlebars = require('/Users/nhnent/Jodeng/workspace/Work/tui.calendar-new/node_modules/handlebars/runtime.js');\nmodule.exports = (Handlebars['default'] || Handlebars).template({\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return ((stack1 = (lookupProperty(helpers,\"timegridCurrentTime-tmpl\")||(depth0 && lookupProperty(depth0,\"timegridCurrentTime-tmpl\"))||container.hooks.helperMissing).call(depth0 != null ? depth0 : (container.nullContext || {}),depth0,{\"name\":\"timegridCurrentTime-tmpl\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":1,\"column\":0},\"end\":{\"line\":1,\"column\":35}}})) != null ? stack1 : \"\")\n    + \"\\n\";\n},\"useData\":true});","var Handlebars = require('/Users/nhnent/Jodeng/workspace/Work/tui.calendar-new/node_modules/handlebars/runtime.js');\nmodule.exports = (Handlebars['default'] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data) {\n    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, alias5=container.lambda, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"            <div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":4,\"column\":24},\"end\":{\"line\":4,\"column\":38}}}) : helper)))\n    + \"time-schedule-content \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":4,\"column\":60},\"end\":{\"line\":4,\"column\":74}}}) : helper)))\n    + \"time-schedule-content-travel-time\\\" style=\\\"border-color:\"\n    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"borderColor\") : stack1), depth0))\n    + \"; border-bottom: 1px dashed \"\n    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"color\") : stack1), depth0))\n    + \"; height: \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"goingDurationHeight\") || (depth0 != null ? lookupProperty(depth0,\"goingDurationHeight\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"goingDurationHeight\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":4,\"column\":203},\"end\":{\"line\":4,\"column\":226}}}) : helper)))\n    + \"%;\\\">\"\n    + ((stack1 = (lookupProperty(helpers,\"goingDuration-tmpl\")||(depth0 && lookupProperty(depth0,\"goingDuration-tmpl\"))||alias2).call(alias1,(depth0 != null ? lookupProperty(depth0,\"model\") : depth0),{\"name\":\"goingDuration-tmpl\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":4,\"column\":230},\"end\":{\"line\":4,\"column\":260}}})) != null ? stack1 : \"\")\n    + \"</div>\\n\";\n},\"3\":function(container,depth0,helpers,partials,data) {\n    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, alias5=container.lambda, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"            <div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":10,\"column\":24},\"end\":{\"line\":10,\"column\":38}}}) : helper)))\n    + \"time-schedule-content \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":10,\"column\":60},\"end\":{\"line\":10,\"column\":74}}}) : helper)))\n    + \"time-schedule-content-travel-time\\\" style=\\\"border-color:\"\n    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"borderColor\") : stack1), depth0))\n    + \"; border-top: 1px dashed \"\n    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"color\") : stack1), depth0))\n    + \"; height: \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"comingDurationHeight\") || (depth0 != null ? lookupProperty(depth0,\"comingDurationHeight\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"comingDurationHeight\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":10,\"column\":200},\"end\":{\"line\":10,\"column\":224}}}) : helper)))\n    + \"%;\\\">\"\n    + ((stack1 = (lookupProperty(helpers,\"comingDuration-tmpl\")||(depth0 && lookupProperty(depth0,\"comingDuration-tmpl\"))||alias2).call(alias1,(depth0 != null ? lookupProperty(depth0,\"model\") : depth0),{\"name\":\"comingDuration-tmpl\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":10,\"column\":228},\"end\":{\"line\":10,\"column\":259}}})) != null ? stack1 : \"\")\n    + \"</div>\\n\";\n},\"5\":function(container,depth0,helpers,partials,data) {\n    var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"<div class=\\\"\"\n    + container.escapeExpression(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":13,\"column\":38},\"end\":{\"line\":13,\"column\":52}}}) : helper)))\n    + \"time-resize-handle handle-x\\\">&nbsp;</div>\";\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, alias5=container.lambda, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"<div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":1,\"column\":12},\"end\":{\"line\":1,\"column\":26}}}) : helper)))\n    + \"time-date-schedule-block\\\" data-id=\\\"\"\n    + alias4((lookupProperty(helpers,\"stamp\")||(depth0 && lookupProperty(depth0,\"stamp\"))||alias2).call(alias1,(depth0 != null ? lookupProperty(depth0,\"model\") : depth0),{\"name\":\"stamp\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":1,\"column\":61},\"end\":{\"line\":1,\"column\":76}}}))\n    + \"\\\" style=\\\"width: 100%; height: 100%;\\\">\\n    <div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":2,\"column\":16},\"end\":{\"line\":2,\"column\":30}}}) : helper)))\n    + \"time-schedule \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":2,\"column\":44},\"end\":{\"line\":2,\"column\":58}}}) : helper)))\n    + \"time-date-schedule-block-focused\\\" style=\\\"color: #ffffff; background-color:\"\n    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"dragBgColor\") : stack1), depth0))\n    + \";\\\">\\n\"\n    + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"hasGoingDuration\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":3,\"column\":8},\"end\":{\"line\":5,\"column\":15}}})) != null ? stack1 : \"\")\n    + \"            <div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":6,\"column\":24},\"end\":{\"line\":6,\"column\":38}}}) : helper)))\n    + \"time-schedule-content\\\" style=\\\"height: \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"modelDurationHeight\") || (depth0 != null ? lookupProperty(depth0,\"modelDurationHeight\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"modelDurationHeight\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":6,\"column\":76},\"end\":{\"line\":6,\"column\":99}}}) : helper)))\n    + \"%; border-color:\"\n    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"borderColor\") : stack1), depth0))\n    + \";\\\">\\n                \"\n    + ((stack1 = (lookupProperty(helpers,\"time-tmpl\")||(depth0 && lookupProperty(depth0,\"time-tmpl\"))||alias2).call(alias1,(depth0 != null ? lookupProperty(depth0,\"model\") : depth0),{\"name\":\"time-tmpl\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":7,\"column\":16},\"end\":{\"line\":7,\"column\":37}}})) != null ? stack1 : \"\")\n    + \"\\n            </div>\\n\"\n    + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"hasComingDuration\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(3, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":9,\"column\":8},\"end\":{\"line\":11,\"column\":15}}})) != null ? stack1 : \"\")\n    + \"    </div>\\n    \"\n    + ((stack1 = lookupProperty(helpers,\"unless\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"croppedEnd\") : depth0),{\"name\":\"unless\",\"hash\":{},\"fn\":container.program(5, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":13,\"column\":4},\"end\":{\"line\":13,\"column\":104}}})) != null ? stack1 : \"\")\n    + \"\\n    <div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":14,\"column\":16},\"end\":{\"line\":14,\"column\":30}}}) : helper)))\n    + \"time-date-schedule-block-cover\\\"></div>\\n</div>\\n\";\n},\"useData\":true});","var Handlebars = require('/Users/nhnent/Jodeng/workspace/Work/tui.calendar-new/node_modules/handlebars/runtime.js');\nmodule.exports = (Handlebars['default'] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data) {\n    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, alias5=container.lambda, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"<div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":2,\"column\":12},\"end\":{\"line\":2,\"column\":26}}}) : helper)))\n    + \"timegrid-timezone-label-container\\\" style=\\\"\"\n    + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"hidden\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(2, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":2,\"column\":68},\"end\":{\"line\":2,\"column\":102}}})) != null ? stack1 : \"\")\n    + \"background-color: \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"backgroundColor\") || (depth0 != null ? lookupProperty(depth0,\"backgroundColor\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"backgroundColor\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":2,\"column\":120},\"end\":{\"line\":2,\"column\":139}}}) : helper)))\n    + \"; height: 100%; width: \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"width\") || (depth0 != null ? lookupProperty(depth0,\"width\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"width\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":2,\"column\":162},\"end\":{\"line\":2,\"column\":171}}}) : helper)))\n    + \"%; left: \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"left\") || (depth0 != null ? lookupProperty(depth0,\"left\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"left\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":2,\"column\":180},\"end\":{\"line\":2,\"column\":188}}}) : helper)))\n    + \"%; font-size: \"\n    + alias4(alias5(((stack1 = ((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"styles\"))) && lookupProperty(stack1,\"leftFontSize\")), depth0))\n    + \"; border-right: \"\n    + alias4(alias5(((stack1 = ((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"styles\"))) && lookupProperty(stack1,\"leftBorderRight\")), depth0))\n    + \";\\\">\\n    <div title=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"tooltip\") || (depth0 != null ? lookupProperty(depth0,\"tooltip\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"tooltip\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":3,\"column\":16},\"end\":{\"line\":3,\"column\":27}}}) : helper)))\n    + \"\\\" class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":3,\"column\":36},\"end\":{\"line\":3,\"column\":50}}}) : helper)))\n    + \"timegrid-timezone-label-cell\\\" data-timezone=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"displayLabel\") || (depth0 != null ? lookupProperty(depth0,\"displayLabel\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"displayLabel\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":3,\"column\":95},\"end\":{\"line\":3,\"column\":111}}}) : helper)))\n    + \"\\\" style=\\\"height: 100%; width: 100%;\\\">\\n\"\n    + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,(lookupProperty(helpers,\"and\")||(depth0 && lookupProperty(depth0,\"and\"))||alias2).call(alias1,(depth0 != null ? lookupProperty(depth0,\"isPrimary\") : depth0),((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"showTimezoneCollapseButton\")),{\"name\":\"and\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":4,\"column\":14},\"end\":{\"line\":4,\"column\":62}}}),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(4, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":4,\"column\":8},\"end\":{\"line\":10,\"column\":15}}})) != null ? stack1 : \"\")\n    + \"        <div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":11,\"column\":20},\"end\":{\"line\":11,\"column\":34}}}) : helper)))\n    + \"timegrid-timezone-label\\\">\"\n    + ((stack1 = (lookupProperty(helpers,\"timezoneDisplayLabel-tmpl\")||(depth0 && lookupProperty(depth0,\"timezoneDisplayLabel-tmpl\"))||alias2).call(alias1,(depth0 != null ? lookupProperty(depth0,\"timezoneOffset\") : depth0),(depth0 != null ? lookupProperty(depth0,\"displayLabel\") : depth0),{\"name\":\"timezoneDisplayLabel-tmpl\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":11,\"column\":59},\"end\":{\"line\":11,\"column\":118}}})) != null ? stack1 : \"\")\n    + \"</div>\\n    </div>\\n</div>\\n\";\n},\"2\":function(container,depth0,helpers,partials,data) {\n    return \"display:none;\";\n},\"4\":function(container,depth0,helpers,partials,data) {\n    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, alias5=container.lambda, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"            <div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":5,\"column\":24},\"end\":{\"line\":5,\"column\":38}}}) : helper)))\n    + \"timegrid-timezone-close-btn\\\" style=\\\"border: 1px solid #ddd; top:2px; bottom: 2px; width: 10px; border-left: none;\\\">\\n                <span style=\\\"color: #777; height: calc(\"\n    + alias4(alias5(((stack1 = ((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"styles\"))) && lookupProperty(stack1,\"displayTimezoneLabelHeight\")), depth0))\n    + \" - 6px); line-height: calc(\"\n    + alias4(alias5(((stack1 = ((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"styles\"))) && lookupProperty(stack1,\"displayTimezoneLabelHeight\")), depth0))\n    + \" - 6px);\\\">\\n                    <span class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":7,\"column\":33},\"end\":{\"line\":7,\"column\":47}}}) : helper)))\n    + \"icon \"\n    + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"timezonesCollapsed\")),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(5, data, 0),\"inverse\":container.program(7, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":7,\"column\":52},\"end\":{\"line\":7,\"column\":154}}})) != null ? stack1 : \"\")\n    + \"\\\"></span>\\n                </span>\\n            </div>\\n\";\n},\"5\":function(container,depth0,helpers,partials,data) {\n    var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return container.escapeExpression(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":7,\"column\":84},\"end\":{\"line\":7,\"column\":98}}}) : helper)))\n    + \"ic-arrow-right\";\n},\"7\":function(container,depth0,helpers,partials,data) {\n    var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return container.escapeExpression(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":7,\"column\":120},\"end\":{\"line\":7,\"column\":134}}}) : helper)))\n    + \"ic-arrow-left\";\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n    var stack1, alias1=depth0 != null ? depth0 : (container.nullContext || {}), lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return ((stack1 = lookupProperty(helpers,\"each\").call(alias1,(lookupProperty(helpers,\"reverse\")||(depth0 && lookupProperty(depth0,\"reverse\"))||container.hooks.helperMissing).call(alias1,(depth0 != null ? lookupProperty(depth0,\"timezones\") : depth0),{\"name\":\"reverse\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":1,\"column\":8},\"end\":{\"line\":1,\"column\":27}}}),{\"name\":\"each\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":1,\"column\":0},\"end\":{\"line\":14,\"column\":11}}})) != null ? stack1 : \"\");\n},\"useData\":true});","/**\n * @fileoverview The base class of views.\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\nvar util = require('tui-code-snippet');\nvar domutil = require('../common/domutil');\nvar Collection = require('../common/collection');\n\n/**\n * Base class of views.\n *\n * All views create own container element inside supplied container element.\n * @constructor\n * @param {HTMLElement} container Default container element for view.\n *  you can use this element for this.container syntax.\n */\nfunction View(container) {\n    var id = util.stamp(this);\n\n    if (util.isUndefined(container)) {\n        container = domutil.appendHTMLElement('div');\n    }\n\n    domutil.addClass(container, this.cssprefix(id));\n\n    /**\n     * unique id\n     * @type {number}\n     */\n    this.id = id;\n\n    /**\n     * base element of view.\n     * @type {HTMLDIVElement}\n     */\n    this.container = container;\n\n    /*eslint-disable*/\n    /**\n     * child views.\n     * @type {Collection}\n     */\n    this.children = new Collection(function(view) {\n        return util.stamp(view);\n    });\n    /* eslint-enable*/\n\n    /**\n     * parent view instance.\n     * @type {View}\n     */\n    this.parent = null;\n\n    /**\n     * state of view\n     */\n    this.state = {};\n}\n\n/**\n * CSS classname prefix\n * @type {string}\n */\nView.prototype.cssPrefix = 'tui-view-';\n\n/**\n * Add child views.\n * @param {View} view The view instance to add.\n * @param {function} [fn] Function for invoke before add. parent view class is supplied first arguments.\n */\nView.prototype.addChild = function(view, fn) {\n    if (fn) {\n        fn.call(view, this);\n    }\n    // add parent view\n    view.parent = this;\n\n    this.children.add(view);\n};\n\n/**\n * Remove added child view.\n * @param {(number|View)} id View id or instance itself to remove.\n * @param {function} [fn] Function for invoke before remove. parent view class is supplied first arguments.\n */\nView.prototype.removeChild = function(id, fn) {\n    var view = util.isNumber(id) ? this.children.items[id] : id;\n\n    id = util.stamp(view);\n\n    if (fn) {\n        fn.call(view, this);\n    }\n\n    this.children.remove(id);\n};\n\n/**\n * Render view recursively.\n */\nView.prototype.render = function() {\n    this.children.each(function(childView) {\n        childView.render();\n    });\n};\n\n/**\n * Invoke function recursively.\n * @param {function} fn - function to invoke child view recursively\n * @param {boolean} [skipThis=false] - set true then skip invoke with this(root) view.\n */\nView.prototype.recursive = function(fn, skipThis) {\n    if (!util.isFunction(fn)) {\n        return;\n    }\n\n    if (!skipThis) {\n        fn(this);\n    }\n\n    this.children.each(function(childView) {\n        childView.recursive(fn);\n    });\n};\n\n/**\n * Resize view recursively to parent.\n */\nView.prototype.resize = function() {\n    var args = Array.prototype.slice.call(arguments),\n        parent = this.parent;\n\n    while (parent) {\n        if (util.isFunction(parent._onResize)) {\n            parent._onResize.apply(parent, args);\n        }\n\n        parent = parent.parent;\n    }\n};\n\n/**\n * Invoking method before destroying.\n */\nView.prototype._beforeDestroy = function() {};\n\n/**\n * Clear properties\n */\nView.prototype._destroy = function() {\n    this._beforeDestroy();\n    this.children.clear();\n    this.container.innerHTML = '';\n\n    this.id = this.parent = this.children = this.container = null;\n};\n\n/*eslint-disable*/\n/**\n * Destroy child view recursively.\n */\nView.prototype.destroy = function(isChildView) {\n    this.children.each(function(childView) {\n        childView.destroy(true);\n        childView._destroy();\n    });\n\n    if (isChildView) {\n        return;\n    }\n\n    this._destroy();\n};\n/* eslint-enable*/\n\n/**\n * Calculate view's container element bound.\n * @returns {object} The bound of container element.\n */\nView.prototype.getViewBound = function() {\n    var container = this.container,\n        position = domutil.getPosition(container),\n        size = domutil.getSize(container);\n\n    return {\n        x: position[0],\n        y: position[1],\n        width: size[0],\n        height: size[1]\n    };\n};\n\n/**\n * Return view default CSS prefix\n * @param {string} [className] - if supplied then return prefix added class name\n * @returns {string} CSS prefix value\n */\nView.prototype.cssprefix = function(className) {\n    return this.cssPrefix + (className || '');\n};\n\n/**\n * set state\n * @param {object} state - state\n */\nView.prototype.setState = function(state) {\n    util.extend(this.state, state);\n};\n\nutil.CustomEvents.mixin(View);\n\nmodule.exports = View;\n","/**\n * @fileoverview DayGrid in weekly view\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\nvar util = require('tui-code-snippet');\nvar config = require('../../config'),\n    common = require('../../common/common'),\n    datetime = require('../../common/datetime'),\n    domutil = require('../../common/domutil'),\n    TZDate = require('../../common/timezone').Date,\n    View = require('../../view/view'),\n    DayGridSchedule = require('./dayGridSchedule'),\n    baseTmpl = require('../template/week/dayGrid.hbs'),\n    reqAnimFrame = require('../../common/reqAnimFrame');\nvar mmax = Math.max,\n    mmin = Math.min;\n\n/**\n * @constructor\n * @extends {Weekday}\n * @param {string} name - view name\n * @param {object} options - options for DayGridSchedule view\n * @param {number} [options.heightPercent] - height percent of view\n * @param {number} [options.containerButtonGutter=8] - free space at bottom to\n *  make create easy.\n * @param {number} [options.scheduleHeight=18] - height of each schedule block.\n * @param {number} [options.scheduleGutter=2] - gutter height of each schedule block.\n * @param {HTMLDIVElement} container - DOM element to use container for this\n *  view.\n * @param {Theme} theme - theme instance\n */\nfunction DayGrid(name, options, container, theme) {\n    container = domutil.appendHTMLElement(\n        'div',\n        container,\n        config.classname('daygrid-layout')\n    );\n    View.call(this, container);\n\n    name = name || 'daygrid';\n\n    this.options = util.extend({\n        viewName: name,\n        daynames: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n        renderStartDate: '',\n        renderEndDate: '',\n        containerBottomGutter: 18,\n        scheduleHeight: parseInt(theme.week.dayGridSchedule.height, 10),\n        scheduleGutter: parseInt(theme.week.dayGridSchedule.marginTop, 10),\n        scheduleContainerTop: 1,\n        timezones: options.timezones,\n        isReadOnly: options.isReadOnly,\n        getViewModelFunc: function(viewModel) {\n            return viewModel.schedulesInDateRange[name];\n        },\n        setViewModelFunc: function(viewModel, matrices) {\n            viewModel.schedulesInDateRange[name] = matrices;\n        }\n    }, options.week);\n\n    this.handler = {};\n    this.vPanel = null;\n\n    this.state.collapsed = true;\n}\n\nutil.inherit(DayGrid, View);\n\n/**\n * @override\n * @param {object} viewModel - schedules view models\n */\nDayGrid.prototype.getBaseViewModel = function(viewModel) {\n    var opt = this.options,\n        daynames = opt.daynames,\n        range = viewModel.range,\n        grids = viewModel.grids,\n        matrices = opt.getViewModelFunc(viewModel),\n        exceedDate = {},\n        panel = getPanel(opt.panels, opt.viewName),\n        panelHeight = this.getViewBound().height,\n        collapsed = this.state.collapsed,\n        heightForcedSet = this.vPanel ? this.vPanel.getHeightForcedSet() : false,\n        timezonesCollapsed = viewModel.state.timezonesCollapsed,\n        styles = this._getStyles(viewModel.theme, timezonesCollapsed);\n\n    var baseViewModel, visibleScheduleCount;\n    var now = new TZDate().toLocalTime();\n\n    if (panel.showExpandableButton) {\n        if (!heightForcedSet) {\n            if (collapsed) {\n                panelHeight = mmax(panelHeight, panel.maxHeight);\n            } else {\n                panelHeight = mmin(panelHeight, panel.maxExpandableHeight);\n            }\n        }\n\n        visibleScheduleCount = Math.floor(panelHeight / (opt.scheduleHeight + opt.scheduleGutter));\n        if (collapsed) {\n            exceedDate = this.parent.controller.getExceedDate(visibleScheduleCount,\n                matrices,\n                viewModel.range\n            );\n            matrices = this.parent.controller.excludeExceedSchedules(matrices, visibleScheduleCount);\n            opt.setViewModelFunc(viewModel, matrices);\n        }\n    }\n\n    baseViewModel = {\n        viewName: opt.viewName,\n        range: range,\n        grids: grids,\n        days: util.map(viewModel.range, function(d, index) {\n            var day = d.getDay();\n            var ymd = datetime.format(d, 'YYYYMMDD');\n            var isToday = datetime.isSameDate(now, d);\n\n            return {\n                day: day,\n                dayName: daynames[day],\n                isToday: isToday,\n                date: d.getDate(),\n                renderDate: datetime.format(d, 'YYYY-MM-DD'),\n                hiddenSchedules: exceedDate[ymd] || 0,\n                width: grids[index] ? grids[index].width : 0,\n                left: grids[index] ? grids[index].left : 0,\n                backgroundColor: viewModel.range.length > 1 ?\n                    getWeekBackgroundColor(day, isToday, styles) : styles.backgroundColor\n            };\n        }),\n        exceedDate: exceedDate,\n        showExpandableButton: panel.showExpandableButton,\n        collapsed: collapsed,\n        collapseBtnIndex: this.state.clickedExpandBtnIndex,\n        styles: styles\n    };\n\n    return baseViewModel;\n};\n\n/**\n * @override\n * @param {object} viewModel - schedules view models\n */\nDayGrid.prototype.render = function(viewModel) {\n    var opt = this.options,\n        container = this.container,\n        baseViewModel = this.getBaseViewModel(viewModel),\n        scheduleContainerTop = this.options.scheduleContainerTop;\n    var dayGridSchedule;\n\n    container.innerHTML = baseTmpl(baseViewModel);\n\n    this.children.clear();\n\n    dayGridSchedule = new DayGridSchedule(\n        opt,\n        domutil.find(config.classname('.container'), container)\n    );\n    this.addChild(dayGridSchedule);\n\n    dayGridSchedule.on('afterRender', function(weekdayViewModel) {\n        baseViewModel.height = weekdayViewModel.minHeight + scheduleContainerTop;\n    });\n\n    this.children.each(function(childView) {\n        childView.render(viewModel);\n    }, this);\n\n    this.fire('afterRender', baseViewModel);\n};\n\nDayGrid.prototype._beforeDestroy = function() {\n};\n\nDayGrid.prototype.addHandler = function(type, handler, vPanel) {\n    var self = this;\n\n    this.handler[type] = handler;\n    this.vPanel = vPanel;\n\n    if (type === 'click') {\n        handler.on('expand', function() {\n            self.setState({\n                collapsed: false\n            });\n        }, this);\n        handler.on('collapse', function() {\n            self.setState({\n                collapsed: true\n            });\n        }, this);\n    }\n};\n\nDayGrid.prototype._expand = function() {\n    reqAnimFrame.requestAnimFrame(function() {\n        var vPanel = this.vPanel;\n        var opt = this.options;\n        var panel = getPanel(opt.panels, opt.viewName);\n\n        vPanel.setMaxHeight(panel.maxExpandableHeight);\n        vPanel.setHeightForcedSet(false);\n        vPanel.setHeight(null, panel.maxExpandableHeight);\n\n        if (this.parent) {\n            this.parent.render();\n        }\n    }, this);\n};\n\nDayGrid.prototype._collapse = function() {\n    reqAnimFrame.requestAnimFrame(function() {\n        var vPanel = this.vPanel;\n        var opt = this.options;\n        var panel = getPanel(opt.panels, opt.viewName);\n\n        vPanel.setMaxHeight(panel.maxHeight);\n        vPanel.setHeightForcedSet(false);\n        vPanel.setHeight(null, panel.minHeight);\n\n        if (this.parent) {\n            this.parent.render();\n        }\n    }, this);\n};\n\n/**\n * set state\n * @param {object} state - state\n */\nDayGrid.prototype.setState = function(state) {\n    var collapsed = this.state.collapsed;\n    View.prototype.setState.call(this, state);\n\n    if (this.state.collapsed === collapsed) {\n        return;\n    }\n\n    if (this.state.collapsed) {\n        this._collapse();\n    } else {\n        this._expand();\n    }\n};\n\n/**\n * Get the styles from theme\n * @param {Theme} theme - theme instance\n * @param {boolean} timezonesCollapsed - multiple timezones are collapsed.\n * @returns {object} styles - styles object\n */\nDayGrid.prototype._getStyles = function(theme, timezonesCollapsed) {\n    var styles = {};\n    var timezonesLength = this.options.timezones.length;\n    var collapsed = timezonesCollapsed;\n    var numberAndUnit;\n\n    if (theme) {\n        styles.borderRight = theme.week.daygrid.borderRight || theme.common.border;\n        styles.todayBackgroundColor = theme.week.today.backgroundColor;\n        styles.weekendBackgroundColor = theme.week.weekend.backgroundColor;\n        styles.backgroundColor = theme.week.daygrid.backgroundColor;\n        styles.leftWidth = theme.week.daygridLeft.width;\n        styles.leftBackgroundColor = theme.week.daygridLeft.backgroundColor;\n        styles.leftPaddingRight = theme.week.daygridLeft.paddingRight;\n        styles.leftBorderRight = theme.week.daygridLeft.borderRight;\n\n        if (!collapsed && timezonesLength > 1) {\n            numberAndUnit = common.parseUnit(styles.leftWidth);\n            styles.leftWidth = (numberAndUnit[0] * timezonesLength) + numberAndUnit[1];\n        }\n    }\n\n    return styles;\n};\n\n/**\n * Get a background color based on day.\n * @param {number} day - day number\n * @param {boolean} isToday - today flag\n * @param {object} styles - style object\n * @returns {string} backgroundColor\n */\nfunction getWeekBackgroundColor(day, isToday, styles) {\n    var backgroundColor = '';\n\n    if (day === 0 || day === 6) {\n        backgroundColor = styles.weekendBackgroundColor;\n    } else if (isToday) {\n        backgroundColor = styles.todayBackgroundColor;\n    } else {\n        backgroundColor = styles.backgroundColor;\n    }\n\n    return backgroundColor;\n}\n\n/**\n * get a panel infomation\n * @param {Array.<object[]>} panels - panel infomations\n * @param {string} name - panel name\n * @returns {object} panel information\n */\nfunction getPanel(panels, name) {\n    var found;\n\n    util.forEach(panels, function(panel) {\n        if (panel.name === name) {\n            found = panel;\n        }\n    });\n\n    return found;\n}\n\nmodule.exports = DayGrid;\n","/**\n * @fileoverview Weekday view for week\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\nvar util = require('tui-code-snippet');\nvar Weekday = require('../weekday'),\n    tmpl = require('../template/week/dayGridSchedule.hbs');\nvar mmax = Math.max;\n\n/**\n * @constructor\n * @extends {Weekday}\n * @param {object} options - options for DayGridSchedule view\n * @param {number} [options.containerButtonGutter=8] - free space at bottom to\n *  make create easy.\n * @param {number} [options.scheduleHeight=18] - height of each schedule block.\n * @param {number} [options.scheduleGutter=2] - gutter height of each schedule block.\n * @param {HTMLDIVElement} container - DOM element to use container for this\n *  view.\n */\nfunction DayGridSchedule(options, container) {\n    Weekday.call(this, options, container);\n\n    this.collapsed = true;\n}\n\nutil.inherit(DayGridSchedule, Weekday);\n\n/**\n * Render Weekday view\n * @override\n */\nDayGridSchedule.prototype.render = function(viewModel) {\n    var container = this.container;\n    var baseViewModel;\n\n    baseViewModel = this.getBaseViewModel(viewModel);\n\n    container.innerHTML = tmpl(baseViewModel);\n\n    this.fire('afterRender', baseViewModel);\n};\n\n/**\n * returns maximum schedule count in day\n * @param {array} matrices - The matrices for schedule placing.\n * @returns {number} maximum schedule count in day\n */\nDayGridSchedule.prototype._getMaxScheduleInDay = function(matrices) {\n    return mmax.apply(\n        null,\n        util.map(matrices, function(matrix) {\n            return Math.max.apply(null, util.map(matrix, function(row) {\n                return row.length;\n            }));\n        })\n    );\n};\n\n/**\n * returns minimum height for container.\n * @param {number} maxScheduleInDay - max schedule blocks in one day\n * @returns {number}\n */\nDayGridSchedule.prototype._getMinHeight = function(maxScheduleInDay) {\n    var opt = this.options;\n    var contentHeight = (maxScheduleInDay * opt.scheduleHeight)\n        + ((maxScheduleInDay - 1) * opt.scheduleGutter);\n\n    // if (this.collapsed && this.aboutMe.maxHeight >= contentHeight + opt.containerBottomGutter) {\n    //     contentHeight += opt.containerBottomGutter;\n    // }\n\n    return contentHeight;\n};\n\n/**\n * @override\n * @param {object} viewModel - schedules view models\n */\nDayGridSchedule.prototype.getBaseViewModel = function(viewModel) {\n    var opt = this.options;\n    var matrices = opt.getViewModelFunc(viewModel);\n    var maxScheduleInDay = this._getMaxScheduleInDay(matrices);\n    var baseViewModel;\n    var styles = this._getStyles(viewModel.theme);\n\n    baseViewModel = Weekday.prototype.getBaseViewModel.call(this, viewModel);\n\n    baseViewModel = util.extend({\n        minHeight: this._getMinHeight(maxScheduleInDay),\n        matrices: matrices,\n        scheduleContainerTop: this.options.scheduleContainerTop,\n        maxScheduleInDay: maxScheduleInDay,\n        isReadOnly: opt.isReadOnly,\n        styles: styles\n    }, baseViewModel);\n\n    return baseViewModel;\n};\n\n/**\n * Get the styles from theme\n * @param {Theme} theme - theme instance\n * @returns {object} styles - styles object\n */\nDayGridSchedule.prototype._getStyles = function(theme) {\n    var styles = {};\n\n    if (theme) {\n        styles.borderRadius = theme.week.dayGridSchedule.borderRadius;\n    }\n\n    return styles;\n};\n\nmodule.exports = DayGridSchedule;\n","/**\n * @fileoverview View for rendering daynames\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\nvar util = require('tui-code-snippet');\nvar config = require('../../config');\nvar common = require('../../common/common');\nvar datetime = require('../../common/datetime');\nvar TZDate = require('../../common/timezone').Date;\nvar domutil = require('../../common/domutil');\nvar View = require('../view');\nvar daynameTmpl = require('../template/week/daynames.hbs');\n\n/**\n * @constructor\n * @param {object} options - options for dayname view\n * @param {HTMLElement} container Container element to use.\n * @param {Theme} theme - theme instance\n * @extends {View}\n */\nfunction DayName(options, container, theme) {\n    container = domutil.appendHTMLElement(\n        'div',\n        container,\n        config.classname('dayname-container')\n    );\n\n    this.options = util.extend({\n        daynames: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n        timezones: options.timezones\n    }, options.week);\n\n    /**\n     * @type {Theme}\n     */\n    this.theme = theme;\n\n    View.call(this, container);\n\n    this.applyTheme();\n}\n\nutil.inherit(DayName, View);\n\n/**\n * Get default viewmodels.\n * @param {Date} start The date of start render\n * @param {Date} end The end of end render\n * @param {object} grids grid data(width, left, day)\n * @returns {array} viewmodel.\n */\nDayName.prototype._getBaseViewModel = function(start, end, grids) {\n    var daynames = this.options.daynames,\n        theme = this.theme,\n        now = new TZDate().toLocalTime(),\n        viewModel;\n\n    viewModel = util.map(datetime.range(\n        datetime.start(start),\n        datetime.end(end),\n        datetime.MILLISECONDS_PER_DAY\n    ), function(d, i) {\n        var day = d.getDay();\n        var isToday = datetime.isSameDate(d, now);\n        var isPastDay = d < now && !isToday;\n\n        return {\n            day: day,\n            dayName: daynames[day],\n            isToday: isToday,\n            date: d.getDate(),\n            left: grids[i] ? grids[i].left : 0,\n            width: grids[i] ? grids[i].width : 0,\n            renderDate: datetime.format(d, 'YYYY-MM-DD'),\n            color: this._getDayNameColor(theme, day, isToday, isPastDay)\n        };\n    }, this);\n\n    return viewModel;\n};\n\n/**\n * @override\n * @param {object} viewModel View model from parent (WeekView)\n */\nDayName.prototype.render = function(viewModel) {\n    var dayNames = this._getBaseViewModel(\n        viewModel.renderStartDate,\n        viewModel.renderEndDate,\n        viewModel.grids\n    );\n    var timezonesCollapsed = viewModel.state.timezonesCollapsed;\n    var styles = this._getStyles(this.theme, timezonesCollapsed);\n    var baseViewModel = util.extend({}, {\n        dayNames: dayNames,\n        styles: styles\n    });\n\n    this.container.innerHTML = daynameTmpl(baseViewModel);\n};\n\n/**\n * Get a day name color\n * @param {Theme} theme - theme instance\n * @param {number} day - day number\n * @param {boolean} isToday - today flag\n * @param {boolean} isPastDay - is past day flag\n * @returns {string} style - color style\n */\nDayName.prototype._getDayNameColor = function(theme, day, isToday, isPastDay) {\n    var color = '';\n\n    if (theme) {\n        if (day === 0) {\n            color = theme.common.holiday.color;\n        } else if (isPastDay) {\n            color = theme.week.pastDay.color || theme.common.dayname.color;\n        } else if (day === 6) {\n            color = theme.common.saturday.color;\n        } else if (isToday) {\n            color = theme.week.today.color || theme.common.today.color;\n        } else {\n            color = theme.common.dayname.color;\n        }\n    }\n\n    return color;\n};\n\n/**\n * Get the styles from theme\n * @param {Theme} theme - theme instance\n * @param {boolean} timezonesCollapsed - multiple timezones are collapsed.\n * @returns {object} styles - styles object\n */\nDayName.prototype._getStyles = function(theme, timezonesCollapsed) {\n    var styles = {};\n    var timezonesLength = this.options.timezones.length;\n    var collapsed = timezonesCollapsed;\n    var numberAndUnit;\n\n    if (theme) {\n        styles.borderTop = theme.week.dayname.borderTop || theme.common.border;\n        styles.borderBottom = theme.week.dayname.borderBottom || theme.common.border;\n        styles.borderLeft = theme.week.dayname.borderLeft || theme.common.border;\n        styles.paddingLeft = theme.week.dayname.paddingLeft;\n        styles.backgroundColor = theme.week.dayname.backgroundColor;\n        styles.height = theme.week.dayname.height;\n        styles.textAlign = theme.week.dayname.textAlign;\n        styles.marginLeft = theme.week.daygridLeft.width;\n\n        if (!collapsed && timezonesLength > 1) {\n            numberAndUnit = common.parseUnit(styles.marginLeft);\n            styles.marginLeft = (numberAndUnit[0] * timezonesLength) + numberAndUnit[1];\n        }\n    }\n\n    return styles;\n};\n\nDayName.prototype.applyTheme = function() {\n    var styles = this._getStyles(this.theme);\n    var style = this.container.style;\n\n    style.borderTop = styles.borderTop;\n    style.borderBottom = styles.borderBottom;\n    style.height = styles.height;\n    style.backgroundColor = styles.backgroundColor;\n    style.textAlign = styles.textAlign;\n\n    return style;\n};\n\nmodule.exports = DayName;\n","/**\n * @fileoverview View of time.\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\nvar util = require('tui-code-snippet');\nvar config = require('../../config');\nvar datetime = require('../../common/datetime');\nvar domutil = require('../../common/domutil');\nvar View = require('../view');\nvar timeTmpl = require('../template/week/time.hbs');\n\nvar forEachArr = util.forEachArray;\nvar SCHEDULE_MIN_DURATION = datetime.MILLISECONDS_SCHEDULE_MIN_DURATION;\n\n/**\n * @constructor\n * @extends {View}\n * @param {object} options Options\n * @param {number} options.index Date index in week view.\n * @param {number} options.width Date element width (percent)\n * @param {string} options.ymd YYYMMDD string for this view\n * @param {boolean} options.isToday when set true then assign today design class to container.\n * @param {number} options.hourStart Can limit of render hour start.\n * @param {number} options.hourEnd Can limit of render hour end.\n * @param {HTMLElement} container Element to use container for this view.\n * @param {Theme} theme - theme instance\n */\nfunction Time(options, container, theme) {\n    View.call(this, container);\n\n    this.options = util.extend({\n        index: 0,\n        width: 0,\n        ymd: '',\n        isToday: false,\n        pending: false,\n        hourStart: 0,\n        hourEnd: 24,\n        defaultMarginBottom: 2,\n        minHeight: 18.5,\n        isReadOnly: false\n    }, options);\n\n    this.timeTmpl = timeTmpl;\n\n    /**\n     * @type {Theme}\n     */\n    this.theme = theme;\n\n    container.style.width = options.width + '%';\n    container.style.left = options.left + '%';\n\n    if (this.options.isToday) {\n        domutil.addClass(this.container, config.classname('today'));\n    }\n\n    this.applyTheme();\n}\n\nutil.inherit(Time, View);\n\n/**\n * Convert YYYYMMDD formatted string date to Date.\n * @param {string} str formatted string.\n * @returns {Date} start of date.\n */\nTime.prototype._parseDateGroup = function(str) {\n    var y = parseInt(str.substr(0, 4), 10),\n        m = parseInt(str.substr(4, 2), 10),\n        d = parseInt(str.substr(6, 2), 10);\n    var date = datetime.start();\n\n    date.setFullYear(y, m - 1, d);\n\n    return datetime.start(date);\n};\n\n/**\n * calculate left and width\n * @param {ScheduleViewModel} viewModel - view model instance to calculate bound.\n * @param {object} options - options for calculating schedule element's bound.\n * @returns {object} - left and width\n */\nTime.prototype._getScheduleViewBoundX = function(viewModel, options) {\n    var width = options.baseWidth * (viewModel.extraSpace + 1);\n\n    // set width auto when has no collisions.\n    if (!viewModel.hasCollide) {\n        width = null;\n    }\n\n    return {\n        left: options.baseLeft[options.columnIndex],\n        width: width\n    };\n};\n\n/**\n * calculate top, height, croppedStart and croppedEnd\n * @param {ScheduleViewModel} viewModel - view model instance to calculate bound.\n * @param {object} options - options for calculating schedule element's bound.\n * @returns {object} - left and width\n */\nTime.prototype._getScheduleViewBoundY = function(viewModel, options) {\n    var baseMS = options.baseMS;\n    var baseHeight = options.baseHeight;\n    var croppedStart = false;\n    var croppedEnd = false;\n    var goingDuration = datetime.millisecondsFrom('minutes', viewModel.valueOf().goingDuration);\n    var comingDuration = datetime.millisecondsFrom('minutes', viewModel.valueOf().comingDuration);\n    var offsetStart = viewModel.valueOf().start - goingDuration - options.todayStart;\n    // containerHeight : milliseconds in day = x : schedule's milliseconds\n    var top = (baseHeight * offsetStart) / baseMS;\n    var modelDuration = viewModel.duration();\n    var height;\n    var duration;\n    var goingDurationHeight;\n    var modelDurationHeight;\n    var comingDurationHeight;\n\n    modelDuration = modelDuration > SCHEDULE_MIN_DURATION ? modelDuration : SCHEDULE_MIN_DURATION;\n    duration = modelDuration + goingDuration + comingDuration;\n    height = (baseHeight * duration) / baseMS;\n\n    goingDurationHeight = (baseHeight * goingDuration) / baseMS; // common.ratio(duration, goingDuration, 100);\n    modelDurationHeight = (baseHeight * modelDuration) / baseMS; // common.ratio(duration, modelDuration, 100);\n    comingDurationHeight = (baseHeight * comingDuration) / baseMS; // common.ratio(duration, comingDuration, 100);\n\n    if (offsetStart < 0) {\n        top = 0;\n        height += ((baseHeight * offsetStart) / baseMS);\n        croppedStart = true;\n    }\n\n    if (height + top > baseHeight) {\n        height = baseHeight - top;\n        croppedEnd = true;\n    }\n\n    return {\n        top: top,\n        height: Math.max(height, this.options.minHeight) - this.options.defaultMarginBottom,\n        modelDurationHeight: modelDurationHeight,\n        goingDurationHeight: goingDurationHeight,\n        comingDurationHeight: comingDurationHeight,\n        hasGoingDuration: goingDuration > 0,\n        hasComingDuration: comingDuration > 0,\n        croppedStart: croppedStart,\n        croppedEnd: croppedEnd\n    };\n};\n\n/**\n * @param {ScheduleViewModel} viewModel - view model instance to calculate bound.\n * @param {object} options - options for calculating schedule element's bound.\n * @param {Date} options.todayStart - date object represent schedule date's start (00:00:00)\n * @param {number} options.baseMS - the number of milliseconds to render schedule blocks.\n * @param {number} options.baseHeight - pixel value related with baseMS options.\n * @param {number[]} options.baseLeft - left position percents for each columns.\n * @param {number} options.baseWidth - the unit of schedule blocks width percent.\n * @param {number} options.columnIndex - the number index of schedule blocks.\n * it represent rendering index from left sides in view.\n * @returns {object} bound object for supplied view model.\n */\nTime.prototype.getScheduleViewBound = function(viewModel, options) {\n    var boundX = this._getScheduleViewBoundX(viewModel, options);\n    var boundY = this._getScheduleViewBoundY(viewModel, options);\n    var schedule = viewModel.model;\n    var isReadOnly = util.pick(schedule, 'isReadOnly') || false;\n    var travelBorderColor = schedule.isFocused ? '#ffffff' : schedule.borderColor;\n    if (travelBorderColor === schedule.bgColor) {\n        travelBorderColor = null; // follow text color\n    }\n\n    return util.extend({\n        isReadOnly: isReadOnly,\n        travelBorderColor: travelBorderColor\n    }, boundX, boundY);\n};\n\n/**\n * Set viewmodels for rendering.\n * @param {string} ymd The date of schedules. YYYYMMDD format.\n * @param {array} matrices The matrices for schedule placing.\n * @param {number} containerHeight - container's height\n */\nTime.prototype._getBaseViewModel = function(ymd, matrices, containerHeight) {\n    var self = this,\n        options = this.options,\n        hourStart = options.hourStart,\n        hourEnd = options.hourEnd,\n        isReadOnly = options.isReadOnly,\n        todayStart,\n        baseMS;\n\n    /**\n     * Calculate each schedule element bounds relative with rendered hour milliseconds and\n     * wrap each schedule model to viewmodels.\n     */\n    containerHeight = containerHeight || this.getViewBound().height;\n    todayStart = this._parseDateGroup(ymd);\n    todayStart.setHours(hourStart);\n    baseMS = datetime.millisecondsFrom('hour', (hourEnd - hourStart));\n\n    forEachArr(matrices, function(matrix) {\n        var maxRowLength,\n            widthPercent,\n            leftPercents,\n            i;\n\n        maxRowLength = Math.max.apply(null, util.map(matrix, function(row) {\n            return row.length;\n        }));\n\n        widthPercent = 100 / maxRowLength;\n\n        leftPercents = [];\n        for (i = 0; i < maxRowLength; i += 1) {\n            leftPercents[i] = widthPercent * i;\n        }\n\n        forEachArr(matrix, function(row) {\n            forEachArr(row, function(viewModel, col) {\n                var viewBound;\n\n                if (!viewModel) {\n                    return;\n                }\n\n                viewBound = self.getScheduleViewBound(viewModel, {\n                    todayStart: todayStart,\n                    baseMS: baseMS,\n                    baseLeft: leftPercents,\n                    baseWidth: widthPercent,\n                    baseHeight: containerHeight,\n                    columnIndex: col,\n                    isReadOnly: isReadOnly\n                });\n\n                util.extend(viewModel, viewBound);\n            });\n        });\n    });\n};\n\n/**\n * @returns {Date} - Date of this view.\n */\nTime.prototype.getDate = function() {\n    return this._parseDateGroup(this.options.ymd);\n};\n\n/**\n * @override\n * @param {string} ymd The date of schedules. YYYYMMDD format\n * @param {array} matrices Matrices for placing schedules\n * @param {number} containerHeight - container's height\n */\nTime.prototype.render = function(ymd, matrices, containerHeight) {\n    this._getBaseViewModel(ymd, matrices, containerHeight);\n    this.container.innerHTML = this.timeTmpl({\n        matrices: matrices,\n        styles: this._getStyles(this.theme),\n        isReadOnly: this.options.isReadOnly\n    });\n};\n\n/**\n * Get the styles from theme\n * @param {Theme} theme - theme instance\n * @returns {object} styles - styles object\n */\nTime.prototype._getStyles = function(theme) {\n    var styles = {};\n    var options = this.options;\n\n    if (theme) {\n        styles.borderRight = theme.week.timegrid.borderRight || theme.common.border;\n        styles.marginRight = theme.week.timegrid.paddingRight;\n        styles.borderRadius = theme.week.timegridSchedule.borderRadius;\n        styles.paddingLeft = theme.week.timegridSchedule.paddingLeft;\n        styles.backgroundColor = options.isToday ? theme.week.today.backgroundColor : 'inherit';\n    }\n\n    return styles;\n};\n\nTime.prototype.applyTheme = function() {\n    var style = this.container.style;\n    var styles = this._getStyles(this.theme);\n\n    style.borderRight = styles.borderRight;\n    style.backgroundColor = styles.backgroundColor;\n};\n\nmodule.exports = Time;\n","/**\n * @fileoverview View for rendered schedules by times.\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\nvar util = require('tui-code-snippet');\nvar config = require('../../config');\nvar common = require('../../common/common');\nvar domutil = require('../../common/domutil');\nvar domevent = require('../../common/domevent');\nvar datetime = require('../../common/datetime');\nvar Timezone = require('../../common/timezone');\nvar reqAnimFrame = require('../../common/reqAnimFrame');\nvar View = require('../view');\nvar Time = require('./time');\nvar AutoScroll = require('../../common/autoScroll');\nvar mainTmpl = require('../template/week/timeGrid.hbs');\nvar timezoneStickyTmpl = require('../template/week/timezoneSticky.hbs');\nvar timegridCurrentTimeTmpl = require('../template/week/timeGridCurrentTime.hbs');\nvar TZDate = Timezone.Date;\nvar HOURMARKER_REFRESH_INTERVAL = 1000 * 60;\nvar SIXTY_SECONDS = 60;\nvar SIXTY_MINUTES = 60;\n\n/**\n * Returns a list of time labels from start to end.\n * For hidden labels near the current time, set to hidden: true.\n * @param {object} opt - TimeGrid.options\n * @param {boolean} hasHourMarker - Whether the current time is displayed\n * @param {number} timezoneOffset - timezone offset\n * @param {object} styles - styles\n * @returns {Array.<Object>}\n */\nfunction getHoursLabels(opt, hasHourMarker, timezoneOffset, styles) {\n    var hourStart = opt.hourStart;\n    var hourEnd = opt.hourEnd;\n    var renderEndDate = new TZDate(opt.renderEndDate);\n    var shiftByOffset = parseInt(timezoneOffset / SIXTY_MINUTES, 10);\n    var shiftMinutes = Math.abs(timezoneOffset % SIXTY_MINUTES);\n    var now = new TZDate().toLocalTime();\n    var nowMinutes = now.getMinutes();\n    var hoursRange = util.range(0, 24);\n    var nowAroundHours = null;\n    var nowHours, nowHoursIndex;\n    var isNegativeZero = 1 / -Infinity === shiftByOffset;\n\n    if ((shiftByOffset < 0 || isNegativeZero) && shiftMinutes > 0) {\n        shiftByOffset -= 1;\n    }\n\n    // shift the array and take elements between start and end\n    common.shiftArray(hoursRange, shiftByOffset);\n    common.takeArray(hoursRange, hourStart, hourEnd);\n\n    nowHours = common.shiftHours(now.getHours(), shiftByOffset) % 24;\n    nowHoursIndex = util.inArray(nowHours, hoursRange);\n\n    if (hasHourMarker) {\n        if (nowMinutes < 20) {\n            nowAroundHours = nowHours;\n        } else if (nowMinutes > 40) {\n            nowAroundHours = nowHours + 1;\n        }\n\n        if (util.isNumber(nowAroundHours)) {\n            nowAroundHours %= 24;\n        }\n    }\n\n    return util.map(hoursRange, function(hour, index) {\n        var color;\n        var fontWeight;\n        var isPast = (hasHourMarker && index <= nowHoursIndex) ||\n                     (renderEndDate < now && !datetime.isSameDate(renderEndDate, now));\n\n        if (isPast) {\n            // past\n            color = styles.pastTimeColor;\n            fontWeight = styles.pastTimeFontWeight;\n        } else {\n            // future\n            color = styles.futureTimeColor;\n            fontWeight = styles.futureTimeFontWeight;\n        }\n\n        return {\n            hour: hour,\n            minutes: shiftMinutes,\n            hidden: nowAroundHours === hour || index === 0,\n            color: color || '',\n            fontWeight: fontWeight || ''\n        };\n    });\n}\n/**\n * @constructor\n * @extends {View}\n * @param {string} name - view name\n * @param {object} options The object for view customization.\n * @param {string} options.renderStartDate - render start date. YYYY-MM-DD\n * @param {string} options.renderEndDate - render end date. YYYY-MM-DD\n * @param {number} [options.hourStart=0] You can change view's start hours.\n * @param {number} [options.hourEnd=0] You can change view's end hours.\n * @param {HTMLElement} panelElement panel element.\n */\nfunction TimeGrid(name, options, panelElement) {\n    var container = domutil.appendHTMLElement(\n        'div',\n        panelElement,\n        config.classname('timegrid-container')\n    );\n    var stickyContainer = domutil.appendHTMLElement(\n        'div',\n        panelElement,\n        config.classname('timegrid-sticky-container')\n    );\n\n    panelElement.style.position = 'relative'; // for stickyContainer\n\n    name = name || 'time';\n\n    View.call(this, container);\n\n    if (!util.browser.safari) {\n        /**\n         * @type {AutoScroll}\n         */\n        this._autoScroll = new AutoScroll(container);\n    }\n\n    this.stickyContainer = stickyContainer;\n\n    /**\n     * Time view options.\n     * @type {object}\n     */\n    this.options = util.extend({\n        viewName: name,\n        renderStartDate: '',\n        renderEndDate: '',\n        hourStart: 0,\n        hourEnd: 24,\n        timezones: options.timezones,\n        isReadOnly: options.isReadOnly,\n        showTimezoneCollapseButton: false\n    }, options.week);\n\n    if (this.options.timezones.length < 1) {\n        this.options.timezones = [{\n            timezoneOffset: Timezone.getOffset()\n        }];\n    }\n\n    /**\n     * Interval id for hourmarker animation.\n     * @type {number}\n     */\n    this.intervalID = 0;\n\n    /**\n     * timer id for hourmarker initial state\n     * @type {number}\n     */\n    this.timerID = 0;\n\n    /**\n     * requestAnimationFrame unique ID\n     * @type {number}\n     */\n    this.rAnimationFrameID = 0;\n\n    /**\n     * @type {boolean}\n     */\n    this._scrolled = false;\n\n    /**\n     * cache parent's view model\n     * @type {object}\n     */\n    this._cacheParentViewModel = null;\n\n    /**\n     * cache hoursLabels view model to render again TimeGrid\n     * @type {object}\n     */\n    this._cacheHoursLabels = null;\n\n    this.attachEvent();\n}\n\nutil.inherit(TimeGrid, View);\n\n/**********\n * Prototype props\n **********/\n\n/**\n * @type {string}\n */\nTimeGrid.prototype.viewName = 'timegrid';\n\n/**\n * Destroy view.\n * @override\n */\nTimeGrid.prototype._beforeDestroy = function() {\n    clearInterval(this.intervalID);\n    clearTimeout(this.timerID);\n    reqAnimFrame.cancelAnimFrame(this.rAnimationFrameID);\n\n    if (this._autoScroll) {\n        this._autoScroll.destroy();\n    }\n\n    domevent.off(this.stickyContainer, 'click', this._onClickStickyContainer, this);\n\n    this._autoScroll = this.hourmarkers = this.intervalID =\n    this.timerID = this.rAnimationFrameID = this._cacheParentViewModel = this.stickyContainer = null;\n};\n\n/**\n * @param {Date} [time] - date object to convert pixel in grids.\n * use **Date.now()** when not supplied.\n * @returns {number} The pixel value represent current time in grids.\n */\nTimeGrid.prototype._getTopPercentByTime = function(time) {\n    var opt = this.options,\n        raw = datetime.raw(time || new TZDate()),\n        hourLength = util.range(opt.hourStart, opt.hourEnd).length,\n        maxMilliseconds = hourLength * datetime.MILLISECONDS_PER_HOUR,\n        hmsMilliseconds = datetime.millisecondsFrom('hour', raw.h) +\n            datetime.millisecondsFrom('minutes', raw.m) +\n            datetime.millisecondsFrom('seconds', raw.s) +\n            raw.ms,\n        topPercent;\n\n    topPercent = common.ratio(maxMilliseconds, 100, hmsMilliseconds);\n    topPercent -= common.ratio(maxMilliseconds, 100, datetime.millisecondsFrom('hour', opt.hourStart));\n\n    return common.limit(topPercent, [0], [100]);\n};\n\n/**\n * Get Hourmarker viewmodel.\n * @param {TZDate} now - now\n * @param {object} grids grid information(width, left, day)\n * @param {Array.<TZDate>} range render range\n * @returns {object} ViewModel of hourmarker.\n */\nTimeGrid.prototype._getHourmarkerViewModel = function(now, grids, range) {\n    var todaymarkerLeft = -1;\n    var todaymarkerWidth = -1;\n    var hourmarkerTimzones = [];\n    var opt = this.options;\n    var primaryOffset = Timezone.getOffset();\n    var timezones = opt.timezones;\n    var viewModel;\n\n    util.forEach(range, function(date, index) {\n        if (datetime.isSameDate(now, date)) {\n            todaymarkerLeft = grids[index] ? grids[index].left : 0;\n            todaymarkerWidth = grids[index] ? grids[index].width : 0;\n        }\n    });\n\n    util.forEach(timezones, function(timezone) {\n        var timezoneDifference = timezone.timezoneOffset + primaryOffset;\n        var hourmarker = new TZDate(now);\n        var dateDifference;\n\n        hourmarker.setMinutes(hourmarker.getMinutes() + timezoneDifference);\n        dateDifference = datetime.getDateDifference(hourmarker, now);\n\n        hourmarkerTimzones.push({\n            hourmarker: hourmarker,\n            dateDifferenceSign: (dateDifference < 0) ? '-' : '+',\n            dateDifference: Math.abs(dateDifference)\n        });\n    });\n\n    viewModel = {\n        currentHours: now.getHours(),\n        hourmarkerTop: this._getTopPercentByTime(now),\n        hourmarkerTimzones: hourmarkerTimzones,\n        todaymarkerLeft: todaymarkerLeft,\n        todaymarkerWidth: todaymarkerWidth,\n        todaymarkerRight: todaymarkerLeft + todaymarkerWidth\n    };\n\n    return viewModel;\n};\n\n/**\n * Get timezone view model\n * @param {number} currentHours - current hour\n * @param {boolean} timezonesCollapsed - multiple timezones are collapsed.\n * @param {object} styles - styles\n * @returns {object} ViewModel\n */\nTimeGrid.prototype._getTimezoneViewModel = function(currentHours, timezonesCollapsed, styles) {\n    var opt = this.options;\n    var primaryOffset = Timezone.getOffset();\n    var timezones = opt.timezones;\n    var timezonesLength = timezones.length;\n    var timezoneViewModel = [];\n    var collapsed = timezonesCollapsed;\n    var width = collapsed ? 100 : 100 / timezonesLength;\n    var now = new TZDate().toLocalTime();\n    var backgroundColor = styles.displayTimezoneLabelBackgroundColor;\n\n    util.forEach(timezones, function(timezone, index) {\n        var hourmarker = new TZDate(now);\n        var timezoneDifference;\n        var timeSlots;\n        var dateDifference;\n\n        timezoneDifference = timezone.timezoneOffset + primaryOffset;\n        timeSlots = getHoursLabels(opt, currentHours >= 0, timezoneDifference, styles);\n\n        hourmarker.setMinutes(hourmarker.getMinutes() + timezoneDifference);\n        dateDifference = datetime.getDateDifference(hourmarker, now);\n\n        if (index > 0) {\n            backgroundColor = styles.additionalTimezoneBackgroundColor;\n        }\n\n        timezoneViewModel.push({\n            timeSlots: timeSlots,\n            displayLabel: timezone.displayLabel,\n            timezoneOffset: timezone.timezoneOffset,\n            tooltip: timezone.tooltip || '',\n            width: width,\n            left: collapsed ? 0 : (timezones.length - index - 1) * width,\n            isPrimary: index === 0,\n            backgroundColor: backgroundColor || '',\n            hidden: index !== 0 && collapsed,\n            hourmarker: hourmarker,\n            dateDifferenceSign: (dateDifference < 0) ? '-' : '+',\n            dateDifference: Math.abs(dateDifference)\n        });\n    });\n\n    return timezoneViewModel;\n};\n\n/**\n * Get base viewModel.\n * @param {object} viewModel - view model\n * @returns {object} ViewModel\n */\nTimeGrid.prototype._getBaseViewModel = function(viewModel) {\n    var grids = viewModel.grids;\n    var range = viewModel.range;\n    var opt = this.options;\n    var baseViewModel = this._getHourmarkerViewModel(new TZDate().toLocalTime(), grids, range);\n    var timezonesCollapsed = util.pick(viewModel, 'state', 'timezonesCollapsed');\n    var styles = this._getStyles(viewModel.theme, timezonesCollapsed);\n\n    return util.extend(baseViewModel, {\n        timezones: this._getTimezoneViewModel(baseViewModel.todaymarkerLeft, timezonesCollapsed, styles),\n        hoursLabels: getHoursLabels(opt, baseViewModel.todaymarkerLeft >= 0, 0, styles),\n        styles: styles,\n        showTimezoneCollapseButton: util.pick(opt, 'showTimezoneCollapseButton'),\n        timezonesCollapsed: timezonesCollapsed\n    });\n};\n\n/**\n * Reconcilation child views and render.\n * @param {object} viewModels Viewmodel\n * @param {object} grids grid information(width, left, day)\n * @param {HTMLElement} container Container element for each time view.\n * @param {Theme} theme - theme instance\n */\nTimeGrid.prototype._renderChildren = function(viewModels, grids, container, theme) {\n    var self = this,\n        options = this.options,\n        childOption,\n        child,\n        isToday,\n        containerHeight,\n        today = datetime.format(new TZDate(), 'YYYYMMDD'),\n        i = 0;\n\n    // clear contents\n    container.innerHTML = '';\n    this.children.clear();\n\n    containerHeight = domutil.getSize(container.parentElement)[1];\n\n    // reconcilation of child views\n    util.forEach(viewModels, function(schedules, ymd) {\n        isToday = ymd === today;\n\n        childOption = {\n            index: i,\n            left: grids[i] ? grids[i].left : 0,\n            width: grids[i] ? grids[i].width : 0,\n            ymd: ymd,\n            isToday: isToday,\n            isPending: options.isPending,\n            isFocused: options.isFocused,\n            isReadOnly: options.isReadOnly,\n            hourStart: options.hourStart,\n            hourEnd: options.hourEnd\n        };\n\n        child = new Time(\n            childOption,\n            domutil.appendHTMLElement('div', container, config.classname('time-date')),\n            theme\n        );\n        child.render(ymd, schedules, containerHeight);\n\n        self.addChild(child);\n\n        i += 1;\n    });\n};\n\n/**\n * @override\n * @param {object} viewModel ViewModel list from Week view.\n */\nTimeGrid.prototype.render = function(viewModel) {\n    var opt = this.options,\n        timeViewModel = viewModel.schedulesInDateRange[opt.viewName],\n        container = this.container,\n        grids = viewModel.grids,\n        baseViewModel = this._getBaseViewModel(viewModel),\n        scheduleLen = util.keys(timeViewModel).length;\n\n    this._cacheParentViewModel = viewModel;\n    this._cacheHoursLabels = baseViewModel.hoursLabels;\n\n    if (!scheduleLen) {\n        return;\n    }\n\n    baseViewModel.showHourMarker = baseViewModel.todaymarkerLeft >= 0;\n\n    container.innerHTML = mainTmpl(baseViewModel);\n\n    /**********\n     * Render sticky container for timezone display label\n     **********/\n    this.renderStickyContainer(baseViewModel);\n\n    /**********\n     * Render children\n     **********/\n    this._renderChildren(\n        timeViewModel,\n        grids,\n        domutil.find(config.classname('.timegrid-schedules-container'), container),\n        viewModel.theme\n    );\n\n    this._hourLabels = domutil.find('ul', container);\n\n    /**********\n     * Render hourmarker\n     **********/\n    this.hourmarkers = domutil.find(config.classname('.timegrid-hourmarker'), container, true);\n\n    if (!this._scrolled) {\n        this._scrolled = true;\n        this.scrollToNow();\n    }\n};\n\nTimeGrid.prototype.renderStickyContainer = function(baseViewModel) {\n    var stickyContainer = this.stickyContainer;\n\n    stickyContainer.innerHTML = timezoneStickyTmpl(baseViewModel);\n\n    stickyContainer.style.display = baseViewModel.timezones.length > 1 ? 'block' : 'none';\n    stickyContainer.style.width = baseViewModel.styles.leftWidth;\n    stickyContainer.style.height = baseViewModel.styles.displayTimezoneLabelHeight;\n    stickyContainer.style.borderBottom = baseViewModel.styles.leftBorderRight;\n};\n\n/**\n * Refresh hourmarker element.\n */\nTimeGrid.prototype.refreshHourmarker = function() {\n    var hourmarkers = this.hourmarkers;\n    var viewModel = this._cacheParentViewModel;\n    var hoursLabels = this._cacheHoursLabels;\n    var rAnimationFrameID = this.rAnimationFrameID;\n    var baseViewModel;\n\n    if (!hourmarkers || !viewModel || rAnimationFrameID) {\n        return;\n    }\n\n    baseViewModel = this._getBaseViewModel(viewModel);\n\n    this.rAnimationFrameID = reqAnimFrame.requestAnimFrame(function() {\n        var needsRender = false;\n\n        util.forEach(hoursLabels, function(hoursLabel, index) {\n            if (hoursLabel.hidden !== baseViewModel.hoursLabels[index].hidden) {\n                needsRender = true;\n\n                return false;\n            }\n\n            return true;\n        });\n\n        if (needsRender) {\n            this.render(viewModel);\n        } else {\n            util.forEach(hourmarkers, function(hourmarker) {\n                var todaymarker = domutil.find(config.classname('.timegrid-todaymarker'), hourmarker);\n                var hourmarkerContainer = domutil.find(config.classname('.timegrid-hourmarker-time'), hourmarker);\n                var timezone = domutil.closest(hourmarker, config.classname('.timegrid-timezone'));\n                var timezoneIndex = timezone ? domutil.getData(timezone, 'timezoneIndex') : 0;\n\n                hourmarker.style.top = baseViewModel.hourmarkerTop + '%';\n\n                if (todaymarker) {\n                    todaymarker.style.display = (baseViewModel.todaymarkerLeft >= 0) ? 'block' : 'none';\n                }\n                if (hourmarkerContainer) {\n                    hourmarkerContainer.innerHTML = timegridCurrentTimeTmpl(\n                        baseViewModel.hourmarkerTimzones[timezoneIndex]\n                    );\n                }\n            });\n        }\n\n        this.rAnimationFrameID = null;\n    }, this);\n};\n\n/**\n * Attach events\n */\nTimeGrid.prototype.attachEvent = function() {\n    clearInterval(this.intervalID);\n    clearTimeout(this.timerID);\n    this.intervalID = this.timerID = this.rAnimationFrameID = null;\n\n    this.timerID = setTimeout(this.onTick.bind(this), (SIXTY_SECONDS - new TZDate().getSeconds()) * 1000);\n\n    domevent.on(this.stickyContainer, 'click', this._onClickStickyContainer, this);\n};\n\n/**\n * Scroll time grid to current hourmarker.\n */\nTimeGrid.prototype.scrollToNow = function() {\n    var container = this.container;\n    var offsetTop,\n        viewBound,\n        scrollTop,\n        scrollAmount,\n        scrollBy,\n        scrollFn;\n\n    if (!this.hourmarkers || !this.hourmarkers.length) {\n        return;\n    }\n\n    offsetTop = this.hourmarkers[0].offsetTop;\n    viewBound = this.getViewBound();\n    scrollTop = offsetTop;\n    scrollAmount = viewBound.height / 4;\n    scrollBy = 10;\n\n    scrollFn = function() {\n        if (scrollTop > offsetTop - scrollAmount) {\n            scrollTop -= scrollBy;\n            container.scrollTop = scrollTop;\n\n            reqAnimFrame.requestAnimFrame(scrollFn);\n        } else {\n            container.scrollTop = offsetTop - scrollAmount;\n        }\n    };\n\n    reqAnimFrame.requestAnimFrame(scrollFn);\n};\n\n/**********\n * Schedule handlers\n **********/\n\n/**\n * Interval tick handler\n */\nTimeGrid.prototype.onTick = function() {\n    if (this.timerID) {\n        clearTimeout(this.timerID);\n        this.timerID = null;\n    }\n\n    if (!this.intervalID) {\n        this.intervalID = setInterval(this.onTick.bind(this), HOURMARKER_REFRESH_INTERVAL);\n    }\n    this.refreshHourmarker();\n};\n\n/**\n * Get the styles from theme\n * @param {Theme} theme - theme instance\n * @param {boolean} timezonesCollapsed - multiple timezones are collapsed.\n * @returns {object} styles - styles object\n */\nTimeGrid.prototype._getStyles = function(theme, timezonesCollapsed) {\n    var styles = {};\n    var timezonesLength = this.options.timezones.length;\n    var collapsed = timezonesCollapsed;\n    var numberAndUnit;\n\n    if (theme) {\n        styles.borderBottom = theme.week.timegridHorizontalLine.borderBottom || theme.common.border;\n        styles.halfHourBorderBottom = theme.week.timegridHalfHour.borderBottom || theme.common.border;\n\n        styles.todayBackgroundColor = theme.week.today.backgroundColor;\n        styles.weekendBackgroundColor = theme.week.weekend.backgroundColor;\n        styles.backgroundColor = theme.week.daygrid.backgroundColor;\n        styles.leftWidth = theme.week.timegridLeft.width;\n        styles.leftBackgroundColor = theme.week.timegridLeft.backgroundColor;\n        styles.leftBorderRight = theme.week.timegridLeft.borderRight || theme.common.border;\n        styles.leftFontSize = theme.week.timegridLeft.fontSize;\n        styles.timezoneWidth = theme.week.timegridLeft.width;\n        styles.additionalTimezoneBackgroundColor = theme.week.timegridLeftAdditionalTimezone.backgroundColor\n                                                || styles.leftBackgroundColor;\n\n        styles.displayTimezoneLabelHeight = theme.week.timegridLeftTimezoneLabel.height;\n        styles.displayTimezoneLabelBackgroundColor = theme.week.timegridLeft.backgroundColor === 'inherit' ? 'white' : theme.week.timegridLeft.backgroundColor;\n\n        styles.oneHourHeight = theme.week.timegridOneHour.height;\n        styles.halfHourHeight = theme.week.timegridHalfHour.height;\n        styles.quaterHourHeight = (parseInt(styles.halfHourHeight, 10) / 2) + 'px';\n\n        styles.currentTimeColor = theme.week.currentTime.color;\n        styles.currentTimeFontSize = theme.week.currentTime.fontSize;\n        styles.currentTimeFontWeight = theme.week.currentTime.fontWeight;\n\n        styles.pastTimeColor = theme.week.pastTime.color;\n        styles.pastTimeFontWeight = theme.week.pastTime.fontWeight;\n\n        styles.futureTimeColor = theme.week.futureTime.color;\n        styles.futureTimeFontWeight = theme.week.futureTime.fontWeight;\n\n        styles.currentTimeLeftBorderTop = theme.week.currentTimeLinePast.border;\n        styles.currentTimeBulletBackgroundColor = theme.week.currentTimeLineBullet.backgroundColor;\n        styles.currentTimeTodayBorderTop = theme.week.currentTimeLineToday.border;\n        styles.currentTimeRightBorderTop = theme.week.currentTimeLineFuture.border;\n\n        if (!collapsed && timezonesLength > 1) {\n            numberAndUnit = common.parseUnit(styles.leftWidth);\n            styles.leftWidth = (numberAndUnit[0] * timezonesLength) + numberAndUnit[1];\n        }\n    }\n\n    return styles;\n};\n\n/**\n * @param {MouseEvent} event - mouse event object\n */\nTimeGrid.prototype._onClickStickyContainer = function(event) {\n    var target = domevent.getEventTarget(event);\n    var closeBtn = domutil.closest(target, config.classname('.timegrid-timezone-close-btn'));\n\n    if (!closeBtn) {\n        return;\n    }\n\n    this.fire('clickTimezonesCollapsedBtn');\n};\n\nmodule.exports = TimeGrid;\n","/**\n * @fileoverview View of days UI.\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\nvar util = require('tui-code-snippet');\nvar config = require('../../config');\nvar domutil = require('../../common/domutil');\nvar datetime = require('../../common/datetime');\nvar TZDate = require('../../common/timezone').Date;\nvar View = require('../view');\n\n/**\n * @constructor\n * @param {Base.Week} controller The controller mixin part.\n * @param {object} options View options\n * @param {string} [options.renderStartDate] Start date of render.\n *  if not supplied then use -3d from today. YYYY-MM-DD format.\n * @param {string} [options.renderEndDate] End date of render.\n *  if not supplied then use +3d from today. YYYY-MM-DD format.\n * @param {string} [options.cssPrefix] - CSS classname prefix\n * @param {HTMLElement} container The element to use container for this view.\n * @param {object} panels - schedule panels like 'milestone', 'task', 'allday', 'time'\n * @param {string} viewName - 'week', 'day'\n * @extends {View}\n */\nfunction Week(controller, options, container, panels, viewName) {\n    var range;\n\n    container = domutil.appendHTMLElement('div', container);\n\n    View.call(this, container);\n\n    domutil.addClass(container, config.classname('week-container'));\n\n    range = this._getRenderDateRange(new TZDate());\n\n    /**\n     * @type {object} Options for view.\n     */\n    this.options = util.extend({\n        scheduleFilter: [function(schedule) {\n            return Boolean(schedule.isVisible);\n        }],\n        renderStartDate: datetime.format(range.start, 'YYYY-MM-DD'),\n        renderEndDate: datetime.format(range.end, 'YYYY-MM-DD'),\n        narrowWeekend: false,\n        startDayOfWeek: 0,\n        workweek: false,\n        showTimezoneCollapseButton: false,\n        timezonesCollapsed: false,\n        hourStart: 0,\n        hourEnd: 24\n    }, options);\n\n    /**\n     * Week controller mixin.\n     * @type {Base.Week}\n     */\n    this.controller = controller;\n\n    /**\n     * Schedule Panels\n     * @type {Array.<object>}\n     */\n    this.panels = panels;\n\n    /**\n     * Week view states\n     * @type {object}\n     */\n    this.state = {\n        timezonesCollapsed: this.options.timezonesCollapsed\n    };\n\n    if (viewName === 'day') {\n        _disableDayOptions(this.options);\n    }\n}\n\nutil.inherit(Week, View);\n\n/**********\n * Override props\n **********/\n\n/**\n * Render each child view with schedules in ranges.\n * @fires Week#afterRender\n * @override\n */\nWeek.prototype.render = function() {\n    var self = this,\n        options = this.options,\n        scheduleFilter = options.scheduleFilter,\n        narrowWeekend = options.narrowWeekend,\n        startDayOfWeek = options.startDayOfWeek,\n        workweek = options.workweek,\n        theme = this.controller.theme || {},\n        state = this.state;\n    var renderStartDate, renderEndDate, schedulesInDateRange, viewModel, grids, range;\n\n    renderStartDate = new TZDate(options.renderStartDate);\n    renderEndDate = new TZDate(options.renderEndDate);\n\n    range = datetime.range(\n        datetime.start(renderStartDate),\n        datetime.end(renderEndDate),\n        datetime.MILLISECONDS_PER_DAY\n    );\n\n    if (options.workweek && datetime.compare(renderStartDate, renderEndDate)) {\n        range = util.filter(range, function(date) {\n            return !datetime.isWeekend(date.getDay());\n        });\n\n        renderStartDate = range[0];\n        renderEndDate = range[range.length - 1];\n    }\n\n    schedulesInDateRange = this.controller.findByDateRange(\n        datetime.start(renderStartDate),\n        datetime.end(renderEndDate),\n        this.panels,\n        scheduleFilter,\n        this.options\n    );\n\n    grids = datetime.getGridLeftAndWidth(\n        range.length,\n        narrowWeekend,\n        startDayOfWeek,\n        workweek\n    );\n\n    viewModel = {\n        schedulesInDateRange: schedulesInDateRange,\n        renderStartDate: renderStartDate,\n        renderEndDate: renderEndDate,\n        grids: grids,\n        range: range,\n        theme: theme,\n        state: state\n    };\n\n    this.children.each(function(childView) {\n        var matrices;\n        var viewName = util.pick(childView.options, 'viewName');\n        childView.render(viewModel);\n\n        if (viewName) {\n            matrices = viewModel.schedulesInDateRange[viewName]; // DayGrid limits schedule count by visibleScheduleCount after rendering it.\n\n            if (util.isArray(matrices)) {\n                self._invokeAfterRenderSchedule(matrices);\n            } else {\n                util.forEach(matrices, function(matricesOfDay) {\n                    self._invokeAfterRenderSchedule(matricesOfDay);\n                });\n            }\n        }\n    });\n\n    /**\n     * @event Week#afterRender\n     */\n    this.fire('afterRender');\n};\n\n/**\n * Fire 'afterRenderSchedule' event\n * @param {Array} matrices - schedule matrices from view model\n * @fires Week#afterRenderSchedule\n */\nWeek.prototype._invokeAfterRenderSchedule = function(matrices) {\n    var self = this;\n    util.forEachArray(matrices, function(matrix) {\n        util.forEachArray(matrix, function(column) {\n            util.forEachArray(column, function(scheduleViewModel) {\n                if (scheduleViewModel) {\n                    /**\n                     * @event Week#afterRenderSchedule\n                     */\n                    self.fire('afterRenderSchedule', {schedule: scheduleViewModel.model});\n                }\n            });\n        });\n    });\n};\n\n/**********\n * Prototype props\n **********/\n\nWeek.prototype.viewName = 'week';\n\n/**\n * Calculate default render date range from supplied date.\n * @param {Date} baseDate base date.\n * @returns {object} date range.\n */\nWeek.prototype._getRenderDateRange = function(baseDate) {\n    var base = datetime.start(baseDate),\n        start = new TZDate(Number(base)),\n        end = new TZDate(Number(base));\n\n    start.setDate(start.getDate() - 3);\n    end.setDate(end.getDate() + 3);\n\n    return {\n        start: start,\n        end: end\n    };\n};\n\n/**\n * disable options for day view\n * @param {WeekOptions} options - week options to disable\n */\nfunction _disableDayOptions(options) {\n    options.workweek = false;\n}\n\nutil.CustomEvents.mixin(Week);\n\nmodule.exports = Week;\n","/**\n * @fileoverview Weekday view\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\nvar util = require('tui-code-snippet');\nvar config = require('../config'),\n    domutil = require('../common/domutil'),\n    datetime = require('../common/datetime'),\n    TZDate = require('../common/timezone').Date,\n    View = require('./view');\n\n/**\n * @constructor\n * @extends {View}\n * @param {object} options - view options.\n * @param {number} [options.containerButtonGutter=8] - free space at bottom to\n *  make create easy.\n * @param {number} [options.scheduleHeight=18] - height of each schedule block.\n * @param {number} [options.scheduleGutter=2] - gutter height of each schedule block.\n * @param {HTMLDIVElement} container - DOM element to use container for this\n *  view.\n */\nfunction Weekday(options, container) {\n    container = domutil.appendHTMLElement(\n        'div',\n        container,\n        config.classname('weekday')\n    );\n\n    /**\n     * @type {object}\n     */\n    this.options = util.extend({\n        containerBottomGutter: 8,\n        scheduleHeight: 18,\n        scheduleGutter: 2,\n        narrowWeekend: false,\n        startDayOfWeek: 0,\n        workweek: false\n    }, options);\n\n    /*\n     * cache parent's view model\n     * @type {object}\n     */\n    this._cacheParentViewModel = null;\n\n    View.call(this, container);\n}\n\nutil.inherit(Weekday, View);\n\n/**\n * Get render date range\n * @returns {Date[]} rendered date range\n */\nWeekday.prototype.getRenderDateRange = function() {\n    return this._cacheParentViewModel.range;\n};\n\n/**\n * Get render date grids information\n * @returns {Date[]} rendered date grids information\n */\nWeekday.prototype.getRenderDateGrids = function() {\n    return this._cacheParentViewModel.grids;\n};\n\n/**\n * Get default view model.\n * @param {object} viewModel parent's view model\n * @returns {object} viewModel to rendering.\n */\nWeekday.prototype.getBaseViewModel = function(viewModel) {\n    var opt = this.options;\n    var range = viewModel.range;\n    var gridWidth = (100 / range.length);\n    var grids = viewModel.grids;\n    var exceedDate = viewModel.exceedDate || {};\n    var theme = viewModel.theme;\n    var now = new TZDate().toLocalTime();\n\n    this._cacheParentViewModel = viewModel;\n\n    return {\n        width: gridWidth,\n        scheduleHeight: opt.scheduleHeight,\n        scheduleBlockHeight: (opt.scheduleHeight + opt.scheduleGutter),\n        scheduleBlockGutter: opt.scheduleGutter,\n        dates: util.map(range, function(date, index) {\n            var day = date.getDay();\n            var ymd = datetime.format(new TZDate(date), 'YYYYMMDD');\n            var isToday = datetime.isSameDate(now, date);\n\n            return {\n                date: datetime.format(date, 'YYYY-MM-DD'),\n                month: date.getMonth() + 1,\n                day: day,\n                isToday: isToday,\n                ymd: ymd,\n                hiddenSchedules: exceedDate[ymd] || 0,\n                width: grids[index] ? grids[index].width : 0,\n                left: grids[index] ? grids[index].left : 0,\n                color: this._getDayNameColor(theme, day, isToday),\n                backgroundColor: this._getDayBackgroundColor(theme, day)\n            };\n        }, this)\n    };\n};\n\n/* eslint max-nested-callbacks: 0 */\n/**\n * Make exceed date information\n * @param {number} maxCount - exceed schedule count\n * @param {Array} eventsInDateRange  - matrix of ScheduleViewModel\n * @param {Array.<TZDate>} range - date range of one week\n * @returns {object} exceedDate\n */\nWeekday.prototype.getExceedDate = function(maxCount, eventsInDateRange, range) {\n    var exceedDate = this._initExceedDate(range);\n\n    util.forEach(eventsInDateRange, function(matrix) {\n        util.forEach(matrix, function(column) {\n            util.forEach(column, function(viewModel) {\n                var period;\n                if (!viewModel || viewModel.top < maxCount) {\n                    return;\n                }\n\n                // check that this schedule block is not visible after rendered.\n                viewModel.hidden = true;\n\n                period = datetime.range(\n                    viewModel.getStarts(),\n                    viewModel.getEnds(),\n                    datetime.MILLISECONDS_PER_DAY\n                );\n\n                util.forEach(period, function(date) {\n                    var ymd = datetime.format(date, 'YYYYMMDD');\n                    exceedDate[ymd] += 1;\n                });\n            });\n        });\n    });\n\n    return exceedDate;\n};\n\n/**\n * Initiate exceed date information\n * @param {Array.<TZDate>} range - date range of one week\n * @returns {Object} - initiated exceed date\n */\nWeekday.prototype._initExceedDate = function(range) {\n    var exceedDate = {};\n\n    util.forEach(range, function(date) {\n        var ymd = datetime.format(date, 'YYYYMMDD');\n        exceedDate[ymd] = 0;\n    });\n\n    return exceedDate;\n};\n\n/**\n * Get a day name color\n * @param {Theme} theme - theme instance\n * @param {number} day - day number\n * @param {boolean} isToday - today flag\n * @param {boolean} isOtherMonth - not this month flag\n * @returns {string} style - color style\n */\nWeekday.prototype._getDayNameColor = function(theme, day, isToday, isOtherMonth) {\n    var color = '';\n\n    if (theme) {\n        if (day === 0) {\n            color = isOtherMonth ? theme.month.holidayExceptThisMonth.color : theme.common.holiday.color;\n        } else if (day === 6) {\n            color = isOtherMonth ? theme.month.dayExceptThisMonth.color : theme.common.saturday.color;\n        } else if (isToday) {\n            color = theme.common.today.color;\n        } else {\n            color = isOtherMonth ? theme.month.dayExceptThisMonth.color : theme.common.dayname.color;\n        }\n    }\n\n    return color;\n};\n\n/**\n * Get a day background color\n * @param {Theme} theme - theme instance\n * @param {number} day - day number\n * @returns {string} style - color style\n */\nWeekday.prototype._getDayBackgroundColor = function(theme, day) {\n    var color = '';\n\n    if (theme) {\n        if (day === 0 || day === 6) {\n            color = theme.month.weekend.backgroundColor;\n        } else {\n            color = 'inherit';\n        }\n    }\n\n    return color;\n};\n\nmodule.exports = Weekday;\n","module.exports = __WEBPACK_EXTERNAL_MODULE_tui_code_snippet__;","module.exports = __WEBPACK_EXTERNAL_MODULE_tui_date_picker__;"],"sourceRoot":""}
\ No newline at end of file
diff --git a/admin/js/vendors/tui.calendar/tui-calendar.min.css b/admin/js/vendors/tui.calendar/tui-calendar.min.css
new file mode 100644 (file)
index 0000000..792b318
--- /dev/null
@@ -0,0 +1,7 @@
+/*!
+ * TOAST UI Calendar
+ * @version 1.12.14 | Tue Sep 22 2020
+ * @author NHN FE Development Lab <dl_javascript@nhn.com>
+ * @license MIT
+ */.tui-full-calendar-layout{height:100%;position:relative;box-sizing:border-box}.tui-full-calendar-layout *{box-sizing:border-box}.tui-full-calendar-dragging{cursor:move}.tui-full-calendar-resizing{cursor:row-resize}.tui-full-calendar-resizing-x{cursor:col-resize}.tui-full-calendar-hidden{display:none!important}.tui-full-calendar-invisible span{visibility:hidden}.tui-full-calendar-clear:after{content:"";display:block;clear:both}.tui-full-calendar-scroll-y{overflow-y:scroll}.tui-full-calendar-dot{display:inline-block;position:relative;top:-1px;content:"";width:7px;height:7px;border-radius:50%}.tui-full-calendar-holiday{color:red}.tui-full-calendar-today{background:rgba(218,229,249,.3)}.handle-x{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAECAMAAACEE47CAAAACVBMVEX///////////+OSuX+AAAAA3RSTlMrQJG5H4EIAAAAEUlEQVR4AWNgYoRABhjEFAEAArQAIcHQcPsAAAAASUVORK5CYII=)}.handle-x,.handle-y{background-position:50%;background-repeat:no-repeat}.handle-y{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAICAMAAADp7a43AAAACVBMVEX///////////+OSuX+AAAAA3RSTlMrQJG5H4EIAAAAEUlEQVR4AWNgYmRiZABB/CwAAtgAIUTUNkMAAAAASUVORK5CYII=)}@media only screen and (-moz-min-device-pixel-ratio:1.5),only screen and (-o-min-device-pixel-ratio:3/2),only screen and (-webkit-min-device-pixel-ratio:1.5),only screen and (min-devicepixel-ratio:1.5),only screen and (min-resolution:1.5dppx){.handle-x{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAICAMAAADHqI+lAAAACVBMVEX///////////+OSuX+AAAAA3RSTlMZK5EY+QKaAAAAGUlEQVR4AWNgYmJAwegCIMDIiIwxBKhhBgAcSABh8gN42gAAAABJRU5ErkJggg==);background-size:8px 4px}.handle-y{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAQCAMAAAAcVM5PAAAACVBMVEX///////////+OSuX+AAAAA3RSTlMEK5EMBzK5AAAAGElEQVR4AWNgYmIAYxgDBBgZQRjOoKcaABzQAGGjsIM/AAAAAElFTkSuQmCC);background-size:4px 8px}}.tui-full-calendar-month-week-item .tui-full-calendar-weekday-grid{overflow-y:hidden}.tui-full-calendar-month-week-item .tui-full-calendar-weekday-schedules{overflow-y:visible;height:0}.tui-full-calendar-month-week-item .tui-full-calendar-weekday-schedule{margin:0 10px}.tui-full-calendar-month-week-item .tui-full-calendar-today{background:none}.tui-full-calendar-month-week-item .tui-full-calendar-today .tui-full-calendar-weekday-grid-date-decorator{display:inline-block;width:27px;height:27px;line-height:27px;text-align:center;background:#135de6;border-radius:50%;color:#fff;font-weight:700;margin-left:2px}.tui-full-calendar-weekday-container,.tui-full-calendar-weekday-grid,.tui-full-calendar-weekday-grid-line{height:100%;min-height:inherit}.tui-full-calendar-weekday-grid{position:absolute;width:100%;overflow-y:scroll}.tui-full-calendar-weekday-border{border-top:1px solid #ddd}.tui-full-calendar-weekday-container{position:relative}.tui-full-calendar-weekday-container>div{height:100%}.tui-full-calendar-weekday-grid-line{position:absolute;padding:3px}.tui-full-calendar-weekday-grid-line .tui-full-calendar-weekday-grid-footer{position:absolute;bottom:4px}.tui-full-calendar-weekday-grid-line .tui-full-calendar-weekday-grid-date{display:inline-block;width:27px;height:27px;line-height:27px;text-align:center}.tui-full-calendar-weekday-grid-line .tui-full-calendar-weekday-grid-date-title{line-height:27px;margin-right:5px}.tui-full-calendar-weekday-grid-line .tui-full-calendar-weekday-grid-more-schedules{float:right;display:inline-block;height:27px;line-height:27px;padding:0 5px;text-align:center;font-size:11px;font-weight:700;color:#aaa}.tui-full-calendar-weekday-creation,.tui-full-calendar-weekday-schedules{top:0;left:0;width:100%;height:100%;position:absolute;overflow-y:scroll}.tui-full-calendar-weekday-schedules{font-size:12px}.tui-full-calendar-weekday-schedules-height-span{width:1px;margin-left:-1px}.tui-full-calendar-weekday-schedule-block{position:absolute}.tui-full-calendar-weekday-schedule-block-dragging-dim{opacity:.3}.tui-full-calendar-weekday-schedule{position:relative;margin:0 10px 0 1px;cursor:pointer;border-left-style:solid;border-left-width:3px}.tui-full-calendar-weekday-schedule.tui-full-calendar-weekday-schedule-time{border-left-width:0}.tui-full-calendar-weekday-schedule.tui-full-calendar-weekday-schedule-time .tui-full-calendar-weekday-schedule-title{padding-left:9px}.tui-full-calendar-weekday-schedule-bullet{position:absolute;padding:0;width:6px;height:6px;top:6px;left:0;border-radius:50%}.tui-full-calendar-weekday-schedule-bullet-focused{left:10px;background:#fff}.tui-full-calendar-weekday-schedule-title{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding-left:3px;font-weight:700}.tui-full-calendar-weekday-schedule-title-focused{padding-left:16px}.tui-full-calendar-weekday-schedule-cover{position:absolute;top:0;width:100%;height:100%;background-color:rgba(0,0,0,.2);box-shadow:0 2px 6px 0 rgba(0,0,0,.1)}.tui-full-calendar-weekday-exceed-left .tui-full-calendar-weekday-schedule{margin-left:0;border-left-width:0}.tui-full-calendar-weekday-exceed-right .tui-full-calendar-weekday-schedule{margin-right:0}.tui-full-calendar-weekday-exceed-right .tui-full-calendar-weekday-resize-handle{display:none}.tui-full-calendar-weekday-exceed-in-month{cursor:pointer}.tui-full-calendar-weekday-exceed-in-month:hover{background-color:#f0f1f5}.tui-full-calendar-weekday-collapse-btn,.tui-full-calendar-weekday-exceed-in-week{position:absolute;bottom:5px;margin-right:5px;font-size:12px;line-height:14px;cursor:pointer;padding:1px 5px;background-color:#fff;border:1px solid #ddd;color:#000}.tui-full-calendar-weekday-resize-handle{position:absolute;top:0;right:0;width:6px;background-position:3px;cursor:col-resize;line-height:18px}.tui-full-calendar-weekday-filled{background-color:#e8e8e8!important}.tui-full-calendar-left{height:100%;float:left;box-sizing:border-box;display:table}.tui-full-calendar-left-content{display:table-cell;vertical-align:middle;text-align:right;font-size:11px}.tui-full-calendar-right{height:100%;overflow-y:scroll;position:relative}.tui-full-calendar-week-container{width:100%;height:inherit;display:inline-block;font-size:10px;min-height:600px}.tui-full-calendar-week-container .tui-full-calendar-today{background:none}.tui-full-calendar-dayname{position:absolute;margin-left:-1px;height:100%;overflow:hidden}.tui-full-calendar-dayname.tui-full-calendar-today{font-weight:700}.tui-full-calendar-dayname-container{overflow-y:scroll}.tui-full-calendar-dayname-leftmargin{position:relative;height:100%}.tui-full-calendar-dayname-date{font-size:26px}.tui-full-calendar-dayname-name{font-weight:700;font-size:12px}.tui-full-calendar-daygrid-layout{height:100%}.tui-full-calendar-daygrid-layout .tui-full-calendar-right{overflow-y:hidden}.tui-full-calendar-daygrid-guide-creation-block{position:absolute;top:0;bottom:0;z-index:1}.tui-full-calendar-timegrid-container{height:100%;position:relative;overflow:hidden;overflow-y:scroll}.tui-full-calendar-timegrid-container-split{height:100%;position:relative;overflow:hidden}.tui-full-calendar-timegrid-left{position:absolute}.tui-full-calendar-timegrid-hour{position:relative;color:#555;box-sizing:border-box}.tui-full-calendar-timegrid-hour:first-child span{display:none}.tui-full-calendar-timegrid-hour:last-child{border-bottom:none}.tui-full-calendar-timegrid-hour span{position:absolute;top:-11px;left:0;right:5px;text-align:right;line-height:25px}.tui-full-calendar-timegrid-right{position:relative}.tui-full-calendar-timegrid-gridline{border-bottom:1px solid #eee;box-sizing:border-box}.tui-full-calendar-timegrid-gridline:last-child{border-bottom:none}.tui-full-calendar-timegrid-schedules{position:absolute;width:100%;height:100%;top:0;left:0;cursor:pointer}.tui-full-calendar-timegrid-hourmarker{position:absolute;width:100%;display:table}.tui-full-calendar-timegrid-hourmarker-line-left{position:absolute;min-height:1px;left:0}.tui-full-calendar-timegrid-hourmarker-line-today{position:absolute;min-height:1px}.tui-full-calendar-timegrid-hourmarker-line-right{position:absolute;min-height:1px;right:0}.tui-full-calendar-timegrid-hourmarker-time{padding-right:5px;line-height:12px;text-align:right;display:table-cell;vertical-align:bottom}.tui-full-calendar-timegrid-todaymarker{position:absolute;text-indent:-9999px;width:9px;height:9px;background-color:#135de6;margin:-4px 0 0 -5px;border-radius:50%}.tui-full-calendar-timegrid-sticky-container{position:absolute;top:0}.tui-full-calendar-timegrid-timezone-label-container{position:absolute}.tui-full-calendar-timegrid-timezone-label-cell{display:table}.tui-full-calendar-timegrid-timezone-label{display:table-cell;vertical-align:middle;padding-right:5px;text-align:right}.tui-full-calendar-timegrid-timezone-close-btn{cursor:pointer;position:absolute;text-align:center;background-color:#fff}.tui-full-calendar-timegrid-timezone-close-btn .tui-full-calendar-icon{width:5px;height:10px}.tui-full-calendar-time-date{position:absolute;height:100%;margin-left:-1px;box-sizing:content-box}.tui-full-calendar-time-date:last-child{border-right:none;margin:0}.tui-full-calendar-time-date:last-child .tui-full-calendar-time-guide-creation,.tui-full-calendar-time-date:last-child .tui-full-calendar-time-schedule{left:0}.tui-full-calendar-time-date-schedule-block-wrap{position:relative;height:100%}.tui-full-calendar-time-date-schedule-block{position:absolute;right:0}.tui-full-calendar-time-date-schedule-block-pending{opacity:.7}.tui-full-calendar-time-date-schedule-block-dragging-dim{opacity:.3}.tui-full-calendar-time-date-schedule-block-focused{box-shadow:0 0 8px 0 rgba(0,0,0,.2)}.tui-full-calendar-time-date-schedule-block-cover{position:absolute;top:0;width:100%;height:100%;background-color:rgba(0,0,0,.2);box-shadow:0 2px 6px 0 rgba(0,0,0,.1)}.tui-full-calendar-time-schedule{position:relative;left:1px;height:100%;overflow:hidden;font-size:12px;font-weight:700}.tui-full-calendar-time-schedule-content{overflow:hidden;border-left-width:3px;border-left-style:solid;padding:1px 0 0 3px}.tui-full-calendar-time-schedule-content-travel-time{font-weight:400;font-size:11px}.tui-full-calendar-time-resize-handle{position:absolute;right:0;bottom:0;left:0;height:5px;text-align:center;color:#fff;cursor:row-resize;background-position:top}.tui-full-calendar-time-guide-creation{position:absolute;right:10px;left:1px;padding:3px}.tui-full-calendar-time-guide-move .tui-full-calendar-time-resize-handle,.tui-full-calendar-time-guide-move .tui-full-calendar-time-schedule,.tui-full-calendar-time-guide-resize .tui-full-calendar-time-resize-handle,.tui-full-calendar-time-guide-resize .tui-full-calendar-time-schedule{opacity:.8;z-index:97}.tui-full-calendar-time-guide-creation-label{cursor:default}.tui-full-calendar-time-guide-bottom{position:absolute;bottom:3px}.tui-full-calendar-month{height:100%;min-height:600px}.tui-full-calendar-month-dayname{width:100%;position:absolute;font-size:13px}.tui-full-calendar-month-dayname-item{height:100%;font-weight:700}.tui-full-calendar-month-week-item{position:relative}.tui-full-calendar-month-week-item>div{height:100%}.tui-full-calendar-month-more{height:inherit;min-width:280px;min-height:150px}.tui-full-calendar-month-more-title{position:relative}.tui-full-calendar-month-more-title-day{font-size:23px;color:#333}.tui-full-calendar-month-more-title-day-label{font-size:12px;color:#333}.tui-full-calendar-month-more-close{position:absolute;right:0;outline:0;background:none;border:0;font-size:14px;line-height:28px;padding:0 7px;cursor:pointer}.tui-full-calendar-month-more-list{overflow-y:auto}.tui-full-calendar-month-more-schedule{cursor:pointer;display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font-size:12px}.tui-full-calendar-month-guide-block{position:absolute}.tui-full-calendar-month-weekday-schedule{margin-top:2px}.tui-full-calendar-month-creation-guide{top:0;bottom:-1px;left:-1px;right:0;position:absolute;z-index:20}.tui-full-calendar-month-guide-focused{box-shadow:0 0 8px 0 rgba(0,0,0,.2)}.tui-full-calendar-month-guide{position:relative;padding-left:3px;line-height:18px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.tui-full-calendar-month-guide-cover{width:100%;position:absolute;top:-50%;left:-50%;background-color:rgba(0,0,0,.2);box-shadow:0 2px 6px 0 rgba(0,0,0,.1)}.tui-full-calendar-month-exceed-left .tui-full-calendar-month-guide{margin-left:0}.tui-full-calendar-month-exceed-right .tui-full-calendar-month-guide{margin-right:0}.tui-full-calendar-month-exceed-right .tui-full-calendar-month-guide-handle{display:none}.tui-full-calendar-month-guide-handle{position:absolute;top:0;right:3px;width:6px;background-position:3px;cursor:col-resize}.tui-full-calendar-vlayout-container{position:relative}.tui-full-calendar-splitter{clear:left;cursor:row-resize}.tui-full-calendar-splitter:hover{border-color:#999}.tui-full-calendar-splitter-focused{background-color:#ddd;border:none}.tui-full-calendar-splitter-guide{position:absolute;width:100%;height:3px;border:none;background-color:#e8e8e8}.tui-full-calendar-popup{position:absolute;font-weight:2.5;box-shadow:0 2px 6px 0 rgba(0,0,0,.1);clear:both}.tui-full-calendar-popup-container{min-width:474px;box-shadow:0 2px 6px 0 rgba(0,0,0,.1);background-color:#fff;border:1px solid #d5d5d5;padding:17px;border-radius:2px}.tui-full-calendar-popup-section{font-size:0;min-height:40px}.tui-full-calendar-section-calendar{width:176px}.tui-full-calendar-section-calendar.tui-full-calendar-hide{height:21px;visibility:hidden}.tui-full-calendar-section-title{width:calc(100% - 36px);padding-right:4px}.tui-full-calendar-section-title input{width:365px}.tui-full-calendar-button.tui-full-calendar-section-private{height:32px;padding:8px;font-size:0;margin-left:4px}.tui-full-calendar-section-private.tui-full-calendar-public .tui-full-calendar-ic-private{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAAAXNSR0IArs4c6QAAAKdJREFUKBVjYCATMKLri46Olvn9+3fX////HUByjIyMB1hZWcuWLl36BFktikaQpl+/fl0EKhBCVgRkv2NjY9NH1syErABkE1TTdqBCWRAG8reDxKBycOUoGmHOA2pIA5kOwiA2SDVMDq4TmREaGvofhJHFcLHhfgwLC9sKNNULl0KQODCgtq1atcobxIY7lZAmkGJkNXCNIAlSwIjSCApqIgJnK0wNALoOPwSpOcq0AAAAAElFTkSuQmCC) no-repeat}.tui-full-calendar-section-end-date,.tui-full-calendar-section-start-date{width:176px}.tui-full-calendar-section-end-date input,.tui-full-calendar-section-start-date input{width:139px}.tui-full-calendar-section-end-date:focus .tui-datepicker,.tui-full-calendar-section-end-date:focus .tui-full-calendar-popup-section-item,.tui-full-calendar-section-end-date:hover .tui-datepicker,.tui-full-calendar-section-end-date:hover .tui-full-calendar-popup-section-item,.tui-full-calendar-section-start-date:focus .tui-datepicker,.tui-full-calendar-section-start-date:focus .tui-full-calendar-popup-section-item,.tui-full-calendar-section-start-date:hover .tui-datepicker,.tui-full-calendar-section-start-date:hover .tui-full-calendar-popup-section-item{border-color:#bbb}.tui-full-calendar-section-date-dash{font-size:12px;color:#d5d5d5;height:32px;padding:0 4px;vertical-align:middle}.tui-full-calendar-popup-section-item.tui-full-calendar-section-allday{border:none;padding:0 0 0 8px;cursor:pointer}.tui-full-calendar-popup-section-item.tui-full-calendar-section-location{display:block}.tui-full-calendar-popup-section-item.tui-full-calendar-section-location input{width:400px}.tui-full-calendar-section-allday .tui-full-calendar-icon.tui-full-calendar-ic-checkbox{margin:0}.tui-full-calendar-popup-section-item.tui-full-calendar-section-allday .tui-full-calendar-content{padding-left:4px}.tui-full-calendar-section-state{width:109px}.tui-full-calendar-section-state .tui-full-calendar-content{width:58px;text-overflow:ellipsis;overflow:hidden}.tui-full-calendar-popup-section-item{height:32px;padding:0 9px 0 12px;border:1px solid #d5d5d5;display:inline-block;font-size:0;border-radius:2px}.tui-full-calendar-popup-section-item:focus,.tui-full-calendar-popup-section-item:hover{border-color:#bbb}.tui-full-calendar-popup-section-item .tui-full-calendar-icon{position:relative}.tui-full-calendar-popup-section-item .tui-full-calendar-content{text-align:left;display:inline-block;font-size:12px;vertical-align:middle;position:relative;padding-left:8px}.tui-full-calendar-section-calendar .tui-full-calendar-dropdown-button .tui-full-calendar-content{width:125px;text-overflow:ellipsis;overflow:hidden;top:-1px}.tui-full-calendar-popup-section-item input{border:none;height:30px;outline:none;display:inline-block}.tui-full-calendar-popup-section-item input::placeholder{color:#bbb;font-weight:300}.tui-full-calendar-dropdown{position:relative}.tui-full-calendar-dropdown:hover .tui-full-calendar-dropdown-button{border:1px solid #bbb}.tui-full-calendar-dropdown-button.tui-full-calendar-popup-section-item{height:32px;font-size:0;top:-1px}.tui-full-calendar-dropdown-arrow{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAAAXNSR0IArs4c6QAAAHlJREFUKBVjYBgFOEOAEVkmPDxc89+/f6eAYjzI4kD2FyYmJrOVK1deh4kzwRggGiQBVJCELAZig8SQNYHEmEEEMrh69eo1HR0dfqCYJUickZGxf9WqVf3IakBsFBthklpaWmVA9mEQhrJhUoTp0NBQCRAmrHL4qgAAuu4cWZOZIGsAAAAASUVORK5CYII=) no-repeat}.dropdown.open .tui-full-calendar-dropdown-arrow,.tui-full-calendar-open .tui-full-calendar-dropdown-arrow{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAAAXNSR0IArs4c6QAAAIFJREFUKBVjYBj+gBmXF2NiYiTV1dV5rl279gWbGiZsgg0NDSw/f/5cCZRbBWJjU4PVRjExsR6g4nAgln/z5g3v1atXd6JrxtAYHh4e+v///z4khZa6urrXgJqvIYkxMCJzgJo0//37dwooxoMsDmR/YWJiMlu5cuV1NPFRLrYQAADMVCaUtbG7XwAAAABJRU5ErkJggg==) no-repeat}.tui-full-calendar-dropdown-menu{position:absolute;top:31px;padding:4px 0;background-color:#fff;border:1px solid #d5d5d5;border-top:none;border-radius:0 0 2px 2px;width:100%;display:none}.tui-full-calendar-dropdown:hover .tui-full-calendar-dropdown-menu{border:1px solid #bbb;border-top:none}.tui-full-calendar-open .tui-full-calendar-dropdown-menu{display:block}.tui-full-calendar-dropdown-menu-item{height:30px;border:none;cursor:pointer}.tui-full-calendar-section-calendar .tui-full-calendar-dropdown-menu-item,.tui-full-calendar-section-state .tui-full-calendar-dropdown-menu-item{width:100%}.tui-full-calendar-dropdown-menu-item:hover{background-color:rgba(81,92,230,.05)}.tui-full-calendar-dropdown-menu-item .tui-full-calendar-content{line-height:30px}.tui-full-calendar-button.tui-full-calendar-popup-close{position:absolute;top:10px;right:10px;background-color:#fff;padding:2px;border:none}.tui-full-calendar-section-button-save{height:36px}.tui-full-calendar-popup-save{float:right}.tui-full-calendar-popup-arrow-border,.tui-full-calendar-popup-arrow-fill{position:absolute}.tui-full-calendar-arrow-top .tui-full-calendar-popup-arrow-border{border:8px solid transparent;border-top:none;border-bottom:8px solid #d5d5d5;left:calc(50% - 8px);top:-7px}.tui-full-calendar-arrow-right .tui-full-calendar-popup-arrow-border{border:8px solid transparent;border-right:none;border-left:8px solid #d5d5d5;top:calc(50% - 8px);right:-7px}.tui-full-calendar-arrow-bottom .tui-full-calendar-popup-arrow-border{border:8px solid transparent;border-top-color:#d5d5d5;border-bottom:none;left:calc(50% - 8px);bottom:-7px}.tui-full-calendar-arrow-left .tui-full-calendar-popup-arrow-border{border:8px solid transparent;border-right-color:#d5d5d5;border-left:none;top:calc(50% - 8px);left:-7px}.tui-full-calendar-arrow-top .tui-full-calendar-popup-arrow-fill{border:7px solid transparent;border-top:none;border-bottom:7px solid #fff;left:-7px;top:1px}.tui-full-calendar-arrow-right .tui-full-calendar-popup-arrow-fill{border:7px solid transparent;border-right:none;border-left:7px solid #fff;top:-7px;right:1px}.tui-full-calendar-arrow-bottom .tui-full-calendar-popup-arrow-fill{border:7px solid transparent;border-top-color:#fff;border-bottom:none;left:-7px;bottom:1px}.tui-full-calendar-arrow-left .tui-full-calendar-popup-arrow-fill{border:7px solid transparent;border-right-color:#fff;border-left:none;top:-7px;left:1px}.tui-full-calendar-button{background:#fff;border:1px solid #d5d5d5;border-radius:2px;text-align:center;outline:none;font-size:12px;cursor:pointer;color:#333}.tui-full-calendar-button:hover{border-color:#bbb;color:#333}.tui-full-calendar-button:active{background:#f9f9f9;color:#333}.tui-full-calendar-button .round{border-radius:25px}.tui-full-calendar-confirm{width:96px;height:36px;border-radius:40px;background-color:#ff6618;font-size:12px;font-weight:700;color:#fff;border:none}.tui-full-calendar-confirm:hover{background-color:#e55b15;color:#fff}.tui-full-calendar-confirm:active{background-color:#d95614;color:#fff}.tui-full-calendar-icon.tui-full-calendar-right{float:right;top:1px}.tui-full-calendar-icon .tui-full-calendar-none{display:none}.tui-full-calendar-icon.tui-full-calendar-calendar-dot{border-radius:8px;width:12px;height:12px;margin:1px}input[type=checkbox].tui-full-calendar-checkbox-square{display:none}input[type=checkbox].tui-full-calendar-checkbox-square+span{display:inline-block;cursor:pointer;line-height:14px;margin-right:8px;width:14px;height:14px;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAAAXNSR0IArs4c6QAAADpJREFUKBVjPHfu3O5///65MJAAmJiY9jCcOXPmP6kApIeJBItQlI5qRAkOVM5o4KCGBwqPkcxEvhsAbzRE+Jhb9IwAAAAASUVORK5CYII=) no-repeat;vertical-align:middle}input[type=checkbox].tui-full-calendar-checkbox-square:checked+span{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAAAXNSR0IArs4c6QAAAMBJREFUKBWVkjEOwjAMRe2WgZW7IIHEDdhghhuwcQ42rlJugAQS54Cxa5cq1QM5TUpByZfS2j9+dlJVt/tX5ZxbS4ZU9VLkQvSHKTIGRaVJYFmKrBbTCJxE2UgCdDzMZDkHrOV6b95V0US6UmgKodujEZbJg0B0ZgEModO5lrY1TMQf1TpyJGBEjD+E2NPN7ukIUDiF/BfEXgRiGEw8NgkffYGYwCi808fpn/6OvfUfsDr/Vc1IfRf8sKnFVqeiVQfDu0tf/nWH9gAAAABJRU5ErkJggg==) no-repeat}input[type=checkbox].tui-full-calendar-checkbox-round{display:none}input[type=checkbox].tui-full-calendar-checkbox-round+span{display:inline-block;cursor:pointer;width:14px;height:14px;line-height:14px;vertical-align:middle;margin-right:8px;border-radius:8px;border:2px solid;background:transparent}.tui-full-calendar-popup-top-line{position:absolute;border-radius:2px 2px 0 0;width:100%;height:4px;border:none;top:0}.tui-full-calendar-popup-detail .tui-full-calendar-popup-container{width:301px;min-width:301px;padding-bottom:0}.tui-full-calendar-popup-detail .tui-full-calendar-icon{width:12px;height:12px;background-size:12px;position:relative;margin-right:8px}.tui-full-calendar-popup-detail .tui-full-calendar-icon.tui-full-calendar-ic-location-b,.tui-full-calendar-popup-detail .tui-full-calendar-icon.tui-full-calendar-ic-user-b{top:-2px}.tui-full-calendar-popup-detail .tui-full-calendar-icon.tui-full-calendar-ic-state-b{top:-1px}.tui-full-calendar-popup-detail .tui-full-calendar-icon.tui-full-calendar-calendar-dot{width:10px;height:10px;margin-right:8px;top:-1px}.tui-full-calendar-popup-detail .tui-full-calendar-content{line-height:24px;height:24px;font-size:12px;line-height:2}.tui-full-calendar-popup-detail .tui-full-calendar-section-header{margin-bottom:6px}.tui-full-calendar-popup-detail .tui-full-calendar-popup-detail-item-separate{margin-top:4px}.tui-full-calendar-popup-detail .tui-full-calendar-popup-detail-item-indent{text-indent:-20px;padding-left:20px}.tui-full-calendar-popup-detail .tui-full-calendar-schedule-title{font-size:15px;font-weight:700;line-height:1.6;word-break:break-all}.tui-full-calendar-popup-detail .tui-full-calendar-schedule-private{display:none;width:16px;height:16px;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAAAXNSR0IArs4c6QAAAKpJREFUKBVjYCATMKLri46Olvn9+3fX////HUByjIyMB1hZWcuWLl36BFktikaQpl+/fl0EKhBCVgRkv2NjY9NH1syErABkE1TTdqBCWRAG8reDxKBycOUoGmHOA2pIA5kOwiA2SDVMDqYTRSNQUBIkgewkJDZYDqYR7sewsLCtQFO9YBLYaGBAbVu1apU3SA5uIyFNIMXIauAaQRKkgBGlERTURATOVpgaABRQQOK46wEAAAAAAElFTkSuQmCC) no-repeat 16px}.tui-full-calendar-popup-detail .tui-full-calendar-schedule-private .tui-full-calendar-ic-private{display:block}.tui-full-calendar-popup-detail .tui-full-calendar-section-detail{margin-bottom:16px}.tui-full-calendar-popup-detail .tui-full-calendar-section-button{border-top:1px solid #e5e5e5;font-size:0}.tui-full-calendar-section-button .tui-full-calendar-icon{margin-right:4px;top:-3px}.tui-full-calendar-section-button .tui-full-calendar-content{position:relative;top:2px}.tui-full-calendar-popup-delete,.tui-full-calendar-popup-edit{display:inline-block;padding:7px 9px 11px;width:calc(50% - 1px);outline:none;background:none;border:none;cursor:pointer}.tui-full-calendar-popup-vertical-line{background:#e5e5e5;width:1px;height:14px;vertical-align:middle;display:inline-block;margin-top:-7px}.tui-datepicker{left:-12px;z-index:1;border-color:#d5d5d5}.tui-full-calendar-icon{width:14px;height:14px;display:inline-block;vertical-align:middle}.tui-full-calendar-icon.tui-full-calendar-ic-title{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAAAXNSR0IArs4c6QAAAO5JREFUKBVjYCATMOLSFxkZqfHnz5+1QHktNDVbV69e7cOCJgjmQjXtB3IksMh7g8SY0CXQNTEyMlYD1fBCabhyFI3omkCq/v//PwnotC8gGq4LyIBrxKYJpBBoU15oaCgPiEbWCPYjUEIFGBBY/QS0qRWooRVIg/UBDXgMYoBtBHJSgWxsAQFWjET8BBqQBuLDNM4Can6GpAAb8ydQMADo3x0gSbDGlStX3gVqdMSjGUUTSCNKAggPD1cDOmU/EEuBJKEAQxNIHEUjSABNM1ZNIHXMIAIZXL169a2+vv5moK18QKeXAv20B1meYjYAr7xrljpOzc0AAAAASUVORK5CYII=) no-repeat}.tui-full-calendar-icon.tui-full-calendar-ic-location{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAAAXNSR0IArs4c6QAAAR1JREFUKBWdUTtPg1AUBiT8CydHJtv/0MTJRWAgcTK1bq0/pO3k4E4IYLo2Me46tS4wumjSpV07kAb6HXLPzaGPRZLL+c73uE/D+OdnHuaCIOhVVTUEf620pWVZ0yRJ3qW3FfR9f1zX9UgaGJumOUnT9Fn3DDzPuwPOuD9TvSzL3kizhOFJ4LnjOJc0wM0FP2Asgx0mEehHUfRHgzDzqF3GOogzbJg8V6XHFqYv4Cvqy7J8DcOwWYmw8Hwy1kHMRjcaKuEGgV82caWbZay3indagJyxcKLOlKeRdJA627YfUVaN0v6tlKbZVjCO4zW2cw91px3AxJEmOONCNoTzPP9xXZfOd6u0Bzz60RGOgmQuiuIb4S3gB0IvaoJW2QMDs1bBoH1CAQAAAABJRU5ErkJggg==) no-repeat}.tui-full-calendar-icon.tui-full-calendar-ic-date{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAAAXNSR0IArs4c6QAAAGpJREFUKBVjYKAGCA0N/Q/C6GZhE2cEKQoLC9v6//9/L3QN2PiMjIzbVq1a5c0EkiRWE7JasEZsJhMSI1sjC7LJq1evBvsZWQyZjRxwZNs4hDSiBA6y55EDBRsb7EdQasAmiUNsKw5x4oQBkUAeDPJ53KsAAAAASUVORK5CYII=) no-repeat}.tui-full-calendar-icon.tui-full-calendar-ic-state{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAAAXNSR0IArs4c6QAAAIxJREFUKBVjYCATMKLrCw8P9/z3798soLgMVO4JExNT2sqVK7cjq2VC5oDYME2MjIyNIAwUkoGKoShlQeFBOGCbVq1a1QDihoaG1gMpmO0gITAAOzUsLGzr////vWCC+GigK7YBDfUGO5VYTSADYWox/IjPNmS5UY3IoYHGBgcOKG7QxPFxt+KTJCgHAGcZJbGLRuJ2AAAAAElFTkSuQmCC) no-repeat}.tui-full-calendar-icon.tui-full-calendar-ic-private{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAAAXNSR0IArs4c6QAAAKpJREFUKBVjYCATMKLri46Olvn9+3fX////HUByjIyMB1hZWcuWLl36BFktikaQpl+/fl0EKhBCVgRkv2NjY9NH1syErABkE1TTdqBCWRAG8reDxKBycOUoGmHOA2pIA5kOwiA2SDVMDqYTRSNQUBIkgewkJDZYDqYR7sewsLCtQFO9YBLYaGBAbVu1apU3SA5uIyFNIMXIauAaQRKkgBGlERTURATOVpgaABRQQOK46wEAAAAAAElFTkSuQmCC) no-repeat}.tui-full-calendar-icon.tui-full-calendar-ic-close{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAAAXNSR0IArs4c6QAAAJRJREFUKBXFkNERhCAMREUbuEKohzq0Eq2DDq6Da4B60KezDORkxj+ZwchmX0IYhtdWCGFl9y5g82NtzDnPdzAaudo76ZBS+nrvPxiInMkJcs5tMcZFfqcfxdqIRiELof+BiIJPg+mExmpmvKRn3zKj7OrG9Y79szPL14A1xEP0Hgy4gBZS5R7czHj3ehSgOzkVeyfuGrBw/WLm0hsAAAAASUVORK5CYII=) no-repeat}.tui-full-calendar-ic-location-b{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAYAAABWdVznAAAAAXNSR0IArs4c6QAAAOZJREFUKBWVUT0KwjAUbkzGTuJWPYNDpV0cXD2ETuIRBK+gs4ubp3BwcXBp6eINBKWDgydoid9X8oKCggYeee/7S9IGwZ9LverTNO3Wdb2y1o6IK6WOWutFlmU30XmDE58hbgvpTA+Y+mJqCemS20jdG2N6LPYMICc6b5BrIG3ONBZ7CoVj7w0cfllGRDj+gKQpjt/iPU0ye/LkROcNANaoCUzjqqquIsBuHddAWoiyLO9RFHUwJ4JxR/qmKIqdYG9vCMNwCeIiJHuHecj/B0GSJBng7ifO+ErDPM8L4b7ucRzPWJ8ET1E7YC7tmi9qAAAAAElFTkSuQmCC)}.tui-full-calendar-ic-state-b{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAYAAABWdVznAAAAAXNSR0IArs4c6QAAAHlJREFUKBVjYCARMCKrNzEx8QTyZ/3//18GJM7IyPgESKWdOXNmO4gPAkwQCk6CFQMVNoIwVOMsuCw6w9jY+D8Iw8TR+SBxsJOATtkKNM0LphAbDbRxG9Bp3mAnEVIMMgCmBt0P2AxHERusGkAhgOJQ7Jyt2IUJiAIAwwIn24FgmhkAAAAASUVORK5CYII=)}.tui-full-calendar-icon.tui-full-calendar-ic-user-b{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAYAAABWdVznAAAAAXNSR0IArs4c6QAAAJpJREFUKBVjYKA1YES3wMTExBMoNgsqnnbmzJntyGqYkDlQ9qz////LgDCQD9MIV4ZNA1wSGwObhjRGRsYnIAzUkIZNE0licE+bm5tr/fnzJx1osjPQBFmoKY+BftnLwsIy8+TJk9dAYmANxsbGoUD2YiBmBwliAT+BYrFnz55dDfNDO1AAl2KQfpAcSA0DTIMyiEMAEKMG0wgAolIjcM7Tjm8AAAAASUVORK5CYII=)}.tui-full-calendar-icon.tui-full-calendar-ic-edit{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAYAAABWdVznAAAAAXNSR0IArs4c6QAAAMdJREFUKBVjYCARMOJTb2xsLMfIyBjLysq64Pjx409BapnwaQDKzf7//3/L79+/D1tbW0uB1LJg02BmZqYIVPgdKBf/79+//UC2xs+fP8OB/H4MG0CK//79ewCkEGQYExOTI5DawMnJuQTER/EDTDFQXA4kCQQ3QBpOnz79AsJF8gMWxTA1KDTYBhyKMUwH6WSysrKSB7kZyIY5AySOVTFIggno+5VAmijFYA1AwhzEgAKcJsMUwIMVGKPH2NnZ7ZFDBKYImQYAuO5YIMgk39gAAAAASUVORK5CYII=)}.tui-full-calendar-icon.tui-full-calendar-ic-delete{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAYAAABWdVznAAAAAXNSR0IArs4c6QAAAFhJREFUKBVjYCARMKKrNzEx2fr//38vkDgjI+O2M2fOeCOrAWtAVoQsicyGaWZCFsTHBtr6H588Tjm4H4yNjfGacPbsWbBaop0Es3JYaQBFDMxjWOitMDEA3EEZfFEISwUAAAAASUVORK5CYII=)}.tui-full-calendar-icon.tui-full-calendar-ic-arrow-solid-top{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAAAXNSR0IArs4c6QAAAIFJREFUKBVjYBj+gBmXF2NiYiTV1dV5rl279gWbGiZsgg0NDSw/f/5cCZRbBWJjU4PVRjExsR6g4nAgln/z5g3v1atXd6JrxtAYHh4e+v///z4khZa6urrXgJqvIYkxMCJzgJo0//37dwooxoMsDmR/YWJiMlu5cuV1NPFRLrYQAADMVCaUtbG7XwAAAABJRU5ErkJggg==) no-repeat}.tui-full-calendar-icon.tui-full-calendar-ic-milestone{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAYAAABWdVznAAAAAXNSR0IArs4c6QAAAGFJREFUKBVjYCARMILU/3dw+I+hj5FxG+P+/d7o4rg1IKtE0syELI6T/f+/F0yOOA0w1UCa9hpYkGxjYDxwABwIILH/jo5bGWBuZ2TcClOHogEmCKKxBSlInPZ+ANlCEgAA37EU4AHbBQUAAAAASUVORK5CYII=) no-repeat}.tui-full-calendar-icon.tui-full-calendar-ic-arrow-left{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAHCAYAAAAvZezQAAAAAXNSR0IArs4c6QAAAFZJREFUCB1jZICCyspK83///hUxgvhVVVV6f//+3c3ExJTMVFNTowqU2cHMzJzf3t6+hen379/zgIp2t7W1rQCpZmJlZU0C0q5AbREgAQwzwAIgGZgtADMCJqH/QyvhAAAAAElFTkSuQmCC) no-repeat}.tui-full-calendar-icon.tui-full-calendar-ic-arrow-right{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAHCAYAAAAvZezQAAAAAXNSR0IArs4c6QAAAFxJREFUCB1jKC8vX1lZWWnOAAVMQLD4379/m6qqqvRAYowgAsiJAAr2sbCw2IMFQIIVFRUL////r8SCpMKVlZXVnhFooA9Q+VxmZmbXtra2S0xATizQYD8QB6QaAJMLJ9BqE9yTAAAAAElFTkSuQmCC) no-repeat}.tui-full-calendar-ic-repeat-b{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAYAAABWdVznAAAAAXNSR0IArs4c6QAAAQpJREFUKBVjYCARMCKrNzU1tf/3718lUMwQiP8yMjKeYWJi6j516tRhExOThjNnzjTANQAFqv///98CVHQPSO8A0ixATa5AtjyQPgDETmfPngULMpiZmbn//fu3BSg4B6ggCyjxG8hm8PT0ZH/9+vUJoJgTiA8CTCACqDgXaOJ9Xl7eTJhikDhQcSVQsQGITT8A9rSxsfF/mJVApzWCQgPGd3BwYPny5cstoNOuAZ3rAwoJOAAqviAqKtoOEwAaxPr58+dpQL4iEGeAxJFt2AfkOwA1PQTSu4Em/gGyPYC0EpCuAdraCtIADiWgQCPQOmdmZmYHoNgVoCJfIB0CpG8DI84BphgoRjoAAAzgdELI91E5AAAAAElFTkSuQmCC)}
+/*# sourceMappingURL=tui-calendar.min.css.map */
\ No newline at end of file
diff --git a/admin/js/vendors/tui.calendar/tui-calendar.min.css.map b/admin/js/vendors/tui.calendar/tui-calendar.min.css.map
new file mode 100644 (file)
index 0000000..0706af8
--- /dev/null
@@ -0,0 +1 @@
+{"version":3,"sources":["tui-calendar.min.css","src/css/common.styl","main.styl","src/css/variables.styl","src/css/weekday.styl","src/css/week/layout.styl","src/css/week/dayname.styl","src/css/week/daygrid.styl","src/css/week/time.styl","src/css/month.styl","src/css/vlayout.styl","src/css/popup.styl","src/css/icons.styl"],"names":[],"mappings":"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ACI,eAAU,CACV,qBAAmB,CACnB,uBAAmB,CACnB,mBN+TR,CM7TI,qDACI,eAAa,CACb,cN+TR,CM7TI,sCACI,iBAAU,CACV,OAAO,CACP,QAAQ,CACR,MAAM,CACN,UAAQ,CACR,iBAAY,CACZ,UAAO,CACP,iBAAQ,CACR,uBN+TR,CM5TI,uCACI,iBAAU,CACV,UAAO,CACP,QAAM,CACN,WN8TR,CM1TQ,8RAEI,UAAS,CACT,UN8TZ,CM5TI,6CACI,cN8TR,CM5TI,qCACI,iBAAU,CACV,UN8TR,COngBA,yBACI,WAAQ,CACR,gBPqgBJ,COlgBI,iCACI,UAAO,CACP,iBAAU,CACV,cPogBR,COlgBI,sCACI,WAAQ,CACR,ePogBR,COlgBI,mCACI,iBPogBR,COngBQ,uCACI,WPqgBZ,COngBI,8BACI,cAAQ,CACR,eAAW,CACX,gBPqgBR,COngBI,oCACI,iBPqgBR,COngBI,wCACI,cAAW,CACX,UPqgBR,COngBI,8CACI,cAAW,CACX,UPqgBR,COngBI,oCACI,iBAAU,CACV,OAAO,CACP,SAAS,CACT,eAAW,CACX,QAAQ,CACR,cAAW,CACX,gBAAa,CACb,aAAS,CACT,cPqgBR,COngBI,mCACI,ePqgBR,COngBI,uCACI,cAAQ,CACR,aAAS,CACT,eAAU,CACV,kBAAa,CACb,sBAAe,CACf,cPqgBR,COngBI,qCACI,iBPqgBR,COngBI,0CACI,cPqgBR,COngBI,wCACI,KAAK,CACL,WAAQ,CACR,SAAM,CACN,OAAO,CACP,iBAAU,CACV,UPqgBR,COngBI,uCACI,mCPqgBR,COngBI,+BACI,iBAAU,CACV,gBAAc,CACd,gBAAa,CACb,eAAU,CACV,kBAAa,CACb,sBPqgBR,COngBI,qCACI,UAAO,CACP,iBAAU,CACV,QAAK,CACL,SAAM,CACN,+BAAkB,CAClB,qCPqgBR,COngBI,oEACI,aPqgBR,COngBI,qEACI,cPqgBR,COngBI,4EACI,YPqgBR,COngBI,sCACI,iBAAU,CACV,KAAK,CACL,SAAO,CACP,SAAO,CACP,uBAAqB,CACrB,iBPqgBR,CQ7mBI,qCACI,iBR+mBR,C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","file":"tui-calendar.min.css","sourcesContent":["/*!\n * TOAST UI Calendar\n * @version 1.12.14 | Tue Sep 22 2020\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n * @license MIT\n */\n.tui-full-calendar-layout {\n  height: 100%;\n  position: relative;\n  box-sizing: border-box;\n}\n.tui-full-calendar-layout * {\n  box-sizing: border-box;\n}\n.tui-full-calendar-dragging {\n  cursor: move;\n}\n.tui-full-calendar-resizing {\n  cursor: row-resize;\n}\n.tui-full-calendar-resizing-x {\n  cursor: col-resize;\n}\n.tui-full-calendar-hidden {\n  display: none !important;\n}\n.tui-full-calendar-invisible span {\n  visibility: hidden;\n}\n.tui-full-calendar-clear:after {\n  content: '';\n  display: block;\n  clear: both;\n}\n.tui-full-calendar-scroll-y {\n  overflow-y: scroll;\n}\n.tui-full-calendar-dot {\n  display: inline-block;\n  position: relative;\n  top: -1px;\n  content: '';\n  width: 7px;\n  height: 7px;\n  border-radius: 50%;\n}\n.tui-full-calendar-holiday {\n  color: #f00;\n}\n.tui-full-calendar-today {\n  background: rgba(218,229,249,0.3);\n}\n.handle-x {\n  background-position: center center;\n  background-repeat: no-repeat;\n  background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAECAMAAACEE47CAAAACVBMVEX///////////+OSuX+AAAAA3RSTlMrQJG5H4EIAAAAEUlEQVR4AWNgYoRABhjEFAEAArQAIcHQcPsAAAAASUVORK5CYII=);\n}\n.handle-y {\n  background-position: center center;\n  background-repeat: no-repeat;\n  background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAICAMAAADp7a43AAAACVBMVEX///////////+OSuX+AAAAA3RSTlMrQJG5H4EIAAAAEUlEQVR4AWNgYmRiZABB/CwAAtgAIUTUNkMAAAAASUVORK5CYII=);\n}\n@media only screen and (-moz-min-device-pixel-ratio: 1.5), only screen and (-o-min-device-pixel-ratio: 3/2), only screen and (-webkit-min-device-pixel-ratio: 1.5), only screen and (min-devicepixel-ratio: 1.5), only screen and (min-resolution: 1.5dppx) {\n  .handle-x {\n    background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAICAMAAADHqI+lAAAACVBMVEX///////////+OSuX+AAAAA3RSTlMZK5EY+QKaAAAAGUlEQVR4AWNgYmJAwegCIMDIiIwxBKhhBgAcSABh8gN42gAAAABJRU5ErkJggg==);\n    background-size: 8px 4px;\n  }\n  .handle-y {\n    background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAQCAMAAAAcVM5PAAAACVBMVEX///////////+OSuX+AAAAA3RSTlMEK5EMBzK5AAAAGElEQVR4AWNgYmIAYxgDBBgZQRjOoKcaABzQAGGjsIM/AAAAAElFTkSuQmCC);\n    background-size: 4px 8px;\n  }\n}\n.tui-full-calendar-month-week-item .tui-full-calendar-weekday-grid {\n  overflow-y: hidden;\n}\n.tui-full-calendar-month-week-item .tui-full-calendar-weekday-schedules {\n  overflow-y: visible;\n  height: 0;\n}\n.tui-full-calendar-month-week-item .tui-full-calendar-weekday-schedule {\n  margin: 0 10px;\n}\n.tui-full-calendar-month-week-item .tui-full-calendar-today {\n  background: none;\n}\n.tui-full-calendar-month-week-item .tui-full-calendar-today .tui-full-calendar-weekday-grid-date-decorator {\n  display: inline-block;\n  width: 27px;\n  height: 27px;\n  line-height: 27px;\n  text-align: center;\n  background: #135de6;\n  border-radius: 50%;\n  color: #fff;\n  font-weight: bold;\n  margin-left: 2px;\n}\n.tui-full-calendar-weekday-container,\n.tui-full-calendar-weekday-grid,\n.tui-full-calendar-weekday-grid-line {\n  height: 100%;\n  min-height: inherit;\n}\n.tui-full-calendar-weekday-grid {\n  position: absolute;\n  width: 100%;\n  overflow-y: scroll;\n}\n.tui-full-calendar-weekday-border {\n  border-top: 1px solid #ddd;\n}\n.tui-full-calendar-weekday-container {\n  position: relative;\n}\n.tui-full-calendar-weekday-container>div {\n  height: 100%;\n}\n.tui-full-calendar-weekday-grid-line {\n  position: absolute;\n  padding: 3px;\n}\n.tui-full-calendar-weekday-grid-line .tui-full-calendar-weekday-grid-footer {\n  position: absolute;\n  bottom: 4px;\n}\n.tui-full-calendar-weekday-grid-line .tui-full-calendar-weekday-grid-date {\n  display: inline-block;\n  width: 27px;\n  height: 27px;\n  line-height: 27px;\n  text-align: center;\n}\n.tui-full-calendar-weekday-grid-line .tui-full-calendar-weekday-grid-date-title {\n  line-height: 27px;\n  margin-right: 5px;\n}\n.tui-full-calendar-weekday-grid-line .tui-full-calendar-weekday-grid-more-schedules {\n  float: right;\n  display: inline-block;\n  height: 27px;\n  line-height: 27px;\n  padding: 0 5px;\n  text-align: center;\n  font-size: 11px;\n  font-weight: bold;\n  color: #aaa;\n}\n.tui-full-calendar-weekday-creation {\n  top: 0;\n  left: 0;\n  width: 100%;\n  height: 100%;\n  position: absolute;\n  overflow-y: scroll;\n}\n.tui-full-calendar-weekday-schedules {\n  top: 0;\n  left: 0;\n  width: 100%;\n  height: 100%;\n  position: absolute;\n  font-size: 12px;\n  overflow-y: scroll;\n}\n.tui-full-calendar-weekday-schedules-height-span {\n  width: 1px;\n  margin-left: -1px;\n}\n.tui-full-calendar-weekday-schedule-block {\n  position: absolute;\n}\n.tui-full-calendar-weekday-schedule-block-dragging-dim {\n  opacity: 0.3;\n}\n.tui-full-calendar-weekday-schedule {\n  position: relative;\n  margin: 0 10px 0 1px;\n  cursor: pointer;\n  border-left-style: solid;\n  border-left-width: 3px;\n}\n.tui-full-calendar-weekday-schedule.tui-full-calendar-weekday-schedule-time {\n  border-left-width: 0;\n}\n.tui-full-calendar-weekday-schedule.tui-full-calendar-weekday-schedule-time .tui-full-calendar-weekday-schedule-title {\n  padding-left: 9px;\n}\n.tui-full-calendar-weekday-schedule-bullet {\n  position: absolute;\n  padding: 0;\n  width: 6px;\n  height: 6px;\n  top: 6px;\n  left: 0;\n  border-radius: 50%;\n}\n.tui-full-calendar-weekday-schedule-bullet-focused {\n  left: 10px;\n  background: #fff;\n}\n.tui-full-calendar-weekday-schedule-title {\n  display: block;\n  white-space: nowrap;\n  overflow: hidden;\n  text-overflow: ellipsis;\n  padding-left: 3px;\n  font-weight: bold;\n}\n.tui-full-calendar-weekday-schedule-title-focused {\n  padding-left: 16px;\n}\n.tui-full-calendar-weekday-schedule-cover {\n  position: absolute;\n  top: 0;\n  width: 100%;\n  height: 100%;\n  background-color: rgba(0,0,0,0.2);\n  box-shadow: 0 2px 6px 0 rgba(0,0,0,0.1);\n}\n.tui-full-calendar-weekday-exceed-left .tui-full-calendar-weekday-schedule {\n  margin-left: 0;\n  border-left-width: 0;\n}\n.tui-full-calendar-weekday-exceed-right .tui-full-calendar-weekday-schedule {\n  margin-right: 0;\n}\n.tui-full-calendar-weekday-exceed-right .tui-full-calendar-weekday-resize-handle {\n  display: none;\n}\n.tui-full-calendar-weekday-exceed-in-month {\n  cursor: pointer;\n}\n.tui-full-calendar-weekday-exceed-in-month:hover {\n  background-color: #f0f1f5;\n}\n.tui-full-calendar-weekday-exceed-in-week,\n.tui-full-calendar-weekday-collapse-btn {\n  position: absolute;\n  bottom: 5px;\n  margin-right: 5px;\n  font-size: 12px;\n  line-height: 14px;\n  cursor: pointer;\n  padding: 1px 5px;\n  background-color: #fff;\n  border: 1px solid #ddd;\n  color: #000;\n}\n.tui-full-calendar-weekday-resize-handle {\n  position: absolute;\n  top: 0;\n  right: 0;\n  width: 6px;\n  background-position: 3px center;\n  cursor: col-resize;\n  line-height: 18px;\n}\n.tui-full-calendar-weekday-filled {\n  background-color: #e8e8e8 !important;\n}\n.tui-full-calendar-left {\n  height: 100%;\n  float: left;\n  box-sizing: border-box;\n  display: table;\n}\n.tui-full-calendar-left-content {\n  display: table-cell;\n  vertical-align: middle;\n  text-align: right;\n  font-size: 11px;\n}\n.tui-full-calendar-right {\n  height: 100%;\n  overflow-y: scroll;\n  position: relative;\n}\n.tui-full-calendar-week-container {\n  width: 100%;\n  height: inherit;\n  display: inline-block;\n  font-size: 10px;\n  min-height: 600px;\n}\n.tui-full-calendar-week-container .tui-full-calendar-today {\n  background: none;\n}\n.tui-full-calendar-dayname {\n  position: absolute;\n  margin-left: -1px;\n  height: 100%;\n  overflow: hidden;\n}\n.tui-full-calendar-dayname.tui-full-calendar-today {\n  font-weight: bold;\n}\n.tui-full-calendar-dayname-container {\n  overflow-y: scroll;\n}\n.tui-full-calendar-dayname-leftmargin {\n  position: relative;\n  height: 100%;\n}\n.tui-full-calendar-dayname-date {\n  font-size: 26px;\n}\n.tui-full-calendar-dayname-name {\n  font-weight: bold;\n  font-size: 12px;\n}\n.tui-full-calendar-daygrid-layout {\n  height: 100%;\n}\n.tui-full-calendar-daygrid-layout .tui-full-calendar-right {\n  overflow-y: hidden;\n}\n.tui-full-calendar-daygrid-guide-creation-block {\n  position: absolute;\n  top: 0;\n  bottom: 0;\n  z-index: 1;\n}\n.tui-full-calendar-timegrid-container {\n  height: 100%;\n  position: relative;\n  overflow: hidden;\n  overflow-y: scroll;\n}\n.tui-full-calendar-timegrid-container-split {\n  height: 100%;\n  position: relative;\n  overflow: hidden;\n}\n.tui-full-calendar-timegrid-left {\n  position: absolute;\n}\n.tui-full-calendar-timegrid-hour {\n  position: relative;\n  color: #555;\n  box-sizing: border-box;\n}\n.tui-full-calendar-timegrid-hour:first-child span {\n  display: none;\n}\n.tui-full-calendar-timegrid-hour:last-child {\n  border-bottom: none;\n}\n.tui-full-calendar-timegrid-hour span {\n  position: absolute;\n  top: -11px;\n  left: 0;\n  right: 5px;\n  text-align: right;\n  line-height: 25px;\n}\n.tui-full-calendar-timegrid-right {\n  position: relative;\n}\n.tui-full-calendar-timegrid-gridline {\n  border-bottom: 1px solid #eee;\n  box-sizing: border-box;\n}\n.tui-full-calendar-timegrid-gridline:last-child {\n  border-bottom: none;\n}\n.tui-full-calendar-timegrid-schedules {\n  position: absolute;\n  width: 100%;\n  height: 100%;\n  top: 0;\n  left: 0;\n  cursor: pointer;\n}\n.tui-full-calendar-timegrid-hourmarker {\n  position: absolute;\n  width: 100%;\n  display: table;\n}\n.tui-full-calendar-timegrid-hourmarker-line-left {\n  position: absolute;\n  min-height: 1px;\n  left: 0;\n}\n.tui-full-calendar-timegrid-hourmarker-line-today {\n  position: absolute;\n  min-height: 1px;\n}\n.tui-full-calendar-timegrid-hourmarker-line-right {\n  position: absolute;\n  min-height: 1px;\n  right: 0;\n}\n.tui-full-calendar-timegrid-hourmarker-time {\n  padding-right: 5px;\n  line-height: 12px;\n  text-align: right;\n  display: table-cell;\n  vertical-align: bottom;\n}\n.tui-full-calendar-timegrid-todaymarker {\n  position: absolute;\n  text-indent: -9999px;\n  width: 9px;\n  height: 9px;\n  background-color: #135de6;\n  margin: -4px 0 0 -5px;\n  border-radius: 50%;\n}\n.tui-full-calendar-timegrid-sticky-container {\n  position: absolute;\n  top: 0;\n}\n.tui-full-calendar-timegrid-timezone-label-container {\n  position: absolute;\n}\n.tui-full-calendar-timegrid-timezone-label-cell {\n  display: table;\n}\n.tui-full-calendar-timegrid-timezone-label {\n  display: table-cell;\n  vertical-align: middle;\n  padding-right: 5px;\n  text-align: right;\n}\n.tui-full-calendar-timegrid-timezone-close-btn {\n  cursor: pointer;\n  position: absolute;\n  text-align: center;\n  background-color: #fff;\n}\n.tui-full-calendar-timegrid-timezone-close-btn .tui-full-calendar-icon {\n  width: 5px;\n  height: 10px;\n}\n.tui-full-calendar-time-date {\n  position: absolute;\n  height: 100%;\n  margin-left: -1px;\n  box-sizing: content-box;\n}\n.tui-full-calendar-time-date:last-child {\n  border-right: none;\n  margin: 0;\n}\n.tui-full-calendar-time-date:last-child .tui-full-calendar-time-schedule,\n.tui-full-calendar-time-date:last-child .tui-full-calendar-time-guide-creation {\n  left: 0px;\n}\n.tui-full-calendar-time-date-schedule-block-wrap {\n  position: relative;\n  height: 100%;\n}\n.tui-full-calendar-time-date-schedule-block {\n  position: absolute;\n  right: 0px;\n}\n.tui-full-calendar-time-date-schedule-block-pending {\n  opacity: 0.7;\n}\n.tui-full-calendar-time-date-schedule-block-dragging-dim {\n  opacity: 0.3;\n}\n.tui-full-calendar-time-date-schedule-block-focused {\n  box-shadow: 0 0 8px 0 rgba(0,0,0,0.2);\n}\n.tui-full-calendar-time-date-schedule-block-cover {\n  position: absolute;\n  top: 0;\n  width: 100%;\n  height: 100%;\n  background-color: rgba(0,0,0,0.2);\n  box-shadow: 0 2px 6px 0 rgba(0,0,0,0.1);\n}\n.tui-full-calendar-time-schedule {\n  position: relative;\n  left: 1px;\n  height: 100%;\n  overflow: hidden;\n  font-size: 12px;\n  font-weight: bold;\n}\n.tui-full-calendar-time-schedule-content {\n  overflow: hidden;\n  border-left-width: 3px;\n  border-left-style: solid;\n  padding: 1px 0 0 3px;\n}\n.tui-full-calendar-time-schedule-content-travel-time {\n  font-weight: normal;\n  font-size: 11px;\n}\n.tui-full-calendar-time-resize-handle {\n  position: absolute;\n  right: 0px;\n  bottom: 0px;\n  left: 0px;\n  height: 5px;\n  text-align: center;\n  color: #fff;\n  cursor: row-resize;\n  background-position: center top;\n}\n.tui-full-calendar-time-guide-creation {\n  position: absolute;\n  right: 10px;\n  left: 1px;\n  padding: 3px;\n}\n.tui-full-calendar-time-guide-move .tui-full-calendar-time-schedule,\n.tui-full-calendar-time-guide-resize .tui-full-calendar-time-schedule,\n.tui-full-calendar-time-guide-move .tui-full-calendar-time-resize-handle,\n.tui-full-calendar-time-guide-resize .tui-full-calendar-time-resize-handle {\n  opacity: 0.8;\n  z-index: 97;\n}\n.tui-full-calendar-time-guide-creation-label {\n  cursor: default;\n}\n.tui-full-calendar-time-guide-bottom {\n  position: absolute;\n  bottom: 3px;\n}\n.tui-full-calendar-month {\n  height: 100%;\n  min-height: 600px;\n}\n.tui-full-calendar-month-dayname {\n  width: 100%;\n  position: absolute;\n  font-size: 13px;\n}\n.tui-full-calendar-month-dayname-item {\n  height: 100%;\n  font-weight: bold;\n}\n.tui-full-calendar-month-week-item {\n  position: relative;\n}\n.tui-full-calendar-month-week-item>div {\n  height: 100%;\n}\n.tui-full-calendar-month-more {\n  height: inherit;\n  min-width: 280px;\n  min-height: 150px;\n}\n.tui-full-calendar-month-more-title {\n  position: relative;\n}\n.tui-full-calendar-month-more-title-day {\n  font-size: 23px;\n  color: #333;\n}\n.tui-full-calendar-month-more-title-day-label {\n  font-size: 12px;\n  color: #333;\n}\n.tui-full-calendar-month-more-close {\n  position: absolute;\n  right: 0;\n  outline: 0;\n  background: none;\n  border: 0;\n  font-size: 14px;\n  line-height: 28px;\n  padding: 0 7px;\n  cursor: pointer;\n}\n.tui-full-calendar-month-more-list {\n  overflow-y: auto;\n}\n.tui-full-calendar-month-more-schedule {\n  cursor: pointer;\n  display: block;\n  overflow: hidden;\n  white-space: nowrap;\n  text-overflow: ellipsis;\n  font-size: 12px;\n}\n.tui-full-calendar-month-guide-block {\n  position: absolute;\n}\n.tui-full-calendar-month-weekday-schedule {\n  margin-top: 2px;\n}\n.tui-full-calendar-month-creation-guide {\n  top: 0;\n  bottom: -1px;\n  left: -1px;\n  right: 0;\n  position: absolute;\n  z-index: 20;\n}\n.tui-full-calendar-month-guide-focused {\n  box-shadow: 0 0 8px 0 rgba(0,0,0,0.2);\n}\n.tui-full-calendar-month-guide {\n  position: relative;\n  padding-left: 3px;\n  line-height: 18px;\n  overflow: hidden;\n  white-space: nowrap;\n  text-overflow: ellipsis;\n}\n.tui-full-calendar-month-guide-cover {\n  width: 100%;\n  position: absolute;\n  top: -50%;\n  left: -50%;\n  background-color: rgba(0,0,0,0.2);\n  box-shadow: 0 2px 6px 0 rgba(0,0,0,0.1);\n}\n.tui-full-calendar-month-exceed-left .tui-full-calendar-month-guide {\n  margin-left: 0px;\n}\n.tui-full-calendar-month-exceed-right .tui-full-calendar-month-guide {\n  margin-right: 0px;\n}\n.tui-full-calendar-month-exceed-right .tui-full-calendar-month-guide-handle {\n  display: none;\n}\n.tui-full-calendar-month-guide-handle {\n  position: absolute;\n  top: 0;\n  right: 3px;\n  width: 6px;\n  background-position: 3px center;\n  cursor: col-resize;\n}\n.tui-full-calendar-vlayout-container {\n  position: relative;\n}\n.tui-full-calendar-splitter {\n  clear: left;\n  cursor: row-resize;\n}\n.tui-full-calendar-splitter:hover {\n  border-color: #999;\n}\n.tui-full-calendar-splitter-focused {\n  background-color: #ddd;\n  border: none;\n}\n.tui-full-calendar-splitter-guide {\n  position: absolute;\n  width: 100%;\n  height: 3px;\n  border: none;\n  background-color: #e8e8e8;\n}\n.tui-full-calendar-popup {\n  position: absolute;\n  font-weight: 2.5;\n  box-shadow: 0 2px 6px 0 rgba(0,0,0,0.1);\n  clear: both;\n}\n.tui-full-calendar-popup-container {\n  min-width: 474px;\n  box-shadow: 0 2px 6px 0 rgba(0,0,0,0.1);\n  background-color: #fff;\n  border: solid 1px #d5d5d5;\n  padding: 17px;\n  border-radius: 2px;\n}\n.tui-full-calendar-popup-section {\n  font-size: 0;\n  min-height: 40px;\n}\n.tui-full-calendar-section-calendar {\n  width: 176px;\n}\n.tui-full-calendar-section-calendar.tui-full-calendar-hide {\n  height: 21px;\n  visibility: hidden;\n}\n.tui-full-calendar-section-title {\n  width: calc(100% - 36px);\n  padding-right: 4px;\n}\n.tui-full-calendar-section-title input {\n  width: 365px;\n}\n.tui-full-calendar-button.tui-full-calendar-section-private {\n  height: 32px;\n  padding: 8px;\n  font-size: 0;\n  margin-left: 4px;\n}\n.tui-full-calendar-section-private.tui-full-calendar-public .tui-full-calendar-ic-private {\n  background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAAAXNSR0IArs4c6QAAAKdJREFUKBVjYCATMKLri46Olvn9+3fX////HUByjIyMB1hZWcuWLl36BFktikaQpl+/fl0EKhBCVgRkv2NjY9NH1syErABkE1TTdqBCWRAG8reDxKBycOUoGmHOA2pIA5kOwiA2SDVMDq4TmREaGvofhJHFcLHhfgwLC9sKNNULl0KQODCgtq1atcobxIY7lZAmkGJkNXCNIAlSwIjSCApqIgJnK0wNALoOPwSpOcq0AAAAAElFTkSuQmCC) no-repeat;\n}\n.tui-full-calendar-section-start-date,\n.tui-full-calendar-section-end-date {\n  width: 176px;\n}\n.tui-full-calendar-section-start-date input,\n.tui-full-calendar-section-end-date input {\n  width: 139px;\n}\n.tui-full-calendar-section-start-date:hover .tui-full-calendar-popup-section-item,\n.tui-full-calendar-section-end-date:hover .tui-full-calendar-popup-section-item,\n.tui-full-calendar-section-start-date:focus .tui-full-calendar-popup-section-item,\n.tui-full-calendar-section-end-date:focus .tui-full-calendar-popup-section-item,\n.tui-full-calendar-section-start-date:hover .tui-datepicker,\n.tui-full-calendar-section-end-date:hover .tui-datepicker,\n.tui-full-calendar-section-start-date:focus .tui-datepicker,\n.tui-full-calendar-section-end-date:focus .tui-datepicker {\n  border-color: #bbb;\n}\n.tui-full-calendar-popup-section-item:focus {\n  border-color: #bbb;\n}\n.tui-full-calendar-section-date-dash {\n  font-size: 12px;\n  color: #d5d5d5;\n  height: 32px;\n  padding: 0 4px;\n  vertical-align: middle;\n}\n.tui-full-calendar-popup-section-item.tui-full-calendar-section-allday {\n  border: none;\n  padding: 0 0 0 8px;\n  cursor: pointer;\n}\n.tui-full-calendar-popup-section-item.tui-full-calendar-section-location {\n  display: block;\n}\n.tui-full-calendar-popup-section-item.tui-full-calendar-section-location input {\n  width: 400px;\n}\n.tui-full-calendar-section-allday .tui-full-calendar-icon.tui-full-calendar-ic-checkbox {\n  margin: 0;\n}\n.tui-full-calendar-popup-section-item.tui-full-calendar-section-allday .tui-full-calendar-content {\n  padding-left: 4px;\n}\n.tui-full-calendar-section-state {\n  width: 109px;\n}\n.tui-full-calendar-section-state .tui-full-calendar-content {\n  width: 58px;\n  text-overflow: ellipsis;\n  overflow: hidden;\n}\n.tui-full-calendar-popup-section-item {\n  height: 32px;\n  padding: 0 9px 0 12px;\n  border: 1px solid #d5d5d5;\n  display: inline-block;\n  font-size: 0;\n  border-radius: 2px;\n}\n.tui-full-calendar-popup-section-item:hover {\n  border-color: #bbb;\n}\n.tui-full-calendar-popup-section-item:focus {\n  border-color: #bbb;\n}\n.tui-full-calendar-popup-section-item .tui-full-calendar-icon {\n  position: relative;\n}\n.tui-full-calendar-popup-section-item .tui-full-calendar-content {\n  text-align: left;\n  display: inline-block;\n  font-size: 12px;\n  vertical-align: middle;\n  position: relative;\n  padding-left: 8px;\n}\n.tui-full-calendar-section-calendar .tui-full-calendar-dropdown-button .tui-full-calendar-content {\n  width: 125px;\n  text-overflow: ellipsis;\n  overflow: hidden;\n  top: -1px;\n}\n.tui-full-calendar-popup-section-item input {\n  border: none;\n  height: 30px;\n  outline: none;\n  display: inline-block;\n}\n.tui-full-calendar-popup-section-item input::placeholder {\n  color: #bbb;\n  font-weight: 300;\n}\n.tui-full-calendar-dropdown {\n  position: relative;\n}\n.tui-full-calendar-dropdown:hover .tui-full-calendar-dropdown-button {\n  border: 1px solid #bbb;\n}\n.tui-full-calendar-dropdown-button.tui-full-calendar-popup-section-item {\n  height: 32px;\n  font-size: 0;\n  top: -1px;\n}\n.tui-full-calendar-dropdown-arrow {\n  background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAAAXNSR0IArs4c6QAAAHlJREFUKBVjYBgFOEOAEVkmPDxc89+/f6eAYjzI4kD2FyYmJrOVK1deh4kzwRggGiQBVJCELAZig8SQNYHEmEEEMrh69eo1HR0dfqCYJUickZGxf9WqVf3IakBsFBthklpaWmVA9mEQhrJhUoTp0NBQCRAmrHL4qgAAuu4cWZOZIGsAAAAASUVORK5CYII=) no-repeat;\n}\n.dropdown.open .tui-full-calendar-dropdown-arrow,\n.tui-full-calendar-open .tui-full-calendar-dropdown-arrow {\n  background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAAAXNSR0IArs4c6QAAAIFJREFUKBVjYBj+gBmXF2NiYiTV1dV5rl279gWbGiZsgg0NDSw/f/5cCZRbBWJjU4PVRjExsR6g4nAgln/z5g3v1atXd6JrxtAYHh4e+v///z4khZa6urrXgJqvIYkxMCJzgJo0//37dwooxoMsDmR/YWJiMlu5cuV1NPFRLrYQAADMVCaUtbG7XwAAAABJRU5ErkJggg==) no-repeat;\n}\n.tui-full-calendar-dropdown-menu {\n  position: absolute;\n  top: 31px;\n  padding: 4px 0;\n  background-color: #fff;\n  border: 1px solid #d5d5d5;\n  border-top: none;\n  border-radius: 0 0 2px 2px;\n  width: 100%;\n  display: none;\n}\n.tui-full-calendar-dropdown:hover .tui-full-calendar-dropdown-menu {\n  border: 1px solid #bbb;\n  border-top: none;\n}\n.tui-full-calendar-open .tui-full-calendar-dropdown-menu {\n  display: block;\n}\n.tui-full-calendar-dropdown-menu-item {\n  height: 30px;\n  border: none;\n  cursor: pointer;\n}\n.tui-full-calendar-section-calendar .tui-full-calendar-dropdown-menu-item {\n  width: 100%;\n}\n.tui-full-calendar-section-state .tui-full-calendar-dropdown-menu-item {\n  width: 100%;\n}\n.tui-full-calendar-dropdown-menu-item:hover {\n  background-color: rgba(81,92,230,0.05);\n}\n.tui-full-calendar-dropdown-menu-item .tui-full-calendar-content {\n  line-height: 30px;\n}\n.tui-full-calendar-button.tui-full-calendar-popup-close {\n  position: absolute;\n  top: 10px;\n  right: 10px;\n  background-color: #fff;\n  padding: 2px;\n  border: none;\n}\n.tui-full-calendar-section-button-save {\n  height: 36px;\n}\n.tui-full-calendar-popup-save {\n  float: right;\n}\n.tui-full-calendar-popup-arrow-border,\n.tui-full-calendar-popup-arrow-fill {\n  position: absolute;\n}\n.tui-full-calendar-arrow-top .tui-full-calendar-popup-arrow-border {\n  border-top: none;\n  border-right: 8px solid transparent;\n  border-bottom: 8px solid #d5d5d5;\n  border-left: 8px solid transparent;\n  left: calc(50% - 8px);\n  top: -7px;\n}\n.tui-full-calendar-arrow-right .tui-full-calendar-popup-arrow-border {\n  border-top: 8px solid transparent;\n  border-right: none;\n  border-bottom: 8px solid transparent;\n  border-left: 8px solid #d5d5d5;\n  top: calc(50% - 8px);\n  right: -7px;\n}\n.tui-full-calendar-arrow-bottom .tui-full-calendar-popup-arrow-border {\n  border-top: 8px solid #d5d5d5;\n  border-right: 8px solid transparent;\n  border-bottom: none;\n  border-left: 8px solid transparent;\n  left: calc(50% - 8px);\n  bottom: -7px;\n}\n.tui-full-calendar-arrow-left .tui-full-calendar-popup-arrow-border {\n  border-top: 8px solid transparent;\n  border-right: 8px solid #d5d5d5;\n  border-bottom: 8px solid transparent;\n  border-left: none;\n  top: calc(50% - 8px);\n  left: -7px;\n}\n.tui-full-calendar-arrow-top .tui-full-calendar-popup-arrow-fill {\n  border-top: none;\n  border-right: 7px solid transparent;\n  border-bottom: 7px solid #fff;\n  border-left: 7px solid transparent;\n  left: -7px;\n  top: 1px;\n}\n.tui-full-calendar-arrow-right .tui-full-calendar-popup-arrow-fill {\n  border-top: 7px solid transparent;\n  border-right: none;\n  border-bottom: 7px solid transparent;\n  border-left: 7px solid #fff;\n  top: -7px;\n  right: 1px;\n}\n.tui-full-calendar-arrow-bottom .tui-full-calendar-popup-arrow-fill {\n  border-top: 7px solid #fff;\n  border-right: 7px solid transparent;\n  border-bottom: none;\n  border-left: 7px solid transparent;\n  left: -7px;\n  bottom: 1px;\n}\n.tui-full-calendar-arrow-left .tui-full-calendar-popup-arrow-fill {\n  border-top: 7px solid transparent;\n  border-right: 7px solid #fff;\n  border-bottom: 7px solid transparent;\n  border-left: none;\n  top: -7px;\n  left: 1px;\n}\n.tui-full-calendar-button {\n  background: #fff;\n  border: 1px solid #d5d5d5;\n  border-radius: 2px;\n  text-align: center;\n  outline: none;\n  font-size: 12px;\n  cursor: pointer;\n  color: #333;\n}\n.tui-full-calendar-button:hover {\n  border-color: #bbb;\n  color: #333;\n}\n.tui-full-calendar-button:active {\n  background: #f9f9f9;\n  color: #333;\n}\n.tui-full-calendar-button .round {\n  border-radius: 25px;\n}\n.tui-full-calendar-confirm {\n  width: 96px;\n  height: 36px;\n  border-radius: 40px;\n  background-color: #ff6618;\n  font-size: 12px;\n  font-weight: bold;\n  color: #fff;\n  border: none;\n}\n.tui-full-calendar-confirm:hover {\n  background-color: #e55b15;\n  color: #fff;\n}\n.tui-full-calendar-confirm:active {\n  background-color: #d95614;\n  color: #fff;\n}\n.tui-full-calendar-icon.tui-full-calendar-right {\n  float: right;\n  top: 1px;\n}\n.tui-full-calendar-icon .tui-full-calendar-none {\n  display: none;\n}\n.tui-full-calendar-icon.tui-full-calendar-calendar-dot {\n  border-radius: 8px;\n  width: 12px;\n  height: 12px;\n  margin: 1px;\n}\ninput[type='checkbox'].tui-full-calendar-checkbox-square {\n  display: none;\n}\ninput[type='checkbox'].tui-full-calendar-checkbox-square + span {\n  display: inline-block;\n  cursor: pointer;\n  line-height: 14px;\n  margin-right: 8px;\n  width: 14px;\n  height: 14px;\n  background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAAAXNSR0IArs4c6QAAADpJREFUKBVjPHfu3O5///65MJAAmJiY9jCcOXPmP6kApIeJBItQlI5qRAkOVM5o4KCGBwqPkcxEvhsAbzRE+Jhb9IwAAAAASUVORK5CYII=) no-repeat;\n  vertical-align: middle;\n}\ninput[type='checkbox'].tui-full-calendar-checkbox-square:checked + span {\n  background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAAAXNSR0IArs4c6QAAAMBJREFUKBWVkjEOwjAMRe2WgZW7IIHEDdhghhuwcQ42rlJugAQS54Cxa5cq1QM5TUpByZfS2j9+dlJVt/tX5ZxbS4ZU9VLkQvSHKTIGRaVJYFmKrBbTCJxE2UgCdDzMZDkHrOV6b95V0US6UmgKodujEZbJg0B0ZgEModO5lrY1TMQf1TpyJGBEjD+E2NPN7ukIUDiF/BfEXgRiGEw8NgkffYGYwCi808fpn/6OvfUfsDr/Vc1IfRf8sKnFVqeiVQfDu0tf/nWH9gAAAABJRU5ErkJggg==) no-repeat;\n}\ninput[type='checkbox'].tui-full-calendar-checkbox-round {\n  display: none;\n}\ninput[type='checkbox'].tui-full-calendar-checkbox-round + span {\n  display: inline-block;\n  cursor: pointer;\n  width: 14px;\n  height: 14px;\n  line-height: 14px;\n  vertical-align: middle;\n  margin-right: 8px;\n  border-radius: 8px;\n  border: solid 2px;\n  background: transparent;\n}\n.tui-full-calendar-popup-top-line {\n  position: absolute;\n  border-radius: 2px 2px 0 0;\n  width: 100%;\n  height: 4px;\n  border: none;\n  top: 0;\n}\n.tui-full-calendar-popup-detail .tui-full-calendar-popup-container {\n  width: 301px;\n  min-width: 301px;\n  padding-bottom: 0;\n}\n.tui-full-calendar-popup-detail .tui-full-calendar-icon {\n  width: 12px;\n  height: 12px;\n  background-size: 12px;\n  position: relative;\n  margin-right: 8px;\n}\n.tui-full-calendar-popup-detail .tui-full-calendar-icon.tui-full-calendar-ic-location-b {\n  top: -2px;\n}\n.tui-full-calendar-popup-detail .tui-full-calendar-icon.tui-full-calendar-ic-user-b {\n  top: -2px;\n}\n.tui-full-calendar-popup-detail .tui-full-calendar-icon.tui-full-calendar-ic-state-b {\n  top: -1px;\n}\n.tui-full-calendar-popup-detail .tui-full-calendar-icon.tui-full-calendar-calendar-dot {\n  width: 10px;\n  height: 10px;\n  margin-right: 8px;\n  top: -1px;\n}\n.tui-full-calendar-popup-detail .tui-full-calendar-content {\n  line-height: 24px;\n  height: 24px;\n  font-size: 12px;\n  line-height: 2;\n}\n.tui-full-calendar-popup-detail .tui-full-calendar-section-header {\n  margin-bottom: 6px;\n}\n.tui-full-calendar-popup-detail .tui-full-calendar-popup-detail-item-separate {\n  margin-top: 4px;\n}\n.tui-full-calendar-popup-detail .tui-full-calendar-popup-detail-item-indent {\n  text-indent: -20px;\n  padding-left: 20px;\n}\n.tui-full-calendar-popup-detail .tui-full-calendar-schedule-title {\n  font-size: 15px;\n  font-weight: bold;\n  line-height: 1.6;\n  word-break: break-all;\n}\n.tui-full-calendar-popup-detail .tui-full-calendar-schedule-private {\n  display: none;\n  width: 16px;\n  height: 16px;\n  background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAAAXNSR0IArs4c6QAAAKpJREFUKBVjYCATMKLri46Olvn9+3fX////HUByjIyMB1hZWcuWLl36BFktikaQpl+/fl0EKhBCVgRkv2NjY9NH1syErABkE1TTdqBCWRAG8reDxKBycOUoGmHOA2pIA5kOwiA2SDVMDqYTRSNQUBIkgewkJDZYDqYR7sewsLCtQFO9YBLYaGBAbVu1apU3SA5uIyFNIMXIauAaQRKkgBGlERTURATOVpgaABRQQOK46wEAAAAAAElFTkSuQmCC) no-repeat 16px;\n}\n.tui-full-calendar-popup-detail .tui-full-calendar-schedule-private .tui-full-calendar-ic-private {\n  display: block;\n}\n.tui-full-calendar-popup-detail .tui-full-calendar-section-detail {\n  margin-bottom: 16px;\n}\n.tui-full-calendar-popup-detail .tui-full-calendar-section-button {\n  border-top: 1px solid #e5e5e5;\n  font-size: 0;\n}\n.tui-full-calendar-section-button .tui-full-calendar-icon {\n  margin-right: 4px;\n  top: -3px;\n}\n.tui-full-calendar-section-button .tui-full-calendar-content {\n  position: relative;\n  top: 2px;\n}\n.tui-full-calendar-popup-edit,\n.tui-full-calendar-popup-delete {\n  display: inline-block;\n  padding: 7px 9px 11px 9px;\n  width: calc(50% - 1px);\n  outline: none;\n  background: none;\n  border: none;\n  cursor: pointer;\n}\n.tui-full-calendar-popup-vertical-line {\n  background: #e5e5e5;\n  width: 1px;\n  height: 14px;\n  vertical-align: middle;\n  display: inline-block;\n  margin-top: -7px;\n}\n.tui-datepicker {\n  left: -12px;\n  z-index: 1;\n  border-color: #d5d5d5;\n}\n.tui-full-calendar-icon {\n  width: 14px;\n  height: 14px;\n  display: inline-block;\n  vertical-align: middle;\n}\n.tui-full-calendar-icon.tui-full-calendar-ic-title {\n  background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAAAXNSR0IArs4c6QAAAO5JREFUKBVjYCATMOLSFxkZqfHnz5+1QHktNDVbV69e7cOCJgjmQjXtB3IksMh7g8SY0CXQNTEyMlYD1fBCabhyFI3omkCq/v//PwnotC8gGq4LyIBrxKYJpBBoU15oaCgPiEbWCPYjUEIFGBBY/QS0qRWooRVIg/UBDXgMYoBtBHJSgWxsAQFWjET8BBqQBuLDNM4Can6GpAAb8ydQMADo3x0gSbDGlStX3gVqdMSjGUUTSCNKAggPD1cDOmU/EEuBJKEAQxNIHEUjSABNM1ZNIHXMIAIZXL169a2+vv5moK18QKeXAv20B1meYjYAr7xrljpOzc0AAAAASUVORK5CYII=) no-repeat;\n}\n.tui-full-calendar-icon.tui-full-calendar-ic-location {\n  background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAAAXNSR0IArs4c6QAAAR1JREFUKBWdUTtPg1AUBiT8CydHJtv/0MTJRWAgcTK1bq0/pO3k4E4IYLo2Me46tS4wumjSpV07kAb6HXLPzaGPRZLL+c73uE/D+OdnHuaCIOhVVTUEf620pWVZ0yRJ3qW3FfR9f1zX9UgaGJumOUnT9Fn3DDzPuwPOuD9TvSzL3kizhOFJ4LnjOJc0wM0FP2Asgx0mEehHUfRHgzDzqF3GOogzbJg8V6XHFqYv4Cvqy7J8DcOwWYmw8Hwy1kHMRjcaKuEGgV82caWbZay3indagJyxcKLOlKeRdJA627YfUVaN0v6tlKbZVjCO4zW2cw91px3AxJEmOONCNoTzPP9xXZfOd6u0Bzz60RGOgmQuiuIb4S3gB0IvaoJW2QMDs1bBoH1CAQAAAABJRU5ErkJggg==) no-repeat;\n}\n.tui-full-calendar-icon.tui-full-calendar-ic-date {\n  background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAAAXNSR0IArs4c6QAAAGpJREFUKBVjYKAGCA0N/Q/C6GZhE2cEKQoLC9v6//9/L3QN2PiMjIzbVq1a5c0EkiRWE7JasEZsJhMSI1sjC7LJq1evBvsZWQyZjRxwZNs4hDSiBA6y55EDBRsb7EdQasAmiUNsKw5x4oQBkUAeDPJ53KsAAAAASUVORK5CYII=) no-repeat;\n}\n.tui-full-calendar-icon.tui-full-calendar-ic-state {\n  background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAAAXNSR0IArs4c6QAAAIxJREFUKBVjYCATMKLrCw8P9/z3798soLgMVO4JExNT2sqVK7cjq2VC5oDYME2MjIyNIAwUkoGKoShlQeFBOGCbVq1a1QDihoaG1gMpmO0gITAAOzUsLGzr////vWCC+GigK7YBDfUGO5VYTSADYWox/IjPNmS5UY3IoYHGBgcOKG7QxPFxt+KTJCgHAGcZJbGLRuJ2AAAAAElFTkSuQmCC) no-repeat;\n}\n.tui-full-calendar-icon.tui-full-calendar-ic-private {\n  background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAAAXNSR0IArs4c6QAAAKpJREFUKBVjYCATMKLri46Olvn9+3fX////HUByjIyMB1hZWcuWLl36BFktikaQpl+/fl0EKhBCVgRkv2NjY9NH1syErABkE1TTdqBCWRAG8reDxKBycOUoGmHOA2pIA5kOwiA2SDVMDqYTRSNQUBIkgewkJDZYDqYR7sewsLCtQFO9YBLYaGBAbVu1apU3SA5uIyFNIMXIauAaQRKkgBGlERTURATOVpgaABRQQOK46wEAAAAAAElFTkSuQmCC) no-repeat;\n}\n.tui-full-calendar-icon.tui-full-calendar-ic-close {\n  background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAAAXNSR0IArs4c6QAAAJRJREFUKBXFkNERhCAMREUbuEKohzq0Eq2DDq6Da4B60KezDORkxj+ZwchmX0IYhtdWCGFl9y5g82NtzDnPdzAaudo76ZBS+nrvPxiInMkJcs5tMcZFfqcfxdqIRiELof+BiIJPg+mExmpmvKRn3zKj7OrG9Y79szPL14A1xEP0Hgy4gBZS5R7czHj3ehSgOzkVeyfuGrBw/WLm0hsAAAAASUVORK5CYII=) no-repeat;\n}\n.tui-full-calendar-ic-location-b {\n  background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAYAAABWdVznAAAAAXNSR0IArs4c6QAAAOZJREFUKBWVUT0KwjAUbkzGTuJWPYNDpV0cXD2ETuIRBK+gs4ubp3BwcXBp6eINBKWDgydoid9X8oKCggYeee/7S9IGwZ9LverTNO3Wdb2y1o6IK6WOWutFlmU30XmDE58hbgvpTA+Y+mJqCemS20jdG2N6LPYMICc6b5BrIG3ONBZ7CoVj7w0cfllGRDj+gKQpjt/iPU0ye/LkROcNANaoCUzjqqquIsBuHddAWoiyLO9RFHUwJ4JxR/qmKIqdYG9vCMNwCeIiJHuHecj/B0GSJBng7ifO+ErDPM8L4b7ucRzPWJ8ET1E7YC7tmi9qAAAAAElFTkSuQmCC);\n}\n.tui-full-calendar-ic-state-b {\n  background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAYAAABWdVznAAAAAXNSR0IArs4c6QAAAHlJREFUKBVjYCARMCKrNzEx8QTyZ/3//18GJM7IyPgESKWdOXNmO4gPAkwQCk6CFQMVNoIwVOMsuCw6w9jY+D8Iw8TR+SBxsJOATtkKNM0LphAbDbRxG9Bp3mAnEVIMMgCmBt0P2AxHERusGkAhgOJQ7Jyt2IUJiAIAwwIn24FgmhkAAAAASUVORK5CYII=);\n}\n.tui-full-calendar-icon.tui-full-calendar-ic-user-b {\n  background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAYAAABWdVznAAAAAXNSR0IArs4c6QAAAJpJREFUKBVjYKA1YES3wMTExBMoNgsqnnbmzJntyGqYkDlQ9qz////LgDCQD9MIV4ZNA1wSGwObhjRGRsYnIAzUkIZNE0licE+bm5tr/fnzJx1osjPQBFmoKY+BftnLwsIy8+TJk9dAYmANxsbGoUD2YiBmBwliAT+BYrFnz55dDfNDO1AAl2KQfpAcSA0DTIMyiEMAEKMG0wgAolIjcM7Tjm8AAAAASUVORK5CYII=);\n}\n.tui-full-calendar-icon.tui-full-calendar-ic-edit {\n  background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAYAAABWdVznAAAAAXNSR0IArs4c6QAAAMdJREFUKBVjYCARMOJTb2xsLMfIyBjLysq64Pjx409BapnwaQDKzf7//3/L79+/D1tbW0uB1LJg02BmZqYIVPgdKBf/79+//UC2xs+fP8OB/H4MG0CK//79ewCkEGQYExOTI5DawMnJuQTER/EDTDFQXA4kCQQ3QBpOnz79AsJF8gMWxTA1KDTYBhyKMUwH6WSysrKSB7kZyIY5AySOVTFIggno+5VAmijFYA1AwhzEgAKcJsMUwIMVGKPH2NnZ7ZFDBKYImQYAuO5YIMgk39gAAAAASUVORK5CYII=);\n}\n.tui-full-calendar-icon.tui-full-calendar-ic-delete {\n  background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAYAAABWdVznAAAAAXNSR0IArs4c6QAAAFhJREFUKBVjYCARMKKrNzEx2fr//38vkDgjI+O2M2fOeCOrAWtAVoQsicyGaWZCFsTHBtr6H588Tjm4H4yNjfGacPbsWbBaop0Es3JYaQBFDMxjWOitMDEA3EEZfFEISwUAAAAASUVORK5CYII=);\n}\n.tui-full-calendar-icon.tui-full-calendar-ic-arrow-solid-top {\n  background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAAAXNSR0IArs4c6QAAAIFJREFUKBVjYBj+gBmXF2NiYiTV1dV5rl279gWbGiZsgg0NDSw/f/5cCZRbBWJjU4PVRjExsR6g4nAgln/z5g3v1atXd6JrxtAYHh4e+v///z4khZa6urrXgJqvIYkxMCJzgJo0//37dwooxoMsDmR/YWJiMlu5cuV1NPFRLrYQAADMVCaUtbG7XwAAAABJRU5ErkJggg==) no-repeat;\n}\n.tui-full-calendar-icon.tui-full-calendar-ic-milestone {\n  background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAYAAABWdVznAAAAAXNSR0IArs4c6QAAAGFJREFUKBVjYCARMILU/3dw+I+hj5FxG+P+/d7o4rg1IKtE0syELI6T/f+/F0yOOA0w1UCa9hpYkGxjYDxwABwIILH/jo5bGWBuZ2TcClOHogEmCKKxBSlInPZ+ANlCEgAA37EU4AHbBQUAAAAASUVORK5CYII=) no-repeat;\n}\n.tui-full-calendar-icon.tui-full-calendar-ic-arrow-left {\n  background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAHCAYAAAAvZezQAAAAAXNSR0IArs4c6QAAAFZJREFUCB1jZICCyspK83///hUxgvhVVVV6f//+3c3ExJTMVFNTowqU2cHMzJzf3t6+hen379/zgIp2t7W1rQCpZmJlZU0C0q5AbREgAQwzwAIgGZgtADMCJqH/QyvhAAAAAElFTkSuQmCC) no-repeat;\n}\n.tui-full-calendar-icon.tui-full-calendar-ic-arrow-right {\n  background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAHCAYAAAAvZezQAAAAAXNSR0IArs4c6QAAAFxJREFUCB1jKC8vX1lZWWnOAAVMQLD4379/m6qqqvRAYowgAsiJAAr2sbCw2IMFQIIVFRUL////r8SCpMKVlZXVnhFooA9Q+VxmZmbXtra2S0xATizQYD8QB6QaAJMLJ9BqE9yTAAAAAElFTkSuQmCC) no-repeat;\n}\n.tui-full-calendar-ic-repeat-b {\n  background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAYAAABWdVznAAAAAXNSR0IArs4c6QAAAQpJREFUKBVjYCARMCKrNzU1tf/3718lUMwQiP8yMjKeYWJi6j516tRhExOThjNnzjTANQAFqv///98CVHQPSO8A0ixATa5AtjyQPgDETmfPngULMpiZmbn//fu3BSg4B6ggCyjxG8hm8PT0ZH/9+vUJoJgTiA8CTCACqDgXaOJ9Xl7eTJhikDhQcSVQsQGITT8A9rSxsfF/mJVApzWCQgPGd3BwYPny5cstoNOuAZ3rAwoJOAAqviAqKtoOEwAaxPr58+dpQL4iEGeAxJFt2AfkOwA1PQTSu4Em/gGyPYC0EpCuAdraCtIADiWgQCPQOmdmZmYHoNgVoCJfIB0CpG8DI84BphgoRjoAAAzgdELI91E5AAAAAElFTkSuQmCC);\n}\n/*# sourceMappingURL=src/css/main.css.map */\n","+prefix-classes(css-prefix)\n    .layout\n        height: 100%\n        position: relative\n        box-sizing: border-box\n\n        *\n            box-sizing: border-box\n\n    // Related with user interaction\n    .dragging\n        cursor: move\n\n    .resizing\n        cursor: row-resize\n\n    .resizing-x\n        cursor: col-resize\n\n    .hidden\n        display: none !important\n\n    .invisible span\n        visibility: hidden\n\n    .clear\n        clearfix()\n\n    .scroll-y\n        overflow-y: scroll\n\n    .dot\n        display: inline-block\n        position: relative\n        top: -1px\n        content: ''\n        width: 7px\n        height: 7px\n        border-radius: 50%\n\n.{css-prefix}holiday\n    color: red\n\n.{css-prefix}today\n    background: rgba(218, 229, 249, .3)\n\n// Drag handle\n.handle-x\n    background-position: center center\n    background-repeat: no-repeat\n    background-image: url(./image/handle-x.png)\n\n.handle-y\n    background-position: center center\n    background-repeat: no-repeat\n    background-image: url(./image/handle-y.png)\n\n// For Retina display\n@media only screen and (-moz-min-device-pixel-ratio: 1.5), only screen and (-o-min-device-pixel-ratio: 3/2), only screen and (-webkit-min-device-pixel-ratio: 1.5), only screen and (min-devicepixel-ratio: 1.5), only screen and (min-resolution: 1.5dppx)\n    .handle-x\n        background-image: url(./image/handle-x@2x.png)\n        background-size: 8px 4px\n\n    .handle-y\n        background-image: url(./image/handle-y@2x.png)\n        background-size: 4px 8px\n",".tui-full-calendar-layout {\n  height: 100%;\n  position: relative;\n  box-sizing: border-box;\n}\n.tui-full-calendar-layout * {\n  box-sizing: border-box;\n}\n.tui-full-calendar-dragging {\n  cursor: move;\n}\n.tui-full-calendar-resizing {\n  cursor: row-resize;\n}\n.tui-full-calendar-resizing-x {\n  cursor: col-resize;\n}\n.tui-full-calendar-hidden {\n  display: none !important;\n}\n.tui-full-calendar-invisible span {\n  visibility: hidden;\n}\n.tui-full-calendar-clear:after {\n  content: '';\n  display: block;\n  clear: both;\n}\n.tui-full-calendar-scroll-y {\n  overflow-y: scroll;\n}\n.tui-full-calendar-dot {\n  display: inline-block;\n  position: relative;\n  top: -1px;\n  content: '';\n  width: 7px;\n  height: 7px;\n  border-radius: 50%;\n}\n.tui-full-calendar-holiday {\n  color: #f00;\n}\n.tui-full-calendar-today {\n  background: rgba(218,229,249,0.3);\n}\n.handle-x {\n  background-position: center center;\n  background-repeat: no-repeat;\n  background-image: url(\"./image/handle-x.png\");\n}\n.handle-y {\n  background-position: center center;\n  background-repeat: no-repeat;\n  background-image: url(\"./image/handle-y.png\");\n}\n@media only screen and (-moz-min-device-pixel-ratio: 1.5), only screen and (-o-min-device-pixel-ratio: 3/2), only screen and (-webkit-min-device-pixel-ratio: 1.5), only screen and (min-devicepixel-ratio: 1.5), only screen and (min-resolution: 1.5dppx) {\n  .handle-x {\n    background-image: url(\"./image/handle-x@2x.png\");\n    background-size: 8px 4px;\n  }\n  .handle-y {\n    background-image: url(\"./image/handle-y@2x.png\");\n    background-size: 4px 8px;\n  }\n}\n.tui-full-calendar-month-week-item .tui-full-calendar-weekday-grid {\n  overflow-y: hidden;\n}\n.tui-full-calendar-month-week-item .tui-full-calendar-weekday-schedules {\n  overflow-y: visible;\n  height: 0;\n}\n.tui-full-calendar-month-week-item .tui-full-calendar-weekday-schedule {\n  margin: 0 10px;\n}\n.tui-full-calendar-month-week-item .tui-full-calendar-today {\n  background: none;\n}\n.tui-full-calendar-month-week-item .tui-full-calendar-today .tui-full-calendar-weekday-grid-date-decorator {\n  display: inline-block;\n  width: 27px;\n  height: 27px;\n  line-height: 27px;\n  text-align: center;\n  background: #135de6;\n  border-radius: 50%;\n  color: #fff;\n  font-weight: bold;\n  margin-left: 2px;\n}\n.tui-full-calendar-weekday-container,\n.tui-full-calendar-weekday-grid,\n.tui-full-calendar-weekday-grid-line {\n  height: 100%;\n  min-height: inherit;\n}\n.tui-full-calendar-weekday-grid {\n  position: absolute;\n  width: 100%;\n  overflow-y: scroll;\n}\n.tui-full-calendar-weekday-border {\n  border-top: 1px solid #ddd;\n}\n.tui-full-calendar-weekday-container {\n  position: relative;\n}\n.tui-full-calendar-weekday-container>div {\n  height: 100%;\n}\n.tui-full-calendar-weekday-grid-line {\n  position: absolute;\n  padding: 3px;\n}\n.tui-full-calendar-weekday-grid-line .tui-full-calendar-weekday-grid-footer {\n  position: absolute;\n  bottom: 4px;\n}\n.tui-full-calendar-weekday-grid-line .tui-full-calendar-weekday-grid-date {\n  display: inline-block;\n  width: 27px;\n  height: 27px;\n  line-height: 27px;\n  text-align: center;\n}\n.tui-full-calendar-weekday-grid-line .tui-full-calendar-weekday-grid-date-title {\n  line-height: 27px;\n  margin-right: 5px;\n}\n.tui-full-calendar-weekday-grid-line .tui-full-calendar-weekday-grid-more-schedules {\n  float: right;\n  display: inline-block;\n  height: 27px;\n  line-height: 27px;\n  padding: 0 5px;\n  text-align: center;\n  font-size: 11px;\n  font-weight: bold;\n  color: #aaa;\n}\n.tui-full-calendar-weekday-creation {\n  top: 0;\n  left: 0;\n  width: 100%;\n  height: 100%;\n  position: absolute;\n  overflow-y: scroll;\n}\n.tui-full-calendar-weekday-schedules {\n  top: 0;\n  left: 0;\n  width: 100%;\n  height: 100%;\n  position: absolute;\n  font-size: 12px;\n  overflow-y: scroll;\n}\n.tui-full-calendar-weekday-schedules-height-span {\n  width: 1px;\n  margin-left: -1px;\n}\n.tui-full-calendar-weekday-schedule-block {\n  position: absolute;\n}\n.tui-full-calendar-weekday-schedule-block-dragging-dim {\n  opacity: 0.3;\n}\n.tui-full-calendar-weekday-schedule {\n  position: relative;\n  margin: 0 10px 0 1px;\n  cursor: pointer;\n  border-left-style: solid;\n  border-left-width: 3px;\n}\n.tui-full-calendar-weekday-schedule.tui-full-calendar-weekday-schedule-time {\n  border-left-width: 0;\n}\n.tui-full-calendar-weekday-schedule.tui-full-calendar-weekday-schedule-time .tui-full-calendar-weekday-schedule-title {\n  padding-left: 9px;\n}\n.tui-full-calendar-weekday-schedule-bullet {\n  position: absolute;\n  padding: 0;\n  width: 6px;\n  height: 6px;\n  top: 6px;\n  left: 0;\n  border-radius: 50%;\n}\n.tui-full-calendar-weekday-schedule-bullet-focused {\n  left: 10px;\n  background: #fff;\n}\n.tui-full-calendar-weekday-schedule-title {\n  display: block;\n  white-space: nowrap;\n  overflow: hidden;\n  text-overflow: ellipsis;\n  padding-left: 3px;\n  font-weight: bold;\n}\n.tui-full-calendar-weekday-schedule-title-focused {\n  padding-left: 16px;\n}\n.tui-full-calendar-weekday-schedule-cover {\n  position: absolute;\n  top: 0;\n  width: 100%;\n  height: 100%;\n  background-color: rgba(0,0,0,0.2);\n  box-shadow: 0 2px 6px 0 rgba(0,0,0,0.1);\n}\n.tui-full-calendar-weekday-exceed-left .tui-full-calendar-weekday-schedule {\n  margin-left: 0;\n  border-left-width: 0;\n}\n.tui-full-calendar-weekday-exceed-right .tui-full-calendar-weekday-schedule {\n  margin-right: 0;\n}\n.tui-full-calendar-weekday-exceed-right .tui-full-calendar-weekday-resize-handle {\n  display: none;\n}\n.tui-full-calendar-weekday-exceed-in-month {\n  cursor: pointer;\n}\n.tui-full-calendar-weekday-exceed-in-month:hover {\n  background-color: #f0f1f5;\n}\n.tui-full-calendar-weekday-exceed-in-week,\n.tui-full-calendar-weekday-collapse-btn {\n  position: absolute;\n  bottom: 5px;\n  margin-right: 5px;\n  font-size: 12px;\n  line-height: 14px;\n  cursor: pointer;\n  padding: 1px 5px;\n  background-color: #fff;\n  border: 1px solid #ddd;\n  color: #000;\n}\n.tui-full-calendar-weekday-resize-handle {\n  position: absolute;\n  top: 0;\n  right: 0;\n  width: 6px;\n  background-position: 3px center;\n  cursor: col-resize;\n  line-height: 18px;\n}\n.tui-full-calendar-weekday-filled {\n  background-color: #e8e8e8 !important;\n}\n.tui-full-calendar-left {\n  height: 100%;\n  float: left;\n  box-sizing: border-box;\n  display: table;\n}\n.tui-full-calendar-left-content {\n  display: table-cell;\n  vertical-align: middle;\n  text-align: right;\n  font-size: 11px;\n}\n.tui-full-calendar-right {\n  height: 100%;\n  overflow-y: scroll;\n  position: relative;\n}\n.tui-full-calendar-week-container {\n  width: 100%;\n  height: inherit;\n  display: inline-block;\n  font-size: 10px;\n  min-height: 600px;\n}\n.tui-full-calendar-week-container .tui-full-calendar-today {\n  background: none;\n}\n.tui-full-calendar-dayname {\n  position: absolute;\n  margin-left: -1px;\n  height: 100%;\n  overflow: hidden;\n}\n.tui-full-calendar-dayname.tui-full-calendar-today {\n  font-weight: bold;\n}\n.tui-full-calendar-dayname-container {\n  overflow-y: scroll;\n}\n.tui-full-calendar-dayname-leftmargin {\n  position: relative;\n  height: 100%;\n}\n.tui-full-calendar-dayname-date {\n  font-size: 26px;\n}\n.tui-full-calendar-dayname-name {\n  font-weight: bold;\n  font-size: 12px;\n}\n.tui-full-calendar-daygrid-layout {\n  height: 100%;\n}\n.tui-full-calendar-daygrid-layout .tui-full-calendar-right {\n  overflow-y: hidden;\n}\n.tui-full-calendar-daygrid-guide-creation-block {\n  position: absolute;\n  top: 0;\n  bottom: 0;\n  z-index: 1;\n}\n.tui-full-calendar-timegrid-container {\n  height: 100%;\n  position: relative;\n  overflow: hidden;\n  overflow-y: scroll;\n}\n.tui-full-calendar-timegrid-container-split {\n  height: 100%;\n  position: relative;\n  overflow: hidden;\n}\n.tui-full-calendar-timegrid-left {\n  position: absolute;\n}\n.tui-full-calendar-timegrid-hour {\n  position: relative;\n  color: #555;\n  box-sizing: border-box;\n}\n.tui-full-calendar-timegrid-hour:first-child span {\n  display: none;\n}\n.tui-full-calendar-timegrid-hour:last-child {\n  border-bottom: none;\n}\n.tui-full-calendar-timegrid-hour span {\n  position: absolute;\n  top: -11px;\n  left: 0;\n  right: 5px;\n  text-align: right;\n  line-height: 25px;\n}\n.tui-full-calendar-timegrid-right {\n  position: relative;\n}\n.tui-full-calendar-timegrid-gridline {\n  border-bottom: 1px solid #eee;\n  box-sizing: border-box;\n}\n.tui-full-calendar-timegrid-gridline:last-child {\n  border-bottom: none;\n}\n.tui-full-calendar-timegrid-schedules {\n  position: absolute;\n  width: 100%;\n  height: 100%;\n  top: 0;\n  left: 0;\n  cursor: pointer;\n}\n.tui-full-calendar-timegrid-hourmarker {\n  position: absolute;\n  width: 100%;\n  display: table;\n}\n.tui-full-calendar-timegrid-hourmarker-line-left {\n  position: absolute;\n  min-height: 1px;\n  left: 0;\n}\n.tui-full-calendar-timegrid-hourmarker-line-today {\n  position: absolute;\n  min-height: 1px;\n}\n.tui-full-calendar-timegrid-hourmarker-line-right {\n  position: absolute;\n  min-height: 1px;\n  right: 0;\n}\n.tui-full-calendar-timegrid-hourmarker-time {\n  padding-right: 5px;\n  line-height: 12px;\n  text-align: right;\n  display: table-cell;\n  vertical-align: bottom;\n}\n.tui-full-calendar-timegrid-todaymarker {\n  position: absolute;\n  text-indent: -9999px;\n  width: 9px;\n  height: 9px;\n  background-color: #135de6;\n  margin: -4px 0 0 -5px;\n  border-radius: 50%;\n}\n.tui-full-calendar-timegrid-sticky-container {\n  position: absolute;\n  top: 0;\n}\n.tui-full-calendar-timegrid-timezone-label-container {\n  position: absolute;\n}\n.tui-full-calendar-timegrid-timezone-label-cell {\n  display: table;\n}\n.tui-full-calendar-timegrid-timezone-label {\n  display: table-cell;\n  vertical-align: middle;\n  padding-right: 5px;\n  text-align: right;\n}\n.tui-full-calendar-timegrid-timezone-close-btn {\n  cursor: pointer;\n  position: absolute;\n  text-align: center;\n  background-color: #fff;\n}\n.tui-full-calendar-timegrid-timezone-close-btn .tui-full-calendar-icon {\n  width: 5px;\n  height: 10px;\n}\n.tui-full-calendar-time-date {\n  position: absolute;\n  height: 100%;\n  margin-left: -1px;\n  box-sizing: content-box;\n}\n.tui-full-calendar-time-date:last-child {\n  border-right: none;\n  margin: 0;\n}\n.tui-full-calendar-time-date:last-child .tui-full-calendar-time-schedule,\n.tui-full-calendar-time-date:last-child .tui-full-calendar-time-guide-creation {\n  left: 0px;\n}\n.tui-full-calendar-time-date-schedule-block-wrap {\n  position: relative;\n  height: 100%;\n}\n.tui-full-calendar-time-date-schedule-block {\n  position: absolute;\n  right: 0px;\n}\n.tui-full-calendar-time-date-schedule-block-pending {\n  opacity: 0.7;\n}\n.tui-full-calendar-time-date-schedule-block-dragging-dim {\n  opacity: 0.3;\n}\n.tui-full-calendar-time-date-schedule-block-focused {\n  box-shadow: 0 0 8px 0 rgba(0,0,0,0.2);\n}\n.tui-full-calendar-time-date-schedule-block-cover {\n  position: absolute;\n  top: 0;\n  width: 100%;\n  height: 100%;\n  background-color: rgba(0,0,0,0.2);\n  box-shadow: 0 2px 6px 0 rgba(0,0,0,0.1);\n}\n.tui-full-calendar-time-schedule {\n  position: relative;\n  left: 1px;\n  height: 100%;\n  overflow: hidden;\n  font-size: 12px;\n  font-weight: bold;\n}\n.tui-full-calendar-time-schedule-content {\n  overflow: hidden;\n  border-left-width: 3px;\n  border-left-style: solid;\n  padding: 1px 0 0 3px;\n}\n.tui-full-calendar-time-schedule-content-travel-time {\n  font-weight: normal;\n  font-size: 11px;\n}\n.tui-full-calendar-time-resize-handle {\n  position: absolute;\n  right: 0px;\n  bottom: 0px;\n  left: 0px;\n  height: 5px;\n  text-align: center;\n  color: #fff;\n  cursor: row-resize;\n  background-position: center top;\n}\n.tui-full-calendar-time-guide-creation {\n  position: absolute;\n  right: 10px;\n  left: 1px;\n  padding: 3px;\n}\n.tui-full-calendar-time-guide-move .tui-full-calendar-time-schedule,\n.tui-full-calendar-time-guide-resize .tui-full-calendar-time-schedule,\n.tui-full-calendar-time-guide-move .tui-full-calendar-time-resize-handle,\n.tui-full-calendar-time-guide-resize .tui-full-calendar-time-resize-handle {\n  opacity: 0.8;\n  z-index: 97;\n}\n.tui-full-calendar-time-guide-creation-label {\n  cursor: default;\n}\n.tui-full-calendar-time-guide-bottom {\n  position: absolute;\n  bottom: 3px;\n}\n.tui-full-calendar-month {\n  height: 100%;\n  min-height: 600px;\n}\n.tui-full-calendar-month-dayname {\n  width: 100%;\n  position: absolute;\n  font-size: 13px;\n}\n.tui-full-calendar-month-dayname-item {\n  height: 100%;\n  font-weight: bold;\n}\n.tui-full-calendar-month-week-item {\n  position: relative;\n}\n.tui-full-calendar-month-week-item>div {\n  height: 100%;\n}\n.tui-full-calendar-month-more {\n  height: inherit;\n  min-width: 280px;\n  min-height: 150px;\n}\n.tui-full-calendar-month-more-title {\n  position: relative;\n}\n.tui-full-calendar-month-more-title-day {\n  font-size: 23px;\n  color: #333;\n}\n.tui-full-calendar-month-more-title-day-label {\n  font-size: 12px;\n  color: #333;\n}\n.tui-full-calendar-month-more-close {\n  position: absolute;\n  right: 0;\n  outline: 0;\n  background: none;\n  border: 0;\n  font-size: 14px;\n  line-height: 28px;\n  padding: 0 7px;\n  cursor: pointer;\n}\n.tui-full-calendar-month-more-list {\n  overflow-y: auto;\n}\n.tui-full-calendar-month-more-schedule {\n  cursor: pointer;\n  display: block;\n  overflow: hidden;\n  white-space: nowrap;\n  text-overflow: ellipsis;\n  font-size: 12px;\n}\n.tui-full-calendar-month-guide-block {\n  position: absolute;\n}\n.tui-full-calendar-month-weekday-schedule {\n  margin-top: 2px;\n}\n.tui-full-calendar-month-creation-guide {\n  top: 0;\n  bottom: -1px;\n  left: -1px;\n  right: 0;\n  position: absolute;\n  z-index: 20;\n}\n.tui-full-calendar-month-guide-focused {\n  box-shadow: 0 0 8px 0 rgba(0,0,0,0.2);\n}\n.tui-full-calendar-month-guide {\n  position: relative;\n  padding-left: 3px;\n  line-height: 18px;\n  overflow: hidden;\n  white-space: nowrap;\n  text-overflow: ellipsis;\n}\n.tui-full-calendar-month-guide-cover {\n  width: 100%;\n  position: absolute;\n  top: -50%;\n  left: -50%;\n  background-color: rgba(0,0,0,0.2);\n  box-shadow: 0 2px 6px 0 rgba(0,0,0,0.1);\n}\n.tui-full-calendar-month-exceed-left .tui-full-calendar-month-guide {\n  margin-left: 0px;\n}\n.tui-full-calendar-month-exceed-right .tui-full-calendar-month-guide {\n  margin-right: 0px;\n}\n.tui-full-calendar-month-exceed-right .tui-full-calendar-month-guide-handle {\n  display: none;\n}\n.tui-full-calendar-month-guide-handle {\n  position: absolute;\n  top: 0;\n  right: 3px;\n  width: 6px;\n  background-position: 3px center;\n  cursor: col-resize;\n}\n.tui-full-calendar-vlayout-container {\n  position: relative;\n}\n.tui-full-calendar-splitter {\n  clear: left;\n  cursor: row-resize;\n}\n.tui-full-calendar-splitter:hover {\n  border-color: #999;\n}\n.tui-full-calendar-splitter-focused {\n  background-color: #ddd;\n  border: none;\n}\n.tui-full-calendar-splitter-guide {\n  position: absolute;\n  width: 100%;\n  height: 3px;\n  border: none;\n  background-color: #e8e8e8;\n}\n.tui-full-calendar-popup {\n  position: absolute;\n  font-weight: 2.5;\n  box-shadow: 0 2px 6px 0 rgba(0,0,0,0.1);\n  clear: both;\n}\n.tui-full-calendar-popup-container {\n  min-width: 474px;\n  box-shadow: 0 2px 6px 0 rgba(0,0,0,0.1);\n  background-color: #fff;\n  border: solid 1px #d5d5d5;\n  padding: 17px;\n  border-radius: 2px;\n}\n.tui-full-calendar-popup-section {\n  font-size: 0;\n  min-height: 40px;\n}\n.tui-full-calendar-section-calendar {\n  width: 176px;\n}\n.tui-full-calendar-section-calendar.tui-full-calendar-hide {\n  height: 21px;\n  visibility: hidden;\n}\n.tui-full-calendar-section-title {\n  width: calc(100% - 36px);\n  padding-right: 4px;\n}\n.tui-full-calendar-section-title input {\n  width: 365px;\n}\n.tui-full-calendar-button.tui-full-calendar-section-private {\n  height: 32px;\n  padding: 8px;\n  font-size: 0;\n  margin-left: 4px;\n}\n.tui-full-calendar-section-private.tui-full-calendar-public .tui-full-calendar-ic-private {\n  background: url(\"image/ic-unlock.png\") no-repeat;\n}\n.tui-full-calendar-section-start-date,\n.tui-full-calendar-section-end-date {\n  width: 176px;\n}\n.tui-full-calendar-section-start-date input,\n.tui-full-calendar-section-end-date input {\n  width: 139px;\n}\n.tui-full-calendar-section-start-date:hover .tui-full-calendar-popup-section-item,\n.tui-full-calendar-section-end-date:hover .tui-full-calendar-popup-section-item,\n.tui-full-calendar-section-start-date:focus .tui-full-calendar-popup-section-item,\n.tui-full-calendar-section-end-date:focus .tui-full-calendar-popup-section-item,\n.tui-full-calendar-section-start-date:hover .tui-datepicker,\n.tui-full-calendar-section-end-date:hover .tui-datepicker,\n.tui-full-calendar-section-start-date:focus .tui-datepicker,\n.tui-full-calendar-section-end-date:focus .tui-datepicker {\n  border-color: #bbb;\n}\n.tui-full-calendar-popup-section-item:focus {\n  border-color: #bbb;\n}\n.tui-full-calendar-section-date-dash {\n  font-size: 12px;\n  color: #d5d5d5;\n  height: 32px;\n  padding: 0 4px;\n  vertical-align: middle;\n}\n.tui-full-calendar-popup-section-item.tui-full-calendar-section-allday {\n  border: none;\n  padding: 0 0 0 8px;\n  cursor: pointer;\n}\n.tui-full-calendar-popup-section-item.tui-full-calendar-section-location {\n  display: block;\n}\n.tui-full-calendar-popup-section-item.tui-full-calendar-section-location input {\n  width: 400px;\n}\n.tui-full-calendar-section-allday .tui-full-calendar-icon.tui-full-calendar-ic-checkbox {\n  margin: 0;\n}\n.tui-full-calendar-popup-section-item.tui-full-calendar-section-allday .tui-full-calendar-content {\n  padding-left: 4px;\n}\n.tui-full-calendar-section-state {\n  width: 109px;\n}\n.tui-full-calendar-section-state .tui-full-calendar-content {\n  width: 58px;\n  text-overflow: ellipsis;\n  overflow: hidden;\n}\n.tui-full-calendar-popup-section-item {\n  height: 32px;\n  padding: 0 9px 0 12px;\n  border: 1px solid #d5d5d5;\n  display: inline-block;\n  font-size: 0;\n  border-radius: 2px;\n}\n.tui-full-calendar-popup-section-item:hover {\n  border-color: #bbb;\n}\n.tui-full-calendar-popup-section-item:focus {\n  border-color: #bbb;\n}\n.tui-full-calendar-popup-section-item .tui-full-calendar-icon {\n  position: relative;\n}\n.tui-full-calendar-popup-section-item .tui-full-calendar-content {\n  text-align: left;\n  display: inline-block;\n  font-size: 12px;\n  vertical-align: middle;\n  position: relative;\n  padding-left: 8px;\n}\n.tui-full-calendar-section-calendar .tui-full-calendar-dropdown-button .tui-full-calendar-content {\n  width: 125px;\n  text-overflow: ellipsis;\n  overflow: hidden;\n  top: -1px;\n}\n.tui-full-calendar-popup-section-item input {\n  border: none;\n  height: 30px;\n  outline: none;\n  display: inline-block;\n}\n.tui-full-calendar-popup-section-item input::placeholder {\n  color: #bbb;\n  font-weight: 300;\n}\n.tui-full-calendar-dropdown {\n  position: relative;\n}\n.tui-full-calendar-dropdown:hover .tui-full-calendar-dropdown-button {\n  border: 1px solid #bbb;\n}\n.tui-full-calendar-dropdown-button.tui-full-calendar-popup-section-item {\n  height: 32px;\n  font-size: 0;\n  top: -1px;\n}\n.tui-full-calendar-dropdown-arrow {\n  background: url(\"image/ic-arrow-solid-bottom.png\") no-repeat;\n}\n.dropdown.open .tui-full-calendar-dropdown-arrow,\n.tui-full-calendar-open .tui-full-calendar-dropdown-arrow {\n  background: url(\"image/ic-arrow-solid-top.png\") no-repeat;\n}\n.tui-full-calendar-dropdown-menu {\n  position: absolute;\n  top: 31px;\n  padding: 4px 0;\n  background-color: #fff;\n  border: 1px solid #d5d5d5;\n  border-top: none;\n  border-radius: 0 0 2px 2px;\n  width: 100%;\n  display: none;\n}\n.tui-full-calendar-dropdown:hover .tui-full-calendar-dropdown-menu {\n  border: 1px solid #bbb;\n  border-top: none;\n}\n.tui-full-calendar-open .tui-full-calendar-dropdown-menu {\n  display: block;\n}\n.tui-full-calendar-dropdown-menu-item {\n  height: 30px;\n  border: none;\n  cursor: pointer;\n}\n.tui-full-calendar-section-calendar .tui-full-calendar-dropdown-menu-item {\n  width: 100%;\n}\n.tui-full-calendar-section-state .tui-full-calendar-dropdown-menu-item {\n  width: 100%;\n}\n.tui-full-calendar-dropdown-menu-item:hover {\n  background-color: rgba(81,92,230,0.05);\n}\n.tui-full-calendar-dropdown-menu-item .tui-full-calendar-content {\n  line-height: 30px;\n}\n.tui-full-calendar-button.tui-full-calendar-popup-close {\n  position: absolute;\n  top: 10px;\n  right: 10px;\n  background-color: #fff;\n  padding: 2px;\n  border: none;\n}\n.tui-full-calendar-section-button-save {\n  height: 36px;\n}\n.tui-full-calendar-popup-save {\n  float: right;\n}\n.tui-full-calendar-popup-arrow-border,\n.tui-full-calendar-popup-arrow-fill {\n  position: absolute;\n}\n.tui-full-calendar-arrow-top .tui-full-calendar-popup-arrow-border {\n  border-top: none;\n  border-right: 8px solid transparent;\n  border-bottom: 8px solid #d5d5d5;\n  border-left: 8px solid transparent;\n  left: calc(50% - 8px);\n  top: -7px;\n}\n.tui-full-calendar-arrow-right .tui-full-calendar-popup-arrow-border {\n  border-top: 8px solid transparent;\n  border-right: none;\n  border-bottom: 8px solid transparent;\n  border-left: 8px solid #d5d5d5;\n  top: calc(50% - 8px);\n  right: -7px;\n}\n.tui-full-calendar-arrow-bottom .tui-full-calendar-popup-arrow-border {\n  border-top: 8px solid #d5d5d5;\n  border-right: 8px solid transparent;\n  border-bottom: none;\n  border-left: 8px solid transparent;\n  left: calc(50% - 8px);\n  bottom: -7px;\n}\n.tui-full-calendar-arrow-left .tui-full-calendar-popup-arrow-border {\n  border-top: 8px solid transparent;\n  border-right: 8px solid #d5d5d5;\n  border-bottom: 8px solid transparent;\n  border-left: none;\n  top: calc(50% - 8px);\n  left: -7px;\n}\n.tui-full-calendar-arrow-top .tui-full-calendar-popup-arrow-fill {\n  border-top: none;\n  border-right: 7px solid transparent;\n  border-bottom: 7px solid #fff;\n  border-left: 7px solid transparent;\n  left: -7px;\n  top: 1px;\n}\n.tui-full-calendar-arrow-right .tui-full-calendar-popup-arrow-fill {\n  border-top: 7px solid transparent;\n  border-right: none;\n  border-bottom: 7px solid transparent;\n  border-left: 7px solid #fff;\n  top: -7px;\n  right: 1px;\n}\n.tui-full-calendar-arrow-bottom .tui-full-calendar-popup-arrow-fill {\n  border-top: 7px solid #fff;\n  border-right: 7px solid transparent;\n  border-bottom: none;\n  border-left: 7px solid transparent;\n  left: -7px;\n  bottom: 1px;\n}\n.tui-full-calendar-arrow-left .tui-full-calendar-popup-arrow-fill {\n  border-top: 7px solid transparent;\n  border-right: 7px solid #fff;\n  border-bottom: 7px solid transparent;\n  border-left: none;\n  top: -7px;\n  left: 1px;\n}\n.tui-full-calendar-button {\n  background: #fff;\n  border: 1px solid #d5d5d5;\n  border-radius: 2px;\n  text-align: center;\n  outline: none;\n  font-size: 12px;\n  cursor: pointer;\n  color: #333;\n}\n.tui-full-calendar-button:hover {\n  border-color: #bbb;\n  color: #333;\n}\n.tui-full-calendar-button:active {\n  background: #f9f9f9;\n  color: #333;\n}\n.tui-full-calendar-button .round {\n  border-radius: 25px;\n}\n.tui-full-calendar-confirm {\n  width: 96px;\n  height: 36px;\n  border-radius: 40px;\n  background-color: #ff6618;\n  font-size: 12px;\n  font-weight: bold;\n  color: #fff;\n  border: none;\n}\n.tui-full-calendar-confirm:hover {\n  background-color: #e55b15;\n  color: #fff;\n}\n.tui-full-calendar-confirm:active {\n  background-color: #d95614;\n  color: #fff;\n}\n.tui-full-calendar-icon.tui-full-calendar-right {\n  float: right;\n  top: 1px;\n}\n.tui-full-calendar-icon .tui-full-calendar-none {\n  display: none;\n}\n.tui-full-calendar-icon.tui-full-calendar-calendar-dot {\n  border-radius: 8px;\n  width: 12px;\n  height: 12px;\n  margin: 1px;\n}\ninput[type='checkbox'].tui-full-calendar-checkbox-square {\n  display: none;\n}\ninput[type='checkbox'].tui-full-calendar-checkbox-square + span {\n  display: inline-block;\n  cursor: pointer;\n  line-height: 14px;\n  margin-right: 8px;\n  width: 14px;\n  height: 14px;\n  background: url(\"image/ic-checkbox-normal.png\") no-repeat;\n  vertical-align: middle;\n}\ninput[type='checkbox'].tui-full-calendar-checkbox-square:checked + span {\n  background: url(\"image/ic-checkbox-checked.png\") no-repeat;\n}\ninput[type='checkbox'].tui-full-calendar-checkbox-round {\n  display: none;\n}\ninput[type='checkbox'].tui-full-calendar-checkbox-round + span {\n  display: inline-block;\n  cursor: pointer;\n  width: 14px;\n  height: 14px;\n  line-height: 14px;\n  vertical-align: middle;\n  margin-right: 8px;\n  border-radius: 8px;\n  border: solid 2px;\n  background: transparent;\n}\n.tui-full-calendar-popup-top-line {\n  position: absolute;\n  border-radius: 2px 2px 0 0;\n  width: 100%;\n  height: 4px;\n  border: none;\n  top: 0;\n}\n.tui-full-calendar-popup-detail .tui-full-calendar-popup-container {\n  width: 301px;\n  min-width: 301px;\n  padding-bottom: 0;\n}\n.tui-full-calendar-popup-detail .tui-full-calendar-icon {\n  width: 12px;\n  height: 12px;\n  background-size: 12px;\n  position: relative;\n  margin-right: 8px;\n}\n.tui-full-calendar-popup-detail .tui-full-calendar-icon.tui-full-calendar-ic-location-b {\n  top: -2px;\n}\n.tui-full-calendar-popup-detail .tui-full-calendar-icon.tui-full-calendar-ic-user-b {\n  top: -2px;\n}\n.tui-full-calendar-popup-detail .tui-full-calendar-icon.tui-full-calendar-ic-state-b {\n  top: -1px;\n}\n.tui-full-calendar-popup-detail .tui-full-calendar-icon.tui-full-calendar-calendar-dot {\n  width: 10px;\n  height: 10px;\n  margin-right: 8px;\n  top: -1px;\n}\n.tui-full-calendar-popup-detail .tui-full-calendar-content {\n  line-height: 24px;\n  height: 24px;\n  font-size: 12px;\n  line-height: 2;\n}\n.tui-full-calendar-popup-detail .tui-full-calendar-section-header {\n  margin-bottom: 6px;\n}\n.tui-full-calendar-popup-detail .tui-full-calendar-popup-detail-item-separate {\n  margin-top: 4px;\n}\n.tui-full-calendar-popup-detail .tui-full-calendar-popup-detail-item-indent {\n  text-indent: -20px;\n  padding-left: 20px;\n}\n.tui-full-calendar-popup-detail .tui-full-calendar-schedule-title {\n  font-size: 15px;\n  font-weight: bold;\n  line-height: 1.6;\n  word-break: break-all;\n}\n.tui-full-calendar-popup-detail .tui-full-calendar-schedule-private {\n  display: none;\n  width: 16px;\n  height: 16px;\n  background: url(\"image/ic-lock.png\") no-repeat 16px;\n}\n.tui-full-calendar-popup-detail .tui-full-calendar-schedule-private .tui-full-calendar-ic-private {\n  display: block;\n}\n.tui-full-calendar-popup-detail .tui-full-calendar-section-detail {\n  margin-bottom: 16px;\n}\n.tui-full-calendar-popup-detail .tui-full-calendar-section-button {\n  border-top: 1px solid #e5e5e5;\n  font-size: 0;\n}\n.tui-full-calendar-section-button .tui-full-calendar-icon {\n  margin-right: 4px;\n  top: -3px;\n}\n.tui-full-calendar-section-button .tui-full-calendar-content {\n  position: relative;\n  top: 2px;\n}\n.tui-full-calendar-popup-edit,\n.tui-full-calendar-popup-delete {\n  display: inline-block;\n  padding: 7px 9px 11px 9px;\n  width: calc(50% - 1px);\n  outline: none;\n  background: none;\n  border: none;\n  cursor: pointer;\n}\n.tui-full-calendar-popup-vertical-line {\n  background: #e5e5e5;\n  width: 1px;\n  height: 14px;\n  vertical-align: middle;\n  display: inline-block;\n  margin-top: -7px;\n}\n.tui-datepicker {\n  left: -12px;\n  z-index: 1;\n  border-color: #d5d5d5;\n}\n.tui-full-calendar-icon {\n  width: 14px;\n  height: 14px;\n  display: inline-block;\n  vertical-align: middle;\n}\n.tui-full-calendar-icon.tui-full-calendar-ic-title {\n  background: url(\"image/ic-subject.png\") no-repeat;\n}\n.tui-full-calendar-icon.tui-full-calendar-ic-location {\n  background: url(\"image/ic-location.png\") no-repeat;\n}\n.tui-full-calendar-icon.tui-full-calendar-ic-date {\n  background: url(\"image/ic-date.png\") no-repeat;\n}\n.tui-full-calendar-icon.tui-full-calendar-ic-state {\n  background: url(\"image/ic-state.png\") no-repeat;\n}\n.tui-full-calendar-icon.tui-full-calendar-ic-private {\n  background: url(\"image/ic-lock.png\") no-repeat;\n}\n.tui-full-calendar-icon.tui-full-calendar-ic-close {\n  background: url(\"image/ic-close.png\") no-repeat;\n}\n.tui-full-calendar-ic-location-b {\n  background: url(\"./image/ic-location-b.png\");\n}\n.tui-full-calendar-ic-state-b {\n  background: url(\"./image/ic-state-b.png\");\n}\n.tui-full-calendar-icon.tui-full-calendar-ic-user-b {\n  background-image: url(\"./image/ic-user-b.png\");\n}\n.tui-full-calendar-icon.tui-full-calendar-ic-edit {\n  background-image: url(\"./image/ic-edit.png\");\n}\n.tui-full-calendar-icon.tui-full-calendar-ic-delete {\n  background-image: url(\"./image/ic-delete.png\");\n}\n.tui-full-calendar-icon.tui-full-calendar-ic-arrow-solid-top {\n  background: url(\"image/ic-arrow-solid-top.png\") no-repeat;\n}\n.tui-full-calendar-icon.tui-full-calendar-ic-milestone {\n  background: url(\"image/ic-milestone.png\") no-repeat;\n}\n.tui-full-calendar-icon.tui-full-calendar-ic-arrow-left {\n  background: url(\"image/ic-arrow-left.png\") no-repeat;\n}\n.tui-full-calendar-icon.tui-full-calendar-ic-arrow-right {\n  background: url(\"image/ic-arrow-right.png\") no-repeat;\n}\n.tui-full-calendar-ic-repeat-b {\n  background: url(\"./image/ic-repeat-b.png\");\n}\n/*# sourceMappingURL=src/css/main.css.map */","// Variables\n// default prefix\ncss-prefix = 'tui-full-calendar-'\n// Dayname\ndayname = css-prefix + 'dayname-'\n\nweekday = css-prefix + 'weekday-'\n// DayGrid\ndaygrid = css-prefix + 'daygrid-'\n// Time\ntimegrid = css-prefix + 'timegrid-'\ntime = css-prefix + 'time-'\n// Month\nmonth = css-prefix + 'month-'\n\n// Functions\nwh(w, h)\n    width: w\n    height: h\n\npos(top, left)\n    top: top\n    left: left\n\nclearfix()\n    &:after\n        content: '';\n        display: block;\n        clear: both;\n    \n",".{css-prefix}month-week-item\n    .{css-prefix}weekday-grid\n        overflow-y: hidden\n\n    .{css-prefix}weekday-schedules\n        overflow-y: visible\n        height: 0\n\n    .{css-prefix}weekday-schedule\n        margin: 0 10px\n\n    .{css-prefix}today\n        background: none\n\n        .{css-prefix}weekday-grid-date-decorator\n            display: inline-block\n            wh(27px, 27px)\n            line-height: 27px\n            text-align: center\n            background: #135de6\n            border-radius: 50%\n            color: #fff\n            font-weight: bold\n            margin-left: 2px\n\n+prefix-classes(weekday)\n    .container,\n    .grid,\n    .grid-line\n        height: 100%\n        min-height: inherit\n\n    .grid\n        position: absolute\n        width: 100%\n        overflow-y: scroll\n\n    .border\n        border-top: 1px solid #ddd\n\n    .container\n        position: relative\n        &>div\n            height: 100%\n\n    .grid-line\n        position: absolute\n        padding: 3px\n\n        .grid-footer\n            position: absolute\n            bottom: 4px\n\n        .grid-date\n            display: inline-block\n            wh(27px, 27px)\n            line-height: 27px\n            text-align: center\n\n        .grid-date-title\n            line-height: 27px\n            margin-right: 5px\n        \n        .grid-more-schedules\n            float: right\n            display: inline-block\n            height: 27px\n            line-height: 27px\n            padding: 0 5px\n            text-align: center\n            font-size: 11px\n            font-weight: bold\n            color: #aaaaaa\n\n    .creation\n        pos(0, 0)\n        wh(100%, 100%)\n        position: absolute\n        overflow-y: scroll\n\n    .schedules\n        pos(0, 0)\n        wh(100%, 100%)\n        position: absolute\n        font-size: 12px\n        overflow-y: scroll\n\n    .schedules-height-span\n        width: 1px\n        margin-left: -1px\n\n    .schedule-block\n        position: absolute\n\n    .schedule-block-dragging-dim\n        opacity: 0.3\n\n    .schedule\n        position: relative\n        margin: 0 10px 0 1px\n        cursor: pointer\n        border-left-style: solid\n        border-left-width: 3px\n\n        &.schedule-time\n            border-left-width: 0\n\n            .schedule-title\n                padding-left: 9px\n\n    .schedule-bullet\n        position: absolute\n        padding: 0\n        wh(6px, 6px)\n        top: 6px\n        left: 0\n        border-radius: 50%\n\n    .schedule-bullet-focused\n        left: 10px\n        background: #ffffff\n\n    .schedule-title\n        display: block\n        white-space: nowrap\n        overflow: hidden\n        text-overflow: ellipsis\n        padding-left: 3px;\n        font-weight: bold;\n\n    .schedule-title-focused\n        padding-left: 16px\n\n    .schedule-cover\n        position: absolute\n        top: 0\n        width: 100%\n        height: 100%\n        background-color: rgba(0, 0, 0, 0.2)\n        box-shadow: 0 2px 6px 0 rgba(0, 0, 0, 0.1);\n\n    .exceed-left .schedule\n        margin-left: 0\n        border-left-width: 0\n\n    .exceed-right .schedule\n        margin-right: 0\n\n    .exceed-right .resize-handle\n        display: none\n\n    .exceed-in-month\n        cursor: pointer\n        &:hover\n            background-color: #f0f1f5\n\n    .exceed-in-week, .collapse-btn\n        position: absolute\n        bottom: 5px\n        margin-right: 5px\n        font-size: 12px\n        line-height: 14px\n        cursor: pointer\n        padding: 1px 5px\n        background-color: #ffffff\n        border: 1px solid #dddddd\n        color: #000000\n\n    .resize-handle\n        position: absolute\n        top: 0\n        right: 0\n        width: 6px\n        background-position: 3px center\n        cursor: col-resize\n        line-height: 18px\n\n    .filled\n        background-color: #e8e8e8 !important\n\n+prefix-classes(css-prefix)\n    .left\n        height: 100%\n        float: left\n        box-sizing: border-box\n        display: table\n\n    .left-content\n        display: table-cell\n        vertical-align: middle\n        text-align: right\n        font-size: 11px\n\n\n    .right\n        height: 100%\n        overflow-y: scroll\n        position: relative\n",".{css-prefix}week-container\n    width: 100%\n    height: inherit\n    display: inline-block\n    font-size: 10px\n    min-height: 600px\n\n    .{css-prefix}today\n        background: none\n",".{css-prefix}dayname\n    position: absolute\n    margin-left: -1px\n    height: 100%\n    overflow: hidden\n\n    &.{css-prefix}today\n        font-weight: bold\n\n+prefix-classes(dayname)\n    .container\n        overflow-y: scroll\n\n    .leftmargin\n        position: relative\n        height: 100%\n    \n    .date\n        font-size: 26px\n    \n    .name\n        font-weight: bold\n        font-size: 12px\n","// DayGrid view\n+prefix-classes(daygrid)\n    .layout\n        height: 100%;\n\n.{css-prefix}daygrid-layout\n    .{css-prefix}right\n        overflow-y: hidden\n\n// Guide element\n+prefix-classes(daygrid + guide-)\n    .creation-block\n        position: absolute\n        top: 0\n        bottom: 0\n        z-index: 1\n","+prefix-classes(timegrid)\n    .container\n        height: 100%\n        position: relative\n        overflow: hidden\n        overflow-y: scroll\n\n    .container-split\n        height: 100%\n        position: relative\n        overflow: hidden\n\n    .left\n        position: absolute\n\n    .hour\n        position: relative\n        color: #555\n        box-sizing: border-box\n        &:first-child span\n            display: none\n        &:last-child\n            border-bottom: none\n\n    .hour span\n        position: absolute\n        top: -11px\n        left: 0\n        right: 5px\n        text-align: right\n        line-height: 25px\n\n    .right\n        position: relative\n\n    .gridline\n        border-bottom: 1px solid #eee\n        box-sizing: border-box\n        &:last-child\n            border-bottom: none\n\n    .schedules\n        position: absolute\n        wh(100%, 100%)\n        pos(0, 0)\n        cursor: pointer\n\n    // Hourmarker\n    .hourmarker\n        position: absolute\n        width: 100%\n        display: table\n\n    .hourmarker-line-left\n        position: absolute\n        min-height: 1px\n        left: 0\n\n    .hourmarker-line-today\n        position: absolute\n        min-height: 1px\n\n    .hourmarker-line-right\n        position: absolute\n        min-height: 1px\n        right: 0\n\n    .hourmarker-time\n        padding-right: 5px\n        line-height: 12px\n        text-align: right\n        display: table-cell\n        vertical-align: bottom\n\n    // Todaymarker\n    .todaymarker\n        position: absolute\n        text-indent: -9999px\n        wh(9px, 9px)\n        background-color: #135de6\n        margin: -4px 0 0 -5px\n        border-radius: 50%\n\n    .sticky-container\n        position: absolute\n        top: 0\n    \n    .timezone-label-container\n        position: absolute\n    \n    .timezone-label-cell\n        display: table\n    \n    .timezone-label\n        display: table-cell\n        vertical-align: middle\n        padding-right: 5px\n        text-align: right\n    \n    .timezone-close-btn\n        cursor: pointer\n        position: absolute\n        text-align: center\n        background-color: #ffffff\n\n.{css-prefix}timegrid-timezone-close-btn\n    .{css-prefix}icon\n        width: 5px\n        height: 10px\n\n+prefix-classes(time)\n    .date\n        position: absolute\n        height: 100%\n        margin-left: -1px\n        box-sizing: content-box\n        &:last-child\n            border-right: none\n            margin: 0\n            // last creation guide element\n            .schedule,\n            .guide-creation\n                left: 0px\n\n    .date-schedule-block-wrap\n        position: relative\n        height: 100%\n\n    .date-schedule-block\n        position: absolute\n        right: 0px\n\n    .date-schedule-block-pending\n        opacity: 0.7\n\n    .date-schedule-block-dragging-dim\n        opacity: 0.3\n\n    .date-schedule-block-focused\n        box-shadow: 0 0 8px 0 rgba(0, 0, 0, 0.2)\n\n    .date-schedule-block-cover\n        position: absolute\n        top: 0\n        width: 100%\n        height: 100%\n        background-color: rgba(0, 0, 0, 0.2)\n        box-shadow: 0 2px 6px 0 rgba(0, 0, 0, 0.1);\n\n    .schedule\n        position: relative\n        left: 1px\n        height: 100%\n        overflow: hidden\n        font-size: 12px\n        font-weight: bold\n\n    .schedule-content\n        overflow: hidden\n        border-left-width: 3px\n        border-left-style: solid\n        padding: 1px 0 0 3px\n\n    .schedule-content-travel-time\n        font-weight: normal;\n        font-size: 11px;\n\n    .resize-handle\n        position: absolute\n        right: 0px\n        bottom: 0px\n        left: 0px\n        height: 5px\n        text-align: center\n        color: #fff\n        cursor: row-resize\n        background-position: center top\n\n    // Guide element\n    .guide-creation\n        position: absolute\n        right: 10px\n        left: 1px\n        padding: 3px\n\n    .guide-move,\n    .guide-resize\n        .schedule,\n        .resize-handle\n            opacity: 0.8\n            z-index: 97\n\n    .guide-creation-label\n        cursor: default\n\n    .guide-bottom\n        position: absolute\n        bottom: 3px\n",".{css-prefix}month\n    height: 100%\n    min-height: 600px\n\n+prefix-classes(month)\n    .dayname\n        width: 100%\n        position: absolute\n        font-size: 13px\n\n    .dayname-item\n        height: 100%\n        font-weight: bold\n\n    .week-item\n        position: relative\n        &>div\n            height: 100%\n\n    .more\n        height: inherit\n        min-width: 280px\n        min-height: 150px\n\n    .more-title\n        position: relative\n    \n    .more-title-day\n        font-size: 23px\n        color #333\n    \n    .more-title-day-label\n        font-size: 12px\n        color: #333\n\n    .more-close\n        position: absolute\n        right: 0\n        outline: 0\n        background none\n        border: 0\n        font-size: 14px\n        line-height: 28px\n        padding: 0 7px\n        cursor: pointer\n\n    .more-list\n        overflow-y: auto\n\n    .more-schedule\n        cursor: pointer\n        display: block\n        overflow: hidden\n        white-space: nowrap\n        text-overflow: ellipsis\n        font-size: 12px\n\n    .guide-block\n        position: absolute\n\n    .weekday-schedule\n        margin-top: 2px\n\n    .creation-guide\n        top: 0\n        bottom: -1px\n        left: -1px\n        right: 0\n        position: absolute\n        z-index: 20\n\n    .guide-focused\n        box-shadow: 0 0 8px 0 rgba(0, 0, 0, 0.2)\n\n    .guide\n        position: relative\n        padding-left: 3px\n        line-height: 18px\n        overflow: hidden\n        white-space: nowrap\n        text-overflow: ellipsis\n\n    .guide-cover\n        width: 100%\n        position: absolute\n        top: -50%\n        left: -50%\n        background-color: rgba(0, 0, 0, 0.2)\n        box-shadow: 0 2px 6px 0 rgba(0, 0, 0, 0.1)\n\n    .exceed-left .guide\n        margin-left: 0px\n\n    .exceed-right .guide\n        margin-right: 0px\n\n    .exceed-right .guide-handle\n        display: none\n\n    .guide-handle\n        position: absolute\n        top: 0\n        right: 3px\n        width: 6px\n        background-position: 3px center\n        cursor: col-resize\n","+prefix-classes(css-prefix)\n    .vlayout-container\n        position: relative\n\n    .splitter\n        clear: left\n        cursor: row-resize\n\n        &:hover\n            border-color: #999\n\n    .splitter-focused\n        background-color: #ddd\n        border: none\n\n    .splitter-guide\n        position: absolute\n        wh(100%, 3px)\n        border: none\n        background-color: #e8e8e8\n",".{css-prefix}popup\n    position: absolute\n    font-weight: 2.5\n    box-shadow: 0 2px 6px 0 rgba(0, 0, 0, 0.1)\n    clear: both\n\n.{css-prefix}popup-container\n    min-width: 474px\n    box-shadow: 0 2px 6px 0 rgba(0, 0, 0, 0.1)\n    background-color: #ffffff\n    border: solid 1px #d5d5d5\n    padding: 17px\n    border-radius: 2px\n\n.{css-prefix}popup-section\n    font-size: 0\n    min-height: 40px\n\n.{css-prefix}section-calendar\n    width: 176px\n\n.{css-prefix}section-calendar.{css-prefix}hide\n    height: 21px\n    visibility: hidden\n\n.{css-prefix}section-title\n    width: calc(100% - 36px)\n    padding-right: 4px\n\n.{css-prefix}section-title input\n    width: 365px\n\n.{css-prefix}button.{css-prefix}section-private\n    height: 32px\n    padding: 8px\n    font-size: 0\n    margin-left: 4px\n\n.{css-prefix}section-private.{css-prefix}public .{css-prefix}ic-private\n    background: url('image/ic-unlock.png') no-repeat\n\n.{css-prefix}section-start-date\n.{css-prefix}section-end-date\n    width: 176px\n\n    input\n        width: 139px\n\n    &:hover\n    &:focus\n        .{css-prefix}popup-section-item\n        .tui-datepicker\n            border-color: #bbbbbb\n\n\n.{css-prefix}popup-section-item:focus\n    border-color: #bbbbbb\n\n.{css-prefix}section-date-dash\n    font-size: 12px\n    color: #d5d5d5\n    height: 32px\n    padding: 0 4px\n    vertical-align: middle\n\n.{css-prefix}popup-section-item\n    &.{css-prefix}section-allday\n        border: none\n        padding: 0 0 0 8px\n        cursor: pointer\n    &.{css-prefix}section-location\n        display: block\n\n        input\n            width: 400px\n\n.{css-prefix}section-allday .{css-prefix}icon.{css-prefix}ic-checkbox\n    margin: 0\n\n.{css-prefix}popup-section-item.{css-prefix}section-allday .{css-prefix}content\n    padding-left: 4px\n\n.{css-prefix}section-state\n    width: 109px\n\n.{css-prefix}section-state .{css-prefix}content\n    width: 58px\n    text-overflow: ellipsis\n    overflow: hidden\n\n.{css-prefix}popup-section-item\n    height: 32px\n    padding: 0 9px 0 12px\n    border: 1px solid #d5d5d5\n    display: inline-block\n    font-size: 0\n    border-radius: 2px\n\n.{css-prefix}popup-section-item:hover\n    border-color: #bbbbbb\n\n.{css-prefix}popup-section-item:focus\n    border-color: #bbbbbb\n\n.{css-prefix}popup-section-item .{css-prefix}icon\n    position: relative\n\n.{css-prefix}popup-section-item .{css-prefix}content\n    text-align: left\n    display: inline-block\n    font-size: 12px\n    vertical-align: middle\n    position: relative\n    padding-left: 8px\n\n.{css-prefix}section-calendar .{css-prefix}dropdown-button .{css-prefix}content\n    width: 125px\n    text-overflow: ellipsis\n    overflow: hidden\n    top: -1px\n\n.{css-prefix}popup-section-item input\n    border: none\n    height: 30px\n    outline: none\n    display: inline-block\n\n.{css-prefix}popup-section-item input::placeholder\n    color: #bbbbbb\n    font-weight: 300\n\n.{css-prefix}dropdown\n    position: relative\n\n.{css-prefix}dropdown:hover .{css-prefix}dropdown-button\n    border: 1px solid #bbbbbb\n\n.{css-prefix}dropdown-button.{css-prefix}popup-section-item\n    height: 32px\n    font-size: 0\n    top: -1px\n\n.{css-prefix}dropdown-arrow\n    background: url('image/ic-arrow-solid-bottom.png') no-repeat\n\n\n.dropdown.open\n.{css-prefix}open\n    .{css-prefix}dropdown-arrow\n        background: url('image/ic-arrow-solid-top.png') no-repeat\n\n.{css-prefix}dropdown-menu\n    position: absolute\n    top: 31px\n    padding: 4px 0\n    background-color: #ffffff\n    border: 1px solid #d5d5d5\n    border-top: none\n    border-radius: 0 0 2px 2px\n    width: 100%\n    display: none\n\n.{css-prefix}dropdown:hover .{css-prefix}dropdown-menu\n    border: 1px solid #bbbbbb\n    border-top: none\n\n.{css-prefix}open .{css-prefix}dropdown-menu\n        display: block\n\n.{css-prefix}dropdown-menu-item\n    height: 30px\n    border: none\n    cursor: pointer\n\n.{css-prefix}section-calendar .{css-prefix}dropdown-menu-item\n    width: 100%;\n\n.{css-prefix}section-state .{css-prefix}dropdown-menu-item\n    width: 100%;\n\n.{css-prefix}dropdown-menu-item:hover\n    background-color: rgba(81, 92, 230, 0.05)\n\n.{css-prefix}dropdown-menu-item .{css-prefix}content\n    line-height: 30px\n\n.{css-prefix}button.{css-prefix}popup-close\n    position: absolute\n    top: 10px\n    right: 10px\n    background-color: #ffffff\n    padding: 2px\n    border: none\n\n.{css-prefix}section-button-save\n    height: 36px\n\n.{css-prefix}popup-save\n    float: right\n\n.{css-prefix}popup-arrow-border, .{css-prefix}popup-arrow-fill\n    position: absolute\n\n.{css-prefix}arrow-top .{css-prefix}popup-arrow-border\n    border-top: none\n    border-right: 8px solid transparent\n    border-bottom: 8px solid #d5d5d5\n    border-left: 8px solid transparent\n    left: calc(50% - 8px)\n    top: -7px\n\n.{css-prefix}arrow-right .{css-prefix}popup-arrow-border\n    border-top: 8px solid transparent\n    border-right: none\n    border-bottom: 8px solid transparent\n    border-left: 8px solid #d5d5d5\n    top: calc(50% - 8px)\n    right: -7px\n\n.{css-prefix}arrow-bottom .{css-prefix}popup-arrow-border\n    border-top: 8px solid #d5d5d5\n    border-right: 8px solid transparent\n    border-bottom: none\n    border-left: 8px solid transparent\n    left: calc(50% - 8px)\n    bottom: -7px\n\n.{css-prefix}arrow-left .{css-prefix}popup-arrow-border\n    border-top: 8px solid transparent\n    border-right: 8px solid #d5d5d5\n    border-bottom: 8px solid transparent\n    border-left: none\n    top: calc(50% - 8px)\n    left: -7px\n\n.{css-prefix}arrow-top .{css-prefix}popup-arrow-fill\n    border-top: none\n    border-right: 7px solid transparent\n    border-bottom: 7px solid #ffffff\n    border-left: 7px solid transparent\n    left: -7px\n    top: 1px\n\n.{css-prefix}arrow-right .{css-prefix}popup-arrow-fill\n    border-top: 7px solid transparent\n    border-right: none\n    border-bottom: 7px solid transparent\n    border-left: 7px solid #ffffff\n    top: -7px\n    right: 1px\n\n.{css-prefix}arrow-bottom .{css-prefix}popup-arrow-fill\n    border-top: 7px solid #ffffff\n    border-right: 7px solid transparent\n    border-bottom: none\n    border-left: 7px solid transparent\n    left: -7px\n    bottom: 1px\n\n.{css-prefix}arrow-left .{css-prefix}popup-arrow-fill\n    border-top: 7px solid transparent\n    border-right: 7px solid #ffffff\n    border-bottom: 7px solid transparent\n    border-left: none\n    top: -7px\n    left: 1px\n\n.{css-prefix}button\n    background: #ffffff\n    border: 1px solid #d5d5d5\n    border-radius: 2px\n    text-align: center\n    outline: none\n    font-size: 12px\n    cursor: pointer\n    color: #333\n\n    &:hover\n        border-color: #bbbbbb\n        color: #333333\n\n\n.{css-prefix}button:active\n    background: #f9f9f9\n    color: #333333\n\n\n.{css-prefix}button .round\n  border-radius: 25px\n\n.{css-prefix}confirm\n  width: 96px\n  height: 36px\n  border-radius: 40px\n  background-color: #ff6618\n  font-size: 12px\n  font-weight: bold\n  color: #ffffff\n  border: none\n\n.{css-prefix}confirm:hover\n  background-color: #e55b15\n  color: #ffffff\n\n.{css-prefix}confirm:active\n  background-color: #d95614\n  color: #ffffff\n\n/* icon styles */\n.{css-prefix}icon.{css-prefix}right\n  float: right\n  top: 1px\n\n.{css-prefix}icon .{css-prefix}none\n  display: none\n\n.{css-prefix}icon.{css-prefix}calendar-dot\n  border-radius: 8px;\n  width: 12px;\n  height: 12px;\n  margin: 1px;\n\ninput[type='checkbox'].{css-prefix}checkbox-square\n  display: none\n\ninput[type='checkbox'].{css-prefix}checkbox-square + span\n  display: inline-block\n  cursor: pointer\n  line-height: 14px\n  margin-right: 8px\n  width: 14px\n  height: 14px\n  background: url('image/ic-checkbox-normal.png') no-repeat\n  vertical-align: middle\n\ninput[type='checkbox'].{css-prefix}checkbox-square:checked + span {\n  background: url('image/ic-checkbox-checked.png') no-repeat;\n}\n\ninput[type='checkbox'].{css-prefix}checkbox-round\n  display: none\n\ninput[type='checkbox'].{css-prefix}checkbox-round + span\n  display: inline-block\n  cursor: pointer\n  width: 14px\n  height: 14px\n  line-height: 14px\n  vertical-align: middle\n  margin-right: 8px\n  border-radius: 8px\n  border: solid 2px\n  background: transparent\n\n.{css-prefix}popup-top-line\n  position: absolute\n  border-radius: 2px 2px 0 0\n  width: 100%\n  height: 4px\n  border: none\n  top: 0\n\n.{css-prefix}popup-detail .{css-prefix}popup-container\n  width: 301px\n  min-width: 301px\n  padding-bottom: 0\n\n.{css-prefix}popup-detail .{css-prefix}icon\n  width: 12px\n  height: 12px\n  background-size: 12px\n  position: relative\n  margin-right: 8px\n\n.{css-prefix}popup-detail .{css-prefix}icon.{css-prefix}ic-location-b\n  top: -2px\n\n.{css-prefix}popup-detail .{css-prefix}icon.{css-prefix}ic-user-b\n  top: -2px\n\n.{css-prefix}popup-detail .{css-prefix}icon.{css-prefix}ic-state-b\n  top: -1px\n\n.{css-prefix}popup-detail .{css-prefix}icon.{css-prefix}calendar-dot\n  width: 10px\n  height: 10px\n  margin-right: 8px\n  top: -1px\n\n.{css-prefix}popup-detail .{css-prefix}content\n  line-height: 24px\n  height: 24px\n  font-size: 12px\n  line-height: 2\n\n.{css-prefix}popup-detail .{css-prefix}section-header\n  margin-bottom: 6px\n\n.{css-prefix}popup-detail .{css-prefix}popup-detail-item-separate\n  margin-top: 4px\n\n.{css-prefix}popup-detail .{css-prefix}popup-detail-item-indent\n  text-indent: -20px\n  padding-left: 20px\n\n.{css-prefix}popup-detail .{css-prefix}schedule-title\n  font-size: 15px\n  font-weight: bold\n  line-height: 1.6\n  word-break: break-all\n\n.{css-prefix}popup-detail .{css-prefix}schedule-private\n  display: none\n  width: 16px\n  height: 16px\n  background: url('image/ic-lock.png') no-repeat 16px\n\n.{css-prefix}popup-detail .{css-prefix}schedule-private .{css-prefix}ic-private\n  display: block\n\n.{css-prefix}popup-detail .{css-prefix}section-detail\n  margin-bottom: 16px\n\n.{css-prefix}popup-detail .{css-prefix}section-button\n  border-top: 1px solid #e5e5e5\n  font-size: 0\n\n.{css-prefix}section-button .{css-prefix}icon\n  margin-right: 4px\n  top: -3px\n\n.{css-prefix}section-button .{css-prefix}content\n  position: relative\n  top: 2px\n\n.{css-prefix}popup-edit, .{css-prefix}popup-delete\n  display: inline-block\n  padding: 7px 9px 11px 9px\n  width: calc(50% - 1px)\n  outline: none\n  background: none\n  border: none\n  cursor: pointer\n\n.{css-prefix}popup-vertical-line\n  background: #e5e5e5\n  width: 1px\n  height: 14px\n  vertical-align: middle\n  display: inline-block\n  margin-top: -7px\n\n/* override tui-date-picker */\n.tui-datepicker\n    left: -12px\n    z-index: 1\n    border-color: #d5d5d5\n","/* icon styles */\n.{css-prefix}icon {\n  width: 14px;\n  height: 14px;\n  display: inline-block;\n  vertical-align: middle;\n}\n\n.{css-prefix}icon.{css-prefix}ic-title\n    background: url('image/ic-subject.png') no-repeat\n\n.{css-prefix}icon.{css-prefix}ic-location\n    background: url('image/ic-location.png') no-repeat\n\n.{css-prefix}icon.{css-prefix}ic-date\n    background: url('image/ic-date.png') no-repeat\n\n.{css-prefix}icon.{css-prefix}ic-state\n    background: url('image/ic-state.png') no-repeat\n\n.{css-prefix}icon.{css-prefix}ic-private\n    background: url('image/ic-lock.png') no-repeat\n\n.{css-prefix}icon.{css-prefix}ic-close\n    background: url('image/ic-close.png') no-repeat\n\n\n.{css-prefix}ic-location-b\n    background: url('./image/ic-location-b.png')\n\n.{css-prefix}ic-state-b\n    background: url('./image/ic-state-b.png')\n\n.{css-prefix}icon.{css-prefix}ic-user-b\n    background-image: url('./image/ic-user-b.png')\n\n.{css-prefix}icon.{css-prefix}ic-edit\n    background-image: url('./image/ic-edit.png')\n\n.{css-prefix}icon.{css-prefix}ic-delete\n    background-image: url('./image/ic-delete.png')\n\n.{css-prefix}icon.{css-prefix}ic-arrow-solid-top\n    background: url('image/ic-arrow-solid-top.png') no-repeat\n\n.{css-prefix}icon.{css-prefix}ic-milestone\n    background: url('image/ic-milestone.png') no-repeat\n\n.{css-prefix}icon.{css-prefix}ic-arrow-left\n    background: url('image/ic-arrow-left.png') no-repeat\n\n.{css-prefix}icon.{css-prefix}ic-arrow-right\n    background: url('image/ic-arrow-right.png') no-repeat\n\n.{css-prefix}ic-repeat-b\n    background: url('./image/ic-repeat-b.png')\n"]}
\ No newline at end of file
diff --git a/admin/js/vendors/tui.calendar/tui-calendar.min.js b/admin/js/vendors/tui.calendar/tui-calendar.min.js
new file mode 100644 (file)
index 0000000..e53fc0f
--- /dev/null
@@ -0,0 +1,8 @@
+/*!
+ * TOAST UI Calendar
+ * @version 1.12.14 | Tue Sep 22 2020
+ * @author NHN FE Development Lab <dl_javascript@nhn.com>
+ * @license MIT
+ */
+!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("tui-code-snippet"),require("tui-date-picker")):"function"==typeof define&&define.amd?define(["tui-code-snippet","tui-date-picker"],t):"object"==typeof exports?exports.Calendar=t(require("tui-code-snippet"),require("tui-date-picker")):(e.tui=e.tui||{},e.tui.Calendar=t(e.tui&&e.tui.util,e.tui&&e.tui.DatePicker))}(window,(function(e,t){return function(e){var t={};function n(l){if(t[l])return t[l].exports;var o=t[l]={i:l,l:!1,exports:{}};return e[l].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=e,n.c=t,n.d=function(e,t,l){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:l})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var l=Object.create(null);if(n.r(l),Object.defineProperty(l,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(l,o,function(t){return e[t]}.bind(null,o));return l},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="/dist",n(n.s=36)}([function(t,n){t.exports=e},function(e,t,n){"use strict";var l,o=n(6),i=n(13),a=n(0),r=/^auto$|^$|%/;var s=(l={appendHTMLElement:function(e,t,n){var l;return n=n||"",(l=document.createElement(e)).className=n,t?t.appendChild(l):document.body.appendChild(l),l},remove:function(e){e&&e.parentNode&&e.parentNode.removeChild(e)},get:function(e){return document.getElementById(e)},_matcher:function(e,t){return/^\./.test(t)?l.hasClass(e,t.replace(".","")):/^#/.test(t)?e.id===t.replace("#",""):e.nodeName.toLowerCase()===t.toLowerCase()},find:function(e,t,n){var o=[],i=!1,r=a.isUndefined(n)||!1===n,s=a.isFunction(n);return a.isString(t)&&(t=l.get(t)),function e(t,a){for(var c,u=t.childNodes,d=0,h=u.length;d<h;d+=1)if("#text"!==(c=u[d]).nodeName)if(l._matcher(c,a)){if((s&&n(c)||!s)&&o.push(c),r){i=!0;break}}else if(c.childNodes.length>0&&(e(c,a),i))break}(t=t||window.document.body,e),r?o[0]||null:o},closest:function(e,t,n){var o;if(!e)return null;if(o=e.parentNode,!n&&l._matcher(e,t))return e;for(;o&&o!==window.document.body;){if(l._matcher(o,t))return o;o=o.parentNode}return null},text:function(e){var t="",n=0,o=e.nodeType;if(o){if(1===o||9===o||11===o){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)t+=l.text(e)}else if(3===o||4===o)return e.nodeValue}else for(;e[n];n+=1)t+=l.text(e[n]);return t},setData:function(e,t,n){"dataset"in e?e.dataset[t]=n:e.setAttribute("data-"+t,n)},getData:function(e,t){return"dataset"in e?e.dataset[t]:e.getAttribute("data-"+t)},hasClass:function(e,t){var n;return a.isUndefined(e.classList)?(n=l.getClass(e)).length>0&&new RegExp("(^|\\s)"+t+"(\\s|$)").test(n):e.classList.contains(t)},addClass:function(e,t){var n;a.isUndefined(e.classList)?l.hasClass(e,t)||(n=l.getClass(e),l.setClass(e,(n?n+" ":"")+t)):a.forEachArray(t.split(" "),(function(t){e.classList.add(t)}))},setClass:function(e,t){a.isUndefined(e.className.baseVal)?e.className=t:e.className.baseVal=t},removeClass:function(e,t){var n="";a.isUndefined(e.classList)?(n=(" "+l.getClass(e)+" ").replace(" "+t+" "," "),l.setClass(e,n.replace(/^\s\s*/,"").replace(/\s\s*$/,""))):e.classList.remove(t)},getClass:function(e){return e&&e.className?a.isUndefined(e.className.baseVal)?e.className:e.className.baseVal:""},getStyle:function(e,t){var n,l=e.style[t]||e.currentStyle&&e.currentStyle[t];return l&&"auto"!==l||!document.defaultView||(l=(n=document.defaultView.getComputedStyle(e,null))?n[t]:null),"auto"===l?null:l},getComputedStyle:function(e){var t=document.defaultView;return t&&t.getComputedStyle?document.defaultView.getComputedStyle(e):{getPropertyValue:function(t){var n=/(\-([a-z]){1})/g;return"float"===t&&(t="styleFloat"),n.test(t)&&(t=t.replace(n,(function(){return arguments[2].toUpperCase()}))),e.currentStyle[t]||null}}},setPosition:function(e,t,n){t=a.isUndefined(t)?0:t,n=a.isUndefined(n)?0:n,e._pos=[t,n],e.style.left=a.isNumber(t)?t+"px":t,e.style.top=a.isNumber(n)?n+"px":n},setLTRB:function(e,t){var n;["left","top","right","bottom"].forEach((function(l){n=a.isUndefined(t[l])?"":t[l],e.style[l]=a.isNumber(n)?n+"px":n}))},getPosition:function(e,t){var n,l,o;return t&&(e._pos=null),e._pos?e._pos:(n=0,l=0,(r.test(e.style.left)||r.test(e.style.top))&&"getBoundingClientRect"in e?(n=(o=e.getBoundingClientRect()).left,l=o.top):(n=parseFloat(e.style.left||0),l=parseFloat(e.style.top||0)),[n,l])},getSize:function(e){var t,n=l.getStyle(e,"width"),o=l.getStyle(e,"height");return(r.test(n)||r.test(o)||a.isNull(n)||a.isNull(o))&&"getBoundingClientRect"in e?(n=(t=e.getBoundingClientRect()).width||e.offsetWidth,o=t.height||e.offsetHeight):(n=parseFloat(n||0),o=parseFloat(o||0)),[n,o]},getBCRect:function(e){var t=e.getBoundingClientRect();return t=a.extend({width:e.offsetWidth,height:e.offsetHeight},t)},testProp:function(e){for(var t=document.documentElement.style,n=0,l=e.length;n<l;n+=1)if(e[n]in t)return e[n];return!1},getFormData:function(e){var t=new i((function(){return this.length})),n=function(e){return!e.disabled},o={};return t.add.apply(t,l.find("input",e,n).concat(l.find("select",e,n)).concat(l.find("textarea",e,n))),t=t.groupBy((function(e){return e&&e.getAttribute("name")||"_other"})),a.forEach(t,(function(e,t){"_other"!==t&&e.each((function(n){var i=n.nodeName.toLowerCase(),r=n.type,s=[];"radio"===r?s=[e.find((function(e){return e.checked})).toArray().pop()]:"checkbox"===r?s=e.find((function(e){return e.checked})).toArray():"select"===i?e.find((function(e){return!!e.childNodes.length})).each((function(e){s=s.concat(l.find("option",e,(function(e){return e.selected})))})):s=e.find((function(e){return""!==e.value})).toArray(),(s=a.map(s,(function(e){return e.value}))).length?1===s.length&&(s=s[0]):s="",o[t]=s}))})),o}}).testProp(["userSelect","WebkitUserSelect","OUserSelect","MozUserSelect","msUserSelect"]),c="onselectstart"in document,u="";l.disableTextSelection=c?function(e,t){o.on(e,"selectstart",t||o.preventDefault)}:function(e){var t=e.style;u=t[s],t[s]="none"},l.enableTextSelection=c?function(e,t){o.off(window,"selectstart",t||o.preventDefault)}:function(){document.documentElement.style[s]=u},l.disableImageDrag=function(){o.on(window,"dragstart",o.preventDefault)},l.enableImageDrag=function(){o.off(window,"dragstart",o.preventDefault)},e.exports=l},function(e,t,n){"use strict";var l="tui-full-calendar-",o=new RegExp("^"+l+"weekday[\\s]tui-view-(\\d+)"),i=new RegExp("^"+l+"schedule(-title)?$"),a={throwError:function(e){alert(e)},cssPrefix:l,classname:function(e){return"."===(e=e||"").charAt(0)?"."+a.cssPrefix+e.slice(1):a.cssPrefix+e},allday:{getViewIDRegExp:o,checkCondRegExp:i},daygrid:{getViewIDRegExp:o,checkCondRegExp:i},time:{getViewIDRegExp:new RegExp("^"+l+"time-date[\\s]tui-view-(\\d+)")}};e.exports=a},function(e,t,n){"use strict";(function(t){var l,o,i=n(4).Date,a=n(26),r=n(0),s=/^(\d{4}[-|\/]*\d{2}[-|\/]*\d{2})\s?(\d{2}:\d{2}:\d{2})?$/,c={},u={};o={YYYYMMDD:function(e){return[e.getFullYear(),l.leadingZero(e.getMonth()+1,2),l.leadingZero(e.getDate(),2)].join("")},YYYY:function(e){return String(e.getFullYear())},MM:function(e){return l.leadingZero(e.getMonth()+1,2)},DD:function(e){return l.leadingZero(e.getDate(),2)},"HH:mm":function(e){var t=e.getHours(),n=e.getMinutes();return l.leadingZero(t,2)+":"+l.leadingZero(n,2)},"hh:mm":function(e){var t=e.getHours(),n=e.getMinutes();return t>12&&(t%=12),l.leadingZero(t,2)+":"+l.leadingZero(n,2)},tt:function(e){return e.getHours()<12?"am":"pm"}},l={MILLISECONDS_PER_DAY:864e5,MILLISECONDS_PER_HOUR:36e5,MILLISECONDS_PER_MINUTES:6e4,MILLISECONDS_SCHEDULE_MIN_DURATION:12e5,_convMilliseconds:function(e,n,l){var o={day:0,hour:1,minutes:2,seconds:3};return e in o&&!t.isNaN(n)&&r.reduce([n].concat([24,60,60,1e3].slice(o[e])),l)},millisecondsTo:function(e,t){var n=c,o=e+t;return n[o]||(n[o]=l._convMilliseconds(e,t,(function(e,t){return e/t}))),n[o]},millisecondsFrom:function(e,t){var n=u,o=e+t;return n[o]||(n[o]=l._convMilliseconds(e,t,(function(e,t){return e*t}))),n[o]},minutesFromHours:function(e){return 60*e},range:function(e,t,n){for(var o=e.getTime(),r=t.getTime(),s=o,c=a(new i(e)),u=[];s<=r&&r>=c.d.getTime();)u.push(l.start(c.d)),s+=n,c.addDate(1);return u},clone:function(e){return new i(e)},compare:function(e,t){var n=e.getTime(),l=t.getTime();return n<l?-1:n>l?1:0},isSameMonth:function(e,t){return e.getFullYear()===t.getFullYear()&&e.getMonth()===t.getMonth()},isSameDate:function(e,t){return l.isSameMonth(e,t)&&e.getDate()===t.getDate()},isValid:function(e){return e instanceof i&&!window.isNaN(e.getTime())},toUTC:function(e){var t=e.getTime(),n=l.millisecondsFrom("minutes",(new Date).getTimezoneOffset());return new i(t+n)},leadingZero:function(e,t){var n="",l=0;if(String(e).length>t)return String(e);for(;l<t-1;l+=1)n+="0";return(n+e).slice(-1*t)},parse:function(e,t){var n,l,o,a=e.match(s);return r.isUndefined(t)&&(t=-1),!!a&&(e.length>8?(n=~e.indexOf("/")?"/":"-",l=(a=a.splice(1))[0].split(n),o=a[1]?a[1].split(":"):[0,0,0]):(l=[(a=a[0]).substr(0,4),a.substr(4,2),a.substr(6,2)],o=[0,0,0]),(new i).setWithRaw(Number(l[0]),Number(l[1])+t,Number(l[2]),Number(o[0]),Number(o[1]),Number(o[2]),0))},raw:function(e){return{y:e.getFullYear(),M:e.getMonth(),d:e.getDate(),h:e.getHours(),m:e.getMinutes(),s:e.getSeconds(),ms:e.getMilliseconds()}},start:function(e){var t=e?new i(e):new i;return t.setHours(0,0,0,0),t},end:function(e){var t=e?new i(e):new i;return t.setHours(23,59,59,0),t},format:function(e,t){var n=t;return r.forEachOwnProperties(o,(function(t,l){n=n.replace(l,t(e))})),n},startDateOfMonth:function(e){var t=new i(e);return t.setDate(1),t.setHours(0,0,0,0),t},endDateOfMonth:function(e){var t=l.startDateOfMonth(e);return t.setMonth(t.getMonth()+1),t.setDate(t.getDate()-1),t.setHours(23,59,59),t},arr2dCalendar:function(e,t,n){var o,s,c,u,d,h,p,m,f=[],g=t.startDayOfWeek,y=r.isUndefined(t.isAlways6Week)||t.isAlways6Week,S=t.visibleWeeksCount,_=t.workweek;return S?(s=new i(e),(c=a(new i(e))).addDate(7*(S-1)),c=c.d):(s=l.startDateOfMonth(e),c=l.endDateOfMonth(e)),o=r.range(g,7).concat(r.range(7)).slice(0,7),u=r.inArray(s.getDay(),o),h=7-(r.inArray(c.getDay(),o)+1),d=S?7*S:y?42:u+c.getDate()+h,p=l.start(s).addDate(-u),r.forEachArray(r.range(d),(function(e){var t;e%7||(m=f[e/7]=[]),t=l.start(p),t=n?n(t):t,_&&l.isWeekend(t.getDay())||m.push(t),p.setDate(p.getDate()+1)})),f},getGridLeftAndWidth:function(e,t,n,o){var i=100/e,a=e>5?100/(e-1):i,s=0,c=r.range(n,7).concat(r.range(e)).slice(0,7);return o&&(c=r.filter(c,(function(e){return!l.isWeekend(e)}))),t=!o&&t,r.map(c,(function(n){var o,r=t?a:i;return e>5&&t&&l.isWeekend(n)&&(r=a/2),o={day:n,width:r,left:s},s+=r,o}))},isWeekend:function(e){return 0===e||6===e},isBetweenWithDate:function(e,t,n){var o="YYYYMMDD";return e=parseInt(l.format(e,o),10),t=parseInt(l.format(t,o),10),n=parseInt(l.format(n,o),10),t<=e&&e<=n},isStartOfDay:function(e){return!l.compare(l.start(e),e)},convertStartDayToLastDay:function(e){var t=new i(e);return l.isStartOfDay(e)&&(t.setDate(t.getDate()-1),t.setHours(23,59,59)),t},getStartOfNextDay:function(e){var t=l.start(e);return t.setHours(24),t},getDateDifference:function(e,t){var n=new i(e.getFullYear(),e.getMonth(),e.getDate()).getTime(),o=new i(t.getFullYear(),t.getMonth(),t.getDate()).getTime();return Math.round((n-o)/l.MILLISECONDS_PER_DAY)},getHourDifference:function(e,t){var n=new i(e).getTime(),o=new i(t).getTime();return Math.round((n-o)/l.MILLISECONDS_PER_HOUR)},hasMultiDates:function(e,t){var n=l.getDateDifference(e,t),o=Math.abs(l.getHourDifference(e,t)),i=1===Math.abs(n)&&o<24&&l.isStartOfDay(t);return!l.isSameDate(e,t)&&!i},renderEnd:function(e,t){var n=l.getDateDifference(e,t);return Math.abs(n)>=1&&l.isStartOfDay(t)?l.convertStartDayToLastDay(t):l.end(t)}},e.exports=l}).call(this,n(9))},function(e,t,n){"use strict";var l=n(0),o=6e4,i=c(),a=i,r=null,s=!1;function c(e){return e=e||Date.now(),new Date(e).getTimezoneOffset()*o}function u(e){return!s&&r?r(e)*o:a}function d(e){var t=Date.UTC.apply(null,e);return new Date(t+c(t))}function h(e){var t;if(e instanceof f)t=e.getUTCTime();else if("number"==typeof e)t=e;else{if(null!==e)throw new Error("Invalid Type");t=0}return new Date(t)}function p(e){var t;if(e instanceof Date)t=e.getTime();else{if("string"!=typeof e)throw new Error("Invalid Type");t=Date.parse(e)}return t=function(e){var t=c(e),n=u(e);return e-n+t+(n?0:i-t)}(t),new Date(t)}function m(e){return e instanceof Date||"string"==typeof e}function f(e){var t;l.isUndefined(e)&&(e=Date.now()),t=arguments.length>1?d(arguments):m(e)?p(e):h(e),this._date=t}f.prototype.getTime=function(){var e=this._date.getTime();return e+u(e)-c(e)},f.prototype.getUTCTime=function(){return this._date.getTime()},f.prototype.toUTCString=function(){return this._date.toUTCString()},f.prototype.toDate=function(){return this._date},f.prototype.valueOf=function(){return this.getTime()},f.prototype.addDate=function(e){return this.setDate(this.getDate()+e),this},f.prototype.addMinutes=function(e){return this.setMinutes(this.getMinutes()+e),this},f.prototype.addMilliseconds=function(e){return this.setMilliseconds(this.getMilliseconds()+e),this},f.prototype.setWithRaw=function(e,t,n,l,o,i,a){return this.setFullYear(e,t,n),this.setHours(l,o,i,a),this},f.prototype.toLocalTime=function(){var e=this.getTime(),t=this.getUTCTime();return new f(t-(e-t))},["getDate","getDay","getFullYear","getHours","getMilliseconds","getMinutes","getMonth","getSeconds"].forEach((function(e){f.prototype[e]=function(){return this._date[e].apply(this._date,arguments)}})),["setDate","setFullYear","setHours","setMilliseconds","setMinutes","setMonth","setSeconds"].forEach((function(e){f.prototype[e]=function(){return this._date[e].apply(this._date,arguments),this.getTime()}})),e.exports={Date:f,setOffset:function(e){a=e*o},setOffsetByTimezoneOption:function(e){this.setOffset(-e),s=!0},getOffset:function(){return s?a/o:0},setOffsetCallback:function(e){r=e},restoreOffset:function(){a=c()}}},function(e,t,n){"use strict";var l=n(0),o=n(1),i=n(13),a=n(3);function r(e){return e.cid()}e.exports={createScheduleCollection:function(){return new i(r)},ratio:function(e,t,n){return t*n/e},nearest:function(e,t){var n=l.map(t,(function(t){return Math.abs(e-t)}));return t[l.inArray(Math.min.apply(null,n),n)]},mixin:function(e,t){l.extend(t.prototype,e)},limit:function(e,t,n){var l=Math.max.apply(null,[e].concat(t));return l=Math.min.apply(null,[l].concat(n))},limitDate:function(e,t,n){return e<t?t:e>n?n:e},maxDate:function(e,t){return e>t?e:t},stripTags:function(e){return e.replace(/<([^>]+)>/gi,"")},firstIn2dArray:function(e){return l.pick(e,"0","0")},lastIn2dArray:function(e){var t=e.length-1,n=e[t].length-1;return l.pick(e,t,n)},setAutoEllipsis:function(e,t,n){l.forEach(o.find(e,t,!0),(function(e){(n||e.offsetWidth<e.scrollWidth)&&e.setAttribute("title",o.getData(e,"title"))}))},set:function(e,t,n){var o=t.split("."),i=e;l.forEach(o,(function(e,t){i[e]=i[e]||{},t===o.length-1?i[e]=n:i=i[e]}))},shiftArray:function(e,t){var n,l=Math.abs(t);if(t>0)for(n=0;n<l;n+=1)e.push(e.shift());else if(t<0)for(n=0;n<l;n+=1)e.unshift(e.pop());return e},takeArray:function(e,t,n){var l=e.length-n,o=t;return e.splice(n,l),e.splice(0,o),e},shiftHours:function(e,t){return t>0?e=(e+t)%24:t<0&&(e=(e+=t)>0?e:24+e),e},parseUnit:function(e){return[parseFloat(e,10),e.match(/[\d.\-+]*\s*(.*)/)[1]||""]},find:function(e,t,n){var o;return l.forEach(e,(function(e){return t&&(o=t(e)),!o||(o=e,!1)}),n),o},getScheduleChanges:function(e,t,n){var o={},i=["start","end"];return l.forEach(t,(function(t){i.indexOf(t)>-1?a.compare(e[t],n[t])&&(o[t]=n[t]):l.isUndefined(n[t])||e[t]===n[t]||(o[t]=n[t])})),l.isEmpty(o)?null:o}}},function(e,t,n){"use strict";var l=n(0),o=["touchstart","mousedown"],i={on:function(e,t,n,o){l.isString(t)?l.forEach(t.split(" "),(function(t){i._on(e,t,n,o)})):l.forEachOwnProperties(t,(function(t,l){i._on(e,l,t,n)}))},_on:function(e,t,n,o){var a,r,s;a=t+l.stamp(n)+(o?"_"+l.stamp(o):""),e._evt&&e._evt[a]||(s=r=function(t){n.call(o||e,t||window.event)},"addEventListener"in e?"mouseenter"===t||"mouseleave"===t?(r=function(t){t=t||window.event,i._checkMouse(e,t)&&s(t)},e.addEventListener("mouseenter"===t?"mouseover":"mouseout",r,!1)):("mousewheel"===t&&e.addEventListener("DOMMouseScroll",r,!1),e.addEventListener(t,r,!1)):"attachEvent"in e&&e.attachEvent("on"+t,r),e._evt=e._evt||{},e._evt[a]=r)},off:function(e,t,n,o){l.isString(t)?l.forEach(t.split(" "),(function(t){i._off(e,t,n,o)})):l.forEachOwnProperties(t,(function(t,l){i._off(e,l,t,n)}))},_off:function(e,t,n,o){var i=t+l.stamp(n)+(o?"_"+l.stamp(o):""),a=e._evt&&e._evt[i];if(a){if("removeEventListener"in e)"mouseenter"===t||"mouseleave"===t?e.removeEventListener("mouseenter"===t?"mouseover":"mouseout",a,!1):("mousewheel"===t&&e.removeEventListener("DOMMouseScroll",a,!1),e.removeEventListener(t,a,!1));else if("detachEvent"in e)try{e.detachEvent("on"+t,a)}catch(e){}delete e._evt[i],l.keys(e._evt).length||delete e._evt}},once:function(e,t,n,o){var a=this;l.isObject(t)?l.forEachOwnProperties(t,(function(t,l){i.once(e,l,t,n)})):i.on(e,t,(function l(){n.apply(o||e,arguments),a._off(e,t,l,o)}),o)},stopPropagation:function(e){e.stopPropagation?e.stopPropagation():e.cancelBubble=!0},preventDefault:function(e){e.preventDefault?e.preventDefault():e.returnValue=!1},stop:function(e){i.preventDefault(e),i.stopPropagation(e)},disableScrollPropagation:function(e){i.on(e,"mousewheel MozMousePixelScroll",i.stopPropagation)},disableClickPropagation:function(e){i.on(e,o.join(" ")+" click dblclick",i.stopPropagation)},getMousePosition:function(e,t){var n;return t?(n=t.getBoundingClientRect(),[e.clientX-n.left-t.clientLeft,e.clientY-n.top-t.clientTop]):[e.clientX,e.clientY]},getWheelDelta:function(e){var t=0;return e.wheelDelta&&(t=e.wheelDelta/120),e.detail&&(t=-e.detail/3),t},_checkMouse:function(e,t){var n=t.relatedTarget;if(!n)return!0;try{for(;n&&n!==e;)n=n.parentNode}catch(e){return!1}return n!==e},trigger:function(e,t,n){l.isUndefined(n)&&/(mouse|click)/.exec(t)&&(n=i.mouseEvent(t)),e.dispatchEvent?e.dispatchEvent(n):e.fireEvent&&e.fireEvent("on"+t,n)},mouseEvent:function(e,t){var n,o;return o=l.extend({bubbles:!0,cancelable:"mousemove"!==e,view:window,wheelDelta:0,detail:0,screenX:0,screenY:0,clientX:0,clientY:0,ctrlKey:!1,altKey:!1,shiftKey:!1,metaKey:!1,button:0,relatedTarget:void 0},t),"function"==typeof document.createEvent?(n=document.createEvent("MouseEvents")).initMouseEvent(e,o.bubbles,o.cancelable,o.view,o.detail,o.screenX,o.screenY,o.clientX,o.clientY,o.ctrlKey,o.altKey,o.shiftKey,o.metaKey,o.button,document.body.parentNode):document.createEventObject&&(n=document.createEventObject(),l.forEach(o,(function(e,t){n[t]=e}),this),n.button={0:1,1:4,2:2}[n.button]||n.button),n},getMouseButton:function(e){var t;return document.implementation.hasFeature("MouseEvents","2.0")?e.button:(t=String(e.button),"0,1,3,5,7".indexOf(t)>-1?0:"2,6".indexOf(t)>-1?2:~"4".indexOf(t)?1:-1)},getEventTarget:function(e){return e.target||e.srcElement}};e.exports=i},function(e,t,n){e.exports=n(21).default},function(e,t,n){"use strict";var l=n(0),o=n(1),i=n(13);function a(e){var t=l.stamp(this);l.isUndefined(e)&&(e=o.appendHTMLElement("div")),o.addClass(e,this.cssprefix(t)),this.id=t,this.container=e,this.children=new i((function(e){return l.stamp(e)})),this.parent=null,this.state={}}a.prototype.cssPrefix="tui-view-",a.prototype.addChild=function(e,t){t&&t.call(e,this),e.parent=this,this.children.add(e)},a.prototype.removeChild=function(e,t){var n=l.isNumber(e)?this.children.items[e]:e;e=l.stamp(n),t&&t.call(n,this),this.children.remove(e)},a.prototype.render=function(){this.children.each((function(e){e.render()}))},a.prototype.recursive=function(e,t){l.isFunction(e)&&(t||e(this),this.children.each((function(t){t.recursive(e)})))},a.prototype.resize=function(){for(var e=Array.prototype.slice.call(arguments),t=this.parent;t;)l.isFunction(t._onResize)&&t._onResize.apply(t,e),t=t.parent},a.prototype._beforeDestroy=function(){},a.prototype._destroy=function(){this._beforeDestroy(),this.children.clear(),this.container.innerHTML="",this.id=this.parent=this.children=this.container=null},a.prototype.destroy=function(e){this.children.each((function(e){e.destroy(!0),e._destroy()})),e||this._destroy()},a.prototype.getViewBound=function(){var e=this.container,t=o.getPosition(e),n=o.getSize(e);return{x:t[0],y:t[1],width:n[0],height:n[1]}},a.prototype.cssprefix=function(e){return this.cssPrefix+(e||"")},a.prototype.setState=function(e){l.extend(this.state,e)},l.CustomEvents.mixin(a),e.exports=a},function(e,t){var n;n=function(){return this}();try{n=n||new Function("return this")()}catch(e){"object"==typeof window&&(n=window)}e.exports=n},function(e,t,n){"use strict";t.__esModule=!0,t.extend=r,t.indexOf=function(e,t){for(var n=0,l=e.length;n<l;n++)if(e[n]===t)return n;return-1},t.escapeExpression=function(e){if("string"!=typeof e){if(e&&e.toHTML)return e.toHTML();if(null==e)return"";if(!e)return e+"";e=""+e}if(!i.test(e))return e;return e.replace(o,a)},t.isEmpty=function(e){return!e&&0!==e||!(!u(e)||0!==e.length)},t.createFrame=function(e){var t=r({},e);return t._parent=e,t},t.blockParams=function(e,t){return e.path=t,e},t.appendContextPath=function(e,t){return(e?e+".":"")+t};var l={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#x27;","`":"&#x60;","=":"&#x3D;"},o=/[&<>"'`=]/g,i=/[&<>"'`=]/;function a(e){return l[e]}function r(e){for(var t=1;t<arguments.length;t++)for(var n in arguments[t])Object.prototype.hasOwnProperty.call(arguments[t],n)&&(e[n]=arguments[t][n]);return e}var s=Object.prototype.toString;t.toString=s;var c=function(e){return"function"==typeof e};c(/x/)&&(t.isFunction=c=function(e){return"function"==typeof e&&"[object Function]"===s.call(e)}),t.isFunction=c;var u=Array.isArray||function(e){return!(!e||"object"!=typeof e)&&"[object Array]"===s.call(e)};t.isArray=u},function(e,t,n){"use strict";(function(t){var n,l;function o(e){return t["webkit"+e]||t["moz"+e]||t["ms"+e]}n=t.requestAnimationFrame||o("RequestAnimationFrame")||function(e,t){e.call(t)},l=t.cancelAnimationFrame||o("CancelAnimationFrame")||o("CancelRequestAnimationFrame")||function(){},e.exports={requestAnimFrame:function(e,l){return n.call(t,e.bind(l))},cancelAnimFrame:function(e){e&&l.call(t,e)}}}).call(this,n(9))},function(e,t,n){"use strict";t.__esModule=!0;var l=["description","fileName","lineNumber","endLineNumber","message","name","number","stack"];function o(e,t){var n=t&&t.loc,i=void 0,a=void 0,r=void 0,s=void 0;n&&(i=n.start.line,a=n.end.line,r=n.start.column,s=n.end.column,e+=" - "+i+":"+r);for(var c=Error.prototype.constructor.call(this,e),u=0;u<l.length;u++)this[l[u]]=c[l[u]];Error.captureStackTrace&&Error.captureStackTrace(this,o);try{n&&(this.lineNumber=i,this.endLineNumber=a,Object.defineProperty?(Object.defineProperty(this,"column",{value:r,enumerable:!0}),Object.defineProperty(this,"endColumn",{value:s,enumerable:!0})):(this.column=r,this.endColumn=s))}catch(e){}}o.prototype=new Error,t.default=o,e.exports=t.default},function(e,t,n){"use strict";var l=n(0),o=l.forEachOwnProperties,i=l.forEachArray,a=l.isFunction,r=l.isObject,s=Array.prototype.slice;function c(e){this.items={},this.length=0,a(e)&&(this.getItemID=e)}c.and=function(e){var t;return e=s.call(arguments),t=e.length,function(n){for(var l=0;l<t;l+=1)if(!e[l].call(null,n))return!1;return!0}},c.prototype.getItemID=function(e){return String(e._id)},c.prototype.add=function(e){var t,n,l=this;arguments.length>1?i(s.call(arguments),(function(e){l.add(e)})):(t=this.getItemID(e),(n=this.items)[t]||(this.length+=1),n[t]=e)},c.prototype.remove=function(e){var t,n,o=this,i=[];return this.length?arguments.length>1?i=l.map(s.call(arguments),(function(e){return o.remove(e)})):(t=this.items,r(e)&&(e=this.getItemID(e)),t[e]?(this.length-=1,n=t[e],delete t[e],n):i):i},c.prototype.clear=function(){this.items={},this.length=0},c.prototype.has=function(e){var t,n;return!!this.length&&(t=a(e),n=!1,t?this.each((function(t){return!0!==e(t)||(n=!0,!1)})):(e=r(e)?this.getItemID(e):e,n=l.isExisty(this.items[e])),n)},c.prototype.doWhenHas=function(e,t,n){var o=this.items[e];l.isExisty(o)&&t.call(n||this,o)},c.prototype.find=function(e){var t=new c;return this.hasOwnProperty("getItemID")&&(t.getItemID=this.getItemID),this.each((function(n){!0===e(n)&&t.add(n)})),t},c.prototype.groupBy=function(e,t){var n,o,i={},r=a(e),s=this.getItemID;if(l.isArray(e)){if(l.forEachArray(e,(function(e){i[String(e)]=new c(s)})),!t)return i;e=t,r=!0}return this.each((function(t){r?o=e(t):(o=t[e],a(o)&&(o=o.apply(t))),(n=i[o])||(n=i[o]=new c(s)),n.add(t)})),i},c.prototype.single=function(e){var t,n=l.isFunction(e);return this.each((function(l){return n&&!e(l)||(t=l,!1)}),this),t},c.prototype.sort=function(e){var t=[];return this.each((function(e){t.push(e)})),a(e)&&(t=t.sort(e)),t},c.prototype.each=function(e,t){o(this.items,e,t||this)},c.prototype.toArray=function(){return this.length?l.map(this.items,(function(e){return e})):[]},e.exports=c},function(e,t,n){"use strict";var l=n(0),o=n(4).Date,i=n(3),a=n(55),r=n(56),s=i.MILLISECONDS_SCHEDULE_MIN_DURATION,c="allday";function u(){this.id="",this.title="",this.body="",this.isAllDay=!1,this.start=null,this.end=null,this.color="#000",this.isVisible=!0,this.bgColor="#a1b56c",this.dragBgColor="#a1b56c",this.borderColor="#000",this.calendarId="",this.category="",this.dueDateClass="",this.customStyle="",this.isPending=!1,this.isFocused=!1,this.isReadOnly=!1,this.isPrivate=!1,this.location="",this.attendees=[],this.recurrenceRule="",this.state="",this.goingDuration=0,this.comingDuration=0,this.raw=null,l.stamp(this)}u.schema={required:["title"],dateRange:["start","end"]},u.create=function(e){var t=new u;return t.init(e),t},u.prototype.init=function(e){(e=l.extend({},e)).category===c&&(e.isAllDay=!0),this.id=e.id||"",this.title=e.title||"",this.body=e.body||"",this.isAllDay=!!l.isExisty(e.isAllDay)&&e.isAllDay,this.isVisible=!l.isExisty(e.isVisible)||e.isVisible,this.color=e.color||this.color,this.bgColor=e.bgColor||this.bgColor,this.dragBgColor=e.dragBgColor||this.dragBgColor,this.borderColor=e.borderColor||this.borderColor,this.calendarId=e.calendarId||"",this.category=e.category||"",this.dueDateClass=e.dueDateClass||"",this.customStyle=e.customStyle||"",this.location=e.location||"",this.attendees=e.attendees||[],this.recurrenceRule=e.recurrenceRule||"",this.isPrivate=e.isPrivate||!1,this.isPending=e.isPending||!1,this.isFocused=e.isFocused||!1,this.isReadOnly=e.isReadOnly||!1,this.goingDuration=e.goingDuration||0,this.comingDuration=e.comingDuration||0,this.state=e.state||"",this.isAllDay?this.setAllDayPeriod(e.start,e.end):this.setTimePeriod(e.start,e.end),this.raw=e.raw||null},u.prototype.setAllDayPeriod=function(e,t){e=l.isString(e)&&10===e.length?i.parse(e):new o(e||Date.now()),l.isString(t)&&10===t.length?(t=i.parse(t)).setHours(23,59,59):t=new o(t||e),this.start=i.start(e),this.end=i.renderEnd(e,t)},u.prototype.setTimePeriod=function(e,t){this.start=new o(e||Date.now()),this.end=new o(t||this.start),t||this.end.setMinutes(this.end.getMinutes()+30)},u.prototype.getStarts=function(){return this.start},u.prototype.getEnds=function(){return this.end},u.prototype.cid=function(){return l.stamp(this)},u.prototype.equals=function(e){return this.id===e.id&&(this.title===e.title&&(this.body===e.body&&(this.isAllDay===e.isAllDay&&(0===i.compare(this.getStarts(),e.getStarts())&&(0===i.compare(this.getEnds(),e.getEnds())&&(this.color===e.color&&(this.bgColor===e.bgColor&&(this.dragBgColor===e.dragBgColor&&this.borderColor===e.borderColor))))))))},u.prototype.duration=function(){var e=this.getStarts(),t=this.getEnds();return this.isAllDay?i.end(t)-i.start(e):t-e},u.prototype.collidesWith=function(e){var t=this.getStarts(),n=this.getEnds(),l=e.getStarts(),o=e.getEnds(),a=i.millisecondsFrom("minutes",this.goingDuration),r=i.millisecondsFrom("minutes",this.comingDuration),c=i.millisecondsFrom("minutes",e.goingDuration),u=i.millisecondsFrom("minutes",e.comingDuration);return Math.abs(n-t)<s&&(n+=s),Math.abs(o-l)<s&&(o+=s),n+=r,o+=u,(l-=c)>(t-=a)&&l<n||o>t&&o<n||l<=t&&o>=n},r.mixin(u.prototype),a.mixin(u.prototype),e.exports=u},function(e,t,n){"use strict";var l=n(0),o=n(3);function i(e,t){return e!==t?e?-1:1:0}function a(e,t){var n=String(e),l=String(t);return n>l?1:n<l?-1:0}e.exports={bsearch:function(e,t,n,l){var o,i,r=0,s=e.length-1;for(l=l||a;r<=s;)if(o=(r+s)/2|0,(i=l(n?n(e[o]):e[o],t))<0)r=o+1;else{if(!(i>0))return o;s=o-1}return~s},compare:{schedule:{asc:function(e,t){var n,a,r,s,c=e.valueOf(),u=t.valueOf();return(r=i(c.isAllDay||e.hasMultiDates,u.isAllDay||t.hasMultiDates))?r:(s=o.compare(e.getStarts(),t.getStarts()))?s:(n=e.duration())<(a=t.duration())?1:n>a?-1:l.stamp(c)-l.stamp(u)}},bool:{asc:i,desc:function(e,t){return e!==t?e?1:-1:0}},num:{asc:function(e,t){return Number(e)-Number(t)},desc:function(e,t){var n=Number(e);return Number(t)-n}},str:{asc:a,desc:function(e,t){var n=String(e),l=String(t);return n>l?-1:n<l?1:0},ascIgnoreCase:function(e,t){var n=String(e).toLowerCase(),l=String(t).toLowerCase();return n>l?1:n<l?-1:0},descIgnoreCase:function(e,t){var n=String(e).toLowerCase(),l=String(t).toLowerCase();return n>l?-1:n<l?1:0}}}}},function(e,t,n){"use strict";var l=n(0),o=n(2),i=n(1),a=n(8);function r(e,t){var n,l=t[r.PROP_KEY];l||(l=t[r.PROP_KEY]=[]),l.push(this),this.sibling=l,this.zIndex=this.getLargestZIndex()||r.INIT_ZINDEX,(n=document.createElement("div")).style.display="none",n.style.position="absolute",i.addClass(n,o.classname("floating-layer")),t.appendChild(n),a.call(this,n),this.parent=t}l.inherit(r,a),r.PROP_KEY="__fe_floating_layer",r.INIT_ZINDEX=999,r.prototype.destroy=function(){for(var e=this.parent,t=this.sibling,n=0,l=t.length;n<l;n+=1)if(t[n]===this){t.splice(n,1);break}if(!t.length){try{delete e[r.PROP_KEY]}catch(t){e[r.PROP_KEY]=null}e.style.position=""}i.remove(this.container),this.sibling=null,a.prototype.destroy.call(this)},r.prototype.isVisible=function(){return"none"!==this.container.style.display},r.prototype.setPosition=function(e,t){i.setPosition(this.container,e,t)},r.prototype.setLTRB=function(e){i.setLTRB(this.container,e)},r.prototype.setSize=function(e,t){var n=this.container;e=l.isNumber(e)?e+"px":e,t=l.isNumber(t)?t+"px":t,n.style.width=e,n.style.height=t},r.prototype.setContent=function(e){this.container.innerHTML=e},r.prototype.getLargestZIndex=function(){var e=l.map(this.sibling,(function(e){return e.zIndex}));return Math.max.apply(null,e)},r.prototype.focus=function(){var e=this.getLargestZIndex()+1;this.container.style.zIndex=this.zIndex=e},r.prototype.show=function(){this.focus(),this.container.style.display="block"},r.prototype.hide=function(){this.container.style.display="none"},e.exports=r},function(e,t,n){"use strict";var l=n(0),o=n(1),i=n(6),a=n(5),r=n(3),s=Math.max,c=Math.min,u={_retriveScheduleData:function(e,t){var n,l,r,u,h,p,m,f=e.children.single();return!!f&&(n=f.container,m=f.getRenderDateRange(),l=m.length,p=f.getRenderDateGrids(),r=o.getSize(n)[0],u=i.getMousePosition(t,n),h=d(p,a.ratio(r,100,u[0])),function(t){var o=i.getMousePosition(t,n)[0],u=d(p,a.ratio(r,100,o));return u=s(u,0),u=c(u,l-1),{relatedView:e,dragStartXIndex:h,datesInRange:l,xIndex:u,triggerEvent:t.type,grids:p,range:m}})},_retriveScheduleDataFromDate:function(e,t){var n,o,i,a=e.children.single(),u=0,d=0;return!!a&&(n=(i=a.getRenderDateRange()).length,o=a.getRenderDateGrids(),l.forEach(i,(function(e,n){r.isSameDate(e,t)&&(u=d=n)})),u=s(u,0),u=c(u,n-1),{relatedView:e,dragStartXIndex:d,datesInRange:n,xIndex:u,triggerEvent:"manual",grids:o,range:i})}};function d(e,t){var n,l=0,o=e.length;for(t<0&&(t=0);l<o;l+=1)if((n=e[l]).left<=t&&t<=n.left+n.width)return l;return l}e.exports=u},function(e,t,n){"use strict";var l=n(0),o=n(5),i=n(3),a=n(6),r=n(31),s=n(4).Date,c={_calcGridYIndex:function(e,t,n){var l=i.millisecondsTo("hour",n*e/t),a=0|l;return a+(o.nearest(l-a,[0,1])?.5:0)},_retriveScheduleData:function(e){var t=this,n=e.container,c=e.options,u=e.getViewBound().height,d=e.getDate(),h=c.hourEnd-c.hourStart,p=i.millisecondsFrom("hour",h);return function(m,f){var g=r.n(a.getMousePosition(m,n)).y,y=o.ratio(u,h,g),S=new s(d).addMinutes(i.minutesFromHours(y)),_=t._calcGridYIndex(p,u,g),C=new s(d).addMinutes(i.minutesFromHours(_+c.hourStart));return l.extend({target:a.getEventTarget(m),relatedView:e,originEvent:m,mouseY:g,gridY:y,timeY:S,nearestGridY:_,nearestGridTimeY:C,triggerEvent:m.type},f)}},_retriveScheduleDataFromDate:function(e,t,n,l){var o,a,r,c=e.getDate();return{target:e,relatedView:e,gridY:o=t.getHours()-l+u(t.getMinutes()),timeY:new s(c).addMinutes(i.minutesFromHours(o)),nearestGridY:a=o,nearestGridTimeY:new s(c).addMinutes(i.minutesFromHours(a)),nearestGridEndY:r=n.getHours()-l+u(n.getMinutes()),nearestGridEndTimeY:new s(c).addMinutes(i.minutesFromHours(r)),triggerEvent:"manual",hourStart:l}},mixin:function(e){var t=e.prototype;l.forEach(c,(function(e,n){"mixin"!==n&&(t[n]=e)}))}};function u(e){var t;return 0===e?t=0:e>30?t=1:e<=30&&(t=.5),t}e.exports=c},function(e,t,n){"use strict";var l=n(0),o=n(5),i=n(1),a=n(6),r=n(3),s=Math.floor;e.exports=function(e){var t=e.children,n=t.sort((function(e,t){return l.stamp(e)-l.stamp(t)})),c=t.length,u=t.single().getRenderDateRange().length,d=l.pick(e.vLayout.panels[1],"container"),h=i.getSize(d),p=e.grids;return function(e){var t,i,m,f=a.getMousePosition(e,d),g=function(e){for(var t,n=0,l=p.length;n<l;n+=1)if((t=p[n]).left<=e&&e<=t.left+t.width)return n;return e<0?-1:n}(o.ratio(h[0],100,f[0])),y=s(o.ratio(h[1],c,f[1]));return y<0&&(y=0),y>=n.length&&(y=n.length-1),(t=l.pick(n,y))?(g<0&&(g=0),g>=(m=t.getRenderDateRange()).length&&(g=m.length-1),(i=l.pick(m,g))?{x:g,y:y,sizeX:u,sizeY:c,date:r.end(i),weekdayView:t,triggerEvent:e.type}:null):null}}},function(e,t,n){e.exports=n(21)},function(e,t,n){"use strict";function l(e){return e&&e.__esModule?e:{default:e}}function o(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}t.__esModule=!0;var i=o(n(22)),a=l(n(48)),r=l(n(12)),s=o(n(10)),c=o(n(49)),u=l(n(51));function d(){var e=new i.HandlebarsEnvironment;return s.extend(e,i),e.SafeString=a.default,e.Exception=r.default,e.Utils=s,e.escapeExpression=s.escapeExpression,e.VM=c,e.template=function(t){return c.template(t,e)},e}var h=d();h.create=d,u.default(h),h.default=h,t.default=h,e.exports=t.default},function(e,t,n){"use strict";function l(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0,t.HandlebarsEnvironment=d;var o=n(10),i=l(n(12)),a=n(23),r=n(45),s=l(n(24)),c=n(25);t.VERSION="4.7.6";t.COMPILER_REVISION=8;t.LAST_COMPATIBLE_COMPILER_REVISION=7;t.REVISION_CHANGES={1:"<= 1.0.rc.2",2:"== 1.0.0-rc.3",3:"== 1.0.0-rc.4",4:"== 1.x.x",5:"== 2.0.0-alpha.x",6:">= 2.0.0-beta.1",7:">= 4.0.0 <4.3.0",8:">= 4.3.0"};var u="[object Object]";function d(e,t,n){this.helpers=e||{},this.partials=t||{},this.decorators=n||{},a.registerDefaultHelpers(this),r.registerDefaultDecorators(this)}d.prototype={constructor:d,logger:s.default,log:s.default.log,registerHelper:function(e,t){if(o.toString.call(e)===u){if(t)throw new i.default("Arg not supported with multiple helpers");o.extend(this.helpers,e)}else this.helpers[e]=t},unregisterHelper:function(e){delete this.helpers[e]},registerPartial:function(e,t){if(o.toString.call(e)===u)o.extend(this.partials,e);else{if(void 0===t)throw new i.default('Attempting to register a partial called "'+e+'" as undefined');this.partials[e]=t}},unregisterPartial:function(e){delete this.partials[e]},registerDecorator:function(e,t){if(o.toString.call(e)===u){if(t)throw new i.default("Arg not supported with multiple decorators");o.extend(this.decorators,e)}else this.decorators[e]=t},unregisterDecorator:function(e){delete this.decorators[e]},resetLoggedPropertyAccesses:function(){c.resetLoggedProperties()}};var h=s.default.log;t.log=h,t.createFrame=o.createFrame,t.logger=s.default},function(e,t,n){"use strict";function l(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0,t.registerDefaultHelpers=function(e){o.default(e),i.default(e),a.default(e),r.default(e),s.default(e),c.default(e),u.default(e)},t.moveHelperToHooks=function(e,t,n){e.helpers[t]&&(e.hooks[t]=e.helpers[t],n||delete e.helpers[t])};var o=l(n(38)),i=l(n(39)),a=l(n(40)),r=l(n(41)),s=l(n(42)),c=l(n(43)),u=l(n(44))},function(e,t,n){"use strict";t.__esModule=!0;var l=n(10),o={methodMap:["debug","info","warn","error"],level:"info",lookupLevel:function(e){if("string"==typeof e){var t=l.indexOf(o.methodMap,e.toLowerCase());e=t>=0?t:parseInt(e,10)}return e},log:function(e){if(e=o.lookupLevel(e),"undefined"!=typeof console&&o.lookupLevel(o.level)<=e){var t=o.methodMap[e];console[t]||(t="log");for(var n=arguments.length,l=Array(n>1?n-1:0),i=1;i<n;i++)l[i-1]=arguments[i];console[t].apply(console,l)}}};t.default=o,e.exports=t.default},function(e,t,n){"use strict";t.__esModule=!0,t.createProtoAccessControl=function(e){var t=Object.create(null);t.constructor=!1,t.__defineGetter__=!1,t.__defineSetter__=!1,t.__lookupGetter__=!1;var n=Object.create(null);return n.__proto__=!1,{properties:{whitelist:l.createNewLookupObject(n,e.allowedProtoProperties),defaultValue:e.allowProtoPropertiesByDefault},methods:{whitelist:l.createNewLookupObject(t,e.allowedProtoMethods),defaultValue:e.allowProtoMethodsByDefault}}},t.resultIsAllowed=function(e,t,n){return a("function"==typeof e?t.methods:t.properties,n)},t.resetLoggedProperties=function(){Object.keys(i).forEach((function(e){delete i[e]}))};var l=n(47),o=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(n(24)),i=Object.create(null);function a(e,t){return void 0!==e.whitelist[t]?!0===e.whitelist[t]:void 0!==e.defaultValue?e.defaultValue:(function(e){!0!==i[e]&&(i[e]=!0,o.log("error",'Handlebars: Access has been denied to resolve the property "'+e+'" because it is not an "own property" of its parent.\nYou can add a runtime option to disable the check or this warning:\nSee https://handlebarsjs.com/api-reference/runtime-options.html#options-to-control-prototype-access for details'))}(t),!1)}},function(e,t,n){"use strict";var l=n(4).Date;function o(e){if(!(this instanceof o))return new o(e);e instanceof l||(e=new l(e)),this.d=e}o.prototype.safe=function(e){return e.constructor===o?e.d:e},o.prototype.clone=function(){return new o(new l(this.d))},o.prototype.addDate=function(e){return this.d.setDate(this.d.getDate()+e),this},o.prototype.addMonth=function(e){var t=this.d.getMonth(),n=this.d.getDate(),l=this._isLeapYear(),o=t+e,i=this.clone(),a=n;return e&&(1===o?a=l?29:28:(e>0?i.d.setMonth(o+1,0):i.d.setMonth(t,0),a=i.d.getDate())),this.d.setMonth(o,Math.min(n,a)),this},o.prototype._isLeapYear=function(){var e=this.d.getFullYear();return e%4==0&&e%100!=0||!(e%400)},o.prototype.setHours=function(e,t,n,l){return this.d.setHours(e,t,n,l),this},o.prototype.isBetween=function(e,t){var n=this.safe;return n(e)<=this.d&&this.d<=n(t)},e.exports=o},function(e,t,n){"use strict";(function(t){var l=n(0),o=n(1),i=n(6),a=n(2);function r(e,t){i.on(t,"mousedown",this._onMouseDown,this),this.options=l.extend({distance:10,exclude:null},e),this.container=t,this._cancelled=!1,this._isMoved=!1,this._distance=0,this._dragStartFired=!1,this._dragStartEventData=null}function s(e){o.closest(e.target,a.classname(".popup"))||i.preventDefault(e)}r.prototype.destroy=function(){i.off(this.container,"mousedown",this._onMouseDown,this),this._isMoved=null,this.container=null},r.prototype._clearData=function(){this._cancelled=!1,this._distance=0,this._isMoved=!1,this._dragStartFired=!1,this._dragStartEventData=null},r.prototype._toggleDragEvent=function(e){var n,l,a=this.container;e?(n="on",l="disable"):(n="off",l="enable"),o[l+"TextSelection"](a,s),o[l+"ImageDrag"](a,s),i[n](t.document,{mousemove:this._onMouseMove,mouseup:this._onMouseUp},this)},r.prototype._getEventData=function(e){return{target:i.getEventTarget(e),originEvent:e}},r.prototype._onMouseDown=function(e){var t=this.options,n=i.getEventTarget(e);0===i.getMouseButton(e)&&(t.exclude&&t.exclude(n)?this._cancelled=!0:(this._clearData(),this._dragStartEventData=this._getEventData(e),this._toggleDragEvent(!0),this.fire("mousedown",this._dragStartEventData)))},r.prototype._onMouseMove=function(e){var t;if(this._cancelled)this._clearData();else if(t=this.options.distance,s(e),this._distance<t)this._distance+=1;else{if(this._isMoved=!0,!this._dragStartFired&&(this._dragStartFired=!0,!this.invoke("dragStart",this._dragStartEventData)))return this._toggleDragEvent(!1),void this._clearData();this.fire("drag",this._getEventData(e))}},r.prototype._onMouseUp=function(e){this._cancelled||(this._toggleDragEvent(!1),this._isMoved?(this._isMoved=!1,this.fire("dragEnd",this._getEventData(e))):this.fire("click",this._getEventData(e)),this._clearData())},l.CustomEvents.mixin(r),e.exports=r}).call(this,n(9))},function(e,t,n){"use strict";var l=n(0),o=n(3),i=o.MILLISECONDS_SCHEDULE_MIN_DURATION;function a(e){this.model=e,this.top=0,this.left=0,this.width=0,this.height=0,this.hasCollide=!1,this.extraSpace=0,this.hidden=!1,this.hasMultiDates=!1,this.renderStarts=null,this.exceedLeft=!1,this.renderEnds=null,this.exceedRight=!1}a.create=function(e){return new a(e)},a.prototype.getStarts=function(){return this.renderStarts?this.renderStarts:this.model.start},a.prototype.getEnds=function(){return this.renderEnds?this.renderEnds:this.model.end},a.prototype.cid=function(){return l.stamp(this.model)},a.prototype.valueOf=function(){return this.model},a.prototype.duration=function(){return this.model.duration()},a.prototype.collidesWith=function(e){var t=this.getStarts(),n=this.getEnds(),l=e.getStarts(),a=e.getEnds(),r=o.millisecondsFrom("minutes",this.valueOf().goingDuration),s=o.millisecondsFrom("minutes",this.valueOf().comingDuration),c=o.millisecondsFrom("minutes",e.valueOf().goingDuration),u=o.millisecondsFrom("minutes",e.valueOf().comingDuration);return Math.abs(n-t)<i&&(n+=i),Math.abs(a-l)<i&&(a+=i),n+=s,a+=u,(l-=c)>(t-=r)&&l<n||a>t&&a<n||l<=t&&a>=n},e.exports=a},function(e,t,n){"use strict";var l=n(0),o=n(2),i=n(5),a=n(1),r=n(6),s=n(8),c=n(64),u=n(27),d=Math.abs;function h(e,t,n){var i,r;if(!(this instanceof h))return new h(e,t);s.call(this,t),a.addClass(t,o.classname("vlayout-container")),i=this.options=l.extend({panels:[],panelHeights:[]},e),this.panels=[],this._drag=new u({distance:10,exclude:function(e){return!a.hasClass(e,o.classname("splitter"))}},t),this._drag.on({dragStart:this._onDragStart,drag:this._onDrag,dragEnd:this._onDragEnd},this),this._dragData=null,this.theme=n,i.panels.length&&(i.panelHeights.length&&(r=i.panelHeights.slice(),l.forEach(i.panels,(function(e){e.isSplitter||e.autoHeight||(e.height=r.shift())}))),this.addPanels(i.panels,this.container)),this.refresh()}l.inherit(h,s),h.prototype.getLayoutData=function(){var e=[];return l.forEach(this.panels,(function(t){t.isSplitter()||t.options.autoHeight||e.push(t.getHeight())})),e},h.prototype.setLayoutData=function(e){e.length&&(l.forEach(this.panels,(function(t){t.isSplitter()||t.options.autoHeight||t.setHeight(null,e.shift())})),this.refresh())},h.prototype.nextPanel=function(e){return this.panels[e.index+1]},h.prototype.prevPanel=function(e){return this.panels[e.index-1]},h.prototype._initializeGuideElement=function(e,t){var n=e.cloneNode(!0);return a.addClass(n,o.classname("splitter-guide")),this._refreshGuideElement(n,t),this.container.appendChild(n),n},h.prototype._refreshGuideElement=function(e,t){e.style.top=t+"px"},h.prototype._clearGuideElement=function(e){a.remove(e)},h.prototype._resize=function(e,t,n){var o,i,a=d(t-n),r=[],s=n>t,c=s?"nextPanel":"prevPanel";for(i=(o=this[s?"prevPanel":"nextPanel"](e)).getResizeInfoByGrowth(a),r.push([o,i[0]]),o=this[c](o);l.isExisty(o);o=this[c](o))o.isSplitter()||(i=o.getResizeInfoByGrowth(-a),r.push([o,i[0]]),a-=i[1]);l.forEach(r,(function(e){e[0].setHeight(null,e[1],!0),e[0].fire("resize")}))},h.prototype._getMouseYAdditionalLimit=function(e){var t,n=0,o=0,i=function(e){return e.isSplitter()?e.getHeight():e.options.minHeight};for(t=this.prevPanel(e);l.isExisty(t);t=this.prevPanel(t))n+=i(t);for(t=this.nextPanel(e);l.isExisty(t);t=this.nextPanel(t))o+=i(t);return[n,o]},h.prototype._onDragStart=function(e){var t=e.originEvent,n=e.target,i=a.getData(n,"panelIndex"),s=this.panels[i],c=s.getHeight(),u=r.getMousePosition(t,n)[1],d=r.getMousePosition(t,this.container)[1],h=this._initializeGuideElement(n,d);s.addClass(o.classname("splitter-focused")),this._dragData={splPanel:s,splOffsetY:u,guideElement:h,startY:d-u,minY:0,maxY:this.getViewBound().height-c},l.browser.msie||a.addClass(document.body,o.classname("resizing"))},h.prototype._onDrag=function(e){var t=this._dragData,n=r.getMousePosition(e.originEvent,this.container)[1];n=i.limit(n-t.splOffsetY,[t.minY],[t.maxY]),this._refreshGuideElement(t.guideElement,n)},h.prototype._onDragEnd=function(e){var t=this._dragData,n=this._getMouseYAdditionalLimit(t.splPanel),l=r.getMousePosition(e.originEvent,this.container)[1];l=i.limit(l-t.splOffsetY,[t.minY+n[0]],[t.maxY-n[1]]),this._resize(t.splPanel,t.startY,l),this.fire("resize",{layoutData:this.getLayoutData()}),this._dragData=null,this._clearGuideElement(t.guideElement),t.splPanel.removeClass(o.classname("splitter-focused")),a.removeClass(document.body,o.classname("resizing"))},h.prototype.refresh=function(){var e,t=[],n=this.getViewBound().height,o=0;n&&(l.forEach(this.panels,(function(e){e.options.autoHeight?t.push(e):o+=e.getHeight()})),e=(n-o)/t.length,l.forEach(t,(function(t){t.setHeight(null,e)})))},h.prototype.addPanel=function(e,t){var n=document.createElement("div"),o=this.panels,i=o.length;e=l.extend({index:i},e),o.push(new c(e,n,this.theme)),t.appendChild(n)},h.prototype.addPanels=function(e,t){var n=this,o=document.createDocumentFragment();l.forEach(e,(function(e){n.addPanel(e,o)})),t.appendChild(o)},h.prototype.getPanelByName=function(e){var t;return l.forEach(this.panels,(function(n){n.name===e&&(t=n)})),t},e.exports=h},function(e,t,n){"use strict";var l=n(0),o=n(2),i=n(1),a=n(3),r=n(4).Date,s=n(8);function c(e,t){t=i.appendHTMLElement("div",t,o.classname("weekday")),this.options=l.extend({containerBottomGutter:8,scheduleHeight:18,scheduleGutter:2,narrowWeekend:!1,startDayOfWeek:0,workweek:!1},e),this._cacheParentViewModel=null,s.call(this,t)}l.inherit(c,s),c.prototype.getRenderDateRange=function(){return this._cacheParentViewModel.range},c.prototype.getRenderDateGrids=function(){return this._cacheParentViewModel.grids},c.prototype.getBaseViewModel=function(e){var t=this.options,n=e.range,o=100/n.length,i=e.grids,s=e.exceedDate||{},c=e.theme,u=(new r).toLocalTime();return this._cacheParentViewModel=e,{width:o,scheduleHeight:t.scheduleHeight,scheduleBlockHeight:t.scheduleHeight+t.scheduleGutter,scheduleBlockGutter:t.scheduleGutter,dates:l.map(n,(function(e,t){var n=e.getDay(),l=a.format(new r(e),"YYYYMMDD"),o=a.isSameDate(u,e);return{date:a.format(e,"YYYY-MM-DD"),month:e.getMonth()+1,day:n,isToday:o,ymd:l,hiddenSchedules:s[l]||0,width:i[t]?i[t].width:0,left:i[t]?i[t].left:0,color:this._getDayNameColor(c,n,o),backgroundColor:this._getDayBackgroundColor(c,n)}}),this)}},c.prototype.getExceedDate=function(e,t,n){var o=this._initExceedDate(n);return l.forEach(t,(function(t){l.forEach(t,(function(t){l.forEach(t,(function(t){var n;!t||t.top<e||(t.hidden=!0,n=a.range(t.getStarts(),t.getEnds(),a.MILLISECONDS_PER_DAY),l.forEach(n,(function(e){var t=a.format(e,"YYYYMMDD");o[t]+=1})))}))}))})),o},c.prototype._initExceedDate=function(e){var t={};return l.forEach(e,(function(e){var n=a.format(e,"YYYYMMDD");t[n]=0})),t},c.prototype._getDayNameColor=function(e,t,n,l){var o="";return e&&(o=0===t?l?e.month.holidayExceptThisMonth.color:e.common.holiday.color:6===t?l?e.month.dayExceptThisMonth.color:e.common.saturday.color:n?e.common.today.color:l?e.month.dayExceptThisMonth.color:e.common.dayname.color),o},c.prototype._getDayBackgroundColor=function(e,t){var n="";return e&&(n=0===t||6===t?e.month.weekend.backgroundColor:"inherit"),n},e.exports=c},function(e,t,n){"use strict";var l=n(0);function o(e,t,n){this.x=n?Math.round(e):e,this.y=n?Math.round(t):t}o.getRatio=function(e,t,n){return t===n?e.clone():e.multiplyBy(n)._divideBy(t)},o.n=function(e,t,n){return e instanceof o?e:l.isArray(e)?new o(e[0],e[1],t):new o(e,t,n)},o.prototype.clone=function(){return new o(this.x,this.y)},o.prototype.add=function(e){return this.clone()._add(o.n(e))},o.prototype._add=function(e){return this.x+=e.x,this.y+=e.y,this},o.prototype.subtract=function(e){return this.clone()._subtract(o.n(e))},o.prototype._subtract=function(e){return this.x-=e.x,this.y-=e.y,this},o.prototype.divideBy=function(e){return this.clone()._divideBy(e)},o.prototype._divideBy=function(e){return this.x/=e,this.y/=e,this},o.prototype.multiplyBy=function(e){return this.clone()._multiplyBy(e)},o.prototype._multiplyBy=function(e){return this.x*=e,this.y*=e,this},o.prototype.round=function(){return this.clone()._round()},o.prototype._round=function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this},o.prototype.reverse=function(){return this.clone()._reverse()},o.prototype._reverse=function(){return this.x*=-1,this.y*=-1,this},o.prototype.floor=function(){return this.clone()._floor()},o.prototype._floor=function(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this},o.prototype.ceil=function(){return this.clone()._ceil()},o.prototype._ceil=function(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this},o.prototype.rotate=function(e,t,n,l){return this.clone()._rotate(e,t,n,l)},o.prototype._rotate=function(e,t,n,l){var o,i,a=e*(Math.PI/180);return n=n||parseFloat(Math.cos(a).toFixed(8)),l=l||parseFloat(Math.sin(a).toFixed(8)),this._subtract(t),o=this.x,i=this.y,this.x=o*n-i*l,this.y=o*l+i*n,this._add(t),this},o.prototype.distanceTo=function(e){var t,n;return t=(e=o.n(e)).x-this.x,n=e.y-this.y,Math.sqrt(t*t+n*n)},o.prototype.equals=function(e){return(e=o.n(e)).x===this.x&&e.y===this.y},o.prototype.toString=function(){return"Point("+this.x+", "+this.y+")"},o.prototype.toArray=function(){return[this.x,this.y]},e.exports=o},function(e,t,n){"use strict";var l=n(8),o=n(16),i=n(0),a=n(79),r=n(4),s=n(2),c=n(6),u=n(1),d=n(5),h=n(3),p=n(80),m=r.Date;function f(e,t,n){l.call(this,e),this.layer=new o(null,e),this._viewModel=null,this._selectedCal=null,this._schedule=null,this.calendars=t,this._focusedDropdown=null,this._usageStatistics=n,this._onClickListeners=[this._selectDropdownMenuItem.bind(this),this._toggleDropdownMenuView.bind(this),this._closeDropdownMenuView.bind(this,null),this._closePopup.bind(this),this._toggleIsAllday.bind(this),this._toggleIsPrivate.bind(this),this._onClickSaveSchedule.bind(this)],c.on(e,"click",this._onClick,this)}i.inherit(f,l),f.prototype._onMouseDown=function(e){var t=c.getEventTarget(e);u.closest(t,s.classname(".floating-layer"))||this.hide()},f.prototype.destroy=function(){this.layer.destroy(),this.layer=null,c.off(this.container,"click",this._onClick,this),c.off(document.body,"mousedown",this._onMouseDown,this),l.prototype.destroy.call(this)},f.prototype._onClick=function(e){var t=c.getEventTarget(e);i.forEach(this._onClickListeners,(function(e){return!e(t)}))},f.prototype._closePopup=function(e){var t=s.classname("popup-close");return!(!u.hasClass(e,t)&&!u.closest(e,"."+t))&&(this.hide(),!0)},f.prototype._toggleDropdownMenuView=function(e){var t=s.classname("dropdown-button"),n=u.hasClass(e,t)?e:u.closest(e,"."+t);return!!n&&(u.hasClass(n.parentNode,s.classname("open"))?this._closeDropdownMenuView(n.parentNode):this._openDropdownMenuView(n.parentNode),!0)},f.prototype._closeDropdownMenuView=function(e){(e=e||this._focusedDropdown)&&(u.removeClass(e,s.classname("open")),this._focusedDropdown=null)},f.prototype._openDropdownMenuView=function(e){u.addClass(e,s.classname("open")),this._focusedDropdown=e},f.prototype._selectDropdownMenuItem=function(e){var t,n,l,o,i=s.classname("dropdown-menu-item"),a=s.classname("icon"),r=s.classname("content"),c=u.hasClass(e,i)?e:u.closest(e,"."+i);return!!c&&(t=u.find("."+a,c).style.backgroundColor||"transparent",n=u.find("."+r,c).innerHTML,l=u.closest(c,s.classname(".dropdown")),o=u.find(s.classname(".dropdown-button"),l),u.find("."+r,o).innerText=n,u.hasClass(l,s.classname("section-calendar"))&&(u.find("."+a,o).style.backgroundColor=t,this._selectedCal=d.find(this.calendars,(function(e){return e.id===u.getData(c,"calendarId")}))),u.removeClass(l,s.classname("open")),!0)},f.prototype._toggleIsAllday=function(e){var t,n=s.classname("section-allday"),l=u.hasClass(e,n)?e:u.closest(e,"."+n);return!!l&&((t=u.find(s.classname(".checkbox-square"),l)).checked=!t.checked,!0)},f.prototype._toggleIsPrivate=function(e){var t=s.classname("section-private"),n=u.hasClass(e,t)?e:u.closest(e,"."+t);return!!n&&(u.hasClass(n,s.classname("public"))?u.removeClass(n,s.classname("public")):u.addClass(n,s.classname("public")),!0)},f.prototype._onClickSaveSchedule=function(e){var t,n,l,o,i,a,r=s.classname("popup-save"),c=s.cssPrefix;return!(!u.hasClass(e,r)&&!u.closest(e,"."+r))&&(t=u.get(c+"schedule-title"),n=new m(this.rangePicker.getStartDate()).toLocalTime(),l=new m(this.rangePicker.getEndDate()).toLocalTime(),this._validateForm(t,n,l)?(a=!!u.get(c+"schedule-allday").checked,o=this._getRangeDate(n,l,a),i={calendarId:this._selectedCal?this._selectedCal.id:null,title:t,location:u.get(c+"schedule-location"),start:o.start,end:o.end,isAllDay:a,state:u.get(c+"schedule-state").innerText,isPrivate:!u.hasClass(u.get(c+"schedule-private"),s.classname("public"))},this._isEditMode?this._onClickUpdateSchedule(i):this._onClickCreateSchedule(i),this.hide(),!0):(t.value||t.focus(),!1))},f.prototype.render=function(e){var t,n,l=this.calendars,o=this.layer,a=this;e.zIndex=this.layer.zIndex+5,e.calendars=l,l.length&&(e.selectedCal=this._selectedCal=l[0]),this._isEditMode=e.schedule&&e.schedule.id,this._isEditMode?(t=e.target,e=this._makeEditModeData(e)):(this.guide=e.guide,t=(n=this._getGuideElements(this.guide)).length?n[0]:null),o.setContent(p(e)),this._createDatepicker(e.start,e.end,e.isAllDay),o.show(),t&&this._setPopupPositionAndArrowDirection(t.getBoundingClientRect()),i.debounce((function(){c.on(document.body,"mousedown",a._onMouseDown,a)}))()},f.prototype._makeEditModeData=function(e){var t,n,l,o,i,a,r,s=e.schedule,c=s.raw||{},u=this.calendars,h=s.id;return t=s.title,n="private"===c.class,l=s.location,o=s.start,i=s.end,a=s.isAllDay,r=s.state,e.selectedCal=this._selectedCal=d.find(this.calendars,(function(t){return t.id===e.schedule.calendarId})),this._schedule=s,{id:h,selectedCal:this._selectedCal,calendars:u,title:t,isPrivate:n,location:l,isAllDay:a,state:r,start:o,end:i,raw:{class:n?"private":"public"},zIndex:this.layer.zIndex+5,isEditMode:this._isEditMode}},f.prototype._setPopupPositionAndArrowDirection=function(e){var t=u.find(s.classname(".popup"),this.layer.container),n={width:t.offsetWidth,height:t.offsetHeight},l=this.container.getBoundingClientRect(),o=this._calcRenderingData(n,l,e);this.layer.setPosition(o.x,o.y),this._setArrowDirection(o.arrow)},f.prototype._getGuideElements=function(e){var t=[],n=0;if(e.guideElement)t.push(e.guideElement);else if(e.guideElements)for(;n<6;n+=1)e.guideElements[n]&&t.push(e.guideElements[n]);return t},f.prototype._getBoundOfFirstRowGuideElement=function(e){var t;return e.length?{top:(t=e[0].getBoundingClientRect()).top,left:t.left,bottom:t.bottom,right:t.right}:null},f.prototype._getYAndArrowDirection=function(e,t,n,l,o){var i="arrow-bottom",a=e-n;return a<l?(a=t-l+3,i="arrow-top"):a=a-l-3,a+n>o&&(a=o-n-l-3),{y:a,arrowDirection:i}},f.prototype._getXAndArrowLeft=function(e,t,n,l,o){var i,a=(e+t)/2,r=a-n/2;return r+n>o?i=a-(r=t-n+8):r+=8,r<l?(r=0,i=a-l-8):r=r-l-8,{x:r,arrowLeft:i}},f.prototype._calcRenderingData=function(e,t,n){var l=this._getYAndArrowDirection(n.top,n.bottom,e.height,t.top,t.bottom),o=this._getXAndArrowLeft(n.left,n.right,e.width,t.left,t.right);return{x:o.x,y:l.y,arrow:{direction:l.arrowDirection,position:o.arrowLeft}}},f.prototype._setArrowDirection=function(e){var t=e.direction||"arrow-bottom",n=u.get(s.classname("popup-arrow")),l=u.find(s.classname(".popup-arrow-border",n));t!==s.classname("arrow-bottom")&&(u.removeClass(n,s.classname("arrow-bottom")),u.addClass(n,s.classname(t))),e.position&&(l.style.left=e.position+"px")},f.prototype._createDatepicker=function(e,t,n){var l=s.cssPrefix;this.rangePicker=a.createRangePicker({startpicker:{date:new m(e).toDate(),input:"#"+l+"schedule-start-date",container:"#"+l+"startpicker-container"},endpicker:{date:new m(t).toDate(),input:"#"+l+"schedule-end-date",container:"#"+l+"endpicker-container"},format:n?"yyyy-MM-dd":"yyyy-MM-dd HH:mm",timepicker:n?null:{showMeridiem:!1,usageStatistics:this._usageStatistics},usageStatistics:this._usageStatistics})},f.prototype.hide=function(){this.layer.hide(),this.guide&&(this.guide.clearGuideElement(),this.guide=null),c.off(document.body,"mousedown",this._onMouseDown,this)},f.prototype.refresh=function(){this._viewModel&&this.layer.setContent(this.tmpl(this._viewModel))},f.prototype.setCalendars=function(e){this.calendars=e||[]},f.prototype._validateForm=function(e,t,n){return!!e.value&&(!(!t&&!n)&&1!==h.compare(t,n))},f.prototype._getRangeDate=function(e,t,n){var l=n?h.start(e):e,o=n?h.renderEnd(e,t):t;return{start:new m(l),end:new m(o)}},f.prototype._onClickUpdateSchedule=function(e){var t=d.getScheduleChanges(this._schedule,["calendarId","title","location","start","end","isAllDay","state"],{calendarId:e.calendarId,title:e.title.value,location:e.location.value,start:e.start,end:e.end,isAllDay:e.isAllDay,state:e.state});this.fire("beforeUpdateSchedule",{schedule:i.extend({raw:{class:e.isPrivate?"private":"public"}},this._schedule),changes:t,start:e.start,end:e.end,calendar:this._selectedCal,triggerEventName:"click"})},f.prototype._onClickCreateSchedule=function(e){this.fire("beforeCreateSchedule",{calendarId:e.calendarId,title:e.title.value,location:e.location.value,raw:{class:e.isPrivate?"private":"public"},start:e.start,end:e.end,isAllDay:e.isAllDay,state:e.state})},e.exports=f},function(e,t,n){"use strict";var l=n(8),o=n(16),i=n(0),a=n(2),r=n(6),s=n(1),c=n(81);function u(e){l.call(this,e),this.layer=new o(null,e),this._viewModel=null,this._schedule=null,this._calendar=null,r.on(e,"click",this._onClick,this)}i.inherit(u,l),u.prototype._onMouseDown=function(e){var t=r.getEventTarget(e);s.closest(t,a.classname(".floating-layer"))||this.hide()},u.prototype.destroy=function(){this.layer.destroy(),this.layer=null,r.off(this.container,"click",this._onClick,this),r.off(document.body,"mousedown",this._onMouseDown,this),l.prototype.destroy.call(this)},u.prototype._onClick=function(e){var t=r.getEventTarget(e);this._onClickEditSchedule(t),this._onClickDeleteSchedule(t)},u.prototype._onClickEditSchedule=function(e){var t=a.classname("popup-edit");(s.hasClass(e,t)||s.closest(e,"."+t))&&(this.fire("beforeUpdateSchedule",{schedule:this._schedule,triggerEventName:"click",target:this._scheduleEl}),this.hide())},u.prototype._onClickDeleteSchedule=function(e){var t=a.classname("popup-delete");(s.hasClass(e,t)||s.closest(e,"."+t))&&(this.fire("beforeDeleteSchedule",{schedule:this._schedule}),this.hide())},u.prototype.render=function(e){var t=this.layer,n=this;t.setContent(c({schedule:e.schedule,calendar:e.calendar})),t.show(),this._setPopupPositionAndArrowDirection(e.event),this._schedule=e.schedule,this._calendar=e.calendar,i.debounce((function(){r.on(document.body,"mousedown",n._onMouseDown,n)}))()},u.prototype._setPopupPositionAndArrowDirection=function(e){var t,n=s.find(a.classname(".popup"),this.layer.container),l={width:n.offsetWidth,height:n.offsetHeight},o=this.container.getBoundingClientRect(),i=r.getEventTarget(e),c=s.closest(i,a.classname(".time-date-schedule-block"))||s.closest(i,a.classname(".weekday-schedule"))||i,u=c.getBoundingClientRect();this._scheduleEl=c,t=this._calcRenderingData(l,o,u),this.layer.setPosition(t.x,t.y),this._setArrowDirection(t.arrow)},u.prototype._getYAndArrowTop=function(e,t,n,l,o){var i,a,r;return(a=(i=((e=e<0?0:e)+t)/2)-n/2)<l?(a=0,r=i-l-8):a+n>o?r=i-(a=Math.max(o-n-l,0))-l-8:a-=l,(r<0||r>n)&&(r=null),{y:a,arrowTop:r}},u.prototype._getXAndArrowDirection=function(e,t,n,l,o){var i="arrow-left",a=t;return a+n>o?(i="arrow-right",a=e-n-4):a+=4,a<l?a=0:a-=l,{x:a,arrowDirection:i}},u.prototype._calcRenderingData=function(e,t,n){var l=this._getYAndArrowTop(n.top,n.bottom,e.height,t.top,t.bottom),o=this._getXAndArrowDirection(n.left,n.right,e.width,t.left,t.right);return{x:o.x,y:l.y,arrow:{direction:o.arrowDirection,position:l.arrowTop}}},u.prototype._setArrowDirection=function(e){var t=e.direction||"arrow-left",n=s.find(a.classname(".popup-arrow"),this.layer.container),l=s.find(a.classname(".popup-arrow-border"),n);t!==a.classname("arrow-left")&&(s.removeClass(n,a.classname("arrow-left")),s.addClass(n,a.classname(t))),e.position&&(l.style.top=e.position+"px")},u.prototype.hide=function(){this.layer.hide(),this.guide&&(this.guide.clearGuideElement(),this.guide=null),r.off(document.body,"mousedown",this._onMouseDown,this)},u.prototype.refresh=function(){this._viewModel&&this.layer.setContent(this.tmpl(this._viewModel))},e.exports=u},function(e,t,n){"use strict";var l=n(0),o=n(2),i=n(5),a=n(1),r=n(17),s=n(84),c=n(4).Date;function u(e,t,n){this.dragHandler=e,this.view=t,this.controller=n,this._dragStart=null,e.on({dragStart:this._onDragStart},this),this.guide=new s(this)}u.prototype.destroy=function(){this.guide.destroy(),this.dragHandler.off(this),this.dragHandler=this.view=this.controller=this.guide=this._dragStart=null},u.prototype.checkExpectedCondition=function(e){var t,n,i=a.getClass(e);return!~i.indexOf(o.classname("weekday-resize-handle"))&&(!!(t=a.closest(e,o.classname(".weekday")))&&(!(!(n=(i=a.getClass(t)).match(o.daygrid.getViewIDRegExp))||n.length<2)&&l.pick(this.view.children.items,n[1])))},u.prototype._onDragStart=function(e){var t,n,i,r,s,c=e.target,u=this.checkExpectedCondition(c),d=this.controller;u&&(t=a.closest(c,o.classname(".weekday-schedule-block"),!0))&&(n=a.getData(t,"id"),(i=d.schedules.items[n])&&(i.isReadOnly||(r=this._retriveScheduleData(this.view,e.originEvent),this.getScheduleDataFunc=r,s=this._dragStart=r(e.originEvent),l.extend(s,{scheduleBlockElement:t,model:i}),this.dragHandler.on({drag:this._onDrag,dragEnd:this._onDragEnd,click:this._onClick},this),this.fire("dragstart",s))))},u.prototype._onDrag=function(e){var t=this.getScheduleDataFunc;t&&this.fire("drag",t(e.originEvent))},u.prototype._updateSchedule=function(e){var t=e.targetModel,n=e.xIndex-e.dragStartXIndex,l=new c(t.start),o=new c(t.end);l=l.addDate(n),o=o.addDate(n),this.fire("beforeUpdateSchedule",{schedule:t,changes:{start:l,end:o},start:l,end:o})},u.prototype._onDragEnd=function(e,t,n){var o,i=this.getScheduleDataFunc,a=this._dragStart;i&&a&&(this.dragHandler.off({drag:this._onDrag,dragEnd:this._onDragEnd,click:this._onClick},this),o=i(e.originEvent),l.extend(o,{targetModel:a.model}),n||this._updateSchedule(o),this.fire(t||"dragend",o),this.getScheduleDataFunc=this._dragStart=null)},u.prototype._onClick=function(e){this._onDragEnd(e,"click",!0)},i.mixin(r,u),l.CustomEvents.mixin(u),e.exports=u},function(e,t,n){"use strict";var l=n(0),o=n(2),i=n(1),a=n(3),r=n(4).Date,s=n(106),c=Math.max,u=Math.min,d=Math.abs,h=Math.floor;function p(e,t){this.options=l.extend({top:0,height:"20px",bgColor:"#f7ca88",label:"New event",isResizeMode:!1,isCreationMode:!1,styles:this._getStyles(t.controller.theme)},e),this.view=t,this.weeks=t.children.sort((function(e,t){return l.stamp(e)-l.stamp(t)})),this.days=t.children.single().getRenderDateRange().length,this.startCoord=[0,0],this.guideElements={},this.grids=t.grids}p.prototype.destroy=function(){this.clear(),this.options=this.view=this.weeks=this.days=this.startCoord=this.guideElements=null},p.prototype.clearGuideElement=function(){this.destroy()},p.prototype._getRatioValueInWeek=function(e){return(this.grids[e]||{left:100}).left},p.prototype._createGuideElement=function(){var e=document.createElement("div");return e.innerHTML=s(this.options),e.firstChild},p.prototype._getGuideElement=function(e){var t=this.guideElements,n=t[e],l=this.weeks[e];return l?(n||(n=this._createGuideElement(),l.container.appendChild(n),t[e]=n),n):null},p.prototype._getCoordByDate=function(e){for(var t=this.weeks,n=l.pick(this.view,"options","workweek")?this.days+2:this.days,o=function(e,t){return h(a.millisecondsTo("day",d(t-e)))},i=a.start(t[0].options.renderStartDate),s=e<i,c=new r(i),u=new r(i).addDate(s?-n:n).addDate(-1),p=o(e,c),m=0;!a.isBetweenWithDate(e,c,u);)c.addDate(s?-n:n),u=new r(c).addDate(n-1),p=o(e,c),m+=s?-1:1;return[p,m]},p.prototype._getLimitedCoord=function(e,t,n){var l,o=e[0],i=e[1];return t=t||[0,0],n=n||[this.days-1,this.weeks.length-1],i<t[1]?l=t.slice(0):i>n[1]?l=n.slice(0):(o=c(t[0],o),l=[o=u(n[0],o),i]),l},p.prototype.start=function(e){var t,n=this.options,o=e.target,i=e.model,s=e.x,c=e.y,u=new r(this.view.options.renderMonth);n.isCreationMode?i&&!a.isSameMonth(u,i.start)&&(i.start.setMonth(u.getMonth()),i.start.setDate(1),i.end.setMonth(u.getMonth()),i.end.setDate(1)):(s=(t=this._getCoordByDate(i.getStarts()))[0],c=t[1],l.extend(this.options,{top:parseInt(o.style.top,10)+"px",height:parseInt(o.style.height,10)+"px",label:i.title},i)),(l.isUndefined(s)||l.isUndefined(c))&&(s=(t=this._getCoordByDate(i.getStarts()))[0],c=t[1]),this.startCoord=[s,c],this.update(s,c)},p.prototype._updateGuides=function(e){l.forEach(e,(function(e){var t=e.guide,n=o.classname("month-exceed-left"),l=o.classname("month-exceed-right");t.style.display="block",t.style.left=e.left+"%",t.style.width=e.width+"%",e.exceedL?i.addClass(t,n):i.removeClass(t,n),e.exceedR?i.addClass(t,l):i.removeClass(t,l)}))},p.prototype._getOriginIndicate=function(e,t){var n,l,o=u(e[0],t[0]),i=c(e[0],t[0])+1;return t[1]>e[1]?(o=e[0],i=this.days,l=!0):t[1]<e[1]&&(o=0,i=e[0]+1,n=!0),{left:this._getRatioValueInWeek(o),width:this._getRatioValueInWeek(i)-this._getRatioValueInWeek(o),exceedL:n,exceedR:l}},p.prototype._getMouseIndicate=function(e,t){var n,l,o=t[0],i=t[0]+1;return t[1]>e[1]?(o=0,n=!0):t[1]<e[1]&&(i=this.days,l=!0),{left:this._getRatioValueInWeek(o),width:this._getRatioValueInWeek(i)-this._getRatioValueInWeek(o),exceedL:n,exceedR:l}},p.prototype._getContainIndicate=function(){return{left:0,width:100,exceedL:!0,exceedR:!0}},p.prototype._removeGuideElements=function(e){var t=this.guideElements;l.forEach(e,(function(e){i.remove(t[e]),delete t[e]}))},p.prototype._getExcludesInRange=function(e,t){var n=u.apply(null,e),o=c.apply(null,e),i=[];return l.forEach(t,(function(e){((e=parseInt(e,10))<n||e>o)&&i.push(e)})),i},p.prototype.update=function(e,t){var n=this,o=this.startCoord,i=[e,t],a=this.options.isResizeMode?this._getLimitedCoord(i,o):i,r=l.keys(this.guideElements),s=l.range(u(o[1],a[1]),c(o[1],a[1])+1),d=this._getExcludesInRange(s,r),h={};this._removeGuideElements(d),l.forEach(s,(function(e){var t,r=n._getGuideElement(e);r&&(t=e===o[1]?n._getOriginIndicate(o,a):e===i[1]?n._getMouseIndicate(o,i):n._getContainIndicate(),h[e]=l.extend({guide:r},t))})),this._updateGuides(h)},p.prototype.clear=function(){l.forEach(this.guideElements,(function(e){i.remove(e)})),this.guideElements={}},p.prototype._getStyles=function(e){var t={};return e&&(t.border=e.common.creationGuide.border,t.backgroundColor=e.common.creationGuide.backgroundColor,t.scheduleHeight=e.month.schedule.height,t.scheduleGutter=e.month.schedule.marginTop,t.marginLeft=e.month.schedule.marginLeft,t.marginRight=e.month.schedule.marginRight,t.borderRadius=e.month.schedule.borderRadius),t},e.exports=p},function(e,t,n){"use strict";(function(t){var l=n(0),o=n(37);n(114),n(115),t.jQuery&&(t.jQuery.fn.tuiCalendar=function(){var e,n,i=this.get(0),a=Array.prototype.slice.apply(arguments);if(i)if(e=l.pick(a,0)||{},n=t.jQuery.data(i,"tuiCalendar")){if("string"==typeof e&&n[e])return n[e].apply(n,a.slice(1))}else n=new o(i,e),t.jQuery.data(i,"tuiCalendar",n);return this}),e.exports=o}).call(this,n(9))},function(e,t,n){"use strict";var l=n(0),o=n(20),i=n(26),a=n(3),r=n(52),s=n(27),c=n(53),u=n(63),d=n(97),h=n(4).Date,p=n(2),m=n(4),f=n(11),g=Math.min;function y(e,t){!0===(t=l.extend({usageStatistics:!0},t)).usageStatistics&&l.sendHostname&&l.sendHostname("calendar","UA-129951699-1"),l.isString(e)&&(e=document.querySelector(e)),this._calendarColor={},this._renderDate=a.start(),this._renderRange={start:null,end:null},this._controller=function(e){return c(e)}(t),this._controller.setCalendars(t.calendars),this._layout=new r(e,this._controller.theme),this._dragHandler=new s({distance:10},this._layout.container),this._viewName=t.defaultView||"week",this._refreshMethod=null,this._scrollToNowMethod=null,this._requestScrollToNow=!1,this._openCreationPopup=null,this._hideMoreView=null,this._requestRender=0,this._options={},this._initialize(t)}function S(e,t){e.recursive((function(e){var n=e.options;n&&t(e,n)}))}y.prototype.destroy=function(){this._dragHandler.destroy(),this._controller.off(),this._layout.clear(),this._layout.destroy(),l.forEach(this._options.template,(function(e,t){e&&o.unregisterHelper(t+"-tmpl")})),this._options=this._renderDate=this._controller=this._layout=this._dragHandler=this._viewName=this._refreshMethod=this._scrollToNowMethod=null},y.prototype._initialize=function(e){var t=this._controller,n=this._viewName;this._options=l.extend({defaultView:n,taskView:!0,scheduleView:!0,template:l.extend({allday:null,time:null},l.pick(e,"template")||{}),week:l.extend({},l.pick(e,"week")||{}),month:l.extend({},l.pick(e,"month")||{}),calendars:[],useCreationPopup:!1,useDetailPopup:!1,timezones:e.timezones||[],disableDblClick:!1,disableClick:!1,isReadOnly:!1},e),this._options.week=l.extend({startDayOfWeek:0,workweek:!1},l.pick(this._options,"week")||{}),this._options.month=l.extend({startDayOfWeek:0,workweek:!1,scheduleFilter:function(e){return Boolean(e.isVisible)&&("allday"===e.category||"time"===e.category)}},l.pick(e,"month")||{}),this._options.isReadOnly&&(this._options.useCreationPopup=!1),this._layout.controller=t,this._setAdditionalInternalOptions(e),this.changeView(n,!0)},y.prototype._setAdditionalInternalOptions=function(e){var t=e.timezones||[];l.forEach(e.template,(function(e,t){e&&o.registerHelper(t+"-tmpl",e)})),l.forEach(e.calendars||[],(function(e){this.setCalendarColor(e.id,e,!0)}),this),t.length&&m.setOffsetByTimezoneOption(t[0].timezoneOffset)},y.prototype.createSchedules=function(e,t){l.forEach(e,(function(e){this._setScheduleColor(e.calendarId,e)}),this),this._controller.createSchedules(e,t),t||this.render()},y.prototype.getSchedule=function(e,t){return this._controller.schedules.single((function(n){return n.id===e&&n.calendarId===t}))},y.prototype.updateSchedule=function(e,t,n,l){var o=this._controller,i=o.schedules.single((function(n){return n.id===e&&n.calendarId===t}));n&&i&&(n=this._hasChangedCalendar(i,n)?this._setScheduleColor(n.calendarId,n):n,o.updateSchedule(i,n),l||this.render())},y.prototype._hasChangedCalendar=function(e,t){return e&&t.calendarId&&e.calendarId!==t.calendarId},y.prototype._setScheduleColor=function(e,t){var n=this._calendarColor[e];return n&&(t.color=t.color||n.color,t.bgColor=t.bgColor||n.bgColor,t.borderColor=t.borderColor||n.borderColor,t.dragBgColor=t.dragBgColor||n.dragBgColor),t},y.prototype.deleteSchedule=function(e,t,n){var l=this._controller,o=l.schedules.single((function(n){return n.id===e&&n.calendarId===t}));o&&(l.deleteSchedule(o),n||this.render())},y.prototype._getWeekDayRange=function(e,t,n){var o,i,r,s;return t=t||0,o=(e=l.isDate(e)?e:new h(e)).getDay(),i=new h(e).addDate(-o+t),r=new h(i).addDate(6),o<t&&(i=new h(i).addDate(-7),r=new h(r).addDate(-7)),n&&(s=a.range(a.start(i),a.end(r),a.MILLISECONDS_PER_DAY),i=(s=l.filter(s,(function(e){return!a.isWeekend(e.getDay())})))[0],r=s[s.length-1]),[i=a.start(i),r=a.start(r)]},y.prototype.toggleSchedules=function(e,t,n){var o=this._controller.schedules;n=!l.isExisty(n)||n,e=l.isArray(e)?e:[e],o.each((function(n){~l.inArray(n.calendarId,e)&&n.set("isVisible",!t)})),n&&this.render()},y.prototype.render=function(e){this._requestRender&&f.cancelAnimFrame(this._requestRender),e?this._renderFunc():this._requestRender=f.requestAnimFrame(this._renderFunc,this)},y.prototype._renderFunc=function(){this._refreshMethod&&this._refreshMethod(),this._layout&&this._layout.render(),this._scrollToNowMethod&&this._requestScrollToNow&&this._scrollToNowMethod(),this._requestScrollToNow=!1,this._requestRender=null},y.prototype.clear=function(e){this._controller.clearSchedules(),this.render(e)},y.prototype.scrollToNow=function(){this._scrollToNowMethod&&(this._requestScrollToNow=!0)},y.prototype.today=function(){this._renderDate=a.start(),this._setViewName(this._viewName),this.move(),this.render()},y.prototype.move=function(e){var t,n,o,r,s,c,u,d,p=i(a.start(this._renderDate)),m=this._viewName,f=this._getCurrentView(),y=S;e=l.isExisty(e)?e:0,"month"===m?(r=l.pick(this._options,"month","startDayOfWeek")||0,s=g(l.pick(this._options,"month","visibleWeeksCount")||0,6),c=l.pick(this._options,"month","workweek")||!1,u=l.pick(this._options,"month","isAlways6Week"),s?(d={startDayOfWeek:r,isAlways6Week:!1,visibleWeeksCount:s,workweek:c},p.addDate(7*e*d.visibleWeeksCount),o=a.arr2dCalendar(p.d,d),y(f,(function(e,t){t.renderMonth=new h(p.d)}))):(d={startDayOfWeek:r,isAlways6Week:u,workweek:c},p.addMonth(e),o=a.arr2dCalendar(p.d,d),y(f,(function(e,t){t.renderMonth=new h(p.d)}))),t=o[0][0],n=o[o.length-1][o[o.length-1].length-1]):"week"===m?(p.addDate(7*e),r=l.pick(this._options,"week","startDayOfWeek")||0,c=l.pick(this._options,"week","workweek")||!1,o=this._getWeekDayRange(p.d,r,c),t=o[0],n=o[1],y(f,(function(e,l){l.renderStartDate=new h(t),l.renderEndDate=new h(n),e.setState({collapsed:!0})}))):"day"===m&&(p.addDate(e),t=a.start(p.d),n=a.end(p.d),y(f,(function(e,l){l.renderStartDate=new h(t),l.renderEndDate=new h(n),e.setState({collapsed:!0})}))),this._renderDate=p.d,this._renderRange={start:t,end:n}},y.prototype.setDate=function(e){l.isString(e)&&(e=a.parse(e)),this._renderDate=new h(e),this._setViewName(this._viewName),this.move(0),this.render()},y.prototype.next=function(){this.move(1),this.render()},y.prototype.prev=function(){this.move(-1),this.render()},y.prototype._getCurrentView=function(){var e=this._viewName;return"day"===e&&(e="week"),l.pick(this._layout.children.items,e)},y.prototype.setCalendarColor=function(e,t,n){var o=this._calendarColor,i=this._controller.schedules,a=o[e];l.isObject(t)||p.throwError("Calendar#changeCalendarColor(): color 는 {color: '', bgColor: ''} 형태여야 합니다."),a=o[e]=l.extend({color:"#000",bgColor:"#a1b56c",borderColor:"#a1b56c",dragBgColor:"#a1b56c"},t),i.each((function(t){t.calendarId===e&&(t.color=a.color,t.bgColor=a.bgColor,t.borderColor=a.borderColor,t.dragBgColor=a.dragBgColor)})),n||this.render()},y.prototype._onClick=function(e){this.fire("clickSchedule",e)},y.prototype._onClickMore=function(e){this.fire("clickMore",e)},y.prototype._onClickDayname=function(e){this.fire("clickDayname",e)},y.prototype._onBeforeCreate=function(e){this._options.useCreationPopup&&!e.useCreationPopup&&this._showCreationPopup?this._showCreationPopup(e):this.fire("beforeCreateSchedule",e)},y.prototype._onBeforeUpdate=function(e){this.fire("beforeUpdateSchedule",e)},y.prototype._onBeforeDelete=function(e){this.fire("beforeDeleteSchedule",e)},y.prototype._onAfterRenderSchedule=function(e){this.fire("afterRenderSchedule",e)},y.prototype._onClickTimezonesCollapseBtn=function(e){this.fire("clickTimezonesCollapseBtn",e)},y.prototype._toggleViewSchedule=function(e,t){var n=this,o=t.handler,i=e?"on":"off";l.forEach(o.click,(function(e){e[i]("clickSchedule",n._onClick,n)})),l.forEach(o.dayname,(function(e){e[i]("clickDayname",n._onClickDayname,n)})),l.forEach(o.creation,(function(e){e[i]("beforeCreateSchedule",n._onBeforeCreate,n),e[i]("beforeDeleteSchedule",n._onBeforeDelete,n)})),l.forEach(o.move,(function(e){e[i]("beforeUpdateSchedule",n._onBeforeUpdate,n)})),l.forEach(o.resize,(function(e){e[i]("beforeUpdateSchedule",n._onBeforeUpdate,n)})),t[i]("afterRenderSchedule",n._onAfterRenderSchedule,n),t[i]("clickTimezonesCollapseBtn",n._onClickTimezonesCollapseBtn,n),t[i]("clickMore",n._onClickMore,n)},y.prototype.changeView=function(e,t){var n,l=this,o=this._layout,i=this._controller,a=this._dragHandler,r=this._options,s=this._viewName;(t||s!==e)&&(this._setViewName(e),"day"===s&&(s="week"),"day"===e&&(e="week"),o.children.doWhenHas(s,(function(e){l._toggleViewSchedule(!1,e)})),o.clear(),"month"===e?n=function(e,t,n,l){return d(e,t,n,l)}(i,o.container,a,r):"week"===e&&(n=function(e,t,n,l,o){return u(e,t,n,l,o)}(i,o.container,a,r,this.getViewName())),o.addChild(n.view),o.children.doWhenHas(e,(function(e){l._toggleViewSchedule(!0,e)})),this._refreshMethod=n.refresh,this._scrollToNowMethod=n.scrollToNow,this._openCreationPopup=n.openCreationPopup,this._showCreationPopup=n.showCreationPopup,this._hideMoreView=n.hideMoreView,this.move(),this.render())},y.prototype.toggleTaskView=function(e){var t=this._viewName;this._options.taskView=e,this.changeView(t,!0)},y.prototype.toggleScheduleView=function(e){var t=this._viewName;this._options.scheduleView=e,this.changeView(t,!0)},y.prototype._setViewName=function(e){this._viewName=e},y.prototype.getElement=function(e,t){return this.getSchedule(e,t)?document.querySelector('[data-schedule-id="'+e+'"][data-calendar-id="'+t+'"]'):null},y.prototype.setTheme=function(e){var t=this._controller.setTheme(e);return this.render(!0),t},y.prototype.setOptions=function(e,t){l.forEach(e,(function(e,t){l.isObject(e)&&!l.isArray(e)?l.forEach(e,(function(e,n){this._options[t][n]=e}),this):this._options[t]=e}),this),this._setAdditionalInternalOptions(e),t||this.changeView(this._viewName,!0)},y.prototype.getOptions=function(){return this._options},y.prototype.getDate=function(){return this._renderDate},y.prototype.getDateRangeStart=function(){return this._renderRange.start},y.prototype.getDateRangeEnd=function(){return this._renderRange.end},y.prototype.getViewName=function(){return this._viewName},y.prototype.setCalendars=function(e){l.forEach(e||[],(function(e){this.setCalendarColor(e.id,e,!0)}),this),this._controller.setCalendars(e),this.render()},y.prototype.openCreationPopup=function(e){this._openCreationPopup&&this._openCreationPopup(e)},y.prototype.hideMoreView=function(){this._hideMoreView&&this._hideMoreView()},y.setTimezoneOffset=function(e){m.setOffset(e)},y.setTimezoneOffsetCallback=function(e){m.setOffsetCallback(e)},l.CustomEvents.mixin(y),e.exports=y},function(e,t,n){"use strict";t.__esModule=!0;var l=n(10);t.default=function(e){e.registerHelper("blockHelperMissing",(function(t,n){var o=n.inverse,i=n.fn;if(!0===t)return i(this);if(!1===t||null==t)return o(this);if(l.isArray(t))return t.length>0?(n.ids&&(n.ids=[n.name]),e.helpers.each(t,n)):o(this);if(n.data&&n.ids){var a=l.createFrame(n.data);a.contextPath=l.appendContextPath(n.data.contextPath,n.name),n={data:a}}return i(t,n)}))},e.exports=t.default},function(e,t,n){"use strict";(function(l){t.__esModule=!0;var o,i=n(10),a=n(12),r=(o=a)&&o.__esModule?o:{default:o};t.default=function(e){e.registerHelper("each",(function(e,t){if(!t)throw new r.default("Must pass iterator to #each");var n,o=t.fn,a=t.inverse,s=0,c="",u=void 0,d=void 0;function h(t,n,l){u&&(u.key=t,u.index=n,u.first=0===n,u.last=!!l,d&&(u.contextPath=d+t)),c+=o(e[t],{data:u,blockParams:i.blockParams([e[t],t],[d+t,null])})}if(t.data&&t.ids&&(d=i.appendContextPath(t.data.contextPath,t.ids[0])+"."),i.isFunction(e)&&(e=e.call(this)),t.data&&(u=i.createFrame(t.data)),e&&"object"==typeof e)if(i.isArray(e))for(var p=e.length;s<p;s++)s in e&&h(s,s,s===e.length-1);else if(l.Symbol&&e[l.Symbol.iterator]){for(var m=[],f=e[l.Symbol.iterator](),g=f.next();!g.done;g=f.next())m.push(g.value);for(p=(e=m).length;s<p;s++)h(s,s,s===e.length-1)}else n=void 0,Object.keys(e).forEach((function(e){void 0!==n&&h(n,s-1),n=e,s++})),void 0!==n&&h(n,s-1,!0);return 0===s&&(c=a(this)),c}))},e.exports=t.default}).call(this,n(9))},function(e,t,n){"use strict";t.__esModule=!0;var l,o=n(12),i=(l=o)&&l.__esModule?l:{default:l};t.default=function(e){e.registerHelper("helperMissing",(function(){if(1!==arguments.length)throw new i.default('Missing helper: "'+arguments[arguments.length-1].name+'"')}))},e.exports=t.default},function(e,t,n){"use strict";t.__esModule=!0;var l,o=n(10),i=n(12),a=(l=i)&&l.__esModule?l:{default:l};t.default=function(e){e.registerHelper("if",(function(e,t){if(2!=arguments.length)throw new a.default("#if requires exactly one argument");return o.isFunction(e)&&(e=e.call(this)),!t.hash.includeZero&&!e||o.isEmpty(e)?t.inverse(this):t.fn(this)})),e.registerHelper("unless",(function(t,n){if(2!=arguments.length)throw new a.default("#unless requires exactly one argument");return e.helpers.if.call(this,t,{fn:n.inverse,inverse:n.fn,hash:n.hash})}))},e.exports=t.default},function(e,t,n){"use strict";t.__esModule=!0,t.default=function(e){e.registerHelper("log",(function(){for(var t=[void 0],n=arguments[arguments.length-1],l=0;l<arguments.length-1;l++)t.push(arguments[l]);var o=1;null!=n.hash.level?o=n.hash.level:n.data&&null!=n.data.level&&(o=n.data.level),t[0]=o,e.log.apply(e,t)}))},e.exports=t.default},function(e,t,n){"use strict";t.__esModule=!0,t.default=function(e){e.registerHelper("lookup",(function(e,t,n){return e?n.lookupProperty(e,t):e}))},e.exports=t.default},function(e,t,n){"use strict";t.__esModule=!0;var l,o=n(10),i=n(12),a=(l=i)&&l.__esModule?l:{default:l};t.default=function(e){e.registerHelper("with",(function(e,t){if(2!=arguments.length)throw new a.default("#with requires exactly one argument");o.isFunction(e)&&(e=e.call(this));var n=t.fn;if(o.isEmpty(e))return t.inverse(this);var l=t.data;return t.data&&t.ids&&((l=o.createFrame(t.data)).contextPath=o.appendContextPath(t.data.contextPath,t.ids[0])),n(e,{data:l,blockParams:o.blockParams([e],[l&&l.contextPath])})}))},e.exports=t.default},function(e,t,n){"use strict";t.__esModule=!0,t.registerDefaultDecorators=function(e){i.default(e)};var l,o=n(46),i=(l=o)&&l.__esModule?l:{default:l}},function(e,t,n){"use strict";t.__esModule=!0;var l=n(10);t.default=function(e){e.registerDecorator("inline",(function(e,t,n,o){var i=e;return t.partials||(t.partials={},i=function(o,i){var a=n.partials;n.partials=l.extend({},a,t.partials);var r=e(o,i);return n.partials=a,r}),t.partials[o.args[0]]=o.fn,i}))},e.exports=t.default},function(e,t,n){"use strict";t.__esModule=!0,t.createNewLookupObject=function(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];return l.extend.apply(void 0,[Object.create(null)].concat(t))};var l=n(10)},function(e,t,n){"use strict";function l(e){this.string=e}t.__esModule=!0,l.prototype.toString=l.prototype.toHTML=function(){return""+this.string},t.default=l,e.exports=t.default},function(e,t,n){"use strict";t.__esModule=!0,t.checkRevision=function(e){var t=e&&e[0]||1,n=r.COMPILER_REVISION;if(t>=r.LAST_COMPATIBLE_COMPILER_REVISION&&t<=r.COMPILER_REVISION)return;if(t<r.LAST_COMPATIBLE_COMPILER_REVISION){var l=r.REVISION_CHANGES[n],o=r.REVISION_CHANGES[t];throw new a.default("Template was precompiled with an older version of Handlebars than the current runtime. Please update your precompiler to a newer version ("+l+") or downgrade your runtime to an older version ("+o+").")}throw new a.default("Template was precompiled with a newer version of Handlebars than the current runtime. Please update your runtime to a newer version ("+e[1]+").")},t.template=function(e,t){if(!t)throw new a.default("No environment passed to template");if(!e||!e.main)throw new a.default("Unknown template object: "+typeof e);e.main.decorator=e.main_d,t.VM.checkRevision(e.compiler);var n=e.compiler&&7===e.compiler[0];var l={strict:function(e,t,n){if(!e||!(t in e))throw new a.default('"'+t+'" not defined in '+e,{loc:n});return e[t]},lookupProperty:function(e,t){var n=e[t];return null==n||Object.prototype.hasOwnProperty.call(e,t)||u.resultIsAllowed(n,l.protoAccessControl,t)?n:void 0},lookup:function(e,t){for(var n=e.length,o=0;o<n;o++){if(null!=(e[o]&&l.lookupProperty(e[o],t)))return e[o][t]}},lambda:function(e,t){return"function"==typeof e?e.call(t):e},escapeExpression:o.escapeExpression,invokePartial:function(n,l,i){i.hash&&(l=o.extend({},l,i.hash),i.ids&&(i.ids[0]=!0)),n=t.VM.resolvePartial.call(this,n,l,i);var r=o.extend({},i,{hooks:this.hooks,protoAccessControl:this.protoAccessControl}),s=t.VM.invokePartial.call(this,n,l,r);if(null==s&&t.compile&&(i.partials[i.name]=t.compile(n,e.compilerOptions,t),s=i.partials[i.name](l,r)),null!=s){if(i.indent){for(var c=s.split("\n"),u=0,d=c.length;u<d&&(c[u]||u+1!==d);u++)c[u]=i.indent+c[u];s=c.join("\n")}return s}throw new a.default("The partial "+i.name+" could not be compiled when running in runtime-only mode")},fn:function(t){var n=e[t];return n.decorator=e[t+"_d"],n},programs:[],program:function(e,t,n,l,o){var i=this.programs[e],a=this.fn(e);return t||o||l||n?i=d(this,e,a,t,n,l,o):i||(i=this.programs[e]=d(this,e,a)),i},data:function(e,t){for(;e&&t--;)e=e._parent;return e},mergeIfNeeded:function(e,t){var n=e||t;return e&&t&&e!==t&&(n=o.extend({},t,e)),n},nullContext:Object.seal({}),noop:t.VM.noop,compilerInfo:e.compiler};function i(t){var n=arguments.length<=1||void 0===arguments[1]?{}:arguments[1],o=n.data;i._setup(n),!n.partial&&e.useData&&(o=p(t,o));var a=void 0,r=e.useBlockParams?[]:void 0;function s(t){return""+e.main(l,t,l.helpers,l.partials,o,r,a)}return e.useDepths&&(a=n.depths?t!=n.depths[0]?[t].concat(n.depths):n.depths:[t]),(s=m(e.main,s,l,n.depths||[],o,r))(t,n)}return i.isTop=!0,i._setup=function(i){if(i.partial)l.protoAccessControl=i.protoAccessControl,l.helpers=i.helpers,l.partials=i.partials,l.decorators=i.decorators,l.hooks=i.hooks;else{var a=o.extend({},t.helpers,i.helpers);!function(e,t){Object.keys(e).forEach((function(n){var l=e[n];e[n]=function(e,t){var n=t.lookupProperty;return c.wrapHelper(e,(function(e){return o.extend({lookupProperty:n},e)}))}(l,t)}))}(a,l),l.helpers=a,e.usePartial&&(l.partials=l.mergeIfNeeded(i.partials,t.partials)),(e.usePartial||e.useDecorators)&&(l.decorators=o.extend({},t.decorators,i.decorators)),l.hooks={},l.protoAccessControl=u.createProtoAccessControl(i);var r=i.allowCallsToHelperMissing||n;s.moveHelperToHooks(l,"helperMissing",r),s.moveHelperToHooks(l,"blockHelperMissing",r)}},i._child=function(t,n,o,i){if(e.useBlockParams&&!o)throw new a.default("must pass block params");if(e.useDepths&&!i)throw new a.default("must pass parent depths");return d(l,t,e[t],n,0,o,i)},i},t.wrapProgram=d,t.resolvePartial=function(e,t,n){e?e.call||n.name||(n.name=e,e=n.partials[e]):e="@partial-block"===n.name?n.data["partial-block"]:n.partials[n.name];return e},t.invokePartial=function(e,t,n){var l=n.data&&n.data["partial-block"];n.partial=!0,n.ids&&(n.data.contextPath=n.ids[0]||n.data.contextPath);var i=void 0;n.fn&&n.fn!==h&&function(){n.data=r.createFrame(n.data);var e=n.fn;i=n.data["partial-block"]=function(t){var n=arguments.length<=1||void 0===arguments[1]?{}:arguments[1];return n.data=r.createFrame(n.data),n.data["partial-block"]=l,e(t,n)},e.partials&&(n.partials=o.extend({},n.partials,e.partials))}();void 0===e&&i&&(e=i);if(void 0===e)throw new a.default("The partial "+n.name+" could not be found");if(e instanceof Function)return e(t,n)},t.noop=h;var l,o=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(n(10)),i=n(12),a=(l=i)&&l.__esModule?l:{default:l},r=n(22),s=n(23),c=n(50),u=n(25);function d(e,t,n,l,o,i,a){function r(t){var o=arguments.length<=1||void 0===arguments[1]?{}:arguments[1],r=a;return!a||t==a[0]||t===e.nullContext&&null===a[0]||(r=[t].concat(a)),n(e,t,e.helpers,e.partials,o.data||l,i&&[o.blockParams].concat(i),r)}return(r=m(n,r,e,a,l,i)).program=t,r.depth=a?a.length:0,r.blockParams=o||0,r}function h(){return""}function p(e,t){return t&&"root"in t||((t=t?r.createFrame(t):{}).root=e),t}function m(e,t,n,l,i,a){if(e.decorator){var r={};t=e.decorator(t,r,n,l&&l[0],i,a,l),o.extend(t,r)}return t}},function(e,t,n){"use strict";t.__esModule=!0,t.wrapHelper=function(e,t){if("function"!=typeof e)return e;return function(){var n=arguments[arguments.length-1];return arguments[arguments.length-1]=t(n),e.apply(this,arguments)}}},function(e,t,n){"use strict";(function(n){t.__esModule=!0,t.default=function(e){var t=void 0!==n?n:window,l=t.Handlebars;e.noConflict=function(){return t.Handlebars===e&&(t.Handlebars=l),e}},e.exports=t.default}).call(this,n(9))},function(e,t,n){"use strict";var l=n(0),o=n(2),i=n(1),a=n(13),r=n(8);function s(e,t){e=i.appendHTMLElement("div",e,o.classname("layout")),this.container=e,this.children=new a((function(e){return e.viewName})),this.theme=t,this.applyTheme()}l.inherit(s,r),s.prototype.clear=function(){this.children.each((function(e){e.destroy()})),this.children.clear(),this.container.innerHTML=""},s.prototype.removeChild=function(e){this.children.remove(e)},s.prototype.toggleChildView=function(e){var t,n,l=["add","remove"];this.children.each((function(a){t=a.container,n=Number(a.viewName===e),i[l[n]+"Class"](t,o.classname("hidden"))}))},s.prototype.applyTheme=function(){var e=this.container.style,t=this.theme.common;e.backgroundColor=t.backgroundColor},e.exports=s},function(e,t,n){"use strict";var l=n(0),o=n(54),i=n(60),a=n(61),r=n(62);function s(e,t,n){var o=t[n]={};l.forEach(e,(function(e,n){o[n]=e.bind(t)}))}e.exports=function(e){var t=new o(e);return s(i,t,"Core"),s(a,t,"Week"),s(r,t,"Month"),t.Core.theme=t.theme,t.Week.theme=t.theme,t.Month.theme=t.theme,t}},function(e,t,n){"use strict";var l=n(0),o=n(14),i=n(28),a=n(3),r=n(5),s=n(57);function c(e){e=e||{},this.groupFunc=e.groupFunc||function(e){var t=e.model;return e.model.isAllDay||"time"===t.category&&t.end-t.start>a.MILLISECONDS_PER_DAY?"allday":t.category},this.schedules=r.createScheduleCollection(),this.dateMatrix={},this.theme=new s(e.theme),this.calendars=[]}c.prototype._getContainDatesInSchedule=function(e){var t=e.getStarts(),n=e.getEnds(),l=a.start(t),o=0===a.compare(t,n)?n:a.convertStartDayToLastDay(n),i=a.end(o);return a.range(l,i,a.MILLISECONDS_PER_DAY)},c.prototype.createSchedule=function(e,t){var n,l={data:e};return this.invoke("beforeCreateSchedule",l)?(n=this.addSchedule(o.create(e)),t||this.fire("createdSchedule",n),n):null},c.prototype.createSchedules=function(e,t){var n=this;return l.map(e,(function(e){return n.createSchedule(e,t)}))},c.prototype.updateSchedule=function(e,t){var n=t.start||e.start,o=t.end||e.end;return["milestone","task","allday","time"].indexOf((t=t||{}).category)>-1&&e.set("category",t.category),"allday"===t.category&&(t.isAllDay=!0),l.isUndefined(t.isAllDay)||e.set("isAllDay",t.isAllDay),l.isUndefined(t.calendarId)||e.set("calendarId",t.calendarId),t.title&&e.set("title",t.title),t.body&&e.set("body",t.body),(t.start||t.end)&&(e.isAllDay?e.setAllDayPeriod(n,o):e.setTimePeriod(n,o)),t.color&&e.set("color",t.color),t.bgColor&&e.set("bgColor",t.bgColor),t.borderColor&&e.set("borderColor",t.borderColor),t.origin&&e.set("origin",t.origin),l.isUndefined(t.isPending)||e.set("isPending",t.isPending),l.isUndefined(t.isFocused)||e.set("isFocused",t.isFocused),l.isUndefined(t.isReadOnly)||e.set("isReadOnly",t.isReadOnly),t.location&&e.set("location",t.location),t.state&&e.set("state",t.state),t.raw&&e.set("raw",t.raw),t.attendees&&e.set("attendees",t.attendees),this._removeFromMatrix(e),this._addToMatrix(e),this.fire("updateSchedule"),e},c.prototype.deleteSchedule=function(e){return this._removeFromMatrix(e),this.schedules.remove(e),e},c.prototype._addToMatrix=function(e){var t=this.dateMatrix,n=this._getContainDatesInSchedule(e);l.forEach(n,(function(n){var o=a.format(n,"YYYYMMDD");(t[o]=t[o]||[]).push(l.stamp(e))}))},c.prototype._removeFromMatrix=function(e){var t=l.stamp(e);l.forEach(this.dateMatrix,(function(e){var n=l.inArray(t,e);~n&&e.splice(n,1)}),this)},c.prototype.addSchedule=function(e,t){return this.schedules.add(e),this._addToMatrix(e),t||this.fire("addedSchedule",e),e},c.prototype.splitScheduleByDateRange=function(e,t,n){var o=a.range(a.start(e),a.end(t),a.MILLISECONDS_PER_DAY),i=this.dateMatrix,s={};return l.forEachArray(o,(function(e){var t,o=a.format(e,"YYYYMMDD"),c=i[o];t=s[o]=r.createScheduleCollection(),c&&c.length&&l.forEachArray(c,(function(e){n.doWhenHas(e,(function(e){t.add(e)}))}))})),s},c.prototype.findByDateRange=function(e,t){var n,o,s,c=a.range(a.start(e),a.end(t),a.MILLISECONDS_PER_DAY),u=this.schedules.items,d=this.dateMatrix,h=a.format,p={};return l.forEachArray(c,(function(e){o=h(e,"YYYYMMDD"),n=d[o],s=p[o]=r.createScheduleCollection(),n&&n.length&&s.add.apply(s,l.map(n,(function(e){return i.create(u[e])})))})),p},c.prototype.clearSchedules=function(){this.dateMatrix={},this.schedules.clear(),this.fire("clearSchedules")},c.prototype.setTheme=function(e){return this.theme.setStyles(e)},c.prototype.setCalendars=function(e){this.calendars=e},l.CustomEvents.mixin(c),e.exports=c},function(e,t,n){"use strict";var l=n(0),o=l.isExisty,i=l.pick,a=l.isFunction,r={set:function(e,t){this[e]!==t&&(this[e]=t,this._changed||(this._changed={}),this._changed[e]=!0,this._dirty=!0)},isDirty:function(){return!!this._dirty},dirty:function(e){(e=!o(e)||e)||(this._changed={}),this._dirty=e},deleteProp:function(e){delete this[e],this._changed&&delete this._changed[e]},isPropChanged:function(e){return!!this._changed&&!0===this._changed[e]},mixin:function(e){var t=/(^_|mixin|wrap)/;l.forEachOwnProperties(r,(function(n,l){t.test(l)||(e[l]=r[l])}))},wrap:function(e,t,n){var s,c=r.wrap;l.isObject(t)?l.forEachOwnProperties(t,(function(t,n){c(e,n,t)})):(n=!o(n)||n,e._wrapper||(e._wrapper=function(e,t){return function(){var n=Array.prototype.slice.call(arguments),l=e.apply(this,n);return this._dirty=t,l}}),o(i(e,t))&&a(e[t])&&!o(i(e,t,"_wrapped"))&&(s=e[t],e[t]=e._wrapper(s,n),e[t]._wrapped=!0))}};e.exports=r},function(e,t,n){"use strict";var l,o=n(4).Date,i=n(0),a=/^\s*|\s*$/g,r=n(3);l={trim:function(e){return e.replace(a,"")},validators:{required:function(e,t){var n=!0;return i.forEach(t,(function(t){var o;return o=e[t],n=!i.isUndefined(o)&&""!==l.trim(o)})),n},dateRange:function(e,t){var n,l;return!i.isExisty(e)||2!==t.length||(n=new o(e[t[0]]),l=new o(e[t[1]]),!(!r.isValid(n)||!r.isValid(l))&&1!==r.compare(n,l))}},isValid:function(){var e,t=this,n=this.constructor.schema,o=l.validators,a=!0;return!n||(i.forEach(n,(function(n,l){return!(e=o[l])||(a=e(t,n))})),a)},parameterize:function(){var e={},t=i.isFunction;return i.forEach(this,(function(n,l){t(n)||(e[l]=n)})),e},mixin:function(e){i.forEach(l,(function(t,n){"mixin"!==n&&(e[n]=t)}))}},e.exports=l},function(e,t,n){"use strict";var l=n(0),o=n(58),i=n(59),a=n(5);function r(e){var t=e||o;this._map=new l.HashMap,this.setStyles(t)}r.prototype.getStyle=function(e){return this._map.get(e)},r.prototype.setStyle=function(e,t){var n={};return n[e]=t,0===this.setStyles(n).length},r.prototype.setStyles=function(e){var t=[];return l.forEach(e,(function(e,n){l.isUndefined(i[n])?t.push(n):(this._map.set(n,e),a.set(this,n,e))}),this),l.forEach(i,(function(e,t){this.getStyle(t)||(this._map.set(t,e),a.set(this,t,e))}),this),t},r.prototype.clear=function(){var e=this._map.keys(),t={};l.forEach(e,(function(e){var n=e.split(".")[0];t[n]||(t[n]=n)})),l.forEach(t,(function(e){delete this[e]}),this),this._map.removeAll()},e.exports=r},function(e,t,n){"use strict";e.exports={"common.border":"1px solid #e5e5e5","common.backgroundColor":"white","common.holiday.color":"#ff4040","common.saturday.color":"#333","common.dayname.color":"#333","common.today.color":"#333","common.creationGuide.backgroundColor":"rgba(81, 92, 230, 0.05)","common.creationGuide.border":"1px solid #515ce6","month.dayname.height":"31px","month.dayname.borderLeft":"none","month.dayname.paddingLeft":"10px","month.dayname.paddingRight":"0","month.dayname.backgroundColor":"inherit","month.dayname.fontSize":"12px","month.dayname.fontWeight":"normal","month.dayname.textAlign":"left","month.holidayExceptThisMonth.color":"rgba(255, 64, 64, 0.4)","month.dayExceptThisMonth.color":"rgba(51, 51, 51, 0.4)","month.weekend.backgroundColor":"inherit","month.day.fontSize":"14px","month.schedule.borderRadius":"2px","month.schedule.height":"24px","month.schedule.marginTop":"2px","month.schedule.marginLeft":"8px","month.schedule.marginRight":"8px","month.moreView.border":"1px solid #d5d5d5","month.moreView.boxShadow":"0 2px 6px 0 rgba(0, 0, 0, 0.1)","month.moreView.backgroundColor":"white","month.moreView.paddingBottom":"17px","month.moreViewTitle.height":"44px","month.moreViewTitle.marginBottom":"12px","month.moreViewTitle.borderBottom":"none","month.moreViewTitle.padding":"12px 17px 0 17px","month.moreViewList.padding":"0 17px","week.dayname.height":"42px","week.dayname.borderTop":"1px solid #e5e5e5","week.dayname.borderBottom":"1px solid #e5e5e5","week.dayname.borderLeft":"none","week.dayname.paddingLeft":"0","week.dayname.backgroundColor":"inherit","week.dayname.textAlign":"left","week.today.color":"inherit","week.pastDay.color":"#bbb","week.vpanelSplitter.border":"1px solid #e5e5e5","week.vpanelSplitter.height":"3px","week.daygrid.borderRight":"1px solid #e5e5e5","week.daygrid.backgroundColor":"inherit","week.daygridLeft.width":"72px","week.daygridLeft.backgroundColor":"inherit","week.daygridLeft.paddingRight":"8px","week.daygridLeft.borderRight":"1px solid #e5e5e5","week.today.backgroundColor":"rgba(81, 92, 230, 0.05)","week.weekend.backgroundColor":"inherit","week.timegridLeft.width":"72px","week.timegridLeft.backgroundColor":"inherit","week.timegridLeft.borderRight":"1px solid #e5e5e5","week.timegridLeft.fontSize":"11px","week.timegridOneHour.height":"52px","week.timegridHalfHour.height":"26px","week.timegridHalfHour.borderBottom":"none","week.timegridHorizontalLine.borderBottom":"1px solid #e5e5e5","week.timegrid.paddingRight":"8px","week.timegrid.borderRight":"1px solid #e5e5e5","week.timegridSchedule.borderRadius":"2px","week.timegridSchedule.paddingLeft":"2px","week.currentTime.color":"#515ce6","week.currentTime.fontSize":"11px","week.currentTime.fontWeight":"normal","week.currentTimeLinePast.border":"1px dashed #515ce6","week.currentTimeLineBullet.backgroundColor":"#515ce6","week.currentTimeLineToday.border":"1px solid #515ce6","week.currentTimeLineFuture.border":"none","week.creationGuide.color":"#515ce6","week.creationGuide.fontSize":"11px","week.creationGuide.fontWeight":"bold","week.dayGridSchedule.borderRadius":"2px","week.dayGridSchedule.height":"24px","week.dayGridSchedule.marginTop":"2px","week.dayGridSchedule.marginLeft":"8px","week.dayGridSchedule.marginRight":"8px"}},function(e,t,n){"use strict";e.exports={"common.border":"1px solid #e5e5e5","common.backgroundColor":"white","common.holiday.color":"#ff4040","common.saturday.color":"#333","common.dayname.color":"#333","common.today.color":"#333","common.creationGuide.backgroundColor":"rgba(81, 92, 230, 0.05)","common.creationGuide.border":"1px solid #515ce6","month.dayname.height":"31px","month.dayname.borderLeft":"1px solid #e5e5e5","month.dayname.paddingLeft":"10px","month.dayname.paddingRight":"10px","month.dayname.backgroundColor":"inherit","month.dayname.fontSize":"12px","month.dayname.fontWeight":"normal","month.dayname.textAlign":"left","month.holidayExceptThisMonth.color":"rgba(255, 64, 64, 0.4)","month.dayExceptThisMonth.color":"rgba(51, 51, 51, 0.4)","month.weekend.backgroundColor":"inherit","month.day.fontSize":"14px","month.schedule.borderRadius":"2px","month.schedule.height":"24px","month.schedule.marginTop":"2px","month.schedule.marginLeft":"8px","month.schedule.marginRight":"8px","month.moreView.border":"1px solid #d5d5d5","month.moreView.boxShadow":"0 2px 6px 0 rgba(0, 0, 0, 0.1)","month.moreView.backgroundColor":"white","month.moreView.paddingBottom":"17px","month.moreViewTitle.height":"44px","month.moreViewTitle.marginBottom":"12px","month.moreViewTitle.backgroundColor":"inherit","month.moreViewTitle.borderBottom":"none","month.moreViewTitle.padding":"12px 17px 0 17px","month.moreViewList.padding":"0 17px","week.dayname.height":"42px","week.dayname.borderTop":"1px solid #e5e5e5","week.dayname.borderBottom":"1px solid #e5e5e5","week.dayname.borderLeft":"inherit","week.dayname.paddingLeft":"0","week.dayname.backgroundColor":"inherit","week.dayname.textAlign":"left","week.today.color":"#333","week.pastDay.color":"#bbb","week.vpanelSplitter.border":"1px solid #e5e5e5","week.vpanelSplitter.height":"3px","week.daygrid.borderRight":"1px solid #e5e5e5","week.daygrid.backgroundColor":"inherit","week.daygridLeft.width":"72px","week.daygridLeft.backgroundColor":"inherit","week.daygridLeft.paddingRight":"8px","week.daygridLeft.borderRight":"1px solid #e5e5e5","week.today.backgroundColor":"rgba(81, 92, 230, 0.05)","week.weekend.backgroundColor":"inherit","week.timegridLeft.width":"72px","week.timegridLeft.backgroundColor":"inherit","week.timegridLeft.borderRight":"1px solid #e5e5e5","week.timegridLeft.fontSize":"11px","week.timegridLeftTimezoneLabel.height":"40px","week.timegridLeftAdditionalTimezone.backgroundColor":"white","week.timegridOneHour.height":"52px","week.timegridHalfHour.height":"26px","week.timegridHalfHour.borderBottom":"none","week.timegridHorizontalLine.borderBottom":"1px solid #e5e5e5","week.timegrid.paddingRight":"8px","week.timegrid.borderRight":"1px solid #e5e5e5","week.timegridSchedule.borderRadius":"2px","week.timegridSchedule.paddingLeft":"2px","week.currentTime.color":"#515ce6","week.currentTime.fontSize":"11px","week.currentTime.fontWeight":"normal","week.pastTime.color":"#bbb","week.pastTime.fontWeight":"normal","week.futureTime.color":"#333","week.futureTime.fontWeight":"normal","week.currentTimeLinePast.border":"1px dashed #515ce6","week.currentTimeLineBullet.backgroundColor":"#515ce6","week.currentTimeLineToday.border":"1px solid #515ce6","week.currentTimeLineFuture.border":"none","week.creationGuide.color":"#515ce6","week.creationGuide.fontSize":"11px","week.creationGuide.fontWeight":"bold","week.dayGridSchedule.borderRadius":"2px","week.dayGridSchedule.height":"24px","week.dayGridSchedule.marginTop":"2px","week.dayGridSchedule.marginLeft":"8px","week.dayGridSchedule.marginRight":"8px"}},function(e,t,n){"use strict";var l=n(0),o=l.forEachArray,i=Array.prototype.slice,a=n(3),r=n(4).Date,s=n(13),c=n(28),u={getCollisionGroup:function(e){var t,n=[],a=!1;return e.length?(n[0]=[l.stamp(e[0].valueOf())],o(e.slice(1),(function(r,s){a=!1,t=i.apply(e,[0,s+1]).reverse(),o(t,(function(e){return!r.collidesWith(e)||(a=!0,o(n.slice(0).reverse(),(function(t){return!~l.inArray(l.stamp(e.valueOf()),t)||(t.push(l.stamp(r.valueOf())),!1)})),!1)})),a||n.push([l.stamp(r.valueOf())])})),n):n},getLastRowInColumn:function(e,t){for(var n=e.length;n>0;)if(n-=1,!l.isUndefined(e[n][t]))return n;return!1},getMatrices:function(e,t){var n=[],i=u.getLastRowInColumn;return o(t,(function(t){var a=[[]];o(t,(function(t){for(var n,o,r=e.items[t],s=0,c=!1;!c;)!1===(o=i(a,s))?(a[0].push(r),c=!0):r.collidesWith(a[o][s])||(n=o+1,l.isUndefined(a[n])&&(a[n]=[]),a[n][s]=r,c=!0),s+=1})),n.push(a)})),n},getScheduleInDateRangeFilter:function(e,t){return function(n){var l=n.getStarts();return!(n.getEnds()<e||l>t)}},positionViewModels:function(e,t,n,i){var r;r=l.map(a.range(e,t,a.MILLISECONDS_PER_DAY),(function(e){return a.format(e,"YYYYMMDD")})),o(n,(function(e){o(e,(function(e){o(e,(function(e,t){var n,o,s,c;e&&(s=e.getStarts(),c=e.getEnds(),o=a.range(a.start(s),a.renderEnd(s,c),a.MILLISECONDS_PER_DAY).length,n=a.format(s,"YYYYMMDD"),e.top=t,e.left=l.inArray(n,r),e.width=o,i&&i(e))}))}))}))},limitRenderRange:function(e,t,n){function l(n){return n.getStarts()<e&&(n.exceedLeft=!0,n.renderStarts=new r(e)),n.getEnds()>t&&(n.exceedRight=!0,n.renderEnds=new r(t)),n}return n.constructor===s?(n.each(l),null):l(n)},convertToViewModel:function(e){var t;return t=new s((function(e){return e.cid()})),e.each((function(e){t.add(c.create(e))})),t}};e.exports=u},function(e,t,n){"use strict";var l=n(0),o=n(13),i=n(15),a=n(3),r=n(4).Date,s=a.MILLISECONDS_SCHEDULE_MIN_DURATION,c={generateTimeArrayInRow:function(e){var t,n,o,i,r,c=[],u=[],d=Math.max.apply(null,l.map(e,(function(e){return e.length})));for(n=1;n<d;n+=1){for(t=0,o=l.pick(e,t,n);o;)i=o.getStarts().getTime()-a.millisecondsFrom("minutes",o.valueOf().goingDuration),r=o.getEnds().getTime()+a.millisecondsFrom("minutes",o.valueOf().comingDuration),Math.abs(r-i)<s&&(r+=s),u.push([i,r]),t+=1,o=l.pick(e,t,n);c.push(u),u=[]}return c},hasCollide:function(e,t,n){var l,o,a,r,s=function(e){return function(t){return t[e]}},c=Math.abs,u=i.compare.num.asc;return!!e.length&&(l=c(i.bsearch(e,t,s(0),u)),o=c(i.bsearch(e,t,s(1),u)),a=c(i.bsearch(e,n,s(0),u)),r=c(i.bsearch(e,n,s(1),u)),!(l===o&&o===a&&a===r))},getCollides:function(e){l.forEachArray(e,(function(e){var t,n;t=c.generateTimeArrayInRow(e),n=Math.max.apply(null,l.map(e,(function(e){return e.length}))),l.forEachArray(e,(function(e){l.forEachArray(e,(function(e,l){var o,i,r;if(e)for(o=e.getStarts().getTime(),i=e.getEnds().getTime(),Math.abs(i-o)<s&&(i+=s),o-=a.millisecondsFrom("minutes",e.valueOf().goingDuration),i+=a.millisecondsFrom("minutes",e.valueOf().comingDuration),i-=1,r=l+1;r<n;r+=1){if(c.hasCollide(t[r-1],o,i)){e.hasCollide=!0;break}e.extraSpace+=1}}))}))}))},getViewModelForTimeView:function(e,t,n,o,i){var a=this,r=this.splitScheduleByDateRange(e,t,n),s={},u=c._makeGetViewModelFuncForTimeView(o,i);return l.forEach(r,(function(e,t){var n,l,o=u(e);n=a.Core.getCollisionGroup(o),l=a.Core.getMatrices(e,n),a.Week.getCollides(l),s[t]=l})),s},_makeGetViewModelFuncForTimeView:function(e,t){return 0===e&&24===t?function(e){return e.sort(i.compare.schedule.asc)}:function(n){return n.find(c._makeHourRangeFilter(e,t)).sort(i.compare.schedule.asc)}},_makeHourRangeFilter:function(e,t){return function(n){var l=n.model.start,o=n.model.end,i=l.getFullYear(),a=l.getMonth(),s=l.getDate(),c=new r(i,a,s).setHours(e),u=new r(i,a,s).setHours(t);return l>=c&&l<u||o>c&&o<=u||l<c&&o>c||o>u&&l<u}},_addMultiDatesInfo:function(e){e.each((function(e){var t=e.model,n=t.getStarts(),l=t.getEnds();e.hasMultiDates=!0,e.renderStarts=a.start(n),e.renderEnds=a.renderEnd(n,l)}))},getViewModelForAlldayView:function(e,t,n){var l,o,a,r=this.Core,s=this.Week;return n&&n.length?(s._addMultiDatesInfo(n),r.limitRenderRange(e,t,n),l=n.sort(i.compare.schedule.asc),o=r.getCollisionGroup(l),a=r.getMatrices(n,o),r.positionViewModels(e,t,a),a):[]},findByDateRange:function(e,t,n,i,a){var r,s,c=this.Core,u=this.Week,d=c.getScheduleInDateRangeFilter(e,t),h=l.pluck(n,"name"),p=l.pick(a,"hourStart"),m=l.pick(a,"hourEnd");return i=i||[],d=o.and.apply(null,[d].concat(i)),r=this.schedules.find(d),r=c.convertToViewModel(r),s=r.groupBy(h,this.groupFunc),l.forEach(n,(function(n){var l=n.name;"daygrid"===n.type?s[l]=u.getViewModelForAlldayView(e,t,s[l]):"timegrid"===n.type&&(s[l]=u.getViewModelForTimeView(e,t,s[l],p,m))})),s},getExceedDate:function(e,t,n){var o={};return l.forEach(n,(function(e){var t=a.format(e,"YYYYMMDD");o[t]=0})),l.forEach(t,(function(t){l.forEach(t,(function(t){l.forEach(t,(function(t){var n;!t||t.top<e||(n=a.range(t.getStarts(),t.getEnds(),a.MILLISECONDS_PER_DAY),l.forEach(n,(function(e){var t=a.format(e,"YYYYMMDD");o[t]+=1})))}))}))})),o},excludeExceedSchedules:function(e,t){return e.map((function(e){return e.map((function(e){return e.length>t?e.filter((function(e){return e.top<t}),this):e}),this)}),this)}};e.exports=c},function(e,t,n){"use strict";var l=n(0),o=n(15),i=n(3),a=n(13),r=Math.max,s={_onlyTimeFilter:function(e){return!e.model.isAllDay&&!e.hasMultiDates},_onlyAlldayFilter:function(e){return e.model.isAllDay||e.hasMultiDates},_weightTopValue:function(e){e.top=e.top||0,e.top+=1},_adjustRenderRange:function(e,t,n){var l=this.Core;n.each((function(n){(n.model.isAllDay||n.hasMultiDates)&&l.limitRenderRange(e,t,n)}))},_getAlldayMaxTopIndexAtYMD:function(e,t){var n=this.dateMatrix,o=[];return l.forEach(n[e],(function(e){t.doWhenHas(e,(function(e){o.push(e.top)}))})),o.length>0?r.apply(null,o):0},_adjustTimeTopIndex:function(e){var t=this.Month,n=t._getAlldayMaxTopIndexAtYMD,a=e.find(t._onlyAlldayFilter),r=e.find(t._onlyTimeFilter).sort(o.compare.schedule.asc),s={};r.forEach((function(e){var t=i.format(e.getStarts(),"YYYYMMDD"),o=s[t];l.isUndefined(o)&&(o=s[t]=n(t,a)),s[t]=e.top=o+1}))},_stackTimeFromTop:function(e){var t=this.Month,n=e.find(t._onlyAlldayFilter),a=e.find(t._onlyTimeFilter).sort(o.compare.schedule.asc),s={},c=this.dateMatrix;a.forEach((function(e){var t,o,a=i.format(e.getStarts(),"YYYYMMDD"),u=s[a];if(l.isUndefined(u)&&(u=s[a]=[],l.forEach(c[a],(function(e){n.doWhenHas(e,(function(e){u.push(e.top)}))}))),l.inArray(e.top,u)>=0)for(t=r.apply(null,u)+1,o=1;o<=t&&(e.top=o,!(l.inArray(e.top,u)<0));o+=1);u.push(e.top)}))},_addMultiDatesInfo:function(e){e.each((function(e){var t=e.model,n=t.getStarts(),l=t.getEnds();e.hasMultiDates=i.hasMultiDates(n,l),!t.isAllDay&&e.hasMultiDates&&(e.renderStarts=i.start(n),e.renderEnds=i.renderEnd(n,l))}))},findByDateRange:function(e,t,n,l){var i,r,s,c,u,d=this.Core,h=this.Month,p=d.getScheduleInDateRangeFilter(e,t);return l=l||!1,n=n||[],p=a.and.apply(null,[p].concat(n)),i=this.schedules.find(p),r=d.convertToViewModel(i),h._addMultiDatesInfo(r),h._adjustRenderRange(e,t,r),s=r.sort(o.compare.schedule.asc),c=d.getCollisionGroup(s),u=d.getMatrices(r,c),d.positionViewModels(e,t,u,h._weightTopValue),l?h._adjustTimeTopIndex(r):h._stackTimeFromTop(r),u}};e.exports=s},function(e,t,n){"use strict";var l=n(0),o=n(2),i=n(1),a=n(5),r=n(29),s=n(11),c=n(14),u=n(65),d=n(66),h=n(68),p=n(72),m=n(32),f=n(33),g=n(82),y=n(83),S=n(85),_=n(34),C=n(87),v=n(89),E=n(90),w=n(92),P=n(95),k={click:y,creation:S,move:_,resize:C},R={click:v,creation:E,move:w,resize:P},b=[{name:"milestone",type:"daygrid",minHeight:20,maxHeight:80,showExpandableButton:!0,maxExpandableHeight:210,handlers:["click"],show:!0},{name:"task",type:"daygrid",minHeight:40,maxHeight:120,showExpandableButton:!0,maxExpandableHeight:210,handlers:["click","move"],show:!0},{name:"allday",type:"daygrid",minHeight:30,maxHeight:80,showExpandableButton:!0,maxExpandableHeight:210,handlers:["click","creation","move","resize"],show:!0},{name:"time",type:"timegrid",autoHeight:!0,handlers:["click","creation","move","resize"],show:!0}];e.exports=function(e,t,n,y,S){var _,C,v,E,w,P,I,D,F,x,X,M,O,T,H=[],L=[],B=y.taskView,A=y.scheduleView,V={milestone:l.isArray(B)?l.inArray("milestone",B)>=0:B,task:l.isArray(B)?l.inArray("task",B)>=0:B,allday:l.isArray(A)?l.inArray("allday",A)>=0:A,time:l.isArray(A)?l.inArray("time",A)>=0:A};return l.forEach(b,(function(e){var t=e.name;e=l.extend({},e),H.push(e),e.show=V[t],e.show&&(L.length&&L.push({isSplitter:!0}),L.push(l.extend({},e)))})),L.length&&((F=L[L.length-1]).autoHeight=!0,F.maxHeight=null,F.showExpandableButton=!1,l.forEach(H,(function(e){return e.name!==F.name||(e.showExpandableButton=!1,!1)}))),l.extend(y.week,{panels:H}),(_=new u(null,y.week,t,H,S)).handler={click:{},dayname:{},creation:{},move:{},resize:{}},C=i.appendHTMLElement("div",_.container,o.classname("dayname-layout")),v=new d(y,C,e.theme),_.handler.dayname.date=new g(n,v,e),_.addChild(v),(E=i.appendHTMLElement("div",_.container,o.classname("vlayout-area"))).style.height=i.getSize(_.container)[1]-v.container.offsetHeight+"px",w=new r({panels:L,panelHeights:y.week.panelHeights||[]},E,e.theme),_.vLayout=w,l.forEach(H,(function(t){var o,i=t.name,a=t.handlers;t.show&&("daygrid"===t.type?((o=new h(i,y,w.getPanelByName(t.name).container,e.theme)).on("afterRender",(function(e){w.getPanelByName(i).setHeight(null,e.height)})),_.addChild(o),l.forEach(a,(function(t){y.isReadOnly&&"click"!==t||(_.handler[t][i]=new k[t](n,o,e,y),o.addHandler(t,_.handler[t][i],w.getPanelByName(i)))}))):"timegrid"===t.type&&(o=new p(i,y,w.getPanelByName(i).container),_.addChild(o),l.forEach(a,(function(t){y.isReadOnly&&"click"!==t||(_.handler[t][i]=new R[t](n,o,e,y))})),o.on("clickTimezonesCollapsedBtn",(function(){var e=!_.state.timezonesCollapsed;_.setState({timezonesCollapsed:e}),s.requestAnimFrame((function(){_.invoke("clickTimezonesCollapseBtn",e)||_.render()}))}))))})),w.on("resize",(function(){s.requestAnimFrame((function(){_.render()}))})),y.useCreationPopup&&(P=new m(t,e.calendars,y.usageStatistics),I=function(e){l.extend(e,{useCreationPopup:!0}),e.isAllDay?_.handler.creation.allday.fire("beforeCreateSchedule",e):_.handler.creation.time.fire("beforeCreateSchedule",e)},P.on("beforeCreateSchedule",I)),D=function(e){P&&P.setCalendars(e)},e.on("setCalendars",D),y.useDetailPopup&&(x=new f(t,e.calendars),X=function(t){var n=t.schedule.calendarId;t.calendar=a.find(e.calendars,(function(e){return e.id===n})),y.isReadOnly&&(t.schedule=l.extend({},t.schedule,{isReadOnly:!0})),x.render(t)},M=function(e){e.isAllDay?_.handler.creation.allday.fire("beforeDeleteSchedule",e):_.handler.creation.time.fire("beforeDeleteSchedule",e)},T=function(e){e.isAllDay?_.handler.move.allday.fire("beforeUpdateSchedule",e):_.handler.move.time.fire("beforeUpdateSchedule",e)},l.forEach(_.handler.click,(function(e){e.on("clickSchedule",X)})),y.useCreationPopup?(O=function(t){var n=e.calendars;t.isEditMode=!0,P.setCalendars(n),P.render(t)},P.on("beforeUpdateSchedule",T),x.on("beforeUpdateSchedule",O)):x.on("beforeUpdateSchedule",T),x.on("beforeDeleteSchedule",M)),_.on("afterRender",(function(){w.refresh()})),_.controller=e.Week,_._beforeDestroy=function(){l.forEach(_.handler,(function(e){l.forEach(e,(function(e){e.off(),e.destroy()}))})),y.useCreationPopup&&(P.off("beforeCreateSchedule",I),P.destroy()),y.useDetailPopup&&(x.off("beforeDeleteSchedule",M),x.destroy()),_.off()},{view:_,refresh:function(){var e=_.getViewBound().height,t=i.getBCRect(v.container).height;w.container.style.height=e-t+"px",w.refresh()},scrollToNow:function(){_.children.each((function(e){e.scrollToNow&&e.scrollToNow()}))},openCreationPopup:function(e){P&&(e.isAllDay?_.handler.creation.allday.invokeCreationClick(c.create(e)):_.handler.creation.time.invokeCreationClick(c.create(e)))},showCreationPopup:function(t){P&&(P.setCalendars(e.calendars),P.render(t))}}}},function(e,t,n){"use strict";var l=n(0),o=n(2),i=n(5),a=n(1),r=n(8);function s(e,t,n){r.call(this,t),this.options=l.extend({index:0,name:"0",minHeight:0,maxHeight:null,height:null,isSplitter:!1,autoHeight:!1,className:""},e),this.index=this.options.index,this.name=this.options.name||String(this.index),this.isHeightForcedSet=!1,this.theme=n,this._initPanel(this.options,t)}l.inherit(s,r),s.prototype.isSplitter=function(){return this.options.isSplitter},s.prototype.setMaxHeight=function(e){this.options.autoHeight||(this.options.maxHeight=e)},s.prototype.setHeightForcedSet=function(e){this.isHeightForcedSet=e},s.prototype.getHeightForcedSet=function(){return this.isHeightForcedSet},s.prototype.setHeight=function(e,t,n){var l=this.options.maxHeight,o=this.options.minHeight,i=this.options.autoHeight;e=e||this.container,(n||!this.isHeightForcedSet||i)&&(n?this.isHeightForcedSet=!0:l&&(t=Math.min(t,l)),t=Math.max(o,t),e.style.height=t+"px")},s.prototype.getResizeInfoByGrowth=function(e){var t=this.getHeight(),n=t+e,l=Math.max(0,n,this.options.minHeight);return[l,t-l]},s.prototype.getHeight=function(){return a.getSize(this.container)[1]},s.prototype.addClass=function(e){a.addClass(this.container,e)},s.prototype.removeClass=function(e){a.removeClass(this.container,e)},s.prototype._initPanel=function(e,t){var n;if(a.setData(t,"panelIndex",e.index),e.isSplitter)return a.addClass(t,o.classname("splitter")),void this.applyTheme();e.className&&a.addClass(t,e.className),e.autoHeight?a.setData(t,"autoHeight",!0):(n=i.limit(e.height||0,[e.minHeight],[e.maxHeight||e.height]),e.height=n,this.setHeight(t,n))},s.prototype.applyTheme=function(){var e=this.container.style,t=this.theme;t&&(e.borderTop=t.week.vpanelSplitter.border||t.common.border,e.borderBottom=t.week.vpanelSplitter.border||t.common.border,e.height=t.week.vpanelSplitter.height)},e.exports=s},function(e,t,n){"use strict";var l=n(0),o=n(2),i=n(1),a=n(3),r=n(4).Date,s=n(8);function c(e,t,n,c,u){var d;n=i.appendHTMLElement("div",n),s.call(this,n),i.addClass(n,o.classname("week-container")),d=this._getRenderDateRange(new r),this.options=l.extend({scheduleFilter:[function(e){return Boolean(e.isVisible)}],renderStartDate:a.format(d.start,"YYYY-MM-DD"),renderEndDate:a.format(d.end,"YYYY-MM-DD"),narrowWeekend:!1,startDayOfWeek:0,workweek:!1,showTimezoneCollapseButton:!1,timezonesCollapsed:!1,hourStart:0,hourEnd:24},t),this.controller=e,this.panels=c,this.state={timezonesCollapsed:this.options.timezonesCollapsed},"day"===u&&function(e){e.workweek=!1}(this.options)}l.inherit(c,s),c.prototype.render=function(){var e,t,n,o,i,s,c=this,u=this.options,d=u.scheduleFilter,h=u.narrowWeekend,p=u.startDayOfWeek,m=u.workweek,f=this.controller.theme||{},g=this.state;e=new r(u.renderStartDate),t=new r(u.renderEndDate),s=a.range(a.start(e),a.end(t),a.MILLISECONDS_PER_DAY),u.workweek&&a.compare(e,t)&&(e=(s=l.filter(s,(function(e){return!a.isWeekend(e.getDay())})))[0],t=s[s.length-1]),n=this.controller.findByDateRange(a.start(e),a.end(t),this.panels,d,this.options),i=a.getGridLeftAndWidth(s.length,h,p,m),o={schedulesInDateRange:n,renderStartDate:e,renderEndDate:t,grids:i,range:s,theme:f,state:g},this.children.each((function(e){var t,n=l.pick(e.options,"viewName");e.render(o),n&&(t=o.schedulesInDateRange[n],l.isArray(t)?c._invokeAfterRenderSchedule(t):l.forEach(t,(function(e){c._invokeAfterRenderSchedule(e)})))})),this.fire("afterRender")},c.prototype._invokeAfterRenderSchedule=function(e){var t=this;l.forEachArray(e,(function(e){l.forEachArray(e,(function(e){l.forEachArray(e,(function(e){e&&t.fire("afterRenderSchedule",{schedule:e.model})}))}))}))},c.prototype.viewName="week",c.prototype._getRenderDateRange=function(e){var t=a.start(e),n=new r(Number(t)),l=new r(Number(t));return n.setDate(n.getDate()-3),l.setDate(l.getDate()+3),{start:n,end:l}},l.CustomEvents.mixin(c),e.exports=c},function(e,t,n){"use strict";var l=n(0),o=n(2),i=n(5),a=n(3),r=n(4).Date,s=n(1),c=n(8),u=n(67);function d(e,t,n){t=s.appendHTMLElement("div",t,o.classname("dayname-container")),this.options=l.extend({daynames:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],timezones:e.timezones},e.week),this.theme=n,c.call(this,t),this.applyTheme()}l.inherit(d,c),d.prototype._getBaseViewModel=function(e,t,n){var o=this.options.daynames,i=this.theme,s=(new r).toLocalTime();return l.map(a.range(a.start(e),a.end(t),a.MILLISECONDS_PER_DAY),(function(e,t){var l=e.getDay(),r=a.isSameDate(e,s),c=e<s&&!r;return{day:l,dayName:o[l],isToday:r,date:e.getDate(),left:n[t]?n[t].left:0,width:n[t]?n[t].width:0,renderDate:a.format(e,"YYYY-MM-DD"),color:this._getDayNameColor(i,l,r,c)}}),this)},d.prototype.render=function(e){var t=this._getBaseViewModel(e.renderStartDate,e.renderEndDate,e.grids),n=e.state.timezonesCollapsed,o=this._getStyles(this.theme,n),i=l.extend({},{dayNames:t,styles:o});this.container.innerHTML=u(i)},d.prototype._getDayNameColor=function(e,t,n,l){var o="";return e&&(o=0===t?e.common.holiday.color:l?e.week.pastDay.color||e.common.dayname.color:6===t?e.common.saturday.color:n?e.week.today.color||e.common.today.color:e.common.dayname.color),o},d.prototype._getStyles=function(e,t){var n,l={},o=this.options.timezones.length,a=t;return e&&(l.borderTop=e.week.dayname.borderTop||e.common.border,l.borderBottom=e.week.dayname.borderBottom||e.common.border,l.borderLeft=e.week.dayname.borderLeft||e.common.border,l.paddingLeft=e.week.dayname.paddingLeft,l.backgroundColor=e.week.dayname.backgroundColor,l.height=e.week.dayname.height,l.textAlign=e.week.dayname.textAlign,l.marginLeft=e.week.daygridLeft.width,!a&&o>1&&(n=i.parseUnit(l.marginLeft),l.marginLeft=n[0]*o+n[1])),l},d.prototype.applyTheme=function(){var e=this._getStyles(this.theme),t=this.container.style;return t.borderTop=e.borderTop,t.borderBottom=e.borderBottom,t.height=e.height,t.backgroundColor=e.backgroundColor,t.textAlign=e.textAlign,t},e.exports=d},function(e,t,n){var l=n(7);e.exports=(l.default||l).template({1:function(e,t,n,l,o){var i,a,r=null!=t?t:e.nullContext||{},s=e.hooks.helperMissing,c="function",u=e.escapeExpression,d=e.lambda,h=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return'<div class="'+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:3,column:12},end:{line:3,column:26}}}):a)+"dayname "+(null!=(i=h(n,"if").call(r,null!=t?h(t,"isToday"):t,{name:"if",hash:{},fn:e.program(2,o,0),inverse:e.noop,data:o,loc:{start:{line:3,column:34},end:{line:3,column:75}}}))?i:"")+" "+u((h(n,"holiday")||t&&h(t,"holiday")||s).call(r,null!=t?h(t,"day"):t,{name:"holiday",hash:{},data:o,loc:{start:{line:3,column:76},end:{line:3,column:91}}}))+'"\n     data-date="'+u(typeof(a=null!=(a=h(n,"renderDate")||(null!=t?h(t,"renderDate"):t))?a:s)===c?a.call(r,{name:"renderDate",hash:{},data:o,loc:{start:{line:4,column:16},end:{line:4,column:30}}}):a)+'"\n     style="'+u((h(n,"common-width")||t&&h(t,"common-width")||s).call(r,null!=t?h(t,"width"):t,{name:"common-width",hash:{},data:o,loc:{start:{line:5,column:12},end:{line:5,column:34}}}))+";left:"+u(typeof(a=null!=(a=h(n,"left")||(null!=t?h(t,"left"):t))?a:s)===c?a.call(r,{name:"left",hash:{},data:o,loc:{start:{line:5,column:40},end:{line:5,column:48}}}):a)+"%; line-height: "+u(d((i=(i=o&&h(o,"root"))&&h(i,"styles"))&&h(i,"height"),t))+"; border-left: "+u(d((i=(i=o&&h(o,"root"))&&h(i,"styles"))&&h(i,"borderLeft"),t))+"; padding-left: "+u(d((i=(i=o&&h(o,"root"))&&h(i,"styles"))&&h(i,"paddingLeft"),t))+';">\n    <span class="'+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:6,column:17},end:{line:6,column:31}}}):a)+'dayname-date-area" style="color: '+u(typeof(a=null!=(a=h(n,"color")||(null!=t?h(t,"color"):t))?a:s)===c?a.call(r,{name:"color",hash:{},data:o,loc:{start:{line:6,column:64},end:{line:6,column:73}}}):a)+';">\n        '+(null!=(i=(h(n,"weekDayname-tmpl")||t&&h(t,"weekDayname-tmpl")||s).call(r,t,{name:"weekDayname-tmpl",hash:{},data:o,loc:{start:{line:7,column:8},end:{line:7,column:35}}}))?i:"")+"\n    </span>\n</div>\n"},2:function(e,t,n,l,o){var i,a=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return e.escapeExpression("function"==typeof(i=null!=(i=a(n,"CSS_PREFIX")||(null!=t?a(t,"CSS_PREFIX"):t))?i:e.hooks.helperMissing)?i.call(null!=t?t:e.nullContext||{},{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:3,column:49},end:{line:3,column:63}}}):i)+"today"},compiler:[8,">= 4.3.0"],main:function(e,t,n,l,o){var i,a,r=null!=t?t:e.nullContext||{},s=e.escapeExpression,c=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return'<div class="'+s("function"==typeof(a=null!=(a=c(n,"CSS_PREFIX")||(null!=t?c(t,"CSS_PREFIX"):t))?a:e.hooks.helperMissing)?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:1,column:12},end:{line:1,column:26}}}):a)+'dayname-leftmargin" style="margin-left: '+s(e.lambda((i=(i=o&&c(o,"root"))&&c(i,"styles"))&&c(i,"marginLeft"),t))+';">\n'+(null!=(i=c(n,"each").call(r,null!=t?c(t,"dayNames"):t,{name:"each",hash:{},fn:e.program(1,o,0),inverse:e.noop,data:o,loc:{start:{line:2,column:0},end:{line:10,column:9}}}))?i:"")+"</div>\n"},useData:!0})},function(e,t,n){"use strict";var l=n(0),o=n(2),i=n(5),a=n(3),r=n(1),s=n(4).Date,c=n(8),u=n(69),d=n(71),h=n(11),p=Math.max,m=Math.min;function f(e,t,n,i){n=r.appendHTMLElement("div",n,o.classname("daygrid-layout")),c.call(this,n),e=e||"daygrid",this.options=l.extend({viewName:e,daynames:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],renderStartDate:"",renderEndDate:"",containerBottomGutter:18,scheduleHeight:parseInt(i.week.dayGridSchedule.height,10),scheduleGutter:parseInt(i.week.dayGridSchedule.marginTop,10),scheduleContainerTop:1,timezones:t.timezones,isReadOnly:t.isReadOnly,getViewModelFunc:function(t){return t.schedulesInDateRange[e]},setViewModelFunc:function(t,n){t.schedulesInDateRange[e]=n}},t.week),this.handler={},this.vPanel=null,this.state.collapsed=!0}function g(e,t,n){return 0===e||6===e?n.weekendBackgroundColor:t?n.todayBackgroundColor:n.backgroundColor}function y(e,t){var n;return l.forEach(e,(function(e){e.name===t&&(n=e)})),n}l.inherit(f,c),f.prototype.getBaseViewModel=function(e){var t,n=this.options,o=n.daynames,i=e.range,r=e.grids,c=n.getViewModelFunc(e),u={},d=y(n.panels,n.viewName),h=this.getViewBound().height,f=this.state.collapsed,S=!!this.vPanel&&this.vPanel.getHeightForcedSet(),_=e.state.timezonesCollapsed,C=this._getStyles(e.theme,_),v=(new s).toLocalTime();return d.showExpandableButton&&(S||(h=f?p(h,d.maxHeight):m(h,d.maxExpandableHeight)),t=Math.floor(h/(n.scheduleHeight+n.scheduleGutter)),f&&(u=this.parent.controller.getExceedDate(t,c,e.range),c=this.parent.controller.excludeExceedSchedules(c,t),n.setViewModelFunc(e,c))),{viewName:n.viewName,range:i,grids:r,days:l.map(e.range,(function(t,n){var l=t.getDay(),i=a.format(t,"YYYYMMDD"),s=a.isSameDate(v,t);return{day:l,dayName:o[l],isToday:s,date:t.getDate(),renderDate:a.format(t,"YYYY-MM-DD"),hiddenSchedules:u[i]||0,width:r[n]?r[n].width:0,left:r[n]?r[n].left:0,backgroundColor:e.range.length>1?g(l,s,C):C.backgroundColor}})),exceedDate:u,showExpandableButton:d.showExpandableButton,collapsed:f,collapseBtnIndex:this.state.clickedExpandBtnIndex,styles:C}},f.prototype.render=function(e){var t,n=this.options,l=this.container,i=this.getBaseViewModel(e),a=this.options.scheduleContainerTop;l.innerHTML=d(i),this.children.clear(),t=new u(n,r.find(o.classname(".container"),l)),this.addChild(t),t.on("afterRender",(function(e){i.height=e.minHeight+a})),this.children.each((function(t){t.render(e)}),this),this.fire("afterRender",i)},f.prototype._beforeDestroy=function(){},f.prototype.addHandler=function(e,t,n){var l=this;this.handler[e]=t,this.vPanel=n,"click"===e&&(t.on("expand",(function(){l.setState({collapsed:!1})}),this),t.on("collapse",(function(){l.setState({collapsed:!0})}),this))},f.prototype._expand=function(){h.requestAnimFrame((function(){var e=this.vPanel,t=this.options,n=y(t.panels,t.viewName);e.setMaxHeight(n.maxExpandableHeight),e.setHeightForcedSet(!1),e.setHeight(null,n.maxExpandableHeight),this.parent&&this.parent.render()}),this)},f.prototype._collapse=function(){h.requestAnimFrame((function(){var e=this.vPanel,t=this.options,n=y(t.panels,t.viewName);e.setMaxHeight(n.maxHeight),e.setHeightForcedSet(!1),e.setHeight(null,n.minHeight),this.parent&&this.parent.render()}),this)},f.prototype.setState=function(e){var t=this.state.collapsed;c.prototype.setState.call(this,e),this.state.collapsed!==t&&(this.state.collapsed?this._collapse():this._expand())},f.prototype._getStyles=function(e,t){var n,l={},o=this.options.timezones.length,a=t;return e&&(l.borderRight=e.week.daygrid.borderRight||e.common.border,l.todayBackgroundColor=e.week.today.backgroundColor,l.weekendBackgroundColor=e.week.weekend.backgroundColor,l.backgroundColor=e.week.daygrid.backgroundColor,l.leftWidth=e.week.daygridLeft.width,l.leftBackgroundColor=e.week.daygridLeft.backgroundColor,l.leftPaddingRight=e.week.daygridLeft.paddingRight,l.leftBorderRight=e.week.daygridLeft.borderRight,!a&&o>1&&(n=i.parseUnit(l.leftWidth),l.leftWidth=n[0]*o+n[1])),l},e.exports=f},function(e,t,n){"use strict";var l=n(0),o=n(30),i=n(70),a=Math.max;function r(e,t){o.call(this,e,t),this.collapsed=!0}l.inherit(r,o),r.prototype.render=function(e){var t,n=this.container;t=this.getBaseViewModel(e),n.innerHTML=i(t),this.fire("afterRender",t)},r.prototype._getMaxScheduleInDay=function(e){return a.apply(null,l.map(e,(function(e){return Math.max.apply(null,l.map(e,(function(e){return e.length})))})))},r.prototype._getMinHeight=function(e){var t=this.options;return e*t.scheduleHeight+(e-1)*t.scheduleGutter},r.prototype.getBaseViewModel=function(e){var t,n=this.options,i=n.getViewModelFunc(e),a=this._getMaxScheduleInDay(i),r=this._getStyles(e.theme);return t=o.prototype.getBaseViewModel.call(this,e),t=l.extend({minHeight:this._getMinHeight(a),matrices:i,scheduleContainerTop:this.options.scheduleContainerTop,maxScheduleInDay:a,isReadOnly:n.isReadOnly,styles:r},t)},r.prototype._getStyles=function(e){var t={};return e&&(t.borderRadius=e.week.dayGridSchedule.borderRadius),t},e.exports=r},function(e,t,n){var l=n(7);e.exports=(l.default||l).template({1:function(e,t,n,l,o){var i;return null!=(i=(e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]})(n,"each").call(null!=t?t:e.nullContext||{},t,{name:"each",hash:{},fn:e.program(2,o,0),inverse:e.noop,data:o,loc:{start:{line:3,column:4},end:{line:27,column:15}}}))?i:""},2:function(e,t,n,l,o){var i;return"\n    "+(null!=(i=(e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]})(n,"each").call(null!=t?t:e.nullContext||{},t,{name:"each",hash:{},fn:e.program(3,o,0),inverse:e.noop,data:o,loc:{start:{line:4,column:4},end:{line:26,column:15}}}))?i:"")},3:function(e,t,n,l,o){var i;return"\n    "+(null!=(i=(e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]})(n,"if").call(null!=t?t:e.nullContext||{},t,{name:"if",hash:{},fn:e.program(4,o,0),inverse:e.noop,data:o,loc:{start:{line:5,column:4},end:{line:25,column:13}}}))?i:"")},4:function(e,t,n,l,o){var i,a,r=null!=t?t:e.nullContext||{},s=e.hooks.helperMissing,c=e.escapeExpression,u="function",d=e.lambda,h=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return'\n    <div data-id="'+c((h(n,"stamp")||t&&h(t,"stamp")||s).call(r,null!=t?h(t,"model"):t,{name:"stamp",hash:{},data:o,loc:{start:{line:6,column:18},end:{line:6,column:33}}}))+'"\n        class="'+c(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===u?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:7,column:15},end:{line:7,column:29}}}):a)+"weekday-schedule-block\n            "+(null!=(i=h(n,"if").call(r,null!=t?h(t,"exceedLeft"):t,{name:"if",hash:{},fn:e.program(5,o,0),inverse:e.noop,data:o,loc:{start:{line:8,column:12},end:{line:8,column:71}}}))?i:"")+"\n            "+(null!=(i=h(n,"if").call(r,null!=t?h(t,"exceedRight"):t,{name:"if",hash:{},fn:e.program(7,o,0),inverse:e.noop,data:o,loc:{start:{line:9,column:12},end:{line:9,column:73}}}))?i:"")+'"\n        style="top:'+c((h(n,"multiply")||t&&h(t,"multiply")||s).call(r,null!=t?h(t,"top"):t,(i=o&&h(o,"root"))&&h(i,"scheduleBlockHeight"),{name:"multiply",hash:{},data:o,loc:{start:{line:10,column:19},end:{line:10,column:61}}}))+"px;\n                left:"+c((h(n,"grid-left")||t&&h(t,"grid-left")||s).call(r,t,(i=o&&h(o,"root"))&&h(i,"dates"),{name:"grid-left",hash:{},data:o,loc:{start:{line:11,column:21},end:{line:11,column:51}}}))+"%;\n                width:"+c((h(n,"grid-width")||t&&h(t,"grid-width")||s).call(r,t,(i=o&&h(o,"root"))&&h(i,"dates"),{name:"grid-width",hash:{},data:o,loc:{start:{line:12,column:22},end:{line:12,column:53}}}))+'%">\n        <div data-schedule-id="'+c(d(null!=(i=null!=t?h(t,"model"):t)?h(i,"id"):i,t))+'" data-calendar-id="'+c(d(null!=(i=null!=t?h(t,"model"):t)?h(i,"calendarId"):i,t))+'" class="'+c(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===u?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:13,column:92},end:{line:13,column:106}}}):a)+"weekday-schedule "+(null!=(i=h(n,"if").call(r,null!=(i=null!=t?h(t,"model"):t)?h(i,"isFocused"):i,{name:"if",hash:{},fn:e.program(9,o,0),inverse:e.noop,data:o,loc:{start:{line:13,column:123},end:{line:13,column:192}}}))?i:"")+'"\n            style="height:'+c(d((i=o&&h(o,"root"))&&h(i,"scheduleHeight"),t))+"px; line-height:"+c(d((i=o&&h(o,"root"))&&h(i,"scheduleHeight"),t))+"px; border-radius: "+c(d((i=(i=o&&h(o,"root"))&&h(i,"styles"))&&h(i,"borderRadius"),t))+";\n"+(null!=(i=h(n,"if").call(r,null!=(i=null!=t?h(t,"model"):t)?h(i,"isFocused"):i,{name:"if",hash:{},fn:e.program(11,o,0),inverse:e.program(13,o,0),data:o,loc:{start:{line:15,column:16},end:{line:19,column:23}}}))?i:"")+"            "+c(d(null!=(i=null!=t?h(t,"model"):t)?h(i,"customStyle"):i,t))+'">\n            <span class="'+c(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===u?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:21,column:25},end:{line:21,column:39}}}):a)+'weekday-schedule-title" title="'+c(d(null!=(i=null!=t?h(t,"model"):t)?h(i,"title"):i,t))+'">'+(null!=(i=(h(n,"schedule-tmpl")||t&&h(t,"schedule-tmpl")||s).call(r,null!=t?h(t,"model"):t,{name:"schedule-tmpl",hash:{},data:o,loc:{start:{line:21,column:87},end:{line:21,column:112}}}))?i:"")+"</span>\n            "+(null!=(i=h(n,"unless").call(r,(h(n,"or")||t&&h(t,"or")||s).call(r,(i=o&&h(o,"root"))&&h(i,"isReadOnly"),null!=(i=null!=t?h(t,"model"):t)?h(i,"isReadOnly"):i,{name:"or",hash:{},data:o,loc:{start:{line:22,column:22},end:{line:22,column:60}}}),{name:"unless",hash:{},fn:e.program(15,o,0),inverse:e.noop,data:o,loc:{start:{line:22,column:12},end:{line:22,column:193}}}))?i:"")+"\n        </div>\n    </div>\n"},5:function(e,t,n,l,o){var i,a=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return" "+e.escapeExpression("function"==typeof(i=null!=(i=a(n,"CSS_PREFIX")||(null!=t?a(t,"CSS_PREFIX"):t))?i:e.hooks.helperMissing)?i.call(null!=t?t:e.nullContext||{},{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:8,column:31},end:{line:8,column:45}}}):i)+"weekday-exceed-left"},7:function(e,t,n,l,o){var i,a=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return" "+e.escapeExpression("function"==typeof(i=null!=(i=a(n,"CSS_PREFIX")||(null!=t?a(t,"CSS_PREFIX"):t))?i:e.hooks.helperMissing)?i.call(null!=t?t:e.nullContext||{},{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:9,column:32},end:{line:9,column:46}}}):i)+"weekday-exceed-right"},9:function(e,t,n,l,o){var i,a=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return e.escapeExpression("function"==typeof(i=null!=(i=a(n,"CSS_PREFIX")||(null!=t?a(t,"CSS_PREFIX"):t))?i:e.hooks.helperMissing)?i.call(null!=t?t:e.nullContext||{},{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:13,column:146},end:{line:13,column:160}}}):i)+"weekday-schedule-focused "},11:function(e,t,n,l,o){var i,a=e.lambda,r=e.escapeExpression,s=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return"                    color: #ffffff; background-color:"+r(a(null!=(i=null!=t?s(t,"model"):t)?s(i,"color"):i,t))+"; border-color:"+r(a(null!=(i=null!=t?s(t,"model"):t)?s(i,"color"):i,t))+";\n"},13:function(e,t,n,l,o){var i,a=e.lambda,r=e.escapeExpression,s=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return"                    color:"+r(a(null!=(i=null!=t?s(t,"model"):t)?s(i,"color"):i,t))+"; background-color:"+r(a(null!=(i=null!=t?s(t,"model"):t)?s(i,"bgColor"):i,t))+"; border-color:"+r(a(null!=(i=null!=t?s(t,"model"):t)?s(i,"borderColor"):i,t))+";\n"},15:function(e,t,n,l,o){var i,a,r=e.escapeExpression,s=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return'<span class="'+r("function"==typeof(a=null!=(a=s(n,"CSS_PREFIX")||(null!=t?s(t,"CSS_PREFIX"):t))?a:e.hooks.helperMissing)?a.call(null!=t?t:e.nullContext||{},{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:22,column:75},end:{line:22,column:89}}}):a)+'weekday-resize-handle handle-y" style="line-height:'+r(e.lambda((i=o&&s(o,"root"))&&s(i,"scheduleHeight"),t))+'px;">&nbsp;</span>'},compiler:[8,">= 4.3.0"],main:function(e,t,n,l,o){var i,a,r=null!=t?t:e.nullContext||{},s=e.hooks.helperMissing,c="function",u=e.escapeExpression,d=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return'<div class="'+u(typeof(a=null!=(a=d(n,"CSS_PREFIX")||(null!=t?d(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:1,column:12},end:{line:1,column:26}}}):a)+"weekday-schedules "+u(typeof(a=null!=(a=d(n,"collapsed")||(null!=t?d(t,"collapsed"):t))?a:s)===c?a.call(r,{name:"collapsed",hash:{},data:o,loc:{start:{line:1,column:44},end:{line:1,column:57}}}):a)+'"style="top:'+u(e.lambda((i=o&&d(o,"root"))&&d(i,"scheduleContainerTop"),t))+'px;">\n'+(null!=(i=d(n,"each").call(r,null!=t?d(t,"matrices"):t,{name:"each",hash:{},fn:e.program(1,o,0),inverse:e.noop,data:o,loc:{start:{line:2,column:4},end:{line:28,column:15}}}))?i:"")+"</div>\n"},useData:!0})},function(e,t,n){var l=n(7);e.exports=(l.default||l).template({1:function(e,t,n,l,o){var i,a,r=null!=t?t:e.nullContext||{},s=e.hooks.helperMissing,c="function",u=e.escapeExpression,d=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return'<div class="'+u(typeof(a=null!=(a=d(n,"CSS_PREFIX")||(null!=t?d(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:8,column:24},end:{line:8,column:38}}}):a)+'weekday-grid-line"\n                style="left:'+u(typeof(a=null!=(a=d(n,"left")||(null!=t?d(t,"left"):t))?a:s)===c?a.call(r,{name:"left",hash:{},data:o,loc:{start:{line:9,column:28},end:{line:9,column:36}}}):a)+"%; width:"+u(typeof(a=null!=(a=d(n,"width")||(null!=t?d(t,"width"):t))?a:s)===c?a.call(r,{name:"width",hash:{},data:o,loc:{start:{line:9,column:45},end:{line:9,column:54}}}):a)+"%; background-color: "+u(typeof(a=null!=(a=d(n,"backgroundColor")||(null!=t?d(t,"backgroundColor"):t))?a:s)===c?a.call(r,{name:"backgroundColor",hash:{},data:o,loc:{start:{line:9,column:75},end:{line:9,column:94}}}):a)+";\n"+(null!=(i=d(n,"unless").call(r,o&&d(o,"last"),{name:"unless",hash:{},fn:e.program(2,o,0),inverse:e.noop,data:o,loc:{start:{line:10,column:20},end:{line:12,column:31}}}))?i:"")+'            "></div>\n'},2:function(e,t,n,l,o){var i,a=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return"                    border-right: "+e.escapeExpression(e.lambda((i=(i=o&&a(o,"root"))&&a(i,"styles"))&&a(i,"borderRight"),t))+";\n"},4:function(e,t,n,l,o){var i,a=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return null!=(i=a(n,"each").call(null!=t?t:e.nullContext||{},null!=t?a(t,"days"):t,{name:"each",hash:{},fn:e.program(5,o,0),inverse:e.noop,data:o,loc:{start:{line:17,column:8},end:{line:27,column:19}}}))?i:""},5:function(e,t,n,l,o){var i,a=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return null!=(i=a(n,"if").call(null!=t?t:e.nullContext||{},(i=o&&a(o,"root"))&&a(i,"collapsed"),{name:"if",hash:{},fn:e.program(6,o,0),inverse:e.program(9,o,0),data:o,loc:{start:{line:18,column:12},end:{line:26,column:19}}}))?i:""},6:function(e,t,n,l,o){var i,a=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return null!=(i=a(n,"if").call(null!=t?t:e.nullContext||{},null!=t?a(t,"hiddenSchedules"):t,{name:"if",hash:{},fn:e.program(7,o,0),inverse:e.noop,data:o,loc:{start:{line:19,column:16},end:{line:21,column:23}}}))?i:""},7:function(e,t,n,l,o){var i,a,r=null!=t?t:e.nullContext||{},s=e.hooks.helperMissing,c="function",u=e.escapeExpression,d=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return'                    <span class="'+u(typeof(a=null!=(a=d(n,"CSS_PREFIX")||(null!=t?d(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:20,column:33},end:{line:20,column:47}}}):a)+'weekday-exceed-in-week" style="z-index: 1; right:'+u((d(n,"getRight")||t&&d(t,"getRight")||s).call(r,null!=t?d(t,"left"):t,null!=t?d(t,"width"):t,{name:"getRight",hash:{},data:o,loc:{start:{line:20,column:96},end:{line:20,column:119}}}))+'%;" data-index="'+u(typeof(a=null!=(a=d(n,"key")||o&&d(o,"key"))?a:s)===c?a.call(r,{name:"key",hash:{},data:o,loc:{start:{line:20,column:135},end:{line:20,column:143}}}):a)+'">'+(null!=(i=(d(n,"weekGridFooterExceed-tmpl")||t&&d(t,"weekGridFooterExceed-tmpl")||s).call(r,null!=t?d(t,"hiddenSchedules"):t,{name:"weekGridFooterExceed-tmpl",hash:{},data:o,loc:{start:{line:20,column:145},end:{line:20,column:192}}}))?i:"")+"</span>\n"},9:function(e,t,n,l,o){var i,a=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return null!=(i=(a(n,"fi")||t&&a(t,"fi")||e.hooks.helperMissing).call(null!=t?t:e.nullContext||{},o&&a(o,"key"),"===",(i=o&&a(o,"root"))&&a(i,"collapseBtnIndex"),{name:"fi",hash:{},fn:e.program(10,o,0),inverse:e.noop,data:o,loc:{start:{line:23,column:16},end:{line:25,column:23}}}))?i:""},10:function(e,t,n,l,o){var i,a,r=null!=t?t:e.nullContext||{},s=e.hooks.helperMissing,c="function",u=e.escapeExpression,d=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return'                    <span class="'+u(typeof(a=null!=(a=d(n,"CSS_PREFIX")||(null!=t?d(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:24,column:33},end:{line:24,column:47}}}):a)+'weekday-collapse-btn" style="z-index: 1; right:'+u((d(n,"getRight")||t&&d(t,"getRight")||s).call(r,null!=t?d(t,"left"):t,null!=t?d(t,"width"):t,{name:"getRight",hash:{},data:o,loc:{start:{line:24,column:94},end:{line:24,column:117}}}))+'%;">'+(null!=(i=typeof(a=null!=(a=d(n,"collapseBtnTitle-tmpl")||(null!=t?d(t,"collapseBtnTitle-tmpl"):t))?a:s)===c?a.call(r,{name:"collapseBtnTitle-tmpl",hash:{},data:o,loc:{start:{line:24,column:121},end:{line:24,column:148}}}):a)?i:"")+"</span>\n"},compiler:[8,">= 4.3.0"],main:function(e,t,n,l,o){var i,a,r=null!=t?t:e.nullContext||{},s=e.hooks.helperMissing,c="function",u=e.escapeExpression,d=e.lambda,h=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return'<div class="'+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:1,column:12},end:{line:1,column:26}}}):a)+u(typeof(a=null!=(a=h(n,"viewName")||(null!=t?h(t,"viewName"):t))?a:s)===c?a.call(r,{name:"viewName",hash:{},data:o,loc:{start:{line:1,column:26},end:{line:1,column:38}}}):a)+"-left "+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:1,column:44},end:{line:1,column:58}}}):a)+'left" style="border-right: '+u(d(null!=(i=null!=t?h(t,"styles"):t)?h(i,"leftBorderRight"):i,t))+"; width: "+u(d(null!=(i=null!=t?h(t,"styles"):t)?h(i,"leftWidth"):i,t))+"; background-color: "+u(d(null!=(i=null!=t?h(t,"styles"):t)?h(i,"leftBackgroundColor"):i,t))+"; padding-right: "+u(d(null!=(i=null!=t?h(t,"styles"):t)?h(i,"leftPaddingRight"):i,t))+';">\n    '+(null!=(i=(h(n,"dayGridTitle-tmpl")||t&&h(t,"dayGridTitle-tmpl")||s).call(r,null!=t?h(t,"viewName"):t,{name:"dayGridTitle-tmpl",hash:{},data:o,loc:{start:{line:2,column:4},end:{line:2,column:36}}}))?i:"")+'\n</div>\n<div class="'+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:4,column:12},end:{line:4,column:26}}}):a)+u(typeof(a=null!=(a=h(n,"viewName")||(null!=t?h(t,"viewName"):t))?a:s)===c?a.call(r,{name:"viewName",hash:{},data:o,loc:{start:{line:4,column:26},end:{line:4,column:38}}}):a)+"-right "+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:4,column:45},end:{line:4,column:59}}}):a)+'right">\n    <div class="'+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:5,column:16},end:{line:5,column:30}}}):a)+'container">\n        <div class="'+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:6,column:20},end:{line:6,column:34}}}):a)+'weekday-grid">\n'+(null!=(i=h(n,"each").call(r,null!=t?h(t,"days"):t,{name:"each",hash:{},fn:e.program(1,o,0),inverse:e.noop,data:o,loc:{start:{line:7,column:8},end:{line:14,column:19}}}))?i:"")+(null!=(i=h(n,"if").call(r,(i=o&&h(o,"root"))&&h(i,"showExpandableButton"),{name:"if",hash:{},fn:e.program(4,o,0),inverse:e.noop,data:o,loc:{start:{line:16,column:8},end:{line:28,column:15}}}))?i:"")+"        </div>\n    </div>\n</div>\n"},useData:!0})},function(e,t,n){"use strict";var l=n(0),o=n(2),i=n(5),a=n(1),r=n(6),s=n(3),c=n(4),u=n(11),d=n(8),h=n(73),p=n(75),m=n(76),f=n(77),g=n(78),y=c.Date;function S(e,t,n,o){var a,r,c=e.hourStart,u=e.hourEnd,d=new y(e.renderEndDate),h=parseInt(n/60,10),p=Math.abs(n%60),m=(new y).toLocalTime(),f=m.getMinutes(),g=l.range(0,24),S=null;return(h<0||-0===h)&&p>0&&(h-=1),i.shiftArray(g,h),i.takeArray(g,c,u),a=i.shiftHours(m.getHours(),h)%24,r=l.inArray(a,g),t&&(f<20?S=a:f>40&&(S=a+1),l.isNumber(S)&&(S%=24)),l.map(g,(function(e,n){var l,i;return t&&n<=r||d<m&&!s.isSameDate(d,m)?(l=o.pastTimeColor,i=o.pastTimeFontWeight):(l=o.futureTimeColor,i=o.futureTimeFontWeight),{hour:e,minutes:p,hidden:S===e||0===n,color:l||"",fontWeight:i||""}}))}function _(e,t,n){var i=a.appendHTMLElement("div",n,o.classname("timegrid-container")),r=a.appendHTMLElement("div",n,o.classname("timegrid-sticky-container"));n.style.position="relative",e=e||"time",d.call(this,i),l.browser.safari||(this._autoScroll=new p(i)),this.stickyContainer=r,this.options=l.extend({viewName:e,renderStartDate:"",renderEndDate:"",hourStart:0,hourEnd:24,timezones:t.timezones,isReadOnly:t.isReadOnly,showTimezoneCollapseButton:!1},t.week),this.options.timezones.length<1&&(this.options.timezones=[{timezoneOffset:c.getOffset()}]),this.intervalID=0,this.timerID=0,this.rAnimationFrameID=0,this._scrolled=!1,this._cacheParentViewModel=null,this._cacheHoursLabels=null,this.attachEvent()}l.inherit(_,d),_.prototype.viewName="timegrid",_.prototype._beforeDestroy=function(){clearInterval(this.intervalID),clearTimeout(this.timerID),u.cancelAnimFrame(this.rAnimationFrameID),this._autoScroll&&this._autoScroll.destroy(),r.off(this.stickyContainer,"click",this._onClickStickyContainer,this),this._autoScroll=this.hourmarkers=this.intervalID=this.timerID=this.rAnimationFrameID=this._cacheParentViewModel=this.stickyContainer=null},_.prototype._getTopPercentByTime=function(e){var t,n=this.options,o=s.raw(e||new y),a=l.range(n.hourStart,n.hourEnd).length*s.MILLISECONDS_PER_HOUR,r=s.millisecondsFrom("hour",o.h)+s.millisecondsFrom("minutes",o.m)+s.millisecondsFrom("seconds",o.s)+o.ms;return t=i.ratio(a,100,r),t-=i.ratio(a,100,s.millisecondsFrom("hour",n.hourStart)),i.limit(t,[0],[100])},_.prototype._getHourmarkerViewModel=function(e,t,n){var o=-1,i=-1,a=[],r=this.options,u=c.getOffset(),d=r.timezones;return l.forEach(n,(function(n,l){s.isSameDate(e,n)&&(o=t[l]?t[l].left:0,i=t[l]?t[l].width:0)})),l.forEach(d,(function(t){var n,l=t.timezoneOffset+u,o=new y(e);o.setMinutes(o.getMinutes()+l),n=s.getDateDifference(o,e),a.push({hourmarker:o,dateDifferenceSign:n<0?"-":"+",dateDifference:Math.abs(n)})})),{currentHours:e.getHours(),hourmarkerTop:this._getTopPercentByTime(e),hourmarkerTimzones:a,todaymarkerLeft:o,todaymarkerWidth:i,todaymarkerRight:o+i}},_.prototype._getTimezoneViewModel=function(e,t,n){var o=this.options,i=c.getOffset(),a=o.timezones,r=a.length,u=[],d=t,h=d?100:100/r,p=(new y).toLocalTime(),m=n.displayTimezoneLabelBackgroundColor;return l.forEach(a,(function(t,l){var r,c,f,g=new y(p);r=t.timezoneOffset+i,c=S(o,e>=0,r,n),g.setMinutes(g.getMinutes()+r),f=s.getDateDifference(g,p),l>0&&(m=n.additionalTimezoneBackgroundColor),u.push({timeSlots:c,displayLabel:t.displayLabel,timezoneOffset:t.timezoneOffset,tooltip:t.tooltip||"",width:h,left:d?0:(a.length-l-1)*h,isPrimary:0===l,backgroundColor:m||"",hidden:0!==l&&d,hourmarker:g,dateDifferenceSign:f<0?"-":"+",dateDifference:Math.abs(f)})})),u},_.prototype._getBaseViewModel=function(e){var t=e.grids,n=e.range,o=this.options,i=this._getHourmarkerViewModel((new y).toLocalTime(),t,n),a=l.pick(e,"state","timezonesCollapsed"),r=this._getStyles(e.theme,a);return l.extend(i,{timezones:this._getTimezoneViewModel(i.todaymarkerLeft,a,r),hoursLabels:S(o,i.todaymarkerLeft>=0,0,r),styles:r,showTimezoneCollapseButton:l.pick(o,"showTimezoneCollapseButton"),timezonesCollapsed:a})},_.prototype._renderChildren=function(e,t,n,i){var r,c,u,d,p=this,m=this.options,f=s.format(new y,"YYYYMMDD"),g=0;n.innerHTML="",this.children.clear(),d=a.getSize(n.parentElement)[1],l.forEach(e,(function(e,l){u=l===f,r={index:g,left:t[g]?t[g].left:0,width:t[g]?t[g].width:0,ymd:l,isToday:u,isPending:m.isPending,isFocused:m.isFocused,isReadOnly:m.isReadOnly,hourStart:m.hourStart,hourEnd:m.hourEnd},(c=new h(r,a.appendHTMLElement("div",n,o.classname("time-date")),i)).render(l,e,d),p.addChild(c),g+=1}))},_.prototype.render=function(e){var t=this.options,n=e.schedulesInDateRange[t.viewName],i=this.container,r=e.grids,s=this._getBaseViewModel(e),c=l.keys(n).length;this._cacheParentViewModel=e,this._cacheHoursLabels=s.hoursLabels,c&&(s.showHourMarker=s.todaymarkerLeft>=0,i.innerHTML=m(s),this.renderStickyContainer(s),this._renderChildren(n,r,a.find(o.classname(".timegrid-schedules-container"),i),e.theme),this._hourLabels=a.find("ul",i),this.hourmarkers=a.find(o.classname(".timegrid-hourmarker"),i,!0),this._scrolled||(this._scrolled=!0,this.scrollToNow()))},_.prototype.renderStickyContainer=function(e){var t=this.stickyContainer;t.innerHTML=f(e),t.style.display=e.timezones.length>1?"block":"none",t.style.width=e.styles.leftWidth,t.style.height=e.styles.displayTimezoneLabelHeight,t.style.borderBottom=e.styles.leftBorderRight},_.prototype.refreshHourmarker=function(){var e,t=this.hourmarkers,n=this._cacheParentViewModel,i=this._cacheHoursLabels,r=this.rAnimationFrameID;t&&n&&!r&&(e=this._getBaseViewModel(n),this.rAnimationFrameID=u.requestAnimFrame((function(){var r=!1;l.forEach(i,(function(t,n){return t.hidden===e.hoursLabels[n].hidden||(r=!0,!1)})),r?this.render(n):l.forEach(t,(function(t){var n=a.find(o.classname(".timegrid-todaymarker"),t),l=a.find(o.classname(".timegrid-hourmarker-time"),t),i=a.closest(t,o.classname(".timegrid-timezone")),r=i?a.getData(i,"timezoneIndex"):0;t.style.top=e.hourmarkerTop+"%",n&&(n.style.display=e.todaymarkerLeft>=0?"block":"none"),l&&(l.innerHTML=g(e.hourmarkerTimzones[r]))})),this.rAnimationFrameID=null}),this))},_.prototype.attachEvent=function(){clearInterval(this.intervalID),clearTimeout(this.timerID),this.intervalID=this.timerID=this.rAnimationFrameID=null,this.timerID=setTimeout(this.onTick.bind(this),1e3*(60-(new y).getSeconds())),r.on(this.stickyContainer,"click",this._onClickStickyContainer,this)},_.prototype.scrollToNow=function(){var e,t,n,l,o,i=this.container;this.hourmarkers&&this.hourmarkers.length&&(e=this.hourmarkers[0].offsetTop,t=this.getViewBound(),n=e,l=t.height/4,10,o=function(){n>e-l?(n-=10,i.scrollTop=n,u.requestAnimFrame(o)):i.scrollTop=e-l},u.requestAnimFrame(o))},_.prototype.onTick=function(){this.timerID&&(clearTimeout(this.timerID),this.timerID=null),this.intervalID||(this.intervalID=setInterval(this.onTick.bind(this),6e4)),this.refreshHourmarker()},_.prototype._getStyles=function(e,t){var n,l={},o=this.options.timezones.length,a=t;return e&&(l.borderBottom=e.week.timegridHorizontalLine.borderBottom||e.common.border,l.halfHourBorderBottom=e.week.timegridHalfHour.borderBottom||e.common.border,l.todayBackgroundColor=e.week.today.backgroundColor,l.weekendBackgroundColor=e.week.weekend.backgroundColor,l.backgroundColor=e.week.daygrid.backgroundColor,l.leftWidth=e.week.timegridLeft.width,l.leftBackgroundColor=e.week.timegridLeft.backgroundColor,l.leftBorderRight=e.week.timegridLeft.borderRight||e.common.border,l.leftFontSize=e.week.timegridLeft.fontSize,l.timezoneWidth=e.week.timegridLeft.width,l.additionalTimezoneBackgroundColor=e.week.timegridLeftAdditionalTimezone.backgroundColor||l.leftBackgroundColor,l.displayTimezoneLabelHeight=e.week.timegridLeftTimezoneLabel.height,l.displayTimezoneLabelBackgroundColor="inherit"===e.week.timegridLeft.backgroundColor?"white":e.week.timegridLeft.backgroundColor,l.oneHourHeight=e.week.timegridOneHour.height,l.halfHourHeight=e.week.timegridHalfHour.height,l.quaterHourHeight=parseInt(l.halfHourHeight,10)/2+"px",l.currentTimeColor=e.week.currentTime.color,l.currentTimeFontSize=e.week.currentTime.fontSize,l.currentTimeFontWeight=e.week.currentTime.fontWeight,l.pastTimeColor=e.week.pastTime.color,l.pastTimeFontWeight=e.week.pastTime.fontWeight,l.futureTimeColor=e.week.futureTime.color,l.futureTimeFontWeight=e.week.futureTime.fontWeight,l.currentTimeLeftBorderTop=e.week.currentTimeLinePast.border,l.currentTimeBulletBackgroundColor=e.week.currentTimeLineBullet.backgroundColor,l.currentTimeTodayBorderTop=e.week.currentTimeLineToday.border,l.currentTimeRightBorderTop=e.week.currentTimeLineFuture.border,!a&&o>1&&(n=i.parseUnit(l.leftWidth),l.leftWidth=n[0]*o+n[1])),l},_.prototype._onClickStickyContainer=function(e){var t=r.getEventTarget(e);a.closest(t,o.classname(".timegrid-timezone-close-btn"))&&this.fire("clickTimezonesCollapsedBtn")},e.exports=_},function(e,t,n){"use strict";var l=n(0),o=n(2),i=n(3),a=n(1),r=n(8),s=n(74),c=l.forEachArray,u=i.MILLISECONDS_SCHEDULE_MIN_DURATION;function d(e,t,n){r.call(this,t),this.options=l.extend({index:0,width:0,ymd:"",isToday:!1,pending:!1,hourStart:0,hourEnd:24,defaultMarginBottom:2,minHeight:18.5,isReadOnly:!1},e),this.timeTmpl=s,this.theme=n,t.style.width=e.width+"%",t.style.left=e.left+"%",this.options.isToday&&a.addClass(this.container,o.classname("today")),this.applyTheme()}l.inherit(d,r),d.prototype._parseDateGroup=function(e){var t=parseInt(e.substr(0,4),10),n=parseInt(e.substr(4,2),10),l=parseInt(e.substr(6,2),10),o=i.start();return o.setFullYear(t,n-1,l),i.start(o)},d.prototype._getScheduleViewBoundX=function(e,t){var n=t.baseWidth*(e.extraSpace+1);return e.hasCollide||(n=null),{left:t.baseLeft[t.columnIndex],width:n}},d.prototype._getScheduleViewBoundY=function(e,t){var n,l,o,a,r=t.baseMS,s=t.baseHeight,c=!1,d=!1,h=i.millisecondsFrom("minutes",e.valueOf().goingDuration),p=i.millisecondsFrom("minutes",e.valueOf().comingDuration),m=e.valueOf().start-h-t.todayStart,f=s*m/r,g=e.duration();return n=s*((g=g>u?g:u)+h+p)/r,l=s*h/r,o=s*g/r,a=s*p/r,m<0&&(f=0,n+=s*m/r,c=!0),n+f>s&&(n=s-f,d=!0),{top:f,height:Math.max(n,this.options.minHeight)-this.options.defaultMarginBottom,modelDurationHeight:o,goingDurationHeight:l,comingDurationHeight:a,hasGoingDuration:h>0,hasComingDuration:p>0,croppedStart:c,croppedEnd:d}},d.prototype.getScheduleViewBound=function(e,t){var n=this._getScheduleViewBoundX(e,t),o=this._getScheduleViewBoundY(e,t),i=e.model,a=l.pick(i,"isReadOnly")||!1,r=i.isFocused?"#ffffff":i.borderColor;return r===i.bgColor&&(r=null),l.extend({isReadOnly:a,travelBorderColor:r},n,o)},d.prototype._getBaseViewModel=function(e,t,n){var o,a,r=this,s=this.options,u=s.hourStart,d=s.hourEnd,h=s.isReadOnly;n=n||this.getViewBound().height,(o=this._parseDateGroup(e)).setHours(u),a=i.millisecondsFrom("hour",d-u),c(t,(function(e){var t,i,s,u;for(t=Math.max.apply(null,l.map(e,(function(e){return e.length}))),i=100/t,s=[],u=0;u<t;u+=1)s[u]=i*u;c(e,(function(e){c(e,(function(e,t){var c;e&&(c=r.getScheduleViewBound(e,{todayStart:o,baseMS:a,baseLeft:s,baseWidth:i,baseHeight:n,columnIndex:t,isReadOnly:h}),l.extend(e,c))}))}))}))},d.prototype.getDate=function(){return this._parseDateGroup(this.options.ymd)},d.prototype.render=function(e,t,n){this._getBaseViewModel(e,t,n),this.container.innerHTML=this.timeTmpl({matrices:t,styles:this._getStyles(this.theme),isReadOnly:this.options.isReadOnly})},d.prototype._getStyles=function(e){var t={},n=this.options;return e&&(t.borderRight=e.week.timegrid.borderRight||e.common.border,t.marginRight=e.week.timegrid.paddingRight,t.borderRadius=e.week.timegridSchedule.borderRadius,t.paddingLeft=e.week.timegridSchedule.paddingLeft,t.backgroundColor=n.isToday?e.week.today.backgroundColor:"inherit"),t},d.prototype.applyTheme=function(){var e=this.container.style,t=this._getStyles(this.theme);e.borderRight=t.borderRight,e.backgroundColor=t.backgroundColor},e.exports=d},function(e,t,n){var l=n(7);e.exports=(l.default||l).template({1:function(e,t,n,l,o){var i;return null!=(i=(e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]})(n,"each").call(null!=t?t:e.nullContext||{},t,{name:"each",hash:{},fn:e.program(2,o,0),inverse:e.noop,data:o,loc:{start:{line:3,column:4},end:{line:60,column:13}}}))?i:""},2:function(e,t,n,l,o){var i;return null!=(i=(e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]})(n,"each").call(null!=t?t:e.nullContext||{},t,{name:"each",hash:{},fn:e.program(3,o,0),inverse:e.noop,data:o,loc:{start:{line:4,column:8},end:{line:59,column:17}}}))?i:""},3:function(e,t,n,l,o){var i;return null!=(i=(e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]})(n,"if").call(null!=t?t:e.nullContext||{},t,{name:"if",hash:{},fn:e.program(4,o,0),inverse:e.noop,data:o,loc:{start:{line:5,column:8},end:{line:58,column:17}}}))?i:""},4:function(e,t,n,l,o){var i,a,r=null!=t?t:e.nullContext||{},s=e.hooks.helperMissing,c="function",u=e.escapeExpression,d=e.lambda,h=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return'<div class="'+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:6,column:20},end:{line:6,column:34}}}):a)+"time-date-schedule-block "+(null!=(i=h(n,"if").call(r,null!=(i=null!=t?h(t,"model"):t)?h(i,"isPending"):i,{name:"if",hash:{},fn:e.program(5,o,0),inverse:e.noop,data:o,loc:{start:{line:6,column:59},end:{line:6,column:136}}}))?i:"")+'" data-id="'+u((h(n,"stamp")||t&&h(t,"stamp")||s).call(r,null!=t?h(t,"model"):t,{name:"stamp",hash:{},data:o,loc:{start:{line:6,column:147},end:{line:6,column:162}}}))+'"\n            style="'+u((h(n,"time-scheduleBlock")||t&&h(t,"time-scheduleBlock")||s).call(r,t,{name:"time-scheduleBlock",hash:{},data:o,loc:{start:{line:7,column:19},end:{line:7,column:46}}}))+";\n"+(null!=(i=(h(n,"fi")||t&&h(t,"fi")||s).call(r,null!=t?h(t,"left"):t,"!==",0,{name:"fi",hash:{},fn:e.program(7,o,0),inverse:e.noop,data:o,loc:{start:{line:8,column:16},end:{line:10,column:23}}}))?i:"")+'            ">\n            <div data-schedule-id="'+u(d(null!=(i=null!=t?h(t,"model"):t)?h(i,"id"):i,t))+'" data-calendar-id="'+u(d(null!=(i=null!=t?h(t,"model"):t)?h(i,"calendarId"):i,t))+'" class="'+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:12,column:96},end:{line:12,column:110}}}):a)+"time-schedule "+(null!=(i=h(n,"if").call(r,null!=(i=null!=t?h(t,"model"):t)?h(i,"isFocused"):i,{name:"if",hash:{},fn:e.program(9,o,0),inverse:e.noop,data:o,loc:{start:{line:12,column:124},end:{line:12,column:190}}}))?i:"")+'"\n                style="\n'+(null!=(i=h(n,"unless").call(r,null!=t?h(t,"croppedEnd"):t,{name:"unless",hash:{},fn:e.program(11,o,0),inverse:e.noop,data:o,loc:{start:{line:14,column:16},end:{line:17,column:27}}}))?i:"")+(null!=(i=h(n,"unless").call(r,null!=t?h(t,"croppedStart"):t,{name:"unless",hash:{},fn:e.program(13,o,0),inverse:e.noop,data:o,loc:{start:{line:18,column:16},end:{line:21,column:27}}}))?i:"")+(null!=(i=h(n,"if").call(r,null!=(i=null!=t?h(t,"model"):t)?h(i,"isFocused"):i,{name:"if",hash:{},fn:e.program(15,o,0),inverse:e.program(17,o,0),data:o,loc:{start:{line:22,column:16},end:{line:26,column:23}}}))?i:"")+"                 "+u(d(null!=(i=null!=t?h(t,"model"):t)?h(i,"customStyle"):i,t))+'"\n            >\n'+(null!=(i=h(n,"if").call(r,null!=t?h(t,"hasGoingDuration"):t,{name:"if",hash:{},fn:e.program(19,o,0),inverse:e.noop,data:o,loc:{start:{line:29,column:12},end:{line:37,column:19}}}))?i:"")+'                <div class="'+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:38,column:28},end:{line:38,column:42}}}):a)+"time-schedule-content "+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:38,column:64},end:{line:38,column:78}}}):a)+'time-schedule-content-time" style="height: '+u(typeof(a=null!=(a=h(n,"modelDurationHeight")||(null!=t?h(t,"modelDurationHeight"):t))?a:s)===c?a.call(r,{name:"modelDurationHeight",hash:{},data:o,loc:{start:{line:38,column:121},end:{line:38,column:144}}}):a)+"px;\n"+(null!=(i=h(n,"if").call(r,null!=(i=null!=t?h(t,"model"):t)?h(i,"isFocused"):i,{name:"if",hash:{},fn:e.program(20,o,0),inverse:e.program(22,o,0),data:o,loc:{start:{line:39,column:16},end:{line:43,column:23}}}))?i:"")+"                "+(null!=(i=h(n,"if").call(r,null!=t?h(t,"hasComingDuration"):t,{name:"if",hash:{},fn:e.program(24,o,0),inverse:e.noop,data:o,loc:{start:{line:44,column:16},end:{line:44,column:96}}}))?i:"")+'">\n                    '+(null!=(i=(h(n,"time-tmpl")||t&&h(t,"time-tmpl")||s).call(r,null!=t?h(t,"model"):t,{name:"time-tmpl",hash:{},data:o,loc:{start:{line:45,column:20},end:{line:45,column:41}}}))?i:"")+"\n                </div>\n"+(null!=(i=h(n,"if").call(r,null!=t?h(t,"hasComingDuration"):t,{name:"if",hash:{},fn:e.program(26,o,0),inverse:e.noop,data:o,loc:{start:{line:47,column:12},end:{line:54,column:19}}}))?i:"")+"            </div>\n            "+(null!=(i=h(n,"unless").call(r,(h(n,"or")||t&&h(t,"or")||s).call(r,null!=t?h(t,"croppedEnd"):t,(h(n,"or")||t&&h(t,"or")||s).call(r,(i=o&&h(o,"root"))&&h(i,"isReadOnly"),null!=(i=null!=t?h(t,"model"):t)?h(i,"isReadOnly"):i,{name:"or",hash:{},data:o,loc:{start:{line:56,column:37},end:{line:56,column:75}}}),{name:"or",hash:{},data:o,loc:{start:{line:56,column:22},end:{line:56,column:76}}}),{name:"unless",hash:{},fn:e.program(29,o,0),inverse:e.noop,data:o,loc:{start:{line:56,column:12},end:{line:56,column:207}}}))?i:"")+"\n        </div>\n"},5:function(e,t,n,l,o){var i,a=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return" "+e.escapeExpression("function"==typeof(i=null!=(i=a(n,"CSS_PREFIX")||(null!=t?a(t,"CSS_PREFIX"):t))?i:e.hooks.helperMissing)?i.call(null!=t?t:e.nullContext||{},{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:6,column:83},end:{line:6,column:97}}}):i)+"time-date-schedule-block-pending"},7:function(e,t,n,l,o){var i,a=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return"                    padding-left: "+e.escapeExpression(e.lambda((i=(i=o&&a(o,"root"))&&a(i,"styles"))&&a(i,"paddingLeft"),t))+";\n"},9:function(e,t,n,l,o){var i,a=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return e.escapeExpression("function"==typeof(i=null!=(i=a(n,"CSS_PREFIX")||(null!=t?a(t,"CSS_PREFIX"):t))?i:e.hooks.helperMissing)?i.call(null!=t?t:e.nullContext||{},{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:12,column:147},end:{line:12,column:161}}}):i)+"time-schedule-focused "},11:function(e,t,n,l,o){var i,a=e.lambda,r=e.escapeExpression,s=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return"                    border-bottom-left-radius: "+r(a((i=(i=o&&s(o,"root"))&&s(i,"styles"))&&s(i,"borderRadius"),t))+";\n                    border-bottom-right-radius: "+r(a((i=(i=o&&s(o,"root"))&&s(i,"styles"))&&s(i,"borderRadius"),t))+";\n"},13:function(e,t,n,l,o){var i,a=e.lambda,r=e.escapeExpression,s=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return"                    border-top-left-radius: "+r(a((i=(i=o&&s(o,"root"))&&s(i,"styles"))&&s(i,"borderRadius"),t))+";\n                    border-top-right-radius: "+r(a((i=(i=o&&s(o,"root"))&&s(i,"styles"))&&s(i,"borderRadius"),t))+";\n"},15:function(e,t,n,l,o){var i,a=e.lambda,r=e.escapeExpression,s=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return"                    color: #ffffff; background-color:"+r(a(null!=(i=null!=t?s(t,"model"):t)?s(i,"color"):i,t))+"; border-color:"+r(a(null!=(i=null!=t?s(t,"model"):t)?s(i,"color"):i,t))+";\n"},17:function(e,t,n,l,o){var i,a=e.lambda,r=e.escapeExpression,s=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return"                    color:"+r(a(null!=(i=null!=t?s(t,"model"):t)?s(i,"color"):i,t))+"; background-color:"+r(a(null!=(i=null!=t?s(t,"model"):t)?s(i,"bgColor"):i,t))+"; border-color:"+r(a(null!=(i=null!=t?s(t,"model"):t)?s(i,"borderColor"):i,t))+";\n"},19:function(e,t,n,l,o){var i,a,r=null!=t?t:e.nullContext||{},s=e.hooks.helperMissing,c="function",u=e.escapeExpression,d=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return'                <div class="'+u(typeof(a=null!=(a=d(n,"CSS_PREFIX")||(null!=t?d(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:30,column:28},end:{line:30,column:42}}}):a)+"time-schedule-content "+u(typeof(a=null!=(a=d(n,"CSS_PREFIX")||(null!=t?d(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:30,column:64},end:{line:30,column:78}}}):a)+'time-schedule-content-travel-time" style="height: '+u(typeof(a=null!=(a=d(n,"goingDurationHeight")||(null!=t?d(t,"goingDurationHeight"):t))?a:s)===c?a.call(r,{name:"goingDurationHeight",hash:{},data:o,loc:{start:{line:30,column:128},end:{line:30,column:151}}}):a)+"px;\n"+(null!=(i=d(n,"if").call(r,null!=(i=null!=t?d(t,"model"):t)?d(i,"isFocused"):i,{name:"if",hash:{},fn:e.program(20,o,0),inverse:e.program(22,o,0),data:o,loc:{start:{line:31,column:16},end:{line:35,column:23}}}))?i:"")+"                border-bottom: 1px dashed "+u(typeof(a=null!=(a=d(n,"travelBorderColor")||(null!=t?d(t,"travelBorderColor"):t))?a:s)===c?a.call(r,{name:"travelBorderColor",hash:{},data:o,loc:{start:{line:36,column:42},end:{line:36,column:63}}}):a)+';">'+(null!=(i=(d(n,"goingDuration-tmpl")||t&&d(t,"goingDuration-tmpl")||s).call(r,null!=t?d(t,"model"):t,{name:"goingDuration-tmpl",hash:{},data:o,loc:{start:{line:36,column:66},end:{line:36,column:96}}}))?i:"")+"</div>\n"},20:function(e,t,n,l,o){var i,a=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return"                    border-color:"+e.escapeExpression(e.lambda(null!=(i=null!=t?a(t,"model"):t)?a(i,"color"):i,t))+";\n"},22:function(e,t,n,l,o){var i,a=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return"                    border-color:"+e.escapeExpression(e.lambda(null!=(i=null!=t?a(t,"model"):t)?a(i,"borderColor"):i,t))+";\n"},24:function(e,t,n,l,o){var i,a=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return"border-bottom: 1px dashed "+e.escapeExpression("function"==typeof(i=null!=(i=a(n,"travelBorderColor")||(null!=t?a(t,"travelBorderColor"):t))?i:e.hooks.helperMissing)?i.call(null!=t?t:e.nullContext||{},{name:"travelBorderColor",hash:{},data:o,loc:{start:{line:44,column:67},end:{line:44,column:88}}}):i)+";"},26:function(e,t,n,l,o){var i,a,r=null!=t?t:e.nullContext||{},s=e.hooks.helperMissing,c="function",u=e.escapeExpression,d=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return'                <div class="'+u(typeof(a=null!=(a=d(n,"CSS_PREFIX")||(null!=t?d(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:48,column:28},end:{line:48,column:42}}}):a)+"time-schedule-content "+u(typeof(a=null!=(a=d(n,"CSS_PREFIX")||(null!=t?d(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:48,column:64},end:{line:48,column:78}}}):a)+'time-schedule-content-travel-time" style="height: '+u(typeof(a=null!=(a=d(n,"comingDurationHeight")||(null!=t?d(t,"comingDurationHeight"):t))?a:s)===c?a.call(r,{name:"comingDurationHeight",hash:{},data:o,loc:{start:{line:48,column:128},end:{line:48,column:152}}}):a)+"px;\n"+(null!=(i=d(n,"if").call(r,null!=(i=null!=t?d(t,"model"):t)?d(i,"isFocused"):i,{name:"if",hash:{},fn:e.program(20,o,0),inverse:e.program(27,o,0),data:o,loc:{start:{line:49,column:16},end:{line:53,column:23}}}))?i:"")+';">'+(null!=(i=(d(n,"comingDuration-tmpl")||t&&d(t,"comingDuration-tmpl")||s).call(r,null!=t?d(t,"model"):t,{name:"comingDuration-tmpl",hash:{},data:o,loc:{start:{line:53,column:26},end:{line:53,column:57}}}))?i:"")+"</div>\n"},27:function(e,t,n,l,o){var i,a=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return"                    border-color:"+e.escapeExpression(e.lambda(null!=(i=null!=t?a(t,"model"):t)?a(i,"borderColor"):i,t))+";\n                "},29:function(e,t,n,l,o){var i,a,r=e.escapeExpression,s=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return'<div class="'+r("function"==typeof(a=null!=(a=s(n,"CSS_PREFIX")||(null!=t?s(t,"CSS_PREFIX"):t))?a:e.hooks.helperMissing)?a.call(null!=t?t:e.nullContext||{},{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:56,column:90},end:{line:56,column:104}}}):a)+'time-resize-handle handle-x" style="margin-left: '+r(e.lambda((i=(i=o&&s(o,"root"))&&s(i,"styles"))&&s(i,"paddingLeft"),t))+';">&nbsp;</div>'},compiler:[8,">= 4.3.0"],main:function(e,t,n,l,o){var i,a,r=null!=t?t:e.nullContext||{},s=e.escapeExpression,c=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return'<div class="'+s("function"==typeof(a=null!=(a=c(n,"CSS_PREFIX")||(null!=t?c(t,"CSS_PREFIX"):t))?a:e.hooks.helperMissing)?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:1,column:12},end:{line:1,column:26}}}):a)+'time-date-schedule-block-wrap" style="margin-right: '+s(e.lambda(null!=(i=null!=t?c(t,"styles"):t)?c(i,"marginRight"):i,t))+';">\n'+(null!=(i=c(n,"each").call(r,null!=t?c(t,"matrices"):t,{name:"each",hash:{},fn:e.program(1,o,0),inverse:e.noop,data:o,loc:{start:{line:2,column:0},end:{line:61,column:9}}}))?i:"")+"</div>\n"},useData:!0})},function(e,t,n){"use strict";(function(t){var l=n(0),o=n(6),i=n(1),a=n(31);function r(e){this.container=e,this._direction=r.DIRECTION.INSIDE,this._offset=0,this._intervalID=0,o.on(e,{mousedown:this._onMouseDown},this)}r.DIRECTION={INSIDE:0,TOP:1,RIGHT:2,BOTTOM:3,LEFT:4},r.prototype.destroy=function(){o.off(this.container,{mousedown:this._onMouseDown,mousemove:this._onMouseMove,mouseup:this._onMouseUp},this),window.clearInterval(this._intervalID),this._intervalID=this._direction=this.container=null},r.prototype._getEdgePositions=function(e){return{top:e.top,right:e.left+e.width,bottom:e.bottom,left:e.left}},r.prototype.getRealSize=function(e){var t,n,l=i.getComputedStyle(e);return t=parseFloat(l.getPropertyValue("border-top-width"))+parseFloat(l.getPropertyValue("border-bottom-width")),n=parseFloat(l.getPropertyValue("padding-top"))+parseFloat(l.getPropertyValue("padding-bottom")),[e.clientWidth+t+n,e.clientHeight+t+n]},r.prototype.hasScrollbar=function(e){var t=this.getRealSize(e);return[e.offsetWidth>Math.ceil(t[0]),e.offsetHeight>Math.ceil(t[1])]},r.prototype.isOnScrollbar=function(e,t){var n=this.getRealSize(e),l=o.getMousePosition(t,e);return n[0]-2<l[0]||n[1]-2<l[1]},r.prototype._onMouseDown=function(e){0===o.getMouseButton(e)&&(l.browser.msie&&this.isOnScrollbar(this.container,e)||(window.clearInterval(this._intervalID),this._intervalID=window.setInterval(this._onTick.bind(this),30),o.on(t,{mousemove:this._onMouseMove,mouseup:this._onMouseUp},this)))},r.prototype._onMouseMove=function(e){var t=this._getEdgePositions(this.container.getBoundingClientRect()),n=a.n(o.getMousePosition(e));if(n.y>=t.top&&n.y<=t.bottom&&n.x>=t.left&&n.x<=t.right)this._direction=r.DIRECTION.INSIDE;else{if(n.y<t.top)return this._direction=r.DIRECTION.TOP,void(this._offset=t.top-n.y);if(n.y>t.bottom)return this._direction=r.DIRECTION.BOTTOM,void(this._offset=n.y-t.bottom);if(n.x<t.left)return this._direction=r.DIRECTION.LEFT,void(this._offset=t.left-n.x);this._direction=r.DIRECTION.RIGHT,this._offset=n.x-t.right}},r.prototype._onMouseUp=function(){window.clearInterval(this._intervalID),this._intervalID=0,this._direction=r.DIRECTION.INSIDE,this._offset=0,o.off(t,{mousemove:this._onMouseMove,mouseup:this._onMouseUp},this)},r.prototype._onTick=function(){var e,t,n=this._direction;if(n)switch(e=this.container,t=Math.min(this._offset,15),n){case r.DIRECTION.TOP:e.scrollTop-=t;break;case r.DIRECTION.RIGHT:e.scrollLeft+=t;break;case r.DIRECTION.BOTTOM:e.scrollTop+=t;break;default:e.scrollLeft-=t}},e.exports=r}).call(this,n(9))},function(e,t,n){var l=n(7);e.exports=(l.default||l).template({1:function(e,t,n,l,o){var i,a,r=null!=t?t:e.nullContext||{},s=e.hooks.helperMissing,c="function",u=e.escapeExpression,d=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return'<div class="'+u(typeof(a=null!=(a=d(n,"CSS_PREFIX")||(null!=t?d(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:3,column:20},end:{line:3,column:34}}}):a)+'timegrid-timezone" data-timezone-index="'+u(typeof(a=null!=(a=d(n,"index")||o&&d(o,"index"))?a:s)===c?a.call(r,{name:"index",hash:{},data:o,loc:{start:{line:3,column:74},end:{line:3,column:84}}}):a)+'" style="'+(null!=(i=d(n,"if").call(r,null!=t?d(t,"hidden"):t,{name:"if",hash:{},fn:e.program(2,o,0),inverse:e.noop,data:o,loc:{start:{line:3,column:93},end:{line:3,column:127}}}))?i:"")+"position: absolute; top: 0; width: "+u(typeof(a=null!=(a=d(n,"width")||(null!=t?d(t,"width"):t))?a:s)===c?a.call(r,{name:"width",hash:{},data:o,loc:{start:{line:3,column:162},end:{line:3,column:171}}}):a)+"%; left: "+u(typeof(a=null!=(a=d(n,"left")||(null!=t?d(t,"left"):t))?a:s)===c?a.call(r,{name:"left",hash:{},data:o,loc:{start:{line:3,column:180},end:{line:3,column:188}}}):a)+"%; border-right: "+u(e.lambda((i=(i=o&&d(o,"root"))&&d(i,"styles"))&&d(i,"leftBorderRight"),t))+"; background-color: "+u(typeof(a=null!=(a=d(n,"backgroundColor")||(null!=t?d(t,"backgroundColor"):t))?a:s)===c?a.call(r,{name:"backgroundColor",hash:{},data:o,loc:{start:{line:3,column:257},end:{line:3,column:276}}}):a)+';" >\n'+(null!=(i=d(n,"if").call(r,null!=t?d(t,"isPrimary"):t,{name:"if",hash:{},fn:e.program(4,o,0),inverse:e.program(10,o,0),data:o,loc:{start:{line:4,column:8},end:{line:26,column:15}}}))?i:"")+"        </div>\n"},2:function(e,t,n,l,o){return"display:none;"},4:function(e,t,n,l,o){var i,a=null!=t?t:e.nullContext||{},r=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return(null!=(i=r(n,"each").call(a,null!=t?r(t,"timeSlots"):t,{name:"each",hash:{},fn:e.program(5,o,0),inverse:e.noop,data:o,loc:{start:{line:5,column:12},end:{line:9,column:23}}}))?i:"")+(null!=(i=r(n,"if").call(a,(i=o&&r(o,"root"))&&r(i,"showHourMarker"),{name:"if",hash:{},fn:e.program(8,o,0),inverse:e.noop,data:o,loc:{start:{line:10,column:12},end:{line:14,column:19}}}))?i:"")},5:function(e,t,n,l,o){var i,a,r=null!=t?t:e.nullContext||{},s=e.hooks.helperMissing,c="function",u=e.escapeExpression,d=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return'<div class="'+u(typeof(a=null!=(a=d(n,"CSS_PREFIX")||(null!=t?d(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:6,column:28},end:{line:6,column:42}}}):a)+'timegrid-hour" style="height: '+u(e.lambda((i=(i=o&&d(o,"root"))&&d(i,"styles"))&&d(i,"oneHourHeight"),t))+"; color: "+u(typeof(a=null!=(a=d(n,"color")||(null!=t?d(t,"color"):t))?a:s)===c?a.call(r,{name:"color",hash:{},data:o,loc:{start:{line:6,column:111},end:{line:6,column:120}}}):a)+"; font-weight: "+u(typeof(a=null!=(a=d(n,"fontWeight")||(null!=t?d(t,"fontWeight"):t))?a:s)===c?a.call(r,{name:"fontWeight",hash:{},data:o,loc:{start:{line:6,column:135},end:{line:6,column:149}}}):a)+';">\n                    <span style="'+(null!=(i=d(n,"if").call(r,null!=t?d(t,"hidden"):t,{name:"if",hash:{},fn:e.program(6,o,0),inverse:e.noop,data:o,loc:{start:{line:7,column:33},end:{line:7,column:66}}}))?i:"")+'">'+(null!=(i=(d(n,"timegridDisplayPrimayTime-tmpl")||t&&d(t,"timegridDisplayPrimayTime-tmpl")||s).call(r,t,{name:"timegridDisplayPrimayTime-tmpl",hash:{},data:o,loc:{start:{line:7,column:68},end:{line:7,column:109}}}))?i:"")+"</span>\n                </div>\n"},6:function(e,t,n,l,o){return"display:none"},8:function(e,t,n,l,o){var i,a,r=null!=t?t:e.nullContext||{},s=e.hooks.helperMissing,c="function",u=e.escapeExpression,d=e.lambda,h=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return'                <div class="'+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:11,column:28},end:{line:11,column:42}}}):a)+'timegrid-hourmarker" style="top:'+u(d((i=o&&h(o,"root"))&&h(i,"hourmarkerTop"),t))+"%; margin-top: calc(6px - "+u(d((i=(i=o&&h(o,"root"))&&h(i,"styles"))&&h(i,"halfHourHeight"),t))+"); height: "+u(d((i=(i=o&&h(o,"root"))&&h(i,"styles"))&&h(i,"halfHourHeight"),t))+';">\n                    <div class="'+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:12,column:32},end:{line:12,column:46}}}):a)+'timegrid-hourmarker-time" style="color: '+u(d((i=(i=o&&h(o,"root"))&&h(i,"styles"))&&h(i,"currentTimeColor"),t))+"; font-size: "+u(d((i=(i=o&&h(o,"root"))&&h(i,"styles"))&&h(i,"currentTimeFontSize"),t))+"; font-weight: "+u(d((i=(i=o&&h(o,"root"))&&h(i,"styles"))&&h(i,"currentTimeFontWeight"),t))+'">'+(null!=(i=(h(n,"timegridCurrentTime-tmpl")||t&&h(t,"timegridCurrentTime-tmpl")||s).call(r,t,{name:"timegridCurrentTime-tmpl",hash:{},data:o,loc:{start:{line:12,column:223},end:{line:12,column:258}}}))?i:"")+"</div>\n                </div>\n"},10:function(e,t,n,l,o){var i,a=null!=t?t:e.nullContext||{},r=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return(null!=(i=r(n,"each").call(a,null!=t?r(t,"timeSlots"):t,{name:"each",hash:{},fn:e.program(11,o,0),inverse:e.noop,data:o,loc:{start:{line:16,column:12},end:{line:20,column:23}}}))?i:"")+(null!=(i=r(n,"if").call(a,(i=o&&r(o,"root"))&&r(i,"showHourMarker"),{name:"if",hash:{},fn:e.program(13,o,0),inverse:e.noop,data:o,loc:{start:{line:21,column:12},end:{line:25,column:19}}}))?i:"")},11:function(e,t,n,l,o){var i,a,r=null!=t?t:e.nullContext||{},s=e.hooks.helperMissing,c="function",u=e.escapeExpression,d=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return'<div class="'+u(typeof(a=null!=(a=d(n,"CSS_PREFIX")||(null!=t?d(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:17,column:28},end:{line:17,column:42}}}):a)+'timegrid-hour" style="height: '+u(e.lambda((i=(i=o&&d(o,"root"))&&d(i,"styles"))&&d(i,"oneHourHeight"),t))+"; color: "+u(typeof(a=null!=(a=d(n,"color")||(null!=t?d(t,"color"):t))?a:s)===c?a.call(r,{name:"color",hash:{},data:o,loc:{start:{line:17,column:111},end:{line:17,column:120}}}):a)+"; font-weight: "+u(typeof(a=null!=(a=d(n,"fontWeight")||(null!=t?d(t,"fontWeight"):t))?a:s)===c?a.call(r,{name:"fontWeight",hash:{},data:o,loc:{start:{line:17,column:135},end:{line:17,column:149}}}):a)+';">\n                    <span style="'+(null!=(i=d(n,"if").call(r,null!=t?d(t,"hidden"):t,{name:"if",hash:{},fn:e.program(6,o,0),inverse:e.noop,data:o,loc:{start:{line:18,column:33},end:{line:18,column:66}}}))?i:"")+'">'+(null!=(i=(d(n,"timegridDisplayTime-tmpl")||t&&d(t,"timegridDisplayTime-tmpl")||s).call(r,t,{name:"timegridDisplayTime-tmpl",hash:{},data:o,loc:{start:{line:18,column:68},end:{line:18,column:103}}}))?i:"")+"</span>\n                </div>\n"},13:function(e,t,n,l,o){var i,a,r=null!=t?t:e.nullContext||{},s=e.hooks.helperMissing,c="function",u=e.escapeExpression,d=e.lambda,h=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return'                <div class="'+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:22,column:28},end:{line:22,column:42}}}):a)+'timegrid-hourmarker" style="top:'+u(d((i=o&&h(o,"root"))&&h(i,"hourmarkerTop"),t))+"%; margin-top: calc(6px - "+u(d((i=(i=o&&h(o,"root"))&&h(i,"styles"))&&h(i,"halfHourHeight"),t))+"); height: "+u(d((i=(i=o&&h(o,"root"))&&h(i,"styles"))&&h(i,"halfHourHeight"),t))+';">\n                    <div class="'+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:23,column:32},end:{line:23,column:46}}}):a)+'timegrid-hourmarker-time" style="color: '+u(d((i=(i=o&&h(o,"root"))&&h(i,"styles"))&&h(i,"currentTimeColor"),t))+"; font-size: "+u(d((i=(i=o&&h(o,"root"))&&h(i,"styles"))&&h(i,"currentTimeFontSize"),t))+';">'+(null!=(i=(h(n,"timegridCurrentTime-tmpl")||t&&h(t,"timegridCurrentTime-tmpl")||s).call(r,t,{name:"timegridCurrentTime-tmpl",hash:{},data:o,loc:{start:{line:23,column:171},end:{line:23,column:206}}}))?i:"")+"</div>\n                </div>\n"},15:function(e,t,n,l,o){var i,a,r=null!=t?t:e.nullContext||{},s=e.hooks.helperMissing,c="function",u=e.escapeExpression,d=e.lambda,h=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return'<div class="'+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:33,column:20},end:{line:33,column:34}}}):a)+'timegrid-gridline" style="height: '+u(d((i=(i=o&&h(o,"root"))&&h(i,"styles"))&&h(i,"oneHourHeight"),t))+";\n"+(null!=(i=h(n,"unless").call(r,o&&h(o,"last"),{name:"unless",hash:{},fn:e.program(16,o,0),inverse:e.noop,data:o,loc:{start:{line:34,column:12},end:{line:36,column:23}}}))?i:"")+'        ">\n            <div class="'+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:38,column:24},end:{line:38,column:38}}}):a)+'timegrid-gridline-half" style="height: '+u(d((i=(i=o&&h(o,"root"))&&h(i,"styles"))&&h(i,"halfHourHeight"),t))+"; border-bottom: "+u(d((i=(i=o&&h(o,"root"))&&h(i,"styles"))&&h(i,"halfHourBorderBottom"),t))+';"></div>\n        </div>\n'},16:function(e,t,n,l,o){var i,a=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return"            border-bottom: "+e.escapeExpression(e.lambda((i=(i=o&&a(o,"root"))&&a(i,"styles"))&&a(i,"borderBottom"),t))+";\n"},18:function(e,t,n,l,o){var i,a,r=null!=t?t:e.nullContext||{},s=e.hooks.helperMissing,c="function",u=e.escapeExpression,d=e.lambda,h=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return'    <div class="'+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:47,column:16},end:{line:47,column:30}}}):a)+'timegrid-hourmarker" style="top:'+u(typeof(a=null!=(a=h(n,"hourmarkerTop")||(null!=t?h(t,"hourmarkerTop"):t))?a:s)===c?a.call(r,{name:"hourmarkerTop",hash:{},data:o,loc:{start:{line:47,column:62},end:{line:47,column:79}}}):a)+'%">\n        <div class="'+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:48,column:20},end:{line:48,column:34}}}):a)+'timegrid-hourmarker-line-left" style="width:'+u(typeof(a=null!=(a=h(n,"todaymarkerLeft")||(null!=t?h(t,"todaymarkerLeft"):t))?a:s)===c?a.call(r,{name:"todaymarkerLeft",hash:{},data:o,loc:{start:{line:48,column:78},end:{line:48,column:97}}}):a)+"%; border-top: "+u(d(null!=(i=null!=t?h(t,"styles"):t)?h(i,"currentTimeLeftBorderTop"):i,t))+';"></div>\n        <div class="'+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:49,column:20},end:{line:49,column:34}}}):a)+'timegrid-todaymarker" style="left:'+u(typeof(a=null!=(a=h(n,"todaymarkerLeft")||(null!=t?h(t,"todaymarkerLeft"):t))?a:s)===c?a.call(r,{name:"todaymarkerLeft",hash:{},data:o,loc:{start:{line:49,column:68},end:{line:49,column:87}}}):a)+"%; background-color: "+u(d(null!=(i=null!=t?h(t,"styles"):t)?h(i,"currentTimeBulletBackgroundColor"):i,t))+'; ">today</div>\n        <div class="'+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:50,column:20},end:{line:50,column:34}}}):a)+'timegrid-hourmarker-line-today" style="left:'+u(typeof(a=null!=(a=h(n,"todaymarkerLeft")||(null!=t?h(t,"todaymarkerLeft"):t))?a:s)===c?a.call(r,{name:"todaymarkerLeft",hash:{},data:o,loc:{start:{line:50,column:78},end:{line:50,column:97}}}):a)+"%; width: "+u(typeof(a=null!=(a=h(n,"todaymarkerWidth")||(null!=t?h(t,"todaymarkerWidth"):t))?a:s)===c?a.call(r,{name:"todaymarkerWidth",hash:{},data:o,loc:{start:{line:50,column:107},end:{line:50,column:127}}}):a)+"%; border-top: "+u(d(null!=(i=null!=t?h(t,"styles"):t)?h(i,"currentTimeTodayBorderTop"):i,t))+';"></div>\n        <div class="'+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:51,column:20},end:{line:51,column:34}}}):a)+'timegrid-hourmarker-line-right" style="left:'+u(typeof(a=null!=(a=h(n,"todaymarkerRight")||(null!=t?h(t,"todaymarkerRight"):t))?a:s)===c?a.call(r,{name:"todaymarkerRight",hash:{},data:o,loc:{start:{line:51,column:78},end:{line:51,column:98}}}):a)+"%; border-top: "+u(d(null!=(i=null!=t?h(t,"styles"):t)?h(i,"currentTimeRightBorderTop"):i,t))+';"></div>\n    </div>\n'},compiler:[8,">= 4.3.0"],main:function(e,t,n,l,o){var i,a,r=null!=t?t:e.nullContext||{},s=e.hooks.helperMissing,c="function",u=e.escapeExpression,d=e.lambda,h=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return'<div class="'+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:1,column:12},end:{line:1,column:26}}}):a)+'timegrid-left" style="width: '+u(d(null!=(i=null!=t?h(t,"styles"):t)?h(i,"leftWidth"):i,t))+"; font-size: "+u(d(null!=(i=null!=t?h(t,"styles"):t)?h(i,"leftFontSize"):i,t))+';">\n'+(null!=(i=h(n,"each").call(r,null!=t?h(t,"timezones"):t,{name:"each",hash:{},fn:e.program(1,o,0),inverse:e.noop,data:o,loc:{start:{line:2,column:4},end:{line:28,column:15}}}))?i:"")+'</div>\n<div class="'+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:30,column:12},end:{line:30,column:26}}}):a)+'timegrid-right" style="margin-left: '+u(d((i=(i=o&&h(o,"root"))&&h(i,"styles"))&&h(i,"leftWidth"),t))+';">\n    <div class="'+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:31,column:16},end:{line:31,column:30}}}):a)+'timegrid-h-grid">\n'+(null!=(i=h(n,"each").call(r,null!=t?h(t,"hoursLabels"):t,{name:"each",hash:{},fn:e.program(15,o,0),inverse:e.noop,data:o,loc:{start:{line:32,column:8},end:{line:40,column:19}}}))?i:"")+'</div>\n    <div class="'+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:42,column:16},end:{line:42,column:30}}}):a)+'timegrid-schedules">\n        <div class="'+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:43,column:20},end:{line:43,column:34}}}):a)+'timegrid-schedules-container"></div>\n    </div>\n\n'+(null!=(i=h(n,"if").call(r,null!=t?h(t,"showHourMarker"):t,{name:"if",hash:{},fn:e.program(18,o,0),inverse:e.noop,data:o,loc:{start:{line:46,column:4},end:{line:53,column:11}}}))?i:"")+"</div>\n"},useData:!0})},function(e,t,n){var l=n(7);e.exports=(l.default||l).template({1:function(e,t,n,l,o){var i,a,r=null!=t?t:e.nullContext||{},s=e.hooks.helperMissing,c="function",u=e.escapeExpression,d=e.lambda,h=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return'<div class="'+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:2,column:12},end:{line:2,column:26}}}):a)+'timegrid-timezone-label-container" style="'+(null!=(i=h(n,"if").call(r,null!=t?h(t,"hidden"):t,{name:"if",hash:{},fn:e.program(2,o,0),inverse:e.noop,data:o,loc:{start:{line:2,column:68},end:{line:2,column:102}}}))?i:"")+"background-color: "+u(typeof(a=null!=(a=h(n,"backgroundColor")||(null!=t?h(t,"backgroundColor"):t))?a:s)===c?a.call(r,{name:"backgroundColor",hash:{},data:o,loc:{start:{line:2,column:120},end:{line:2,column:139}}}):a)+"; height: 100%; width: "+u(typeof(a=null!=(a=h(n,"width")||(null!=t?h(t,"width"):t))?a:s)===c?a.call(r,{name:"width",hash:{},data:o,loc:{start:{line:2,column:162},end:{line:2,column:171}}}):a)+"%; left: "+u(typeof(a=null!=(a=h(n,"left")||(null!=t?h(t,"left"):t))?a:s)===c?a.call(r,{name:"left",hash:{},data:o,loc:{start:{line:2,column:180},end:{line:2,column:188}}}):a)+"%; font-size: "+u(d((i=(i=o&&h(o,"root"))&&h(i,"styles"))&&h(i,"leftFontSize"),t))+"; border-right: "+u(d((i=(i=o&&h(o,"root"))&&h(i,"styles"))&&h(i,"leftBorderRight"),t))+';">\n    <div title="'+u(typeof(a=null!=(a=h(n,"tooltip")||(null!=t?h(t,"tooltip"):t))?a:s)===c?a.call(r,{name:"tooltip",hash:{},data:o,loc:{start:{line:3,column:16},end:{line:3,column:27}}}):a)+'" class="'+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:3,column:36},end:{line:3,column:50}}}):a)+'timegrid-timezone-label-cell" data-timezone="'+u(typeof(a=null!=(a=h(n,"displayLabel")||(null!=t?h(t,"displayLabel"):t))?a:s)===c?a.call(r,{name:"displayLabel",hash:{},data:o,loc:{start:{line:3,column:95},end:{line:3,column:111}}}):a)+'" style="height: 100%; width: 100%;">\n'+(null!=(i=h(n,"if").call(r,(h(n,"and")||t&&h(t,"and")||s).call(r,null!=t?h(t,"isPrimary"):t,(i=o&&h(o,"root"))&&h(i,"showTimezoneCollapseButton"),{name:"and",hash:{},data:o,loc:{start:{line:4,column:14},end:{line:4,column:62}}}),{name:"if",hash:{},fn:e.program(4,o,0),inverse:e.noop,data:o,loc:{start:{line:4,column:8},end:{line:10,column:15}}}))?i:"")+'        <div class="'+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:11,column:20},end:{line:11,column:34}}}):a)+'timegrid-timezone-label">'+(null!=(i=(h(n,"timezoneDisplayLabel-tmpl")||t&&h(t,"timezoneDisplayLabel-tmpl")||s).call(r,null!=t?h(t,"timezoneOffset"):t,null!=t?h(t,"displayLabel"):t,{name:"timezoneDisplayLabel-tmpl",hash:{},data:o,loc:{start:{line:11,column:59},end:{line:11,column:118}}}))?i:"")+"</div>\n    </div>\n</div>\n"},2:function(e,t,n,l,o){return"display:none;"},4:function(e,t,n,l,o){var i,a,r=null!=t?t:e.nullContext||{},s=e.hooks.helperMissing,c="function",u=e.escapeExpression,d=e.lambda,h=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return'            <div class="'+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:5,column:24},end:{line:5,column:38}}}):a)+'timegrid-timezone-close-btn" style="border: 1px solid #ddd; top:2px; bottom: 2px; width: 10px; border-left: none;">\n                <span style="color: #777; height: calc('+u(d((i=(i=o&&h(o,"root"))&&h(i,"styles"))&&h(i,"displayTimezoneLabelHeight"),t))+" - 6px); line-height: calc("+u(d((i=(i=o&&h(o,"root"))&&h(i,"styles"))&&h(i,"displayTimezoneLabelHeight"),t))+' - 6px);">\n                    <span class="'+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:7,column:33},end:{line:7,column:47}}}):a)+"icon "+(null!=(i=h(n,"if").call(r,(i=o&&h(o,"root"))&&h(i,"timezonesCollapsed"),{name:"if",hash:{},fn:e.program(5,o,0),inverse:e.program(7,o,0),data:o,loc:{start:{line:7,column:52},end:{line:7,column:154}}}))?i:"")+'"></span>\n                </span>\n            </div>\n'},5:function(e,t,n,l,o){var i,a=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return e.escapeExpression("function"==typeof(i=null!=(i=a(n,"CSS_PREFIX")||(null!=t?a(t,"CSS_PREFIX"):t))?i:e.hooks.helperMissing)?i.call(null!=t?t:e.nullContext||{},{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:7,column:84},end:{line:7,column:98}}}):i)+"ic-arrow-right"},7:function(e,t,n,l,o){var i,a=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return e.escapeExpression("function"==typeof(i=null!=(i=a(n,"CSS_PREFIX")||(null!=t?a(t,"CSS_PREFIX"):t))?i:e.hooks.helperMissing)?i.call(null!=t?t:e.nullContext||{},{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:7,column:120},end:{line:7,column:134}}}):i)+"ic-arrow-left"},compiler:[8,">= 4.3.0"],main:function(e,t,n,l,o){var i,a=null!=t?t:e.nullContext||{},r=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return null!=(i=r(n,"each").call(a,(r(n,"reverse")||t&&r(t,"reverse")||e.hooks.helperMissing).call(a,null!=t?r(t,"timezones"):t,{name:"reverse",hash:{},data:o,loc:{start:{line:1,column:8},end:{line:1,column:27}}}),{name:"each",hash:{},fn:e.program(1,o,0),inverse:e.noop,data:o,loc:{start:{line:1,column:0},end:{line:14,column:11}}}))?i:""},useData:!0})},function(e,t,n){var l=n(7);e.exports=(l.default||l).template({compiler:[8,">= 4.3.0"],main:function(e,t,n,l,o){var i,a=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return(null!=(i=(a(n,"timegridCurrentTime-tmpl")||t&&a(t,"timegridCurrentTime-tmpl")||e.hooks.helperMissing).call(null!=t?t:e.nullContext||{},t,{name:"timegridCurrentTime-tmpl",hash:{},data:o,loc:{start:{line:1,column:0},end:{line:1,column:35}}}))?i:"")+"\n"},useData:!0})},function(e,n){e.exports=t},function(e,t,n){var l=n(7);e.exports=(l.default||l).template({1:function(e,t,n,l,o){var i,a=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return" "+e.escapeExpression("function"==typeof(i=null!=(i=a(n,"CSS_PREFIX")||(null!=t?a(t,"CSS_PREFIX"):t))?i:e.hooks.helperMissing)?i.call(null!=t?t:e.nullContext||{},{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:3,column:150},end:{line:3,column:164}}}):i)+"hide"},3:function(e,t,n,l,o){var i,a=null!=t?t:e.nullContext||{},r=e.hooks.helperMissing,s="function",c=e.escapeExpression,u=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return'                    <li class="'+c(typeof(i=null!=(i=u(n,"CSS_PREFIX")||(null!=t?u(t,"CSS_PREFIX"):t))?i:r)===s?i.call(a,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:11,column:31},end:{line:11,column:45}}}):i)+"popup-section-item "+c(typeof(i=null!=(i=u(n,"CSS_PREFIX")||(null!=t?u(t,"CSS_PREFIX"):t))?i:r)===s?i.call(a,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:11,column:64},end:{line:11,column:78}}}):i)+'dropdown-menu-item" data-calendar-id="'+c(typeof(i=null!=(i=u(n,"id")||(null!=t?u(t,"id"):t))?i:r)===s?i.call(a,{name:"id",hash:{},data:o,loc:{start:{line:11,column:116},end:{line:11,column:122}}}):i)+'">\n                        <span class="'+c(typeof(i=null!=(i=u(n,"CSS_PREFIX")||(null!=t?u(t,"CSS_PREFIX"):t))?i:r)===s?i.call(a,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:12,column:37},end:{line:12,column:51}}}):i)+"icon "+c(typeof(i=null!=(i=u(n,"CSS_PREFIX")||(null!=t?u(t,"CSS_PREFIX"):t))?i:r)===s?i.call(a,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:12,column:56},end:{line:12,column:70}}}):i)+'calendar-dot" style="background-color: '+c(typeof(i=null!=(i=u(n,"bgColor")||(null!=t?u(t,"bgColor"):t))?i:r)===s?i.call(a,{name:"bgColor",hash:{},data:o,loc:{start:{line:12,column:109},end:{line:12,column:120}}}):i)+'"></span>\n                        <span class="'+c(typeof(i=null!=(i=u(n,"CSS_PREFIX")||(null!=t?u(t,"CSS_PREFIX"):t))?i:r)===s?i.call(a,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:13,column:37},end:{line:13,column:51}}}):i)+'content">'+c(typeof(i=null!=(i=u(n,"name")||(null!=t?u(t,"name"):t))?i:r)===s?i.call(a,{name:"name",hash:{},data:o,loc:{start:{line:13,column:60},end:{line:13,column:68}}}):i)+"</span>\n                    </li>\n"},5:function(e,t,n,l,o){var i,a=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return" "+e.escapeExpression("function"==typeof(i=null!=(i=a(n,"CSS_PREFIX")||(null!=t?a(t,"CSS_PREFIX"):t))?i:e.hooks.helperMissing)?i.call(null!=t?t:e.nullContext||{},{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:23,column:135},end:{line:23,column:149}}}):i)+"public"},7:function(e,t,n,l,o){return" checked"},9:function(e,t,n,l,o){var i,a=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return e.escapeExpression("function"==typeof(i=null!=(i=a(n,"state")||(null!=t?a(t,"state"):t))?i:e.hooks.helperMissing)?i.call(null!=t?t:e.nullContext||{},{name:"state",hash:{},data:o,loc:{start:{line:54,column:99},end:{line:54,column:108}}}):i)},11:function(e,t,n,l,o){var i,a,r=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return null!=(i="function"==typeof(a=null!=(a=r(n,"popupStateBusy-tmpl")||(null!=t?r(t,"popupStateBusy-tmpl"):t))?a:e.hooks.helperMissing)?a.call(null!=t?t:e.nullContext||{},{name:"popupStateBusy-tmpl",hash:{},data:o,loc:{start:{line:54,column:116},end:{line:54,column:141}}}):a)?i:""},13:function(e,t,n,l,o){var i,a,r=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return null!=(i="function"==typeof(a=null!=(a=r(n,"popupUpdate-tmpl")||(null!=t?r(t,"popupUpdate-tmpl"):t))?a:e.hooks.helperMissing)?a.call(null!=t?t:e.nullContext||{},{name:"popupUpdate-tmpl",hash:{},data:o,loc:{start:{line:69,column:163},end:{line:69,column:185}}}):a)?i:""},15:function(e,t,n,l,o){var i,a,r=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return null!=(i="function"==typeof(a=null!=(a=r(n,"popupSave-tmpl")||(null!=t?r(t,"popupSave-tmpl"):t))?a:e.hooks.helperMissing)?a.call(null!=t?t:e.nullContext||{},{name:"popupSave-tmpl",hash:{},data:o,loc:{start:{line:69,column:193},end:{line:69,column:213}}}):a)?i:""},compiler:[8,">= 4.3.0"],main:function(e,t,n,l,o){var i,a,r=null!=t?t:e.nullContext||{},s=e.hooks.helperMissing,c="function",u=e.escapeExpression,d=e.lambda,h=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return'<div class="'+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:1,column:12},end:{line:1,column:26}}}):a)+'popup">\n    <div class="'+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:2,column:16},end:{line:2,column:30}}}):a)+'popup-container">\n        <div class="'+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:3,column:20},end:{line:3,column:34}}}):a)+"popup-section "+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:3,column:48},end:{line:3,column:62}}}):a)+"dropdown "+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:3,column:71},end:{line:3,column:85}}}):a)+"close "+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:3,column:91},end:{line:3,column:105}}}):a)+"section-calendar"+(null!=(i=h(n,"unless").call(r,null!=(i=null!=t?h(t,"calendars"):t)?h(i,"length"):i,{name:"unless",hash:{},fn:e.program(1,o,0),inverse:e.noop,data:o,loc:{start:{line:3,column:121},end:{line:3,column:179}}}))?i:"")+'">\n            <button class="'+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:4,column:27},end:{line:4,column:41}}}):a)+"button "+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:4,column:48},end:{line:4,column:62}}}):a)+"dropdown-button "+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:4,column:78},end:{line:4,column:92}}}):a)+'popup-section-item">\n                <span class="'+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:5,column:29},end:{line:5,column:43}}}):a)+"icon "+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:5,column:48},end:{line:5,column:62}}}):a)+'calendar-dot" style="background-color: '+u(d(null!=(i=null!=t?h(t,"selectedCal"):t)?h(i,"bgColor"):i,t))+'"></span>\n                <span id="'+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:6,column:26},end:{line:6,column:40}}}):a)+'schedule-calendar" class="'+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:6,column:66},end:{line:6,column:80}}}):a)+'content">'+u(d(null!=(i=null!=t?h(t,"selectedCal"):t)?h(i,"name"):i,t))+'</span>\n                <span class="'+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:7,column:29},end:{line:7,column:43}}}):a)+"icon "+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:7,column:48},end:{line:7,column:62}}}):a)+'dropdown-arrow"></span>\n            </button>\n            <ul class="'+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:9,column:23},end:{line:9,column:37}}}):a)+'dropdown-menu" style="z-index: '+u(typeof(a=null!=(a=h(n,"zIndex")||(null!=t?h(t,"zIndex"):t))?a:s)===c?a.call(r,{name:"zIndex",hash:{},data:o,loc:{start:{line:9,column:68},end:{line:9,column:78}}}):a)+'">\n'+(null!=(i=h(n,"each").call(r,null!=t?h(t,"calendars"):t,{name:"each",hash:{},fn:e.program(3,o,0),inverse:e.noop,data:o,loc:{start:{line:10,column:16},end:{line:15,column:25}}}))?i:"")+'            </ul>\n        </div>\n        <div class="'+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:18,column:20},end:{line:18,column:34}}}):a)+'popup-section">\n            <div class="'+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:19,column:24},end:{line:19,column:38}}}):a)+"popup-section-item "+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:19,column:57},end:{line:19,column:71}}}):a)+'section-title">\n            <span class="'+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:20,column:25},end:{line:20,column:39}}}):a)+"icon "+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:20,column:44},end:{line:20,column:58}}}):a)+'ic-title"></span>\n                <input id="'+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:21,column:27},end:{line:21,column:41}}}):a)+'schedule-title" class="'+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:21,column:64},end:{line:21,column:78}}}):a)+'content" placeholder="'+u(typeof(a=null!=(a=h(n,"titlePlaceholder-tmpl")||(null!=t?h(t,"titlePlaceholder-tmpl"):t))?a:s)===c?a.call(r,{name:"titlePlaceholder-tmpl",hash:{},data:o,loc:{start:{line:21,column:100},end:{line:21,column:125}}}):a)+'" value="'+u(typeof(a=null!=(a=h(n,"title")||(null!=t?h(t,"title"):t))?a:s)===c?a.call(r,{name:"title",hash:{},data:o,loc:{start:{line:21,column:134},end:{line:21,column:143}}}):a)+'">\n            </div>\n            <button id="'+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:23,column:24},end:{line:23,column:38}}}):a)+'schedule-private" class="'+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:23,column:63},end:{line:23,column:77}}}):a)+"button "+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:23,column:84},end:{line:23,column:98}}}):a)+"section-private"+(null!=(i=h(n,"unless").call(r,null!=t?h(t,"isPrivate"):t,{name:"unless",hash:{},fn:e.program(5,o,0),inverse:e.noop,data:o,loc:{start:{line:23,column:113},end:{line:23,column:166}}}))?i:"")+'">\n            <span class="'+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:24,column:25},end:{line:24,column:39}}}):a)+"icon "+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:24,column:44},end:{line:24,column:58}}}):a)+'ic-private"></span>\n            </button>\n        </div>\n        <div class="'+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:27,column:20},end:{line:27,column:34}}}):a)+'popup-section">\n            <div class="'+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:28,column:24},end:{line:28,column:38}}}):a)+"popup-section-item "+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:28,column:57},end:{line:28,column:71}}}):a)+'section-location">\n            <span class="'+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:29,column:25},end:{line:29,column:39}}}):a)+"icon "+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:29,column:44},end:{line:29,column:58}}}):a)+'ic-location"></span>\n                <input id="'+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:30,column:27},end:{line:30,column:41}}}):a)+'schedule-location" class="'+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:30,column:67},end:{line:30,column:81}}}):a)+'content" placeholder="'+u(typeof(a=null!=(a=h(n,"locationPlaceholder-tmpl")||(null!=t?h(t,"locationPlaceholder-tmpl"):t))?a:s)===c?a.call(r,{name:"locationPlaceholder-tmpl",hash:{},data:o,loc:{start:{line:30,column:103},end:{line:30,column:131}}}):a)+'" value="'+u(typeof(a=null!=(a=h(n,"location")||(null!=t?h(t,"location"):t))?a:s)===c?a.call(r,{name:"location",hash:{},data:o,loc:{start:{line:30,column:140},end:{line:30,column:152}}}):a)+'">\n            </div>\n        </div>\n        <div class="'+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:33,column:20},end:{line:33,column:34}}}):a)+'popup-section">\n            <div class="'+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:34,column:24},end:{line:34,column:38}}}):a)+"popup-section-item "+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:34,column:57},end:{line:34,column:71}}}):a)+'section-start-date">\n                <span class="'+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:35,column:29},end:{line:35,column:43}}}):a)+"icon "+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:35,column:48},end:{line:35,column:62}}}):a)+'ic-date"></span>\n                <input id="'+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:36,column:27},end:{line:36,column:41}}}):a)+'schedule-start-date" class="'+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:36,column:69},end:{line:36,column:83}}}):a)+'content" placeholder="'+u(typeof(a=null!=(a=h(n,"startDatePlaceholder-tmpl")||(null!=t?h(t,"startDatePlaceholder-tmpl"):t))?a:s)===c?a.call(r,{name:"startDatePlaceholder-tmpl",hash:{},data:o,loc:{start:{line:36,column:105},end:{line:36,column:134}}}):a)+'">\n                <div id="'+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:37,column:25},end:{line:37,column:39}}}):a)+'startpicker-container" style="margin-left: -1px; position: relative"></div>\n            </div>\n            <span class="'+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:39,column:25},end:{line:39,column:39}}}):a)+'section-date-dash">-</span>\n            <div class="'+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:40,column:24},end:{line:40,column:38}}}):a)+"popup-section-item "+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:40,column:57},end:{line:40,column:71}}}):a)+'section-end-date">\n                <span class="'+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:41,column:29},end:{line:41,column:43}}}):a)+"icon "+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:41,column:48},end:{line:41,column:62}}}):a)+'ic-date"></span>\n                <input id="'+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:42,column:27},end:{line:42,column:41}}}):a)+'schedule-end-date" class="'+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:42,column:67},end:{line:42,column:81}}}):a)+'content" placeholder="'+u(typeof(a=null!=(a=h(n,"endDatePlaceholder-tmpl")||(null!=t?h(t,"endDatePlaceholder-tmpl"):t))?a:s)===c?a.call(r,{name:"endDatePlaceholder-tmpl",hash:{},data:o,loc:{start:{line:42,column:103},end:{line:42,column:130}}}):a)+'">\n                <div id="'+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:43,column:25},end:{line:43,column:39}}}):a)+'endpicker-container" style="margin-left: -1px; position: relative"></div>\n            </div>\n            <div class="'+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:45,column:24},end:{line:45,column:38}}}):a)+"popup-section-item "+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:45,column:57},end:{line:45,column:71}}}):a)+'section-allday">\n                <input id="'+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:46,column:27},end:{line:46,column:41}}}):a)+'schedule-allday" type="checkbox" class="'+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:46,column:81},end:{line:46,column:95}}}):a)+'checkbox-square"'+(null!=(i=h(n,"if").call(r,null!=t?h(t,"isAllDay"):t,{name:"if",hash:{},fn:e.program(7,o,0),inverse:e.noop,data:o,loc:{start:{line:46,column:111},end:{line:46,column:142}}}))?i:"")+'>\n                <span class="'+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:47,column:29},end:{line:47,column:43}}}):a)+"icon "+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:47,column:48},end:{line:47,column:62}}}):a)+'ic-checkbox"></span>\n                <span class="'+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:48,column:29},end:{line:48,column:43}}}):a)+'content">'+(null!=(i=typeof(a=null!=(a=h(n,"popupIsAllDay-tmpl")||(null!=t?h(t,"popupIsAllDay-tmpl"):t))?a:s)===c?a.call(r,{name:"popupIsAllDay-tmpl",hash:{},data:o,loc:{start:{line:48,column:52},end:{line:48,column:76}}}):a)?i:"")+'</span>\n            </div>\n        </div>\n        <div class="'+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:51,column:20},end:{line:51,column:34}}}):a)+"popup-section "+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:51,column:48},end:{line:51,column:62}}}):a)+"dropdown "+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:51,column:71},end:{line:51,column:85}}}):a)+"close "+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:51,column:91},end:{line:51,column:105}}}):a)+'section-state">\n            <button class="'+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:52,column:27},end:{line:52,column:41}}}):a)+"button "+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:52,column:48},end:{line:52,column:62}}}):a)+"dropdown-button "+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:52,column:78},end:{line:52,column:92}}}):a)+'popup-section-item">\n                <span class="'+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:53,column:29},end:{line:53,column:43}}}):a)+"icon "+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:53,column:48},end:{line:53,column:62}}}):a)+'ic-state"></span>\n                <span id="'+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:54,column:26},end:{line:54,column:40}}}):a)+'schedule-state" class="'+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:54,column:63},end:{line:54,column:77}}}):a)+'content">'+(null!=(i=h(n,"if").call(r,null!=t?h(t,"state"):t,{name:"if",hash:{},fn:e.program(9,o,0),inverse:e.program(11,o,0),data:o,loc:{start:{line:54,column:86},end:{line:54,column:148}}}))?i:"")+'</span>\n                <span class="'+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:55,column:29},end:{line:55,column:43}}}):a)+"icon "+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:55,column:48},end:{line:55,column:62}}}):a)+'dropdown-arrow"></span>\n            </button>\n            <ul class="'+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:57,column:23},end:{line:57,column:37}}}):a)+'dropdown-menu" style="z-index: '+u(typeof(a=null!=(a=h(n,"zIndex")||(null!=t?h(t,"zIndex"):t))?a:s)===c?a.call(r,{name:"zIndex",hash:{},data:o,loc:{start:{line:57,column:68},end:{line:57,column:78}}}):a)+'">\n                <li class="'+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:58,column:27},end:{line:58,column:41}}}):a)+"popup-section-item "+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:58,column:60},end:{line:58,column:74}}}):a)+'dropdown-menu-item">\n                <span class="'+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:59,column:29},end:{line:59,column:43}}}):a)+"icon "+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:59,column:48},end:{line:59,column:62}}}):a)+'none"></span>\n                <span class="'+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:60,column:29},end:{line:60,column:43}}}):a)+'content">'+(null!=(i=typeof(a=null!=(a=h(n,"popupStateBusy-tmpl")||(null!=t?h(t,"popupStateBusy-tmpl"):t))?a:s)===c?a.call(r,{name:"popupStateBusy-tmpl",hash:{},data:o,loc:{start:{line:60,column:52},end:{line:60,column:77}}}):a)?i:"")+'</span>\n                </li>\n                <li class="'+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:62,column:27},end:{line:62,column:41}}}):a)+"popup-section-item "+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:62,column:60},end:{line:62,column:74}}}):a)+'dropdown-menu-item">\n                <span class="'+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:63,column:29},end:{line:63,column:43}}}):a)+"icon "+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:63,column:48},end:{line:63,column:62}}}):a)+'none"></span>\n                <span class="'+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:64,column:29},end:{line:64,column:43}}}):a)+'content">'+(null!=(i=typeof(a=null!=(a=h(n,"popupStateFree-tmpl")||(null!=t?h(t,"popupStateFree-tmpl"):t))?a:s)===c?a.call(r,{name:"popupStateFree-tmpl",hash:{},data:o,loc:{start:{line:64,column:52},end:{line:64,column:77}}}):a)?i:"")+'</span>\n                </li>\n            </ul>\n        </div>\n        <button class="'+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:68,column:23},end:{line:68,column:37}}}):a)+"button "+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:68,column:44},end:{line:68,column:58}}}):a)+'popup-close"><span class="'+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:68,column:84},end:{line:68,column:98}}}):a)+"icon "+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:68,column:103},end:{line:68,column:117}}}):a)+'ic-close"></span></button>\n        <div class="'+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:69,column:20},end:{line:69,column:34}}}):a)+'section-button-save"><button class="'+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:69,column:70},end:{line:69,column:84}}}):a)+"button "+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:69,column:91},end:{line:69,column:105}}}):a)+"confirm "+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:69,column:113},end:{line:69,column:127}}}):a)+'popup-save"><span>'+(null!=(i=h(n,"if").call(r,null!=t?h(t,"isEditMode"):t,{name:"if",hash:{},fn:e.program(13,o,0),inverse:e.program(15,o,0),data:o,loc:{start:{line:69,column:145},end:{line:69,column:220}}}))?i:"")+'</span></button></div>\n    </div>\n    <div id="'+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:71,column:13},end:{line:71,column:27}}}):a)+'popup-arrow" class="'+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:71,column:47},end:{line:71,column:61}}}):a)+"popup-arrow "+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:71,column:73},end:{line:71,column:87}}}):a)+'arrow-bottom">\n        <div class="'+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:72,column:20},end:{line:72,column:34}}}):a)+'popup-arrow-border">\n            <div class="'+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:73,column:24},end:{line:73,column:38}}}):a)+'popup-arrow-fill"></div>\n        </div>\n    </div>\n</div>\n'},useData:!0})},function(e,t,n){var l=n(7);e.exports=(l.default||l).template({1:function(e,t,n,l,o){var i,a,r=null!=t?t:e.nullContext||{},s=e.hooks.helperMissing,c="function",u=e.escapeExpression,d=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return'<div class="'+u(typeof(a=null!=(a=d(n,"CSS_PREFIX")||(null!=t?d(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:11,column:45},end:{line:11,column:59}}}):a)+'popup-detail-item"><span class="'+u(typeof(a=null!=(a=d(n,"CSS_PREFIX")||(null!=t?d(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:11,column:91},end:{line:11,column:105}}}):a)+"icon "+u(typeof(a=null!=(a=d(n,"CSS_PREFIX")||(null!=t?d(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:11,column:110},end:{line:11,column:124}}}):a)+'ic-location-b"></span><span class="'+u(typeof(a=null!=(a=d(n,"CSS_PREFIX")||(null!=t?d(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:11,column:159},end:{line:11,column:173}}}):a)+'content">'+(null!=(i=(d(n,"popupDetailLocation-tmpl")||t&&d(t,"popupDetailLocation-tmpl")||s).call(r,null!=t?d(t,"schedule"):t,{name:"popupDetailLocation-tmpl",hash:{},data:o,loc:{start:{line:11,column:182},end:{line:11,column:221}}}))?i:"")+"</span></div>"},3:function(e,t,n,l,o){var i,a,r=null!=t?t:e.nullContext||{},s=e.hooks.helperMissing,c="function",u=e.escapeExpression,d=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return'<div class="'+u(typeof(a=null!=(a=d(n,"CSS_PREFIX")||(null!=t?d(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:12,column:51},end:{line:12,column:65}}}):a)+'popup-detail-item"><span class="'+u(typeof(a=null!=(a=d(n,"CSS_PREFIX")||(null!=t?d(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:12,column:97},end:{line:12,column:111}}}):a)+"icon "+u(typeof(a=null!=(a=d(n,"CSS_PREFIX")||(null!=t?d(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:12,column:116},end:{line:12,column:130}}}):a)+'ic-repeat-b"></span><span class="'+u(typeof(a=null!=(a=d(n,"CSS_PREFIX")||(null!=t?d(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:12,column:163},end:{line:12,column:177}}}):a)+'content">'+(null!=(i=(d(n,"popupDetailRepeat-tmpl")||t&&d(t,"popupDetailRepeat-tmpl")||s).call(r,null!=t?d(t,"schedule"):t,{name:"popupDetailRepeat-tmpl",hash:{},data:o,loc:{start:{line:12,column:186},end:{line:12,column:223}}}))?i:"")+"</span></div>"},5:function(e,t,n,l,o){var i,a,r=null!=t?t:e.nullContext||{},s=e.hooks.helperMissing,c="function",u=e.escapeExpression,d=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return'<div class="'+u(typeof(a=null!=(a=d(n,"CSS_PREFIX")||(null!=t?d(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:13,column:46},end:{line:13,column:60}}}):a)+"popup-detail-item "+u(typeof(a=null!=(a=d(n,"CSS_PREFIX")||(null!=t?d(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:13,column:78},end:{line:13,column:92}}}):a)+'popup-detail-item-indent"><span class="'+u(typeof(a=null!=(a=d(n,"CSS_PREFIX")||(null!=t?d(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:13,column:131},end:{line:13,column:145}}}):a)+"icon "+u(typeof(a=null!=(a=d(n,"CSS_PREFIX")||(null!=t?d(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:13,column:150},end:{line:13,column:164}}}):a)+'ic-user-b"></span><span class="'+u(typeof(a=null!=(a=d(n,"CSS_PREFIX")||(null!=t?d(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:13,column:195},end:{line:13,column:209}}}):a)+'content">'+(null!=(i=(d(n,"popupDetailUser-tmpl")||t&&d(t,"popupDetailUser-tmpl")||s).call(r,null!=t?d(t,"schedule"):t,{name:"popupDetailUser-tmpl",hash:{},data:o,loc:{start:{line:13,column:218},end:{line:13,column:253}}}))?i:"")+"</span></div>"},7:function(e,t,n,l,o){var i,a,r=null!=t?t:e.nullContext||{},s=e.hooks.helperMissing,c="function",u=e.escapeExpression,d=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return'<div class="'+u(typeof(a=null!=(a=d(n,"CSS_PREFIX")||(null!=t?d(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:14,column:42},end:{line:14,column:56}}}):a)+'popup-detail-item"><span class="'+u(typeof(a=null!=(a=d(n,"CSS_PREFIX")||(null!=t?d(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:14,column:88},end:{line:14,column:102}}}):a)+"icon "+u(typeof(a=null!=(a=d(n,"CSS_PREFIX")||(null!=t?d(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:14,column:107},end:{line:14,column:121}}}):a)+'ic-state-b"></span><span class="'+u(typeof(a=null!=(a=d(n,"CSS_PREFIX")||(null!=t?d(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:14,column:153},end:{line:14,column:167}}}):a)+'content">'+(null!=(i=(d(n,"popupDetailState-tmpl")||t&&d(t,"popupDetailState-tmpl")||s).call(r,null!=t?d(t,"schedule"):t,{name:"popupDetailState-tmpl",hash:{},data:o,loc:{start:{line:14,column:176},end:{line:14,column:212}}}))?i:"")+"</span></div>"},9:function(e,t,n,l,o){var i,a,r=null!=t?t:e.nullContext||{},s=e.hooks.helperMissing,c="function",u=e.escapeExpression,d=e.lambda,h=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return'        <div class="'+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:16,column:20},end:{line:16,column:34}}}):a)+'popup-detail-item"><span class="'+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:16,column:66},end:{line:16,column:80}}}):a)+"icon "+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:16,column:85},end:{line:16,column:99}}}):a)+'calendar-dot" style="background-color: '+u(d(null!=(i=null!=t?h(t,"schedule"):t)?h(i,"bgColor"):i,t))+'"></span><span class="'+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:16,column:180},end:{line:16,column:194}}}):a)+'content">'+u(d(null!=(i=null!=t?h(t,"calendar"):t)?h(i,"name"):i,t))+"</span></div>\n"},11:function(e,t,n,l,o){var i,a,r=null!=t?t:e.nullContext||{},s=e.hooks.helperMissing,c="function",u=e.escapeExpression,d=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return'<div class="'+u(typeof(a=null!=(a=d(n,"CSS_PREFIX")||(null!=t?d(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:18,column:41},end:{line:18,column:55}}}):a)+"popup-detail-item "+u(typeof(a=null!=(a=d(n,"CSS_PREFIX")||(null!=t?d(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:18,column:73},end:{line:18,column:87}}}):a)+'popup-detail-item-separate"><span class="'+u(typeof(a=null!=(a=d(n,"CSS_PREFIX")||(null!=t?d(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:18,column:128},end:{line:18,column:142}}}):a)+'content">'+(null!=(i=(d(n,"popupDetailBody-tmpl")||t&&d(t,"popupDetailBody-tmpl")||s).call(r,null!=t?d(t,"schedule"):t,{name:"popupDetailBody-tmpl",hash:{},data:o,loc:{start:{line:18,column:151},end:{line:18,column:186}}}))?i:"")+"</span></div>"},13:function(e,t,n,l,o){return""},15:function(e,t,n,l,o){var i,a,r=null!=t?t:e.nullContext||{},s=e.hooks.helperMissing,c="function",u=e.escapeExpression,d=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return'    <div class="'+u(typeof(a=null!=(a=d(n,"CSS_PREFIX")||(null!=t?d(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:22,column:16},end:{line:22,column:30}}}):a)+'section-button">\n      <button class="'+u(typeof(a=null!=(a=d(n,"CSS_PREFIX")||(null!=t?d(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:23,column:21},end:{line:23,column:35}}}):a)+'popup-edit"><span class="'+u(typeof(a=null!=(a=d(n,"CSS_PREFIX")||(null!=t?d(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:23,column:60},end:{line:23,column:74}}}):a)+"icon "+u(typeof(a=null!=(a=d(n,"CSS_PREFIX")||(null!=t?d(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:23,column:79},end:{line:23,column:93}}}):a)+'ic-edit"></span><span class="'+u(typeof(a=null!=(a=d(n,"CSS_PREFIX")||(null!=t?d(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:23,column:122},end:{line:23,column:136}}}):a)+'content">'+(null!=(i=typeof(a=null!=(a=d(n,"popupEdit-tmpl")||(null!=t?d(t,"popupEdit-tmpl"):t))?a:s)===c?a.call(r,{name:"popupEdit-tmpl",hash:{},data:o,loc:{start:{line:23,column:145},end:{line:23,column:165}}}):a)?i:"")+'</span></button>\n      <div class="'+u(typeof(a=null!=(a=d(n,"CSS_PREFIX")||(null!=t?d(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:24,column:18},end:{line:24,column:32}}}):a)+'popup-vertical-line"></div>\n      <button class="'+u(typeof(a=null!=(a=d(n,"CSS_PREFIX")||(null!=t?d(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:25,column:21},end:{line:25,column:35}}}):a)+'popup-delete"><span class="'+u(typeof(a=null!=(a=d(n,"CSS_PREFIX")||(null!=t?d(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:25,column:62},end:{line:25,column:76}}}):a)+"icon "+u(typeof(a=null!=(a=d(n,"CSS_PREFIX")||(null!=t?d(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:25,column:81},end:{line:25,column:95}}}):a)+'ic-delete"></span><span class="'+u(typeof(a=null!=(a=d(n,"CSS_PREFIX")||(null!=t?d(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:25,column:126},end:{line:25,column:140}}}):a)+'content">'+(null!=(i=typeof(a=null!=(a=d(n,"popupDelete-tmpl")||(null!=t?d(t,"popupDelete-tmpl"):t))?a:s)===c?a.call(r,{name:"popupDelete-tmpl",hash:{},data:o,loc:{start:{line:25,column:149},end:{line:25,column:171}}}):a)?i:"")+"</span></button>\n    </div>\n"},compiler:[8,">= 4.3.0"],main:function(e,t,n,l,o){var i,a,r=null!=t?t:e.nullContext||{},s=e.hooks.helperMissing,c="function",u=e.escapeExpression,d=e.lambda,h=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return'<div class="'+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:1,column:12},end:{line:1,column:26}}}):a)+"popup "+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:1,column:32},end:{line:1,column:46}}}):a)+'popup-detail">\n  <div class="'+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:2,column:14},end:{line:2,column:28}}}):a)+'popup-container">\n    <div class="'+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:3,column:16},end:{line:3,column:30}}}):a)+"popup-section "+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:3,column:44},end:{line:3,column:58}}}):a)+'section-header">\n      <div>\n        <span class="'+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:5,column:21},end:{line:5,column:35}}}):a)+"schedule-private "+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:5,column:52},end:{line:5,column:66}}}):a)+"icon "+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:5,column:71},end:{line:5,column:85}}}):a)+'ic-private"></span>\n        <span class="'+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:6,column:21},end:{line:6,column:35}}}):a)+'schedule-title">'+u(d(null!=(i=null!=t?h(t,"schedule"):t)?h(i,"title"):i,t))+'</span>\n      </div>\n      <div class="'+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:8,column:18},end:{line:8,column:32}}}):a)+"popup-detail-date "+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:8,column:50},end:{line:8,column:64}}}):a)+'content">'+(null!=(i=(h(n,"popupDetailDate-tmpl")||t&&h(t,"popupDetailDate-tmpl")||s).call(r,null!=(i=null!=t?h(t,"schedule"):t)?h(i,"isAllDay"):i,null!=(i=null!=t?h(t,"schedule"):t)?h(i,"start"):i,null!=(i=null!=t?h(t,"schedule"):t)?h(i,"end"):i,{name:"popupDetailDate-tmpl",hash:{},data:o,loc:{start:{line:8,column:73},end:{line:8,column:145}}}))?i:"")+'</div>\n    </div>\n    <div class="'+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:10,column:16},end:{line:10,column:30}}}):a)+'section-detail">\n        '+(null!=(i=h(n,"if").call(r,null!=(i=null!=t?h(t,"schedule"):t)?h(i,"location"):i,{name:"if",hash:{},fn:e.program(1,o,0),inverse:e.noop,data:o,loc:{start:{line:11,column:8},end:{line:11,column:241}}}))?i:"")+"\n        "+(null!=(i=h(n,"if").call(r,null!=(i=null!=t?h(t,"schedule"):t)?h(i,"recurrenceRule"):i,{name:"if",hash:{},fn:e.program(3,o,0),inverse:e.noop,data:o,loc:{start:{line:12,column:8},end:{line:12,column:243}}}))?i:"")+"\n        "+(null!=(i=h(n,"if").call(r,null!=(i=null!=t?h(t,"schedule"):t)?h(i,"attendees"):i,{name:"if",hash:{},fn:e.program(5,o,0),inverse:e.noop,data:o,loc:{start:{line:13,column:8},end:{line:13,column:273}}}))?i:"")+"\n        "+(null!=(i=h(n,"if").call(r,null!=(i=null!=t?h(t,"schedule"):t)?h(i,"state"):i,{name:"if",hash:{},fn:e.program(7,o,0),inverse:e.noop,data:o,loc:{start:{line:14,column:8},end:{line:14,column:232}}}))?i:"")+"\n"+(null!=(i=h(n,"if").call(r,null!=t?h(t,"calendar"):t,{name:"if",hash:{},fn:e.program(9,o,0),inverse:e.noop,data:o,loc:{start:{line:15,column:8},end:{line:17,column:15}}}))?i:"")+"        "+(null!=(i=h(n,"if").call(r,null!=(i=null!=t?h(t,"schedule"):t)?h(i,"body"):i,{name:"if",hash:{},fn:e.program(11,o,0),inverse:e.noop,data:o,loc:{start:{line:18,column:8},end:{line:18,column:206}}}))?i:"")+"\n    </div>\n"+(null!=(i=h(n,"if").call(r,null!=(i=null!=t?h(t,"schedule"):t)?h(i,"isReadOnly"):i,{name:"if",hash:{},fn:e.program(13,o,0),inverse:e.program(15,o,0),data:o,loc:{start:{line:20,column:4},end:{line:27,column:11}}}))?i:"")+'  </div>\n  <div class="'+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:29,column:14},end:{line:29,column:28}}}):a)+'popup-top-line" style="background-color: '+u(d(null!=(i=null!=t?h(t,"schedule"):t)?h(i,"bgColor"):i,t))+'"></div>\n  <div id="'+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:30,column:11},end:{line:30,column:25}}}):a)+'popup-arrow" class="'+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:30,column:45},end:{line:30,column:59}}}):a)+"popup-arrow "+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:30,column:71},end:{line:30,column:85}}}):a)+'arrow-left">\n    <div class="'+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:31,column:16},end:{line:31,column:30}}}):a)+'popup-arrow-border">\n        <div class="'+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:32,column:20},end:{line:32,column:34}}}):a)+'popup-arrow-fill"></div>\n    </div>\n  </div>\n</div>\n'},useData:!0})},function(e,t,n){"use strict";var l=n(0),o=n(2),i=n(1);function a(e,t,n){this.dragHandler=e,this.dayNameView=t,this.baseController=n,e.on({click:this._onClick},this)}a.prototype.destroy=function(){this.dragHandler.off(this),this.dayNameView=this.baseController=this.dragHandler=null},a.prototype.checkExpectCondition=function(e){return!!i.closest(e,o.classname(".dayname-date-area"))},a.prototype._onClick=function(e){var t=e.target,n=this.checkExpectCondition(t),l=i.closest(t,o.classname(".dayname"));n&&l&&this.fire("clickDayname",{date:i.getData(l,"date")})},l.CustomEvents.mixin(a),e.exports=a},function(e,t,n){"use strict";var l=n(0),o=n(2),i=n(1),a=n(34);function r(e,t,n){this.dragHandler=e,this.view=t,this.controller=n,e.on({click:this._onClick},this)}r.prototype.destroy=function(){this.dragHandler.off(this),this.view=this.controller=this.dragHandler=null},r.prototype.checkExpectCondition=a.prototype.checkExpectedCondition,r.prototype._onClick=function(e){var t,n=this,l=e.target,a=this.checkExpectCondition(l),r=this.controller.schedules,s=i.closest(l,o.classname(".weekday-collapse-btn")),c=i.closest(l,o.classname(".weekday-exceed-in-week"));if(this.view.container.contains(l)){if(!s)return c?(this.view.setState({clickedExpandBtnIndex:parseInt(i.getData(c,"index"),10)}),void n.fire("expand")):void(a&&i.closest(l,o.classname(".weekday-schedule"))&&(t=i.closest(l,o.classname(".weekday-schedule-block")),r.doWhenHas(i.getData(t,"id"),(function(t){n.fire("clickSchedule",{schedule:t,event:e.originEvent})}))));n.fire("collapse")}},l.CustomEvents.mixin(r),e.exports=r},function(e,t,n){"use strict";(function(t){var l=n(0),o=n(2),i=n(3),a=n(1),r=n(11);function s(e){this.daygridMove=e,this.scheduleContainer=null,this._dragStartXIndex=null,this.guideElement=null,this.elements=null,e.on({dragstart:this._onDragStart,drag:this._onDrag,dragend:this._clearGuideElement,click:this._clearGuideElement},this)}s.prototype.destroy=function(){this._clearGuideElement(),this.daygridMove.off(this),this.daygridMove=this.scheduleContainer=this._dragStartXIndex=this.elements=this.guideElement=null},s.prototype._clearGuideElement=function(){this._showOriginScheduleBlocks(),a.remove(this.guideElement),l.browser.msie||a.removeClass(t.document.body,o.classname("dragging")),this._dragStartXIndex=this.getScheduleDataFunc=this.guideElement=null},s.prototype._hideOriginScheduleBlocks=function(e){var t=o.classname("weekday-schedule-block-dragging-dim"),n=a.find(o.classname(".weekday-schedule-block"),this.daygridMove.view.container,!0);this.elements=l.filter(n,(function(t){return a.getData(t,"id")===e})),l.forEach(this.elements,(function(e){a.addClass(e,t)}))},s.prototype._showOriginScheduleBlocks=function(){var e=o.classname("weekday-schedule-block-dragging-dim");l.forEach(this.elements,(function(t){a.removeClass(t,e)}))},s.prototype._highlightScheduleBlocks=function(e,t){var n=a.find(o.classname(".weekday-schedule"),t,!0);l.forEach(n,(function(t){t.style.margin="0",e.isFocused||(t.style.backgroundColor=e.dragBgColor,t.style.borderLeftColor=e.borderColor,t.style.color="#ffffff")}))},s.prototype.refreshGuideElement=function(e,t,n,l){var i=this.guideElement;r.requestAnimFrame((function(){i.style.left=e+"%",i.style.width=t+"%",n?a.addClass(i,o.classname("weekday-exceed-left")):a.removeClass(i,o.classname("weekday-exceed-left")),l?a.addClass(i,o.classname("weekday-exceed-right")):a.removeClass(i,o.classname("weekday-exceed-right"))}))},s.prototype._getScheduleBlockDataFunc=function(e){var t=e.model,n=e.datesInRange,l=e.range,o=100/n,a=i.start(t.start),r=i.end(t.end),s=i.start(l[0]),c=i.end(l[l.length-1]),u=Math.ceil((a.getTime()-s.getTime())/i.MILLISECONDS_PER_DAY)||0,d=Math.ceil((r.getTime()-c.getTime())/i.MILLISECONDS_PER_DAY)||0;return function(e){return{baseWidthPercent:o,fromLeft:u+e,fromRight:d+e}}},s.prototype._onDragStart=function(e){var n,i=this.daygridMove.view.container,r=this.guideElement=e.scheduleBlockElement.cloneNode(!0);l.browser.msie||a.addClass(t.document.body,o.classname("dragging")),this._hideOriginScheduleBlocks(String(e.model.cid())),n=a.find(o.classname(".weekday-schedules"),i),a.appendHTMLElement("div",r,o.classname("weekday-schedule-cover")),n.appendChild(r),this._dragStartXIndex=e.xIndex,this.getScheduleDataFunc=this._getScheduleBlockDataFunc(e),this._highlightScheduleBlocks(e.model,r)},s.prototype._onDrag=function(e){var t,n,l,o,i,a,r,s,c=this.getScheduleDataFunc,u=this._dragStartXIndex,d=e.datesInRange,h=e.grids;c&&(n=(t=c(e.xIndex-u)).fromLeft<0,l=t.fromRight>0,i=Math.max(0,t.fromLeft),o=-1*t.fromLeft+(d+t.fromRight),a=n?o+t.fromLeft:o,a=l?a-t.fromRight:a,r=h[i]?h[i].left:0,s=function(e,t,n){for(var l=0,o=0,i=n.length;o<t;o+=1)(e=(e+o)%i)<i&&(l+=n[e]?n[e].width:0);return l}(i,a,h),this.refreshGuideElement(r,s,n,l))},e.exports=s}).call(this,n(9))},function(e,t,n){"use strict";var l=n(0),o=n(2),i=n(3),a=n(5),r=n(1),s=n(6),c=n(17),u=n(86),d=n(4).Date,h=300;function p(e,t,n,l){this.dragHandler=e,this.view=t,this.controller=n,this.getScheduleDataFunc=null,this.guide=new u(this),this._requestOnClick=!1,this._disableDblClick=l.disableDblClick,this._disableClick=l.disableClick,e.on("dragStart",this._onDragStart,this),e.on("click",this._onClick,this),this._disableDblClick?h=0:s.on(t.container,"dblclick",this._onDblClick,this)}p.prototype.destroy=function(){this.guide.destroy(),this.dragHandler.off(this),this.view&&this.view.container&&s.off(this.view.container,"dblclick",this._onDblClick,this),this.dragHandler=this.view=this.controller=this.getScheduleDataFunc=null},p.prototype.checkExpectedCondition=function(e){var t,n,i=r.getClass(e).trim();return!r.closest(e,o.classname(".weekday-exceed-in-week"))&&!r.closest(e,o.classname(".weekday-collapse-btn"))&&(!r.closest(e,o.classname(".weekday-schedule-block"),!0)&&(!(!(n=r.closest(e,o.classname(".weekday-schedules")))&&i!==o.classname("weekday-schedules"))&&(e=n?n.parentNode:e.parentNode,!(!(t=(i=r.getClass(e)).match(o.daygrid.getViewIDRegExp))||t.length<2)&&l.pick(this.view.children.items,t[1]))))},p.prototype._createSchedule=function(e){var t,n,l=e.range,o=e.dragStartXIndex,a=e.xIndex;a<o&&(o=a+o,o-=a=o-a),t=new d(l[o]),n=i.end(l[a]),this.fire("beforeCreateSchedule",{category:this.view.options.viewName,isAllDay:!0,start:t,end:n,guide:this.guide,triggerEventName:e.triggerEvent})},p.prototype._onDragStart=function(e){var t,n,l=e.target;this.checkExpectedCondition(l)&&(this.dragHandler.on({drag:this._onDrag,dragEnd:this._onDragEnd},this),t=this._retriveScheduleData(this.view,e.originEvent),this.getScheduleDataFunc=t,n=t(e.originEvent),this.fire("dragstart",n))},p.prototype._onDrag=function(e){var t,n=this.getScheduleDataFunc;n&&(t=n(e.originEvent),this.fire("drag",t))},p.prototype._onDragEnd=function(e,t){var n,l=this.getScheduleDataFunc;l&&(this.dragHandler.off({drag:this._onDrag,dragEnd:this._onDragEnd},this),n=l(e.originEvent),this._createSchedule(n),this.fire(t||"dragend",n),this.getScheduleDataFunc=null)},p.prototype._onClick=function(e){var t,n,l=this;this.checkExpectedCondition(e.target)&&!this._disableClick&&(t=this._retriveScheduleData(this.view,e.originEvent),n=t(e.originEvent),this._requestOnClick=!0,setTimeout((function(){l._requestOnClick&&(l.fire("click",n),l._createSchedule(n)),l._requestOnClick=!1}),h))},p.prototype._onDblClick=function(e){var t;this.checkExpectedCondition(e.target)&&(t=this._retriveScheduleData(this.view,e)(e),this.fire("click",t),this._createSchedule(t),this._requestOnClick=!1)},p.prototype.invokeCreationClick=function(e){var t=this._retriveScheduleDataFromDate(this.view,e.start);this.fire("click",t),this._createSchedule(t)},a.mixin(c,p),l.CustomEvents.mixin(p),e.exports=p},function(e,t,n){"use strict";var l=n(2),o=n(1),i=n(11);function a(e){this.creation=e,this.scheduleContainer=null,this.guideElement=document.createElement("div"),this.initializeGuideElement(),this.applyTheme(e.controller.theme),e.on({dragstart:this._createGuideElement,drag:this._onDrag,click:this._createGuideElement},this)}a.prototype.destroy=function(){this.clearGuideElement(),this.creation.off(this),this.creation=this.scheduleContainer=this.guideElement=null},a.prototype.initializeGuideElement=function(){o.addClass(this.guideElement,l.classname("daygrid-guide-creation-block"))},a.prototype._onDrag=function(e){this._refreshGuideElement(e,!0)},a.prototype._getGuideWidth=function(e,t,n){for(var l=0,o=e;o<=t;o+=1)l+=n[o]?n[o].width:0;return l},a.prototype._refreshGuideElement=function(e,t){var n,l,o=this.guideElement,a=e,r=a.dragStartXIndex<a.xIndex?a.dragStartXIndex:a.xIndex,s=a.dragStartXIndex<a.xIndex?a.xIndex:a.dragStartXIndex;function c(){o.style.display="block",o.style.left=n+"%",o.style.width=l+"%"}n=a.grids[r]?a.grids[r].left:0,l=this._getGuideWidth(r,s,a.grids),t?i.requestAnimFrame(c):c()},a.prototype.clearGuideElement=function(){var e=this.guideElement;o.remove(e),e.style.display="none",e.style.left="",e.style.width=""},a.prototype._createGuideElement=function(e){var t=this.creation.view.container;o.find(l.classname(".weekday-grid"),t).appendChild(this.guideElement),this._refreshGuideElement(e)},a.prototype._onDrag=function(e){this._refreshGuideElement(e)},a.prototype.applyTheme=function(e){var t=this.guideElement.style;t.backgroundColor=e.common.creationGuide.backgroundColor,t.border=e.common.creationGuide.border},e.exports=a},function(e,t,n){"use strict";var l=n(0),o=n(2),i=n(3),a=n(1),r=n(5),s=n(17),c=n(88),u=n(4).Date;function d(e,t,n){this.dragHandler=e,this.view=t,this.controller=n,this._dragStart=null,e.on({dragStart:this._onDragStart},this),this.guide=new c(this)}d.prototype.destroy=function(){this.guide.destroy(),this.dragHandler.off(this),this.dragHandler=this.view=this.controller=this.guide=this._dragStart=null},d.prototype.checkExpectedCondition=function(e){var t,n=a.getClass(e);return!!~n.indexOf(o.classname("weekday-resize-handle"))&&(!!(e=a.closest(e,o.classname(".weekday")))&&(!(!(t=(n=a.getClass(e)).match(o.daygrid.getViewIDRegExp))||t.length<2)&&l.pick(this.view.children.items,t[1])))},d.prototype._onDragStart=function(e){var t,n,i,r,s,c=e.target,u=this.checkExpectedCondition(c),d=this.controller;u&&(t=a.closest(c,o.classname(".weekday-schedule-block")),n=a.getData(t,"id"),(i=d.schedules.items[n])&&(r=this._retriveScheduleData(this.view,e.originEvent),this.getScheduleDataFunc=r,s=this._dragStart=r(e.originEvent),l.extend(s,{scheduleBlockElement:t,model:i}),this.dragHandler.on({drag:this._onDrag,dragEnd:this._onDragEnd,click:this._onClick},this),this.fire("dragstart",s)))},d.prototype._onDrag=function(e){var t=this.getScheduleDataFunc;t&&this.fire("drag",t(e.originEvent))},d.prototype._updateSchedule=function(e){var t,n=e.targetModel,l=e.xIndex-e.dragStartXIndex,o=new u(n.end);o=o.addDate(l),o=new u(r.maxDate(i.end(n.start),o)),t=r.getScheduleChanges(n,["end"],{end:o}),this.fire("beforeUpdateSchedule",{schedule:n,changes:t,start:n.getStarts(),end:o})},d.prototype._onDragEnd=function(e,t,n){var o,i=this.getScheduleDataFunc,a=this._dragStart;i&&a&&(this.dragHandler.off({drag:this._onDrag,dragEnd:this._onDragEnd,click:this._onClick},this),o=i(e.originEvent),l.extend(o,{targetModel:a.model}),n||this._updateSchedule(o),this.fire(t||"dragend",o),this.getScheduleDataFunc=this._dragStart=null)},d.prototype._onClick=function(e){this._onDragEnd(e,"click",!0)},r.mixin(s,d),l.CustomEvents.mixin(d),e.exports=d},function(e,t,n){"use strict";(function(t){var l=n(0),o=n(2),i=n(1),a=n(3),r=n(11);function s(e){this.resizeHandler=e,this.scheduleContainer=null,this.getScheduleDataFunc=null,this.guideElement=null,this.scheduleBlockElement=null,e.on({dragstart:this._onDragStart,drag:this._onDrag,dragend:this._clearGuideElement,click:this._clearGuideElement},this)}s.prototype.destroy=function(){this._clearGuideElement(),this.resizeHandler.off(this),this.resizeHandler=this.scheduleContainer=this.getScheduleDataFunc=this.guideElement=this.scheduleBlockElement=null},s.prototype._clearGuideElement=function(){i.remove(this.guideElement),l.browser.msie||i.removeClass(t.document.body,o.classname("resizing-x")),this.scheduleBlockElement&&i.removeClass(this.scheduleBlockElement,o.classname("weekday-schedule-block-dragging-dim")),this.getScheduleDataFunc=null},s.prototype.refreshGuideElement=function(e){var t=this.guideElement;r.requestAnimFrame((function(){t.style.width=e+"%"}))},s.prototype.getGuideElementWidthFunc=function(e){var t=e.model,n=this.resizeHandler.view.options,l=Math.ceil((t.start-n.renderStartDate)/a.MILLISECONDS_PER_DAY)||0,o=e.grids;return function(e){var t=0,n=0,i=o.length;for(t+=o[l]?o[l].width:0;n<i;n+=1)n>l&&n<=e&&(t+=o[n]?o[n].width:0);return t}},s.prototype._onDragStart=function(e){var n,a=this.resizeHandler.view.container,r=this.scheduleBlockElement=e.scheduleBlockElement,s=this.guideElement=r.cloneNode(!0);l.browser.msie||i.addClass(t.document.body,o.classname("resizing-x")),n=i.find(o.classname(".weekday-schedules"),a),i.addClass(s,o.classname("daygrid-guide-move")),i.addClass(r,o.classname("weekday-schedule-block-dragging-dim")),n.appendChild(s),this.getScheduleDataFunc=this.getGuideElementWidthFunc(e)},s.prototype._onDrag=function(e){var t=this.getScheduleDataFunc;t&&this.refreshGuideElement(t(e.xIndex))},e.exports=s}).call(this,n(9))},function(e,t,n){"use strict";var l=n(0),o=n(2),i=n(1);function a(e,t,n){this.dragHandler=e,this.timeGridView=t,this.baseController=n,e.on({click:this._onClick},this)}a.prototype.destroy=function(){this.dragHandler.off(this),this.timeGridView=this.baseController=this.dragHandler=null},a.prototype.checkExpectCondition=function(e){var t,n;return!!(t=i.closest(e,o.classname(".time-date")))&&(!(!(n=i.getClass(t).match(o.time.getViewIDRegExp))||n.length<2)&&l.pick(this.timeGridView.children.items,Number(n[1])))},a.prototype._onClick=function(e){var t=this,n=e.target,l=this.checkExpectCondition(n),a=i.closest(n,o.classname(".time-date-schedule-block")),r=this.baseController.schedules;l&&a&&r.doWhenHas(i.getData(a,"id"),(function(n){t.fire("clickSchedule",{schedule:n,event:e.originEvent})}))},l.CustomEvents.mixin(a),e.exports=a},function(e,t,n){"use strict";var l=n(0),o=n(2),i=n(15),a=n(3),r=n(1),s=n(6),c=n(5),u=n(91),d=n(4).Date,h=n(18),p=300;function m(e,t,n,l){this.dragHandler=e,this.timeGridView=t,this.baseController=n,this.guide=new u(this),this._getScheduleDataFunc=null,this._dragStart=null,this._requestOnClick=!1,this._disableDblClick=l.disableDblClick,this._disableClick=l.disableClick,e.on("dragStart",this._onDragStart,this),e.on("click",this._onClick,this),this._disableDblClick?p=0:s.on(t.container,"dblclick",this._onDblClick,this)}m.prototype.destroy=function(){var e=this.timeGridView;this.guide.destroy(),this.dragHandler.off(this),e&&e.container&&s.off(e.container,"dblclick",this._onDblClick,this),this.dragHandler=this.timeGridView=this.baseController=this._getScheduleDataFunc=this._dragStart=this.guide=null},m.prototype.checkExpectedCondition=function(e){var t,n=r.getClass(e);return n===o.classname("time-date-schedule-block-wrap")&&(e=e.parentNode,n=r.getClass(e)),!(!(t=n.match(o.time.getViewIDRegExp))||t.length<2)&&l.pick(this.timeGridView.children.items,t[1])},m.prototype._onDragStart=function(e,t,n){var l,o,i=e.target,a=this.checkExpectedCondition(i);a&&(l=this._getScheduleDataFunc=this._retriveScheduleData(a),o=this._dragStart=l(e.originEvent),n&&n(o),this.dragHandler.on({drag:this._onDrag,dragEnd:this._onDragEnd},this),this.fire(t||"timeCreationDragstart",o))},m.prototype._onDrag=function(e,t,n){var l,o=this._getScheduleDataFunc;o&&(l=o(e.originEvent),n&&n(l),this.fire(t||"timeCreationDrag",l))},m.prototype._createSchedule=function(e){var t,n,l,o,i,r=e.relatedView,s=e.createRange,u=e.nearestGridTimeY,h=e.nearestGridEndTimeY?e.nearestGridEndTimeY:new d(u).addMinutes(30);s||(s=[u,h]),t=new d(r.getDate()),n=a.start(t),l=a.getStartOfNextDay(t),o=c.limitDate(s[0],n,l),i=c.limitDate(s[1],n,l),this.fire("beforeCreateSchedule",{isAllDay:!1,start:new d(o),end:new d(i),guide:this.guide,triggerEventName:e.triggerEvent})},m.prototype._onDragEnd=function(e){var t=this,n=this._dragStart;this.dragHandler.off({drag:this._onDrag,dragEnd:this._onDragEnd},this),this._onDrag(e,"timeCreationDragend",(function(e){var l=[n.nearestGridTimeY,e.nearestGridTimeY].sort(i.compare.num.asc);l[1].addMinutes(30),e.createRange=l,t._createSchedule(e)})),this._dragStart=this._getScheduleDataFunc=null},m.prototype._onClick=function(e){var t,n,l,o=this;this.dragHandler.off({drag:this._onDrag,dragEnd:this._onDragEnd},this),(t=this.checkExpectedCondition(e.target))&&!this._disableClick&&(n=this._retriveScheduleData(t),l=n(e.originEvent),this._requestOnClick=!0,setTimeout((function(){o._requestOnClick&&(o.fire("timeCreationClick",l),o._createSchedule(l)),o._requestOnClick=!1}),p),this._dragStart=this._getScheduleDataFunc=null)},m.prototype._onDblClick=function(e){var t,n;(t=this.checkExpectedCondition(e.target))&&(n=this._retriveScheduleData(t)(e),this.fire("timeCreationClick",n),this._createSchedule(n),this._requestOnClick=!1)},m.prototype.invokeCreationClick=function(e){var t,n,o=this.timeGridView.options,i=a.range(o.renderStartDate,o.renderEndDate,a.MILLISECONDS_PER_DAY),r=o.hourStart,s=e.start;l.forEach(i,(function(e,t){a.isSameDate(e,s)&&(n=this.timeGridView.children.toArray()[t])}),this),n||(n=this.timeGridView.children.toArray()[0]),t=this._retriveScheduleDataFromDate(n,e.start,e.end,r),this.fire("timeCreationClick",t),this._createSchedule(t)},h.mixin(m),l.CustomEvents.mixin(m),e.exports=m},function(e,t,n){"use strict";(function(t){var l=n(5),o=n(3),i=n(2),a=n(1),r=n(11),s=n(5).ratio,c=n(4).Date,u=60*o.MILLISECONDS_PER_MINUTES;function d(e){this.guideElement=t.document.createElement("div"),this.guideTimeElement=a.appendHTMLElement("span",this.guideElement,i.classname("time-guide-creation-label")),a.addClass(this.guideElement,i.classname("time-guide-creation")),this.timeCreation=e,this._styleUnit=null,this._styleStart=null,this._styleFunc=null,e.on({timeCreationDragstart:this._createGuideElement,timeCreationDrag:this._onDrag,timeCreationClick:this._createGuideElement},this),this.applyTheme(e.baseController.theme)}d.prototype.destroy=function(){this.clearGuideElement(),this.timeCreation.off(this),this.timeCreation=this._styleUnit=this._styleStart=this._styleFunc=this.guideElement=this.guideTimeElement=null},d.prototype.clearGuideElement=function(){var e=this.guideElement,t=this.guideTimeElement;a.remove(e),r.requestAnimFrame((function(){e.style.display="none",e.style.top="",e.style.height="",t.innerHTML=""}))},d.prototype._refreshGuideElement=function(e,t,n,l,r){var s=this.guideElement,c=this.guideTimeElement;s.style.top=e+"px",s.style.height=t+"px",s.style.display="block",c.innerHTML=o.format(n,"HH:mm")+" - "+o.format(l,"HH:mm"),r?a.removeClass(c,i.classname("time-guide-bottom")):a.addClass(c,i.classname("time-guide-bottom"))},d.prototype._getUnitData=function(e){var t=e.options,n=e.getViewBound().height,l=t.hourEnd-t.hourStart,i=o.parse(t.ymd),a=o.getStartOfNextDay(i);return i.setHours(0,0,0,0),i.setHours(t.hourStart),[n,l,i,a,n/l]},d.prototype._limitStyleData=function(e,t,n,o){var i=this._styleUnit;return[e=l.limit(e,[0],[i[0]]),t=l.limit(e+t,[0],[i[0]])-e,n=l.limitDate(n,i[2],i[3]),o=l.limitDate(o,i[2],i[3])]},d.prototype._getStyleDataFunc=function(e,t,n){var i=n,a=o.end(n);return function(n){var o=n.nearestGridY,r=n.nearestGridTimeY,u=n.nearestGridEndTimeY||new c(r).addMinutes(30);return[l.limit(s(t,e,o),[0],[e]),l.limitDate(r,i,a),l.limitDate(u,i,a)]}},d.prototype._createGuideElement=function(e){var t,n,l,i,a,r,s,d,h=e.relatedView,p=o.millisecondsFrom("hour",e.hourStart)||0;t=this._styleUnit=this._getUnitData(h),n=this._styleFunc=this._getStyleDataFunc.apply(this,t),l=this._styleStart=n(e),s=new c(l[1]).addMinutes(o.minutesFromHours(p)),d=new c(l[2]).addMinutes(o.minutesFromHours(p)),a=l[0],r=t[4]*(d-s)/u,i=this._limitStyleData(a,r,s,d),this._refreshGuideElement.apply(this,i),h.container.appendChild(this.guideElement)},d.prototype._onDrag=function(e){var t,n,l,o=this._styleFunc,i=this._styleUnit,a=this._styleStart,s=this._refreshGuideElement.bind(this);o&&i&&a&&(t=i[4]/2,(n=o(e))[0]>a[0]?l=this._limitStyleData(a[0],n[0]-a[0]+t,a[1],new c(n[1]).addMinutes(30)):(l=this._limitStyleData(n[0],a[0]-n[0]+t,n[1],new c(a[1]).addMinutes(30))).push(!0),r.requestAnimFrame((function(){s.apply(null,l)})))},d.prototype.applyTheme=function(e){var t=this.guideElement.style,n=this.guideTimeElement.style;t.backgroundColor=e.common.creationGuide.backgroundColor,t.border=e.common.creationGuide.border,n.color=e.week.creationGuide.color,n.fontSize=e.week.creationGuide.fontSize,n.fontWeight=e.week.creationGuide.fontWeight},e.exports=d}).call(this,n(9))},function(e,t,n){"use strict";var l=n(0),o=n(2),i=n(3),a=n(1),r=n(6),s=n(4).Date,c=n(18),u=n(93);function d(e,t,n){this.dragHandler=e,this.timeGridView=t,this.baseController=n,this._getScheduleDataFunc=null,this._dragStart=null,this._guide=new u(this),e.on("dragStart",this._onDragStart,this),e.on("mousedown",this._onMouseDown,this)}d.prototype.destroy=function(){this._guide.destroy(),this.dragHandler.off(this),this.dragHandler=this.timeGridView=this.baseController=this._getScheduleDataFunc=this._dragStart=this._guide=null},d.prototype.checkExpectCondition=function(e){return!!a.closest(e,o.classname(".time-schedule"))&&this._getTimeView(e)},d.prototype._getTimeView=function(e){var t,n=a.closest(e,o.classname(".time-date"));return!!n&&(!(!(t=a.getClass(n).match(o.time.getViewIDRegExp))||t.length<2)&&l.pick(this.timeGridView.children.items,Number(t[1])))},d.prototype._onMouseDown=function(e){var t=e.target,n=this.checkExpectCondition(t),i=a.closest(t,o.classname(".time-date-schedule-block"));n&&i&&l.browser.firefox&&r.preventDefault(e.originEvent)},d.prototype._onDragStart=function(e){var t,n,l,i,r=e.target,s=this.checkExpectCondition(r),c=a.closest(r,o.classname(".time-date-schedule-block")),u=this.baseController;s&&c&&(l=a.getData(c,"id"),(i=u.schedules.items[l]).isReadOnly||(t=this._getScheduleDataFunc=this._retriveScheduleData(s),n=this._dragStart=t(e.originEvent,{targetModelID:l,model:i}),this.dragHandler.on({drag:this._onDrag,dragEnd:this._onDragEnd,click:this._onClick},this),this.fire("timeMoveDragstart",n)))},d.prototype._onDrag=function(e,t,n){var l,o=this._getScheduleDataFunc,i=this._getTimeView(e.target),a=this._dragStart;i&&o&&a&&(l=o(e.originEvent,{currentView:i,targetModelID:a.targetModelID}),n&&n(l),this.fire(t||"timeMoveDrag",l))},d.prototype._updateSchedule=function(e){var t,n,l=this.baseController,o=e.targetModelID,a=e.nearestRange,r=a[1]-a[0],c=0,u=l.schedules.items[o],d=e.relatedView,h=e.currentView;u&&h&&(r-=i.millisecondsFrom("minutes",30),t=new s(u.getStarts()).addMilliseconds(r),n=new s(u.getEnds()).addMilliseconds(r),h&&(c=h.getDate()-d.getDate()),t.addMilliseconds(c),n.addMilliseconds(c),this.fire("beforeUpdateSchedule",{schedule:u,changes:{start:t,end:n},start:t,end:n}))},d.prototype._onDragEnd=function(e){var t,n=this._getScheduleDataFunc,l=this._getTimeView(e.target),o=this._dragStart;this.dragHandler.off({drag:this._onDrag,dragEnd:this._onDragEnd,click:this._onClick},this),n&&o&&((t=n(e.originEvent,{currentView:l,targetModelID:o.targetModelID})).range=[o.timeY,new s(t.timeY).addMinutes(30)],t.nearestRange=[o.nearestGridTimeY,new s(t.nearestGridTimeY).addMinutes(30)],this._updateSchedule(t),this.fire("timeMoveDragend",t))},d.prototype._onClick=function(e){var t,n=this._getScheduleDataFunc,l=this._dragStart;this.dragHandler.off({drag:this._onDrag,dragEnd:this._onDragEnd,click:this._onClick},this),n&&l&&(t=n(e.originEvent,{targetModelID:l.targetModelID}),this.fire("timeMoveClick",t))},c.mixin(d),l.CustomEvents.mixin(d),e.exports=d},function(e,t,n){"use strict";(function(t){var l=n(0),o=n(2),i=n(1),a=n(11),r=n(5).ratio,s=n(16),c=n(94),u=n(4).Date,d=n(14),h=n(3),p=n(5),m=h.MILLISECONDS_SCHEDULE_MIN_DURATION;function f(e){this._guideLayer=null,this._model=null,this._viewModel=null,this._lastDrag=null,this.guideElement=null,this.timeMove=e,this._container=null,this._getTopFunc=null,this._startGridY=0,this._startTopPixel=0,e.on({timeMoveDragstart:this._onDragStart,timeMoveDrag:this._onDrag,timeMoveDragend:this._clearGuideElement,timeMoveClick:this._clearGuideElement},this)}f.prototype.destroy=function(){this._clearGuideElement(),this.timeMove.off(this),this._guideLayer&&this._guideLayer.destroy(),this.guideElement=this.timeMove=this._container=this._guideLayer=this._lastDrag=this._getTopFunc=this._startGridY=this._startTopPixel=this._viewModel=null},f.prototype._clearGuideElement=function(){l.browser.msie||i.removeClass(t.document.body,o.classname("dragging")),this._guideLayer&&this._guideLayer.destroy(),this._showOriginScheduleBlocks(),this.guideElement=this._getTopFunc=this._guideLayer=this._model=this._lastDrag=this._startGridY=this._startTopPixel=this._viewModel=null},f.prototype._hideOriginScheduleBlocks=function(){var e=o.classname("time-date-schedule-block-dragging-dim");this.guideElement&&i.addClass(this.guideElement,e)},f.prototype._showOriginScheduleBlocks=function(){var e=o.classname("time-date-schedule-block-dragging-dim");this.guideElement&&i.removeClass(this.guideElement,e)},f.prototype._refreshGuideElement=function(e,t,n){var o=this;a.requestAnimFrame((function(){o._guideLayer&&(o._guideLayer.setPosition(0,e),o._guideLayer.setContent(c(l.extend({model:t},n))))}))},f.prototype._onDragStart=function(e){var t,n,a,r,s=i.closest(e.target,o.classname(".time-date-schedule-block"));s&&(this._startTopPixel=parseFloat(s.style.top),this._startGridY=e.nearestGridY,this.guideElement=s,this._container=e.relatedView.container,this._model=l.extend(d.create(e.model),e.model),n=(n=this._model.duration())>m?n:m,t=(a=h.millisecondsFrom("minutes",this._model.goingDuration))+n+(r=h.millisecondsFrom("minutes",this._model.comingDuration)),this._lastDrag=e,this._viewModel={hasGoingDuration:a>0,hasComingDuration:r>0,goingDurationHeight:p.ratio(t,a,100),modelDurationHeight:p.ratio(t,n,100),comingDurationHeight:p.ratio(t,r,100)},this._resetGuideLayer(),this._hideOriginScheduleBlocks())},f.prototype._onDrag=function(e){var n,a,s=e.currentView,c=s.options,d=s.getViewBound().height,p=parseFloat(this.guideElement.style.height),m=c.hourEnd-c.hourStart,f=e.nearestGridY-this._startGridY,g=r(m,d,f),y=e.nearestGridY-this._lastDrag.nearestGridY;l.browser.msie||i.addClass(t.document.body,o.classname("dragging")),this._container!==s.container&&(this._container=s.container,this._resetGuideLayer()),a=this._startTopPixel+g,n=d-p,a=Math.max(a,0),a=Math.min(a,n),this._model.start=new u(this._model.getStarts()).addMinutes(h.minutesFromHours(y)),this._model.end=new u(this._model.getEnds()).addMinutes(h.minutesFromHours(y)),this._lastDrag=e,this._refreshGuideElement(a,this._model,this._viewModel)},f.prototype._resetGuideLayer=function(){this._guideLayer&&(this._guideLayer.destroy(),this._guideLayer=null),this._guideLayer=new s(null,this._container),this._guideLayer.setSize(this._container.getBoundingClientRect().width,this.guideElement.style.height),this._guideLayer.setPosition(0,this.guideElement.style.top),this._guideLayer.setContent(c(l.extend({model:this._model},this._viewModel))),this._guideLayer.show()},e.exports=f}).call(this,n(9))},function(e,t,n){var l=n(7);e.exports=(l.default||l).template({1:function(e,t,n,l,o){var i,a,r=null!=t?t:e.nullContext||{},s=e.hooks.helperMissing,c="function",u=e.escapeExpression,d=e.lambda,h=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return'            <div class="'+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:4,column:24},end:{line:4,column:38}}}):a)+"time-schedule-content "+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:4,column:60},end:{line:4,column:74}}}):a)+'time-schedule-content-travel-time" style="border-color:'+u(d(null!=(i=null!=t?h(t,"model"):t)?h(i,"borderColor"):i,t))+"; border-bottom: 1px dashed "+u(d(null!=(i=null!=t?h(t,"model"):t)?h(i,"color"):i,t))+"; height: "+u(typeof(a=null!=(a=h(n,"goingDurationHeight")||(null!=t?h(t,"goingDurationHeight"):t))?a:s)===c?a.call(r,{name:"goingDurationHeight",hash:{},data:o,loc:{start:{line:4,column:203},end:{line:4,column:226}}}):a)+'%;">'+(null!=(i=(h(n,"goingDuration-tmpl")||t&&h(t,"goingDuration-tmpl")||s).call(r,null!=t?h(t,"model"):t,{name:"goingDuration-tmpl",hash:{},data:o,loc:{start:{line:4,column:230},end:{line:4,column:260}}}))?i:"")+"</div>\n"},3:function(e,t,n,l,o){var i,a,r=null!=t?t:e.nullContext||{},s=e.hooks.helperMissing,c="function",u=e.escapeExpression,d=e.lambda,h=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return'            <div class="'+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:10,column:24},end:{line:10,column:38}}}):a)+"time-schedule-content "+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:10,column:60},end:{line:10,column:74}}}):a)+'time-schedule-content-travel-time" style="border-color:'+u(d(null!=(i=null!=t?h(t,"model"):t)?h(i,"borderColor"):i,t))+"; border-top: 1px dashed "+u(d(null!=(i=null!=t?h(t,"model"):t)?h(i,"color"):i,t))+"; height: "+u(typeof(a=null!=(a=h(n,"comingDurationHeight")||(null!=t?h(t,"comingDurationHeight"):t))?a:s)===c?a.call(r,{name:"comingDurationHeight",hash:{},data:o,loc:{start:{line:10,column:200},end:{line:10,column:224}}}):a)+'%;">'+(null!=(i=(h(n,"comingDuration-tmpl")||t&&h(t,"comingDuration-tmpl")||s).call(r,null!=t?h(t,"model"):t,{name:"comingDuration-tmpl",hash:{},data:o,loc:{start:{line:10,column:228},end:{line:10,column:259}}}))?i:"")+"</div>\n"},5:function(e,t,n,l,o){var i,a=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return'<div class="'+e.escapeExpression("function"==typeof(i=null!=(i=a(n,"CSS_PREFIX")||(null!=t?a(t,"CSS_PREFIX"):t))?i:e.hooks.helperMissing)?i.call(null!=t?t:e.nullContext||{},{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:13,column:38},end:{line:13,column:52}}}):i)+'time-resize-handle handle-x">&nbsp;</div>'},compiler:[8,">= 4.3.0"],main:function(e,t,n,l,o){var i,a,r=null!=t?t:e.nullContext||{},s=e.hooks.helperMissing,c="function",u=e.escapeExpression,d=e.lambda,h=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return'<div class="'+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:1,column:12},end:{line:1,column:26}}}):a)+'time-date-schedule-block" data-id="'+u((h(n,"stamp")||t&&h(t,"stamp")||s).call(r,null!=t?h(t,"model"):t,{name:"stamp",hash:{},data:o,loc:{start:{line:1,column:61},end:{line:1,column:76}}}))+'" style="width: 100%; height: 100%;">\n    <div class="'+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:2,column:16},end:{line:2,column:30}}}):a)+"time-schedule "+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:2,column:44},end:{line:2,column:58}}}):a)+'time-date-schedule-block-focused" style="color: #ffffff; background-color:'+u(d(null!=(i=null!=t?h(t,"model"):t)?h(i,"dragBgColor"):i,t))+';">\n'+(null!=(i=h(n,"if").call(r,null!=t?h(t,"hasGoingDuration"):t,{name:"if",hash:{},fn:e.program(1,o,0),inverse:e.noop,data:o,loc:{start:{line:3,column:8},end:{line:5,column:15}}}))?i:"")+'            <div class="'+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:6,column:24},end:{line:6,column:38}}}):a)+'time-schedule-content" style="height: '+u(typeof(a=null!=(a=h(n,"modelDurationHeight")||(null!=t?h(t,"modelDurationHeight"):t))?a:s)===c?a.call(r,{name:"modelDurationHeight",hash:{},data:o,loc:{start:{line:6,column:76},end:{line:6,column:99}}}):a)+"%; border-color:"+u(d(null!=(i=null!=t?h(t,"model"):t)?h(i,"borderColor"):i,t))+';">\n                '+(null!=(i=(h(n,"time-tmpl")||t&&h(t,"time-tmpl")||s).call(r,null!=t?h(t,"model"):t,{name:"time-tmpl",hash:{},data:o,loc:{start:{line:7,column:16},end:{line:7,column:37}}}))?i:"")+"\n            </div>\n"+(null!=(i=h(n,"if").call(r,null!=t?h(t,"hasComingDuration"):t,{name:"if",hash:{},fn:e.program(3,o,0),inverse:e.noop,data:o,loc:{start:{line:9,column:8},end:{line:11,column:15}}}))?i:"")+"    </div>\n    "+(null!=(i=h(n,"unless").call(r,null!=t?h(t,"croppedEnd"):t,{name:"unless",hash:{},fn:e.program(5,o,0),inverse:e.noop,data:o,loc:{start:{line:13,column:4},end:{line:13,column:104}}}))?i:"")+'\n    <div class="'+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:14,column:16},end:{line:14,column:30}}}):a)+'time-date-schedule-block-cover"></div>\n</div>\n'},useData:!0})},function(e,t,n){"use strict";var l=n(0),o=n(2),i=n(3),a=n(1),r=n(4).Date,s=n(5),c=n(18),u=n(96);function d(e,t,n){this.dragHandler=e,this.timeGridView=t,this.baseController=n,this._getScheduleDataFunc=null,this._dragStart=null,this._guide=new u(this),e.on("dragStart",this._onDragStart,this)}d.prototype.destroy=function(){this._guide.destroy(),this.dragHandler.off(this),this.dragHandler=this.timeGridView=this.baseController=this._getScheduleDataFunc=this._dragStart=this._guide=null},d.prototype.checkExpectCondition=function(e){var t,n;return!!a.hasClass(e,o.classname("time-resize-handle"))&&(!!(t=a.closest(e,o.classname(".time-date")))&&(!(!(n=a.getClass(t).match(o.time.getViewIDRegExp))||n.length<2)&&l.pick(this.timeGridView.children.items,Number(n[1]))))},d.prototype._onDragStart=function(e){var t,n,l,i=e.target,r=this.checkExpectCondition(i),s=a.closest(i,o.classname(".time-date-schedule-block")),c=this.baseController;r&&s&&(t=a.getData(s,"id"),n=this._getScheduleDataFunc=this._retriveScheduleData(r),l=this._dragStart=n(e.originEvent,{targetModelID:t,schedule:c.schedules.items[t]}),this.dragHandler.on({drag:this._onDrag,dragEnd:this._onDragEnd,click:this._onClick},this),this.fire("timeResizeDragstart",l))},d.prototype._onDrag=function(e,t,n){var l,o=this._getScheduleDataFunc,i=this._dragStart;o&&i&&(l=o(e.originEvent,{targetModelID:i.targetModelID}),n&&n(l),this.fire(t||"timeResizeDrag",l))},d.prototype._updateSchedule=function(e){var t,n,l,o,a=this.baseController,c=e.targetModelID,u=e.nearestRange,d=u[1]-u[0],h=a.schedules.items[c],p=e.relatedView;h&&(d-=i.millisecondsFrom("minutes",30),l=new r(p.getDate()),t=i.end(l),(n=new r(h.getEnds()).addMilliseconds(d))>t&&(n=new r(t)),n.getTime()-h.getStarts().getTime()<i.millisecondsFrom("minutes",30)&&(n=new r(h.getStarts()).addMinutes(30)),o=s.getScheduleChanges(h,["end"],{end:n}),this.fire("beforeUpdateSchedule",{schedule:h,changes:o,start:h.getStarts(),end:n}))},d.prototype._onDragEnd=function(e){var t,n=this._getScheduleDataFunc,l=this._dragStart;this.dragHandler.off({drag:this._onDrag,dragEnd:this._onDragEnd,click:this._onClick},this),n&&l&&((t=n(e.originEvent,{targetModelID:l.targetModelID})).range=[l.timeY,new r(t.timeY).addMinutes(30)],t.nearestRange=[l.nearestGridTimeY,t.nearestGridTimeY.addMinutes(30)],this._updateSchedule(t),this.fire("timeResizeDragend",t),this._getScheduleDataFunc=this._dragStart=null)},d.prototype._onClick=function(){this.dragHandler.off({drag:this._onDrag,dragEnd:this._onDragEnd,click:this._onClick},this),this.fire("timeResizeClick")},c.mixin(d),l.CustomEvents.mixin(d),e.exports=d},function(e,t,n){"use strict";(function(t){var l=n(0),o=n(2),i=n(1),a=n(11),r=n(5).ratio,s=n(3);function c(e){this.guideElement=null,this.timeResize=e,this._getTopFunc=null,this._originScheduleElement=null,this._startTopPixel=0,this._startHeightPixel=0,this._startGridY=0,this._schedule=null,e.on({timeResizeDragstart:this._onDragStart,timeResizeDrag:this._onDrag,timeResizeDragend:this._clearGuideElement,timeResizeClick:this._clearGuideElement},this)}c.prototype.destroy=function(){this._clearGuideElement(),this.timeResize.off(this),this.guideElement=this.timeResize=this._getTopFunc=this._originScheduleElement=this._startHeightPixel=this._startGridY=this._startTopPixel=null},c.prototype._clearGuideElement=function(){var e=this.guideElement,n=this._originScheduleElement;l.browser.msie||i.removeClass(t.document.body,o.classname("resizing")),n&&(n.style.display="block"),i.remove(e),this.guideElement=this._getTopFunc=this._originScheduleElement=this._startHeightPixel=this._startGridY=this._startTopPixel=null},c.prototype._refreshGuideElement=function(e,t,n){var l,r=this.guideElement;r&&(l=i.find(o.classname(".time-schedule-content-time"),r),a.requestAnimFrame((function(){r.style.height=e+"px",r.style.display="block",l&&(l.style.height=n+"px",l.style.minHeight=t+"px")})))},c.prototype._onDragStart=function(e){var n,a=i.closest(e.target,o.classname(".time-date-schedule-block")),r=e.schedule;l.browser.msie||i.addClass(t.document.body,o.classname("resizing")),a&&r&&(this._startGridY=e.nearestGridY,this._startHeightPixel=parseFloat(a.style.height),this._startTopPixel=parseFloat(a.style.top),this._originScheduleElement=a,this._schedule=r,n=this.guideElement=a.cloneNode(!0),i.addClass(n,o.classname("time-guide-resize")),a.style.display="none",e.relatedView.container.appendChild(n))},c.prototype._onDrag=function(e){var t,n,l,o,i,a=e.relatedView,c=a.options,u=a.getViewBound().height,d=c.hourEnd-c.hourStart,h=this.guideElement,p=parseFloat(h.style.top),m=e.nearestGridY-this._startGridY,f=r(d,u,m),g=this._schedule.goingDuration,y=this._schedule.duration()/s.MILLISECONDS_PER_MINUTES,S=this._schedule.comingDuration,_=60*d;i=this._startHeightPixel+f,l=p+r(d,u,.5),n=l-=this._startTopPixel,l+=r(_,u,g)+r(_,u,S),o=u-p,i=Math.max(i,l),i=Math.min(i,o),t=r(_,u,y)+f,this._refreshGuideElement(i,n,t)},e.exports=c}).call(this,n(9))},function(e,t,n){"use strict";var l=n(0),o=n(2),i=n(15),a=n(3),r=n(1),s=n(5),c=n(98),u=n(103),d=n(104),h=n(107),p=n(109),m=n(112),f=n(32),g=n(33),y=n(14);e.exports=function(e,t,n,S){var _,C,v,E,w,P,k,R,b,I,D,F,x,X,M,O;return _=r.appendHTMLElement("div",t,o.classname("month")),C=new c(S,_,e.Month),v=new m(S.month,t,e.theme),w=new u(n,C,e),S.isReadOnly||(P=new d(n,C,e,S),k=new h(n,C,e),R=new p(n,C,e)),b=function(){v&&v.hide()},I=function(){v&&v.refresh()},w.on("clickMore",(function(t){var n=t.date,o=t.target,r=l.pick(e.findByDateRange(a.start(n),a.end(n)),t.ymd);r.items=l.filter(r.items,(function(e){return S.month.scheduleFilter(e.model)})),r&&r.length&&(v.render(function(e,t,n,l){return n.each((function(e){var t=e.model;e.hasMultiDates=a.hasMultiDates(t.start,t.end)})),{target:t,date:a.format(e,"YYYY.MM.DD"),dayname:l[e.getDay()],schedules:n.sort(i.compare.schedule.asc)}}(n,o,r,C.options.daynames)),r.each((function(e){e&&C.fire("afterRenderSchedule",{schedule:e.model})})),C.fire("clickMore",{date:t.date,target:v.getMoreViewElement()}))})),S.useCreationPopup&&(E=new f(t,e.calendars,S.usageStatistics),D=function(e){P.fire("beforeCreateSchedule",l.extend(e,{useCreationPopup:!0}))},E.on("beforeCreateSchedule",D)),S.useDetailPopup&&(x=new g(t,e.calendars),X=function(t){var n=t.schedule.calendarId;t.calendar=s.find(e.calendars,(function(e){return e.id===n})),S.isReadOnly&&(t.schedule=l.extend({},t.schedule,{isReadOnly:!0})),x.render(t)},M=function(e){P&&P.fire("beforeDeleteSchedule",e)},O=function(e){R.fire("beforeUpdateSchedule",e)},w.on("clickSchedule",X),x.on("beforeDeleteSchedule",M),S.useCreationPopup?(F=function(t){E.setCalendars(e.calendars),E.render(t)},E.on("beforeUpdateSchedule",O),x.on("beforeUpdateSchedule",F)):x.on("beforeUpdateSchedule",O)),e.on("clearSchedules",b),e.on("updateSchedule",I),R&&R.on("monthMoveStart_from_morelayer",(function(){v.hide()})),C.handler={click:{default:w}},S.isReadOnly||(C.handler=l.extend(C.handler,{creation:{default:P},resize:{default:k},move:{default:R}})),C._beforeDestroy=function(){v.destroy(),e.off("clearSchedules",b),e.off("updateSchedule",I),l.forEach(C.handler,(function(e){l.forEach(e,(function(e){e.off(),e.destroy()}))})),S.useCreationPopup&&S.useDetailPopup&&E.off("beforeUpdateSchedule",I),S.useCreationPopup&&(P&&P.off("beforeCreateSchedule",undefined),E.off("saveSchedule",D),E.destroy()),S.useDetailPopup&&(w.off("clickSchedule",X),x.off("beforeUpdateSchedule",I),x.off("beforeDeleteSchedule",M),x.destroy())},C.controller=e.Month,{view:C,refresh:function(){C.vLayout.refresh()},openCreationPopup:function(e){E&&P&&P.invokeCreationClick(y.create(e))},showCreationPopup:function(t){E&&(E.setCalendars(e.calendars),E.render(t))},hideMoreView:function(){v&&v.hide()}}}},function(e,t,n){"use strict";var l=n(0),o=n(2),i=n(3),a=n(1),r=n(4).Date,s=n(99),c=n(8),u=n(29),d=n(100),h=Math.min;function p(e,t,n){var o,a=n?n.theme:null;o=(e=e||{})?e.month:{},c.call(this,t),this.controller=n,this.vLayout=new u({panels:[{height:parseInt(n.theme.month.dayname.height,10)||42},{autoHeight:!0}]},t,a),this.options=l.extend({scheduleFilter:function(e){return Boolean(e.isVisible)},startDayOfWeek:0,renderMonth:"2018-01",daynames:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],narrowWeekend:!1,visibleWeeksCount:null,isAlways6Week:!0,isReadOnly:e.isReadOnly,grid:{header:{height:34},footer:{height:3}}},o),this.options.grid.header=l.extend({height:34},l.pick(o,"grid","header")),this.options.grid.footer=l.extend({height:3},l.pick(o,"grid","footer")),this.grids=i.getGridLeftAndWidth(this.options.daynames.length,this.options.narrowWeekend,this.options.startDayOfWeek)}l.inherit(p,c),p.prototype.viewName="month",p.prototype._getMonthCalendar=function(e){var t,n=new r(e),l=this.options.startDayOfWeek||0,o=h(this.options.visibleWeeksCount||0,6),a=this.options.workweek||!1;return t=this.options.visibleWeeksCount?{startDayOfWeek:l,isAlways6Week:!1,visibleWeeksCount:o,workweek:a}:{startDayOfWeek:l,isAlways6Week:this.options.isAlways6Week,workweek:a},i.arr2dCalendar(n,t)},p.prototype._renderChildren=function(e,t,n){var i=this,s=100/t.length,c=this.options,u=c.renderMonth,h=c.narrowWeekend,p=c.startDayOfWeek,m=c.visibleWeeksCount,f=c.visibleScheduleCount,g=c.grid,y=c.isReadOnly;e.innerHTML="",this.children.clear(),l.forEach(t,(function(t){var l,c,S=new r(t[0]),_=new r(t[t.length-1]);l=a.appendHTMLElement("div",e,o.classname("month-week-item")),c=new d({renderMonth:u,heightPercent:s,renderStartDate:S,renderEndDate:_,narrowWeekend:h,startDayOfWeek:p,visibleWeeksCount:m,visibleScheduleCount:f,grid:g,scheduleHeight:parseInt(n.month.schedule.height,10),scheduleGutter:parseInt(n.month.schedule.marginTop,10),isReadOnly:y},l),i.addChild(c)}))},p.prototype.render=function(){var e,t,n,o=this,a=this.options,r=this.vLayout,c=this.controller,u=a.daynames,d=a.workweek,h=this._getMonthCalendar(a.renderMonth),p=a.scheduleFilter,m=c?c.theme:null,f=this._getStyles(m);e=this.grids=i.getGridLeftAndWidth(a.daynames.length,a.narrowWeekend,a.startDayOfWeek),t=l.map(l.range(a.startDayOfWeek,7).concat(l.range(7)).slice(0,7),(function(t,n){return{day:t,label:u[t],width:e[n]?e[n].width:0,left:e[n]?e[n].left:0,color:this._getDayNameColor(m,t)}}),this),d&&(e=this.grids=i.getGridLeftAndWidth(5,a.narrowWeekend,a.startDayOfWeek,d),t=l.filter(t,(function(e){return!i.isWeekend(e.day)})),l.forEach(t,(function(t,n){t.width=e[n]?e[n].width:0,t.left=e[n]?e[n].left:0}))),n={daynames:t,styles:f},r.panels[0].container.innerHTML=s(n),this._renderChildren(r.panels[1].container,h,m),n.panelHeight=r.panels[1].getHeight(),this.children.each((function(t){var l=i.start(t.options.renderStartDate),a=i.start(t.options.renderEndDate),r=c.findByDateRange(i.start(l),i.end(a),p),s={eventsInDateRange:r,range:i.range(i.start(l),i.end(a),i.MILLISECONDS_PER_DAY).slice(0,e.length),grids:e,panelHeight:n.panelHeight,theme:m};t.render(s),o._invokeAfterRenderSchedule(r)}))},p.prototype._invokeAfterRenderSchedule=function(e){var t=this;l.forEachArray(e,(function(e){l.forEachArray(e,(function(e){l.forEachArray(e,(function(e){e&&!e.hidden&&t.fire("afterRenderSchedule",{schedule:e.model})}))}))}))},p.prototype._getStyles=function(e){var t,n={};return e&&(t=e.month.dayname,n.borderTop=t.borderTop||e.common.border,n.borderLeft=t.borderLeft||e.common.border,n.height=t.height,n.paddingLeft=t.paddingLeft,n.paddingRight=t.paddingRight,n.fontSize=t.fontSize,n.backgroundColor=t.backgroundColor,n.fontWeight=t.fontWeight,n.textAlign=t.textAlign),n},p.prototype._getDayNameColor=function(e,t){var n="";return e&&(n=0===t?e.common.holiday.color:6===t?e.common.saturday.color:e.common.dayname.color),n},e.exports=p},function(e,t,n){var l=n(7);e.exports=(l.default||l).template({1:function(e,t,n,l,o){var i,a,r=null!=t?t:e.nullContext||{},s=e.hooks.helperMissing,c="function",u=e.escapeExpression,d=e.lambda,h=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return'    <div class="'+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:4,column:16},end:{line:4,column:30}}}):a)+'month-dayname-item"\n         style="position: absolute;\n                width: '+u(typeof(a=null!=(a=h(n,"width")||(null!=t?h(t,"width"):t))?a:s)===c?a.call(r,{name:"width",hash:{},data:o,loc:{start:{line:6,column:23},end:{line:6,column:32}}}):a)+"%;\n                left: "+u(typeof(a=null!=(a=h(n,"left")||(null!=t?h(t,"left"):t))?a:s)===c?a.call(r,{name:"left",hash:{},data:o,loc:{start:{line:7,column:22},end:{line:7,column:30}}}):a)+"%;\n                padding-left: "+u(d((i=(i=o&&h(o,"root"))&&h(i,"styles"))&&h(i,"paddingLeft"),t))+";\n                padding-right: "+u(d((i=(i=o&&h(o,"root"))&&h(i,"styles"))&&h(i,"paddingRight"),t))+";\n                line-height: "+u(d((i=(i=o&&h(o,"root"))&&h(i,"styles"))&&h(i,"height"),t))+";\n"+(null!=(i=h(n,"unless").call(r,o&&h(o,"last"),{name:"unless",hash:{},fn:e.program(2,o,0),inverse:e.noop,data:o,loc:{start:{line:11,column:16},end:{line:13,column:27}}}))?i:"")+'                ">\n        <span class="'+u((h(n,"holiday")||t&&h(t,"holiday")||s).call(r,null!=t?h(t,"day"):t,{name:"holiday",hash:{},data:o,loc:{start:{line:15,column:21},end:{line:15,column:36}}}))+'" style="color: '+u(typeof(a=null!=(a=h(n,"color")||(null!=t?h(t,"color"):t))?a:s)===c?a.call(r,{name:"color",hash:{},data:o,loc:{start:{line:15,column:52},end:{line:15,column:61}}}):a)+';">\n            '+(null!=(i=(h(n,"monthDayname-tmpl")||t&&h(t,"monthDayname-tmpl")||s).call(r,t,{name:"monthDayname-tmpl",hash:{},data:o,loc:{start:{line:16,column:12},end:{line:16,column:40}}}))?i:"")+"\n        </span>\n    </div>\n"},2:function(e,t,n,l,o){var i,a=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return"                border-right: "+e.escapeExpression(e.lambda((i=(i=o&&a(o,"root"))&&a(i,"styles"))&&a(i,"borderLeft"),t))+";\n"},compiler:[8,">= 4.3.0"],main:function(e,t,n,l,o){var i,a,r=null!=t?t:e.nullContext||{},s=e.escapeExpression,c=e.lambda,u=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return'<div class="'+s("function"==typeof(a=null!=(a=u(n,"CSS_PREFIX")||(null!=t?u(t,"CSS_PREFIX"):t))?a:e.hooks.helperMissing)?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:1,column:12},end:{line:1,column:26}}}):a)+'month-dayname"\n    style="border-top: '+s(c(null!=(i=null!=t?u(t,"styles"):t)?u(i,"borderTop"):i,t))+"; height: "+s(c(null!=(i=null!=t?u(t,"styles"):t)?u(i,"height"):i,t))+"; font-size: "+s(c(null!=(i=null!=t?u(t,"styles"):t)?u(i,"fontSize"):i,t))+"; background-color: "+s(c(null!=(i=null!=t?u(t,"styles"):t)?u(i,"backgroundColor"):i,t))+"; text-align: "+s(c(null!=(i=null!=t?u(t,"styles"):t)?u(i,"textAlign"):i,t))+"; font-weight: "+s(c(null!=(i=null!=t?u(t,"styles"):t)?u(i,"fontWeight"):i,t))+';">\n'+(null!=(i=u(n,"each").call(r,null!=t?u(t,"daynames"):t,{name:"each",hash:{},fn:e.program(1,o,0),inverse:e.noop,data:o,loc:{start:{line:3,column:0},end:{line:19,column:9}}}))?i:"")+"</div>\n"},useData:!0})},function(e,t,n){"use strict";var l=n(0),o=n(2),i=n(5),a=n(1),r=n(8),s=n(30),c=n(101),u=n(102),d=Math.floor,h=Math.min;function p(e,t){s.call(this,e,t),t.style.height=e.heightPercent+"%"}l.inherit(p,s),p.prototype.getViewBound=function(){return r.prototype.getViewBound.call(this)},p.prototype._getRenderLimitIndex=function(e){var t,n=this.options,o=e||this.getViewBound().height,i=l.pick(n,"grid","header","height")||0,a=l.pick(n,"grid","footer","height")||0,r=n.visibleScheduleCount||0;return t=d((o-=i+a)/(n.scheduleHeight+n.scheduleGutter)),r||(r=t),h(t,r)},p.prototype.getBaseViewModel=function(e){var t,n=this.options,o=l.pick(n,"grid","header","height")||0,i=l.pick(n,"grid","footer","height")||0,a=this._getRenderLimitIndex()+1,r=this.getExceedDate(a,e.eventsInDateRange,e.range),c=this._getStyles(e.theme);return e=l.extend({exceedDate:r},e),t=s.prototype.getBaseViewModel.call(this,e),t=l.extend({matrices:e.eventsInDateRange,gridHeaderHeight:o,gridFooterHeight:i,renderLimitIdx:a,isReadOnly:n.isReadOnly,styles:c},t)},p.prototype.render=function(e){var t,n,r,d,h,p=this.container,m=this.getBaseViewModel(e);this.options.visibleWeeksCount||(n=m.dates,r=this.options.renderMonth,d=e.theme,h=r.getMonth()+1,l.forEach(n,(function(e){var t=e.month!==h;e.isOtherMonth=t,t&&(e.color=s.prototype._getDayNameColor(d,e.day,e.isToday,t))}))),p.innerHTML=c(m),(t=a.find(o.classname(".weekday-schedules"),p))&&(t.innerHTML=u(m),i.setAutoEllipsis(o.classname(".weekday-schedule-title"),p,!0))},p.prototype._beforeDestroy=function(){},p.prototype._getStyles=function(e){var t={};return e&&(t.borderTop=e.common.border,t.borderLeft=e.common.border,t.fontSize=e.month.day.fontSize,t.borderRadius=e.month.schedule.borderRadius,t.marginLeft=e.month.schedule.marginLeft,t.marginRight=e.month.schedule.marginRight,t.scheduleBulletTop=this.options.scheduleHeight/3),t},e.exports=p},function(e,t,n){var l=n(7);e.exports=(l.default||l).template({1:function(e,t,n,l,o){var i,a,r=null!=t?t:e.nullContext||{},s=e.hooks.helperMissing,c="function",u=e.escapeExpression,d=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return'<div class="'+u(typeof(a=null!=(a=d(n,"CSS_PREFIX")||(null!=t?d(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:7,column:16},end:{line:7,column:30}}}):a)+"weekday-grid-line "+u((d(n,"holiday")||t&&d(t,"holiday")||s).call(r,null!=t?d(t,"day"):t,{name:"holiday",hash:{},data:o,loc:{start:{line:7,column:48},end:{line:7,column:63}}}))+(null!=(i=(d(n,"fi")||t&&d(t,"fi")||s).call(r,null!=t?d(t,"date"):t,"!==",1,{name:"fi",hash:{},fn:e.program(2,o,0),inverse:e.noop,data:o,loc:{start:{line:7,column:63},end:{line:7,column:119}}}))?i:"")+(null!=(i=d(n,"if").call(r,null!=t?d(t,"isToday"):t,{name:"if",hash:{},fn:e.program(4,o,0),inverse:e.noop,data:o,loc:{start:{line:7,column:119},end:{line:7,column:161}}}))?i:"")+(null!=(i=d(n,"if").call(r,null!=t?d(t,"isOtherMonth"):t,{name:"if",hash:{},fn:e.program(6,o,0),inverse:e.noop,data:o,loc:{start:{line:7,column:161},end:{line:7,column:213}}}))?i:"")+'"\n        style="width:'+u(typeof(a=null!=(a=d(n,"width")||(null!=t?d(t,"width"):t))?a:s)===c?a.call(r,{name:"width",hash:{},data:o,loc:{start:{line:8,column:21},end:{line:8,column:30}}}):a)+"%; left:"+u(typeof(a=null!=(a=d(n,"left")||(null!=t?d(t,"left"):t))?a:s)===c?a.call(r,{name:"left",hash:{},data:o,loc:{start:{line:8,column:38},end:{line:8,column:46}}}):a)+"%; background-color: "+u(typeof(a=null!=(a=d(n,"backgroundColor")||(null!=t?d(t,"backgroundColor"):t))?a:s)===c?a.call(r,{name:"backgroundColor",hash:{},data:o,loc:{start:{line:8,column:67},end:{line:8,column:86}}}):a)+"; font-size: "+u(e.lambda((i=(i=o&&d(o,"root"))&&d(i,"styles"))&&d(i,"fontSize"),t))+";\n"+(null!=(i=d(n,"unless").call(r,o&&d(o,"last"),{name:"unless",hash:{},fn:e.program(8,o,0),inverse:e.noop,data:o,loc:{start:{line:9,column:8},end:{line:11,column:19}}}))?i:"")+'        ">\n        <div class="'+u(typeof(a=null!=(a=d(n,"CSS_PREFIX")||(null!=t?d(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:13,column:20},end:{line:13,column:34}}}):a)+'weekday-grid-header">\n            <span style="color: '+u(typeof(a=null!=(a=d(n,"color")||(null!=t?d(t,"color"):t))?a:s)===c?a.call(r,{name:"color",hash:{},data:o,loc:{start:{line:14,column:32},end:{line:14,column:41}}}):a)+';">'+(null!=(i=(d(n,"monthGridHeader-tmpl")||t&&d(t,"monthGridHeader-tmpl")||s).call(r,t,{name:"monthGridHeader-tmpl",hash:{},data:o,loc:{start:{line:14,column:44},end:{line:14,column:75}}}))?i:"")+"</span>\n"+(null!=(i=d(n,"if").call(r,null!=t?d(t,"hiddenSchedules"):t,{name:"if",hash:{},fn:e.program(10,o,0),inverse:e.noop,data:o,loc:{start:{line:15,column:12},end:{line:17,column:19}}}))?i:"")+'        </div>\n        <div class="'+u(typeof(a=null!=(a=d(n,"CSS_PREFIX")||(null!=t?d(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:19,column:20},end:{line:19,column:34}}}):a)+'weekday-grid-footer">\n            <span style="color: '+u(typeof(a=null!=(a=d(n,"color")||(null!=t?d(t,"color"):t))?a:s)===c?a.call(r,{name:"color",hash:{},data:o,loc:{start:{line:20,column:32},end:{line:20,column:41}}}):a)+';">'+(null!=(i=(d(n,"monthGridFooter-tmpl")||t&&d(t,"monthGridFooter-tmpl")||s).call(r,t,{name:"monthGridFooter-tmpl",hash:{},data:o,loc:{start:{line:20,column:44},end:{line:20,column:75}}}))?i:"")+"</span>\n"+(null!=(i=d(n,"if").call(r,null!=t?d(t,"hiddenSchedules"):t,{name:"if",hash:{},fn:e.program(12,o,0),inverse:e.noop,data:o,loc:{start:{line:21,column:12},end:{line:23,column:19}}}))?i:"")+"        </div>\n    </div>\n"},2:function(e,t,n,l,o){var i,a=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return" "+e.escapeExpression("function"==typeof(i=null!=(i=a(n,"CSS_PREFIX")||(null!=t?a(t,"CSS_PREFIX"):t))?i:e.hooks.helperMissing)?i.call(null!=t?t:e.nullContext||{},{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:7,column:84},end:{line:7,column:98}}}):i)+"near-month-day"},4:function(e,t,n,l,o){var i,a=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return" "+e.escapeExpression("function"==typeof(i=null!=(i=a(n,"CSS_PREFIX")||(null!=t?a(t,"CSS_PREFIX"):t))?i:e.hooks.helperMissing)?i.call(null!=t?t:e.nullContext||{},{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:7,column:135},end:{line:7,column:149}}}):i)+"today"},6:function(e,t,n,l,o){var i,a=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return" "+e.escapeExpression("function"==typeof(i=null!=(i=a(n,"CSS_PREFIX")||(null!=t?a(t,"CSS_PREFIX"):t))?i:e.hooks.helperMissing)?i.call(null!=t?t:e.nullContext||{},{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:7,column:182},end:{line:7,column:196}}}):i)+"extra-date"},8:function(e,t,n,l,o){var i,a=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return"        border-right:"+e.escapeExpression(e.lambda((i=(i=o&&a(o,"root"))&&a(i,"styles"))&&a(i,"borderLeft"),t))+";\n"},10:function(e,t,n,l,o){var i,a,r=null!=t?t:e.nullContext||{},s=e.hooks.helperMissing,c="function",u=e.escapeExpression,d=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return'                <span class="'+u(typeof(a=null!=(a=d(n,"CSS_PREFIX")||(null!=t?d(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:16,column:29},end:{line:16,column:43}}}):a)+'weekday-exceed-in-month" data-ymd="'+u(typeof(a=null!=(a=d(n,"ymd")||(null!=t?d(t,"ymd"):t))?a:s)===c?a.call(r,{name:"ymd",hash:{},data:o,loc:{start:{line:16,column:78},end:{line:16,column:85}}}):a)+'">'+(null!=(i=(d(n,"monthGridHeaderExceed-tmpl")||t&&d(t,"monthGridHeaderExceed-tmpl")||s).call(r,null!=t?d(t,"hiddenSchedules"):t,{name:"monthGridHeaderExceed-tmpl",hash:{},data:o,loc:{start:{line:16,column:87},end:{line:16,column:135}}}))?i:"")+"</span>\n"},12:function(e,t,n,l,o){var i,a,r=null!=t?t:e.nullContext||{},s=e.hooks.helperMissing,c="function",u=e.escapeExpression,d=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return'                <span class="'+u(typeof(a=null!=(a=d(n,"CSS_PREFIX")||(null!=t?d(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:22,column:29},end:{line:22,column:43}}}):a)+'weekday-exceed-in-month" data-ymd="'+u(typeof(a=null!=(a=d(n,"ymd")||(null!=t?d(t,"ymd"):t))?a:s)===c?a.call(r,{name:"ymd",hash:{},data:o,loc:{start:{line:22,column:78},end:{line:22,column:85}}}):a)+'">'+(null!=(i=(d(n,"monthGridFooterExceed-tmpl")||t&&d(t,"monthGridFooterExceed-tmpl")||s).call(r,null!=t?d(t,"hiddenSchedules"):t,{name:"monthGridFooterExceed-tmpl",hash:{},data:o,loc:{start:{line:22,column:87},end:{line:22,column:135}}}))?i:"")+"</span>\n"},compiler:[8,">= 4.3.0"],main:function(e,t,n,l,o){var i,a,r=null!=t?t:e.nullContext||{},s=e.hooks.helperMissing,c="function",u=e.escapeExpression,d=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return'<div class="'+u(typeof(a=null!=(a=d(n,"CSS_PREFIX")||(null!=t?d(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:1,column:12},end:{line:1,column:26}}}):a)+'weekday-border"\n    style="\n    border-top: '+u(e.lambda(null!=(i=null!=t?d(t,"styles"):t)?d(i,"borderTop"):i,t))+';\n"></div>\n<div class="'+u(typeof(a=null!=(a=d(n,"CSS_PREFIX")||(null!=t?d(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:5,column:12},end:{line:5,column:26}}}):a)+'weekday-grid">\n'+(null!=(i=d(n,"each").call(r,null!=t?d(t,"dates"):t,{name:"each",hash:{},fn:e.program(1,o,0),inverse:e.noop,data:o,loc:{start:{line:6,column:0},end:{line:26,column:11}}}))?i:"")+'</div>\n<div class="'+u(typeof(a=null!=(a=d(n,"CSS_PREFIX")||(null!=t?d(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:28,column:12},end:{line:28,column:26}}}):a)+'weekday-schedules"></div>\n'},useData:!0})},function(e,t,n){var l=n(7);e.exports=(l.default||l).template({1:function(e,t,n,l,o){var i;return null!=(i=(e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]})(n,"each").call(null!=t?t:e.nullContext||{},t,{name:"each",hash:{},fn:e.program(2,o,0),inverse:e.noop,data:o,loc:{start:{line:2,column:0},end:{line:80,column:11}}}))?i:""},2:function(e,t,n,l,o){var i;return"\n"+(null!=(i=(e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]})(n,"each").call(null!=t?t:e.nullContext||{},t,{name:"each",hash:{},fn:e.program(3,o,0),inverse:e.noop,data:o,loc:{start:{line:3,column:0},end:{line:79,column:11}}}))?i:"")},3:function(e,t,n,l,o){var i;return"\n"+(null!=(i=(e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]})(n,"if").call(null!=t?t:e.nullContext||{},t,{name:"if",hash:{},fn:e.program(4,o,0),inverse:e.noop,data:o,loc:{start:{line:4,column:0},end:{line:78,column:9}}}))?i:"")},4:function(e,t,n,l,o){var i,a=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return"\n"+(null!=(i=(a(n,"fi")||t&&a(t,"fi")||e.hooks.helperMissing).call(null!=t?t:e.nullContext||{},null!=t?a(t,"top"):t,"<",(i=o&&a(o,"root"))&&a(i,"renderLimitIdx"),{name:"fi",hash:{},fn:e.program(5,o,0),inverse:e.noop,data:o,loc:{start:{line:5,column:4},end:{line:77,column:13}}}))?i:"")},5:function(e,t,n,l,o){var i,a,r=null!=t?t:e.nullContext||{},s=e.hooks.helperMissing,c=e.escapeExpression,u="function",d=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return'<div data-id="'+c((d(n,"stamp")||t&&d(t,"stamp")||s).call(r,null!=t?d(t,"model"):t,{name:"stamp",hash:{},data:o,loc:{start:{line:6,column:18},end:{line:6,column:33}}}))+'"\n         class="'+c(typeof(a=null!=(a=d(n,"CSS_PREFIX")||(null!=t?d(t,"CSS_PREFIX"):t))?a:s)===u?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:7,column:16},end:{line:7,column:30}}}):a)+"weekday-schedule-block\n                "+c(typeof(a=null!=(a=d(n,"CSS_PREFIX")||(null!=t?d(t,"CSS_PREFIX"):t))?a:s)===u?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:8,column:16},end:{line:8,column:30}}}):a)+"weekday-schedule-block-"+c((d(n,"stamp")||t&&d(t,"stamp")||s).call(r,null!=t?d(t,"model"):t,{name:"stamp",hash:{},data:o,loc:{start:{line:8,column:53},end:{line:8,column:68}}}))+"\n            "+(null!=(i=d(n,"if").call(r,null!=t?d(t,"exceedLeft"):t,{name:"if",hash:{},fn:e.program(6,o,0),inverse:e.noop,data:o,loc:{start:{line:9,column:12},end:{line:9,column:71}}}))?i:"")+"\n            "+(null!=(i=d(n,"if").call(r,null!=t?d(t,"exceedRight"):t,{name:"if",hash:{},fn:e.program(8,o,0),inverse:e.noop,data:o,loc:{start:{line:10,column:12},end:{line:10,column:73}}}))?i:"")+'"\n         style="'+c((d(n,"month-scheduleBlock")||t&&d(t,"month-scheduleBlock")||s).call(r,t,(i=o&&d(o,"root"))&&d(i,"dates"),(i=o&&d(o,"root"))&&d(i,"scheduleBlockHeight"),(i=o&&d(o,"root"))&&d(i,"gridHeaderHeight"),{name:"month-scheduleBlock",hash:{},data:o,loc:{start:{line:11,column:16},end:{line:11,column:105}}}))+";\n                margin-top:"+c(e.lambda((i=o&&d(o,"root"))&&d(i,"scheduleBlockGutter"),t))+'px">\n'+(null!=(i=(d(n,"fi")||t&&d(t,"fi")||s).call(r,null!=(i=null!=t?d(t,"model"):t)?d(i,"isAllDay"):i,"||",null!=t?d(t,"hasMultiDates"):t,{name:"fi",hash:{},fn:e.program(10,o,0),inverse:e.program(23,o,0),data:o,loc:{start:{line:13,column:8},end:{line:75,column:15}}}))?i:"")+"    </div>\n"},6:function(e,t,n,l,o){var i,a=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return" "+e.escapeExpression("function"==typeof(i=null!=(i=a(n,"CSS_PREFIX")||(null!=t?a(t,"CSS_PREFIX"):t))?i:e.hooks.helperMissing)?i.call(null!=t?t:e.nullContext||{},{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:9,column:31},end:{line:9,column:45}}}):i)+"weekday-exceed-left"},8:function(e,t,n,l,o){var i,a=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return" "+e.escapeExpression("function"==typeof(i=null!=(i=a(n,"CSS_PREFIX")||(null!=t?a(t,"CSS_PREFIX"):t))?i:e.hooks.helperMissing)?i.call(null!=t?t:e.nullContext||{},{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:10,column:32},end:{line:10,column:46}}}):i)+"weekday-exceed-right"},10:function(e,t,n,l,o){var i,a,r=e.lambda,s=e.escapeExpression,c=null!=t?t:e.nullContext||{},u=e.hooks.helperMissing,d="function",h=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return'        <div data-schedule-id="'+s(r(null!=(i=null!=t?h(t,"model"):t)?h(i,"id"):i,t))+'" data-calendar-id="'+s(r(null!=(i=null!=t?h(t,"model"):t)?h(i,"calendarId"):i,t))+'" class="'+s(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:u)===d?a.call(c,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:14,column:92},end:{line:14,column:106}}}):a)+"weekday-schedule "+(null!=(i=h(n,"if").call(c,null!=(i=null!=t?h(t,"model"):t)?h(i,"isFocused"):i,{name:"if",hash:{},fn:e.program(11,o,0),inverse:e.noop,data:o,loc:{start:{line:14,column:123},end:{line:14,column:192}}}))?i:"")+'"\n             style="height:'+s(r((i=o&&h(o,"root"))&&h(i,"scheduleHeight"),t))+"px; line-height:"+s(r((i=o&&h(o,"root"))&&h(i,"scheduleHeight"),t))+"px; border-radius: "+s(r((i=(i=o&&h(o,"root"))&&h(i,"styles"))&&h(i,"borderRadius"),t))+";\n"+(null!=(i=h(n,"unless").call(c,null!=t?h(t,"exceedLeft"):t,{name:"unless",hash:{},fn:e.program(13,o,0),inverse:e.noop,data:o,loc:{start:{line:16,column:16},end:{line:18,column:27}}}))?i:"")+(null!=(i=h(n,"unless").call(c,null!=t?h(t,"exceedRight"):t,{name:"unless",hash:{},fn:e.program(15,o,0),inverse:e.noop,data:o,loc:{start:{line:19,column:16},end:{line:21,column:27}}}))?i:"")+(null!=(i=h(n,"if").call(c,null!=(i=null!=t?h(t,"model"):t)?h(i,"isFocused"):i,{name:"if",hash:{},fn:e.program(17,o,0),inverse:e.program(19,o,0),data:o,loc:{start:{line:22,column:16},end:{line:26,column:23}}}))?i:"")+"                    "+s(r(null!=(i=null!=t?h(t,"model"):t)?h(i,"customStyle"):i,t))+'">\n            <span class="'+s(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:u)===d?a.call(c,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:28,column:25},end:{line:28,column:39}}}):a)+'weekday-schedule-title"\n                  data-title="'+s(r(null!=(i=null!=t?h(t,"model"):t)?h(i,"title"):i,t))+'">'+(null!=(i=(h(n,"allday-tmpl")||t&&h(t,"allday-tmpl")||u).call(c,null!=t?h(t,"model"):t,{name:"allday-tmpl",hash:{},data:o,loc:{start:{line:29,column:47},end:{line:29,column:70}}}))?i:"")+"</span>\n            "+(null!=(i=h(n,"unless").call(c,(h(n,"or")||t&&h(t,"or")||u).call(c,(i=o&&h(o,"root"))&&h(i,"isReadOnly"),null!=(i=null!=t?h(t,"model"):t)?h(i,"isReadOnly"):i,{name:"or",hash:{},data:o,loc:{start:{line:30,column:22},end:{line:30,column:60}}}),{name:"unless",hash:{},fn:e.program(21,o,0),inverse:e.noop,data:o,loc:{start:{line:30,column:12},end:{line:30,column:194}}}))?i:"")+"\n        </div>\n"},11:function(e,t,n,l,o){var i,a=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return e.escapeExpression("function"==typeof(i=null!=(i=a(n,"CSS_PREFIX")||(null!=t?a(t,"CSS_PREFIX"):t))?i:e.hooks.helperMissing)?i.call(null!=t?t:e.nullContext||{},{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:14,column:146},end:{line:14,column:160}}}):i)+"weekday-schedule-focused "},13:function(e,t,n,l,o){var i,a=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return"                    margin-left: "+e.escapeExpression(e.lambda((i=(i=o&&a(o,"root"))&&a(i,"styles"))&&a(i,"marginLeft"),t))+";\n"},15:function(e,t,n,l,o){var i,a=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return"                    margin-right: "+e.escapeExpression(e.lambda((i=(i=o&&a(o,"root"))&&a(i,"styles"))&&a(i,"marginRight"),t))+";\n"},17:function(e,t,n,l,o){var i,a=e.lambda,r=e.escapeExpression,s=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return"                    color: #ffffff; background-color:"+r(a(null!=(i=null!=t?s(t,"model"):t)?s(i,"color"):i,t))+"; border-color:"+r(a(null!=(i=null!=t?s(t,"model"):t)?s(i,"color"):i,t))+";\n"},19:function(e,t,n,l,o){var i,a=e.lambda,r=e.escapeExpression,s=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return"                    color:"+r(a(null!=(i=null!=t?s(t,"model"):t)?s(i,"color"):i,t))+"; background-color:"+r(a(null!=(i=null!=t?s(t,"model"):t)?s(i,"bgColor"):i,t))+"; border-color:"+r(a(null!=(i=null!=t?s(t,"model"):t)?s(i,"borderColor"):i,t))+";\n"},21:function(e,t,n,l,o){var i,a,r=e.escapeExpression,s=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return'<span class="'+r("function"==typeof(a=null!=(a=s(n,"CSS_PREFIX")||(null!=t?s(t,"CSS_PREFIX"):t))?a:e.hooks.helperMissing)?a.call(null!=t?t:e.nullContext||{},{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:30,column:75},end:{line:30,column:89}}}):a)+'weekday-resize-handle handle-y" style="line-height: '+r(e.lambda((i=o&&s(o,"root"))&&s(i,"scheduleHeight"),t))+'px;">&nbsp;</span>'},23:function(e,t,n,l,o){var i,a=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return null!=(i=(a(n,"fi")||t&&a(t,"fi")||e.hooks.helperMissing).call(null!=t?t:e.nullContext||{},null!=(i=null!=t?a(t,"model"):t)?a(i,"category"):i,"===","time",{name:"fi",hash:{},fn:e.program(24,o,0),inverse:e.program(33,o,0),data:o,loc:{start:{line:33,column:12},end:{line:74,column:19}}}))?i:""},24:function(e,t,n,l,o){var i,a,r=e.lambda,s=e.escapeExpression,c=null!=t?t:e.nullContext||{},u=e.hooks.helperMissing,d="function",h=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return'                <div data-schedule-id="'+s(r(null!=(i=null!=t?h(t,"model"):t)?h(i,"id"):i,t))+'" data-calendar-id="'+s(r(null!=(i=null!=t?h(t,"model"):t)?h(i,"calendarId"):i,t))+'" class="'+s(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:u)===d?a.call(c,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:34,column:100},end:{line:34,column:114}}}):a)+"weekday-schedule "+s(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:u)===d?a.call(c,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:34,column:131},end:{line:34,column:145}}}):a)+'weekday-schedule-time"\n                    style="height:'+s(r((i=o&&h(o,"root"))&&h(i,"scheduleHeight"),t))+"px; line-height:"+s(r((i=o&&h(o,"root"))&&h(i,"scheduleHeight"),t))+"px; "+s(r(null!=(i=null!=t?h(t,"model"):t)?h(i,"customStyle"):i,t))+'">\n                    <span class="'+s(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:u)===d?a.call(c,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:36,column:33},end:{line:36,column:47}}}):a)+'weekday-schedule-bullet"\n                        style="top: '+s(r((i=(i=o&&h(o,"root"))&&h(i,"styles"))&&h(i,"scheduleBulletTop"),t))+"px;\n"+(null!=(i=h(n,"if").call(c,null!=(i=null!=t?h(t,"model"):t)?h(i,"isFocused"):i,{name:"if",hash:{},fn:e.program(25,o,0),inverse:e.program(27,o,0),data:o,loc:{start:{line:38,column:28},end:{line:42,column:35}}}))?i:"")+'                            "\n                    ></span>\n                    <span class="'+s(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:u)===d?a.call(c,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:45,column:33},end:{line:45,column:47}}}):a)+'weekday-schedule-title"\n                        style="\n'+(null!=(i=h(n,"if").call(c,null!=(i=null!=t?h(t,"model"):t)?h(i,"isFocused"):i,{name:"if",hash:{},fn:e.program(29,o,0),inverse:e.program(31,o,0),data:o,loc:{start:{line:47,column:28},end:{line:52,column:35}}}))?i:"")+'                            "\n                        data-title="'+s(r(null!=(i=null!=t?h(t,"model"):t)?h(i,"title"):i,t))+'">'+(null!=(i=(h(n,"time-tmpl")||t&&h(t,"time-tmpl")||u).call(c,null!=t?h(t,"model"):t,{name:"time-tmpl",hash:{},data:o,loc:{start:{line:54,column:53},end:{line:54,column:74}}}))?i:"")+"</span>\n                </div>\n"},25:function(e,t,n,l,o){return"                                background: #ffffff\n"},27:function(e,t,n,l,o){var i,a=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return"                                background:"+e.escapeExpression(e.lambda(null!=(i=null!=t?a(t,"model"):t)?a(i,"borderColor"):i,t))+"\n"},29:function(e,t,n,l,o){var i,a=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return"                                color: #ffffff;\n                                background-color: "+e.escapeExpression(e.lambda(null!=(i=null!=t?a(t,"model"):t)?a(i,"color"):i,t))+"\n"},31:function(e,t,n,l,o){return"                                color:#333;\n"},33:function(e,t,n,l,o){var i,a,r=e.lambda,s=e.escapeExpression,c=null!=t?t:e.nullContext||{},u=e.hooks.helperMissing,d="function",h=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return'<div data-schedule-id="'+s(r(null!=(i=null!=t?h(t,"model"):t)?h(i,"id"):i,t))+'" data-calendar-id="'+s(r(null!=(i=null!=t?h(t,"model"):t)?h(i,"calendarId"):i,t))+'" class="'+s(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:u)===d?a.call(c,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:57,column:100},end:{line:57,column:114}}}):a)+"weekday-schedule "+(null!=(i=h(n,"if").call(c,null!=(i=null!=t?h(t,"model"):t)?h(i,"isFocused"):i,{name:"if",hash:{},fn:e.program(11,o,0),inverse:e.noop,data:o,loc:{start:{line:57,column:131},end:{line:57,column:200}}}))?i:"")+'"\n                    style="height:'+s(r((i=o&&h(o,"root"))&&h(i,"scheduleHeight"),t))+"px; line-height:"+s(r((i=o&&h(o,"root"))&&h(i,"scheduleHeight"),t))+"px; border-radius: "+s(r((i=(i=o&&h(o,"root"))&&h(i,"styles"))&&h(i,"borderRadius"),t))+";\n"+(null!=(i=h(n,"unless").call(c,null!=t?h(t,"exceedLeft"):t,{name:"unless",hash:{},fn:e.program(34,o,0),inverse:e.noop,data:o,loc:{start:{line:59,column:20},end:{line:61,column:31}}}))?i:"")+(null!=(i=h(n,"unless").call(c,null!=t?h(t,"exceedRight"):t,{name:"unless",hash:{},fn:e.program(36,o,0),inverse:e.noop,data:o,loc:{start:{line:62,column:20},end:{line:64,column:31}}}))?i:"")+(null!=(i=h(n,"if").call(c,null!=(i=null!=t?h(t,"model"):t)?h(i,"isFocused"):i,{name:"if",hash:{},fn:e.program(38,o,0),inverse:e.program(40,o,0),data:o,loc:{start:{line:65,column:20},end:{line:69,column:27}}}))?i:"")+"                        "+s(r(null!=(i=null!=t?h(t,"model"):t)?h(i,"customStyle"):i,t))+'">\n                    <span class="'+s(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:u)===d?a.call(c,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:71,column:33},end:{line:71,column:47}}}):a)+'weekday-schedule-title"\n                                    data-title="'+s(r(null!=(i=null!=t?h(t,"model"):t)?h(i,"title"):i,t))+'">'+(null!=(i=(h(n,"schedule-tmpl")||t&&h(t,"schedule-tmpl")||u).call(c,null!=t?h(t,"model"):t,{name:"schedule-tmpl",hash:{},data:o,loc:{start:{line:72,column:65},end:{line:72,column:90}}}))?i:"")+"</span>\n                </div>\n"},34:function(e,t,n,l,o){var i,a=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return"                        margin-left: "+e.escapeExpression(e.lambda((i=(i=o&&a(o,"root"))&&a(i,"styles"))&&a(i,"marginLeft"),t))+";\n"},36:function(e,t,n,l,o){var i,a=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return"                        margin-right: "+e.escapeExpression(e.lambda((i=(i=o&&a(o,"root"))&&a(i,"styles"))&&a(i,"marginRight"),t))+";\n"},38:function(e,t,n,l,o){var i,a=e.lambda,r=e.escapeExpression,s=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return"                        color: #ffffff; background-color:"+r(a(null!=(i=null!=t?s(t,"model"):t)?s(i,"color"):i,t))+"; border-color:"+r(a(null!=(i=null!=t?s(t,"model"):t)?s(i,"color"):i,t))+";\n"},40:function(e,t,n,l,o){var i,a=e.lambda,r=e.escapeExpression,s=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return"                        color:"+r(a(null!=(i=null!=t?s(t,"model"):t)?s(i,"color"):i,t))+"; background-color:"+r(a(null!=(i=null!=t?s(t,"model"):t)?s(i,"bgColor"):i,t))+"; border-color:"+r(a(null!=(i=null!=t?s(t,"model"):t)?s(i,"borderColor"):i,t))+";\n"},compiler:[8,">= 4.3.0"],main:function(e,t,n,l,o){var i,a=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return null!=(i=a(n,"each").call(null!=t?t:e.nullContext||{},null!=t?a(t,"matrices"):t,{name:"each",hash:{},fn:e.program(1,o,0),inverse:e.noop,data:o,loc:{start:{line:1,column:0},end:{line:81,column:11}}}))?i:""},useData:!0})},function(e,t,n){"use strict";var l=n(0),o=n(2),i=n(3),a=n(1);function r(e,t,n){this.dragHandler=e,this.monthView=t,this.baseController=n,e.on({click:this._onClick},this)}r.prototype.destroy=function(){this.dragHandler.off(this),this.monthView=this.baseController=this.dragHandler=null},r.prototype._onClick=function(e){var t,n=this,l=this.baseController.schedules,r=a.closest(e.target,o.classname(".weekday-schedule-block"))||a.closest(e.target,o.classname(".month-more-schedule"));(t=a.closest(e.target,o.classname(".weekday-exceed-in-month")))&&n.fire("clickMore",{date:i.parse(a.getData(t,"ymd")),target:t,ymd:a.getData(t,"ymd")}),r&&l.doWhenHas(a.getData(r,"id"),(function(t){n.fire("clickSchedule",{schedule:t,event:e.originEvent})}))},l.CustomEvents.mixin(r),e.exports=r},function(e,t,n){"use strict";var l=n(0),o=n(2),i=n(3),a=n(15),r=n(1),s=n(6),c=n(19),u=n(105),d=n(4).Date,h=300;function p(e,t,n,l){this.dragHandler=e,this.monthView=t,this.baseController=n,this.getScheduleData=null,this._cache=null,this.guide=new u(this),this._requestOnClick=!1,this._disableDblClick=l.disableDblClick,this._disableClick=l.disableClick,e.on("dragStart",this._onDragStart,this),e.on("click",this._onClick,this),this._disableDblClick?h=0:s.on(t.container,"dblclick",this._onDblClick,this)}function m(e){return r.closest(e,o.classname(".weekday-grid"))&&!r.closest(e,o.classname(".weekday-exceed-in-month"))}p.prototype.destroy=function(){this.dragHandler.off(this),this.guide.destroy(),this.monthView&&this.monthView.container&&s.off(this.monthView.container,"dblclick",this._onDblClick,this),this.dragHandler=this.monthView=this.baseController=this.getScheduleData=this._cache=this.guide=null},p.prototype._createSchedule=function(e){this.fire("beforeCreateSchedule",{isAllDay:e.isAllDay,start:e.start,end:e.end,guide:this.guide.guide,triggerEventName:e.triggerEvent})},p.prototype._onDragStart=function(e){var t;m(e.target)&&(this.dragHandler.on({drag:this._onDrag,dragEnd:this._onDragEnd},this),this.getScheduleData=c(this.monthView),t=this.getScheduleData(e.originEvent),this._cache={start:new d(t.date)},this.fire("monthCreationDragstart",t))},p.prototype._onDrag=function(e){var t;this.getScheduleData&&(t=this.getScheduleData(e.originEvent))&&this.fire("monthCreationDrag",t)},p.prototype._onDragEnd=function(e){var t,n,l=this._cache;this.dragHandler.off({drag:this._onDrag,dragEnd:this._onDragEnd},this),this.getScheduleData&&((t=this.getScheduleData(e.originEvent))&&(l.end=new d(t.date),l.isAllDay=!0,n=[l.start,l.end].sort(a.compare.num.asc),l.start=new d(n[0]),l.end=i.end(n[1]),this._createSchedule(l)),this.fire("monthCreationDragend",t),this.getScheduleData=this._cache=null)},p.prototype._onDblClick=function(e){var t,n;m(e.target)&&(t=c(this.monthView)(e),this.fire("monthCreationClick",t),n=this._adjustStartAndEndTime(new d(t.date),new d(t.date)),this._createSchedule({start:n.start,end:n.end,isAllDay:!1,triggerEvent:t.triggerEvent}),this._requestOnClick=!1)},p.prototype._onClick=function(e){var t,n,l=this;m(e.target)&&!this._disableClick&&(t=c(this.monthView)(e.originEvent),this._requestOnClick=!0,setTimeout((function(){l._requestOnClick&&(l.fire("monthCreationClick",t),n=l._adjustStartAndEndTime(new d(t.date),new d(t.date)),l._createSchedule({start:n.start,end:n.end,isAllDay:!1,triggerEvent:t.triggerEvent})),l._requestOnClick=!1}),h))},p.prototype._adjustStartAndEndTime=function(e,t){var n=new d,l=n.getHours(),o=n.getMinutes();return o=o<=30?0:30,e.setHours(l,o,0,0),t.setHours(l+1,o,0,0),{start:e,end:t}},p.prototype.invokeCreationClick=function(e){var t={model:e};this.fire("monthCreationClick",t),this._createSchedule({start:e.start,end:e.end,isAllDay:e.isAllDay,triggerEvent:"manual"})},l.CustomEvents.mixin(p),e.exports=p},function(e,t,n){"use strict";var l=n(35);function o(e){this.monthCreation=e,this.guide=null,e.on({monthCreationDragstart:this._createGuideElement,monthCreationDrag:this._onDrag,monthCreationDragend:this._onDragEnd,monthCreationClick:this._createGuideElement},this)}o.prototype.destroy=function(){this.monthCreation.off(this),this.guide&&this.guide.destroy(),this.guide=this.monthCreation=null},o.prototype._createGuideElement=function(e){this.guide=new l({isCreationMode:!0,height:"100%",top:0},this.monthCreation.monthView),this.guide.start(e)},o.prototype._onDrag=function(e){this.guide.update(e.x,e.y)},o.prototype._onDragEnd=function(){this.guide=null},e.exports=o},function(e,t,n){var l=n(7);e.exports=(l.default||l).template({1:function(e,t,n,l,o){var i,a,r=e.escapeExpression,s=e.lambda,c=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return'<div class="'+r("function"==typeof(a=null!=(a=c(n,"CSS_PREFIX")||(null!=t?c(t,"CSS_PREFIX"):t))?a:e.hooks.helperMissing)?a.call(null!=t?t:e.nullContext||{},{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:3,column:16},end:{line:3,column:30}}}):a)+'month-creation-guide" style="border: '+r(s(null!=(i=null!=t?c(t,"styles"):t)?c(i,"border"):i,t))+"; background-color: "+r(s(null!=(i=null!=t?c(t,"styles"):t)?c(i,"backgroundColor"):i,t))+';"></div>\n'},3:function(e,t,n,l,o){var i,a,r=null!=t?t:e.nullContext||{},s=e.hooks.helperMissing,c="function",u=e.escapeExpression,d=e.lambda,h=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return'<div class="'+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:5,column:16},end:{line:5,column:30}}}):a)+'weekday-schedule"\n        style="height: '+u(d(null!=(i=null!=t?h(t,"styles"):t)?h(i,"scheduleHeight"):i,t))+"; line-height: "+u(d(null!=(i=null!=t?h(t,"styles"):t)?h(i,"scheduleHeight"):i,t))+"; margin-top: "+u(d(null!=(i=null!=t?h(t,"styles"):t)?h(i,"scheduleGutter"):i,t))+"; border-radius:"+u(d(null!=(i=null!=t?h(t,"styles"):t)?h(i,"borderRadius"):i,t))+"; margin-left: "+u(d(null!=(i=null!=t?h(t,"styles"):t)?h(i,"marginLeft"):i,t))+"; margin-right: "+u(d(null!=(i=null!=t?h(t,"styles"):t)?h(i,"marginRight"):i,t))+";\n            color:"+u(typeof(a=null!=(a=h(n,"color")||(null!=t?h(t,"color"):t))?a:s)===c?a.call(r,{name:"color",hash:{},data:o,loc:{start:{line:7,column:18},end:{line:7,column:27}}}):a)+";border-color:"+u(typeof(a=null!=(a=h(n,"borderColor")||(null!=t?h(t,"borderColor"):t))?a:s)===c?a.call(r,{name:"borderColor",hash:{},data:o,loc:{start:{line:7,column:41},end:{line:7,column:56}}}):a)+";background-color:"+u(typeof(a=null!=(a=h(n,"bgColor")||(null!=t?h(t,"bgColor"):t))?a:s)===c?a.call(r,{name:"bgColor",hash:{},data:o,loc:{start:{line:7,column:74},end:{line:7,column:85}}}):a)+'">\n        <div class="'+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:8,column:20},end:{line:8,column:34}}}):a)+'weekday-schedule-title">\n'+(null!=(i=h(n,"if").call(r,null!=t?h(t,"isAllDay"):t,{name:"if",hash:{},fn:e.program(4,o,0),inverse:e.program(6,o,0),data:o,loc:{start:{line:9,column:12},end:{line:13,column:19}}}))?i:"")+'        </div>\n        <div class="'+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:15,column:20},end:{line:15,column:34}}}):a)+'weekday-resize-handle handle-y" style="line-height: '+u(d(null!=(i=null!=t?h(t,"styles"):t)?h(i,"scheduleHeight"):i,t))+';">&nbsp;</div>\n    </div>\n'},4:function(e,t,n,l,o){var i,a=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return"                "+(null!=(i=(a(n,"allday-tmpl")||t&&a(t,"allday-tmpl")||e.hooks.helperMissing).call(null!=t?t:e.nullContext||{},t,{name:"allday-tmpl",hash:{},data:o,loc:{start:{line:10,column:16},end:{line:10,column:38}}}))?i:"")+"\n"},6:function(e,t,n,l,o){var i,a=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return"                "+(null!=(i=(a(n,"time-tmpl")||t&&a(t,"time-tmpl")||e.hooks.helperMissing).call(null!=t?t:e.nullContext||{},t,{name:"time-tmpl",hash:{},data:o,loc:{start:{line:12,column:16},end:{line:12,column:36}}}))?i:"")+"\n"},compiler:[8,">= 4.3.0"],main:function(e,t,n,l,o){var i,a,r=null!=t?t:e.nullContext||{},s=e.hooks.helperMissing,c="function",u=e.escapeExpression,d=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return'<div class="'+u(typeof(a=null!=(a=d(n,"CSS_PREFIX")||(null!=t?d(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:1,column:12},end:{line:1,column:26}}}):a)+'month-guide-block" style="top:'+u(typeof(a=null!=(a=d(n,"top")||(null!=t?d(t,"top"):t))?a:s)===c?a.call(r,{name:"top",hash:{},data:o,loc:{start:{line:1,column:56},end:{line:1,column:63}}}):a)+";height:"+u(typeof(a=null!=(a=d(n,"height")||(null!=t?d(t,"height"):t))?a:s)===c?a.call(r,{name:"height",hash:{},data:o,loc:{start:{line:1,column:71},end:{line:1,column:81}}}):a)+';display:none">\n'+(null!=(i=d(n,"if").call(r,null!=t?d(t,"isCreationMode"):t,{name:"if",hash:{},fn:e.program(1,o,0),inverse:e.program(3,o,0),data:o,loc:{start:{line:2,column:4},end:{line:17,column:11}}}))?i:"")+"</div>\n"},useData:!0})},function(e,t,n){"use strict";var l=n(0),o=n(2),i=n(3),a=n(1),r=n(19),s=n(108),c=n(4).Date,u=n(5);function d(e,t,n){this.dragHandler=e,this.monthView=t,this.baseController=n,this.getScheduleData=null,this._cache=null,this.guide=new s(this),e.on("dragStart",this._onDragStart,this)}d.prototype.destroy=function(){this.dragHandler.off(this),this.dragHandler=this.monthView=this.baseController=null},d.prototype._updateSchedule=function(e){var t=i.end(new c(e.end)),n=e.schedule,l=u.getScheduleChanges(n,["end"],{end:t});this.fire("beforeUpdateSchedule",{schedule:n,changes:l,start:new c(n.getStarts()),end:t})},d.prototype._onDragStart=function(e){var t,n,l,i=e.target;a.hasClass(i,o.classname("weekday-resize-handle"))&&(i=a.closest(i,o.classname(".weekday-schedule-block")))&&(t=a.getData(i,"id"),n=this.baseController.schedules.items[t],this.dragHandler.on({drag:this._onDrag,dragEnd:this._onDragEnd},this),this.getScheduleData=r(this.monthView),(l=this.getScheduleData(e.originEvent)).target=i,l.model=n,this._cache={schedule:n,target:i,start:new c(l.date)},this.fire("monthResizeDragstart",l))},d.prototype._onDrag=function(e){var t;this.getScheduleData&&(t=this.getScheduleData(e.originEvent))&&this.fire("monthResizeDrag",t)},d.prototype._onDragEnd=function(e){var t,n,l,o=this._cache;this.dragHandler.off({drag:this._onDrag,dragEnd:this._onDragEnd},this),this.getScheduleData&&((t=this.getScheduleData(e.originEvent))&&(n=new c(o.schedule.getStarts()),l=new c(t.date),o.end=l,n<=o.end&&this._updateSchedule(o)),this.fire("monthResizeDragend",t),this.getScheduleData=this._cache=null)},l.CustomEvents.mixin(d),e.exports=d},function(e,t,n){"use strict";(function(t){var l=n(0),o=n(2),i=n(1),a=n(35);function r(e){this.monthResize=e,this.elements=null,this.guide=null,e.on({monthResizeDragstart:this._onDragStart,monthResizeDrag:this._onDrag,monthResizeDragend:this._onDragEnd},this)}r.prototype.destroy=function(){this.monthResize.off(this),this.guide.destroy(),this.guide=this.monthResize=null},r.prototype._hideScheduleBlocks=function(e){this.elements=i.find(o.classname(".weekday-schedule-block-"+e),this.monthResize.monthView.container,!0),l.forEach(this.elements,(function(e){e.style.display="none"}))},r.prototype._showScheduleBlocks=function(){l.forEach(this.elements,(function(e){e.style.display="block"}))},r.prototype._onDragStart=function(e){this.guide=new a({isResizeMode:!0},this.monthResize.monthView),this.guide.start(e),this._hideScheduleBlocks(e.model.cid()),l.browser.msie||i.addClass(t.document.body,o.classname("resizing-x"))},r.prototype._onDrag=function(e){this.guide.update(e.x,e.y)},r.prototype._onDragEnd=function(){this._showScheduleBlocks(),this.guide.destroy(),this.elements=this.guide=null,l.browser.msie||i.removeClass(t.document.body,o.classname("resizing-x"))},e.exports=r}).call(this,n(9))},function(e,t,n){"use strict";var l=n(0),o=n(2),i=n(1),a=n(3),r=n(19),s=n(110),c=n(4).Date;function u(e,t,n){this.dragHandler=e,this.monthView=t,this.baseController=n,this.getScheduleData=null,this._cache=null,this.guide=new s(this),e.on("dragStart",this._onDragStart,this)}u.prototype.destroy=function(){this.dragHandler.off(this),this.dragHandler=this.monthView=this.baseController=null},u.prototype.updateSchedule=function(e){var t=e.model,n=t.duration(),l=a.raw(t.start),o=new c(e.end),i=new c(o);i.setHours(l.h,l.m,l.s,l.ms),this.fire("beforeUpdateSchedule",{schedule:t,changes:{start:i,end:new c(i).addMilliseconds(n)},start:i,end:new c(i).addMilliseconds(n)})},u.prototype.getMonthScheduleBlock=function(e){var t=o.classname(".weekday-schedule-block");return i.closest(e,t)},u.prototype.getMoreLayerScheduleBlock=function(e){var t=o.classname(".month-more-schedule");return i.closest(e,t)},u.prototype.hasPermissionToHandle=function(e){var t,n=null;return i.hasClass(e,o.classname("weekday-resize-handle"))?null:((t=this.getMonthScheduleBlock(e))?n=i.getData(t,"id"):(t=this.getMoreLayerScheduleBlock(e))&&(n=i.getData(t,"id"),this.fire("monthMoveStart_from_morelayer")),n)},u.prototype._onDragStart=function(e){var t,n=e.target,l=this.hasPermissionToHandle(n),o=this.baseController.schedules.items[l];l&&o&&!o.isReadOnly&&!o.isPending&&(this.dragHandler.on({drag:this._onDrag,dragEnd:this._onDragEnd},this),this.getScheduleData=r(this.monthView),(t=this.getScheduleData(e.originEvent)).originEvent=e.originEvent,t.target=this.getMonthScheduleBlock(n),t.model=o,this._cache={model:o,target:n,start:new c(Number(t.date))},this.fire("monthMoveDragstart",t))},u.prototype._onDrag=function(e){var t;this.getScheduleData&&(t=l.extend({originEvent:e.originEvent},this.getScheduleData(e.originEvent)))&&this.fire("monthMoveDrag",t)},u.prototype._onDragEnd=function(e){var t,n=this._cache;this.dragHandler.off({drag:this._onDrag,dragEnd:this._onDragEnd},this),this.getScheduleData&&((t=this.getScheduleData(e.originEvent))&&(n.end=new c(t.date),this.updateSchedule(n)),this.fire("monthMoveDragend",t),this.getScheduleData=this._cache=null)},l.CustomEvents.mixin(u),e.exports=u},function(e,t,n){"use strict";(function(t){var l=n(0),o=n(2),i=n(1),a=n(6),r=n(16),s=n(111),c=n(14);function u(e){this.monthMove=e,this.elements=null,this.layer=null,e.on({monthMoveDragstart:this._onDragStart,monthMoveDrag:this._onDrag,monthMoveDragend:this._onDragEnd},this)}u.prototype.destroy=function(){this.monthMove.off(this),this._clearGridBgColor(),this.layer&&this.layer.destroy(),this.element&&i.remove(this.element),this.monthMove=this.elements=this.layer=null},u.prototype._hideOriginScheduleBlocks=function(e){var t=o.classname("weekday-schedule-block-dragging-dim");this.elements=i.find(o.classname(".weekday-schedule-block-"+e),this.monthMove.monthView.container,!0),l.forEach(this.elements,(function(e){i.addClass(e,t)}))},u.prototype._showOriginScheduleBlocks=function(){var e=o.classname("weekday-schedule-block-dragging-dim");l.forEach(this.elements,(function(t){i.removeClass(t,e)}))},u.prototype._clearGridBgColor=function(){var e=o.classname(".weekday-filled"),t=o.classname("weekday-filled"),n=i.find(e,this.monthMove.monthView.container);n&&i.removeClass(n,t)},u.prototype._updateGridBgColor=function(e){var t=i.find(o.classname(".weekday-grid-line"),this.monthMove.monthView.container,!0),n=o.classname("weekday-filled"),l=e.x+e.sizeX*e.y;this._clearGridBgColor(),t&&t[l]&&i.addClass(t[l],n)},u.prototype._onDragStart=function(e){var n=this.monthMove.monthView,u=n.children.single(),d=u.options,h=100/u.getRenderDateRange().length,p=d.scheduleGutter+d.scheduleHeight,m=n.container,f=a.getMousePosition(e.originEvent,m),g=e.model,y=new r(null,m);this._hideOriginScheduleBlocks(g.cid()),this.layer=y,y.setSize(h+"%",p),y.setPosition(f[0],f[1]),y.setContent(s({model:l.extend(c.create(g),g),styles:{scheduleHeight:d.scheduleHeight,scheduleBulletTop:d.scheduleHeight/3,borderRadius:n.controller.theme.month.schedule.borderRadius}})),y.show(),l.browser.msie||i.addClass(t.document.body,o.classname("dragging"))},u.prototype._onDrag=function(e){var t=this.monthMove.monthView.container,n=a.getMousePosition(e.originEvent,t);this._updateGridBgColor(e),this.layer&&this.layer.setPosition(n[0],n[1])},u.prototype._onDragEnd=function(){this._showOriginScheduleBlocks(),l.browser.msie||i.removeClass(t.document.body,o.classname("dragging")),this._clearGridBgColor(),this.layer.destroy(),this.layer=null},e.exports=u}).call(this,n(9))},function(e,t,n){var l=n(7);e.exports=(l.default||l).template({1:function(e,t,n,l,o){var i,a=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return"            border-left:3px solid "+e.escapeExpression(e.lambda(null!=(i=null!=t?a(t,"model"):t)?a(i,"borderColor"):i,t))+";\n            "},3:function(e,t,n,l,o){var i,a,r=null!=t?t:e.nullContext||{},s=e.hooks.helperMissing,c="function",u=e.escapeExpression,d=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return'    <span class="'+u(typeof(a=null!=(a=d(n,"CSS_PREFIX")||(null!=t?d(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:14,column:17},end:{line:14,column:31}}}):a)+"weekday-schedule-bullet "+u(typeof(a=null!=(a=d(n,"CSS_PREFIX")||(null!=t?d(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:14,column:55},end:{line:14,column:69}}}):a)+'weekday-schedule-bullet-focused" style="top: '+u(e.lambda(null!=(i=null!=t?d(t,"styles"):t)?d(i,"scheduleBulletTop"):i,t))+'px;"></span>\n'},5:function(e,t,n,l,o){var i,a=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return e.escapeExpression("function"==typeof(i=null!=(i=a(n,"CSS_PREFIX")||(null!=t?a(t,"CSS_PREFIX"):t))?i:e.hooks.helperMissing)?i.call(null!=t?t:e.nullContext||{},{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:16,column:110},end:{line:16,column:124}}}):i)+"weekday-schedule-title-focused"},7:function(e,t,n,l,o){var i,a=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return"            "+(null!=(i=(a(n,"allday-tmpl")||t&&a(t,"allday-tmpl")||e.hooks.helperMissing).call(null!=t?t:e.nullContext||{},null!=t?a(t,"model"):t,{name:"allday-tmpl",hash:{},data:o,loc:{start:{line:18,column:12},end:{line:18,column:35}}}))?i:"")+"\n"},9:function(e,t,n,l,o){var i,a=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return"            "+(null!=(i=(a(n,"time-tmpl")||t&&a(t,"time-tmpl")||e.hooks.helperMissing).call(null!=t?t:e.nullContext||{},null!=t?a(t,"model"):t,{name:"time-tmpl",hash:{},data:o,loc:{start:{line:20,column:12},end:{line:20,column:33}}}))?i:"")+"\n"},compiler:[8,">= 4.3.0"],main:function(e,t,n,l,o){var i,a,r=null!=t?t:e.nullContext||{},s=e.hooks.helperMissing,c="function",u=e.escapeExpression,d=e.lambda,h=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return'<div class="'+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:1,column:12},end:{line:1,column:26}}}):a)+"month-guide "+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:1,column:38},end:{line:1,column:52}}}):a)+'month-guide-focused"\n     style="top: -50%;\n            left: -50%;\n            width: 100%;\n            color: #ffffff;\n            background-color:'+u(d(null!=(i=null!=t?h(t,"model"):t)?h(i,"dragBgColor"):i,t))+";\n            height:"+u(d(null!=(i=null!=t?h(t,"styles"):t)?h(i,"scheduleHeight"):i,t))+"px;\n            line-height:"+u(d(null!=(i=null!=t?h(t,"styles"):t)?h(i,"scheduleHeight"):i,t))+"px;\n            border-radius: "+u(d(null!=(i=null!=t?h(t,"styles"):t)?h(i,"borderRadius"):i,t))+";\n"+(null!=(i=h(n,"if").call(r,null!=(i=null!=t?h(t,"model"):t)?h(i,"isAllDay"):i,{name:"if",hash:{},fn:e.program(1,o,0),inverse:e.noop,data:o,loc:{start:{line:10,column:12},end:{line:12,column:19}}}))?i:"")+'">\n'+(null!=(i=h(n,"unless").call(r,null!=(i=null!=t?h(t,"model"):t)?h(i,"isAllDay"):i,{name:"unless",hash:{},fn:e.program(3,o,0),inverse:e.noop,data:o,loc:{start:{line:13,column:4},end:{line:15,column:15}}}))?i:"")+'    <div class="'+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:16,column:16},end:{line:16,column:30}}}):a)+"month-move-guide "+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:16,column:47},end:{line:16,column:61}}}):a)+"weekday-schedule-title "+(null!=(i=h(n,"unless").call(r,null!=(i=null!=t?h(t,"model"):t)?h(i,"isAllDay"):i,{name:"unless",hash:{},fn:e.program(5,o,0),inverse:e.noop,data:o,loc:{start:{line:16,column:84},end:{line:16,column:165}}}))?i:"")+'">\n'+(null!=(i=h(n,"if").call(r,null!=(i=null!=t?h(t,"model"):t)?h(i,"isAllDay"):i,{name:"if",hash:{},fn:e.program(7,o,0),inverse:e.program(9,o,0),data:o,loc:{start:{line:17,column:8},end:{line:21,column:15}}}))?i:"")+'    </div>\n</div>\n<div class="'+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:24,column:12},end:{line:24,column:26}}}):a)+'month-guide-cover" style="height:'+u(d(null!=(i=null!=t?h(t,"styles"):t)?h(i,"scheduleHeight"):i,t))+"px; border-radius: "+u(d(null!=(i=null!=t?h(t,"styles"):t)?h(i,"borderRadius"):i,t))+';"></div>\n'},useData:!0})},function(e,t,n){"use strict";var l=n(0),o=n(2),i=n(6),a=n(1),r=n(8),s=n(16),c=n(5),u=n(113);function d(e,t,n){r.call(this,t),this.layer=new s(null,t),this._viewModel=null,this.options=l.extend({moreLayerSize:{width:null,height:null},scheduleHeight:parseInt(n.month.schedule.height,10)||18,scheduleGutter:parseInt(n.month.schedule.marginTop,10)||2,scheduleBulletTop:(parseInt(n.month.schedule.height,10)||18)/3,borderRadius:n.month.schedule.borderRadius},e),this.theme=n,i.on(t,"click",this._onClick,this)}l.inherit(d,r),d.prototype._onClick=function(e){var t=i.getEventTarget(e),n=o.classname("month-more-close");(a.hasClass(t,n)||a.closest(t,"."+n))&&this.hide()},d.prototype._onMouseDown=function(e){var t=i.getEventTarget(e);a.closest(t,o.classname(".month-more"))||this.hide()},d.prototype._getRenderPosition=function(e,t){var n=i.getMousePosition({clientX:a.getPosition(e)[0],clientY:a.getPosition(t)[1]},this.container),l=a.getSize(this.container),o=n[0]-5,r=n[1]-5;return[o=c.ratio(l[0],100,o),r=c.ratio(l[1],100,r)]},d.prototype.destroy=function(){this.layer.destroy(),this.layer=null,i.off(this.container,"click",this._onClick,this),i.off(document.body,"mousedown",this._onMouseDown,this),r.prototype.destroy.call(this)},d.prototype.render=function(e){var t,n,r,s,c=a.closest(e.target,o.classname(".weekday-grid-line")),d=a.closest(c,o.classname(".month-week-item")),h=this.layer,p=this,m=this._getRenderPosition(c,d),f=a.getSize(d)[1]+10,g=c.offsetWidth+10,y=this.options,S=y.moreLayerSize,_=this._getStyles(this.theme),C="",v=a.getSize(this.container),E=m[0],w=m[1];this._viewModel=l.extend(e,{scheduleGutter:y.scheduleGutter,scheduleHeight:y.scheduleHeight,scheduleBulletTop:y.scheduleBulletTop,borderRadius:y.borderRadius,styles:_}),g=Math.max(g,280),C=parseInt(_.titleHeight,10),C+=parseInt(_.titleMarginBottom,10),e.schedules.length<=10?C+=(y.scheduleGutter+y.scheduleHeight)*e.schedules.length:C+=10*(y.scheduleGutter+y.scheduleHeight),C+=parseInt(_.paddingBottom,10),C+=5,S.width&&(g=S.width),S.height&&(C=S.height),(isNaN(C)||C<f)&&(C=f),h.setContent(u(e)),t=E*v[0]/100,n=w*v[1]/100,r=t+g>=v[0],s=n+C>=v[1],E+="%",w+="%",r&&s?h.setLTRB({right:0,bottom:0}):!r&&s?h.setLTRB({left:E,bottom:0}):r&&!s?h.setLTRB({right:0,top:w}):h.setPosition(E,w),h.setSize(g,C),h.show(),l.debounce((function(){i.on(document.body,"mousedown",p._onMouseDown,p)}))()},d.prototype.hide=function(){this.layer.hide(),i.off(document.body,"mousedown",this._onMouseDown,this)},d.prototype.refresh=function(){this._viewModel&&this.layer.setContent(u(this._viewModel))},d.prototype.getMoreViewElement=function(){return a.find(o.classname(".month-more"),this.layer.container)},d.prototype._getStyles=function(e){var t={},n="";return e&&(t.border=e.month.moreView.border||e.common.border,t.boxShadow=e.month.moreView.boxShadow,t.backgroundColor=e.month.moreView.backgroundColor||e.common.backgroundColor,t.paddingBottom=e.month.moreView.paddingBottom,t.titleHeight=e.month.moreViewTitle.height,t.titleMarginBottom=e.month.moreViewTitle.marginBottom,t.titleBackgroundColor=e.month.moreViewTitle.backgroundColor,t.titleBorderBottom=e.month.moreViewTitle.borderBottom,t.titlePadding=e.month.moreViewTitle.padding,t.listPadding=e.month.moreViewList.padding,n="calc(100%",parseInt(t.titleHeight,10)&&(n+=" - "+t.titleHeight),parseInt(t.titleMarginBottom,10)&&(n+=" - "+t.titleMarginBottom),n+=")",t.listHeight=n),t},e.exports=d},function(e,t,n){var l=n(7);e.exports=(l.default||l).template({1:function(e,t,n,l,o){var i,a=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return null!=(i=(a(n,"fi")||t&&a(t,"fi")||e.hooks.helperMissing).call(null!=t?t:e.nullContext||{},null!=(i=null!=t?a(t,"model"):t)?a(i,"isAllDay"):i,"||",null!=t?a(t,"hasMultiDates"):t,{name:"fi",hash:{},fn:e.program(2,o,0),inverse:e.program(7,o,0),data:o,loc:{start:{line:9,column:8},end:{line:65,column:15}}}))?i:""},2:function(e,t,n,l,o){var i,a,r=null!=t?t:e.nullContext||{},s=e.hooks.helperMissing,c=e.escapeExpression,u=e.lambda,d="function",h=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return'<div data-id="'+c((h(n,"stamp")||t&&h(t,"stamp")||s).call(r,null!=t?h(t,"model"):t,{name:"stamp",hash:{},data:o,loc:{start:{line:10,column:26},end:{line:10,column:41}}}))+'"\n                data-schedule-id="'+c(u(null!=(i=null!=t?h(t,"model"):t)?h(i,"id"):i,t))+'" data-calendar-id="'+c(u(null!=(i=null!=t?h(t,"model"):t)?h(i,"calendarId"):i,t))+'"\n                class="'+c(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===d?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:12,column:23},end:{line:12,column:37}}}):a)+"month-more-schedule "+c(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===d?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:12,column:57},end:{line:12,column:71}}}):a)+"month-more-allday "+c(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===d?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:12,column:89},end:{line:12,column:103}}}):a)+'weekday-schedule-title"\n                style="height: '+c(u((i=o&&h(o,"root"))&&h(i,"scheduleHeight"),t))+"px; line-height: "+c(u((i=o&&h(o,"root"))&&h(i,"scheduleHeight"),t))+"px; margin-top: "+c(u((i=o&&h(o,"root"))&&h(i,"scheduleGutter"),t))+"px; border-radius: "+c(u((i=o&&h(o,"root"))&&h(i,"borderRadius"),t))+";\n"+(null!=(i=h(n,"if").call(r,null!=(i=null!=t?h(t,"model"):t)?h(i,"isFocused"):i,{name:"if",hash:{},fn:e.program(3,o,0),inverse:e.program(5,o,0),data:o,loc:{start:{line:14,column:20},end:{line:18,column:27}}}))?i:"")+"                    "+c(u(null!=(i=null!=t?h(t,"model"):t)?h(i,"customStyle"):i,t))+'">\n                    '+(null!=(i=(h(n,"allday-tmpl")||t&&h(t,"allday-tmpl")||s).call(r,null!=t?h(t,"model"):t,{name:"allday-tmpl",hash:{},data:o,loc:{start:{line:20,column:20},end:{line:20,column:43}}}))?i:"")+"\n            </div>\n"},3:function(e,t,n,l,o){var i,a=e.lambda,r=e.escapeExpression,s=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return"                        color: #ffffff; background-color:"+r(a(null!=(i=null!=t?s(t,"model"):t)?s(i,"color"):i,t))+"; border-left:3px solid "+r(a(null!=(i=null!=t?s(t,"model"):t)?s(i,"borderColor"):i,t))+";\n"},5:function(e,t,n,l,o){var i,a=e.lambda,r=e.escapeExpression,s=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return"                        color:"+r(a(null!=(i=null!=t?s(t,"model"):t)?s(i,"color"):i,t))+"; background-color:"+r(a(null!=(i=null!=t?s(t,"model"):t)?s(i,"bgColor"):i,t))+"; border-left:3px solid "+r(a(null!=(i=null!=t?s(t,"model"):t)?s(i,"borderColor"):i,t))+";\n"},7:function(e,t,n,l,o){var i,a=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return null!=(i=(a(n,"fi")||t&&a(t,"fi")||e.hooks.helperMissing).call(null!=t?t:e.nullContext||{},null!=(i=null!=t?a(t,"model"):t)?a(i,"category"):i,"===","time",{name:"fi",hash:{},fn:e.program(8,o,0),inverse:e.program(17,o,0),data:o,loc:{start:{line:23,column:12},end:{line:64,column:19}}}))?i:""},8:function(e,t,n,l,o){var i,a,r=null!=t?t:e.nullContext||{},s=e.hooks.helperMissing,c=e.escapeExpression,u=e.lambda,d="function",h=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return'                <div data-id="'+c((h(n,"stamp")||t&&h(t,"stamp")||s).call(r,null!=t?h(t,"model"):t,{name:"stamp",hash:{},data:o,loc:{start:{line:24,column:30},end:{line:24,column:45}}}))+'"\n                    data-schedule-id="'+c(u(null!=(i=null!=t?h(t,"model"):t)?h(i,"id"):i,t))+'" data-calendar-id="'+c(u(null!=(i=null!=t?h(t,"model"):t)?h(i,"calendarId"):i,t))+'"\n                    class="'+c(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===d?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:26,column:27},end:{line:26,column:41}}}):a)+"month-more-schedule "+c(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===d?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:26,column:61},end:{line:26,column:75}}}):a)+"weekday-schedule "+c(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===d?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:26,column:92},end:{line:26,column:106}}}):a)+'weekday-schedule-time"\n                    style="height: '+c(u((i=o&&h(o,"root"))&&h(i,"scheduleHeight"),t))+"px; line-height: "+c(u((i=o&&h(o,"root"))&&h(i,"scheduleHeight"),t))+"px; margin-top: "+c(u((i=o&&h(o,"root"))&&h(i,"scheduleGutter"),t))+"px;"+c(u(null!=(i=null!=t?h(t,"model"):t)?h(i,"customStyle"):i,t))+'">\n                    <span class="'+c(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===d?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:28,column:33},end:{line:28,column:47}}}):a)+'weekday-schedule-bullet"\n                        style="top: '+c(u((i=o&&h(o,"root"))&&h(i,"scheduleBulletTop"),t))+"px;\n"+(null!=(i=h(n,"if").call(r,null!=(i=null!=t?h(t,"model"):t)?h(i,"isFocused"):i,{name:"if",hash:{},fn:e.program(9,o,0),inverse:e.program(11,o,0),data:o,loc:{start:{line:30,column:28},end:{line:34,column:35}}}))?i:"")+'"></span>\n                    <span class="'+c(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===d?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:35,column:33},end:{line:35,column:47}}}):a)+'weekday-schedule-title"\n                        style="'+(null!=(i=h(n,"if").call(r,null!=(i=null!=t?h(t,"model"):t)?h(i,"isFocused"):i,{name:"if",hash:{},fn:e.program(13,o,0),inverse:e.program(15,o,0),data:o,loc:{start:{line:36,column:31},end:{line:41,column:35}}}))?i:"")+'"\n                        data-title="'+c(u(null!=(i=null!=t?h(t,"model"):t)?h(i,"title"):i,t))+'">'+(null!=(i=(h(n,"time-tmpl")||t&&h(t,"time-tmpl")||s).call(r,null!=t?h(t,"model"):t,{name:"time-tmpl",hash:{},data:o,loc:{start:{line:42,column:53},end:{line:42,column:74}}}))?i:"")+"</span>\n                </div>\n"},9:function(e,t,n,l,o){return"                                background: #ffffff\n"},11:function(e,t,n,l,o){var i,a=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return"                                background:"+e.escapeExpression(e.lambda(null!=(i=null!=t?a(t,"model"):t)?a(i,"borderColor"):i,t))+"\n                            "},13:function(e,t,n,l,o){var i,a=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return"\n                                color: #ffffff;\n                                background-color: "+e.escapeExpression(e.lambda(null!=(i=null!=t?a(t,"model"):t)?a(i,"color"):i,t))+"\n"},15:function(e,t,n,l,o){return"                                color:#333;\n                            "},17:function(e,t,n,l,o){var i,a,r=null!=t?t:e.nullContext||{},s=e.hooks.helperMissing,c=e.escapeExpression,u=e.lambda,d="function",h=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return'<div data-id="'+c((h(n,"stamp")||t&&h(t,"stamp")||s).call(r,null!=t?h(t,"model"):t,{name:"stamp",hash:{},data:o,loc:{start:{line:45,column:30},end:{line:45,column:45}}}))+'"\n                    data-schedule-id="'+c(u(null!=(i=null!=t?h(t,"model"):t)?h(i,"id"):i,t))+'" data-calendar-id="'+c(u(null!=(i=null!=t?h(t,"model"):t)?h(i,"calendarId"):i,t))+'"\n                    class="'+c(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===d?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:47,column:27},end:{line:47,column:41}}}):a)+"month-more-schedule "+c(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===d?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:47,column:61},end:{line:47,column:75}}}):a)+"weekday-schedule "+(null!=(i=h(n,"if").call(r,null!=(i=null!=t?h(t,"model"):t)?h(i,"isFocused"):i,{name:"if",hash:{},fn:e.program(18,o,0),inverse:e.noop,data:o,loc:{start:{line:47,column:92},end:{line:47,column:161}}}))?i:"")+'"\n                    style="height:'+c(u((i=o&&h(o,"root"))&&h(i,"scheduleHeight"),t))+"px; line-height:"+c(u((i=o&&h(o,"root"))&&h(i,"scheduleHeight"),t))+"px; border-radius: "+c(u((i=(i=o&&h(o,"root"))&&h(i,"styles"))&&h(i,"borderRadius"),t))+";\n"+(null!=(i=h(n,"unless").call(r,null!=t?h(t,"exceedLeft"):t,{name:"unless",hash:{},fn:e.program(20,o,0),inverse:e.noop,data:o,loc:{start:{line:49,column:20},end:{line:51,column:31}}}))?i:"")+(null!=(i=h(n,"unless").call(r,null!=t?h(t,"exceedRight"):t,{name:"unless",hash:{},fn:e.program(22,o,0),inverse:e.noop,data:o,loc:{start:{line:52,column:20},end:{line:54,column:31}}}))?i:"")+(null!=(i=h(n,"if").call(r,null!=(i=null!=t?h(t,"model"):t)?h(i,"isFocused"):i,{name:"if",hash:{},fn:e.program(24,o,0),inverse:e.program(26,o,0),data:o,loc:{start:{line:55,column:20},end:{line:59,column:27}}}))?i:"")+"                        "+c(u(null!=(i=null!=t?h(t,"model"):t)?h(i,"customStyle"):i,t))+'">\n                    <span class="'+c(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===d?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:61,column:33},end:{line:61,column:47}}}):a)+'weekday-schedule-title"\n                                    data-title="'+c(u(null!=(i=null!=t?h(t,"model"):t)?h(i,"title"):i,t))+'">'+(null!=(i=(h(n,"schedule-tmpl")||t&&h(t,"schedule-tmpl")||s).call(r,null!=t?h(t,"model"):t,{name:"schedule-tmpl",hash:{},data:o,loc:{start:{line:62,column:65},end:{line:62,column:90}}}))?i:"")+"</span>\n                </div>\n"},18:function(e,t,n,l,o){var i,a=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return e.escapeExpression("function"==typeof(i=null!=(i=a(n,"CSS_PREFIX")||(null!=t?a(t,"CSS_PREFIX"):t))?i:e.hooks.helperMissing)?i.call(null!=t?t:e.nullContext||{},{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:47,column:115},end:{line:47,column:129}}}):i)+"weekday-schedule-focused "},20:function(e,t,n,l,o){var i,a=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return"                        margin-left: "+e.escapeExpression(e.lambda((i=(i=o&&a(o,"root"))&&a(i,"styles"))&&a(i,"marginLeft"),t))+";\n"},22:function(e,t,n,l,o){var i,a=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return"                        margin-right: "+e.escapeExpression(e.lambda((i=(i=o&&a(o,"root"))&&a(i,"styles"))&&a(i,"marginRight"),t))+";\n"},24:function(e,t,n,l,o){var i,a=e.lambda,r=e.escapeExpression,s=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return"                        color: #ffffff; background-color:"+r(a(null!=(i=null!=t?s(t,"model"):t)?s(i,"color"):i,t))+"; border-color:"+r(a(null!=(i=null!=t?s(t,"model"):t)?s(i,"color"):i,t))+";\n"},26:function(e,t,n,l,o){var i,a=e.lambda,r=e.escapeExpression,s=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return"                        color:"+r(a(null!=(i=null!=t?s(t,"model"):t)?s(i,"color"):i,t))+"; background-color:"+r(a(null!=(i=null!=t?s(t,"model"):t)?s(i,"bgColor"):i,t))+"; border-color:"+r(a(null!=(i=null!=t?s(t,"model"):t)?s(i,"borderColor"):i,t))+";\n"},compiler:[8,">= 4.3.0"],main:function(e,t,n,l,o){var i,a,r=null!=t?t:e.nullContext||{},s=e.hooks.helperMissing,c="function",u=e.escapeExpression,d=e.lambda,h=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return'<div class="'+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:1,column:12},end:{line:1,column:26}}}):a)+'month-more" style="padding-bottom: '+u(d(null!=(i=null!=t?h(t,"styles"):t)?h(i,"paddingBottom"):i,t))+"; border: "+u(d(null!=(i=null!=t?h(t,"styles"):t)?h(i,"border"):i,t))+"; box-shadow: "+u(d(null!=(i=null!=t?h(t,"styles"):t)?h(i,"boxShadow"):i,t))+"; background-color: "+u(d(null!=(i=null!=t?h(t,"styles"):t)?h(i,"backgroundColor"):i,t))+';">\n    <div class="'+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:2,column:16},end:{line:2,column:30}}}):a)+'month-more-title"\n        style="height: '+u(d(null!=(i=null!=t?h(t,"styles"):t)?h(i,"titleHeight"):i,t))+"; margin-bottom: "+u(d(null!=(i=null!=t?h(t,"styles"):t)?h(i,"titleMarginBottom"):i,t))+"; background-color: "+u(d(null!=(i=null!=t?h(t,"styles"):t)?h(i,"titleBackgroundColor"):i,t))+"; border-bottom: "+u(d(null!=(i=null!=t?h(t,"styles"):t)?h(i,"titleBorderBottom"):i,t))+"; padding: "+u(d(null!=(i=null!=t?h(t,"styles"):t)?h(i,"titlePadding"):i,t))+';">\n        <span class="'+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:4,column:21},end:{line:4,column:35}}}):a)+'month-more-title-date">'+(null!=(i=(h(n,"monthMoreTitleDate-tmpl")||t&&h(t,"monthMoreTitleDate-tmpl")||s).call(r,null!=t?h(t,"date"):t,null!=t?h(t,"dayname"):t,{name:"monthMoreTitleDate-tmpl",hash:{},data:o,loc:{start:{line:4,column:58},end:{line:4,column:100}}}))?i:"")+'</span>\n        <button type="button" class="'+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:5,column:37},end:{line:5,column:51}}}):a)+'month-more-close">'+(null!=(i=typeof(a=null!=(a=h(n,"monthMoreClose-tmpl")||(null!=t?h(t,"monthMoreClose-tmpl"):t))?a:s)===c?a.call(r,{name:"monthMoreClose-tmpl",hash:{},data:o,loc:{start:{line:5,column:69},end:{line:5,column:94}}}):a)?i:"")+'</button>\n    </div>\n    <div class="'+u(typeof(a=null!=(a=h(n,"CSS_PREFIX")||(null!=t?h(t,"CSS_PREFIX"):t))?a:s)===c?a.call(r,{name:"CSS_PREFIX",hash:{},data:o,loc:{start:{line:7,column:16},end:{line:7,column:30}}}):a)+'month-more-list" style="padding: '+u(d(null!=(i=null!=t?h(t,"styles"):t)?h(i,"listPadding"):i,t))+"; height: "+u(d(null!=(i=null!=t?h(t,"styles"):t)?h(i,"listHeight"):i,t))+';">\n'+(null!=(i=h(n,"each").call(r,null!=t?h(t,"schedules"):t,{name:"each",hash:{},fn:e.program(1,o,0),inverse:e.noop,data:o,loc:{start:{line:8,column:8},end:{line:66,column:17}}}))?i:"")+"    </div>\n</div>\n"},useData:!0})},function(e,t,n){},function(e,t,n){"use strict";var l=n(0),o=n(20),i=n(3),a=n(5),r=n(2),s=Math.max,c=60,u={stamp:function(e){return l.stamp(e)},equal:function(e,t){return e===t},or:function(e,t){return e||t},and:function(e,t){return e&&t},fi:function(e,t,n,l){switch(t){case"==":return e==n?l.fn(this):l.inverse(this);case"===":return e===n?l.fn(this):l.inverse(this);case"!==":return e!==n?l.fn(this):l.inverse(this);case"<":return e<n?l.fn(this):l.inverse(this);case"||":return e||n?l.fn(this):l.inverse(this);default:throw new Error("Not match operation")}},hhmm:function(e){return i.format(e,"HH:mm")},"common-width":function(e){return d(e,"%","width")},"grid-left":function(e,t){return function(e,t){return t[e.left]?t[e.left].left:0}(e,t)},"grid-width":function(e,t){return h(e,t)},"time-scheduleBlock":function(e){return[d(e.top,"px","top"),d(e.left,"%","left"),d(e.width,"%","width"),d(e.height,"px","height")].join(";")},"month-scheduleBlock":function(e,t,n,l){return[d((e.top-1)*n+l,"px","top"),d(t[e.left]?t[e.left].left:0,"%","left"),d(h(e,t),"%","width"),d(e.height,"px","height")].join(";")},holiday:function(e){var t="";return 0===e&&(t=r.classname("holiday-sun")),6===e&&(t=r.classname("holiday-sat")),t},add:function(e,t){return e+t},multiply:function(e,t){return e*t},divide:function(e,t){return e/t},subtract:function(e,t){return e-t},getRight:function(e,t){return s(0,100-(e+t))},CSS_PREFIX:function(){return r.cssPrefix},reverse:function(e){return e.slice().reverse()},"milestone-tmpl":function(e){return'<span class="'+r.classname("icon")+" "+r.classname("ic-milestone")+'"></span><span style="background-color: '+e.bgColor+'">'+a.stripTags(e.title)+"</span>"},"milestoneTitle-tmpl":function(){return'<span class="'+r.classname("left-content")+'">Milestone</span>'},"task-tmpl":function(e){return"#"+e.title},"taskTitle-tmpl":function(){return'<span class="'+r.classname("left-content")+'">Task</span>'},"alldayTitle-tmpl":function(){return'<span class="'+r.classname("left-content")+'">All Day</span>'},"allday-tmpl":function(e){return a.stripTags(e.title)},"time-tmpl":function(e){return a.stripTags(e.title)},"goingDuration-tmpl":function(e){var t=e.goingDuration,n=parseInt(t/c,10),l=t%c;return"GoingTime "+i.leadingZero(n,2)+":"+i.leadingZero(l,2)},"comingDuration-tmpl":function(e){var t=e.goingDuration,n=parseInt(t/c,10),l=t%c;return"ComingTime "+i.leadingZero(n,2)+":"+i.leadingZero(l,2)},"monthMoreTitleDate-tmpl":function(e,t){var n=r.classname("month-more-title-day"),o=r.classname("month-more-title-day-label");return'<span class="'+n+'">'+l.pick(e.split("."),2)+'</span> <span class="'+o+'">'+t+"</span>"},"monthMoreClose-tmpl":function(){return""},"monthGridHeader-tmpl":function(e){var t=parseInt(e.date.split("-")[2],10),n=[];return n.push(r.classname("weekday-grid-date")),e.isToday&&n.push(r.classname("weekday-grid-date-decorator")),'<span class="'+n.join(" ")+'">'+t+"</span>"},"monthGridHeaderExceed-tmpl":function(e){return'<span class="'+r.classname("weekday-grid-more-schedules")+'">'+e+" more</span>"},"monthGridFooter-tmpl":function(){return""},"monthGridFooterExceed-tmpl":function(e){return""},"monthDayname-tmpl":function(e){return e.label},"weekDayname-tmpl":function(e){var t=r.classname("dayname-date"),n=r.classname("dayname-name");return'<span class="'+t+'">'+e.date+'</span>&nbsp;&nbsp;<span class="'+n+'">'+e.dayName+"</span>"},"weekGridFooterExceed-tmpl":function(e){return"+"+e},"dayGridTitle-tmpl":function(e){var t=o.helpers[e+"Title-tmpl"];return t?t(e):e},"schedule-tmpl":function(e){var t=o.helpers[e.category+"-tmpl"];return t?t(e):""},"collapseBtnTitle-tmpl":function(){return'<span class="'+r.classname("icon")+" "+r.classname("ic-arrow-solid-top")+'"></span>'},"timezoneDisplayLabel-tmpl":function(e,t){var n,o,a;return l.isUndefined(t)&&(n=e<0?"-":"+",o=Math.abs(parseInt(e/c,10)),a=Math.abs(e%c),t=n+i.leadingZero(o,2)+":"+i.leadingZero(a,2)),t},"timegridDisplayPrimayTime-tmpl":function(e){return o.helpers["timegridDisplayPrimaryTime-tmpl"](e)},"timegridDisplayPrimaryTime-tmpl":function(e){var t=e.hour,n=t>=12?"pm":"am";return t>12&&(t-=12),t+" "+n},"timegridDisplayTime-tmpl":function(e){return i.leadingZero(e.hour,2)+":"+i.leadingZero(e.minutes,2)},"timegridCurrentTime-tmpl":function(e){var t=[];return e.dateDifference&&t.push("["+e.dateDifferenceSign+e.dateDifference+"]<br>"),t.push(i.format(e.hourmarker,"HH:mm")),t.join("")},"popupIsAllDay-tmpl":function(){return"All day"},"popupStateFree-tmpl":function(){return"Free"},"popupStateBusy-tmpl":function(){return"Busy"},"titlePlaceholder-tmpl":function(){return"Subject"},"locationPlaceholder-tmpl":function(){return"Location"},"startDatePlaceholder-tmpl":function(){return"Start date"},"endDatePlaceholder-tmpl":function(){return"End date"},"popupSave-tmpl":function(){return"Save"},"popupUpdate-tmpl":function(){return"Update"},"popupDetailDate-tmpl":function(e,t,n){var l=i.isSameDate(t,n),o=(l?"":"YYYY.MM.DD ")+"hh:mm tt";return e?i.format(t,"YYYY.MM.DD")+(l?"":" - "+i.format(n,"YYYY.MM.DD")):i.format(t,"YYYY.MM.DD hh:mm tt")+" - "+i.format(n,o)},"popupDetailLocation-tmpl":function(e){return e.location},"popupDetailUser-tmpl":function(e){return(e.attendees||[]).join(", ")},"popupDetailState-tmpl":function(e){return e.state||"Busy"},"popupDetailRepeat-tmpl":function(e){return e.recurrenceRule},"popupDetailBody-tmpl":function(e){return e.body},"popupEdit-tmpl":function(){return"Edit"},"popupDelete-tmpl":function(){return"Delete"}};function d(e,t,n){return n=n||"",l.isNumber(e)?n+":"+e+t:n+":auto"}function h(e,t){for(var n,l=0,o=0,i=t.length;o<e.width;o+=1)n=(e.left+o)%i,(n+=parseInt((e.left+o)/i,10))<i&&(l+=t[n]?t[n].width:0);return l}o.registerHelper(u)}])}));
+//# sourceMappingURL=tui-calendar.min.js.map
\ No newline at end of file
diff --git a/admin/js/vendors/tui.calendar/tui-calendar.min.js.map b/admin/js/vendors/tui.calendar/tui-calendar.min.js.map
new file mode 100644 (file)
index 0000000..d0a4ca3
--- /dev/null
@@ -0,0 +1 @@
+{"version":3,"sources":["webpack://tui.Calendar/webpack/universalModuleDefinition","webpack://tui.Calendar/webpack/bootstrap","webpack://tui.Calendar/external {\"commonjs\":\"tui-code-snippet\",\"commonjs2\":\"tui-code-snippet\",\"amd\":\"tui-code-snippet\",\"root\":[\"tui\",\"util\"]}","webpack://tui.Calendar/./src/js/common/domutil.js","webpack://tui.Calendar/./src/js/config.js","webpack://tui.Calendar/./src/js/common/datetime.js","webpack://tui.Calendar/./src/js/common/timezone.js","webpack://tui.Calendar/./src/js/common/common.js","webpack://tui.Calendar/./src/js/common/domevent.js","webpack://tui.Calendar/./node_modules/handlebars/runtime.js","webpack://tui.Calendar/./src/js/view/view.js","webpack://tui.Calendar/(webpack)/buildin/global.js","webpack://tui.Calendar/./node_modules/handlebars/dist/cjs/handlebars/utils.js","webpack://tui.Calendar/./src/js/common/reqAnimFrame.js","webpack://tui.Calendar/./node_modules/handlebars/dist/cjs/handlebars/exception.js","webpack://tui.Calendar/./src/js/common/collection.js","webpack://tui.Calendar/./src/js/model/schedule.js","webpack://tui.Calendar/./src/js/common/array.js","webpack://tui.Calendar/./src/js/common/floatingLayer.js","webpack://tui.Calendar/./src/js/handler/daygrid/core.js","webpack://tui.Calendar/./src/js/handler/time/core.js","webpack://tui.Calendar/./src/js/handler/month/core.js","webpack://tui.Calendar/./node_modules/handlebars-template-loader/runtime/index.js","webpack://tui.Calendar/./node_modules/handlebars/dist/cjs/handlebars.runtime.js","webpack://tui.Calendar/./node_modules/handlebars/dist/cjs/handlebars/base.js","webpack://tui.Calendar/./node_modules/handlebars/dist/cjs/handlebars/helpers.js","webpack://tui.Calendar/./node_modules/handlebars/dist/cjs/handlebars/logger.js","webpack://tui.Calendar/./node_modules/handlebars/dist/cjs/handlebars/internal/proto-access.js","webpack://tui.Calendar/./src/js/common/dw.js","webpack://tui.Calendar/./src/js/handler/drag.js","webpack://tui.Calendar/./src/js/model/viewModel/scheduleViewModel.js","webpack://tui.Calendar/./src/js/common/vlayout.js","webpack://tui.Calendar/./src/js/view/weekday.js","webpack://tui.Calendar/./src/js/common/point.js","webpack://tui.Calendar/./src/js/view/popup/scheduleCreationPopup.js","webpack://tui.Calendar/./src/js/view/popup/scheduleDetailPopup.js","webpack://tui.Calendar/./src/js/handler/daygrid/move.js","webpack://tui.Calendar/./src/js/handler/month/guide.js","webpack://tui.Calendar/./src/index.js","webpack://tui.Calendar/./src/js/factory/calendar.js","webpack://tui.Calendar/./node_modules/handlebars/dist/cjs/handlebars/helpers/block-helper-missing.js","webpack://tui.Calendar/./node_modules/handlebars/dist/cjs/handlebars/helpers/each.js","webpack://tui.Calendar/./node_modules/handlebars/dist/cjs/handlebars/helpers/helper-missing.js","webpack://tui.Calendar/./node_modules/handlebars/dist/cjs/handlebars/helpers/if.js","webpack://tui.Calendar/./node_modules/handlebars/dist/cjs/handlebars/helpers/log.js","webpack://tui.Calendar/./node_modules/handlebars/dist/cjs/handlebars/helpers/lookup.js","webpack://tui.Calendar/./node_modules/handlebars/dist/cjs/handlebars/helpers/with.js","webpack://tui.Calendar/./node_modules/handlebars/dist/cjs/handlebars/decorators.js","webpack://tui.Calendar/./node_modules/handlebars/dist/cjs/handlebars/decorators/inline.js","webpack://tui.Calendar/./node_modules/handlebars/dist/cjs/handlebars/internal/create-new-lookup-object.js","webpack://tui.Calendar/./node_modules/handlebars/dist/cjs/handlebars/safe-string.js","webpack://tui.Calendar/./node_modules/handlebars/dist/cjs/handlebars/runtime.js","webpack://tui.Calendar/./node_modules/handlebars/dist/cjs/handlebars/internal/wrapHelper.js","webpack://tui.Calendar/./node_modules/handlebars/dist/cjs/handlebars/no-conflict.js","webpack://tui.Calendar/./src/js/view/layout.js","webpack://tui.Calendar/./src/js/factory/controller.js","webpack://tui.Calendar/./src/js/controller/base.js","webpack://tui.Calendar/./src/js/common/dirty.js","webpack://tui.Calendar/./src/js/common/model.js","webpack://tui.Calendar/./src/js/theme/theme.js","webpack://tui.Calendar/./src/js/theme/standard.js","webpack://tui.Calendar/./src/js/theme/themeConfig.js","webpack://tui.Calendar/./src/js/controller/viewMixin/core.js","webpack://tui.Calendar/./src/js/controller/viewMixin/week.js","webpack://tui.Calendar/./src/js/controller/viewMixin/month.js","webpack://tui.Calendar/./src/js/factory/weekView.js","webpack://tui.Calendar/./src/js/common/vpanel.js","webpack://tui.Calendar/./src/js/view/week/week.js","webpack://tui.Calendar/./src/js/view/week/dayname.js","webpack://tui.Calendar/./src/js/view/template/week/daynames.hbs","webpack://tui.Calendar/./src/js/view/week/dayGrid.js","webpack://tui.Calendar/./src/js/view/week/dayGridSchedule.js","webpack://tui.Calendar/./src/js/view/template/week/dayGridSchedule.hbs","webpack://tui.Calendar/./src/js/view/template/week/dayGrid.hbs","webpack://tui.Calendar/./src/js/view/week/timeGrid.js","webpack://tui.Calendar/./src/js/view/week/time.js","webpack://tui.Calendar/./src/js/view/template/week/time.hbs","webpack://tui.Calendar/./src/js/common/autoScroll.js","webpack://tui.Calendar/./src/js/view/template/week/timeGrid.hbs","webpack://tui.Calendar/./src/js/view/template/week/timezoneSticky.hbs","webpack://tui.Calendar/./src/js/view/template/week/timeGridCurrentTime.hbs","webpack://tui.Calendar/external {\"commonjs\":\"tui-date-picker\",\"commonjs2\":\"tui-date-picker\",\"amd\":\"tui-date-picker\",\"root\":[\"tui\",\"DatePicker\"]}","webpack://tui.Calendar/./src/js/view/template/popup/scheduleCreationPopup.hbs","webpack://tui.Calendar/./src/js/view/template/popup/scheduleDetailPopup.hbs","webpack://tui.Calendar/./src/js/handler/time/clickDayname.js","webpack://tui.Calendar/./src/js/handler/daygrid/click.js","webpack://tui.Calendar/./src/js/handler/daygrid/moveGuide.js","webpack://tui.Calendar/./src/js/handler/daygrid/creation.js","webpack://tui.Calendar/./src/js/handler/daygrid/creationGuide.js","webpack://tui.Calendar/./src/js/handler/daygrid/resize.js","webpack://tui.Calendar/./src/js/handler/daygrid/resizeGuide.js","webpack://tui.Calendar/./src/js/handler/time/click.js","webpack://tui.Calendar/./src/js/handler/time/creation.js","webpack://tui.Calendar/./src/js/handler/time/creationGuide.js","webpack://tui.Calendar/./src/js/handler/time/move.js","webpack://tui.Calendar/./src/js/handler/time/moveGuide.js","webpack://tui.Calendar/./src/js/view/template/week/timeMoveGuide.hbs","webpack://tui.Calendar/./src/js/handler/time/resize.js","webpack://tui.Calendar/./src/js/handler/time/resizeGuide.js","webpack://tui.Calendar/./src/js/factory/monthView.js","webpack://tui.Calendar/./src/js/view/month/month.js","webpack://tui.Calendar/./src/js/view/template/month/month.hbs","webpack://tui.Calendar/./src/js/view/month/weekdayInMonth.js","webpack://tui.Calendar/./src/js/view/template/month/weekdayInMonth.hbs","webpack://tui.Calendar/./src/js/view/template/month/weekdayInMonthSchedule.hbs","webpack://tui.Calendar/./src/js/handler/month/click.js","webpack://tui.Calendar/./src/js/handler/month/creation.js","webpack://tui.Calendar/./src/js/handler/month/creationGuide.js","webpack://tui.Calendar/./src/js/handler/month/guide.hbs","webpack://tui.Calendar/./src/js/handler/month/resize.js","webpack://tui.Calendar/./src/js/handler/month/resizeGuide.js","webpack://tui.Calendar/./src/js/handler/month/move.js","webpack://tui.Calendar/./src/js/handler/month/moveGuide.js","webpack://tui.Calendar/./src/js/handler/month/moveGuide.hbs","webpack://tui.Calendar/./src/js/view/month/more.js","webpack://tui.Calendar/./src/js/view/template/month/more.hbs","webpack://tui.Calendar/./src/js/view/template/helper.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","__WEBPACK_EXTERNAL_MODULE__0__","domutil","domevent","Collection","util","CSS_AUTO_REGEX","userSelectProperty","appendHTMLElement","tagName","container","className","el","document","createElement","appendChild","body","remove","parentNode","removeChild","id","getElementById","_matcher","selector","test","hasClass","replace","nodeName","toLowerCase","find","root","multiple","result","found","isFirst","isUndefined","isFilter","isFunction","isString","recurse","cursor","childNodes","len","length","push","window","closest","excludeEl","parent","text","ret","nodeType","textContent","firstChild","nextSibling","nodeValue","setData","data","dataset","setAttribute","getData","getAttribute","classList","getClass","RegExp","contains","addClass","setClass","forEachArray","split","add","baseVal","removeClass","removed","getStyle","style","css","currentStyle","defaultView","getComputedStyle","getPropertyValue","prop","re","arguments","toUpperCase","setPosition","x","y","left","isNumber","top","setLTRB","ltrb","forEach","getPosition","clear","bound","getBoundingClientRect","parseFloat","getSize","width","height","isNull","offsetWidth","offsetHeight","getBCRect","rect","extend","testProp","props","documentElement","getFormData","formElement","groupedByName","this","noDisabledFilter","disabled","output","apply","concat","groupBy","elements","each","type","checked","toArray","pop","opt","selected","map","supportSelectStart","prevSelectStyle","disableTextSelection","dom","onSelectstartHandler","on","preventDefault","enableTextSelection","off","disableImageDrag","enableImageDrag","cssPrefix","alldayGetViewID","alldayCheckPermission","config","throwError","msg","alert","classname","str","charAt","slice","allday","getViewIDRegExp","checkCondRegExp","daygrid","time","datetime","tokenFunc","TZDate","Date","dw","dateFormatRx","memo","date","getFullYear","leadingZero","getMonth","getDate","join","String","hour","getHours","minutes","getMinutes","MILLISECONDS_PER_DAY","MILLISECONDS_PER_HOUR","MILLISECONDS_PER_MINUTES","MILLISECONDS_SCHEDULE_MIN_DURATION","_convMilliseconds","iteratee","index","day","seconds","global","isNaN","reduce","millisecondsTo","cache","v","millisecondsFrom","minutesFromHours","hours","range","start","end","step","startTime","getTime","endTime","addDate","clone","compare","d1","d2","_d1","_d2","isSameMonth","isSameDate","isValid","toUTC","offset","getTimezoneOffset","number","zero","parse","fixMonth","separator","ymd","hms","matches","match","indexOf","splice","substr","setWithRaw","Number","raw","M","h","getSeconds","ms","getMilliseconds","setHours","format","forEachOwnProperties","converter","token","startDateOfMonth","startDate","setDate","endDateOfMonth","endDate","setMonth","arr2dCalendar","month","options","weekArr","startIndex","totalDate","afterDates","week","calendar","startDayOfWeek","isAlways6Week","visibleWeeksCount","workweek","inArray","getDay","isWeekend","getGridLeftAndWidth","days","narrowWeekend","uniformWidth","wideWidth","accumulatedWidth","dates","filter","model","isBetweenWithDate","parseInt","isStartOfDay","convertStartDayToLastDay","getStartOfNextDay","getDateDifference","time1","time2","Math","round","getHourDifference","hasMultiDates","diffDays","diffHours","abs","withinDay","renderEnd","MIN_TO_MS","nativeOffsetMs","customOffsetMs","timezoneOffsetCallback","setByTimezoneOption","timestamp","now","getCustomTimezoneOffset","createDateWithMultipleArgs","args","utc","UTC","createDateWithUTCTime","arg","getUTCTime","Error","createDateAsLocalTime","timezoneOffset","customTimezoneOffset","getLocalTime","useLocalTimeConverter","nativeDate","_date","toUTCString","toDate","valueOf","addMinutes","setMinutes","addMilliseconds","milliseconds","setMilliseconds","setFullYear","toLocalTime","utcTime","methodName","setOffset","setOffsetByTimezoneOption","getOffset","setOffsetCallback","callback","restoreOffset","scheduleIDGetter","schedule","cid","createScheduleCollection","ratio","a","b","nearest","diff","min","mixin","from","to","limit","minArr","maxArr","max","limitDate","maxDate","stripTags","firstIn2dArray","arr2d","pick","lastIn2dArray","lastRow","lastCol","setAutoEllipsis","force","scrollWidth","set","path","names","store","shiftArray","array","shift","unshift","takeArray","rightCount","leftCount","shiftHours","parseUnit","cssValue","contextopt","item","getScheduleChanges","propNames","changes","dateProps","propName","isEmpty","DRAG_START","obj","types","fn","context","_on","handler","originHandler","stamp","e","event","_checkMouse","addEventListener","attachEvent","_off","removeEventListener","detachEvent","keys","once","self","isObject","onceHandler","stopPropagation","cancelBubble","returnValue","stop","disableScrollPropagation","disableClickPropagation","getMousePosition","mouseEvent","relativeElement","clientX","clientLeft","clientY","clientTop","getWheelDelta","delta","wheelDelta","detail","related","relatedTarget","err","trigger","eventData","exec","dispatchEvent","fireEvent","eventObj","evt","bubbles","cancelable","view","screenX","screenY","ctrlKey","altKey","shiftKey","metaKey","button","undefined","createEvent","initMouseEvent","createEventObject","0","1","2","getMouseButton","implementation","hasFeature","getEventTarget","target","srcElement","View","cssprefix","children","state","addChild","items","render","childView","recursive","skipThis","resize","Array","_onResize","_beforeDestroy","_destroy","innerHTML","destroy","isChildView","getViewBound","position","size","setState","CustomEvents","g","Function","escapeExpression","string","toHTML","possible","badChars","escapeChar","isArray","createFrame","frame","_parent","blockParams","params","ids","appendContextPath","contextPath","escape","chr","toString","requestFn","cancelFn","getPrefixed","requestAnimationFrame","cancelAnimationFrame","requestAnimFrame","cancelAnimFrame","errorProps","Exception","message","node","loc","line","endLineNumber","column","endColumn","tmp","constructor","idx","captureStackTrace","lineNumber","nop","forEachProp","forEachArr","isFunc","isObj","aps","getItemIDFn","getItemID","and","filters","cnt","_id","ownItems","itemToRemove","has","isExisty","doWhenHas","groupFunc","collection","baseValue","keyIsFunc","k","single","useFilter","sort","compareFunction","arr","dirty","SCHEDULE_MIN_DURATION","SCHEDULE_CATEGORY","Schedule","title","isAllDay","color","isVisible","bgColor","dragBgColor","borderColor","calendarId","category","dueDateClass","customStyle","isPending","isFocused","isReadOnly","isPrivate","location","attendees","recurrenceRule","goingDuration","comingDuration","schema","required","dateRange","inst","init","setAllDayPeriod","setTimePeriod","getStarts","getEnds","equals","duration","collidesWith","ownStarts","ownEnds","ownGoingDuration","ownComingDuration","booleanASC","stringASC","_a","_b","bsearch","search","currentIndex","comp","minIndex","maxIndex","asc","durationA","durationB","allDayCompare","startsCompare","modelA","modelB","bool","desc","num","ascIgnoreCase","descIgnoreCase","FloatingLayer","layerContainer","sibling","PROP_KEY","zIndex","getLargestZIndex","INIT_ZINDEX","display","inherit","setSize","w","setContent","html","zIndexes","layer","focus","zIndexForShow","show","hide","common","mmax","mmin","dayGridCore","_retriveScheduleData","datesInRange","containerWidth","mousePos","dragStartXIndex","grids","weekdayView","getRenderDateRange","getRenderDateGrids","getX","mouseX","xIndex","relatedView","triggerEvent","_retriveScheduleDataFromDate","grid","Point","timeCore","_calcGridYIndex","baseMil","floored","timeView","viewHeight","viewTime","hourLength","hourEnd","hourStart","mouseY","gridY","timeY","nearestGridY","nearestGridTimeY","originEvent","nearestGridEndY","getNearestHour","nearestGridEndTimeY","proto","method","nearestHour","mfloor","floor","monthView","weekColl","weeks","weekCount","dayCount","relativeContainer","vLayout","panels","pos","sizeX","sizeY","_interopRequireDefault","_interopRequireWildcard","newObj","base","_handlebarsSafeString2","_handlebarsException2","Utils","runtime","_handlebarsNoConflict2","hb","HandlebarsEnvironment","SafeString","VM","template","spec","_utils","_exception2","_helpers","_decorators","_logger2","_internalProtoAccess","VERSION","COMPILER_REVISION","LAST_COMPATIBLE_COMPILER_REVISION","REVISION_CHANGES","3","4","5","6","7","8","objectType","helpers","partials","decorators","registerDefaultHelpers","registerDefaultDecorators","logger","log","registerHelper","unregisterHelper","registerPartial","partial","unregisterPartial","registerDecorator","unregisterDecorator","resetLoggedPropertyAccesses","resetLoggedProperties","instance","_helpersBlockHelperMissing2","_helpersEach2","_helpersHelperMissing2","_helpersIf2","_helpersLog2","_helpersLookup2","_helpersWith2","moveHelperToHooks","helperName","keepHelper","hooks","methodMap","level","lookupLevel","levelMap","console","_len","_key","createProtoAccessControl","runtimeOptions","defaultMethodWhiteList","defaultPropertyWhiteList","properties","whitelist","_createNewLookupObject","createNewLookupObject","allowedProtoProperties","defaultValue","allowProtoPropertiesByDefault","methods","allowedProtoMethods","allowProtoMethodsByDefault","resultIsAllowed","protoAccessControl","propertyName","checkWhiteList","loggedProperties","protoAccessControlForType","logUnexpecedPropertyAccessOnce","DW","safe","addMonth","currentMonth","currentDay","leapYear","_isLeapYear","targetMonth","targetDaysOfMonth","year","isBetween","Drag","_onMouseDown","distance","exclude","_cancelled","_isMoved","_distance","_dragStartFired","_dragStartEventData","preventDefaultWhenNotPopup","_clearData","_toggleDragEvent","toBind","domMethod","mousemove","_onMouseMove","mouseup","_onMouseUp","_getEventData","mouseDownEvent","fire","mouseMoveEvent","invoke","mouseUpEvent","ScheduleViewModel","hasCollide","extraSpace","hidden","renderStarts","exceedLeft","renderEnds","exceedRight","viewModel","VPanel","mAbs","VLayout","theme","tempHeights","panelHeights","_drag","dragStart","_onDragStart","drag","_onDrag","dragEnd","_onDragEnd","_dragData","panelOpt","isSplitter","autoHeight","addPanels","refresh","getLayoutData","heightList","panel","getHeight","setLayoutData","setHeight","nextPanel","prevPanel","_initializeGuideElement","element","cloned","cloneNode","_refreshGuideElement","_clearGuideElement","_resize","splPanel","startY","resizeInfo","resizedHeight","resizeMap","toDown","forwardMethod","getResizeInfoByGrowth","pair","_getMouseYAdditionalLimit","upper","below","func","minHeight","oEvent","splIndex","splHeight","splOffsetY","guideElement","minY","maxY","browser","msie","dragData","asideMinMax","layoutData","remainHeight","panelToFillHeight","layoutHeight","usedHeight","addPanel","frag","createDocumentFragment","option","getPanelByName","Weekday","containerBottomGutter","scheduleHeight","scheduleGutter","_cacheParentViewModel","getBaseViewModel","gridWidth","exceedDate","scheduleBlockHeight","scheduleBlockGutter","isToday","hiddenSchedules","_getDayNameColor","backgroundColor","_getDayBackgroundColor","getExceedDate","maxCount","eventsInDateRange","_initExceedDate","matrix","period","isOtherMonth","holidayExceptThisMonth","holiday","dayExceptThisMonth","saturday","today","dayname","weekend","useRound","getRatio","point","factor","toFactor","multiplyBy","_divideBy","_add","subtract","_subtract","divideBy","_multiplyBy","_round","reverse","_reverse","_floor","ceil","_ceil","rotate","deg","center","cos","sin","_rotate","rad","PI","toFixed","distanceTo","sqrt","DatePicker","timezone","tmpl","ScheduleCreationPopup","calendars","usageStatistics","_viewModel","_selectedCal","_schedule","_focusedDropdown","_usageStatistics","_onClickListeners","_selectDropdownMenuItem","_toggleDropdownMenuView","_closeDropdownMenuView","_closePopup","_toggleIsAllday","_toggleIsPrivate","_onClickSaveSchedule","_onClick","clickEvent","listener","dropdownBtn","_openDropdownMenuView","dropdown","itemClassName","iconClassName","contentClassName","selectedItem","innerText","cal","checkbox","alldaySection","privateSection","rangeDate","form","rangePicker","getStartDate","getEndDate","_validateForm","_getRangeDate","_isEditMode","_onClickUpdateSchedule","_onClickCreateSchedule","boxElement","guideElements","selectedCal","_makeEditModeData","guide","_getGuideElements","_createDatepicker","_setPopupPositionAndArrowDirection","debounce","class","isEditMode","guideBound","layerSize","containerBound","_calcRenderingData","_setArrowDirection","arrow","_getBoundOfFirstRowGuideElement","bottom","right","_getYAndArrowDirection","guideBoundTop","guideBoundBottom","layerHeight","containerTop","containerBottom","arrowDirection","_getXAndArrowLeft","guideBoundLeft","guideBoundRight","layerWidth","containerLeft","containerRight","arrowLeft","guideHorizontalCenter","yPosInfo","xPosInfo","direction","arrowEl","borderElement","createRangePicker","startpicker","input","endpicker","timepicker","showMeridiem","clearGuideElement","setCalendars","triggerEventName","ScheduleDetailPopup","_calendar","_onClickEditSchedule","_onClickDeleteSchedule","_scheduleEl","scheduleEl","blockEl","scheduleBound","_getYAndArrowTop","scheduleBoundTop","scheduleBoundBottom","scheduleVerticalCenter","arrowTop","_getXAndArrowDirection","scheduleBoundLeft","scheduleBoundRight","DayGridMoveGuide","DayGridMove","dragHandler","controller","_dragStart","checkExpectedCondition","parentView","cssClass","dragStartEventData","scheduleBlockElement","modelID","targetModel","getScheduleDataFunc","scheduleData","schedules","click","dragEventData","_updateSchedule","dateOffset","newStarts","newEnds","dragEndEventData","overrideEventName","skipUpdate","clickEventData","mabs","MonthGuide","label","isResizeMode","isCreationMode","styles","_getStyles","startCoord","_getRatioValueInWeek","_createGuideElement","_getGuideElement","_getCoordByDate","getIdxFromDiff","monthStart","renderStartDate","isBefore","_getLimitedCoord","coord","dragStartEvent","temp","renderMonth","update","_updateGuides","inds","ind","exceedLClass","exceedRClass","exceedL","exceedR","_getOriginIndicate","mouseCoord","_getMouseIndicate","_getContainIndicate","_removeGuideElements","yCoords","guides","_getExcludesInRange","numbers","excludes","limitedCoord","renderedYIndex","yCoordsToUpdate","yCoordsToRemove","renderIndication","guideYCoord","indicate","border","creationGuide","marginTop","marginLeft","marginRight","borderRadius","Calendar","jQuery","tuiCalendar","Handlebars","Layout","controllerFactory","weekViewFactory","monthViewFactory","reqAnimFrame","sendHostname","querySelector","_calendarColor","_renderDate","_renderRange","_controller","_createController","_layout","_dragHandler","_viewName","_refreshMethod","_scrollToNowMethod","_requestScrollToNow","_openCreationPopup","_hideMoreView","_requestRender","_options","_initialize","_setOptionRecurseively","viewName","taskView","scheduleView","useCreationPopup","useDetailPopup","timezones","disableDblClick","disableClick","scheduleFilter","Boolean","_setAdditionalInternalOptions","changeView","setCalendarColor","createSchedules","silent","_setScheduleColor","getSchedule","scheduleId","updateSchedule","ctrl","_hasChangedCalendar","deleteSchedule","_getWeekDayRange","isDate","weekday","toggleSchedules","toHide","ownSchedules","immediately","_renderFunc","clearSchedules","scrollToNow","_setViewName","move","tempDate","datetimeOptions","renderDate","_getCurrentView","recursiveSet","renderEndDate","collapsed","next","prev","calColor","ownColor","clickScheduleData","_onClickMore","clickMoreSchedule","_onClickDayname","_onBeforeCreate","createScheduleData","_showCreationPopup","_onBeforeUpdate","updateScheduleData","_onBeforeDelete","deleteScheduleData","_onAfterRenderSchedule","_onClickTimezonesCollapseBtn","timezonesCollapsed","_toggleViewSchedule","isAttach","clickHandler","creation","creationHandler","moveHandler","resizeHandler","newViewName","created","layout","_createMonthView","_createWeekView","getViewName","openCreationPopup","showCreationPopup","hideMoreView","toggleTaskView","enabled","toggleScheduleView","getElement","setTheme","setOptions","innerValue","innerName","getOptions","getDateRangeStart","getDateRangeEnd","setTimezoneOffset","setTimezoneOffsetCallback","inverse","_exception","priorKey","execIteration","field","last","first","j","iterator","newContext","it","done","conditional","hash","includeZero","lookupProperty","_decoratorsInline2","_decoratorsInline","original","sources","checkRevision","compilerInfo","compilerRevision","currentRevision","_base","runtimeVersions","compilerVersions","templateSpec","env","main","decorator","main_d","compiler","templateWasPrecompiledWithCompilerV7","strict","lookup","depths","lambda","current","invokePartial","resolvePartial","extendedOptions","compile","compilerOptions","indent","lines","programs","program","declaredBlockParams","programWrapper","wrapProgram","depth","mergeIfNeeded","param","nullContext","seal","noop","_setup","useData","initData","useBlockParams","useDepths","executeDecorators","isTop","mergedHelpers","helper","_internalWrapHelper","wrapHelper","passLookupPropertyOption","wrapHelpersToPassLookupProperty","usePartial","useDecorators","keepHelperInHelpers","allowCallsToHelperMissing","_child","currentPartialBlock","partialBlock","prog","currentDepths","transformOptionsFn","$Handlebars","noConflict","applyTheme","toggleChildView","flag","prefix","Base","Core","Week","Month","Theme","dateMatrix","_getContainDatesInSchedule","scheduleStart","scheduleEnd","createSchedule","addSchedule","dataList","origin","_removeFromMatrix","_addToMatrix","ownMatrix","containDates","splitScheduleByDateRange","scheduleCollection","findByDateRange","viewModels","dformat","setStyles","existy","_changed","_dirty","isDirty","toDirty","deleteProp","isPropChanged","methodFilterR","wrap","_flag","_name","_wrapper","_fn","flagToSet","_wrapped","spaceRx","trim","validators","fields","valid","fieldName","validator","values","validatorName","parameterize","themeStandard","themeConfig","customTheme","_map","HashMap","setStyle","errors","categories","child","removeAll","getCollisionGroup","previousScheduleList","collisionGroups","foundPrevCollisionSchedule","previous","group","getLastRowInColumn","col","row","getMatrices","scheduleID","nextRow","lastRowInColumn","getScheduleInDateRangeFilter","positionViewModels","matrices","ymdListToRender","dateLength","limitRenderRange","viewModelColl","convertToViewModel","modelColl","generateTimeArrayInRow","maxColLen","startStart","startEnd","endStart","endEnd","getFunc","block","getCollides","binaryMap","maxRowLength","getViewModelForTimeView","ymdSplitted","_getViewModel","_makeGetViewModelFuncForTimeView","_makeHourRangeFilter","hStart","hEnd","ownHourStart","ownHourEnd","yyyy","mm","dd","_addMultiDatesInfo","vColl","getViewModelForAlldayView","ctrlCore","ctrlWeek","andFilters","scheduleTypes","pluck","excludeExceedSchedules","visibleScheduleCount","_onlyTimeFilter","_onlyAlldayFilter","_weightTopValue","_adjustRenderRange","_getAlldayMaxTopIndexAtYMD","vAlldayColl","topIndexesInDate","_adjustTimeTopIndex","ctrlMonth","getAlldayMaxTopIndexAtYMD","sortedTimeSchedules","maxIndexInYMD","timeViewModel","scheduleYMD","alldayMaxTopInYMD","_stackTimeFromTop","indiceInYMD","maxTopInYMD","topArrayInYMD","alldayFirstMode","coll","vList","collisionGroup","DayName","DayGrid","TimeGrid","DayNameClick","DayGridClick","DayGridCreation","DayGridResize","TimeClick","TimeCreation","TimeMove","TimeResize","DAYGRID_HANDLDERS","TIMEGRID_HANDLERS","DEFAULT_PANELS","maxHeight","showExpandableButton","maxExpandableHeight","handlers","baseController","layoutContainer","weekView","dayNameContainer","dayNameView","vLayoutContainer","createView","onSaveNewSchedule","onSetCalendars","lastVPanel","detailView","onShowDetailPopup","onDeleteSchedule","onShowEditPopup","onEditSchedule","vpanels","viewVisibilities","addHandler","weekViewHeight","daynameViewHeight","invokeCreationClick","isHeightForcedSet","_initPanel","setMaxHeight","setHeightForcedSet","getHeightForcedSet","newHeight","growth","resizeTo","borderTop","vpanelSplitter","borderBottom","_getRenderDateRange","showTimezoneCollapseButton","_disableDayOptions","schedulesInDateRange","_invokeAfterRenderSchedule","matricesOfDay","scheduleViewModel","baseDate","daynameTmpl","daynames","_getBaseViewModel","isPastDay","dayName","dayNames","baseViewModel","pastDay","numberAndUnit","timezonesLength","borderLeft","paddingLeft","textAlign","daygridLeft","depth0","stack1","alias1","alias2","helperMissing","alias3","alias4","alias5","DayGridSchedule","baseTmpl","dayGridSchedule","scheduleContainerTop","getViewModelFunc","setViewModelFunc","vPanel","getWeekBackgroundColor","weekendBackgroundColor","todayBackgroundColor","getPanel","panelHeight","heightForcedSet","collapseBtnIndex","clickedExpandBtnIndex","weekdayViewModel","_expand","_collapse","borderRight","leftWidth","leftBackgroundColor","leftPaddingRight","paddingRight","leftBorderRight","_getMaxScheduleInDay","_getMinHeight","maxScheduleInDay","Timezone","Time","AutoScroll","mainTmpl","timezoneStickyTmpl","timegridCurrentTimeTmpl","getHoursLabels","hasHourMarker","nowHours","nowHoursIndex","shiftByOffset","shiftMinutes","nowMinutes","hoursRange","nowAroundHours","fontWeight","pastTimeColor","pastTimeFontWeight","futureTimeColor","futureTimeFontWeight","panelElement","stickyContainer","safari","_autoScroll","intervalID","timerID","rAnimationFrameID","_scrolled","_cacheHoursLabels","clearInterval","clearTimeout","_onClickStickyContainer","hourmarkers","_getTopPercentByTime","topPercent","maxMilliseconds","hmsMilliseconds","_getHourmarkerViewModel","todaymarkerLeft","todaymarkerWidth","hourmarkerTimzones","primaryOffset","dateDifference","timezoneDifference","hourmarker","dateDifferenceSign","currentHours","hourmarkerTop","todaymarkerRight","_getTimezoneViewModel","timezoneViewModel","displayTimezoneLabelBackgroundColor","timeSlots","additionalTimezoneBackgroundColor","displayLabel","tooltip","isPrimary","hoursLabels","_renderChildren","childOption","containerHeight","parentElement","scheduleLen","showHourMarker","renderStickyContainer","_hourLabels","displayTimezoneLabelHeight","refreshHourmarker","needsRender","hoursLabel","todaymarker","hourmarkerContainer","timezoneIndex","setTimeout","onTick","offsetTop","viewBound","scrollTop","scrollAmount","scrollFn","setInterval","timegridHorizontalLine","halfHourBorderBottom","timegridHalfHour","timegridLeft","leftFontSize","fontSize","timezoneWidth","timegridLeftAdditionalTimezone","timegridLeftTimezoneLabel","oneHourHeight","timegridOneHour","halfHourHeight","quaterHourHeight","currentTimeColor","currentTime","currentTimeFontSize","currentTimeFontWeight","pastTime","futureTime","currentTimeLeftBorderTop","currentTimeLinePast","currentTimeBulletBackgroundColor","currentTimeLineBullet","currentTimeTodayBorderTop","currentTimeLineToday","currentTimeRightBorderTop","currentTimeLineFuture","timeTmpl","pending","defaultMarginBottom","_parseDateGroup","_getScheduleViewBoundX","baseWidth","baseLeft","columnIndex","_getScheduleViewBoundY","goingDurationHeight","modelDurationHeight","comingDurationHeight","baseMS","baseHeight","croppedStart","croppedEnd","offsetStart","todayStart","modelDuration","hasGoingDuration","hasComingDuration","getScheduleViewBound","boundX","boundY","travelBorderColor","widthPercent","leftPercents","timegrid","timegridSchedule","_direction","DIRECTION","INSIDE","_offset","_intervalID","TOP","RIGHT","BOTTOM","LEFT","_getEdgePositions","clientRect","getRealSize","padding","computed","clientWidth","clientHeight","hasScrollbar","realSize","isOnScrollbar","_onTick","edge","scrollLeft","__WEBPACK_EXTERNAL_MODULE__79__","checkExpectCondition","daynameView","blockElement","dayGridScheduleView","collapseBtnElement","expandBtnElement","daygridMove","scheduleContainer","_dragStartXIndex","_showOriginScheduleBlocks","_hideOriginScheduleBlocks","scheduleBlocks","_highlightScheduleBlocks","margin","borderLeftColor","refreshGuideElement","leftPercent","isExceededLeft","isExceededRight","_getScheduleBlockDataFunc","baseWidthPercent","originScheduleStarts","originScheduleEnds","fromLeft","fromRight","indexOffset","originLength","leftIndex","newLeft","newWidth","getScheduleBlockWidth","DayGridCreationGuide","CLICK_DELAY","_requestOnClick","_disableDblClick","_disableClick","_onDblClick","schedulesElement","_createSchedule","startXIndex","initializeGuideElement","dragstart","_getGuideWidth","dragStartIndex","dragEndIndex","defer","dragEndXIndex","DayGridResizeGuide","getGuideElementWidthFunc","viewOptions","timeGridView","schedulesCollection","TimeCreationGuide","_getScheduleDataFunc","revise","dateStart","dateEnd","createRange","condResult","targetDate","MIN60","timeCreation","guideTimeElement","_styleUnit","_styleStart","_styleFunc","timeCreationDragstart","timeCreationDrag","timeCreationClick","timeElement","bottomLabel","_getUnitData","viewOpt","todayEnd","_limitStyleData","unitData","_getStyleDataFunc","todayStartTime","todayEndTime","gridTimeY","gridEndTimeY","styleFunc","styleData","heightOfHalfHour","endStyle","startStyle","timeStyle","TimeMoveGuide","_guide","_getTimeView","mouseDownEventData","firefox","targetModelID","currentView","nearestRange","timeDiff","dateDiff","timeMove","_guideLayer","_model","_lastDrag","_container","_getTopFunc","_startGridY","_startTopPixel","_resetGuideLayer","bottomLimit","guideHeight","gridYOffset","gridYOffsetPixel","gridDiff","TimeResizeGuide","startScheduleData","timeResize","_originScheduleElement","_startHeightPixel","originElement","minTimeHeight","timeHeight","timeMinHeight","guideTop","minutesLength","MonthClick","MonthCreation","MonthResize","MonthMove","More","monthViewContainer","moreView","clearSchedulesHandler","onUpdateSchedule","getViewModelForMoreLayer","getMoreViewElement","onShowCreationPopup","WeekdayInMonth","monthOption","header","footer","_getMonthCalendar","heightPercent","gridOption","weekdayViewContainer","daynameViewModel","daynameModel","scheduleTmpl","_getRenderLimitIndex","count","gridHeaderHeight","gridFooterHeight","renderLimitIdx","dateObj","scheduleBulletTop","moreElement","getMousePosDate","Guide","getScheduleData","_cache","isElementWeekdayGrid","dragEvent","dragEndEvent","times","_adjustStartAndEndTime","MonthCreationGuide","monthCreation","monthCreationDragstart","monthCreationDrag","monthCreationDragend","monthCreationClick","getMousePosData","MonthResizeGuide","scheduleCache","newEnd","monthResize","monthResizeDragstart","monthResizeDrag","monthResizeDragend","_hideScheduleBlocks","_showScheduleBlocks","MonthMoveGuide","startDateRaw","dragEndTime","newStartDate","getMonthScheduleBlock","blockSelector","getMoreLayerScheduleBlock","hasPermissionToHandle","monthMove","monthMoveDragstart","monthMoveDrag","monthMoveDragend","_clearGridBgColor","beforeGridElement","_updateGridBgColor","gridElements","targetIndex","firstWeekdayView","weekdayOptions","moreLayerSize","_getRenderPosition","weekItem","containerSize","calWidth","calHeight","isOverWidth","isOverHeight","optMoreLayerSize","leftPos","topPos","titleHeight","titleMarginBottom","paddingBottom","listHeight","boxShadow","moreViewTitle","marginBottom","titleBackgroundColor","titleBorderBottom","titlePadding","listPadding","moreViewList","SIXTY_MINUTES","oper","getElSize","getElLeft","getElWidth","blockHeight","paddingTop","classDay","classDayLabel","classNames","classDate","gmt","meridiem","templates","endFormat","postfix"],"mappings":"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","file":"tui-calendar.min.js","sourcesContent":[null," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/dist\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 36);\n","module.exports = __WEBPACK_EXTERNAL_MODULE__0__;","/* eslint complexity: 0, no-shadow: 0, max-nested-callbacks: 0  */\n/**\n * @fileoverview Utility modules for manipulate DOM elements.\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\nvar domevent = require('./domevent');\nvar Collection = require('./collection');\nvar util = require('tui-code-snippet');\n\nvar posKey = '_pos',\n    domutil;\n\nvar CSS_AUTO_REGEX = /^auto$|^$|%/;\n\n/**\n * Trim leading, trailing whitespace\n * @param {string} str - string to trim\n * @returns {string} trimmed string\n */\nfunction trim(str) {\n    return str.replace(/^\\s\\s*/, '').replace(/\\s\\s*$/, '');\n}\n\ndomutil = {\n    /**\n     * Create DOM element and return it.\n     * @param {string} tagName Tag name to append.\n     * @param {HTMLElement} [container] HTML element will be parent to created element.\n     * if not supplied, will use **document.body**\n     * @param {string} [className] Design class names to appling created element.\n     * @returns {HTMLElement} HTML element created.\n     */\n    appendHTMLElement: function(tagName, container, className) {\n        var el;\n\n        className = className || '';\n\n        el = document.createElement(tagName);\n        el.className = className;\n\n        if (container) {\n            container.appendChild(el);\n        } else {\n            document.body.appendChild(el);\n        }\n\n        return el;\n    },\n\n    /**\n     * Remove element from parent node.\n     * @param {HTMLElement} el - element to remove.\n     */\n    remove: function(el) {\n        if (el && el.parentNode) {\n            el.parentNode.removeChild(el);\n        }\n    },\n\n    /**\n     * Get element by id\n     * @param {string} id element id attribute\n     * @returns {HTMLElement} element\n     */\n    get: function(id) {\n        return document.getElementById(id);\n    },\n\n    /**\n     * Check supplied element is matched selector.\n     * @param {HTMLElement} el - element to check\n     * @param {string} selector - selector string to check\n     * @returns {boolean} match?\n     */\n    _matcher: function(el, selector) {\n        var cssClassSelector = /^\\./,\n            idSelector = /^#/;\n\n        if (cssClassSelector.test(selector)) {\n            return domutil.hasClass(el, selector.replace('.', ''));\n        }\n        if (idSelector.test(selector)) {\n            return el.id === selector.replace('#', '');\n        }\n\n        return el.nodeName.toLowerCase() === selector.toLowerCase();\n    },\n\n    /**\n     * Find DOM element by specific selectors.\n     * below three selector only supported.\n     *\n     * 1. css selector\n     * 2. id selector\n     * 3. nodeName selector\n     * @param {string} selector selector\n     * @param {(HTMLElement|string)} [root] You can assign root element to find\n     *  if not supplied, document.body will use.\n     * @param {boolean|function} [multiple=false] - set true then return all\n     *  elements that meet condition, if set function then use it filter function.\n     * @returns {HTMLElement} HTML element finded.\n     */\n    find: function(selector, root, multiple) {\n        var result = [],\n            found = false,\n            isFirst = util.isUndefined(multiple) || multiple === false,\n            isFilter = util.isFunction(multiple);\n\n        if (util.isString(root)) {\n            root = domutil.get(root);\n        }\n\n        root = root || window.document.body;\n\n        /**\n         * Function for recursive find specific node\n         * @param {HTMLElement} el - element to search\n         * @param {string} selector - selector\n         */\n        function recurse(el, selector) {\n            var childNodes = el.childNodes,\n                i = 0,\n                len = childNodes.length,\n                cursor;\n\n            for (; i < len; i += 1) {\n                cursor = childNodes[i];\n\n                if (cursor.nodeName === '#text') {\n                    continue;\n                }\n\n                if (domutil._matcher(cursor, selector)) {\n                    if ((isFilter && multiple(cursor)) || !isFilter) {\n                        result.push(cursor);\n                    }\n\n                    if (isFirst) {\n                        found = true;\n                        break;\n                    }\n                } else if (cursor.childNodes.length > 0) {\n                    recurse(cursor, selector);\n                    if (found) {\n                        break;\n                    }\n                }\n            }\n        }\n\n        recurse(root, selector);\n\n        return isFirst ? (result[0] || null) : result;\n    },\n\n    /**\n     * Find parent element recursively.\n     * @param {HTMLElement} el - base element to start find.\n     * @param {string} selector - selector string for find\n     * @param {boolean} excludeEl - exclude the base element to find\n     * @returns {HTMLElement} - element finded or null.\n     */\n    closest: function(el, selector, excludeEl) {\n        var parent;\n\n        if (!el) {\n            return null;\n        }\n\n        parent = el.parentNode;\n\n        if (!excludeEl && domutil._matcher(el, selector)) {\n            return el;\n        }\n\n        while (parent && parent !== window.document.body) {\n            if (domutil._matcher(parent, selector)) {\n                return parent;\n            }\n\n            parent = parent.parentNode;\n        }\n\n        return null;\n    },\n\n    /**\n     * Return texts inside element.\n     * @param {HTMLElement} el target element\n     * @returns {string} text inside node\n     */\n    text: function(el) {\n        var ret = '',\n            i = 0,\n            nodeType = el.nodeType;\n\n        if (nodeType) {\n            if (nodeType === 1 || nodeType === 9 || nodeType === 11) {\n                // nodes that available contain other nodes\n                if (typeof el.textContent === 'string') {\n                    return el.textContent;\n                }\n\n                for (el = el.firstChild; el; el = el.nextSibling) {\n                    ret += domutil.text(el);\n                }\n            } else if (nodeType === 3 || nodeType === 4) {\n                // TEXT, CDATA SECTION\n                return el.nodeValue;\n            }\n        } else {\n            for (; el[i]; i += 1) {\n                ret += domutil.text(el[i]);\n            }\n        }\n\n        return ret;\n    },\n\n    /**\n     * Set data attribute to target element\n     * @param {HTMLElement} el - element to set data attribute\n     * @param {string} key - key\n     * @param {string|number} data - data value\n     */\n    setData: function(el, key, data) {\n        if ('dataset' in el) {\n            el.dataset[key] = data;\n\n            return;\n        }\n\n        el.setAttribute('data-' + key, data);\n    },\n\n    /**\n     * Get data value from data-attribute\n     * @param {HTMLElement} el - target element\n     * @param {string} key - key\n     * @returns {string} value\n     */\n    getData: function(el, key) {\n        if ('dataset' in el) {\n            return el.dataset[key];\n        }\n\n        return el.getAttribute('data-' + key);\n    },\n\n    /**\n     * Check element has specific design class name.\n     * @param {HTMLElement} el target element\n     * @param {string} name css class\n     * @returns {boolean} return true when element has that css class name\n     */\n    hasClass: function(el, name) {\n        var className;\n\n        if (!util.isUndefined(el.classList)) {\n            return el.classList.contains(name);\n        }\n\n        className = domutil.getClass(el);\n\n        return className.length > 0 && new RegExp('(^|\\\\s)' + name + '(\\\\s|$)').test(className);\n    },\n\n    /**\n     * Add design class to HTML element.\n     * @param {HTMLElement} el target element\n     * @param {string} name css class name\n     */\n    addClass: function(el, name) {\n        var className;\n\n        if (!util.isUndefined(el.classList)) {\n            util.forEachArray(name.split(' '), function(value) {\n                el.classList.add(value);\n            });\n        } else if (!domutil.hasClass(el, name)) {\n            className = domutil.getClass(el);\n            domutil.setClass(el, (className ? className + ' ' : '') + name);\n        }\n    },\n\n    /**\n     *\n     * Overwrite design class to HTML element.\n     * @param {HTMLElement} el target element\n     * @param {string} name css class name\n     */\n    setClass: function(el, name) {\n        if (util.isUndefined(el.className.baseVal)) {\n            el.className = name;\n        } else {\n            el.className.baseVal = name;\n        }\n    },\n\n    /**\n     * Element에 cssClass속성을 제거하는 메서드\n     * Remove specific design class from HTML element.\n     * @param {HTMLElement} el target element\n     * @param {string} name class name to remove\n     */\n    removeClass: function(el, name) {\n        var removed = '';\n\n        if (!util.isUndefined(el.classList)) {\n            el.classList.remove(name);\n        } else {\n            removed = (' ' + domutil.getClass(el) + ' ').replace(' ' + name + ' ', ' ');\n            domutil.setClass(el, trim(removed));\n        }\n    },\n\n    /**\n     * Get HTML element's design classes.\n     * @param {HTMLElement} el target element\n     * @returns {string} element css class name\n     */\n    getClass: function(el) {\n        if (!el || !el.className) {\n            return '';\n        }\n\n        return util.isUndefined(el.className.baseVal) ? el.className : el.className.baseVal;\n    },\n\n    /**\n     * Get specific CSS style value from HTML element.\n     * @param {HTMLElement} el target element\n     * @param {string} style css attribute name\n     * @returns {(string|null)} css style value\n     */\n    getStyle: function(el, style) {\n        var value = el.style[style] || (el.currentStyle && el.currentStyle[style]),\n            css;\n\n        if ((!value || value === 'auto') && document.defaultView) {\n            css = document.defaultView.getComputedStyle(el, null);\n            value = css ? css[style] : null;\n        }\n\n        return value === 'auto' ? null : value;\n    },\n\n    /**\n     * get element's computed style values.\n     *\n     * in lower IE8. use polyfill function that return object. it has only one function 'getPropertyValue'\n     * @param {HTMLElement} el - element want to get style.\n     * @returns {object} virtual CSSStyleDeclaration object.\n     */\n    getComputedStyle: function(el) {\n        var defaultView = document.defaultView;\n\n        if (!defaultView || !defaultView.getComputedStyle) {\n            return {\n                getPropertyValue: function(prop) {\n                    /* eslint-disable no-useless-escape */\n                    var re = /(\\-([a-z]){1})/g;\n                    if (prop === 'float') {\n                        prop = 'styleFloat';\n                    }\n\n                    if (re.test(prop)) {\n                        prop = prop.replace(re, function() {\n                            return arguments[2].toUpperCase();\n                        });\n                    }\n\n                    return el.currentStyle[prop] || null;\n                }\n            };\n        }\n\n        return document.defaultView.getComputedStyle(el);\n    },\n\n    /**\n     * Set position CSS style.\n     * @param {HTMLElement} el target element\n     * @param {number} [x=0] left pixel value.\n     * @param {number} [y=0] top pixel value.\n     */\n    setPosition: function(el, x, y) {\n        x = util.isUndefined(x) ? 0 : x;\n        y = util.isUndefined(y) ? 0 : y;\n\n        el[posKey] = [x, y];\n\n        el.style.left = util.isNumber(x) ? (x + 'px') : x;\n        el.style.top = util.isNumber(y) ? (y + 'px') : y;\n    },\n\n    /**\n     * Set position CSS style with left, top, right, bottom\n     * @param {HTMLElement} el target element\n     * @param {object} ltrb object of left, top, right, bottom\n     * @param {number} [ltrb.left] left pixel value.\n     * @param {number} [ltrb.top] top pixel value.\n     * @param {number} [ltrb.right] right pixel value.\n     * @param {number} [ltrb.bottom] bottom pixel value.\n     */\n    setLTRB: function(el, ltrb) {\n        var props = ['left', 'top', 'right', 'bottom'];\n        var value;\n        props.forEach(function(prop) {\n            value = util.isUndefined(ltrb[prop]) ? '' : ltrb[prop];\n            el.style[prop] = util.isNumber(value) ? (value + 'px') : value;\n        });\n    },\n\n    /**\n     * Get position from HTML element.\n     * @param {HTMLElement} el target element\n     * @param {boolean} [clear=false] clear cache before calculating position.\n     * @returns {number[]} point\n     */\n    getPosition: function(el, clear) {\n        var left,\n            top,\n            bound;\n\n        if (clear) {\n            el[posKey] = null;\n        }\n\n        if (el[posKey]) {\n            return el[posKey];\n        }\n\n        left = 0;\n        top = 0;\n\n        if ((CSS_AUTO_REGEX.test(el.style.left) || CSS_AUTO_REGEX.test(el.style.top)) &&\n            'getBoundingClientRect' in el) {\n            // When the element's left or top is 'auto'\n            bound = el.getBoundingClientRect();\n\n            left = bound.left;\n            top = bound.top;\n        } else {\n            left = parseFloat(el.style.left || 0);\n            top = parseFloat(el.style.top || 0);\n        }\n\n        return [left, top];\n    },\n\n    /**\n     * Return element's size\n     * @param {HTMLElement} el target element\n     * @returns {number[]} width, height\n     */\n    getSize: function(el) {\n        var bound,\n            width = domutil.getStyle(el, 'width'),\n            height = domutil.getStyle(el, 'height');\n\n        if ((CSS_AUTO_REGEX.test(width) || CSS_AUTO_REGEX.test(height) ||\n             util.isNull(width) || util.isNull(height)) &&\n            'getBoundingClientRect' in el) {\n            bound = el.getBoundingClientRect();\n            width = bound.width || el.offsetWidth;\n            height = bound.height || el.offsetHeight;\n        } else {\n            width = parseFloat(width || 0);\n            height = parseFloat(height || 0);\n        }\n\n        return [width, height];\n    },\n\n    /**\n     * Fallback of getBoundingClientRect\n     * @param {HTMLElement} el - element\n     * @returns {object} rect\n     */\n    getBCRect: function(el) {\n        var rect = el.getBoundingClientRect();\n\n        rect = util.extend({\n            width: el.offsetWidth,\n            height: el.offsetHeight\n        }, rect);\n\n        return rect;\n    },\n\n    /**\n     * Check specific CSS style is available.\n     * @param {array} props property name to testing\n     * @returns {(string|boolean)} return true when property is available\n     * @example\n     * var props = ['transform', '-webkit-transform'];\n     * domutil.testProp(props);    // 'transform'\n     */\n    testProp: function(props) {\n        var style = document.documentElement.style,\n            i = 0,\n            len = props.length;\n\n        for (; i < len; i += 1) {\n            if (props[i] in style) {\n                return props[i];\n            }\n        }\n\n        return false;\n    },\n\n    /**\n     * Get form data\n     * @param {HTMLFormElement} formElement - form element to extract data\n     * @returns {object} form data\n     */\n    getFormData: function(formElement) {\n        var groupedByName = new Collection(function() {\n                return this.length;\n            }),\n            noDisabledFilter = function(el) {\n                return !el.disabled;\n            },\n            output = {};\n\n        groupedByName.add.apply(\n            groupedByName,\n            domutil.find('input', formElement, noDisabledFilter)\n                .concat(domutil.find('select', formElement, noDisabledFilter))\n                .concat(domutil.find('textarea', formElement, noDisabledFilter))\n        );\n\n        groupedByName = groupedByName.groupBy(function(el) {\n            return (el && el.getAttribute('name')) || '_other';\n        });\n\n        util.forEach(groupedByName, function(elements, name) {\n            if (name === '_other') {\n                return;\n            }\n\n            elements.each(function(el) {\n                var nodeName = el.nodeName.toLowerCase(),\n                    type = el.type,\n                    result = [];\n\n                if (type === 'radio') {\n                    result = [elements.find(function(el) {\n                        return el.checked;\n                    }).toArray().pop()];\n                } else if (type === 'checkbox') {\n                    result = elements.find(function(el) {\n                        return el.checked;\n                    }).toArray();\n                } else if (nodeName === 'select') {\n                    elements.find(function(el) {\n                        return !!el.childNodes.length;\n                    }).each(function(el) {\n                        result = result.concat(\n                            domutil.find('option', el, function(opt) {\n                                return opt.selected;\n                            })\n                        );\n                    });\n                } else {\n                    result = elements.find(function(el) {\n                        return el.value !== '';\n                    }).toArray();\n                }\n\n                result = util.map(result, function(el) {\n                    return el.value;\n                });\n\n                if (!result.length) {\n                    result = '';\n                } else if (result.length === 1) {\n                    result = result[0];\n                }\n\n                output[name] = result;\n            });\n        });\n\n        return output;\n    }\n};\n\n/* eslint-disable */\nvar userSelectProperty = domutil.testProp([\n    'userSelect',\n    'WebkitUserSelect',\n    'OUserSelect',\n    'MozUserSelect',\n    'msUserSelect'\n]);\nvar supportSelectStart = 'onselectstart' in document;\nvar prevSelectStyle = '';\n\n/* eslint-enable */\n\n/**\n * Disable browser's text selection behaviors.\n * @method\n */\ndomutil.disableTextSelection = (function() {\n    if (supportSelectStart) {\n        return function(dom, onSelectstartHandler) {\n            domevent.on(dom, 'selectstart', onSelectstartHandler || domevent.preventDefault);\n        };\n    }\n\n    return function(dom) {\n        var style = dom.style;\n        prevSelectStyle = style[userSelectProperty];\n        style[userSelectProperty] = 'none';\n    };\n})();\n\n/**\n * Enable browser's text selection behaviors.\n * @method\n */\ndomutil.enableTextSelection = (function() {\n    if (supportSelectStart) {\n        return function(dom, onSelectstartHandler) {\n            domevent.off(window, 'selectstart', onSelectstartHandler || domevent.preventDefault);\n        };\n    }\n\n    return function() {\n        document.documentElement.style[userSelectProperty] = prevSelectStyle;\n    };\n})();\n\n/**\n * Disable browser's image drag behaviors.\n */\ndomutil.disableImageDrag = function() {\n    domevent.on(window, 'dragstart', domevent.preventDefault);\n};\n\n/**\n * Enable browser's image drag behaviors.\n */\ndomutil.enableImageDrag = function() {\n    domevent.off(window, 'dragstart', domevent.preventDefault);\n};\n\nmodule.exports = domutil;\n","/**\n * @fileoverview Global configuration object module. This @echo syntax will change preprocess context. See gulpfile.js\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\nvar cssPrefix = 'tui-full-calendar-',\n    alldayGetViewID = new RegExp('^' + cssPrefix + 'weekday[\\\\s]tui-view-(\\\\d+)'),\n    alldayCheckPermission = new RegExp('^' + cssPrefix + 'schedule(-title)?$'),\n    timeGetViewID = new RegExp('^' + cssPrefix + 'time-date[\\\\s]tui-view-(\\\\d+)');\n\nvar config = {\n    throwError: function(msg) {\n        alert(msg);\n    },\n\n    cssPrefix: cssPrefix,\n\n    classname: function(str) {\n        str = str || '';\n\n        if (str.charAt(0) === '.') {\n            return '.' + config.cssPrefix + str.slice(1);\n        }\n\n        return config.cssPrefix + str;\n    },\n\n    allday: {\n        getViewIDRegExp: alldayGetViewID,\n        checkCondRegExp: alldayCheckPermission\n    },\n\n    daygrid: {\n        getViewIDRegExp: alldayGetViewID,\n        checkCondRegExp: alldayCheckPermission\n    },\n\n    time: {\n        getViewIDRegExp: timeGetViewID\n    }\n};\n\nmodule.exports = config;\n","/**\n * @fileoverview datetime utility module\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\nvar TZDate = require('./timezone').Date,\n    dw = require('../common/dw');\nvar util = require('tui-code-snippet');\n/* eslint-disable no-useless-escape */\nvar dateFormatRx = /^(\\d{4}[-|\\/]*\\d{2}[-|\\/]*\\d{2})\\s?(\\d{2}:\\d{2}:\\d{2})?$/;\nvar datetime, tokenFunc;\n\nvar memo = {\n    millisecondsTo: {},\n    millisecondsFrom: {}\n};\n\ntokenFunc = {\n    /**\n     * @param {TZDate} date date object.\n     * @returns {string} YYYYMMDD\n     */\n    'YYYYMMDD': function(date) {\n        return [\n            date.getFullYear(),\n            datetime.leadingZero(date.getMonth() + 1, 2),\n            datetime.leadingZero(date.getDate(), 2)\n        ].join('');\n    },\n    /**\n     * @param {TZDate} date date object\n     * @returns {string} four digit year number\n     */\n    'YYYY': function(date) {\n        return String(date.getFullYear());\n    },\n\n    /**\n     * @param {TZDate} date date object\n     * @returns {string} two digit month number\n     */\n    'MM': function(date) {\n        return datetime.leadingZero(date.getMonth() + 1, 2);\n    },\n\n    /**\n     * @param {TZDate} date date object\n     * @returns {string} two digit date number\n     */\n    'DD': function(date) {\n        return datetime.leadingZero(date.getDate(), 2);\n    },\n\n    /**\n     * @param {TZDate} date date object\n     * @returns {string} HH:mm\n     */\n    'HH:mm': function(date) {\n        var hour = date.getHours(),\n            minutes = date.getMinutes();\n\n        return datetime.leadingZero(hour, 2) + ':' +\n            datetime.leadingZero(minutes, 2);\n    },\n\n    /**\n     * @param {TZDate} date date object\n     * @returns {string} hh:mm\n     */\n    'hh:mm': function(date) {\n        var hour = date.getHours();\n        var minutes = date.getMinutes();\n\n        if (hour > 12) {\n            hour = hour % 12;\n        }\n\n        return datetime.leadingZero(hour, 2) + ':' +\n            datetime.leadingZero(minutes, 2);\n    },\n\n    /**\n     * @param {TZDate} date date object\n     * @returns {string} tt\n     */\n    'tt': function(date) {\n        var hour = date.getHours();\n\n        return hour < 12 ? 'am' : 'pm';\n    }\n};\n\ndatetime = {\n    /**\n     * The number of milliseconds one day.\n     * @type {number}\n     */\n    MILLISECONDS_PER_DAY: 86400000,\n\n    /**\n     * The number of milliseconds one hour.\n     * @type {number}\n     */\n    MILLISECONDS_PER_HOUR: 3600000,\n\n    /**\n     * The number of milliseconds one minutes.\n     * @type {number}\n     */\n    MILLISECONDS_PER_MINUTES: 60000,\n\n    /**\n     * The number of milliseconds 20 minutes for schedule min duration\n     * @type {number}\n     */\n    MILLISECONDS_SCHEDULE_MIN_DURATION: 20 * 60000,\n\n    /**\n     * convert milliseconds\n     * @param {string} type - type of value.\n     * @param {number} value - value to convert.\n     * @param {function} iteratee - iteratee function to use reduce.\n     * @returns {number} converted value.\n     */\n    _convMilliseconds: function(type, value, iteratee) {\n        var conv = [24, 60, 60, 1000],\n            index = {\n                day: 0,\n                hour: 1,\n                minutes: 2,\n                seconds: 3\n            };\n\n        if (!(type in index) || global.isNaN(value)) {\n            return false;\n        }\n\n        return util.reduce([value].concat(conv.slice(index[type])), iteratee);\n    },\n\n    /**\n     * Convert milliseconds value to other type\n     * @param {type} type convert to type want to. support \"day\", \"hour\",\n     *  \"minutes\", \"seconds\" only.\n     * @param {value} value - value to convert.\n     * @returns {number} converted value.\n     */\n    millisecondsTo: function(type, value) {\n        var cache = memo.millisecondsTo,\n            key = type + value;\n\n        if (cache[key]) {\n            return cache[key];\n        }\n\n        cache[key] = datetime._convMilliseconds(type, value, function(m, v) {\n            return m / v;\n        });\n\n        return cache[key];\n    },\n\n    /**\n     * Convert value to milliseconds\n     * @param {type} type - type of supplied value. support \"hour\", \"minutes\", \"seconds\" only.\n     * @param {value} value - value to convert.\n     * @returns {number} converted value.\n     */\n    millisecondsFrom: function(type, value) {\n        var cache = memo.millisecondsFrom,\n            key = type + value;\n\n        if (cache[key]) {\n            return cache[key];\n        }\n\n        cache[key] = datetime._convMilliseconds(type, value, function(m, v) {\n            return m * v;\n        });\n\n        return cache[key];\n    },\n\n    /**\n     * Convert hours to minutes\n     * @param {number} hours - hours\n     * @returns {number} minutes\n     */\n    minutesFromHours: function(hours) {\n        return hours * 60;\n    },\n\n    /**\n     * Make date array from supplied paramters.\n     * @param {TZDate} start Start date.\n     * @param {TZDate} end End date.\n     * @param {number} step The number of milliseconds to use increment.\n     * @returns {TZDate[]} TZDate array.\n     */\n    range: function(start, end, step) {\n        var startTime = start.getTime();\n        var endTime = end.getTime();\n        var cursor = startTime;\n        var date = dw(new TZDate(start));\n        var result = [];\n\n        while (cursor <= endTime && endTime >= date.d.getTime()) {\n            result.push(datetime.start(date.d));\n            cursor = cursor + step;\n            date.addDate(1);\n        }\n\n        return result;\n    },\n\n    /**\n     * Clone supplied date.\n     * @param {TZDate} date date object to clone.\n     * @returns {TZDate} Cloned date object\n     */\n    clone: function(date) {\n        return new TZDate(date);\n    },\n\n    /**\n     * Compare two dates.\n     *\n     * when first date is latest then seconds then return -1.\n     *\n     * return +1 reverse, and return 0 is same.\n     * @param {TZDate} d1 Date object to compare.\n     * @param {TZDate} d2 Date object to compare.\n     * @returns {number} result of compare\n     */\n    compare: function(d1, d2) {\n        var _d1 = d1.getTime(),\n            _d2 = d2.getTime();\n\n        if (_d1 < _d2) {\n            return -1;\n        }\n        if (_d1 > _d2) {\n            return 1;\n        }\n\n        return 0;\n    },\n\n    /**\n     * @param {TZDate} d1 - date one\n     * @param {TZDate} d2 - date two\n     * @returns {boolean} is two date are same year, month?\n     */\n    isSameMonth: function(d1, d2) {\n        return (d1.getFullYear() === d2.getFullYear() &&\n                d1.getMonth() === d2.getMonth());\n    },\n\n    /**\n     * @param {TZDate} d1 - date one\n     * @param {TZDate} d2 - date two\n     * @returns {boolean} is two date are same year, month, date?\n     */\n    isSameDate: function(d1, d2) {\n        var sameMonth = datetime.isSameMonth(d1, d2);\n\n        return sameMonth && (d1.getDate() === d2.getDate());\n    },\n\n    /**\n     * Check supplied parameter is valid date object.\n     * @param {*} d Object to validate.\n     * @returns {boolean} return true when parameter is valid date object.\n     */\n    isValid: function(d) {\n        if (d instanceof TZDate) {\n            return !window.isNaN(d.getTime());\n        }\n\n        return false;\n    },\n\n    /**\n     * convert non local date to UTC date.\n     * @param {TZDate} d Date to convert UTC.\n     * @returns {TZDate} The UTC Date.\n     */\n    toUTC: function(d) {\n        var l = d.getTime(),\n            offset = datetime.millisecondsFrom('minutes', new Date().getTimezoneOffset());\n\n        return new TZDate(l + offset);\n    },\n\n    /**\n     * pad left zero characters.\n     * @param {number} number number value to pad zero.\n     * @param {number} length pad length to want.\n     * @returns {string} padded string.\n     */\n    leadingZero: function(number, length) {\n        var zero = '',\n            i = 0;\n\n        if (String(number).length > length) {\n            return String(number);\n        }\n\n        for (; i < (length - 1); i += 1) {\n            zero += '0';\n        }\n\n        return (zero + number).slice(length * -1);\n    },\n\n    /**\n     * Convert date string to date object.\n     *\n     * Only listed below formats avaliable.\n     *\n     * - YYYYMMDD\n     * - YYYY/MM/DD\n     * - YYYY-MM-DD\n     * - YYYY/MM/DD HH:mm:SS\n     * - YYYY-MM-DD HH:mm:SS\n     *\n     * @param {string} str Formatted string.\n     * @param {number} [fixMonth=-1] - number for fix month calculating.\n     * @returns {(TZDate|boolean)} Converted Date object. when supplied str is not available then return false.\n     */\n    parse: function(str, fixMonth) {\n        var separator,\n            matches = str.match(dateFormatRx),\n            ymd,\n            hms;\n\n        if (util.isUndefined(fixMonth)) {\n            fixMonth = -1;\n        }\n\n        if (!matches) {\n            return false;\n        }\n\n        if (str.length > 8) {\n            // YYYY/MM/DD\n            // YYYY-MM-DD\n            // YYYY/MM/DD HH:mm:SS\n            // YYYY-MM-DD HH:mm:SS\n            separator = ~str.indexOf('/') ? '/' : '-';\n            matches = matches.splice(1);\n\n            ymd = matches[0].split(separator);\n            hms = matches[1] ? matches[1].split(':') : [0, 0, 0];\n        } else {\n            // YYYYMMDD\n            matches = matches[0];\n            ymd = [matches.substr(0, 4), matches.substr(4, 2), matches.substr(6, 2)];\n            hms = [0, 0, 0];\n        }\n\n        return new TZDate().setWithRaw(\n            Number(ymd[0]),\n            Number(ymd[1]) + fixMonth,\n            Number(ymd[2]),\n            Number(hms[0]),\n            Number(hms[1]),\n            Number(hms[2]),\n            0\n        );\n    },\n\n    /**\n     * Return date object from Date.\n     * @param {TZDate} date date\n     * @returns {object} Date object.\n     */\n    raw: function(date) {\n        return {\n            y: date.getFullYear(),\n            M: date.getMonth(),\n            d: date.getDate(),\n            h: date.getHours(),\n            m: date.getMinutes(),\n            s: date.getSeconds(),\n            ms: date.getMilliseconds()\n        };\n    },\n\n    /**\n     * Return 00:00:00 supplied date.\n     * @param {TZDate} date date. if undefined, use now.\n     * @returns {TZDate} start date.\n     */\n    start: function(date) {\n        var d = date ? new TZDate(date) : new TZDate();\n        d.setHours(0, 0, 0, 0);\n\n        return d;\n    },\n\n    /**\n     * Return 23:59:59 supplied date.\n     * @param {TZDate} date date. if undefined, use now.\n     * @returns {TZDate} end date.\n     */\n    end: function(date) {\n        var d = date ? new TZDate(date) : new TZDate();\n        d.setHours(23, 59, 59, 0);\n\n        return d;\n    },\n\n    /**\n     * Return formatted string as basis of supplied string.\n     *\n     * Supported Token Lists.\n     *\n     * - YYYY => 1988\n     * - MM => 01 ~ 12\n     * - DD => 01 ~ 31\n     * - YYYYMMDD => 19880925\n     * @param {TZDate} date String want to formatted.\n     * @param {string} format format str.\n     * @returns {string}  Formatted date string.\n     */\n    format: function(date, format) {\n        var result = format;\n        util.forEachOwnProperties(tokenFunc, function(converter, token) {\n            result = result.replace(token, converter(date));\n        });\n\n        return result;\n    },\n\n    /**\n     * Get start date of specific month\n     * @param {TZDate} date - date to get start date\n     * @returns {TZDate} start date of supplied month\n     */\n    startDateOfMonth: function(date) {\n        var startDate = new TZDate(date);\n\n        startDate.setDate(1);\n        startDate.setHours(0, 0, 0, 0);\n\n        return startDate;\n    },\n\n    /**\n     * Get end date of specific month\n     * @param {TZDate} date - date to get end date\n     * @returns {TZDate} end date of supplied month\n     */\n    endDateOfMonth: function(date) {\n        var endDate = datetime.startDateOfMonth(date);\n\n        endDate.setMonth(endDate.getMonth() + 1);\n        endDate.setDate(endDate.getDate() - 1);\n        endDate.setHours(23, 59, 59);\n\n        return endDate;\n    },\n\n    /**\n     * Return 2-dimensional array month calendar\n     *\n     * dates that different month with given date are negative values\n     * @param {TZDate} month - date want to calculate month calendar\n     * @param {object} options - options\n     * @param {number} [options.startDayOfWeek=0] - start day of week\n     * @param {boolean} options.isAlways6Week - whether the number of weeks are always 6\n     * @param {number} options.visibleWeeksCount visible weeks count\n     * @param {boolean} options.workweek - only show work week\n     * @param {function} [iteratee] - iteratee for customizing calendar object\n     * @returns {Array.<TZDate[]>} calendar 2d array\n     */\n    arr2dCalendar: function(month, options, iteratee) {\n        var weekArr,\n            start, end,\n            startIndex, endIndex,\n            totalDate, afterDates,\n            cursor, week,\n            calendar = [],\n            startDayOfWeek = options.startDayOfWeek,\n            isAlways6Week = util.isUndefined(options.isAlways6Week) || options.isAlways6Week,\n            visibleWeeksCount = options.visibleWeeksCount,\n            workweek = options.workweek;\n\n        if (visibleWeeksCount) {\n            start = new TZDate(month);\n            end = dw(new TZDate(month));\n            end.addDate(7 * (visibleWeeksCount - 1));\n            end = end.d;\n        } else {\n            start = datetime.startDateOfMonth(month);\n            end = datetime.endDateOfMonth(month);\n        }\n\n        // create day number array by startDayOfWeek number\n        // 4 -> [4, 5, 6, 0, 1, 2, 3]\n        // 2 -> [2, 3, 4, 5, 6, 0, 1]\n        weekArr = util.range(startDayOfWeek, 7).concat(util.range(7)).slice(0, 7);\n        startIndex = util.inArray(start.getDay(), weekArr);\n        endIndex = util.inArray(end.getDay(), weekArr);\n        // free dates after last date of this month\n        afterDates = 7 - (endIndex + 1);\n\n        if (visibleWeeksCount) {\n            totalDate = 7 * visibleWeeksCount;\n        } else {\n            totalDate = isAlways6Week ? (7 * 6) : (startIndex + end.getDate() + afterDates);\n        }\n        cursor = datetime.start(start).addDate(-startIndex);\n        // iteratee all dates to render\n        util.forEachArray(util.range(totalDate), function(i) {\n            var date;\n\n            if (!(i % 7)) {\n                // group each date by week\n                week = calendar[i / 7] = [];\n            }\n\n            date = datetime.start(cursor);\n            date = iteratee ? iteratee(date) : date;\n            if (!workweek || !datetime.isWeekend(date.getDay())) {\n                week.push(date);\n            }\n\n            // add date\n            cursor.setDate(cursor.getDate() + 1);\n        });\n\n        return calendar;\n    },\n\n    /**\n     * Calculate grid left(%), width(%) by narrowWeekend, startDayOfWeek, workweek\n     *\n     * @param {number} days - day length of week\n     * @param {boolean} narrowWeekend - narrow weekend\n     * @param {number} startDayOfWeek - start day of week\n     * @param {boolean} workweek - only show work week\n     * @returns {Array} day, left, width\n     */\n    getGridLeftAndWidth: function(days, narrowWeekend, startDayOfWeek, workweek) {\n        var limitDaysToApplyNarrowWeekend = 5;\n        var uniformWidth = 100 / days;\n        var wideWidth = days > limitDaysToApplyNarrowWeekend ? 100 / (days - 1) : uniformWidth;\n        var accumulatedWidth = 0;\n        var dates = util.range(startDayOfWeek, 7).concat(util.range(days)).slice(0, 7);\n\n        if (workweek) {\n            dates = util.filter(dates, function(day) {\n                return !datetime.isWeekend(day);\n            });\n        }\n\n        narrowWeekend = workweek ? false : narrowWeekend;\n\n        return util.map(dates, function(day) {\n            var model;\n            var width = narrowWeekend ? wideWidth : uniformWidth;\n            if (days > limitDaysToApplyNarrowWeekend && narrowWeekend && datetime.isWeekend(day)) {\n                width = wideWidth / 2;\n            }\n\n            model = {\n                day: day,\n                width: width,\n                left: accumulatedWidth\n            };\n\n            accumulatedWidth += width;\n\n            return model;\n        });\n    },\n\n    /**\n     * Get that day is weekend\n     * @param {number} day number\n     * @returns {boolean} true if weekend or false\n     */\n    isWeekend: function(day) {\n        return day === 0 || day === 6;\n    },\n\n    /**\n     * Whether date is between supplied dates with date value?\n     * @param {TZDate} d - target date\n     * @param {TZDate} d1 - from date\n     * @param {TZDate} d2 - to date\n     * @returns {boolean} is between?\n     */\n    isBetweenWithDate: function(d, d1, d2) {\n        var format = 'YYYYMMDD';\n        d = parseInt(datetime.format(d, format), 10);\n        d1 = parseInt(datetime.format(d1, format), 10);\n        d2 = parseInt(datetime.format(d2, format), 10);\n\n        return d1 <= d && d <= d2;\n    },\n\n    isStartOfDay: function(d) {\n        return !datetime.compare(datetime.start(d), d);\n    },\n\n    convertStartDayToLastDay: function(d) {\n        var date = new TZDate(d);\n        if (datetime.isStartOfDay(d)) {\n            date.setDate(date.getDate() - 1);\n            date.setHours(23, 59, 59);\n        }\n\n        return date;\n    },\n\n    getStartOfNextDay: function(d) {\n        var date = datetime.start(d);\n        date.setHours(24);\n\n        return date;\n    },\n\n    getDateDifference: function(d1, d2) {\n        var time1 = new TZDate(d1.getFullYear(), d1.getMonth(), d1.getDate()).getTime();\n        var time2 = new TZDate(d2.getFullYear(), d2.getMonth(), d2.getDate()).getTime();\n\n        return Math.round((time1 - time2) / datetime.MILLISECONDS_PER_DAY);\n    },\n\n    getHourDifference: function(d1, d2) {\n        var time1 = new TZDate(d1).getTime();\n        var time2 = new TZDate(d2).getTime();\n\n        return Math.round((time1 - time2) / datetime.MILLISECONDS_PER_HOUR);\n    },\n\n    hasMultiDates: function(start, end) {\n        var diffDays = datetime.getDateDifference(start, end);\n        var diffHours = Math.abs(datetime.getHourDifference(start, end));\n        var withinDay = Math.abs(diffDays) === 1 && diffHours < 24 && datetime.isStartOfDay(end);\n\n        return !datetime.isSameDate(start, end) && !withinDay;\n    },\n\n    renderEnd: function(start, end) {\n        var diffDays = datetime.getDateDifference(start, end);\n\n        return Math.abs(diffDays) >= 1 && datetime.isStartOfDay(end) ?\n            datetime.convertStartDayToLastDay(end) :\n            datetime.end(end);\n    }\n};\n\nmodule.exports = datetime;\n","/**\n * @fileoverview timezone\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\nvar util = require('tui-code-snippet');\n\nvar MIN_TO_MS = 60 * 1000;\nvar nativeOffsetMs = getTimezoneOffset();\nvar customOffsetMs = nativeOffsetMs;\nvar timezoneOffsetCallback = null;\nvar setByTimezoneOption = false;\n\nvar getterMethods = [\n    'getDate',\n    'getDay',\n    'getFullYear',\n    'getHours',\n    'getMilliseconds',\n    'getMinutes',\n    'getMonth',\n    'getSeconds'\n];\n\nvar setterMethods = [\n    'setDate',\n    'setFullYear',\n    'setHours',\n    'setMilliseconds',\n    'setMinutes',\n    'setMonth',\n    'setSeconds'\n];\n\n/**\n * Get the timezone offset by timestampe\n * @param {number} timestamp - timestamp\n * @returns {number} timezone offset\n * @private\n */\nfunction getTimezoneOffset(timestamp) {\n    timestamp = timestamp || Date.now();\n\n    return new Date(timestamp).getTimezoneOffset() * MIN_TO_MS;\n}\n\n/**\n * Get the custome timezone offset by timestampe\n * @param {number} timestamp - timestamp\n * @returns {number} timezone offset\n * @private\n */\nfunction getCustomTimezoneOffset(timestamp) {\n    if (!setByTimezoneOption && timezoneOffsetCallback) {\n        return timezoneOffsetCallback(timestamp) * MIN_TO_MS;\n    }\n\n    return customOffsetMs;\n}\n\n/**\n * Convert to local time\n * @param {number} time - time\n * @returns {number} local time\n */\nfunction getLocalTime(time) {\n    var timezoneOffset = getTimezoneOffset(time);\n    var customTimezoneOffset = getCustomTimezoneOffset(time);\n    var timezoneOffsetDiff = customTimezoneOffset ? 0 : nativeOffsetMs - timezoneOffset;\n    var localTime = time - customTimezoneOffset + timezoneOffset + timezoneOffsetDiff;\n\n    return localTime;\n}\n\n/**\n * Create a Date instance with multiple arguments\n * @param {Array} args - arguments\n * @returns {Date}\n * @private\n */\nfunction createDateWithMultipleArgs(args) {\n    var utc = Date.UTC.apply(null, args);\n\n    return new Date(utc + getTimezoneOffset(utc));\n}\n\n/**\n * To convert a Date to TZDate as it is.\n * @param {TZDate|number|null} arg - date\n * @returns {Date}\n */\nfunction createDateWithUTCTime(arg) {\n    var time;\n\n    if (arg instanceof TZDate) {\n        time = arg.getUTCTime();\n    } else if ((typeof arg) === 'number') {\n        time = arg;\n    } else if (arg === null) {\n        time = 0;\n    } else {\n        throw new Error('Invalid Type');\n    }\n\n    return new Date(time);\n}\n\n/**\n * Convert time to local time. Those times are only from API and not from inner source code.\n * @param {Date|string} arg - date\n * @returns {Date}\n */\nfunction createDateAsLocalTime(arg) {\n    var time;\n\n    if (arg instanceof Date) {\n        time = arg.getTime();\n    } else if ((typeof arg) === 'string') {\n        time = Date.parse(arg);\n    } else {\n        throw new Error('Invalid Type');\n    }\n\n    time = getLocalTime(time);\n\n    return new Date(time);\n}\n\n/**\n * is it for local time? These type can be used from Calendar API.\n * @param {Date|string} arg - date\n * @returns {boolean}\n */\nfunction useLocalTimeConverter(arg) {\n    return arg instanceof Date || (typeof arg) === 'string';\n}\n\n/**\n * Timezone Date Class\n * @param {number|TZDate|Date|string} date - date to be converted\n * @constructor\n */\nfunction TZDate(date) {\n    var nativeDate;\n\n    if (util.isUndefined(date)) {\n        date = Date.now();\n    }\n\n    if (arguments.length > 1) {\n        nativeDate = createDateWithMultipleArgs(arguments);\n    } else if (useLocalTimeConverter(date)) {\n        nativeDate = createDateAsLocalTime(date);\n    } else {\n        nativeDate = createDateWithUTCTime(date);\n    }\n\n    this._date = nativeDate;\n}\n\n/**\n * Get milliseconds which is converted by timezone\n * @returns {number} milliseconds\n */\nTZDate.prototype.getTime = function() {\n    var time = this._date.getTime();\n\n    return time + getCustomTimezoneOffset(time) - getTimezoneOffset(time);\n};\n\n/**\n * Get UTC milliseconds\n * @returns {number} milliseconds\n */\nTZDate.prototype.getUTCTime = function() {\n    return this._date.getTime();\n};\n\n/**\n * toUTCString\n * @returns {string}\n */\nTZDate.prototype.toUTCString = function() {\n    return this._date.toUTCString();\n};\n\n/**\n * to Date\n * @returns {Date}\n */\nTZDate.prototype.toDate = function() {\n    return this._date;\n};\n\nTZDate.prototype.valueOf = function() {\n    return this.getTime();\n};\n\nTZDate.prototype.addDate = function(day) {\n    this.setDate(this.getDate() + day);\n\n    return this;\n};\n\nTZDate.prototype.addMinutes = function(minutes) {\n    this.setMinutes(this.getMinutes() + minutes);\n\n    return this;\n};\n\nTZDate.prototype.addMilliseconds = function(milliseconds) {\n    this.setMilliseconds(this.getMilliseconds() + milliseconds);\n\n    return this;\n};\n\n/* eslint-disable max-params*/\nTZDate.prototype.setWithRaw = function(y, M, d, h, m, s, ms) {\n    this.setFullYear(y, M, d);\n    this.setHours(h, m, s, ms);\n\n    return this;\n};\n\n/**\n * @returns {TZDate} local time\n */\nTZDate.prototype.toLocalTime = function() {\n    var time = this.getTime();\n    var utcTime = this.getUTCTime();\n    var diff = time - utcTime;\n\n    return new TZDate(utcTime - diff);\n};\n\ngetterMethods.forEach(function(methodName) {\n    TZDate.prototype[methodName] = function() {\n        return this._date[methodName].apply(this._date, arguments);\n    };\n});\n\nsetterMethods.forEach(function(methodName) {\n    TZDate.prototype[methodName] = function() {\n        this._date[methodName].apply(this._date, arguments);\n\n        return this.getTime();\n    };\n});\n\nmodule.exports = {\n    Date: TZDate,\n\n    /**\n     * Set offset\n     * @param {number} offset - timezone offset based on minutes\n     */\n    setOffset: function(offset) {\n        customOffsetMs = offset * MIN_TO_MS;\n    },\n\n    /**\n     * Set offset\n     * @param {number} offset - timezone offset based on minutes\n     */\n    setOffsetByTimezoneOption: function(offset) {\n        this.setOffset(-offset);\n        setByTimezoneOption = true;\n    },\n\n    /**\n     * Get offset in case of `setByTimezoneOption`. Or return 0.\n     * @returns {number} timezone offset offset minutes\n     */\n    getOffset: function() {\n        if (setByTimezoneOption) {\n            return customOffsetMs / MIN_TO_MS;\n        }\n\n        return 0;\n    },\n\n    /**\n     * Set a callback function to get timezone offset by timestamp\n     * @param {function} callback - callback function\n     */\n    setOffsetCallback: function(callback) {\n        timezoneOffsetCallback = callback;\n    },\n\n    /**\n     * (Use this method only for testing)\n     * Reset system timezone and custom timezone\n     */\n    restoreOffset: function() {\n        customOffsetMs = getTimezoneOffset();\n    }\n};\n","/**\n * @fileoverview common/general utilities.\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\nvar util = require('tui-code-snippet');\n\nvar domutil = require('../common/domutil'),\n    Collection = require('../common/collection');\nvar datetime = require('../common/datetime');\n\n/**\n * Default schedule id getter for collection\n * @param {Schedule} schedule - schedule instance\n * @returns {string} schedule id\n */\nfunction scheduleIDGetter(schedule) {\n    return schedule.cid();\n}\n\nmodule.exports = {\n    /**\n     * @returns {Collection} new collection for schedule models.\n     */\n    createScheduleCollection: function() {\n        return new Collection(scheduleIDGetter);\n    },\n\n    /**\n     * Get ratio value.\n     *\n     * a : b = y : X;\n     *\n     * =\n     *\n     * X = (b * y) / a;\n     * @param {number} a - a\n     * @param {number} b - b\n     * @param {number} y - y\n     * @returns {number} ratio value\n     */\n    ratio: function(a, b, y) {\n        // a : b = y : x;\n        return (b * y) / a;\n    },\n\n    /**\n     * Find nearest value from supplied params.\n     * @param {number} value - value to find.\n     * @param {array} nearest - nearest array.\n     * @returns {number} nearest value\n     */\n    nearest: function(value, nearest) {\n        var diff = util.map(nearest, function(v) {\n                return Math.abs(value - v);\n            }),\n            nearestIndex = util.inArray(Math.min.apply(null, diff), diff);\n\n        return nearest[nearestIndex];\n    },\n\n    /**\n     * Mixin method.\n     *\n     * (extend methods except property name 'mixin')\n     * @param {object} from - mixin object.\n     * @param {object} to - object to mixin.\n     */\n    mixin: function(from, to) {\n        util.extend(to.prototype, from);\n    },\n\n    /**\n     * Limit supplied value base on `minArr`, `maxArr`\n     * @param {number} value - value\n     * @param {array} minArr - min\n     * @param {array} maxArr - max\n     * @returns {number} limited value\n     */\n    limit: function(value, minArr, maxArr) {\n        var v = Math.max.apply(null, [value].concat(minArr));\n        v = Math.min.apply(null, [v].concat(maxArr));\n\n        return v;\n    },\n\n    /**\n     * Limit supplied date base on `min`, `max`\n     * @param {TZDate} date - date\n     * @param {TZDate} min - min\n     * @param {TZDate} max - max\n     * @returns {TZDate} limited value\n     */\n    limitDate: function(date, min, max) {\n        if (date < min) {\n            return min;\n        }\n        if (date > max) {\n            return max;\n        }\n\n        return date;\n    },\n\n    /**\n     * Max value with TZDate type for timezone calculation\n     * @param {TZDate} d1 - date 1\n     * @param {TZDate} d2 - date 2\n     * @returns {TZDate}\n     */\n    maxDate: function(d1, d2) {\n        if (d1 > d2) {\n            return d1;\n        }\n\n        return d2;\n    },\n\n    stripTags: function(str) {\n        return str.replace(/<([^>]+)>/ig, '');\n    },\n\n    /**\n     * Get first value in 2-dimentional array.\n     * @param {Array.<Array>} arr2d - 2-dimentional array\n     * @returns {*} first value in 2d array\n     */\n    firstIn2dArray: function(arr2d) {\n        return util.pick(arr2d, '0', '0');\n    },\n\n    /**\n     * Get last value in 2-dimentional array.\n     * @param {Array.<Array>} arr2d - 2-dimentional array\n     * @returns {*} last value in 2d array\n     */\n    lastIn2dArray: function(arr2d) {\n        var lastRow = arr2d.length - 1,\n            lastCol = arr2d[lastRow].length - 1;\n\n        return util.pick(arr2d, lastRow, lastCol);\n    },\n\n    /**\n     * Set 'title' attribute for all elements that have exceeded content in\n     * container\n     * @param {string} selector - CSS selector {@see domutil#find}\n     * @param {HTMLElement} container - container element\n     * @param {boolean} force - force to apply\n     */\n    setAutoEllipsis: function(selector, container, force) {\n        util.forEach(domutil.find(selector, container, true), function(el) {\n            if (force || el.offsetWidth < el.scrollWidth) {\n                el.setAttribute('title', domutil.getData(el, 'title'));\n            }\n        });\n    },\n\n    /**\n     * Set the value at path of object.\n     * @param {object} object - the object to modify\n     * @param {string} path -the path of property to set\n     * @param {*} value - the value to set\n     */\n    set: function(object, path, value) {\n        var names = path.split('.');\n        var store = object;\n\n        util.forEach(names, function(name, index) {\n            store[name] = store[name] || {};\n\n            if (index === names.length - 1) {\n                store[name] = value;\n            } else {\n                store = store[name];\n            }\n        });\n    },\n\n    /**\n     * shift a array\n     * @param {Array.<any>} array - array\n     * @param {number} shift - positive or negative integer to shift\n     * @returns {Array.<any>} shifted array\n     */\n    shiftArray: function(array, shift) {\n        var length = Math.abs(shift);\n        var i;\n\n        if (shift > 0) {\n            for (i = 0; i < length; i += 1) {\n                array.push(array.shift());\n            }\n        } else if (shift < 0) {\n            for (i = 0; i < length; i += 1) {\n                array.unshift(array.pop());\n            }\n        }\n\n        return array;\n    },\n\n    /**\n     * take elements from array between start and end.\n     * @param {Array.<any>} array - array\n     * @param {number} start - start index\n     * @param {number} end - end index\n     * @returns {Array.<any>}\n     */\n    takeArray: function(array, start, end) {\n        var length = array.length;\n        var rightCount = length - end;\n        var leftCount = start;\n\n        // remove right\n        array.splice(end, rightCount);\n        // remove left\n        array.splice(0, leftCount);\n\n        return array;\n    },\n\n    /**\n     * shift hours\n     * @param {number} hours - hours\n     * @param {number} shift - positive or negative integer to shift\n     * @returns {number} shifted hours\n     */\n    shiftHours: function(hours, shift) {\n        if (shift > 0) {\n            hours = (hours + shift) % 24;\n        } else if (shift < 0) {\n            hours += shift;\n            hours = hours > 0 ? hours : 24 + hours;\n        }\n\n        return hours;\n    },\n\n    /**\n     * Parse css value into number and units\n     * @param {string} cssValue - css value like '72px'\n     * @returns {Array} [number, unit]\n     */\n    parseUnit: function(cssValue) {\n        var number = parseFloat(cssValue, 10);\n        var unit = cssValue.match(/[\\d.\\-+]*\\s*(.*)/)[1] || '';\n\n        return [number, unit];\n    },\n\n    find: function(array, iteratee, contextopt) {\n        var found;\n\n        util.forEach(array, function(item) {\n            if (iteratee) {\n                found = iteratee(item);\n            }\n\n            if (found) {\n                found = item;\n\n                return false;\n            }\n\n            return true;\n        }, contextopt);\n\n        return found;\n    },\n\n    getScheduleChanges: function(schedule, propNames, data) {\n        var changes = {};\n        var dateProps = ['start', 'end'];\n\n        util.forEach(propNames, function(propName) {\n            if (dateProps.indexOf(propName) > -1) {\n                if (datetime.compare(schedule[propName], data[propName])) {\n                    changes[propName] = data[propName];\n                }\n            } else if (!util.isUndefined(data[propName]) && schedule[propName] !== data[propName]) {\n                changes[propName] = data[propName];\n            }\n        });\n\n        return util.isEmpty(changes) ? null : changes;\n    }\n};\n","/* eslint complexity: 0 */\n/**\n * @fileoverview Utility module for handling DOM events.\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\nvar util = require('tui-code-snippet');\nvar eventKey = '_evt',\n    DRAG_START = ['touchstart', 'mousedown'];\n\nvar domevent = {\n    /**\n     * Bind dom events.\n     * @param {HTMLElement} obj HTMLElement to bind events.\n     * @param {(string|object)} types Space splitted events names or eventName:handler object.\n     * @param {*} fn handler function or context for handler method.\n     * @param {*} [context] context object for handler method.\n     */\n    on: function(obj, types, fn, context) {\n        if (util.isString(types)) {\n            util.forEach(types.split(' '), function(type) {\n                domevent._on(obj, type, fn, context);\n            });\n\n            return;\n        }\n\n        util.forEachOwnProperties(types, function(handler, type) {\n            domevent._on(obj, type, handler, fn);\n        });\n    },\n\n    /**\n     * DOM event binding.\n     * @param {HTMLElement} obj HTMLElement to bind events.\n     * @param {String} type The name of events.\n     * @param {*} fn handler function\n     * @param {*} [context] context object for handler method.\n     * @private\n     */\n    _on: function(obj, type, fn, context) {\n        var id,\n            handler,\n            originHandler;\n\n        id = type + util.stamp(fn) + (context ? '_' + util.stamp(context) : '');\n\n        if (obj[eventKey] && obj[eventKey][id]) {\n            return;\n        }\n\n        handler = function(e) {\n            fn.call(context || obj, e || window.event);\n        };\n\n        originHandler = handler;\n\n        if ('addEventListener' in obj) {\n            if (type === 'mouseenter' || type === 'mouseleave') {\n                handler = function(e) {\n                    e = e || window.event;\n                    if (!domevent._checkMouse(obj, e)) {\n                        return;\n                    }\n                    originHandler(e);\n                };\n                obj.addEventListener((type === 'mouseenter') ?\n                    'mouseover' : 'mouseout', handler, false);\n            } else {\n                if (type === 'mousewheel') {\n                    obj.addEventListener('DOMMouseScroll', handler, false);\n                }\n\n                obj.addEventListener(type, handler, false);\n            }\n        } else if ('attachEvent' in obj) {\n            obj.attachEvent('on' + type, handler);\n        }\n\n        obj[eventKey] = obj[eventKey] || {};\n        obj[eventKey][id] = handler;\n    },\n\n    /**\n     * Unbind DOM Event handler.\n     * @param {HTMLElement} obj HTMLElement to unbind.\n     * @param {(string|object)} types Space splitted events names or eventName:handler object.\n     * @param {*} fn handler function or context for handler method.\n     * @param {*} [context] context object for handler method.\n     */\n    off: function(obj, types, fn, context) {\n        if (util.isString(types)) {\n            util.forEach(types.split(' '), function(type) {\n                domevent._off(obj, type, fn, context);\n            });\n\n            return;\n        }\n\n        util.forEachOwnProperties(types, function(handler, type) {\n            domevent._off(obj, type, handler, fn);\n        });\n    },\n\n    /**\n     * Unbind DOM event handler.\n     * @param {HTMLElement} obj HTMLElement to unbind.\n     * @param {String} type The name of event to unbind.\n     * @param {function()} fn Event handler that supplied when binding.\n     * @param {*} context context object that supplied when binding.\n     * @private\n     */\n    _off: function(obj, type, fn, context) {\n        var id = type + util.stamp(fn) + (context ? '_' + util.stamp(context) : ''),\n            handler = obj[eventKey] && obj[eventKey][id];\n\n        if (!handler) {\n            return;\n        }\n\n        if ('removeEventListener' in obj) {\n            if (type === 'mouseenter' || type === 'mouseleave') {\n                obj.removeEventListener((type === 'mouseenter') ?\n                    'mouseover' : 'mouseout', handler, false);\n            } else {\n                if (type === 'mousewheel') {\n                    obj.removeEventListener('DOMMouseScroll', handler, false);\n                }\n\n                obj.removeEventListener(type, handler, false);\n            }\n        } else if ('detachEvent' in obj) {\n            try {\n                obj.detachEvent('on' + type, handler);\n            } catch (e) {}    //eslint-disable-line\n        }\n\n        delete obj[eventKey][id];\n\n        if (util.keys(obj[eventKey]).length) {\n            return;\n        }\n\n        delete obj[eventKey];\n    },\n\n    /**\n     * Bind DOM event. this event will unbind after invokes.\n     * @param {HTMLElement} obj HTMLElement to bind events.\n     * @param {(string|object)} types Space splitted events names or eventName:handler object.\n     * @param {*} fn handler function or context for handler method.\n     * @param {*} [context] context object for handler method.\n     */\n    once: function(obj, types, fn, context) {\n        var self = this;\n\n        if (util.isObject(types)) {\n            util.forEachOwnProperties(types, function(handler, type) {\n                domevent.once(obj, type, handler, fn);\n            });\n\n            return;\n        }\n\n        /**\n         * Handler for temporary usage for once implementation\n         */\n        function onceHandler() {\n            fn.apply(context || obj, arguments);\n            self._off(obj, types, onceHandler, context);\n        }\n\n        domevent.on(obj, types, onceHandler, context);\n    },\n\n    /**\n     * Cancel event bubbling.\n     * @param {Event} e Event object.\n     */\n    stopPropagation: function(e) {\n        if (e.stopPropagation) {\n            e.stopPropagation();\n        } else {\n            e.cancelBubble = true;\n        }\n    },\n\n    /**\n     * Cancel browser default actions.\n     * @param {Event} e Event object.\n     */\n    preventDefault: function(e) {\n        if (e.preventDefault) {\n            e.preventDefault();\n        } else {\n            e.returnValue = false;\n        }\n    },\n\n    /**\n     * Syntatic sugar of stopPropagation and preventDefault\n     * @param {Event} e Event object.\n     */\n    stop: function(e) {\n        domevent.preventDefault(e);\n        domevent.stopPropagation(e);\n    },\n\n    /**\n     * Stop scroll events.\n     * @param {HTMLElement} el HTML element to prevent scroll.\n     */\n    disableScrollPropagation: function(el) {\n        domevent.on(el, 'mousewheel MozMousePixelScroll', domevent.stopPropagation);\n    },\n\n    /**\n     * Stop all events related with click.\n     * @param {HTMLElement} el HTML element to prevent all event related with click.\n     */\n    disableClickPropagation: function(el) {\n        domevent.on(el, DRAG_START.join(' ') + ' click dblclick', domevent.stopPropagation);\n    },\n\n    /**\n     * Get mouse position from mouse event.\n     *\n     * If supplied relatveElement parameter then return relative position based on element.\n     * @param {Event} mouseEvent Mouse event object\n     * @param {HTMLElement} relativeElement HTML element that calculate relative position.\n     * @returns {number[]} mouse position.\n     */\n    getMousePosition: function(mouseEvent, relativeElement) {\n        var rect;\n\n        if (!relativeElement) {\n            return [mouseEvent.clientX, mouseEvent.clientY];\n        }\n\n        rect = relativeElement.getBoundingClientRect();\n\n        return [\n            mouseEvent.clientX - rect.left - relativeElement.clientLeft,\n            mouseEvent.clientY - rect.top - relativeElement.clientTop\n        ];\n    },\n\n    /**\n     * Normalize mouse wheel event that different each browsers.\n     * @param {MouseEvent} e Mouse wheel event.\n     * @returns {Number} delta\n     */\n    getWheelDelta: function(e) {\n        var delta = 0;\n\n        if (e.wheelDelta) {\n            delta = e.wheelDelta / 120;\n        }\n\n        if (e.detail) {\n            delta = -e.detail / 3;\n        }\n\n        return delta;\n    },\n\n    /**\n     * prevent firing mouseleave event when mouse entered child elements.\n     * @param {HTMLElement} el HTML element\n     * @param {MouseEvent} e Mouse event\n     * @returns {Boolean} leave?\n     * @private\n     */\n    _checkMouse: function(el, e) {\n        var related = e.relatedTarget;\n\n        if (!related) {\n            return true;\n        }\n\n        try {\n            while (related && (related !== el)) {\n                related = related.parentNode;\n            }\n        } catch (err) {\n            return false;\n        }\n\n        return (related !== el);\n    },\n\n    /**\n     * Trigger specific events to html element.\n     * @param {HTMLElement} obj HTMLElement\n     * @param {string} type Event type name\n     * @param {object} [eventData] Event data\n     */\n    trigger: function(obj, type, eventData) {\n        var rMouseEvent = /(mouse|click)/;\n        if (util.isUndefined(eventData) && rMouseEvent.exec(type)) {\n            eventData = domevent.mouseEvent(type);\n        }\n\n        if (obj.dispatchEvent) {\n            obj.dispatchEvent(eventData);\n        } else if (obj.fireEvent) {\n            obj.fireEvent('on' + type, eventData);\n        }\n    },\n\n    /**\n     * Create virtual mouse event.\n     *\n     * Tested at\n     *\n     * - IE7 ~ IE11\n     * - Chrome\n     * - Firefox\n     * - Safari\n     * @param {string} type Event type\n     * @param {object} [eventObj] Event data\n     * @returns {MouseEvent} Virtual mouse event.\n     */\n    mouseEvent: function(type, eventObj) {\n        var evt,\n            e;\n\n        e = util.extend({\n            bubbles: true,\n            cancelable: (type !== 'mousemove'),\n            view: window,\n            wheelDelta: 0,\n            detail: 0,\n            screenX: 0,\n            screenY: 0,\n            clientX: 0,\n            clientY: 0,\n            ctrlKey: false,\n            altKey: false,\n            shiftKey: false,\n            metaKey: false,\n            button: 0,\n            relatedTarget: undefined  // eslint-disable-line\n        }, eventObj);\n\n        if (typeof document.createEvent === 'function') {\n            evt = document.createEvent('MouseEvents');\n            evt.initMouseEvent(type,\n                e.bubbles, e.cancelable, e.view, e.detail,\n                e.screenX, e.screenY, e.clientX, e.clientY,\n                e.ctrlKey, e.altKey, e.shiftKey, e.metaKey,\n                e.button, document.body.parentNode\n            );\n        } else if (document.createEventObject) {\n            evt = document.createEventObject();\n\n            util.forEach(e, function(value, propName) {\n                evt[propName] = value;\n            }, this);\n            evt.button = {0: 1,\n                1: 4,\n                2: 2}[evt.button] || evt.button;\n        }\n\n        return evt;\n    },\n\n    /**\n     * Normalize mouse event's button attributes.\n     *\n     * Can detect which button is clicked by this method.\n     *\n     * Meaning of return numbers\n     *\n     * - 0: primary mouse button\n     * - 1: wheel button or center button\n     * - 2: secondary mouse button\n     * @param {MouseEvent} mouseEvent - The mouse event object want to know.\n     * @returns {number} - The value of meaning which button is clicked?\n     */\n    getMouseButton: function(mouseEvent) {\n        var button,\n            primary = '0,1,3,5,7',\n            secondary = '2,6',\n            wheel = '4';\n\n        /* istanbul ignore else */\n        if (document.implementation.hasFeature('MouseEvents', '2.0')) {\n            return mouseEvent.button;\n        }\n\n        button = String(mouseEvent.button);\n        if (primary.indexOf(button) > -1) {\n            return 0;\n        }\n        if (secondary.indexOf(button) > -1) {\n            return 2;\n        }\n        if (~wheel.indexOf(button)) {\n            return 1;\n        }\n\n        return -1;\n    },\n\n    /**\n     * Get target from event object\n     *\n     * @param {Event} event - The event object\n     * @returns {object} - The event target object\n     */\n    getEventTarget: function(event) {\n        return event.target || event.srcElement;\n    }\n};\n\nmodule.exports = domevent;\n","// Create a simple path alias to allow browserify to resolve\n// the runtime on a supported path.\nmodule.exports = require('./dist/cjs/handlebars.runtime')['default'];\n","/**\n * @fileoverview The base class of views.\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\nvar util = require('tui-code-snippet');\nvar domutil = require('../common/domutil');\nvar Collection = require('../common/collection');\n\n/**\n * Base class of views.\n *\n * All views create own container element inside supplied container element.\n * @constructor\n * @param {HTMLElement} container Default container element for view.\n *  you can use this element for this.container syntax.\n */\nfunction View(container) {\n    var id = util.stamp(this);\n\n    if (util.isUndefined(container)) {\n        container = domutil.appendHTMLElement('div');\n    }\n\n    domutil.addClass(container, this.cssprefix(id));\n\n    /**\n     * unique id\n     * @type {number}\n     */\n    this.id = id;\n\n    /**\n     * base element of view.\n     * @type {HTMLDIVElement}\n     */\n    this.container = container;\n\n    /*eslint-disable*/\n    /**\n     * child views.\n     * @type {Collection}\n     */\n    this.children = new Collection(function(view) {\n        return util.stamp(view);\n    });\n    /* eslint-enable*/\n\n    /**\n     * parent view instance.\n     * @type {View}\n     */\n    this.parent = null;\n\n    /**\n     * state of view\n     */\n    this.state = {};\n}\n\n/**\n * CSS classname prefix\n * @type {string}\n */\nView.prototype.cssPrefix = 'tui-view-';\n\n/**\n * Add child views.\n * @param {View} view The view instance to add.\n * @param {function} [fn] Function for invoke before add. parent view class is supplied first arguments.\n */\nView.prototype.addChild = function(view, fn) {\n    if (fn) {\n        fn.call(view, this);\n    }\n    // add parent view\n    view.parent = this;\n\n    this.children.add(view);\n};\n\n/**\n * Remove added child view.\n * @param {(number|View)} id View id or instance itself to remove.\n * @param {function} [fn] Function for invoke before remove. parent view class is supplied first arguments.\n */\nView.prototype.removeChild = function(id, fn) {\n    var view = util.isNumber(id) ? this.children.items[id] : id;\n\n    id = util.stamp(view);\n\n    if (fn) {\n        fn.call(view, this);\n    }\n\n    this.children.remove(id);\n};\n\n/**\n * Render view recursively.\n */\nView.prototype.render = function() {\n    this.children.each(function(childView) {\n        childView.render();\n    });\n};\n\n/**\n * Invoke function recursively.\n * @param {function} fn - function to invoke child view recursively\n * @param {boolean} [skipThis=false] - set true then skip invoke with this(root) view.\n */\nView.prototype.recursive = function(fn, skipThis) {\n    if (!util.isFunction(fn)) {\n        return;\n    }\n\n    if (!skipThis) {\n        fn(this);\n    }\n\n    this.children.each(function(childView) {\n        childView.recursive(fn);\n    });\n};\n\n/**\n * Resize view recursively to parent.\n */\nView.prototype.resize = function() {\n    var args = Array.prototype.slice.call(arguments),\n        parent = this.parent;\n\n    while (parent) {\n        if (util.isFunction(parent._onResize)) {\n            parent._onResize.apply(parent, args);\n        }\n\n        parent = parent.parent;\n    }\n};\n\n/**\n * Invoking method before destroying.\n */\nView.prototype._beforeDestroy = function() {};\n\n/**\n * Clear properties\n */\nView.prototype._destroy = function() {\n    this._beforeDestroy();\n    this.children.clear();\n    this.container.innerHTML = '';\n\n    this.id = this.parent = this.children = this.container = null;\n};\n\n/*eslint-disable*/\n/**\n * Destroy child view recursively.\n */\nView.prototype.destroy = function(isChildView) {\n    this.children.each(function(childView) {\n        childView.destroy(true);\n        childView._destroy();\n    });\n\n    if (isChildView) {\n        return;\n    }\n\n    this._destroy();\n};\n/* eslint-enable*/\n\n/**\n * Calculate view's container element bound.\n * @returns {object} The bound of container element.\n */\nView.prototype.getViewBound = function() {\n    var container = this.container,\n        position = domutil.getPosition(container),\n        size = domutil.getSize(container);\n\n    return {\n        x: position[0],\n        y: position[1],\n        width: size[0],\n        height: size[1]\n    };\n};\n\n/**\n * Return view default CSS prefix\n * @param {string} [className] - if supplied then return prefix added class name\n * @returns {string} CSS prefix value\n */\nView.prototype.cssprefix = function(className) {\n    return this.cssPrefix + (className || '');\n};\n\n/**\n * set state\n * @param {object} state - state\n */\nView.prototype.setState = function(state) {\n    util.extend(this.state, state);\n};\n\nutil.CustomEvents.mixin(View);\n\nmodule.exports = View;\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","'use strict';\n\nexports.__esModule = true;\nexports.extend = extend;\nexports.indexOf = indexOf;\nexports.escapeExpression = escapeExpression;\nexports.isEmpty = isEmpty;\nexports.createFrame = createFrame;\nexports.blockParams = blockParams;\nexports.appendContextPath = appendContextPath;\nvar escape = {\n  '&': '&amp;',\n  '<': '&lt;',\n  '>': '&gt;',\n  '\"': '&quot;',\n  \"'\": '&#x27;',\n  '`': '&#x60;',\n  '=': '&#x3D;'\n};\n\nvar badChars = /[&<>\"'`=]/g,\n    possible = /[&<>\"'`=]/;\n\nfunction escapeChar(chr) {\n  return escape[chr];\n}\n\nfunction extend(obj /* , ...source */) {\n  for (var i = 1; i < arguments.length; i++) {\n    for (var key in arguments[i]) {\n      if (Object.prototype.hasOwnProperty.call(arguments[i], key)) {\n        obj[key] = arguments[i][key];\n      }\n    }\n  }\n\n  return obj;\n}\n\nvar toString = Object.prototype.toString;\n\nexports.toString = toString;\n// Sourced from lodash\n// https://github.com/bestiejs/lodash/blob/master/LICENSE.txt\n/* eslint-disable func-style */\nvar isFunction = function isFunction(value) {\n  return typeof value === 'function';\n};\n// fallback for older versions of Chrome and Safari\n/* istanbul ignore next */\nif (isFunction(/x/)) {\n  exports.isFunction = isFunction = function (value) {\n    return typeof value === 'function' && toString.call(value) === '[object Function]';\n  };\n}\nexports.isFunction = isFunction;\n\n/* eslint-enable func-style */\n\n/* istanbul ignore next */\nvar isArray = Array.isArray || function (value) {\n  return value && typeof value === 'object' ? toString.call(value) === '[object Array]' : false;\n};\n\nexports.isArray = isArray;\n// Older IE versions do not directly support indexOf so we must implement our own, sadly.\n\nfunction indexOf(array, value) {\n  for (var i = 0, len = array.length; i < len; i++) {\n    if (array[i] === value) {\n      return i;\n    }\n  }\n  return -1;\n}\n\nfunction escapeExpression(string) {\n  if (typeof string !== 'string') {\n    // don't escape SafeStrings, since they're already safe\n    if (string && string.toHTML) {\n      return string.toHTML();\n    } else if (string == null) {\n      return '';\n    } else if (!string) {\n      return string + '';\n    }\n\n    // Force a string conversion as this will be done by the append regardless and\n    // the regex test will do this transparently behind the scenes, causing issues if\n    // an object's to string has escaped characters in it.\n    string = '' + string;\n  }\n\n  if (!possible.test(string)) {\n    return string;\n  }\n  return string.replace(badChars, escapeChar);\n}\n\nfunction isEmpty(value) {\n  if (!value && value !== 0) {\n    return true;\n  } else if (isArray(value) && value.length === 0) {\n    return true;\n  } else {\n    return false;\n  }\n}\n\nfunction createFrame(object) {\n  var frame = extend({}, object);\n  frame._parent = object;\n  return frame;\n}\n\nfunction blockParams(params, ids) {\n  params.path = ids;\n  return params;\n}\n\nfunction appendContextPath(contextPath, id) {\n  return (contextPath ? contextPath + '.' : '') + id;\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL3V0aWxzLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQSxJQUFNLE1BQU0sR0FBRztBQUNiLEtBQUcsRUFBRSxPQUFPO0FBQ1osS0FBRyxFQUFFLE1BQU07QUFDWCxLQUFHLEVBQUUsTUFBTTtBQUNYLEtBQUcsRUFBRSxRQUFRO0FBQ2IsS0FBRyxFQUFFLFFBQVE7QUFDYixLQUFHLEVBQUUsUUFBUTtBQUNiLEtBQUcsRUFBRSxRQUFRO0NBQ2QsQ0FBQzs7QUFFRixJQUFNLFFBQVEsR0FBRyxZQUFZO0lBQzNCLFFBQVEsR0FBRyxXQUFXLENBQUM7O0FBRXpCLFNBQVMsVUFBVSxDQUFDLEdBQUcsRUFBRTtBQUN2QixTQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztDQUNwQjs7QUFFTSxTQUFTLE1BQU0sQ0FBQyxHQUFHLG9CQUFvQjtBQUM1QyxPQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUN6QyxTQUFLLElBQUksR0FBRyxJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRTtBQUM1QixVQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUU7QUFDM0QsV0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztPQUM5QjtLQUNGO0dBQ0Y7O0FBRUQsU0FBTyxHQUFHLENBQUM7Q0FDWjs7QUFFTSxJQUFJLFFBQVEsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQzs7Ozs7O0FBS2hELElBQUksVUFBVSxHQUFHLG9CQUFTLEtBQUssRUFBRTtBQUMvQixTQUFPLE9BQU8sS0FBSyxLQUFLLFVBQVUsQ0FBQztDQUNwQyxDQUFDOzs7QUFHRixJQUFJLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRTtBQUNuQixVQU9PLFVBQVUsR0FQakIsVUFBVSxHQUFHLFVBQVMsS0FBSyxFQUFFO0FBQzNCLFdBQ0UsT0FBTyxLQUFLLEtBQUssVUFBVSxJQUMzQixRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLG1CQUFtQixDQUM1QztHQUNILENBQUM7Q0FDSDtRQUNRLFVBQVUsR0FBVixVQUFVOzs7OztBQUlaLElBQU0sT0FBTyxHQUNsQixLQUFLLENBQUMsT0FBTyxJQUNiLFVBQVMsS0FBSyxFQUFFO0FBQ2QsU0FBTyxLQUFLLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxHQUNyQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLGdCQUFnQixHQUN6QyxLQUFLLENBQUM7Q0FDWCxDQUFDOzs7OztBQUdHLFNBQVMsT0FBTyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUU7QUFDcEMsT0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUNoRCxRQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxLQUFLLEVBQUU7QUFDdEIsYUFBTyxDQUFDLENBQUM7S0FDVjtHQUNGO0FBQ0QsU0FBTyxDQUFDLENBQUMsQ0FBQztDQUNYOztBQUVNLFNBQVMsZ0JBQWdCLENBQUMsTUFBTSxFQUFFO0FBQ3ZDLE1BQUksT0FBTyxNQUFNLEtBQUssUUFBUSxFQUFFOztBQUU5QixRQUFJLE1BQU0sSUFBSSxNQUFNLENBQUMsTUFBTSxFQUFFO0FBQzNCLGFBQU8sTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDO0tBQ3hCLE1BQU0sSUFBSSxNQUFNLElBQUksSUFBSSxFQUFFO0FBQ3pCLGFBQU8sRUFBRSxDQUFDO0tBQ1gsTUFBTSxJQUFJLENBQUMsTUFBTSxFQUFFO0FBQ2xCLGFBQU8sTUFBTSxHQUFHLEVBQUUsQ0FBQztLQUNwQjs7Ozs7QUFLRCxVQUFNLEdBQUcsRUFBRSxHQUFHLE1BQU0sQ0FBQztHQUN0Qjs7QUFFRCxNQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRTtBQUMxQixXQUFPLE1BQU0sQ0FBQztHQUNmO0FBQ0QsU0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQztDQUM3Qzs7QUFFTSxTQUFTLE9BQU8sQ0FBQyxLQUFLLEVBQUU7QUFDN0IsTUFBSSxDQUFDLEtBQUssSUFBSSxLQUFLLEtBQUssQ0FBQyxFQUFFO0FBQ3pCLFdBQU8sSUFBSSxDQUFDO0dBQ2IsTUFBTSxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtBQUMvQyxXQUFPLElBQUksQ0FBQztHQUNiLE1BQU07QUFDTCxXQUFPLEtBQUssQ0FBQztHQUNkO0NBQ0Y7O0FBRU0sU0FBUyxXQUFXLENBQUMsTUFBTSxFQUFFO0FBQ2xDLE1BQUksS0FBSyxHQUFHLE1BQU0sQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDL0IsT0FBSyxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7QUFDdkIsU0FBTyxLQUFLLENBQUM7Q0FDZDs7QUFFTSxTQUFTLFdBQVcsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFO0FBQ3ZDLFFBQU0sQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDO0FBQ2xCLFNBQU8sTUFBTSxDQUFDO0NBQ2Y7O0FBRU0sU0FBUyxpQkFBaUIsQ0FBQyxXQUFXLEVBQUUsRUFBRSxFQUFFO0FBQ2pELFNBQU8sQ0FBQyxXQUFXLEdBQUcsV0FBVyxHQUFHLEdBQUcsR0FBRyxFQUFFLENBQUEsR0FBSSxFQUFFLENBQUM7Q0FDcEQiLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBlc2NhcGUgPSB7XG4gICcmJzogJyZhbXA7JyxcbiAgJzwnOiAnJmx0OycsXG4gICc+JzogJyZndDsnLFxuICAnXCInOiAnJnF1b3Q7JyxcbiAgXCInXCI6ICcmI3gyNzsnLFxuICAnYCc6ICcmI3g2MDsnLFxuICAnPSc6ICcmI3gzRDsnXG59O1xuXG5jb25zdCBiYWRDaGFycyA9IC9bJjw+XCInYD1dL2csXG4gIHBvc3NpYmxlID0gL1smPD5cIidgPV0vO1xuXG5mdW5jdGlvbiBlc2NhcGVDaGFyKGNocikge1xuICByZXR1cm4gZXNjYXBlW2Nocl07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBleHRlbmQob2JqIC8qICwgLi4uc291cmNlICovKSB7XG4gIGZvciAobGV0IGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgZm9yIChsZXQga2V5IGluIGFyZ3VtZW50c1tpXSkge1xuICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChhcmd1bWVudHNbaV0sIGtleSkpIHtcbiAgICAgICAgb2JqW2tleV0gPSBhcmd1bWVudHNbaV1ba2V5XTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gb2JqO1xufVxuXG5leHBvcnQgbGV0IHRvU3RyaW5nID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZztcblxuLy8gU291cmNlZCBmcm9tIGxvZGFzaFxuLy8gaHR0cHM6Ly9naXRodWIuY29tL2Jlc3RpZWpzL2xvZGFzaC9ibG9iL21hc3Rlci9MSUNFTlNFLnR4dFxuLyogZXNsaW50LWRpc2FibGUgZnVuYy1zdHlsZSAqL1xubGV0IGlzRnVuY3Rpb24gPSBmdW5jdGlvbih2YWx1ZSkge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nO1xufTtcbi8vIGZhbGxiYWNrIGZvciBvbGRlciB2ZXJzaW9ucyBvZiBDaHJvbWUgYW5kIFNhZmFyaVxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbmlmIChpc0Z1bmN0aW9uKC94LykpIHtcbiAgaXNGdW5jdGlvbiA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJyAmJlxuICAgICAgdG9TdHJpbmcuY2FsbCh2YWx1ZSkgPT09ICdbb2JqZWN0IEZ1bmN0aW9uXSdcbiAgICApO1xuICB9O1xufVxuZXhwb3J0IHsgaXNGdW5jdGlvbiB9O1xuLyogZXNsaW50LWVuYWJsZSBmdW5jLXN0eWxlICovXG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5leHBvcnQgY29uc3QgaXNBcnJheSA9XG4gIEFycmF5LmlzQXJyYXkgfHxcbiAgZnVuY3Rpb24odmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWUgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0J1xuICAgICAgPyB0b1N0cmluZy5jYWxsKHZhbHVlKSA9PT0gJ1tvYmplY3QgQXJyYXldJ1xuICAgICAgOiBmYWxzZTtcbiAgfTtcblxuLy8gT2xkZXIgSUUgdmVyc2lvbnMgZG8gbm90IGRpcmVjdGx5IHN1cHBvcnQgaW5kZXhPZiBzbyB3ZSBtdXN0IGltcGxlbWVudCBvdXIgb3duLCBzYWRseS5cbmV4cG9ydCBmdW5jdGlvbiBpbmRleE9mKGFycmF5LCB2YWx1ZSkge1xuICBmb3IgKGxldCBpID0gMCwgbGVuID0gYXJyYXkubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICBpZiAoYXJyYXlbaV0gPT09IHZhbHVlKSB7XG4gICAgICByZXR1cm4gaTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIC0xO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXNjYXBlRXhwcmVzc2lvbihzdHJpbmcpIHtcbiAgaWYgKHR5cGVvZiBzdHJpbmcgIT09ICdzdHJpbmcnKSB7XG4gICAgLy8gZG9uJ3QgZXNjYXBlIFNhZmVTdHJpbmdzLCBzaW5jZSB0aGV5J3JlIGFscmVhZHkgc2FmZVxuICAgIGlmIChzdHJpbmcgJiYgc3RyaW5nLnRvSFRNTCkge1xuICAgICAgcmV0dXJuIHN0cmluZy50b0hUTUwoKTtcbiAgICB9IGVsc2UgaWYgKHN0cmluZyA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfSBlbHNlIGlmICghc3RyaW5nKSB7XG4gICAgICByZXR1cm4gc3RyaW5nICsgJyc7XG4gICAgfVxuXG4gICAgLy8gRm9yY2UgYSBzdHJpbmcgY29udmVyc2lvbiBhcyB0aGlzIHdpbGwgYmUgZG9uZSBieSB0aGUgYXBwZW5kIHJlZ2FyZGxlc3MgYW5kXG4gICAgLy8gdGhlIHJlZ2V4IHRlc3Qgd2lsbCBkbyB0aGlzIHRyYW5zcGFyZW50bHkgYmVoaW5kIHRoZSBzY2VuZXMsIGNhdXNpbmcgaXNzdWVzIGlmXG4gICAgLy8gYW4gb2JqZWN0J3MgdG8gc3RyaW5nIGhhcyBlc2NhcGVkIGNoYXJhY3RlcnMgaW4gaXQuXG4gICAgc3RyaW5nID0gJycgKyBzdHJpbmc7XG4gIH1cblxuICBpZiAoIXBvc3NpYmxlLnRlc3Qoc3RyaW5nKSkge1xuICAgIHJldHVybiBzdHJpbmc7XG4gIH1cbiAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKGJhZENoYXJzLCBlc2NhcGVDaGFyKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzRW1wdHkodmFsdWUpIHtcbiAgaWYgKCF2YWx1ZSAmJiB2YWx1ZSAhPT0gMCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9IGVsc2UgaWYgKGlzQXJyYXkodmFsdWUpICYmIHZhbHVlLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRnJhbWUob2JqZWN0KSB7XG4gIGxldCBmcmFtZSA9IGV4dGVuZCh7fSwgb2JqZWN0KTtcbiAgZnJhbWUuX3BhcmVudCA9IG9iamVjdDtcbiAgcmV0dXJuIGZyYW1lO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYmxvY2tQYXJhbXMocGFyYW1zLCBpZHMpIHtcbiAgcGFyYW1zLnBhdGggPSBpZHM7XG4gIHJldHVybiBwYXJhbXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhcHBlbmRDb250ZXh0UGF0aChjb250ZXh0UGF0aCwgaWQpIHtcbiAgcmV0dXJuIChjb250ZXh0UGF0aCA/IGNvbnRleHRQYXRoICsgJy4nIDogJycpICsgaWQ7XG59XG4iXX0=\n","/**\n * @fileoverview RequestAnimFrame\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\nvar requestFn,\n    cancelFn;\n\n/**\n * Get name with vendor prefix\n * @param {string} name - name to prepend prefix\n * @returns {string} vendor prefixed name\n */\nfunction getPrefixed(name) {\n    return global['webkit' + name] || global['moz' + name] || global['ms' + name];\n}\n\nrequestFn = global.requestAnimationFrame ||\n    getPrefixed('RequestAnimationFrame') ||\n    function(fn, context) {\n        fn.call(context);\n    };\n\ncancelFn = global.cancelAnimationFrame ||\n    getPrefixed('CancelAnimationFrame') ||\n    getPrefixed('CancelRequestAnimationFrame') ||\n    function() {};\n\n/**\n * @module module:reqAnimFrame\n */\n\nmodule.exports = {\n    /**\n     * Shim of requestAnimationFrame\n     * @param {function} fn callback function\n     * @param {*} context context for callback\n     * @returns {number} Unique id\n     */\n    requestAnimFrame: function(fn, context) {\n        return requestFn.call(global, fn.bind(context));\n    },\n\n    /**\n     * Shim of cancelAnimationFrame\n     * @param {number} id requestAnimationFrame id\n     */\n    cancelAnimFrame: function(id) {\n        if (!id) {\n            return;\n        }\n\n        cancelFn.call(global, id);\n    }\n};\n","'use strict';\n\nexports.__esModule = true;\nvar errorProps = ['description', 'fileName', 'lineNumber', 'endLineNumber', 'message', 'name', 'number', 'stack'];\n\nfunction Exception(message, node) {\n  var loc = node && node.loc,\n      line = undefined,\n      endLineNumber = undefined,\n      column = undefined,\n      endColumn = undefined;\n\n  if (loc) {\n    line = loc.start.line;\n    endLineNumber = loc.end.line;\n    column = loc.start.column;\n    endColumn = loc.end.column;\n\n    message += ' - ' + line + ':' + column;\n  }\n\n  var tmp = Error.prototype.constructor.call(this, message);\n\n  // Unfortunately errors are not enumerable in Chrome (at least), so `for prop in tmp` doesn't work.\n  for (var idx = 0; idx < errorProps.length; idx++) {\n    this[errorProps[idx]] = tmp[errorProps[idx]];\n  }\n\n  /* istanbul ignore else */\n  if (Error.captureStackTrace) {\n    Error.captureStackTrace(this, Exception);\n  }\n\n  try {\n    if (loc) {\n      this.lineNumber = line;\n      this.endLineNumber = endLineNumber;\n\n      // Work around issue under safari where we can't directly set the column value\n      /* istanbul ignore next */\n      if (Object.defineProperty) {\n        Object.defineProperty(this, 'column', {\n          value: column,\n          enumerable: true\n        });\n        Object.defineProperty(this, 'endColumn', {\n          value: endColumn,\n          enumerable: true\n        });\n      } else {\n        this.column = column;\n        this.endColumn = endColumn;\n      }\n    }\n  } catch (nop) {\n    /* Ignore if the browser is very particular */\n  }\n}\n\nException.prototype = new Error();\n\nexports['default'] = Exception;\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2V4Y2VwdGlvbi5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxJQUFNLFVBQVUsR0FBRyxDQUNqQixhQUFhLEVBQ2IsVUFBVSxFQUNWLFlBQVksRUFDWixlQUFlLEVBQ2YsU0FBUyxFQUNULE1BQU0sRUFDTixRQUFRLEVBQ1IsT0FBTyxDQUNSLENBQUM7O0FBRUYsU0FBUyxTQUFTLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRTtBQUNoQyxNQUFJLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxDQUFDLEdBQUc7TUFDeEIsSUFBSSxZQUFBO01BQ0osYUFBYSxZQUFBO01BQ2IsTUFBTSxZQUFBO01BQ04sU0FBUyxZQUFBLENBQUM7O0FBRVosTUFBSSxHQUFHLEVBQUU7QUFDUCxRQUFJLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUM7QUFDdEIsaUJBQWEsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQztBQUM3QixVQUFNLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUM7QUFDMUIsYUFBUyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDOztBQUUzQixXQUFPLElBQUksS0FBSyxHQUFHLElBQUksR0FBRyxHQUFHLEdBQUcsTUFBTSxDQUFDO0dBQ3hDOztBQUVELE1BQUksR0FBRyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7OztBQUcxRCxPQUFLLElBQUksR0FBRyxHQUFHLENBQUMsRUFBRSxHQUFHLEdBQUcsVUFBVSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsRUFBRTtBQUNoRCxRQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0dBQzlDOzs7QUFHRCxNQUFJLEtBQUssQ0FBQyxpQkFBaUIsRUFBRTtBQUMzQixTQUFLLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0dBQzFDOztBQUVELE1BQUk7QUFDRixRQUFJLEdBQUcsRUFBRTtBQUNQLFVBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO0FBQ3ZCLFVBQUksQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFDOzs7O0FBSW5DLFVBQUksTUFBTSxDQUFDLGNBQWMsRUFBRTtBQUN6QixjQUFNLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUU7QUFDcEMsZUFBSyxFQUFFLE1BQU07QUFDYixvQkFBVSxFQUFFLElBQUk7U0FDakIsQ0FBQyxDQUFDO0FBQ0gsY0FBTSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsV0FBVyxFQUFFO0FBQ3ZDLGVBQUssRUFBRSxTQUFTO0FBQ2hCLG9CQUFVLEVBQUUsSUFBSTtTQUNqQixDQUFDLENBQUM7T0FDSixNQUFNO0FBQ0wsWUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7QUFDckIsWUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7T0FDNUI7S0FDRjtHQUNGLENBQUMsT0FBTyxHQUFHLEVBQUU7O0dBRWI7Q0FDRjs7QUFFRCxTQUFTLENBQUMsU0FBUyxHQUFHLElBQUksS0FBSyxFQUFFLENBQUM7O3FCQUVuQixTQUFTIiwiZmlsZSI6ImV4Y2VwdGlvbi5qcyIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IGVycm9yUHJvcHMgPSBbXG4gICdkZXNjcmlwdGlvbicsXG4gICdmaWxlTmFtZScsXG4gICdsaW5lTnVtYmVyJyxcbiAgJ2VuZExpbmVOdW1iZXInLFxuICAnbWVzc2FnZScsXG4gICduYW1lJyxcbiAgJ251bWJlcicsXG4gICdzdGFjaydcbl07XG5cbmZ1bmN0aW9uIEV4Y2VwdGlvbihtZXNzYWdlLCBub2RlKSB7XG4gIGxldCBsb2MgPSBub2RlICYmIG5vZGUubG9jLFxuICAgIGxpbmUsXG4gICAgZW5kTGluZU51bWJlcixcbiAgICBjb2x1bW4sXG4gICAgZW5kQ29sdW1uO1xuXG4gIGlmIChsb2MpIHtcbiAgICBsaW5lID0gbG9jLnN0YXJ0LmxpbmU7XG4gICAgZW5kTGluZU51bWJlciA9IGxvYy5lbmQubGluZTtcbiAgICBjb2x1bW4gPSBsb2Muc3RhcnQuY29sdW1uO1xuICAgIGVuZENvbHVtbiA9IGxvYy5lbmQuY29sdW1uO1xuXG4gICAgbWVzc2FnZSArPSAnIC0gJyArIGxpbmUgKyAnOicgKyBjb2x1bW47XG4gIH1cblxuICBsZXQgdG1wID0gRXJyb3IucHJvdG90eXBlLmNvbnN0cnVjdG9yLmNhbGwodGhpcywgbWVzc2FnZSk7XG5cbiAgLy8gVW5mb3J0dW5hdGVseSBlcnJvcnMgYXJlIG5vdCBlbnVtZXJhYmxlIGluIENocm9tZSAoYXQgbGVhc3QpLCBzbyBgZm9yIHByb3AgaW4gdG1wYCBkb2Vzbid0IHdvcmsuXG4gIGZvciAobGV0IGlkeCA9IDA7IGlkeCA8IGVycm9yUHJvcHMubGVuZ3RoOyBpZHgrKykge1xuICAgIHRoaXNbZXJyb3JQcm9wc1tpZHhdXSA9IHRtcFtlcnJvclByb3BzW2lkeF1dO1xuICB9XG5cbiAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgaWYgKEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKSB7XG4gICAgRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UodGhpcywgRXhjZXB0aW9uKTtcbiAgfVxuXG4gIHRyeSB7XG4gICAgaWYgKGxvYykge1xuICAgICAgdGhpcy5saW5lTnVtYmVyID0gbGluZTtcbiAgICAgIHRoaXMuZW5kTGluZU51bWJlciA9IGVuZExpbmVOdW1iZXI7XG5cbiAgICAgIC8vIFdvcmsgYXJvdW5kIGlzc3VlIHVuZGVyIHNhZmFyaSB3aGVyZSB3ZSBjYW4ndCBkaXJlY3RseSBzZXQgdGhlIGNvbHVtbiB2YWx1ZVxuICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgIGlmIChPYmplY3QuZGVmaW5lUHJvcGVydHkpIHtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsICdjb2x1bW4nLCB7XG4gICAgICAgICAgdmFsdWU6IGNvbHVtbixcbiAgICAgICAgICBlbnVtZXJhYmxlOiB0cnVlXG4gICAgICAgIH0pO1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgJ2VuZENvbHVtbicsIHtcbiAgICAgICAgICB2YWx1ZTogZW5kQ29sdW1uLFxuICAgICAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmNvbHVtbiA9IGNvbHVtbjtcbiAgICAgICAgdGhpcy5lbmRDb2x1bW4gPSBlbmRDb2x1bW47XG4gICAgICB9XG4gICAgfVxuICB9IGNhdGNoIChub3ApIHtcbiAgICAvKiBJZ25vcmUgaWYgdGhlIGJyb3dzZXIgaXMgdmVyeSBwYXJ0aWN1bGFyICovXG4gIH1cbn1cblxuRXhjZXB0aW9uLnByb3RvdHlwZSA9IG5ldyBFcnJvcigpO1xuXG5leHBvcnQgZGVmYXVsdCBFeGNlcHRpb247XG4iXX0=\n","/**\n * @fileoverview Common collections.\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\nvar util = require('tui-code-snippet');\nvar forEachProp = util.forEachOwnProperties,\n    forEachArr = util.forEachArray,\n    isFunc = util.isFunction,\n    isObj = util.isObject;\n\nvar aps = Array.prototype.slice;\n\n/**\n * Common collection.\n *\n * It need function for get model's unique id.\n *\n * if the function is not supplied then it use default function {@link Collection#getItemID}\n * @constructor\n * @param {function} [getItemIDFn] function for get model's id.\n */\nfunction Collection(getItemIDFn) {\n    /**\n     * @type {object.<string, *>}\n     */\n    this.items = {};\n\n    /**\n     * @type {number}\n     */\n    this.length = 0;\n\n    if (isFunc(getItemIDFn)) {\n        /**\n         * @type {function}\n         */\n        this.getItemID = getItemIDFn;\n    }\n}\n\n/**********\n * static props\n **********/\n\n/**\n * Combind supplied function filters and condition.\n * @param {...function} filters - function filters\n * @returns {function} combined filter\n */\nCollection.and = function(filters) {\n    var cnt;\n\n    filters = aps.call(arguments);\n    cnt = filters.length;\n\n    return function(item) {\n        var i = 0;\n\n        for (; i < cnt; i += 1) {\n            if (!filters[i].call(null, item)) {\n                return false;\n            }\n        }\n\n        return true;\n    };\n};\n\n/**********\n * prototype props\n **********/\n\n/**\n * get model's unique id.\n * @param {object} item model instance.\n * @returns {number} model unique id.\n */\nCollection.prototype.getItemID = function(item) {\n    return String(item._id);\n};\n\n/**\n * add models.\n * @param {...*} item models to add this collection.\n */\nCollection.prototype.add = function(item) {\n    var self = this,\n        id,\n        ownItems;\n\n    if (arguments.length > 1) {\n        forEachArr(aps.call(arguments), function(o) {\n            self.add(o);\n        });\n\n        return;\n    }\n\n    id = this.getItemID(item);\n    ownItems = this.items;\n\n    if (!ownItems[id]) {\n        this.length += 1;\n    }\n    ownItems[id] = item;\n};\n\n/**\n * remove models.\n * @param {...(object|string|number)} id model instance or unique id to delete.\n * @returns {array} deleted model list.\n */\nCollection.prototype.remove = function(id) {\n    var self = this,\n        removed = [],\n        ownItems,\n        itemToRemove;\n\n    if (!this.length) {\n        return removed;\n    }\n\n    if (arguments.length > 1) {\n        removed = util.map(aps.call(arguments), function(_id) {\n            return self.remove(_id);\n        });\n\n        return removed;\n    }\n\n    ownItems = this.items;\n\n    if (isObj(id)) {\n        id = this.getItemID(id);\n    }\n\n    if (!ownItems[id]) {\n        return removed;\n    }\n\n    this.length -= 1;\n    itemToRemove = ownItems[id];\n    delete ownItems[id];\n\n    return itemToRemove;\n};\n\n/**\n * remove all models in collection.\n */\nCollection.prototype.clear = function() {\n    this.items = {};\n    this.length = 0;\n};\n\n/**\n * check collection has specific model.\n * @param {(object|string|number|function)} id model instance or id or filter function to check\n * @returns {boolean} is has model?\n */\nCollection.prototype.has = function(id) {\n    var isFilter,\n        has;\n\n    if (!this.length) {\n        return false;\n    }\n\n    isFilter = isFunc(id);\n    has = false;\n\n    if (isFilter) {\n        this.each(function(item) {\n            if (id(item) === true) {\n                has = true;\n\n                return false; // returning false can stop this loop\n            }\n\n            return true;\n        });\n    } else {\n        id = isObj(id) ? this.getItemID(id) : id;\n        has = util.isExisty(this.items[id]);\n    }\n\n    return has;\n};\n\n/**\n * invoke callback when model exist in collection.\n * @param {(string|number)} id model unique id.\n * @param {function} fn the callback.\n * @param {*} [context] callback context.\n */\nCollection.prototype.doWhenHas = function(id, fn, context) {\n    var item = this.items[id];\n\n    if (!util.isExisty(item)) {\n        return;\n    }\n\n    fn.call(context || this, item);\n};\n\n/**\n * Search model. and return new collection.\n * @param {function} filter filter function.\n * @returns {Collection} new collection with filtered models.\n * @example\n * collection.find(function(item) {\n *     return item.edited === true;\n * });\n *\n * function filter1(item) {\n *     return item.edited === false;\n * }\n *\n * function filter2(item) {\n *     return item.disabled === false;\n * }\n *\n * collection.find(Collection.and(filter1, filter2));\n */\nCollection.prototype.find = function(filter) {\n    var result = new Collection();\n\n    if (this.hasOwnProperty('getItemID')) {\n        result.getItemID = this.getItemID;\n    }\n\n    this.each(function(item) {\n        if (filter(item) === true) {\n            result.add(item);\n        }\n    });\n\n    return result;\n};\n\n/**\n * Group element by specific key values.\n *\n * if key parameter is function then invoke it and use returned value.\n * @param {(string|number|function|array)} key key property or getter function.\n *  if string[] supplied, create each collection before grouping.\n * @param {function} [groupFunc] - function that return each group's key\n * @returns {object.<string, Collection>} grouped object\n * @example\n *\n * // pass `string`, `number`, `boolean` type value then group by property value.\n * collection.groupBy('gender');    // group by 'gender' property value.\n * collection.groupBy(50);          // group by '50' property value.\n *\n * // pass `function` then group by return value. each invocation `function` is called with `(item)`.\n * collection.groupBy(function(item) {\n *     if (item.score > 60) {\n *         return 'pass';\n *     }\n *     return 'fail';\n * });\n *\n * // pass `array` with first arguments then create each collection before grouping.\n * collection.groupBy(['go', 'ruby', 'javascript']);\n * // result: { 'go': empty Collection, 'ruby': empty Collection, 'javascript': empty Collection }\n *\n * // can pass `function` with `array` then group each elements.\n * collection.groupBy(['go', 'ruby', 'javascript'], function(item) {\n *     if (item.isFast) {\n *         return 'go';\n *     }\n *\n *     return item.name;\n * });\n */\nCollection.prototype.groupBy = function(key, groupFunc) {\n    var result = {},\n        collection,\n        baseValue,\n        keyIsFunc = isFunc(key),\n        getItemIDFn = this.getItemID;\n\n    if (util.isArray(key)) {\n        util.forEachArray(key, function(k) {\n            result[String(k)] = new Collection(getItemIDFn);\n        });\n\n        if (!groupFunc) {\n            return result;\n        }\n\n        key = groupFunc;\n        keyIsFunc = true;\n    }\n\n    this.each(function(item) {\n        if (keyIsFunc) {\n            baseValue = key(item);\n        } else {\n            baseValue = item[key];\n\n            if (isFunc(baseValue)) {\n                baseValue = baseValue.apply(item);\n            }\n        }\n\n        collection = result[baseValue];\n\n        if (!collection) {\n            collection = result[baseValue] = new Collection(getItemIDFn);\n        }\n\n        collection.add(item);\n    });\n\n    return result;\n};\n\n/**\n * Return single item in collection.\n *\n * Returned item is inserted in this collection firstly.\n * @param {function} [filter] - function filter\n * @returns {object} item.\n */\nCollection.prototype.single = function(filter) {\n    var result,\n        useFilter = util.isFunction(filter);\n\n    this.each(function(item) {\n        if (!useFilter) {\n            result = item;\n\n            return false; // returning false can stop this loop\n        }\n        if (filter(item)) {\n            result = item;\n\n            return false; // returning false can stop this loop\n        }\n\n        return true;\n    }, this);\n\n    return result;\n};\n\n/**\n * sort a basis of supplied compare function.\n * @param {function} compareFunction compareFunction\n * @returns {array} sorted array.\n */\nCollection.prototype.sort = function(compareFunction) {\n    var arr = [];\n\n    this.each(function(item) {\n        arr.push(item);\n    });\n\n    if (isFunc(compareFunction)) {\n        arr = arr.sort(compareFunction);\n    }\n\n    return arr;\n};\n\n/**\n * iterate each model element.\n *\n * when iteratee return false then break the loop.\n * @param {function} iteratee iteratee(item, index, items)\n * @param {*} [context] context\n */\nCollection.prototype.each = function(iteratee, context) {\n    forEachProp(this.items, iteratee, context || this);\n};\n\n/**\n * return new array with collection items.\n * @returns {array} new array.\n */\nCollection.prototype.toArray = function() {\n    if (!this.length) {\n        return [];\n    }\n\n    return util.map(this.items, function(item) {\n        return item;\n    });\n};\n\nmodule.exports = Collection;\n","/* eslint complexity: 0 */\n/**\n * @fileoverview Model of schedule.\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\nvar util = require('tui-code-snippet');\nvar TZDate = require('../common/timezone').Date;\nvar datetime = require('../common/datetime');\nvar dirty = require('../common/dirty');\nvar model = require('../common/model');\n\nvar SCHEDULE_MIN_DURATION = datetime.MILLISECONDS_SCHEDULE_MIN_DURATION;\n\n/**\n * Schedule category\n * @readonly\n * @enum {string}\n */\nvar SCHEDULE_CATEGORY = {\n    /** milestone */\n    MILESTONE: 'milestone',\n\n    /** task */\n    TASK: 'task',\n\n    /** all-day schedule */\n    ALLDAY: 'allday',\n\n    /** normal schedule */\n    TIME: 'time'\n};\n\n/**\n * The model of calendar schedules.\n * @constructor\n * @mixes dirty\n * @mixes model\n */\nfunction Schedule() {\n    /**\n     * `Optional` unique id for various use.\n     * @type {string}\n     */\n    this.id = '';\n\n    /**\n     * title for schedule.\n     * @type {string}\n     */\n    this.title = '';\n\n    /**\n     * body for schedule.\n     * @type {string}\n     */\n    this.body = '';\n\n    /**\n     * is schedule is all day schedule?\n     * @type {boolean}\n     */\n    this.isAllDay = false;\n\n    /**\n     * schedule start\n     * @type {TZDate}\n     */\n    this.start = null;\n\n    /**\n     * schedule end\n     * @type {TZDate}\n     */\n    this.end = null;\n\n    /**\n     * schedule text color\n     * @type {string}\n     */\n    this.color = '#000';\n\n    /**\n     * schedule block visibility\n     * @type {boolean}\n     */\n    this.isVisible = true;\n\n    /**\n     * schedule background color\n     * @type {string}\n     */\n    this.bgColor = '#a1b56c';\n\n    /**\n     * schedule background color when dragging it\n     * @type {string}\n     */\n    this.dragBgColor = '#a1b56c';\n\n    /**\n     * schedule left border color\n     * @type {string}\n     */\n    this.borderColor = '#000';\n\n    /**\n     * calendar ID\n     * @type {string}\n     */\n    this.calendarId = '';\n\n    /**\n     * Schedule category(milestone, task, allday, time)\n     * @type {string}\n     */\n    this.category = '';\n\n    /**\n     * Classification of work schedules (before work, before lunch, before work)\n     * @type {string}\n     */\n    this.dueDateClass = '';\n\n    /**\n     * Custom style for schedule element\n     * @type {string}\n     */\n    this.customStyle = '';\n\n    /**\n     * in progress flag to do something\n     * @type {boolean}\n     */\n    this.isPending = false;\n\n    /**\n     * focused schedule flag\n     * @type {boolean}\n     */\n    this.isFocused = false;\n\n    /**\n     * read-only schedule flag\n     * @type {boolean}\n     */\n    this.isReadOnly = false;\n\n    /**\n     * private schedule\n     * @type {boolean}\n     */\n    this.isPrivate = false;\n\n    /**\n     * location\n     * @type {string}\n     */\n    this.location = '';\n\n    /**\n     * attendees\n     * @type {Array.<string>}\n     */\n    this.attendees = [];\n\n    /**\n     * recurrence rule\n     * @type {any}\n     */\n    this.recurrenceRule = '';\n\n    /**\n     * state. 'Busy' is default.\n     * @type {string}\n     */\n    this.state = '';\n\n    /**\n     * travelTime: going-Duration minutes\n     * @type {number}\n     */\n    this.goingDuration = 0;\n\n    /**\n     * travelTime: coming-Duration minutes\n     * @type {number}\n     */\n    this.comingDuration = 0;\n\n    /**\n     * Separate data storage space independent of rendering.\n     * @type {object}\n     */\n    this.raw = null;\n\n    // initialize model id\n    util.stamp(this);\n}\n\n/**********\n * static props\n **********/\n\nSchedule.schema = {\n    required: ['title'],\n    dateRange: ['start', 'end']\n};\n\n/**\n * create schedule model from json(object) data.\n * @param {object} data object for model.\n * @returns {Schedule} Schedule model instance.\n */\nSchedule.create = function(data) {\n    var inst = new Schedule();\n    inst.init(data);\n\n    return inst;\n};\n\n/**********\n * prototype props\n **********/\n\n/**\n * Initialize schedule instance.\n * @param {object} options options.\n */\nSchedule.prototype.init = function(options) {\n    options = util.extend({}, options);\n    if (options.category === SCHEDULE_CATEGORY.ALLDAY) {\n        options.isAllDay = true;\n    }\n\n    this.id = options.id || '';\n    this.title = options.title || '';\n    this.body = options.body || '';\n    this.isAllDay = util.isExisty(options.isAllDay) ? options.isAllDay : false;\n    this.isVisible = util.isExisty(options.isVisible) ? options.isVisible : true;\n\n    this.color = options.color || this.color;\n    this.bgColor = options.bgColor || this.bgColor;\n    this.dragBgColor = options.dragBgColor || this.dragBgColor;\n    this.borderColor = options.borderColor || this.borderColor;\n    this.calendarId = options.calendarId || '';\n    this.category = options.category || '';\n    this.dueDateClass = options.dueDateClass || '';\n    this.customStyle = options.customStyle || '';\n    this.location = options.location || '';\n    this.attendees = options.attendees || [];\n    this.recurrenceRule = options.recurrenceRule || '';\n    this.isPrivate = options.isPrivate || false;\n    this.isPending = options.isPending || false;\n    this.isFocused = options.isFocused || false;\n    this.isReadOnly = options.isReadOnly || false;\n    this.goingDuration = options.goingDuration || 0;\n    this.comingDuration = options.comingDuration || 0;\n    this.state = options.state || '';\n\n    if (this.isAllDay) {\n        this.setAllDayPeriod(options.start, options.end);\n    } else {\n        this.setTimePeriod(options.start, options.end);\n    }\n\n    this.raw = options.raw || null;\n};\n\nSchedule.prototype.setAllDayPeriod = function(start, end) {\n    // If it is an all-day schedule, only the date information of the string is used.\n    if (util.isString(start) && start.length === 10) {\n        start = datetime.parse(start);\n    } else {\n        start = new TZDate(start || Date.now());\n    }\n\n    if (util.isString(end) && end.length === 10) {\n        end = datetime.parse(end);\n        end.setHours(23, 59, 59);\n    } else {\n        end = new TZDate(end || start);\n    }\n\n    this.start = datetime.start(start);\n    this.end = datetime.renderEnd(start, end);\n};\n\nSchedule.prototype.setTimePeriod = function(start, end) {\n    this.start = new TZDate(start || Date.now());\n    this.end = new TZDate(end || this.start);\n\n    if (!end) {\n        this.end.setMinutes(this.end.getMinutes() + 30);\n    }\n};\n\n/**\n * @returns {Date} render start date.\n */\nSchedule.prototype.getStarts = function() {\n    return this.start;\n};\n\n/**\n * @returns {Date} render end date.\n */\nSchedule.prototype.getEnds = function() {\n    return this.end;\n};\n\n/**\n * @returns {number} instance unique id.\n */\nSchedule.prototype.cid = function() {\n    return util.stamp(this);\n};\n\n/**\n * Check two schedule are equals (means title, isAllDay, start, end are same)\n * @param {Schedule} schedule Schedule model instance to compare.\n * @returns {boolean} Return false when not same.\n */\nSchedule.prototype.equals = function(schedule) {\n    if (this.id !== schedule.id) {\n        return false;\n    }\n\n    if (this.title !== schedule.title) {\n        return false;\n    }\n\n    if (this.body !== schedule.body) {\n        return false;\n    }\n\n    if (this.isAllDay !== schedule.isAllDay) {\n        return false;\n    }\n\n    if (datetime.compare(this.getStarts(), schedule.getStarts()) !== 0) {\n        return false;\n    }\n\n    if (datetime.compare(this.getEnds(), schedule.getEnds()) !== 0) {\n        return false;\n    }\n\n    if (this.color !== schedule.color) {\n        return false;\n    }\n\n    if (this.bgColor !== schedule.bgColor) {\n        return false;\n    }\n\n    if (this.dragBgColor !== schedule.dragBgColor) {\n        return false;\n    }\n\n    if (this.borderColor !== schedule.borderColor) {\n        return false;\n    }\n\n    return true;\n};\n\n/**\n * return duration between start and end.\n * @returns {Date} duration (UTC)\n */\nSchedule.prototype.duration = function() {\n    var start = this.getStarts(),\n        end = this.getEnds(),\n        duration;\n\n    if (this.isAllDay) {\n        duration = datetime.end(end) - datetime.start(start);\n    } else {\n        duration = end - start;\n    }\n\n    return duration;\n};\n\n/**\n * Returns true if the given Schedule coincides with the same time as the\n * calling Schedule.\n * @param {Schedule} schedule The other schedule to compare with this Schedule.\n * @returns {boolean} If the other schedule occurs within the same time as the first object.\n */\nSchedule.prototype.collidesWith = function(schedule) {\n    var ownStarts = this.getStarts(),\n        ownEnds = this.getEnds(),\n        start = schedule.getStarts(),\n        end = schedule.getEnds();\n    var ownGoingDuration = datetime.millisecondsFrom('minutes', this.goingDuration),\n        ownComingDuration = datetime.millisecondsFrom('minutes', this.comingDuration),\n        goingDuration = datetime.millisecondsFrom('minutes', schedule.goingDuration),\n        comingDuration = datetime.millisecondsFrom('minutes', schedule.comingDuration);\n\n    if (Math.abs(ownEnds - ownStarts) < SCHEDULE_MIN_DURATION) {\n        ownEnds += SCHEDULE_MIN_DURATION;\n    }\n\n    if (Math.abs(end - start) < SCHEDULE_MIN_DURATION) {\n        end += SCHEDULE_MIN_DURATION;\n    }\n\n    ownStarts -= ownGoingDuration;\n    ownEnds += ownComingDuration;\n    start -= goingDuration;\n    end += comingDuration;\n\n    if ((start > ownStarts && start < ownEnds) ||\n        (end > ownStarts && end < ownEnds) ||\n        (start <= ownStarts && end >= ownEnds)) {\n        return true;\n    }\n\n    return false;\n};\n\nmodel.mixin(Schedule.prototype);\ndirty.mixin(Schedule.prototype);\n\nmodule.exports = Schedule;\n","/**\n * @fileoverview Utility module for array sort, binary search.\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\nvar util = require('tui-code-snippet');\nvar datetime = require('../common/datetime');\n\n/**\n * A module for sorting array.\n * @module array\n */\n\n/**********\n * Search\n **********/\n\n/**\n * search item index using binary search algorithm.\n *\n * the array must be sorted.\n * @param {array} arr array to search.\n * @param {(string|number|boolean)} search value to search.\n * @param {function} [fn] iteratee for retrieve each element's value to search.\n * @param {function} [compare] compare function for specific sort status. default is string ascending.\n * @returns {number} The number of item index searched. return negative number when no exist that item.\n * It can use insert index after Math.abs()\n * @example\n *\n * var arr = [1, 3, 7, 11, 15, 23];\n *\n * function sortNumber(a, b) {\n *     return a - b;\n * }\n *\n * bsearch(arr, 15, null, sortNumber);    // 4\n * bsearch(arr, 21, null, sortNumber);    // -5\n *\n * arr.splice(Math.abs(bsearch(arr, 21, null, sortNumber)), 0, 21);\n * // [1, 2, 7, 11, 15, 21, 23]\n */\nfunction bsearch(arr, search, fn, compare) {\n    var minIndex = 0,\n        maxIndex = arr.length - 1,\n        currentIndex,\n        value,\n        comp;\n\n    compare = compare || stringASC;\n\n    while (minIndex <= maxIndex) {\n        currentIndex = (minIndex + maxIndex) / 2 | 0; // Math.floor\n        value = fn ? fn(arr[currentIndex]) : arr[currentIndex];\n        comp = compare(value, search);\n\n        if (comp < 0) {\n            minIndex = currentIndex + 1;\n        } else if (comp > 0) {\n            maxIndex = currentIndex - 1;\n        } else {\n            return currentIndex;\n        }\n    }\n\n    return ~maxIndex;\n}\n\n/**********\n * Compare Functions\n **********/\n\n/**\n * compare function for array sort.\n *\n * sort array by ascending.\n * @param {boolean} a The boolean to compare\n * @param {boolean} b The boolean to compare.\n * @returns {number} Result of comparison.\n */\nfunction booleanASC(a, b) {\n    if (a !== b) {\n        return a ? -1 : 1;\n    }\n\n    return 0;\n}\n\n/**\n * compare function for array sort.\n *\n * sort array by descending.\n * @param {boolean} a The boolean to compare\n * @param {boolean} b The boolean to compare.\n * @returns {number} Result of comparison.\n */\nfunction booleanDESC(a, b) {\n    if (a !== b) {\n        return a ? 1 : -1;\n    }\n\n    return 0;\n}\n\n/**\n * compare function for array sort.\n *\n * sort array by number ascending.\n * @param {number} _a The number to compare.\n * @param {number} _b The number to compare.\n * @returns {number} Result of comparison.\n */\nfunction numberASC(_a, _b) {\n    var a = Number(_a),\n        b = Number(_b);\n\n    return a - b;\n}\n\n/**\n * compare function for array sort.\n *\n * sort array by number descending.\n * @param {number} _a The number to compare.\n * @param {number} _b The number to compare.\n * @returns {number} Result of comparison.\n */\nfunction numberDESC(_a, _b) {\n    var a = Number(_a),\n        b = Number(_b);\n\n    return b - a;\n}\n\n/**\n * compare function for array sort.\n *\n * sort array by string ascending\n * @param {string} _a The string to compare.\n * @param {string} _b The string to compare.\n * @returns {number} Result of comparison.\n */\nfunction stringASC(_a, _b) {\n    var a = String(_a),\n        b = String(_b);\n\n    if (a > b) {\n        return 1;\n    }\n    if (a < b) {\n        return -1;\n    }\n\n    return 0;\n}\n\n/**\n * compare function for array sort.\n *\n * sort array by string descending\n * @param {string} _a The string to compare.\n * @param {string} _b The string to compare.\n * @returns {number} Result of comparison.\n */\nfunction stringDESC(_a, _b) {\n    var a = String(_a),\n        b = String(_b);\n\n    if (a > b) {\n        return -1;\n    }\n    if (a < b) {\n        return 1;\n    }\n\n    return 0;\n}\n\n/**\n * compare function for array sort.\n *\n * sort array by string ascending with ignore case.\n * @param {string} _a The string to compare.\n * @param {string} _b The string to compare.\n * @returns {number} Result of comparison.\n */\nfunction stringASCIgnoreCase(_a, _b) {\n    var a = String(_a).toLowerCase(),\n        b = String(_b).toLowerCase();\n\n    if (a > b) {\n        return 1;\n    }\n    if (a < b) {\n        return -1;\n    }\n\n    return 0;\n}\n\n/**\n * compare function for array sort.\n *\n * sort array by string descending with ignore case.\n * @param {string} _a The string to compare.\n * @param {string} _b The string to compare.\n * @returns {number} Result of comparison.\n */\nfunction stringDESCIgnoreCase(_a, _b) {\n    var a = String(_a).toLowerCase(),\n        b = String(_b).toLowerCase();\n\n    if (a > b) {\n        return -1;\n    }\n    if (a < b) {\n        return 1;\n    }\n\n    return 0;\n}\n\n/**\n * Compare schedule models for sort.\n *\n * 1. all day schedule first.\n * 2. early start.\n * 3. longest duration.\n * 4. early created.\n * @param {Schedule|ScheduleViewModel} a The object schedule instance.\n * @param {Schedule|ScheduleViewModel} b The object schedule instance.\n * @returns {number} Result of comparison.\n */\nfunction scheduleASC(a, b) {\n    var durationA, durationB;\n    var allDayCompare, startsCompare;\n    var modelA = a.valueOf();\n    var modelB = b.valueOf();\n\n    allDayCompare = booleanASC(modelA.isAllDay || a.hasMultiDates, modelB.isAllDay || b.hasMultiDates);\n\n    if (allDayCompare) {\n        return allDayCompare;\n    }\n\n    startsCompare = datetime.compare(a.getStarts(), b.getStarts());\n\n    if (startsCompare) {\n        return startsCompare;\n    }\n\n    durationA = a.duration();\n    durationB = b.duration();\n\n    if (durationA < durationB) {\n        return 1;\n    }\n    if (durationA > durationB) {\n        return -1;\n    }\n\n    return util.stamp(modelA) - util.stamp(modelB);\n}\n\nmodule.exports = {\n    bsearch: bsearch,\n    compare: {\n        schedule: {\n            asc: scheduleASC\n        },\n        bool: {\n            asc: booleanASC,\n            desc: booleanDESC\n        },\n        num: {\n            asc: numberASC,\n            desc: numberDESC\n        },\n        str: {\n            asc: stringASC,\n            desc: stringDESC,\n            ascIgnoreCase: stringASCIgnoreCase,\n            descIgnoreCase: stringDESCIgnoreCase\n        }\n    }\n};\n","/**\n * @fileoverview Floating layer module\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\nvar util = require('tui-code-snippet');\nvar config = require('../config'),\n    domutil = require('../common/domutil'),\n    View = require('../view/view');\n\n/**\n * @constructor\n * @extends {View}\n * @param {object} options - options for floating layer module\n * @param {HTMLElement} container - parent continer for floating layer\n */\nfunction FloatingLayer(options, container) {\n    var sibling = container[FloatingLayer.PROP_KEY],\n        layerContainer;\n\n    if (!sibling) {\n        sibling = container[FloatingLayer.PROP_KEY] = [];\n    }\n\n    sibling.push(this);\n\n    /**\n     * @type {Collection}\n     */\n    this.sibling = sibling;\n\n    /**\n     * @type {number}\n     */\n    this.zIndex = this.getLargestZIndex() || FloatingLayer.INIT_ZINDEX;\n\n    layerContainer = document.createElement('div');\n    layerContainer.style.display = 'none';\n    layerContainer.style.position = 'absolute';\n    domutil.addClass(layerContainer, config.classname('floating-layer'));\n    container.appendChild(layerContainer);\n\n    View.call(this, layerContainer);\n\n    /**\n     * @type {HTMLElement}\n     */\n    this.parent = container;\n}\n\nutil.inherit(FloatingLayer, View);\n\n/**\n * @const\n */\nFloatingLayer.PROP_KEY = '__fe_floating_layer';\n\n/**\n * @const\n */\nFloatingLayer.INIT_ZINDEX = 999;\n\n/**\n * Destroy floating layer instance. if there no instnace in parent container\n *\n * remove instance cache property in container element\n */\nFloatingLayer.prototype.destroy = function() {\n    var parent = this.parent,\n        sibling = this.sibling,\n        i = 0, cnt = sibling.length;\n\n    for (; i < cnt; i += 1) {\n        if (sibling[i] === this) {\n            sibling.splice(i, 1);\n            break;\n        }\n    }\n\n    if (!sibling.length) {\n        try {\n            delete parent[FloatingLayer.PROP_KEY];\n        } catch (e) {\n            parent[FloatingLayer.PROP_KEY] = null;\n        }\n\n        parent.style.position = '';\n    }\n\n    domutil.remove(this.container);\n\n    this.sibling = null;\n\n    View.prototype.destroy.call(this);\n};\n\n/**\n * @returns {boolean} whether layer is visible?\n */\nFloatingLayer.prototype.isVisible = function() {\n    return this.container.style.display !== 'none';\n};\n\n/**\n * Set layer position\n * @param {number} x - x coordinate of layer\n * @param {number} y - y coordinate of layer\n */\nFloatingLayer.prototype.setPosition = function(x, y) {\n    domutil.setPosition(this.container, x, y);\n};\n\n/**\n * Set layer left, top, right, bottom position\n * @param {object} ltrb object of left, top, right, bottom\n * @param {number} [ltrb.left] left pixel value.\n * @param {number} [ltrb.top] top pixel value.\n * @param {number} [ltrb.right] right pixel value.\n * @param {number} [ltrb.bottom] bottom pixel value.\n */\nFloatingLayer.prototype.setLTRB = function(ltrb) {\n    domutil.setLTRB(this.container, ltrb);\n};\n\n/**\n * Set layer size\n * @param {number|string} w - layer width\n * @param {number|string} h - layer height\n */\nFloatingLayer.prototype.setSize = function(w, h) {\n    var container = this.container;\n\n    w = util.isNumber(w) ? w + 'px' : w;\n    h = util.isNumber(h) ? h + 'px' : h;\n\n    container.style.width = w;\n    container.style.height = h;\n};\n\n/**\n * Set layer content\n * @param {string} html - html string\n */\nFloatingLayer.prototype.setContent = function(html) {\n    this.container.innerHTML = html;\n};\n\n/**\n * Get largest z-index from sibling layers\n * @returns {number} largest z-index value\n */\nFloatingLayer.prototype.getLargestZIndex = function() {\n    var zIndexes = util.map(this.sibling, function(layer) {\n        return layer.zIndex;\n    });\n\n    return Math.max.apply(null, zIndexes);\n};\n\n/**\n * Set focus to layer\n */\nFloatingLayer.prototype.focus = function() {\n    var zIndexForShow = this.getLargestZIndex() + 1;\n    this.container.style.zIndex = this.zIndex = zIndexForShow;\n};\n\n/**\n * Show layer\n */\nFloatingLayer.prototype.show = function() {\n    this.focus();\n    this.container.style.display = 'block';\n};\n\n/**\n * Hide layer\n */\nFloatingLayer.prototype.hide = function() {\n    this.container.style.display = 'none';\n};\n\nmodule.exports = FloatingLayer;\n","/* eslint no-shadow: 0 */\n/**\n * @fileoverview Base mixin object for handler/daygrid\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\nvar util = require('tui-code-snippet');\nvar domutil = require('../../common/domutil');\nvar domevent = require('../../common/domevent');\nvar common = require('../../common/common');\nvar datetime = require('../../common/datetime');\n\nvar mmax = Math.max,\n    mmin = Math.min;\n\n/**\n * @mixin dayGridCore\n */\nvar dayGridCore = {\n    /**\n     * @param {view} view - view instance.\n     * @param {MouseEvent} mouseEvent - mouse schedule object.\n     * @returns {function|boolean} function that return schedule data by mouse events.\n     */\n    _retriveScheduleData: function(view, mouseEvent) {\n        var weekdayView = view.children.single(),\n            container,\n            datesInRange,\n            containerWidth,\n            mousePos,\n            dragStartXIndex,\n            grids,\n            range;\n\n        if (!weekdayView) {\n            return false;\n        }\n\n        container = weekdayView.container;\n        range = weekdayView.getRenderDateRange();\n        datesInRange = range.length;\n        grids = weekdayView.getRenderDateGrids();\n\n        containerWidth = domutil.getSize(container)[0];\n        mousePos = domevent.getMousePosition(mouseEvent, container);\n        dragStartXIndex = getX(grids, common.ratio(containerWidth, 100, mousePos[0]));\n\n        /**\n         * @param {MouseEvent} mouseEvent - mouse schedule in drag actions.\n         * @returns {object} schedule data.\n         */\n        return function(mouseEvent) {\n            var pos = domevent.getMousePosition(mouseEvent, container),\n                mouseX = pos[0],\n                xIndex = getX(grids, common.ratio(containerWidth, 100, mouseX));\n\n            // apply limitation of creation schedule X index.\n            xIndex = mmax(xIndex, 0);\n            xIndex = mmin(xIndex, datesInRange - 1);\n\n            return {\n                relatedView: view,\n                dragStartXIndex: dragStartXIndex,\n                datesInRange: datesInRange,\n                xIndex: xIndex,\n                triggerEvent: mouseEvent.type,\n                grids: grids,\n                range: range\n            };\n        };\n    },\n\n    /**\n     * @param {view} view - view instance.\n     * @param {TZDate} startDate - start date\n     * @returns {object} schedule data by mouse events.\n     */\n    _retriveScheduleDataFromDate: function(view, startDate) {\n        var weekdayView = view.children.single(),\n            xIndex = 0,\n            datesInRange,\n            dragStartXIndex = 0,\n            grids,\n            range;\n\n        if (!weekdayView) {\n            return false;\n        }\n\n        range = weekdayView.getRenderDateRange();\n        datesInRange = range.length;\n        grids = weekdayView.getRenderDateGrids();\n\n        util.forEach(range, function(date, index) {\n            if (datetime.isSameDate(date, startDate)) {\n                xIndex = dragStartXIndex = index;\n            }\n        });\n\n        // apply limitation of creation schedule X index.\n        xIndex = mmax(xIndex, 0);\n        xIndex = mmin(xIndex, datesInRange - 1);\n\n        return {\n            relatedView: view,\n            dragStartXIndex: dragStartXIndex,\n            datesInRange: datesInRange,\n            xIndex: xIndex,\n            triggerEvent: 'manual',\n            grids: grids,\n            range: range\n        };\n    }\n};\n\n/**\n * Get the left index\n * @param {Array} grids - grid size information\n * @param {number} left - left position(percent)\n * @returns {number} grid left index\n */\nfunction getX(grids, left) {\n    var i = 0;\n    var length = grids.length;\n    var grid;\n    if (left < 0) {\n        left = 0;\n    }\n\n    for (; i < length; i += 1) {\n        grid = grids[i];\n        if (grid.left <= left && left <= (grid.left + grid.width)) {\n            return i;\n        }\n    }\n\n    return i;\n}\n\nmodule.exports = dayGridCore;\n","/**\n * @fileoverview Core methods for dragging actions\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\nvar util = require('tui-code-snippet');\nvar common = require('../../common/common');\nvar datetime = require('../../common/datetime');\nvar domevent = require('../../common/domevent');\nvar Point = require('../../common/point');\nvar TZDate = require('../../common/timezone').Date;\n\n/**\n * @mixin Time.Core\n */\nvar timeCore = {\n    /**\n     * Get Y index ratio(hour) in time grids by supplied parameters.\n     * @param {number} baseMil - base milliseconds number for supplied height.\n     * @param {number} height - container element height.\n     * @param {number} y - Y coordinate to calculate hour ratio.\n     * @returns {number} hour index ratio value.\n     */\n    _calcGridYIndex: function(baseMil, height, y) {\n        // get ratio from right expression > point.y : x = session.height : baseMil\n        // and convert milliseconds value to hours.\n        var result = datetime.millisecondsTo('hour', (y * baseMil) / height),\n            floored = result | 0,\n            nearest = common.nearest(result - floored, [0, 1]);\n\n        return floored + (nearest ? 0.5 : 0);\n    },\n\n    /**\n     * Get function to makes event data from Time and mouseEvent\n     * @param {Time} timeView - Instance of time view.\n     * @returns {function} - Function that return event data from mouse event.\n     */\n    _retriveScheduleData: function(timeView) {\n        var self = this,\n            container = timeView.container,\n            options = timeView.options,\n            viewHeight = timeView.getViewBound().height,\n            viewTime = timeView.getDate(),\n            hourLength = options.hourEnd - options.hourStart,\n            baseMil = datetime.millisecondsFrom('hour', hourLength);\n\n        /**\n         * @param {MouseEvent} mouseEvent - mouse event object to get common event data.\n         * @param {object} [extend] - object to extend event data before return.\n         * @returns {object} - common event data for time\n         */\n        return function(mouseEvent, extend) {\n            var mouseY = Point.n(domevent.getMousePosition(mouseEvent, container)).y,\n                gridY = common.ratio(viewHeight, hourLength, mouseY),\n                timeY = new TZDate(viewTime).addMinutes(datetime.minutesFromHours(gridY)),\n                nearestGridY = self._calcGridYIndex(baseMil, viewHeight, mouseY),\n                nearestGridTimeY = new TZDate(viewTime).addMinutes(\n                    datetime.minutesFromHours(nearestGridY + options.hourStart)\n                );\n\n            return util.extend({\n                target: domevent.getEventTarget(mouseEvent),\n                relatedView: timeView,\n                originEvent: mouseEvent,\n                mouseY: mouseY,\n                gridY: gridY,\n                timeY: timeY,\n                nearestGridY: nearestGridY,\n                nearestGridTimeY: nearestGridTimeY,\n                triggerEvent: mouseEvent.type\n            }, extend);\n        };\n    },\n\n    /**\n     * Get function to makes event data from Time and mouseEvent\n     * @param {Time} timeView - Instance of time view.\n     * @param {TZDate} startDate - start date\n     * @param {TZDate} endDate - end date\n     * @param {number} hourStart Can limit of render hour start.\n     * @returns {object} - common event data for time from mouse event.\n     */\n    _retriveScheduleDataFromDate: function(timeView, startDate, endDate, hourStart) {\n        var viewTime = timeView.getDate();\n        var gridY, timeY, nearestGridY, nearestGridTimeY, nearestGridEndY, nearestGridEndTimeY;\n\n        gridY = startDate.getHours() - hourStart + getNearestHour(startDate.getMinutes());\n        timeY = new TZDate(viewTime).addMinutes(datetime.minutesFromHours(gridY));\n        nearestGridY = gridY;\n        nearestGridTimeY = new TZDate(viewTime).addMinutes(datetime.minutesFromHours(nearestGridY));\n        nearestGridEndY = endDate.getHours() - hourStart + getNearestHour(endDate.getMinutes());\n        nearestGridEndTimeY = new TZDate(viewTime).addMinutes(datetime.minutesFromHours(nearestGridEndY));\n\n        return {\n            target: timeView,\n            relatedView: timeView,\n            gridY: gridY,\n            timeY: timeY,\n            nearestGridY: nearestGridY,\n            nearestGridTimeY: nearestGridTimeY,\n            nearestGridEndY: nearestGridEndY,\n            nearestGridEndTimeY: nearestGridEndTimeY,\n            triggerEvent: 'manual',\n            hourStart: hourStart\n        };\n    },\n\n    /**\n     * Mixin method.\n     * @param {(TimeCreation|TimeMove)} obj - Constructor functions\n     */\n    mixin: function(obj) {\n        var proto = obj.prototype;\n        util.forEach(timeCore, function(method, methodName) {\n            if (methodName === 'mixin') {\n                return;\n            }\n\n            proto[methodName] = method;\n        });\n    }\n};\n\n/**\n * Get the nearest hour\n * @param {number} minutes - minutes\n * @returns {number} hour\n */\nfunction getNearestHour(minutes) {\n    var nearestHour;\n    if (minutes === 0) {\n        nearestHour = 0;\n    } else if (minutes > 30) {\n        nearestHour = 1;\n    } else if (minutes <= 30) {\n        nearestHour = 0.5;\n    }\n\n    return nearestHour;\n}\n\nmodule.exports = timeCore;\n","/* eslint-disable complexity */\n/**\n * @fileoverview Module for calculate date by month view and mouse event object\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\nvar util = require('tui-code-snippet');\nvar common = require('../../common/common'),\n    domutil = require('../../common/domutil'),\n    domevent = require('../../common/domevent'),\n    datetime = require('../../common/datetime');\nvar mfloor = Math.floor;\n\n/**\n * Get high order function that can calc date in mouse point\n * @param {Month} monthView - month view\n * @returns {function} function return event data by mouse event object\n */\nfunction getMousePosDate(monthView) {\n    var weekColl = monthView.children,\n        weeks = weekColl.sort(function(a, b) {\n            return util.stamp(a) - util.stamp(b);\n        }),\n        weekCount = weekColl.length,\n        days = weekColl.single().getRenderDateRange(),\n        dayCount = days.length,\n        relativeContainer = util.pick(monthView.vLayout.panels[1], 'container'),\n        size = domutil.getSize(relativeContainer),\n        grids = monthView.grids;\n\n    /**\n     * Get the left index\n     * @param {number} left - left position(percent)\n     * @returns {number} grid left index\n     */\n    function getX(left) {\n        var i = 0;\n        var length = grids.length;\n        var grid;\n        for (; i < length; i += 1) {\n            grid = grids[i];\n            if (grid.left <= left && left <= (grid.left + grid.width)) {\n                return i;\n            }\n        }\n\n        return left < 0 ? -1 : i;\n    }\n\n    /**\n     * Get date related with mouse event object\n     * @param {object} mouseEvent - click event data\n     * @returns {object} data related with mouse event\n     */\n    function getDate(mouseEvent) {\n        var pos = domevent.getMousePosition(mouseEvent, relativeContainer),\n            x = getX(common.ratio(size[0], 100, pos[0])),\n            y = mfloor(common.ratio(size[1], weekCount, pos[1])),\n            weekdayView,\n            date,\n            dateRange;\n\n        if (y < 0) {\n            y = 0;\n        }\n        if (y >= weeks.length) {\n            y = weeks.length - 1;\n        }\n\n        weekdayView = util.pick(weeks, y);\n\n        if (!weekdayView) {\n            return null;\n        }\n\n        dateRange = weekdayView.getRenderDateRange();\n        if (x < 0) {\n            x = 0;\n        }\n        if (x >= dateRange.length) {\n            x = dateRange.length - 1;\n        }\n\n        date = util.pick(dateRange, x);\n\n        if (!date) {\n            return null;\n        }\n\n        return {\n            x: x,\n            y: y,\n            sizeX: dayCount,\n            sizeY: weekCount,\n            date: datetime.end(date),\n            weekdayView: weekdayView,\n            triggerEvent: mouseEvent.type\n        };\n    }\n\n    return getDate;\n}\n\nmodule.exports = getMousePosDate;\n","module.exports = require('handlebars/runtime');","'use strict';\n\nexports.__esModule = true;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\n// istanbul ignore next\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } }\n\nvar _handlebarsBase = require('./handlebars/base');\n\nvar base = _interopRequireWildcard(_handlebarsBase);\n\n// Each of these augment the Handlebars object. No need to setup here.\n// (This is done to easily share code between commonjs and browse envs)\n\nvar _handlebarsSafeString = require('./handlebars/safe-string');\n\nvar _handlebarsSafeString2 = _interopRequireDefault(_handlebarsSafeString);\n\nvar _handlebarsException = require('./handlebars/exception');\n\nvar _handlebarsException2 = _interopRequireDefault(_handlebarsException);\n\nvar _handlebarsUtils = require('./handlebars/utils');\n\nvar Utils = _interopRequireWildcard(_handlebarsUtils);\n\nvar _handlebarsRuntime = require('./handlebars/runtime');\n\nvar runtime = _interopRequireWildcard(_handlebarsRuntime);\n\nvar _handlebarsNoConflict = require('./handlebars/no-conflict');\n\nvar _handlebarsNoConflict2 = _interopRequireDefault(_handlebarsNoConflict);\n\n// For compatibility and usage outside of module systems, make the Handlebars object a namespace\nfunction create() {\n  var hb = new base.HandlebarsEnvironment();\n\n  Utils.extend(hb, base);\n  hb.SafeString = _handlebarsSafeString2['default'];\n  hb.Exception = _handlebarsException2['default'];\n  hb.Utils = Utils;\n  hb.escapeExpression = Utils.escapeExpression;\n\n  hb.VM = runtime;\n  hb.template = function (spec) {\n    return runtime.template(spec, hb);\n  };\n\n  return hb;\n}\n\nvar inst = create();\ninst.create = create;\n\n_handlebarsNoConflict2['default'](inst);\n\ninst['default'] = inst;\n\nexports['default'] = inst;\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9oYW5kbGViYXJzLnJ1bnRpbWUuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OEJBQXNCLG1CQUFtQjs7SUFBN0IsSUFBSTs7Ozs7b0NBSU8sMEJBQTBCOzs7O21DQUMzQix3QkFBd0I7Ozs7K0JBQ3ZCLG9CQUFvQjs7SUFBL0IsS0FBSzs7aUNBQ1Esc0JBQXNCOztJQUFuQyxPQUFPOztvQ0FFSSwwQkFBMEI7Ozs7O0FBR2pELFNBQVMsTUFBTSxHQUFHO0FBQ2hCLE1BQUksRUFBRSxHQUFHLElBQUksSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7O0FBRTFDLE9BQUssQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ3ZCLElBQUUsQ0FBQyxVQUFVLG9DQUFhLENBQUM7QUFDM0IsSUFBRSxDQUFDLFNBQVMsbUNBQVksQ0FBQztBQUN6QixJQUFFLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztBQUNqQixJQUFFLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDLGdCQUFnQixDQUFDOztBQUU3QyxJQUFFLENBQUMsRUFBRSxHQUFHLE9BQU8sQ0FBQztBQUNoQixJQUFFLENBQUMsUUFBUSxHQUFHLFVBQVMsSUFBSSxFQUFFO0FBQzNCLFdBQU8sT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7R0FDbkMsQ0FBQzs7QUFFRixTQUFPLEVBQUUsQ0FBQztDQUNYOztBQUVELElBQUksSUFBSSxHQUFHLE1BQU0sRUFBRSxDQUFDO0FBQ3BCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDOztBQUVyQixrQ0FBVyxJQUFJLENBQUMsQ0FBQzs7QUFFakIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLElBQUksQ0FBQzs7cUJBRVIsSUFBSSIsImZpbGUiOiJoYW5kbGViYXJzLnJ1bnRpbWUuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBiYXNlIGZyb20gJy4vaGFuZGxlYmFycy9iYXNlJztcblxuLy8gRWFjaCBvZiB0aGVzZSBhdWdtZW50IHRoZSBIYW5kbGViYXJzIG9iamVjdC4gTm8gbmVlZCB0byBzZXR1cCBoZXJlLlxuLy8gKFRoaXMgaXMgZG9uZSB0byBlYXNpbHkgc2hhcmUgY29kZSBiZXR3ZWVuIGNvbW1vbmpzIGFuZCBicm93c2UgZW52cylcbmltcG9ydCBTYWZlU3RyaW5nIGZyb20gJy4vaGFuZGxlYmFycy9zYWZlLXN0cmluZyc7XG5pbXBvcnQgRXhjZXB0aW9uIGZyb20gJy4vaGFuZGxlYmFycy9leGNlcHRpb24nO1xuaW1wb3J0ICogYXMgVXRpbHMgZnJvbSAnLi9oYW5kbGViYXJzL3V0aWxzJztcbmltcG9ydCAqIGFzIHJ1bnRpbWUgZnJvbSAnLi9oYW5kbGViYXJzL3J1bnRpbWUnO1xuXG5pbXBvcnQgbm9Db25mbGljdCBmcm9tICcuL2hhbmRsZWJhcnMvbm8tY29uZmxpY3QnO1xuXG4vLyBGb3IgY29tcGF0aWJpbGl0eSBhbmQgdXNhZ2Ugb3V0c2lkZSBvZiBtb2R1bGUgc3lzdGVtcywgbWFrZSB0aGUgSGFuZGxlYmFycyBvYmplY3QgYSBuYW1lc3BhY2VcbmZ1bmN0aW9uIGNyZWF0ZSgpIHtcbiAgbGV0IGhiID0gbmV3IGJhc2UuSGFuZGxlYmFyc0Vudmlyb25tZW50KCk7XG5cbiAgVXRpbHMuZXh0ZW5kKGhiLCBiYXNlKTtcbiAgaGIuU2FmZVN0cmluZyA9IFNhZmVTdHJpbmc7XG4gIGhiLkV4Y2VwdGlvbiA9IEV4Y2VwdGlvbjtcbiAgaGIuVXRpbHMgPSBVdGlscztcbiAgaGIuZXNjYXBlRXhwcmVzc2lvbiA9IFV0aWxzLmVzY2FwZUV4cHJlc3Npb247XG5cbiAgaGIuVk0gPSBydW50aW1lO1xuICBoYi50ZW1wbGF0ZSA9IGZ1bmN0aW9uKHNwZWMpIHtcbiAgICByZXR1cm4gcnVudGltZS50ZW1wbGF0ZShzcGVjLCBoYik7XG4gIH07XG5cbiAgcmV0dXJuIGhiO1xufVxuXG5sZXQgaW5zdCA9IGNyZWF0ZSgpO1xuaW5zdC5jcmVhdGUgPSBjcmVhdGU7XG5cbm5vQ29uZmxpY3QoaW5zdCk7XG5cbmluc3RbJ2RlZmF1bHQnXSA9IGluc3Q7XG5cbmV4cG9ydCBkZWZhdWx0IGluc3Q7XG4iXX0=\n","'use strict';\n\nexports.__esModule = true;\nexports.HandlebarsEnvironment = HandlebarsEnvironment;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _utils = require('./utils');\n\nvar _exception = require('./exception');\n\nvar _exception2 = _interopRequireDefault(_exception);\n\nvar _helpers = require('./helpers');\n\nvar _decorators = require('./decorators');\n\nvar _logger = require('./logger');\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _internalProtoAccess = require('./internal/proto-access');\n\nvar VERSION = '4.7.6';\nexports.VERSION = VERSION;\nvar COMPILER_REVISION = 8;\nexports.COMPILER_REVISION = COMPILER_REVISION;\nvar LAST_COMPATIBLE_COMPILER_REVISION = 7;\n\nexports.LAST_COMPATIBLE_COMPILER_REVISION = LAST_COMPATIBLE_COMPILER_REVISION;\nvar REVISION_CHANGES = {\n  1: '<= 1.0.rc.2', // 1.0.rc.2 is actually rev2 but doesn't report it\n  2: '== 1.0.0-rc.3',\n  3: '== 1.0.0-rc.4',\n  4: '== 1.x.x',\n  5: '== 2.0.0-alpha.x',\n  6: '>= 2.0.0-beta.1',\n  7: '>= 4.0.0 <4.3.0',\n  8: '>= 4.3.0'\n};\n\nexports.REVISION_CHANGES = REVISION_CHANGES;\nvar objectType = '[object Object]';\n\nfunction HandlebarsEnvironment(helpers, partials, decorators) {\n  this.helpers = helpers || {};\n  this.partials = partials || {};\n  this.decorators = decorators || {};\n\n  _helpers.registerDefaultHelpers(this);\n  _decorators.registerDefaultDecorators(this);\n}\n\nHandlebarsEnvironment.prototype = {\n  constructor: HandlebarsEnvironment,\n\n  logger: _logger2['default'],\n  log: _logger2['default'].log,\n\n  registerHelper: function registerHelper(name, fn) {\n    if (_utils.toString.call(name) === objectType) {\n      if (fn) {\n        throw new _exception2['default']('Arg not supported with multiple helpers');\n      }\n      _utils.extend(this.helpers, name);\n    } else {\n      this.helpers[name] = fn;\n    }\n  },\n  unregisterHelper: function unregisterHelper(name) {\n    delete this.helpers[name];\n  },\n\n  registerPartial: function registerPartial(name, partial) {\n    if (_utils.toString.call(name) === objectType) {\n      _utils.extend(this.partials, name);\n    } else {\n      if (typeof partial === 'undefined') {\n        throw new _exception2['default']('Attempting to register a partial called \"' + name + '\" as undefined');\n      }\n      this.partials[name] = partial;\n    }\n  },\n  unregisterPartial: function unregisterPartial(name) {\n    delete this.partials[name];\n  },\n\n  registerDecorator: function registerDecorator(name, fn) {\n    if (_utils.toString.call(name) === objectType) {\n      if (fn) {\n        throw new _exception2['default']('Arg not supported with multiple decorators');\n      }\n      _utils.extend(this.decorators, name);\n    } else {\n      this.decorators[name] = fn;\n    }\n  },\n  unregisterDecorator: function unregisterDecorator(name) {\n    delete this.decorators[name];\n  },\n  /**\n   * Reset the memory of illegal property accesses that have already been logged.\n   * @deprecated should only be used in handlebars test-cases\n   */\n  resetLoggedPropertyAccesses: function resetLoggedPropertyAccesses() {\n    _internalProtoAccess.resetLoggedProperties();\n  }\n};\n\nvar log = _logger2['default'].log;\n\nexports.log = log;\nexports.createFrame = _utils.createFrame;\nexports.logger = _logger2['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2Jhc2UuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7cUJBQThDLFNBQVM7O3lCQUNqQyxhQUFhOzs7O3VCQUNJLFdBQVc7OzBCQUNSLGNBQWM7O3NCQUNyQyxVQUFVOzs7O21DQUNTLHlCQUF5Qjs7QUFFeEQsSUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDOztBQUN4QixJQUFNLGlCQUFpQixHQUFHLENBQUMsQ0FBQzs7QUFDNUIsSUFBTSxpQ0FBaUMsR0FBRyxDQUFDLENBQUM7OztBQUU1QyxJQUFNLGdCQUFnQixHQUFHO0FBQzlCLEdBQUMsRUFBRSxhQUFhO0FBQ2hCLEdBQUMsRUFBRSxlQUFlO0FBQ2xCLEdBQUMsRUFBRSxlQUFlO0FBQ2xCLEdBQUMsRUFBRSxVQUFVO0FBQ2IsR0FBQyxFQUFFLGtCQUFrQjtBQUNyQixHQUFDLEVBQUUsaUJBQWlCO0FBQ3BCLEdBQUMsRUFBRSxpQkFBaUI7QUFDcEIsR0FBQyxFQUFFLFVBQVU7Q0FDZCxDQUFDOzs7QUFFRixJQUFNLFVBQVUsR0FBRyxpQkFBaUIsQ0FBQzs7QUFFOUIsU0FBUyxxQkFBcUIsQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRTtBQUNuRSxNQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sSUFBSSxFQUFFLENBQUM7QUFDN0IsTUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLElBQUksRUFBRSxDQUFDO0FBQy9CLE1BQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxJQUFJLEVBQUUsQ0FBQzs7QUFFbkMsa0NBQXVCLElBQUksQ0FBQyxDQUFDO0FBQzdCLHdDQUEwQixJQUFJLENBQUMsQ0FBQztDQUNqQzs7QUFFRCxxQkFBcUIsQ0FBQyxTQUFTLEdBQUc7QUFDaEMsYUFBVyxFQUFFLHFCQUFxQjs7QUFFbEMsUUFBTSxxQkFBUTtBQUNkLEtBQUcsRUFBRSxvQkFBTyxHQUFHOztBQUVmLGdCQUFjLEVBQUUsd0JBQVMsSUFBSSxFQUFFLEVBQUUsRUFBRTtBQUNqQyxRQUFJLGdCQUFTLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxVQUFVLEVBQUU7QUFDdEMsVUFBSSxFQUFFLEVBQUU7QUFDTixjQUFNLDJCQUFjLHlDQUF5QyxDQUFDLENBQUM7T0FDaEU7QUFDRCxvQkFBTyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO0tBQzVCLE1BQU07QUFDTCxVQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztLQUN6QjtHQUNGO0FBQ0Qsa0JBQWdCLEVBQUUsMEJBQVMsSUFBSSxFQUFFO0FBQy9CLFdBQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztHQUMzQjs7QUFFRCxpQkFBZSxFQUFFLHlCQUFTLElBQUksRUFBRSxPQUFPLEVBQUU7QUFDdkMsUUFBSSxnQkFBUyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssVUFBVSxFQUFFO0FBQ3RDLG9CQUFPLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7S0FDN0IsTUFBTTtBQUNMLFVBQUksT0FBTyxPQUFPLEtBQUssV0FBVyxFQUFFO0FBQ2xDLGNBQU0seUVBQ3dDLElBQUksb0JBQ2pELENBQUM7T0FDSDtBQUNELFVBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsT0FBTyxDQUFDO0tBQy9CO0dBQ0Y7QUFDRCxtQkFBaUIsRUFBRSwyQkFBUyxJQUFJLEVBQUU7QUFDaEMsV0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0dBQzVCOztBQUVELG1CQUFpQixFQUFFLDJCQUFTLElBQUksRUFBRSxFQUFFLEVBQUU7QUFDcEMsUUFBSSxnQkFBUyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssVUFBVSxFQUFFO0FBQ3RDLFVBQUksRUFBRSxFQUFFO0FBQ04sY0FBTSwyQkFBYyw0Q0FBNEMsQ0FBQyxDQUFDO09BQ25FO0FBQ0Qsb0JBQU8sSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQztLQUMvQixNQUFNO0FBQ0wsVUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7S0FDNUI7R0FDRjtBQUNELHFCQUFtQixFQUFFLDZCQUFTLElBQUksRUFBRTtBQUNsQyxXQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7R0FDOUI7Ozs7O0FBS0QsNkJBQTJCLEVBQUEsdUNBQUc7QUFDNUIsZ0RBQXVCLENBQUM7R0FDekI7Q0FDRixDQUFDOztBQUVLLElBQUksR0FBRyxHQUFHLG9CQUFPLEdBQUcsQ0FBQzs7O1FBRW5CLFdBQVc7UUFBRSxNQUFNIiwiZmlsZSI6ImJhc2UuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGVGcmFtZSwgZXh0ZW5kLCB0b1N0cmluZyB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IEV4Y2VwdGlvbiBmcm9tICcuL2V4Y2VwdGlvbic7XG5pbXBvcnQgeyByZWdpc3RlckRlZmF1bHRIZWxwZXJzIH0gZnJvbSAnLi9oZWxwZXJzJztcbmltcG9ydCB7IHJlZ2lzdGVyRGVmYXVsdERlY29yYXRvcnMgfSBmcm9tICcuL2RlY29yYXRvcnMnO1xuaW1wb3J0IGxvZ2dlciBmcm9tICcuL2xvZ2dlcic7XG5pbXBvcnQgeyByZXNldExvZ2dlZFByb3BlcnRpZXMgfSBmcm9tICcuL2ludGVybmFsL3Byb3RvLWFjY2Vzcyc7XG5cbmV4cG9ydCBjb25zdCBWRVJTSU9OID0gJzQuNy42JztcbmV4cG9ydCBjb25zdCBDT01QSUxFUl9SRVZJU0lPTiA9IDg7XG5leHBvcnQgY29uc3QgTEFTVF9DT01QQVRJQkxFX0NPTVBJTEVSX1JFVklTSU9OID0gNztcblxuZXhwb3J0IGNvbnN0IFJFVklTSU9OX0NIQU5HRVMgPSB7XG4gIDE6ICc8PSAxLjAucmMuMicsIC8vIDEuMC5yYy4yIGlzIGFjdHVhbGx5IHJldjIgYnV0IGRvZXNuJ3QgcmVwb3J0IGl0XG4gIDI6ICc9PSAxLjAuMC1yYy4zJyxcbiAgMzogJz09IDEuMC4wLXJjLjQnLFxuICA0OiAnPT0gMS54LngnLFxuICA1OiAnPT0gMi4wLjAtYWxwaGEueCcsXG4gIDY6ICc+PSAyLjAuMC1iZXRhLjEnLFxuICA3OiAnPj0gNC4wLjAgPDQuMy4wJyxcbiAgODogJz49IDQuMy4wJ1xufTtcblxuY29uc3Qgb2JqZWN0VHlwZSA9ICdbb2JqZWN0IE9iamVjdF0nO1xuXG5leHBvcnQgZnVuY3Rpb24gSGFuZGxlYmFyc0Vudmlyb25tZW50KGhlbHBlcnMsIHBhcnRpYWxzLCBkZWNvcmF0b3JzKSB7XG4gIHRoaXMuaGVscGVycyA9IGhlbHBlcnMgfHwge307XG4gIHRoaXMucGFydGlhbHMgPSBwYXJ0aWFscyB8fCB7fTtcbiAgdGhpcy5kZWNvcmF0b3JzID0gZGVjb3JhdG9ycyB8fCB7fTtcblxuICByZWdpc3RlckRlZmF1bHRIZWxwZXJzKHRoaXMpO1xuICByZWdpc3RlckRlZmF1bHREZWNvcmF0b3JzKHRoaXMpO1xufVxuXG5IYW5kbGViYXJzRW52aXJvbm1lbnQucHJvdG90eXBlID0ge1xuICBjb25zdHJ1Y3RvcjogSGFuZGxlYmFyc0Vudmlyb25tZW50LFxuXG4gIGxvZ2dlcjogbG9nZ2VyLFxuICBsb2c6IGxvZ2dlci5sb2csXG5cbiAgcmVnaXN0ZXJIZWxwZXI6IGZ1bmN0aW9uKG5hbWUsIGZuKSB7XG4gICAgaWYgKHRvU3RyaW5nLmNhbGwobmFtZSkgPT09IG9iamVjdFR5cGUpIHtcbiAgICAgIGlmIChmbikge1xuICAgICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCdBcmcgbm90IHN1cHBvcnRlZCB3aXRoIG11bHRpcGxlIGhlbHBlcnMnKTtcbiAgICAgIH1cbiAgICAgIGV4dGVuZCh0aGlzLmhlbHBlcnMsIG5hbWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmhlbHBlcnNbbmFtZV0gPSBmbjtcbiAgICB9XG4gIH0sXG4gIHVucmVnaXN0ZXJIZWxwZXI6IGZ1bmN0aW9uKG5hbWUpIHtcbiAgICBkZWxldGUgdGhpcy5oZWxwZXJzW25hbWVdO1xuICB9LFxuXG4gIHJlZ2lzdGVyUGFydGlhbDogZnVuY3Rpb24obmFtZSwgcGFydGlhbCkge1xuICAgIGlmICh0b1N0cmluZy5jYWxsKG5hbWUpID09PSBvYmplY3RUeXBlKSB7XG4gICAgICBleHRlbmQodGhpcy5wYXJ0aWFscywgbmFtZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh0eXBlb2YgcGFydGlhbCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbihcbiAgICAgICAgICBgQXR0ZW1wdGluZyB0byByZWdpc3RlciBhIHBhcnRpYWwgY2FsbGVkIFwiJHtuYW1lfVwiIGFzIHVuZGVmaW5lZGBcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHRoaXMucGFydGlhbHNbbmFtZV0gPSBwYXJ0aWFsO1xuICAgIH1cbiAgfSxcbiAgdW5yZWdpc3RlclBhcnRpYWw6IGZ1bmN0aW9uKG5hbWUpIHtcbiAgICBkZWxldGUgdGhpcy5wYXJ0aWFsc1tuYW1lXTtcbiAgfSxcblxuICByZWdpc3RlckRlY29yYXRvcjogZnVuY3Rpb24obmFtZSwgZm4pIHtcbiAgICBpZiAodG9TdHJpbmcuY2FsbChuYW1lKSA9PT0gb2JqZWN0VHlwZSkge1xuICAgICAgaWYgKGZuKSB7XG4gICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ0FyZyBub3Qgc3VwcG9ydGVkIHdpdGggbXVsdGlwbGUgZGVjb3JhdG9ycycpO1xuICAgICAgfVxuICAgICAgZXh0ZW5kKHRoaXMuZGVjb3JhdG9ycywgbmFtZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZGVjb3JhdG9yc1tuYW1lXSA9IGZuO1xuICAgIH1cbiAgfSxcbiAgdW5yZWdpc3RlckRlY29yYXRvcjogZnVuY3Rpb24obmFtZSkge1xuICAgIGRlbGV0ZSB0aGlzLmRlY29yYXRvcnNbbmFtZV07XG4gIH0sXG4gIC8qKlxuICAgKiBSZXNldCB0aGUgbWVtb3J5IG9mIGlsbGVnYWwgcHJvcGVydHkgYWNjZXNzZXMgdGhhdCBoYXZlIGFscmVhZHkgYmVlbiBsb2dnZWQuXG4gICAqIEBkZXByZWNhdGVkIHNob3VsZCBvbmx5IGJlIHVzZWQgaW4gaGFuZGxlYmFycyB0ZXN0LWNhc2VzXG4gICAqL1xuICByZXNldExvZ2dlZFByb3BlcnR5QWNjZXNzZXMoKSB7XG4gICAgcmVzZXRMb2dnZWRQcm9wZXJ0aWVzKCk7XG4gIH1cbn07XG5cbmV4cG9ydCBsZXQgbG9nID0gbG9nZ2VyLmxvZztcblxuZXhwb3J0IHsgY3JlYXRlRnJhbWUsIGxvZ2dlciB9O1xuIl19\n","'use strict';\n\nexports.__esModule = true;\nexports.registerDefaultHelpers = registerDefaultHelpers;\nexports.moveHelperToHooks = moveHelperToHooks;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _helpersBlockHelperMissing = require('./helpers/block-helper-missing');\n\nvar _helpersBlockHelperMissing2 = _interopRequireDefault(_helpersBlockHelperMissing);\n\nvar _helpersEach = require('./helpers/each');\n\nvar _helpersEach2 = _interopRequireDefault(_helpersEach);\n\nvar _helpersHelperMissing = require('./helpers/helper-missing');\n\nvar _helpersHelperMissing2 = _interopRequireDefault(_helpersHelperMissing);\n\nvar _helpersIf = require('./helpers/if');\n\nvar _helpersIf2 = _interopRequireDefault(_helpersIf);\n\nvar _helpersLog = require('./helpers/log');\n\nvar _helpersLog2 = _interopRequireDefault(_helpersLog);\n\nvar _helpersLookup = require('./helpers/lookup');\n\nvar _helpersLookup2 = _interopRequireDefault(_helpersLookup);\n\nvar _helpersWith = require('./helpers/with');\n\nvar _helpersWith2 = _interopRequireDefault(_helpersWith);\n\nfunction registerDefaultHelpers(instance) {\n  _helpersBlockHelperMissing2['default'](instance);\n  _helpersEach2['default'](instance);\n  _helpersHelperMissing2['default'](instance);\n  _helpersIf2['default'](instance);\n  _helpersLog2['default'](instance);\n  _helpersLookup2['default'](instance);\n  _helpersWith2['default'](instance);\n}\n\nfunction moveHelperToHooks(instance, helperName, keepHelper) {\n  if (instance.helpers[helperName]) {\n    instance.hooks[helperName] = instance.helpers[helperName];\n    if (!keepHelper) {\n      delete instance.helpers[helperName];\n    }\n  }\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O3lDQUF1QyxnQ0FBZ0M7Ozs7MkJBQzlDLGdCQUFnQjs7OztvQ0FDUCwwQkFBMEI7Ozs7eUJBQ3JDLGNBQWM7Ozs7MEJBQ2IsZUFBZTs7Ozs2QkFDWixrQkFBa0I7Ozs7MkJBQ3BCLGdCQUFnQjs7OztBQUVsQyxTQUFTLHNCQUFzQixDQUFDLFFBQVEsRUFBRTtBQUMvQyx5Q0FBMkIsUUFBUSxDQUFDLENBQUM7QUFDckMsMkJBQWEsUUFBUSxDQUFDLENBQUM7QUFDdkIsb0NBQXNCLFFBQVEsQ0FBQyxDQUFDO0FBQ2hDLHlCQUFXLFFBQVEsQ0FBQyxDQUFDO0FBQ3JCLDBCQUFZLFFBQVEsQ0FBQyxDQUFDO0FBQ3RCLDZCQUFlLFFBQVEsQ0FBQyxDQUFDO0FBQ3pCLDJCQUFhLFFBQVEsQ0FBQyxDQUFDO0NBQ3hCOztBQUVNLFNBQVMsaUJBQWlCLENBQUMsUUFBUSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUU7QUFDbEUsTUFBSSxRQUFRLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFO0FBQ2hDLFlBQVEsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUMxRCxRQUFJLENBQUMsVUFBVSxFQUFFO0FBQ2YsYUFBTyxRQUFRLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0tBQ3JDO0dBQ0Y7Q0FDRiIsImZpbGUiOiJoZWxwZXJzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHJlZ2lzdGVyQmxvY2tIZWxwZXJNaXNzaW5nIGZyb20gJy4vaGVscGVycy9ibG9jay1oZWxwZXItbWlzc2luZyc7XG5pbXBvcnQgcmVnaXN0ZXJFYWNoIGZyb20gJy4vaGVscGVycy9lYWNoJztcbmltcG9ydCByZWdpc3RlckhlbHBlck1pc3NpbmcgZnJvbSAnLi9oZWxwZXJzL2hlbHBlci1taXNzaW5nJztcbmltcG9ydCByZWdpc3RlcklmIGZyb20gJy4vaGVscGVycy9pZic7XG5pbXBvcnQgcmVnaXN0ZXJMb2cgZnJvbSAnLi9oZWxwZXJzL2xvZyc7XG5pbXBvcnQgcmVnaXN0ZXJMb29rdXAgZnJvbSAnLi9oZWxwZXJzL2xvb2t1cCc7XG5pbXBvcnQgcmVnaXN0ZXJXaXRoIGZyb20gJy4vaGVscGVycy93aXRoJztcblxuZXhwb3J0IGZ1bmN0aW9uIHJlZ2lzdGVyRGVmYXVsdEhlbHBlcnMoaW5zdGFuY2UpIHtcbiAgcmVnaXN0ZXJCbG9ja0hlbHBlck1pc3NpbmcoaW5zdGFuY2UpO1xuICByZWdpc3RlckVhY2goaW5zdGFuY2UpO1xuICByZWdpc3RlckhlbHBlck1pc3NpbmcoaW5zdGFuY2UpO1xuICByZWdpc3RlcklmKGluc3RhbmNlKTtcbiAgcmVnaXN0ZXJMb2coaW5zdGFuY2UpO1xuICByZWdpc3Rlckxvb2t1cChpbnN0YW5jZSk7XG4gIHJlZ2lzdGVyV2l0aChpbnN0YW5jZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtb3ZlSGVscGVyVG9Ib29rcyhpbnN0YW5jZSwgaGVscGVyTmFtZSwga2VlcEhlbHBlcikge1xuICBpZiAoaW5zdGFuY2UuaGVscGVyc1toZWxwZXJOYW1lXSkge1xuICAgIGluc3RhbmNlLmhvb2tzW2hlbHBlck5hbWVdID0gaW5zdGFuY2UuaGVscGVyc1toZWxwZXJOYW1lXTtcbiAgICBpZiAoIWtlZXBIZWxwZXIpIHtcbiAgICAgIGRlbGV0ZSBpbnN0YW5jZS5oZWxwZXJzW2hlbHBlck5hbWVdO1xuICAgIH1cbiAgfVxufVxuIl19\n","'use strict';\n\nexports.__esModule = true;\n\nvar _utils = require('./utils');\n\nvar logger = {\n  methodMap: ['debug', 'info', 'warn', 'error'],\n  level: 'info',\n\n  // Maps a given level value to the `methodMap` indexes above.\n  lookupLevel: function lookupLevel(level) {\n    if (typeof level === 'string') {\n      var levelMap = _utils.indexOf(logger.methodMap, level.toLowerCase());\n      if (levelMap >= 0) {\n        level = levelMap;\n      } else {\n        level = parseInt(level, 10);\n      }\n    }\n\n    return level;\n  },\n\n  // Can be overridden in the host environment\n  log: function log(level) {\n    level = logger.lookupLevel(level);\n\n    if (typeof console !== 'undefined' && logger.lookupLevel(logger.level) <= level) {\n      var method = logger.methodMap[level];\n      // eslint-disable-next-line no-console\n      if (!console[method]) {\n        method = 'log';\n      }\n\n      for (var _len = arguments.length, message = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n        message[_key - 1] = arguments[_key];\n      }\n\n      console[method].apply(console, message); // eslint-disable-line no-console\n    }\n  }\n};\n\nexports['default'] = logger;\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2xvZ2dlci5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O3FCQUF3QixTQUFTOztBQUVqQyxJQUFJLE1BQU0sR0FBRztBQUNYLFdBQVMsRUFBRSxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQztBQUM3QyxPQUFLLEVBQUUsTUFBTTs7O0FBR2IsYUFBVyxFQUFFLHFCQUFTLEtBQUssRUFBRTtBQUMzQixRQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRTtBQUM3QixVQUFJLFFBQVEsR0FBRyxlQUFRLE1BQU0sQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7QUFDOUQsVUFBSSxRQUFRLElBQUksQ0FBQyxFQUFFO0FBQ2pCLGFBQUssR0FBRyxRQUFRLENBQUM7T0FDbEIsTUFBTTtBQUNMLGFBQUssR0FBRyxRQUFRLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO09BQzdCO0tBQ0Y7O0FBRUQsV0FBTyxLQUFLLENBQUM7R0FDZDs7O0FBR0QsS0FBRyxFQUFFLGFBQVMsS0FBSyxFQUFjO0FBQy9CLFNBQUssR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDOztBQUVsQyxRQUNFLE9BQU8sT0FBTyxLQUFLLFdBQVcsSUFDOUIsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxFQUN6QztBQUNBLFVBQUksTUFBTSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7O0FBRXJDLFVBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUU7QUFDcEIsY0FBTSxHQUFHLEtBQUssQ0FBQztPQUNoQjs7d0NBWG1CLE9BQU87QUFBUCxlQUFPOzs7QUFZM0IsYUFBTyxDQUFDLE1BQU0sT0FBQyxDQUFmLE9BQU8sRUFBWSxPQUFPLENBQUMsQ0FBQztLQUM3QjtHQUNGO0NBQ0YsQ0FBQzs7cUJBRWEsTUFBTSIsImZpbGUiOiJsb2dnZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmRleE9mIH0gZnJvbSAnLi91dGlscyc7XG5cbmxldCBsb2dnZXIgPSB7XG4gIG1ldGhvZE1hcDogWydkZWJ1ZycsICdpbmZvJywgJ3dhcm4nLCAnZXJyb3InXSxcbiAgbGV2ZWw6ICdpbmZvJyxcblxuICAvLyBNYXBzIGEgZ2l2ZW4gbGV2ZWwgdmFsdWUgdG8gdGhlIGBtZXRob2RNYXBgIGluZGV4ZXMgYWJvdmUuXG4gIGxvb2t1cExldmVsOiBmdW5jdGlvbihsZXZlbCkge1xuICAgIGlmICh0eXBlb2YgbGV2ZWwgPT09ICdzdHJpbmcnKSB7XG4gICAgICBsZXQgbGV2ZWxNYXAgPSBpbmRleE9mKGxvZ2dlci5tZXRob2RNYXAsIGxldmVsLnRvTG93ZXJDYXNlKCkpO1xuICAgICAgaWYgKGxldmVsTWFwID49IDApIHtcbiAgICAgICAgbGV2ZWwgPSBsZXZlbE1hcDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxldmVsID0gcGFyc2VJbnQobGV2ZWwsIDEwKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbGV2ZWw7XG4gIH0sXG5cbiAgLy8gQ2FuIGJlIG92ZXJyaWRkZW4gaW4gdGhlIGhvc3QgZW52aXJvbm1lbnRcbiAgbG9nOiBmdW5jdGlvbihsZXZlbCwgLi4ubWVzc2FnZSkge1xuICAgIGxldmVsID0gbG9nZ2VyLmxvb2t1cExldmVsKGxldmVsKTtcblxuICAgIGlmIChcbiAgICAgIHR5cGVvZiBjb25zb2xlICE9PSAndW5kZWZpbmVkJyAmJlxuICAgICAgbG9nZ2VyLmxvb2t1cExldmVsKGxvZ2dlci5sZXZlbCkgPD0gbGV2ZWxcbiAgICApIHtcbiAgICAgIGxldCBtZXRob2QgPSBsb2dnZXIubWV0aG9kTWFwW2xldmVsXTtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICBpZiAoIWNvbnNvbGVbbWV0aG9kXSkge1xuICAgICAgICBtZXRob2QgPSAnbG9nJztcbiAgICAgIH1cbiAgICAgIGNvbnNvbGVbbWV0aG9kXSguLi5tZXNzYWdlKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1jb25zb2xlXG4gICAgfVxuICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBsb2dnZXI7XG4iXX0=\n","'use strict';\n\nexports.__esModule = true;\nexports.createProtoAccessControl = createProtoAccessControl;\nexports.resultIsAllowed = resultIsAllowed;\nexports.resetLoggedProperties = resetLoggedProperties;\n// istanbul ignore next\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } }\n\nvar _createNewLookupObject = require('./create-new-lookup-object');\n\nvar _logger = require('../logger');\n\nvar logger = _interopRequireWildcard(_logger);\n\nvar loggedProperties = Object.create(null);\n\nfunction createProtoAccessControl(runtimeOptions) {\n  var defaultMethodWhiteList = Object.create(null);\n  defaultMethodWhiteList['constructor'] = false;\n  defaultMethodWhiteList['__defineGetter__'] = false;\n  defaultMethodWhiteList['__defineSetter__'] = false;\n  defaultMethodWhiteList['__lookupGetter__'] = false;\n\n  var defaultPropertyWhiteList = Object.create(null);\n  // eslint-disable-next-line no-proto\n  defaultPropertyWhiteList['__proto__'] = false;\n\n  return {\n    properties: {\n      whitelist: _createNewLookupObject.createNewLookupObject(defaultPropertyWhiteList, runtimeOptions.allowedProtoProperties),\n      defaultValue: runtimeOptions.allowProtoPropertiesByDefault\n    },\n    methods: {\n      whitelist: _createNewLookupObject.createNewLookupObject(defaultMethodWhiteList, runtimeOptions.allowedProtoMethods),\n      defaultValue: runtimeOptions.allowProtoMethodsByDefault\n    }\n  };\n}\n\nfunction resultIsAllowed(result, protoAccessControl, propertyName) {\n  if (typeof result === 'function') {\n    return checkWhiteList(protoAccessControl.methods, propertyName);\n  } else {\n    return checkWhiteList(protoAccessControl.properties, propertyName);\n  }\n}\n\nfunction checkWhiteList(protoAccessControlForType, propertyName) {\n  if (protoAccessControlForType.whitelist[propertyName] !== undefined) {\n    return protoAccessControlForType.whitelist[propertyName] === true;\n  }\n  if (protoAccessControlForType.defaultValue !== undefined) {\n    return protoAccessControlForType.defaultValue;\n  }\n  logUnexpecedPropertyAccessOnce(propertyName);\n  return false;\n}\n\nfunction logUnexpecedPropertyAccessOnce(propertyName) {\n  if (loggedProperties[propertyName] !== true) {\n    loggedProperties[propertyName] = true;\n    logger.log('error', 'Handlebars: Access has been denied to resolve the property \"' + propertyName + '\" because it is not an \"own property\" of its parent.\\n' + 'You can add a runtime option to disable the check or this warning:\\n' + 'See https://handlebarsjs.com/api-reference/runtime-options.html#options-to-control-prototype-access for details');\n  }\n}\n\nfunction resetLoggedProperties() {\n  Object.keys(loggedProperties).forEach(function (propertyName) {\n    delete loggedProperties[propertyName];\n  });\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2ludGVybmFsL3Byb3RvLWFjY2Vzcy5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O3FDQUFzQyw0QkFBNEI7O3NCQUMxQyxXQUFXOztJQUF2QixNQUFNOztBQUVsQixJQUFNLGdCQUFnQixHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7O0FBRXRDLFNBQVMsd0JBQXdCLENBQUMsY0FBYyxFQUFFO0FBQ3ZELE1BQUksc0JBQXNCLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNqRCx3QkFBc0IsQ0FBQyxhQUFhLENBQUMsR0FBRyxLQUFLLENBQUM7QUFDOUMsd0JBQXNCLENBQUMsa0JBQWtCLENBQUMsR0FBRyxLQUFLLENBQUM7QUFDbkQsd0JBQXNCLENBQUMsa0JBQWtCLENBQUMsR0FBRyxLQUFLLENBQUM7QUFDbkQsd0JBQXNCLENBQUMsa0JBQWtCLENBQUMsR0FBRyxLQUFLLENBQUM7O0FBRW5ELE1BQUksd0JBQXdCLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQzs7QUFFbkQsMEJBQXdCLENBQUMsV0FBVyxDQUFDLEdBQUcsS0FBSyxDQUFDOztBQUU5QyxTQUFPO0FBQ0wsY0FBVSxFQUFFO0FBQ1YsZUFBUyxFQUFFLDZDQUNULHdCQUF3QixFQUN4QixjQUFjLENBQUMsc0JBQXNCLENBQ3RDO0FBQ0Qsa0JBQVksRUFBRSxjQUFjLENBQUMsNkJBQTZCO0tBQzNEO0FBQ0QsV0FBTyxFQUFFO0FBQ1AsZUFBUyxFQUFFLDZDQUNULHNCQUFzQixFQUN0QixjQUFjLENBQUMsbUJBQW1CLENBQ25DO0FBQ0Qsa0JBQVksRUFBRSxjQUFjLENBQUMsMEJBQTBCO0tBQ3hEO0dBQ0YsQ0FBQztDQUNIOztBQUVNLFNBQVMsZUFBZSxDQUFDLE1BQU0sRUFBRSxrQkFBa0IsRUFBRSxZQUFZLEVBQUU7QUFDeEUsTUFBSSxPQUFPLE1BQU0sS0FBSyxVQUFVLEVBQUU7QUFDaEMsV0FBTyxjQUFjLENBQUMsa0JBQWtCLENBQUMsT0FBTyxFQUFFLFlBQVksQ0FBQyxDQUFDO0dBQ2pFLE1BQU07QUFDTCxXQUFPLGNBQWMsQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLEVBQUUsWUFBWSxDQUFDLENBQUM7R0FDcEU7Q0FDRjs7QUFFRCxTQUFTLGNBQWMsQ0FBQyx5QkFBeUIsRUFBRSxZQUFZLEVBQUU7QUFDL0QsTUFBSSx5QkFBeUIsQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLEtBQUssU0FBUyxFQUFFO0FBQ25FLFdBQU8seUJBQXlCLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxLQUFLLElBQUksQ0FBQztHQUNuRTtBQUNELE1BQUkseUJBQXlCLENBQUMsWUFBWSxLQUFLLFNBQVMsRUFBRTtBQUN4RCxXQUFPLHlCQUF5QixDQUFDLFlBQVksQ0FBQztHQUMvQztBQUNELGdDQUE4QixDQUFDLFlBQVksQ0FBQyxDQUFDO0FBQzdDLFNBQU8sS0FBSyxDQUFDO0NBQ2Q7O0FBRUQsU0FBUyw4QkFBOEIsQ0FBQyxZQUFZLEVBQUU7QUFDcEQsTUFBSSxnQkFBZ0IsQ0FBQyxZQUFZLENBQUMsS0FBSyxJQUFJLEVBQUU7QUFDM0Msb0JBQWdCLENBQUMsWUFBWSxDQUFDLEdBQUcsSUFBSSxDQUFDO0FBQ3RDLFVBQU0sQ0FBQyxHQUFHLENBQ1IsT0FBTyxFQUNQLGlFQUErRCxZQUFZLG9JQUNILG9IQUMyQyxDQUNwSCxDQUFDO0dBQ0g7Q0FDRjs7QUFFTSxTQUFTLHFCQUFxQixHQUFHO0FBQ3RDLFFBQU0sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBQSxZQUFZLEVBQUk7QUFDcEQsV0FBTyxnQkFBZ0IsQ0FBQyxZQUFZLENBQUMsQ0FBQztHQUN2QyxDQUFDLENBQUM7Q0FDSiIsImZpbGUiOiJwcm90by1hY2Nlc3MuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGVOZXdMb29rdXBPYmplY3QgfSBmcm9tICcuL2NyZWF0ZS1uZXctbG9va3VwLW9iamVjdCc7XG5pbXBvcnQgKiBhcyBsb2dnZXIgZnJvbSAnLi4vbG9nZ2VyJztcblxuY29uc3QgbG9nZ2VkUHJvcGVydGllcyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVQcm90b0FjY2Vzc0NvbnRyb2wocnVudGltZU9wdGlvbnMpIHtcbiAgbGV0IGRlZmF1bHRNZXRob2RXaGl0ZUxpc3QgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICBkZWZhdWx0TWV0aG9kV2hpdGVMaXN0Wydjb25zdHJ1Y3RvciddID0gZmFsc2U7XG4gIGRlZmF1bHRNZXRob2RXaGl0ZUxpc3RbJ19fZGVmaW5lR2V0dGVyX18nXSA9IGZhbHNlO1xuICBkZWZhdWx0TWV0aG9kV2hpdGVMaXN0WydfX2RlZmluZVNldHRlcl9fJ10gPSBmYWxzZTtcbiAgZGVmYXVsdE1ldGhvZFdoaXRlTGlzdFsnX19sb29rdXBHZXR0ZXJfXyddID0gZmFsc2U7XG5cbiAgbGV0IGRlZmF1bHRQcm9wZXJ0eVdoaXRlTGlzdCA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wcm90b1xuICBkZWZhdWx0UHJvcGVydHlXaGl0ZUxpc3RbJ19fcHJvdG9fXyddID0gZmFsc2U7XG5cbiAgcmV0dXJuIHtcbiAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICB3aGl0ZWxpc3Q6IGNyZWF0ZU5ld0xvb2t1cE9iamVjdChcbiAgICAgICAgZGVmYXVsdFByb3BlcnR5V2hpdGVMaXN0LFxuICAgICAgICBydW50aW1lT3B0aW9ucy5hbGxvd2VkUHJvdG9Qcm9wZXJ0aWVzXG4gICAgICApLFxuICAgICAgZGVmYXVsdFZhbHVlOiBydW50aW1lT3B0aW9ucy5hbGxvd1Byb3RvUHJvcGVydGllc0J5RGVmYXVsdFxuICAgIH0sXG4gICAgbWV0aG9kczoge1xuICAgICAgd2hpdGVsaXN0OiBjcmVhdGVOZXdMb29rdXBPYmplY3QoXG4gICAgICAgIGRlZmF1bHRNZXRob2RXaGl0ZUxpc3QsXG4gICAgICAgIHJ1bnRpbWVPcHRpb25zLmFsbG93ZWRQcm90b01ldGhvZHNcbiAgICAgICksXG4gICAgICBkZWZhdWx0VmFsdWU6IHJ1bnRpbWVPcHRpb25zLmFsbG93UHJvdG9NZXRob2RzQnlEZWZhdWx0XG4gICAgfVxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVzdWx0SXNBbGxvd2VkKHJlc3VsdCwgcHJvdG9BY2Nlc3NDb250cm9sLCBwcm9wZXJ0eU5hbWUpIHtcbiAgaWYgKHR5cGVvZiByZXN1bHQgPT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gY2hlY2tXaGl0ZUxpc3QocHJvdG9BY2Nlc3NDb250cm9sLm1ldGhvZHMsIHByb3BlcnR5TmFtZSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGNoZWNrV2hpdGVMaXN0KHByb3RvQWNjZXNzQ29udHJvbC5wcm9wZXJ0aWVzLCBwcm9wZXJ0eU5hbWUpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNoZWNrV2hpdGVMaXN0KHByb3RvQWNjZXNzQ29udHJvbEZvclR5cGUsIHByb3BlcnR5TmFtZSkge1xuICBpZiAocHJvdG9BY2Nlc3NDb250cm9sRm9yVHlwZS53aGl0ZWxpc3RbcHJvcGVydHlOYW1lXSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIHByb3RvQWNjZXNzQ29udHJvbEZvclR5cGUud2hpdGVsaXN0W3Byb3BlcnR5TmFtZV0gPT09IHRydWU7XG4gIH1cbiAgaWYgKHByb3RvQWNjZXNzQ29udHJvbEZvclR5cGUuZGVmYXVsdFZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gcHJvdG9BY2Nlc3NDb250cm9sRm9yVHlwZS5kZWZhdWx0VmFsdWU7XG4gIH1cbiAgbG9nVW5leHBlY2VkUHJvcGVydHlBY2Nlc3NPbmNlKHByb3BlcnR5TmFtZSk7XG4gIHJldHVybiBmYWxzZTtcbn1cblxuZnVuY3Rpb24gbG9nVW5leHBlY2VkUHJvcGVydHlBY2Nlc3NPbmNlKHByb3BlcnR5TmFtZSkge1xuICBpZiAobG9nZ2VkUHJvcGVydGllc1twcm9wZXJ0eU5hbWVdICE9PSB0cnVlKSB7XG4gICAgbG9nZ2VkUHJvcGVydGllc1twcm9wZXJ0eU5hbWVdID0gdHJ1ZTtcbiAgICBsb2dnZXIubG9nKFxuICAgICAgJ2Vycm9yJyxcbiAgICAgIGBIYW5kbGViYXJzOiBBY2Nlc3MgaGFzIGJlZW4gZGVuaWVkIHRvIHJlc29sdmUgdGhlIHByb3BlcnR5IFwiJHtwcm9wZXJ0eU5hbWV9XCIgYmVjYXVzZSBpdCBpcyBub3QgYW4gXCJvd24gcHJvcGVydHlcIiBvZiBpdHMgcGFyZW50LlxcbmAgK1xuICAgICAgICBgWW91IGNhbiBhZGQgYSBydW50aW1lIG9wdGlvbiB0byBkaXNhYmxlIHRoZSBjaGVjayBvciB0aGlzIHdhcm5pbmc6XFxuYCArXG4gICAgICAgIGBTZWUgaHR0cHM6Ly9oYW5kbGViYXJzanMuY29tL2FwaS1yZWZlcmVuY2UvcnVudGltZS1vcHRpb25zLmh0bWwjb3B0aW9ucy10by1jb250cm9sLXByb3RvdHlwZS1hY2Nlc3MgZm9yIGRldGFpbHNgXG4gICAgKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVzZXRMb2dnZWRQcm9wZXJ0aWVzKCkge1xuICBPYmplY3Qua2V5cyhsb2dnZWRQcm9wZXJ0aWVzKS5mb3JFYWNoKHByb3BlcnR5TmFtZSA9PiB7XG4gICAgZGVsZXRlIGxvZ2dlZFByb3BlcnRpZXNbcHJvcGVydHlOYW1lXTtcbiAgfSk7XG59XG4iXX0=\n","/**\n * @fileoverview Wrapper module for easy calc date object\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\nvar TZDate = require('./timezone').Date;\n\n/**\n * @constructor\n * @param {TZDate} date to wrapping DW class\n */\nfunction DW(date) {\n    if (!(this instanceof DW)) {\n        return new DW(date);\n    }\n\n    if (!(date instanceof TZDate)) {\n        date = new TZDate(date);\n    }\n\n    /**\n     * @type {TZDate}\n     */\n    this.d = date;\n}\n\n/**\n * Return d property when supplied object is DW. else return itself\n * @param {*} obj - object\n * @returns {TZDate} date\n */\nDW.prototype.safe = function(obj) {\n    if (obj.constructor === DW) {\n        return obj.d;\n    }\n\n    return obj;\n};\n\n/**\n * Clone DW object\n * @returns {DW} cloned dwrap object\n */\nDW.prototype.clone = function() {\n    return new DW(new TZDate(this.d));\n};\n\n/**\n * Add days\n * @param {number} day - day to add\n * @returns {DW} wrapper object\n */\nDW.prototype.addDate = function(day) {\n    this.d.setDate(this.d.getDate() + day);\n\n    return this;\n};\n\n/**\n * Add month.\n * @param {number} m - month to add\n * @returns {DW} wrapper object\n */\nDW.prototype.addMonth = function(m) {\n    var currentMonth = this.d.getMonth();\n    var currentDay = this.d.getDate();\n    var leapYear = this._isLeapYear();\n    var targetMonth = currentMonth + m;\n    var clone = this.clone();\n    var targetDaysOfMonth = currentDay;\n\n    if (m) {\n        if (targetMonth === 1) {\n            targetDaysOfMonth = leapYear ? 29 : 28;\n        } else {\n            if (m > 0) {\n                clone.d.setMonth(targetMonth + 1, 0);\n            } else {\n                clone.d.setMonth(currentMonth, 0);\n            }\n            targetDaysOfMonth = clone.d.getDate();\n        }\n    }\n\n    this.d.setMonth(targetMonth, Math.min(currentDay, targetDaysOfMonth));\n\n    return this;\n};\n\n/**\n * Is leap year or not\n * @returns {boolean}\n */\nDW.prototype._isLeapYear = function() {\n    var year = this.d.getFullYear();\n\n    return ((year % 4 === 0) && (year % 100 !== 0)) || !(year % 400);\n};\n\n/**\n * Set hour, minutes, seconds, milliseconds\n * @param {number} h - hours\n * @param {number} m - minutes\n * @param {number} s - seconds\n * @param {number} ms - milliseconds\n * @returns {DW} wrapper object\n */\nDW.prototype.setHours = function(h, m, s, ms) {\n    this.d.setHours(h, m, s, ms);\n\n    return this;\n};\n\n/**\n * Whether date is between supplied dates?\n * @param {TZDate|DW} d1 - from date\n * @param {TZDate|DW} d2 - to date\n * @returns {boolean} is between?\n */\nDW.prototype.isBetween = function(d1, d2) {\n    var safe = this.safe;\n\n    return safe(d1) <= this.d && this.d <= safe(d2);\n};\n\nmodule.exports = DW;\n","/**\n * @fileoverview Drag handler for calendar.\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\nvar util = require('tui-code-snippet');\nvar domutil = require('../common/domutil');\nvar domevent = require('../common/domevent');\nvar config = require('../config');\n\n/**\n * @constructor\n * @mixes CustomEvents\n * @param {object} options - options for drag handler\n * @param {number} [options.distance=10] - distance in pixels after mouse must move before dragging should start\n * @param {function} [options.exclude] - filter function for don't fire drag events that specific conditions.\n * @param {HTMLElement} container element to watching drag interaction.\n */\nfunction Drag(options, container) {\n    domevent.on(container, 'mousedown', this._onMouseDown, this);\n\n    this.options = util.extend({\n        distance: 10,\n        exclude: null\n    }, options);\n\n    /**\n     * @type {HTMLElement}\n     */\n    this.container = container;\n\n    /**\n     * Flag for represent current dragging session has been cancelled for exclude option.\n     * @type {boolean}\n     */\n    this._cancelled = false;\n\n    /**\n     * @type {boolean}\n     */\n    this._isMoved = false;\n\n    /**\n     * dragging distance in pixel between mousedown and firing dragStart events\n     * @type {number}\n     */\n    this._distance = 0;\n\n    /**\n     * @type {boolean}\n     */\n    this._dragStartFired = false;\n\n    /**\n     * @type {object}\n     */\n    this._dragStartEventData = null;\n}\n\n/**\n * Destroy method.\n */\nDrag.prototype.destroy = function() {\n    domevent.off(this.container, 'mousedown', this._onMouseDown, this);\n    this._isMoved = null;\n    this.container = null;\n};\n\n/**\n * Clear cache data for single dragging session.\n */\nDrag.prototype._clearData = function() {\n    this._cancelled = false;\n    this._distance = 0;\n    this._isMoved = false;\n    this._dragStartFired = false;\n    this._dragStartEventData = null;\n};\n\n/**\n * Toggle events for mouse dragging.\n * @param {boolean} toBind - bind events related with dragging when supplied \"true\"\n */\nDrag.prototype._toggleDragEvent = function(toBind) {\n    var container = this.container,\n        domMethod,\n        method;\n\n    if (toBind) {\n        domMethod = 'on';\n        method = 'disable';\n    } else {\n        domMethod = 'off';\n        method = 'enable';\n    }\n\n    domutil[method + 'TextSelection'](container, preventDefaultWhenNotPopup);\n    domutil[method + 'ImageDrag'](container, preventDefaultWhenNotPopup);\n    domevent[domMethod](global.document, {\n        mousemove: this._onMouseMove,\n        mouseup: this._onMouseUp\n    }, this);\n};\n\n/**\n * Normalize mouse event object.\n * @param {MouseEvent} mouseEvent - mouse event object.\n * @returns {object} normalized mouse event data.\n */\nDrag.prototype._getEventData = function(mouseEvent) {\n    return {\n        target: domevent.getEventTarget(mouseEvent),\n        originEvent: mouseEvent\n    };\n};\n\n/**\n * MouseDown DOM event handler.\n * @param {MouseEvent} mouseDownEvent MouseDown event object.\n */\nDrag.prototype._onMouseDown = function(mouseDownEvent) {\n    var opt = this.options,\n        target = domevent.getEventTarget(mouseDownEvent);\n\n    // only primary button can start drag.\n    if (domevent.getMouseButton(mouseDownEvent) !== 0) {\n        return;\n    }\n\n    if (opt.exclude && opt.exclude(target)) {\n        this._cancelled = true;\n\n        return;\n    }\n\n    this._clearData();\n    this._dragStartEventData = this._getEventData(mouseDownEvent);\n\n    this._toggleDragEvent(true);\n\n    /**\n     * mousedown event for firefox bug. cancelable.\n     * @event Drag#mouseDown\n     * @type {object}\n     * @property {HTMLElement} target - target element in this event.\n     * @property {MouseEvent} originEvent - original mouse event object.\n     */\n    this.fire('mousedown', this._dragStartEventData);\n};\n\n/**\n * MouseMove DOM event handler.\n * @emits Drag#drag\n * @emits Drag#dragStart\n * @param {MouseEvent} mouseMoveEvent MouseMove event object.\n */\nDrag.prototype._onMouseMove = function(mouseMoveEvent) {\n    var distance;\n\n    if (this._cancelled) {\n        this._clearData();\n\n        return;\n    }\n\n    distance = this.options.distance;\n    // prevent automatic scrolling.\n    preventDefaultWhenNotPopup(mouseMoveEvent);\n\n    if (this._distance < distance) {\n        this._distance += 1;\n\n        return;\n    }\n    this._isMoved = true;\n\n    if (!this._dragStartFired) {\n        this._dragStartFired = true;\n\n        /**\n         * Drag start events. cancelable.\n         * @event Drag#dragStart\n         * @type {object}\n         * @property {HTMLElement} target - target element in this event.\n         * @property {MouseEvent} originEvent - original mouse event object.\n         */\n        if (!this.invoke('dragStart', this._dragStartEventData)) {\n            this._toggleDragEvent(false);\n            this._clearData();\n\n            return;\n        }\n    }\n\n    /**\n     * CalEvents while dragging.\n     * @event Drag#drag\n     * @type {object}\n     * @property {HTMLElement} target - target element in this event.\n     * @property {MouseEvent} originEvent - original mouse event object.\n     */\n    this.fire('drag', this._getEventData(mouseMoveEvent));\n};\n\n/**\n * MouseUp DOM event handler.\n * @param {MouseEvent} mouseUpEvent MouseUp event object.\n * @emits Drag#dragEnd\n * @emits Drag#click\n */\nDrag.prototype._onMouseUp = function(mouseUpEvent) {\n    if (this._cancelled) {\n        return;\n    }\n\n    this._toggleDragEvent(false);\n\n    // emit \"click\" event when not emitted drag event between mousedown and mouseup.\n    if (this._isMoved) {\n        this._isMoved = false;\n        /**\n         * Drag end events.\n         * @event Drag#dragEnd\n         * @type {MouseEvent}\n         * @property {HTMLElement} target - target element in this event.\n         * @property {MouseEvent} originEvent - original mouse event object.\n         */\n        this.fire('dragEnd', this._getEventData(mouseUpEvent));\n    } else {\n        /**\n         * Click events.\n         * @event Drag#click\n         * @type {MouseEvent}\n         * @property {HTMLElement} target - target element in this event.\n         * @property {MouseEvent} originEvent - original mouse event object.\n         */\n        this.fire('click', this._getEventData(mouseUpEvent));\n    }\n\n    this._clearData();\n};\n\n/**\n * If the target is not a popup, it prevents the default.\n * @method\n * @param {MouseEvent} event - Mouse event object\n */\nfunction preventDefaultWhenNotPopup(event) {\n    var popup = domutil.closest(event.target, config.classname('.popup'));\n\n    if (!popup) {\n        domevent.preventDefault(event);\n    }\n}\n\nutil.CustomEvents.mixin(Drag);\n\nmodule.exports = Drag;\n","/**\n * @fileoverview Model for views\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\nvar util = require('tui-code-snippet');\nvar datetime = require('../../common/datetime');\n\nvar SCHEDULE_MIN_DURATION = datetime.MILLISECONDS_SCHEDULE_MIN_DURATION;\n\n/**\n * Schedule ViewModel\n * @constructor\n * @param {Schedule} schedule Schedule instance.\n */\nfunction ScheduleViewModel(schedule) {\n    /**\n     * The model of schedule.\n     * @type {Schedule}\n     */\n    this.model = schedule;\n\n    /**\n     * @type {number}\n     */\n    this.top = 0;\n\n    /**\n     * @type {number}\n     */\n    this.left = 0;\n\n    /**\n     * @type {number}\n     */\n    this.width = 0;\n\n    /**\n     * @type {number}\n     */\n    this.height = 0;\n\n    /**\n     * Represent schedule has collide with other schedules when rendering.\n     * @type {boolean}\n     */\n    this.hasCollide = false;\n\n    /**\n     * Extra space at rigth side of this schedule.\n     * @type {number}\n     */\n    this.extraSpace = 0;\n\n    /**\n     * represent this schedule block is not visible after rendered.\n     *\n     * in month view, some viewmodel in date need to hide when already rendered before dates.\n     *\n     * set true then it just shows empty space.\n     * @type {boolean}\n     */\n    this.hidden = false;\n\n    /**\n     * whether the schedule includes multiple dates\n     */\n    this.hasMultiDates = false;\n\n    /**\n     * represent render start date used at rendering.\n     *\n     * if set null then use model's 'start' property.\n     * @type {TZDate}\n     */\n    this.renderStarts = null;\n\n    /**\n     * whether the actual start-date is before the render-start-date\n     * @type {boolean}\n     */\n    this.exceedLeft = false;\n\n    /**\n     * represent render end date used at rendering.\n     *\n     * if set null then use model's 'end' property.\n     * @type {TZDate}\n     */\n    this.renderEnds = null;\n\n    /**\n     * whether the actual end-date is after the render-end-date\n     * @type {boolean}\n     */\n    this.exceedRight = false;\n}\n\n/**********\n * static props\n **********/\n\n/**\n * ScheduleViewModel factory method.\n * @param {Schedule} schedule Schedule instance.\n * @returns {ScheduleViewModel} ScheduleViewModel instance.\n */\nScheduleViewModel.create = function(schedule) {\n    return new ScheduleViewModel(schedule);\n};\n\n/**********\n * prototype props\n **********/\n\n/**\n * return renderStarts property to render properly when specific schedule that exceed rendering date range.\n *\n * if renderStarts is not set. return model's start property.\n * @override\n * @returns {Date} render start date.\n */\nScheduleViewModel.prototype.getStarts = function() {\n    if (this.renderStarts) {\n        return this.renderStarts;\n    }\n\n    return this.model.start;\n};\n\n/**\n * return renderStarts property to render properly when specific schedule that exceed rendering date range.\n *\n * if renderEnds is not set. return model's end property.\n * @override\n * @returns {Date} render end date.\n */\nScheduleViewModel.prototype.getEnds = function() {\n    if (this.renderEnds) {\n        return this.renderEnds;\n    }\n\n    return this.model.end;\n};\n\n/**\n * @returns {number} unique number for model.\n */\nScheduleViewModel.prototype.cid = function() {\n    return util.stamp(this.model);\n};\n\n/**\n * Shadowing valueOf method for schedule sorting.\n * @returns {Schedule} The model of schedule.\n */\nScheduleViewModel.prototype.valueOf = function() {\n    return this.model;\n};\n\n/**\n * Link duration method\n * @returns {number} Schedule#duration result.\n */\nScheduleViewModel.prototype.duration = function() {\n    return this.model.duration();\n};\n\n/**\n * Link collidesWith method\n * @param {Schedule|ScheduleViewModel} viewModel - Model or viewmodel instance of Schedule.\n * @returns {boolean} Schedule#collidesWith result.\n */\nScheduleViewModel.prototype.collidesWith = function(viewModel) {\n    var ownStarts = this.getStarts(),\n        ownEnds = this.getEnds(),\n        start = viewModel.getStarts(),\n        end = viewModel.getEnds();\n    var ownGoingDuration = datetime.millisecondsFrom('minutes', this.valueOf().goingDuration),\n        ownComingDuration = datetime.millisecondsFrom('minutes', this.valueOf().comingDuration),\n        goingDuration = datetime.millisecondsFrom('minutes', viewModel.valueOf().goingDuration),\n        comingDuration = datetime.millisecondsFrom('minutes', viewModel.valueOf().comingDuration);\n\n    if (Math.abs(ownEnds - ownStarts) < SCHEDULE_MIN_DURATION) {\n        ownEnds += SCHEDULE_MIN_DURATION;\n    }\n\n    if (Math.abs(end - start) < SCHEDULE_MIN_DURATION) {\n        end += SCHEDULE_MIN_DURATION;\n    }\n\n    ownStarts -= ownGoingDuration;\n    ownEnds += ownComingDuration;\n    start -= goingDuration;\n    end += comingDuration;\n\n    if ((start > ownStarts && start < ownEnds) ||\n        (end > ownStarts && end < ownEnds) ||\n        (start <= ownStarts && end >= ownEnds)) {\n        return true;\n    }\n\n    return false;\n};\n\nmodule.exports = ScheduleViewModel;\n","/**\n * @fileoverview Layout module that supplied split height, resize height features.\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\nvar util = require('tui-code-snippet');\nvar config = require('../config'),\n    common = require('./common'),\n    domutil = require('./domutil'),\n    domevent = require('./domevent'),\n    View = require('../view/view'),\n    VPanel = require('./vpanel'),\n    Drag = require('../handler/drag');\n\nvar mAbs = Math.abs;\n\n/**\n * @typedef PanelOptions\n * @type {object}\n * @property {number} [minHeight=0] - minimum height of panel\n * @property {number} [height=0] - current panel height\n * @property {boolean} [splitter=false] - is this panel uses splitter?\n * @property {boolean} [autoHeight=false] - is this panel uses remain height of container?\n * @property {string} [className=''] - className string for add created element\n */\n\n/**\n * @constructor\n * @extends {View}\n * @param {object} options - options for VLayout module\n *  @param {PanelOptions[]} [options.panels] - panels to add layout when initialize\n *  @param {number[]} [options.panelHeights] - panel height list\n * @param {HTMLElement} container - container element\n * @param {Theme} theme - theme instance\n */\nfunction VLayout(options, container, theme) {\n    var opt, tempHeights;\n\n    if (!(this instanceof VLayout)) {\n        return new VLayout(options, container);\n    }\n\n    View.call(this, container);\n\n    domutil.addClass(container, config.classname('vlayout-container'));\n\n    /**\n     * @type {object}\n     */\n    opt = this.options = util.extend({\n        panels: [],\n        panelHeights: []\n    }, options);\n\n    /**\n     * @type {VPanel[]}\n     */\n    this.panels = [];\n\n    /**\n     * @type {Drag}\n     */\n    this._drag = new Drag({\n        distance: 10,\n        exclude: function(target) {\n            return !domutil.hasClass(target, config.classname('splitter'));\n        }\n    }, container);\n\n    this._drag.on({\n        dragStart: this._onDragStart,\n        drag: this._onDrag,\n        dragEnd: this._onDragEnd\n    }, this);\n\n    /**\n     * @type {object}\n     */\n    this._dragData = null;\n\n    /**\n     * @type {Theme}\n     */\n    this.theme = theme;\n\n    if (opt.panels.length) {\n        if (opt.panelHeights.length) {\n            tempHeights = opt.panelHeights.slice();\n            util.forEach(opt.panels, function(panelOpt) {\n                if (!panelOpt.isSplitter && !panelOpt.autoHeight) {\n                    panelOpt.height = tempHeights.shift();\n                }\n            });\n        }\n\n        this.addPanels(opt.panels, this.container);\n    }\n\n    this.refresh();\n}\n\nutil.inherit(VLayout, View);\n\n/**\n * Get current panels height in layout\n * @returns {number[]} height of panels with `autoHeight` false\n */\nVLayout.prototype.getLayoutData = function() {\n    var heightList = [];\n\n    util.forEach(this.panels, function(panel) {\n        if (panel.isSplitter() || panel.options.autoHeight) {\n            return;\n        }\n\n        heightList.push(panel.getHeight());\n    });\n\n    return heightList;\n};\n\n/**\n * Set panels height in layout\n * @param {number[]} heightList of panels with `autoHeight` false\n */\nVLayout.prototype.setLayoutData = function(heightList) {\n    if (!heightList.length) {\n        return;\n    }\n\n    util.forEach(this.panels, function(panel) {\n        if (panel.isSplitter() || panel.options.autoHeight) {\n            return;\n        }\n\n        panel.setHeight(null, heightList.shift());\n    });\n\n    this.refresh();\n};\n\n/**\n * Get next panel instance by specific panel\n * @param {VPanel} panel - panel instance\n * @returns {VPanel} next panel\n */\nVLayout.prototype.nextPanel = function(panel) {\n    return this.panels[panel.index + 1];\n};\n\n/**\n * Get previous panel instance by specific panel\n * @param {VPanel} panel - panel instance\n * @returns {VPanel} previous panel\n */\nVLayout.prototype.prevPanel = function(panel) {\n    return this.panels[panel.index - 1];\n};\n\n/**\n * Initialize resizing guide element\n * @param {HTMLElement} element - element to use guide element after cloned\n * @param {number} top - top pixel value for guide element\n * @returns {HTMLElement} cloned element == guide element\n */\nVLayout.prototype._initializeGuideElement = function(element, top) {\n    var cloned = element.cloneNode(true);\n\n    domutil.addClass(cloned, config.classname('splitter-guide'));\n    this._refreshGuideElement(cloned, top);\n    this.container.appendChild(cloned);\n\n    return cloned;\n};\n\n/**\n * Refresh guide element position\n * @param {HTMLElement} element - guide element\n * @param {number} top - top pixel value for guide element\n */\nVLayout.prototype._refreshGuideElement = function(element, top) {\n    element.style.top = top + 'px';\n};\n\n/**\n * Clear guide element position\n * @param {HTMLElement} element - guide element\n */\nVLayout.prototype._clearGuideElement = function(element) {\n    domutil.remove(element);\n};\n\n/**\n * Resize overall panels size\n * @param {VPanel} splPanel - splitter panel instance\n * @param {number} startY - dragstart Y position\n * @param {number} mouseY - dragend Y position\n */\nVLayout.prototype._resize = function(splPanel, startY, mouseY) {\n    var diffY = startY - mouseY,\n        resizedHeight = mAbs(diffY),\n        resizeMap = [],\n        toDown = mouseY > startY,\n        backwardMethod = toDown ? 'prevPanel' : 'nextPanel',\n        forwardMethod = toDown ? 'nextPanel' : 'prevPanel',\n        cursor, resizeInfo;\n\n    cursor = this[backwardMethod](splPanel);\n    resizeInfo = cursor.getResizeInfoByGrowth(resizedHeight);\n    resizeMap.push([cursor, resizeInfo[0]]);\n\n    for (cursor = this[forwardMethod](cursor);\n        util.isExisty(cursor);\n        cursor = this[forwardMethod](cursor)) {\n        if (cursor.isSplitter()) {\n            continue;\n        }\n\n        resizeInfo = cursor.getResizeInfoByGrowth(-resizedHeight);\n        resizeMap.push([cursor, resizeInfo[0]]);\n        resizedHeight -= resizeInfo[1];\n    }\n\n    util.forEach(resizeMap, function(pair) {\n        pair[0].setHeight(null, pair[1], true);\n        pair[0].fire('resize');\n    });\n};\n\n/**\n * Get summation of splitter and panel's minimum height upper and below of supplied splitter\n * @param {VPanel} splPanel - splitter panel instance\n * @returns {number[]} upper and below splitter's height and panel minimum height summation.\n */\nVLayout.prototype._getMouseYAdditionalLimit = function(splPanel) {\n    var upper = 0,\n        below = 0,\n        cursor,\n        func = function(panel) {\n            if (panel.isSplitter()) {\n                return panel.getHeight();\n            }\n\n            return panel.options.minHeight;\n        };\n\n    for (cursor = this.prevPanel(splPanel);\n        util.isExisty(cursor);\n        cursor = this.prevPanel(cursor)) {\n        upper += func(cursor);\n    }\n\n    for (cursor = this.nextPanel(splPanel);\n        util.isExisty(cursor);\n        cursor = this.nextPanel(cursor)) {\n        below += func(cursor);\n    }\n\n    return [upper, below];\n};\n\n/**********\n * Drag Handlers\n **********/\n\n/**\n * Drag start schedule handler\n * @param {object} e - drag start schedule data\n */\nVLayout.prototype._onDragStart = function(e) {\n    var oEvent = e.originEvent,\n        target = e.target,\n        splIndex = domutil.getData(target, 'panelIndex'),\n        splPanel = this.panels[splIndex],\n        splHeight = splPanel.getHeight(),\n        splOffsetY = domevent.getMousePosition(oEvent, target)[1],\n        mouseY = domevent.getMousePosition(oEvent, this.container)[1],\n        guideElement = this._initializeGuideElement(target, mouseY);\n\n    splPanel.addClass(config.classname('splitter-focused'));\n\n    this._dragData = {\n        splPanel: splPanel,\n        splOffsetY: splOffsetY,\n        guideElement: guideElement,\n        startY: mouseY - splOffsetY,\n        minY: 0,\n        maxY: this.getViewBound().height - splHeight\n    };\n\n    if (!util.browser.msie) {\n        domutil.addClass(document.body, config.classname('resizing'));\n    }\n};\n\n/**\n * Drag schedule handler\n * @param {object} e - drag schedule data\n */\nVLayout.prototype._onDrag = function(e) {\n    var dragData = this._dragData,\n        mouseY = domevent.getMousePosition(e.originEvent, this.container)[1];\n\n    mouseY = common.limit(mouseY - dragData.splOffsetY, [dragData.minY], [dragData.maxY]);\n\n    this._refreshGuideElement(dragData.guideElement, mouseY);\n};\n\n/**\n * Drag end schedule handler\n * @fires VLayout#resize\n * @param {object} e - dragend schedule data\n */\nVLayout.prototype._onDragEnd = function(e) {\n    var dragData = this._dragData,\n        asideMinMax = this._getMouseYAdditionalLimit(dragData.splPanel),\n        mouseY = domevent.getMousePosition(e.originEvent, this.container)[1];\n\n    // mouseY value can't exceed summation of splitter height and panel's minimum height based on target splitter.\n    mouseY = common.limit(\n        mouseY - dragData.splOffsetY,\n        [dragData.minY + asideMinMax[0]],\n        [dragData.maxY - asideMinMax[1]]\n    );\n\n    this._resize(dragData.splPanel, dragData.startY, mouseY);\n\n    /**\n     * @event VLayout#resize\n     * @type {object}\n     * @property {number[]} layoutData - layout data after resized\n     */\n    this.fire('resize', {\n        layoutData: this.getLayoutData()\n    });\n\n    this._dragData = null;\n    this._clearGuideElement(dragData.guideElement);\n    dragData.splPanel.removeClass(config.classname('splitter-focused'));\n    domutil.removeClass(document.body, config.classname('resizing'));\n};\n\n/**********\n * Methods\n **********/\n\n/**\n * refresh each panels\n */\nVLayout.prototype.refresh = function() {\n    var panelToFillHeight = [];\n    var layoutHeight = this.getViewBound().height;\n    var usedHeight = 0;\n    var remainHeight;\n\n    if (!layoutHeight) {\n        return;\n    }\n\n    util.forEach(this.panels, function(panel) {\n        if (panel.options.autoHeight) {\n            panelToFillHeight.push(panel);\n        } else {\n            usedHeight += panel.getHeight();\n        }\n    });\n\n    remainHeight = (layoutHeight - usedHeight) / panelToFillHeight.length;\n\n    util.forEach(panelToFillHeight, function(panel) {\n        panel.setHeight(null, remainHeight);\n    });\n};\n\n/**\n * add panel\n * @param {PanelOptions} options - options for panel\n * @param {container} [container] - container element\n */\nVLayout.prototype.addPanel = function(options, container) {\n    var element = document.createElement('div'),\n        panels = this.panels,\n        index = panels.length;\n\n    options = util.extend({\n        index: index\n    }, options);\n\n    panels.push(new VPanel(options, element, this.theme));\n\n    container.appendChild(element);\n};\n\n/**\n * Add multiple panel\n * @param {PanelOptions[]} options - panel options list\n * @param {HTMLElement} container - container element\n */\nVLayout.prototype.addPanels = function(options, container) {\n    var self = this,\n        frag = document.createDocumentFragment();\n\n    util.forEach(options, function(option) {\n        self.addPanel(option, frag);\n    });\n\n    container.appendChild(frag);\n};\n\n/**\n * Get a panel by name\n * @param {string} name - panel's name\n * @returns {VPanel}\n */\nVLayout.prototype.getPanelByName = function(name) {\n    var found;\n    util.forEach(this.panels, function(panel) {\n        if (panel.name === name) {\n            found = panel;\n        }\n    });\n\n    return found;\n};\n\nmodule.exports = VLayout;\n","/**\n * @fileoverview Weekday view\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\nvar util = require('tui-code-snippet');\nvar config = require('../config'),\n    domutil = require('../common/domutil'),\n    datetime = require('../common/datetime'),\n    TZDate = require('../common/timezone').Date,\n    View = require('./view');\n\n/**\n * @constructor\n * @extends {View}\n * @param {object} options - view options.\n * @param {number} [options.containerButtonGutter=8] - free space at bottom to\n *  make create easy.\n * @param {number} [options.scheduleHeight=18] - height of each schedule block.\n * @param {number} [options.scheduleGutter=2] - gutter height of each schedule block.\n * @param {HTMLDIVElement} container - DOM element to use container for this\n *  view.\n */\nfunction Weekday(options, container) {\n    container = domutil.appendHTMLElement(\n        'div',\n        container,\n        config.classname('weekday')\n    );\n\n    /**\n     * @type {object}\n     */\n    this.options = util.extend({\n        containerBottomGutter: 8,\n        scheduleHeight: 18,\n        scheduleGutter: 2,\n        narrowWeekend: false,\n        startDayOfWeek: 0,\n        workweek: false\n    }, options);\n\n    /*\n     * cache parent's view model\n     * @type {object}\n     */\n    this._cacheParentViewModel = null;\n\n    View.call(this, container);\n}\n\nutil.inherit(Weekday, View);\n\n/**\n * Get render date range\n * @returns {Date[]} rendered date range\n */\nWeekday.prototype.getRenderDateRange = function() {\n    return this._cacheParentViewModel.range;\n};\n\n/**\n * Get render date grids information\n * @returns {Date[]} rendered date grids information\n */\nWeekday.prototype.getRenderDateGrids = function() {\n    return this._cacheParentViewModel.grids;\n};\n\n/**\n * Get default view model.\n * @param {object} viewModel parent's view model\n * @returns {object} viewModel to rendering.\n */\nWeekday.prototype.getBaseViewModel = function(viewModel) {\n    var opt = this.options;\n    var range = viewModel.range;\n    var gridWidth = (100 / range.length);\n    var grids = viewModel.grids;\n    var exceedDate = viewModel.exceedDate || {};\n    var theme = viewModel.theme;\n    var now = new TZDate().toLocalTime();\n\n    this._cacheParentViewModel = viewModel;\n\n    return {\n        width: gridWidth,\n        scheduleHeight: opt.scheduleHeight,\n        scheduleBlockHeight: (opt.scheduleHeight + opt.scheduleGutter),\n        scheduleBlockGutter: opt.scheduleGutter,\n        dates: util.map(range, function(date, index) {\n            var day = date.getDay();\n            var ymd = datetime.format(new TZDate(date), 'YYYYMMDD');\n            var isToday = datetime.isSameDate(now, date);\n\n            return {\n                date: datetime.format(date, 'YYYY-MM-DD'),\n                month: date.getMonth() + 1,\n                day: day,\n                isToday: isToday,\n                ymd: ymd,\n                hiddenSchedules: exceedDate[ymd] || 0,\n                width: grids[index] ? grids[index].width : 0,\n                left: grids[index] ? grids[index].left : 0,\n                color: this._getDayNameColor(theme, day, isToday),\n                backgroundColor: this._getDayBackgroundColor(theme, day)\n            };\n        }, this)\n    };\n};\n\n/* eslint max-nested-callbacks: 0 */\n/**\n * Make exceed date information\n * @param {number} maxCount - exceed schedule count\n * @param {Array} eventsInDateRange  - matrix of ScheduleViewModel\n * @param {Array.<TZDate>} range - date range of one week\n * @returns {object} exceedDate\n */\nWeekday.prototype.getExceedDate = function(maxCount, eventsInDateRange, range) {\n    var exceedDate = this._initExceedDate(range);\n\n    util.forEach(eventsInDateRange, function(matrix) {\n        util.forEach(matrix, function(column) {\n            util.forEach(column, function(viewModel) {\n                var period;\n                if (!viewModel || viewModel.top < maxCount) {\n                    return;\n                }\n\n                // check that this schedule block is not visible after rendered.\n                viewModel.hidden = true;\n\n                period = datetime.range(\n                    viewModel.getStarts(),\n                    viewModel.getEnds(),\n                    datetime.MILLISECONDS_PER_DAY\n                );\n\n                util.forEach(period, function(date) {\n                    var ymd = datetime.format(date, 'YYYYMMDD');\n                    exceedDate[ymd] += 1;\n                });\n            });\n        });\n    });\n\n    return exceedDate;\n};\n\n/**\n * Initiate exceed date information\n * @param {Array.<TZDate>} range - date range of one week\n * @returns {Object} - initiated exceed date\n */\nWeekday.prototype._initExceedDate = function(range) {\n    var exceedDate = {};\n\n    util.forEach(range, function(date) {\n        var ymd = datetime.format(date, 'YYYYMMDD');\n        exceedDate[ymd] = 0;\n    });\n\n    return exceedDate;\n};\n\n/**\n * Get a day name color\n * @param {Theme} theme - theme instance\n * @param {number} day - day number\n * @param {boolean} isToday - today flag\n * @param {boolean} isOtherMonth - not this month flag\n * @returns {string} style - color style\n */\nWeekday.prototype._getDayNameColor = function(theme, day, isToday, isOtherMonth) {\n    var color = '';\n\n    if (theme) {\n        if (day === 0) {\n            color = isOtherMonth ? theme.month.holidayExceptThisMonth.color : theme.common.holiday.color;\n        } else if (day === 6) {\n            color = isOtherMonth ? theme.month.dayExceptThisMonth.color : theme.common.saturday.color;\n        } else if (isToday) {\n            color = theme.common.today.color;\n        } else {\n            color = isOtherMonth ? theme.month.dayExceptThisMonth.color : theme.common.dayname.color;\n        }\n    }\n\n    return color;\n};\n\n/**\n * Get a day background color\n * @param {Theme} theme - theme instance\n * @param {number} day - day number\n * @returns {string} style - color style\n */\nWeekday.prototype._getDayBackgroundColor = function(theme, day) {\n    var color = '';\n\n    if (theme) {\n        if (day === 0 || day === 6) {\n            color = theme.month.weekend.backgroundColor;\n        } else {\n            color = 'inherit';\n        }\n    }\n\n    return color;\n};\n\nmodule.exports = Weekday;\n","/**\n * @fileoverview\n * Class for represent two dimensional x, y coordinates.\n *\n * It suppliy a group of functions for manipulate coordinates.\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n * @example\n * var p = point(10, 10);\n * var r1 = p.add(Point(5, 5));\n * console.log(p.toString())    // \"Point(10, 10)\"\n * console.log(r1.toString())    // \"Point(15, 15)\"\n *\n * var p2 = new Point(10, 10);\n * p2._add(point(5, 5));\n * console.log(p2.toString())   // \"Point(15, 15)\"\n */\n'use strict';\n\nvar util = require('tui-code-snippet');\n\n/**\n * Class for represent two dimentional x, y coordinates.\n * @constructor\n * @param {number} x The number of X coordinates.\n * @param {number} y The number of Y coordinates.\n * @param {boolean} [useRound=false] set true when each coordinates are rounded before initialize.\n * @example\n * var t = new Point(13, 5);\n */\nfunction Point(x, y, useRound) {\n    /**\n     * @type {number}\n     */\n    this.x = (useRound ? Math.round(x) : x);\n\n    /**\n     * @type {number}\n     */\n    this.y = (useRound ? Math.round(y) : y);\n}\n\n/**********\n * static props\n **********/\n\n/**\n * Calculate point ratio.\n * @param {Point} point The instance of point.\n * @param {number} factor From factor\n * @param {number} toFactor To factor\n * @returns {Point} Point instance calculated.\n */\nPoint.getRatio = function(point, factor, toFactor) {\n    if (factor === toFactor) {\n        return point.clone();\n    }\n\n    return point.multiplyBy(toFactor)._divideBy(factor);\n};\n\n/**\n * Syntatic sugar of new Point()\n * @param {(Point|number|number[])} x X coordinate value.\n * @param {(number|boolean)} [y] Y coordinate value or boolean value for coordinates round.\n * @param {boolean} [useRound] Set true then round initial coordinate values.\n * @returns {Point} The instance of point.\n * @example\n * var p1 = point(10, 15);\n * var p2 = point([10, 15]);\n */\nPoint.n = function(x, y, useRound) {\n    if (x instanceof Point) {\n        return x;\n    }\n\n    if (util.isArray(x)) {\n        return new Point(x[0], x[1], y);\n    }\n\n    return new Point(x, y, useRound);\n};\n\n/**********\n * prototype props\n **********/\n\n/**\n * Clone points\n * @returns {Point} The point instance cloned.\n */\nPoint.prototype.clone = function() {\n    return new Point(this.x, this.y);\n};\n\n/**\n * Add points.\n * @param {Point} point The point instance to add.\n * @returns {Point} Point calculated.\n */\nPoint.prototype.add = function(point) {\n    return this.clone()._add(Point.n(point));\n};\n\n/**\n * Add self points.\n * @param {Point} point The point instance to add.\n * @returns {Point} Point calculated.\n */\nPoint.prototype._add = function(point) {\n    this.x += point.x;\n    this.y += point.y;\n\n    return this;\n};\n\n/**\n * Subtract points.\n * @param {Point} point The point instance to subtract.\n * @returns {Point} Point calculated.\n */\nPoint.prototype.subtract = function(point) {\n    return this.clone()._subtract(Point.n(point));\n};\n\n/**\n * Subtract points. (manipulate self)\n * @param {Point} point The point instance to subtract.\n * @returns {Point} Point calculated.\n */\nPoint.prototype._subtract = function(point) {\n    this.x -= point.x;\n    this.y -= point.y;\n\n    return this;\n};\n\n/**\n * Divide points.\n * @param {number} num The number to divide.\n * @returns {Point} Point calculated.\n */\nPoint.prototype.divideBy = function(num) {\n    return this.clone()._divideBy(num);\n};\n\n/**\n * Divide points. (manipulate self)\n * @param {number} num The number to divide.\n * @returns {Point} Point calculated.\n */\nPoint.prototype._divideBy = function(num) {\n    this.x /= num;\n    this.y /= num;\n\n    return this;\n};\n\n/**\n * Multiply coordinates.\n * @param {number} num Thyen number to multiply\n * @returns {Point} Point calculated.\n */\nPoint.prototype.multiplyBy = function(num) {\n    return this.clone()._multiplyBy(num);\n};\n\n/**\n * Multiply self coordinates.\n * @param {number} num The number to multiply.\n * @returns {Point} Point calculated.\n */\nPoint.prototype._multiplyBy = function(num) {\n    this.x *= num;\n    this.y *= num;\n\n    return this;\n};\n\n/**\n * Round coordinates.\n * @returns {Point} Point calculated.\n */\nPoint.prototype.round = function() {\n    return this.clone()._round();\n};\n\n/**\n * Round self coordinates.\n * @returns {Point} Point calculated.\n */\nPoint.prototype._round = function() {\n    this.x = Math.round(this.x);\n    this.y = Math.round(this.y);\n\n    return this;\n};\n\n/**\n * Reverse values between positive and negative.\n * @returns {Point} Point calculated.\n */\nPoint.prototype.reverse = function() {\n    return this.clone()._reverse();\n};\n\n/**\n * Reverse self values between positive and negative.\n * @returns {Point} Point calculated.\n */\nPoint.prototype._reverse = function() {\n    this.x *= -1;\n    this.y *= -1;\n\n    return this;\n};\n\n/**\n * Floor coordinates.\n * @returns {Point} Point calculated.\n */\nPoint.prototype.floor = function() {\n    return this.clone()._floor();\n};\n\n/**\n * Floor self coordinates.\n * @returns {Point} Point calculated.\n */\nPoint.prototype._floor = function() {\n    this.x = Math.floor(this.x);\n    this.y = Math.floor(this.y);\n\n    return this;\n};\n\n/**\n * Ceil coordinates.\n * @returns {Point} Point calculated.\n */\nPoint.prototype.ceil = function() {\n    return this.clone()._ceil();\n};\n\n/**\n * Ceil self coodinates.\n * @returns {Point} Point calculated.\n */\nPoint.prototype._ceil = function() {\n    this.x = Math.ceil(this.x);\n    this.y = Math.ceil(this.y);\n\n    return this;\n};\n\n/**\n * Rotate point.\n * @param {number} deg The number of rotate degree.\n * @param {Point} [center=this] Center point instance to use rotate center. use own when not supplied.\n * @param {number} [cos] Cosine values for rotate. it useful when multi point rotate.\n * @param {number} [sin] Sine values for rotate. it useful when multi point rotate.\n * @returns {Point} The point instance rotated.\n */\nPoint.prototype.rotate = function(deg, center, cos, sin) {\n    return this.clone()._rotate(deg, center, cos, sin);\n};\n\n/**\n * Rotate self.\n * @param {number} deg The number of rotate degree.\n * @param {Point} [center=this] Center point instance to use rotate center. use own when not supplied.\n * @param {number} [cos] Cosine values for rotate. it useful when multi point rotate.\n * @param {number} [sin] Sine values for rotate. it useful when multi point rotate.\n * @returns {Point} The point instance rotated.\n */\nPoint.prototype._rotate = function(deg, center, cos, sin) {\n    var rad = deg * (Math.PI / 180),\n        x,\n        y;\n\n    cos = cos || parseFloat(Math.cos(rad).toFixed(8));\n    sin = sin || parseFloat(Math.sin(rad).toFixed(8));\n\n    this._subtract(center);\n\n    x = this.x;\n    y = this.y;\n\n    this.x = (x * cos) - (y * sin);\n    this.y = (x * sin) + (y * cos);\n\n    this._add(center);\n\n    return this;\n};\n\n/**\n * Calculate distance between two points.\n * @param {Point} point Point instance.\n * @returns {number} The number of distance between two points.\n */\nPoint.prototype.distanceTo = function(point) {\n    var x,\n        y;\n\n    point = Point.n(point);\n\n    x = point.x - this.x;\n    y = point.y - this.y;\n\n    return Math.sqrt((x * x) + (y * y));\n};\n\n/**\n * Check point equals.\n * @param {Point} point Point instance to compare\n * @returns {boolean} equality\n */\nPoint.prototype.equals = function(point) {\n    point = Point.n(point);\n\n    return point.x === this.x && point.y === this.y;\n};\n\n/**\n * Return formatted string. 'Point(x, y)'\n * @returns {string} string\n */\nPoint.prototype.toString = function() {\n    return 'Point(' + this.x + ', ' + this.y + ')';\n};\n\n/**\n * Return coodinates to array. [x, y]\n * @returns {number[]} coordinate array.\n */\nPoint.prototype.toArray = function() {\n    return [this.x, this.y];\n};\n\nmodule.exports = Point;\n","/**\n * @fileoverview Floating layer for writing new schedules\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\nvar View = require('../../view/view');\nvar FloatingLayer = require('../../common/floatingLayer');\nvar util = require('tui-code-snippet');\nvar DatePicker = require('tui-date-picker');\nvar timezone = require('../../common/timezone');\nvar config = require('../../config');\nvar domevent = require('../../common/domevent');\nvar domutil = require('../../common/domutil');\nvar common = require('../../common/common');\nvar datetime = require('../../common/datetime');\nvar tmpl = require('../template/popup/scheduleCreationPopup.hbs');\nvar TZDate = timezone.Date;\nvar MAX_WEEK_OF_MONTH = 6;\n\n/**\n * @constructor\n * @extends {View}\n * @param {HTMLElement} container - container element\n * @param {Array.<Calendar>} calendars - calendar list used to create new schedule\n * @param {boolean} usageStatistics - GA tracking options in Calendar\n */\nfunction ScheduleCreationPopup(container, calendars, usageStatistics) {\n    View.call(this, container);\n    /**\n     * @type {FloatingLayer}\n     */\n    this.layer = new FloatingLayer(null, container);\n\n    /**\n     * cached view model\n     * @type {object}\n     */\n    this._viewModel = null;\n    this._selectedCal = null;\n    this._schedule = null;\n    this.calendars = calendars;\n    this._focusedDropdown = null;\n    this._usageStatistics = usageStatistics;\n    this._onClickListeners = [\n        this._selectDropdownMenuItem.bind(this),\n        this._toggleDropdownMenuView.bind(this),\n        this._closeDropdownMenuView.bind(this, null),\n        this._closePopup.bind(this),\n        this._toggleIsAllday.bind(this),\n        this._toggleIsPrivate.bind(this),\n        this._onClickSaveSchedule.bind(this)\n    ];\n\n    domevent.on(container, 'click', this._onClick, this);\n}\n\nutil.inherit(ScheduleCreationPopup, View);\n\n/**\n * Mousedown event handler for hiding popup layer when user mousedown outside of\n * layer\n * @param {MouseEvent} mouseDownEvent - mouse event object\n */\nScheduleCreationPopup.prototype._onMouseDown = function(mouseDownEvent) {\n    var target = domevent.getEventTarget(mouseDownEvent),\n        popupLayer = domutil.closest(target, config.classname('.floating-layer'));\n\n    if (popupLayer) {\n        return;\n    }\n\n    this.hide();\n};\n\n/**\n * @override\n */\nScheduleCreationPopup.prototype.destroy = function() {\n    this.layer.destroy();\n    this.layer = null;\n    domevent.off(this.container, 'click', this._onClick, this);\n    domevent.off(document.body, 'mousedown', this._onMouseDown, this);\n    View.prototype.destroy.call(this);\n};\n\n/**\n * @override\n * Click event handler for close button\n * @param {MouseEvent} clickEvent - mouse event object\n */\nScheduleCreationPopup.prototype._onClick = function(clickEvent) {\n    var target = domevent.getEventTarget(clickEvent);\n\n    util.forEach(this._onClickListeners, function(listener) {\n        return !listener(target);\n    });\n};\n\n/**\n * Test click event target is close button, and return layer is closed(hidden)\n * @param {HTMLElement} target click event target\n * @returns {boolean} whether popup layer is closed or not\n */\nScheduleCreationPopup.prototype._closePopup = function(target) {\n    var className = config.classname('popup-close');\n\n    if (domutil.hasClass(target, className) || domutil.closest(target, '.' + className)) {\n        this.hide();\n\n        return true;\n    }\n\n    return false;\n};\n\n/**\n * Toggle dropdown menu view, when user clicks dropdown button\n * @param {HTMLElement} target click event target\n * @returns {boolean} whether user clicked dropdown button or not\n */\nScheduleCreationPopup.prototype._toggleDropdownMenuView = function(target) {\n    var className = config.classname('dropdown-button');\n    var dropdownBtn = domutil.hasClass(target, className) ? target : domutil.closest(target, '.' + className);\n\n    if (!dropdownBtn) {\n        return false;\n    }\n\n    if (domutil.hasClass(dropdownBtn.parentNode, config.classname('open'))) {\n        this._closeDropdownMenuView(dropdownBtn.parentNode);\n    } else {\n        this._openDropdownMenuView(dropdownBtn.parentNode);\n    }\n\n    return true;\n};\n\n/**\n * Close drop down menu\n * @param {HTMLElement} dropdown - dropdown element that has a opened dropdown menu\n */\nScheduleCreationPopup.prototype._closeDropdownMenuView = function(dropdown) {\n    dropdown = dropdown || this._focusedDropdown;\n    if (dropdown) {\n        domutil.removeClass(dropdown, config.classname('open'));\n        this._focusedDropdown = null;\n    }\n};\n\n/**\n * Open drop down menu\n * @param {HTMLElement} dropdown - dropdown element that has a closed dropdown menu\n */\nScheduleCreationPopup.prototype._openDropdownMenuView = function(dropdown) {\n    domutil.addClass(dropdown, config.classname('open'));\n    this._focusedDropdown = dropdown;\n};\n\n/**\n * If click dropdown menu item, close dropdown menu\n * @param {HTMLElement} target click event target\n * @returns {boolean} whether\n */\nScheduleCreationPopup.prototype._selectDropdownMenuItem = function(target) {\n    var itemClassName = config.classname('dropdown-menu-item');\n    var iconClassName = config.classname('icon');\n    var contentClassName = config.classname('content');\n    var selectedItem = domutil.hasClass(target, itemClassName) ? target : domutil.closest(target, '.' + itemClassName);\n    var bgColor, title, dropdown, dropdownBtn;\n\n    if (!selectedItem) {\n        return false;\n    }\n\n    bgColor = domutil.find('.' + iconClassName, selectedItem).style.backgroundColor || 'transparent';\n    title = domutil.find('.' + contentClassName, selectedItem).innerHTML;\n\n    dropdown = domutil.closest(selectedItem, config.classname('.dropdown'));\n    dropdownBtn = domutil.find(config.classname('.dropdown-button'), dropdown);\n    domutil.find('.' + contentClassName, dropdownBtn).innerText = title;\n\n    if (domutil.hasClass(dropdown, config.classname('section-calendar'))) {\n        domutil.find('.' + iconClassName, dropdownBtn).style.backgroundColor = bgColor;\n        this._selectedCal = common.find(this.calendars, function(cal) {\n            return cal.id === domutil.getData(selectedItem, 'calendarId');\n        });\n    }\n\n    domutil.removeClass(dropdown, config.classname('open'));\n\n    return true;\n};\n\n/**\n * Toggle allday checkbox state\n * @param {HTMLElement} target click event target\n * @returns {boolean} whether event target is allday section or not\n */\nScheduleCreationPopup.prototype._toggleIsAllday = function(target) {\n    var className = config.classname('section-allday');\n    var alldaySection = domutil.hasClass(target, className) ? target : domutil.closest(target, '.' + className);\n    var checkbox;\n\n    if (alldaySection) {\n        checkbox = domutil.find(config.classname('.checkbox-square'), alldaySection);\n        checkbox.checked = !checkbox.checked;\n\n        return true;\n    }\n\n    return false;\n};\n\n/**\n * Toggle private button\n * @param {HTMLElement} target click event target\n * @returns {boolean} whether event target is private section or not\n */\nScheduleCreationPopup.prototype._toggleIsPrivate = function(target) {\n    var className = config.classname('section-private');\n    var privateSection = domutil.hasClass(target, className) ? target : domutil.closest(target, '.' + className);\n\n    if (privateSection) {\n        if (domutil.hasClass(privateSection, config.classname('public'))) {\n            domutil.removeClass(privateSection, config.classname('public'));\n        } else {\n            domutil.addClass(privateSection, config.classname('public'));\n        }\n\n        return true;\n    }\n\n    return false;\n};\n\n/**\n * Save new schedule if user clicked save button\n * @emits ScheduleCreationPopup#saveSchedule\n * @param {HTMLElement} target click event target\n * @returns {boolean} whether save button is clicked or not\n */\n// eslint-disable-next-line complexity\nScheduleCreationPopup.prototype._onClickSaveSchedule = function(target) {\n    var className = config.classname('popup-save');\n    var cssPrefix = config.cssPrefix;\n    var title;\n    var startDate;\n    var endDate;\n    var rangeDate;\n    var form;\n    var isAllDay;\n\n    if (!domutil.hasClass(target, className) && !domutil.closest(target, '.' + className)) {\n        return false;\n    }\n\n    title = domutil.get(cssPrefix + 'schedule-title');\n    startDate = new TZDate(this.rangePicker.getStartDate()).toLocalTime();\n    endDate = new TZDate(this.rangePicker.getEndDate()).toLocalTime();\n\n    if (!this._validateForm(title, startDate, endDate)) {\n        if (!title.value) {\n            title.focus();\n        }\n\n        return false;\n    }\n\n    isAllDay = !!domutil.get(cssPrefix + 'schedule-allday').checked;\n    rangeDate = this._getRangeDate(startDate, endDate, isAllDay);\n\n    form = {\n        calendarId: this._selectedCal ? this._selectedCal.id : null,\n        title: title,\n        location: domutil.get(cssPrefix + 'schedule-location'),\n        start: rangeDate.start,\n        end: rangeDate.end,\n        isAllDay: isAllDay,\n        state: domutil.get(cssPrefix + 'schedule-state').innerText,\n        isPrivate: !domutil.hasClass(domutil.get(cssPrefix + 'schedule-private'), config.classname('public'))\n    };\n\n    if (this._isEditMode) {\n        this._onClickUpdateSchedule(form);\n    } else {\n        this._onClickCreateSchedule(form);\n    }\n\n    this.hide();\n\n    return true;\n};\n\n/**\n * @override\n * @param {object} viewModel - view model from factory/monthView\n */\nScheduleCreationPopup.prototype.render = function(viewModel) {\n    var calendars = this.calendars;\n    var layer = this.layer;\n    var self = this;\n    var boxElement, guideElements;\n\n    viewModel.zIndex = this.layer.zIndex + 5;\n    viewModel.calendars = calendars;\n    if (calendars.length) {\n        viewModel.selectedCal = this._selectedCal = calendars[0];\n    }\n\n    this._isEditMode = viewModel.schedule && viewModel.schedule.id;\n    if (this._isEditMode) {\n        boxElement = viewModel.target;\n        viewModel = this._makeEditModeData(viewModel);\n    } else {\n        this.guide = viewModel.guide;\n        guideElements = this._getGuideElements(this.guide);\n        boxElement = guideElements.length ? guideElements[0] : null;\n    }\n    layer.setContent(tmpl(viewModel));\n    this._createDatepicker(viewModel.start, viewModel.end, viewModel.isAllDay);\n    layer.show();\n\n    if (boxElement) {\n        this._setPopupPositionAndArrowDirection(boxElement.getBoundingClientRect());\n    }\n\n    util.debounce(function() {\n        domevent.on(document.body, 'mousedown', self._onMouseDown, self);\n    })();\n};\n\n/**\n * Make view model for edit mode\n * @param {object} viewModel - original view model from 'beforeCreateEditPopup'\n * @returns {object} - edit mode view model\n */\nScheduleCreationPopup.prototype._makeEditModeData = function(viewModel) {\n    var schedule = viewModel.schedule;\n    var title, isPrivate, location, startDate, endDate, isAllDay, state;\n    var raw = schedule.raw || {};\n    var calendars = this.calendars;\n\n    var id = schedule.id;\n    title = schedule.title;\n    isPrivate = raw['class'] === 'private';\n    location = schedule.location;\n    startDate = schedule.start;\n    endDate = schedule.end;\n    isAllDay = schedule.isAllDay;\n    state = schedule.state;\n\n    viewModel.selectedCal = this._selectedCal = common.find(this.calendars, function(cal) {\n        return cal.id === viewModel.schedule.calendarId;\n    });\n\n    this._schedule = schedule;\n\n    return {\n        id: id,\n        selectedCal: this._selectedCal,\n        calendars: calendars,\n        title: title,\n        isPrivate: isPrivate,\n        location: location,\n        isAllDay: isAllDay,\n        state: state,\n        start: startDate,\n        end: endDate,\n        raw: {\n            class: isPrivate ? 'private' : 'public'\n        },\n        zIndex: this.layer.zIndex + 5,\n        isEditMode: this._isEditMode\n    };\n};\n\n/**\n * Set popup position and arrow direction to apear near guide element\n * @param {MonthCreationGuide|TimeCreationGuide|DayGridCreationGuide} guideBound - creation guide element\n */\nScheduleCreationPopup.prototype._setPopupPositionAndArrowDirection = function(guideBound) {\n    var layer = domutil.find(config.classname('.popup'), this.layer.container);\n    var layerSize = {\n        width: layer.offsetWidth,\n        height: layer.offsetHeight\n    };\n    var containerBound = this.container.getBoundingClientRect();\n    var pos = this._calcRenderingData(layerSize, containerBound, guideBound);\n\n    this.layer.setPosition(pos.x, pos.y);\n    this._setArrowDirection(pos.arrow);\n};\n\n/**\n * Get guide elements from creation guide object\n * It is used to calculate rendering position of popup\n * It will be disappeared when hiding popup\n * @param {MonthCreationGuide|TimeCreationGuide|AlldayCreationGuide} guide - creation guide\n * @returns {Array.<HTMLElement>} creation guide element\n */\nScheduleCreationPopup.prototype._getGuideElements = function(guide) {\n    var guideElements = [];\n    var i = 0;\n\n    if (guide.guideElement) {\n        guideElements.push(guide.guideElement);\n    } else if (guide.guideElements) {\n        for (; i < MAX_WEEK_OF_MONTH; i += 1) {\n            if (guide.guideElements[i]) {\n                guideElements.push(guide.guideElements[i]);\n            }\n        }\n    }\n\n    return guideElements;\n};\n\n/**\n * Get guide element's bound data which only includes top, right, bottom, left\n * @param {Array.<HTMLElement>} guideElements - creation guide elements\n * @returns {Object} - popup bound data\n */\nScheduleCreationPopup.prototype._getBoundOfFirstRowGuideElement = function(guideElements) {\n    var bound;\n\n    if (!guideElements.length) {\n        return null;\n    }\n\n    bound = guideElements[0].getBoundingClientRect();\n\n    return {\n        top: bound.top,\n        left: bound.left,\n        bottom: bound.bottom,\n        right: bound.right\n    };\n};\n\n/**\n * Get calculate rendering positions of y and arrow direction by guide block elements\n * @param {number} guideBoundTop - guide block's top\n * @param {number} guideBoundBottom - guide block's bottom\n * @param {number} layerHeight - popup layer's height\n * @param {number} containerTop - container's top\n * @param {number} containerBottom - container's bottom\n * @returns {YAndArrowDirection} y and arrowDirection\n */\nScheduleCreationPopup.prototype._getYAndArrowDirection = function(\n    guideBoundTop,\n    guideBoundBottom,\n    layerHeight,\n    containerTop,\n    containerBottom\n) {\n    var arrowDirection = 'arrow-bottom';\n    var MARGIN = 3;\n    var y = guideBoundTop - layerHeight;\n\n    if (y < containerTop) {\n        y = guideBoundBottom - containerTop + MARGIN;\n        arrowDirection = 'arrow-top';\n    } else {\n        y = y - containerTop - MARGIN;\n    }\n\n    if (y + layerHeight > containerBottom) {\n        y = containerBottom - layerHeight - containerTop - MARGIN;\n    }\n\n    /**\n     * @typedef {Object} YAndArrowDirection\n     * @property {number} y - top position of popup layer\n     * @property {string} [arrowDirection] - direction of popup arrow\n     */\n    return {\n        y: y,\n        arrowDirection: arrowDirection\n    };\n};\n\n/**\n* Get calculate rendering x position and arrow left by guide block elements\n* @param {number} guideBoundLeft - guide block's left\n* @param {number} guideBoundRight - guide block's right\n* @param {number} layerWidth - popup layer's width\n* @param {number} containerLeft - container's left\n* @param {number} containerRight - container's right\n* @returns {XAndArrowLeft} x and arrowLeft\n*/\nScheduleCreationPopup.prototype._getXAndArrowLeft = function(\n    guideBoundLeft,\n    guideBoundRight,\n    layerWidth,\n    containerLeft,\n    containerRight\n) {\n    var guideHorizontalCenter = (guideBoundLeft + guideBoundRight) / 2;\n    var x = guideHorizontalCenter - (layerWidth / 2);\n    var ARROW_WIDTH_HALF = 8;\n    var arrowLeft;\n\n    if (x + layerWidth > containerRight) {\n        x = guideBoundRight - layerWidth + ARROW_WIDTH_HALF;\n        arrowLeft = guideHorizontalCenter - x;\n    } else {\n        x += ARROW_WIDTH_HALF;\n    }\n\n    if (x < containerLeft) {\n        x = 0;\n        arrowLeft = guideHorizontalCenter - containerLeft - ARROW_WIDTH_HALF;\n    } else {\n        x = x - containerLeft - ARROW_WIDTH_HALF;\n    }\n\n    /**\n     * @typedef {Object} XAndArrowLeft\n     * @property {number} x - left position of popup layer\n     * @property {numbe3er} arrowLeft - relative position of popup arrow, if it is not set, arrow appears on the middle of popup\n     */\n    return {\n        x: x,\n        arrowLeft: arrowLeft\n    };\n};\n\n/**\n * Calculate rendering position usering guide elements\n * @param {{width: {number}, height: {number}}} layerSize - popup layer's width and height\n * @param {{top: {number}, left: {number}, right: {number}, bottom: {number}}} containerBound - width and height of the upper layer, that acts as a border of popup\n * @param {{top: {number}, left: {number}, right: {number}, bottom: {number}}} guideBound - guide element bound data\n * @returns {PopupRenderingData} rendering position of popup and popup arrow\n */\nScheduleCreationPopup.prototype._calcRenderingData = function(layerSize, containerBound, guideBound) {\n    var yPosInfo = this._getYAndArrowDirection(\n        guideBound.top,\n        guideBound.bottom,\n        layerSize.height,\n        containerBound.top,\n        containerBound.bottom\n    );\n    var xPosInfo = this._getXAndArrowLeft(\n        guideBound.left,\n        guideBound.right,\n        layerSize.width,\n        containerBound.left,\n        containerBound.right\n    );\n\n    /**\n     * @typedef {Object} PopupRenderingData\n     * @property {number} x - left position\n     * @property {number} y - top position\n     * @property {string} arrow.direction - direction of popup arrow\n     * @property {number} [arrow.position] - relative position of popup arrow, if it is not set, arrow appears on the middle of popup\n     */\n    return {\n        x: xPosInfo.x,\n        y: yPosInfo.y,\n        arrow: {\n            direction: yPosInfo.arrowDirection,\n            position: xPosInfo.arrowLeft\n        }\n    };\n};\n\n/**\n * Set arrow's direction and position\n * @param {Object} arrow rendering data for popup arrow\n */\nScheduleCreationPopup.prototype._setArrowDirection = function(arrow) {\n    var direction = arrow.direction || 'arrow-bottom';\n    var arrowEl = domutil.get(config.classname('popup-arrow'));\n    var borderElement = domutil.find(config.classname('.popup-arrow-border', arrowEl));\n\n    if (direction !== config.classname('arrow-bottom')) {\n        domutil.removeClass(arrowEl, config.classname('arrow-bottom'));\n        domutil.addClass(arrowEl, config.classname(direction));\n    }\n\n    if (arrow.position) {\n        borderElement.style.left = arrow.position + 'px';\n    }\n};\n\n/**\n * Create date range picker using start date and end date\n * @param {TZDate} start - start date\n * @param {TZDate} end - end date\n * @param {boolean} isAllDay - isAllDay\n */\nScheduleCreationPopup.prototype._createDatepicker = function(start, end, isAllDay) {\n    var cssPrefix = config.cssPrefix;\n\n    this.rangePicker = DatePicker.createRangePicker({\n        startpicker: {\n            date: new TZDate(start).toDate(),\n            input: '#' + cssPrefix + 'schedule-start-date',\n            container: '#' + cssPrefix + 'startpicker-container'\n        },\n        endpicker: {\n            date: new TZDate(end).toDate(),\n            input: '#' + cssPrefix + 'schedule-end-date',\n            container: '#' + cssPrefix + 'endpicker-container'\n        },\n        format: isAllDay ? 'yyyy-MM-dd' : 'yyyy-MM-dd HH:mm',\n        timepicker: isAllDay ? null : {\n            showMeridiem: false,\n            usageStatistics: this._usageStatistics\n        },\n        usageStatistics: this._usageStatistics\n    });\n};\n\n/**\n * Hide layer\n */\nScheduleCreationPopup.prototype.hide = function() {\n    this.layer.hide();\n\n    if (this.guide) {\n        this.guide.clearGuideElement();\n        this.guide = null;\n    }\n\n    domevent.off(document.body, 'mousedown', this._onMouseDown, this);\n};\n\n/**\n * refresh layer\n */\nScheduleCreationPopup.prototype.refresh = function() {\n    if (this._viewModel) {\n        this.layer.setContent(this.tmpl(this._viewModel));\n    }\n};\n\n/**\n * Set calendar list\n * @param {Array.<Calendar>} calendars - calendar list\n */\nScheduleCreationPopup.prototype.setCalendars = function(calendars) {\n    this.calendars = calendars || [];\n};\n\n/**\n * Validate the form\n * @param {string} title title of then entered schedule\n * @param {TZDate} startDate start date time from range picker\n * @param {TZDate} endDate end date time from range picker\n * @returns {boolean} Returns false if the form is not valid for submission.\n */\nScheduleCreationPopup.prototype._validateForm = function(title, startDate, endDate) {\n    if (!title.value) {\n        return false;\n    }\n\n    if (!startDate && !endDate) {\n        return false;\n    }\n\n    if (datetime.compare(startDate, endDate) === 1) {\n        return false;\n    }\n\n    return true;\n};\n\n/**\n * Get range date from range picker\n * @param {TZDate} startDate start date time from range picker\n * @param {TZDate} endDate end date time from range picker\n * @param {boolean} isAllDay whether it is an all-day schedule\n * @returns {RangeDate} Returns the start and end time data that is the range date\n */\nScheduleCreationPopup.prototype._getRangeDate = function(startDate, endDate, isAllDay) {\n    var start = isAllDay ? datetime.start(startDate) : startDate;\n    var end = isAllDay ? datetime.renderEnd(startDate, endDate) : endDate;\n\n    /**\n     * @typedef {object} RangeDate\n     * @property {TZDate} start start time\n     * @property {TZDate} end end time\n     */\n    return {\n        start: new TZDate(start),\n        end: new TZDate(end)\n    };\n};\n\n/**\n * Request schedule model creation to controller by custom schedules.\n * @fires {ScheduleCreationPopup#beforeUpdateSchedule}\n * @param {{\n    calendarId: {string},\n    title: {string},\n    location: {string},\n    start: {TZDate},\n    end: {TZDate},\n    isAllDay: {boolean},\n    state: {string},\n    isPrivate: {boolean}\n  }} form schedule input form data\n*/\nScheduleCreationPopup.prototype._onClickUpdateSchedule = function(form) {\n    var changes = common.getScheduleChanges(\n        this._schedule,\n        ['calendarId', 'title', 'location', 'start', 'end', 'isAllDay', 'state'],\n        {\n            calendarId: form.calendarId,\n            title: form.title.value,\n            location: form.location.value,\n            start: form.start,\n            end: form.end,\n            isAllDay: form.isAllDay,\n            state: form.state\n        }\n    );\n\n    /**\n     * @event ScheduleCreationPopup#beforeUpdateSchedule\n     * @type {object}\n     * @property {Schedule} schedule - schedule object to be updated\n     */\n    this.fire('beforeUpdateSchedule', {\n        schedule: util.extend({\n            raw: {\n                class: form.isPrivate ? 'private' : 'public'\n            }\n        }, this._schedule),\n        changes: changes,\n        start: form.start,\n        end: form.end,\n        calendar: this._selectedCal,\n        triggerEventName: 'click'\n    });\n};\n\n/**\n * Request the controller to update the schedule model according to the custom schedule.\n * @fires {ScheduleCreationPopup#beforeCreateSchedule}\n * @param {{\n    calendarId: {string},\n    title: {string},\n    location: {string},\n    start: {TZDate},\n    end: {TZDate},\n    isAllDay: {boolean},\n    state: {string}\n  }} form schedule input form data\n */\nScheduleCreationPopup.prototype._onClickCreateSchedule = function(form) {\n    /**\n     * @event ScheduleCreationPopup#beforeCreateSchedule\n     * @type {object}\n     * @property {Schedule} schedule - new schedule instance to be added\n     */\n    this.fire('beforeCreateSchedule', {\n        calendarId: form.calendarId,\n        title: form.title.value,\n        location: form.location.value,\n        raw: {\n            class: form.isPrivate ? 'private' : 'public'\n        },\n        start: form.start,\n        end: form.end,\n        isAllDay: form.isAllDay,\n        state: form.state\n    });\n};\n\nmodule.exports = ScheduleCreationPopup;\n","/**\n * @fileoverview Floating layer for showing detail schedule\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\nvar View = require('../../view/view');\nvar FloatingLayer = require('../../common/floatingLayer');\nvar util = require('tui-code-snippet');\nvar config = require('../../config'),\n    domevent = require('../../common/domevent'),\n    domutil = require('../../common/domutil');\nvar tmpl = require('../template/popup/scheduleDetailPopup.hbs');\n\n/**\n * @constructor\n * @extends {View}\n * @param {HTMLElement} container - container element\n */\nfunction ScheduleDetailPopup(container) {\n    View.call(this, container);\n    /**\n     * @type {FloatingLayer}\n     */\n    this.layer = new FloatingLayer(null, container);\n\n    /**\n     * cached view model\n     * @type {object}\n     */\n    this._viewModel = null;\n    this._schedule = null;\n    this._calendar = null;\n\n    domevent.on(container, 'click', this._onClick, this);\n}\n\nutil.inherit(ScheduleDetailPopup, View);\n\n/**\n * Mousedown event handler for hiding popup layer when user mousedown outside of\n * layer\n * @param {MouseEvent} mouseDownEvent - mouse event object\n */\nScheduleDetailPopup.prototype._onMouseDown = function(mouseDownEvent) {\n    var target = domevent.getEventTarget(mouseDownEvent),\n        popupLayer = domutil.closest(target, config.classname('.floating-layer'));\n\n    if (popupLayer) {\n        return;\n    }\n\n    this.hide();\n};\n\n/**\n * @override\n */\nScheduleDetailPopup.prototype.destroy = function() {\n    this.layer.destroy();\n    this.layer = null;\n    domevent.off(this.container, 'click', this._onClick, this);\n    domevent.off(document.body, 'mousedown', this._onMouseDown, this);\n    View.prototype.destroy.call(this);\n};\n\n/**\n * @override\n * Click event handler for close button\n * @param {MouseEvent} clickEvent - mouse event object\n */\nScheduleDetailPopup.prototype._onClick = function(clickEvent) {\n    var target = domevent.getEventTarget(clickEvent);\n\n    this._onClickEditSchedule(target);\n\n    this._onClickDeleteSchedule(target);\n};\n\n/**\n * @fires ScheduleDetailPopup#clickEditSchedule\n * @param {HTMLElement} target - event target\n */\nScheduleDetailPopup.prototype._onClickEditSchedule = function(target) {\n    var className = config.classname('popup-edit');\n\n    if (domutil.hasClass(target, className) || domutil.closest(target, '.' + className)) {\n        this.fire('beforeUpdateSchedule', {\n            schedule: this._schedule,\n            triggerEventName: 'click',\n            target: this._scheduleEl\n        });\n\n        this.hide();\n    }\n};\n\n/**\n * @fires ScheduleDetailPopup#clickEditSchedule\n * @param {HTMLElement} target - event target\n */\nScheduleDetailPopup.prototype._onClickDeleteSchedule = function(target) {\n    var className = config.classname('popup-delete');\n\n    if (domutil.hasClass(target, className) || domutil.closest(target, '.' + className)) {\n        this.fire('beforeDeleteSchedule', {\n            schedule: this._schedule\n        });\n\n        this.hide();\n    }\n};\n\n/**\n * @override\n * @param {object} viewModel - view model from factory/monthView\n */\nScheduleDetailPopup.prototype.render = function(viewModel) {\n    var layer = this.layer;\n    var self = this;\n\n    layer.setContent(tmpl({\n        schedule: viewModel.schedule,\n        calendar: viewModel.calendar\n    }));\n    layer.show();\n    this._setPopupPositionAndArrowDirection(viewModel.event);\n\n    this._schedule = viewModel.schedule;\n    this._calendar = viewModel.calendar;\n\n    util.debounce(function() {\n        domevent.on(document.body, 'mousedown', self._onMouseDown, self);\n    })();\n};\n\n/**\n * Set popup position and arrow direction to apear near guide element\n * @param {Event} event - creation guide element\n */\nScheduleDetailPopup.prototype._setPopupPositionAndArrowDirection = function(event) {\n    var layer = domutil.find(config.classname('.popup'), this.layer.container);\n    var layerSize = {\n        width: layer.offsetWidth,\n        height: layer.offsetHeight\n    };\n\n    var containerBound = this.container.getBoundingClientRect();\n    var scheduleEl = domevent.getEventTarget(event);\n    var blockEl = domutil.closest(scheduleEl, config.classname('.time-date-schedule-block'))\n        || domutil.closest(scheduleEl, config.classname('.weekday-schedule'))\n        || scheduleEl;\n    var scheduleBound = blockEl.getBoundingClientRect();\n    var pos;\n\n    this._scheduleEl = blockEl;\n\n    pos = this._calcRenderingData(layerSize, containerBound, scheduleBound);\n    this.layer.setPosition(pos.x, pos.y);\n    this._setArrowDirection(pos.arrow);\n};\n\n/**\n * Get calculate rendering positions of y and arrow top by schedule block elements\n * @param {number} scheduleBoundTop - schedule block's top\n * @param {number} scheduleBoundBottom - schedule block's bottom\n * @param {number} layerHeight - popup layer's height\n * @param {number} containerTop - container's top\n * @param {number} containerBottom - container's bottom\n * @returns {YAndArrowTop} y and arrowTop\n */\nScheduleDetailPopup.prototype._getYAndArrowTop = function(\n    scheduleBoundTop,\n    scheduleBoundBottom,\n    layerHeight,\n    containerTop,\n    containerBottom\n) {\n    var ARROW_WIDTH_HALF = 8;\n    var scheduleVerticalCenter, y, arrowTop;\n\n    scheduleBoundTop = scheduleBoundTop < 0 ? 0 : scheduleBoundTop;\n    scheduleVerticalCenter = (scheduleBoundTop + scheduleBoundBottom) / 2;\n    y = scheduleVerticalCenter - (layerHeight / 2);\n\n    if (y < containerTop) {\n        y = 0;\n        arrowTop = scheduleVerticalCenter - containerTop - ARROW_WIDTH_HALF;\n    } else if (y + layerHeight > containerBottom) {\n        y = Math.max(containerBottom - layerHeight - containerTop, 0);\n        arrowTop = scheduleVerticalCenter - y - containerTop - ARROW_WIDTH_HALF;\n    } else {\n        y -= containerTop;\n    }\n\n    if (arrowTop < 0 || arrowTop > layerHeight) {\n        arrowTop = null;\n    }\n\n    /**\n     * @typedef {Object} YAndArrowTop\n     * @property {number} y - top position of popup layer\n     * @property {number} [arrowTop] - relative position of popup arrow, if it is not set, arrow appears on the middle of popup\n     */\n    return {\n        y: y,\n        arrowTop: arrowTop\n    };\n};\n\n/**\n * Get calculate rendering x position and arrow direction by schedule block elements\n * @param {number} scheduleBoundLeft - schedule block's left\n * @param {number} scheduleBoundRight - schedule block's right\n * @param {number} layerWidth - popup layer's width\n * @param {number} containerLeft - container's left\n * @param {number} containerRight - container's right\n * @returns {XAndArrowDirection} x and arrowDirection\n */\nScheduleDetailPopup.prototype._getXAndArrowDirection = function(\n    scheduleBoundLeft,\n    scheduleBoundRight,\n    layerWidth,\n    containerLeft,\n    containerRight\n) {\n    var arrowDirection = 'arrow-left';\n    var x = scheduleBoundRight;\n    var MARGIN = 4;\n\n    if (x + layerWidth > containerRight) {\n        arrowDirection = 'arrow-right';\n        x = scheduleBoundLeft - layerWidth - MARGIN;\n    } else {\n        x += MARGIN;\n    }\n\n    if (x < containerLeft) {\n        x = 0;\n    } else {\n        x -= containerLeft;\n    }\n\n    /**\n     * @typedef {Object} XAndArrowDirection\n     * @property {number} x - left position of popup layer\n     * @property {string} arrowDirection - direction of popup arrow\n     */\n    return {\n        x: x,\n        arrowDirection: arrowDirection\n    };\n};\n\n/**\n * Calculate rendering position usering guide elements\n * @param {{width: {number}, height: {number}}} layerSize - popup layer's width and height\n * @param {{top: {number}, left: {number}, right: {number}, bottom: {number}}} containerBound - width and height of the upper layer, that acts as a border of popup\n * @param {{top: {number}, left: {number}, right: {number}, bottom: {number}}} scheduleBound - guide element bound data\n * @returns {PopupRenderingData} rendering position of popup and popup arrow\n */\nScheduleDetailPopup.prototype._calcRenderingData = function(layerSize, containerBound, scheduleBound) {\n    var yPosInfo = this._getYAndArrowTop(\n        scheduleBound.top,\n        scheduleBound.bottom,\n        layerSize.height,\n        containerBound.top,\n        containerBound.bottom\n    );\n    var xPosInfo = this._getXAndArrowDirection(\n        scheduleBound.left,\n        scheduleBound.right,\n        layerSize.width,\n        containerBound.left,\n        containerBound.right\n    );\n\n    /**\n     * @typedef {Object} PopupRenderingData\n     * @property {number} x - left position\n     * @property {number} y - top position\n     * @property {string} arrow.direction - direction of popup arrow\n     * @property {number} [arrow.position] - relative position of popup arrow, if it is not set, arrow appears on the middle of popup\n     */\n    return {\n        x: xPosInfo.x,\n        y: yPosInfo.y,\n        arrow: {\n            direction: xPosInfo.arrowDirection,\n            position: yPosInfo.arrowTop\n        }\n    };\n};\n\n/**\n * Set arrow's direction and position\n * @param {Object} arrow rendering data for popup arrow\n */\nScheduleDetailPopup.prototype._setArrowDirection = function(arrow) {\n    var direction = arrow.direction || 'arrow-left';\n    var arrowEl = domutil.find(config.classname('.popup-arrow'), this.layer.container);\n    var borderElement = domutil.find(config.classname('.popup-arrow-border'), arrowEl);\n\n    if (direction !== config.classname('arrow-left')) {\n        domutil.removeClass(arrowEl, config.classname('arrow-left'));\n        domutil.addClass(arrowEl, config.classname(direction));\n    }\n\n    if (arrow.position) {\n        borderElement.style.top = arrow.position + 'px';\n    }\n};\n\n/**\n * Hide layer\n */\nScheduleDetailPopup.prototype.hide = function() {\n    this.layer.hide();\n\n    if (this.guide) {\n        this.guide.clearGuideElement();\n        this.guide = null;\n    }\n\n    domevent.off(document.body, 'mousedown', this._onMouseDown, this);\n};\n\n/**\n * refresh layer\n */\nScheduleDetailPopup.prototype.refresh = function() {\n    if (this._viewModel) {\n        this.layer.setContent(this.tmpl(this._viewModel));\n    }\n};\n\nmodule.exports = ScheduleDetailPopup;\n","/**\n * @fileoverview Move handler for DayGrid view.\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\nvar util = require('tui-code-snippet');\nvar config = require('../../config');\nvar common = require('../../common/common');\nvar domutil = require('../../common/domutil');\nvar dayGridCore = require('./core');\nvar DayGridMoveGuide = require('./moveGuide');\nvar TZDate = require('../../common/timezone').Date;\n\n/**\n * @constructor\n * @implements {Handler}\n * @mixes dayGridCore\n * @mixes CustomEvents\n * @param {Drag} dragHandler - Drag handler instance.\n * @param {DayGrid} view - view instance.\n * @param {Base} controller - Base controller instance.\n */\nfunction DayGridMove(dragHandler, view, controller) {\n    /**\n     * Drag handler instance.\n     * @type {Drag}\n     */\n    this.dragHandler = dragHandler;\n\n    /**\n     * view instance.\n     * @type {DayGrid}\n     */\n    this.view = view;\n\n    /**\n     * Base controller instance.\n     * @type {Base}\n     */\n    this.controller = controller;\n\n    /**\n     * Temporary variable for dragstart event data.\n     * @type {object}\n     */\n    this._dragStart = null;\n\n    dragHandler.on({\n        dragStart: this._onDragStart\n    }, this);\n\n    /**\n     * @type {DayGridMoveGuide}\n     */\n    this.guide = new DayGridMoveGuide(this);\n}\n\nDayGridMove.prototype.destroy = function() {\n    this.guide.destroy();\n    this.dragHandler.off(this);\n    this.dragHandler = this.view = this.controller =\n        this.guide = this._dragStart = null;\n};\n\n/**\n * Check dragstart target is expected conditions for this handler.\n * @param {HTMLElement} target - dragstart event handler's target element.\n * @returns {boolean|DayGridSchedule} return DayGridSchedule view instance when satiate condition.\n */\nDayGridMove.prototype.checkExpectedCondition = function(target) {\n    var cssClass = domutil.getClass(target),\n        parentView,\n        matches;\n\n    if (~cssClass.indexOf(config.classname('weekday-resize-handle'))) {\n        return false;\n    }\n\n    parentView = domutil.closest(target, config.classname('.weekday'));\n\n    if (!parentView) {\n        return false;\n    }\n\n    cssClass = domutil.getClass(parentView);\n    matches = cssClass.match(config.daygrid.getViewIDRegExp);\n\n    if (!matches || matches.length < 2) {\n        return false;\n    }\n\n    return util.pick(this.view.children.items, matches[1]);\n};\n\n/**\n * DragStart event handler method.\n * @emits DayGridMove#dragstart\n * @param {object} dragStartEventData - Drag#dragStart event handler event data.\n */\nDayGridMove.prototype._onDragStart = function(dragStartEventData) {\n    var target = dragStartEventData.target,\n        result = this.checkExpectedCondition(target),\n        controller = this.controller,\n        excludeTarget = true,\n        scheduleBlockElement,\n        modelID,\n        targetModel,\n        getScheduleDataFunc,\n        scheduleData;\n\n    if (!result) {\n        return;\n    }\n\n    scheduleBlockElement = domutil.closest(target, config.classname('.weekday-schedule-block'), excludeTarget);\n    if (!scheduleBlockElement) {\n        return;\n    }\n\n    modelID = domutil.getData(scheduleBlockElement, 'id');\n    targetModel = controller.schedules.items[modelID];\n\n    if (!targetModel) {\n        return;\n    }\n\n    if (targetModel.isReadOnly) {\n        return;\n    }\n\n    getScheduleDataFunc = this._retriveScheduleData(this.view, dragStartEventData.originEvent);\n    this.getScheduleDataFunc = getScheduleDataFunc;\n    scheduleData = this._dragStart = getScheduleDataFunc(dragStartEventData.originEvent);\n\n    util.extend(scheduleData, {\n        scheduleBlockElement: scheduleBlockElement,\n        model: targetModel\n    });\n\n    this.dragHandler.on({\n        drag: this._onDrag,\n        dragEnd: this._onDragEnd,\n        click: this._onClick\n    }, this);\n\n    /**\n     * @event DayGridMove#dragstart\n     * @type {object}\n     * @property {DayGrid} relatedView - view instance.\n     * @property {number} datesInRange - date count of this view.\n     * @property {number} dragStartXIndex - index number of dragstart grid index.\n     * @property {number} xIndex - index number of mouse positions.\n     * @property {Schedule} model - data object of model isntance.\n     * @property {HTMLDivElement} scheduleBlockElement - target schedule block element.\n     */\n    this.fire('dragstart', scheduleData);\n};\n\n/**\n * Drag event handler method.\n * @emits DayGridMove#drag\n * @param {object} dragEventData - Drag#drag event handler eventdata.\n */\nDayGridMove.prototype._onDrag = function(dragEventData) {\n    var getScheduleDataFunc = this.getScheduleDataFunc;\n\n    if (!getScheduleDataFunc) {\n        return;\n    }\n\n    /**\n     * @schedule DayGridMove#drag\n     * @type {object}\n     * @property {DayGrid} relatedView - view instance.\n     * @property {number} datesInRange - date count of this view.\n     * @property {number} dragStartXIndex - index number of dragstart grid index.\n     * @property {number} xIndex - index number of mouse positions.\n     */\n    this.fire('drag', getScheduleDataFunc(dragEventData.originEvent));\n};\n\n/**\n * Request update schedule model to base controller.\n * @fires DayGridMove#beforeUpdateSchedule\n * @param {object} scheduleData - schedule data from DayGridMove handler module.\n */\nDayGridMove.prototype._updateSchedule = function(scheduleData) {\n    var schedule = scheduleData.targetModel,\n        dateOffset = scheduleData.xIndex - scheduleData.dragStartXIndex,\n        newStarts = new TZDate(schedule.start),\n        newEnds = new TZDate(schedule.end);\n\n    newStarts = newStarts.addDate(dateOffset);\n    newEnds = newEnds.addDate(dateOffset);\n\n    /**\n     * @event DayGridMove#beforeUpdateSchedule\n     * @type {object}\n     * @property {Schedule} schedule - The original schedule instance\n     * @property {Date} start - Deprecated: start time to update\n     * @property {Date} end - Deprecated: end time to update\n     * @property {object} changes - start and end time to update\n     *  @property {Date} start - start time to update\n     *  @property {Date} end - end time to update\n     */\n    this.fire('beforeUpdateSchedule', {\n        schedule: schedule,\n        changes: {\n            start: newStarts,\n            end: newEnds\n        },\n        start: newStarts,\n        end: newEnds\n    });\n};\n\n/**\n * DragEnd event hander method.\n * @emits DayGridMove#dragend\n * @param {object} dragEndEventData - Drag#DragEnd event handler data.\n * @param {string} [overrideEventName] - override emitted event name when supplied.\n * @param {?boolean} skipUpdate - true then skip update schedule model.\n */\nDayGridMove.prototype._onDragEnd = function(dragEndEventData, overrideEventName, skipUpdate) {\n    var getScheduleDataFunc = this.getScheduleDataFunc,\n        dragStart = this._dragStart,\n        scheduleData;\n\n    if (!getScheduleDataFunc || !dragStart) {\n        return;\n    }\n\n    this.dragHandler.off({\n        drag: this._onDrag,\n        dragEnd: this._onDragEnd,\n        click: this._onClick\n    }, this);\n\n    scheduleData = getScheduleDataFunc(dragEndEventData.originEvent);\n    util.extend(scheduleData, {\n        targetModel: dragStart.model\n    });\n\n    if (!skipUpdate) {\n        this._updateSchedule(scheduleData);\n    }\n\n    /**\n     * @event DayGridMove#dragend\n     * @type {object}\n     * @property {DayGrid} relatedView - view instance.\n     * @property {number} datesInRange - date count of this view.\n     * @property {number} dragStartXIndex - index number of dragstart grid index.\n     * @property {number} xIndex - index number of mouse positions.\n     */\n    this.fire(overrideEventName || 'dragend', scheduleData);\n\n    this.getScheduleDataFunc = this._dragStart = null;\n};\n\n/**\n * Click event handler method.\n * @emits DayGridMove#click\n * @param {object} clickEventData - Drag#Click event handler data.\n */\nDayGridMove.prototype._onClick = function(clickEventData) {\n    /**\n     * @event DayGridMove#click\n     * @type {object}\n     * @property {DayGrid} relatedView - view instance.\n     * @property {number} datesInRange - date count of this view.\n     * @property {number} dragStartXIndex - index number of dragstart grid index.\n     * @property {number} xIndex - index number of mouse positions.\n     */\n    this._onDragEnd(clickEventData, 'click', true);\n};\n\ncommon.mixin(dayGridCore, DayGridMove);\nutil.CustomEvents.mixin(DayGridMove);\n\nmodule.exports = DayGridMove;\n","/**\n * @fileoverview Guide element controller for creation, resize in month view\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\nvar util = require('tui-code-snippet');\nvar config = require('../../config'),\n    domutil = require('../../common/domutil'),\n    datetime = require('../../common/datetime'),\n    TZDate = require('../../common/timezone').Date,\n    tmpl = require('./guide.hbs');\nvar mmax = Math.max,\n    mmin = Math.min,\n    mabs = Math.abs,\n    mfloor = Math.floor;\n\n/**\n * @constructor\n * @param {object} [options] - options\n * @param {boolean} [options.useHandle=false] - whether displaying resize handle on\n *  guide element?\n * @param {boolean} [options.isResizeMode=false] - whether resize mode?\n * @param {Month} monthView - Month view instance\n */\nfunction MonthGuide(options, monthView) {\n    /**\n     * @type {object}\n     */\n    this.options = util.extend({\n        top: 0,\n        height: '20px',\n        bgColor: '#f7ca88',\n        label: 'New event',\n        isResizeMode: false,\n        isCreationMode: false,\n        styles: this._getStyles(monthView.controller.theme)\n    }, options);\n\n    /**\n     * @type {Month}\n     */\n    this.view = monthView;\n\n    /**\n     * @type {WeekdayInMonth[]}\n     */\n    this.weeks = monthView.children.sort(function(a, b) {\n        return util.stamp(a) - util.stamp(b);\n    });\n\n    /**\n     * @type {number}\n     */\n    this.days = monthView.children.single().getRenderDateRange().length;\n\n    /**\n     * start coordinate of guide effect. (x, y) (days, weeks) effect can't\n     *  start lower than this coordinate.\n     * @type {number[]}\n     */\n    this.startCoord = [0, 0];\n\n    /**\n     * @type {Object.<string, HTMLElement>}\n     */\n    this.guideElements = {};\n\n    /**\n     * horizontal grid information\n     * @type {Object}\n     */\n    this.grids = monthView.grids;\n}\n\n/**\n * Destructor\n */\nMonthGuide.prototype.destroy = function() {\n    this.clear();\n\n    this.options = this.view = this.weeks = this.days =\n        this.startCoord = this.guideElements = null;\n};\n\nMonthGuide.prototype.clearGuideElement = function() {\n    this.destroy();\n};\n\n/**\n * Get ratio value in week.\n * @param {number} value - value for calc ratio in week\n * @returns {number} percent value\n */\nMonthGuide.prototype._getRatioValueInWeek = function(value) {\n    var grid = this.grids[value] || {left: 100};\n\n    return grid.left;\n};\n\n/**\n * Create guide element\n * @returns {HTMLElement} guide element\n */\nMonthGuide.prototype._createGuideElement = function() {\n    var guide = document.createElement('div');\n\n    guide.innerHTML = tmpl(this.options);\n\n    return guide.firstChild;\n};\n\n/**\n * Get guide element. if not exist then create one\n * @param {number} y - y coordinate\n * @returns {?HTMLElement} guide element\n */\nMonthGuide.prototype._getGuideElement = function(y) {\n    var guideElements = this.guideElements,\n        guide = guideElements[y],\n        weekdayView = this.weeks[y],\n        container;\n\n    if (!weekdayView) {\n        return null;\n    }\n\n    if (!guide) {\n        guide = this._createGuideElement();\n        container = weekdayView.container;\n        container.appendChild(guide);\n        guideElements[y] = guide;\n    }\n\n    return guide;\n};\n\n/**\n * Get coordinate by supplied date in month\n * @param {TZDate} date - date to find coordinate\n * @returns {number[]} coordinate (x, y)\n */\nMonthGuide.prototype._getCoordByDate = function(date) {\n    var WEEKEND_DAYS = 2;\n    var weeks = this.weeks;\n    var isWorkWeek = util.pick(this.view, 'options', 'workweek');\n    var days = isWorkWeek ? this.days + WEEKEND_DAYS : this.days;\n\n    var getIdxFromDiff = function(d1, d2) {\n            return mfloor(datetime.millisecondsTo('day', mabs(d2 - d1)));\n        },\n        monthStart = datetime.start(weeks[0].options.renderStartDate),\n        isBefore = date < monthStart,\n        start = new TZDate(monthStart),\n        end = new TZDate(monthStart).addDate(isBefore ? -days : days).addDate(-1),\n        x = getIdxFromDiff(date, start),\n        y = 0;\n\n    while (!datetime.isBetweenWithDate(date, start, end)) {\n        start.addDate(isBefore ? -days : days);\n        end = new TZDate(start).addDate(days - 1);\n        x = getIdxFromDiff(date, start);\n        y += (isBefore ? -1 : 1);\n    }\n\n    return [x, y];\n};\n\n/**\n * Get limited coordinate by supplied coodinates\n * @param {number[]} coord - coordinate need to limit\n * @param {number[]} [min] - minimum limitaion of coordinate\n * @param {number[]} [max] - maximum limitation of coordinate\n * @returns {number[]} limited coordiate\n */\nMonthGuide.prototype._getLimitedCoord = function(coord, min, max) {\n    var toIndex = 1,\n        x = coord[0],\n        y = coord[1],\n        result;\n\n    min = min || [0, 0];\n    max = max || [this.days - toIndex, this.weeks.length - toIndex];\n\n    if (y < min[1]) {\n        result = min.slice(0);\n    } else if (y > max[1]) {\n        result = max.slice(0);\n    } else {\n        x = mmax(min[0], x);\n        x = mmin(max[0], x);\n        result = [x, y];\n    }\n\n    return result;\n};\n\n/**\n * Prepare guide element modification\n * @param {object} dragStartEvent - dragStart schedule data from *guide\n */\nMonthGuide.prototype.start = function(dragStartEvent) {\n    var opt = this.options,\n        target = dragStartEvent.target,\n        model = dragStartEvent.model,\n        x = dragStartEvent.x,\n        y = dragStartEvent.y,\n        renderMonth = new TZDate(this.view.options.renderMonth),\n        temp;\n\n    if (opt.isCreationMode) {\n        if (model && !datetime.isSameMonth(renderMonth, model.start)) {\n            model.start.setMonth(renderMonth.getMonth());\n            model.start.setDate(1);\n            model.end.setMonth(renderMonth.getMonth());\n            model.end.setDate(1);\n        }\n    } else {\n        temp = this._getCoordByDate(model.getStarts());\n        x = temp[0];\n        y = temp[1];\n\n        util.extend(this.options, {\n            top: parseInt(target.style.top, 10) + 'px',\n            height: parseInt(target.style.height, 10) + 'px',\n            label: model.title\n        }, model);\n    }\n\n    if (util.isUndefined(x) || util.isUndefined(y)) {\n        temp = this._getCoordByDate(model.getStarts());\n        x = temp[0];\n        y = temp[1];\n    }\n\n    this.startCoord = [x, y];\n    this.update(x, y);\n};\n\n/**\n * Data for update several guide elements\n * @typedef UpdateIndication\n * @type {object}\n * @property {HTMLElement} guide - guide element\n * @property {number} left - left style value\n * @property {number} width - width style value\n * @property {boolean} [exceedL=false] - whether schedule is exceeded past weeks?\n * @property {boolean} [exceedR=false] - whether schedule is exceeded future weeks?\n */\n\n/**\n * Modify HTML element that uses for guide element\n * @param {UpdateIndication[]} inds - indication of update severel guide element\n */\nMonthGuide.prototype._updateGuides = function(inds) {\n    util.forEach(inds, function(ind) {\n        var guide = ind.guide,\n            exceedLClass = config.classname('month-exceed-left'),\n            exceedRClass = config.classname('month-exceed-right');\n\n        guide.style.display = 'block';\n        guide.style.left = ind.left + '%';\n        guide.style.width = ind.width + '%';\n\n        if (ind.exceedL) {\n            domutil.addClass(guide, exceedLClass);\n        } else {\n            domutil.removeClass(guide, exceedLClass);\n        }\n\n        if (ind.exceedR) {\n            domutil.addClass(guide, exceedRClass);\n        } else {\n            domutil.removeClass(guide, exceedRClass);\n        }\n    });\n};\n\n/**\n * Get guide element indicate for origin week\n * @param {number[]} startCoord - drag start coordinate\n * @param {number[]} mouseCoord - mouse coordinate\n * @returns {object} indicate\n */\nMonthGuide.prototype._getOriginIndicate = function(startCoord, mouseCoord) {\n    var left = mmin(startCoord[0], mouseCoord[0]),\n        right = mmax(startCoord[0], mouseCoord[0]) + 1,\n        exceedL, exceedR;\n\n    if (mouseCoord[1] > startCoord[1]) {\n        left = startCoord[0];\n        right = this.days;\n        exceedR = true;\n    } else if (mouseCoord[1] < startCoord[1]) {\n        left = 0;\n        right = startCoord[0] + 1;\n        exceedL = true;\n    }\n\n    return {\n        left: this._getRatioValueInWeek(left),\n        width: this._getRatioValueInWeek(right) -\n            this._getRatioValueInWeek(left),\n        exceedL: exceedL,\n        exceedR: exceedR\n    };\n};\n\n/**\n * Get guide element indicate for week related with mouse position\n * @param {number[]} startCoord - drag start coordinate\n * @param {number[]} mouseCoord - mouse coordinate\n * @returns {object} indicate\n */\nMonthGuide.prototype._getMouseIndicate = function(startCoord, mouseCoord) {\n    var left = mouseCoord[0],\n        right = mouseCoord[0] + 1,\n        exceedL, exceedR;\n\n    if (mouseCoord[1] > startCoord[1]) {\n        left = 0;\n        exceedL = true;\n    } else if (mouseCoord[1] < startCoord[1]) {\n        right = this.days;\n        exceedR = true;\n    }\n\n    return {\n        left: this._getRatioValueInWeek(left),\n        width: this._getRatioValueInWeek(right) -\n            this._getRatioValueInWeek(left),\n        exceedL: exceedL,\n        exceedR: exceedR\n    };\n};\n\n/**\n * Get guide element indicate for contained weeks\n * @returns {object} indicate\n */\nMonthGuide.prototype._getContainIndicate = function() {\n    return {\n        left: 0,\n        width: 100,\n        exceedL: true,\n        exceedR: true\n    };\n};\n\n/**\n * Remove several guide element that supplied by parameter\n * @param {number[]} yCoords - array of y coordinate to remove guide element\n */\nMonthGuide.prototype._removeGuideElements = function(yCoords) {\n    var guides = this.guideElements;\n\n    util.forEach(yCoords, function(y) {\n        domutil.remove(guides[y]);\n        delete guides[y];\n    });\n};\n\n/**\n * Get excluded numbers in range\n * @param {number[]} range - the range. value must be sequencial.\n * @param {number[]} numbers - numbers to check\n * @returns {number[]} excluded numbers\n */\nMonthGuide.prototype._getExcludesInRange = function(range, numbers) {\n    var min = mmin.apply(null, range),\n        max = mmax.apply(null, range),\n        excludes = [];\n\n    util.forEach(numbers, function(num) {\n        num = parseInt(num, 10);\n        if (num < min || num > max) {\n            excludes.push(num);\n        }\n    });\n\n    return excludes;\n};\n\n/**\n * Update guide elements by coordinate in month grid from mousemove event\n * @param {number} x - x coordinate\n * @param {number} y - y coordinate\n */\nMonthGuide.prototype.update = function(x, y) {\n    var self = this,\n        startCoord = this.startCoord,\n        mouseCoord = [x, y],\n        limitedCoord = this.options.isResizeMode ?\n            this._getLimitedCoord(mouseCoord, startCoord) : mouseCoord,\n        renderedYIndex = util.keys(this.guideElements),\n        yCoordsToUpdate = util.range(\n            mmin(startCoord[1], limitedCoord[1]),\n            mmax(startCoord[1], limitedCoord[1]) + 1\n        ),\n        yCoordsToRemove = this._getExcludesInRange(\n            yCoordsToUpdate,\n            renderedYIndex\n        ),\n        renderIndication = {};\n\n    this._removeGuideElements(yCoordsToRemove);\n\n    util.forEach(yCoordsToUpdate, function(guideYCoord) {\n        var guide = self._getGuideElement(guideYCoord),\n            indicate;\n\n        if (!guide) {\n            return;\n        }\n\n        if (guideYCoord === startCoord[1]) {\n            indicate = self._getOriginIndicate(startCoord, limitedCoord);\n        } else if (guideYCoord === mouseCoord[1]) {\n            indicate = self._getMouseIndicate(startCoord, mouseCoord);\n        } else {\n            indicate = self._getContainIndicate();\n        }\n\n        renderIndication[guideYCoord] = util.extend({\n            guide: guide\n        }, indicate);\n    });\n\n    this._updateGuides(renderIndication);\n};\n\n/**\n * Clear all guide elements\n */\nMonthGuide.prototype.clear = function() {\n    util.forEach(this.guideElements, function(element) {\n        domutil.remove(element);\n    });\n\n    this.guideElements = {};\n};\n\n/**\n * Get the styles from theme\n * @param {Theme} theme - theme instance\n * @returns {object} styles - styles object\n */\nMonthGuide.prototype._getStyles = function(theme) {\n    var styles = {};\n\n    if (theme) {\n        styles.border = theme.common.creationGuide.border;\n        styles.backgroundColor = theme.common.creationGuide.backgroundColor;\n        styles.scheduleHeight = theme.month.schedule.height;\n        styles.scheduleGutter = theme.month.schedule.marginTop;\n        styles.marginLeft = theme.month.schedule.marginLeft;\n        styles.marginRight = theme.month.schedule.marginRight;\n        styles.borderRadius = theme.month.schedule.borderRadius;\n    }\n\n    return styles;\n};\n\nmodule.exports = MonthGuide;\n","/**\n * @fileoverview The entry file of fullcalendar\n * @author NHN FE Development Lab\n */\n\n'use strict';\n\nvar util = require('tui-code-snippet');\nvar Calendar = require('./js/factory/calendar');\n\nrequire('./css/main.styl');\nrequire('./js/view/template/helper');\n\n// for jquery\nif (global.jQuery) {\n    global.jQuery.fn.tuiCalendar = function() {\n        var options, instance;\n\n        var el = this.get(0);\n        var args = Array.prototype.slice.apply(arguments);\n\n        if (el) {\n            options = util.pick(args, 0) || {};\n\n            instance = global.jQuery.data(el, 'tuiCalendar');\n\n            if (instance) {\n                if (typeof options === 'string' && instance[options]) {\n                    return instance[options].apply(instance, args.slice(1));\n                }\n            } else {\n                instance = new Calendar(el, options);\n                global.jQuery.data(el, 'tuiCalendar', instance);\n            }\n        }\n\n        return this;\n    };\n}\n\nmodule.exports = Calendar;\n","/**\n * @fileoverview Factory module for control all other factory.\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\nvar GA_TRACKING_ID = 'UA-129951699-1';\n\nvar util = require('tui-code-snippet'),\n    Handlebars = require('handlebars-template-loader/runtime');\nvar dw = require('../common/dw'),\n    datetime = require('../common/datetime'),\n    Layout = require('../view/layout'),\n    Drag = require('../handler/drag'),\n    controllerFactory = require('./controller'),\n    weekViewFactory = require('./weekView'),\n    monthViewFactory = require('./monthView'),\n    TZDate = require('../common/timezone').Date,\n    config = require('../config'),\n    timezone = require('../common/timezone'),\n    reqAnimFrame = require('../common/reqAnimFrame');\n\nvar mmin = Math.min;\n\n/**\n * Schedule information\n * @typedef {object} Schedule\n * @property {string} [id] - The unique schedule id depends on calendar id\n * @property {string} calendarId - The unique calendar id\n * @property {string} [title] - The schedule title\n * @property {string} [body] - The schedule body text which is text/plain\n * @property {string|TZDate} [start] - The start time. It's 'string' for input. It's 'TZDate' for output like event handler.\n * @property {string|TZDate} [end] - The end time. It's 'string' for input. It's 'TZDate' for output like event handler.\n * @property {number} [goingDuration] - The travel time: Going duration minutes\n * @property {number} [comingDuration] - The travel time: Coming duration minutes\n * @property {boolean} [isAllDay] - The all day schedule\n * @property {string} [category] - The schedule type('milestone', 'task', allday', 'time')\n * @property {string} [dueDateClass] - The task schedule type string\n *                                   (any string value is ok and mandatory if category is 'task')\n * @property {string} [location] - The location\n * @property {Array.<string>} [attendees] - The attendees\n * @property {string} [recurrenceRule] - The recurrence rule\n * @property {boolean} [isPending] - The in progress flag to do something like network job(The schedule will be transparent.)\n * @property {boolean} [isFocused] - The focused schedule flag\n * @property {boolean} [isVisible] - The schedule visibility flag\n * @property {boolean} [isReadOnly] - The schedule read-only flag\n * @property {boolean} [isPrivate] - The private schedule\n * @property {string} [color] - The schedule text color\n * @property {string} [bgColor] - The schedule background color\n * @property {string} [dragBgColor] - The schedule background color when dragging it\n * @property {string} [borderColor] - The schedule left border color\n * @property {string} [customStyle] - The schedule's custom css class\n * @property {any} [raw] - The user data\n * @property {string} [state] - The schedule's state ('busy', 'free')\n */\n\n/**\n * Template functions to support customer renderer\n * @typedef {object} Template\n * @property {function} [milestoneTitle] - The milestone title(at left column) template function\n * @property {function} [milestone] - The milestone template function\n * @property {function} [taskTitle] - The task title(at left column) template function\n * @property {function} [task] - The task template function\n * @property {function} [alldayTitle] - The allday title(at left column) template function\n * @property {function} [allday] - The allday template function\n * @property {function} [time] - The time template function\n * @property {function} [goingDuration] - The travel time(going duration) template function\n * @property {function} [comingDuration] - The travel time(coming duration) template function\n * @property {function} [monthMoreTitleDate] - The month more layer title template function\n * @property {function} [monthMoreClose] - The month more layer close button template function\n * @property {function} [monthGridHeader] - The month grid header(date, decorator, title) template function\n * @property {function} [monthGridHeaderExceed] - The month grid header(exceed schedule count) template function\n * @property {function} [monthGridFooter] - The month grid footer(date, decorator, title) template function\n * @property {function} [monthGridFooterExceed] - The month grid footer(exceed schedule count) template function\n * @property {function} [monthDayname] - The monthly dayname template function\n * @property {function} [weekDayname] - The weekly dayname template function\n * @property {function} [weekGridFooterExceed] - The week/day grid footer(exceed schedule count) template function\n * @property {function} [dayGridTitle] - The week/day grid title template function(e.g. milestone, task, allday)\n * @property {function} [schedule] - The week/day schedule template function(When the schedule category attribute is milestone, task, or all day)\n * @property {function} [collapseBtnTitle] - The week/day (exceed schedule more view) collapse button title template function\n * @property {function} [timezoneDisplayLabel] - The timezone display label template function in time grid\n * @property {function} [timegridDisplayPrimayTime] - Deprecated: use 'timegridDisplayPrimaryTime'\n * @property {function} [timegridDisplayPrimaryTime] - The display label template function of primary timezone in time grid\n * @property {function} [timegridDisplayTime] - The display time template function in time grid\n * @property {function} [timegridCurrentTime] - The current time template function in time grid\n * @property {function} [popupIsAllDay] - The all day checkbox label text template function in the default creation popup\n * @property {function} [popupStateFree] - The free option template function in the state select box of the default creation popup\n * @property {function} [popupStateBusy] - The busy option template function in the state select box of the default creation popup\n * @property {function} [titlePlaceholder] - The title input placeholder text template function in the default creation popup\n * @property {function} [locationPlaceholder] - The location input placeholder text template function in the default creation popup\n * @property {function} [startDatePlaceholder] - The start date input placeholder text template function in the default creation popup\n * @property {function} [endDatePlaceholder] - The end date input placeholder text template function in the default creation popup\n * @property {function} [popupSave] - The 'Save' button text template function in the default creation popup\n * @property {function} [popupUpdate] - The 'Update' button text template function in the default creation popup when in edit mode\n * @property {function} [popupDetailDate] - The schedule date information's template function on the default detail popup\n * @property {function} [popupDetailLocation] - The schedule location text information's template function on the default detail popup\n * @property {function} [popupDetailUser] - The schedule user text information's template function on the default detail popup\n * @property {function} [popupDetailState] - The schedule state(busy or free) text information's template function on the default detail popup\n * @property {function} [popupDetailRepeat] - The schedule repeat information's template function on the default detail popup\n * @property {function} [popupDetailBody] - The schedule body text information's template function on the default detail popup\n * @property {function} [popupEdit] - The 'Edit' button text template function on the default detail popup\n * @property {function} [popupDelete] - The 'Delete' button text template function on the default detail popup\n * @example\n * var calendar = new tui.Calendar(document.getElementById('calendar'), {\n *     ...\n *     template: {\n *         milestone: function(schedule) {\n *             return '<span class=\"calendar-font-icon ic-milestone-b\"></span> <span style=\"background-color: ' + schedule.bgColor + '\">' + schedule.title + '</span>';\n *         },\n *         milestoneTitle: function() {\n *             return '<span class=\"tui-full-calendar-left-content\">MILESTONE</span>';\n *         },\n *         task: function(schedule) {\n *             return '#' + schedule.title;\n *         },\n *         taskTitle: function() {\n *             return '<span class=\"tui-full-calendar-left-content\">TASK</span>';\n *         },\n *         allday: function(schedule) {\n *             return getTimeTemplate(schedule, true);\n *         },\n *         alldayTitle: function() {\n *             return '<span class=\"tui-full-calendar-left-content\">ALL DAY</span>';\n *         },\n *         time: function(schedule) {\n *             return '<strong>' + moment(schedule.start.getTime()).format('HH:mm') + '</strong> ' + schedule.title;\n *         },\n *         goingDuration: function(schedule) {\n *             return '<span class=\"calendar-icon ic-travel-time\"></span>' + schedule.goingDuration + 'min.';\n *         },\n *         comingDuration: function(schedule) {\n *             return '<span class=\"calendar-icon ic-travel-time\"></span>' + schedule.comingDuration + 'min.';\n *         },\n *         monthMoreTitleDate: function(date, dayname) {\n *             var day = date.split('.')[2];\n *\n *             return '<span class=\"tui-full-calendar-month-more-title-day\">' + day + '</span> <span class=\"tui-full-calendar-month-more-title-day-label\">' + dayname + '</span>';\n *         },\n *         monthMoreClose: function() {\n *             return '<span class=\"tui-full-calendar-icon tui-full-calendar-ic-close\"></span>';\n *         },\n *         monthGridHeader: function(dayModel) {\n *             var date = parseInt(dayModel.date.split('-')[2], 10);\n *             var classNames = ['tui-full-calendar-weekday-grid-date '];\n *\n *             if (dayModel.isToday) {\n *                 classNames.push('tui-full-calendar-weekday-grid-date-decorator');\n *             }\n *\n *             return '<span class=\"' + classNames.join(' ') + '\">' + date + '</span>';\n *         },\n *         monthGridHeaderExceed: function(hiddenSchedules) {\n *             return '<span class=\"weekday-grid-more-schedules\">+' + hiddenSchedules + '</span>';\n *         },\n *         monthGridFooter: function() {\n *             return '';\n *         },\n *         monthGridFooterExceed: function(hiddenSchedules) {\n *             return '';\n *         },\n *         monthDayname: function(model) {\n *             return (model.label).toString().toLocaleUpperCase();\n *         },\n *         weekDayname: function(model) {\n *             return '<span class=\"tui-full-calendar-dayname-date\">' + model.date + '</span>&nbsp;&nbsp;<span class=\"tui-full-calendar-dayname-name\">' + model.dayName + '</span>';\n *         },\n *         weekGridFooterExceed: function(hiddenSchedules) {\n *             return '+' + hiddenSchedules;\n *         },\n *         dayGridTitle: function(viewName) {\n *\n *             // use another functions instead of 'dayGridTitle'\n *             // milestoneTitle: function() {...}\n *             // taskTitle: function() {...}\n *             // alldayTitle: function() {...}\n *\n *             var title = '';\n *             switch(viewName) {\n *                 case 'milestone':\n *                     title = '<span class=\"tui-full-calendar-left-content\">MILESTONE</span>';\n *                     break;\n *                 case 'task':\n *                     title = '<span class=\"tui-full-calendar-left-content\">TASK</span>';\n *                     break;\n *                 case 'allday':\n *                     title = '<span class=\"tui-full-calendar-left-content\">ALL DAY</span>';\n *                     break;\n *             }\n *\n *             return title;\n *         },\n *         schedule: function(schedule) {\n *\n *             // use another functions instead of 'schedule'\n *             // milestone: function() {...}\n *             // task: function() {...}\n *             // allday: function() {...}\n *\n *             var tpl;\n *\n *             switch(category) {\n *                 case 'milestone':\n *                     tpl = '<span class=\"calendar-font-icon ic-milestone-b\"></span> <span style=\"background-color: ' + schedule.bgColor + '\">' + schedule.title + '</span>';\n *                     break;\n *                 case 'task':\n *                     tpl = '#' + schedule.title;\n *                     break;\n *                 case 'allday':\n *                     tpl = getTimeTemplate(schedule, true);\n *                     break;\n *             }\n *\n *             return tpl;\n *         },\n *         collapseBtnTitle: function() {\n *             return '<span class=\"tui-full-calendar-icon tui-full-calendar-ic-arrow-solid-top\"></span>';\n *         },\n *         timezoneDisplayLabel: function(timezoneOffset, displayLabel) {\n *             var gmt, hour, minutes;\n *\n *             if (!displayLabel) {\n *                 gmt = timezoneOffset < 0 ? '-' : '+';\n *                 hour = Math.abs(parseInt(timezoneOffset / 60, 10));\n *                 minutes = Math.abs(timezoneOffset % 60);\n *                 displayLabel = gmt + getPadStart(hour) + ':' + getPadStart(minutes);\n *             }\n *\n *             return displayLabel;\n *         },\n *         timegridDisplayPrimayTime: function(time) {\n *             // will be deprecated. use 'timegridDisplayPrimaryTime'\n *             var meridiem = 'am';\n *             var hour = time.hour;\n *\n *             if (time.hour > 12) {\n *                 meridiem = 'pm';\n *                 hour = time.hour - 12;\n *             }\n *\n *             return hour + ' ' + meridiem;\n *         },\n *         timegridDisplayPrimaryTime: function(time) {\n *             var meridiem = 'am';\n *             var hour = time.hour;\n *\n *             if (time.hour > 12) {\n *                 meridiem = 'pm';\n *                 hour = time.hour - 12;\n *             }\n *\n *             return hour + ' ' + meridiem;\n *         },\n *         timegridDisplayTime: function(time) {\n *             return getPadStart(time.hour) + ':' + getPadStart(time.hour);\n *         },\n *         timegridCurrentTime: function(timezone) {\n *             var templates = [];\n *\n *             if (timezone.dateDifference) {\n *                 templates.push('[' + timezone.dateDifferenceSign + timezone.dateDifference + ']<br>');\n *             }\n *\n *             templates.push(moment(timezone.hourmarker).format('HH:mm a'));\n *\n *             return templates.join('');\n *         },\n *         popupIsAllDay: function() {\n *             return 'All Day';\n *         },\n *         popupStateFree: function() {\n *             return 'Free';\n *         },\n *         popupStateBusy: function() {\n *             return 'Busy';\n *         },\n *         titlePlaceholder: function() {\n *             return 'Subject';\n *         },\n *         locationPlaceholder: function() {\n *             return 'Location';\n *         },\n *         startDatePlaceholder: function() {\n *             return 'Start date';\n *         },\n *         endDatePlaceholder: function() {\n *             return 'End date';\n *         },\n *         popupSave: function() {\n *             return 'Save';\n *         },\n *         popupUpdate: function() {\n *             return 'Update';\n *         },\n *         popupDetailDate: function(isAllDay, start, end) {\n *             var isSameDate = moment(start).isSame(end);\n *             var endFormat = (isSameDate ? '' : 'YYYY.MM.DD ') + 'hh:mm a';\n *\n *             if (isAllDay) {\n *                 return moment(start).format('YYYY.MM.DD') + (isSameDate ? '' : ' - ' + moment(end).format('YYYY.MM.DD'));\n *             }\n *\n *             return (moment(start).format('YYYY.MM.DD hh:mm a') + ' - ' + moment(end).format(endFormat));\n *         },\n *         popupDetailLocation: function(schedule) {\n *             return 'Location : ' + schedule.location;\n *         },\n *         popupDetailUser: function(schedule) {\n *             return 'User : ' + (schedule.attendees || []).join(', ');\n *         },\n *         popupDetailState: function(schedule) {\n *             return 'State : ' + schedule.state || 'Busy';\n *         },\n *         popupDetailRepeat: function(schedule) {\n *             return 'Repeat : ' + schedule.recurrenceRule;\n *         },\n *         popupDetailBody: function(schedule) {\n *             return 'Body : ' + schedule.body;\n *         },\n *         popupEdit: function() {\n *             return 'Edit';\n *         },\n *         popupDelete: function() {\n *             return 'Delete';\n *         }\n *     }\n * }\n */\n\n/**\n * Options for daily, weekly view.\n * @typedef {object} WeekOptions\n * @property {number} [startDayOfWeek=0] - The start day of week,\n * @property {Array.<string>} [daynames] - The day names in weekly and daily. Default values are ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat']\n * @property {boolean} [narrowWeekend=false] - Make weekend column narrow(1/2 width)\n * @property {boolean} [workweek=false] - Show only 5 days except for weekend\n * @property {boolean} [showTimezoneCollapseButton=false] - Show a collapse button to close multiple timezones\n * @property {boolean} [timezonesCollapsed=false] - An initial multiple timezones collapsed state\n * @property {number} [hourStart=0] - Can limit of render hour start.\n * @property {number} [hourEnd=24] - Can limit of render hour end.\n */\n\n/**\n * Options for monthly view.\n * @typedef {object} MonthOptions\n * @property {Array.<string>} [daynames] - The day names in monthly. Default values are ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat']\n * @property {number} [startDayOfWeek=0] - The start day of week\n * @property {boolean} [narrowWeekend=false] - Make weekend column narrow(1/2 width)\n * @property {number} [visibleWeeksCount=6] - The visible week count in monthly(0 or null are same with 6)\n * @property {boolean} [isAlways6Week=true] - Always show 6 weeks. If false, show 5 weeks or 6 weeks based on the month.\n * @property {boolean} [workweek=false] - Show only 5 days except for weekend\n * @property {number} [visibleScheduleCount] - The visible schedule count in monthly grid\n * @property {object} [moreLayerSize] - The more layer size\n * @property {object} [moreLayerSize.width=null] - The css width value(px, 'auto').\n*                                                  The default value 'null' is to fit a grid cell.\n * @property {object} [moreLayerSize.height=null] - The css height value(px, 'auto').\n*                                                   The default value 'null' is to fit a grid cell.\n * @property {object} [grid] - The grid's header and footer information\n *  @property {object} [grid.header] - The grid's header informatioin\n *   @property {number} [grid.header.height=34] - The grid's header height\n *  @property {object} [grid.footer] - The grid's footer informatioin\n *   @property {number} [grid.footer.height=34] - The grid's footer height\n * @property {function} [scheduleFilter=null] - The filter schedules on month view. A parameter is {Schedule} object.\n */\n\n/**\n * @typedef {object} CalendarColor\n * @property {string} [color] - The calendar color\n * @property {string} [bgColor] - The calendar background color\n * @property {string} [borderColor] - The calendar left border color\n * @property {string} [dragBgColor] - The Background color displayed when you drag a calendar's schedule\n */\n\n/**\n * @typedef {object} Timezone\n * @property {number} [timezoneOffset] - The minutes for your timezone offset. If null, use the browser's timezone. Refer to Date.prototype.getTimezoneOffset()\n * @property {string} [displayLabel] -  The display label of your timezone at weekly/daily view(e.g. 'GMT+09:00')\n * @property {string} [tooltip] -  The tooltip(e.g. 'Seoul')\n * @example\n * var cal = new Calendar('#calendar', {\n *  timezones: [{\n *      timezoneOffset: 540,\n *      displayLabel: 'GMT+09:00',\n *      tooltip: 'Seoul'\n *  }, {\n *      timezoneOffset: -420,\n *      displayLabel: 'GMT-08:00',\n *      tooltip: 'Los Angeles'\n *  }]\n * });\n */\n\n/**\n * @typedef {object} CalendarProps\n * @property {string|number} id - The calendar id\n * @property {string} name - The calendar name\n * @property {string} color - The text color when schedule is displayed\n * @property {string} bgColor - The background color schedule is displayed\n * @property {string} borderColor - The color of left border or bullet point when schedule is displayed\n * @property {string} dragBgColor - The background color when schedule dragging\n * @example\n * var cal = new Calendar('#calendar', {\n *   ...\n *   calendars: [\n *     {\n *       id: '1',\n *       name: 'My Calendar',\n *       color: '#ffffff',\n *       bgColor: '#9e5fff',\n *       dragBgColor: '#9e5fff',\n *       borderColor: '#9e5fff'\n *     },\n *     {\n *       id: '2',\n *       name: 'Company',\n *       color: '#00a9ff',\n *       bgColor: '#00a9ff',\n *       dragBgColor: '#00a9ff',\n *       borderColor: '#00a9ff'\n *     },\n *   ]\n * });\n */\n\n/**\n * @typedef {object} Options - Calendar option object\n * @property {string} [defaultView='week'] - Default view of calendar. The default value is 'week'.\n * @property {boolean|Array.<string>} [taskView=true] - Show the milestone and task in weekly, daily view. The default value is true. If the value is array, it can be &#91;'milestone', 'task'&#93;.\n * @property {boolean|Array.<string>} [scheduleView=true] - Show the all day and time grid in weekly, daily view. The default value is false. If the value is array, it can be &#91;'allday', 'time'&#93;.\n * @property {themeConfig} [theme=themeConfig] - {@link themeConfig} for custom style.\n * @property {Template} [template={}] - {@link Template} for further information\n * @property {WeekOptions} [week={}] - {@link WeekOptions} for week view\n * @property {MonthOptions} [month={}] - {@link MonthOptions} for month view\n * @property {Array.<CalendarProps>} [calendars=[]] - {@link CalendarProps} List that can be used to add new schedule. The default value is [].\n * @property {boolean} [useCreationPopup=false] - Whether use default creation popup or not. The default value is false.\n * @property {boolean} [useDetailPopup=false] - Whether use default detail popup or not. The default value is false.\n * @property {Array.<Timezone>} [timezones] - {@link Timezone} array.\n *  The first Timezone element is primary and can override Calendar#setTimezoneOffset function\n *  The rest timezone elements are shown in left timegrid of weekly/daily view\n * @property {boolean} [disableDblClick=false] - Disable double click to create a schedule. The default value is false.\n * @property {boolean} [disableClick=false] - Disable click to create a schedule. The default value is false.\n * @property {boolean} [isReadOnly=false] - {@link Calendar} is read-only mode and a user can't create and modify any schedule. The default value is false.\n * @property {boolean} [usageStatistics=true] - Let us know the hostname. If you don't want to send the hostname, please set to false.\n */\n\n/**\n * {@link https://nhn.github.io/tui.code-snippet/latest/CustomEvents CustomEvents} document at {@link https://github.com/nhn/tui.code-snippet tui-code-snippet}\n * @typedef {class} CustomEvents\n */\n\n/**\n * @typedef {object} TimeCreationGuide - Time creation guide instance to present selected time period\n * @property {HTMLElement} guideElement - Guide element\n * @property {Object.<string, HTMLElement>} guideElements - Map by key. It can be used in monthly view\n * @property {function} clearGuideElement - Hide the creation guide\n * @example\n * calendar.on('beforeCreateSchedule', function(event) {\n *     var guide = event.guide;\n *     // Use guideEl$'s left, top to locate your schedule creation popup\n *     var guideEl$ = guide.guideElement ?\n *          guide.guideElement : guide.guideElements[Object.keys(guide.guideElements)[0]];\n *\n *     // After that call this to hide the creation guide\n *     guide.clearGuideElement();\n * });\n */\n\n/**\n * Calendar class\n * @constructor\n * @mixes CustomEvents\n * @param {HTMLElement|string} container - The container element or selector id\n * @param {Options} options - The calendar {@link Options} object\n * @example\n * var calendar = new tui.Calendar(document.getElementById('calendar'), {\n *     defaultView: 'week',\n *     taskView: true,    // Can be also ['milestone', 'task']\n *     scheduleView: true,  // Can be also ['allday', 'time']\n *     template: {\n *         milestone: function(schedule) {\n *             return '<span style=\"color:red;\"><i class=\"fa fa-flag\"></i> ' + schedule.title + '</span>';\n *         },\n *         milestoneTitle: function() {\n *             return 'Milestone';\n *         },\n *         task: function(schedule) {\n *             return '&nbsp;&nbsp;#' + schedule.title;\n *         },\n *         taskTitle: function() {\n *             return '<label><input type=\"checkbox\" />Task</label>';\n *         },\n *         allday: function(schedule) {\n *             return schedule.title + ' <i class=\"fa fa-refresh\"></i>';\n *         },\n *         alldayTitle: function() {\n *             return 'All Day';\n *         },\n *         time: function(schedule) {\n *             return schedule.title + ' <i class=\"fa fa-refresh\"></i>' + schedule.start;\n *         }\n *     },\n *     month: {\n *         daynames: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n *         startDayOfWeek: 0,\n *         narrowWeekend: true\n *     },\n *     week: {\n *         daynames: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n *         startDayOfWeek: 0,\n *         narrowWeekend: true\n *     }\n * });\n */\nfunction Calendar(container, options) {\n    options = util.extend({\n        usageStatistics: true\n    }, options);\n\n    if (options.usageStatistics === true && util.sendHostname) {\n        util.sendHostname('calendar', GA_TRACKING_ID);\n    }\n\n    if (util.isString(container)) {\n        container = document.querySelector(container);\n    }\n\n    /**\n     * Calendar color map\n     * @type {object}\n     * @private\n     */\n    this._calendarColor = {};\n\n    /**\n     * Current rendered date\n     * @type {TZDate}\n     * @private\n     */\n    this._renderDate = datetime.start();\n\n    /**\n     * start and end date of weekly, monthly\n     * @type {object}\n     * @private\n     */\n    this._renderRange = {\n        start: null,\n        end: null\n    };\n\n    /**\n     * base controller\n     * @type {Base}\n     * @private\n     */\n    this._controller = _createController(options);\n    this._controller.setCalendars(options.calendars);\n\n    /**\n     * layout view (layout manager)\n     * @type {Layout}\n     * @private\n     */\n    this._layout = new Layout(container, this._controller.theme);\n\n    /**\n     * global drag handler\n     * @type {Drag}\n     * @private\n     */\n    this._dragHandler = new Drag({distance: 10}, this._layout.container);\n\n    /**\n     * current rendered view name. ('day', 'week', 'month')\n     * @type {string}\n     * @default 'week'\n     * @private\n     */\n    this._viewName = options.defaultView || 'week';\n\n    /**\n     * Refresh method. it can be ref different functions for each view modes.\n     * @type {function}\n     * @private\n     */\n    this._refreshMethod = null;\n\n    /**\n     * Scroll to now. It can be called for 'week', 'day' view modes.\n     * @type {function}\n     * @private\n     */\n    this._scrollToNowMethod = null;\n\n    /**\n     * It's true if Calendar.prototype.scrollToNow() is called.\n     * @type {boolean}\n     * @private\n     */\n    this._requestScrollToNow = false;\n\n    /**\n     * Open schedule creation popup\n     * @type {function}\n     * @private\n     */\n    this._openCreationPopup = null;\n\n    /**\n     * Hide the more view\n     * @type {function}\n     * @private\n     */\n    this._hideMoreView = null;\n\n    /**\n     * Unique id for requestAnimFrame()\n     * @type {number}\n     * @private\n     */\n    this._requestRender = 0;\n\n    /**\n     * calendar options\n     * @type {Options}\n     * @private\n     */\n    this._options = {};\n\n    this._initialize(options);\n}\n\n/**\n * destroy calendar instance.\n */\nCalendar.prototype.destroy = function() {\n    this._dragHandler.destroy();\n    this._controller.off();\n    this._layout.clear();\n    this._layout.destroy();\n\n    util.forEach(this._options.template, function(func, name) {\n        if (func) {\n            Handlebars.unregisterHelper(name + '-tmpl');\n        }\n    });\n\n    this._options = this._renderDate = this._controller =\n        this._layout = this._dragHandler = this._viewName =\n        this._refreshMethod = this._scrollToNowMethod = null;\n};\n\n/**\n * Initialize calendar\n * @param {Options} options - calendar options\n * @private\n */\nCalendar.prototype._initialize = function(options) {\n    var controller = this._controller,\n        viewName = this._viewName;\n\n    this._options = util.extend({\n        defaultView: viewName,\n        taskView: true,\n        scheduleView: true,\n        template: util.extend({\n            allday: null,\n            time: null\n        }, util.pick(options, 'template') || {}),\n        week: util.extend({}, util.pick(options, 'week') || {}),\n        month: util.extend({}, util.pick(options, 'month') || {}),\n        calendars: [],\n        useCreationPopup: false,\n        useDetailPopup: false,\n        timezones: options.timezones || [],\n        disableDblClick: false,\n        disableClick: false,\n        isReadOnly: false\n    }, options);\n\n    this._options.week = util.extend({\n        startDayOfWeek: 0,\n        workweek: false\n    }, util.pick(this._options, 'week') || {});\n\n    this._options.month = util.extend({\n        startDayOfWeek: 0,\n        workweek: false,\n        scheduleFilter: function(schedule) {\n            return Boolean(schedule.isVisible) &&\n              (schedule.category === 'allday' || schedule.category === 'time');\n        }\n    }, util.pick(options, 'month') || {});\n\n    if (this._options.isReadOnly) {\n        this._options.useCreationPopup = false;\n    }\n\n    this._layout.controller = controller;\n\n    this._setAdditionalInternalOptions(options);\n\n    this.changeView(viewName, true);\n};\n\n/**\n * Set additional internal options\n * 1. Register to the template handlebar\n * 2. Update the calendar list and set the color of the calendar.\n * 3. Change the primary timezone offset of the timezones.\n * @param {Options} options - calendar options\n * @private\n */\nCalendar.prototype._setAdditionalInternalOptions = function(options) {\n    var timezones = options.timezones || [];\n\n    util.forEach(options.template, function(func, name) {\n        if (func) {\n            Handlebars.registerHelper(name + '-tmpl', func);\n        }\n    });\n\n    util.forEach(options.calendars || [], function(calendar) {\n        this.setCalendarColor(calendar.id, calendar, true);\n    }, this);\n\n    if (timezones.length) {\n        timezone.setOffsetByTimezoneOption(timezones[0].timezoneOffset);\n    }\n};\n\n/**********\n * CRUD Methods\n **********/\n\n/**\n * Create schedules and render calendar.\n * @param {Array.<Schedule>} schedules - {@link Schedule} data list\n * @param {boolean} [silent=false] - no auto render after creation when set true\n * @example\n * calendar.createSchedules([\n *     {\n *         id: '1',\n *         calendarId: '1',\n *         title: 'my schedule',\n *         category: 'time',\n *         dueDateClass: '',\n *         start: '2018-01-18T22:30:00+09:00',\n *         end: '2018-01-19T02:30:00+09:00'\n *     },\n *     {\n *         id: '2',\n *         calendarId: '1',\n *         title: 'second schedule',\n *         category: 'time',\n *         dueDateClass: '',\n *         start: '2018-01-18T17:30:00+09:00',\n *         end: '2018-01-19T17:31:00+09:00'\n *     }\n * ]);\n */\nCalendar.prototype.createSchedules = function(schedules, silent) {\n    util.forEach(schedules, function(obj) {\n        this._setScheduleColor(obj.calendarId, obj);\n    }, this);\n\n    this._controller.createSchedules(schedules, silent);\n\n    if (!silent) {\n        this.render();\n    }\n};\n\n/**\n * Get a {@link Schedule} object by schedule id and calendar id.\n * @param {string} scheduleId - ID of schedule\n * @param {string} calendarId - calendarId of the schedule\n * @returns {Schedule} schedule object\n * @example\n * var schedule = calendar.getSchedule(scheduleId, calendarId);\n * console.log(schedule.title);\n */\nCalendar.prototype.getSchedule = function(scheduleId, calendarId) {\n    return this._controller.schedules.single(function(model) {\n        return model.id === scheduleId && model.calendarId === calendarId;\n    });\n};\n\n/**\n * Update the schedule\n * @param {string} scheduleId - ID of the original schedule to update\n * @param {string} calendarId - The calendarId of the original schedule to update\n * @param {object} changes - The {@link Schedule} properties and values with changes to update\n * @param {boolean} [silent=false] - No auto render after creation when set true\n * @example\n * calendar.updateSchedule(schedule.id, schedule.calendarId, {\n *     title: 'Changed schedule',\n *     start: new Date('2019-11-05T09:00:00'),\n *     end: new Date('2019-11-05T10:00:00'),\n *     category: 'time'\n * });\n */\nCalendar.prototype.updateSchedule = function(scheduleId, calendarId, changes, silent) {\n    var ctrl = this._controller,\n        ownSchedules = ctrl.schedules,\n        schedule = ownSchedules.single(function(model) {\n            return model.id === scheduleId && model.calendarId === calendarId;\n        });\n    var hasChangedCalendar = false;\n\n    if (!changes || !schedule) {\n        return;\n    }\n\n    hasChangedCalendar = this._hasChangedCalendar(schedule, changes);\n    changes = hasChangedCalendar ?\n        this._setScheduleColor(changes.calendarId, changes) :\n        changes;\n\n    ctrl.updateSchedule(schedule, changes);\n\n    if (!silent) {\n        this.render();\n    }\n};\n\nCalendar.prototype._hasChangedCalendar = function(schedule, changes) {\n    return schedule &&\n        changes.calendarId &&\n        schedule.calendarId !== changes.calendarId;\n};\n\nCalendar.prototype._setScheduleColor = function(calendarId, schedule) {\n    var calColor = this._calendarColor;\n    var color = calColor[calendarId];\n\n    if (color) {\n        schedule.color = schedule.color || color.color;\n        schedule.bgColor = schedule.bgColor || color.bgColor;\n        schedule.borderColor = schedule.borderColor || color.borderColor;\n        schedule.dragBgColor = schedule.dragBgColor || color.dragBgColor;\n    }\n\n    return schedule;\n};\n\n/**\n * Delete a schedule.\n * @param {string} scheduleId - ID of schedule to delete\n * @param {string} calendarId - The CalendarId of the schedule to delete\n * @param {boolean} [silent=false] - No auto render after creation when set true\n */\nCalendar.prototype.deleteSchedule = function(scheduleId, calendarId, silent) {\n    var ctrl = this._controller,\n        ownSchedules = ctrl.schedules,\n        schedule = ownSchedules.single(function(model) {\n            return model.id === scheduleId && model.calendarId === calendarId;\n        });\n\n    if (!schedule) {\n        return;\n    }\n\n    ctrl.deleteSchedule(schedule);\n    if (!silent) {\n        this.render();\n    }\n};\n\n/**********\n * Private Methods\n **********/\n\n/**\n * @param {string|Date} date - The Date to show in calendar\n * @param {number} [startDayOfWeek=0] - The Start day of week\n * @param {boolean} [workweek=false] - The only show work week\n * @returns {array} render range\n * @private\n */\nCalendar.prototype._getWeekDayRange = function(date, startDayOfWeek, workweek) {\n    var day;\n    var start;\n    var end;\n    var range;\n\n    startDayOfWeek = (startDayOfWeek || 0); // eslint-disable-line\n    date = util.isDate(date) ? date : new TZDate(date);\n    day = date.getDay();\n\n    // calculate default render range first.\n    start = new TZDate(date).addDate(-day + startDayOfWeek);\n\n    end = new TZDate(start).addDate(6);\n\n    if (day < startDayOfWeek) {\n        start = new TZDate(start).addDate(-7);\n        end = new TZDate(end).addDate(-7);\n    }\n\n    if (workweek) {\n        range = datetime.range(\n            datetime.start(start),\n            datetime.end(end),\n            datetime.MILLISECONDS_PER_DAY\n        );\n\n        range = util.filter(range, function(weekday) {\n            return !datetime.isWeekend(weekday.getDay());\n        });\n\n        start = range[0];\n        end = range[range.length - 1];\n    }\n\n    start = datetime.start(start);\n    end = datetime.start(end);\n\n    return [start, end];\n};\n\n/**\n * Toggle schedules' visibility by calendar ID\n * @param {string} calendarId - The calendar id value\n * @param {boolean} toHide - Set true to hide schedules\n * @param {boolean} [render=true] - set true then render after change visible property each models\n */\nCalendar.prototype.toggleSchedules = function(calendarId, toHide, render) {\n    var ownSchedules = this._controller.schedules;\n\n    render = util.isExisty(render) ? render : true;\n    calendarId = util.isArray(calendarId) ? calendarId : [calendarId];\n\n    ownSchedules.each(function(schedule) {\n        if (~util.inArray(schedule.calendarId, calendarId)) {\n            schedule.set('isVisible', !toHide);\n        }\n    });\n\n    if (render) {\n        this.render();\n    }\n};\n\n/**********\n * General Methods\n **********/\n\n/**\n * Render the calendar. The real rendering occurs after requestAnimationFrame.\n * If you have to render immediately, use the 'immediately' parameter as true.\n * @param {boolean} [immediately=false] - Render it immediately\n * @example\n * var silent = true;\n * calendar.clear();\n * calendar.createSchedules(schedules, silent);\n * calendar.render();\n * @example\n * // Render a calendar when resizing a window.\n * window.addEventListener('resize', function() {\n *     calendar.render();\n * });\n */\nCalendar.prototype.render = function(immediately) {\n    if (this._requestRender) {\n        reqAnimFrame.cancelAnimFrame(this._requestRender);\n    }\n\n    if (immediately) {\n        this._renderFunc();\n    } else {\n        this._requestRender = reqAnimFrame.requestAnimFrame(this._renderFunc, this);\n    }\n};\n\n/**\n * Render and refresh all layout and process requests.\n * @private\n */\nCalendar.prototype._renderFunc = function() {\n    if (this._refreshMethod) {\n        this._refreshMethod();\n    }\n    if (this._layout) {\n        this._layout.render();\n    }\n    if (this._scrollToNowMethod && this._requestScrollToNow) {\n        this._scrollToNowMethod();\n    }\n\n    this._requestScrollToNow = false;\n    this._requestRender = null;\n};\n\n/**\n * Delete all schedules and clear view. The real rendering occurs after requestAnimationFrame.\n * If you have to render immediately, use the 'immediately' parameter as true.\n * @param {boolean} [immediately=false] - Render it immediately\n * @example\n * calendar.clear();\n * calendar.createSchedules(schedules, true);\n * calendar.render();\n */\nCalendar.prototype.clear = function(immediately) {\n    this._controller.clearSchedules();\n    this.render(immediately);\n};\n\n/**\n * Scroll to current time on today in case of daily, weekly view\n * @example\n * function onNewSchedules(schedules) {\n *     calendar.createSchedules(schedules);\n *     if (calendar.getViewName() !== 'month') {\n *         calendar.scrollToNow();\n *     }\n * }\n */\nCalendar.prototype.scrollToNow = function() {\n    if (this._scrollToNowMethod) {\n        this._requestScrollToNow = true;\n        // this._scrollToNowMethod() will be called at next frame rendering.\n    }\n};\n\n/**\n * Move to today.\n * @example\n * function onClickTodayBtn() {\n *     calendar.today();\n * }\n */\nCalendar.prototype.today = function() {\n    this._renderDate = datetime.start();\n\n    this._setViewName(this._viewName);\n    this.move();\n    this.render();\n};\n\n/**\n * Move the calendar amount of offset value\n * @param {number} offset - The offset value.\n * @private\n * @example\n * // move previous week when \"week\" view.\n * // move previous month when \"month\" view.\n * calendar.move(-1);\n */\nCalendar.prototype.move = function(offset) {\n    var renderDate = dw(datetime.start(this._renderDate)),\n        viewName = this._viewName,\n        view = this._getCurrentView(),\n        recursiveSet = _setOptionRecurseively,\n        startDate, endDate, tempDate,\n        startDayOfWeek, visibleWeeksCount, workweek, isAlways6Week, datetimeOptions;\n\n    offset = util.isExisty(offset) ? offset : 0;\n\n    if (viewName === 'month') {\n        startDayOfWeek = util.pick(this._options, 'month', 'startDayOfWeek') || 0;\n        visibleWeeksCount = mmin(util.pick(this._options, 'month', 'visibleWeeksCount') || 0, 6);\n        workweek = util.pick(this._options, 'month', 'workweek') || false;\n        isAlways6Week = util.pick(this._options, 'month', 'isAlways6Week');\n\n        if (visibleWeeksCount) {\n            datetimeOptions = {\n                startDayOfWeek: startDayOfWeek,\n                isAlways6Week: false,\n                visibleWeeksCount: visibleWeeksCount,\n                workweek: workweek\n            };\n\n            renderDate.addDate(offset * 7 * datetimeOptions.visibleWeeksCount);\n            tempDate = datetime.arr2dCalendar(renderDate.d, datetimeOptions);\n\n            recursiveSet(view, function(childView, opt) {\n                opt.renderMonth = new TZDate(renderDate.d);\n            });\n        } else {\n            datetimeOptions = {\n                startDayOfWeek: startDayOfWeek,\n                isAlways6Week: isAlways6Week,\n                workweek: workweek\n            };\n\n            renderDate.addMonth(offset);\n            tempDate = datetime.arr2dCalendar(renderDate.d, datetimeOptions);\n\n            recursiveSet(view, function(childView, opt) {\n                opt.renderMonth = new TZDate(renderDate.d);\n            });\n        }\n\n        startDate = tempDate[0][0];\n        endDate = tempDate[tempDate.length - 1][tempDate[tempDate.length - 1].length - 1];\n    } else if (viewName === 'week') {\n        renderDate.addDate(offset * 7);\n        startDayOfWeek = util.pick(this._options, 'week', 'startDayOfWeek') || 0;\n        workweek = util.pick(this._options, 'week', 'workweek') || false;\n        tempDate = this._getWeekDayRange(renderDate.d, startDayOfWeek, workweek);\n\n        startDate = tempDate[0];\n        endDate = tempDate[1];\n\n        recursiveSet(view, function(childView, opt) {\n            opt.renderStartDate = new TZDate(startDate);\n            opt.renderEndDate = new TZDate(endDate);\n\n            childView.setState({\n                collapsed: true\n            });\n        });\n    } else if (viewName === 'day') {\n        renderDate.addDate(offset);\n        startDate = datetime.start(renderDate.d);\n        endDate = datetime.end(renderDate.d);\n\n        recursiveSet(view, function(childView, opt) {\n            opt.renderStartDate = new TZDate(startDate);\n            opt.renderEndDate = new TZDate(endDate);\n\n            childView.setState({\n                collapsed: true\n            });\n        });\n    }\n\n    this._renderDate = renderDate.d;\n    this._renderRange = {\n        start: startDate,\n        end: endDate\n    };\n};\n\n/**\n * Move to specific date\n * @param {(Date|string)} date - The date to move\n * @example\n * calendar.on('clickDayname', function(event) {\n *     if (calendar.getViewName() === 'week') {\n *         calendar.setDate(new Date(event.date));\n *         calendar.changeView('day', true);\n *     }\n * });\n */\nCalendar.prototype.setDate = function(date) {\n    if (util.isString(date)) {\n        date = datetime.parse(date);\n    }\n\n    this._renderDate = new TZDate(date);\n    this._setViewName(this._viewName);\n    this.move(0);\n    this.render();\n};\n\n/**\n * Move the calendar forward a day, a week, a month, 2 weeks, 3 weeks.\n * @example\n * function moveToNextOrPrevRange(val) {\n    if (val === -1) {\n        calendar.prev();\n    } else if (val === 1) {\n        calendar.next();\n    }\n}\n */\nCalendar.prototype.next = function() {\n    this.move(1);\n    this.render();\n};\n\n/**\n * Move the calendar backward a day, a week, a month, 2 weeks, 3 weeks.\n * @example\n * function moveToNextOrPrevRange(val) {\n    if (val === -1) {\n        calendar.prev();\n    } else if (val === 1) {\n        calendar.next();\n    }\n}\n */\nCalendar.prototype.prev = function() {\n    this.move(-1);\n    this.render();\n};\n\n/**\n * Return current rendered view.\n * @returns {View} current view instance\n * @private\n */\nCalendar.prototype._getCurrentView = function() {\n    var viewName = this._viewName;\n\n    if (viewName === 'day') {\n        viewName = 'week';\n    }\n\n    return util.pick(this._layout.children.items, viewName);\n};\n\n/**\n * Change calendar's schedule color with option\n * @param {string} calendarId - The calendar ID\n * @param {CalendarColor} option - The {@link CalendarColor} object\n * @param {boolean} [silent=false] - No auto render after creation when set true\n * @example\n * calendar.setCalendarColor('1', {\n *     color: '#e8e8e8',\n *     bgColor: '#585858',\n *     borderColor: '#a1b56c'\n *     dragBgColor: '#585858',\n * });\n * calendar.setCalendarColor('2', {\n *     color: '#282828',\n *     bgColor: '#dc9656',\n *     borderColor: '#a1b56c',\n *     dragBgColor: '#dc9656',\n * });\n * calendar.setCalendarColor('3', {\n *     color: '#a16946',\n *     bgColor: '#ab4642',\n *     borderColor: '#a1b56c',\n *     dragBgColor: '#ab4642',\n * });\n */\nCalendar.prototype.setCalendarColor = function(calendarId, option, silent) {\n    var calColor = this._calendarColor,\n        ownSchedules = this._controller.schedules,\n        ownColor = calColor[calendarId];\n\n    if (!util.isObject(option)) {\n        config.throwError('Calendar#changeCalendarColor(): color 는 {color: \\'\\', bgColor: \\'\\'} 형태여야 합니다.');\n    }\n\n    ownColor = calColor[calendarId] = util.extend({\n        color: '#000',\n        bgColor: '#a1b56c',\n        borderColor: '#a1b56c',\n        dragBgColor: '#a1b56c'\n    }, option);\n\n    ownSchedules.each(function(model) {\n        if (model.calendarId !== calendarId) {\n            return;\n        }\n\n        model.color = ownColor.color;\n        model.bgColor = ownColor.bgColor;\n        model.borderColor = ownColor.borderColor;\n        model.dragBgColor = ownColor.dragBgColor;\n    });\n\n    if (!silent) {\n        this.render();\n    }\n};\n\n/**********\n * Custom Events\n **********/\n\n/**\n * A bridge-based event handler for connecting a click handler to a user click event handler for each view\n * @fires Calendar#clickSchedule\n * @param {object} clickScheduleData - The event data of 'clickSchedule' handler\n * @private\n */\nCalendar.prototype._onClick = function(clickScheduleData) {\n    /**\n     * Fire this event when click a schedule.\n     * @event Calendar#clickSchedule\n     * @type {object}\n     * @property {Schedule} schedule - The {@link Schedule} instance\n     * @property {MouseEvent} event - MouseEvent\n     * @example\n     * calendar.on('clickSchedule', function(event) {\n     *     var schedule = event.schedule;\n     *\n     *     if (lastClickSchedule) {\n     *         calendar.updateSchedule(lastClickSchedule.id, lastClickSchedule.calendarId, {\n     *             isFocused: false\n     *         });\n     *     }\n     *     calendar.updateSchedule(schedule.id, schedule.calendarId, {\n     *         isFocused: true\n     *     });\n     *\n     *     lastClickSchedule = schedule;\n     *     // open detail view\n     * });\n     */\n    this.fire('clickSchedule', clickScheduleData);\n};\n\n/**\n * A bridge-based event handler for connecting a click handler to a user click event handler for each view\n * @fires Calendar#clickMore\n * @param {object} clickMoreSchedule - The event data of 'clickMore' handler\n * @private\n */\nCalendar.prototype._onClickMore = function(clickMoreSchedule) {\n    /**\n     * Fire this event when click a schedule.\n     * @event Calendar#clickMore\n     * @type {object}\n     * @property {Date} date - The Clicked date\n     * @property {HTMLElement} target - The more element\n     * @example\n     * calendar.on('clickMore', function(event) {\n     *     console.log('clickMore', event.date, event.target);\n     * });\n     */\n    this.fire('clickMore', clickMoreSchedule);\n};\n\n/**\n * dayname click event handler\n * @fires Calendar#clickDayname\n * @param {object} clickScheduleData - The event data of 'clickDayname' handler\n * @private\n */\nCalendar.prototype._onClickDayname = function(clickScheduleData) {\n    /**\n     * Fire this event when click a day name in weekly.\n     * @event Calendar#clickDayname\n     * @type {object}\n     * @property {string} date - The date string by format 'YYYY-MM-DD'\n     * @example\n     * calendar.on('clickDayname', function(event) {\n     *     if (calendar.getViewName() === 'week') {\n     *         calendar.setDate(new Date(event.date));\n     *         calendar.changeView('day', true);\n     *     }\n     * });\n     */\n    this.fire('clickDayname', clickScheduleData);\n};\n\n/**\n * @fires {Calendar#n('beforeCreateSchedule', function}\n * @param {object} createScheduleData - select schedule data from allday, time\n * @private\n */\nCalendar.prototype._onBeforeCreate = function(createScheduleData) {\n    if (this._options.useCreationPopup && !createScheduleData.useCreationPopup) {\n        if (this._showCreationPopup) {\n            this._showCreationPopup(createScheduleData);\n\n            return;\n        }\n    }\n    /**\n     * Fire this event when select time period in daily, weekly, monthly.\n     * @event Calendar#beforeCreateSchedule\n     * @type {object}\n     * @property {boolean} isAllDay - The allday schedule\n     * @property {Date} start - The selected start time\n     * @property {Date} end - The selected end time\n     * @property {TimeCreationGuide} guide - {@link TimeCreationGuide} instance\n     * @property {string} triggerEventName - The event name like 'click', 'dblclick'\n     * @example\n     * calendar.on('beforeCreateSchedule', function(event) {\n     *     var startTime = event.start;\n     *     var endTime = event.end;\n     *     var isAllDay = event.isAllDay;\n     *     var guide = event.guide;\n     *     var triggerEventName = event.triggerEventName;\n     *     var schedule;\n     *\n     *     if (triggerEventName === 'click') {\n     *         // open writing simple schedule popup\n     *         schedule = {...};\n     *     } else if (triggerEventName === 'dblclick') {\n     *         // open writing detail schedule popup\n     *         schedule = {...};\n     *     }\n     *\n     *     calendar.createSchedules([schedule]);\n     * });\n     */\n    this.fire('beforeCreateSchedule', createScheduleData);\n};\n\n/**\n * @fires Calendar#beforeUpdateSchedule\n * @param {object} updateScheduleData - update {@link Schedule} data\n * @private\n */\nCalendar.prototype._onBeforeUpdate = function(updateScheduleData) {\n    /**\n     * Fire this event when drag a schedule to change time in daily, weekly, monthly.\n     * @event Calendar#beforeUpdateSchedule\n     * @type {object}\n     * @property {Schedule} schedule - The original {@link Schedule} instance\n     * @property {object} changes - The {@link Schedule} properties and values with changes to update\n     * @property {Date} start - Deprecated: start time to update\n     * @property {Date} end - Deprecated: end time to update\n     * @example\n     * calendar.on('beforeUpdateSchedule', function(event) {\n     *     var schedule = event.schedule;\n     *     var changes = event.changes;\n     *\n     *     calendar.updateSchedule(schedule.id, schedule.calendarId, changes);\n     * });\n     */\n    this.fire('beforeUpdateSchedule', updateScheduleData);\n};\n\n/**\n * @fires Calendar#beforeDeleteSchedule\n * @param {object} deleteScheduleData - delete schedule data\n * @private\n */\nCalendar.prototype._onBeforeDelete = function(deleteScheduleData) {\n    /**\n     * Fire this event when delete a schedule.\n     * @event Calendar#beforeDeleteSchedule\n     * @type {object}\n     * @property {Schedule} schedule - The {@link Schedule} instance to delete\n     * @example\n     * calendar.on('beforeDeleteSchedule', function(event) {\n     *     var schedule = event.schedule;\n     *     alert('The schedule is removed.', schedule);\n     * });\n     */\n    this.fire('beforeDeleteSchedule', deleteScheduleData);\n};\n\n/**\n * @fires Calendar#afterRenderSchedule\n * @param {Schedule} scheduleData - The schedule data\n * @private\n */\nCalendar.prototype._onAfterRenderSchedule = function(scheduleData) {\n    /**\n     * Fire this event by every single schedule after rendering whole calendar.\n     * @event Calendar#afterRenderSchedule\n     * @type {object}\n     * @property {Schedule} schedule - A rendered {@link Schedule} instance\n     * @example\n     * calendar.on('afterRenderSchedule', function(event) {\n     *     var schedule = event.schedule;\n     *     var element = calendar.getElement(schedule.id, schedule.calendarId);\n     *     // use the element\n     *     console.log(element);\n     * });\n     */\n    this.fire('afterRenderSchedule', scheduleData);\n};\n\n/**\n * @fires Calendar#clickTimezonesCollapseBtn\n * @param {boolean} timezonesCollapsed - timezones collapsed flag\n * @private\n */\nCalendar.prototype._onClickTimezonesCollapseBtn = function(timezonesCollapsed) {\n    /**\n     * Fire this event by clicking timezones collapse button\n     * @event Calendar#clickTimezonesCollapseBtn\n     * @type {object}\n     * @property {boolean} timezonesCollapsed - The timezones collapes flag\n     * @example\n     * calendar.on('clickTimezonesCollapseBtn', function(timezonesCollapsed) {\n     *     console.log(timezonesCollapsed);\n     * });\n     */\n    this.fire('clickTimezonesCollapseBtn', timezonesCollapsed);\n};\n\n/**\n * Toggle calendar factory class, main view, wallview event connection\n * @param {boolean} isAttach - attach events if true.\n * @param {Week|Month} view - Weekly view or Monthly view\n * @private\n */\nCalendar.prototype._toggleViewSchedule = function(isAttach, view) {\n    var self = this,\n        handler = view.handler,\n        method = isAttach ? 'on' : 'off';\n\n    util.forEach(handler.click, function(clickHandler) {\n        clickHandler[method]('clickSchedule', self._onClick, self);\n    });\n\n    util.forEach(handler.dayname, function(clickHandler) {\n        clickHandler[method]('clickDayname', self._onClickDayname, self);\n    });\n\n    util.forEach(handler.creation, function(creationHandler) {\n        creationHandler[method]('beforeCreateSchedule', self._onBeforeCreate, self);\n        creationHandler[method]('beforeDeleteSchedule', self._onBeforeDelete, self);\n    });\n\n    util.forEach(handler.move, function(moveHandler) {\n        moveHandler[method]('beforeUpdateSchedule', self._onBeforeUpdate, self);\n    });\n\n    util.forEach(handler.resize, function(resizeHandler) {\n        resizeHandler[method]('beforeUpdateSchedule', self._onBeforeUpdate, self);\n    });\n\n    // bypass events from view\n    view[method]('afterRenderSchedule', self._onAfterRenderSchedule, self);\n    view[method]('clickTimezonesCollapseBtn', self._onClickTimezonesCollapseBtn, self);\n    view[method]('clickMore', self._onClickMore, self);\n};\n\n/**\n * Change current view with view name('day', 'week', 'month')\n * @param {string} newViewName - The New view name to render\n * @param {boolean} force - Force render despite of current view and new view are equal\n * @example\n * // daily view\n * calendar.changeView('day', true);\n *\n * // weekly view\n * calendar.changeView('week', true);\n *\n * // monthly view(default 6 weeks view)\n * calendar.setOptions({month: {visibleWeeksCount: 6}}, true); // or null\n * calendar.changeView('month', true);\n *\n * // 2 weeks monthly view\n * calendar.setOptions({month: {visibleWeeksCount: 2}}, true);\n * calendar.changeView('month', true);\n *\n * // 3 weeks monthly view\n * calendar.setOptions({month: {visibleWeeksCount: 3}}, true);\n * calendar.changeView('month', true);\n *\n * // narrow weekend\n * calendar.setOptions({month: {narrowWeekend: true}}, true);\n * calendar.setOptions({week: {narrowWeekend: true}}, true);\n * calendar.changeView(calendar.getViewName(), true);\n *\n * // change start day of week(from monday)\n * calendar.setOptions({week: {startDayOfWeek: 1}}, true);\n * calendar.setOptions({month: {startDayOfWeek: 1}}, true);\n * calendar.changeView(calendar.getViewName(), true);\n *\n * // work week\n * calendar.setOptions({week: {workweek: true}}, true);\n * calendar.setOptions({month: {workweek: true}}, true);\n * calendar.changeView(calendar.getViewName(), true);\n */\nCalendar.prototype.changeView = function(newViewName, force) {\n    var self = this,\n        layout = this._layout,\n        controller = this._controller,\n        dragHandler = this._dragHandler,\n        options = this._options,\n        viewName = this._viewName,\n        created;\n\n    if (!force && viewName === newViewName) {\n        return;\n    }\n\n    this._setViewName(newViewName);\n\n    // convert day to week\n    if (viewName === 'day') {\n        viewName = 'week';\n    }\n\n    if (newViewName === 'day') {\n        newViewName = 'week';\n    }\n    layout.children.doWhenHas(viewName, function(view) {\n        self._toggleViewSchedule(false, view);\n    });\n\n    layout.clear();\n\n    if (newViewName === 'month') {\n        created = _createMonthView(\n            controller,\n            layout.container,\n            dragHandler,\n            options\n        );\n    } else if (newViewName === 'week') {\n        created = _createWeekView(\n            controller,\n            layout.container,\n            dragHandler,\n            options,\n            this.getViewName()\n        );\n    }\n\n    layout.addChild(created.view);\n\n    layout.children.doWhenHas(newViewName, function(view) {\n        self._toggleViewSchedule(true, view);\n    });\n\n    this._refreshMethod = created.refresh;\n    this._scrollToNowMethod = created.scrollToNow;\n    this._openCreationPopup = created.openCreationPopup;\n    this._showCreationPopup = created.showCreationPopup;\n    this._hideMoreView = created.hideMoreView;\n\n    this.move();\n    this.render();\n};\n\n/**\n * @deprecated\n * Toggle task view('Milestone', 'Task') panel\n * @param {boolean} enabled - use task view\n * @example\n * // There is no milestone, task, so hide those view panel\n * calendar.toggleTaskView(false);\n *\n * // There are some milestone, task, so show those view panel.\n * calendar.toggleTaskView(true);\n */\nCalendar.prototype.toggleTaskView = function(enabled) {\n    var viewName = this._viewName,\n        options = this._options;\n\n    options.taskView = enabled;\n\n    this.changeView(viewName, true);\n};\n\n/**\n * @deprecated\n * Toggle schedule view('AllDay', TimeGrid') panel\n * @param {boolean} enabled - use task view\n * @example\n * // hide those view panel to show only 'Milestone', 'Task'\n * calendar.toggleScheduleView(false);\n *\n * // show those view panel.\n * calendar.toggleScheduleView(true);\n */\nCalendar.prototype.toggleScheduleView = function(enabled) {\n    var viewName = this._viewName,\n        options = this._options;\n\n    options.scheduleView = enabled;\n\n    this.changeView(viewName, true);\n};\n\n/**\n * Set current view name\n * @param {string} viewName - new view name to render\n * @private\n */\nCalendar.prototype._setViewName = function(viewName) {\n    this._viewName = viewName;\n};\n\n/**\n * Get a schedule element by schedule id and calendar id.\n * @param {string} scheduleId - ID of schedule\n * @param {string} calendarId - calendarId of schedule\n * @returns {HTMLElement} schedule element if found or null\n * @example\n * var element = calendar.getElement(scheduleId, calendarId);\n * console.log(element);\n */\nCalendar.prototype.getElement = function(scheduleId, calendarId) {\n    var schedule = this.getSchedule(scheduleId, calendarId);\n    if (schedule) {\n        return document.querySelector('[data-schedule-id=\"' + scheduleId + '\"][data-calendar-id=\"' + calendarId + '\"]');\n    }\n\n    return null;\n};\n\n/**\n * Set a theme. If some keys are not defined in the preset, will be return.\n * @param {object} theme - multiple styles map\n * @returns {Array.<string>} keys - error keys not predefined.\n * @example\n * cal.setTheme({\n    'month.dayname.height': '31px',\n    'common.dayname.color': '#333',\n    'month.dayname.borderBottom': '1px solid #e5e5e5' // Not valid key  will be return.\n * });\n */\nCalendar.prototype.setTheme = function(theme) {\n    var result = this._controller.setTheme(theme);\n    this.render(true);\n\n    return result;\n};\n\n/**\n * Set options of calendar\n * @param {Options} options - set {@link Options}\n * @param {boolean} [silent=false] - no auto render after creation when set true\n */\nCalendar.prototype.setOptions = function(options, silent) {\n    util.forEach(options, function(value, name) {\n        if (util.isObject(value) && !util.isArray(value)) {\n            util.forEach(value, function(innerValue, innerName) {\n                this._options[name][innerName] = innerValue;\n            }, this);\n        } else {\n            this._options[name] = value;\n        }\n    }, this);\n\n    this._setAdditionalInternalOptions(options);\n\n    if (!silent) {\n        this.changeView(this._viewName, true);\n    }\n};\n\n/**\n * Get current {@link Options}.\n * @returns {Options} options\n */\nCalendar.prototype.getOptions = function() {\n    return this._options;\n};\n\n/**\n * Current rendered date ({@link TZDate} for further information)\n * @returns {TZDate}\n */\nCalendar.prototype.getDate = function() {\n    return this._renderDate;\n};\n\n/**\n * Start time of rendered date range ({@link TZDate} for further information)\n * @returns {TZDate}\n */\nCalendar.prototype.getDateRangeStart = function() {\n    return this._renderRange.start;\n};\n\n/**\n * End time of rendered date range ({@link TZDate} for further information)\n * @returns {TZDate}\n */\nCalendar.prototype.getDateRangeEnd = function() {\n    return this._renderRange.end;\n};\n\n/**\n * Get current view name('day', 'week', 'month')\n * @returns {string} view name\n */\nCalendar.prototype.getViewName = function() {\n    return this._viewName;\n};\n\n/**\n * Set calendar list\n * @param {Array.<CalendarProps>} calendars - {@link CalendarProps} List\n */\nCalendar.prototype.setCalendars = function(calendars) {\n    util.forEach(calendars || [], function(calendar) {\n        this.setCalendarColor(calendar.id, calendar, true);\n    }, this);\n\n    this._controller.setCalendars(calendars);\n\n    this.render();\n};\n\n/**\n * Open schedule creation popup\n * @param {Schedule} schedule - The preset {@link Schedule} data\n */\nCalendar.prototype.openCreationPopup = function(schedule) {\n    if (this._openCreationPopup) {\n        this._openCreationPopup(schedule);\n    }\n};\n\n/**\n * Hide the more view\n */\nCalendar.prototype.hideMoreView = function() {\n    if (this._hideMoreView) {\n        this._hideMoreView();\n    }\n};\n\n/**\n * Set timezone offset\n * @param {number} offset - The offset (min)\n * @static\n * @deprecated\n * @example\n * var timezoneName = moment.tz.guess();\n * tui.Calendar.setTimezoneOffset(moment.tz.zone(timezoneName).utcOffset(moment()));\n */\nCalendar.setTimezoneOffset = function(offset) {\n    timezone.setOffset(offset);\n};\n\n/**\n * Set a callback function to get timezone offset by timestamp\n * @param {function} callback - The callback function\n * @static\n * @deprecated\n * @example\n * var timezoneName = moment.tz.guess();\n * tui.Calendar.setTimezoneOffsetCallback(function(timestamp) {\n *      return moment.tz.zone(timezoneName).utcOffset(timestamp));\n * });\n */\nCalendar.setTimezoneOffsetCallback = function(callback) {\n    timezone.setOffsetCallback(callback);\n};\n\n/**\n * Create controller instance\n * @returns {Base} controller instance\n * @param {Options} options - calendar options\n * @private\n */\nfunction _createController(options) {\n    return controllerFactory(options);\n}\n\n/**\n * Create week view instance by dependent module instances\n * @param {Base} controller - controller\n * @param {HTMLElement} container - container element\n * @param {Drag} dragHandler - global drag handler\n * @param {object} options - options for week view\n * @param {string} viewName - 'week', 'day'\n * @returns {Week} week view instance\n * @private\n */\nfunction _createWeekView(controller, container, dragHandler, options, viewName) {\n    return weekViewFactory(\n        controller,\n        container,\n        dragHandler,\n        options,\n        viewName\n    );\n}\n\n/**\n * Create week view instance by dependent module instances\n * @param {Base} controller - controller\n * @param {HTMLElement} container - container element\n * @param {Drag} dragHandler - global drag handler\n * @param {object} options - options for week view\n * @returns {Month} month view instance\n * @private\n */\nfunction _createMonthView(controller, container, dragHandler, options) {\n    return monthViewFactory(\n        controller,\n        container,\n        dragHandler,\n        options\n    );\n}\n\n/**\n * Set child view's options recursively\n * @param {View} view - parent view\n * @param {function} func - option manipulate function\n * @private\n */\nfunction _setOptionRecurseively(view, func) {\n    view.recursive(function(childView) {\n        var opt = childView.options;\n\n        if (!opt) {\n            return;\n        }\n\n        func(childView, opt);\n    });\n}\n\nutil.CustomEvents.mixin(Calendar);\n\nmodule.exports = Calendar;\n","'use strict';\n\nexports.__esModule = true;\n\nvar _utils = require('../utils');\n\nexports['default'] = function (instance) {\n  instance.registerHelper('blockHelperMissing', function (context, options) {\n    var inverse = options.inverse,\n        fn = options.fn;\n\n    if (context === true) {\n      return fn(this);\n    } else if (context === false || context == null) {\n      return inverse(this);\n    } else if (_utils.isArray(context)) {\n      if (context.length > 0) {\n        if (options.ids) {\n          options.ids = [options.name];\n        }\n\n        return instance.helpers.each(context, options);\n      } else {\n        return inverse(this);\n      }\n    } else {\n      if (options.data && options.ids) {\n        var data = _utils.createFrame(options.data);\n        data.contextPath = _utils.appendContextPath(options.data.contextPath, options.name);\n        options = { data: data };\n      }\n\n      return fn(context, options);\n    }\n  });\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMvYmxvY2staGVscGVyLW1pc3NpbmcuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztxQkFBd0QsVUFBVTs7cUJBRW5ELFVBQVMsUUFBUSxFQUFFO0FBQ2hDLFVBQVEsQ0FBQyxjQUFjLENBQUMsb0JBQW9CLEVBQUUsVUFBUyxPQUFPLEVBQUUsT0FBTyxFQUFFO0FBQ3ZFLFFBQUksT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPO1FBQzNCLEVBQUUsR0FBRyxPQUFPLENBQUMsRUFBRSxDQUFDOztBQUVsQixRQUFJLE9BQU8sS0FBSyxJQUFJLEVBQUU7QUFDcEIsYUFBTyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDakIsTUFBTSxJQUFJLE9BQU8sS0FBSyxLQUFLLElBQUksT0FBTyxJQUFJLElBQUksRUFBRTtBQUMvQyxhQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUN0QixNQUFNLElBQUksZUFBUSxPQUFPLENBQUMsRUFBRTtBQUMzQixVQUFJLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO0FBQ3RCLFlBQUksT0FBTyxDQUFDLEdBQUcsRUFBRTtBQUNmLGlCQUFPLENBQUMsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQzlCOztBQUVELGVBQU8sUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO09BQ2hELE1BQU07QUFDTCxlQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztPQUN0QjtLQUNGLE1BQU07QUFDTCxVQUFJLE9BQU8sQ0FBQyxJQUFJLElBQUksT0FBTyxDQUFDLEdBQUcsRUFBRTtBQUMvQixZQUFJLElBQUksR0FBRyxtQkFBWSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDckMsWUFBSSxDQUFDLFdBQVcsR0FBRyx5QkFDakIsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQ3hCLE9BQU8sQ0FBQyxJQUFJLENBQ2IsQ0FBQztBQUNGLGVBQU8sR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQztPQUMxQjs7QUFFRCxhQUFPLEVBQUUsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7S0FDN0I7R0FDRixDQUFDLENBQUM7Q0FDSiIsImZpbGUiOiJibG9jay1oZWxwZXItbWlzc2luZy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFwcGVuZENvbnRleHRQYXRoLCBjcmVhdGVGcmFtZSwgaXNBcnJheSB9IGZyb20gJy4uL3V0aWxzJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oaW5zdGFuY2UpIHtcbiAgaW5zdGFuY2UucmVnaXN0ZXJIZWxwZXIoJ2Jsb2NrSGVscGVyTWlzc2luZycsIGZ1bmN0aW9uKGNvbnRleHQsIG9wdGlvbnMpIHtcbiAgICBsZXQgaW52ZXJzZSA9IG9wdGlvbnMuaW52ZXJzZSxcbiAgICAgIGZuID0gb3B0aW9ucy5mbjtcblxuICAgIGlmIChjb250ZXh0ID09PSB0cnVlKSB7XG4gICAgICByZXR1cm4gZm4odGhpcyk7XG4gICAgfSBlbHNlIGlmIChjb250ZXh0ID09PSBmYWxzZSB8fCBjb250ZXh0ID09IG51bGwpIHtcbiAgICAgIHJldHVybiBpbnZlcnNlKHRoaXMpO1xuICAgIH0gZWxzZSBpZiAoaXNBcnJheShjb250ZXh0KSkge1xuICAgICAgaWYgKGNvbnRleHQubGVuZ3RoID4gMCkge1xuICAgICAgICBpZiAob3B0aW9ucy5pZHMpIHtcbiAgICAgICAgICBvcHRpb25zLmlkcyA9IFtvcHRpb25zLm5hbWVdO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGluc3RhbmNlLmhlbHBlcnMuZWFjaChjb250ZXh0LCBvcHRpb25zKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBpbnZlcnNlKHRoaXMpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAob3B0aW9ucy5kYXRhICYmIG9wdGlvbnMuaWRzKSB7XG4gICAgICAgIGxldCBkYXRhID0gY3JlYXRlRnJhbWUob3B0aW9ucy5kYXRhKTtcbiAgICAgICAgZGF0YS5jb250ZXh0UGF0aCA9IGFwcGVuZENvbnRleHRQYXRoKFxuICAgICAgICAgIG9wdGlvbnMuZGF0YS5jb250ZXh0UGF0aCxcbiAgICAgICAgICBvcHRpb25zLm5hbWVcbiAgICAgICAgKTtcbiAgICAgICAgb3B0aW9ucyA9IHsgZGF0YTogZGF0YSB9O1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZm4oY29udGV4dCwgb3B0aW9ucyk7XG4gICAgfVxuICB9KTtcbn1cbiJdfQ==\n","'use strict';\n\nexports.__esModule = true;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _utils = require('../utils');\n\nvar _exception = require('../exception');\n\nvar _exception2 = _interopRequireDefault(_exception);\n\nexports['default'] = function (instance) {\n  instance.registerHelper('each', function (context, options) {\n    if (!options) {\n      throw new _exception2['default']('Must pass iterator to #each');\n    }\n\n    var fn = options.fn,\n        inverse = options.inverse,\n        i = 0,\n        ret = '',\n        data = undefined,\n        contextPath = undefined;\n\n    if (options.data && options.ids) {\n      contextPath = _utils.appendContextPath(options.data.contextPath, options.ids[0]) + '.';\n    }\n\n    if (_utils.isFunction(context)) {\n      context = context.call(this);\n    }\n\n    if (options.data) {\n      data = _utils.createFrame(options.data);\n    }\n\n    function execIteration(field, index, last) {\n      if (data) {\n        data.key = field;\n        data.index = index;\n        data.first = index === 0;\n        data.last = !!last;\n\n        if (contextPath) {\n          data.contextPath = contextPath + field;\n        }\n      }\n\n      ret = ret + fn(context[field], {\n        data: data,\n        blockParams: _utils.blockParams([context[field], field], [contextPath + field, null])\n      });\n    }\n\n    if (context && typeof context === 'object') {\n      if (_utils.isArray(context)) {\n        for (var j = context.length; i < j; i++) {\n          if (i in context) {\n            execIteration(i, i, i === context.length - 1);\n          }\n        }\n      } else if (global.Symbol && context[global.Symbol.iterator]) {\n        var newContext = [];\n        var iterator = context[global.Symbol.iterator]();\n        for (var it = iterator.next(); !it.done; it = iterator.next()) {\n          newContext.push(it.value);\n        }\n        context = newContext;\n        for (var j = context.length; i < j; i++) {\n          execIteration(i, i, i === context.length - 1);\n        }\n      } else {\n        (function () {\n          var priorKey = undefined;\n\n          Object.keys(context).forEach(function (key) {\n            // We're running the iterations one step out of sync so we can detect\n            // the last iteration without have to scan the object twice and create\n            // an itermediate keys array.\n            if (priorKey !== undefined) {\n              execIteration(priorKey, i - 1);\n            }\n            priorKey = key;\n            i++;\n          });\n          if (priorKey !== undefined) {\n            execIteration(priorKey, i - 1, true);\n          }\n        })();\n      }\n    }\n\n    if (i === 0) {\n      ret = inverse(this);\n    }\n\n    return ret;\n  });\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMvZWFjaC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O3FCQU1PLFVBQVU7O3lCQUNLLGNBQWM7Ozs7cUJBRXJCLFVBQVMsUUFBUSxFQUFFO0FBQ2hDLFVBQVEsQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLFVBQVMsT0FBTyxFQUFFLE9BQU8sRUFBRTtBQUN6RCxRQUFJLENBQUMsT0FBTyxFQUFFO0FBQ1osWUFBTSwyQkFBYyw2QkFBNkIsQ0FBQyxDQUFDO0tBQ3BEOztBQUVELFFBQUksRUFBRSxHQUFHLE9BQU8sQ0FBQyxFQUFFO1FBQ2pCLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTztRQUN6QixDQUFDLEdBQUcsQ0FBQztRQUNMLEdBQUcsR0FBRyxFQUFFO1FBQ1IsSUFBSSxZQUFBO1FBQ0osV0FBVyxZQUFBLENBQUM7O0FBRWQsUUFBSSxPQUFPLENBQUMsSUFBSSxJQUFJLE9BQU8sQ0FBQyxHQUFHLEVBQUU7QUFDL0IsaUJBQVcsR0FDVCx5QkFBa0IsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQztLQUNyRTs7QUFFRCxRQUFJLGtCQUFXLE9BQU8sQ0FBQyxFQUFFO0FBQ3ZCLGFBQU8sR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQzlCOztBQUVELFFBQUksT0FBTyxDQUFDLElBQUksRUFBRTtBQUNoQixVQUFJLEdBQUcsbUJBQVksT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQ2xDOztBQUVELGFBQVMsYUFBYSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFO0FBQ3pDLFVBQUksSUFBSSxFQUFFO0FBQ1IsWUFBSSxDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUM7QUFDakIsWUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7QUFDbkIsWUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLEtBQUssQ0FBQyxDQUFDO0FBQ3pCLFlBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQzs7QUFFbkIsWUFBSSxXQUFXLEVBQUU7QUFDZixjQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsR0FBRyxLQUFLLENBQUM7U0FDeEM7T0FDRjs7QUFFRCxTQUFHLEdBQ0QsR0FBRyxHQUNILEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7QUFDakIsWUFBSSxFQUFFLElBQUk7QUFDVixtQkFBVyxFQUFFLG1CQUNYLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUN2QixDQUFDLFdBQVcsR0FBRyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQzVCO09BQ0YsQ0FBQyxDQUFDO0tBQ047O0FBRUQsUUFBSSxPQUFPLElBQUksT0FBTyxPQUFPLEtBQUssUUFBUSxFQUFFO0FBQzFDLFVBQUksZUFBUSxPQUFPLENBQUMsRUFBRTtBQUNwQixhQUFLLElBQUksQ0FBQyxHQUFHLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUN2QyxjQUFJLENBQUMsSUFBSSxPQUFPLEVBQUU7QUFDaEIseUJBQWEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1dBQy9DO1NBQ0Y7T0FDRixNQUFNLElBQUksTUFBTSxDQUFDLE1BQU0sSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsRUFBRTtBQUMzRCxZQUFNLFVBQVUsR0FBRyxFQUFFLENBQUM7QUFDdEIsWUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztBQUNuRCxhQUFLLElBQUksRUFBRSxHQUFHLFFBQVEsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxHQUFHLFFBQVEsQ0FBQyxJQUFJLEVBQUUsRUFBRTtBQUM3RCxvQkFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDM0I7QUFDRCxlQUFPLEdBQUcsVUFBVSxDQUFDO0FBQ3JCLGFBQUssSUFBSSxDQUFDLEdBQUcsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQ3ZDLHVCQUFhLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztTQUMvQztPQUNGLE1BQU07O0FBQ0wsY0FBSSxRQUFRLFlBQUEsQ0FBQzs7QUFFYixnQkFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBQSxHQUFHLEVBQUk7Ozs7QUFJbEMsZ0JBQUksUUFBUSxLQUFLLFNBQVMsRUFBRTtBQUMxQiwyQkFBYSxDQUFDLFFBQVEsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7YUFDaEM7QUFDRCxvQkFBUSxHQUFHLEdBQUcsQ0FBQztBQUNmLGFBQUMsRUFBRSxDQUFDO1dBQ0wsQ0FBQyxDQUFDO0FBQ0gsY0FBSSxRQUFRLEtBQUssU0FBUyxFQUFFO0FBQzFCLHlCQUFhLENBQUMsUUFBUSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7V0FDdEM7O09BQ0Y7S0FDRjs7QUFFRCxRQUFJLENBQUMsS0FBSyxDQUFDLEVBQUU7QUFDWCxTQUFHLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQ3JCOztBQUVELFdBQU8sR0FBRyxDQUFDO0dBQ1osQ0FBQyxDQUFDO0NBQ0oiLCJmaWxlIjoiZWFjaC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIGFwcGVuZENvbnRleHRQYXRoLFxuICBibG9ja1BhcmFtcyxcbiAgY3JlYXRlRnJhbWUsXG4gIGlzQXJyYXksXG4gIGlzRnVuY3Rpb25cbn0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IEV4Y2VwdGlvbiBmcm9tICcuLi9leGNlcHRpb24nO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihpbnN0YW5jZSkge1xuICBpbnN0YW5jZS5yZWdpc3RlckhlbHBlcignZWFjaCcsIGZ1bmN0aW9uKGNvbnRleHQsIG9wdGlvbnMpIHtcbiAgICBpZiAoIW9wdGlvbnMpIHtcbiAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ011c3QgcGFzcyBpdGVyYXRvciB0byAjZWFjaCcpO1xuICAgIH1cblxuICAgIGxldCBmbiA9IG9wdGlvbnMuZm4sXG4gICAgICBpbnZlcnNlID0gb3B0aW9ucy5pbnZlcnNlLFxuICAgICAgaSA9IDAsXG4gICAgICByZXQgPSAnJyxcbiAgICAgIGRhdGEsXG4gICAgICBjb250ZXh0UGF0aDtcblxuICAgIGlmIChvcHRpb25zLmRhdGEgJiYgb3B0aW9ucy5pZHMpIHtcbiAgICAgIGNvbnRleHRQYXRoID1cbiAgICAgICAgYXBwZW5kQ29udGV4dFBhdGgob3B0aW9ucy5kYXRhLmNvbnRleHRQYXRoLCBvcHRpb25zLmlkc1swXSkgKyAnLic7XG4gICAgfVxuXG4gICAgaWYgKGlzRnVuY3Rpb24oY29udGV4dCkpIHtcbiAgICAgIGNvbnRleHQgPSBjb250ZXh0LmNhbGwodGhpcyk7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMuZGF0YSkge1xuICAgICAgZGF0YSA9IGNyZWF0ZUZyYW1lKG9wdGlvbnMuZGF0YSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZXhlY0l0ZXJhdGlvbihmaWVsZCwgaW5kZXgsIGxhc3QpIHtcbiAgICAgIGlmIChkYXRhKSB7XG4gICAgICAgIGRhdGEua2V5ID0gZmllbGQ7XG4gICAgICAgIGRhdGEuaW5kZXggPSBpbmRleDtcbiAgICAgICAgZGF0YS5maXJzdCA9IGluZGV4ID09PSAwO1xuICAgICAgICBkYXRhLmxhc3QgPSAhIWxhc3Q7XG5cbiAgICAgICAgaWYgKGNvbnRleHRQYXRoKSB7XG4gICAgICAgICAgZGF0YS5jb250ZXh0UGF0aCA9IGNvbnRleHRQYXRoICsgZmllbGQ7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0ID1cbiAgICAgICAgcmV0ICtcbiAgICAgICAgZm4oY29udGV4dFtmaWVsZF0sIHtcbiAgICAgICAgICBkYXRhOiBkYXRhLFxuICAgICAgICAgIGJsb2NrUGFyYW1zOiBibG9ja1BhcmFtcyhcbiAgICAgICAgICAgIFtjb250ZXh0W2ZpZWxkXSwgZmllbGRdLFxuICAgICAgICAgICAgW2NvbnRleHRQYXRoICsgZmllbGQsIG51bGxdXG4gICAgICAgICAgKVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAoY29udGV4dCAmJiB0eXBlb2YgY29udGV4dCA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGlmIChpc0FycmF5KGNvbnRleHQpKSB7XG4gICAgICAgIGZvciAobGV0IGogPSBjb250ZXh0Lmxlbmd0aDsgaSA8IGo7IGkrKykge1xuICAgICAgICAgIGlmIChpIGluIGNvbnRleHQpIHtcbiAgICAgICAgICAgIGV4ZWNJdGVyYXRpb24oaSwgaSwgaSA9PT0gY29udGV4dC5sZW5ndGggLSAxKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoZ2xvYmFsLlN5bWJvbCAmJiBjb250ZXh0W2dsb2JhbC5TeW1ib2wuaXRlcmF0b3JdKSB7XG4gICAgICAgIGNvbnN0IG5ld0NvbnRleHQgPSBbXTtcbiAgICAgICAgY29uc3QgaXRlcmF0b3IgPSBjb250ZXh0W2dsb2JhbC5TeW1ib2wuaXRlcmF0b3JdKCk7XG4gICAgICAgIGZvciAobGV0IGl0ID0gaXRlcmF0b3IubmV4dCgpOyAhaXQuZG9uZTsgaXQgPSBpdGVyYXRvci5uZXh0KCkpIHtcbiAgICAgICAgICBuZXdDb250ZXh0LnB1c2goaXQudmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnRleHQgPSBuZXdDb250ZXh0O1xuICAgICAgICBmb3IgKGxldCBqID0gY29udGV4dC5sZW5ndGg7IGkgPCBqOyBpKyspIHtcbiAgICAgICAgICBleGVjSXRlcmF0aW9uKGksIGksIGkgPT09IGNvbnRleHQubGVuZ3RoIC0gMSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxldCBwcmlvcktleTtcblxuICAgICAgICBPYmplY3Qua2V5cyhjb250ZXh0KS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICAgICAgLy8gV2UncmUgcnVubmluZyB0aGUgaXRlcmF0aW9ucyBvbmUgc3RlcCBvdXQgb2Ygc3luYyBzbyB3ZSBjYW4gZGV0ZWN0XG4gICAgICAgICAgLy8gdGhlIGxhc3QgaXRlcmF0aW9uIHdpdGhvdXQgaGF2ZSB0byBzY2FuIHRoZSBvYmplY3QgdHdpY2UgYW5kIGNyZWF0ZVxuICAgICAgICAgIC8vIGFuIGl0ZXJtZWRpYXRlIGtleXMgYXJyYXkuXG4gICAgICAgICAgaWYgKHByaW9yS2V5ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGV4ZWNJdGVyYXRpb24ocHJpb3JLZXksIGkgLSAxKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcHJpb3JLZXkgPSBrZXk7XG4gICAgICAgICAgaSsrO1xuICAgICAgICB9KTtcbiAgICAgICAgaWYgKHByaW9yS2V5ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBleGVjSXRlcmF0aW9uKHByaW9yS2V5LCBpIC0gMSwgdHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoaSA9PT0gMCkge1xuICAgICAgcmV0ID0gaW52ZXJzZSh0aGlzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmV0O1xuICB9KTtcbn1cbiJdfQ==\n","'use strict';\n\nexports.__esModule = true;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _exception = require('../exception');\n\nvar _exception2 = _interopRequireDefault(_exception);\n\nexports['default'] = function (instance) {\n  instance.registerHelper('helperMissing', function () /* [args, ]options */{\n    if (arguments.length === 1) {\n      // A missing field in a {{foo}} construct.\n      return undefined;\n    } else {\n      // Someone is actually trying to call something, blow up.\n      throw new _exception2['default']('Missing helper: \"' + arguments[arguments.length - 1].name + '\"');\n    }\n  });\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMvaGVscGVyLW1pc3NpbmcuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozt5QkFBc0IsY0FBYzs7OztxQkFFckIsVUFBUyxRQUFRLEVBQUU7QUFDaEMsVUFBUSxDQUFDLGNBQWMsQ0FBQyxlQUFlLEVBQUUsaUNBQWdDO0FBQ3ZFLFFBQUksU0FBUyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7O0FBRTFCLGFBQU8sU0FBUyxDQUFDO0tBQ2xCLE1BQU07O0FBRUwsWUFBTSwyQkFDSixtQkFBbUIsR0FBRyxTQUFTLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUNqRSxDQUFDO0tBQ0g7R0FDRixDQUFDLENBQUM7Q0FDSiIsImZpbGUiOiJoZWxwZXItbWlzc2luZy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBFeGNlcHRpb24gZnJvbSAnLi4vZXhjZXB0aW9uJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oaW5zdGFuY2UpIHtcbiAgaW5zdGFuY2UucmVnaXN0ZXJIZWxwZXIoJ2hlbHBlck1pc3NpbmcnLCBmdW5jdGlvbigvKiBbYXJncywgXW9wdGlvbnMgKi8pIHtcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgLy8gQSBtaXNzaW5nIGZpZWxkIGluIGEge3tmb299fSBjb25zdHJ1Y3QuXG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBTb21lb25lIGlzIGFjdHVhbGx5IHRyeWluZyB0byBjYWxsIHNvbWV0aGluZywgYmxvdyB1cC5cbiAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oXG4gICAgICAgICdNaXNzaW5nIGhlbHBlcjogXCInICsgYXJndW1lbnRzW2FyZ3VtZW50cy5sZW5ndGggLSAxXS5uYW1lICsgJ1wiJ1xuICAgICAgKTtcbiAgICB9XG4gIH0pO1xufVxuIl19\n","'use strict';\n\nexports.__esModule = true;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _utils = require('../utils');\n\nvar _exception = require('../exception');\n\nvar _exception2 = _interopRequireDefault(_exception);\n\nexports['default'] = function (instance) {\n  instance.registerHelper('if', function (conditional, options) {\n    if (arguments.length != 2) {\n      throw new _exception2['default']('#if requires exactly one argument');\n    }\n    if (_utils.isFunction(conditional)) {\n      conditional = conditional.call(this);\n    }\n\n    // Default behavior is to render the positive path if the value is truthy and not empty.\n    // The `includeZero` option may be set to treat the condtional as purely not empty based on the\n    // behavior of isEmpty. Effectively this determines if 0 is handled by the positive path or negative.\n    if (!options.hash.includeZero && !conditional || _utils.isEmpty(conditional)) {\n      return options.inverse(this);\n    } else {\n      return options.fn(this);\n    }\n  });\n\n  instance.registerHelper('unless', function (conditional, options) {\n    if (arguments.length != 2) {\n      throw new _exception2['default']('#unless requires exactly one argument');\n    }\n    return instance.helpers['if'].call(this, conditional, {\n      fn: options.inverse,\n      inverse: options.fn,\n      hash: options.hash\n    });\n  });\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMvaWYuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7OztxQkFBb0MsVUFBVTs7eUJBQ3hCLGNBQWM7Ozs7cUJBRXJCLFVBQVMsUUFBUSxFQUFFO0FBQ2hDLFVBQVEsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLFVBQVMsV0FBVyxFQUFFLE9BQU8sRUFBRTtBQUMzRCxRQUFJLFNBQVMsQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFO0FBQ3pCLFlBQU0sMkJBQWMsbUNBQW1DLENBQUMsQ0FBQztLQUMxRDtBQUNELFFBQUksa0JBQVcsV0FBVyxDQUFDLEVBQUU7QUFDM0IsaUJBQVcsR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQ3RDOzs7OztBQUtELFFBQUksQUFBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxJQUFJLENBQUMsV0FBVyxJQUFLLGVBQVEsV0FBVyxDQUFDLEVBQUU7QUFDdkUsYUFBTyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQzlCLE1BQU07QUFDTCxhQUFPLE9BQU8sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDekI7R0FDRixDQUFDLENBQUM7O0FBRUgsVUFBUSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsVUFBUyxXQUFXLEVBQUUsT0FBTyxFQUFFO0FBQy9ELFFBQUksU0FBUyxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUU7QUFDekIsWUFBTSwyQkFBYyx1Q0FBdUMsQ0FBQyxDQUFDO0tBQzlEO0FBQ0QsV0FBTyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsV0FBVyxFQUFFO0FBQ3BELFFBQUUsRUFBRSxPQUFPLENBQUMsT0FBTztBQUNuQixhQUFPLEVBQUUsT0FBTyxDQUFDLEVBQUU7QUFDbkIsVUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJO0tBQ25CLENBQUMsQ0FBQztHQUNKLENBQUMsQ0FBQztDQUNKIiwiZmlsZSI6ImlmLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNFbXB0eSwgaXNGdW5jdGlvbiB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCBFeGNlcHRpb24gZnJvbSAnLi4vZXhjZXB0aW9uJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oaW5zdGFuY2UpIHtcbiAgaW5zdGFuY2UucmVnaXN0ZXJIZWxwZXIoJ2lmJywgZnVuY3Rpb24oY29uZGl0aW9uYWwsIG9wdGlvbnMpIHtcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCAhPSAyKSB7XG4gICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCcjaWYgcmVxdWlyZXMgZXhhY3RseSBvbmUgYXJndW1lbnQnKTtcbiAgICB9XG4gICAgaWYgKGlzRnVuY3Rpb24oY29uZGl0aW9uYWwpKSB7XG4gICAgICBjb25kaXRpb25hbCA9IGNvbmRpdGlvbmFsLmNhbGwodGhpcyk7XG4gICAgfVxuXG4gICAgLy8gRGVmYXVsdCBiZWhhdmlvciBpcyB0byByZW5kZXIgdGhlIHBvc2l0aXZlIHBhdGggaWYgdGhlIHZhbHVlIGlzIHRydXRoeSBhbmQgbm90IGVtcHR5LlxuICAgIC8vIFRoZSBgaW5jbHVkZVplcm9gIG9wdGlvbiBtYXkgYmUgc2V0IHRvIHRyZWF0IHRoZSBjb25kdGlvbmFsIGFzIHB1cmVseSBub3QgZW1wdHkgYmFzZWQgb24gdGhlXG4gICAgLy8gYmVoYXZpb3Igb2YgaXNFbXB0eS4gRWZmZWN0aXZlbHkgdGhpcyBkZXRlcm1pbmVzIGlmIDAgaXMgaGFuZGxlZCBieSB0aGUgcG9zaXRpdmUgcGF0aCBvciBuZWdhdGl2ZS5cbiAgICBpZiAoKCFvcHRpb25zLmhhc2guaW5jbHVkZVplcm8gJiYgIWNvbmRpdGlvbmFsKSB8fCBpc0VtcHR5KGNvbmRpdGlvbmFsKSkge1xuICAgICAgcmV0dXJuIG9wdGlvbnMuaW52ZXJzZSh0aGlzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG9wdGlvbnMuZm4odGhpcyk7XG4gICAgfVxuICB9KTtcblxuICBpbnN0YW5jZS5yZWdpc3RlckhlbHBlcigndW5sZXNzJywgZnVuY3Rpb24oY29uZGl0aW9uYWwsIG9wdGlvbnMpIHtcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCAhPSAyKSB7XG4gICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCcjdW5sZXNzIHJlcXVpcmVzIGV4YWN0bHkgb25lIGFyZ3VtZW50Jyk7XG4gICAgfVxuICAgIHJldHVybiBpbnN0YW5jZS5oZWxwZXJzWydpZiddLmNhbGwodGhpcywgY29uZGl0aW9uYWwsIHtcbiAgICAgIGZuOiBvcHRpb25zLmludmVyc2UsXG4gICAgICBpbnZlcnNlOiBvcHRpb25zLmZuLFxuICAgICAgaGFzaDogb3B0aW9ucy5oYXNoXG4gICAgfSk7XG4gIH0pO1xufVxuIl19\n","'use strict';\n\nexports.__esModule = true;\n\nexports['default'] = function (instance) {\n  instance.registerHelper('log', function () /* message, options */{\n    var args = [undefined],\n        options = arguments[arguments.length - 1];\n    for (var i = 0; i < arguments.length - 1; i++) {\n      args.push(arguments[i]);\n    }\n\n    var level = 1;\n    if (options.hash.level != null) {\n      level = options.hash.level;\n    } else if (options.data && options.data.level != null) {\n      level = options.data.level;\n    }\n    args[0] = level;\n\n    instance.log.apply(instance, args);\n  });\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMvbG9nLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7cUJBQWUsVUFBUyxRQUFRLEVBQUU7QUFDaEMsVUFBUSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsa0NBQWlDO0FBQzlELFFBQUksSUFBSSxHQUFHLENBQUMsU0FBUyxDQUFDO1FBQ3BCLE9BQU8sR0FBRyxTQUFTLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztBQUM1QyxTQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDN0MsVUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUN6Qjs7QUFFRCxRQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7QUFDZCxRQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksRUFBRTtBQUM5QixXQUFLLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7S0FDNUIsTUFBTSxJQUFJLE9BQU8sQ0FBQyxJQUFJLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxFQUFFO0FBQ3JELFdBQUssR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztLQUM1QjtBQUNELFFBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUM7O0FBRWhCLFlBQVEsQ0FBQyxHQUFHLE1BQUEsQ0FBWixRQUFRLEVBQVEsSUFBSSxDQUFDLENBQUM7R0FDdkIsQ0FBQyxDQUFDO0NBQ0oiLCJmaWxlIjoibG9nLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oaW5zdGFuY2UpIHtcbiAgaW5zdGFuY2UucmVnaXN0ZXJIZWxwZXIoJ2xvZycsIGZ1bmN0aW9uKC8qIG1lc3NhZ2UsIG9wdGlvbnMgKi8pIHtcbiAgICBsZXQgYXJncyA9IFt1bmRlZmluZWRdLFxuICAgICAgb3B0aW9ucyA9IGFyZ3VtZW50c1thcmd1bWVudHMubGVuZ3RoIC0gMV07XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoIC0gMTsgaSsrKSB7XG4gICAgICBhcmdzLnB1c2goYXJndW1lbnRzW2ldKTtcbiAgICB9XG5cbiAgICBsZXQgbGV2ZWwgPSAxO1xuICAgIGlmIChvcHRpb25zLmhhc2gubGV2ZWwgIT0gbnVsbCkge1xuICAgICAgbGV2ZWwgPSBvcHRpb25zLmhhc2gubGV2ZWw7XG4gICAgfSBlbHNlIGlmIChvcHRpb25zLmRhdGEgJiYgb3B0aW9ucy5kYXRhLmxldmVsICE9IG51bGwpIHtcbiAgICAgIGxldmVsID0gb3B0aW9ucy5kYXRhLmxldmVsO1xuICAgIH1cbiAgICBhcmdzWzBdID0gbGV2ZWw7XG5cbiAgICBpbnN0YW5jZS5sb2coLi4uYXJncyk7XG4gIH0pO1xufVxuIl19\n","'use strict';\n\nexports.__esModule = true;\n\nexports['default'] = function (instance) {\n  instance.registerHelper('lookup', function (obj, field, options) {\n    if (!obj) {\n      // Note for 5.0: Change to \"obj == null\" in 5.0\n      return obj;\n    }\n    return options.lookupProperty(obj, field);\n  });\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMvbG9va3VwLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7cUJBQWUsVUFBUyxRQUFRLEVBQUU7QUFDaEMsVUFBUSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsVUFBUyxHQUFHLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRTtBQUM5RCxRQUFJLENBQUMsR0FBRyxFQUFFOztBQUVSLGFBQU8sR0FBRyxDQUFDO0tBQ1o7QUFDRCxXQUFPLE9BQU8sQ0FBQyxjQUFjLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0dBQzNDLENBQUMsQ0FBQztDQUNKIiwiZmlsZSI6Imxvb2t1cC5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGluc3RhbmNlKSB7XG4gIGluc3RhbmNlLnJlZ2lzdGVySGVscGVyKCdsb29rdXAnLCBmdW5jdGlvbihvYmosIGZpZWxkLCBvcHRpb25zKSB7XG4gICAgaWYgKCFvYmopIHtcbiAgICAgIC8vIE5vdGUgZm9yIDUuMDogQ2hhbmdlIHRvIFwib2JqID09IG51bGxcIiBpbiA1LjBcbiAgICAgIHJldHVybiBvYmo7XG4gICAgfVxuICAgIHJldHVybiBvcHRpb25zLmxvb2t1cFByb3BlcnR5KG9iaiwgZmllbGQpO1xuICB9KTtcbn1cbiJdfQ==\n","'use strict';\n\nexports.__esModule = true;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _utils = require('../utils');\n\nvar _exception = require('../exception');\n\nvar _exception2 = _interopRequireDefault(_exception);\n\nexports['default'] = function (instance) {\n  instance.registerHelper('with', function (context, options) {\n    if (arguments.length != 2) {\n      throw new _exception2['default']('#with requires exactly one argument');\n    }\n    if (_utils.isFunction(context)) {\n      context = context.call(this);\n    }\n\n    var fn = options.fn;\n\n    if (!_utils.isEmpty(context)) {\n      var data = options.data;\n      if (options.data && options.ids) {\n        data = _utils.createFrame(options.data);\n        data.contextPath = _utils.appendContextPath(options.data.contextPath, options.ids[0]);\n      }\n\n      return fn(context, {\n        data: data,\n        blockParams: _utils.blockParams([context], [data && data.contextPath])\n      });\n    } else {\n      return options.inverse(this);\n    }\n  });\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMvd2l0aC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O3FCQU1PLFVBQVU7O3lCQUNLLGNBQWM7Ozs7cUJBRXJCLFVBQVMsUUFBUSxFQUFFO0FBQ2hDLFVBQVEsQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLFVBQVMsT0FBTyxFQUFFLE9BQU8sRUFBRTtBQUN6RCxRQUFJLFNBQVMsQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFO0FBQ3pCLFlBQU0sMkJBQWMscUNBQXFDLENBQUMsQ0FBQztLQUM1RDtBQUNELFFBQUksa0JBQVcsT0FBTyxDQUFDLEVBQUU7QUFDdkIsYUFBTyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDOUI7O0FBRUQsUUFBSSxFQUFFLEdBQUcsT0FBTyxDQUFDLEVBQUUsQ0FBQzs7QUFFcEIsUUFBSSxDQUFDLGVBQVEsT0FBTyxDQUFDLEVBQUU7QUFDckIsVUFBSSxJQUFJLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQztBQUN4QixVQUFJLE9BQU8sQ0FBQyxJQUFJLElBQUksT0FBTyxDQUFDLEdBQUcsRUFBRTtBQUMvQixZQUFJLEdBQUcsbUJBQVksT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2pDLFlBQUksQ0FBQyxXQUFXLEdBQUcseUJBQ2pCLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUN4QixPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUNmLENBQUM7T0FDSDs7QUFFRCxhQUFPLEVBQUUsQ0FBQyxPQUFPLEVBQUU7QUFDakIsWUFBSSxFQUFFLElBQUk7QUFDVixtQkFBVyxFQUFFLG1CQUFZLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO09BQ2hFLENBQUMsQ0FBQztLQUNKLE1BQU07QUFDTCxhQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDOUI7R0FDRixDQUFDLENBQUM7Q0FDSiIsImZpbGUiOiJ3aXRoLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgYXBwZW5kQ29udGV4dFBhdGgsXG4gIGJsb2NrUGFyYW1zLFxuICBjcmVhdGVGcmFtZSxcbiAgaXNFbXB0eSxcbiAgaXNGdW5jdGlvblxufSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQgRXhjZXB0aW9uIGZyb20gJy4uL2V4Y2VwdGlvbic7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGluc3RhbmNlKSB7XG4gIGluc3RhbmNlLnJlZ2lzdGVySGVscGVyKCd3aXRoJywgZnVuY3Rpb24oY29udGV4dCwgb3B0aW9ucykge1xuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoICE9IDIpIHtcbiAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJyN3aXRoIHJlcXVpcmVzIGV4YWN0bHkgb25lIGFyZ3VtZW50Jyk7XG4gICAgfVxuICAgIGlmIChpc0Z1bmN0aW9uKGNvbnRleHQpKSB7XG4gICAgICBjb250ZXh0ID0gY29udGV4dC5jYWxsKHRoaXMpO1xuICAgIH1cblxuICAgIGxldCBmbiA9IG9wdGlvbnMuZm47XG5cbiAgICBpZiAoIWlzRW1wdHkoY29udGV4dCkpIHtcbiAgICAgIGxldCBkYXRhID0gb3B0aW9ucy5kYXRhO1xuICAgICAgaWYgKG9wdGlvbnMuZGF0YSAmJiBvcHRpb25zLmlkcykge1xuICAgICAgICBkYXRhID0gY3JlYXRlRnJhbWUob3B0aW9ucy5kYXRhKTtcbiAgICAgICAgZGF0YS5jb250ZXh0UGF0aCA9IGFwcGVuZENvbnRleHRQYXRoKFxuICAgICAgICAgIG9wdGlvbnMuZGF0YS5jb250ZXh0UGF0aCxcbiAgICAgICAgICBvcHRpb25zLmlkc1swXVxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZm4oY29udGV4dCwge1xuICAgICAgICBkYXRhOiBkYXRhLFxuICAgICAgICBibG9ja1BhcmFtczogYmxvY2tQYXJhbXMoW2NvbnRleHRdLCBbZGF0YSAmJiBkYXRhLmNvbnRleHRQYXRoXSlcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gb3B0aW9ucy5pbnZlcnNlKHRoaXMpO1xuICAgIH1cbiAgfSk7XG59XG4iXX0=\n","'use strict';\n\nexports.__esModule = true;\nexports.registerDefaultDecorators = registerDefaultDecorators;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _decoratorsInline = require('./decorators/inline');\n\nvar _decoratorsInline2 = _interopRequireDefault(_decoratorsInline);\n\nfunction registerDefaultDecorators(instance) {\n  _decoratorsInline2['default'](instance);\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2RlY29yYXRvcnMuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Z0NBQTJCLHFCQUFxQjs7OztBQUV6QyxTQUFTLHlCQUF5QixDQUFDLFFBQVEsRUFBRTtBQUNsRCxnQ0FBZSxRQUFRLENBQUMsQ0FBQztDQUMxQiIsImZpbGUiOiJkZWNvcmF0b3JzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHJlZ2lzdGVySW5saW5lIGZyb20gJy4vZGVjb3JhdG9ycy9pbmxpbmUnO1xuXG5leHBvcnQgZnVuY3Rpb24gcmVnaXN0ZXJEZWZhdWx0RGVjb3JhdG9ycyhpbnN0YW5jZSkge1xuICByZWdpc3RlcklubGluZShpbnN0YW5jZSk7XG59XG4iXX0=\n","'use strict';\n\nexports.__esModule = true;\n\nvar _utils = require('../utils');\n\nexports['default'] = function (instance) {\n  instance.registerDecorator('inline', function (fn, props, container, options) {\n    var ret = fn;\n    if (!props.partials) {\n      props.partials = {};\n      ret = function (context, options) {\n        // Create a new partials stack frame prior to exec.\n        var original = container.partials;\n        container.partials = _utils.extend({}, original, props.partials);\n        var ret = fn(context, options);\n        container.partials = original;\n        return ret;\n      };\n    }\n\n    props.partials[options.args[0]] = options.fn;\n\n    return ret;\n  });\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2RlY29yYXRvcnMvaW5saW5lLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7cUJBQXVCLFVBQVU7O3FCQUVsQixVQUFTLFFBQVEsRUFBRTtBQUNoQyxVQUFRLENBQUMsaUJBQWlCLENBQUMsUUFBUSxFQUFFLFVBQVMsRUFBRSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFO0FBQzNFLFFBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQztBQUNiLFFBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFO0FBQ25CLFdBQUssQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO0FBQ3BCLFNBQUcsR0FBRyxVQUFTLE9BQU8sRUFBRSxPQUFPLEVBQUU7O0FBRS9CLFlBQUksUUFBUSxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUM7QUFDbEMsaUJBQVMsQ0FBQyxRQUFRLEdBQUcsY0FBTyxFQUFFLEVBQUUsUUFBUSxFQUFFLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUMxRCxZQUFJLEdBQUcsR0FBRyxFQUFFLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQy9CLGlCQUFTLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztBQUM5QixlQUFPLEdBQUcsQ0FBQztPQUNaLENBQUM7S0FDSDs7QUFFRCxTQUFLLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsRUFBRSxDQUFDOztBQUU3QyxXQUFPLEdBQUcsQ0FBQztHQUNaLENBQUMsQ0FBQztDQUNKIiwiZmlsZSI6ImlubGluZS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGV4dGVuZCB9IGZyb20gJy4uL3V0aWxzJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oaW5zdGFuY2UpIHtcbiAgaW5zdGFuY2UucmVnaXN0ZXJEZWNvcmF0b3IoJ2lubGluZScsIGZ1bmN0aW9uKGZuLCBwcm9wcywgY29udGFpbmVyLCBvcHRpb25zKSB7XG4gICAgbGV0IHJldCA9IGZuO1xuICAgIGlmICghcHJvcHMucGFydGlhbHMpIHtcbiAgICAgIHByb3BzLnBhcnRpYWxzID0ge307XG4gICAgICByZXQgPSBmdW5jdGlvbihjb250ZXh0LCBvcHRpb25zKSB7XG4gICAgICAgIC8vIENyZWF0ZSBhIG5ldyBwYXJ0aWFscyBzdGFjayBmcmFtZSBwcmlvciB0byBleGVjLlxuICAgICAgICBsZXQgb3JpZ2luYWwgPSBjb250YWluZXIucGFydGlhbHM7XG4gICAgICAgIGNvbnRhaW5lci5wYXJ0aWFscyA9IGV4dGVuZCh7fSwgb3JpZ2luYWwsIHByb3BzLnBhcnRpYWxzKTtcbiAgICAgICAgbGV0IHJldCA9IGZuKGNvbnRleHQsIG9wdGlvbnMpO1xuICAgICAgICBjb250YWluZXIucGFydGlhbHMgPSBvcmlnaW5hbDtcbiAgICAgICAgcmV0dXJuIHJldDtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcHJvcHMucGFydGlhbHNbb3B0aW9ucy5hcmdzWzBdXSA9IG9wdGlvbnMuZm47XG5cbiAgICByZXR1cm4gcmV0O1xuICB9KTtcbn1cbiJdfQ==\n","'use strict';\n\nexports.__esModule = true;\nexports.createNewLookupObject = createNewLookupObject;\n\nvar _utils = require('../utils');\n\n/**\n * Create a new object with \"null\"-prototype to avoid truthy results on prototype properties.\n * The resulting object can be used with \"object[property]\" to check if a property exists\n * @param {...object} sources a varargs parameter of source objects that will be merged\n * @returns {object}\n */\n\nfunction createNewLookupObject() {\n  for (var _len = arguments.length, sources = Array(_len), _key = 0; _key < _len; _key++) {\n    sources[_key] = arguments[_key];\n  }\n\n  return _utils.extend.apply(undefined, [Object.create(null)].concat(sources));\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2ludGVybmFsL2NyZWF0ZS1uZXctbG9va3VwLW9iamVjdC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztxQkFBdUIsVUFBVTs7Ozs7Ozs7O0FBUTFCLFNBQVMscUJBQXFCLEdBQWE7b0NBQVQsT0FBTztBQUFQLFdBQU87OztBQUM5QyxTQUFPLGdDQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQUssT0FBTyxFQUFDLENBQUM7Q0FDaEQiLCJmaWxlIjoiY3JlYXRlLW5ldy1sb29rdXAtb2JqZWN0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZXh0ZW5kIH0gZnJvbSAnLi4vdXRpbHMnO1xuXG4vKipcbiAqIENyZWF0ZSBhIG5ldyBvYmplY3Qgd2l0aCBcIm51bGxcIi1wcm90b3R5cGUgdG8gYXZvaWQgdHJ1dGh5IHJlc3VsdHMgb24gcHJvdG90eXBlIHByb3BlcnRpZXMuXG4gKiBUaGUgcmVzdWx0aW5nIG9iamVjdCBjYW4gYmUgdXNlZCB3aXRoIFwib2JqZWN0W3Byb3BlcnR5XVwiIHRvIGNoZWNrIGlmIGEgcHJvcGVydHkgZXhpc3RzXG4gKiBAcGFyYW0gey4uLm9iamVjdH0gc291cmNlcyBhIHZhcmFyZ3MgcGFyYW1ldGVyIG9mIHNvdXJjZSBvYmplY3RzIHRoYXQgd2lsbCBiZSBtZXJnZWRcbiAqIEByZXR1cm5zIHtvYmplY3R9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVOZXdMb29rdXBPYmplY3QoLi4uc291cmNlcykge1xuICByZXR1cm4gZXh0ZW5kKE9iamVjdC5jcmVhdGUobnVsbCksIC4uLnNvdXJjZXMpO1xufVxuIl19\n","// Build out our basic SafeString type\n'use strict';\n\nexports.__esModule = true;\nfunction SafeString(string) {\n  this.string = string;\n}\n\nSafeString.prototype.toString = SafeString.prototype.toHTML = function () {\n  return '' + this.string;\n};\n\nexports['default'] = SafeString;\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL3NhZmUtc3RyaW5nLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFDQSxTQUFTLFVBQVUsQ0FBQyxNQUFNLEVBQUU7QUFDMUIsTUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7Q0FDdEI7O0FBRUQsVUFBVSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsWUFBVztBQUN2RSxTQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO0NBQ3pCLENBQUM7O3FCQUVhLFVBQVUiLCJmaWxlIjoic2FmZS1zdHJpbmcuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBCdWlsZCBvdXQgb3VyIGJhc2ljIFNhZmVTdHJpbmcgdHlwZVxuZnVuY3Rpb24gU2FmZVN0cmluZyhzdHJpbmcpIHtcbiAgdGhpcy5zdHJpbmcgPSBzdHJpbmc7XG59XG5cblNhZmVTdHJpbmcucHJvdG90eXBlLnRvU3RyaW5nID0gU2FmZVN0cmluZy5wcm90b3R5cGUudG9IVE1MID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiAnJyArIHRoaXMuc3RyaW5nO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgU2FmZVN0cmluZztcbiJdfQ==\n","'use strict';\n\nexports.__esModule = true;\nexports.checkRevision = checkRevision;\nexports.template = template;\nexports.wrapProgram = wrapProgram;\nexports.resolvePartial = resolvePartial;\nexports.invokePartial = invokePartial;\nexports.noop = noop;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\n// istanbul ignore next\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } }\n\nvar _utils = require('./utils');\n\nvar Utils = _interopRequireWildcard(_utils);\n\nvar _exception = require('./exception');\n\nvar _exception2 = _interopRequireDefault(_exception);\n\nvar _base = require('./base');\n\nvar _helpers = require('./helpers');\n\nvar _internalWrapHelper = require('./internal/wrapHelper');\n\nvar _internalProtoAccess = require('./internal/proto-access');\n\nfunction checkRevision(compilerInfo) {\n  var compilerRevision = compilerInfo && compilerInfo[0] || 1,\n      currentRevision = _base.COMPILER_REVISION;\n\n  if (compilerRevision >= _base.LAST_COMPATIBLE_COMPILER_REVISION && compilerRevision <= _base.COMPILER_REVISION) {\n    return;\n  }\n\n  if (compilerRevision < _base.LAST_COMPATIBLE_COMPILER_REVISION) {\n    var runtimeVersions = _base.REVISION_CHANGES[currentRevision],\n        compilerVersions = _base.REVISION_CHANGES[compilerRevision];\n    throw new _exception2['default']('Template was precompiled with an older version of Handlebars than the current runtime. ' + 'Please update your precompiler to a newer version (' + runtimeVersions + ') or downgrade your runtime to an older version (' + compilerVersions + ').');\n  } else {\n    // Use the embedded version info since the runtime doesn't know about this revision yet\n    throw new _exception2['default']('Template was precompiled with a newer version of Handlebars than the current runtime. ' + 'Please update your runtime to a newer version (' + compilerInfo[1] + ').');\n  }\n}\n\nfunction template(templateSpec, env) {\n  /* istanbul ignore next */\n  if (!env) {\n    throw new _exception2['default']('No environment passed to template');\n  }\n  if (!templateSpec || !templateSpec.main) {\n    throw new _exception2['default']('Unknown template object: ' + typeof templateSpec);\n  }\n\n  templateSpec.main.decorator = templateSpec.main_d;\n\n  // Note: Using env.VM references rather than local var references throughout this section to allow\n  // for external users to override these as pseudo-supported APIs.\n  env.VM.checkRevision(templateSpec.compiler);\n\n  // backwards compatibility for precompiled templates with compiler-version 7 (<4.3.0)\n  var templateWasPrecompiledWithCompilerV7 = templateSpec.compiler && templateSpec.compiler[0] === 7;\n\n  function invokePartialWrapper(partial, context, options) {\n    if (options.hash) {\n      context = Utils.extend({}, context, options.hash);\n      if (options.ids) {\n        options.ids[0] = true;\n      }\n    }\n    partial = env.VM.resolvePartial.call(this, partial, context, options);\n\n    var extendedOptions = Utils.extend({}, options, {\n      hooks: this.hooks,\n      protoAccessControl: this.protoAccessControl\n    });\n\n    var result = env.VM.invokePartial.call(this, partial, context, extendedOptions);\n\n    if (result == null && env.compile) {\n      options.partials[options.name] = env.compile(partial, templateSpec.compilerOptions, env);\n      result = options.partials[options.name](context, extendedOptions);\n    }\n    if (result != null) {\n      if (options.indent) {\n        var lines = result.split('\\n');\n        for (var i = 0, l = lines.length; i < l; i++) {\n          if (!lines[i] && i + 1 === l) {\n            break;\n          }\n\n          lines[i] = options.indent + lines[i];\n        }\n        result = lines.join('\\n');\n      }\n      return result;\n    } else {\n      throw new _exception2['default']('The partial ' + options.name + ' could not be compiled when running in runtime-only mode');\n    }\n  }\n\n  // Just add water\n  var container = {\n    strict: function strict(obj, name, loc) {\n      if (!obj || !(name in obj)) {\n        throw new _exception2['default']('\"' + name + '\" not defined in ' + obj, {\n          loc: loc\n        });\n      }\n      return obj[name];\n    },\n    lookupProperty: function lookupProperty(parent, propertyName) {\n      var result = parent[propertyName];\n      if (result == null) {\n        return result;\n      }\n      if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n        return result;\n      }\n\n      if (_internalProtoAccess.resultIsAllowed(result, container.protoAccessControl, propertyName)) {\n        return result;\n      }\n      return undefined;\n    },\n    lookup: function lookup(depths, name) {\n      var len = depths.length;\n      for (var i = 0; i < len; i++) {\n        var result = depths[i] && container.lookupProperty(depths[i], name);\n        if (result != null) {\n          return depths[i][name];\n        }\n      }\n    },\n    lambda: function lambda(current, context) {\n      return typeof current === 'function' ? current.call(context) : current;\n    },\n\n    escapeExpression: Utils.escapeExpression,\n    invokePartial: invokePartialWrapper,\n\n    fn: function fn(i) {\n      var ret = templateSpec[i];\n      ret.decorator = templateSpec[i + '_d'];\n      return ret;\n    },\n\n    programs: [],\n    program: function program(i, data, declaredBlockParams, blockParams, depths) {\n      var programWrapper = this.programs[i],\n          fn = this.fn(i);\n      if (data || depths || blockParams || declaredBlockParams) {\n        programWrapper = wrapProgram(this, i, fn, data, declaredBlockParams, blockParams, depths);\n      } else if (!programWrapper) {\n        programWrapper = this.programs[i] = wrapProgram(this, i, fn);\n      }\n      return programWrapper;\n    },\n\n    data: function data(value, depth) {\n      while (value && depth--) {\n        value = value._parent;\n      }\n      return value;\n    },\n    mergeIfNeeded: function mergeIfNeeded(param, common) {\n      var obj = param || common;\n\n      if (param && common && param !== common) {\n        obj = Utils.extend({}, common, param);\n      }\n\n      return obj;\n    },\n    // An empty object to use as replacement for null-contexts\n    nullContext: Object.seal({}),\n\n    noop: env.VM.noop,\n    compilerInfo: templateSpec.compiler\n  };\n\n  function ret(context) {\n    var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];\n\n    var data = options.data;\n\n    ret._setup(options);\n    if (!options.partial && templateSpec.useData) {\n      data = initData(context, data);\n    }\n    var depths = undefined,\n        blockParams = templateSpec.useBlockParams ? [] : undefined;\n    if (templateSpec.useDepths) {\n      if (options.depths) {\n        depths = context != options.depths[0] ? [context].concat(options.depths) : options.depths;\n      } else {\n        depths = [context];\n      }\n    }\n\n    function main(context /*, options*/) {\n      return '' + templateSpec.main(container, context, container.helpers, container.partials, data, blockParams, depths);\n    }\n\n    main = executeDecorators(templateSpec.main, main, container, options.depths || [], data, blockParams);\n    return main(context, options);\n  }\n\n  ret.isTop = true;\n\n  ret._setup = function (options) {\n    if (!options.partial) {\n      var mergedHelpers = Utils.extend({}, env.helpers, options.helpers);\n      wrapHelpersToPassLookupProperty(mergedHelpers, container);\n      container.helpers = mergedHelpers;\n\n      if (templateSpec.usePartial) {\n        // Use mergeIfNeeded here to prevent compiling global partials multiple times\n        container.partials = container.mergeIfNeeded(options.partials, env.partials);\n      }\n      if (templateSpec.usePartial || templateSpec.useDecorators) {\n        container.decorators = Utils.extend({}, env.decorators, options.decorators);\n      }\n\n      container.hooks = {};\n      container.protoAccessControl = _internalProtoAccess.createProtoAccessControl(options);\n\n      var keepHelperInHelpers = options.allowCallsToHelperMissing || templateWasPrecompiledWithCompilerV7;\n      _helpers.moveHelperToHooks(container, 'helperMissing', keepHelperInHelpers);\n      _helpers.moveHelperToHooks(container, 'blockHelperMissing', keepHelperInHelpers);\n    } else {\n      container.protoAccessControl = options.protoAccessControl; // internal option\n      container.helpers = options.helpers;\n      container.partials = options.partials;\n      container.decorators = options.decorators;\n      container.hooks = options.hooks;\n    }\n  };\n\n  ret._child = function (i, data, blockParams, depths) {\n    if (templateSpec.useBlockParams && !blockParams) {\n      throw new _exception2['default']('must pass block params');\n    }\n    if (templateSpec.useDepths && !depths) {\n      throw new _exception2['default']('must pass parent depths');\n    }\n\n    return wrapProgram(container, i, templateSpec[i], data, 0, blockParams, depths);\n  };\n  return ret;\n}\n\nfunction wrapProgram(container, i, fn, data, declaredBlockParams, blockParams, depths) {\n  function prog(context) {\n    var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];\n\n    var currentDepths = depths;\n    if (depths && context != depths[0] && !(context === container.nullContext && depths[0] === null)) {\n      currentDepths = [context].concat(depths);\n    }\n\n    return fn(container, context, container.helpers, container.partials, options.data || data, blockParams && [options.blockParams].concat(blockParams), currentDepths);\n  }\n\n  prog = executeDecorators(fn, prog, container, depths, data, blockParams);\n\n  prog.program = i;\n  prog.depth = depths ? depths.length : 0;\n  prog.blockParams = declaredBlockParams || 0;\n  return prog;\n}\n\n/**\n * This is currently part of the official API, therefore implementation details should not be changed.\n */\n\nfunction resolvePartial(partial, context, options) {\n  if (!partial) {\n    if (options.name === '@partial-block') {\n      partial = options.data['partial-block'];\n    } else {\n      partial = options.partials[options.name];\n    }\n  } else if (!partial.call && !options.name) {\n    // This is a dynamic partial that returned a string\n    options.name = partial;\n    partial = options.partials[partial];\n  }\n  return partial;\n}\n\nfunction invokePartial(partial, context, options) {\n  // Use the current closure context to save the partial-block if this partial\n  var currentPartialBlock = options.data && options.data['partial-block'];\n  options.partial = true;\n  if (options.ids) {\n    options.data.contextPath = options.ids[0] || options.data.contextPath;\n  }\n\n  var partialBlock = undefined;\n  if (options.fn && options.fn !== noop) {\n    (function () {\n      options.data = _base.createFrame(options.data);\n      // Wrapper function to get access to currentPartialBlock from the closure\n      var fn = options.fn;\n      partialBlock = options.data['partial-block'] = function partialBlockWrapper(context) {\n        var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];\n\n        // Restore the partial-block from the closure for the execution of the block\n        // i.e. the part inside the block of the partial call.\n        options.data = _base.createFrame(options.data);\n        options.data['partial-block'] = currentPartialBlock;\n        return fn(context, options);\n      };\n      if (fn.partials) {\n        options.partials = Utils.extend({}, options.partials, fn.partials);\n      }\n    })();\n  }\n\n  if (partial === undefined && partialBlock) {\n    partial = partialBlock;\n  }\n\n  if (partial === undefined) {\n    throw new _exception2['default']('The partial ' + options.name + ' could not be found');\n  } else if (partial instanceof Function) {\n    return partial(context, options);\n  }\n}\n\nfunction noop() {\n  return '';\n}\n\nfunction initData(context, data) {\n  if (!data || !('root' in data)) {\n    data = data ? _base.createFrame(data) : {};\n    data.root = context;\n  }\n  return data;\n}\n\nfunction executeDecorators(fn, prog, container, depths, data, blockParams) {\n  if (fn.decorator) {\n    var props = {};\n    prog = fn.decorator(prog, props, container, depths && depths[0], data, blockParams, depths);\n    Utils.extend(prog, props);\n  }\n  return prog;\n}\n\nfunction wrapHelpersToPassLookupProperty(mergedHelpers, container) {\n  Object.keys(mergedHelpers).forEach(function (helperName) {\n    var helper = mergedHelpers[helperName];\n    mergedHelpers[helperName] = passLookupPropertyOption(helper, container);\n  });\n}\n\nfunction passLookupPropertyOption(helper, container) {\n  var lookupProperty = container.lookupProperty;\n  return _internalWrapHelper.wrapHelper(helper, function (options) {\n    return Utils.extend({ lookupProperty: lookupProperty }, options);\n  });\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL3J1bnRpbWUuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7cUJBQXVCLFNBQVM7O0lBQXBCLEtBQUs7O3lCQUNLLGFBQWE7Ozs7b0JBTTVCLFFBQVE7O3VCQUNtQixXQUFXOztrQ0FDbEIsdUJBQXVCOzttQ0FJM0MseUJBQXlCOztBQUV6QixTQUFTLGFBQWEsQ0FBQyxZQUFZLEVBQUU7QUFDMUMsTUFBTSxnQkFBZ0IsR0FBRyxBQUFDLFlBQVksSUFBSSxZQUFZLENBQUMsQ0FBQyxDQUFDLElBQUssQ0FBQztNQUM3RCxlQUFlLDBCQUFvQixDQUFDOztBQUV0QyxNQUNFLGdCQUFnQiwyQ0FBcUMsSUFDckQsZ0JBQWdCLDJCQUFxQixFQUNyQztBQUNBLFdBQU87R0FDUjs7QUFFRCxNQUFJLGdCQUFnQiwwQ0FBb0MsRUFBRTtBQUN4RCxRQUFNLGVBQWUsR0FBRyx1QkFBaUIsZUFBZSxDQUFDO1FBQ3ZELGdCQUFnQixHQUFHLHVCQUFpQixnQkFBZ0IsQ0FBQyxDQUFDO0FBQ3hELFVBQU0sMkJBQ0oseUZBQXlGLEdBQ3ZGLHFEQUFxRCxHQUNyRCxlQUFlLEdBQ2YsbURBQW1ELEdBQ25ELGdCQUFnQixHQUNoQixJQUFJLENBQ1AsQ0FBQztHQUNILE1BQU07O0FBRUwsVUFBTSwyQkFDSix3RkFBd0YsR0FDdEYsaURBQWlELEdBQ2pELFlBQVksQ0FBQyxDQUFDLENBQUMsR0FDZixJQUFJLENBQ1AsQ0FBQztHQUNIO0NBQ0Y7O0FBRU0sU0FBUyxRQUFRLENBQUMsWUFBWSxFQUFFLEdBQUcsRUFBRTs7QUFFMUMsTUFBSSxDQUFDLEdBQUcsRUFBRTtBQUNSLFVBQU0sMkJBQWMsbUNBQW1DLENBQUMsQ0FBQztHQUMxRDtBQUNELE1BQUksQ0FBQyxZQUFZLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFO0FBQ3ZDLFVBQU0sMkJBQWMsMkJBQTJCLEdBQUcsT0FBTyxZQUFZLENBQUMsQ0FBQztHQUN4RTs7QUFFRCxjQUFZLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxZQUFZLENBQUMsTUFBTSxDQUFDOzs7O0FBSWxELEtBQUcsQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQzs7O0FBRzVDLE1BQU0sb0NBQW9DLEdBQ3hDLFlBQVksQ0FBQyxRQUFRLElBQUksWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7O0FBRTFELFdBQVMsb0JBQW9CLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUU7QUFDdkQsUUFBSSxPQUFPLENBQUMsSUFBSSxFQUFFO0FBQ2hCLGFBQU8sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2xELFVBQUksT0FBTyxDQUFDLEdBQUcsRUFBRTtBQUNmLGVBQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDO09BQ3ZCO0tBQ0Y7QUFDRCxXQUFPLEdBQUcsR0FBRyxDQUFDLEVBQUUsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDOztBQUV0RSxRQUFJLGVBQWUsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxPQUFPLEVBQUU7QUFDOUMsV0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO0FBQ2pCLHdCQUFrQixFQUFFLElBQUksQ0FBQyxrQkFBa0I7S0FDNUMsQ0FBQyxDQUFDOztBQUVILFFBQUksTUFBTSxHQUFHLEdBQUcsQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLElBQUksQ0FDcEMsSUFBSSxFQUNKLE9BQU8sRUFDUCxPQUFPLEVBQ1AsZUFBZSxDQUNoQixDQUFDOztBQUVGLFFBQUksTUFBTSxJQUFJLElBQUksSUFBSSxHQUFHLENBQUMsT0FBTyxFQUFFO0FBQ2pDLGFBQU8sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQzFDLE9BQU8sRUFDUCxZQUFZLENBQUMsZUFBZSxFQUM1QixHQUFHLENBQ0osQ0FBQztBQUNGLFlBQU0sR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLEVBQUUsZUFBZSxDQUFDLENBQUM7S0FDbkU7QUFDRCxRQUFJLE1BQU0sSUFBSSxJQUFJLEVBQUU7QUFDbEIsVUFBSSxPQUFPLENBQUMsTUFBTSxFQUFFO0FBQ2xCLFlBQUksS0FBSyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDL0IsYUFBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUM1QyxjQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFO0FBQzVCLGtCQUFNO1dBQ1A7O0FBRUQsZUFBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3RDO0FBQ0QsY0FBTSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7T0FDM0I7QUFDRCxhQUFPLE1BQU0sQ0FBQztLQUNmLE1BQU07QUFDTCxZQUFNLDJCQUNKLGNBQWMsR0FDWixPQUFPLENBQUMsSUFBSSxHQUNaLDBEQUEwRCxDQUM3RCxDQUFDO0tBQ0g7R0FDRjs7O0FBR0QsTUFBSSxTQUFTLEdBQUc7QUFDZCxVQUFNLEVBQUUsZ0JBQVMsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUU7QUFDL0IsVUFBSSxDQUFDLEdBQUcsSUFBSSxFQUFFLElBQUksSUFBSSxHQUFHLENBQUEsQUFBQyxFQUFFO0FBQzFCLGNBQU0sMkJBQWMsR0FBRyxHQUFHLElBQUksR0FBRyxtQkFBbUIsR0FBRyxHQUFHLEVBQUU7QUFDMUQsYUFBRyxFQUFFLEdBQUc7U0FDVCxDQUFDLENBQUM7T0FDSjtBQUNELGFBQU8sR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQ2xCO0FBQ0Qsa0JBQWMsRUFBRSx3QkFBUyxNQUFNLEVBQUUsWUFBWSxFQUFFO0FBQzdDLFVBQUksTUFBTSxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztBQUNsQyxVQUFJLE1BQU0sSUFBSSxJQUFJLEVBQUU7QUFDbEIsZUFBTyxNQUFNLENBQUM7T0FDZjtBQUNELFVBQUksTUFBTSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxZQUFZLENBQUMsRUFBRTtBQUM5RCxlQUFPLE1BQU0sQ0FBQztPQUNmOztBQUVELFVBQUkscUNBQWdCLE1BQU0sRUFBRSxTQUFTLENBQUMsa0JBQWtCLEVBQUUsWUFBWSxDQUFDLEVBQUU7QUFDdkUsZUFBTyxNQUFNLENBQUM7T0FDZjtBQUNELGFBQU8sU0FBUyxDQUFDO0tBQ2xCO0FBQ0QsVUFBTSxFQUFFLGdCQUFTLE1BQU0sRUFBRSxJQUFJLEVBQUU7QUFDN0IsVUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQztBQUMxQixXQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQzVCLFlBQUksTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxTQUFTLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNwRSxZQUFJLE1BQU0sSUFBSSxJQUFJLEVBQUU7QUFDbEIsaUJBQU8sTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ3hCO09BQ0Y7S0FDRjtBQUNELFVBQU0sRUFBRSxnQkFBUyxPQUFPLEVBQUUsT0FBTyxFQUFFO0FBQ2pDLGFBQU8sT0FBTyxPQUFPLEtBQUssVUFBVSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsT0FBTyxDQUFDO0tBQ3hFOztBQUVELG9CQUFnQixFQUFFLEtBQUssQ0FBQyxnQkFBZ0I7QUFDeEMsaUJBQWEsRUFBRSxvQkFBb0I7O0FBRW5DLE1BQUUsRUFBRSxZQUFTLENBQUMsRUFBRTtBQUNkLFVBQUksR0FBRyxHQUFHLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMxQixTQUFHLENBQUMsU0FBUyxHQUFHLFlBQVksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7QUFDdkMsYUFBTyxHQUFHLENBQUM7S0FDWjs7QUFFRCxZQUFRLEVBQUUsRUFBRTtBQUNaLFdBQU8sRUFBRSxpQkFBUyxDQUFDLEVBQUUsSUFBSSxFQUFFLG1CQUFtQixFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUU7QUFDbkUsVUFBSSxjQUFjLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7VUFDbkMsRUFBRSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbEIsVUFBSSxJQUFJLElBQUksTUFBTSxJQUFJLFdBQVcsSUFBSSxtQkFBbUIsRUFBRTtBQUN4RCxzQkFBYyxHQUFHLFdBQVcsQ0FDMUIsSUFBSSxFQUNKLENBQUMsRUFDRCxFQUFFLEVBQ0YsSUFBSSxFQUNKLG1CQUFtQixFQUNuQixXQUFXLEVBQ1gsTUFBTSxDQUNQLENBQUM7T0FDSCxNQUFNLElBQUksQ0FBQyxjQUFjLEVBQUU7QUFDMUIsc0JBQWMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO09BQzlEO0FBQ0QsYUFBTyxjQUFjLENBQUM7S0FDdkI7O0FBRUQsUUFBSSxFQUFFLGNBQVMsS0FBSyxFQUFFLEtBQUssRUFBRTtBQUMzQixhQUFPLEtBQUssSUFBSSxLQUFLLEVBQUUsRUFBRTtBQUN2QixhQUFLLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQztPQUN2QjtBQUNELGFBQU8sS0FBSyxDQUFDO0tBQ2Q7QUFDRCxpQkFBYSxFQUFFLHVCQUFTLEtBQUssRUFBRSxNQUFNLEVBQUU7QUFDckMsVUFBSSxHQUFHLEdBQUcsS0FBSyxJQUFJLE1BQU0sQ0FBQzs7QUFFMUIsVUFBSSxLQUFLLElBQUksTUFBTSxJQUFJLEtBQUssS0FBSyxNQUFNLEVBQUU7QUFDdkMsV0FBRyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztPQUN2Qzs7QUFFRCxhQUFPLEdBQUcsQ0FBQztLQUNaOztBQUVELGVBQVcsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQzs7QUFFNUIsUUFBSSxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSTtBQUNqQixnQkFBWSxFQUFFLFlBQVksQ0FBQyxRQUFRO0dBQ3BDLENBQUM7O0FBRUYsV0FBUyxHQUFHLENBQUMsT0FBTyxFQUFnQjtRQUFkLE9BQU8seURBQUcsRUFBRTs7QUFDaEMsUUFBSSxJQUFJLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQzs7QUFFeEIsT0FBRyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUNwQixRQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sSUFBSSxZQUFZLENBQUMsT0FBTyxFQUFFO0FBQzVDLFVBQUksR0FBRyxRQUFRLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO0tBQ2hDO0FBQ0QsUUFBSSxNQUFNLFlBQUE7UUFDUixXQUFXLEdBQUcsWUFBWSxDQUFDLGNBQWMsR0FBRyxFQUFFLEdBQUcsU0FBUyxDQUFDO0FBQzdELFFBQUksWUFBWSxDQUFDLFNBQVMsRUFBRTtBQUMxQixVQUFJLE9BQU8sQ0FBQyxNQUFNLEVBQUU7QUFDbEIsY0FBTSxHQUNKLE9BQU8sSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUN4QixDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEdBQ2hDLE9BQU8sQ0FBQyxNQUFNLENBQUM7T0FDdEIsTUFBTTtBQUNMLGNBQU0sR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO09BQ3BCO0tBQ0Y7O0FBRUQsYUFBUyxJQUFJLENBQUMsT0FBTyxnQkFBZ0I7QUFDbkMsYUFDRSxFQUFFLEdBQ0YsWUFBWSxDQUFDLElBQUksQ0FDZixTQUFTLEVBQ1QsT0FBTyxFQUNQLFNBQVMsQ0FBQyxPQUFPLEVBQ2pCLFNBQVMsQ0FBQyxRQUFRLEVBQ2xCLElBQUksRUFDSixXQUFXLEVBQ1gsTUFBTSxDQUNQLENBQ0Q7S0FDSDs7QUFFRCxRQUFJLEdBQUcsaUJBQWlCLENBQ3RCLFlBQVksQ0FBQyxJQUFJLEVBQ2pCLElBQUksRUFDSixTQUFTLEVBQ1QsT0FBTyxDQUFDLE1BQU0sSUFBSSxFQUFFLEVBQ3BCLElBQUksRUFDSixXQUFXLENBQ1osQ0FBQztBQUNGLFdBQU8sSUFBSSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztHQUMvQjs7QUFFRCxLQUFHLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQzs7QUFFakIsS0FBRyxDQUFDLE1BQU0sR0FBRyxVQUFTLE9BQU8sRUFBRTtBQUM3QixRQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRTtBQUNwQixVQUFJLGFBQWEsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUNuRSxxQ0FBK0IsQ0FBQyxhQUFhLEVBQUUsU0FBUyxDQUFDLENBQUM7QUFDMUQsZUFBUyxDQUFDLE9BQU8sR0FBRyxhQUFhLENBQUM7O0FBRWxDLFVBQUksWUFBWSxDQUFDLFVBQVUsRUFBRTs7QUFFM0IsaUJBQVMsQ0FBQyxRQUFRLEdBQUcsU0FBUyxDQUFDLGFBQWEsQ0FDMUMsT0FBTyxDQUFDLFFBQVEsRUFDaEIsR0FBRyxDQUFDLFFBQVEsQ0FDYixDQUFDO09BQ0g7QUFDRCxVQUFJLFlBQVksQ0FBQyxVQUFVLElBQUksWUFBWSxDQUFDLGFBQWEsRUFBRTtBQUN6RCxpQkFBUyxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUNqQyxFQUFFLEVBQ0YsR0FBRyxDQUFDLFVBQVUsRUFDZCxPQUFPLENBQUMsVUFBVSxDQUNuQixDQUFDO09BQ0g7O0FBRUQsZUFBUyxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7QUFDckIsZUFBUyxDQUFDLGtCQUFrQixHQUFHLDhDQUF5QixPQUFPLENBQUMsQ0FBQzs7QUFFakUsVUFBSSxtQkFBbUIsR0FDckIsT0FBTyxDQUFDLHlCQUF5QixJQUNqQyxvQ0FBb0MsQ0FBQztBQUN2QyxpQ0FBa0IsU0FBUyxFQUFFLGVBQWUsRUFBRSxtQkFBbUIsQ0FBQyxDQUFDO0FBQ25FLGlDQUFrQixTQUFTLEVBQUUsb0JBQW9CLEVBQUUsbUJBQW1CLENBQUMsQ0FBQztLQUN6RSxNQUFNO0FBQ0wsZUFBUyxDQUFDLGtCQUFrQixHQUFHLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQztBQUMxRCxlQUFTLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUM7QUFDcEMsZUFBUyxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDO0FBQ3RDLGVBQVMsQ0FBQyxVQUFVLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQztBQUMxQyxlQUFTLENBQUMsS0FBSyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUM7S0FDakM7R0FDRixDQUFDOztBQUVGLEtBQUcsQ0FBQyxNQUFNLEdBQUcsVUFBUyxDQUFDLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUU7QUFDbEQsUUFBSSxZQUFZLENBQUMsY0FBYyxJQUFJLENBQUMsV0FBVyxFQUFFO0FBQy9DLFlBQU0sMkJBQWMsd0JBQXdCLENBQUMsQ0FBQztLQUMvQztBQUNELFFBQUksWUFBWSxDQUFDLFNBQVMsSUFBSSxDQUFDLE1BQU0sRUFBRTtBQUNyQyxZQUFNLDJCQUFjLHlCQUF5QixDQUFDLENBQUM7S0FDaEQ7O0FBRUQsV0FBTyxXQUFXLENBQ2hCLFNBQVMsRUFDVCxDQUFDLEVBQ0QsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUNmLElBQUksRUFDSixDQUFDLEVBQ0QsV0FBVyxFQUNYLE1BQU0sQ0FDUCxDQUFDO0dBQ0gsQ0FBQztBQUNGLFNBQU8sR0FBRyxDQUFDO0NBQ1o7O0FBRU0sU0FBUyxXQUFXLENBQ3pCLFNBQVMsRUFDVCxDQUFDLEVBQ0QsRUFBRSxFQUNGLElBQUksRUFDSixtQkFBbUIsRUFDbkIsV0FBVyxFQUNYLE1BQU0sRUFDTjtBQUNBLFdBQVMsSUFBSSxDQUFDLE9BQU8sRUFBZ0I7UUFBZCxPQUFPLHlEQUFHLEVBQUU7O0FBQ2pDLFFBQUksYUFBYSxHQUFHLE1BQU0sQ0FBQztBQUMzQixRQUNFLE1BQU0sSUFDTixPQUFPLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUNwQixFQUFFLE9BQU8sS0FBSyxTQUFTLENBQUMsV0FBVyxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUEsQUFBQyxFQUMxRDtBQUNBLG1CQUFhLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7S0FDMUM7O0FBRUQsV0FBTyxFQUFFLENBQ1AsU0FBUyxFQUNULE9BQU8sRUFDUCxTQUFTLENBQUMsT0FBTyxFQUNqQixTQUFTLENBQUMsUUFBUSxFQUNsQixPQUFPLENBQUMsSUFBSSxJQUFJLElBQUksRUFDcEIsV0FBVyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsRUFDeEQsYUFBYSxDQUNkLENBQUM7R0FDSDs7QUFFRCxNQUFJLEdBQUcsaUJBQWlCLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxXQUFXLENBQUMsQ0FBQzs7QUFFekUsTUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUM7QUFDakIsTUFBSSxDQUFDLEtBQUssR0FBRyxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7QUFDeEMsTUFBSSxDQUFDLFdBQVcsR0FBRyxtQkFBbUIsSUFBSSxDQUFDLENBQUM7QUFDNUMsU0FBTyxJQUFJLENBQUM7Q0FDYjs7Ozs7O0FBS00sU0FBUyxjQUFjLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUU7QUFDeEQsTUFBSSxDQUFDLE9BQU8sRUFBRTtBQUNaLFFBQUksT0FBTyxDQUFDLElBQUksS0FBSyxnQkFBZ0IsRUFBRTtBQUNyQyxhQUFPLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztLQUN6QyxNQUFNO0FBQ0wsYUFBTyxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQzFDO0dBQ0YsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUU7O0FBRXpDLFdBQU8sQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDO0FBQ3ZCLFdBQU8sR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0dBQ3JDO0FBQ0QsU0FBTyxPQUFPLENBQUM7Q0FDaEI7O0FBRU0sU0FBUyxhQUFhLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUU7O0FBRXZELE1BQU0sbUJBQW1CLEdBQUcsT0FBTyxDQUFDLElBQUksSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0FBQzFFLFNBQU8sQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO0FBQ3ZCLE1BQUksT0FBTyxDQUFDLEdBQUcsRUFBRTtBQUNmLFdBQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUM7R0FDdkU7O0FBRUQsTUFBSSxZQUFZLFlBQUEsQ0FBQztBQUNqQixNQUFJLE9BQU8sQ0FBQyxFQUFFLElBQUksT0FBTyxDQUFDLEVBQUUsS0FBSyxJQUFJLEVBQUU7O0FBQ3JDLGFBQU8sQ0FBQyxJQUFJLEdBQUcsa0JBQVksT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDOztBQUV6QyxVQUFJLEVBQUUsR0FBRyxPQUFPLENBQUMsRUFBRSxDQUFDO0FBQ3BCLGtCQUFZLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxTQUFTLG1CQUFtQixDQUN6RSxPQUFPLEVBRVA7WUFEQSxPQUFPLHlEQUFHLEVBQUU7Ozs7QUFJWixlQUFPLENBQUMsSUFBSSxHQUFHLGtCQUFZLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN6QyxlQUFPLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLG1CQUFtQixDQUFDO0FBQ3BELGVBQU8sRUFBRSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztPQUM3QixDQUFDO0FBQ0YsVUFBSSxFQUFFLENBQUMsUUFBUSxFQUFFO0FBQ2YsZUFBTyxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxPQUFPLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQztPQUNwRTs7R0FDRjs7QUFFRCxNQUFJLE9BQU8sS0FBSyxTQUFTLElBQUksWUFBWSxFQUFFO0FBQ3pDLFdBQU8sR0FBRyxZQUFZLENBQUM7R0FDeEI7O0FBRUQsTUFBSSxPQUFPLEtBQUssU0FBUyxFQUFFO0FBQ3pCLFVBQU0sMkJBQWMsY0FBYyxHQUFHLE9BQU8sQ0FBQyxJQUFJLEdBQUcscUJBQXFCLENBQUMsQ0FBQztHQUM1RSxNQUFNLElBQUksT0FBTyxZQUFZLFFBQVEsRUFBRTtBQUN0QyxXQUFPLE9BQU8sQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7R0FDbEM7Q0FDRjs7QUFFTSxTQUFTLElBQUksR0FBRztBQUNyQixTQUFPLEVBQUUsQ0FBQztDQUNYOztBQUVELFNBQVMsUUFBUSxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUU7QUFDL0IsTUFBSSxDQUFDLElBQUksSUFBSSxFQUFFLE1BQU0sSUFBSSxJQUFJLENBQUEsQUFBQyxFQUFFO0FBQzlCLFFBQUksR0FBRyxJQUFJLEdBQUcsa0JBQVksSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO0FBQ3JDLFFBQUksQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDO0dBQ3JCO0FBQ0QsU0FBTyxJQUFJLENBQUM7Q0FDYjs7QUFFRCxTQUFTLGlCQUFpQixDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFO0FBQ3pFLE1BQUksRUFBRSxDQUFDLFNBQVMsRUFBRTtBQUNoQixRQUFJLEtBQUssR0FBRyxFQUFFLENBQUM7QUFDZixRQUFJLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FDakIsSUFBSSxFQUNKLEtBQUssRUFDTCxTQUFTLEVBQ1QsTUFBTSxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFDbkIsSUFBSSxFQUNKLFdBQVcsRUFDWCxNQUFNLENBQ1AsQ0FBQztBQUNGLFNBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0dBQzNCO0FBQ0QsU0FBTyxJQUFJLENBQUM7Q0FDYjs7QUFFRCxTQUFTLCtCQUErQixDQUFDLGFBQWEsRUFBRSxTQUFTLEVBQUU7QUFDakUsUUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBQSxVQUFVLEVBQUk7QUFDL0MsUUFBSSxNQUFNLEdBQUcsYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBQ3ZDLGlCQUFhLENBQUMsVUFBVSxDQUFDLEdBQUcsd0JBQXdCLENBQUMsTUFBTSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0dBQ3pFLENBQUMsQ0FBQztDQUNKOztBQUVELFNBQVMsd0JBQXdCLENBQUMsTUFBTSxFQUFFLFNBQVMsRUFBRTtBQUNuRCxNQUFNLGNBQWMsR0FBRyxTQUFTLENBQUMsY0FBYyxDQUFDO0FBQ2hELFNBQU8sK0JBQVcsTUFBTSxFQUFFLFVBQUEsT0FBTyxFQUFJO0FBQ25DLFdBQU8sS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFFLGNBQWMsRUFBZCxjQUFjLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQztHQUNsRCxDQUFDLENBQUM7Q0FDSiIsImZpbGUiOiJydW50aW1lLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgVXRpbHMgZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgRXhjZXB0aW9uIGZyb20gJy4vZXhjZXB0aW9uJztcbmltcG9ydCB7XG4gIENPTVBJTEVSX1JFVklTSU9OLFxuICBjcmVhdGVGcmFtZSxcbiAgTEFTVF9DT01QQVRJQkxFX0NPTVBJTEVSX1JFVklTSU9OLFxuICBSRVZJU0lPTl9DSEFOR0VTXG59IGZyb20gJy4vYmFzZSc7XG5pbXBvcnQgeyBtb3ZlSGVscGVyVG9Ib29rcyB9IGZyb20gJy4vaGVscGVycyc7XG5pbXBvcnQgeyB3cmFwSGVscGVyIH0gZnJvbSAnLi9pbnRlcm5hbC93cmFwSGVscGVyJztcbmltcG9ydCB7XG4gIGNyZWF0ZVByb3RvQWNjZXNzQ29udHJvbCxcbiAgcmVzdWx0SXNBbGxvd2VkXG59IGZyb20gJy4vaW50ZXJuYWwvcHJvdG8tYWNjZXNzJztcblxuZXhwb3J0IGZ1bmN0aW9uIGNoZWNrUmV2aXNpb24oY29tcGlsZXJJbmZvKSB7XG4gIGNvbnN0IGNvbXBpbGVyUmV2aXNpb24gPSAoY29tcGlsZXJJbmZvICYmIGNvbXBpbGVySW5mb1swXSkgfHwgMSxcbiAgICBjdXJyZW50UmV2aXNpb24gPSBDT01QSUxFUl9SRVZJU0lPTjtcblxuICBpZiAoXG4gICAgY29tcGlsZXJSZXZpc2lvbiA+PSBMQVNUX0NPTVBBVElCTEVfQ09NUElMRVJfUkVWSVNJT04gJiZcbiAgICBjb21waWxlclJldmlzaW9uIDw9IENPTVBJTEVSX1JFVklTSU9OXG4gICkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmIChjb21waWxlclJldmlzaW9uIDwgTEFTVF9DT01QQVRJQkxFX0NPTVBJTEVSX1JFVklTSU9OKSB7XG4gICAgY29uc3QgcnVudGltZVZlcnNpb25zID0gUkVWSVNJT05fQ0hBTkdFU1tjdXJyZW50UmV2aXNpb25dLFxuICAgICAgY29tcGlsZXJWZXJzaW9ucyA9IFJFVklTSU9OX0NIQU5HRVNbY29tcGlsZXJSZXZpc2lvbl07XG4gICAgdGhyb3cgbmV3IEV4Y2VwdGlvbihcbiAgICAgICdUZW1wbGF0ZSB3YXMgcHJlY29tcGlsZWQgd2l0aCBhbiBvbGRlciB2ZXJzaW9uIG9mIEhhbmRsZWJhcnMgdGhhbiB0aGUgY3VycmVudCBydW50aW1lLiAnICtcbiAgICAgICAgJ1BsZWFzZSB1cGRhdGUgeW91ciBwcmVjb21waWxlciB0byBhIG5ld2VyIHZlcnNpb24gKCcgK1xuICAgICAgICBydW50aW1lVmVyc2lvbnMgK1xuICAgICAgICAnKSBvciBkb3duZ3JhZGUgeW91ciBydW50aW1lIHRvIGFuIG9sZGVyIHZlcnNpb24gKCcgK1xuICAgICAgICBjb21waWxlclZlcnNpb25zICtcbiAgICAgICAgJykuJ1xuICAgICk7XG4gIH0gZWxzZSB7XG4gICAgLy8gVXNlIHRoZSBlbWJlZGRlZCB2ZXJzaW9uIGluZm8gc2luY2UgdGhlIHJ1bnRpbWUgZG9lc24ndCBrbm93IGFib3V0IHRoaXMgcmV2aXNpb24geWV0XG4gICAgdGhyb3cgbmV3IEV4Y2VwdGlvbihcbiAgICAgICdUZW1wbGF0ZSB3YXMgcHJlY29tcGlsZWQgd2l0aCBhIG5ld2VyIHZlcnNpb24gb2YgSGFuZGxlYmFycyB0aGFuIHRoZSBjdXJyZW50IHJ1bnRpbWUuICcgK1xuICAgICAgICAnUGxlYXNlIHVwZGF0ZSB5b3VyIHJ1bnRpbWUgdG8gYSBuZXdlciB2ZXJzaW9uICgnICtcbiAgICAgICAgY29tcGlsZXJJbmZvWzFdICtcbiAgICAgICAgJykuJ1xuICAgICk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRlbXBsYXRlKHRlbXBsYXRlU3BlYywgZW52KSB7XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIGlmICghZW52KSB7XG4gICAgdGhyb3cgbmV3IEV4Y2VwdGlvbignTm8gZW52aXJvbm1lbnQgcGFzc2VkIHRvIHRlbXBsYXRlJyk7XG4gIH1cbiAgaWYgKCF0ZW1wbGF0ZVNwZWMgfHwgIXRlbXBsYXRlU3BlYy5tYWluKSB7XG4gICAgdGhyb3cgbmV3IEV4Y2VwdGlvbignVW5rbm93biB0ZW1wbGF0ZSBvYmplY3Q6ICcgKyB0eXBlb2YgdGVtcGxhdGVTcGVjKTtcbiAgfVxuXG4gIHRlbXBsYXRlU3BlYy5tYWluLmRlY29yYXRvciA9IHRlbXBsYXRlU3BlYy5tYWluX2Q7XG5cbiAgLy8gTm90ZTogVXNpbmcgZW52LlZNIHJlZmVyZW5jZXMgcmF0aGVyIHRoYW4gbG9jYWwgdmFyIHJlZmVyZW5jZXMgdGhyb3VnaG91dCB0aGlzIHNlY3Rpb24gdG8gYWxsb3dcbiAgLy8gZm9yIGV4dGVybmFsIHVzZXJzIHRvIG92ZXJyaWRlIHRoZXNlIGFzIHBzZXVkby1zdXBwb3J0ZWQgQVBJcy5cbiAgZW52LlZNLmNoZWNrUmV2aXNpb24odGVtcGxhdGVTcGVjLmNvbXBpbGVyKTtcblxuICAvLyBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSBmb3IgcHJlY29tcGlsZWQgdGVtcGxhdGVzIHdpdGggY29tcGlsZXItdmVyc2lvbiA3ICg8NC4zLjApXG4gIGNvbnN0IHRlbXBsYXRlV2FzUHJlY29tcGlsZWRXaXRoQ29tcGlsZXJWNyA9XG4gICAgdGVtcGxhdGVTcGVjLmNvbXBpbGVyICYmIHRlbXBsYXRlU3BlYy5jb21waWxlclswXSA9PT0gNztcblxuICBmdW5jdGlvbiBpbnZva2VQYXJ0aWFsV3JhcHBlcihwYXJ0aWFsLCBjb250ZXh0LCBvcHRpb25zKSB7XG4gICAgaWYgKG9wdGlvbnMuaGFzaCkge1xuICAgICAgY29udGV4dCA9IFV0aWxzLmV4dGVuZCh7fSwgY29udGV4dCwgb3B0aW9ucy5oYXNoKTtcbiAgICAgIGlmIChvcHRpb25zLmlkcykge1xuICAgICAgICBvcHRpb25zLmlkc1swXSA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIHBhcnRpYWwgPSBlbnYuVk0ucmVzb2x2ZVBhcnRpYWwuY2FsbCh0aGlzLCBwYXJ0aWFsLCBjb250ZXh0LCBvcHRpb25zKTtcblxuICAgIGxldCBleHRlbmRlZE9wdGlvbnMgPSBVdGlscy5leHRlbmQoe30sIG9wdGlvbnMsIHtcbiAgICAgIGhvb2tzOiB0aGlzLmhvb2tzLFxuICAgICAgcHJvdG9BY2Nlc3NDb250cm9sOiB0aGlzLnByb3RvQWNjZXNzQ29udHJvbFxuICAgIH0pO1xuXG4gICAgbGV0IHJlc3VsdCA9IGVudi5WTS5pbnZva2VQYXJ0aWFsLmNhbGwoXG4gICAgICB0aGlzLFxuICAgICAgcGFydGlhbCxcbiAgICAgIGNvbnRleHQsXG4gICAgICBleHRlbmRlZE9wdGlvbnNcbiAgICApO1xuXG4gICAgaWYgKHJlc3VsdCA9PSBudWxsICYmIGVudi5jb21waWxlKSB7XG4gICAgICBvcHRpb25zLnBhcnRpYWxzW29wdGlvbnMubmFtZV0gPSBlbnYuY29tcGlsZShcbiAgICAgICAgcGFydGlhbCxcbiAgICAgICAgdGVtcGxhdGVTcGVjLmNvbXBpbGVyT3B0aW9ucyxcbiAgICAgICAgZW52XG4gICAgICApO1xuICAgICAgcmVzdWx0ID0gb3B0aW9ucy5wYXJ0aWFsc1tvcHRpb25zLm5hbWVdKGNvbnRleHQsIGV4dGVuZGVkT3B0aW9ucyk7XG4gICAgfVxuICAgIGlmIChyZXN1bHQgIT0gbnVsbCkge1xuICAgICAgaWYgKG9wdGlvbnMuaW5kZW50KSB7XG4gICAgICAgIGxldCBsaW5lcyA9IHJlc3VsdC5zcGxpdCgnXFxuJyk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwLCBsID0gbGluZXMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgICAgaWYgKCFsaW5lc1tpXSAmJiBpICsgMSA9PT0gbCkge1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgbGluZXNbaV0gPSBvcHRpb25zLmluZGVudCArIGxpbmVzW2ldO1xuICAgICAgICB9XG4gICAgICAgIHJlc3VsdCA9IGxpbmVzLmpvaW4oJ1xcbicpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbihcbiAgICAgICAgJ1RoZSBwYXJ0aWFsICcgK1xuICAgICAgICAgIG9wdGlvbnMubmFtZSArXG4gICAgICAgICAgJyBjb3VsZCBub3QgYmUgY29tcGlsZWQgd2hlbiBydW5uaW5nIGluIHJ1bnRpbWUtb25seSBtb2RlJ1xuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAvLyBKdXN0IGFkZCB3YXRlclxuICBsZXQgY29udGFpbmVyID0ge1xuICAgIHN0cmljdDogZnVuY3Rpb24ob2JqLCBuYW1lLCBsb2MpIHtcbiAgICAgIGlmICghb2JqIHx8ICEobmFtZSBpbiBvYmopKSB7XG4gICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ1wiJyArIG5hbWUgKyAnXCIgbm90IGRlZmluZWQgaW4gJyArIG9iaiwge1xuICAgICAgICAgIGxvYzogbG9jXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG9ialtuYW1lXTtcbiAgICB9LFxuICAgIGxvb2t1cFByb3BlcnR5OiBmdW5jdGlvbihwYXJlbnQsIHByb3BlcnR5TmFtZSkge1xuICAgICAgbGV0IHJlc3VsdCA9IHBhcmVudFtwcm9wZXJ0eU5hbWVdO1xuICAgICAgaWYgKHJlc3VsdCA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9XG4gICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHBhcmVudCwgcHJvcGVydHlOYW1lKSkge1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuXG4gICAgICBpZiAocmVzdWx0SXNBbGxvd2VkKHJlc3VsdCwgY29udGFpbmVyLnByb3RvQWNjZXNzQ29udHJvbCwgcHJvcGVydHlOYW1lKSkge1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9LFxuICAgIGxvb2t1cDogZnVuY3Rpb24oZGVwdGhzLCBuYW1lKSB7XG4gICAgICBjb25zdCBsZW4gPSBkZXB0aHMubGVuZ3RoO1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgICAgICBsZXQgcmVzdWx0ID0gZGVwdGhzW2ldICYmIGNvbnRhaW5lci5sb29rdXBQcm9wZXJ0eShkZXB0aHNbaV0sIG5hbWUpO1xuICAgICAgICBpZiAocmVzdWx0ICE9IG51bGwpIHtcbiAgICAgICAgICByZXR1cm4gZGVwdGhzW2ldW25hbWVdO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBsYW1iZGE6IGZ1bmN0aW9uKGN1cnJlbnQsIGNvbnRleHQpIHtcbiAgICAgIHJldHVybiB0eXBlb2YgY3VycmVudCA9PT0gJ2Z1bmN0aW9uJyA/IGN1cnJlbnQuY2FsbChjb250ZXh0KSA6IGN1cnJlbnQ7XG4gICAgfSxcblxuICAgIGVzY2FwZUV4cHJlc3Npb246IFV0aWxzLmVzY2FwZUV4cHJlc3Npb24sXG4gICAgaW52b2tlUGFydGlhbDogaW52b2tlUGFydGlhbFdyYXBwZXIsXG5cbiAgICBmbjogZnVuY3Rpb24oaSkge1xuICAgICAgbGV0IHJldCA9IHRlbXBsYXRlU3BlY1tpXTtcbiAgICAgIHJldC5kZWNvcmF0b3IgPSB0ZW1wbGF0ZVNwZWNbaSArICdfZCddO1xuICAgICAgcmV0dXJuIHJldDtcbiAgICB9LFxuXG4gICAgcHJvZ3JhbXM6IFtdLFxuICAgIHByb2dyYW06IGZ1bmN0aW9uKGksIGRhdGEsIGRlY2xhcmVkQmxvY2tQYXJhbXMsIGJsb2NrUGFyYW1zLCBkZXB0aHMpIHtcbiAgICAgIGxldCBwcm9ncmFtV3JhcHBlciA9IHRoaXMucHJvZ3JhbXNbaV0sXG4gICAgICAgIGZuID0gdGhpcy5mbihpKTtcbiAgICAgIGlmIChkYXRhIHx8IGRlcHRocyB8fCBibG9ja1BhcmFtcyB8fCBkZWNsYXJlZEJsb2NrUGFyYW1zKSB7XG4gICAgICAgIHByb2dyYW1XcmFwcGVyID0gd3JhcFByb2dyYW0oXG4gICAgICAgICAgdGhpcyxcbiAgICAgICAgICBpLFxuICAgICAgICAgIGZuLFxuICAgICAgICAgIGRhdGEsXG4gICAgICAgICAgZGVjbGFyZWRCbG9ja1BhcmFtcyxcbiAgICAgICAgICBibG9ja1BhcmFtcyxcbiAgICAgICAgICBkZXB0aHNcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSBpZiAoIXByb2dyYW1XcmFwcGVyKSB7XG4gICAgICAgIHByb2dyYW1XcmFwcGVyID0gdGhpcy5wcm9ncmFtc1tpXSA9IHdyYXBQcm9ncmFtKHRoaXMsIGksIGZuKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBwcm9ncmFtV3JhcHBlcjtcbiAgICB9LFxuXG4gICAgZGF0YTogZnVuY3Rpb24odmFsdWUsIGRlcHRoKSB7XG4gICAgICB3aGlsZSAodmFsdWUgJiYgZGVwdGgtLSkge1xuICAgICAgICB2YWx1ZSA9IHZhbHVlLl9wYXJlbnQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfSxcbiAgICBtZXJnZUlmTmVlZGVkOiBmdW5jdGlvbihwYXJhbSwgY29tbW9uKSB7XG4gICAgICBsZXQgb2JqID0gcGFyYW0gfHwgY29tbW9uO1xuXG4gICAgICBpZiAocGFyYW0gJiYgY29tbW9uICYmIHBhcmFtICE9PSBjb21tb24pIHtcbiAgICAgICAgb2JqID0gVXRpbHMuZXh0ZW5kKHt9LCBjb21tb24sIHBhcmFtKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG9iajtcbiAgICB9LFxuICAgIC8vIEFuIGVtcHR5IG9iamVjdCB0byB1c2UgYXMgcmVwbGFjZW1lbnQgZm9yIG51bGwtY29udGV4dHNcbiAgICBudWxsQ29udGV4dDogT2JqZWN0LnNlYWwoe30pLFxuXG4gICAgbm9vcDogZW52LlZNLm5vb3AsXG4gICAgY29tcGlsZXJJbmZvOiB0ZW1wbGF0ZVNwZWMuY29tcGlsZXJcbiAgfTtcblxuICBmdW5jdGlvbiByZXQoY29udGV4dCwgb3B0aW9ucyA9IHt9KSB7XG4gICAgbGV0IGRhdGEgPSBvcHRpb25zLmRhdGE7XG5cbiAgICByZXQuX3NldHVwKG9wdGlvbnMpO1xuICAgIGlmICghb3B0aW9ucy5wYXJ0aWFsICYmIHRlbXBsYXRlU3BlYy51c2VEYXRhKSB7XG4gICAgICBkYXRhID0gaW5pdERhdGEoY29udGV4dCwgZGF0YSk7XG4gICAgfVxuICAgIGxldCBkZXB0aHMsXG4gICAgICBibG9ja1BhcmFtcyA9IHRlbXBsYXRlU3BlYy51c2VCbG9ja1BhcmFtcyA/IFtdIDogdW5kZWZpbmVkO1xuICAgIGlmICh0ZW1wbGF0ZVNwZWMudXNlRGVwdGhzKSB7XG4gICAgICBpZiAob3B0aW9ucy5kZXB0aHMpIHtcbiAgICAgICAgZGVwdGhzID1cbiAgICAgICAgICBjb250ZXh0ICE9IG9wdGlvbnMuZGVwdGhzWzBdXG4gICAgICAgICAgICA/IFtjb250ZXh0XS5jb25jYXQob3B0aW9ucy5kZXB0aHMpXG4gICAgICAgICAgICA6IG9wdGlvbnMuZGVwdGhzO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGVwdGhzID0gW2NvbnRleHRdO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIG1haW4oY29udGV4dCAvKiwgb3B0aW9ucyovKSB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICAnJyArXG4gICAgICAgIHRlbXBsYXRlU3BlYy5tYWluKFxuICAgICAgICAgIGNvbnRhaW5lcixcbiAgICAgICAgICBjb250ZXh0LFxuICAgICAgICAgIGNvbnRhaW5lci5oZWxwZXJzLFxuICAgICAgICAgIGNvbnRhaW5lci5wYXJ0aWFscyxcbiAgICAgICAgICBkYXRhLFxuICAgICAgICAgIGJsb2NrUGFyYW1zLFxuICAgICAgICAgIGRlcHRoc1xuICAgICAgICApXG4gICAgICApO1xuICAgIH1cblxuICAgIG1haW4gPSBleGVjdXRlRGVjb3JhdG9ycyhcbiAgICAgIHRlbXBsYXRlU3BlYy5tYWluLFxuICAgICAgbWFpbixcbiAgICAgIGNvbnRhaW5lcixcbiAgICAgIG9wdGlvbnMuZGVwdGhzIHx8IFtdLFxuICAgICAgZGF0YSxcbiAgICAgIGJsb2NrUGFyYW1zXG4gICAgKTtcbiAgICByZXR1cm4gbWFpbihjb250ZXh0LCBvcHRpb25zKTtcbiAgfVxuXG4gIHJldC5pc1RvcCA9IHRydWU7XG5cbiAgcmV0Ll9zZXR1cCA9IGZ1bmN0aW9uKG9wdGlvbnMpIHtcbiAgICBpZiAoIW9wdGlvbnMucGFydGlhbCkge1xuICAgICAgbGV0IG1lcmdlZEhlbHBlcnMgPSBVdGlscy5leHRlbmQoe30sIGVudi5oZWxwZXJzLCBvcHRpb25zLmhlbHBlcnMpO1xuICAgICAgd3JhcEhlbHBlcnNUb1Bhc3NMb29rdXBQcm9wZXJ0eShtZXJnZWRIZWxwZXJzLCBjb250YWluZXIpO1xuICAgICAgY29udGFpbmVyLmhlbHBlcnMgPSBtZXJnZWRIZWxwZXJzO1xuXG4gICAgICBpZiAodGVtcGxhdGVTcGVjLnVzZVBhcnRpYWwpIHtcbiAgICAgICAgLy8gVXNlIG1lcmdlSWZOZWVkZWQgaGVyZSB0byBwcmV2ZW50IGNvbXBpbGluZyBnbG9iYWwgcGFydGlhbHMgbXVsdGlwbGUgdGltZXNcbiAgICAgICAgY29udGFpbmVyLnBhcnRpYWxzID0gY29udGFpbmVyLm1lcmdlSWZOZWVkZWQoXG4gICAgICAgICAgb3B0aW9ucy5wYXJ0aWFscyxcbiAgICAgICAgICBlbnYucGFydGlhbHNcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGlmICh0ZW1wbGF0ZVNwZWMudXNlUGFydGlhbCB8fCB0ZW1wbGF0ZVNwZWMudXNlRGVjb3JhdG9ycykge1xuICAgICAgICBjb250YWluZXIuZGVjb3JhdG9ycyA9IFV0aWxzLmV4dGVuZChcbiAgICAgICAgICB7fSxcbiAgICAgICAgICBlbnYuZGVjb3JhdG9ycyxcbiAgICAgICAgICBvcHRpb25zLmRlY29yYXRvcnNcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgY29udGFpbmVyLmhvb2tzID0ge307XG4gICAgICBjb250YWluZXIucHJvdG9BY2Nlc3NDb250cm9sID0gY3JlYXRlUHJvdG9BY2Nlc3NDb250cm9sKG9wdGlvbnMpO1xuXG4gICAgICBsZXQga2VlcEhlbHBlckluSGVscGVycyA9XG4gICAgICAgIG9wdGlvbnMuYWxsb3dDYWxsc1RvSGVscGVyTWlzc2luZyB8fFxuICAgICAgICB0ZW1wbGF0ZVdhc1ByZWNvbXBpbGVkV2l0aENvbXBpbGVyVjc7XG4gICAgICBtb3ZlSGVscGVyVG9Ib29rcyhjb250YWluZXIsICdoZWxwZXJNaXNzaW5nJywga2VlcEhlbHBlckluSGVscGVycyk7XG4gICAgICBtb3ZlSGVscGVyVG9Ib29rcyhjb250YWluZXIsICdibG9ja0hlbHBlck1pc3NpbmcnLCBrZWVwSGVscGVySW5IZWxwZXJzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29udGFpbmVyLnByb3RvQWNjZXNzQ29udHJvbCA9IG9wdGlvbnMucHJvdG9BY2Nlc3NDb250cm9sOyAvLyBpbnRlcm5hbCBvcHRpb25cbiAgICAgIGNvbnRhaW5lci5oZWxwZXJzID0gb3B0aW9ucy5oZWxwZXJzO1xuICAgICAgY29udGFpbmVyLnBhcnRpYWxzID0gb3B0aW9ucy5wYXJ0aWFscztcbiAgICAgIGNvbnRhaW5lci5kZWNvcmF0b3JzID0gb3B0aW9ucy5kZWNvcmF0b3JzO1xuICAgICAgY29udGFpbmVyLmhvb2tzID0gb3B0aW9ucy5ob29rcztcbiAgICB9XG4gIH07XG5cbiAgcmV0Ll9jaGlsZCA9IGZ1bmN0aW9uKGksIGRhdGEsIGJsb2NrUGFyYW1zLCBkZXB0aHMpIHtcbiAgICBpZiAodGVtcGxhdGVTcGVjLnVzZUJsb2NrUGFyYW1zICYmICFibG9ja1BhcmFtcykge1xuICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbignbXVzdCBwYXNzIGJsb2NrIHBhcmFtcycpO1xuICAgIH1cbiAgICBpZiAodGVtcGxhdGVTcGVjLnVzZURlcHRocyAmJiAhZGVwdGhzKSB7XG4gICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCdtdXN0IHBhc3MgcGFyZW50IGRlcHRocycpO1xuICAgIH1cblxuICAgIHJldHVybiB3cmFwUHJvZ3JhbShcbiAgICAgIGNvbnRhaW5lcixcbiAgICAgIGksXG4gICAgICB0ZW1wbGF0ZVNwZWNbaV0sXG4gICAgICBkYXRhLFxuICAgICAgMCxcbiAgICAgIGJsb2NrUGFyYW1zLFxuICAgICAgZGVwdGhzXG4gICAgKTtcbiAgfTtcbiAgcmV0dXJuIHJldDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdyYXBQcm9ncmFtKFxuICBjb250YWluZXIsXG4gIGksXG4gIGZuLFxuICBkYXRhLFxuICBkZWNsYXJlZEJsb2NrUGFyYW1zLFxuICBibG9ja1BhcmFtcyxcbiAgZGVwdGhzXG4pIHtcbiAgZnVuY3Rpb24gcHJvZyhjb250ZXh0LCBvcHRpb25zID0ge30pIHtcbiAgICBsZXQgY3VycmVudERlcHRocyA9IGRlcHRocztcbiAgICBpZiAoXG4gICAgICBkZXB0aHMgJiZcbiAgICAgIGNvbnRleHQgIT0gZGVwdGhzWzBdICYmXG4gICAgICAhKGNvbnRleHQgPT09IGNvbnRhaW5lci5udWxsQ29udGV4dCAmJiBkZXB0aHNbMF0gPT09IG51bGwpXG4gICAgKSB7XG4gICAgICBjdXJyZW50RGVwdGhzID0gW2NvbnRleHRdLmNvbmNhdChkZXB0aHMpO1xuICAgIH1cblxuICAgIHJldHVybiBmbihcbiAgICAgIGNvbnRhaW5lcixcbiAgICAgIGNvbnRleHQsXG4gICAgICBjb250YWluZXIuaGVscGVycyxcbiAgICAgIGNvbnRhaW5lci5wYXJ0aWFscyxcbiAgICAgIG9wdGlvbnMuZGF0YSB8fCBkYXRhLFxuICAgICAgYmxvY2tQYXJhbXMgJiYgW29wdGlvbnMuYmxvY2tQYXJhbXNdLmNvbmNhdChibG9ja1BhcmFtcyksXG4gICAgICBjdXJyZW50RGVwdGhzXG4gICAgKTtcbiAgfVxuXG4gIHByb2cgPSBleGVjdXRlRGVjb3JhdG9ycyhmbiwgcHJvZywgY29udGFpbmVyLCBkZXB0aHMsIGRhdGEsIGJsb2NrUGFyYW1zKTtcblxuICBwcm9nLnByb2dyYW0gPSBpO1xuICBwcm9nLmRlcHRoID0gZGVwdGhzID8gZGVwdGhzLmxlbmd0aCA6IDA7XG4gIHByb2cuYmxvY2tQYXJhbXMgPSBkZWNsYXJlZEJsb2NrUGFyYW1zIHx8IDA7XG4gIHJldHVybiBwcm9nO1xufVxuXG4vKipcbiAqIFRoaXMgaXMgY3VycmVudGx5IHBhcnQgb2YgdGhlIG9mZmljaWFsIEFQSSwgdGhlcmVmb3JlIGltcGxlbWVudGF0aW9uIGRldGFpbHMgc2hvdWxkIG5vdCBiZSBjaGFuZ2VkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZVBhcnRpYWwocGFydGlhbCwgY29udGV4dCwgb3B0aW9ucykge1xuICBpZiAoIXBhcnRpYWwpIHtcbiAgICBpZiAob3B0aW9ucy5uYW1lID09PSAnQHBhcnRpYWwtYmxvY2snKSB7XG4gICAgICBwYXJ0aWFsID0gb3B0aW9ucy5kYXRhWydwYXJ0aWFsLWJsb2NrJ107XG4gICAgfSBlbHNlIHtcbiAgICAgIHBhcnRpYWwgPSBvcHRpb25zLnBhcnRpYWxzW29wdGlvbnMubmFtZV07XG4gICAgfVxuICB9IGVsc2UgaWYgKCFwYXJ0aWFsLmNhbGwgJiYgIW9wdGlvbnMubmFtZSkge1xuICAgIC8vIFRoaXMgaXMgYSBkeW5hbWljIHBhcnRpYWwgdGhhdCByZXR1cm5lZCBhIHN0cmluZ1xuICAgIG9wdGlvbnMubmFtZSA9IHBhcnRpYWw7XG4gICAgcGFydGlhbCA9IG9wdGlvbnMucGFydGlhbHNbcGFydGlhbF07XG4gIH1cbiAgcmV0dXJuIHBhcnRpYWw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnZva2VQYXJ0aWFsKHBhcnRpYWwsIGNvbnRleHQsIG9wdGlvbnMpIHtcbiAgLy8gVXNlIHRoZSBjdXJyZW50IGNsb3N1cmUgY29udGV4dCB0byBzYXZlIHRoZSBwYXJ0aWFsLWJsb2NrIGlmIHRoaXMgcGFydGlhbFxuICBjb25zdCBjdXJyZW50UGFydGlhbEJsb2NrID0gb3B0aW9ucy5kYXRhICYmIG9wdGlvbnMuZGF0YVsncGFydGlhbC1ibG9jayddO1xuICBvcHRpb25zLnBhcnRpYWwgPSB0cnVlO1xuICBpZiAob3B0aW9ucy5pZHMpIHtcbiAgICBvcHRpb25zLmRhdGEuY29udGV4dFBhdGggPSBvcHRpb25zLmlkc1swXSB8fCBvcHRpb25zLmRhdGEuY29udGV4dFBhdGg7XG4gIH1cblxuICBsZXQgcGFydGlhbEJsb2NrO1xuICBpZiAob3B0aW9ucy5mbiAmJiBvcHRpb25zLmZuICE9PSBub29wKSB7XG4gICAgb3B0aW9ucy5kYXRhID0gY3JlYXRlRnJhbWUob3B0aW9ucy5kYXRhKTtcbiAgICAvLyBXcmFwcGVyIGZ1bmN0aW9uIHRvIGdldCBhY2Nlc3MgdG8gY3VycmVudFBhcnRpYWxCbG9jayBmcm9tIHRoZSBjbG9zdXJlXG4gICAgbGV0IGZuID0gb3B0aW9ucy5mbjtcbiAgICBwYXJ0aWFsQmxvY2sgPSBvcHRpb25zLmRhdGFbJ3BhcnRpYWwtYmxvY2snXSA9IGZ1bmN0aW9uIHBhcnRpYWxCbG9ja1dyYXBwZXIoXG4gICAgICBjb250ZXh0LFxuICAgICAgb3B0aW9ucyA9IHt9XG4gICAgKSB7XG4gICAgICAvLyBSZXN0b3JlIHRoZSBwYXJ0aWFsLWJsb2NrIGZyb20gdGhlIGNsb3N1cmUgZm9yIHRoZSBleGVjdXRpb24gb2YgdGhlIGJsb2NrXG4gICAgICAvLyBpLmUuIHRoZSBwYXJ0IGluc2lkZSB0aGUgYmxvY2sgb2YgdGhlIHBhcnRpYWwgY2FsbC5cbiAgICAgIG9wdGlvbnMuZGF0YSA9IGNyZWF0ZUZyYW1lKG9wdGlvbnMuZGF0YSk7XG4gICAgICBvcHRpb25zLmRhdGFbJ3BhcnRpYWwtYmxvY2snXSA9IGN1cnJlbnRQYXJ0aWFsQmxvY2s7XG4gICAgICByZXR1cm4gZm4oY29udGV4dCwgb3B0aW9ucyk7XG4gICAgfTtcbiAgICBpZiAoZm4ucGFydGlhbHMpIHtcbiAgICAgIG9wdGlvbnMucGFydGlhbHMgPSBVdGlscy5leHRlbmQoe30sIG9wdGlvbnMucGFydGlhbHMsIGZuLnBhcnRpYWxzKTtcbiAgICB9XG4gIH1cblxuICBpZiAocGFydGlhbCA9PT0gdW5kZWZpbmVkICYmIHBhcnRpYWxCbG9jaykge1xuICAgIHBhcnRpYWwgPSBwYXJ0aWFsQmxvY2s7XG4gIH1cblxuICBpZiAocGFydGlhbCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgdGhyb3cgbmV3IEV4Y2VwdGlvbignVGhlIHBhcnRpYWwgJyArIG9wdGlvbnMubmFtZSArICcgY291bGQgbm90IGJlIGZvdW5kJyk7XG4gIH0gZWxzZSBpZiAocGFydGlhbCBpbnN0YW5jZW9mIEZ1bmN0aW9uKSB7XG4gICAgcmV0dXJuIHBhcnRpYWwoY29udGV4dCwgb3B0aW9ucyk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5vb3AoKSB7XG4gIHJldHVybiAnJztcbn1cblxuZnVuY3Rpb24gaW5pdERhdGEoY29udGV4dCwgZGF0YSkge1xuICBpZiAoIWRhdGEgfHwgISgncm9vdCcgaW4gZGF0YSkpIHtcbiAgICBkYXRhID0gZGF0YSA/IGNyZWF0ZUZyYW1lKGRhdGEpIDoge307XG4gICAgZGF0YS5yb290ID0gY29udGV4dDtcbiAgfVxuICByZXR1cm4gZGF0YTtcbn1cblxuZnVuY3Rpb24gZXhlY3V0ZURlY29yYXRvcnMoZm4sIHByb2csIGNvbnRhaW5lciwgZGVwdGhzLCBkYXRhLCBibG9ja1BhcmFtcykge1xuICBpZiAoZm4uZGVjb3JhdG9yKSB7XG4gICAgbGV0IHByb3BzID0ge307XG4gICAgcHJvZyA9IGZuLmRlY29yYXRvcihcbiAgICAgIHByb2csXG4gICAgICBwcm9wcyxcbiAgICAgIGNvbnRhaW5lcixcbiAgICAgIGRlcHRocyAmJiBkZXB0aHNbMF0sXG4gICAgICBkYXRhLFxuICAgICAgYmxvY2tQYXJhbXMsXG4gICAgICBkZXB0aHNcbiAgICApO1xuICAgIFV0aWxzLmV4dGVuZChwcm9nLCBwcm9wcyk7XG4gIH1cbiAgcmV0dXJuIHByb2c7XG59XG5cbmZ1bmN0aW9uIHdyYXBIZWxwZXJzVG9QYXNzTG9va3VwUHJvcGVydHkobWVyZ2VkSGVscGVycywgY29udGFpbmVyKSB7XG4gIE9iamVjdC5rZXlzKG1lcmdlZEhlbHBlcnMpLmZvckVhY2goaGVscGVyTmFtZSA9PiB7XG4gICAgbGV0IGhlbHBlciA9IG1lcmdlZEhlbHBlcnNbaGVscGVyTmFtZV07XG4gICAgbWVyZ2VkSGVscGVyc1toZWxwZXJOYW1lXSA9IHBhc3NMb29rdXBQcm9wZXJ0eU9wdGlvbihoZWxwZXIsIGNvbnRhaW5lcik7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBwYXNzTG9va3VwUHJvcGVydHlPcHRpb24oaGVscGVyLCBjb250YWluZXIpIHtcbiAgY29uc3QgbG9va3VwUHJvcGVydHkgPSBjb250YWluZXIubG9va3VwUHJvcGVydHk7XG4gIHJldHVybiB3cmFwSGVscGVyKGhlbHBlciwgb3B0aW9ucyA9PiB7XG4gICAgcmV0dXJuIFV0aWxzLmV4dGVuZCh7IGxvb2t1cFByb3BlcnR5IH0sIG9wdGlvbnMpO1xuICB9KTtcbn1cbiJdfQ==\n","'use strict';\n\nexports.__esModule = true;\nexports.wrapHelper = wrapHelper;\n\nfunction wrapHelper(helper, transformOptionsFn) {\n  if (typeof helper !== 'function') {\n    // This should not happen, but apparently it does in https://github.com/wycats/handlebars.js/issues/1639\n    // We try to make the wrapper least-invasive by not wrapping it, if the helper is not a function.\n    return helper;\n  }\n  var wrapper = function wrapper() /* dynamic arguments */{\n    var options = arguments[arguments.length - 1];\n    arguments[arguments.length - 1] = transformOptionsFn(options);\n    return helper.apply(this, arguments);\n  };\n  return wrapper;\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2ludGVybmFsL3dyYXBIZWxwZXIuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBTyxTQUFTLFVBQVUsQ0FBQyxNQUFNLEVBQUUsa0JBQWtCLEVBQUU7QUFDckQsTUFBSSxPQUFPLE1BQU0sS0FBSyxVQUFVLEVBQUU7OztBQUdoQyxXQUFPLE1BQU0sQ0FBQztHQUNmO0FBQ0QsTUFBSSxPQUFPLEdBQUcsU0FBVixPQUFPLDBCQUFxQztBQUM5QyxRQUFNLE9BQU8sR0FBRyxTQUFTLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNoRCxhQUFTLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsR0FBRyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUM5RCxXQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0dBQ3RDLENBQUM7QUFDRixTQUFPLE9BQU8sQ0FBQztDQUNoQiIsImZpbGUiOiJ3cmFwSGVscGVyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIHdyYXBIZWxwZXIoaGVscGVyLCB0cmFuc2Zvcm1PcHRpb25zRm4pIHtcbiAgaWYgKHR5cGVvZiBoZWxwZXIgIT09ICdmdW5jdGlvbicpIHtcbiAgICAvLyBUaGlzIHNob3VsZCBub3QgaGFwcGVuLCBidXQgYXBwYXJlbnRseSBpdCBkb2VzIGluIGh0dHBzOi8vZ2l0aHViLmNvbS93eWNhdHMvaGFuZGxlYmFycy5qcy9pc3N1ZXMvMTYzOVxuICAgIC8vIFdlIHRyeSB0byBtYWtlIHRoZSB3cmFwcGVyIGxlYXN0LWludmFzaXZlIGJ5IG5vdCB3cmFwcGluZyBpdCwgaWYgdGhlIGhlbHBlciBpcyBub3QgYSBmdW5jdGlvbi5cbiAgICByZXR1cm4gaGVscGVyO1xuICB9XG4gIGxldCB3cmFwcGVyID0gZnVuY3Rpb24oLyogZHluYW1pYyBhcmd1bWVudHMgKi8pIHtcbiAgICBjb25zdCBvcHRpb25zID0gYXJndW1lbnRzW2FyZ3VtZW50cy5sZW5ndGggLSAxXTtcbiAgICBhcmd1bWVudHNbYXJndW1lbnRzLmxlbmd0aCAtIDFdID0gdHJhbnNmb3JtT3B0aW9uc0ZuKG9wdGlvbnMpO1xuICAgIHJldHVybiBoZWxwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgfTtcbiAgcmV0dXJuIHdyYXBwZXI7XG59XG4iXX0=\n","'use strict';\n\nexports.__esModule = true;\n\nexports['default'] = function (Handlebars) {\n  /* istanbul ignore next */\n  var root = typeof global !== 'undefined' ? global : window,\n      $Handlebars = root.Handlebars;\n  /* istanbul ignore next */\n  Handlebars.noConflict = function () {\n    if (root.Handlebars === Handlebars) {\n      root.Handlebars = $Handlebars;\n    }\n    return Handlebars;\n  };\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL25vLWNvbmZsaWN0LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7cUJBQWUsVUFBUyxVQUFVLEVBQUU7O0FBRWxDLE1BQUksSUFBSSxHQUFHLE9BQU8sTUFBTSxLQUFLLFdBQVcsR0FBRyxNQUFNLEdBQUcsTUFBTTtNQUN4RCxXQUFXLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQzs7QUFFaEMsWUFBVSxDQUFDLFVBQVUsR0FBRyxZQUFXO0FBQ2pDLFFBQUksSUFBSSxDQUFDLFVBQVUsS0FBSyxVQUFVLEVBQUU7QUFDbEMsVUFBSSxDQUFDLFVBQVUsR0FBRyxXQUFXLENBQUM7S0FDL0I7QUFDRCxXQUFPLFVBQVUsQ0FBQztHQUNuQixDQUFDO0NBQ0giLCJmaWxlIjoibm8tY29uZmxpY3QuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbihIYW5kbGViYXJzKSB7XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIGxldCByb290ID0gdHlwZW9mIGdsb2JhbCAhPT0gJ3VuZGVmaW5lZCcgPyBnbG9iYWwgOiB3aW5kb3csXG4gICAgJEhhbmRsZWJhcnMgPSByb290LkhhbmRsZWJhcnM7XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIEhhbmRsZWJhcnMubm9Db25mbGljdCA9IGZ1bmN0aW9uKCkge1xuICAgIGlmIChyb290LkhhbmRsZWJhcnMgPT09IEhhbmRsZWJhcnMpIHtcbiAgICAgIHJvb3QuSGFuZGxlYmFycyA9ICRIYW5kbGViYXJzO1xuICAgIH1cbiAgICByZXR1cm4gSGFuZGxlYmFycztcbiAgfTtcbn1cbiJdfQ==\n","/**\n * @fileoverview Layout view. wrap all view containers at outside.\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\nvar util = require('tui-code-snippet');\nvar config = require('../config');\nvar domutil = require('../common/domutil');\nvar Collection = require('../common/collection');\nvar View = require('./view');\n\n/**\n * Layout view for toggle each child view. It will controlled via navigation UI.\n * @constructor\n * @extends {View}\n * @param {HTMLElement} container Container element to use layout view.\n * @param {Theme} theme - theme instance\n */\nfunction Layout(container, theme) {\n    container = domutil.appendHTMLElement('div', container, config.classname('layout'));\n\n    /**\n     * @type {HTMLElement}\n     */\n    this.container = container;\n\n    /*eslint-disable*/\n    /**\n     * @type {Collection} Child view collection.\n     */\n    this.children = new Collection(function(childView) {\n        return childView.viewName;\n    });\n    /* eslint-enable*/\n\n    /**\n     * @type {Theme}\n     */\n    this.theme = theme;\n\n    this.applyTheme();\n}\n\nutil.inherit(Layout, View);\n\n/**\n * Clear child views.\n */\nLayout.prototype.clear = function() {\n    this.children.each(function(childView) {\n        childView.destroy();\n    });\n\n    this.children.clear();\n    this.container.innerHTML = '';\n};\n\n/**\n * Remove child view.\n * @override\n * @param {(string|View)} viewName - name of view or instance.\n */\nLayout.prototype.removeChild = function(viewName) {\n    this.children.remove(viewName);\n};\n\n/**\n * Toggle child views.\n * @param {string} viewName - Name of view.\n */\nLayout.prototype.toggleChildView = function(viewName) {\n    var container,\n        prefix = ['add', 'remove'],\n        flag;\n\n    this.children.each(function(childView) {\n        container = childView.container;\n        flag = Number(childView.viewName === viewName);\n        domutil[prefix[flag] + 'Class'](container, config.classname('hidden'));\n    });\n};\n\nLayout.prototype.applyTheme = function() {\n    var style = this.container.style;\n    var theme = this.theme.common;\n\n    // background color\n    style.backgroundColor = theme.backgroundColor;\n};\n\nmodule.exports = Layout;\n","/**\n * @fileoverview Controller factory module.\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\nvar util = require('tui-code-snippet');\nvar Base = require('../controller/base'),\n    Core = require('../controller/viewMixin/core'),\n    Week = require('../controller/viewMixin/week'),\n    Month = require('../controller/viewMixin/month');\n\n/**\n * Mixin object. create object property to target and mix to that\n * @param {object} from - source object\n * @param {object} to - target object\n * @param {string} propertyName - property name\n */\nfunction mixin(from, to, propertyName) {\n    var obj = to[propertyName] = {};\n\n    util.forEach(from, function(method, methodName) {\n        obj[methodName] = method.bind(to);\n    });\n}\n\n/**\n * @param {object} options - options for base controller\n * @param {function} [options.groupFunc] - function for group each models {@see Collection#groupBy}\n * @returns {Base} The controller instance.\n */\nmodule.exports = function(options) {\n    var controller = new Base(options);\n\n    mixin(Core, controller, 'Core');\n    mixin(Week, controller, 'Week');\n    mixin(Month, controller, 'Month');\n\n    // for Theme\n    controller.Core.theme = controller.theme;\n    controller.Week.theme = controller.theme;\n    controller.Month.theme = controller.theme;\n\n    return controller;\n};\n","/**\n * @fileoverview Base calendar controller\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\nvar util = require('tui-code-snippet');\nvar Schedule = require('../model/schedule');\nvar ScheduleViewModel = require('../model/viewModel/scheduleViewModel');\nvar datetime = require('../common/datetime');\nvar common = require('../common/common');\nvar Theme = require('../theme/theme');\n\n/**\n * @constructor\n * @param {object} options - options for base controller\n * @param {function} [options.groupFunc] - function for group each models {@see Collection#groupBy}\n * @param {themeConfig} [options.theme] - theme object\n * @mixes util.CustomEvents\n */\nfunction Base(options) {\n    options = options || {};\n\n    /**\n     * function for group each schedule models.\n     * @type {function}\n     * @param {ScheduleViewModel} viewModel - view model instance\n     * @returns {string} group key\n     */\n    this.groupFunc = options.groupFunc || function(viewModel) {\n        var model = viewModel.model;\n\n        if (viewModel.model.isAllDay) {\n            return 'allday';\n        }\n\n        if (model.category === 'time' && (model.end - model.start > datetime.MILLISECONDS_PER_DAY)) {\n            return 'allday';\n        }\n\n        return model.category;\n    };\n\n    /**\n     * schedules collection.\n     * @type {Collection}\n     */\n    this.schedules = common.createScheduleCollection();\n\n    /**\n     * Matrix for multidate schedules.\n     * @type {object.<string, array>}\n     */\n    this.dateMatrix = {};\n\n    /**\n     * Theme\n     * @type {Theme}\n     */\n    this.theme = new Theme(options.theme);\n\n    /**\n     * Calendar list\n     * @type {Array.<Calendar>}\n     */\n    this.calendars = [];\n}\n\n/**\n * Calculate contain dates in schedule.\n * @private\n * @param {Schedule} schedule The instance of schedule.\n * @returns {array} contain dates.\n */\nBase.prototype._getContainDatesInSchedule = function(schedule) {\n    var scheduleStart = schedule.getStarts();\n    var scheduleEnd = schedule.getEnds();\n    var start = datetime.start(scheduleStart);\n    var equalStartEnd = datetime.compare(scheduleStart, scheduleEnd) === 0;\n    var endDate = equalStartEnd ? scheduleEnd : datetime.convertStartDayToLastDay(scheduleEnd);\n    var end = datetime.end(endDate);\n    var range = datetime.range(\n        start,\n        end,\n        datetime.MILLISECONDS_PER_DAY\n    );\n\n    return range;\n};\n\n/****************\n * CRUD Schedule\n ****************/\n\n/**\n * Create a schedule instance from raw data.\n * @emits Base#beforeCreateSchedule\n * @emits Base#createdSchedule\n * @param {object} options Data object to create schedule.\n * @param {boolean} silent - set true then don't fire events.\n * @returns {Schedule} The instance of Schedule that created.\n */\nBase.prototype.createSchedule = function(options, silent) {\n    var schedule,\n        scheduleData = {\n            data: options\n        };\n\n    /**\n     * @event Base#beforeCreateSchedule\n     * @type {Calendar~Schedule[]}\n     */\n    if (!this.invoke('beforeCreateSchedule', scheduleData)) {\n        return null;\n    }\n\n    schedule = this.addSchedule(Schedule.create(options));\n\n    if (!silent) {\n        /**\n         * @event Base#createdSchedule\n         * @type {Schedule}\n         */\n        this.fire('createdSchedule', schedule);\n    }\n\n    return schedule;\n};\n\n/**\n * @emits Base#beforeCreateSchedule\n * @emits Base#createdSchedule\n * @param {Calendar~Schedule[]} dataList - dataObject list to create schedule.\n * @param {boolean} [silent=false] - set true then don't fire events.\n * @returns {Schedule[]} The instance list of Schedule that created.\n */\nBase.prototype.createSchedules = function(dataList, silent) {\n    var self = this;\n\n    return util.map(dataList, function(data) {\n        return self.createSchedule(data, silent);\n    });\n};\n\n/**\n * Update a schedule.\n * @emits Base#updateSchedule\n * @param {Schedule} schedule - schedule instance to update\n * @param {object} options updated object data.\n * @returns {Schedule} updated schedule instance\n */\n// eslint-disable-next-line complexity\nBase.prototype.updateSchedule = function(schedule, options) {\n    var start = options.start || schedule.start;\n    var end = options.end || schedule.end;\n\n    options = options || {};\n\n    if (['milestone', 'task', 'allday', 'time'].indexOf(options.category) > -1) {\n        schedule.set('category', options.category);\n    }\n\n    if (options.category === 'allday') {\n        options.isAllDay = true;\n    }\n\n    if (!util.isUndefined(options.isAllDay)) {\n        schedule.set('isAllDay', options.isAllDay);\n    }\n\n    if (!util.isUndefined(options.calendarId)) {\n        schedule.set('calendarId', options.calendarId);\n    }\n\n    if (options.title) {\n        schedule.set('title', options.title);\n    }\n\n    if (options.body) {\n        schedule.set('body', options.body);\n    }\n\n    if (options.start || options.end) {\n        if (schedule.isAllDay) {\n            schedule.setAllDayPeriod(start, end);\n        } else {\n            schedule.setTimePeriod(start, end);\n        }\n    }\n\n    if (options.color) {\n        schedule.set('color', options.color);\n    }\n\n    if (options.bgColor) {\n        schedule.set('bgColor', options.bgColor);\n    }\n\n    if (options.borderColor) {\n        schedule.set('borderColor', options.borderColor);\n    }\n\n    if (options.origin) {\n        schedule.set('origin', options.origin);\n    }\n\n    if (!util.isUndefined(options.isPending)) {\n        schedule.set('isPending', options.isPending);\n    }\n\n    if (!util.isUndefined(options.isFocused)) {\n        schedule.set('isFocused', options.isFocused);\n    }\n\n    if (!util.isUndefined(options.isReadOnly)) {\n        schedule.set('isReadOnly', options.isReadOnly);\n    }\n\n    if (options.location) {\n        schedule.set('location', options.location);\n    }\n\n    if (options.state) {\n        schedule.set('state', options.state);\n    }\n\n    if (options.raw) {\n        schedule.set('raw', options.raw);\n    }\n\n    if (options.attendees) {\n        schedule.set('attendees', options.attendees);\n    }\n\n    this._removeFromMatrix(schedule);\n    this._addToMatrix(schedule);\n\n    /**\n     * @event Base#updateSchedule\n     */\n    this.fire('updateSchedule');\n\n    return schedule;\n};\n\n/**\n * Delete schedule instance from controller.\n * @param {Schedule} schedule - schedule instance to delete\n * @returns {Schedule} deleted model instance.\n */\nBase.prototype.deleteSchedule = function(schedule) {\n    this._removeFromMatrix(schedule);\n    this.schedules.remove(schedule);\n\n    return schedule;\n};\n\n/**\n * Set date matrix to supplied schedule instance.\n * @param {Schedule} schedule - instance of schedule.\n */\nBase.prototype._addToMatrix = function(schedule) {\n    var ownMatrix = this.dateMatrix;\n    var containDates = this._getContainDatesInSchedule(schedule);\n\n    util.forEach(containDates, function(date) {\n        var ymd = datetime.format(date, 'YYYYMMDD'),\n            matrix = ownMatrix[ymd] = ownMatrix[ymd] || [];\n\n        matrix.push(util.stamp(schedule));\n    });\n};\n\n/**\n * Remove schedule's id from matrix.\n * @param {Schedule} schedule - instance of schedule\n */\nBase.prototype._removeFromMatrix = function(schedule) {\n    var modelID = util.stamp(schedule);\n\n    util.forEach(this.dateMatrix, function(matrix) {\n        var index = util.inArray(modelID, matrix);\n\n        if (~index) {\n            matrix.splice(index, 1);\n        }\n    }, this);\n};\n\n/**\n * Add a schedule instance.\n * @emits Base#addedSchedule\n * @param {Schedule} schedule The instance of Schedule.\n * @param {boolean} silent - set true then don't fire events.\n * @returns {Schedule} The instance of Schedule that added.\n */\nBase.prototype.addSchedule = function(schedule, silent) {\n    this.schedules.add(schedule);\n    this._addToMatrix(schedule);\n\n    if (!silent) {\n        /**\n         * @event Base#addedSchedule\n         * @type {object}\n         */\n        this.fire('addedSchedule', schedule);\n    }\n\n    return schedule;\n};\n\n/**\n * split schedule model by ymd.\n * @param {Date} start - start date\n * @param {Date} end - end date\n * @param {Collection} scheduleCollection - collection of schedule model.\n * @returns {object.<string, Collection>} splitted schedule model collections.\n */\nBase.prototype.splitScheduleByDateRange = function(start, end, scheduleCollection) {\n    var range = datetime.range(\n            datetime.start(start),\n            datetime.end(end),\n            datetime.MILLISECONDS_PER_DAY\n        ),\n        ownMatrix = this.dateMatrix,\n        result = {};\n\n    util.forEachArray(range, function(date) {\n        var ymd = datetime.format(date, 'YYYYMMDD'),\n            matrix = ownMatrix[ymd],\n            collection;\n\n        collection = result[ymd] = common.createScheduleCollection();\n\n        if (matrix && matrix.length) {\n            util.forEachArray(matrix, function(id) {\n                scheduleCollection.doWhenHas(id, function(schedule) {\n                    collection.add(schedule);\n                });\n            });\n        }\n    });\n\n    return result;\n};\n\n/**\n * Return schedules in supplied date range.\n *\n * available only YMD.\n * @param {TZDate} start start date.\n * @param {TZDate} end end date.\n * @returns {object.<string, Collection>} schedule collection grouped by dates.\n */\nBase.prototype.findByDateRange = function(start, end) {\n    var range = datetime.range(\n            datetime.start(start),\n            datetime.end(end),\n            datetime.MILLISECONDS_PER_DAY\n        ),\n        ownSchedules = this.schedules.items,\n        ownMatrix = this.dateMatrix,\n        dformat = datetime.format,\n        result = {},\n        matrix,\n        ymd,\n        viewModels;\n\n    util.forEachArray(range, function(date) {\n        ymd = dformat(date, 'YYYYMMDD');\n        matrix = ownMatrix[ymd];\n        viewModels = result[ymd] = common.createScheduleCollection();\n\n        if (matrix && matrix.length) {\n            viewModels.add.apply(viewModels, util.map(matrix, function(id) {\n                return ScheduleViewModel.create(ownSchedules[id]);\n            }));\n        }\n    });\n\n    return result;\n};\n\nBase.prototype.clearSchedules = function() {\n    this.dateMatrix = {};\n    this.schedules.clear();\n    /**\n     * for inner view when clear schedules\n     * @event Base#clearSchedules\n     * @type {Schedule}\n     */\n    this.fire('clearSchedules');\n};\n\n/**\n * Set a theme.\n * @param {themeConfig} theme - theme keys, styles\n * @returns {Array.<string>} keys - error keys not predefined.\n */\nBase.prototype.setTheme = function(theme) {\n    return this.theme.setStyles(theme);\n};\n\n/**\n * Set calendar list\n * @param {Array.<Calendar>} calendars - calendar list\n */\nBase.prototype.setCalendars = function(calendars) {\n    this.calendars = calendars;\n};\n\n// mixin\nutil.CustomEvents.mixin(Base);\n\nmodule.exports = Base;\n","/**\n * @fileoverview Dirty flagging module for objects.\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\nvar common = require('tui-code-snippet');\nvar existy = common.isExisty,\n    pick = common.pick,\n    isFunc = common.isFunction;\n\n/**\n * Mixin module for dirty flagging on specific objects.\n * @mixin\n * @example\n * var obj = { hello: 'good', test: '123' };\n * dirty.mixin(obj);\n *\n * obj.set('hello', 'world');\n * obj.isDirty();    // true\n * obj.isPropChanged('hello');    // true\n * obj.isPropChanged('test');    // false\n * obj.dirty(false);\n *\n * obj.isDirty();    // false\n * obj.isPropChanged('hello');    // false\n */\nvar dirty = {\n    /**\n     * Set property value with dirty flagging.\n     * @param {string} propName Property name.\n     * @param {*} value Proprty value.\n     */\n    set: function(propName, value) {\n        var originValue = this[propName];\n\n        if (originValue === value) {\n            return;\n        }\n\n        this[propName] = value;\n\n        if (!this._changed) {\n            /**\n             * Save changed properties.\n             * @memberof dirty\n             * @name _changed\n             * @type {Object}\n             */\n            this._changed = {};\n        }\n\n        this._changed[propName] = true;\n\n        /**\n         * Dirty flag\n         * @type {Boolean}\n         * @name _dirty\n         * @memberof dirty\n         */\n        this._dirty = true;\n    },\n\n    /**\n     * Check dirty flag.\n     * @returns {boolean} Property is changed.\n     */\n    isDirty: function() {\n        return !!this._dirty;\n    },\n\n    /**\n     * Set dirty flag manually.\n     * @param {Boolean} [toDirty=true] This will set dirty flag directly.\n     */\n    dirty: function(toDirty) {\n        toDirty = existy(toDirty) ? toDirty : true;\n\n        /* istanbul ignore else */\n        if (!toDirty) {\n            this._changed = {};\n        }\n\n        this._dirty = toDirty;\n    },\n\n    /**\n     * Delete property safety.\n     * @param {String} propName The name of property.\n     */\n    deleteProp: function(propName) {\n        delete this[propName];\n\n        if (this._changed) {\n            delete this._changed[propName];\n        }\n    },\n\n    /**\n     * Check the changes with specific property.\n     * @param {String} propName The name of property you want.\n     * @returns {boolean} Is property changed?\n     */\n    isPropChanged: function(propName) {\n        if (!this._changed) {\n            return false;\n        }\n\n        return this._changed[propName] === true;\n    },\n\n    /**\n     * Mixin to specific objects.\n     * @param {Object} target The object to mix this module.\n     * @memberof module:util/dirty\n     * @example\n     * function Animal() {}\n     * dirty.mixin(Animal.prototype);\n     */\n    mixin: function(target) {\n        var methodFilterR = /(^_|mixin|wrap)/;\n\n        common.forEachOwnProperties(dirty, function(o, k) {\n            if (!methodFilterR.test(k)) {\n                target[k] = dirty[k];\n            }\n        });\n    },\n\n    /**\n     * Wrapper method for dirty flagging.\n     *\n     * This method invoke after invoked specific method that added by you.\n     *\n     * The method want to add are must exist before add.\n     * @param {object} target Target object to method wrap.\n     * @param {(string|object)} methodName\n     *  Method name to wrap or methodName: flag objects.\n     * @param {boolean} [flag=true]\n     *  this will used to flagging by dirty flagger after invoke the methods added by you.\n     * @memberof module:util/dirty\n     * @example\n     * function Animal(name) {\n     *     this.name = name;\n     * }\n     * Animal.prototype.growl = jasmine.createSpy('growl');\n     * Animal.prototype.test = function() {\n     *     return this.name;\n     * };\n     *\n     * dirty.mixin(Animal.prototype);\n     * // single\n     * dirty.wrap(Animal.prototype, 'growl', true);\n     * // multiple\n     * dirty.wrap(Animap.prototype, {\n     *     growl: true,\n     *     test: false\n     * });\n     *\n     */\n    wrap: function(target, methodName, flag) {\n        var wrap = dirty.wrap,\n            fn;\n\n        if (common.isObject(methodName)) {\n            common.forEachOwnProperties(methodName, function(_flag, _name) {\n                wrap(target, _name, _flag);\n            });\n\n            return;\n        }\n\n        flag = existy(flag) ? flag : true;\n\n        if (!target._wrapper) {\n            /**\n             * @param {function} _fn Original method to wrap.\n             * @param {boolean} flagToSet The boolean value to using dirty flagging.\n             * @returns {*} The result value of original method.\n             * @name _wrapper\n             * @memberof dirty\n             */\n            target._wrapper = function(_fn, flagToSet) {\n                return function() {\n                    var args = Array.prototype.slice.call(arguments);\n                    var result = _fn.apply(this, args); // eslint-disable-line\n                    this._dirty = flagToSet; // eslint-disable-line\n\n                    return result;\n                };\n            };\n        }\n\n        if (existy(pick(target, methodName)) &&\n            isFunc(target[methodName]) &&\n            !existy(pick(target, methodName, '_wrapped'))) {\n            fn = target[methodName];\n            target[methodName] = target._wrapper(fn, flag);\n            target[methodName]._wrapped = true;\n        }\n    }\n};\n\nmodule.exports = dirty;\n","/**\n * @fileoverview Mixin module for models.\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\nvar TZDate = require('../common/timezone').Date;\nvar util = require('tui-code-snippet');\nvar spaceRx = /^\\s*|\\s*$/g,\n    model;\n\nvar datetime = require('../common/datetime');\n\n/**\n * Mixin module for models.\n * @mixin\n */\nmodel = {\n    /**\n     * string trim\n     * @param {string} str string to trim\n     * @returns {string} trimed string\n     */\n    trim: function(str) {\n        return str.replace(spaceRx, '');\n    },\n    /**\n     * The collections of validator functions.\n     */\n    validators: {\n        /**\n         * check all of supplied fields(property) is not undefined or empty string.\n         * @param {object} instance model instance.\n         * @param {string[]} fields property names to check.\n         * @returns {boolean} return true when supplied fields are not undefined or empty string.\n         */\n        required: function(instance, fields) {\n            var valid = true,\n                isValid = function(obj) {\n                    return !util.isUndefined(obj) && model.trim(obj) !== '';\n                };\n\n            util.forEach(fields, function(fieldName) {\n                valid = isValid(instance[fieldName]);\n\n                return valid;\n            });\n\n            return valid;\n        },\n\n        /**\n         * check supplied fields are valid dates and valid date ranges.\n         * @param {object} instance model instance.\n         * @param {Date[]} fields array of date range (start, end)\n         * @returns {boolean} is valid date range?\n         */\n        dateRange: function(instance, fields) {\n            var start, end;\n\n            if (!util.isExisty(instance) || fields.length !== 2) {\n                return true;\n            }\n\n            start = new TZDate(instance[fields[0]]);\n            end = new TZDate(instance[fields[1]]);\n\n            if (!datetime.isValid(start) || !datetime.isValid(end)) {\n                return false;\n            }\n\n            if (datetime.compare(start, end) === 1) {\n                return false;\n            }\n\n            return true;\n        }\n    },\n\n    /**\n     * Check validate for model instance.\n     *\n     * The validate are works on a basis of constructor's \"schema\" property.\n     *\n     * You can customize validators add some method to model#validators.\n     * @returns {Boolean} model is valid?\n     */\n    isValid: function() {\n        var self = this,\n            schema = this.constructor.schema,\n            validators = model.validators,\n            validator,\n            valid = true;\n\n        if (!schema) {\n            return true;\n        }\n\n        util.forEach(schema, function(values, validatorName) {\n            validator = validators[validatorName];\n\n            if (validator) {\n                valid = validator(self, values);\n\n                return valid; // returning false can stop this loop\n            }\n\n            return true;\n        });\n\n        return valid;\n    },\n\n    /**\n     * Make data object form instance.\n     *\n     * It return object fill with all owned properties but exclude functions.\n     * @returns {object} Data object\n     */\n    parameterize: function() {\n        var param = {},\n            isFunc = util.isFunction;\n\n        util.forEach(this, function(value, propName) {\n            if (!isFunc(value)) {\n                param[propName] = value;\n            }\n        });\n\n        return param;\n    },\n\n    /**\n     * Mixin model module to supplied target.\n     * @param {Object} target The object of want to mixed.\n     * @example\n     * function Man() {\n     *     this.name = 'john';\n     * }\n     * model.mixin(Man.prototype);\n     */\n    mixin: function(target) {\n        util.forEach(model, function(method, name) {\n            if (name !== 'mixin') {\n                target[name] = method;\n            }\n        });\n    }\n};\n\nmodule.exports = model;\n","/**\n * @fileoverview The all configuration of a theme\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\nvar util = require('tui-code-snippet');\nvar themeStandard = require('./standard');\nvar themeConfig = require('./themeConfig');\nvar common = require('../common/common');\n\n/**\n * Theme manager\n * @param {object} customTheme - custom theme\n */\nfunction Theme(customTheme) {\n    var theme = customTheme || themeStandard;\n\n    /**\n     * @type {util.HashMap}\n     */\n    this._map = new util.HashMap();\n\n    this.setStyles(theme);\n}\n\n/**\n * Get a style with key\n * @param {string} key - key for getting a style\n * @returns {string|undefined} style\n */\nTheme.prototype.getStyle = function(key) {\n    return this._map.get(key);\n};\n\n/**\n * Set a style\n * @param {string} key - key for setting a style\n * @param {string} style - style value\n * @returns {boolean} true if the give key is valid or false\n */\nTheme.prototype.setStyle = function(key, style) {\n    var styles = {};\n    styles[key] = style;\n\n    return this.setStyles(styles).length === 0;\n};\n\n/**\n * Set styles\n * @param {object} styles - multiple styles map\n * @returns {Array.<string>} error keys\n */\nTheme.prototype.setStyles = function(styles) {\n    var errors = [];\n\n    util.forEach(styles, function(style, key) {\n        if (util.isUndefined(themeConfig[key])) {\n            errors.push(key);\n        } else {\n            this._map.set(key, style);\n            common.set(this, key, style);\n        }\n    }, this);\n\n    // apply missing styles which have to be default\n    util.forEach(themeConfig, function(style, key) {\n        if (!this.getStyle(key)) {\n            this._map.set(key, style);\n            common.set(this, key, style);\n        }\n    }, this);\n\n    return errors;\n};\n\n/**\n * Delete all styles\n */\nTheme.prototype.clear = function() {\n    var keys = this._map.keys();\n    var categories = {};\n    util.forEach(keys, function(key) {\n        var category = key.split('.')[0];\n        if (!categories[category]) {\n            categories[category] = category;\n        }\n    });\n\n    util.forEach(categories, function(child) {\n        delete this[child];\n    }, this);\n\n    this._map.removeAll();\n};\n\nmodule.exports = Theme;\n","/**\n * @fileoverview The standard theme\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\n/**\n * \"common\" prefix is for entire calendar. \"common\" properties can be overriden by \"week\", \"month\".\n * \"week\" prefix is for weekly and daily view.\n * \"month\" prefix is for monthly view.\n */\nvar theme = {\n    'common.border': '1px solid #e5e5e5',\n    'common.backgroundColor': 'white',\n    'common.holiday.color': '#ff4040',\n    'common.saturday.color': '#333',\n    'common.dayname.color': '#333',\n    'common.today.color': '#333',\n\n    // creation guide style\n    'common.creationGuide.backgroundColor': 'rgba(81, 92, 230, 0.05)',\n    'common.creationGuide.border': '1px solid #515ce6',\n\n    // month header 'dayname'\n    'month.dayname.height': '31px',\n    'month.dayname.borderLeft': 'none',\n    'month.dayname.paddingLeft': '10px',\n    'month.dayname.paddingRight': '0',\n    'month.dayname.backgroundColor': 'inherit',\n    'month.dayname.fontSize': '12px',\n    'month.dayname.fontWeight': 'normal',\n    'month.dayname.textAlign': 'left',\n\n    // month day grid cell 'day'\n    'month.holidayExceptThisMonth.color': 'rgba(255, 64, 64, 0.4)',\n    'month.dayExceptThisMonth.color': 'rgba(51, 51, 51, 0.4)',\n    'month.weekend.backgroundColor': 'inherit',\n    'month.day.fontSize': '14px',\n\n    // month schedule style\n    'month.schedule.borderRadius': '2px',\n    'month.schedule.height': '24px',\n    'month.schedule.marginTop': '2px',\n    'month.schedule.marginLeft': '8px',\n    'month.schedule.marginRight': '8px',\n\n    // month more view\n    'month.moreView.border': '1px solid #d5d5d5',\n    'month.moreView.boxShadow': '0 2px 6px 0 rgba(0, 0, 0, 0.1)',\n    'month.moreView.backgroundColor': 'white',\n    'month.moreView.paddingBottom': '17px',\n    'month.moreViewTitle.height': '44px',\n    'month.moreViewTitle.marginBottom': '12px',\n    'month.moreViewTitle.borderBottom': 'none',\n    'month.moreViewTitle.padding': '12px 17px 0 17px',\n    'month.moreViewList.padding': '0 17px',\n\n    // week header 'dayname'\n    'week.dayname.height': '42px',\n    'week.dayname.borderTop': '1px solid #e5e5e5',\n    'week.dayname.borderBottom': '1px solid #e5e5e5',\n    'week.dayname.borderLeft': 'none',\n    'week.dayname.paddingLeft': '0',\n    'week.dayname.backgroundColor': 'inherit',\n    'week.dayname.textAlign': 'left',\n    'week.today.color': 'inherit',\n    'week.pastDay.color': '#bbb',\n\n    // week vertical panel 'vpanel'\n    'week.vpanelSplitter.border': '1px solid #e5e5e5',\n    'week.vpanelSplitter.height': '3px',\n\n    // week daygrid 'daygrid'\n    'week.daygrid.borderRight': '1px solid #e5e5e5',\n    'week.daygrid.backgroundColor': 'inherit',\n\n    'week.daygridLeft.width': '72px',\n    'week.daygridLeft.backgroundColor': 'inherit',\n    'week.daygridLeft.paddingRight': '8px',\n    'week.daygridLeft.borderRight': '1px solid #e5e5e5',\n\n    'week.today.backgroundColor': 'rgba(81, 92, 230, 0.05)',\n    'week.weekend.backgroundColor': 'inherit',\n\n    // week timegrid 'timegrid'\n    'week.timegridLeft.width': '72px',\n    'week.timegridLeft.backgroundColor': 'inherit',\n    'week.timegridLeft.borderRight': '1px solid #e5e5e5',\n    'week.timegridLeft.fontSize': '11px',\n\n    'week.timegridOneHour.height': '52px',\n    'week.timegridHalfHour.height': '26px',\n    'week.timegridHalfHour.borderBottom': 'none',\n    'week.timegridHorizontalLine.borderBottom': '1px solid #e5e5e5',\n\n    'week.timegrid.paddingRight': '8px',\n    'week.timegrid.borderRight': '1px solid #e5e5e5',\n    'week.timegridSchedule.borderRadius': '2px',\n    'week.timegridSchedule.paddingLeft': '2px',\n\n    'week.currentTime.color': '#515ce6',\n    'week.currentTime.fontSize': '11px',\n    'week.currentTime.fontWeight': 'normal',\n\n    'week.currentTimeLinePast.border': '1px dashed #515ce6',\n    'week.currentTimeLineBullet.backgroundColor': '#515ce6',\n    'week.currentTimeLineToday.border': '1px solid #515ce6',\n    'week.currentTimeLineFuture.border': 'none',\n\n    // week creation guide style\n    'week.creationGuide.color': '#515ce6',\n    'week.creationGuide.fontSize': '11px',\n    'week.creationGuide.fontWeight': 'bold',\n\n    // week daygrid schedule style\n    'week.dayGridSchedule.borderRadius': '2px',\n    'week.dayGridSchedule.height': '24px',\n    'week.dayGridSchedule.marginTop': '2px',\n    'week.dayGridSchedule.marginLeft': '8px',\n    'week.dayGridSchedule.marginRight': '8px'\n};\n\nmodule.exports = theme;\n","/**\n * @fileoverview The all configuration of a theme\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\n/**\n * Full configuration for theme.\n * \"common\" prefix is for entire calendar. \"common\" properties can be overriden by \"week\", \"month\".\n * \"week\" prefix is for weekly and daily view.\n * \"month\" prefix is for monthly view.\n * @typedef {object} themeConfig\n * @example\n // default keys and styles\n var themeConfig = {\n    'common.border': '1px solid #e5e5e5',\n    'common.backgroundColor': 'white',\n    'common.holiday.color': '#ff4040',\n    'common.saturday.color': '#333',\n    'common.dayname.color': '#333',\n    'common.today.color': '#333',\n\n    // creation guide style\n    'common.creationGuide.backgroundColor': 'rgba(81, 92, 230, 0.05)',\n    'common.creationGuide.border': '1px solid #515ce6',\n\n    // month header 'dayname'\n    'month.dayname.height': '31px',\n    'month.dayname.borderLeft': '1px solid #e5e5e5',\n    'month.dayname.paddingLeft': '10px',\n    'month.dayname.paddingRight': '10px',\n    'month.dayname.backgroundColor': 'inherit',\n    'month.dayname.fontSize': '12px',\n    'month.dayname.fontWeight': 'normal',\n    'month.dayname.textAlign': 'left',\n\n    // month day grid cell 'day'\n    'month.holidayExceptThisMonth.color': 'rgba(255, 64, 64, 0.4)',\n    'month.dayExceptThisMonth.color': 'rgba(51, 51, 51, 0.4)',\n    'month.weekend.backgroundColor': 'inherit',\n    'month.day.fontSize': '14px',\n\n    // month schedule style\n    'month.schedule.borderRadius': '2px',\n    'month.schedule.height': '24px',\n    'month.schedule.marginTop': '2px',\n    'month.schedule.marginLeft': '8px',\n    'month.schedule.marginRight': '8px',\n\n    // month more view\n    'month.moreView.border': '1px solid #d5d5d5',\n    'month.moreView.boxShadow': '0 2px 6px 0 rgba(0, 0, 0, 0.1)',\n    'month.moreView.backgroundColor': 'white',\n    'month.moreView.paddingBottom': '17px',\n    'month.moreViewTitle.height': '44px',\n    'month.moreViewTitle.marginBottom': '12px',\n    'month.moreViewTitle.backgroundColor': 'inherit',\n    'month.moreViewTitle.borderBottom': 'none',\n    'month.moreViewTitle.padding': '12px 17px 0 17px',\n    'month.moreViewList.padding': '0 17px',\n\n    // week header 'dayname'\n    'week.dayname.height': '42px',\n    'week.dayname.borderTop': '1px solid #e5e5e5',\n    'week.dayname.borderBottom': '1px solid #e5e5e5',\n    'week.dayname.borderLeft': 'inherit',\n    'week.dayname.paddingLeft': '0',\n    'week.dayname.backgroundColor': 'inherit',\n    'week.dayname.textAlign': 'left',\n    'week.today.color': '#333',\n    'week.pastDay.color': '#bbb',\n\n    // week vertical panel 'vpanel'\n    'week.vpanelSplitter.border': '1px solid #e5e5e5',\n    'week.vpanelSplitter.height': '3px',\n\n    // week daygrid 'daygrid'\n    'week.daygrid.borderRight': '1px solid #e5e5e5',\n    'week.daygrid.backgroundColor': 'inherit',\n\n    'week.daygridLeft.width': '72px',\n    'week.daygridLeft.backgroundColor': 'inherit',\n    'week.daygridLeft.paddingRight': '8px',\n    'week.daygridLeft.borderRight': '1px solid #e5e5e5',\n\n    'week.today.backgroundColor': 'rgba(81, 92, 230, 0.05)',\n    'week.weekend.backgroundColor': 'inherit',\n\n    // week timegrid 'timegrid'\n    'week.timegridLeft.width': '72px',\n    'week.timegridLeft.backgroundColor': 'inherit',\n    'week.timegridLeft.borderRight': '1px solid #e5e5e5',\n    'week.timegridLeft.fontSize': '11px',\n    'week.timegridLeftTimezoneLabel.height': '40px',\n    'week.timegridLeftAdditionalTimezone.backgroundColor': 'white',\n\n    'week.timegridOneHour.height': '52px',\n    'week.timegridHalfHour.height': '26px',\n    'week.timegridHalfHour.borderBottom': 'none',\n    'week.timegridHorizontalLine.borderBottom': '1px solid #e5e5e5',\n\n    'week.timegrid.paddingRight': '8px',\n    'week.timegrid.borderRight': '1px solid #e5e5e5',\n    'week.timegridSchedule.borderRadius': '2px',\n    'week.timegridSchedule.paddingLeft': '2px',\n\n    'week.currentTime.color': '#515ce6',\n    'week.currentTime.fontSize': '11px',\n    'week.currentTime.fontWeight': 'normal',\n\n    'week.pastTime.color': '#bbb',\n    'week.pastTime.fontWeight': 'normal',\n\n    'week.futureTime.color': '#333',\n    'week.futureTime.fontWeight': 'normal',\n\n    'week.currentTimeLinePast.border': '1px dashed #515ce6',\n    'week.currentTimeLineBullet.backgroundColor': '#515ce6',\n    'week.currentTimeLineToday.border': '1px solid #515ce6',\n    'week.currentTimeLineFuture.border': 'none',\n\n    // week creation guide style\n    'week.creationGuide.color': '#515ce6',\n    'week.creationGuide.fontSize': '11px',\n    'week.creationGuide.fontWeight': 'bold',\n\n    // week daygrid schedule style\n    'week.dayGridSchedule.borderRadius': '2px',\n    'week.dayGridSchedule.height': '24px',\n    'week.dayGridSchedule.marginTop': '2px',\n    'week.dayGridSchedule.marginLeft': '8px',\n    'week.dayGridSchedule.marginRight': '8px'\n};\n */\nvar themeConfig = {\n    'common.border': '1px solid #e5e5e5',\n    'common.backgroundColor': 'white',\n    'common.holiday.color': '#ff4040',\n    'common.saturday.color': '#333',\n    'common.dayname.color': '#333',\n    'common.today.color': '#333',\n\n    // creation guide style\n    'common.creationGuide.backgroundColor': 'rgba(81, 92, 230, 0.05)',\n    'common.creationGuide.border': '1px solid #515ce6',\n\n    // month header 'dayname'\n    'month.dayname.height': '31px',\n    'month.dayname.borderLeft': '1px solid #e5e5e5',\n    'month.dayname.paddingLeft': '10px',\n    'month.dayname.paddingRight': '10px',\n    'month.dayname.backgroundColor': 'inherit',\n    'month.dayname.fontSize': '12px',\n    'month.dayname.fontWeight': 'normal',\n    'month.dayname.textAlign': 'left',\n\n    // month day grid cell 'day'\n    'month.holidayExceptThisMonth.color': 'rgba(255, 64, 64, 0.4)',\n    'month.dayExceptThisMonth.color': 'rgba(51, 51, 51, 0.4)',\n    'month.weekend.backgroundColor': 'inherit',\n    'month.day.fontSize': '14px',\n\n    // month schedule style\n    'month.schedule.borderRadius': '2px',\n    'month.schedule.height': '24px',\n    'month.schedule.marginTop': '2px',\n    'month.schedule.marginLeft': '8px',\n    'month.schedule.marginRight': '8px',\n\n    // month more view\n    'month.moreView.border': '1px solid #d5d5d5',\n    'month.moreView.boxShadow': '0 2px 6px 0 rgba(0, 0, 0, 0.1)',\n    'month.moreView.backgroundColor': 'white',\n    'month.moreView.paddingBottom': '17px',\n    'month.moreViewTitle.height': '44px',\n    'month.moreViewTitle.marginBottom': '12px',\n    'month.moreViewTitle.backgroundColor': 'inherit',\n    'month.moreViewTitle.borderBottom': 'none',\n    'month.moreViewTitle.padding': '12px 17px 0 17px',\n    'month.moreViewList.padding': '0 17px',\n\n    // week header 'dayname'\n    'week.dayname.height': '42px',\n    'week.dayname.borderTop': '1px solid #e5e5e5',\n    'week.dayname.borderBottom': '1px solid #e5e5e5',\n    'week.dayname.borderLeft': 'inherit',\n    'week.dayname.paddingLeft': '0',\n    'week.dayname.backgroundColor': 'inherit',\n    'week.dayname.textAlign': 'left',\n    'week.today.color': '#333',\n    'week.pastDay.color': '#bbb',\n\n    // week vertical panel 'vpanel'\n    'week.vpanelSplitter.border': '1px solid #e5e5e5',\n    'week.vpanelSplitter.height': '3px',\n\n    // week daygrid 'daygrid'\n    'week.daygrid.borderRight': '1px solid #e5e5e5',\n    'week.daygrid.backgroundColor': 'inherit',\n\n    'week.daygridLeft.width': '72px',\n    'week.daygridLeft.backgroundColor': 'inherit',\n    'week.daygridLeft.paddingRight': '8px',\n    'week.daygridLeft.borderRight': '1px solid #e5e5e5',\n\n    'week.today.backgroundColor': 'rgba(81, 92, 230, 0.05)',\n    'week.weekend.backgroundColor': 'inherit',\n\n    // week timegrid 'timegrid'\n    'week.timegridLeft.width': '72px',\n    'week.timegridLeft.backgroundColor': 'inherit',\n    'week.timegridLeft.borderRight': '1px solid #e5e5e5',\n    'week.timegridLeft.fontSize': '11px',\n    'week.timegridLeftTimezoneLabel.height': '40px',\n    'week.timegridLeftAdditionalTimezone.backgroundColor': 'white',\n\n    'week.timegridOneHour.height': '52px',\n    'week.timegridHalfHour.height': '26px',\n    'week.timegridHalfHour.borderBottom': 'none',\n    'week.timegridHorizontalLine.borderBottom': '1px solid #e5e5e5',\n\n    'week.timegrid.paddingRight': '8px',\n    'week.timegrid.borderRight': '1px solid #e5e5e5',\n    'week.timegridSchedule.borderRadius': '2px',\n    'week.timegridSchedule.paddingLeft': '2px',\n\n    'week.currentTime.color': '#515ce6',\n    'week.currentTime.fontSize': '11px',\n    'week.currentTime.fontWeight': 'normal',\n\n    'week.pastTime.color': '#bbb',\n    'week.pastTime.fontWeight': 'normal',\n\n    'week.futureTime.color': '#333',\n    'week.futureTime.fontWeight': 'normal',\n\n    'week.currentTimeLinePast.border': '1px dashed #515ce6',\n    'week.currentTimeLineBullet.backgroundColor': '#515ce6',\n    'week.currentTimeLineToday.border': '1px solid #515ce6',\n    'week.currentTimeLineFuture.border': 'none',\n\n    // week creation guide style\n    'week.creationGuide.color': '#515ce6',\n    'week.creationGuide.fontSize': '11px',\n    'week.creationGuide.fontWeight': 'bold',\n\n    // week daygrid schedule style\n    'week.dayGridSchedule.borderRadius': '2px',\n    'week.dayGridSchedule.height': '24px',\n    'week.dayGridSchedule.marginTop': '2px',\n    'week.dayGridSchedule.marginLeft': '8px',\n    'week.dayGridSchedule.marginRight': '8px'\n};\n\nmodule.exports = themeConfig;\n","/**\n * @fileoverview Core methods for schedule block placing\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\nvar util = require('tui-code-snippet');\nvar forEachArr = util.forEachArray,\n    aps = Array.prototype.slice;\n\nvar datetime = require('../../common/datetime');\nvar TZDate = require('../../common/timezone').Date;\nvar Collection = require('../../common/collection');\nvar ScheduleViewModel = require('../../model/viewModel/scheduleViewModel');\n\nvar Core = {\n    /**\n     * Calculate collision group.\n     * @param {array} viewModels List of viewmodels.\n     * @returns {array} Collision Group.\n     */\n    getCollisionGroup: function(viewModels) {\n        var collisionGroups = [],\n            foundPrevCollisionSchedule = false,\n            previousScheduleList;\n\n        if (!viewModels.length) {\n            return collisionGroups;\n        }\n\n        collisionGroups[0] = [util.stamp(viewModels[0].valueOf())];\n        forEachArr(viewModels.slice(1), function(schedule, index) {\n            foundPrevCollisionSchedule = false;\n            previousScheduleList = aps.apply(viewModels, [0, index + 1]).reverse();\n\n            forEachArr(previousScheduleList, function(previous) {\n                if (schedule.collidesWith(previous)) {\n                    // If overlapping previous schedules, find a Collision Group of overlapping schedules and add this schedules\n                    foundPrevCollisionSchedule = true;\n\n                    forEachArr(collisionGroups.slice(0).reverse(), function(group) {\n                        if (~util.inArray(util.stamp(previous.valueOf()), group)) {\n                            // If you find a previous schedule that overlaps, include it in the Collision Group to which it belongs.\n                            group.push(util.stamp(schedule.valueOf()));\n\n                            return false; // returning false can stop this loop\n                        }\n\n                        return true;\n                    });\n\n                    return false; // returning false can stop this loop\n                }\n\n                return true;\n            });\n\n            if (!foundPrevCollisionSchedule) {\n                // This schedule is a schedule that does not overlap with the previous schedule, so a new Collision Group is constructed.\n                collisionGroups.push([util.stamp(schedule.valueOf())]);\n            }\n        });\n\n        return collisionGroups;\n    },\n\n    /**\n     * Get row length by column index in 2d matrix.\n     * @param {array[]} arr2d Matrix\n     * @param {number} col Column index.\n     * @returns {number} Last row number in column.\n     */\n    getLastRowInColumn: function(arr2d, col) {\n        var row = arr2d.length;\n\n        while (row > 0) {\n            row -= 1;\n            if (!util.isUndefined(arr2d[row][col])) {\n                return row;\n            }\n        }\n\n        return false;\n    },\n\n    /**\n     * Calculate matrix for appointment block element placing.\n     * @param {Collection} collection model collection.\n     * @param {array[]} collisionGroups Collision groups for schedule set.\n     * @returns {array} matrices\n     */\n    getMatrices: function(collection, collisionGroups) {\n        var result = [],\n            getLastRowInColumn = Core.getLastRowInColumn;\n\n        forEachArr(collisionGroups, function(group) {\n            var matrix = [[]];\n\n            forEachArr(group, function(scheduleID) {\n                var schedule = collection.items[scheduleID],\n                    col = 0,\n                    found = false,\n                    nextRow,\n                    lastRowInColumn;\n\n                while (!found) {\n                    lastRowInColumn = getLastRowInColumn(matrix, col);\n\n                    if (lastRowInColumn === false) {\n                        matrix[0].push(schedule);\n                        found = true;\n                    } else if (!schedule.collidesWith(matrix[lastRowInColumn][col])) {\n                        nextRow = lastRowInColumn + 1;\n                        if (util.isUndefined(matrix[nextRow])) {\n                            matrix[nextRow] = [];\n                        }\n                        matrix[nextRow][col] = schedule;\n                        found = true;\n                    }\n\n                    col += 1;\n                }\n            });\n\n            result.push(matrix);\n        });\n\n        return result;\n    },\n\n    /**\n     * Filter that get schedule model in supplied date ranges.\n     * @param {Date} start - start date\n     * @param {Date} end - end date\n     * @returns {function} schedule filter function\n     */\n    getScheduleInDateRangeFilter: function(start, end) {\n        return function(model) {\n            var ownStarts = model.getStarts(),\n                ownEnds = model.getEnds();\n\n            // shorthand condition of\n            //\n            // (ownStarts >= start && ownEnds <= end) ||\n            // (ownStarts < start && ownEnds >= start) ||\n            // (ownEnds > end && ownStarts <= end)\n            return !(ownEnds < start || ownStarts > end);\n        };\n    },\n\n    /**\n     * Position each view model for placing into container\n     * @param {Date} start - start date to render\n     * @param {Date} end - end date to render\n     * @param {array} matrices - matrices from controller\n     * @param {function} [iteratee] - iteratee function invoke each view models\n     */\n    positionViewModels: function(start, end, matrices, iteratee) {\n        var ymdListToRender;\n\n        ymdListToRender = util.map(\n            datetime.range(start, end, datetime.MILLISECONDS_PER_DAY),\n            function(date) {\n                return datetime.format(date, 'YYYYMMDD');\n            }\n        );\n\n        forEachArr(matrices, function(matrix) {\n            forEachArr(matrix, function(column) {\n                forEachArr(column, function(viewModel, index) {\n                    var ymd, dateLength, startDate, endDate;\n\n                    if (!viewModel) {\n                        return;\n                    }\n\n                    startDate = viewModel.getStarts();\n                    endDate = viewModel.getEnds();\n                    dateLength = datetime.range(\n                        datetime.start(startDate),\n                        datetime.renderEnd(startDate, endDate),\n                        datetime.MILLISECONDS_PER_DAY\n                    ).length;\n\n                    ymd = datetime.format(startDate, 'YYYYMMDD');\n                    viewModel.top = index;\n                    viewModel.left = util.inArray(ymd, ymdListToRender);\n                    viewModel.width = dateLength;\n\n                    if (iteratee) {\n                        iteratee(viewModel);\n                    }\n                });\n            });\n        });\n    },\n\n    /**\n     * Limit start, end date each view model for render properly\n     * @param {TZDate} start - start date to render\n     * @param {TZDate} end - end date to render\n     * @param {Collection|ScheduleViewModel} viewModelColl - schedule view\n     *  model collection or ScheduleViewModel\n     * @returns {ScheduleViewModel} return view model when third parameter is\n     *  view model\n     */\n    limitRenderRange: function(start, end, viewModelColl) {\n        /**\n         * Limit render range for view models\n         * @param {ScheduleViewModel} viewModel - view model instance\n         * @returns {ScheduleViewModel} view model that limited render range\n         */\n        function limit(viewModel) {\n            if (viewModel.getStarts() < start) {\n                viewModel.exceedLeft = true;\n                viewModel.renderStarts = new TZDate(start);\n            }\n\n            if (viewModel.getEnds() > end) {\n                viewModel.exceedRight = true;\n                viewModel.renderEnds = new TZDate(end);\n            }\n\n            return viewModel;\n        }\n\n        if (viewModelColl.constructor === Collection) {\n            viewModelColl.each(limit);\n\n            return null;\n        }\n\n        return limit(viewModelColl);\n    },\n\n    /**\n     * Convert schedule model collection to view model collection.\n     * @param {Collection} modelColl - collection of schedule model\n     * @returns {Collection} collection of schedule view model\n     */\n    convertToViewModel: function(modelColl) {\n        var viewModelColl;\n\n        viewModelColl = new Collection(function(viewModel) {\n            return viewModel.cid();\n        });\n\n        modelColl.each(function(model) {\n            viewModelColl.add(ScheduleViewModel.create(model));\n        });\n\n        return viewModelColl;\n    }\n};\n\nmodule.exports = Core;\n","/* eslint no-shadow: 0 */\n/**\n * @fileoverview Controller mixin modules for day views.\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\nvar util = require('tui-code-snippet');\n\nvar Collection = require('../../common/collection');\nvar array = require('../../common/array');\nvar datetime = require('../../common/datetime');\nvar TZDate = require('../../common/timezone').Date;\n\nvar SCHEDULE_MIN_DURATION = datetime.MILLISECONDS_SCHEDULE_MIN_DURATION;\n\n/**\n * @mixin Base.Week\n */\nvar Week = {\n    /**********\n     * TIME GRID VIEW\n     **********/\n\n    /**\n     * Make array with start and end times on schedules.\n     * @this Base.Week\n     * @param {array[]} matrix - matrix from controller.\n     * @returns {array[]} starttime, endtime array (exclude first row's schedules)\n     */\n    generateTimeArrayInRow: function(matrix) {\n        var row,\n            col,\n            schedule,\n            start,\n            end,\n            map = [],\n            cursor = [],\n            maxColLen = Math.max.apply(null, util.map(matrix, function(col) {\n                return col.length;\n            }));\n\n        for (col = 1; col < maxColLen; col += 1) {\n            row = 0;\n            schedule = util.pick(matrix, row, col);\n\n            while (schedule) {\n                start = schedule.getStarts().getTime() - datetime.millisecondsFrom('minutes', schedule.valueOf().goingDuration);\n                end = schedule.getEnds().getTime() + datetime.millisecondsFrom('minutes', schedule.valueOf().comingDuration);\n\n                if (Math.abs(end - start) < SCHEDULE_MIN_DURATION) {\n                    end += SCHEDULE_MIN_DURATION;\n                }\n\n                cursor.push([start, end]);\n\n                row += 1;\n                schedule = util.pick(matrix, row, col);\n            }\n\n            map.push(cursor);\n            cursor = [];\n        }\n\n        return map;\n    },\n\n    /**\n     * Get collision information from list\n     * @this Base\n     * @param {array.<number[]>} arr - list to detecting collision. [[start, end], [start, end]]\n     * @param {number} start - schedule start time that want to detect collisions.\n     * @param {number} end - schedule end time that want to detect collisions.\n     * @returns {boolean} target has collide in supplied array?\n     */\n    hasCollide: function(arr, start, end) {\n        var startStart,\n            startEnd,\n            endStart,\n            endEnd,\n            getFunc = function(index) {\n                return function(block) {\n                    return block[index];\n                };\n            },\n            abs = Math.abs,\n            compare = array.compare.num.asc,\n            hasCollide;\n\n        if (!arr.length) {\n            return false;\n        }\n\n        startStart = abs(array.bsearch(arr, start, getFunc(0), compare));\n        startEnd = abs(array.bsearch(arr, start, getFunc(1), compare));\n        endStart = abs(array.bsearch(arr, end, getFunc(0), compare));\n        endEnd = abs(array.bsearch(arr, end, getFunc(1), compare));\n        hasCollide = !(startStart === startEnd && startEnd === endStart && endStart === endEnd);\n\n        return hasCollide;\n    },\n\n    /**\n     * Initialize values to viewmodels for detect real collision at rendering phase.\n     * @this Base\n     * @param {array[]} matrices - Matrix data.\n     */\n    getCollides: function(matrices) {\n        util.forEachArray(matrices, function(matrix) {\n            var binaryMap,\n                maxRowLength;\n\n            binaryMap = Week.generateTimeArrayInRow(matrix);\n            maxRowLength = Math.max.apply(null, util.map(matrix, function(row) {\n                return row.length;\n            }));\n\n            util.forEachArray(matrix, function(row) {\n                util.forEachArray(row, function(viewModel, col) {\n                    var startTime,\n                        endTime,\n                        hasCollide,\n                        i;\n\n                    if (!viewModel) {\n                        return;\n                    }\n\n                    startTime = viewModel.getStarts().getTime();\n                    endTime = viewModel.getEnds().getTime();\n\n                    if (Math.abs(endTime - startTime) < SCHEDULE_MIN_DURATION) {\n                        endTime += SCHEDULE_MIN_DURATION;\n                    }\n\n                    startTime -= datetime.millisecondsFrom('minutes', viewModel.valueOf().goingDuration);\n                    endTime += datetime.millisecondsFrom('minutes', viewModel.valueOf().comingDuration);\n\n                    endTime -= 1;\n\n                    for (i = (col + 1); i < maxRowLength; i += 1) {\n                        hasCollide = Week.hasCollide(binaryMap[i - 1], startTime, endTime);\n\n                        if (hasCollide) {\n                            viewModel.hasCollide = true;\n                            break;\n                        }\n\n                        viewModel.extraSpace += 1;\n                    }\n                });\n            });\n        });\n    },\n\n    /**\n     * create view model for time view part\n     * @this Base\n     * @param {Date} start - start date.\n     * @param {Date} end - end date.\n     * @param {Collection} time - view model collection.\n     * @param {number} hourStart - start hour to be shown\n     * @param {number} hourEnd - end hour to be shown\n     * @returns {object} view model for time part.\n     */\n    getViewModelForTimeView: function(start, end, time, hourStart, hourEnd) {\n        var self = this,\n            ymdSplitted = this.splitScheduleByDateRange(start, end, time),\n            result = {};\n\n        var _getViewModel = Week._makeGetViewModelFuncForTimeView(hourStart, hourEnd);\n\n        util.forEach(ymdSplitted, function(collection, ymd) {\n            var viewModels = _getViewModel(collection);\n            var collisionGroups, matrices;\n\n            collisionGroups = self.Core.getCollisionGroup(viewModels);\n            matrices = self.Core.getMatrices(collection, collisionGroups);\n            self.Week.getCollides(matrices);\n\n            result[ymd] = matrices;\n        });\n\n        return result;\n    },\n\n    /**\n     * make view model function depending on start and end hour\n     * if time view option has start or end hour condition\n     * it add filter\n     * @param {number} hourStart - start hour to be shown\n     * @param {number} hourEnd - end hour to be shown\n     * @returns {function} function\n     */\n    _makeGetViewModelFuncForTimeView: function(hourStart, hourEnd) {\n        if (hourStart === 0 && hourEnd === 24) {\n            return function(collection) {\n                return collection.sort(array.compare.schedule.asc);\n            };\n        }\n\n        return function(collection) {\n            return collection.find(Week._makeHourRangeFilter(hourStart, hourEnd))\n                .sort(array.compare.schedule.asc);\n        };\n    },\n\n    /**\n     * make a filter function that is not included range of start, end hour\n     * @param {number} hStart - hour start\n     * @param {number} hEnd - hour end\n     * @returns {function} - filtering function\n     */\n    _makeHourRangeFilter: function(hStart, hEnd) {\n        // eslint-disable-next-line complexity\n        return function(schedule) {\n            var ownHourStart = schedule.model.start;\n            var ownHourEnd = schedule.model.end;\n            var yyyy = ownHourStart.getFullYear();\n            var mm = ownHourStart.getMonth();\n            var dd = ownHourStart.getDate();\n\n            var hourStart = new TZDate(yyyy, mm, dd).setHours(hStart);\n            var hourEnd = new TZDate(yyyy, mm, dd).setHours(hEnd);\n\n            return (ownHourStart >= hourStart && ownHourStart < hourEnd) ||\n                (ownHourEnd > hourStart && ownHourEnd <= hourEnd) ||\n                (ownHourStart < hourStart && ownHourEnd > hourStart) ||\n                (ownHourEnd > hourEnd && ownHourStart < hourEnd);\n        };\n    },\n\n    /**********\n     * ALLDAY VIEW\n     **********/\n\n    /**\n     * Set hasMultiDates flag to true and set date ranges for rendering\n     * @this Base\n     * @param {Collection} vColl - view model collection\n     */\n    _addMultiDatesInfo: function(vColl) {\n        vColl.each(function(viewModel) {\n            var model = viewModel.model;\n            var start = model.getStarts();\n            var end = model.getEnds();\n\n            viewModel.hasMultiDates = true;\n            viewModel.renderStarts = datetime.start(start);\n            viewModel.renderEnds = datetime.renderEnd(start, end);\n        });\n    },\n\n    /**\n     * create view model for allday view part\n     * @this Base\n     * @param {Date} start start date.\n     * @param {Date} end end date.\n     * @param {Collection} viewModelColl - allday schedule viewModel viewModels.\n     * @returns {object} allday viewModel.\n     */\n    getViewModelForAlldayView: function(start, end, viewModelColl) {\n        var ctrlCore = this.Core,\n            ctrlWeek = this.Week,\n            viewModels,\n            collisionGroups,\n            matrices;\n\n        if (!viewModelColl || !viewModelColl.length) {\n            return [];\n        }\n\n        ctrlWeek._addMultiDatesInfo(viewModelColl);\n        ctrlCore.limitRenderRange(start, end, viewModelColl);\n\n        viewModels = viewModelColl.sort(array.compare.schedule.asc);\n        collisionGroups = ctrlCore.getCollisionGroup(viewModels);\n\n        matrices = ctrlCore.getMatrices(viewModelColl, collisionGroups);\n        ctrlCore.positionViewModels(start, end, matrices);\n\n        return matrices;\n    },\n\n    /**********\n     * READ\n     **********/\n\n    /**\n     * Populate schedules in date range.\n     * @this Base\n     * @param {Date} start start date.\n     * @param {Date} end end date.\n     * @param {Array.<object>} panels - schedule panels like 'milestone', 'task', 'allday', 'time'\n     * @param {function[]} [andFilters] - optional filters to applying search query\n     * @param {Object} options - week view options\n     * @returns {object} schedules grouped by dates.\n     */\n    findByDateRange: function(start, end, panels, andFilters, options) {\n        var ctrlCore = this.Core,\n            ctrlWeek = this.Week,\n            filter = ctrlCore.getScheduleInDateRangeFilter(start, end),\n            scheduleTypes = util.pluck(panels, 'name'),\n            hourStart = util.pick(options, 'hourStart'),\n            hourEnd = util.pick(options, 'hourEnd'),\n            modelColl,\n            group;\n\n        andFilters = andFilters || [];\n        filter = Collection.and.apply(null, [filter].concat(andFilters));\n\n        modelColl = this.schedules.find(filter);\n        modelColl = ctrlCore.convertToViewModel(modelColl);\n\n        group = modelColl.groupBy(scheduleTypes, this.groupFunc);\n        util.forEach(panels, function(panel) {\n            var name = panel.name;\n            if (panel.type === 'daygrid') {\n                group[name] = ctrlWeek.getViewModelForAlldayView(start, end, group[name]);\n            } else if (panel.type === 'timegrid') {\n                group[name] = ctrlWeek.getViewModelForTimeView(start, end, group[name], hourStart, hourEnd);\n            }\n        });\n\n        return group;\n    },\n\n    /* eslint max-nested-callbacks: 0 */\n    /**\n     * Make exceed date information\n     * @param {number} maxCount - exceed schedule count\n     * @param {Array} eventsInDateRange  - matrix of ScheduleViewModel\n     * @param {Array.<TZDate>} range - date range of one week\n     * @returns {object} exceedDate\n     */\n    getExceedDate: function(maxCount, eventsInDateRange, range) {\n        var exceedDate = {};\n\n        util.forEach(range, function(date) {\n            var ymd = datetime.format(date, 'YYYYMMDD');\n            exceedDate[ymd] = 0;\n        });\n\n        util.forEach(eventsInDateRange, function(matrix) {\n            util.forEach(matrix, function(column) {\n                util.forEach(column, function(viewModel) {\n                    var period;\n                    if (!viewModel || viewModel.top < maxCount) {\n                        return;\n                    }\n\n                    period = datetime.range(\n                        viewModel.getStarts(),\n                        viewModel.getEnds(),\n                        datetime.MILLISECONDS_PER_DAY\n                    );\n\n                    util.forEach(period, function(date) {\n                        var ymd = datetime.format(date, 'YYYYMMDD');\n                        exceedDate[ymd] += 1;\n                    });\n                });\n            });\n        });\n\n        return exceedDate;\n    },\n\n    /**\n     * Exclude overflow schedules from matrices\n     * @param {array} matrices - The matrices for schedule placing.\n     * @param {number} visibleScheduleCount - maximum visible count on panel\n     * @returns {array} - The matrices for schedule placing except overflowed schedules.\n     */\n    excludeExceedSchedules: function(matrices, visibleScheduleCount) {\n        return matrices.map(function(matrix) {\n            return matrix.map(function(row) {\n                if (row.length > visibleScheduleCount) {\n                    return row.filter(function(item) {\n                        return item.top < visibleScheduleCount;\n                    }, this);\n                }\n\n                return row;\n            }, this);\n        }, this);\n    }\n};\n\nmodule.exports = Week;\n","/**\n * @fileoverview Controller mixin for Month View\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\nvar util = require('tui-code-snippet');\nvar array = require('../../common/array'),\n    datetime = require('../../common/datetime'),\n    Collection = require('../../common/collection');\nvar mmax = Math.max;\n\nvar Month = {\n    /**\n     * Filter function for find time schedule\n     * @param {ScheduleViewModel} viewModel - schedule view model\n     * @returns {boolean} whether model is time schedule?\n     */\n    _onlyTimeFilter: function(viewModel) {\n        return !viewModel.model.isAllDay && !viewModel.hasMultiDates;\n    },\n\n    /**\n     * Filter function for find allday schedule\n     * @param {ScheduleViewModel} viewModel - schedule view model\n     * @returns {boolean} whether model is allday schedule?\n     */\n    _onlyAlldayFilter: function(viewModel) {\n        return viewModel.model.isAllDay || viewModel.hasMultiDates;\n    },\n\n    /**\n     * Weight top value +1 for month view render\n     * @param {ScheduleViewModel} viewModel - schedule view model\n     */\n    _weightTopValue: function(viewModel) {\n        viewModel.top = viewModel.top || 0;\n        viewModel.top += 1;\n    },\n\n    /**\n     * Adjust render range to render properly.\n     *\n     * Limit start, end for each allday schedules and expand start, end for\n     * each time schedules\n     * @this Base\n     * @param {TZDate} start - render start date\n     * @param {TZDate} end - render end date\n     * @param {Collection} vColl - view model collection\n     * property.\n     */\n    _adjustRenderRange: function(start, end, vColl) {\n        var ctrlCore = this.Core;\n\n        vColl.each(function(viewModel) {\n            if (viewModel.model.isAllDay || viewModel.hasMultiDates) {\n                ctrlCore.limitRenderRange(start, end, viewModel);\n            }\n        });\n    },\n\n    /**\n     * Get max top index value for allday schedules in specific date (YMD)\n     * @this Base\n     * @param {string} ymd - yyyymmdd formatted value\n     * @param {Collection} vAlldayColl - collection of allday schedules\n     * @returns {number} max top index value in date\n     */\n    _getAlldayMaxTopIndexAtYMD: function(ymd, vAlldayColl) {\n        var dateMatrix = this.dateMatrix,\n            topIndexesInDate = [];\n        util.forEach(dateMatrix[ymd], function(cid) {\n            vAlldayColl.doWhenHas(cid, function(viewModel) {\n                topIndexesInDate.push(viewModel.top);\n            });\n        });\n\n        if (topIndexesInDate.length > 0) {\n            return mmax.apply(null, topIndexesInDate);\n        }\n\n        return 0;\n    },\n\n    /**\n     * Adjust time view model's top index value\n     * @this Base\n     * @param {Collection} vColl - collection of schedules\n     */\n    _adjustTimeTopIndex: function(vColl) {\n        var ctrlMonth = this.Month;\n        var getAlldayMaxTopIndexAtYMD = ctrlMonth._getAlldayMaxTopIndexAtYMD;\n        var vAlldayColl = vColl.find(ctrlMonth._onlyAlldayFilter);\n        var sortedTimeSchedules = vColl.find(ctrlMonth._onlyTimeFilter).sort(array.compare.schedule.asc);\n        var maxIndexInYMD = {};\n\n        sortedTimeSchedules.forEach(function(timeViewModel) {\n            var scheduleYMD = datetime.format(timeViewModel.getStarts(), 'YYYYMMDD');\n            var alldayMaxTopInYMD = maxIndexInYMD[scheduleYMD];\n\n            if (util.isUndefined(alldayMaxTopInYMD)) {\n                alldayMaxTopInYMD = maxIndexInYMD[scheduleYMD] =\n                    getAlldayMaxTopIndexAtYMD(scheduleYMD, vAlldayColl);\n            }\n            maxIndexInYMD[scheduleYMD] = timeViewModel.top =\n                (alldayMaxTopInYMD + 1);\n        });\n    },\n\n    /**\n     * Adjust time view model's top index value\n     * @this Base\n     * @param {Collection} vColl - collection of schedules\n     */\n    _stackTimeFromTop: function(vColl) {\n        var ctrlMonth = this.Month;\n        var vAlldayColl = vColl.find(ctrlMonth._onlyAlldayFilter);\n        var sortedTimeSchedules = vColl.find(ctrlMonth._onlyTimeFilter).sort(array.compare.schedule.asc);\n        var indiceInYMD = {};\n        var dateMatrix = this.dateMatrix;\n\n        sortedTimeSchedules.forEach(function(timeViewModel) {\n            var scheduleYMD = datetime.format(timeViewModel.getStarts(), 'YYYYMMDD');\n            var topArrayInYMD = indiceInYMD[scheduleYMD];\n            var maxTopInYMD;\n            var i;\n\n            if (util.isUndefined(topArrayInYMD)) {\n                topArrayInYMD = indiceInYMD[scheduleYMD] = [];\n                util.forEach(dateMatrix[scheduleYMD], function(cid) {\n                    vAlldayColl.doWhenHas(cid, function(viewModel) {\n                        topArrayInYMD.push(viewModel.top);\n                    });\n                });\n            }\n\n            if (util.inArray(timeViewModel.top, topArrayInYMD) >= 0) {\n                maxTopInYMD = mmax.apply(null, topArrayInYMD) + 1;\n                for (i = 1; i <= maxTopInYMD; i += 1) {\n                    timeViewModel.top = i;\n                    if (util.inArray(timeViewModel.top, topArrayInYMD) < 0) {\n                        break;\n                    }\n                }\n            }\n            topArrayInYMD.push(timeViewModel.top);\n        });\n    },\n\n    /**\n     * Convert multi-date time schedule to all-day schedule\n     * @this Base\n     * @param {Collection} vColl - view model collection\n     * property.\n     */\n    _addMultiDatesInfo: function(vColl) {\n        vColl.each(function(viewModel) {\n            var model = viewModel.model;\n            var start = model.getStarts();\n            var end = model.getEnds();\n\n            viewModel.hasMultiDates = datetime.hasMultiDates(start, end);\n\n            if (!model.isAllDay && viewModel.hasMultiDates) {\n                viewModel.renderStarts = datetime.start(start);\n                viewModel.renderEnds = datetime.renderEnd(start, end);\n            }\n        });\n    },\n\n    /**\n     * Find schedule and get view model for specific month\n     * @this Base\n     * @param {TZDate} start - start date to find schedules\n     * @param {TZDate} end - end date to find schedules\n     * @param {function[]} [andFilters] - optional filters to applying search query\n     * @param {boolean} [alldayFirstMode=false] if true, time schedule is lower than all-day schedule. Or stack schedules from the top.\n     * @returns {object} view model data\n     */\n    findByDateRange: function(start, end, andFilters, alldayFirstMode) {\n        var ctrlCore = this.Core,\n            ctrlMonth = this.Month,\n            filter = ctrlCore.getScheduleInDateRangeFilter(start, end),\n            coll, vColl, vList,\n            collisionGroup,\n            matrices;\n\n        alldayFirstMode = alldayFirstMode || false;\n        andFilters = andFilters || [];\n        filter = Collection.and.apply(null, [filter].concat(andFilters));\n\n        coll = this.schedules.find(filter);\n        vColl = ctrlCore.convertToViewModel(coll);\n        ctrlMonth._addMultiDatesInfo(vColl);\n        ctrlMonth._adjustRenderRange(start, end, vColl);\n        vList = vColl.sort(array.compare.schedule.asc);\n\n        collisionGroup = ctrlCore.getCollisionGroup(vList);\n        matrices = ctrlCore.getMatrices(vColl, collisionGroup);\n        ctrlCore.positionViewModels(start, end, matrices, ctrlMonth._weightTopValue);\n        if (alldayFirstMode) {\n            ctrlMonth._adjustTimeTopIndex(vColl);\n        } else {\n            ctrlMonth._stackTimeFromTop(vColl);\n        }\n\n        return matrices;\n    }\n};\n\nmodule.exports = Month;\n","/**\n * @fileoverview Factory module for WeekView\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\nvar util = require('tui-code-snippet');\nvar config = require('../config');\nvar domutil = require('../common/domutil');\nvar common = require('../common/common');\nvar VLayout = require('../common/vlayout');\nvar reqAnimFrame = require('../common/reqAnimFrame');\nvar Schedule = require('../model/schedule');\n// Parent views\nvar Week = require('../view/week/week');\n\n// Sub views\nvar DayName = require('../view/week/dayname');\nvar DayGrid = require('../view/week/dayGrid');\nvar TimeGrid = require('../view/week/timeGrid');\nvar ScheduleCreationPopup = require('../view/popup/scheduleCreationPopup');\nvar ScheduleDetailPopup = require('../view/popup/scheduleDetailPopup');\n\n// Handlers\nvar DayNameClick = require('../handler/time/clickDayname');\nvar DayGridClick = require('../handler/daygrid/click');\nvar DayGridCreation = require('../handler/daygrid/creation');\nvar DayGridMove = require('../handler/daygrid/move');\nvar DayGridResize = require('../handler/daygrid/resize');\nvar TimeClick = require('../handler/time/click');\nvar TimeCreation = require('../handler/time/creation');\nvar TimeMove = require('../handler/time/move');\nvar TimeResize = require('../handler/time/resize');\n\nvar DAYGRID_HANDLDERS = {\n    'click': DayGridClick,\n    'creation': DayGridCreation,\n    'move': DayGridMove,\n    'resize': DayGridResize\n};\nvar TIMEGRID_HANDLERS = {\n    'click': TimeClick,\n    'creation': TimeCreation,\n    'move': TimeMove,\n    'resize': TimeResize\n};\nvar DEFAULT_PANELS = [\n    {\n        name: 'milestone',\n        type: 'daygrid',\n        minHeight: 20,\n        maxHeight: 80,\n        showExpandableButton: true,\n        maxExpandableHeight: 210,\n        handlers: ['click'],\n        show: true\n    },\n    {\n        name: 'task',\n        type: 'daygrid',\n        minHeight: 40,\n        maxHeight: 120,\n        showExpandableButton: true,\n        maxExpandableHeight: 210,\n        handlers: ['click', 'move'],\n        show: true\n    },\n    {\n        name: 'allday',\n        type: 'daygrid',\n        minHeight: 30,\n        maxHeight: 80,\n        showExpandableButton: true,\n        maxExpandableHeight: 210,\n        handlers: ['click', 'creation', 'move', 'resize'],\n        show: true\n    },\n    {\n        name: 'time',\n        type: 'timegrid',\n        autoHeight: true,\n        handlers: ['click', 'creation', 'move', 'resize'],\n        show: true\n    }\n];\n\n/* eslint-disable complexity*/\nmodule.exports = function(baseController, layoutContainer, dragHandler, options, viewName) {\n    var panels = [],\n        vpanels = [];\n    var weekView, dayNameContainer, dayNameView, vLayoutContainer, vLayout;\n    var createView, onSaveNewSchedule, onSetCalendars, lastVPanel;\n    var detailView, onShowDetailPopup, onDeleteSchedule, onShowEditPopup, onEditSchedule;\n    var taskView = options.taskView;\n    var scheduleView = options.scheduleView;\n    var viewVisibilities = {\n        'milestone': util.isArray(taskView) ? util.inArray('milestone', taskView) >= 0 : taskView,\n        'task': util.isArray(taskView) ? util.inArray('task', taskView) >= 0 : taskView,\n        'allday': util.isArray(scheduleView) ? util.inArray('allday', scheduleView) >= 0 : scheduleView,\n        'time': util.isArray(scheduleView) ? util.inArray('time', scheduleView) >= 0 : scheduleView\n    };\n\n    // Make panels by view sequence and visibilities\n    util.forEach(DEFAULT_PANELS, function(panel) {\n        var name = panel.name;\n\n        panel = util.extend({}, panel);\n        panels.push(panel);\n\n        // Change visibilities\n        panel.show = viewVisibilities[name];\n\n        if (panel.show) {\n            if (vpanels.length) {\n                vpanels.push({\n                    isSplitter: true\n                });\n            }\n            vpanels.push(util.extend({}, panel));\n        }\n    });\n\n    if (vpanels.length) {\n        lastVPanel = vpanels[vpanels.length - 1];\n        lastVPanel.autoHeight = true;\n        lastVPanel.maxHeight = null;\n        lastVPanel.showExpandableButton = false;\n\n        util.forEach(panels, function(panel) {\n            if (panel.name === lastVPanel.name) {\n                panel.showExpandableButton = false;\n\n                return false;\n            }\n\n            return true;\n        });\n    }\n\n    util.extend(options.week, {panels: panels});\n\n    weekView = new Week(null, options.week, layoutContainer, panels, viewName);\n    weekView.handler = {\n        click: {},\n        dayname: {},\n        creation: {},\n        move: {},\n        resize: {}\n    };\n\n    dayNameContainer = domutil.appendHTMLElement('div', weekView.container, config.classname('dayname-layout'));\n\n    /**********\n     * Day name (top row(Mon, Tue, Wed...))\n     **********/\n    dayNameView = new DayName(options, dayNameContainer, baseController.theme);\n    weekView.handler.dayname.date = new DayNameClick(dragHandler, dayNameView, baseController);\n    weekView.addChild(dayNameView);\n\n    /**********\n     * Initialize vertical layout module\n     **********/\n    vLayoutContainer = domutil.appendHTMLElement('div', weekView.container, config.classname('vlayout-area'));\n    vLayoutContainer.style.height = (domutil.getSize(weekView.container)[1] - dayNameView.container.offsetHeight) + 'px';\n\n    vLayout = new VLayout({\n        panels: vpanels,\n        panelHeights: options.week.panelHeights || []\n    }, vLayoutContainer, baseController.theme);\n\n    weekView.vLayout = vLayout;\n\n    util.forEach(panels, function(panel) {\n        var name = panel.name;\n        var handlers = panel.handlers;\n        var view;\n\n        if (!panel.show) {\n            return;\n        }\n\n        if (panel.type === 'daygrid') {\n            /**********\n             * Schedule panel by Grid\n             **********/\n            view = new DayGrid(name, options, vLayout.getPanelByName(panel.name).container, baseController.theme);\n            view.on('afterRender', function(viewModel) {\n                vLayout.getPanelByName(name).setHeight(null, viewModel.height);\n            });\n\n            weekView.addChild(view);\n\n            util.forEach(handlers, function(type) {\n                if (!options.isReadOnly || type === 'click') {\n                    weekView.handler[type][name] =\n                        new DAYGRID_HANDLDERS[type](dragHandler, view, baseController, options);\n                    view.addHandler(type, weekView.handler[type][name], vLayout.getPanelByName(name));\n                }\n            });\n        } else if (panel.type === 'timegrid') {\n            /**********\n             * Schedule panel by TimeGrid\n             **********/\n            view = new TimeGrid(name, options, vLayout.getPanelByName(name).container);\n            weekView.addChild(view);\n            util.forEach(handlers, function(type) {\n                if (!options.isReadOnly || type === 'click') {\n                    weekView.handler[type][name] =\n                        new TIMEGRID_HANDLERS[type](dragHandler, view, baseController, options);\n                }\n            });\n\n            view.on('clickTimezonesCollapsedBtn', function() {\n                var timezonesCollapsed = !weekView.state.timezonesCollapsed;\n\n                weekView.setState({\n                    timezonesCollapsed: timezonesCollapsed\n                });\n                reqAnimFrame.requestAnimFrame(function() {\n                    if (!weekView.invoke('clickTimezonesCollapseBtn', timezonesCollapsed)) {\n                        weekView.render();\n                    }\n                });\n            });\n        }\n    });\n\n    vLayout.on('resize', function() {\n        reqAnimFrame.requestAnimFrame(function() {\n            weekView.render();\n        });\n    });\n\n    // binding create schedules event\n    if (options.useCreationPopup) {\n        createView = new ScheduleCreationPopup(layoutContainer, baseController.calendars, options.usageStatistics);\n\n        onSaveNewSchedule = function(scheduleData) {\n            util.extend(scheduleData, {\n                useCreationPopup: true\n            });\n            if (scheduleData.isAllDay) {\n                weekView.handler.creation.allday.fire('beforeCreateSchedule', scheduleData);\n            } else {\n                weekView.handler.creation.time.fire('beforeCreateSchedule', scheduleData);\n            }\n        };\n        createView.on('beforeCreateSchedule', onSaveNewSchedule);\n    }\n\n    onSetCalendars = function(calendars) {\n        if (createView) {\n            createView.setCalendars(calendars);\n        }\n    };\n\n    baseController.on('setCalendars', onSetCalendars);\n\n    // binding popup for schedule detail\n    if (options.useDetailPopup) {\n        detailView = new ScheduleDetailPopup(layoutContainer, baseController.calendars);\n        onShowDetailPopup = function(eventData) {\n            var scheduleId = eventData.schedule.calendarId;\n            eventData.calendar = common.find(baseController.calendars, function(calendar) {\n                return calendar.id === scheduleId;\n            });\n\n            if (options.isReadOnly) {\n                eventData.schedule = util.extend({}, eventData.schedule, {isReadOnly: true});\n            }\n\n            detailView.render(eventData);\n        };\n        onDeleteSchedule = function(eventData) {\n            if (eventData.isAllDay) {\n                weekView.handler.creation.allday.fire('beforeDeleteSchedule', eventData);\n            } else {\n                weekView.handler.creation.time.fire('beforeDeleteSchedule', eventData);\n            }\n        };\n        onEditSchedule = function(eventData) {\n            if (eventData.isAllDay) {\n                weekView.handler.move.allday.fire('beforeUpdateSchedule', eventData);\n            } else {\n                weekView.handler.move.time.fire('beforeUpdateSchedule', eventData);\n            }\n        };\n\n        util.forEach(weekView.handler.click, function(panel) {\n            panel.on('clickSchedule', onShowDetailPopup);\n        });\n        if (options.useCreationPopup) {\n            onShowEditPopup = function(eventData) {\n                var calendars = baseController.calendars;\n                eventData.isEditMode = true;\n                createView.setCalendars(calendars);\n                createView.render(eventData);\n            };\n            createView.on('beforeUpdateSchedule', onEditSchedule);\n            detailView.on('beforeUpdateSchedule', onShowEditPopup);\n        } else {\n            detailView.on('beforeUpdateSchedule', onEditSchedule);\n        }\n        detailView.on('beforeDeleteSchedule', onDeleteSchedule);\n    }\n\n    weekView.on('afterRender', function() {\n        vLayout.refresh();\n    });\n\n    // add controller\n    weekView.controller = baseController.Week;\n\n    // add destroy\n    weekView._beforeDestroy = function() {\n        util.forEach(weekView.handler, function(type) {\n            util.forEach(type, function(handler) {\n                handler.off();\n                handler.destroy();\n            });\n        });\n\n        if (options.useCreationPopup) {\n            createView.off('beforeCreateSchedule', onSaveNewSchedule);\n            createView.destroy();\n        }\n\n        if (options.useDetailPopup) {\n            detailView.off('beforeDeleteSchedule', onDeleteSchedule);\n            detailView.destroy();\n        }\n\n        weekView.off();\n    };\n\n    return {\n        view: weekView,\n        refresh: function() {\n            var weekViewHeight = weekView.getViewBound().height,\n                daynameViewHeight = domutil.getBCRect(\n                    dayNameView.container\n                ).height;\n\n            vLayout.container.style.height =\n                weekViewHeight - daynameViewHeight + 'px';\n            vLayout.refresh();\n        },\n        scrollToNow: function() {\n            weekView.children.each(function(childView) {\n                if (childView.scrollToNow) {\n                    childView.scrollToNow();\n                }\n            });\n        },\n        openCreationPopup: function(schedule) {\n            if (createView) {\n                if (schedule.isAllDay) {\n                    weekView.handler.creation.allday.invokeCreationClick(Schedule.create(schedule));\n                } else {\n                    weekView.handler.creation.time.invokeCreationClick(Schedule.create(schedule));\n                }\n            }\n        },\n        showCreationPopup: function(eventData) {\n            if (createView) {\n                createView.setCalendars(baseController.calendars);\n                createView.render(eventData);\n            }\n        }\n    };\n};\n","/**\n * @fileoverview Panel class for VLayout module\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\nvar util = require('tui-code-snippet');\nvar config = require('../config'),\n    common = require('./common'),\n    domutil = require('./domutil'),\n    View = require('../view/view');\n\n/**\n * @constructor\n * @extends {View}\n * @param {object} options - options for VPanel\n *  @param {number} options.index - index of panel in vlayout\n *  @param {number} [options.minHeight=0] - minimum height of panel\n *  @param {number} [options.height] - initial height of panel\n *  @param {boolean} [options.isSplitter=false] - set true then this panel works splitter\n *  @param {boolean} [options.autoHeight=false] - set true then this panel use remain height after other panel resized.\n *  @param {string} [options.className] - additional class name to add element\n * @param {HTMLElement} container - container element\n * @param {Theme} theme - theme instance\n */\nfunction VPanel(options, container, theme) {\n    View.call(this, container);\n\n    /**\n     * @type {object}\n     */\n    this.options = util.extend({\n        index: 0,\n        name: '0',\n        minHeight: 0,\n        maxHeight: null,\n        height: null,\n        isSplitter: false,\n        autoHeight: false,\n        className: ''\n    }, options);\n\n    /**\n     * @type {number}\n     */\n    this.index = this.options.index;\n\n    /**\n     * @type {string}\n     */\n    this.name = this.options.name || String(this.index);\n\n    this.isHeightForcedSet = false;\n\n    /**\n     * @type {Theme}\n     */\n    this.theme = theme;\n\n    this._initPanel(this.options, container);\n}\n\nutil.inherit(VPanel, View);\n\n/**\n * whether this panel is splitter?\n * @returns {boolean} panel is splitter?\n */\nVPanel.prototype.isSplitter = function() {\n    return this.options.isSplitter;\n};\n\n/**\n * set max height of panel\n * @param {number} maxHeight - maxHeight\n */\nVPanel.prototype.setMaxHeight = function(maxHeight) {\n    if (!this.options.autoHeight) {\n        this.options.maxHeight = maxHeight;\n    }\n};\n\n/**\n * set forced height flag\n * @param {boolean} set - enable or not\n */\nVPanel.prototype.setHeightForcedSet = function(set) {\n    this.isHeightForcedSet = set;\n};\n\n/**\n * get forced height flag\n * @returns {boolean} set - enable or not\n */\nVPanel.prototype.getHeightForcedSet = function() {\n    return this.isHeightForcedSet;\n};\n\n/**\n * set height of html element\n * @param {HTMLElement} [container] - container element\n * @param {number} newHeight - height\n * @param {boolean} force - whether ignore max-length\n */\nVPanel.prototype.setHeight = function(container, newHeight, force) {\n    var maxHeight = this.options.maxHeight;\n    var minHeight = this.options.minHeight;\n    var autoHeight = this.options.autoHeight;\n    container = container || this.container;\n\n    // 한번 force 호출이 일어난 이후에는 force 호출만 허용한다\n    if (!force && this.isHeightForcedSet && !autoHeight) {\n        return;\n    }\n\n    if (force) {\n        this.isHeightForcedSet = true;\n    } else if (maxHeight) {\n        newHeight = Math.min(newHeight, maxHeight);\n    }\n    newHeight = Math.max(minHeight, newHeight);\n\n    container.style.height = newHeight + 'px';\n};\n\n/**\n * Calculate new height of panel and remains by supplied height growth\n * @param {number} growth - growth value\n * @returns {number[]} newHeight, remainHeight\n */\nVPanel.prototype.getResizeInfoByGrowth = function(growth) {\n    var height = this.getHeight(),\n        newHeight = height + growth,\n        resizeTo = Math.max(0, newHeight, this.options.minHeight);\n\n    return [resizeTo, height - resizeTo];\n};\n\n/**\n * get outer height of panel element\n * @returns {number} outer height of panel element\n */\nVPanel.prototype.getHeight = function() {\n    return domutil.getSize(this.container)[1];\n};\n\n/**\n * add design class to panel element\n * @param {string} className - classname string\n */\nVPanel.prototype.addClass = function(className) {\n    domutil.addClass(this.container, className);\n};\n\n/**\n * remove design class to panel element\n * @param {string} className - classname string\n */\nVPanel.prototype.removeClass = function(className) {\n    domutil.removeClass(this.container, className);\n};\n\n/**\n * initialize panel element\n * @param {PanelOptions} options - options for panel\n * @param {HTMLDivElement} container - panel element\n */\nVPanel.prototype._initPanel = function(options, container) {\n    var height;\n\n    domutil.setData(container, 'panelIndex', options.index);\n\n    if (options.isSplitter) {\n        domutil.addClass(container, config.classname('splitter'));\n        this.applyTheme();\n\n        return;\n    }\n\n    if (options.className) {\n        domutil.addClass(container, options.className);\n    }\n\n    if (options.autoHeight) {\n        domutil.setData(container, 'autoHeight', true);\n    } else {\n        height = common.limit(options.height || 0,\n            [options.minHeight],\n            [options.maxHeight || options.height]\n        );\n\n        options.height = height;\n        this.setHeight(container, height);\n    }\n};\n\nVPanel.prototype.applyTheme = function() {\n    var style = this.container.style;\n    var theme = this.theme;\n\n    if (!theme) {\n        return;\n    }\n\n    style.borderTop = theme.week.vpanelSplitter.border || theme.common.border;\n    style.borderBottom = theme.week.vpanelSplitter.border || theme.common.border;\n    style.height = theme.week.vpanelSplitter.height;\n};\n\nmodule.exports = VPanel;\n","/**\n * @fileoverview View of days UI.\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\nvar util = require('tui-code-snippet');\nvar config = require('../../config');\nvar domutil = require('../../common/domutil');\nvar datetime = require('../../common/datetime');\nvar TZDate = require('../../common/timezone').Date;\nvar View = require('../view');\n\n/**\n * @constructor\n * @param {Base.Week} controller The controller mixin part.\n * @param {object} options View options\n * @param {string} [options.renderStartDate] Start date of render.\n *  if not supplied then use -3d from today. YYYY-MM-DD format.\n * @param {string} [options.renderEndDate] End date of render.\n *  if not supplied then use +3d from today. YYYY-MM-DD format.\n * @param {string} [options.cssPrefix] - CSS classname prefix\n * @param {HTMLElement} container The element to use container for this view.\n * @param {object} panels - schedule panels like 'milestone', 'task', 'allday', 'time'\n * @param {string} viewName - 'week', 'day'\n * @extends {View}\n */\nfunction Week(controller, options, container, panels, viewName) {\n    var range;\n\n    container = domutil.appendHTMLElement('div', container);\n\n    View.call(this, container);\n\n    domutil.addClass(container, config.classname('week-container'));\n\n    range = this._getRenderDateRange(new TZDate());\n\n    /**\n     * @type {object} Options for view.\n     */\n    this.options = util.extend({\n        scheduleFilter: [function(schedule) {\n            return Boolean(schedule.isVisible);\n        }],\n        renderStartDate: datetime.format(range.start, 'YYYY-MM-DD'),\n        renderEndDate: datetime.format(range.end, 'YYYY-MM-DD'),\n        narrowWeekend: false,\n        startDayOfWeek: 0,\n        workweek: false,\n        showTimezoneCollapseButton: false,\n        timezonesCollapsed: false,\n        hourStart: 0,\n        hourEnd: 24\n    }, options);\n\n    /**\n     * Week controller mixin.\n     * @type {Base.Week}\n     */\n    this.controller = controller;\n\n    /**\n     * Schedule Panels\n     * @type {Array.<object>}\n     */\n    this.panels = panels;\n\n    /**\n     * Week view states\n     * @type {object}\n     */\n    this.state = {\n        timezonesCollapsed: this.options.timezonesCollapsed\n    };\n\n    if (viewName === 'day') {\n        _disableDayOptions(this.options);\n    }\n}\n\nutil.inherit(Week, View);\n\n/**********\n * Override props\n **********/\n\n/**\n * Render each child view with schedules in ranges.\n * @fires Week#afterRender\n * @override\n */\nWeek.prototype.render = function() {\n    var self = this,\n        options = this.options,\n        scheduleFilter = options.scheduleFilter,\n        narrowWeekend = options.narrowWeekend,\n        startDayOfWeek = options.startDayOfWeek,\n        workweek = options.workweek,\n        theme = this.controller.theme || {},\n        state = this.state;\n    var renderStartDate, renderEndDate, schedulesInDateRange, viewModel, grids, range;\n\n    renderStartDate = new TZDate(options.renderStartDate);\n    renderEndDate = new TZDate(options.renderEndDate);\n\n    range = datetime.range(\n        datetime.start(renderStartDate),\n        datetime.end(renderEndDate),\n        datetime.MILLISECONDS_PER_DAY\n    );\n\n    if (options.workweek && datetime.compare(renderStartDate, renderEndDate)) {\n        range = util.filter(range, function(date) {\n            return !datetime.isWeekend(date.getDay());\n        });\n\n        renderStartDate = range[0];\n        renderEndDate = range[range.length - 1];\n    }\n\n    schedulesInDateRange = this.controller.findByDateRange(\n        datetime.start(renderStartDate),\n        datetime.end(renderEndDate),\n        this.panels,\n        scheduleFilter,\n        this.options\n    );\n\n    grids = datetime.getGridLeftAndWidth(\n        range.length,\n        narrowWeekend,\n        startDayOfWeek,\n        workweek\n    );\n\n    viewModel = {\n        schedulesInDateRange: schedulesInDateRange,\n        renderStartDate: renderStartDate,\n        renderEndDate: renderEndDate,\n        grids: grids,\n        range: range,\n        theme: theme,\n        state: state\n    };\n\n    this.children.each(function(childView) {\n        var matrices;\n        var viewName = util.pick(childView.options, 'viewName');\n        childView.render(viewModel);\n\n        if (viewName) {\n            matrices = viewModel.schedulesInDateRange[viewName]; // DayGrid limits schedule count by visibleScheduleCount after rendering it.\n\n            if (util.isArray(matrices)) {\n                self._invokeAfterRenderSchedule(matrices);\n            } else {\n                util.forEach(matrices, function(matricesOfDay) {\n                    self._invokeAfterRenderSchedule(matricesOfDay);\n                });\n            }\n        }\n    });\n\n    /**\n     * @event Week#afterRender\n     */\n    this.fire('afterRender');\n};\n\n/**\n * Fire 'afterRenderSchedule' event\n * @param {Array} matrices - schedule matrices from view model\n * @fires Week#afterRenderSchedule\n */\nWeek.prototype._invokeAfterRenderSchedule = function(matrices) {\n    var self = this;\n    util.forEachArray(matrices, function(matrix) {\n        util.forEachArray(matrix, function(column) {\n            util.forEachArray(column, function(scheduleViewModel) {\n                if (scheduleViewModel) {\n                    /**\n                     * @event Week#afterRenderSchedule\n                     */\n                    self.fire('afterRenderSchedule', {schedule: scheduleViewModel.model});\n                }\n            });\n        });\n    });\n};\n\n/**********\n * Prototype props\n **********/\n\nWeek.prototype.viewName = 'week';\n\n/**\n * Calculate default render date range from supplied date.\n * @param {Date} baseDate base date.\n * @returns {object} date range.\n */\nWeek.prototype._getRenderDateRange = function(baseDate) {\n    var base = datetime.start(baseDate),\n        start = new TZDate(Number(base)),\n        end = new TZDate(Number(base));\n\n    start.setDate(start.getDate() - 3);\n    end.setDate(end.getDate() + 3);\n\n    return {\n        start: start,\n        end: end\n    };\n};\n\n/**\n * disable options for day view\n * @param {WeekOptions} options - week options to disable\n */\nfunction _disableDayOptions(options) {\n    options.workweek = false;\n}\n\nutil.CustomEvents.mixin(Week);\n\nmodule.exports = Week;\n","/**\n * @fileoverview View for rendering daynames\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\nvar util = require('tui-code-snippet');\nvar config = require('../../config');\nvar common = require('../../common/common');\nvar datetime = require('../../common/datetime');\nvar TZDate = require('../../common/timezone').Date;\nvar domutil = require('../../common/domutil');\nvar View = require('../view');\nvar daynameTmpl = require('../template/week/daynames.hbs');\n\n/**\n * @constructor\n * @param {object} options - options for dayname view\n * @param {HTMLElement} container Container element to use.\n * @param {Theme} theme - theme instance\n * @extends {View}\n */\nfunction DayName(options, container, theme) {\n    container = domutil.appendHTMLElement(\n        'div',\n        container,\n        config.classname('dayname-container')\n    );\n\n    this.options = util.extend({\n        daynames: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n        timezones: options.timezones\n    }, options.week);\n\n    /**\n     * @type {Theme}\n     */\n    this.theme = theme;\n\n    View.call(this, container);\n\n    this.applyTheme();\n}\n\nutil.inherit(DayName, View);\n\n/**\n * Get default viewmodels.\n * @param {Date} start The date of start render\n * @param {Date} end The end of end render\n * @param {object} grids grid data(width, left, day)\n * @returns {array} viewmodel.\n */\nDayName.prototype._getBaseViewModel = function(start, end, grids) {\n    var daynames = this.options.daynames,\n        theme = this.theme,\n        now = new TZDate().toLocalTime(),\n        viewModel;\n\n    viewModel = util.map(datetime.range(\n        datetime.start(start),\n        datetime.end(end),\n        datetime.MILLISECONDS_PER_DAY\n    ), function(d, i) {\n        var day = d.getDay();\n        var isToday = datetime.isSameDate(d, now);\n        var isPastDay = d < now && !isToday;\n\n        return {\n            day: day,\n            dayName: daynames[day],\n            isToday: isToday,\n            date: d.getDate(),\n            left: grids[i] ? grids[i].left : 0,\n            width: grids[i] ? grids[i].width : 0,\n            renderDate: datetime.format(d, 'YYYY-MM-DD'),\n            color: this._getDayNameColor(theme, day, isToday, isPastDay)\n        };\n    }, this);\n\n    return viewModel;\n};\n\n/**\n * @override\n * @param {object} viewModel View model from parent (WeekView)\n */\nDayName.prototype.render = function(viewModel) {\n    var dayNames = this._getBaseViewModel(\n        viewModel.renderStartDate,\n        viewModel.renderEndDate,\n        viewModel.grids\n    );\n    var timezonesCollapsed = viewModel.state.timezonesCollapsed;\n    var styles = this._getStyles(this.theme, timezonesCollapsed);\n    var baseViewModel = util.extend({}, {\n        dayNames: dayNames,\n        styles: styles\n    });\n\n    this.container.innerHTML = daynameTmpl(baseViewModel);\n};\n\n/**\n * Get a day name color\n * @param {Theme} theme - theme instance\n * @param {number} day - day number\n * @param {boolean} isToday - today flag\n * @param {boolean} isPastDay - is past day flag\n * @returns {string} style - color style\n */\nDayName.prototype._getDayNameColor = function(theme, day, isToday, isPastDay) {\n    var color = '';\n\n    if (theme) {\n        if (day === 0) {\n            color = theme.common.holiday.color;\n        } else if (isPastDay) {\n            color = theme.week.pastDay.color || theme.common.dayname.color;\n        } else if (day === 6) {\n            color = theme.common.saturday.color;\n        } else if (isToday) {\n            color = theme.week.today.color || theme.common.today.color;\n        } else {\n            color = theme.common.dayname.color;\n        }\n    }\n\n    return color;\n};\n\n/**\n * Get the styles from theme\n * @param {Theme} theme - theme instance\n * @param {boolean} timezonesCollapsed - multiple timezones are collapsed.\n * @returns {object} styles - styles object\n */\nDayName.prototype._getStyles = function(theme, timezonesCollapsed) {\n    var styles = {};\n    var timezonesLength = this.options.timezones.length;\n    var collapsed = timezonesCollapsed;\n    var numberAndUnit;\n\n    if (theme) {\n        styles.borderTop = theme.week.dayname.borderTop || theme.common.border;\n        styles.borderBottom = theme.week.dayname.borderBottom || theme.common.border;\n        styles.borderLeft = theme.week.dayname.borderLeft || theme.common.border;\n        styles.paddingLeft = theme.week.dayname.paddingLeft;\n        styles.backgroundColor = theme.week.dayname.backgroundColor;\n        styles.height = theme.week.dayname.height;\n        styles.textAlign = theme.week.dayname.textAlign;\n        styles.marginLeft = theme.week.daygridLeft.width;\n\n        if (!collapsed && timezonesLength > 1) {\n            numberAndUnit = common.parseUnit(styles.marginLeft);\n            styles.marginLeft = (numberAndUnit[0] * timezonesLength) + numberAndUnit[1];\n        }\n    }\n\n    return styles;\n};\n\nDayName.prototype.applyTheme = function() {\n    var styles = this._getStyles(this.theme);\n    var style = this.container.style;\n\n    style.borderTop = styles.borderTop;\n    style.borderBottom = styles.borderBottom;\n    style.height = styles.height;\n    style.backgroundColor = styles.backgroundColor;\n    style.textAlign = styles.textAlign;\n\n    return style;\n};\n\nmodule.exports = DayName;\n","var Handlebars = require('/Users/nhnent/Jodeng/workspace/Work/tui.calendar-new/node_modules/handlebars/runtime.js');\nmodule.exports = (Handlebars['default'] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data) {\n    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, alias5=container.lambda, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"<div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":3,\"column\":12},\"end\":{\"line\":3,\"column\":26}}}) : helper)))\n    + \"dayname \"\n    + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"isToday\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(2, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":3,\"column\":34},\"end\":{\"line\":3,\"column\":75}}})) != null ? stack1 : \"\")\n    + \" \"\n    + alias4((lookupProperty(helpers,\"holiday\")||(depth0 && lookupProperty(depth0,\"holiday\"))||alias2).call(alias1,(depth0 != null ? lookupProperty(depth0,\"day\") : depth0),{\"name\":\"holiday\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":3,\"column\":76},\"end\":{\"line\":3,\"column\":91}}}))\n    + \"\\\"\\n     data-date=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"renderDate\") || (depth0 != null ? lookupProperty(depth0,\"renderDate\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"renderDate\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":4,\"column\":16},\"end\":{\"line\":4,\"column\":30}}}) : helper)))\n    + \"\\\"\\n     style=\\\"\"\n    + alias4((lookupProperty(helpers,\"common-width\")||(depth0 && lookupProperty(depth0,\"common-width\"))||alias2).call(alias1,(depth0 != null ? lookupProperty(depth0,\"width\") : depth0),{\"name\":\"common-width\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":5,\"column\":12},\"end\":{\"line\":5,\"column\":34}}}))\n    + \";left:\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"left\") || (depth0 != null ? lookupProperty(depth0,\"left\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"left\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":5,\"column\":40},\"end\":{\"line\":5,\"column\":48}}}) : helper)))\n    + \"%; line-height: \"\n    + alias4(alias5(((stack1 = ((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"styles\"))) && lookupProperty(stack1,\"height\")), depth0))\n    + \"; border-left: \"\n    + alias4(alias5(((stack1 = ((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"styles\"))) && lookupProperty(stack1,\"borderLeft\")), depth0))\n    + \"; padding-left: \"\n    + alias4(alias5(((stack1 = ((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"styles\"))) && lookupProperty(stack1,\"paddingLeft\")), depth0))\n    + \";\\\">\\n    <span class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":6,\"column\":17},\"end\":{\"line\":6,\"column\":31}}}) : helper)))\n    + \"dayname-date-area\\\" style=\\\"color: \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"color\") || (depth0 != null ? lookupProperty(depth0,\"color\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"color\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":6,\"column\":64},\"end\":{\"line\":6,\"column\":73}}}) : helper)))\n    + \";\\\">\\n        \"\n    + ((stack1 = (lookupProperty(helpers,\"weekDayname-tmpl\")||(depth0 && lookupProperty(depth0,\"weekDayname-tmpl\"))||alias2).call(alias1,depth0,{\"name\":\"weekDayname-tmpl\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":7,\"column\":8},\"end\":{\"line\":7,\"column\":35}}})) != null ? stack1 : \"\")\n    + \"\\n    </span>\\n</div>\\n\";\n},\"2\":function(container,depth0,helpers,partials,data) {\n    var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return container.escapeExpression(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":3,\"column\":49},\"end\":{\"line\":3,\"column\":63}}}) : helper)))\n    + \"today\";\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"<div class=\\\"\"\n    + alias2(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":1,\"column\":12},\"end\":{\"line\":1,\"column\":26}}}) : helper)))\n    + \"dayname-leftmargin\\\" style=\\\"margin-left: \"\n    + alias2(container.lambda(((stack1 = ((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"styles\"))) && lookupProperty(stack1,\"marginLeft\")), depth0))\n    + \";\\\">\\n\"\n    + ((stack1 = lookupProperty(helpers,\"each\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"dayNames\") : depth0),{\"name\":\"each\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":2,\"column\":0},\"end\":{\"line\":10,\"column\":9}}})) != null ? stack1 : \"\")\n    + \"</div>\\n\";\n},\"useData\":true});","/**\n * @fileoverview DayGrid in weekly view\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\nvar util = require('tui-code-snippet');\nvar config = require('../../config'),\n    common = require('../../common/common'),\n    datetime = require('../../common/datetime'),\n    domutil = require('../../common/domutil'),\n    TZDate = require('../../common/timezone').Date,\n    View = require('../../view/view'),\n    DayGridSchedule = require('./dayGridSchedule'),\n    baseTmpl = require('../template/week/dayGrid.hbs'),\n    reqAnimFrame = require('../../common/reqAnimFrame');\nvar mmax = Math.max,\n    mmin = Math.min;\n\n/**\n * @constructor\n * @extends {Weekday}\n * @param {string} name - view name\n * @param {object} options - options for DayGridSchedule view\n * @param {number} [options.heightPercent] - height percent of view\n * @param {number} [options.containerButtonGutter=8] - free space at bottom to\n *  make create easy.\n * @param {number} [options.scheduleHeight=18] - height of each schedule block.\n * @param {number} [options.scheduleGutter=2] - gutter height of each schedule block.\n * @param {HTMLDIVElement} container - DOM element to use container for this\n *  view.\n * @param {Theme} theme - theme instance\n */\nfunction DayGrid(name, options, container, theme) {\n    container = domutil.appendHTMLElement(\n        'div',\n        container,\n        config.classname('daygrid-layout')\n    );\n    View.call(this, container);\n\n    name = name || 'daygrid';\n\n    this.options = util.extend({\n        viewName: name,\n        daynames: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n        renderStartDate: '',\n        renderEndDate: '',\n        containerBottomGutter: 18,\n        scheduleHeight: parseInt(theme.week.dayGridSchedule.height, 10),\n        scheduleGutter: parseInt(theme.week.dayGridSchedule.marginTop, 10),\n        scheduleContainerTop: 1,\n        timezones: options.timezones,\n        isReadOnly: options.isReadOnly,\n        getViewModelFunc: function(viewModel) {\n            return viewModel.schedulesInDateRange[name];\n        },\n        setViewModelFunc: function(viewModel, matrices) {\n            viewModel.schedulesInDateRange[name] = matrices;\n        }\n    }, options.week);\n\n    this.handler = {};\n    this.vPanel = null;\n\n    this.state.collapsed = true;\n}\n\nutil.inherit(DayGrid, View);\n\n/**\n * @override\n * @param {object} viewModel - schedules view models\n */\nDayGrid.prototype.getBaseViewModel = function(viewModel) {\n    var opt = this.options,\n        daynames = opt.daynames,\n        range = viewModel.range,\n        grids = viewModel.grids,\n        matrices = opt.getViewModelFunc(viewModel),\n        exceedDate = {},\n        panel = getPanel(opt.panels, opt.viewName),\n        panelHeight = this.getViewBound().height,\n        collapsed = this.state.collapsed,\n        heightForcedSet = this.vPanel ? this.vPanel.getHeightForcedSet() : false,\n        timezonesCollapsed = viewModel.state.timezonesCollapsed,\n        styles = this._getStyles(viewModel.theme, timezonesCollapsed);\n\n    var baseViewModel, visibleScheduleCount;\n    var now = new TZDate().toLocalTime();\n\n    if (panel.showExpandableButton) {\n        if (!heightForcedSet) {\n            if (collapsed) {\n                panelHeight = mmax(panelHeight, panel.maxHeight);\n            } else {\n                panelHeight = mmin(panelHeight, panel.maxExpandableHeight);\n            }\n        }\n\n        visibleScheduleCount = Math.floor(panelHeight / (opt.scheduleHeight + opt.scheduleGutter));\n        if (collapsed) {\n            exceedDate = this.parent.controller.getExceedDate(visibleScheduleCount,\n                matrices,\n                viewModel.range\n            );\n            matrices = this.parent.controller.excludeExceedSchedules(matrices, visibleScheduleCount);\n            opt.setViewModelFunc(viewModel, matrices);\n        }\n    }\n\n    baseViewModel = {\n        viewName: opt.viewName,\n        range: range,\n        grids: grids,\n        days: util.map(viewModel.range, function(d, index) {\n            var day = d.getDay();\n            var ymd = datetime.format(d, 'YYYYMMDD');\n            var isToday = datetime.isSameDate(now, d);\n\n            return {\n                day: day,\n                dayName: daynames[day],\n                isToday: isToday,\n                date: d.getDate(),\n                renderDate: datetime.format(d, 'YYYY-MM-DD'),\n                hiddenSchedules: exceedDate[ymd] || 0,\n                width: grids[index] ? grids[index].width : 0,\n                left: grids[index] ? grids[index].left : 0,\n                backgroundColor: viewModel.range.length > 1 ?\n                    getWeekBackgroundColor(day, isToday, styles) : styles.backgroundColor\n            };\n        }),\n        exceedDate: exceedDate,\n        showExpandableButton: panel.showExpandableButton,\n        collapsed: collapsed,\n        collapseBtnIndex: this.state.clickedExpandBtnIndex,\n        styles: styles\n    };\n\n    return baseViewModel;\n};\n\n/**\n * @override\n * @param {object} viewModel - schedules view models\n */\nDayGrid.prototype.render = function(viewModel) {\n    var opt = this.options,\n        container = this.container,\n        baseViewModel = this.getBaseViewModel(viewModel),\n        scheduleContainerTop = this.options.scheduleContainerTop;\n    var dayGridSchedule;\n\n    container.innerHTML = baseTmpl(baseViewModel);\n\n    this.children.clear();\n\n    dayGridSchedule = new DayGridSchedule(\n        opt,\n        domutil.find(config.classname('.container'), container)\n    );\n    this.addChild(dayGridSchedule);\n\n    dayGridSchedule.on('afterRender', function(weekdayViewModel) {\n        baseViewModel.height = weekdayViewModel.minHeight + scheduleContainerTop;\n    });\n\n    this.children.each(function(childView) {\n        childView.render(viewModel);\n    }, this);\n\n    this.fire('afterRender', baseViewModel);\n};\n\nDayGrid.prototype._beforeDestroy = function() {\n};\n\nDayGrid.prototype.addHandler = function(type, handler, vPanel) {\n    var self = this;\n\n    this.handler[type] = handler;\n    this.vPanel = vPanel;\n\n    if (type === 'click') {\n        handler.on('expand', function() {\n            self.setState({\n                collapsed: false\n            });\n        }, this);\n        handler.on('collapse', function() {\n            self.setState({\n                collapsed: true\n            });\n        }, this);\n    }\n};\n\nDayGrid.prototype._expand = function() {\n    reqAnimFrame.requestAnimFrame(function() {\n        var vPanel = this.vPanel;\n        var opt = this.options;\n        var panel = getPanel(opt.panels, opt.viewName);\n\n        vPanel.setMaxHeight(panel.maxExpandableHeight);\n        vPanel.setHeightForcedSet(false);\n        vPanel.setHeight(null, panel.maxExpandableHeight);\n\n        if (this.parent) {\n            this.parent.render();\n        }\n    }, this);\n};\n\nDayGrid.prototype._collapse = function() {\n    reqAnimFrame.requestAnimFrame(function() {\n        var vPanel = this.vPanel;\n        var opt = this.options;\n        var panel = getPanel(opt.panels, opt.viewName);\n\n        vPanel.setMaxHeight(panel.maxHeight);\n        vPanel.setHeightForcedSet(false);\n        vPanel.setHeight(null, panel.minHeight);\n\n        if (this.parent) {\n            this.parent.render();\n        }\n    }, this);\n};\n\n/**\n * set state\n * @param {object} state - state\n */\nDayGrid.prototype.setState = function(state) {\n    var collapsed = this.state.collapsed;\n    View.prototype.setState.call(this, state);\n\n    if (this.state.collapsed === collapsed) {\n        return;\n    }\n\n    if (this.state.collapsed) {\n        this._collapse();\n    } else {\n        this._expand();\n    }\n};\n\n/**\n * Get the styles from theme\n * @param {Theme} theme - theme instance\n * @param {boolean} timezonesCollapsed - multiple timezones are collapsed.\n * @returns {object} styles - styles object\n */\nDayGrid.prototype._getStyles = function(theme, timezonesCollapsed) {\n    var styles = {};\n    var timezonesLength = this.options.timezones.length;\n    var collapsed = timezonesCollapsed;\n    var numberAndUnit;\n\n    if (theme) {\n        styles.borderRight = theme.week.daygrid.borderRight || theme.common.border;\n        styles.todayBackgroundColor = theme.week.today.backgroundColor;\n        styles.weekendBackgroundColor = theme.week.weekend.backgroundColor;\n        styles.backgroundColor = theme.week.daygrid.backgroundColor;\n        styles.leftWidth = theme.week.daygridLeft.width;\n        styles.leftBackgroundColor = theme.week.daygridLeft.backgroundColor;\n        styles.leftPaddingRight = theme.week.daygridLeft.paddingRight;\n        styles.leftBorderRight = theme.week.daygridLeft.borderRight;\n\n        if (!collapsed && timezonesLength > 1) {\n            numberAndUnit = common.parseUnit(styles.leftWidth);\n            styles.leftWidth = (numberAndUnit[0] * timezonesLength) + numberAndUnit[1];\n        }\n    }\n\n    return styles;\n};\n\n/**\n * Get a background color based on day.\n * @param {number} day - day number\n * @param {boolean} isToday - today flag\n * @param {object} styles - style object\n * @returns {string} backgroundColor\n */\nfunction getWeekBackgroundColor(day, isToday, styles) {\n    var backgroundColor = '';\n\n    if (day === 0 || day === 6) {\n        backgroundColor = styles.weekendBackgroundColor;\n    } else if (isToday) {\n        backgroundColor = styles.todayBackgroundColor;\n    } else {\n        backgroundColor = styles.backgroundColor;\n    }\n\n    return backgroundColor;\n}\n\n/**\n * get a panel infomation\n * @param {Array.<object[]>} panels - panel infomations\n * @param {string} name - panel name\n * @returns {object} panel information\n */\nfunction getPanel(panels, name) {\n    var found;\n\n    util.forEach(panels, function(panel) {\n        if (panel.name === name) {\n            found = panel;\n        }\n    });\n\n    return found;\n}\n\nmodule.exports = DayGrid;\n","/**\n * @fileoverview Weekday view for week\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\nvar util = require('tui-code-snippet');\nvar Weekday = require('../weekday'),\n    tmpl = require('../template/week/dayGridSchedule.hbs');\nvar mmax = Math.max;\n\n/**\n * @constructor\n * @extends {Weekday}\n * @param {object} options - options for DayGridSchedule view\n * @param {number} [options.containerButtonGutter=8] - free space at bottom to\n *  make create easy.\n * @param {number} [options.scheduleHeight=18] - height of each schedule block.\n * @param {number} [options.scheduleGutter=2] - gutter height of each schedule block.\n * @param {HTMLDIVElement} container - DOM element to use container for this\n *  view.\n */\nfunction DayGridSchedule(options, container) {\n    Weekday.call(this, options, container);\n\n    this.collapsed = true;\n}\n\nutil.inherit(DayGridSchedule, Weekday);\n\n/**\n * Render Weekday view\n * @override\n */\nDayGridSchedule.prototype.render = function(viewModel) {\n    var container = this.container;\n    var baseViewModel;\n\n    baseViewModel = this.getBaseViewModel(viewModel);\n\n    container.innerHTML = tmpl(baseViewModel);\n\n    this.fire('afterRender', baseViewModel);\n};\n\n/**\n * returns maximum schedule count in day\n * @param {array} matrices - The matrices for schedule placing.\n * @returns {number} maximum schedule count in day\n */\nDayGridSchedule.prototype._getMaxScheduleInDay = function(matrices) {\n    return mmax.apply(\n        null,\n        util.map(matrices, function(matrix) {\n            return Math.max.apply(null, util.map(matrix, function(row) {\n                return row.length;\n            }));\n        })\n    );\n};\n\n/**\n * returns minimum height for container.\n * @param {number} maxScheduleInDay - max schedule blocks in one day\n * @returns {number}\n */\nDayGridSchedule.prototype._getMinHeight = function(maxScheduleInDay) {\n    var opt = this.options;\n    var contentHeight = (maxScheduleInDay * opt.scheduleHeight)\n        + ((maxScheduleInDay - 1) * opt.scheduleGutter);\n\n    // if (this.collapsed && this.aboutMe.maxHeight >= contentHeight + opt.containerBottomGutter) {\n    //     contentHeight += opt.containerBottomGutter;\n    // }\n\n    return contentHeight;\n};\n\n/**\n * @override\n * @param {object} viewModel - schedules view models\n */\nDayGridSchedule.prototype.getBaseViewModel = function(viewModel) {\n    var opt = this.options;\n    var matrices = opt.getViewModelFunc(viewModel);\n    var maxScheduleInDay = this._getMaxScheduleInDay(matrices);\n    var baseViewModel;\n    var styles = this._getStyles(viewModel.theme);\n\n    baseViewModel = Weekday.prototype.getBaseViewModel.call(this, viewModel);\n\n    baseViewModel = util.extend({\n        minHeight: this._getMinHeight(maxScheduleInDay),\n        matrices: matrices,\n        scheduleContainerTop: this.options.scheduleContainerTop,\n        maxScheduleInDay: maxScheduleInDay,\n        isReadOnly: opt.isReadOnly,\n        styles: styles\n    }, baseViewModel);\n\n    return baseViewModel;\n};\n\n/**\n * Get the styles from theme\n * @param {Theme} theme - theme instance\n * @returns {object} styles - styles object\n */\nDayGridSchedule.prototype._getStyles = function(theme) {\n    var styles = {};\n\n    if (theme) {\n        styles.borderRadius = theme.week.dayGridSchedule.borderRadius;\n    }\n\n    return styles;\n};\n\nmodule.exports = DayGridSchedule;\n","var Handlebars = require('/Users/nhnent/Jodeng/workspace/Work/tui.calendar-new/node_modules/handlebars/runtime.js');\nmodule.exports = (Handlebars['default'] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data) {\n    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return ((stack1 = lookupProperty(helpers,\"each\").call(depth0 != null ? depth0 : (container.nullContext || {}),depth0,{\"name\":\"each\",\"hash\":{},\"fn\":container.program(2, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":3,\"column\":4},\"end\":{\"line\":27,\"column\":15}}})) != null ? stack1 : \"\");\n},\"2\":function(container,depth0,helpers,partials,data) {\n    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"\\n    \"\n    + ((stack1 = lookupProperty(helpers,\"each\").call(depth0 != null ? depth0 : (container.nullContext || {}),depth0,{\"name\":\"each\",\"hash\":{},\"fn\":container.program(3, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":4,\"column\":4},\"end\":{\"line\":26,\"column\":15}}})) != null ? stack1 : \"\");\n},\"3\":function(container,depth0,helpers,partials,data) {\n    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"\\n    \"\n    + ((stack1 = lookupProperty(helpers,\"if\").call(depth0 != null ? depth0 : (container.nullContext || {}),depth0,{\"name\":\"if\",\"hash\":{},\"fn\":container.program(4, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":5,\"column\":4},\"end\":{\"line\":25,\"column\":13}}})) != null ? stack1 : \"\");\n},\"4\":function(container,depth0,helpers,partials,data) {\n    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=container.escapeExpression, alias4=\"function\", alias5=container.lambda, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"\\n    <div data-id=\\\"\"\n    + alias3((lookupProperty(helpers,\"stamp\")||(depth0 && lookupProperty(depth0,\"stamp\"))||alias2).call(alias1,(depth0 != null ? lookupProperty(depth0,\"model\") : depth0),{\"name\":\"stamp\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":6,\"column\":18},\"end\":{\"line\":6,\"column\":33}}}))\n    + \"\\\"\\n        class=\\\"\"\n    + alias3(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias4 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":7,\"column\":15},\"end\":{\"line\":7,\"column\":29}}}) : helper)))\n    + \"weekday-schedule-block\\n            \"\n    + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"exceedLeft\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(5, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":8,\"column\":12},\"end\":{\"line\":8,\"column\":71}}})) != null ? stack1 : \"\")\n    + \"\\n            \"\n    + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"exceedRight\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(7, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":9,\"column\":12},\"end\":{\"line\":9,\"column\":73}}})) != null ? stack1 : \"\")\n    + \"\\\"\\n        style=\\\"top:\"\n    + alias3((lookupProperty(helpers,\"multiply\")||(depth0 && lookupProperty(depth0,\"multiply\"))||alias2).call(alias1,(depth0 != null ? lookupProperty(depth0,\"top\") : depth0),((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"scheduleBlockHeight\")),{\"name\":\"multiply\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":10,\"column\":19},\"end\":{\"line\":10,\"column\":61}}}))\n    + \"px;\\n                left:\"\n    + alias3((lookupProperty(helpers,\"grid-left\")||(depth0 && lookupProperty(depth0,\"grid-left\"))||alias2).call(alias1,depth0,((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"dates\")),{\"name\":\"grid-left\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":11,\"column\":21},\"end\":{\"line\":11,\"column\":51}}}))\n    + \"%;\\n                width:\"\n    + alias3((lookupProperty(helpers,\"grid-width\")||(depth0 && lookupProperty(depth0,\"grid-width\"))||alias2).call(alias1,depth0,((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"dates\")),{\"name\":\"grid-width\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":12,\"column\":22},\"end\":{\"line\":12,\"column\":53}}}))\n    + \"%\\\">\\n        <div data-schedule-id=\\\"\"\n    + alias3(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"id\") : stack1), depth0))\n    + \"\\\" data-calendar-id=\\\"\"\n    + alias3(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"calendarId\") : stack1), depth0))\n    + \"\\\" class=\\\"\"\n    + alias3(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias4 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":13,\"column\":92},\"end\":{\"line\":13,\"column\":106}}}) : helper)))\n    + \"weekday-schedule \"\n    + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"isFocused\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(9, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":13,\"column\":123},\"end\":{\"line\":13,\"column\":192}}})) != null ? stack1 : \"\")\n    + \"\\\"\\n            style=\\\"height:\"\n    + alias3(alias5(((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"scheduleHeight\")), depth0))\n    + \"px; line-height:\"\n    + alias3(alias5(((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"scheduleHeight\")), depth0))\n    + \"px; border-radius: \"\n    + alias3(alias5(((stack1 = ((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"styles\"))) && lookupProperty(stack1,\"borderRadius\")), depth0))\n    + \";\\n\"\n    + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"isFocused\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(11, data, 0),\"inverse\":container.program(13, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":15,\"column\":16},\"end\":{\"line\":19,\"column\":23}}})) != null ? stack1 : \"\")\n    + \"            \"\n    + alias3(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"customStyle\") : stack1), depth0))\n    + \"\\\">\\n            <span class=\\\"\"\n    + alias3(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias4 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":21,\"column\":25},\"end\":{\"line\":21,\"column\":39}}}) : helper)))\n    + \"weekday-schedule-title\\\" title=\\\"\"\n    + alias3(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"title\") : stack1), depth0))\n    + \"\\\">\"\n    + ((stack1 = (lookupProperty(helpers,\"schedule-tmpl\")||(depth0 && lookupProperty(depth0,\"schedule-tmpl\"))||alias2).call(alias1,(depth0 != null ? lookupProperty(depth0,\"model\") : depth0),{\"name\":\"schedule-tmpl\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":21,\"column\":87},\"end\":{\"line\":21,\"column\":112}}})) != null ? stack1 : \"\")\n    + \"</span>\\n            \"\n    + ((stack1 = lookupProperty(helpers,\"unless\").call(alias1,(lookupProperty(helpers,\"or\")||(depth0 && lookupProperty(depth0,\"or\"))||alias2).call(alias1,((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"isReadOnly\")),((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"isReadOnly\") : stack1),{\"name\":\"or\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":22,\"column\":22},\"end\":{\"line\":22,\"column\":60}}}),{\"name\":\"unless\",\"hash\":{},\"fn\":container.program(15, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":22,\"column\":12},\"end\":{\"line\":22,\"column\":193}}})) != null ? stack1 : \"\")\n    + \"\\n        </div>\\n    </div>\\n\";\n},\"5\":function(container,depth0,helpers,partials,data) {\n    var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \" \"\n    + container.escapeExpression(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":8,\"column\":31},\"end\":{\"line\":8,\"column\":45}}}) : helper)))\n    + \"weekday-exceed-left\";\n},\"7\":function(container,depth0,helpers,partials,data) {\n    var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \" \"\n    + container.escapeExpression(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":9,\"column\":32},\"end\":{\"line\":9,\"column\":46}}}) : helper)))\n    + \"weekday-exceed-right\";\n},\"9\":function(container,depth0,helpers,partials,data) {\n    var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return container.escapeExpression(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":13,\"column\":146},\"end\":{\"line\":13,\"column\":160}}}) : helper)))\n    + \"weekday-schedule-focused \";\n},\"11\":function(container,depth0,helpers,partials,data) {\n    var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"                    color: #ffffff; background-color:\"\n    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"color\") : stack1), depth0))\n    + \"; border-color:\"\n    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"color\") : stack1), depth0))\n    + \";\\n\";\n},\"13\":function(container,depth0,helpers,partials,data) {\n    var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"                    color:\"\n    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"color\") : stack1), depth0))\n    + \"; background-color:\"\n    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"bgColor\") : stack1), depth0))\n    + \"; border-color:\"\n    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"borderColor\") : stack1), depth0))\n    + \";\\n\";\n},\"15\":function(container,depth0,helpers,partials,data) {\n    var stack1, helper, alias1=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"<span class=\\\"\"\n    + alias1(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":22,\"column\":75},\"end\":{\"line\":22,\"column\":89}}}) : helper)))\n    + \"weekday-resize-handle handle-y\\\" style=\\\"line-height:\"\n    + alias1(container.lambda(((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"scheduleHeight\")), depth0))\n    + \"px;\\\">&nbsp;</span>\";\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"<div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":1,\"column\":12},\"end\":{\"line\":1,\"column\":26}}}) : helper)))\n    + \"weekday-schedules \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"collapsed\") || (depth0 != null ? lookupProperty(depth0,\"collapsed\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"collapsed\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":1,\"column\":44},\"end\":{\"line\":1,\"column\":57}}}) : helper)))\n    + \"\\\"style=\\\"top:\"\n    + alias4(container.lambda(((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"scheduleContainerTop\")), depth0))\n    + \"px;\\\">\\n\"\n    + ((stack1 = lookupProperty(helpers,\"each\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"matrices\") : depth0),{\"name\":\"each\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":2,\"column\":4},\"end\":{\"line\":28,\"column\":15}}})) != null ? stack1 : \"\")\n    + \"</div>\\n\";\n},\"useData\":true});","var Handlebars = require('/Users/nhnent/Jodeng/workspace/Work/tui.calendar-new/node_modules/handlebars/runtime.js');\nmodule.exports = (Handlebars['default'] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data) {\n    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"<div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":8,\"column\":24},\"end\":{\"line\":8,\"column\":38}}}) : helper)))\n    + \"weekday-grid-line\\\"\\n                style=\\\"left:\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"left\") || (depth0 != null ? lookupProperty(depth0,\"left\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"left\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":9,\"column\":28},\"end\":{\"line\":9,\"column\":36}}}) : helper)))\n    + \"%; width:\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"width\") || (depth0 != null ? lookupProperty(depth0,\"width\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"width\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":9,\"column\":45},\"end\":{\"line\":9,\"column\":54}}}) : helper)))\n    + \"%; background-color: \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"backgroundColor\") || (depth0 != null ? lookupProperty(depth0,\"backgroundColor\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"backgroundColor\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":9,\"column\":75},\"end\":{\"line\":9,\"column\":94}}}) : helper)))\n    + \";\\n\"\n    + ((stack1 = lookupProperty(helpers,\"unless\").call(alias1,(data && lookupProperty(data,\"last\")),{\"name\":\"unless\",\"hash\":{},\"fn\":container.program(2, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":10,\"column\":20},\"end\":{\"line\":12,\"column\":31}}})) != null ? stack1 : \"\")\n    + \"            \\\"></div>\\n\";\n},\"2\":function(container,depth0,helpers,partials,data) {\n    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"                    border-right: \"\n    + container.escapeExpression(container.lambda(((stack1 = ((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"styles\"))) && lookupProperty(stack1,\"borderRight\")), depth0))\n    + \";\\n\";\n},\"4\":function(container,depth0,helpers,partials,data) {\n    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return ((stack1 = lookupProperty(helpers,\"each\").call(depth0 != null ? depth0 : (container.nullContext || {}),(depth0 != null ? lookupProperty(depth0,\"days\") : depth0),{\"name\":\"each\",\"hash\":{},\"fn\":container.program(5, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":17,\"column\":8},\"end\":{\"line\":27,\"column\":19}}})) != null ? stack1 : \"\");\n},\"5\":function(container,depth0,helpers,partials,data) {\n    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return ((stack1 = lookupProperty(helpers,\"if\").call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"collapsed\")),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(6, data, 0),\"inverse\":container.program(9, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":18,\"column\":12},\"end\":{\"line\":26,\"column\":19}}})) != null ? stack1 : \"\");\n},\"6\":function(container,depth0,helpers,partials,data) {\n    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return ((stack1 = lookupProperty(helpers,\"if\").call(depth0 != null ? depth0 : (container.nullContext || {}),(depth0 != null ? lookupProperty(depth0,\"hiddenSchedules\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(7, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":19,\"column\":16},\"end\":{\"line\":21,\"column\":23}}})) != null ? stack1 : \"\");\n},\"7\":function(container,depth0,helpers,partials,data) {\n    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"                    <span class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":20,\"column\":33},\"end\":{\"line\":20,\"column\":47}}}) : helper)))\n    + \"weekday-exceed-in-week\\\" style=\\\"z-index: 1; right:\"\n    + alias4((lookupProperty(helpers,\"getRight\")||(depth0 && lookupProperty(depth0,\"getRight\"))||alias2).call(alias1,(depth0 != null ? lookupProperty(depth0,\"left\") : depth0),(depth0 != null ? lookupProperty(depth0,\"width\") : depth0),{\"name\":\"getRight\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":20,\"column\":96},\"end\":{\"line\":20,\"column\":119}}}))\n    + \"%;\\\" data-index=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"key\") || (data && lookupProperty(data,\"key\"))) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"key\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":20,\"column\":135},\"end\":{\"line\":20,\"column\":143}}}) : helper)))\n    + \"\\\">\"\n    + ((stack1 = (lookupProperty(helpers,\"weekGridFooterExceed-tmpl\")||(depth0 && lookupProperty(depth0,\"weekGridFooterExceed-tmpl\"))||alias2).call(alias1,(depth0 != null ? lookupProperty(depth0,\"hiddenSchedules\") : depth0),{\"name\":\"weekGridFooterExceed-tmpl\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":20,\"column\":145},\"end\":{\"line\":20,\"column\":192}}})) != null ? stack1 : \"\")\n    + \"</span>\\n\";\n},\"9\":function(container,depth0,helpers,partials,data) {\n    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return ((stack1 = (lookupProperty(helpers,\"fi\")||(depth0 && lookupProperty(depth0,\"fi\"))||container.hooks.helperMissing).call(depth0 != null ? depth0 : (container.nullContext || {}),(data && lookupProperty(data,\"key\")),\"===\",((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"collapseBtnIndex\")),{\"name\":\"fi\",\"hash\":{},\"fn\":container.program(10, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":23,\"column\":16},\"end\":{\"line\":25,\"column\":23}}})) != null ? stack1 : \"\");\n},\"10\":function(container,depth0,helpers,partials,data) {\n    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"                    <span class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":24,\"column\":33},\"end\":{\"line\":24,\"column\":47}}}) : helper)))\n    + \"weekday-collapse-btn\\\" style=\\\"z-index: 1; right:\"\n    + alias4((lookupProperty(helpers,\"getRight\")||(depth0 && lookupProperty(depth0,\"getRight\"))||alias2).call(alias1,(depth0 != null ? lookupProperty(depth0,\"left\") : depth0),(depth0 != null ? lookupProperty(depth0,\"width\") : depth0),{\"name\":\"getRight\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":24,\"column\":94},\"end\":{\"line\":24,\"column\":117}}}))\n    + \"%;\\\">\"\n    + ((stack1 = ((helper = (helper = lookupProperty(helpers,\"collapseBtnTitle-tmpl\") || (depth0 != null ? lookupProperty(depth0,\"collapseBtnTitle-tmpl\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"collapseBtnTitle-tmpl\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":24,\"column\":121},\"end\":{\"line\":24,\"column\":148}}}) : helper))) != null ? stack1 : \"\")\n    + \"</span>\\n\";\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, alias5=container.lambda, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"<div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":1,\"column\":12},\"end\":{\"line\":1,\"column\":26}}}) : helper)))\n    + alias4(((helper = (helper = lookupProperty(helpers,\"viewName\") || (depth0 != null ? lookupProperty(depth0,\"viewName\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"viewName\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":1,\"column\":26},\"end\":{\"line\":1,\"column\":38}}}) : helper)))\n    + \"-left \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":1,\"column\":44},\"end\":{\"line\":1,\"column\":58}}}) : helper)))\n    + \"left\\\" style=\\\"border-right: \"\n    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,\"styles\") : depth0)) != null ? lookupProperty(stack1,\"leftBorderRight\") : stack1), depth0))\n    + \"; width: \"\n    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,\"styles\") : depth0)) != null ? lookupProperty(stack1,\"leftWidth\") : stack1), depth0))\n    + \"; background-color: \"\n    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,\"styles\") : depth0)) != null ? lookupProperty(stack1,\"leftBackgroundColor\") : stack1), depth0))\n    + \"; padding-right: \"\n    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,\"styles\") : depth0)) != null ? lookupProperty(stack1,\"leftPaddingRight\") : stack1), depth0))\n    + \";\\\">\\n    \"\n    + ((stack1 = (lookupProperty(helpers,\"dayGridTitle-tmpl\")||(depth0 && lookupProperty(depth0,\"dayGridTitle-tmpl\"))||alias2).call(alias1,(depth0 != null ? lookupProperty(depth0,\"viewName\") : depth0),{\"name\":\"dayGridTitle-tmpl\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":2,\"column\":4},\"end\":{\"line\":2,\"column\":36}}})) != null ? stack1 : \"\")\n    + \"\\n</div>\\n<div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":4,\"column\":12},\"end\":{\"line\":4,\"column\":26}}}) : helper)))\n    + alias4(((helper = (helper = lookupProperty(helpers,\"viewName\") || (depth0 != null ? lookupProperty(depth0,\"viewName\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"viewName\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":4,\"column\":26},\"end\":{\"line\":4,\"column\":38}}}) : helper)))\n    + \"-right \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":4,\"column\":45},\"end\":{\"line\":4,\"column\":59}}}) : helper)))\n    + \"right\\\">\\n    <div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":5,\"column\":16},\"end\":{\"line\":5,\"column\":30}}}) : helper)))\n    + \"container\\\">\\n        <div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":6,\"column\":20},\"end\":{\"line\":6,\"column\":34}}}) : helper)))\n    + \"weekday-grid\\\">\\n\"\n    + ((stack1 = lookupProperty(helpers,\"each\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"days\") : depth0),{\"name\":\"each\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":7,\"column\":8},\"end\":{\"line\":14,\"column\":19}}})) != null ? stack1 : \"\")\n    + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"showExpandableButton\")),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(4, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":16,\"column\":8},\"end\":{\"line\":28,\"column\":15}}})) != null ? stack1 : \"\")\n    + \"        </div>\\n    </div>\\n</div>\\n\";\n},\"useData\":true});","/**\n * @fileoverview View for rendered schedules by times.\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\nvar util = require('tui-code-snippet');\nvar config = require('../../config');\nvar common = require('../../common/common');\nvar domutil = require('../../common/domutil');\nvar domevent = require('../../common/domevent');\nvar datetime = require('../../common/datetime');\nvar Timezone = require('../../common/timezone');\nvar reqAnimFrame = require('../../common/reqAnimFrame');\nvar View = require('../view');\nvar Time = require('./time');\nvar AutoScroll = require('../../common/autoScroll');\nvar mainTmpl = require('../template/week/timeGrid.hbs');\nvar timezoneStickyTmpl = require('../template/week/timezoneSticky.hbs');\nvar timegridCurrentTimeTmpl = require('../template/week/timeGridCurrentTime.hbs');\nvar TZDate = Timezone.Date;\nvar HOURMARKER_REFRESH_INTERVAL = 1000 * 60;\nvar SIXTY_SECONDS = 60;\nvar SIXTY_MINUTES = 60;\n\n/**\n * Returns a list of time labels from start to end.\n * For hidden labels near the current time, set to hidden: true.\n * @param {object} opt - TimeGrid.options\n * @param {boolean} hasHourMarker - Whether the current time is displayed\n * @param {number} timezoneOffset - timezone offset\n * @param {object} styles - styles\n * @returns {Array.<Object>}\n */\nfunction getHoursLabels(opt, hasHourMarker, timezoneOffset, styles) {\n    var hourStart = opt.hourStart;\n    var hourEnd = opt.hourEnd;\n    var renderEndDate = new TZDate(opt.renderEndDate);\n    var shiftByOffset = parseInt(timezoneOffset / SIXTY_MINUTES, 10);\n    var shiftMinutes = Math.abs(timezoneOffset % SIXTY_MINUTES);\n    var now = new TZDate().toLocalTime();\n    var nowMinutes = now.getMinutes();\n    var hoursRange = util.range(0, 24);\n    var nowAroundHours = null;\n    var nowHours, nowHoursIndex;\n    var isNegativeZero = 1 / -Infinity === shiftByOffset;\n\n    if ((shiftByOffset < 0 || isNegativeZero) && shiftMinutes > 0) {\n        shiftByOffset -= 1;\n    }\n\n    // shift the array and take elements between start and end\n    common.shiftArray(hoursRange, shiftByOffset);\n    common.takeArray(hoursRange, hourStart, hourEnd);\n\n    nowHours = common.shiftHours(now.getHours(), shiftByOffset) % 24;\n    nowHoursIndex = util.inArray(nowHours, hoursRange);\n\n    if (hasHourMarker) {\n        if (nowMinutes < 20) {\n            nowAroundHours = nowHours;\n        } else if (nowMinutes > 40) {\n            nowAroundHours = nowHours + 1;\n        }\n\n        if (util.isNumber(nowAroundHours)) {\n            nowAroundHours %= 24;\n        }\n    }\n\n    return util.map(hoursRange, function(hour, index) {\n        var color;\n        var fontWeight;\n        var isPast = (hasHourMarker && index <= nowHoursIndex) ||\n                     (renderEndDate < now && !datetime.isSameDate(renderEndDate, now));\n\n        if (isPast) {\n            // past\n            color = styles.pastTimeColor;\n            fontWeight = styles.pastTimeFontWeight;\n        } else {\n            // future\n            color = styles.futureTimeColor;\n            fontWeight = styles.futureTimeFontWeight;\n        }\n\n        return {\n            hour: hour,\n            minutes: shiftMinutes,\n            hidden: nowAroundHours === hour || index === 0,\n            color: color || '',\n            fontWeight: fontWeight || ''\n        };\n    });\n}\n/**\n * @constructor\n * @extends {View}\n * @param {string} name - view name\n * @param {object} options The object for view customization.\n * @param {string} options.renderStartDate - render start date. YYYY-MM-DD\n * @param {string} options.renderEndDate - render end date. YYYY-MM-DD\n * @param {number} [options.hourStart=0] You can change view's start hours.\n * @param {number} [options.hourEnd=0] You can change view's end hours.\n * @param {HTMLElement} panelElement panel element.\n */\nfunction TimeGrid(name, options, panelElement) {\n    var container = domutil.appendHTMLElement(\n        'div',\n        panelElement,\n        config.classname('timegrid-container')\n    );\n    var stickyContainer = domutil.appendHTMLElement(\n        'div',\n        panelElement,\n        config.classname('timegrid-sticky-container')\n    );\n\n    panelElement.style.position = 'relative'; // for stickyContainer\n\n    name = name || 'time';\n\n    View.call(this, container);\n\n    if (!util.browser.safari) {\n        /**\n         * @type {AutoScroll}\n         */\n        this._autoScroll = new AutoScroll(container);\n    }\n\n    this.stickyContainer = stickyContainer;\n\n    /**\n     * Time view options.\n     * @type {object}\n     */\n    this.options = util.extend({\n        viewName: name,\n        renderStartDate: '',\n        renderEndDate: '',\n        hourStart: 0,\n        hourEnd: 24,\n        timezones: options.timezones,\n        isReadOnly: options.isReadOnly,\n        showTimezoneCollapseButton: false\n    }, options.week);\n\n    if (this.options.timezones.length < 1) {\n        this.options.timezones = [{\n            timezoneOffset: Timezone.getOffset()\n        }];\n    }\n\n    /**\n     * Interval id for hourmarker animation.\n     * @type {number}\n     */\n    this.intervalID = 0;\n\n    /**\n     * timer id for hourmarker initial state\n     * @type {number}\n     */\n    this.timerID = 0;\n\n    /**\n     * requestAnimationFrame unique ID\n     * @type {number}\n     */\n    this.rAnimationFrameID = 0;\n\n    /**\n     * @type {boolean}\n     */\n    this._scrolled = false;\n\n    /**\n     * cache parent's view model\n     * @type {object}\n     */\n    this._cacheParentViewModel = null;\n\n    /**\n     * cache hoursLabels view model to render again TimeGrid\n     * @type {object}\n     */\n    this._cacheHoursLabels = null;\n\n    this.attachEvent();\n}\n\nutil.inherit(TimeGrid, View);\n\n/**********\n * Prototype props\n **********/\n\n/**\n * @type {string}\n */\nTimeGrid.prototype.viewName = 'timegrid';\n\n/**\n * Destroy view.\n * @override\n */\nTimeGrid.prototype._beforeDestroy = function() {\n    clearInterval(this.intervalID);\n    clearTimeout(this.timerID);\n    reqAnimFrame.cancelAnimFrame(this.rAnimationFrameID);\n\n    if (this._autoScroll) {\n        this._autoScroll.destroy();\n    }\n\n    domevent.off(this.stickyContainer, 'click', this._onClickStickyContainer, this);\n\n    this._autoScroll = this.hourmarkers = this.intervalID =\n    this.timerID = this.rAnimationFrameID = this._cacheParentViewModel = this.stickyContainer = null;\n};\n\n/**\n * @param {Date} [time] - date object to convert pixel in grids.\n * use **Date.now()** when not supplied.\n * @returns {number} The pixel value represent current time in grids.\n */\nTimeGrid.prototype._getTopPercentByTime = function(time) {\n    var opt = this.options,\n        raw = datetime.raw(time || new TZDate()),\n        hourLength = util.range(opt.hourStart, opt.hourEnd).length,\n        maxMilliseconds = hourLength * datetime.MILLISECONDS_PER_HOUR,\n        hmsMilliseconds = datetime.millisecondsFrom('hour', raw.h) +\n            datetime.millisecondsFrom('minutes', raw.m) +\n            datetime.millisecondsFrom('seconds', raw.s) +\n            raw.ms,\n        topPercent;\n\n    topPercent = common.ratio(maxMilliseconds, 100, hmsMilliseconds);\n    topPercent -= common.ratio(maxMilliseconds, 100, datetime.millisecondsFrom('hour', opt.hourStart));\n\n    return common.limit(topPercent, [0], [100]);\n};\n\n/**\n * Get Hourmarker viewmodel.\n * @param {TZDate} now - now\n * @param {object} grids grid information(width, left, day)\n * @param {Array.<TZDate>} range render range\n * @returns {object} ViewModel of hourmarker.\n */\nTimeGrid.prototype._getHourmarkerViewModel = function(now, grids, range) {\n    var todaymarkerLeft = -1;\n    var todaymarkerWidth = -1;\n    var hourmarkerTimzones = [];\n    var opt = this.options;\n    var primaryOffset = Timezone.getOffset();\n    var timezones = opt.timezones;\n    var viewModel;\n\n    util.forEach(range, function(date, index) {\n        if (datetime.isSameDate(now, date)) {\n            todaymarkerLeft = grids[index] ? grids[index].left : 0;\n            todaymarkerWidth = grids[index] ? grids[index].width : 0;\n        }\n    });\n\n    util.forEach(timezones, function(timezone) {\n        var timezoneDifference = timezone.timezoneOffset + primaryOffset;\n        var hourmarker = new TZDate(now);\n        var dateDifference;\n\n        hourmarker.setMinutes(hourmarker.getMinutes() + timezoneDifference);\n        dateDifference = datetime.getDateDifference(hourmarker, now);\n\n        hourmarkerTimzones.push({\n            hourmarker: hourmarker,\n            dateDifferenceSign: (dateDifference < 0) ? '-' : '+',\n            dateDifference: Math.abs(dateDifference)\n        });\n    });\n\n    viewModel = {\n        currentHours: now.getHours(),\n        hourmarkerTop: this._getTopPercentByTime(now),\n        hourmarkerTimzones: hourmarkerTimzones,\n        todaymarkerLeft: todaymarkerLeft,\n        todaymarkerWidth: todaymarkerWidth,\n        todaymarkerRight: todaymarkerLeft + todaymarkerWidth\n    };\n\n    return viewModel;\n};\n\n/**\n * Get timezone view model\n * @param {number} currentHours - current hour\n * @param {boolean} timezonesCollapsed - multiple timezones are collapsed.\n * @param {object} styles - styles\n * @returns {object} ViewModel\n */\nTimeGrid.prototype._getTimezoneViewModel = function(currentHours, timezonesCollapsed, styles) {\n    var opt = this.options;\n    var primaryOffset = Timezone.getOffset();\n    var timezones = opt.timezones;\n    var timezonesLength = timezones.length;\n    var timezoneViewModel = [];\n    var collapsed = timezonesCollapsed;\n    var width = collapsed ? 100 : 100 / timezonesLength;\n    var now = new TZDate().toLocalTime();\n    var backgroundColor = styles.displayTimezoneLabelBackgroundColor;\n\n    util.forEach(timezones, function(timezone, index) {\n        var hourmarker = new TZDate(now);\n        var timezoneDifference;\n        var timeSlots;\n        var dateDifference;\n\n        timezoneDifference = timezone.timezoneOffset + primaryOffset;\n        timeSlots = getHoursLabels(opt, currentHours >= 0, timezoneDifference, styles);\n\n        hourmarker.setMinutes(hourmarker.getMinutes() + timezoneDifference);\n        dateDifference = datetime.getDateDifference(hourmarker, now);\n\n        if (index > 0) {\n            backgroundColor = styles.additionalTimezoneBackgroundColor;\n        }\n\n        timezoneViewModel.push({\n            timeSlots: timeSlots,\n            displayLabel: timezone.displayLabel,\n            timezoneOffset: timezone.timezoneOffset,\n            tooltip: timezone.tooltip || '',\n            width: width,\n            left: collapsed ? 0 : (timezones.length - index - 1) * width,\n            isPrimary: index === 0,\n            backgroundColor: backgroundColor || '',\n            hidden: index !== 0 && collapsed,\n            hourmarker: hourmarker,\n            dateDifferenceSign: (dateDifference < 0) ? '-' : '+',\n            dateDifference: Math.abs(dateDifference)\n        });\n    });\n\n    return timezoneViewModel;\n};\n\n/**\n * Get base viewModel.\n * @param {object} viewModel - view model\n * @returns {object} ViewModel\n */\nTimeGrid.prototype._getBaseViewModel = function(viewModel) {\n    var grids = viewModel.grids;\n    var range = viewModel.range;\n    var opt = this.options;\n    var baseViewModel = this._getHourmarkerViewModel(new TZDate().toLocalTime(), grids, range);\n    var timezonesCollapsed = util.pick(viewModel, 'state', 'timezonesCollapsed');\n    var styles = this._getStyles(viewModel.theme, timezonesCollapsed);\n\n    return util.extend(baseViewModel, {\n        timezones: this._getTimezoneViewModel(baseViewModel.todaymarkerLeft, timezonesCollapsed, styles),\n        hoursLabels: getHoursLabels(opt, baseViewModel.todaymarkerLeft >= 0, 0, styles),\n        styles: styles,\n        showTimezoneCollapseButton: util.pick(opt, 'showTimezoneCollapseButton'),\n        timezonesCollapsed: timezonesCollapsed\n    });\n};\n\n/**\n * Reconcilation child views and render.\n * @param {object} viewModels Viewmodel\n * @param {object} grids grid information(width, left, day)\n * @param {HTMLElement} container Container element for each time view.\n * @param {Theme} theme - theme instance\n */\nTimeGrid.prototype._renderChildren = function(viewModels, grids, container, theme) {\n    var self = this,\n        options = this.options,\n        childOption,\n        child,\n        isToday,\n        containerHeight,\n        today = datetime.format(new TZDate(), 'YYYYMMDD'),\n        i = 0;\n\n    // clear contents\n    container.innerHTML = '';\n    this.children.clear();\n\n    containerHeight = domutil.getSize(container.parentElement)[1];\n\n    // reconcilation of child views\n    util.forEach(viewModels, function(schedules, ymd) {\n        isToday = ymd === today;\n\n        childOption = {\n            index: i,\n            left: grids[i] ? grids[i].left : 0,\n            width: grids[i] ? grids[i].width : 0,\n            ymd: ymd,\n            isToday: isToday,\n            isPending: options.isPending,\n            isFocused: options.isFocused,\n            isReadOnly: options.isReadOnly,\n            hourStart: options.hourStart,\n            hourEnd: options.hourEnd\n        };\n\n        child = new Time(\n            childOption,\n            domutil.appendHTMLElement('div', container, config.classname('time-date')),\n            theme\n        );\n        child.render(ymd, schedules, containerHeight);\n\n        self.addChild(child);\n\n        i += 1;\n    });\n};\n\n/**\n * @override\n * @param {object} viewModel ViewModel list from Week view.\n */\nTimeGrid.prototype.render = function(viewModel) {\n    var opt = this.options,\n        timeViewModel = viewModel.schedulesInDateRange[opt.viewName],\n        container = this.container,\n        grids = viewModel.grids,\n        baseViewModel = this._getBaseViewModel(viewModel),\n        scheduleLen = util.keys(timeViewModel).length;\n\n    this._cacheParentViewModel = viewModel;\n    this._cacheHoursLabels = baseViewModel.hoursLabels;\n\n    if (!scheduleLen) {\n        return;\n    }\n\n    baseViewModel.showHourMarker = baseViewModel.todaymarkerLeft >= 0;\n\n    container.innerHTML = mainTmpl(baseViewModel);\n\n    /**********\n     * Render sticky container for timezone display label\n     **********/\n    this.renderStickyContainer(baseViewModel);\n\n    /**********\n     * Render children\n     **********/\n    this._renderChildren(\n        timeViewModel,\n        grids,\n        domutil.find(config.classname('.timegrid-schedules-container'), container),\n        viewModel.theme\n    );\n\n    this._hourLabels = domutil.find('ul', container);\n\n    /**********\n     * Render hourmarker\n     **********/\n    this.hourmarkers = domutil.find(config.classname('.timegrid-hourmarker'), container, true);\n\n    if (!this._scrolled) {\n        this._scrolled = true;\n        this.scrollToNow();\n    }\n};\n\nTimeGrid.prototype.renderStickyContainer = function(baseViewModel) {\n    var stickyContainer = this.stickyContainer;\n\n    stickyContainer.innerHTML = timezoneStickyTmpl(baseViewModel);\n\n    stickyContainer.style.display = baseViewModel.timezones.length > 1 ? 'block' : 'none';\n    stickyContainer.style.width = baseViewModel.styles.leftWidth;\n    stickyContainer.style.height = baseViewModel.styles.displayTimezoneLabelHeight;\n    stickyContainer.style.borderBottom = baseViewModel.styles.leftBorderRight;\n};\n\n/**\n * Refresh hourmarker element.\n */\nTimeGrid.prototype.refreshHourmarker = function() {\n    var hourmarkers = this.hourmarkers;\n    var viewModel = this._cacheParentViewModel;\n    var hoursLabels = this._cacheHoursLabels;\n    var rAnimationFrameID = this.rAnimationFrameID;\n    var baseViewModel;\n\n    if (!hourmarkers || !viewModel || rAnimationFrameID) {\n        return;\n    }\n\n    baseViewModel = this._getBaseViewModel(viewModel);\n\n    this.rAnimationFrameID = reqAnimFrame.requestAnimFrame(function() {\n        var needsRender = false;\n\n        util.forEach(hoursLabels, function(hoursLabel, index) {\n            if (hoursLabel.hidden !== baseViewModel.hoursLabels[index].hidden) {\n                needsRender = true;\n\n                return false;\n            }\n\n            return true;\n        });\n\n        if (needsRender) {\n            this.render(viewModel);\n        } else {\n            util.forEach(hourmarkers, function(hourmarker) {\n                var todaymarker = domutil.find(config.classname('.timegrid-todaymarker'), hourmarker);\n                var hourmarkerContainer = domutil.find(config.classname('.timegrid-hourmarker-time'), hourmarker);\n                var timezone = domutil.closest(hourmarker, config.classname('.timegrid-timezone'));\n                var timezoneIndex = timezone ? domutil.getData(timezone, 'timezoneIndex') : 0;\n\n                hourmarker.style.top = baseViewModel.hourmarkerTop + '%';\n\n                if (todaymarker) {\n                    todaymarker.style.display = (baseViewModel.todaymarkerLeft >= 0) ? 'block' : 'none';\n                }\n                if (hourmarkerContainer) {\n                    hourmarkerContainer.innerHTML = timegridCurrentTimeTmpl(\n                        baseViewModel.hourmarkerTimzones[timezoneIndex]\n                    );\n                }\n            });\n        }\n\n        this.rAnimationFrameID = null;\n    }, this);\n};\n\n/**\n * Attach events\n */\nTimeGrid.prototype.attachEvent = function() {\n    clearInterval(this.intervalID);\n    clearTimeout(this.timerID);\n    this.intervalID = this.timerID = this.rAnimationFrameID = null;\n\n    this.timerID = setTimeout(this.onTick.bind(this), (SIXTY_SECONDS - new TZDate().getSeconds()) * 1000);\n\n    domevent.on(this.stickyContainer, 'click', this._onClickStickyContainer, this);\n};\n\n/**\n * Scroll time grid to current hourmarker.\n */\nTimeGrid.prototype.scrollToNow = function() {\n    var container = this.container;\n    var offsetTop,\n        viewBound,\n        scrollTop,\n        scrollAmount,\n        scrollBy,\n        scrollFn;\n\n    if (!this.hourmarkers || !this.hourmarkers.length) {\n        return;\n    }\n\n    offsetTop = this.hourmarkers[0].offsetTop;\n    viewBound = this.getViewBound();\n    scrollTop = offsetTop;\n    scrollAmount = viewBound.height / 4;\n    scrollBy = 10;\n\n    scrollFn = function() {\n        if (scrollTop > offsetTop - scrollAmount) {\n            scrollTop -= scrollBy;\n            container.scrollTop = scrollTop;\n\n            reqAnimFrame.requestAnimFrame(scrollFn);\n        } else {\n            container.scrollTop = offsetTop - scrollAmount;\n        }\n    };\n\n    reqAnimFrame.requestAnimFrame(scrollFn);\n};\n\n/**********\n * Schedule handlers\n **********/\n\n/**\n * Interval tick handler\n */\nTimeGrid.prototype.onTick = function() {\n    if (this.timerID) {\n        clearTimeout(this.timerID);\n        this.timerID = null;\n    }\n\n    if (!this.intervalID) {\n        this.intervalID = setInterval(this.onTick.bind(this), HOURMARKER_REFRESH_INTERVAL);\n    }\n    this.refreshHourmarker();\n};\n\n/**\n * Get the styles from theme\n * @param {Theme} theme - theme instance\n * @param {boolean} timezonesCollapsed - multiple timezones are collapsed.\n * @returns {object} styles - styles object\n */\nTimeGrid.prototype._getStyles = function(theme, timezonesCollapsed) {\n    var styles = {};\n    var timezonesLength = this.options.timezones.length;\n    var collapsed = timezonesCollapsed;\n    var numberAndUnit;\n\n    if (theme) {\n        styles.borderBottom = theme.week.timegridHorizontalLine.borderBottom || theme.common.border;\n        styles.halfHourBorderBottom = theme.week.timegridHalfHour.borderBottom || theme.common.border;\n\n        styles.todayBackgroundColor = theme.week.today.backgroundColor;\n        styles.weekendBackgroundColor = theme.week.weekend.backgroundColor;\n        styles.backgroundColor = theme.week.daygrid.backgroundColor;\n        styles.leftWidth = theme.week.timegridLeft.width;\n        styles.leftBackgroundColor = theme.week.timegridLeft.backgroundColor;\n        styles.leftBorderRight = theme.week.timegridLeft.borderRight || theme.common.border;\n        styles.leftFontSize = theme.week.timegridLeft.fontSize;\n        styles.timezoneWidth = theme.week.timegridLeft.width;\n        styles.additionalTimezoneBackgroundColor = theme.week.timegridLeftAdditionalTimezone.backgroundColor\n                                                || styles.leftBackgroundColor;\n\n        styles.displayTimezoneLabelHeight = theme.week.timegridLeftTimezoneLabel.height;\n        styles.displayTimezoneLabelBackgroundColor = theme.week.timegridLeft.backgroundColor === 'inherit' ? 'white' : theme.week.timegridLeft.backgroundColor;\n\n        styles.oneHourHeight = theme.week.timegridOneHour.height;\n        styles.halfHourHeight = theme.week.timegridHalfHour.height;\n        styles.quaterHourHeight = (parseInt(styles.halfHourHeight, 10) / 2) + 'px';\n\n        styles.currentTimeColor = theme.week.currentTime.color;\n        styles.currentTimeFontSize = theme.week.currentTime.fontSize;\n        styles.currentTimeFontWeight = theme.week.currentTime.fontWeight;\n\n        styles.pastTimeColor = theme.week.pastTime.color;\n        styles.pastTimeFontWeight = theme.week.pastTime.fontWeight;\n\n        styles.futureTimeColor = theme.week.futureTime.color;\n        styles.futureTimeFontWeight = theme.week.futureTime.fontWeight;\n\n        styles.currentTimeLeftBorderTop = theme.week.currentTimeLinePast.border;\n        styles.currentTimeBulletBackgroundColor = theme.week.currentTimeLineBullet.backgroundColor;\n        styles.currentTimeTodayBorderTop = theme.week.currentTimeLineToday.border;\n        styles.currentTimeRightBorderTop = theme.week.currentTimeLineFuture.border;\n\n        if (!collapsed && timezonesLength > 1) {\n            numberAndUnit = common.parseUnit(styles.leftWidth);\n            styles.leftWidth = (numberAndUnit[0] * timezonesLength) + numberAndUnit[1];\n        }\n    }\n\n    return styles;\n};\n\n/**\n * @param {MouseEvent} event - mouse event object\n */\nTimeGrid.prototype._onClickStickyContainer = function(event) {\n    var target = domevent.getEventTarget(event);\n    var closeBtn = domutil.closest(target, config.classname('.timegrid-timezone-close-btn'));\n\n    if (!closeBtn) {\n        return;\n    }\n\n    this.fire('clickTimezonesCollapsedBtn');\n};\n\nmodule.exports = TimeGrid;\n","/**\n * @fileoverview View of time.\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\nvar util = require('tui-code-snippet');\nvar config = require('../../config');\nvar datetime = require('../../common/datetime');\nvar domutil = require('../../common/domutil');\nvar View = require('../view');\nvar timeTmpl = require('../template/week/time.hbs');\n\nvar forEachArr = util.forEachArray;\nvar SCHEDULE_MIN_DURATION = datetime.MILLISECONDS_SCHEDULE_MIN_DURATION;\n\n/**\n * @constructor\n * @extends {View}\n * @param {object} options Options\n * @param {number} options.index Date index in week view.\n * @param {number} options.width Date element width (percent)\n * @param {string} options.ymd YYYMMDD string for this view\n * @param {boolean} options.isToday when set true then assign today design class to container.\n * @param {number} options.hourStart Can limit of render hour start.\n * @param {number} options.hourEnd Can limit of render hour end.\n * @param {HTMLElement} container Element to use container for this view.\n * @param {Theme} theme - theme instance\n */\nfunction Time(options, container, theme) {\n    View.call(this, container);\n\n    this.options = util.extend({\n        index: 0,\n        width: 0,\n        ymd: '',\n        isToday: false,\n        pending: false,\n        hourStart: 0,\n        hourEnd: 24,\n        defaultMarginBottom: 2,\n        minHeight: 18.5,\n        isReadOnly: false\n    }, options);\n\n    this.timeTmpl = timeTmpl;\n\n    /**\n     * @type {Theme}\n     */\n    this.theme = theme;\n\n    container.style.width = options.width + '%';\n    container.style.left = options.left + '%';\n\n    if (this.options.isToday) {\n        domutil.addClass(this.container, config.classname('today'));\n    }\n\n    this.applyTheme();\n}\n\nutil.inherit(Time, View);\n\n/**\n * Convert YYYYMMDD formatted string date to Date.\n * @param {string} str formatted string.\n * @returns {Date} start of date.\n */\nTime.prototype._parseDateGroup = function(str) {\n    var y = parseInt(str.substr(0, 4), 10),\n        m = parseInt(str.substr(4, 2), 10),\n        d = parseInt(str.substr(6, 2), 10);\n    var date = datetime.start();\n\n    date.setFullYear(y, m - 1, d);\n\n    return datetime.start(date);\n};\n\n/**\n * calculate left and width\n * @param {ScheduleViewModel} viewModel - view model instance to calculate bound.\n * @param {object} options - options for calculating schedule element's bound.\n * @returns {object} - left and width\n */\nTime.prototype._getScheduleViewBoundX = function(viewModel, options) {\n    var width = options.baseWidth * (viewModel.extraSpace + 1);\n\n    // set width auto when has no collisions.\n    if (!viewModel.hasCollide) {\n        width = null;\n    }\n\n    return {\n        left: options.baseLeft[options.columnIndex],\n        width: width\n    };\n};\n\n/**\n * calculate top, height, croppedStart and croppedEnd\n * @param {ScheduleViewModel} viewModel - view model instance to calculate bound.\n * @param {object} options - options for calculating schedule element's bound.\n * @returns {object} - left and width\n */\nTime.prototype._getScheduleViewBoundY = function(viewModel, options) {\n    var baseMS = options.baseMS;\n    var baseHeight = options.baseHeight;\n    var croppedStart = false;\n    var croppedEnd = false;\n    var goingDuration = datetime.millisecondsFrom('minutes', viewModel.valueOf().goingDuration);\n    var comingDuration = datetime.millisecondsFrom('minutes', viewModel.valueOf().comingDuration);\n    var offsetStart = viewModel.valueOf().start - goingDuration - options.todayStart;\n    // containerHeight : milliseconds in day = x : schedule's milliseconds\n    var top = (baseHeight * offsetStart) / baseMS;\n    var modelDuration = viewModel.duration();\n    var height;\n    var duration;\n    var goingDurationHeight;\n    var modelDurationHeight;\n    var comingDurationHeight;\n\n    modelDuration = modelDuration > SCHEDULE_MIN_DURATION ? modelDuration : SCHEDULE_MIN_DURATION;\n    duration = modelDuration + goingDuration + comingDuration;\n    height = (baseHeight * duration) / baseMS;\n\n    goingDurationHeight = (baseHeight * goingDuration) / baseMS; // common.ratio(duration, goingDuration, 100);\n    modelDurationHeight = (baseHeight * modelDuration) / baseMS; // common.ratio(duration, modelDuration, 100);\n    comingDurationHeight = (baseHeight * comingDuration) / baseMS; // common.ratio(duration, comingDuration, 100);\n\n    if (offsetStart < 0) {\n        top = 0;\n        height += ((baseHeight * offsetStart) / baseMS);\n        croppedStart = true;\n    }\n\n    if (height + top > baseHeight) {\n        height = baseHeight - top;\n        croppedEnd = true;\n    }\n\n    return {\n        top: top,\n        height: Math.max(height, this.options.minHeight) - this.options.defaultMarginBottom,\n        modelDurationHeight: modelDurationHeight,\n        goingDurationHeight: goingDurationHeight,\n        comingDurationHeight: comingDurationHeight,\n        hasGoingDuration: goingDuration > 0,\n        hasComingDuration: comingDuration > 0,\n        croppedStart: croppedStart,\n        croppedEnd: croppedEnd\n    };\n};\n\n/**\n * @param {ScheduleViewModel} viewModel - view model instance to calculate bound.\n * @param {object} options - options for calculating schedule element's bound.\n * @param {Date} options.todayStart - date object represent schedule date's start (00:00:00)\n * @param {number} options.baseMS - the number of milliseconds to render schedule blocks.\n * @param {number} options.baseHeight - pixel value related with baseMS options.\n * @param {number[]} options.baseLeft - left position percents for each columns.\n * @param {number} options.baseWidth - the unit of schedule blocks width percent.\n * @param {number} options.columnIndex - the number index of schedule blocks.\n * it represent rendering index from left sides in view.\n * @returns {object} bound object for supplied view model.\n */\nTime.prototype.getScheduleViewBound = function(viewModel, options) {\n    var boundX = this._getScheduleViewBoundX(viewModel, options);\n    var boundY = this._getScheduleViewBoundY(viewModel, options);\n    var schedule = viewModel.model;\n    var isReadOnly = util.pick(schedule, 'isReadOnly') || false;\n    var travelBorderColor = schedule.isFocused ? '#ffffff' : schedule.borderColor;\n    if (travelBorderColor === schedule.bgColor) {\n        travelBorderColor = null; // follow text color\n    }\n\n    return util.extend({\n        isReadOnly: isReadOnly,\n        travelBorderColor: travelBorderColor\n    }, boundX, boundY);\n};\n\n/**\n * Set viewmodels for rendering.\n * @param {string} ymd The date of schedules. YYYYMMDD format.\n * @param {array} matrices The matrices for schedule placing.\n * @param {number} containerHeight - container's height\n */\nTime.prototype._getBaseViewModel = function(ymd, matrices, containerHeight) {\n    var self = this,\n        options = this.options,\n        hourStart = options.hourStart,\n        hourEnd = options.hourEnd,\n        isReadOnly = options.isReadOnly,\n        todayStart,\n        baseMS;\n\n    /**\n     * Calculate each schedule element bounds relative with rendered hour milliseconds and\n     * wrap each schedule model to viewmodels.\n     */\n    containerHeight = containerHeight || this.getViewBound().height;\n    todayStart = this._parseDateGroup(ymd);\n    todayStart.setHours(hourStart);\n    baseMS = datetime.millisecondsFrom('hour', (hourEnd - hourStart));\n\n    forEachArr(matrices, function(matrix) {\n        var maxRowLength,\n            widthPercent,\n            leftPercents,\n            i;\n\n        maxRowLength = Math.max.apply(null, util.map(matrix, function(row) {\n            return row.length;\n        }));\n\n        widthPercent = 100 / maxRowLength;\n\n        leftPercents = [];\n        for (i = 0; i < maxRowLength; i += 1) {\n            leftPercents[i] = widthPercent * i;\n        }\n\n        forEachArr(matrix, function(row) {\n            forEachArr(row, function(viewModel, col) {\n                var viewBound;\n\n                if (!viewModel) {\n                    return;\n                }\n\n                viewBound = self.getScheduleViewBound(viewModel, {\n                    todayStart: todayStart,\n                    baseMS: baseMS,\n                    baseLeft: leftPercents,\n                    baseWidth: widthPercent,\n                    baseHeight: containerHeight,\n                    columnIndex: col,\n                    isReadOnly: isReadOnly\n                });\n\n                util.extend(viewModel, viewBound);\n            });\n        });\n    });\n};\n\n/**\n * @returns {Date} - Date of this view.\n */\nTime.prototype.getDate = function() {\n    return this._parseDateGroup(this.options.ymd);\n};\n\n/**\n * @override\n * @param {string} ymd The date of schedules. YYYYMMDD format\n * @param {array} matrices Matrices for placing schedules\n * @param {number} containerHeight - container's height\n */\nTime.prototype.render = function(ymd, matrices, containerHeight) {\n    this._getBaseViewModel(ymd, matrices, containerHeight);\n    this.container.innerHTML = this.timeTmpl({\n        matrices: matrices,\n        styles: this._getStyles(this.theme),\n        isReadOnly: this.options.isReadOnly\n    });\n};\n\n/**\n * Get the styles from theme\n * @param {Theme} theme - theme instance\n * @returns {object} styles - styles object\n */\nTime.prototype._getStyles = function(theme) {\n    var styles = {};\n    var options = this.options;\n\n    if (theme) {\n        styles.borderRight = theme.week.timegrid.borderRight || theme.common.border;\n        styles.marginRight = theme.week.timegrid.paddingRight;\n        styles.borderRadius = theme.week.timegridSchedule.borderRadius;\n        styles.paddingLeft = theme.week.timegridSchedule.paddingLeft;\n        styles.backgroundColor = options.isToday ? theme.week.today.backgroundColor : 'inherit';\n    }\n\n    return styles;\n};\n\nTime.prototype.applyTheme = function() {\n    var style = this.container.style;\n    var styles = this._getStyles(this.theme);\n\n    style.borderRight = styles.borderRight;\n    style.backgroundColor = styles.backgroundColor;\n};\n\nmodule.exports = Time;\n","var Handlebars = require('/Users/nhnent/Jodeng/workspace/Work/tui.calendar-new/node_modules/handlebars/runtime.js');\nmodule.exports = (Handlebars['default'] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data) {\n    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return ((stack1 = lookupProperty(helpers,\"each\").call(depth0 != null ? depth0 : (container.nullContext || {}),depth0,{\"name\":\"each\",\"hash\":{},\"fn\":container.program(2, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":3,\"column\":4},\"end\":{\"line\":60,\"column\":13}}})) != null ? stack1 : \"\");\n},\"2\":function(container,depth0,helpers,partials,data) {\n    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return ((stack1 = lookupProperty(helpers,\"each\").call(depth0 != null ? depth0 : (container.nullContext || {}),depth0,{\"name\":\"each\",\"hash\":{},\"fn\":container.program(3, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":4,\"column\":8},\"end\":{\"line\":59,\"column\":17}}})) != null ? stack1 : \"\");\n},\"3\":function(container,depth0,helpers,partials,data) {\n    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return ((stack1 = lookupProperty(helpers,\"if\").call(depth0 != null ? depth0 : (container.nullContext || {}),depth0,{\"name\":\"if\",\"hash\":{},\"fn\":container.program(4, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":5,\"column\":8},\"end\":{\"line\":58,\"column\":17}}})) != null ? stack1 : \"\");\n},\"4\":function(container,depth0,helpers,partials,data) {\n    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, alias5=container.lambda, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"<div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":6,\"column\":20},\"end\":{\"line\":6,\"column\":34}}}) : helper)))\n    + \"time-date-schedule-block \"\n    + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"isPending\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(5, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":6,\"column\":59},\"end\":{\"line\":6,\"column\":136}}})) != null ? stack1 : \"\")\n    + \"\\\" data-id=\\\"\"\n    + alias4((lookupProperty(helpers,\"stamp\")||(depth0 && lookupProperty(depth0,\"stamp\"))||alias2).call(alias1,(depth0 != null ? lookupProperty(depth0,\"model\") : depth0),{\"name\":\"stamp\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":6,\"column\":147},\"end\":{\"line\":6,\"column\":162}}}))\n    + \"\\\"\\n            style=\\\"\"\n    + alias4((lookupProperty(helpers,\"time-scheduleBlock\")||(depth0 && lookupProperty(depth0,\"time-scheduleBlock\"))||alias2).call(alias1,depth0,{\"name\":\"time-scheduleBlock\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":7,\"column\":19},\"end\":{\"line\":7,\"column\":46}}}))\n    + \";\\n\"\n    + ((stack1 = (lookupProperty(helpers,\"fi\")||(depth0 && lookupProperty(depth0,\"fi\"))||alias2).call(alias1,(depth0 != null ? lookupProperty(depth0,\"left\") : depth0),\"!==\",0,{\"name\":\"fi\",\"hash\":{},\"fn\":container.program(7, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":8,\"column\":16},\"end\":{\"line\":10,\"column\":23}}})) != null ? stack1 : \"\")\n    + \"            \\\">\\n            <div data-schedule-id=\\\"\"\n    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"id\") : stack1), depth0))\n    + \"\\\" data-calendar-id=\\\"\"\n    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"calendarId\") : stack1), depth0))\n    + \"\\\" class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":12,\"column\":96},\"end\":{\"line\":12,\"column\":110}}}) : helper)))\n    + \"time-schedule \"\n    + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"isFocused\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(9, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":12,\"column\":124},\"end\":{\"line\":12,\"column\":190}}})) != null ? stack1 : \"\")\n    + \"\\\"\\n                style=\\\"\\n\"\n    + ((stack1 = lookupProperty(helpers,\"unless\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"croppedEnd\") : depth0),{\"name\":\"unless\",\"hash\":{},\"fn\":container.program(11, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":14,\"column\":16},\"end\":{\"line\":17,\"column\":27}}})) != null ? stack1 : \"\")\n    + ((stack1 = lookupProperty(helpers,\"unless\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"croppedStart\") : depth0),{\"name\":\"unless\",\"hash\":{},\"fn\":container.program(13, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":18,\"column\":16},\"end\":{\"line\":21,\"column\":27}}})) != null ? stack1 : \"\")\n    + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"isFocused\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(15, data, 0),\"inverse\":container.program(17, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":22,\"column\":16},\"end\":{\"line\":26,\"column\":23}}})) != null ? stack1 : \"\")\n    + \"                 \"\n    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"customStyle\") : stack1), depth0))\n    + \"\\\"\\n            >\\n\"\n    + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"hasGoingDuration\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(19, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":29,\"column\":12},\"end\":{\"line\":37,\"column\":19}}})) != null ? stack1 : \"\")\n    + \"                <div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":38,\"column\":28},\"end\":{\"line\":38,\"column\":42}}}) : helper)))\n    + \"time-schedule-content \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":38,\"column\":64},\"end\":{\"line\":38,\"column\":78}}}) : helper)))\n    + \"time-schedule-content-time\\\" style=\\\"height: \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"modelDurationHeight\") || (depth0 != null ? lookupProperty(depth0,\"modelDurationHeight\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"modelDurationHeight\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":38,\"column\":121},\"end\":{\"line\":38,\"column\":144}}}) : helper)))\n    + \"px;\\n\"\n    + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"isFocused\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(20, data, 0),\"inverse\":container.program(22, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":39,\"column\":16},\"end\":{\"line\":43,\"column\":23}}})) != null ? stack1 : \"\")\n    + \"                \"\n    + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"hasComingDuration\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(24, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":44,\"column\":16},\"end\":{\"line\":44,\"column\":96}}})) != null ? stack1 : \"\")\n    + \"\\\">\\n                    \"\n    + ((stack1 = (lookupProperty(helpers,\"time-tmpl\")||(depth0 && lookupProperty(depth0,\"time-tmpl\"))||alias2).call(alias1,(depth0 != null ? lookupProperty(depth0,\"model\") : depth0),{\"name\":\"time-tmpl\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":45,\"column\":20},\"end\":{\"line\":45,\"column\":41}}})) != null ? stack1 : \"\")\n    + \"\\n                </div>\\n\"\n    + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"hasComingDuration\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(26, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":47,\"column\":12},\"end\":{\"line\":54,\"column\":19}}})) != null ? stack1 : \"\")\n    + \"            </div>\\n            \"\n    + ((stack1 = lookupProperty(helpers,\"unless\").call(alias1,(lookupProperty(helpers,\"or\")||(depth0 && lookupProperty(depth0,\"or\"))||alias2).call(alias1,(depth0 != null ? lookupProperty(depth0,\"croppedEnd\") : depth0),(lookupProperty(helpers,\"or\")||(depth0 && lookupProperty(depth0,\"or\"))||alias2).call(alias1,((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"isReadOnly\")),((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"isReadOnly\") : stack1),{\"name\":\"or\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":56,\"column\":37},\"end\":{\"line\":56,\"column\":75}}}),{\"name\":\"or\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":56,\"column\":22},\"end\":{\"line\":56,\"column\":76}}}),{\"name\":\"unless\",\"hash\":{},\"fn\":container.program(29, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":56,\"column\":12},\"end\":{\"line\":56,\"column\":207}}})) != null ? stack1 : \"\")\n    + \"\\n        </div>\\n\";\n},\"5\":function(container,depth0,helpers,partials,data) {\n    var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \" \"\n    + container.escapeExpression(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":6,\"column\":83},\"end\":{\"line\":6,\"column\":97}}}) : helper)))\n    + \"time-date-schedule-block-pending\";\n},\"7\":function(container,depth0,helpers,partials,data) {\n    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"                    padding-left: \"\n    + container.escapeExpression(container.lambda(((stack1 = ((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"styles\"))) && lookupProperty(stack1,\"paddingLeft\")), depth0))\n    + \";\\n\";\n},\"9\":function(container,depth0,helpers,partials,data) {\n    var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return container.escapeExpression(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":12,\"column\":147},\"end\":{\"line\":12,\"column\":161}}}) : helper)))\n    + \"time-schedule-focused \";\n},\"11\":function(container,depth0,helpers,partials,data) {\n    var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"                    border-bottom-left-radius: \"\n    + alias2(alias1(((stack1 = ((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"styles\"))) && lookupProperty(stack1,\"borderRadius\")), depth0))\n    + \";\\n                    border-bottom-right-radius: \"\n    + alias2(alias1(((stack1 = ((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"styles\"))) && lookupProperty(stack1,\"borderRadius\")), depth0))\n    + \";\\n\";\n},\"13\":function(container,depth0,helpers,partials,data) {\n    var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"                    border-top-left-radius: \"\n    + alias2(alias1(((stack1 = ((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"styles\"))) && lookupProperty(stack1,\"borderRadius\")), depth0))\n    + \";\\n                    border-top-right-radius: \"\n    + alias2(alias1(((stack1 = ((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"styles\"))) && lookupProperty(stack1,\"borderRadius\")), depth0))\n    + \";\\n\";\n},\"15\":function(container,depth0,helpers,partials,data) {\n    var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"                    color: #ffffff; background-color:\"\n    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"color\") : stack1), depth0))\n    + \"; border-color:\"\n    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"color\") : stack1), depth0))\n    + \";\\n\";\n},\"17\":function(container,depth0,helpers,partials,data) {\n    var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"                    color:\"\n    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"color\") : stack1), depth0))\n    + \"; background-color:\"\n    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"bgColor\") : stack1), depth0))\n    + \"; border-color:\"\n    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"borderColor\") : stack1), depth0))\n    + \";\\n\";\n},\"19\":function(container,depth0,helpers,partials,data) {\n    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"                <div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":30,\"column\":28},\"end\":{\"line\":30,\"column\":42}}}) : helper)))\n    + \"time-schedule-content \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":30,\"column\":64},\"end\":{\"line\":30,\"column\":78}}}) : helper)))\n    + \"time-schedule-content-travel-time\\\" style=\\\"height: \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"goingDurationHeight\") || (depth0 != null ? lookupProperty(depth0,\"goingDurationHeight\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"goingDurationHeight\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":30,\"column\":128},\"end\":{\"line\":30,\"column\":151}}}) : helper)))\n    + \"px;\\n\"\n    + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"isFocused\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(20, data, 0),\"inverse\":container.program(22, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":31,\"column\":16},\"end\":{\"line\":35,\"column\":23}}})) != null ? stack1 : \"\")\n    + \"                border-bottom: 1px dashed \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"travelBorderColor\") || (depth0 != null ? lookupProperty(depth0,\"travelBorderColor\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"travelBorderColor\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":36,\"column\":42},\"end\":{\"line\":36,\"column\":63}}}) : helper)))\n    + \";\\\">\"\n    + ((stack1 = (lookupProperty(helpers,\"goingDuration-tmpl\")||(depth0 && lookupProperty(depth0,\"goingDuration-tmpl\"))||alias2).call(alias1,(depth0 != null ? lookupProperty(depth0,\"model\") : depth0),{\"name\":\"goingDuration-tmpl\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":36,\"column\":66},\"end\":{\"line\":36,\"column\":96}}})) != null ? stack1 : \"\")\n    + \"</div>\\n\";\n},\"20\":function(container,depth0,helpers,partials,data) {\n    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"                    border-color:\"\n    + container.escapeExpression(container.lambda(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"color\") : stack1), depth0))\n    + \";\\n\";\n},\"22\":function(container,depth0,helpers,partials,data) {\n    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"                    border-color:\"\n    + container.escapeExpression(container.lambda(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"borderColor\") : stack1), depth0))\n    + \";\\n\";\n},\"24\":function(container,depth0,helpers,partials,data) {\n    var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"border-bottom: 1px dashed \"\n    + container.escapeExpression(((helper = (helper = lookupProperty(helpers,\"travelBorderColor\") || (depth0 != null ? lookupProperty(depth0,\"travelBorderColor\") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"travelBorderColor\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":44,\"column\":67},\"end\":{\"line\":44,\"column\":88}}}) : helper)))\n    + \";\";\n},\"26\":function(container,depth0,helpers,partials,data) {\n    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"                <div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":48,\"column\":28},\"end\":{\"line\":48,\"column\":42}}}) : helper)))\n    + \"time-schedule-content \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":48,\"column\":64},\"end\":{\"line\":48,\"column\":78}}}) : helper)))\n    + \"time-schedule-content-travel-time\\\" style=\\\"height: \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"comingDurationHeight\") || (depth0 != null ? lookupProperty(depth0,\"comingDurationHeight\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"comingDurationHeight\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":48,\"column\":128},\"end\":{\"line\":48,\"column\":152}}}) : helper)))\n    + \"px;\\n\"\n    + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"isFocused\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(20, data, 0),\"inverse\":container.program(27, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":49,\"column\":16},\"end\":{\"line\":53,\"column\":23}}})) != null ? stack1 : \"\")\n    + \";\\\">\"\n    + ((stack1 = (lookupProperty(helpers,\"comingDuration-tmpl\")||(depth0 && lookupProperty(depth0,\"comingDuration-tmpl\"))||alias2).call(alias1,(depth0 != null ? lookupProperty(depth0,\"model\") : depth0),{\"name\":\"comingDuration-tmpl\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":53,\"column\":26},\"end\":{\"line\":53,\"column\":57}}})) != null ? stack1 : \"\")\n    + \"</div>\\n\";\n},\"27\":function(container,depth0,helpers,partials,data) {\n    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"                    border-color:\"\n    + container.escapeExpression(container.lambda(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"borderColor\") : stack1), depth0))\n    + \";\\n                \";\n},\"29\":function(container,depth0,helpers,partials,data) {\n    var stack1, helper, alias1=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"<div class=\\\"\"\n    + alias1(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":56,\"column\":90},\"end\":{\"line\":56,\"column\":104}}}) : helper)))\n    + \"time-resize-handle handle-x\\\" style=\\\"margin-left: \"\n    + alias1(container.lambda(((stack1 = ((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"styles\"))) && lookupProperty(stack1,\"paddingLeft\")), depth0))\n    + \";\\\">&nbsp;</div>\";\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"<div class=\\\"\"\n    + alias2(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":1,\"column\":12},\"end\":{\"line\":1,\"column\":26}}}) : helper)))\n    + \"time-date-schedule-block-wrap\\\" style=\\\"margin-right: \"\n    + alias2(container.lambda(((stack1 = (depth0 != null ? lookupProperty(depth0,\"styles\") : depth0)) != null ? lookupProperty(stack1,\"marginRight\") : stack1), depth0))\n    + \";\\\">\\n\"\n    + ((stack1 = lookupProperty(helpers,\"each\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"matrices\") : depth0),{\"name\":\"each\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":2,\"column\":0},\"end\":{\"line\":61,\"column\":9}}})) != null ? stack1 : \"\")\n    + \"</div>\\n\";\n},\"useData\":true});","/**\n * @fileoverview Add autoscroll feature to elements that prevented text selection.\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\nvar util = require('tui-code-snippet');\nvar domevent = require('../common/domevent');\nvar domutil = require('../common/domutil');\nvar Point = require('../common/point');\n\nvar SCROLL_INTERVAL = 30;\nvar SCROLL_MAX = 15;\nvar SCROLL_CLICK_INCREASED = 2; // In IE, the offset of the actual UI pixel when the scroll bar is clicked is offset.\n\n/**\n * Add autoscroll feature to elements that prevented text selection.\n * @constructor\n * @param {HTMLElement} container - HTMLElement to add autoscroll features.\n */\nfunction AutoScroll(container) {\n    /**\n     * @type {HTMLElement}\n     */\n    this.container = container;\n\n    /**\n     * @type {AutoScroll.DIRECTION}\n     */\n    this._direction = AutoScroll.DIRECTION.INSIDE;\n\n    /**\n     * @type {number}\n     */\n    this._offset = 0;\n\n    /**\n     * interval to scrolling\n     * @type {number}\n     */\n    this._intervalID = 0;\n\n    domevent.on(container, {\n        'mousedown': this._onMouseDown\n    }, this);\n}\n\n/**\n * @enum\n */\nAutoScroll.DIRECTION = {\n    INSIDE: 0,\n    TOP: 1,\n    RIGHT: 2,\n    BOTTOM: 3,\n    LEFT: 4\n};\n\n/**\n * Instance destroy method.\n */\nAutoScroll.prototype.destroy = function() {\n    domevent.off(this.container, {\n        'mousedown': this._onMouseDown,\n        'mousemove': this._onMouseMove,\n        'mouseup': this._onMouseUp\n    }, this);\n\n    window.clearInterval(this._intervalID);\n    this._intervalID = this._direction = this.container = null;\n};\n\n/**\n * Normalize ClientRect and calculate each position of edges.\n * @param {ClientRect} clientRect - ClientRect object of element.\n * @returns {object} edges.\n */\nAutoScroll.prototype._getEdgePositions = function(clientRect) {\n    return {\n        top: clientRect.top,\n        right: clientRect.left + clientRect.width,\n        bottom: clientRect.bottom,\n        left: clientRect.left\n    };\n};\n\n/**\n * Get element real size (\"real size\" -> size without scrollbar)\n * @param {HTMLElement} el - element want to know real size (\"real size\" -> size without scrollbar)\n * @returns {number[]} real size [width, height]\n */\nAutoScroll.prototype.getRealSize = function(el) {\n    var computed = domutil.getComputedStyle(el),\n        border,\n        padding;\n\n    border = parseFloat(computed.getPropertyValue('border-top-width')) +\n        parseFloat(computed.getPropertyValue('border-bottom-width'));\n    padding = parseFloat(computed.getPropertyValue('padding-top')) +\n        parseFloat(computed.getPropertyValue('padding-bottom'));\n\n    return [el.clientWidth + border + padding, el.clientHeight + border + padding];\n};\n\n/**\n * Check supplied element has scrollbar.\n * @param {HTMLElement} el - element want to know has scrollbar.\n * @returns {boolean[]} has scrollbar? [horizontal, vertical]\n */\nAutoScroll.prototype.hasScrollbar = function(el) {\n    var realSize = this.getRealSize(el);\n\n    return [\n        el.offsetWidth > Math.ceil(realSize[0]),\n        el.offsetHeight > Math.ceil(realSize[1])\n    ];\n};\n\n/**\n * @param {HTMLElement} el - element want to know.\n * @param {MouseEvent} mouseEvent - mouse event object.\n * @returns {boolean} mouse pointer is on the scrollbar?\n */\nAutoScroll.prototype.isOnScrollbar = function(el, mouseEvent) {\n    var realSize = this.getRealSize(el),\n        pos = domevent.getMousePosition(mouseEvent, el),\n        mouseInScrollbar = false;\n\n    mouseInScrollbar = (realSize[0] - SCROLL_CLICK_INCREASED < pos[0] ||\n                        realSize[1] - SCROLL_CLICK_INCREASED < pos[1]);\n\n    return mouseInScrollbar;\n};\n\n/**\n * MouseDown event handler\n * @param {MouseEvent} mouseDownEvent - mouse down event\n */\nAutoScroll.prototype._onMouseDown = function(mouseDownEvent) {\n    // only primary button can start drag.\n    if (domevent.getMouseButton(mouseDownEvent) !== 0) {\n        return;\n    }\n\n    // deactivate autoscroll feature when mouse is on the scrollbar. (IE)\n    if (util.browser.msie && this.isOnScrollbar(this.container, mouseDownEvent)) {\n        return;\n    }\n\n    window.clearInterval(this._intervalID);\n    this._intervalID = window.setInterval(this._onTick.bind(this), SCROLL_INTERVAL);\n\n    domevent.on(global, {\n        'mousemove': this._onMouseMove,\n        'mouseup': this._onMouseUp\n    }, this);\n};\n\n/**\n * MouseMove event handler\n * @param {MouseEvent} mouseEvent - mouse move event object.\n */\nAutoScroll.prototype._onMouseMove = function(mouseEvent) {\n    var edge = this._getEdgePositions(this.container.getBoundingClientRect()),\n        pos = Point.n(domevent.getMousePosition(mouseEvent));\n\n    if (pos.y >= edge.top && pos.y <= edge.bottom &&\n        pos.x >= edge.left && pos.x <= edge.right) {\n        this._direction = AutoScroll.DIRECTION.INSIDE;\n\n        return;\n    }\n\n    if (pos.y < edge.top) {\n        this._direction = AutoScroll.DIRECTION.TOP;\n        this._offset = edge.top - pos.y;\n\n        return;\n    }\n\n    if (pos.y > edge.bottom) {\n        this._direction = AutoScroll.DIRECTION.BOTTOM;\n        this._offset = pos.y - edge.bottom;\n\n        return;\n    }\n\n    if (pos.x < edge.left) {\n        this._direction = AutoScroll.DIRECTION.LEFT;\n        this._offset = edge.left - pos.x;\n\n        return;\n    }\n\n    this._direction = AutoScroll.DIRECTION.RIGHT;\n    this._offset = pos.x - edge.right;\n};\n\n/**\n * MouseUp event handler.\n */\nAutoScroll.prototype._onMouseUp = function() {\n    window.clearInterval(this._intervalID);\n    this._intervalID = 0;\n    this._direction = AutoScroll.DIRECTION.INSIDE;\n    this._offset = 0;\n\n    domevent.off(global, {\n        'mousemove': this._onMouseMove,\n        'mouseup': this._onMouseUp\n    }, this);\n};\n\n/**\n * Interval tick event handler\n */\nAutoScroll.prototype._onTick = function() {\n    var direction = this._direction,\n        container,\n        factor;\n\n    if (!direction) {\n        return;\n    }\n\n    container = this.container;\n    factor = Math.min(this._offset, SCROLL_MAX);\n\n    switch (direction) {\n        case AutoScroll.DIRECTION.TOP:\n            container.scrollTop -= factor;\n            break;\n        case AutoScroll.DIRECTION.RIGHT:\n            container.scrollLeft += factor;\n            break;\n        case AutoScroll.DIRECTION.BOTTOM:\n            container.scrollTop += factor;\n            break;\n        default:\n            container.scrollLeft -= factor;\n            break;\n    }\n};\n\nmodule.exports = AutoScroll;\n","var Handlebars = require('/Users/nhnent/Jodeng/workspace/Work/tui.calendar-new/node_modules/handlebars/runtime.js');\nmodule.exports = (Handlebars['default'] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data) {\n    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"<div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":3,\"column\":20},\"end\":{\"line\":3,\"column\":34}}}) : helper)))\n    + \"timegrid-timezone\\\" data-timezone-index=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"index\") || (data && lookupProperty(data,\"index\"))) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"index\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":3,\"column\":74},\"end\":{\"line\":3,\"column\":84}}}) : helper)))\n    + \"\\\" style=\\\"\"\n    + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"hidden\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(2, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":3,\"column\":93},\"end\":{\"line\":3,\"column\":127}}})) != null ? stack1 : \"\")\n    + \"position: absolute; top: 0; width: \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"width\") || (depth0 != null ? lookupProperty(depth0,\"width\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"width\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":3,\"column\":162},\"end\":{\"line\":3,\"column\":171}}}) : helper)))\n    + \"%; left: \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"left\") || (depth0 != null ? lookupProperty(depth0,\"left\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"left\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":3,\"column\":180},\"end\":{\"line\":3,\"column\":188}}}) : helper)))\n    + \"%; border-right: \"\n    + alias4(container.lambda(((stack1 = ((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"styles\"))) && lookupProperty(stack1,\"leftBorderRight\")), depth0))\n    + \"; background-color: \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"backgroundColor\") || (depth0 != null ? lookupProperty(depth0,\"backgroundColor\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"backgroundColor\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":3,\"column\":257},\"end\":{\"line\":3,\"column\":276}}}) : helper)))\n    + \";\\\" >\\n\"\n    + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"isPrimary\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(4, data, 0),\"inverse\":container.program(10, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":4,\"column\":8},\"end\":{\"line\":26,\"column\":15}}})) != null ? stack1 : \"\")\n    + \"        </div>\\n\";\n},\"2\":function(container,depth0,helpers,partials,data) {\n    return \"display:none;\";\n},\"4\":function(container,depth0,helpers,partials,data) {\n    var stack1, alias1=depth0 != null ? depth0 : (container.nullContext || {}), lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return ((stack1 = lookupProperty(helpers,\"each\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"timeSlots\") : depth0),{\"name\":\"each\",\"hash\":{},\"fn\":container.program(5, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":5,\"column\":12},\"end\":{\"line\":9,\"column\":23}}})) != null ? stack1 : \"\")\n    + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"showHourMarker\")),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(8, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":10,\"column\":12},\"end\":{\"line\":14,\"column\":19}}})) != null ? stack1 : \"\");\n},\"5\":function(container,depth0,helpers,partials,data) {\n    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"<div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":6,\"column\":28},\"end\":{\"line\":6,\"column\":42}}}) : helper)))\n    + \"timegrid-hour\\\" style=\\\"height: \"\n    + alias4(container.lambda(((stack1 = ((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"styles\"))) && lookupProperty(stack1,\"oneHourHeight\")), depth0))\n    + \"; color: \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"color\") || (depth0 != null ? lookupProperty(depth0,\"color\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"color\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":6,\"column\":111},\"end\":{\"line\":6,\"column\":120}}}) : helper)))\n    + \"; font-weight: \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"fontWeight\") || (depth0 != null ? lookupProperty(depth0,\"fontWeight\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"fontWeight\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":6,\"column\":135},\"end\":{\"line\":6,\"column\":149}}}) : helper)))\n    + \";\\\">\\n                    <span style=\\\"\"\n    + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"hidden\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(6, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":7,\"column\":33},\"end\":{\"line\":7,\"column\":66}}})) != null ? stack1 : \"\")\n    + \"\\\">\"\n    + ((stack1 = (lookupProperty(helpers,\"timegridDisplayPrimayTime-tmpl\")||(depth0 && lookupProperty(depth0,\"timegridDisplayPrimayTime-tmpl\"))||alias2).call(alias1,depth0,{\"name\":\"timegridDisplayPrimayTime-tmpl\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":7,\"column\":68},\"end\":{\"line\":7,\"column\":109}}})) != null ? stack1 : \"\")\n    + \"</span>\\n                </div>\\n\";\n},\"6\":function(container,depth0,helpers,partials,data) {\n    return \"display:none\";\n},\"8\":function(container,depth0,helpers,partials,data) {\n    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, alias5=container.lambda, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"                <div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":11,\"column\":28},\"end\":{\"line\":11,\"column\":42}}}) : helper)))\n    + \"timegrid-hourmarker\\\" style=\\\"top:\"\n    + alias4(alias5(((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"hourmarkerTop\")), depth0))\n    + \"%; margin-top: calc(6px - \"\n    + alias4(alias5(((stack1 = ((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"styles\"))) && lookupProperty(stack1,\"halfHourHeight\")), depth0))\n    + \"); height: \"\n    + alias4(alias5(((stack1 = ((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"styles\"))) && lookupProperty(stack1,\"halfHourHeight\")), depth0))\n    + \";\\\">\\n                    <div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":12,\"column\":32},\"end\":{\"line\":12,\"column\":46}}}) : helper)))\n    + \"timegrid-hourmarker-time\\\" style=\\\"color: \"\n    + alias4(alias5(((stack1 = ((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"styles\"))) && lookupProperty(stack1,\"currentTimeColor\")), depth0))\n    + \"; font-size: \"\n    + alias4(alias5(((stack1 = ((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"styles\"))) && lookupProperty(stack1,\"currentTimeFontSize\")), depth0))\n    + \"; font-weight: \"\n    + alias4(alias5(((stack1 = ((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"styles\"))) && lookupProperty(stack1,\"currentTimeFontWeight\")), depth0))\n    + \"\\\">\"\n    + ((stack1 = (lookupProperty(helpers,\"timegridCurrentTime-tmpl\")||(depth0 && lookupProperty(depth0,\"timegridCurrentTime-tmpl\"))||alias2).call(alias1,depth0,{\"name\":\"timegridCurrentTime-tmpl\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":12,\"column\":223},\"end\":{\"line\":12,\"column\":258}}})) != null ? stack1 : \"\")\n    + \"</div>\\n                </div>\\n\";\n},\"10\":function(container,depth0,helpers,partials,data) {\n    var stack1, alias1=depth0 != null ? depth0 : (container.nullContext || {}), lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return ((stack1 = lookupProperty(helpers,\"each\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"timeSlots\") : depth0),{\"name\":\"each\",\"hash\":{},\"fn\":container.program(11, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":16,\"column\":12},\"end\":{\"line\":20,\"column\":23}}})) != null ? stack1 : \"\")\n    + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"showHourMarker\")),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(13, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":21,\"column\":12},\"end\":{\"line\":25,\"column\":19}}})) != null ? stack1 : \"\");\n},\"11\":function(container,depth0,helpers,partials,data) {\n    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"<div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":17,\"column\":28},\"end\":{\"line\":17,\"column\":42}}}) : helper)))\n    + \"timegrid-hour\\\" style=\\\"height: \"\n    + alias4(container.lambda(((stack1 = ((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"styles\"))) && lookupProperty(stack1,\"oneHourHeight\")), depth0))\n    + \"; color: \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"color\") || (depth0 != null ? lookupProperty(depth0,\"color\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"color\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":17,\"column\":111},\"end\":{\"line\":17,\"column\":120}}}) : helper)))\n    + \"; font-weight: \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"fontWeight\") || (depth0 != null ? lookupProperty(depth0,\"fontWeight\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"fontWeight\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":17,\"column\":135},\"end\":{\"line\":17,\"column\":149}}}) : helper)))\n    + \";\\\">\\n                    <span style=\\\"\"\n    + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"hidden\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(6, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":18,\"column\":33},\"end\":{\"line\":18,\"column\":66}}})) != null ? stack1 : \"\")\n    + \"\\\">\"\n    + ((stack1 = (lookupProperty(helpers,\"timegridDisplayTime-tmpl\")||(depth0 && lookupProperty(depth0,\"timegridDisplayTime-tmpl\"))||alias2).call(alias1,depth0,{\"name\":\"timegridDisplayTime-tmpl\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":18,\"column\":68},\"end\":{\"line\":18,\"column\":103}}})) != null ? stack1 : \"\")\n    + \"</span>\\n                </div>\\n\";\n},\"13\":function(container,depth0,helpers,partials,data) {\n    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, alias5=container.lambda, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"                <div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":22,\"column\":28},\"end\":{\"line\":22,\"column\":42}}}) : helper)))\n    + \"timegrid-hourmarker\\\" style=\\\"top:\"\n    + alias4(alias5(((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"hourmarkerTop\")), depth0))\n    + \"%; margin-top: calc(6px - \"\n    + alias4(alias5(((stack1 = ((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"styles\"))) && lookupProperty(stack1,\"halfHourHeight\")), depth0))\n    + \"); height: \"\n    + alias4(alias5(((stack1 = ((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"styles\"))) && lookupProperty(stack1,\"halfHourHeight\")), depth0))\n    + \";\\\">\\n                    <div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":23,\"column\":32},\"end\":{\"line\":23,\"column\":46}}}) : helper)))\n    + \"timegrid-hourmarker-time\\\" style=\\\"color: \"\n    + alias4(alias5(((stack1 = ((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"styles\"))) && lookupProperty(stack1,\"currentTimeColor\")), depth0))\n    + \"; font-size: \"\n    + alias4(alias5(((stack1 = ((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"styles\"))) && lookupProperty(stack1,\"currentTimeFontSize\")), depth0))\n    + \";\\\">\"\n    + ((stack1 = (lookupProperty(helpers,\"timegridCurrentTime-tmpl\")||(depth0 && lookupProperty(depth0,\"timegridCurrentTime-tmpl\"))||alias2).call(alias1,depth0,{\"name\":\"timegridCurrentTime-tmpl\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":23,\"column\":171},\"end\":{\"line\":23,\"column\":206}}})) != null ? stack1 : \"\")\n    + \"</div>\\n                </div>\\n\";\n},\"15\":function(container,depth0,helpers,partials,data) {\n    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, alias5=container.lambda, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"<div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":33,\"column\":20},\"end\":{\"line\":33,\"column\":34}}}) : helper)))\n    + \"timegrid-gridline\\\" style=\\\"height: \"\n    + alias4(alias5(((stack1 = ((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"styles\"))) && lookupProperty(stack1,\"oneHourHeight\")), depth0))\n    + \";\\n\"\n    + ((stack1 = lookupProperty(helpers,\"unless\").call(alias1,(data && lookupProperty(data,\"last\")),{\"name\":\"unless\",\"hash\":{},\"fn\":container.program(16, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":34,\"column\":12},\"end\":{\"line\":36,\"column\":23}}})) != null ? stack1 : \"\")\n    + \"        \\\">\\n            <div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":38,\"column\":24},\"end\":{\"line\":38,\"column\":38}}}) : helper)))\n    + \"timegrid-gridline-half\\\" style=\\\"height: \"\n    + alias4(alias5(((stack1 = ((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"styles\"))) && lookupProperty(stack1,\"halfHourHeight\")), depth0))\n    + \"; border-bottom: \"\n    + alias4(alias5(((stack1 = ((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"styles\"))) && lookupProperty(stack1,\"halfHourBorderBottom\")), depth0))\n    + \";\\\"></div>\\n        </div>\\n\";\n},\"16\":function(container,depth0,helpers,partials,data) {\n    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"            border-bottom: \"\n    + container.escapeExpression(container.lambda(((stack1 = ((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"styles\"))) && lookupProperty(stack1,\"borderBottom\")), depth0))\n    + \";\\n\";\n},\"18\":function(container,depth0,helpers,partials,data) {\n    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, alias5=container.lambda, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"    <div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":47,\"column\":16},\"end\":{\"line\":47,\"column\":30}}}) : helper)))\n    + \"timegrid-hourmarker\\\" style=\\\"top:\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"hourmarkerTop\") || (depth0 != null ? lookupProperty(depth0,\"hourmarkerTop\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"hourmarkerTop\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":47,\"column\":62},\"end\":{\"line\":47,\"column\":79}}}) : helper)))\n    + \"%\\\">\\n        <div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":48,\"column\":20},\"end\":{\"line\":48,\"column\":34}}}) : helper)))\n    + \"timegrid-hourmarker-line-left\\\" style=\\\"width:\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"todaymarkerLeft\") || (depth0 != null ? lookupProperty(depth0,\"todaymarkerLeft\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"todaymarkerLeft\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":48,\"column\":78},\"end\":{\"line\":48,\"column\":97}}}) : helper)))\n    + \"%; border-top: \"\n    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,\"styles\") : depth0)) != null ? lookupProperty(stack1,\"currentTimeLeftBorderTop\") : stack1), depth0))\n    + \";\\\"></div>\\n        <div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":49,\"column\":20},\"end\":{\"line\":49,\"column\":34}}}) : helper)))\n    + \"timegrid-todaymarker\\\" style=\\\"left:\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"todaymarkerLeft\") || (depth0 != null ? lookupProperty(depth0,\"todaymarkerLeft\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"todaymarkerLeft\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":49,\"column\":68},\"end\":{\"line\":49,\"column\":87}}}) : helper)))\n    + \"%; background-color: \"\n    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,\"styles\") : depth0)) != null ? lookupProperty(stack1,\"currentTimeBulletBackgroundColor\") : stack1), depth0))\n    + \"; \\\">today</div>\\n        <div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":50,\"column\":20},\"end\":{\"line\":50,\"column\":34}}}) : helper)))\n    + \"timegrid-hourmarker-line-today\\\" style=\\\"left:\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"todaymarkerLeft\") || (depth0 != null ? lookupProperty(depth0,\"todaymarkerLeft\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"todaymarkerLeft\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":50,\"column\":78},\"end\":{\"line\":50,\"column\":97}}}) : helper)))\n    + \"%; width: \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"todaymarkerWidth\") || (depth0 != null ? lookupProperty(depth0,\"todaymarkerWidth\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"todaymarkerWidth\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":50,\"column\":107},\"end\":{\"line\":50,\"column\":127}}}) : helper)))\n    + \"%; border-top: \"\n    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,\"styles\") : depth0)) != null ? lookupProperty(stack1,\"currentTimeTodayBorderTop\") : stack1), depth0))\n    + \";\\\"></div>\\n        <div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":51,\"column\":20},\"end\":{\"line\":51,\"column\":34}}}) : helper)))\n    + \"timegrid-hourmarker-line-right\\\" style=\\\"left:\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"todaymarkerRight\") || (depth0 != null ? lookupProperty(depth0,\"todaymarkerRight\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"todaymarkerRight\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":51,\"column\":78},\"end\":{\"line\":51,\"column\":98}}}) : helper)))\n    + \"%; border-top: \"\n    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,\"styles\") : depth0)) != null ? lookupProperty(stack1,\"currentTimeRightBorderTop\") : stack1), depth0))\n    + \";\\\"></div>\\n    </div>\\n\";\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, alias5=container.lambda, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"<div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":1,\"column\":12},\"end\":{\"line\":1,\"column\":26}}}) : helper)))\n    + \"timegrid-left\\\" style=\\\"width: \"\n    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,\"styles\") : depth0)) != null ? lookupProperty(stack1,\"leftWidth\") : stack1), depth0))\n    + \"; font-size: \"\n    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,\"styles\") : depth0)) != null ? lookupProperty(stack1,\"leftFontSize\") : stack1), depth0))\n    + \";\\\">\\n\"\n    + ((stack1 = lookupProperty(helpers,\"each\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"timezones\") : depth0),{\"name\":\"each\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":2,\"column\":4},\"end\":{\"line\":28,\"column\":15}}})) != null ? stack1 : \"\")\n    + \"</div>\\n<div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":30,\"column\":12},\"end\":{\"line\":30,\"column\":26}}}) : helper)))\n    + \"timegrid-right\\\" style=\\\"margin-left: \"\n    + alias4(alias5(((stack1 = ((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"styles\"))) && lookupProperty(stack1,\"leftWidth\")), depth0))\n    + \";\\\">\\n    <div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":31,\"column\":16},\"end\":{\"line\":31,\"column\":30}}}) : helper)))\n    + \"timegrid-h-grid\\\">\\n\"\n    + ((stack1 = lookupProperty(helpers,\"each\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"hoursLabels\") : depth0),{\"name\":\"each\",\"hash\":{},\"fn\":container.program(15, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":32,\"column\":8},\"end\":{\"line\":40,\"column\":19}}})) != null ? stack1 : \"\")\n    + \"</div>\\n    <div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":42,\"column\":16},\"end\":{\"line\":42,\"column\":30}}}) : helper)))\n    + \"timegrid-schedules\\\">\\n        <div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":43,\"column\":20},\"end\":{\"line\":43,\"column\":34}}}) : helper)))\n    + \"timegrid-schedules-container\\\"></div>\\n    </div>\\n\\n\"\n    + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"showHourMarker\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(18, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":46,\"column\":4},\"end\":{\"line\":53,\"column\":11}}})) != null ? stack1 : \"\")\n    + \"</div>\\n\";\n},\"useData\":true});","var Handlebars = require('/Users/nhnent/Jodeng/workspace/Work/tui.calendar-new/node_modules/handlebars/runtime.js');\nmodule.exports = (Handlebars['default'] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data) {\n    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, alias5=container.lambda, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"<div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":2,\"column\":12},\"end\":{\"line\":2,\"column\":26}}}) : helper)))\n    + \"timegrid-timezone-label-container\\\" style=\\\"\"\n    + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"hidden\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(2, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":2,\"column\":68},\"end\":{\"line\":2,\"column\":102}}})) != null ? stack1 : \"\")\n    + \"background-color: \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"backgroundColor\") || (depth0 != null ? lookupProperty(depth0,\"backgroundColor\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"backgroundColor\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":2,\"column\":120},\"end\":{\"line\":2,\"column\":139}}}) : helper)))\n    + \"; height: 100%; width: \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"width\") || (depth0 != null ? lookupProperty(depth0,\"width\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"width\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":2,\"column\":162},\"end\":{\"line\":2,\"column\":171}}}) : helper)))\n    + \"%; left: \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"left\") || (depth0 != null ? lookupProperty(depth0,\"left\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"left\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":2,\"column\":180},\"end\":{\"line\":2,\"column\":188}}}) : helper)))\n    + \"%; font-size: \"\n    + alias4(alias5(((stack1 = ((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"styles\"))) && lookupProperty(stack1,\"leftFontSize\")), depth0))\n    + \"; border-right: \"\n    + alias4(alias5(((stack1 = ((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"styles\"))) && lookupProperty(stack1,\"leftBorderRight\")), depth0))\n    + \";\\\">\\n    <div title=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"tooltip\") || (depth0 != null ? lookupProperty(depth0,\"tooltip\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"tooltip\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":3,\"column\":16},\"end\":{\"line\":3,\"column\":27}}}) : helper)))\n    + \"\\\" class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":3,\"column\":36},\"end\":{\"line\":3,\"column\":50}}}) : helper)))\n    + \"timegrid-timezone-label-cell\\\" data-timezone=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"displayLabel\") || (depth0 != null ? lookupProperty(depth0,\"displayLabel\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"displayLabel\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":3,\"column\":95},\"end\":{\"line\":3,\"column\":111}}}) : helper)))\n    + \"\\\" style=\\\"height: 100%; width: 100%;\\\">\\n\"\n    + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,(lookupProperty(helpers,\"and\")||(depth0 && lookupProperty(depth0,\"and\"))||alias2).call(alias1,(depth0 != null ? lookupProperty(depth0,\"isPrimary\") : depth0),((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"showTimezoneCollapseButton\")),{\"name\":\"and\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":4,\"column\":14},\"end\":{\"line\":4,\"column\":62}}}),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(4, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":4,\"column\":8},\"end\":{\"line\":10,\"column\":15}}})) != null ? stack1 : \"\")\n    + \"        <div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":11,\"column\":20},\"end\":{\"line\":11,\"column\":34}}}) : helper)))\n    + \"timegrid-timezone-label\\\">\"\n    + ((stack1 = (lookupProperty(helpers,\"timezoneDisplayLabel-tmpl\")||(depth0 && lookupProperty(depth0,\"timezoneDisplayLabel-tmpl\"))||alias2).call(alias1,(depth0 != null ? lookupProperty(depth0,\"timezoneOffset\") : depth0),(depth0 != null ? lookupProperty(depth0,\"displayLabel\") : depth0),{\"name\":\"timezoneDisplayLabel-tmpl\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":11,\"column\":59},\"end\":{\"line\":11,\"column\":118}}})) != null ? stack1 : \"\")\n    + \"</div>\\n    </div>\\n</div>\\n\";\n},\"2\":function(container,depth0,helpers,partials,data) {\n    return \"display:none;\";\n},\"4\":function(container,depth0,helpers,partials,data) {\n    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, alias5=container.lambda, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"            <div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":5,\"column\":24},\"end\":{\"line\":5,\"column\":38}}}) : helper)))\n    + \"timegrid-timezone-close-btn\\\" style=\\\"border: 1px solid #ddd; top:2px; bottom: 2px; width: 10px; border-left: none;\\\">\\n                <span style=\\\"color: #777; height: calc(\"\n    + alias4(alias5(((stack1 = ((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"styles\"))) && lookupProperty(stack1,\"displayTimezoneLabelHeight\")), depth0))\n    + \" - 6px); line-height: calc(\"\n    + alias4(alias5(((stack1 = ((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"styles\"))) && lookupProperty(stack1,\"displayTimezoneLabelHeight\")), depth0))\n    + \" - 6px);\\\">\\n                    <span class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":7,\"column\":33},\"end\":{\"line\":7,\"column\":47}}}) : helper)))\n    + \"icon \"\n    + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"timezonesCollapsed\")),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(5, data, 0),\"inverse\":container.program(7, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":7,\"column\":52},\"end\":{\"line\":7,\"column\":154}}})) != null ? stack1 : \"\")\n    + \"\\\"></span>\\n                </span>\\n            </div>\\n\";\n},\"5\":function(container,depth0,helpers,partials,data) {\n    var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return container.escapeExpression(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":7,\"column\":84},\"end\":{\"line\":7,\"column\":98}}}) : helper)))\n    + \"ic-arrow-right\";\n},\"7\":function(container,depth0,helpers,partials,data) {\n    var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return container.escapeExpression(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":7,\"column\":120},\"end\":{\"line\":7,\"column\":134}}}) : helper)))\n    + \"ic-arrow-left\";\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n    var stack1, alias1=depth0 != null ? depth0 : (container.nullContext || {}), lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return ((stack1 = lookupProperty(helpers,\"each\").call(alias1,(lookupProperty(helpers,\"reverse\")||(depth0 && lookupProperty(depth0,\"reverse\"))||container.hooks.helperMissing).call(alias1,(depth0 != null ? lookupProperty(depth0,\"timezones\") : depth0),{\"name\":\"reverse\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":1,\"column\":8},\"end\":{\"line\":1,\"column\":27}}}),{\"name\":\"each\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":1,\"column\":0},\"end\":{\"line\":14,\"column\":11}}})) != null ? stack1 : \"\");\n},\"useData\":true});","var Handlebars = require('/Users/nhnent/Jodeng/workspace/Work/tui.calendar-new/node_modules/handlebars/runtime.js');\nmodule.exports = (Handlebars['default'] || Handlebars).template({\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return ((stack1 = (lookupProperty(helpers,\"timegridCurrentTime-tmpl\")||(depth0 && lookupProperty(depth0,\"timegridCurrentTime-tmpl\"))||container.hooks.helperMissing).call(depth0 != null ? depth0 : (container.nullContext || {}),depth0,{\"name\":\"timegridCurrentTime-tmpl\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":1,\"column\":0},\"end\":{\"line\":1,\"column\":35}}})) != null ? stack1 : \"\")\n    + \"\\n\";\n},\"useData\":true});","module.exports = __WEBPACK_EXTERNAL_MODULE__79__;","var Handlebars = require('/Users/nhnent/Jodeng/workspace/Work/tui.calendar-new/node_modules/handlebars/runtime.js');\nmodule.exports = (Handlebars['default'] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data) {\n    var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \" \"\n    + container.escapeExpression(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":3,\"column\":150},\"end\":{\"line\":3,\"column\":164}}}) : helper)))\n    + \"hide\";\n},\"3\":function(container,depth0,helpers,partials,data) {\n    var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"                    <li class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":11,\"column\":31},\"end\":{\"line\":11,\"column\":45}}}) : helper)))\n    + \"popup-section-item \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":11,\"column\":64},\"end\":{\"line\":11,\"column\":78}}}) : helper)))\n    + \"dropdown-menu-item\\\" data-calendar-id=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"id\") || (depth0 != null ? lookupProperty(depth0,\"id\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"id\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":11,\"column\":116},\"end\":{\"line\":11,\"column\":122}}}) : helper)))\n    + \"\\\">\\n                        <span class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":12,\"column\":37},\"end\":{\"line\":12,\"column\":51}}}) : helper)))\n    + \"icon \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":12,\"column\":56},\"end\":{\"line\":12,\"column\":70}}}) : helper)))\n    + \"calendar-dot\\\" style=\\\"background-color: \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"bgColor\") || (depth0 != null ? lookupProperty(depth0,\"bgColor\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"bgColor\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":12,\"column\":109},\"end\":{\"line\":12,\"column\":120}}}) : helper)))\n    + \"\\\"></span>\\n                        <span class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":13,\"column\":37},\"end\":{\"line\":13,\"column\":51}}}) : helper)))\n    + \"content\\\">\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"name\") || (depth0 != null ? lookupProperty(depth0,\"name\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"name\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":13,\"column\":60},\"end\":{\"line\":13,\"column\":68}}}) : helper)))\n    + \"</span>\\n                    </li>\\n\";\n},\"5\":function(container,depth0,helpers,partials,data) {\n    var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \" \"\n    + container.escapeExpression(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":23,\"column\":135},\"end\":{\"line\":23,\"column\":149}}}) : helper)))\n    + \"public\";\n},\"7\":function(container,depth0,helpers,partials,data) {\n    return \" checked\";\n},\"9\":function(container,depth0,helpers,partials,data) {\n    var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return container.escapeExpression(((helper = (helper = lookupProperty(helpers,\"state\") || (depth0 != null ? lookupProperty(depth0,\"state\") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"state\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":54,\"column\":99},\"end\":{\"line\":54,\"column\":108}}}) : helper)));\n},\"11\":function(container,depth0,helpers,partials,data) {\n    var stack1, helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return ((stack1 = ((helper = (helper = lookupProperty(helpers,\"popupStateBusy-tmpl\") || (depth0 != null ? lookupProperty(depth0,\"popupStateBusy-tmpl\") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"popupStateBusy-tmpl\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":54,\"column\":116},\"end\":{\"line\":54,\"column\":141}}}) : helper))) != null ? stack1 : \"\");\n},\"13\":function(container,depth0,helpers,partials,data) {\n    var stack1, helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return ((stack1 = ((helper = (helper = lookupProperty(helpers,\"popupUpdate-tmpl\") || (depth0 != null ? lookupProperty(depth0,\"popupUpdate-tmpl\") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"popupUpdate-tmpl\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":69,\"column\":163},\"end\":{\"line\":69,\"column\":185}}}) : helper))) != null ? stack1 : \"\");\n},\"15\":function(container,depth0,helpers,partials,data) {\n    var stack1, helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return ((stack1 = ((helper = (helper = lookupProperty(helpers,\"popupSave-tmpl\") || (depth0 != null ? lookupProperty(depth0,\"popupSave-tmpl\") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"popupSave-tmpl\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":69,\"column\":193},\"end\":{\"line\":69,\"column\":213}}}) : helper))) != null ? stack1 : \"\");\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, alias5=container.lambda, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"<div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":1,\"column\":12},\"end\":{\"line\":1,\"column\":26}}}) : helper)))\n    + \"popup\\\">\\n    <div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":2,\"column\":16},\"end\":{\"line\":2,\"column\":30}}}) : helper)))\n    + \"popup-container\\\">\\n        <div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":3,\"column\":20},\"end\":{\"line\":3,\"column\":34}}}) : helper)))\n    + \"popup-section \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":3,\"column\":48},\"end\":{\"line\":3,\"column\":62}}}) : helper)))\n    + \"dropdown \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":3,\"column\":71},\"end\":{\"line\":3,\"column\":85}}}) : helper)))\n    + \"close \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":3,\"column\":91},\"end\":{\"line\":3,\"column\":105}}}) : helper)))\n    + \"section-calendar\"\n    + ((stack1 = lookupProperty(helpers,\"unless\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"calendars\") : depth0)) != null ? lookupProperty(stack1,\"length\") : stack1),{\"name\":\"unless\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":3,\"column\":121},\"end\":{\"line\":3,\"column\":179}}})) != null ? stack1 : \"\")\n    + \"\\\">\\n            <button class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":4,\"column\":27},\"end\":{\"line\":4,\"column\":41}}}) : helper)))\n    + \"button \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":4,\"column\":48},\"end\":{\"line\":4,\"column\":62}}}) : helper)))\n    + \"dropdown-button \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":4,\"column\":78},\"end\":{\"line\":4,\"column\":92}}}) : helper)))\n    + \"popup-section-item\\\">\\n                <span class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":5,\"column\":29},\"end\":{\"line\":5,\"column\":43}}}) : helper)))\n    + \"icon \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":5,\"column\":48},\"end\":{\"line\":5,\"column\":62}}}) : helper)))\n    + \"calendar-dot\\\" style=\\\"background-color: \"\n    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,\"selectedCal\") : depth0)) != null ? lookupProperty(stack1,\"bgColor\") : stack1), depth0))\n    + \"\\\"></span>\\n                <span id=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":6,\"column\":26},\"end\":{\"line\":6,\"column\":40}}}) : helper)))\n    + \"schedule-calendar\\\" class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":6,\"column\":66},\"end\":{\"line\":6,\"column\":80}}}) : helper)))\n    + \"content\\\">\"\n    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,\"selectedCal\") : depth0)) != null ? lookupProperty(stack1,\"name\") : stack1), depth0))\n    + \"</span>\\n                <span class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":7,\"column\":29},\"end\":{\"line\":7,\"column\":43}}}) : helper)))\n    + \"icon \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":7,\"column\":48},\"end\":{\"line\":7,\"column\":62}}}) : helper)))\n    + \"dropdown-arrow\\\"></span>\\n            </button>\\n            <ul class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":9,\"column\":23},\"end\":{\"line\":9,\"column\":37}}}) : helper)))\n    + \"dropdown-menu\\\" style=\\\"z-index: \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"zIndex\") || (depth0 != null ? lookupProperty(depth0,\"zIndex\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"zIndex\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":9,\"column\":68},\"end\":{\"line\":9,\"column\":78}}}) : helper)))\n    + \"\\\">\\n\"\n    + ((stack1 = lookupProperty(helpers,\"each\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"calendars\") : depth0),{\"name\":\"each\",\"hash\":{},\"fn\":container.program(3, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":10,\"column\":16},\"end\":{\"line\":15,\"column\":25}}})) != null ? stack1 : \"\")\n    + \"            </ul>\\n        </div>\\n        <div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":18,\"column\":20},\"end\":{\"line\":18,\"column\":34}}}) : helper)))\n    + \"popup-section\\\">\\n            <div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":19,\"column\":24},\"end\":{\"line\":19,\"column\":38}}}) : helper)))\n    + \"popup-section-item \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":19,\"column\":57},\"end\":{\"line\":19,\"column\":71}}}) : helper)))\n    + \"section-title\\\">\\n            <span class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":20,\"column\":25},\"end\":{\"line\":20,\"column\":39}}}) : helper)))\n    + \"icon \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":20,\"column\":44},\"end\":{\"line\":20,\"column\":58}}}) : helper)))\n    + \"ic-title\\\"></span>\\n                <input id=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":21,\"column\":27},\"end\":{\"line\":21,\"column\":41}}}) : helper)))\n    + \"schedule-title\\\" class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":21,\"column\":64},\"end\":{\"line\":21,\"column\":78}}}) : helper)))\n    + \"content\\\" placeholder=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"titlePlaceholder-tmpl\") || (depth0 != null ? lookupProperty(depth0,\"titlePlaceholder-tmpl\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"titlePlaceholder-tmpl\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":21,\"column\":100},\"end\":{\"line\":21,\"column\":125}}}) : helper)))\n    + \"\\\" value=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"title\") || (depth0 != null ? lookupProperty(depth0,\"title\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"title\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":21,\"column\":134},\"end\":{\"line\":21,\"column\":143}}}) : helper)))\n    + \"\\\">\\n            </div>\\n            <button id=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":23,\"column\":24},\"end\":{\"line\":23,\"column\":38}}}) : helper)))\n    + \"schedule-private\\\" class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":23,\"column\":63},\"end\":{\"line\":23,\"column\":77}}}) : helper)))\n    + \"button \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":23,\"column\":84},\"end\":{\"line\":23,\"column\":98}}}) : helper)))\n    + \"section-private\"\n    + ((stack1 = lookupProperty(helpers,\"unless\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"isPrivate\") : depth0),{\"name\":\"unless\",\"hash\":{},\"fn\":container.program(5, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":23,\"column\":113},\"end\":{\"line\":23,\"column\":166}}})) != null ? stack1 : \"\")\n    + \"\\\">\\n            <span class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":24,\"column\":25},\"end\":{\"line\":24,\"column\":39}}}) : helper)))\n    + \"icon \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":24,\"column\":44},\"end\":{\"line\":24,\"column\":58}}}) : helper)))\n    + \"ic-private\\\"></span>\\n            </button>\\n        </div>\\n        <div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":27,\"column\":20},\"end\":{\"line\":27,\"column\":34}}}) : helper)))\n    + \"popup-section\\\">\\n            <div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":28,\"column\":24},\"end\":{\"line\":28,\"column\":38}}}) : helper)))\n    + \"popup-section-item \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":28,\"column\":57},\"end\":{\"line\":28,\"column\":71}}}) : helper)))\n    + \"section-location\\\">\\n            <span class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":29,\"column\":25},\"end\":{\"line\":29,\"column\":39}}}) : helper)))\n    + \"icon \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":29,\"column\":44},\"end\":{\"line\":29,\"column\":58}}}) : helper)))\n    + \"ic-location\\\"></span>\\n                <input id=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":30,\"column\":27},\"end\":{\"line\":30,\"column\":41}}}) : helper)))\n    + \"schedule-location\\\" class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":30,\"column\":67},\"end\":{\"line\":30,\"column\":81}}}) : helper)))\n    + \"content\\\" placeholder=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"locationPlaceholder-tmpl\") || (depth0 != null ? lookupProperty(depth0,\"locationPlaceholder-tmpl\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"locationPlaceholder-tmpl\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":30,\"column\":103},\"end\":{\"line\":30,\"column\":131}}}) : helper)))\n    + \"\\\" value=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"location\") || (depth0 != null ? lookupProperty(depth0,\"location\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"location\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":30,\"column\":140},\"end\":{\"line\":30,\"column\":152}}}) : helper)))\n    + \"\\\">\\n            </div>\\n        </div>\\n        <div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":33,\"column\":20},\"end\":{\"line\":33,\"column\":34}}}) : helper)))\n    + \"popup-section\\\">\\n            <div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":34,\"column\":24},\"end\":{\"line\":34,\"column\":38}}}) : helper)))\n    + \"popup-section-item \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":34,\"column\":57},\"end\":{\"line\":34,\"column\":71}}}) : helper)))\n    + \"section-start-date\\\">\\n                <span class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":35,\"column\":29},\"end\":{\"line\":35,\"column\":43}}}) : helper)))\n    + \"icon \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":35,\"column\":48},\"end\":{\"line\":35,\"column\":62}}}) : helper)))\n    + \"ic-date\\\"></span>\\n                <input id=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":36,\"column\":27},\"end\":{\"line\":36,\"column\":41}}}) : helper)))\n    + \"schedule-start-date\\\" class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":36,\"column\":69},\"end\":{\"line\":36,\"column\":83}}}) : helper)))\n    + \"content\\\" placeholder=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"startDatePlaceholder-tmpl\") || (depth0 != null ? lookupProperty(depth0,\"startDatePlaceholder-tmpl\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"startDatePlaceholder-tmpl\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":36,\"column\":105},\"end\":{\"line\":36,\"column\":134}}}) : helper)))\n    + \"\\\">\\n                <div id=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":37,\"column\":25},\"end\":{\"line\":37,\"column\":39}}}) : helper)))\n    + \"startpicker-container\\\" style=\\\"margin-left: -1px; position: relative\\\"></div>\\n            </div>\\n            <span class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":39,\"column\":25},\"end\":{\"line\":39,\"column\":39}}}) : helper)))\n    + \"section-date-dash\\\">-</span>\\n            <div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":40,\"column\":24},\"end\":{\"line\":40,\"column\":38}}}) : helper)))\n    + \"popup-section-item \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":40,\"column\":57},\"end\":{\"line\":40,\"column\":71}}}) : helper)))\n    + \"section-end-date\\\">\\n                <span class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":41,\"column\":29},\"end\":{\"line\":41,\"column\":43}}}) : helper)))\n    + \"icon \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":41,\"column\":48},\"end\":{\"line\":41,\"column\":62}}}) : helper)))\n    + \"ic-date\\\"></span>\\n                <input id=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":42,\"column\":27},\"end\":{\"line\":42,\"column\":41}}}) : helper)))\n    + \"schedule-end-date\\\" class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":42,\"column\":67},\"end\":{\"line\":42,\"column\":81}}}) : helper)))\n    + \"content\\\" placeholder=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"endDatePlaceholder-tmpl\") || (depth0 != null ? lookupProperty(depth0,\"endDatePlaceholder-tmpl\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"endDatePlaceholder-tmpl\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":42,\"column\":103},\"end\":{\"line\":42,\"column\":130}}}) : helper)))\n    + \"\\\">\\n                <div id=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":43,\"column\":25},\"end\":{\"line\":43,\"column\":39}}}) : helper)))\n    + \"endpicker-container\\\" style=\\\"margin-left: -1px; position: relative\\\"></div>\\n            </div>\\n            <div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":45,\"column\":24},\"end\":{\"line\":45,\"column\":38}}}) : helper)))\n    + \"popup-section-item \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":45,\"column\":57},\"end\":{\"line\":45,\"column\":71}}}) : helper)))\n    + \"section-allday\\\">\\n                <input id=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":46,\"column\":27},\"end\":{\"line\":46,\"column\":41}}}) : helper)))\n    + \"schedule-allday\\\" type=\\\"checkbox\\\" class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":46,\"column\":81},\"end\":{\"line\":46,\"column\":95}}}) : helper)))\n    + \"checkbox-square\\\"\"\n    + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"isAllDay\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(7, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":46,\"column\":111},\"end\":{\"line\":46,\"column\":142}}})) != null ? stack1 : \"\")\n    + \">\\n                <span class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":47,\"column\":29},\"end\":{\"line\":47,\"column\":43}}}) : helper)))\n    + \"icon \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":47,\"column\":48},\"end\":{\"line\":47,\"column\":62}}}) : helper)))\n    + \"ic-checkbox\\\"></span>\\n                <span class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":48,\"column\":29},\"end\":{\"line\":48,\"column\":43}}}) : helper)))\n    + \"content\\\">\"\n    + ((stack1 = ((helper = (helper = lookupProperty(helpers,\"popupIsAllDay-tmpl\") || (depth0 != null ? lookupProperty(depth0,\"popupIsAllDay-tmpl\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"popupIsAllDay-tmpl\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":48,\"column\":52},\"end\":{\"line\":48,\"column\":76}}}) : helper))) != null ? stack1 : \"\")\n    + \"</span>\\n            </div>\\n        </div>\\n        <div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":51,\"column\":20},\"end\":{\"line\":51,\"column\":34}}}) : helper)))\n    + \"popup-section \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":51,\"column\":48},\"end\":{\"line\":51,\"column\":62}}}) : helper)))\n    + \"dropdown \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":51,\"column\":71},\"end\":{\"line\":51,\"column\":85}}}) : helper)))\n    + \"close \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":51,\"column\":91},\"end\":{\"line\":51,\"column\":105}}}) : helper)))\n    + \"section-state\\\">\\n            <button class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":52,\"column\":27},\"end\":{\"line\":52,\"column\":41}}}) : helper)))\n    + \"button \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":52,\"column\":48},\"end\":{\"line\":52,\"column\":62}}}) : helper)))\n    + \"dropdown-button \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":52,\"column\":78},\"end\":{\"line\":52,\"column\":92}}}) : helper)))\n    + \"popup-section-item\\\">\\n                <span class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":53,\"column\":29},\"end\":{\"line\":53,\"column\":43}}}) : helper)))\n    + \"icon \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":53,\"column\":48},\"end\":{\"line\":53,\"column\":62}}}) : helper)))\n    + \"ic-state\\\"></span>\\n                <span id=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":54,\"column\":26},\"end\":{\"line\":54,\"column\":40}}}) : helper)))\n    + \"schedule-state\\\" class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":54,\"column\":63},\"end\":{\"line\":54,\"column\":77}}}) : helper)))\n    + \"content\\\">\"\n    + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"state\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(9, data, 0),\"inverse\":container.program(11, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":54,\"column\":86},\"end\":{\"line\":54,\"column\":148}}})) != null ? stack1 : \"\")\n    + \"</span>\\n                <span class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":55,\"column\":29},\"end\":{\"line\":55,\"column\":43}}}) : helper)))\n    + \"icon \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":55,\"column\":48},\"end\":{\"line\":55,\"column\":62}}}) : helper)))\n    + \"dropdown-arrow\\\"></span>\\n            </button>\\n            <ul class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":57,\"column\":23},\"end\":{\"line\":57,\"column\":37}}}) : helper)))\n    + \"dropdown-menu\\\" style=\\\"z-index: \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"zIndex\") || (depth0 != null ? lookupProperty(depth0,\"zIndex\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"zIndex\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":57,\"column\":68},\"end\":{\"line\":57,\"column\":78}}}) : helper)))\n    + \"\\\">\\n                <li class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":58,\"column\":27},\"end\":{\"line\":58,\"column\":41}}}) : helper)))\n    + \"popup-section-item \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":58,\"column\":60},\"end\":{\"line\":58,\"column\":74}}}) : helper)))\n    + \"dropdown-menu-item\\\">\\n                <span class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":59,\"column\":29},\"end\":{\"line\":59,\"column\":43}}}) : helper)))\n    + \"icon \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":59,\"column\":48},\"end\":{\"line\":59,\"column\":62}}}) : helper)))\n    + \"none\\\"></span>\\n                <span class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":60,\"column\":29},\"end\":{\"line\":60,\"column\":43}}}) : helper)))\n    + \"content\\\">\"\n    + ((stack1 = ((helper = (helper = lookupProperty(helpers,\"popupStateBusy-tmpl\") || (depth0 != null ? lookupProperty(depth0,\"popupStateBusy-tmpl\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"popupStateBusy-tmpl\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":60,\"column\":52},\"end\":{\"line\":60,\"column\":77}}}) : helper))) != null ? stack1 : \"\")\n    + \"</span>\\n                </li>\\n                <li class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":62,\"column\":27},\"end\":{\"line\":62,\"column\":41}}}) : helper)))\n    + \"popup-section-item \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":62,\"column\":60},\"end\":{\"line\":62,\"column\":74}}}) : helper)))\n    + \"dropdown-menu-item\\\">\\n                <span class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":63,\"column\":29},\"end\":{\"line\":63,\"column\":43}}}) : helper)))\n    + \"icon \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":63,\"column\":48},\"end\":{\"line\":63,\"column\":62}}}) : helper)))\n    + \"none\\\"></span>\\n                <span class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":64,\"column\":29},\"end\":{\"line\":64,\"column\":43}}}) : helper)))\n    + \"content\\\">\"\n    + ((stack1 = ((helper = (helper = lookupProperty(helpers,\"popupStateFree-tmpl\") || (depth0 != null ? lookupProperty(depth0,\"popupStateFree-tmpl\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"popupStateFree-tmpl\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":64,\"column\":52},\"end\":{\"line\":64,\"column\":77}}}) : helper))) != null ? stack1 : \"\")\n    + \"</span>\\n                </li>\\n            </ul>\\n        </div>\\n        <button class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":68,\"column\":23},\"end\":{\"line\":68,\"column\":37}}}) : helper)))\n    + \"button \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":68,\"column\":44},\"end\":{\"line\":68,\"column\":58}}}) : helper)))\n    + \"popup-close\\\"><span class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":68,\"column\":84},\"end\":{\"line\":68,\"column\":98}}}) : helper)))\n    + \"icon \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":68,\"column\":103},\"end\":{\"line\":68,\"column\":117}}}) : helper)))\n    + \"ic-close\\\"></span></button>\\n        <div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":69,\"column\":20},\"end\":{\"line\":69,\"column\":34}}}) : helper)))\n    + \"section-button-save\\\"><button class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":69,\"column\":70},\"end\":{\"line\":69,\"column\":84}}}) : helper)))\n    + \"button \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":69,\"column\":91},\"end\":{\"line\":69,\"column\":105}}}) : helper)))\n    + \"confirm \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":69,\"column\":113},\"end\":{\"line\":69,\"column\":127}}}) : helper)))\n    + \"popup-save\\\"><span>\"\n    + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"isEditMode\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(13, data, 0),\"inverse\":container.program(15, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":69,\"column\":145},\"end\":{\"line\":69,\"column\":220}}})) != null ? stack1 : \"\")\n    + \"</span></button></div>\\n    </div>\\n    <div id=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":71,\"column\":13},\"end\":{\"line\":71,\"column\":27}}}) : helper)))\n    + \"popup-arrow\\\" class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":71,\"column\":47},\"end\":{\"line\":71,\"column\":61}}}) : helper)))\n    + \"popup-arrow \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":71,\"column\":73},\"end\":{\"line\":71,\"column\":87}}}) : helper)))\n    + \"arrow-bottom\\\">\\n        <div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":72,\"column\":20},\"end\":{\"line\":72,\"column\":34}}}) : helper)))\n    + \"popup-arrow-border\\\">\\n            <div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":73,\"column\":24},\"end\":{\"line\":73,\"column\":38}}}) : helper)))\n    + \"popup-arrow-fill\\\"></div>\\n        </div>\\n    </div>\\n</div>\\n\";\n},\"useData\":true});","var Handlebars = require('/Users/nhnent/Jodeng/workspace/Work/tui.calendar-new/node_modules/handlebars/runtime.js');\nmodule.exports = (Handlebars['default'] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data) {\n    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"<div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":11,\"column\":45},\"end\":{\"line\":11,\"column\":59}}}) : helper)))\n    + \"popup-detail-item\\\"><span class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":11,\"column\":91},\"end\":{\"line\":11,\"column\":105}}}) : helper)))\n    + \"icon \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":11,\"column\":110},\"end\":{\"line\":11,\"column\":124}}}) : helper)))\n    + \"ic-location-b\\\"></span><span class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":11,\"column\":159},\"end\":{\"line\":11,\"column\":173}}}) : helper)))\n    + \"content\\\">\"\n    + ((stack1 = (lookupProperty(helpers,\"popupDetailLocation-tmpl\")||(depth0 && lookupProperty(depth0,\"popupDetailLocation-tmpl\"))||alias2).call(alias1,(depth0 != null ? lookupProperty(depth0,\"schedule\") : depth0),{\"name\":\"popupDetailLocation-tmpl\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":11,\"column\":182},\"end\":{\"line\":11,\"column\":221}}})) != null ? stack1 : \"\")\n    + \"</span></div>\";\n},\"3\":function(container,depth0,helpers,partials,data) {\n    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"<div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":12,\"column\":51},\"end\":{\"line\":12,\"column\":65}}}) : helper)))\n    + \"popup-detail-item\\\"><span class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":12,\"column\":97},\"end\":{\"line\":12,\"column\":111}}}) : helper)))\n    + \"icon \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":12,\"column\":116},\"end\":{\"line\":12,\"column\":130}}}) : helper)))\n    + \"ic-repeat-b\\\"></span><span class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":12,\"column\":163},\"end\":{\"line\":12,\"column\":177}}}) : helper)))\n    + \"content\\\">\"\n    + ((stack1 = (lookupProperty(helpers,\"popupDetailRepeat-tmpl\")||(depth0 && lookupProperty(depth0,\"popupDetailRepeat-tmpl\"))||alias2).call(alias1,(depth0 != null ? lookupProperty(depth0,\"schedule\") : depth0),{\"name\":\"popupDetailRepeat-tmpl\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":12,\"column\":186},\"end\":{\"line\":12,\"column\":223}}})) != null ? stack1 : \"\")\n    + \"</span></div>\";\n},\"5\":function(container,depth0,helpers,partials,data) {\n    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"<div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":13,\"column\":46},\"end\":{\"line\":13,\"column\":60}}}) : helper)))\n    + \"popup-detail-item \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":13,\"column\":78},\"end\":{\"line\":13,\"column\":92}}}) : helper)))\n    + \"popup-detail-item-indent\\\"><span class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":13,\"column\":131},\"end\":{\"line\":13,\"column\":145}}}) : helper)))\n    + \"icon \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":13,\"column\":150},\"end\":{\"line\":13,\"column\":164}}}) : helper)))\n    + \"ic-user-b\\\"></span><span class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":13,\"column\":195},\"end\":{\"line\":13,\"column\":209}}}) : helper)))\n    + \"content\\\">\"\n    + ((stack1 = (lookupProperty(helpers,\"popupDetailUser-tmpl\")||(depth0 && lookupProperty(depth0,\"popupDetailUser-tmpl\"))||alias2).call(alias1,(depth0 != null ? lookupProperty(depth0,\"schedule\") : depth0),{\"name\":\"popupDetailUser-tmpl\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":13,\"column\":218},\"end\":{\"line\":13,\"column\":253}}})) != null ? stack1 : \"\")\n    + \"</span></div>\";\n},\"7\":function(container,depth0,helpers,partials,data) {\n    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"<div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":14,\"column\":42},\"end\":{\"line\":14,\"column\":56}}}) : helper)))\n    + \"popup-detail-item\\\"><span class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":14,\"column\":88},\"end\":{\"line\":14,\"column\":102}}}) : helper)))\n    + \"icon \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":14,\"column\":107},\"end\":{\"line\":14,\"column\":121}}}) : helper)))\n    + \"ic-state-b\\\"></span><span class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":14,\"column\":153},\"end\":{\"line\":14,\"column\":167}}}) : helper)))\n    + \"content\\\">\"\n    + ((stack1 = (lookupProperty(helpers,\"popupDetailState-tmpl\")||(depth0 && lookupProperty(depth0,\"popupDetailState-tmpl\"))||alias2).call(alias1,(depth0 != null ? lookupProperty(depth0,\"schedule\") : depth0),{\"name\":\"popupDetailState-tmpl\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":14,\"column\":176},\"end\":{\"line\":14,\"column\":212}}})) != null ? stack1 : \"\")\n    + \"</span></div>\";\n},\"9\":function(container,depth0,helpers,partials,data) {\n    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, alias5=container.lambda, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"        <div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":16,\"column\":20},\"end\":{\"line\":16,\"column\":34}}}) : helper)))\n    + \"popup-detail-item\\\"><span class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":16,\"column\":66},\"end\":{\"line\":16,\"column\":80}}}) : helper)))\n    + \"icon \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":16,\"column\":85},\"end\":{\"line\":16,\"column\":99}}}) : helper)))\n    + \"calendar-dot\\\" style=\\\"background-color: \"\n    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,\"schedule\") : depth0)) != null ? lookupProperty(stack1,\"bgColor\") : stack1), depth0))\n    + \"\\\"></span><span class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":16,\"column\":180},\"end\":{\"line\":16,\"column\":194}}}) : helper)))\n    + \"content\\\">\"\n    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,\"calendar\") : depth0)) != null ? lookupProperty(stack1,\"name\") : stack1), depth0))\n    + \"</span></div>\\n\";\n},\"11\":function(container,depth0,helpers,partials,data) {\n    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"<div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":18,\"column\":41},\"end\":{\"line\":18,\"column\":55}}}) : helper)))\n    + \"popup-detail-item \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":18,\"column\":73},\"end\":{\"line\":18,\"column\":87}}}) : helper)))\n    + \"popup-detail-item-separate\\\"><span class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":18,\"column\":128},\"end\":{\"line\":18,\"column\":142}}}) : helper)))\n    + \"content\\\">\"\n    + ((stack1 = (lookupProperty(helpers,\"popupDetailBody-tmpl\")||(depth0 && lookupProperty(depth0,\"popupDetailBody-tmpl\"))||alias2).call(alias1,(depth0 != null ? lookupProperty(depth0,\"schedule\") : depth0),{\"name\":\"popupDetailBody-tmpl\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":18,\"column\":151},\"end\":{\"line\":18,\"column\":186}}})) != null ? stack1 : \"\")\n    + \"</span></div>\";\n},\"13\":function(container,depth0,helpers,partials,data) {\n    return \"\";\n},\"15\":function(container,depth0,helpers,partials,data) {\n    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"    <div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":22,\"column\":16},\"end\":{\"line\":22,\"column\":30}}}) : helper)))\n    + \"section-button\\\">\\n      <button class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":23,\"column\":21},\"end\":{\"line\":23,\"column\":35}}}) : helper)))\n    + \"popup-edit\\\"><span class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":23,\"column\":60},\"end\":{\"line\":23,\"column\":74}}}) : helper)))\n    + \"icon \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":23,\"column\":79},\"end\":{\"line\":23,\"column\":93}}}) : helper)))\n    + \"ic-edit\\\"></span><span class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":23,\"column\":122},\"end\":{\"line\":23,\"column\":136}}}) : helper)))\n    + \"content\\\">\"\n    + ((stack1 = ((helper = (helper = lookupProperty(helpers,\"popupEdit-tmpl\") || (depth0 != null ? lookupProperty(depth0,\"popupEdit-tmpl\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"popupEdit-tmpl\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":23,\"column\":145},\"end\":{\"line\":23,\"column\":165}}}) : helper))) != null ? stack1 : \"\")\n    + \"</span></button>\\n      <div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":24,\"column\":18},\"end\":{\"line\":24,\"column\":32}}}) : helper)))\n    + \"popup-vertical-line\\\"></div>\\n      <button class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":25,\"column\":21},\"end\":{\"line\":25,\"column\":35}}}) : helper)))\n    + \"popup-delete\\\"><span class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":25,\"column\":62},\"end\":{\"line\":25,\"column\":76}}}) : helper)))\n    + \"icon \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":25,\"column\":81},\"end\":{\"line\":25,\"column\":95}}}) : helper)))\n    + \"ic-delete\\\"></span><span class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":25,\"column\":126},\"end\":{\"line\":25,\"column\":140}}}) : helper)))\n    + \"content\\\">\"\n    + ((stack1 = ((helper = (helper = lookupProperty(helpers,\"popupDelete-tmpl\") || (depth0 != null ? lookupProperty(depth0,\"popupDelete-tmpl\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"popupDelete-tmpl\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":25,\"column\":149},\"end\":{\"line\":25,\"column\":171}}}) : helper))) != null ? stack1 : \"\")\n    + \"</span></button>\\n    </div>\\n\";\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, alias5=container.lambda, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"<div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":1,\"column\":12},\"end\":{\"line\":1,\"column\":26}}}) : helper)))\n    + \"popup \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":1,\"column\":32},\"end\":{\"line\":1,\"column\":46}}}) : helper)))\n    + \"popup-detail\\\">\\n  <div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":2,\"column\":14},\"end\":{\"line\":2,\"column\":28}}}) : helper)))\n    + \"popup-container\\\">\\n    <div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":3,\"column\":16},\"end\":{\"line\":3,\"column\":30}}}) : helper)))\n    + \"popup-section \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":3,\"column\":44},\"end\":{\"line\":3,\"column\":58}}}) : helper)))\n    + \"section-header\\\">\\n      <div>\\n        <span class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":5,\"column\":21},\"end\":{\"line\":5,\"column\":35}}}) : helper)))\n    + \"schedule-private \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":5,\"column\":52},\"end\":{\"line\":5,\"column\":66}}}) : helper)))\n    + \"icon \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":5,\"column\":71},\"end\":{\"line\":5,\"column\":85}}}) : helper)))\n    + \"ic-private\\\"></span>\\n        <span class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":6,\"column\":21},\"end\":{\"line\":6,\"column\":35}}}) : helper)))\n    + \"schedule-title\\\">\"\n    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,\"schedule\") : depth0)) != null ? lookupProperty(stack1,\"title\") : stack1), depth0))\n    + \"</span>\\n      </div>\\n      <div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":8,\"column\":18},\"end\":{\"line\":8,\"column\":32}}}) : helper)))\n    + \"popup-detail-date \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":8,\"column\":50},\"end\":{\"line\":8,\"column\":64}}}) : helper)))\n    + \"content\\\">\"\n    + ((stack1 = (lookupProperty(helpers,\"popupDetailDate-tmpl\")||(depth0 && lookupProperty(depth0,\"popupDetailDate-tmpl\"))||alias2).call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"schedule\") : depth0)) != null ? lookupProperty(stack1,\"isAllDay\") : stack1),((stack1 = (depth0 != null ? lookupProperty(depth0,\"schedule\") : depth0)) != null ? lookupProperty(stack1,\"start\") : stack1),((stack1 = (depth0 != null ? lookupProperty(depth0,\"schedule\") : depth0)) != null ? lookupProperty(stack1,\"end\") : stack1),{\"name\":\"popupDetailDate-tmpl\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":8,\"column\":73},\"end\":{\"line\":8,\"column\":145}}})) != null ? stack1 : \"\")\n    + \"</div>\\n    </div>\\n    <div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":10,\"column\":16},\"end\":{\"line\":10,\"column\":30}}}) : helper)))\n    + \"section-detail\\\">\\n        \"\n    + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"schedule\") : depth0)) != null ? lookupProperty(stack1,\"location\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":11,\"column\":8},\"end\":{\"line\":11,\"column\":241}}})) != null ? stack1 : \"\")\n    + \"\\n        \"\n    + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"schedule\") : depth0)) != null ? lookupProperty(stack1,\"recurrenceRule\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(3, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":12,\"column\":8},\"end\":{\"line\":12,\"column\":243}}})) != null ? stack1 : \"\")\n    + \"\\n        \"\n    + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"schedule\") : depth0)) != null ? lookupProperty(stack1,\"attendees\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(5, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":13,\"column\":8},\"end\":{\"line\":13,\"column\":273}}})) != null ? stack1 : \"\")\n    + \"\\n        \"\n    + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"schedule\") : depth0)) != null ? lookupProperty(stack1,\"state\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(7, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":14,\"column\":8},\"end\":{\"line\":14,\"column\":232}}})) != null ? stack1 : \"\")\n    + \"\\n\"\n    + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"calendar\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(9, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":15,\"column\":8},\"end\":{\"line\":17,\"column\":15}}})) != null ? stack1 : \"\")\n    + \"        \"\n    + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"schedule\") : depth0)) != null ? lookupProperty(stack1,\"body\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(11, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":18,\"column\":8},\"end\":{\"line\":18,\"column\":206}}})) != null ? stack1 : \"\")\n    + \"\\n    </div>\\n\"\n    + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"schedule\") : depth0)) != null ? lookupProperty(stack1,\"isReadOnly\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(13, data, 0),\"inverse\":container.program(15, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":20,\"column\":4},\"end\":{\"line\":27,\"column\":11}}})) != null ? stack1 : \"\")\n    + \"  </div>\\n  <div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":29,\"column\":14},\"end\":{\"line\":29,\"column\":28}}}) : helper)))\n    + \"popup-top-line\\\" style=\\\"background-color: \"\n    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,\"schedule\") : depth0)) != null ? lookupProperty(stack1,\"bgColor\") : stack1), depth0))\n    + \"\\\"></div>\\n  <div id=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":30,\"column\":11},\"end\":{\"line\":30,\"column\":25}}}) : helper)))\n    + \"popup-arrow\\\" class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":30,\"column\":45},\"end\":{\"line\":30,\"column\":59}}}) : helper)))\n    + \"popup-arrow \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":30,\"column\":71},\"end\":{\"line\":30,\"column\":85}}}) : helper)))\n    + \"arrow-left\\\">\\n    <div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":31,\"column\":16},\"end\":{\"line\":31,\"column\":30}}}) : helper)))\n    + \"popup-arrow-border\\\">\\n        <div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":32,\"column\":20},\"end\":{\"line\":32,\"column\":34}}}) : helper)))\n    + \"popup-arrow-fill\\\"></div>\\n    </div>\\n  </div>\\n</div>\\n\";\n},\"useData\":true});","/**\n * @fileoverview Dayname click event hander module\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\nvar util = require('tui-code-snippet');\nvar config = require('../../config');\nvar domutil = require('../../common/domutil');\n\n/**\n * @constructor\n * @implements {Handler}\n * @mixes util.CustomEvents\n * @param {Drag} [dragHandler] - Drag handler instance.\n * @param {DayName} [dayNameView] - DayName view instance.\n * @param {Base} [baseController] - Base controller instance.\n */\nfunction DayNameClick(dragHandler, dayNameView, baseController) {\n    /**\n     * @type {Drag}\n     */\n    this.dragHandler = dragHandler;\n\n    /**\n     * @type {DayName}\n     */\n    this.dayNameView = dayNameView;\n\n    /**\n     * @type {Base}\n     */\n    this.baseController = baseController;\n\n    dragHandler.on({\n        'click': this._onClick\n    }, this);\n}\n\n/**\n * Destroy method\n */\nDayNameClick.prototype.destroy = function() {\n    this.dragHandler.off(this);\n    this.dayNameView = this.baseController = this.dragHandler = null;\n};\n\n/**\n * Check target element is expected condition for activate this plugins.\n * @param {HTMLElement} target - The element to check\n * @returns {string} - model id\n */\nDayNameClick.prototype.checkExpectCondition = function(target) {\n    var container = domutil.closest(target, config.classname('.dayname-date-area'));\n\n    if (!container) {\n        return false;\n    }\n\n    return true;\n};\n\n/**\n * Click event hander\n * @param {object} clickEvent - click event from {@link Drag}\n * @emits DayNameClick#clickDayname\n */\nDayNameClick.prototype._onClick = function(clickEvent) {\n    var self = this,\n        target = clickEvent.target,\n        daynameView = this.checkExpectCondition(target),\n        blockElement = domutil.closest(target, config.classname('.dayname'));\n\n    if (!daynameView || !blockElement) {\n        return;\n    }\n\n    /**\n     * @events DayNameClick#clickDayname\n     * @type {object}\n     * @property {string} date - click date\n     */\n    self.fire('clickDayname', {\n        date: domutil.getData(blockElement, 'date')\n    });\n};\n\nutil.CustomEvents.mixin(DayNameClick);\n\nmodule.exports = DayNameClick;\n","/**\n * @fileoverview Click handle module for daygrid schedules\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\nvar util = require('tui-code-snippet');\nvar config = require('../../config');\nvar domutil = require('../../common/domutil');\nvar DayGridMove = require('./move');\n\n/**\n * @constructor\n * @implements {Handler}\n * @mixes CustomEvents\n * @param {Drag} [dragHandler] - Drag handler instance.\n * @param {DayGrid} [view] - daygrid view instance.\n * @param {Base} [controller] - Base controller instance.\n */\nfunction DayGridClick(dragHandler, view, controller) {\n    /**\n     * @type {Drag}\n     */\n    this.dragHandler = dragHandler;\n\n    /**\n     * @type {DayGrid}\n     */\n    this.view = view;\n\n    /**\n     * @type {Base}\n     */\n    this.controller = controller;\n\n    dragHandler.on({\n        'click': this._onClick\n    }, this);\n}\n\n/**\n * Destroy handler module\n */\nDayGridClick.prototype.destroy = function() {\n    this.dragHandler.off(this);\n    this.view = this.controller = this.dragHandler = null;\n};\n\n/**\n * Check target element is expected condition for activate this plugins.\n * @param {HTMLElement} target - The element to check\n * @returns {string} - model id\n */\nDayGridClick.prototype.checkExpectCondition = DayGridMove.prototype.checkExpectedCondition;\n\n/**\n * Click event handler\n * @param {object} clickEvent - click event data\n * @emits DayGridClick#clickSchedule\n * @emits DayGridClick#collapse\n * @emits DayGridClick#expand\n */\nDayGridClick.prototype._onClick = function(clickEvent) {\n    var self = this,\n        target = clickEvent.target,\n        dayGridScheduleView = this.checkExpectCondition(target),\n        scheduleCollection = this.controller.schedules,\n        collapseBtnElement = domutil.closest(\n            target,\n            config.classname('.weekday-collapse-btn')\n        ),\n        expandBtnElement = domutil.closest(\n            target,\n            config.classname('.weekday-exceed-in-week')\n        ),\n        containsTarget = this.view.container.contains(target);\n    var blockElement, scheduleElement;\n\n    if (!containsTarget) {\n        return;\n    }\n\n    if (collapseBtnElement) {\n        /**\n         * click collpase btn event\n         * @events DayGridClick#collapse\n         */\n        self.fire('collapse');\n\n        return;\n    }\n\n    if (expandBtnElement) {\n        this.view.setState({\n            clickedExpandBtnIndex: parseInt(domutil.getData(expandBtnElement, 'index'), 10)\n        });\n\n        /**\n         * click expand btn event\n         * @events DayGridClick#expand\n         */\n        self.fire('expand');\n\n        return;\n    }\n\n    if (!dayGridScheduleView) {\n        return;\n    }\n\n    scheduleElement = domutil.closest(target, config.classname('.weekday-schedule'));\n    if (scheduleElement) {\n        blockElement = domutil.closest(target, config.classname('.weekday-schedule-block'));\n        scheduleCollection.doWhenHas(domutil.getData(blockElement, 'id'), function(schedule) {\n            /**\n             * @events DayGridClick#clickSchedule\n             * @type {object}\n             * @property {Schedule} schedule - schedule instance\n             * @property {MouseEvent} event - MouseEvent object\n             */\n            self.fire('clickSchedule', {\n                schedule: schedule,\n                event: clickEvent.originEvent\n            });\n        });\n    }\n};\n\nutil.CustomEvents.mixin(DayGridClick);\n\nmodule.exports = DayGridClick;\n","/**\n * @fileoverview Effect module for DayGrid.Move\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\nvar util = require('tui-code-snippet');\nvar config = require('../../config');\nvar datetime = require('../../common/datetime');\nvar domutil = require('../../common/domutil');\nvar reqAnimFrame = require('../../common/reqAnimFrame');\n\n/**\n * Class for DayGrid.Move dragging effect.\n * @constructor\n * @param {DayGridMove} daygridMove - instance of DayGridMove.\n */\nfunction DayGridMoveGuide(daygridMove) {\n    /**\n     * @type {DayGridMove}\n     */\n    this.daygridMove = daygridMove;\n\n    /**\n     * The element that actually contains the event element\n     * @type {HTMLDIVElement}\n     */\n    this.scheduleContainer = null;\n\n    /**\n     * @type {number}\n     */\n    this._dragStartXIndex = null;\n\n    /**\n     * @type {HTMLDIVElement}\n     */\n    this.guideElement = null;\n\n    /**\n     * @type {HTMLElement[]}\n     */\n    this.elements = null;\n\n    daygridMove.on({\n        'dragstart': this._onDragStart,\n        'drag': this._onDrag,\n        'dragend': this._clearGuideElement,\n        'click': this._clearGuideElement\n    }, this);\n}\n\n/**\n * Destroy method\n */\nDayGridMoveGuide.prototype.destroy = function() {\n    this._clearGuideElement();\n    this.daygridMove.off(this);\n    this.daygridMove = this.scheduleContainer = this._dragStartXIndex =\n        this.elements = this.guideElement = null;\n};\n\n/**\n * Clear guide element.\n */\nDayGridMoveGuide.prototype._clearGuideElement = function() {\n    this._showOriginScheduleBlocks();\n\n    domutil.remove(this.guideElement);\n\n    if (!util.browser.msie) {\n        domutil.removeClass(global.document.body, config.classname('dragging'));\n    }\n\n    this._dragStartXIndex = this.getScheduleDataFunc = this.guideElement = null;\n};\n\n/**\n * Dim element blocks\n * @param {number} modelID - Schedule model instance ID\n */\nDayGridMoveGuide.prototype._hideOriginScheduleBlocks = function(modelID) {\n    var className = config.classname('weekday-schedule-block-dragging-dim');\n    var scheduleBlocks = domutil.find(\n        config.classname('.weekday-schedule-block'),\n        this.daygridMove.view.container,\n        true\n    );\n\n    this.elements = util.filter(scheduleBlocks, function(schedule) {\n        return domutil.getData(schedule, 'id') === modelID;\n    });\n\n    util.forEach(this.elements, function(el) {\n        domutil.addClass(el, className);\n    });\n};\n\n/**\n * Show element blocks\n */\nDayGridMoveGuide.prototype._showOriginScheduleBlocks = function() {\n    var className = config.classname('weekday-schedule-block-dragging-dim');\n\n    util.forEach(this.elements, function(el) {\n        domutil.removeClass(el, className);\n    });\n};\n\n/**\n * Highlight element blocks\n * @param {Schedule} model - model\n * @param {HTMLElement} parent - parent element\n */\nDayGridMoveGuide.prototype._highlightScheduleBlocks = function(model, parent) {\n    var elements = domutil.find(config.classname('.weekday-schedule'), parent, true);\n\n    util.forEach(elements, function(el) {\n        el.style.margin = '0';\n\n        if (!model.isFocused) {\n            el.style.backgroundColor = model.dragBgColor;\n            el.style.borderLeftColor = model.borderColor;\n            el.style.color = '#ffffff';\n        }\n    });\n};\n\n/**\n * Refresh guide element.\n * @param {number} leftPercent - left percent of guide element.\n * @param {number} widthPercent - width percent of guide element.\n * @param {boolean} isExceededLeft - schedule start is faster then render start date?\n * @param {boolean} isExceededRight - schedule end is later then render end date?\n */\nDayGridMoveGuide.prototype.refreshGuideElement = function(leftPercent, widthPercent, isExceededLeft, isExceededRight) {\n    var guideElement = this.guideElement;\n\n    reqAnimFrame.requestAnimFrame(function() {\n        guideElement.style.left = leftPercent + '%';\n        guideElement.style.width = widthPercent + '%';\n\n        if (isExceededLeft) {\n            domutil.addClass(guideElement, config.classname('weekday-exceed-left'));\n        } else {\n            domutil.removeClass(guideElement, config.classname('weekday-exceed-left'));\n        }\n\n        if (isExceededRight) {\n            domutil.addClass(guideElement, config.classname('weekday-exceed-right'));\n        } else {\n            domutil.removeClass(guideElement, config.classname('weekday-exceed-right'));\n        }\n    });\n};\n\n/**\n * Get schedule block information from schedule data.\n *\n * For example, there is single schedule has 10 length. but render range in view is 5 then\n * rendered block must be cut out to render properly. in this case, this method return\n * how many block are cut before rendering.\n *\n * @param {object} dragStartEventData - schedule data from DayGrid.Move handler.\n * @returns {function} function that return schedule block information.\n */\nDayGridMoveGuide.prototype._getScheduleBlockDataFunc = function(dragStartEventData) {\n    var model = dragStartEventData.model,\n        datesInRange = dragStartEventData.datesInRange,\n        range = dragStartEventData.range,\n        baseWidthPercent = (100 / datesInRange),\n        originScheduleStarts = datetime.start(model.start),\n        originScheduleEnds = datetime.end(model.end),\n        renderStartDate = datetime.start(range[0]),\n        renderEndDate = datetime.end(range[range.length - 1]),\n        fromLeft = Math.ceil((originScheduleStarts.getTime() -\n            renderStartDate.getTime()) / datetime.MILLISECONDS_PER_DAY) || 0,\n        fromRight = Math.ceil((originScheduleEnds.getTime() -\n            renderEndDate.getTime()) / datetime.MILLISECONDS_PER_DAY) || 0;\n\n    return function(indexOffset) {\n        return {\n            baseWidthPercent: baseWidthPercent,\n            fromLeft: fromLeft + indexOffset,\n            fromRight: fromRight + indexOffset\n        };\n    };\n};\n\n/**\n * DragStart event handler.\n * @param {object} dragStartEventData - schedule data.\n */\nDayGridMoveGuide.prototype._onDragStart = function(dragStartEventData) {\n    var container = this.daygridMove.view.container,\n        guideElement = this.guideElement = dragStartEventData.scheduleBlockElement.cloneNode(true),\n        scheduleContainer;\n\n    if (!util.browser.msie) {\n        domutil.addClass(global.document.body, config.classname('dragging'));\n    }\n\n    this._hideOriginScheduleBlocks(String(dragStartEventData.model.cid()));\n\n    scheduleContainer = domutil.find(config.classname('.weekday-schedules'), container);\n    domutil.appendHTMLElement('div', guideElement, config.classname('weekday-schedule-cover'));\n    scheduleContainer.appendChild(guideElement);\n\n    this._dragStartXIndex = dragStartEventData.xIndex;\n    this.getScheduleDataFunc = this._getScheduleBlockDataFunc(dragStartEventData);\n\n    this._highlightScheduleBlocks(dragStartEventData.model, guideElement);\n};\n\n/**\n * Drag event handler.\n * @param {object} dragEventData - schedule data.\n */\nDayGridMoveGuide.prototype._onDrag = function(dragEventData) {\n    var getScheduleDataFunc = this.getScheduleDataFunc,\n        dragStartXIndex = this._dragStartXIndex,\n        datesInRange = dragEventData.datesInRange,\n        grids = dragEventData.grids,\n        scheduleData,\n        isExceededLeft,\n        isExceededRight,\n        originLength,\n        leftIndex,\n        size,\n        newLeft,\n        newWidth;\n\n    if (!getScheduleDataFunc) {\n        return;\n    }\n\n    scheduleData = getScheduleDataFunc(dragEventData.xIndex - dragStartXIndex);\n    isExceededLeft = scheduleData.fromLeft < 0;\n    isExceededRight = scheduleData.fromRight > 0;\n\n    leftIndex = Math.max(0, scheduleData.fromLeft);\n    originLength = (scheduleData.fromLeft * -1) + (datesInRange + scheduleData.fromRight);\n    size = isExceededLeft ? (originLength + scheduleData.fromLeft) : originLength;\n    size = isExceededRight ? (size - scheduleData.fromRight) : size;\n\n    newLeft = grids[leftIndex] ? grids[leftIndex].left : 0;\n    newWidth = getScheduleBlockWidth(leftIndex, size, grids);\n\n    this.refreshGuideElement(newLeft, newWidth, isExceededLeft, isExceededRight);\n};\n\n/**\n * Get schedule width based on grids\n * @param {number} left - left index\n * @param {number} size - schedule width\n * @param {Array} grids - dates information\n * @returns {number} element width\n */\nfunction getScheduleBlockWidth(left, size, grids) {\n    var width = 0;\n    var i = 0;\n    var length = grids.length;\n    for (; i < size; i += 1) {\n        left = (left + i) % length;\n        if (left < length) {\n            width += grids[left] ? grids[left].width : 0;\n        }\n    }\n\n    return width;\n}\n\nmodule.exports = DayGridMoveGuide;\n","/**\n * @fileoverview Handler module for WeekdayInWeek view's creation actions.\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\nvar util = require('tui-code-snippet');\nvar config = require('../../config');\nvar datetime = require('../../common/datetime');\nvar common = require('../../common/common');\nvar domutil = require('../../common/domutil');\nvar domevent = require('../../common/domevent');\nvar dayGridCore = require('./core');\nvar DayGridCreationGuide = require('./creationGuide');\nvar TZDate = require('../../common/timezone').Date;\n\nvar CLICK_DELAY = 300;\n\n/**\n * @constructor\n * @implements {Handler}\n * @mixes dayGridCore\n * @mixes CutomEvents\n * @param {Drag} [dragHandler] - Drag handler instance.\n * @param {DayGrid} [view] - DayGrid view instance.\n * @param {Base} [controller] - Base controller instance.\n * @param {Options} [options] - calendar Options\n */\nfunction DayGridCreation(dragHandler, view, controller, options) {\n    /**\n     * Drag handler instance.\n     * @type {Drag}\n     */\n    this.dragHandler = dragHandler;\n\n    /**\n     * view instance.\n     * @type {DayGrid}\n     */\n    this.view = view;\n\n    /**\n     * Base controller instance.\n     * @type {Base}\n     */\n    this.controller = controller;\n\n    /**\n     * @type {function}\n     */\n    this.getScheduleDataFunc = null;\n\n    /**\n     * @type {DayGridCreationGuide}\n     */\n    this.guide = new DayGridCreationGuide(this);\n\n    /**\n     * @type {boolean}\n     */\n    this._requestOnClick = false;\n\n    /**\n     * @type {boolean}\n     */\n    this._disableDblClick = options.disableDblClick;\n\n    /**\n     * @type {boolean}\n     */\n    this._disableClick = options.disableClick;\n\n    dragHandler.on('dragStart', this._onDragStart, this);\n    dragHandler.on('click', this._onClick, this);\n\n    if (this._disableDblClick) {\n        CLICK_DELAY = 0;\n    } else {\n        domevent.on(view.container, 'dblclick', this._onDblClick, this);\n    }\n}\n\n/**\n * Destroy method\n */\nDayGridCreation.prototype.destroy = function() {\n    this.guide.destroy();\n    this.dragHandler.off(this);\n\n    if (this.view && this.view.container) {\n        domevent.off(this.view.container, 'dblclick', this._onDblClick, this);\n    }\n\n    this.dragHandler = this.view = this.controller = this.getScheduleDataFunc = null;\n};\n\n/**\n * Check dragstart target is expected conditions for this handler.\n * @param {HTMLElement} target - dragstart event handler's target element.\n * @returns {boolean|WeekdayInWeek} return WeekdayInWeek view instance when satiate condition.\n */\nDayGridCreation.prototype.checkExpectedCondition = function(target) {\n    var cssClass = domutil.getClass(target).trim();\n    var excludeTarget = true;\n    var matches, schedulesElement;\n\n    if (domutil.closest(target, config.classname('.weekday-exceed-in-week'))\n        || domutil.closest(target, config.classname('.weekday-collapse-btn'))\n    ) {\n        return false;\n    }\n\n    if (domutil.closest(target, config.classname('.weekday-schedule-block'), excludeTarget)) {\n        return false;\n    }\n\n    schedulesElement = domutil.closest(target, config.classname('.weekday-schedules'));\n    if (!schedulesElement && cssClass !== config.classname('weekday-schedules')) {\n        return false;\n    }\n\n    target = schedulesElement ? schedulesElement.parentNode : target.parentNode;\n    cssClass = domutil.getClass(target);\n    matches = cssClass.match(config.daygrid.getViewIDRegExp);\n\n    if (!matches || matches.length < 2) {\n        return false;\n    }\n\n    return util.pick(this.view.children.items, matches[1]);\n};\n\n/**\n * Request schedule model creation to controller by custom schedules.\n * @fires {DayGridCreation#beforeCreateSchedule}\n * @param {object} scheduleData - schedule data from DayGridCreation module.\n */\nDayGridCreation.prototype._createSchedule = function(scheduleData) {\n    var dateRange = scheduleData.range,\n        startXIndex = scheduleData.dragStartXIndex,\n        xIndex = scheduleData.xIndex,\n        start, end;\n\n    // when inverse start, end then change it.\n    if (xIndex < startXIndex) {\n        startXIndex = xIndex + startXIndex;\n        xIndex = startXIndex - xIndex;\n        startXIndex = startXIndex - xIndex;\n    }\n\n    start = new TZDate(dateRange[startXIndex]);\n    end = datetime.end(dateRange[xIndex]);\n\n    /**\n     * @event {DayGridCreation#beforeCreateSchedule}\n     * @type {object}\n     * @property {string} category - schedule category\n     * @property {boolean} isAllDay - whether schedule is fired in view area?\n     * @property {Date} start - select start time\n     * @property {Date} end - select end time\n     * @property {DayGridCreationGuide} guide - DayGridCreationGuide instance\n     * @property {string} triggerEventName - event name\n     */\n    this.fire('beforeCreateSchedule', {\n        category: this.view.options.viewName,\n        isAllDay: true,\n        start: start,\n        end: end,\n        guide: this.guide,\n        triggerEventName: scheduleData.triggerEvent\n    });\n};\n\n/**\n * DragStart event handler method.\n * @emits DayGridCreation#dragstart\n * @param {object} dragStartEventData - Drag#dragStart event handler schedule data.\n */\nDayGridCreation.prototype._onDragStart = function(dragStartEventData) {\n    var target = dragStartEventData.target,\n        result = this.checkExpectedCondition(target),\n        getScheduleDataFunc,\n        scheduleData;\n\n    if (!result) {\n        return;\n    }\n\n    this.dragHandler.on({\n        drag: this._onDrag,\n        dragEnd: this._onDragEnd\n    }, this);\n\n    getScheduleDataFunc = this._retriveScheduleData(this.view, dragStartEventData.originEvent);\n    this.getScheduleDataFunc = getScheduleDataFunc;\n\n    scheduleData = getScheduleDataFunc(dragStartEventData.originEvent);\n\n    /**\n     * @event DayGridCreation#dragstart\n     * @type {object}\n     * @property {DayGridView} relatedView - view instance.\n     * @property {number} datesInRange - date count of this view.\n     * @property {number} dragStartXIndex - index number of dragstart grid index.\n     * @property {number} xIndex - index number of mouse positions.\n     */\n    this.fire('dragstart', scheduleData);\n};\n\n/**\n * Drag event handler method.\n * @emits DayGridCreation#drag\n * @param {object} dragEventData - Drag#drag event handler scheduledata.\n */\nDayGridCreation.prototype._onDrag = function(dragEventData) {\n    var getScheduleDataFunc = this.getScheduleDataFunc,\n        scheduleData;\n\n    if (!getScheduleDataFunc) {\n        return;\n    }\n\n    scheduleData = getScheduleDataFunc(dragEventData.originEvent);\n\n    /**\n     * @event DayGridCreation#drag\n     * @type {object}\n     * @property {DayGridView} relatedView - view instance.\n     * @property {number} datesInRange - date count of this view.\n     * @property {number} dragStartXIndex - index number of dragstart grid index.\n     * @property {number} xIndex - index number of mouse positions.\n     */\n    this.fire('drag', scheduleData);\n};\n\n/**\n * DragEnd event hander method.\n * @emits DayGridCreation#dragend\n * @param {object} dragEndEventData - Drag#dragEnd event handler data.\n * @param {string} [overrideEventName] - override emitted event name when supplied.\n */\nDayGridCreation.prototype._onDragEnd = function(dragEndEventData, overrideEventName) {\n    var getScheduleDataFunc = this.getScheduleDataFunc;\n    var scheduleData;\n\n    if (!getScheduleDataFunc) {\n        return;\n    }\n\n    this.dragHandler.off({\n        drag: this._onDrag,\n        dragEnd: this._onDragEnd\n    }, this);\n\n    scheduleData = getScheduleDataFunc(dragEndEventData.originEvent);\n\n    this._createSchedule(scheduleData);\n\n    /**\n     * @event DayGridCreation#dragend\n     * @type {object}\n     * @property {DayGridView} relatedView - view instance.\n     * @property {number} datesInRange - date count of this view.\n     * @property {number} dragStartXIndex - index number of dragstart grid index.\n     * @property {number} xIndex - index number of mouse positions.\n     */\n    this.fire(overrideEventName || 'dragend', scheduleData);\n\n    this.getScheduleDataFunc = null;\n};\n\n/**\n * Click event handler method.\n * @emits DayGridCreation#click\n * @param {object} clickEventData - Drag#click event handler data.\n */\nDayGridCreation.prototype._onClick = function(clickEventData) {\n    var self = this;\n    var getScheduleDataFunc, scheduleData;\n\n    if (!this.checkExpectedCondition(clickEventData.target) || this._disableClick) {\n        return;\n    }\n\n    getScheduleDataFunc = this._retriveScheduleData(this.view, clickEventData.originEvent);\n    scheduleData = getScheduleDataFunc(clickEventData.originEvent);\n\n    this._requestOnClick = true;\n    setTimeout(function() {\n        if (self._requestOnClick) {\n            self.fire('click', scheduleData);\n            self._createSchedule(scheduleData);\n        }\n        self._requestOnClick = false;\n    }, CLICK_DELAY);\n};\n\n/**\n * Dblclick event handler method.\n * @emits DayGridCreation#click\n * @param {object} clickEventData - Drag#Click event handler data.\n */\nDayGridCreation.prototype._onDblClick = function(clickEventData) {\n    var getScheduleDataFunc, scheduleData;\n\n    if (!this.checkExpectedCondition(clickEventData.target)) {\n        return;\n    }\n\n    getScheduleDataFunc = this._retriveScheduleData(this.view, clickEventData);\n    scheduleData = getScheduleDataFunc(clickEventData);\n\n    this.fire('click', scheduleData);\n\n    this._createSchedule(scheduleData);\n\n    this._requestOnClick = false;\n};\n\n/**\n * Invoke creation click\n * @param {Schedule} schedule - schedule instance\n */\nDayGridCreation.prototype.invokeCreationClick = function(schedule) {\n    var scheduleData = this._retriveScheduleDataFromDate(this.view, schedule.start);\n\n    this.fire('click', scheduleData);\n\n    this._createSchedule(scheduleData);\n};\n\ncommon.mixin(dayGridCore, DayGridCreation);\nutil.CustomEvents.mixin(DayGridCreation);\n\nmodule.exports = DayGridCreation;\n","/**\n * @fileoverview Guide element for DayGrid.Creation\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\nvar config = require('../../config');\nvar domutil = require('../../common/domutil');\nvar reqAnimFrame = require('../../common/reqAnimFrame');\n\n/**\n * Class for DayGrid.Creation dragging effect.\n * @constructor\n * @param {DayGridCreation} creation - instance of DayGridCreation.\n */\nfunction DayGridCreationGuide(creation) {\n    /**\n     * @type {DayGridCreation}\n     */\n    this.creation = creation;\n\n    /**\n     * @type {HTMLDIVElement}\n     */\n    this.scheduleContainer = null;\n\n    /**\n     * @type {HTMLDIVElement}\n     */\n    this.guideElement = document.createElement('div');\n\n    this.initializeGuideElement();\n    this.applyTheme(creation.controller.theme);\n\n    creation.on({\n        dragstart: this._createGuideElement,\n        drag: this._onDrag,\n        click: this._createGuideElement\n    }, this);\n}\n\n/**\n * Destroy method\n */\nDayGridCreationGuide.prototype.destroy = function() {\n    this.clearGuideElement();\n    this.creation.off(this);\n    this.creation = this.scheduleContainer = this.guideElement = null;\n};\n\n/**\n * initialize guide element's default style.\n */\nDayGridCreationGuide.prototype.initializeGuideElement = function() {\n    domutil.addClass(this.guideElement, config.classname('daygrid-guide-creation-block'));\n};\n\n/**\n * Drag event handler\n * @param {object} scheduleData - schedule data from DayGrid.Creation handler.\n */\nDayGridCreationGuide.prototype._onDrag = function(scheduleData) {\n    this._refreshGuideElement(scheduleData, true);\n};\n\n/**\n * Get element width based on narrowWeekend\n * @param {number} dragStartIndex - grid start index\n * @param {number} dragEndIndex - grid end index\n * @param {Array} grids - dates information\n * @returns {number} element width\n */\nDayGridCreationGuide.prototype._getGuideWidth = function(dragStartIndex, dragEndIndex, grids) {\n    var width = 0;\n    var i = dragStartIndex;\n    for (; i <= dragEndIndex; i += 1) {\n        width += grids[i] ? grids[i].width : 0;\n    }\n\n    return width;\n};\n\n/**\n * Refresh guide element.\n * @param {object} scheduleData - schedule data from DayGrid.Creation handler.\n * @param {boolean} defer - If set to true, set style in the next frame\n */\nDayGridCreationGuide.prototype._refreshGuideElement = function(scheduleData, defer) {\n    var guideElement = this.guideElement,\n        data = scheduleData,\n        dragStartXIndex = data.dragStartXIndex < data.xIndex ? data.dragStartXIndex : data.xIndex,\n        dragEndXIndex = data.dragStartXIndex < data.xIndex ? data.xIndex : data.dragStartXIndex,\n        leftPercent,\n        widthPercent;\n\n    leftPercent = data.grids[dragStartXIndex] ? data.grids[dragStartXIndex].left : 0;\n    widthPercent = this._getGuideWidth(dragStartXIndex, dragEndXIndex, data.grids);\n\n    /** eslint-disable require-jsdoc */\n    function setStyle() {\n        guideElement.style.display = 'block';\n        guideElement.style.left = leftPercent + '%';\n        guideElement.style.width = widthPercent + '%';\n    }\n\n    if (defer) {\n        reqAnimFrame.requestAnimFrame(setStyle);\n    } else {\n        setStyle();\n    }\n};\n\n/**\n * Clear guide element.\n */\nDayGridCreationGuide.prototype.clearGuideElement = function() {\n    var guideElement = this.guideElement;\n\n    domutil.remove(guideElement);\n\n    guideElement.style.display = 'none';\n    guideElement.style.left = '';\n    guideElement.style.width = '';\n};\n\n/**\n * Create guide element\n * @param {object} dragStartEventData - schedule data object of DayGrid.Creation.\n */\nDayGridCreationGuide.prototype._createGuideElement = function(dragStartEventData) {\n    var creation = this.creation,\n        view = creation.view,\n        container = view.container,\n        scheduleContainer = domutil.find(config.classname('.weekday-grid'), container);\n\n    scheduleContainer.appendChild(this.guideElement);\n    this._refreshGuideElement(dragStartEventData);\n};\n\n/**\n * Drag event handler.\n * @param {object} dragEventData - event data object of DayGrid.Creation.\n */\nDayGridCreationGuide.prototype._onDrag = function(dragEventData) {\n    this._refreshGuideElement(dragEventData);\n};\n\nDayGridCreationGuide.prototype.applyTheme = function(theme) {\n    var style = this.guideElement.style;\n\n    style.backgroundColor = theme.common.creationGuide.backgroundColor;\n    style.border = theme.common.creationGuide.border;\n};\n\nmodule.exports = DayGridCreationGuide;\n","/**\n * @fileoverview Resize handler module for DayGrid view.\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\nvar util = require('tui-code-snippet');\nvar config = require('../../config');\nvar datetime = require('../../common/datetime');\nvar domutil = require('../../common/domutil');\nvar common = require('../../common/common');\nvar dayGridCore = require('./core');\nvar DayGridResizeGuide = require('./resizeGuide');\nvar TZDate = require('../../common/timezone').Date;\n\n/**\n * @constructor\n * @implements {Handler}\n * @mixes dayGridCore\n * @mixes CustomEvents\n * @param {Drag} [dragHandler] - Drag handler instance.\n * @param {DayGrid} [view] - view instance.\n * @param {Base} [controller] - Base controller instance.\n */\nfunction DayGridResize(dragHandler, view, controller) {\n    /**\n     * Drag handler instance.\n     * @type {Drag}\n     */\n    this.dragHandler = dragHandler;\n\n    /**\n     * view instance.\n     * @type {DayGrid}\n     */\n    this.view = view;\n\n    /**\n     * Base controller instance.\n     * @type {Base}\n     */\n    this.controller = controller;\n\n    /**\n     * Temporary variable for dragStart event data.\n     * @type {object}\n     */\n    this._dragStart = null;\n\n    dragHandler.on({\n        dragStart: this._onDragStart\n    }, this);\n\n    /**\n     * @type {DayGridResizeGuide}\n     */\n    this.guide = new DayGridResizeGuide(this);\n}\n\n/**\n * Destroy method\n */\nDayGridResize.prototype.destroy = function() {\n    this.guide.destroy();\n    this.dragHandler.off(this);\n    this.dragHandler = this.view = this.controller =\n        this.guide = this._dragStart = null;\n};\n\n/**\n * Check dragstart target is expected conditions for this handler.\n * @param {HTMLElement} target - dragstart event handler's target element.\n * @returns {boolean|WeekdayInWeek} return WeekdayInWeek view instance when satiate condition.\n */\nDayGridResize.prototype.checkExpectedCondition = function(target) {\n    var cssClass = domutil.getClass(target),\n        matches;\n\n    if (!~cssClass.indexOf(config.classname('weekday-resize-handle'))) {\n        return false;\n    }\n\n    target = domutil.closest(target, config.classname('.weekday'));\n\n    if (!target) {\n        return false;\n    }\n\n    cssClass = domutil.getClass(target);\n    matches = cssClass.match(config.daygrid.getViewIDRegExp);\n\n    if (!matches || matches.length < 2) {\n        return false;\n    }\n\n    return util.pick(this.view.children.items, matches[1]);\n};\n\n/**\n * DragStart event handler.\n * @emits DayGridResize#dragstart\n * @param {object} dragStartEventData - schedule data.\n */\nDayGridResize.prototype._onDragStart = function(dragStartEventData) {\n    var target = dragStartEventData.target,\n        result = this.checkExpectedCondition(target),\n        controller = this.controller,\n        scheduleBlockElement,\n        modelID,\n        targetModel,\n        getScheduleDataFunc,\n        scheduleData;\n\n    if (!result) {\n        return;\n    }\n\n    scheduleBlockElement = domutil.closest(target, config.classname('.weekday-schedule-block'));\n    modelID = domutil.getData(scheduleBlockElement, 'id');\n    targetModel = controller.schedules.items[modelID];\n\n    if (!targetModel) {\n        return;\n    }\n\n    getScheduleDataFunc = this._retriveScheduleData(this.view, dragStartEventData.originEvent);\n    this.getScheduleDataFunc = getScheduleDataFunc;\n    scheduleData = this._dragStart = getScheduleDataFunc(dragStartEventData.originEvent);\n\n    util.extend(scheduleData, {\n        scheduleBlockElement: scheduleBlockElement,\n        model: targetModel\n    });\n\n    this.dragHandler.on({\n        drag: this._onDrag,\n        dragEnd: this._onDragEnd,\n        click: this._onClick\n    }, this);\n\n    /**\n     * @event DayGridResize#dragstart\n     * @type {object}\n     * @property {View} relatedView - view instance.\n     * @property {number} datesInRange - date count of this view.\n     * @property {number} dragStartXIndex - index number of dragstart grid index.\n     * @property {number} xIndex - index number of mouse positions.\n     * @property {Schedule} model - data object of model isntance.\n     * @property {HTMLDivElement} scheduleBlockElement - target schedule block element.\n     */\n    this.fire('dragstart', scheduleData);\n};\n\n/**\n * Drag event handler method.\n * @emits DayGridResize#drag\n * @param {object} dragEventData - Drag#drag event handler scheduledata.\n */\nDayGridResize.prototype._onDrag = function(dragEventData) {\n    var getScheduleDataFunc = this.getScheduleDataFunc;\n\n    if (!getScheduleDataFunc) {\n        return;\n    }\n\n    /**\n     * @event DayGridResize#drag\n     * @type {object}\n     * @property {View} relatedView - view instance.\n     * @property {number} datesInRange - date count of this view.\n     * @property {number} dragStartXIndex - index number of dragstart grid index.\n     * @property {number} xIndex - index number of mouse positions.\n     */\n    this.fire('drag', getScheduleDataFunc(dragEventData.originEvent));\n};\n\n/**\n * Request update schedule instance to base controller.\n * @fires DayGridResize#beforeUpdateSchedule\n * @param {object} scheduleData - schedule data from DayGridResize handler.\n */\nDayGridResize.prototype._updateSchedule = function(scheduleData) {\n    var schedule = scheduleData.targetModel,\n        dateOffset = scheduleData.xIndex - scheduleData.dragStartXIndex,\n        newEnds = new TZDate(schedule.end);\n    var changes;\n\n    newEnds = newEnds.addDate(dateOffset);\n    newEnds = new TZDate(common.maxDate(datetime.end(schedule.start), newEnds));\n\n    changes = common.getScheduleChanges(\n        schedule,\n        ['end'],\n        {end: newEnds}\n    );\n\n    /**\n     * @event DayGridResize#beforeUpdateSchedule\n     * @type {object}\n     * @property {Schedule} schedule - The original schedule instance\n     * @property {Date} start - Deprecated: start time to update\n     * @property {Date} end - Deprecated: end time to update\n     * @property {object} changes - end time to update\n     *  @property {date} end - end time to update\n     */\n    this.fire('beforeUpdateSchedule', {\n        schedule: schedule,\n        changes: changes,\n        start: schedule.getStarts(),\n        end: newEnds\n    });\n};\n\n/**\n * DragEnd event hander method.\n * @emits DayGridResize#dragend\n * @param {object} dragEndEventData - Drag#DragEnd event handler data.\n * @param {string} [overrideEventName] - override emitted event name when supplied.\n * @param {?boolean} skipUpdate - true then skip update schedule model.\n */\nDayGridResize.prototype._onDragEnd = function(dragEndEventData, overrideEventName, skipUpdate) {\n    var getScheduleDataFunc = this.getScheduleDataFunc,\n        dragStart = this._dragStart,\n        scheduleData;\n\n    if (!getScheduleDataFunc || !dragStart) {\n        return;\n    }\n\n    this.dragHandler.off({\n        drag: this._onDrag,\n        dragEnd: this._onDragEnd,\n        click: this._onClick\n    }, this);\n\n    scheduleData = getScheduleDataFunc(dragEndEventData.originEvent);\n    util.extend(scheduleData, {\n        targetModel: dragStart.model\n    });\n\n    if (!skipUpdate) {\n        this._updateSchedule(scheduleData);\n    }\n\n    /**\n     * @event DayGridResize#dragend\n     * @type {object}\n     * @property {View} relatedView - view instance.\n     * @property {number} datesInRange - date count of this view.\n     * @property {number} dragStartXIndex - index number of dragstart grid index.\n     * @property {number} xIndex - index number of mouse positions.\n     */\n    this.fire(overrideEventName || 'dragend', scheduleData);\n\n    this.getScheduleDataFunc = this._dragStart = null;\n};\n\n/**\n * Click event handler method.\n * @emits DayGridResize#click\n * @param {object} clickEventData - Drag#Click event handler data.\n */\nDayGridResize.prototype._onClick = function(clickEventData) {\n    /**\n     * @event DayGridResize#click\n     * @type {object}\n     * @property {View} relatedView - view instance.\n     * @property {number} datesInRange - date count of this view.\n     * @property {number} dragStartXIndex - index number of dragstart grid index.\n     * @property {number} xIndex - index number of mouse positions.\n     */\n    this._onDragEnd(clickEventData, 'click', true);\n};\n\ncommon.mixin(dayGridCore, DayGridResize);\nutil.CustomEvents.mixin(DayGridResize);\n\nmodule.exports = DayGridResize;\n","/**\n * @fileoverview Resize Guide module.\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\nvar util = require('tui-code-snippet');\nvar config = require('../../config');\nvar domutil = require('../../common/domutil');\nvar datetime = require('../../common/datetime');\nvar reqAnimFrame = require('../../common/reqAnimFrame');\n\n/**\n * @constructor\n * @param {DayGridResize} resizeHandler - instance of DayGridResize\n */\nfunction DayGridResizeGuide(resizeHandler) {\n    /**\n     * @type {DayGridResize}\n     */\n    this.resizeHandler = resizeHandler;\n\n    /**\n     * The element that actually contains the event element\n     * @type {HTMLDIVElement}\n     */\n    this.scheduleContainer = null;\n\n    /**\n     * @type {function}\n     */\n    this.getScheduleDataFunc = null;\n\n    /**\n     * @type {HTMLDIVElement}\n     */\n    this.guideElement = null;\n\n    /**\n     * @type {HTMLDIVElement}\n     */\n    this.scheduleBlockElement = null;\n\n    resizeHandler.on({\n        'dragstart': this._onDragStart,\n        'drag': this._onDrag,\n        'dragend': this._clearGuideElement,\n        'click': this._clearGuideElement\n    }, this);\n}\n\n/**\n * Destroy method\n */\nDayGridResizeGuide.prototype.destroy = function() {\n    this._clearGuideElement();\n    this.resizeHandler.off(this);\n    this.resizeHandler = this.scheduleContainer = this.getScheduleDataFunc =\n        this.guideElement = this.scheduleBlockElement = null;\n};\n\n/**\n * Clear guide element.\n */\nDayGridResizeGuide.prototype._clearGuideElement = function() {\n    domutil.remove(this.guideElement);\n\n    if (!util.browser.msie) {\n        domutil.removeClass(global.document.body, config.classname('resizing-x'));\n    }\n\n    if (this.scheduleBlockElement) {\n        domutil.removeClass(this.scheduleBlockElement, config.classname('weekday-schedule-block-dragging-dim'));\n    }\n\n    this.getScheduleDataFunc = null;\n};\n\n/**\n * Refresh guide element\n * @param {number} newWidth - new width percentage value to resize guide element.\n */\nDayGridResizeGuide.prototype.refreshGuideElement = function(newWidth) {\n    var guideElement = this.guideElement;\n\n    reqAnimFrame.requestAnimFrame(function() {\n        guideElement.style.width = newWidth + '%';\n    });\n};\n\n/**\n * Return function that calculate guide element's new width percentage value.\n * @param {object} dragStartEventData - dragstart schedule data.\n * @returns {function} return function that calculate guide element new width percentage.\n */\nDayGridResizeGuide.prototype.getGuideElementWidthFunc = function(dragStartEventData) {\n    var model = dragStartEventData.model,\n        viewOptions = this.resizeHandler.view.options,\n        fromLeft = Math.ceil(\n            (model.start - viewOptions.renderStartDate) / datetime.MILLISECONDS_PER_DAY\n        ) || 0,\n        grids = dragStartEventData.grids;\n\n    return function(xIndex) {\n        var width = 0;\n        var i = 0;\n        var length = grids.length;\n        width += grids[fromLeft] ? grids[fromLeft].width : 0;\n\n        for (; i < length; i += 1) {\n            if (i > fromLeft && i <= xIndex) {\n                width += grids[i] ? grids[i].width : 0;\n            }\n        }\n\n        return width;\n    };\n};\n\n/**\n * DragStart event handler.\n * @param {object} dragStartEventData - schedule data.\n */\nDayGridResizeGuide.prototype._onDragStart = function(dragStartEventData) {\n    var container = this.resizeHandler.view.container,\n        scheduleBlockElement = this.scheduleBlockElement = dragStartEventData.scheduleBlockElement,\n        guideElement = this.guideElement = scheduleBlockElement.cloneNode(true),\n        scheduleContainer;\n\n    if (!util.browser.msie) {\n        domutil.addClass(global.document.body, config.classname('resizing-x'));\n    }\n\n    scheduleContainer = domutil.find(config.classname('.weekday-schedules'), container);\n    domutil.addClass(guideElement, config.classname('daygrid-guide-move'));\n    domutil.addClass(scheduleBlockElement, config.classname('weekday-schedule-block-dragging-dim'));\n\n    scheduleContainer.appendChild(guideElement);\n\n    this.getScheduleDataFunc = this.getGuideElementWidthFunc(dragStartEventData);\n};\n\n/**\n * Drag event handler.\n * @param {object} dragEventData - schedule data.\n */\nDayGridResizeGuide.prototype._onDrag = function(dragEventData) {\n    var func = this.getScheduleDataFunc;\n\n    if (!func) {\n        return;\n    }\n\n    this.refreshGuideElement(func(dragEventData.xIndex));\n};\n\nmodule.exports = DayGridResizeGuide;\n","/**\n * @fileoverview Allday event click event hander module\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\nvar util = require('tui-code-snippet');\nvar config = require('../../config');\nvar domutil = require('../../common/domutil');\n\n/**\n * @constructor\n * @implements {Handler}\n * @mixes util.CustomEvents\n * @param {Drag} [dragHandler] - Drag handler instance.\n * @param {TimeGrid} [timeGridView] - TimeGrid view instance.\n * @param {Base} [baseController] - Base controller instance.\n */\nfunction TimeClick(dragHandler, timeGridView, baseController) {\n    /**\n     * @type {Drag}\n     */\n    this.dragHandler = dragHandler;\n\n    /**\n     * @type {TimeGrid}\n     */\n    this.timeGridView = timeGridView;\n\n    /**\n     * @type {Base}\n     */\n    this.baseController = baseController;\n\n    dragHandler.on({\n        'click': this._onClick\n    }, this);\n}\n\n/**\n * Destroy method\n */\nTimeClick.prototype.destroy = function() {\n    this.dragHandler.off(this);\n    this.timeGridView = this.baseController = this.dragHandler = null;\n};\n\n/**\n * Check target element is expected condition for activate this plugins.\n * @param {HTMLElement} target - The element to check\n * @returns {string} - model id\n */\nTimeClick.prototype.checkExpectCondition = function(target) {\n    var container,\n        matches;\n\n    container = domutil.closest(target, config.classname('.time-date'));\n\n    if (!container) {\n        return false;\n    }\n\n    matches = domutil.getClass(container).match(config.time.getViewIDRegExp);\n\n    if (!matches || matches.length < 2) {\n        return false;\n    }\n\n    return util.pick(this.timeGridView.children.items, Number(matches[1]));\n};\n\n/**\n * Click event hander\n * @param {object} clickEvent - click event from {@link Drag}\n * @emits TimeClick#clickEvent\n */\nTimeClick.prototype._onClick = function(clickEvent) {\n    var self = this,\n        target = clickEvent.target,\n        timeView = this.checkExpectCondition(target),\n        blockElement = domutil.closest(target, config.classname('.time-date-schedule-block')),\n        schedulesCollection = this.baseController.schedules;\n\n    if (!timeView || !blockElement) {\n        return;\n    }\n\n    schedulesCollection.doWhenHas(domutil.getData(blockElement, 'id'), function(schedule) {\n        /**\n         * @events TimeClick#clickSchedule\n         * @type {object}\n         * @property {Schedule} schedule - schedule instance\n         * @property {MouseEvent} event - MouseEvent object\n         */\n        self.fire('clickSchedule', {\n            schedule: schedule,\n            event: clickEvent.originEvent\n        });\n    });\n};\n\nutil.CustomEvents.mixin(TimeClick);\n\nmodule.exports = TimeClick;\n","/**\n * @fileoverview Handling creation events from drag handler and time grid view\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\nvar util = require('tui-code-snippet');\nvar config = require('../../config');\nvar array = require('../../common/array');\nvar datetime = require('../../common/datetime');\nvar domutil = require('../../common/domutil');\nvar domevent = require('../../common/domevent');\nvar common = require('../../common/common');\nvar TimeCreationGuide = require('./creationGuide');\nvar TZDate = require('../../common/timezone').Date;\nvar timeCore = require('./core');\n\nvar CLICK_DELAY = 300;\n\n/**\n * @constructor\n * @implements {Handler}\n * @mixes timeCore\n * @mixes CustomEvents\n * @param {Drag} [dragHandler] - Drag handler instance.\n * @param {TimeGrid} [timeGridView] - TimeGrid view instance.\n * @param {Base} [baseController] - Base controller instance.\n * @param {Options} [options] - calendar Options\n */\nfunction TimeCreation(dragHandler, timeGridView, baseController, options) {\n    /**\n     * Drag handler instance.\n     * @type {Drag}\n     */\n    this.dragHandler = dragHandler;\n\n    /**\n     * TimeGrid view instance.\n     * @type {TimeGrid}\n     */\n    this.timeGridView = timeGridView;\n\n    /**\n     * Base controller instance.\n     * @type {Base}\n     */\n    this.baseController = baseController;\n\n    /**\n     * @type {TimeCreationGuide}\n     */\n    this.guide = new TimeCreationGuide(this);\n\n    /**\n     * Temporary function for single drag session's calc.\n     * @type {function}\n     */\n    this._getScheduleDataFunc = null;\n\n    /**\n     * Temporary function for drag start data cache.\n     * @type {object}\n     */\n    this._dragStart = null;\n\n    /**\n     * @type {boolean}\n     */\n    this._requestOnClick = false;\n\n    /**\n     * @type {boolean}\n     */\n    this._disableDblClick = options.disableDblClick;\n\n    /**\n     * @type {boolean}\n     */\n    this._disableClick = options.disableClick;\n\n    dragHandler.on('dragStart', this._onDragStart, this);\n    dragHandler.on('click', this._onClick, this);\n\n    if (this._disableDblClick) {\n        CLICK_DELAY = 0;\n    } else {\n        domevent.on(timeGridView.container, 'dblclick', this._onDblClick, this);\n    }\n}\n\n/**\n * Destroy method\n */\nTimeCreation.prototype.destroy = function() {\n    var timeGridView = this.timeGridView;\n\n    this.guide.destroy();\n    this.dragHandler.off(this);\n\n    if (timeGridView && timeGridView.container) {\n        domevent.off(timeGridView.container, 'dblclick', this._onDblClick, this);\n    }\n\n    this.dragHandler = this.timeGridView = this.baseController =\n        this._getScheduleDataFunc = this._dragStart = this.guide = null;\n};\n\n/**\n * Check target element is expected condition for activate this plugins.\n * @param {HTMLElement} target - The element to check\n * @returns {(boolean|Time)} - return Time view instance when satiate condition.\n */\nTimeCreation.prototype.checkExpectedCondition = function(target) {\n    var cssClass = domutil.getClass(target),\n        matches;\n\n    if (cssClass === config.classname('time-date-schedule-block-wrap')) {\n        target = target.parentNode;\n        cssClass = domutil.getClass(target);\n    }\n\n    matches = cssClass.match(config.time.getViewIDRegExp);\n\n    if (!matches || matches.length < 2) {\n        return false;\n    }\n\n    return util.pick(this.timeGridView.children.items, matches[1]);\n};\n\n/**\n * Drag#dragStart event handler.\n * @emits TimeCreation#timeCreationDragstart\n * @param {object} dragStartEventData - Drag#dragStart event data.\n * @param {string} [overrideEventName] - override emitted event name when supplied.\n * @param {function} [revise] - supply function for revise event data before emit.\n */\nTimeCreation.prototype._onDragStart = function(dragStartEventData, overrideEventName, revise) {\n    var target = dragStartEventData.target,\n        result = this.checkExpectedCondition(target),\n        getScheduleDataFunc,\n        eventData;\n\n    if (!result) {\n        return;\n    }\n\n    getScheduleDataFunc = this._getScheduleDataFunc = this._retriveScheduleData(result);\n    eventData = this._dragStart = getScheduleDataFunc(dragStartEventData.originEvent);\n\n    if (revise) {\n        revise(eventData);\n    }\n\n    this.dragHandler.on({\n        drag: this._onDrag,\n        dragEnd: this._onDragEnd\n    }, this);\n\n    /**\n     * @event TimeCreation#timeCreationDragstart\n     * @type {object}\n     * @property {Time} relatedView - time view instance related with mouse position.\n     * @property {MouseEvent} originEvent - mouse event object.\n     * @property {number} mouseY - mouse Y px mouse event.\n     * @property {number} gridY - grid Y index value related with mouseY value.\n     * @property {number} timeY - milliseconds value of mouseY points.\n     * @property {number} nearestGridY - nearest grid index related with mouseY value.\n     * @property {number} nearestGridTimeY - time value for nearestGridY.\n     */\n    this.fire(overrideEventName || 'timeCreationDragstart', eventData);\n};\n\n/**\n * Drag#drag event handler\n * @emits TimeCreation#timeCreationDrag\n * @param {object} dragEventData - event data from Drag#drag.\n * @param {string} [overrideEventName] - override emitted event name when supplied.\n * @param {function} [revise] - supply function for revise event data before emit.\n */\nTimeCreation.prototype._onDrag = function(dragEventData, overrideEventName, revise) {\n    var getScheduleDataFunc = this._getScheduleDataFunc,\n        eventData;\n\n    if (!getScheduleDataFunc) {\n        return;\n    }\n\n    eventData = getScheduleDataFunc(dragEventData.originEvent);\n\n    if (revise) {\n        revise(eventData);\n    }\n\n    /**\n     * @event TimeCreation#timeCreationDrag\n     * @type {object}\n     * @property {Time} relatedView - time view instance related with mouse position.\n     * @property {MouseEvent} originEvent - mouse event object.\n     * @property {number} mouseY - mouse Y px mouse event.\n     * @property {number} gridY - grid Y index value related with mouseY value.\n     * @property {number} timeY - milliseconds value of mouseY points.\n     * @property {number} nearestGridY - nearest grid index related with mouseY value.\n     * @property {number} nearestGridTimeY - time value for nearestGridY.\n     */\n    this.fire(overrideEventName || 'timeCreationDrag', eventData);\n};\n\n/**\n * @fires TimeCreation#beforeCreateSchedule\n * @param {object} eventData - event data object from TimeCreation#timeCreationDragend\n * or TimeCreation#timeCreationClick\n */\nTimeCreation.prototype._createSchedule = function(eventData) {\n    var relatedView = eventData.relatedView,\n        createRange = eventData.createRange,\n        nearestGridTimeY = eventData.nearestGridTimeY,\n        nearestGridEndTimeY = eventData.nearestGridEndTimeY\n            ? eventData.nearestGridEndTimeY\n            : new TZDate(nearestGridTimeY).addMinutes(30),\n        baseDate,\n        dateStart,\n        dateEnd,\n        start,\n        end;\n\n    if (!createRange) {\n        createRange = [\n            nearestGridTimeY,\n            nearestGridEndTimeY\n        ];\n    }\n\n    baseDate = new TZDate(relatedView.getDate());\n    dateStart = datetime.start(baseDate);\n    dateEnd = datetime.getStartOfNextDay(baseDate);\n    start = common.limitDate(createRange[0], dateStart, dateEnd);\n    end = common.limitDate(createRange[1], dateStart, dateEnd);\n\n    /**\n     * @event TimeCreation#beforeCreateSchedule\n     * @type {object}\n     * @property {boolean} isAllDay - whether schedule is fired in allday view area?\n     * @property {Date} start - select start time\n     * @property {Date} end - select end time\n     * @property {TimeCreationGuide} guide - TimeCreationGuide instance\n     * @property {string} triggerEventName - event name\n     */\n    this.fire('beforeCreateSchedule', {\n        isAllDay: false,\n        start: new TZDate(start),\n        end: new TZDate(end),\n        guide: this.guide,\n        triggerEventName: eventData.triggerEvent\n    });\n};\n\n/**\n * Drag#dragEnd event handler\n * @emits TimeCreation#timeCreationDragend\n * @param {object} dragEndEventData - event data from Drag#dragend\n */\nTimeCreation.prototype._onDragEnd = function(dragEndEventData) {\n    var self = this,\n        dragStart = this._dragStart;\n\n    this.dragHandler.off({\n        drag: this._onDrag,\n        dragEnd: this._onDragEnd\n    }, this);\n\n    /**\n     * Function for manipulate event data before firing event\n     * @param {object} eventData - event data\n     */\n    function reviseFunc(eventData) {\n        var range = [\n            dragStart.nearestGridTimeY,\n            eventData.nearestGridTimeY\n        ].sort(array.compare.num.asc);\n        range[1].addMinutes(30);\n\n        eventData.createRange = range;\n\n        self._createSchedule(eventData);\n    }\n\n    /**\n     * @event TimeCreation#timeCreationDragend\n     * @type {object}\n     * @property {Time} relatedView - time view instance related with mouse position.\n     * @property {MouseEvent} originEvent - mouse event object.\n     * @property {number} mouseY - mouse Y px mouse event.\n     * @property {number} gridY - grid Y index value related with mouseY value.\n     * @property {number} timeY - milliseconds value of mouseY points.\n     * @property {number} nearestGridY - nearest grid index related with mouseY value.\n     * @property {number} nearestGridTimeY - time value for nearestGridY.\n     * @property {number[]} createRange - milliseconds range between drag start and end to create.\n     */\n    this._onDrag(dragEndEventData, 'timeCreationDragend', reviseFunc);\n\n    this._dragStart = this._getScheduleDataFunc = null;\n};\n\n/**\n * Drag#click event handler\n * @emits TimeCreation#timeCreationClick\n * @param {object} clickEventData - event data from Drag#click.\n */\nTimeCreation.prototype._onClick = function(clickEventData) {\n    var self = this;\n    var condResult, getScheduleDataFunc, eventData;\n\n    this.dragHandler.off({\n        drag: this._onDrag,\n        dragEnd: this._onDragEnd\n    }, this);\n\n    condResult = this.checkExpectedCondition(clickEventData.target);\n    if (!condResult || this._disableClick) {\n        return;\n    }\n\n    getScheduleDataFunc = this._retriveScheduleData(condResult);\n    eventData = getScheduleDataFunc(clickEventData.originEvent);\n\n    this._requestOnClick = true;\n    setTimeout(function() {\n        if (self._requestOnClick) {\n            self.fire('timeCreationClick', eventData);\n            self._createSchedule(eventData);\n        }\n        self._requestOnClick = false;\n    }, CLICK_DELAY);\n    this._dragStart = this._getScheduleDataFunc = null;\n};\n\n/**\n * Dblclick event handler\n * @param {MouseEvent} e - Native MouseEvent\n */\nTimeCreation.prototype._onDblClick = function(e) {\n    var condResult, getScheduleDataFunc, eventData;\n\n    condResult = this.checkExpectedCondition(e.target);\n    if (!condResult) {\n        return;\n    }\n\n    getScheduleDataFunc = this._retriveScheduleData(condResult);\n    eventData = getScheduleDataFunc(e);\n\n    this.fire('timeCreationClick', eventData);\n\n    this._createSchedule(eventData);\n\n    this._requestOnClick = false;\n};\n\n/**\n * Invoke creation click\n * @param {Schedule} schedule - schedule instance\n */\nTimeCreation.prototype.invokeCreationClick = function(schedule) {\n    var opt = this.timeGridView.options,\n        range = datetime.range(\n            opt.renderStartDate,\n            opt.renderEndDate,\n            datetime.MILLISECONDS_PER_DAY),\n        hourStart = opt.hourStart,\n        targetDate = schedule.start;\n    var eventData, timeView;\n\n    util.forEach(range, function(date, index) {\n        if (datetime.isSameDate(date, targetDate)) {\n            timeView = this.timeGridView.children.toArray()[index];\n        }\n    }, this);\n\n    // If start date is not in current date, set start date as first date.\n    if (!timeView) {\n        timeView = this.timeGridView.children.toArray()[0];\n    }\n\n    eventData = this._retriveScheduleDataFromDate(timeView, schedule.start, schedule.end, hourStart);\n\n    this.fire('timeCreationClick', eventData);\n\n    this._createSchedule(eventData);\n};\n\ntimeCore.mixin(TimeCreation);\nutil.CustomEvents.mixin(TimeCreation);\n\nmodule.exports = TimeCreation;\n","/**\n * @fileoverview Module for Time.Creation effect while dragging.\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\nvar common = require('../../common/common');\nvar datetime = require('../../common/datetime');\nvar config = require('../../config');\nvar domutil = require('../../common/domutil');\nvar reqAnimFrame = require('../../common/reqAnimFrame');\nvar ratio = require('../../common/common').ratio;\nvar TZDate = require('../../common/timezone').Date;\nvar MIN60 = (datetime.MILLISECONDS_PER_MINUTES * 60);\n\n/**\n * Class for Time.Creation dragging effect.\n * @constructor\n * @param {TimeCreation} timeCreation - instance of TimeCreation.\n */\nfunction TimeCreationGuide(timeCreation) {\n    /**\n     * Guide element for creation effect.\n     * @type {HTMLElement}\n     */\n    this.guideElement = global.document.createElement('div');\n\n    /**\n     * @type {HTMLDivElement}\n     */\n    this.guideTimeElement = domutil.appendHTMLElement(\n        'span',\n        this.guideElement,\n        config.classname('time-guide-creation-label')\n    );\n\n    domutil.addClass(this.guideElement, config.classname('time-guide-creation'));\n\n    /**\n     * @type {TimeCreation}\n     */\n    this.timeCreation = timeCreation;\n\n    /**\n     * @type {array}\n     */\n    this._styleUnit = null;\n\n    /**\n     * @type {array}\n     */\n    this._styleStart = null;\n\n    /**\n     * @type {function}\n     */\n    this._styleFunc = null;\n\n    timeCreation.on({\n        timeCreationDragstart: this._createGuideElement,\n        timeCreationDrag: this._onDrag,\n        timeCreationClick: this._createGuideElement\n    }, this);\n\n    this.applyTheme(timeCreation.baseController.theme);\n}\n\n/**\n * Destroy method.\n */\nTimeCreationGuide.prototype.destroy = function() {\n    this.clearGuideElement();\n    this.timeCreation.off(this);\n    this.timeCreation = this._styleUnit = this._styleStart =\n        this._styleFunc = this.guideElement = this.guideTimeElement = null;\n};\n\n/**\n * Clear guide element.\n */\nTimeCreationGuide.prototype.clearGuideElement = function() {\n    var guideElement = this.guideElement,\n        timeElement = this.guideTimeElement;\n\n    domutil.remove(guideElement);\n\n    reqAnimFrame.requestAnimFrame(function() {\n        guideElement.style.display = 'none';\n        guideElement.style.top = '';\n        guideElement.style.height = '';\n        timeElement.innerHTML = '';\n    });\n};\n\n/**\n * Refresh guide element\n * @param {number} top - The number of guide element's style top\n * @param {number} height - The number of guide element's style height\n * @param {TZDate} start - start time of schedule to create\n * @param {TZDate} end - end time of schedule to create\n * @param {boolean} bottomLabel - is label need to render bottom of guide element?\n */\nTimeCreationGuide.prototype._refreshGuideElement = function(top, height, start, end, bottomLabel) {\n    var guideElement = this.guideElement;\n    var timeElement = this.guideTimeElement;\n\n    guideElement.style.top = top + 'px';\n    guideElement.style.height = height + 'px';\n    guideElement.style.display = 'block';\n\n    timeElement.innerHTML = datetime.format(start, 'HH:mm') +\n        ' - ' + datetime.format(end, 'HH:mm');\n\n    if (bottomLabel) {\n        domutil.removeClass(timeElement, config.classname('time-guide-bottom'));\n    } else {\n        domutil.addClass(timeElement, config.classname('time-guide-bottom'));\n    }\n};\n\n/**\n * Get unit data of calculating new style of guide element by user interaction\n * @param {Time} relatedView - time view instance related with schedule\n * @returns {array} unit data.\n */\nTimeCreationGuide.prototype._getUnitData = function(relatedView) {\n    var viewOpt = relatedView.options,\n        viewHeight = relatedView.getViewBound().height,\n        hourLength = viewOpt.hourEnd - viewOpt.hourStart,\n        todayStart = datetime.parse(viewOpt.ymd),\n        todayEnd = datetime.getStartOfNextDay(todayStart);\n\n    todayStart.setHours(0, 0, 0, 0);\n    todayStart.setHours(viewOpt.hourStart);\n\n    // [0] height of view\n    // [1] hour length of view\n    // [2] start time of view\n    // [3] end time of view\n    // [4] height of view for one hour\n    return [\n        viewHeight,\n        hourLength,\n        todayStart,\n        todayEnd,\n        viewHeight / hourLength\n    ];\n};\n\n/**\n * Applying limitation to supplied data and return it.\n * @param {number} top - top pixel of guide element\n * @param {number} height - height pixel of guide element\n * @param {TZDate} start - relative time value of dragstart point\n * @param {TZDate} end - relative time value of dragend point\n * @returns {array} limited style data\n */\nTimeCreationGuide.prototype._limitStyleData = function(top, height, start, end) {\n    var unitData = this._styleUnit;\n\n    top = common.limit(top, [0], [unitData[0]]);\n    height = common.limit(top + height, [0], [unitData[0]]) - top;\n    start = common.limitDate(start, unitData[2], unitData[3]);\n    end = common.limitDate(end, unitData[2], unitData[3]);\n\n    return [top, height, start, end];\n};\n\n/**\n * Get function to calculate guide element UI data from supplied units\n * @param {number} viewHeight - total height of view's container element\n * @param {number} hourLength - hour length that rendered in time view\n * @param {TZDate} todayStart - time for view's start date\n * @returns {function} UI data calculator function\n */\nTimeCreationGuide.prototype._getStyleDataFunc = function(viewHeight, hourLength, todayStart) {\n    var todayStartTime = todayStart;\n    var todayEndTime = datetime.end(todayStart);\n\n    /**\n     * Get top, time value from schedule data\n     * @param {object} scheduleData - schedule data object\n     * @returns {number[]} top, time\n     */\n    function getStyleData(scheduleData) {\n        var minMinutes = 30;\n        var gridY = scheduleData.nearestGridY,\n            gridTimeY = scheduleData.nearestGridTimeY,\n            gridEndTimeY = scheduleData.nearestGridEndTimeY || new TZDate(gridTimeY).addMinutes(minMinutes),\n            top, startTime, endTime;\n\n        top = common.limit(ratio(hourLength, viewHeight, gridY), [0], [viewHeight]);\n        startTime = common.limitDate(gridTimeY, todayStartTime, todayEndTime);\n        endTime = common.limitDate(gridEndTimeY, todayStartTime, todayEndTime);\n\n        return [top, startTime, endTime];\n    }\n\n    return getStyleData;\n};\n\n/**\n * DragStart event handler\n * @param {object} dragStartEventData - dragStart schedule data.\n */\nTimeCreationGuide.prototype._createGuideElement = function(dragStartEventData) {\n    var relatedView = dragStartEventData.relatedView,\n        hourStart = datetime.millisecondsFrom('hour', dragStartEventData.hourStart) || 0,\n        unitData, styleFunc, styleData, result, top, height, start, end;\n\n    unitData = this._styleUnit = this._getUnitData(relatedView);\n    styleFunc = this._styleFunc = this._getStyleDataFunc.apply(this, unitData);\n    styleData = this._styleStart = styleFunc(dragStartEventData);\n\n    start = new TZDate(styleData[1]).addMinutes(datetime.minutesFromHours(hourStart));\n    end = new TZDate(styleData[2]).addMinutes(datetime.minutesFromHours(hourStart));\n    top = styleData[0];\n    height = (unitData[4] * (end - start) / MIN60);\n\n    result = this._limitStyleData(\n        top,\n        height,\n        start,\n        end\n    );\n\n    this._refreshGuideElement.apply(this, result);\n\n    relatedView.container.appendChild(this.guideElement);\n};\n\n/**\n * Drag event handler\n * @param {object} dragEventData - drag schedule data.\n */\nTimeCreationGuide.prototype._onDrag = function(dragEventData) {\n    var minutes30 = 30;\n    var styleFunc = this._styleFunc,\n        unitData = this._styleUnit,\n        startStyle = this._styleStart,\n        refreshGuideElement = this._refreshGuideElement.bind(this),\n        heightOfHalfHour,\n        endStyle,\n        result;\n\n    if (!styleFunc || !unitData || !startStyle) {\n        return;\n    }\n\n    heightOfHalfHour = (unitData[4] / 2);\n    endStyle = styleFunc(dragEventData);\n\n    if (endStyle[0] > startStyle[0]) {\n        result = this._limitStyleData(\n            startStyle[0],\n            (endStyle[0] - startStyle[0]) + heightOfHalfHour,\n            startStyle[1],\n            new TZDate(endStyle[1]).addMinutes(minutes30)\n        );\n    } else {\n        result = this._limitStyleData(\n            endStyle[0],\n            (startStyle[0] - endStyle[0]) + heightOfHalfHour,\n            endStyle[1],\n            new TZDate(startStyle[1]).addMinutes(minutes30)\n        );\n        result.push(true);\n    }\n\n    reqAnimFrame.requestAnimFrame(function() {\n        refreshGuideElement.apply(null, result);\n    });\n};\n\nTimeCreationGuide.prototype.applyTheme = function(theme) {\n    var style = this.guideElement.style;\n    var timeStyle = this.guideTimeElement.style;\n\n    // block\n    style.backgroundColor = theme.common.creationGuide.backgroundColor;\n    style.border = theme.common.creationGuide.border;\n\n    // label\n    timeStyle.color = theme.week.creationGuide.color;\n    timeStyle.fontSize = theme.week.creationGuide.fontSize;\n    timeStyle.fontWeight = theme.week.creationGuide.fontWeight;\n};\n\nmodule.exports = TimeCreationGuide;\n","/**\n * @fileoverview Handling move schedules from drag handler and time grid view\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\nvar util = require('tui-code-snippet');\nvar config = require('../../config');\nvar datetime = require('../../common/datetime');\nvar domutil = require('../../common/domutil');\nvar domevent = require('../../common/domevent');\nvar TZDate = require('../../common/timezone').Date;\nvar timeCore = require('./core');\nvar TimeMoveGuide = require('./moveGuide');\n\n/**\n * @constructor\n * @implements {Handler}\n * @mixes timeCore\n * @mixes util.CustomEvents\n * @param {Drag} [dragHandler] - Drag handler instance.\n * @param {TimeGrid} [timeGridView] - TimeGrid view instance.\n * @param {Base} [baseController] - Base controller instance.\n */\nfunction TimeMove(dragHandler, timeGridView, baseController) {\n    /**\n     * @type {Drag}\n     */\n    this.dragHandler = dragHandler;\n\n    /**\n     * @type {TimeGrid}\n     */\n    this.timeGridView = timeGridView;\n\n    /**\n     * @type {Base}\n     */\n    this.baseController = baseController;\n\n    /**\n     * @type {function}\n     */\n    this._getScheduleDataFunc = null;\n\n    /**\n     * @type {object}\n     */\n    this._dragStart = null;\n\n    /**\n     * @type {TimeMoveGuide}\n     */\n    this._guide = new TimeMoveGuide(this);\n\n    dragHandler.on('dragStart', this._onDragStart, this);\n    dragHandler.on('mousedown', this._onMouseDown, this);\n}\n\n/**\n * Destroy method.\n */\nTimeMove.prototype.destroy = function() {\n    this._guide.destroy();\n    this.dragHandler.off(this);\n    this.dragHandler = this.timeGridView = this.baseController =\n        this._getScheduleDataFunc = this._dragStart = this._guide = null;\n};\n\n/**\n * Check target element is expected condition for activate this plugins.\n * @param {HTMLElement} target - The element to check\n * @returns {boolean|object} - return object when satiate condition.\n */\nTimeMove.prototype.checkExpectCondition = function(target) {\n    if (!domutil.closest(target, config.classname('.time-schedule'))) {\n        return false;\n    }\n\n    return this._getTimeView(target);\n};\n\n/**\n * Get Time view container from supplied element.\n * @param {HTMLElement} target - element to find time view container.\n * @returns {object|boolean} - return time view instance when finded.\n */\nTimeMove.prototype._getTimeView = function(target) {\n    var container = domutil.closest(target, config.classname('.time-date')),\n        matches;\n\n    if (!container) {\n        return false;\n    }\n\n    matches = domutil.getClass(container).match(config.time.getViewIDRegExp);\n\n    if (!matches || matches.length < 2) {\n        return false;\n    }\n\n    return util.pick(this.timeGridView.children.items, Number(matches[1]));\n};\n\n/**\n * @emits TimeMove#mousedown\n * @param {object} mouseDownEventData - Drag#mousedown schedule data.\n */\nTimeMove.prototype._onMouseDown = function(mouseDownEventData) {\n    var target = mouseDownEventData.target,\n        timeView = this.checkExpectCondition(target),\n        blockElement = domutil.closest(target, config.classname('.time-date-schedule-block'));\n\n    if (!timeView || !blockElement) {\n        return;\n    }\n\n    // EventTarget.target is not changed in mousemove event even if mouse is over the other element.\n    // It's different with other browsers(IE, Chrome, Safari)\n    if (util.browser.firefox) {\n        domevent.preventDefault(mouseDownEventData.originEvent);\n    }\n};\n\n/**\n * @emits TimeMove#timeMoveDragstart\n * @param {object} dragStartEventData - Drag#dragStart schedule data.\n */\nTimeMove.prototype._onDragStart = function(dragStartEventData) {\n    var target = dragStartEventData.target,\n        timeView = this.checkExpectCondition(target),\n        blockElement = domutil.closest(target, config.classname('.time-date-schedule-block')),\n        getScheduleDataFunc,\n        scheduleData,\n        ctrl = this.baseController,\n        targetModelID,\n        targetModel;\n\n    if (!timeView || !blockElement) {\n        return;\n    }\n\n    targetModelID = domutil.getData(blockElement, 'id');\n    targetModel = ctrl.schedules.items[targetModelID];\n\n    if (targetModel.isReadOnly) {\n        return;\n    }\n\n    getScheduleDataFunc = this._getScheduleDataFunc = this._retriveScheduleData(timeView);\n    scheduleData = this._dragStart = getScheduleDataFunc(\n        dragStartEventData.originEvent, {\n            targetModelID: targetModelID,\n            model: targetModel\n        }\n    );\n\n    this.dragHandler.on({\n        drag: this._onDrag,\n        dragEnd: this._onDragEnd,\n        click: this._onClick\n    }, this);\n\n    /**\n     * @event TimeMove#timeMoveDragstart\n     * @type {object}\n     * @property {HTMLElement} target - current target in mouse event object.\n     * @property {Time} relatedView - time view instance related with mouse position.\n     * @property {MouseEvent} originEvent - mouse event object.\n     * @property {number} mouseY - mouse Y px mouse event.\n     * @property {number} gridY - grid Y index value related with mouseY value.\n     * @property {number} timeY - milliseconds value of mouseY points.\n     * @property {number} nearestGridY - nearest grid index related with mouseY value.\n     * @property {number} nearestGridTimeY - time value for nearestGridY.\n     * @property {string} targetModelID - The model unique id emitted move schedule.\n     * @property {Schedule} model - model instance\n     */\n    this.fire('timeMoveDragstart', scheduleData);\n};\n\n/**\n * @emits TimeMove#timeMoveDrag\n * @param {MouseEvent} dragEventData - mousemove event object\n * @param {string} [overrideEventName] - name of emitting event to override.\n * @param {function} [revise] - supply function for revise schedule data before emit.\n */\nTimeMove.prototype._onDrag = function(dragEventData, overrideEventName, revise) {\n    var getScheduleDataFunc = this._getScheduleDataFunc,\n        timeView = this._getTimeView(dragEventData.target),\n        dragStart = this._dragStart,\n        scheduleData;\n\n    if (!timeView || !getScheduleDataFunc || !dragStart) {\n        return;\n    }\n\n    scheduleData = getScheduleDataFunc(dragEventData.originEvent, {\n        currentView: timeView,\n        targetModelID: dragStart.targetModelID\n    });\n\n    if (revise) {\n        revise(scheduleData);\n    }\n\n    /**\n     * @event TimeMove#timeMoveDrag\n     * @type {object}\n     * @property {HTMLElement} target - current target in mouse event object.\n     * @property {Time} relatedView - time view instance related with drag start position.\n     * @property {MouseEvent} originEvent - mouse event object.\n     * @property {number} mouseY - mouse Y px mouse event.\n     * @property {number} gridY - grid Y index value related with mouseY value.\n     * @property {number} timeY - milliseconds value of mouseY points.\n     * @property {number} nearestGridY - nearest grid index related with mouseY value.\n     * @property {number} nearestGridTimeY - time value for nearestGridY.\n     * @property {Time} currentView - time view instance related with current mouse position.\n     * @property {string} targetModelID - The model unique id emitted move schedule.\n     */\n    this.fire(overrideEventName || 'timeMoveDrag', scheduleData);\n};\n\n/**\n * Update model instance by dragend event results.\n * @fires TimeMove#beforeUpdateSchedule\n * @param {object} scheduleData - schedule data from TimeMove#timeMoveDragend\n */\nTimeMove.prototype._updateSchedule = function(scheduleData) {\n    var ctrl = this.baseController,\n        modelID = scheduleData.targetModelID,\n        range = scheduleData.nearestRange,\n        timeDiff = range[1] - range[0],\n        dateDiff = 0,\n        schedule = ctrl.schedules.items[modelID],\n        relatedView = scheduleData.relatedView,\n        currentView = scheduleData.currentView,\n        newStarts,\n        newEnds;\n\n    if (!schedule || !currentView) {\n        return;\n    }\n\n    timeDiff -= datetime.millisecondsFrom('minutes', 30);\n    newStarts = new TZDate(schedule.getStarts()).addMilliseconds(timeDiff);\n    newEnds = new TZDate(schedule.getEnds()).addMilliseconds(timeDiff);\n\n    if (currentView) {\n        dateDiff = currentView.getDate() - relatedView.getDate();\n    }\n\n    newStarts.addMilliseconds(dateDiff);\n    newEnds.addMilliseconds(dateDiff);\n\n    /**\n     * @event TimeMove#beforeUpdateSchedule\n     * @type {object}\n     * @property {Schedule} schedule - The original schedule instance\n     * @property {Date} start - Deprecated: start time to update\n     * @property {Date} end - Deprecated: end time to update\n     * @property {object} changes - start and end time to update\n     *  @property {Date} start - start time to update\n     *  @property {Date} end - end time to update\n     */\n    this.fire('beforeUpdateSchedule', {\n        schedule: schedule,\n        changes: {\n            start: newStarts,\n            end: newEnds\n        },\n        start: newStarts,\n        end: newEnds\n    });\n};\n\n/**\n * @emits TimeMove#timeMoveDragend\n * @param {MouseEvent} dragEndEventData - mouseup mouse event object.\n */\nTimeMove.prototype._onDragEnd = function(dragEndEventData) {\n    var getScheduleDataFunc = this._getScheduleDataFunc,\n        currentView = this._getTimeView(dragEndEventData.target),\n        dragStart = this._dragStart,\n        scheduleData;\n\n    this.dragHandler.off({\n        drag: this._onDrag,\n        dragEnd: this._onDragEnd,\n        click: this._onClick\n    }, this);\n\n    if (!getScheduleDataFunc || !dragStart) {\n        return;\n    }\n\n    scheduleData = getScheduleDataFunc(dragEndEventData.originEvent, {\n        currentView: currentView,\n        targetModelID: dragStart.targetModelID\n    });\n\n    scheduleData.range = [\n        dragStart.timeY,\n        new TZDate(scheduleData.timeY).addMinutes(30)\n    ];\n\n    scheduleData.nearestRange = [\n        dragStart.nearestGridTimeY,\n        new TZDate(scheduleData.nearestGridTimeY).addMinutes(30)\n    ];\n\n    this._updateSchedule(scheduleData);\n\n    /**\n     * @event TimeMove#timeMoveDragend\n     * @type {object}\n     * @property {HTMLElement} target - current target in mouse event object.\n     * @property {Time} relatedView - time view instance related with drag start position.\n     * @property {Time} currentView - time view instance related with current mouse position.\n     * @property {MouseEvent} originEvent - mouse event object.\n     * @property {number} mouseY - mouse Y px mouse event.\n     * @property {number} gridY - grid Y index value related with mouseY value.\n     * @property {number} timeY - milliseconds value of mouseY points.\n     * @property {number} nearestGridY - nearest grid index related with mouseY value.\n     * @property {number} nearestGridTimeY - time value for nearestGridY.\n     * @property {string} targetModelID - The model unique id emitted move schedule.\n     * @property {number[]} range - milliseconds range between drag start and end.\n     * @property {number[]} nearestRange - milliseconds range related with nearestGridY between start and end.\n     */\n    this.fire('timeMoveDragend', scheduleData);\n};\n\n/**\n * @emits TimeMove#timeMoveClick\n * @param {MouseEvent} clickEventData - click mouse event object.\n */\nTimeMove.prototype._onClick = function(clickEventData) {\n    var getScheduleDataFunc = this._getScheduleDataFunc,\n        dragStart = this._dragStart,\n        scheduleData;\n\n    this.dragHandler.off({\n        drag: this._onDrag,\n        dragEnd: this._onDragEnd,\n        click: this._onClick\n    }, this);\n\n    if (!getScheduleDataFunc || !dragStart) {\n        return;\n    }\n\n    scheduleData = getScheduleDataFunc(clickEventData.originEvent, {\n        targetModelID: dragStart.targetModelID\n    });\n\n    /**\n     * @event TimeMove#timeMoveClick\n     * @type {object}\n     * @property {HTMLElement} target - current target in mouse event object.\n     * @property {Time} relatedView - time view instance related with drag start position.\n     * @property {MouseEvent} originEvent - mouse event object.\n     * @property {number} mouseY - mouse Y px mouse event.\n     * @property {number} gridY - grid Y index value related with mouseY value.\n     * @property {number} timeY - milliseconds value of mouseY points.\n     * @property {number} nearestGridY - nearest grid index related with mouseY value.\n     * @property {number} nearestGridTimeY - time value for nearestGridY.\n     * @property {string} targetModelID - The model unique id emitted move schedule.\n     */\n    this.fire('timeMoveClick', scheduleData);\n};\n\ntimeCore.mixin(TimeMove);\nutil.CustomEvents.mixin(TimeMove);\n\nmodule.exports = TimeMove;\n","/**\n * @fileoverview Module for Time.Move effect while dragging.\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\nvar util = require('tui-code-snippet');\nvar config = require('../../config');\nvar domutil = require('../../common/domutil');\nvar reqAnimFrame = require('../../common/reqAnimFrame');\nvar ratio = require('../../common/common').ratio;\nvar FloatingLayer = require('../../common/floatingLayer');\nvar tmpl = require('../../view/template/week/timeMoveGuide.hbs');\nvar TZDate = require('../../common/timezone').Date;\nvar Schedule = require('../../model/schedule');\nvar datetime = require('../../common/datetime');\nvar common = require('../../common/common');\n\nvar SCHEDULE_MIN_DURATION = datetime.MILLISECONDS_SCHEDULE_MIN_DURATION;\n\n/**\n * Class for Time.Move effect.\n * @constructor\n * @param {TimeMove} timeMove - The instance of TimeMove.\n */\nfunction TimeMoveGuide(timeMove) {\n    /**\n     * @type {FloatingLayer}\n     */\n    this._guideLayer = null;\n\n    /**\n     * @Type {Schedule}\n     */\n    this._model = null;\n\n    /**\n     * @type {object}\n     */\n    this._viewModel = null;\n\n    /**\n     * @type {object}\n     */\n    this._lastDrag = null;\n\n    /**\n     * @type {HTMLElement}\n     */\n    this.guideElement = null;\n\n    /**\n     * @type {TimeMove}\n     */\n    this.timeMove = timeMove;\n\n    /**\n     * @type {HTMLElement}\n     */\n    this._container = null;\n\n    /**\n     * @type {function}\n     */\n    this._getTopFunc = null;\n\n    /**\n     * @type {number}\n     */\n    this._startGridY = 0;\n\n    /**\n     * @type {number}\n     */\n    this._startTopPixel = 0;\n\n    timeMove.on({\n        'timeMoveDragstart': this._onDragStart,\n        'timeMoveDrag': this._onDrag,\n        'timeMoveDragend': this._clearGuideElement,\n        'timeMoveClick': this._clearGuideElement\n    }, this);\n}\n\n/**\n * Destroy method\n */\nTimeMoveGuide.prototype.destroy = function() {\n    this._clearGuideElement();\n    this.timeMove.off(this);\n    if (this._guideLayer) {\n        this._guideLayer.destroy();\n    }\n    this.guideElement = this.timeMove = this._container = this._guideLayer = this._lastDrag =\n        this._getTopFunc = this._startGridY = this._startTopPixel = this._viewModel = null;\n};\n\n/**\n * Clear guide element.\n */\nTimeMoveGuide.prototype._clearGuideElement = function() {\n    if (!util.browser.msie) {\n        domutil.removeClass(global.document.body, config.classname('dragging'));\n    }\n    if (this._guideLayer) {\n        this._guideLayer.destroy();\n    }\n\n    this._showOriginScheduleBlocks();\n\n    this.guideElement = this._getTopFunc = this._guideLayer = this._model = this._lastDrag =\n        this._startGridY = this._startTopPixel = this._viewModel = null;\n};\n\n/**\n * Dim element blocks\n * @param {number} modelID - Schedule model instance ID\n */\nTimeMoveGuide.prototype._hideOriginScheduleBlocks = function() {\n    var className = config.classname('time-date-schedule-block-dragging-dim');\n    if (this.guideElement) {\n        domutil.addClass(this.guideElement, className);\n    }\n};\n\n/**\n * Show element blocks\n */\nTimeMoveGuide.prototype._showOriginScheduleBlocks = function() {\n    var className = config.classname('time-date-schedule-block-dragging-dim');\n    if (this.guideElement) {\n        domutil.removeClass(this.guideElement, className);\n    }\n};\n\n/**\n * Refresh guide element\n * @param {string} top - guide element's style top.\n * @param {Schedule} model - updated model\n * @param {object} viewModel - view model\n */\nTimeMoveGuide.prototype._refreshGuideElement = function(top, model, viewModel) {\n    var self = this;\n\n    reqAnimFrame.requestAnimFrame(function() {\n        if (!self._guideLayer) {\n            return;\n        }\n        self._guideLayer.setPosition(0, top);\n        self._guideLayer.setContent(tmpl(util.extend({model: model}, viewModel)));\n    });\n};\n\n/**\n * TimeMove#timeMoveDragstart event handler\n * @param {object} dragStartEventData - dragstart event data\n */\nTimeMoveGuide.prototype._onDragStart = function(dragStartEventData) {\n    var guideElement = domutil.closest(\n        dragStartEventData.target,\n        config.classname('.time-date-schedule-block')\n    );\n    var duration, modelDuration, goingDuration, comingDuration;\n\n    if (!guideElement) {\n        return;\n    }\n\n    this._startTopPixel = parseFloat(guideElement.style.top);\n    this._startGridY = dragStartEventData.nearestGridY;\n    this.guideElement = guideElement;\n    this._container = dragStartEventData.relatedView.container;\n\n    this._model = util.extend(\n        Schedule.create(dragStartEventData.model),\n        dragStartEventData.model\n    );\n\n    modelDuration = this._model.duration();\n    modelDuration = modelDuration > SCHEDULE_MIN_DURATION ? modelDuration : SCHEDULE_MIN_DURATION;\n    goingDuration = datetime.millisecondsFrom('minutes', this._model.goingDuration);\n    comingDuration = datetime.millisecondsFrom('minutes', this._model.comingDuration);\n    duration = goingDuration + modelDuration + comingDuration;\n\n    this._lastDrag = dragStartEventData;\n    this._viewModel = {\n        hasGoingDuration: goingDuration > 0,\n        hasComingDuration: comingDuration > 0,\n        goingDurationHeight: common.ratio(duration, goingDuration, 100),\n        modelDurationHeight: common.ratio(duration, modelDuration, 100),\n        comingDurationHeight: common.ratio(duration, comingDuration, 100)\n    };\n\n    this._resetGuideLayer();\n    this._hideOriginScheduleBlocks();\n};\n\n/**\n * TimeMove#timeMoveDrag event handler\n * @param {object} dragEventData - drag event data\n */\nTimeMoveGuide.prototype._onDrag = function(dragEventData) {\n    var timeView = dragEventData.currentView,\n        viewOptions = timeView.options,\n        viewHeight = timeView.getViewBound().height,\n        guideHeight = parseFloat(this.guideElement.style.height),\n        hourLength = viewOptions.hourEnd - viewOptions.hourStart,\n        gridYOffset = dragEventData.nearestGridY - this._startGridY,\n        gridYOffsetPixel = ratio(hourLength, viewHeight, gridYOffset),\n        gridDiff = dragEventData.nearestGridY - this._lastDrag.nearestGridY,\n        bottomLimit,\n        top;\n\n    if (!util.browser.msie) {\n        domutil.addClass(global.document.body, config.classname('dragging'));\n    }\n\n    if (this._container !== timeView.container) {\n        this._container = timeView.container;\n        this._resetGuideLayer();\n    }\n\n    top = this._startTopPixel + gridYOffsetPixel;\n    bottomLimit = viewHeight - guideHeight;\n\n    top = Math.max(top, 0);\n    top = Math.min(top, bottomLimit);\n\n    // update time\n    this._model.start = new TZDate(this._model.getStarts()).addMinutes(datetime.minutesFromHours(gridDiff));\n    this._model.end = new TZDate(this._model.getEnds()).addMinutes(datetime.minutesFromHours(gridDiff));\n    this._lastDrag = dragEventData;\n\n    this._refreshGuideElement(top, this._model, this._viewModel);\n};\n\nTimeMoveGuide.prototype._resetGuideLayer = function() {\n    if (this._guideLayer) {\n        this._guideLayer.destroy();\n        this._guideLayer = null;\n    }\n    this._guideLayer = new FloatingLayer(null, this._container);\n    this._guideLayer.setSize(this._container.getBoundingClientRect().width, this.guideElement.style.height);\n    this._guideLayer.setPosition(0, this.guideElement.style.top);\n    this._guideLayer.setContent(tmpl(util.extend({model: this._model}, this._viewModel)));\n    this._guideLayer.show();\n};\n\nmodule.exports = TimeMoveGuide;\n","var Handlebars = require('/Users/nhnent/Jodeng/workspace/Work/tui.calendar-new/node_modules/handlebars/runtime.js');\nmodule.exports = (Handlebars['default'] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data) {\n    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, alias5=container.lambda, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"            <div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":4,\"column\":24},\"end\":{\"line\":4,\"column\":38}}}) : helper)))\n    + \"time-schedule-content \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":4,\"column\":60},\"end\":{\"line\":4,\"column\":74}}}) : helper)))\n    + \"time-schedule-content-travel-time\\\" style=\\\"border-color:\"\n    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"borderColor\") : stack1), depth0))\n    + \"; border-bottom: 1px dashed \"\n    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"color\") : stack1), depth0))\n    + \"; height: \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"goingDurationHeight\") || (depth0 != null ? lookupProperty(depth0,\"goingDurationHeight\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"goingDurationHeight\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":4,\"column\":203},\"end\":{\"line\":4,\"column\":226}}}) : helper)))\n    + \"%;\\\">\"\n    + ((stack1 = (lookupProperty(helpers,\"goingDuration-tmpl\")||(depth0 && lookupProperty(depth0,\"goingDuration-tmpl\"))||alias2).call(alias1,(depth0 != null ? lookupProperty(depth0,\"model\") : depth0),{\"name\":\"goingDuration-tmpl\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":4,\"column\":230},\"end\":{\"line\":4,\"column\":260}}})) != null ? stack1 : \"\")\n    + \"</div>\\n\";\n},\"3\":function(container,depth0,helpers,partials,data) {\n    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, alias5=container.lambda, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"            <div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":10,\"column\":24},\"end\":{\"line\":10,\"column\":38}}}) : helper)))\n    + \"time-schedule-content \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":10,\"column\":60},\"end\":{\"line\":10,\"column\":74}}}) : helper)))\n    + \"time-schedule-content-travel-time\\\" style=\\\"border-color:\"\n    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"borderColor\") : stack1), depth0))\n    + \"; border-top: 1px dashed \"\n    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"color\") : stack1), depth0))\n    + \"; height: \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"comingDurationHeight\") || (depth0 != null ? lookupProperty(depth0,\"comingDurationHeight\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"comingDurationHeight\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":10,\"column\":200},\"end\":{\"line\":10,\"column\":224}}}) : helper)))\n    + \"%;\\\">\"\n    + ((stack1 = (lookupProperty(helpers,\"comingDuration-tmpl\")||(depth0 && lookupProperty(depth0,\"comingDuration-tmpl\"))||alias2).call(alias1,(depth0 != null ? lookupProperty(depth0,\"model\") : depth0),{\"name\":\"comingDuration-tmpl\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":10,\"column\":228},\"end\":{\"line\":10,\"column\":259}}})) != null ? stack1 : \"\")\n    + \"</div>\\n\";\n},\"5\":function(container,depth0,helpers,partials,data) {\n    var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"<div class=\\\"\"\n    + container.escapeExpression(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":13,\"column\":38},\"end\":{\"line\":13,\"column\":52}}}) : helper)))\n    + \"time-resize-handle handle-x\\\">&nbsp;</div>\";\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, alias5=container.lambda, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"<div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":1,\"column\":12},\"end\":{\"line\":1,\"column\":26}}}) : helper)))\n    + \"time-date-schedule-block\\\" data-id=\\\"\"\n    + alias4((lookupProperty(helpers,\"stamp\")||(depth0 && lookupProperty(depth0,\"stamp\"))||alias2).call(alias1,(depth0 != null ? lookupProperty(depth0,\"model\") : depth0),{\"name\":\"stamp\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":1,\"column\":61},\"end\":{\"line\":1,\"column\":76}}}))\n    + \"\\\" style=\\\"width: 100%; height: 100%;\\\">\\n    <div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":2,\"column\":16},\"end\":{\"line\":2,\"column\":30}}}) : helper)))\n    + \"time-schedule \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":2,\"column\":44},\"end\":{\"line\":2,\"column\":58}}}) : helper)))\n    + \"time-date-schedule-block-focused\\\" style=\\\"color: #ffffff; background-color:\"\n    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"dragBgColor\") : stack1), depth0))\n    + \";\\\">\\n\"\n    + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"hasGoingDuration\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":3,\"column\":8},\"end\":{\"line\":5,\"column\":15}}})) != null ? stack1 : \"\")\n    + \"            <div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":6,\"column\":24},\"end\":{\"line\":6,\"column\":38}}}) : helper)))\n    + \"time-schedule-content\\\" style=\\\"height: \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"modelDurationHeight\") || (depth0 != null ? lookupProperty(depth0,\"modelDurationHeight\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"modelDurationHeight\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":6,\"column\":76},\"end\":{\"line\":6,\"column\":99}}}) : helper)))\n    + \"%; border-color:\"\n    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"borderColor\") : stack1), depth0))\n    + \";\\\">\\n                \"\n    + ((stack1 = (lookupProperty(helpers,\"time-tmpl\")||(depth0 && lookupProperty(depth0,\"time-tmpl\"))||alias2).call(alias1,(depth0 != null ? lookupProperty(depth0,\"model\") : depth0),{\"name\":\"time-tmpl\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":7,\"column\":16},\"end\":{\"line\":7,\"column\":37}}})) != null ? stack1 : \"\")\n    + \"\\n            </div>\\n\"\n    + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"hasComingDuration\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(3, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":9,\"column\":8},\"end\":{\"line\":11,\"column\":15}}})) != null ? stack1 : \"\")\n    + \"    </div>\\n    \"\n    + ((stack1 = lookupProperty(helpers,\"unless\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"croppedEnd\") : depth0),{\"name\":\"unless\",\"hash\":{},\"fn\":container.program(5, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":13,\"column\":4},\"end\":{\"line\":13,\"column\":104}}})) != null ? stack1 : \"\")\n    + \"\\n    <div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":14,\"column\":16},\"end\":{\"line\":14,\"column\":30}}}) : helper)))\n    + \"time-date-schedule-block-cover\\\"></div>\\n</div>\\n\";\n},\"useData\":true});","/**\n * @fileoverview Handling resize schedules from drag handler and time grid view\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\nvar util = require('tui-code-snippet');\nvar config = require('../../config');\nvar datetime = require('../../common/datetime');\nvar domutil = require('../../common/domutil');\nvar TZDate = require('../../common/timezone').Date;\nvar common = require('../../common/common');\nvar timeCore = require('./core');\nvar TimeResizeGuide = require('./resizeGuide');\n\n/**\n * @constructor\n * @implements {Handler}\n * @mixes timeCore\n * @mixes util.CustomEvents\n * @param {Drag} [dragHandler] - Drag handler instance.\n * @param {TimeGrid} [timeGridView] - TimeGrid view instance.\n * @param {Base} [baseController] - Base controller instance.\n */\nfunction TimeResize(dragHandler, timeGridView, baseController) {\n    /**\n     * @type {Drag}\n     */\n    this.dragHandler = dragHandler;\n\n    /**\n     * @type {TimeGrid}\n     */\n    this.timeGridView = timeGridView;\n\n    /**\n     * @type {Base}\n     */\n    this.baseController = baseController;\n\n    /**\n     * @type {function}\n     */\n    this._getScheduleDataFunc = null;\n\n    /**\n     * @type {object}\n     */\n    this._dragStart = null;\n\n    /**\n     * @type {TimeResizeGuide}\n     */\n    this._guide = new TimeResizeGuide(this);\n\n    dragHandler.on('dragStart', this._onDragStart, this);\n}\n\n/**\n * Destroy method\n */\nTimeResize.prototype.destroy = function() {\n    this._guide.destroy();\n    this.dragHandler.off(this);\n    this.dragHandler = this.timeGridView = this.baseController =\n        this._getScheduleDataFunc = this._dragStart = this._guide = null;\n};\n\n/**\n * @param {HTMLElement} target - element to check condition.\n * @returns {object|boolean} - return time view instance or false\n */\nTimeResize.prototype.checkExpectCondition = function(target) {\n    var container,\n        matches;\n\n    if (!domutil.hasClass(target, config.classname('time-resize-handle'))) {\n        return false;\n    }\n\n    container = domutil.closest(target, config.classname('.time-date'));\n\n    if (!container) {\n        return false;\n    }\n\n    matches = domutil.getClass(container).match(config.time.getViewIDRegExp);\n\n    if (!matches || matches.length < 2) {\n        return false;\n    }\n\n    return util.pick(this.timeGridView.children.items, Number(matches[1]));\n};\n\n/**\n * @emits TimeResize#timeResizeDragstart\n * @param {object} dragStartEventData - event data of Drag#dragstart\n */\nTimeResize.prototype._onDragStart = function(dragStartEventData) {\n    var target = dragStartEventData.target,\n        timeView = this.checkExpectCondition(target),\n        blockElement = domutil.closest(target, config.classname('.time-date-schedule-block')),\n        ctrl = this.baseController,\n        targetModelID,\n        getScheduleDataFunc,\n        scheduleData;\n\n    if (!timeView || !blockElement) {\n        return;\n    }\n\n    targetModelID = domutil.getData(blockElement, 'id');\n    getScheduleDataFunc = this._getScheduleDataFunc = this._retriveScheduleData(timeView);\n    scheduleData = this._dragStart = getScheduleDataFunc(\n        dragStartEventData.originEvent, {\n            targetModelID: targetModelID,\n            schedule: ctrl.schedules.items[targetModelID]\n        }\n    );\n\n    this.dragHandler.on({\n        drag: this._onDrag,\n        dragEnd: this._onDragEnd,\n        click: this._onClick\n    }, this);\n\n    /**\n     * @event TimeResize#timeResizeDragstart\n     * @type {object}\n     * @property {HTMLElement} target - current target in mouse event object.\n     * @property {Time} relatedView - time view instance related with mouse position.\n     * @property {MouseEvent} originEvent - mouse event object.\n     * @property {number} mouseY - mouse Y px mouse event.\n     * @property {number} gridY - grid Y index value related with mouseY value.\n     * @property {number} timeY - milliseconds value of mouseY points.\n     * @property {number} nearestGridY - nearest grid index related with mouseY value.\n     * @property {number} nearestGridTimeY - time value for nearestGridY.\n     * @property {string} targetModelID - The model unique id emitted move schedule.\n     * @property {Schedule} schedule - schedule data\n     */\n    this.fire('timeResizeDragstart', scheduleData);\n};\n\n/**\n * Drag#drag event handler\n * @emits TimeResize#timeResizeDrag\n * @param {object} dragEventData - event data of Drag#drag custom event.\n * @param {string} [overrideEventName] - override emitted event name when supplied.\n * @param {function} [revise] - supply function for revise schedule data before emit.\n */\nTimeResize.prototype._onDrag = function(dragEventData, overrideEventName, revise) {\n    var getScheduleDataFunc = this._getScheduleDataFunc,\n        startScheduleData = this._dragStart,\n        scheduleData;\n\n    if (!getScheduleDataFunc || !startScheduleData) {\n        return;\n    }\n\n    scheduleData = getScheduleDataFunc(dragEventData.originEvent, {\n        targetModelID: startScheduleData.targetModelID\n    });\n\n    if (revise) {\n        revise(scheduleData);\n    }\n\n    /**\n     * @event TimeResize#timeResizeDrag\n     * @type {object}\n     * @property {HTMLElement} target - current target in mouse event object.\n     * @property {Time} relatedView - time view instance related with drag start position.\n     * @property {MouseEvent} originEvent - mouse event object.\n     * @property {number} mouseY - mouse Y px mouse event.\n     * @property {number} gridY - grid Y index value related with mouseY value.\n     * @property {number} timeY - milliseconds value of mouseY points.\n     * @property {number} nearestGridY - nearest grid index related with mouseY value.\n     * @property {number} nearestGridTimeY - time value for nearestGridY.\n     * @property {string} targetModelID - The model unique id emitted move schedule.\n     */\n    this.fire(overrideEventName || 'timeResizeDrag', scheduleData);\n};\n\n/**\n * Update model instance by dragend event results.\n * @fires TimeResize#beforeUpdateSchedule\n * @param {object} scheduleData - schedule data from TimeResize#timeResizeDragend\n */\nTimeResize.prototype._updateSchedule = function(scheduleData) {\n    var ctrl = this.baseController,\n        modelID = scheduleData.targetModelID,\n        range = scheduleData.nearestRange,\n        timeDiff = range[1] - range[0],\n        schedule = ctrl.schedules.items[modelID],\n        relatedView = scheduleData.relatedView,\n        dateEnd,\n        newEnds,\n        baseDate;\n    var changes;\n\n    if (!schedule) {\n        return;\n    }\n\n    timeDiff -= datetime.millisecondsFrom('minutes', 30);\n\n    baseDate = new TZDate(relatedView.getDate());\n    dateEnd = datetime.end(baseDate);\n    newEnds = new TZDate(schedule.getEnds()).addMilliseconds(timeDiff);\n\n    if (newEnds > dateEnd) {\n        newEnds = new TZDate(dateEnd);\n    }\n\n    if (newEnds.getTime() - schedule.getStarts().getTime() < datetime.millisecondsFrom('minutes', 30)) {\n        newEnds = new TZDate(schedule.getStarts()).addMinutes(30);\n    }\n\n    changes = common.getScheduleChanges(\n        schedule,\n        ['end'],\n        {end: newEnds}\n    );\n\n    /**\n     * @event TimeResize#beforeUpdateSchedule\n     * @type {object}\n     * @property {Schedule} schedule - The original schedule instance\n     * @property {Date} start - Deprecated: start time to update\n     * @property {Date} end - Deprecated: end time to update\n     * @property {object} changes - end time to update\n     *  @property {date} end - end time to update\n     */\n    this.fire('beforeUpdateSchedule', {\n        schedule: schedule,\n        changes: changes,\n        start: schedule.getStarts(),\n        end: newEnds\n    });\n};\n\n/**\n * Drag#dragEnd event handler\n * @emits TimeResize#timeResizeDragend\n * @param {MouseEvent} dragEndEventData - Mouse event of Drag#dragEnd custom event.\n */\nTimeResize.prototype._onDragEnd = function(dragEndEventData) {\n    var getScheduleDataFunc = this._getScheduleDataFunc,\n        dragStart = this._dragStart,\n        scheduleData;\n\n    this.dragHandler.off({\n        drag: this._onDrag,\n        dragEnd: this._onDragEnd,\n        click: this._onClick\n    }, this);\n\n    if (!getScheduleDataFunc || !dragStart) {\n        return;\n    }\n\n    scheduleData = getScheduleDataFunc(dragEndEventData.originEvent, {\n        targetModelID: dragStart.targetModelID\n    });\n\n    scheduleData.range = [\n        dragStart.timeY,\n        new TZDate(scheduleData.timeY).addMinutes(30)\n    ];\n\n    scheduleData.nearestRange = [\n        dragStart.nearestGridTimeY,\n        scheduleData.nearestGridTimeY.addMinutes(30)\n    ];\n\n    this._updateSchedule(scheduleData);\n\n    /**\n     * @event TimeResize#timeResizeDragend\n     * @type {object}\n     * @property {HTMLElement} target - current target in mouse event object.\n     * @property {Time} relatedView - time view instance related with drag start position.\n     * @property {MouseEvent} originEvent - mouse event object.\n     * @property {number} mouseY - mouse Y px mouse event.\n     * @property {number} gridY - grid Y index value related with mouseY value.\n     * @property {number} timeY - milliseconds value of mouseY points.\n     * @property {number} nearestGridY - nearest grid index related with mouseY value.\n     * @property {number} nearestGridTimeY - time value for nearestGridY.\n     * @property {string} targetModelID - The model unique id emitted move schedule.\n     * @property {number[]} range - milliseconds range between drag start and end.\n     * @property {number[]} nearestRange - milliseconds range related with nearestGridY between start and end.\n     */\n    this.fire('timeResizeDragend', scheduleData);\n\n    this._getScheduleDataFunc = this._dragStart = null;\n};\n\n/**\n * @emits TimeResize#timeResizeClick\n */\nTimeResize.prototype._onClick = function() {\n    this.dragHandler.off({\n        drag: this._onDrag,\n        dragEnd: this._onDragEnd,\n        click: this._onClick\n    }, this);\n\n    /**\n     * @event TimeResize#timeResizeClick\n     */\n    this.fire('timeResizeClick');\n};\n\ntimeCore.mixin(TimeResize);\nutil.CustomEvents.mixin(TimeResize);\n\nmodule.exports = TimeResize;\n","/**\n * @fileoverview Module for Time.Resize effect while dragging.\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\nvar util = require('tui-code-snippet');\nvar config = require('../../config');\nvar domutil = require('../../common/domutil');\nvar reqAnimFrame = require('../../common/reqAnimFrame');\nvar ratio = require('../../common/common').ratio;\nvar datetime = require('../../common/datetime');\n\n/**\n * Class for Time.Resize effect.\n * @constructor\n * @param {TimeResize} timeResize - the instance of TimeResize handler.\n */\nfunction TimeResizeGuide(timeResize) {\n    /**\n     * @type {HTMLElement}\n     */\n    this.guideElement = null;\n\n    /**\n     * @type {TimeResize}\n     */\n    this.timeResize = timeResize;\n\n    /**\n     * @type {function}\n     */\n    this._getTopFunc = null;\n\n    /**\n     * @type {HTMLElement}\n     */\n    this._originScheduleElement = null;\n\n    /**\n     * @type {number}\n     */\n    this._startTopPixel = 0;\n\n    /**\n     * @type {number}\n     */\n    this._startHeightPixel = 0;\n\n    /**\n     * @type {number}\n     */\n    this._startGridY = 0;\n\n    /**\n     * @type {Schedule}\n     */\n    this._schedule = null;\n\n    timeResize.on({\n        'timeResizeDragstart': this._onDragStart,\n        'timeResizeDrag': this._onDrag,\n        'timeResizeDragend': this._clearGuideElement,\n        'timeResizeClick': this._clearGuideElement\n    }, this);\n}\n\n/**\n * Destroy method\n */\nTimeResizeGuide.prototype.destroy = function() {\n    this._clearGuideElement();\n    this.timeResize.off(this);\n    this.guideElement = this.timeResize = this._getTopFunc =\n        this._originScheduleElement = this._startHeightPixel =\n        this._startGridY = this._startTopPixel = null;\n};\n\n/**\n * Clear guide element.\n */\nTimeResizeGuide.prototype._clearGuideElement = function() {\n    var guideElement = this.guideElement,\n        originElement = this._originScheduleElement;\n\n    if (!util.browser.msie) {\n        domutil.removeClass(global.document.body, config.classname('resizing'));\n    }\n\n    if (originElement) {\n        originElement.style.display = 'block';\n    }\n\n    domutil.remove(guideElement);\n\n    this.guideElement = this._getTopFunc = this._originScheduleElement =\n        this._startHeightPixel = this._startGridY = this._startTopPixel = null;\n};\n\n/**\n * Refresh guide element\n * @param {number} guideHeight - guide element's style height.\n * @param {number} minTimeHeight - time element's min height\n * @param {number} timeHeight - time element's height.\n */\nTimeResizeGuide.prototype._refreshGuideElement = function(guideHeight, minTimeHeight, timeHeight) {\n    var guideElement = this.guideElement;\n    var timeElement;\n\n    if (!guideElement) {\n        return;\n    }\n\n    timeElement = domutil.find(config.classname('.time-schedule-content-time'), guideElement);\n\n    reqAnimFrame.requestAnimFrame(function() {\n        guideElement.style.height = guideHeight + 'px';\n        guideElement.style.display = 'block';\n\n        if (timeElement) {\n            timeElement.style.height = timeHeight + 'px';\n            timeElement.style.minHeight = minTimeHeight + 'px';\n        }\n    });\n};\n\n/**\n * TimeMove#timeMoveDragstart event handler\n * @param {object} dragStartEventData - dragstart event data\n */\nTimeResizeGuide.prototype._onDragStart = function(dragStartEventData) {\n    var originElement = domutil.closest(\n            dragStartEventData.target,\n            config.classname('.time-date-schedule-block')\n        ),\n        schedule = dragStartEventData.schedule,\n        guideElement;\n\n    if (!util.browser.msie) {\n        domutil.addClass(global.document.body, config.classname('resizing'));\n    }\n\n    if (!originElement || !schedule) {\n        return;\n    }\n\n    this._startGridY = dragStartEventData.nearestGridY;\n    this._startHeightPixel = parseFloat(originElement.style.height);\n    this._startTopPixel = parseFloat(originElement.style.top);\n\n    this._originScheduleElement = originElement;\n    this._schedule = schedule;\n\n    guideElement = this.guideElement = originElement.cloneNode(true);\n    domutil.addClass(guideElement, config.classname('time-guide-resize'));\n\n    originElement.style.display = 'none';\n    dragStartEventData.relatedView.container.appendChild(guideElement);\n};\n\n/**\n * @param {object} dragEventData - event data from Drag#drag.\n */\nTimeResizeGuide.prototype._onDrag = function(dragEventData) {\n    var timeView = dragEventData.relatedView,\n        viewOptions = timeView.options,\n        viewHeight = timeView.getViewBound().height,\n        hourLength = viewOptions.hourEnd - viewOptions.hourStart,\n        guideElement = this.guideElement,\n        guideTop = parseFloat(guideElement.style.top),\n        gridYOffset = dragEventData.nearestGridY - this._startGridY,\n        // hourLength : viewHeight = gridYOffset : X;\n        gridYOffsetPixel = ratio(hourLength, viewHeight, gridYOffset),\n        goingDuration = this._schedule.goingDuration,\n        modelDuration = this._schedule.duration() / datetime.MILLISECONDS_PER_MINUTES,\n        comingDuration = this._schedule.comingDuration,\n        minutesLength = hourLength * 60,\n        timeHeight,\n        timeMinHeight,\n        minHeight,\n        maxHeight,\n        height;\n\n    height = (this._startHeightPixel + gridYOffsetPixel);\n    // at least large than 30min from schedule start time.\n    minHeight = guideTop + ratio(hourLength, viewHeight, 0.5);\n    minHeight -= this._startTopPixel;\n    timeMinHeight = minHeight;\n    minHeight += ratio(minutesLength, viewHeight, goingDuration) + ratio(minutesLength, viewHeight, comingDuration);\n    // smaller than 24h\n    maxHeight = viewHeight - guideTop;\n\n    height = Math.max(height, minHeight);\n    height = Math.min(height, maxHeight);\n\n    timeHeight = ratio(minutesLength, viewHeight, modelDuration) + gridYOffsetPixel;\n\n    this._refreshGuideElement(height, timeMinHeight, timeHeight);\n};\n\nmodule.exports = TimeResizeGuide;\n","/**\n * @fileoverview Month view factory module\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\nvar util = require('tui-code-snippet');\nvar config = require('../config'),\n    array = require('../common/array'),\n    datetime = require('../common/datetime'),\n    domutil = require('../common/domutil'),\n    common = require('../common/common'),\n    Month = require('../view/month/month'),\n    MonthClick = require('../handler/month/click'),\n    MonthCreation = require('../handler/month/creation'),\n    MonthResize = require('../handler/month/resize'),\n    MonthMove = require('../handler/month/move'),\n    More = require('../view/month/more'),\n    ScheduleCreationPopup = require('../view/popup/scheduleCreationPopup'),\n    ScheduleDetailPopup = require('../view/popup/scheduleDetailPopup'),\n    Schedule = require('../model/schedule');\n\n/**\n * Get the view model for more layer\n * @param {TZDate} date - date has more schedules\n * @param {HTMLElement} target - target element\n * @param {Collection} schedules - schedule collection\n * @param {string[]} daynames - daynames to use upside of month more view\n * @returns {object} view model\n */\nfunction getViewModelForMoreLayer(date, target, schedules, daynames) {\n    schedules.each(function(schedule) {\n        var model = schedule.model;\n        schedule.hasMultiDates = datetime.hasMultiDates(model.start, model.end);\n    });\n\n    return {\n        target: target,\n        date: datetime.format(date, 'YYYY.MM.DD'),\n        dayname: daynames[date.getDay()],\n        schedules: schedules.sort(array.compare.schedule.asc)\n    };\n}\n\n/**\n * @param {Base} baseController - controller instance\n * @param {HTMLElement} layoutContainer - container element for month view\n * @param {Drag} dragHandler - drag handler instance\n * @param {object} options - options\n * @returns {object} view instance and refresh method\n */\nfunction createMonthView(baseController, layoutContainer, dragHandler, options) {\n    var monthViewContainer, monthView, moreView, createView;\n    var clickHandler, creationHandler, resizeHandler, moveHandler, clearSchedulesHandler, onUpdateSchedule;\n    var onShowCreationPopup, onSaveNewSchedule, onShowEditPopup;\n    var detailView, onShowDetailPopup, onDeleteSchedule, onEditSchedule;\n\n    monthViewContainer = domutil.appendHTMLElement(\n        'div', layoutContainer, config.classname('month'));\n\n    monthView = new Month(options, monthViewContainer, baseController.Month);\n    moreView = new More(options.month, layoutContainer, baseController.theme);\n\n    // handlers\n    clickHandler = new MonthClick(dragHandler, monthView, baseController);\n    if (!options.isReadOnly) {\n        creationHandler = new MonthCreation(dragHandler, monthView, baseController, options);\n        resizeHandler = new MonthResize(dragHandler, monthView, baseController);\n        moveHandler = new MonthMove(dragHandler, monthView, baseController);\n    }\n\n    clearSchedulesHandler = function() {\n        if (moreView) {\n            moreView.hide();\n        }\n    };\n\n    onUpdateSchedule = function() {\n        if (moreView) {\n            moreView.refresh();\n        }\n    };\n\n    // binding +n click schedule\n    clickHandler.on('clickMore', function(clickMoreSchedule) {\n        var date = clickMoreSchedule.date,\n            target = clickMoreSchedule.target,\n            schedules = util.pick(baseController.findByDateRange(\n                datetime.start(date),\n                datetime.end(date)\n            ), clickMoreSchedule.ymd);\n\n        schedules.items = util.filter(schedules.items, function(item) {\n            return options.month.scheduleFilter(item.model);\n        });\n\n        if (schedules && schedules.length) {\n            moreView.render(getViewModelForMoreLayer(date, target, schedules, monthView.options.daynames));\n\n            schedules.each(function(scheduleViewModel) {\n                if (scheduleViewModel) {\n                    /**\n                     * @event More#afterRenderSchedule\n                     */\n                    monthView.fire('afterRenderSchedule', {schedule: scheduleViewModel.model});\n                }\n            });\n\n            monthView.fire('clickMore', {\n                date: clickMoreSchedule.date,\n                target: moreView.getMoreViewElement()\n            });\n        }\n    });\n\n    // binding popup for schedules creation\n    if (options.useCreationPopup) {\n        createView = new ScheduleCreationPopup(layoutContainer, baseController.calendars, options.usageStatistics);\n\n        onSaveNewSchedule = function(scheduleData) {\n            creationHandler.fire('beforeCreateSchedule', util.extend(scheduleData, {\n                useCreationPopup: true\n            }));\n        };\n        createView.on('beforeCreateSchedule', onSaveNewSchedule);\n    }\n\n    // binding popup for schedule detail\n    if (options.useDetailPopup) {\n        detailView = new ScheduleDetailPopup(layoutContainer, baseController.calendars);\n        onShowDetailPopup = function(eventData) {\n            var scheduleId = eventData.schedule.calendarId;\n            eventData.calendar = common.find(baseController.calendars, function(calendar) {\n                return calendar.id === scheduleId;\n            });\n\n            if (options.isReadOnly) {\n                eventData.schedule = util.extend({}, eventData.schedule, {isReadOnly: true});\n            }\n\n            detailView.render(eventData);\n        };\n        onDeleteSchedule = function(eventData) {\n            if (creationHandler) {\n                creationHandler.fire('beforeDeleteSchedule', eventData);\n            }\n        };\n        onEditSchedule = function(eventData) {\n            moveHandler.fire('beforeUpdateSchedule', eventData);\n        };\n\n        clickHandler.on('clickSchedule', onShowDetailPopup);\n\n        detailView.on('beforeDeleteSchedule', onDeleteSchedule);\n\n        if (options.useCreationPopup) {\n            onShowEditPopup = function(eventData) {\n                createView.setCalendars(baseController.calendars);\n                createView.render(eventData);\n            };\n            createView.on('beforeUpdateSchedule', onEditSchedule);\n            detailView.on('beforeUpdateSchedule', onShowEditPopup);\n        } else {\n            detailView.on('beforeUpdateSchedule', onEditSchedule);\n        }\n    }\n\n    // binding clear schedules\n    baseController.on('clearSchedules', clearSchedulesHandler);\n\n    // bind update schedule event\n    baseController.on('updateSchedule', onUpdateSchedule);\n\n    if (moveHandler) {\n        moveHandler.on('monthMoveStart_from_morelayer', function() {\n            moreView.hide();\n        });\n    }\n\n    monthView.handler = {\n        click: {\n            'default': clickHandler\n        }\n    };\n\n    if (!options.isReadOnly) {\n        monthView.handler = util.extend(monthView.handler, {\n            creation: {\n                'default': creationHandler\n            },\n            resize: {\n                'default': resizeHandler\n            },\n            move: {\n                'default': moveHandler\n            }\n        });\n    }\n\n    monthView._beforeDestroy = function() {\n        moreView.destroy();\n        baseController.off('clearSchedules', clearSchedulesHandler);\n        baseController.off('updateSchedule', onUpdateSchedule);\n\n        util.forEach(monthView.handler, function(type) {\n            util.forEach(type, function(handler) {\n                handler.off();\n                handler.destroy();\n            });\n        });\n\n        if (options.useCreationPopup && options.useDetailPopup) {\n            createView.off('beforeUpdateSchedule', onUpdateSchedule);\n        }\n\n        if (options.useCreationPopup) {\n            if (creationHandler) {\n                creationHandler.off('beforeCreateSchedule', onShowCreationPopup);\n            }\n            createView.off('saveSchedule', onSaveNewSchedule);\n            createView.destroy();\n        }\n\n        if (options.useDetailPopup) {\n            clickHandler.off('clickSchedule', onShowDetailPopup);\n            detailView.off('beforeUpdateSchedule', onUpdateSchedule);\n            detailView.off('beforeDeleteSchedule', onDeleteSchedule);\n            detailView.destroy();\n        }\n    };\n\n    // add controller\n    monthView.controller = baseController.Month;\n\n    return {\n        view: monthView,\n        refresh: function() {\n            monthView.vLayout.refresh();\n        },\n        openCreationPopup: function(schedule) {\n            if (createView && creationHandler) {\n                creationHandler.invokeCreationClick(Schedule.create(schedule));\n            }\n        },\n        showCreationPopup: function(eventData) {\n            if (createView) {\n                createView.setCalendars(baseController.calendars);\n                createView.render(eventData);\n            }\n        },\n        hideMoreView: function() {\n            if (moreView) {\n                moreView.hide();\n            }\n        }\n    };\n}\n\nmodule.exports = createMonthView;\n","/**\n * @fileoverview Month view\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\nvar util = require('tui-code-snippet');\nvar config = require('../../config'),\n    datetime = require('../../common/datetime'),\n    domutil = require('../../common/domutil'),\n    TZDate = require('../../common/timezone').Date,\n    tmpl = require('../template/month/month.hbs'),\n    View = require('../view'),\n    VLayout = require('../..//common/vlayout'),\n    WeekdayInMonth = require('./weekdayInMonth');\nvar mmin = Math.min;\n\n/**\n * @constructor\n * @extends {View}\n * @param {object} options - options\n * @param {function} [options.scheduleFilter] - schedule filter\n * @param {number} [options.startDayOfWeek=0] - start day of week\n * @param {string} [options.renderMonth='2015-12'] - render month\n * @param {string[]} [options.daynames] - daynames to use upside of month view\n * @param {HTMLElement} container - container element\n * @param {Base.Month} controller - controller instance\n */\nfunction Month(options, container, controller) {\n    var theme = controller ? controller.theme : null;\n    var monthOption;\n\n    options = options || {};\n    monthOption = options ? options.month : {};\n\n    View.call(this, container);\n\n    /**\n     * @type {Base.Month}\n     */\n    this.controller = controller;\n\n    /**\n     * @type {VLayout}\n     */\n    this.vLayout = new VLayout({\n        panels: [\n            {height: parseInt(controller.theme.month.dayname.height, 10) || 42},\n            {autoHeight: true}\n        ]\n    }, container, theme);\n\n    /**\n     * @type {string}\n     */\n    this.options = util.extend({\n        scheduleFilter: function(schedule) {\n            return Boolean(schedule.isVisible);\n        },\n        startDayOfWeek: 0,\n        renderMonth: '2018-01',\n        daynames: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n        narrowWeekend: false,\n        visibleWeeksCount: null,\n        isAlways6Week: true,\n        isReadOnly: options.isReadOnly,\n        grid: {\n            header: {\n                height: 34\n            },\n            footer: {\n                height: 3\n            }\n        }\n    }, monthOption);\n\n    this.options.grid.header = util.extend({\n        height: 34\n    }, util.pick(monthOption, 'grid', 'header'));\n    this.options.grid.footer = util.extend({\n        height: 3\n    }, util.pick(monthOption, 'grid', 'footer'));\n\n    /**\n     * horizontal grid information\n     * @type {Object}\n     */\n    this.grids = datetime.getGridLeftAndWidth(\n        this.options.daynames.length,\n        this.options.narrowWeekend,\n        this.options.startDayOfWeek);\n}\n\nutil.inherit(Month, View);\n\n/**\n * Name of view. for managing subview at layout view\n * @type {string}\n */\nMonth.prototype.viewName = 'month';\n\n/**\n * Get calendar array by supplied date\n * @param {string} renderMonth - month to render YYYY-MM, weeks2/3 to render YYYY-MM-DD\n * @returns {array.<Date[]>} calendar array\n */\nMonth.prototype._getMonthCalendar = function(renderMonth) {\n    var date = new TZDate(renderMonth);\n    var startDayOfWeek = this.options.startDayOfWeek || 0;\n    var visibleWeeksCount = mmin(this.options.visibleWeeksCount || 0, 6);\n    var workweek = this.options.workweek || false;\n    var datetimeOptions, calendar;\n\n    if (this.options.visibleWeeksCount) {\n        datetimeOptions = {\n            startDayOfWeek: startDayOfWeek,\n            isAlways6Week: false,\n            visibleWeeksCount: visibleWeeksCount,\n            workweek: workweek\n        };\n    } else {\n        datetimeOptions = {\n            startDayOfWeek: startDayOfWeek,\n            isAlways6Week: this.options.isAlways6Week,\n            workweek: workweek\n        };\n    }\n\n    calendar = datetime.arr2dCalendar(date, datetimeOptions);\n\n    return calendar;\n};\n\n/**\n * Create children view (week) and add children\n * @param {HTMLElement} container - container element to render weeks\n * @param {array.<Date[]>} calendar - calendar array from datetime#arr2dCalendar\n * @param {Theme} theme - theme instance\n */\nMonth.prototype._renderChildren = function(container, calendar, theme) {\n    var self = this;\n    var weekCount = calendar.length;\n    var heightPercent = 100 / weekCount;\n    var opt = this.options;\n    var renderMonth = opt.renderMonth;\n    var narrowWeekend = opt.narrowWeekend;\n    var startDayOfWeek = opt.startDayOfWeek;\n    var visibleWeeksCount = opt.visibleWeeksCount;\n    var visibleScheduleCount = opt.visibleScheduleCount;\n    var gridOption = opt.grid;\n    var isReadOnly = opt.isReadOnly;\n\n    container.innerHTML = '';\n    this.children.clear();\n\n    util.forEach(calendar, function(weekArr) {\n        var start = new TZDate(weekArr[0]),\n            end = new TZDate(weekArr[weekArr.length - 1]),\n            weekdayViewContainer,\n            weekdayView;\n\n        weekdayViewContainer = domutil.appendHTMLElement(\n            'div', container, config.classname('month-week-item'));\n\n        weekdayView = new WeekdayInMonth({\n            renderMonth: renderMonth,\n            heightPercent: heightPercent,\n            renderStartDate: start,\n            renderEndDate: end,\n            narrowWeekend: narrowWeekend,\n            startDayOfWeek: startDayOfWeek,\n            visibleWeeksCount: visibleWeeksCount,\n            visibleScheduleCount: visibleScheduleCount,\n            grid: gridOption,\n            scheduleHeight: parseInt(theme.month.schedule.height, 10),\n            scheduleGutter: parseInt(theme.month.schedule.marginTop, 10),\n            isReadOnly: isReadOnly\n        }, weekdayViewContainer);\n\n        self.addChild(weekdayView);\n    });\n};\n\n/**\n * Render month view\n * @override\n */\nMonth.prototype.render = function() {\n    var self = this,\n        opt = this.options,\n        vLayout = this.vLayout,\n        controller = this.controller,\n        daynames = opt.daynames,\n        workweek = opt.workweek,\n        calendar = this._getMonthCalendar(opt.renderMonth),\n        scheduleFilter = opt.scheduleFilter,\n        theme = controller ? controller.theme : null,\n        styles = this._getStyles(theme),\n        grids,\n        daynameViewModel,\n        baseViewModel;\n\n    grids = this.grids = datetime.getGridLeftAndWidth(\n        opt.daynames.length,\n        opt.narrowWeekend,\n        opt.startDayOfWeek\n    );\n\n    daynameViewModel = util.map(\n        util.range(opt.startDayOfWeek, 7).concat(util.range(7)).slice(0, 7),\n        function(day, index) {\n            return {\n                day: day,\n                label: daynames[day],\n                width: grids[index] ? grids[index].width : 0,\n                left: grids[index] ? grids[index].left : 0,\n                color: this._getDayNameColor(theme, day)\n            };\n        },\n        this\n    );\n\n    if (workweek) {\n        grids = this.grids = datetime.getGridLeftAndWidth(5, opt.narrowWeekend, opt.startDayOfWeek, workweek);\n\n        daynameViewModel = util.filter(daynameViewModel, function(daynameModel) {\n            return !datetime.isWeekend(daynameModel.day);\n        });\n\n        util.forEach(daynameViewModel, function(daynameModel, index) {\n            daynameModel.width = grids[index] ? grids[index].width : 0;\n            daynameModel.left = grids[index] ? grids[index].left : 0;\n        });\n    }\n\n    baseViewModel = {\n        daynames: daynameViewModel,\n        styles: styles\n    };\n\n    vLayout.panels[0].container.innerHTML = tmpl(baseViewModel);\n\n    this._renderChildren(vLayout.panels[1].container, calendar, theme);\n\n    baseViewModel.panelHeight = vLayout.panels[1].getHeight();\n\n    this.children.each(function(childView) {\n        var start = datetime.start(childView.options.renderStartDate);\n        var end = datetime.start(childView.options.renderEndDate);\n        var eventsInDateRange = controller.findByDateRange(\n            datetime.start(start),\n            datetime.end(end),\n            scheduleFilter\n        );\n        var dateRange = datetime.range(\n            datetime.start(start),\n            datetime.end(end),\n            datetime.MILLISECONDS_PER_DAY);\n        var viewModel = {\n            eventsInDateRange: eventsInDateRange,\n            range: dateRange.slice(0, grids.length),\n            grids: grids,\n            panelHeight: baseViewModel.panelHeight,\n            theme: theme\n        };\n\n        childView.render(viewModel);\n\n        self._invokeAfterRenderSchedule(eventsInDateRange);\n    });\n};\n\n/**\n * Fire 'afterRenderSchedule' event\n * @param {Array} matrices - schedule matrices from view model\n * @fires Month#afterRenderSchedule\n */\nMonth.prototype._invokeAfterRenderSchedule = function(matrices) {\n    var self = this;\n    util.forEachArray(matrices, function(matrix) {\n        util.forEachArray(matrix, function(column) {\n            util.forEachArray(column, function(scheduleViewModel) {\n                if (scheduleViewModel && !scheduleViewModel.hidden) {\n                    /**\n                     * @event Month#afterRenderSchedule\n                     */\n                    self.fire('afterRenderSchedule', {schedule: scheduleViewModel.model});\n                }\n            });\n        });\n    });\n};\n\n/**\n * Get the styles from theme\n * @param {Theme} theme - theme instance\n * @returns {object} styles - styles object\n */\nMonth.prototype._getStyles = function(theme) {\n    var styles = {};\n    var dayname;\n\n    if (theme) {\n        dayname = theme.month.dayname;\n\n        styles.borderTop = dayname.borderTop || theme.common.border;\n        styles.borderLeft = dayname.borderLeft || theme.common.border;\n        styles.height = dayname.height;\n        styles.paddingLeft = dayname.paddingLeft;\n        styles.paddingRight = dayname.paddingRight;\n        styles.fontSize = dayname.fontSize;\n        styles.backgroundColor = dayname.backgroundColor;\n        styles.fontWeight = dayname.fontWeight;\n        styles.textAlign = dayname.textAlign;\n    }\n\n    return styles;\n};\n\n/**\n * Get a day name color\n * @param {Theme} theme - theme instance\n * @param {number} day - day number\n * @returns {string} style - color style\n */\nMonth.prototype._getDayNameColor = function(theme, day) {\n    var color = '';\n\n    if (theme) {\n        if (day === 0) {\n            color = theme.common.holiday.color;\n        } else if (day === 6) {\n            color = theme.common.saturday.color;\n        } else {\n            color = theme.common.dayname.color;\n        }\n    }\n\n    return color;\n};\n\nmodule.exports = Month;\n","var Handlebars = require('/Users/nhnent/Jodeng/workspace/Work/tui.calendar-new/node_modules/handlebars/runtime.js');\nmodule.exports = (Handlebars['default'] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data) {\n    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, alias5=container.lambda, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"    <div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":4,\"column\":16},\"end\":{\"line\":4,\"column\":30}}}) : helper)))\n    + \"month-dayname-item\\\"\\n         style=\\\"position: absolute;\\n                width: \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"width\") || (depth0 != null ? lookupProperty(depth0,\"width\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"width\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":6,\"column\":23},\"end\":{\"line\":6,\"column\":32}}}) : helper)))\n    + \"%;\\n                left: \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"left\") || (depth0 != null ? lookupProperty(depth0,\"left\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"left\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":7,\"column\":22},\"end\":{\"line\":7,\"column\":30}}}) : helper)))\n    + \"%;\\n                padding-left: \"\n    + alias4(alias5(((stack1 = ((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"styles\"))) && lookupProperty(stack1,\"paddingLeft\")), depth0))\n    + \";\\n                padding-right: \"\n    + alias4(alias5(((stack1 = ((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"styles\"))) && lookupProperty(stack1,\"paddingRight\")), depth0))\n    + \";\\n                line-height: \"\n    + alias4(alias5(((stack1 = ((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"styles\"))) && lookupProperty(stack1,\"height\")), depth0))\n    + \";\\n\"\n    + ((stack1 = lookupProperty(helpers,\"unless\").call(alias1,(data && lookupProperty(data,\"last\")),{\"name\":\"unless\",\"hash\":{},\"fn\":container.program(2, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":11,\"column\":16},\"end\":{\"line\":13,\"column\":27}}})) != null ? stack1 : \"\")\n    + \"                \\\">\\n        <span class=\\\"\"\n    + alias4((lookupProperty(helpers,\"holiday\")||(depth0 && lookupProperty(depth0,\"holiday\"))||alias2).call(alias1,(depth0 != null ? lookupProperty(depth0,\"day\") : depth0),{\"name\":\"holiday\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":15,\"column\":21},\"end\":{\"line\":15,\"column\":36}}}))\n    + \"\\\" style=\\\"color: \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"color\") || (depth0 != null ? lookupProperty(depth0,\"color\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"color\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":15,\"column\":52},\"end\":{\"line\":15,\"column\":61}}}) : helper)))\n    + \";\\\">\\n            \"\n    + ((stack1 = (lookupProperty(helpers,\"monthDayname-tmpl\")||(depth0 && lookupProperty(depth0,\"monthDayname-tmpl\"))||alias2).call(alias1,depth0,{\"name\":\"monthDayname-tmpl\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":16,\"column\":12},\"end\":{\"line\":16,\"column\":40}}})) != null ? stack1 : \"\")\n    + \"\\n        </span>\\n    </div>\\n\";\n},\"2\":function(container,depth0,helpers,partials,data) {\n    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"                border-right: \"\n    + container.escapeExpression(container.lambda(((stack1 = ((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"styles\"))) && lookupProperty(stack1,\"borderLeft\")), depth0))\n    + \";\\n\";\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.escapeExpression, alias3=container.lambda, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"<div class=\\\"\"\n    + alias2(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":1,\"column\":12},\"end\":{\"line\":1,\"column\":26}}}) : helper)))\n    + \"month-dayname\\\"\\n    style=\\\"border-top: \"\n    + alias2(alias3(((stack1 = (depth0 != null ? lookupProperty(depth0,\"styles\") : depth0)) != null ? lookupProperty(stack1,\"borderTop\") : stack1), depth0))\n    + \"; height: \"\n    + alias2(alias3(((stack1 = (depth0 != null ? lookupProperty(depth0,\"styles\") : depth0)) != null ? lookupProperty(stack1,\"height\") : stack1), depth0))\n    + \"; font-size: \"\n    + alias2(alias3(((stack1 = (depth0 != null ? lookupProperty(depth0,\"styles\") : depth0)) != null ? lookupProperty(stack1,\"fontSize\") : stack1), depth0))\n    + \"; background-color: \"\n    + alias2(alias3(((stack1 = (depth0 != null ? lookupProperty(depth0,\"styles\") : depth0)) != null ? lookupProperty(stack1,\"backgroundColor\") : stack1), depth0))\n    + \"; text-align: \"\n    + alias2(alias3(((stack1 = (depth0 != null ? lookupProperty(depth0,\"styles\") : depth0)) != null ? lookupProperty(stack1,\"textAlign\") : stack1), depth0))\n    + \"; font-weight: \"\n    + alias2(alias3(((stack1 = (depth0 != null ? lookupProperty(depth0,\"styles\") : depth0)) != null ? lookupProperty(stack1,\"fontWeight\") : stack1), depth0))\n    + \";\\\">\\n\"\n    + ((stack1 = lookupProperty(helpers,\"each\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"daynames\") : depth0),{\"name\":\"each\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":3,\"column\":0},\"end\":{\"line\":19,\"column\":9}}})) != null ? stack1 : \"\")\n    + \"</div>\\n\";\n},\"useData\":true});","/**\n * @fileoverview Monthday in month view\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\nvar util = require('tui-code-snippet');\nvar config = require('../../config'),\n    common = require('../../common/common.js'),\n    domutil = require('../../common/domutil'),\n    View = require('../../view/view'),\n    Weekday = require('../weekday'),\n    baseTmpl = require('../template/month/weekdayInMonth.hbs'),\n    scheduleTmpl = require('../template/month/weekdayInMonthSchedule.hbs');\nvar mfloor = Math.floor,\n    mmin = Math.min;\n\n/**\n * @constructor\n * @extends {Weekday}\n * @param {object} options - options for WeekdayInWeek view\n * @param {number} [options.heightPercent] - height percent of view\n * @param {number} [options.containerButtonGutter=8] - free space at bottom to\n *  make create easy.\n * @param {number} [options.scheduleHeight=18] - height of each schedule block.\n * @param {number} [options.scheduleGutter=2] - gutter height of each schedule block.\n * @param {HTMLDIVElement} container - DOM element to use container for this\n *  view.\n */\nfunction WeekdayInMonth(options, container) {\n    Weekday.call(this, options, container);\n    container.style.height = options.heightPercent + '%';\n}\n\nutil.inherit(WeekdayInMonth, Weekday);\n\n/**\n * Get schedule container element's bound properly by override\n *\n * View#getViewBound.\n * @override\n */\nWeekdayInMonth.prototype.getViewBound = function() {\n    var bound = View.prototype.getViewBound.call(this);\n\n    return bound;\n};\n\n/**\n * Get limit index of schedule block in current view\n * @param {number} panelHeight - panel's height for pre-calculation\n * @returns {number} limit index\n */\nWeekdayInMonth.prototype._getRenderLimitIndex = function(panelHeight) {\n    var opt = this.options;\n    var containerHeight = panelHeight || this.getViewBound().height;\n    var gridHeaderHeight = util.pick(opt, 'grid', 'header', 'height') || 0;\n    var gridFooterHeight = util.pick(opt, 'grid', 'footer', 'height') || 0;\n    var visibleScheduleCount = opt.visibleScheduleCount || 0;\n    var count;\n\n    containerHeight -= (gridHeaderHeight + gridFooterHeight);\n\n    count = mfloor(containerHeight / (opt.scheduleHeight + opt.scheduleGutter));\n\n    if (!visibleScheduleCount) {\n        visibleScheduleCount = count;\n    }\n\n    return mmin(count, visibleScheduleCount); // subtraction for '+n' label block\n};\n\n/**\n * @override\n * @param {object} viewModel - schedules view models\n */\nWeekdayInMonth.prototype.getBaseViewModel = function(viewModel) {\n    var opt = this.options,\n        gridHeaderHeight = util.pick(opt, 'grid', 'header', 'height') || 0,\n        gridFooterHeight = util.pick(opt, 'grid', 'footer', 'height') || 0,\n        renderLimitIdx = this._getRenderLimitIndex() + 1,\n        exceedDate = this.getExceedDate(renderLimitIdx, viewModel.eventsInDateRange, viewModel.range),\n        styles = this._getStyles(viewModel.theme);\n    var baseViewModel;\n\n    viewModel = util.extend({\n        exceedDate: exceedDate\n    }, viewModel);\n\n    baseViewModel = Weekday.prototype.getBaseViewModel.call(this, viewModel);\n\n    baseViewModel = util.extend({\n        matrices: viewModel.eventsInDateRange,\n        gridHeaderHeight: gridHeaderHeight,\n        gridFooterHeight: gridFooterHeight,\n        renderLimitIdx: renderLimitIdx,\n        isReadOnly: opt.isReadOnly,\n        styles: styles\n    }, baseViewModel);\n\n    return baseViewModel;\n};\n\n/**\n * @override\n * @param {object} viewModel - schedules view models\n */\nWeekdayInMonth.prototype.render = function(viewModel) {\n    var container = this.container,\n        baseViewModel = this.getBaseViewModel(viewModel),\n        scheduleContainer;\n\n    if (!this.options.visibleWeeksCount) {\n        setIsOtherMonthFlag(baseViewModel.dates, this.options.renderMonth, viewModel.theme);\n    }\n\n    container.innerHTML = baseTmpl(baseViewModel);\n\n    scheduleContainer = domutil.find(\n        config.classname('.weekday-schedules'),\n        container\n    );\n\n    if (!scheduleContainer) {\n        return;\n    }\n\n    scheduleContainer.innerHTML = scheduleTmpl(baseViewModel);\n\n    common.setAutoEllipsis(\n        config.classname('.weekday-schedule-title'),\n        container,\n        true\n    );\n};\n\nWeekdayInMonth.prototype._beforeDestroy = function() {\n};\n\n/**\n * Get the styles from theme\n * @param {Theme} theme - theme instance\n * @returns {object} styles - styles object\n */\nWeekdayInMonth.prototype._getStyles = function(theme) {\n    var styles = {};\n\n    if (theme) {\n        styles.borderTop = theme.common.border;\n        styles.borderLeft = theme.common.border;\n        styles.fontSize = theme.month.day.fontSize;\n        styles.borderRadius = theme.month.schedule.borderRadius;\n        styles.marginLeft = theme.month.schedule.marginLeft;\n        styles.marginRight = theme.month.schedule.marginRight;\n        styles.scheduleBulletTop = this.options.scheduleHeight / 3;\n    }\n\n    return styles;\n};\n\n/**\n * 현재 달이 아닌 날짜에 대해 isOtherMonth = true 플래그를 추가한다.\n * @param {Array} dates - 날짜정보 배열\n * @param {TZDate} renderMonth - 현재 렌더링중인 월 (YYYYMM)\n * @param {Theme} theme - theme instance\n */\nfunction setIsOtherMonthFlag(dates, renderMonth, theme) {\n    var month = renderMonth.getMonth() + 1;\n\n    util.forEach(dates, function(dateObj) {\n        var isOtherMonth = dateObj.month !== month;\n        dateObj.isOtherMonth = isOtherMonth;\n\n        if (isOtherMonth) {\n            dateObj.color = Weekday.prototype._getDayNameColor(theme, dateObj.day, dateObj.isToday, isOtherMonth);\n        }\n    });\n}\n\nmodule.exports = WeekdayInMonth;\n","var Handlebars = require('/Users/nhnent/Jodeng/workspace/Work/tui.calendar-new/node_modules/handlebars/runtime.js');\nmodule.exports = (Handlebars['default'] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data) {\n    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"<div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":7,\"column\":16},\"end\":{\"line\":7,\"column\":30}}}) : helper)))\n    + \"weekday-grid-line \"\n    + alias4((lookupProperty(helpers,\"holiday\")||(depth0 && lookupProperty(depth0,\"holiday\"))||alias2).call(alias1,(depth0 != null ? lookupProperty(depth0,\"day\") : depth0),{\"name\":\"holiday\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":7,\"column\":48},\"end\":{\"line\":7,\"column\":63}}}))\n    + ((stack1 = (lookupProperty(helpers,\"fi\")||(depth0 && lookupProperty(depth0,\"fi\"))||alias2).call(alias1,(depth0 != null ? lookupProperty(depth0,\"date\") : depth0),\"!==\",1,{\"name\":\"fi\",\"hash\":{},\"fn\":container.program(2, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":7,\"column\":63},\"end\":{\"line\":7,\"column\":119}}})) != null ? stack1 : \"\")\n    + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"isToday\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(4, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":7,\"column\":119},\"end\":{\"line\":7,\"column\":161}}})) != null ? stack1 : \"\")\n    + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"isOtherMonth\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(6, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":7,\"column\":161},\"end\":{\"line\":7,\"column\":213}}})) != null ? stack1 : \"\")\n    + \"\\\"\\n        style=\\\"width:\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"width\") || (depth0 != null ? lookupProperty(depth0,\"width\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"width\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":8,\"column\":21},\"end\":{\"line\":8,\"column\":30}}}) : helper)))\n    + \"%; left:\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"left\") || (depth0 != null ? lookupProperty(depth0,\"left\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"left\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":8,\"column\":38},\"end\":{\"line\":8,\"column\":46}}}) : helper)))\n    + \"%; background-color: \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"backgroundColor\") || (depth0 != null ? lookupProperty(depth0,\"backgroundColor\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"backgroundColor\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":8,\"column\":67},\"end\":{\"line\":8,\"column\":86}}}) : helper)))\n    + \"; font-size: \"\n    + alias4(container.lambda(((stack1 = ((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"styles\"))) && lookupProperty(stack1,\"fontSize\")), depth0))\n    + \";\\n\"\n    + ((stack1 = lookupProperty(helpers,\"unless\").call(alias1,(data && lookupProperty(data,\"last\")),{\"name\":\"unless\",\"hash\":{},\"fn\":container.program(8, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":9,\"column\":8},\"end\":{\"line\":11,\"column\":19}}})) != null ? stack1 : \"\")\n    + \"        \\\">\\n        <div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":13,\"column\":20},\"end\":{\"line\":13,\"column\":34}}}) : helper)))\n    + \"weekday-grid-header\\\">\\n            <span style=\\\"color: \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"color\") || (depth0 != null ? lookupProperty(depth0,\"color\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"color\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":14,\"column\":32},\"end\":{\"line\":14,\"column\":41}}}) : helper)))\n    + \";\\\">\"\n    + ((stack1 = (lookupProperty(helpers,\"monthGridHeader-tmpl\")||(depth0 && lookupProperty(depth0,\"monthGridHeader-tmpl\"))||alias2).call(alias1,depth0,{\"name\":\"monthGridHeader-tmpl\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":14,\"column\":44},\"end\":{\"line\":14,\"column\":75}}})) != null ? stack1 : \"\")\n    + \"</span>\\n\"\n    + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"hiddenSchedules\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(10, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":15,\"column\":12},\"end\":{\"line\":17,\"column\":19}}})) != null ? stack1 : \"\")\n    + \"        </div>\\n        <div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":19,\"column\":20},\"end\":{\"line\":19,\"column\":34}}}) : helper)))\n    + \"weekday-grid-footer\\\">\\n            <span style=\\\"color: \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"color\") || (depth0 != null ? lookupProperty(depth0,\"color\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"color\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":20,\"column\":32},\"end\":{\"line\":20,\"column\":41}}}) : helper)))\n    + \";\\\">\"\n    + ((stack1 = (lookupProperty(helpers,\"monthGridFooter-tmpl\")||(depth0 && lookupProperty(depth0,\"monthGridFooter-tmpl\"))||alias2).call(alias1,depth0,{\"name\":\"monthGridFooter-tmpl\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":20,\"column\":44},\"end\":{\"line\":20,\"column\":75}}})) != null ? stack1 : \"\")\n    + \"</span>\\n\"\n    + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"hiddenSchedules\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(12, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":21,\"column\":12},\"end\":{\"line\":23,\"column\":19}}})) != null ? stack1 : \"\")\n    + \"        </div>\\n    </div>\\n\";\n},\"2\":function(container,depth0,helpers,partials,data) {\n    var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \" \"\n    + container.escapeExpression(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":7,\"column\":84},\"end\":{\"line\":7,\"column\":98}}}) : helper)))\n    + \"near-month-day\";\n},\"4\":function(container,depth0,helpers,partials,data) {\n    var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \" \"\n    + container.escapeExpression(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":7,\"column\":135},\"end\":{\"line\":7,\"column\":149}}}) : helper)))\n    + \"today\";\n},\"6\":function(container,depth0,helpers,partials,data) {\n    var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \" \"\n    + container.escapeExpression(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":7,\"column\":182},\"end\":{\"line\":7,\"column\":196}}}) : helper)))\n    + \"extra-date\";\n},\"8\":function(container,depth0,helpers,partials,data) {\n    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"        border-right:\"\n    + container.escapeExpression(container.lambda(((stack1 = ((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"styles\"))) && lookupProperty(stack1,\"borderLeft\")), depth0))\n    + \";\\n\";\n},\"10\":function(container,depth0,helpers,partials,data) {\n    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"                <span class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":16,\"column\":29},\"end\":{\"line\":16,\"column\":43}}}) : helper)))\n    + \"weekday-exceed-in-month\\\" data-ymd=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"ymd\") || (depth0 != null ? lookupProperty(depth0,\"ymd\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"ymd\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":16,\"column\":78},\"end\":{\"line\":16,\"column\":85}}}) : helper)))\n    + \"\\\">\"\n    + ((stack1 = (lookupProperty(helpers,\"monthGridHeaderExceed-tmpl\")||(depth0 && lookupProperty(depth0,\"monthGridHeaderExceed-tmpl\"))||alias2).call(alias1,(depth0 != null ? lookupProperty(depth0,\"hiddenSchedules\") : depth0),{\"name\":\"monthGridHeaderExceed-tmpl\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":16,\"column\":87},\"end\":{\"line\":16,\"column\":135}}})) != null ? stack1 : \"\")\n    + \"</span>\\n\";\n},\"12\":function(container,depth0,helpers,partials,data) {\n    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"                <span class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":22,\"column\":29},\"end\":{\"line\":22,\"column\":43}}}) : helper)))\n    + \"weekday-exceed-in-month\\\" data-ymd=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"ymd\") || (depth0 != null ? lookupProperty(depth0,\"ymd\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"ymd\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":22,\"column\":78},\"end\":{\"line\":22,\"column\":85}}}) : helper)))\n    + \"\\\">\"\n    + ((stack1 = (lookupProperty(helpers,\"monthGridFooterExceed-tmpl\")||(depth0 && lookupProperty(depth0,\"monthGridFooterExceed-tmpl\"))||alias2).call(alias1,(depth0 != null ? lookupProperty(depth0,\"hiddenSchedules\") : depth0),{\"name\":\"monthGridFooterExceed-tmpl\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":22,\"column\":87},\"end\":{\"line\":22,\"column\":135}}})) != null ? stack1 : \"\")\n    + \"</span>\\n\";\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"<div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":1,\"column\":12},\"end\":{\"line\":1,\"column\":26}}}) : helper)))\n    + \"weekday-border\\\"\\n    style=\\\"\\n    border-top: \"\n    + alias4(container.lambda(((stack1 = (depth0 != null ? lookupProperty(depth0,\"styles\") : depth0)) != null ? lookupProperty(stack1,\"borderTop\") : stack1), depth0))\n    + \";\\n\\\"></div>\\n<div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":5,\"column\":12},\"end\":{\"line\":5,\"column\":26}}}) : helper)))\n    + \"weekday-grid\\\">\\n\"\n    + ((stack1 = lookupProperty(helpers,\"each\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"dates\") : depth0),{\"name\":\"each\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":6,\"column\":0},\"end\":{\"line\":26,\"column\":11}}})) != null ? stack1 : \"\")\n    + \"</div>\\n<div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":28,\"column\":12},\"end\":{\"line\":28,\"column\":26}}}) : helper)))\n    + \"weekday-schedules\\\"></div>\\n\";\n},\"useData\":true});","var Handlebars = require('/Users/nhnent/Jodeng/workspace/Work/tui.calendar-new/node_modules/handlebars/runtime.js');\nmodule.exports = (Handlebars['default'] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data) {\n    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return ((stack1 = lookupProperty(helpers,\"each\").call(depth0 != null ? depth0 : (container.nullContext || {}),depth0,{\"name\":\"each\",\"hash\":{},\"fn\":container.program(2, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":2,\"column\":0},\"end\":{\"line\":80,\"column\":11}}})) != null ? stack1 : \"\");\n},\"2\":function(container,depth0,helpers,partials,data) {\n    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"\\n\"\n    + ((stack1 = lookupProperty(helpers,\"each\").call(depth0 != null ? depth0 : (container.nullContext || {}),depth0,{\"name\":\"each\",\"hash\":{},\"fn\":container.program(3, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":3,\"column\":0},\"end\":{\"line\":79,\"column\":11}}})) != null ? stack1 : \"\");\n},\"3\":function(container,depth0,helpers,partials,data) {\n    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"\\n\"\n    + ((stack1 = lookupProperty(helpers,\"if\").call(depth0 != null ? depth0 : (container.nullContext || {}),depth0,{\"name\":\"if\",\"hash\":{},\"fn\":container.program(4, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":4,\"column\":0},\"end\":{\"line\":78,\"column\":9}}})) != null ? stack1 : \"\");\n},\"4\":function(container,depth0,helpers,partials,data) {\n    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"\\n\"\n    + ((stack1 = (lookupProperty(helpers,\"fi\")||(depth0 && lookupProperty(depth0,\"fi\"))||container.hooks.helperMissing).call(depth0 != null ? depth0 : (container.nullContext || {}),(depth0 != null ? lookupProperty(depth0,\"top\") : depth0),\"<\",((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"renderLimitIdx\")),{\"name\":\"fi\",\"hash\":{},\"fn\":container.program(5, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":5,\"column\":4},\"end\":{\"line\":77,\"column\":13}}})) != null ? stack1 : \"\");\n},\"5\":function(container,depth0,helpers,partials,data) {\n    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=container.escapeExpression, alias4=\"function\", lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"<div data-id=\\\"\"\n    + alias3((lookupProperty(helpers,\"stamp\")||(depth0 && lookupProperty(depth0,\"stamp\"))||alias2).call(alias1,(depth0 != null ? lookupProperty(depth0,\"model\") : depth0),{\"name\":\"stamp\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":6,\"column\":18},\"end\":{\"line\":6,\"column\":33}}}))\n    + \"\\\"\\n         class=\\\"\"\n    + alias3(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias4 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":7,\"column\":16},\"end\":{\"line\":7,\"column\":30}}}) : helper)))\n    + \"weekday-schedule-block\\n                \"\n    + alias3(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias4 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":8,\"column\":16},\"end\":{\"line\":8,\"column\":30}}}) : helper)))\n    + \"weekday-schedule-block-\"\n    + alias3((lookupProperty(helpers,\"stamp\")||(depth0 && lookupProperty(depth0,\"stamp\"))||alias2).call(alias1,(depth0 != null ? lookupProperty(depth0,\"model\") : depth0),{\"name\":\"stamp\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":8,\"column\":53},\"end\":{\"line\":8,\"column\":68}}}))\n    + \"\\n            \"\n    + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"exceedLeft\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(6, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":9,\"column\":12},\"end\":{\"line\":9,\"column\":71}}})) != null ? stack1 : \"\")\n    + \"\\n            \"\n    + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"exceedRight\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(8, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":10,\"column\":12},\"end\":{\"line\":10,\"column\":73}}})) != null ? stack1 : \"\")\n    + \"\\\"\\n         style=\\\"\"\n    + alias3((lookupProperty(helpers,\"month-scheduleBlock\")||(depth0 && lookupProperty(depth0,\"month-scheduleBlock\"))||alias2).call(alias1,depth0,((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"dates\")),((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"scheduleBlockHeight\")),((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"gridHeaderHeight\")),{\"name\":\"month-scheduleBlock\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":11,\"column\":16},\"end\":{\"line\":11,\"column\":105}}}))\n    + \";\\n                margin-top:\"\n    + alias3(container.lambda(((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"scheduleBlockGutter\")), depth0))\n    + \"px\\\">\\n\"\n    + ((stack1 = (lookupProperty(helpers,\"fi\")||(depth0 && lookupProperty(depth0,\"fi\"))||alias2).call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"isAllDay\") : stack1),\"||\",(depth0 != null ? lookupProperty(depth0,\"hasMultiDates\") : depth0),{\"name\":\"fi\",\"hash\":{},\"fn\":container.program(10, data, 0),\"inverse\":container.program(23, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":13,\"column\":8},\"end\":{\"line\":75,\"column\":15}}})) != null ? stack1 : \"\")\n    + \"    </div>\\n\";\n},\"6\":function(container,depth0,helpers,partials,data) {\n    var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \" \"\n    + container.escapeExpression(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":9,\"column\":31},\"end\":{\"line\":9,\"column\":45}}}) : helper)))\n    + \"weekday-exceed-left\";\n},\"8\":function(container,depth0,helpers,partials,data) {\n    var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \" \"\n    + container.escapeExpression(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":10,\"column\":32},\"end\":{\"line\":10,\"column\":46}}}) : helper)))\n    + \"weekday-exceed-right\";\n},\"10\":function(container,depth0,helpers,partials,data) {\n    var stack1, helper, alias1=container.lambda, alias2=container.escapeExpression, alias3=depth0 != null ? depth0 : (container.nullContext || {}), alias4=container.hooks.helperMissing, alias5=\"function\", lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"        <div data-schedule-id=\\\"\"\n    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"id\") : stack1), depth0))\n    + \"\\\" data-calendar-id=\\\"\"\n    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"calendarId\") : stack1), depth0))\n    + \"\\\" class=\\\"\"\n    + alias2(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias4),(typeof helper === alias5 ? helper.call(alias3,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":14,\"column\":92},\"end\":{\"line\":14,\"column\":106}}}) : helper)))\n    + \"weekday-schedule \"\n    + ((stack1 = lookupProperty(helpers,\"if\").call(alias3,((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"isFocused\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(11, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":14,\"column\":123},\"end\":{\"line\":14,\"column\":192}}})) != null ? stack1 : \"\")\n    + \"\\\"\\n             style=\\\"height:\"\n    + alias2(alias1(((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"scheduleHeight\")), depth0))\n    + \"px; line-height:\"\n    + alias2(alias1(((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"scheduleHeight\")), depth0))\n    + \"px; border-radius: \"\n    + alias2(alias1(((stack1 = ((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"styles\"))) && lookupProperty(stack1,\"borderRadius\")), depth0))\n    + \";\\n\"\n    + ((stack1 = lookupProperty(helpers,\"unless\").call(alias3,(depth0 != null ? lookupProperty(depth0,\"exceedLeft\") : depth0),{\"name\":\"unless\",\"hash\":{},\"fn\":container.program(13, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":16,\"column\":16},\"end\":{\"line\":18,\"column\":27}}})) != null ? stack1 : \"\")\n    + ((stack1 = lookupProperty(helpers,\"unless\").call(alias3,(depth0 != null ? lookupProperty(depth0,\"exceedRight\") : depth0),{\"name\":\"unless\",\"hash\":{},\"fn\":container.program(15, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":19,\"column\":16},\"end\":{\"line\":21,\"column\":27}}})) != null ? stack1 : \"\")\n    + ((stack1 = lookupProperty(helpers,\"if\").call(alias3,((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"isFocused\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(17, data, 0),\"inverse\":container.program(19, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":22,\"column\":16},\"end\":{\"line\":26,\"column\":23}}})) != null ? stack1 : \"\")\n    + \"                    \"\n    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"customStyle\") : stack1), depth0))\n    + \"\\\">\\n            <span class=\\\"\"\n    + alias2(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias4),(typeof helper === alias5 ? helper.call(alias3,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":28,\"column\":25},\"end\":{\"line\":28,\"column\":39}}}) : helper)))\n    + \"weekday-schedule-title\\\"\\n                  data-title=\\\"\"\n    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"title\") : stack1), depth0))\n    + \"\\\">\"\n    + ((stack1 = (lookupProperty(helpers,\"allday-tmpl\")||(depth0 && lookupProperty(depth0,\"allday-tmpl\"))||alias4).call(alias3,(depth0 != null ? lookupProperty(depth0,\"model\") : depth0),{\"name\":\"allday-tmpl\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":29,\"column\":47},\"end\":{\"line\":29,\"column\":70}}})) != null ? stack1 : \"\")\n    + \"</span>\\n            \"\n    + ((stack1 = lookupProperty(helpers,\"unless\").call(alias3,(lookupProperty(helpers,\"or\")||(depth0 && lookupProperty(depth0,\"or\"))||alias4).call(alias3,((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"isReadOnly\")),((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"isReadOnly\") : stack1),{\"name\":\"or\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":30,\"column\":22},\"end\":{\"line\":30,\"column\":60}}}),{\"name\":\"unless\",\"hash\":{},\"fn\":container.program(21, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":30,\"column\":12},\"end\":{\"line\":30,\"column\":194}}})) != null ? stack1 : \"\")\n    + \"\\n        </div>\\n\";\n},\"11\":function(container,depth0,helpers,partials,data) {\n    var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return container.escapeExpression(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":14,\"column\":146},\"end\":{\"line\":14,\"column\":160}}}) : helper)))\n    + \"weekday-schedule-focused \";\n},\"13\":function(container,depth0,helpers,partials,data) {\n    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"                    margin-left: \"\n    + container.escapeExpression(container.lambda(((stack1 = ((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"styles\"))) && lookupProperty(stack1,\"marginLeft\")), depth0))\n    + \";\\n\";\n},\"15\":function(container,depth0,helpers,partials,data) {\n    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"                    margin-right: \"\n    + container.escapeExpression(container.lambda(((stack1 = ((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"styles\"))) && lookupProperty(stack1,\"marginRight\")), depth0))\n    + \";\\n\";\n},\"17\":function(container,depth0,helpers,partials,data) {\n    var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"                    color: #ffffff; background-color:\"\n    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"color\") : stack1), depth0))\n    + \"; border-color:\"\n    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"color\") : stack1), depth0))\n    + \";\\n\";\n},\"19\":function(container,depth0,helpers,partials,data) {\n    var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"                    color:\"\n    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"color\") : stack1), depth0))\n    + \"; background-color:\"\n    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"bgColor\") : stack1), depth0))\n    + \"; border-color:\"\n    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"borderColor\") : stack1), depth0))\n    + \";\\n\";\n},\"21\":function(container,depth0,helpers,partials,data) {\n    var stack1, helper, alias1=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"<span class=\\\"\"\n    + alias1(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":30,\"column\":75},\"end\":{\"line\":30,\"column\":89}}}) : helper)))\n    + \"weekday-resize-handle handle-y\\\" style=\\\"line-height: \"\n    + alias1(container.lambda(((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"scheduleHeight\")), depth0))\n    + \"px;\\\">&nbsp;</span>\";\n},\"23\":function(container,depth0,helpers,partials,data) {\n    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return ((stack1 = (lookupProperty(helpers,\"fi\")||(depth0 && lookupProperty(depth0,\"fi\"))||container.hooks.helperMissing).call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"category\") : stack1),\"===\",\"time\",{\"name\":\"fi\",\"hash\":{},\"fn\":container.program(24, data, 0),\"inverse\":container.program(33, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":33,\"column\":12},\"end\":{\"line\":74,\"column\":19}}})) != null ? stack1 : \"\");\n},\"24\":function(container,depth0,helpers,partials,data) {\n    var stack1, helper, alias1=container.lambda, alias2=container.escapeExpression, alias3=depth0 != null ? depth0 : (container.nullContext || {}), alias4=container.hooks.helperMissing, alias5=\"function\", lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"                <div data-schedule-id=\\\"\"\n    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"id\") : stack1), depth0))\n    + \"\\\" data-calendar-id=\\\"\"\n    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"calendarId\") : stack1), depth0))\n    + \"\\\" class=\\\"\"\n    + alias2(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias4),(typeof helper === alias5 ? helper.call(alias3,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":34,\"column\":100},\"end\":{\"line\":34,\"column\":114}}}) : helper)))\n    + \"weekday-schedule \"\n    + alias2(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias4),(typeof helper === alias5 ? helper.call(alias3,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":34,\"column\":131},\"end\":{\"line\":34,\"column\":145}}}) : helper)))\n    + \"weekday-schedule-time\\\"\\n                    style=\\\"height:\"\n    + alias2(alias1(((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"scheduleHeight\")), depth0))\n    + \"px; line-height:\"\n    + alias2(alias1(((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"scheduleHeight\")), depth0))\n    + \"px; \"\n    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"customStyle\") : stack1), depth0))\n    + \"\\\">\\n                    <span class=\\\"\"\n    + alias2(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias4),(typeof helper === alias5 ? helper.call(alias3,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":36,\"column\":33},\"end\":{\"line\":36,\"column\":47}}}) : helper)))\n    + \"weekday-schedule-bullet\\\"\\n                        style=\\\"top: \"\n    + alias2(alias1(((stack1 = ((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"styles\"))) && lookupProperty(stack1,\"scheduleBulletTop\")), depth0))\n    + \"px;\\n\"\n    + ((stack1 = lookupProperty(helpers,\"if\").call(alias3,((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"isFocused\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(25, data, 0),\"inverse\":container.program(27, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":38,\"column\":28},\"end\":{\"line\":42,\"column\":35}}})) != null ? stack1 : \"\")\n    + \"                            \\\"\\n                    ></span>\\n                    <span class=\\\"\"\n    + alias2(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias4),(typeof helper === alias5 ? helper.call(alias3,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":45,\"column\":33},\"end\":{\"line\":45,\"column\":47}}}) : helper)))\n    + \"weekday-schedule-title\\\"\\n                        style=\\\"\\n\"\n    + ((stack1 = lookupProperty(helpers,\"if\").call(alias3,((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"isFocused\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(29, data, 0),\"inverse\":container.program(31, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":47,\"column\":28},\"end\":{\"line\":52,\"column\":35}}})) != null ? stack1 : \"\")\n    + \"                            \\\"\\n                        data-title=\\\"\"\n    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"title\") : stack1), depth0))\n    + \"\\\">\"\n    + ((stack1 = (lookupProperty(helpers,\"time-tmpl\")||(depth0 && lookupProperty(depth0,\"time-tmpl\"))||alias4).call(alias3,(depth0 != null ? lookupProperty(depth0,\"model\") : depth0),{\"name\":\"time-tmpl\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":54,\"column\":53},\"end\":{\"line\":54,\"column\":74}}})) != null ? stack1 : \"\")\n    + \"</span>\\n                </div>\\n\";\n},\"25\":function(container,depth0,helpers,partials,data) {\n    return \"                                background: #ffffff\\n\";\n},\"27\":function(container,depth0,helpers,partials,data) {\n    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"                                background:\"\n    + container.escapeExpression(container.lambda(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"borderColor\") : stack1), depth0))\n    + \"\\n\";\n},\"29\":function(container,depth0,helpers,partials,data) {\n    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"                                color: #ffffff;\\n                                background-color: \"\n    + container.escapeExpression(container.lambda(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"color\") : stack1), depth0))\n    + \"\\n\";\n},\"31\":function(container,depth0,helpers,partials,data) {\n    return \"                                color:#333;\\n\";\n},\"33\":function(container,depth0,helpers,partials,data) {\n    var stack1, helper, alias1=container.lambda, alias2=container.escapeExpression, alias3=depth0 != null ? depth0 : (container.nullContext || {}), alias4=container.hooks.helperMissing, alias5=\"function\", lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"<div data-schedule-id=\\\"\"\n    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"id\") : stack1), depth0))\n    + \"\\\" data-calendar-id=\\\"\"\n    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"calendarId\") : stack1), depth0))\n    + \"\\\" class=\\\"\"\n    + alias2(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias4),(typeof helper === alias5 ? helper.call(alias3,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":57,\"column\":100},\"end\":{\"line\":57,\"column\":114}}}) : helper)))\n    + \"weekday-schedule \"\n    + ((stack1 = lookupProperty(helpers,\"if\").call(alias3,((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"isFocused\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(11, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":57,\"column\":131},\"end\":{\"line\":57,\"column\":200}}})) != null ? stack1 : \"\")\n    + \"\\\"\\n                    style=\\\"height:\"\n    + alias2(alias1(((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"scheduleHeight\")), depth0))\n    + \"px; line-height:\"\n    + alias2(alias1(((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"scheduleHeight\")), depth0))\n    + \"px; border-radius: \"\n    + alias2(alias1(((stack1 = ((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"styles\"))) && lookupProperty(stack1,\"borderRadius\")), depth0))\n    + \";\\n\"\n    + ((stack1 = lookupProperty(helpers,\"unless\").call(alias3,(depth0 != null ? lookupProperty(depth0,\"exceedLeft\") : depth0),{\"name\":\"unless\",\"hash\":{},\"fn\":container.program(34, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":59,\"column\":20},\"end\":{\"line\":61,\"column\":31}}})) != null ? stack1 : \"\")\n    + ((stack1 = lookupProperty(helpers,\"unless\").call(alias3,(depth0 != null ? lookupProperty(depth0,\"exceedRight\") : depth0),{\"name\":\"unless\",\"hash\":{},\"fn\":container.program(36, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":62,\"column\":20},\"end\":{\"line\":64,\"column\":31}}})) != null ? stack1 : \"\")\n    + ((stack1 = lookupProperty(helpers,\"if\").call(alias3,((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"isFocused\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(38, data, 0),\"inverse\":container.program(40, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":65,\"column\":20},\"end\":{\"line\":69,\"column\":27}}})) != null ? stack1 : \"\")\n    + \"                        \"\n    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"customStyle\") : stack1), depth0))\n    + \"\\\">\\n                    <span class=\\\"\"\n    + alias2(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias4),(typeof helper === alias5 ? helper.call(alias3,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":71,\"column\":33},\"end\":{\"line\":71,\"column\":47}}}) : helper)))\n    + \"weekday-schedule-title\\\"\\n                                    data-title=\\\"\"\n    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"title\") : stack1), depth0))\n    + \"\\\">\"\n    + ((stack1 = (lookupProperty(helpers,\"schedule-tmpl\")||(depth0 && lookupProperty(depth0,\"schedule-tmpl\"))||alias4).call(alias3,(depth0 != null ? lookupProperty(depth0,\"model\") : depth0),{\"name\":\"schedule-tmpl\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":72,\"column\":65},\"end\":{\"line\":72,\"column\":90}}})) != null ? stack1 : \"\")\n    + \"</span>\\n                </div>\\n\";\n},\"34\":function(container,depth0,helpers,partials,data) {\n    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"                        margin-left: \"\n    + container.escapeExpression(container.lambda(((stack1 = ((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"styles\"))) && lookupProperty(stack1,\"marginLeft\")), depth0))\n    + \";\\n\";\n},\"36\":function(container,depth0,helpers,partials,data) {\n    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"                        margin-right: \"\n    + container.escapeExpression(container.lambda(((stack1 = ((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"styles\"))) && lookupProperty(stack1,\"marginRight\")), depth0))\n    + \";\\n\";\n},\"38\":function(container,depth0,helpers,partials,data) {\n    var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"                        color: #ffffff; background-color:\"\n    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"color\") : stack1), depth0))\n    + \"; border-color:\"\n    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"color\") : stack1), depth0))\n    + \";\\n\";\n},\"40\":function(container,depth0,helpers,partials,data) {\n    var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"                        color:\"\n    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"color\") : stack1), depth0))\n    + \"; background-color:\"\n    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"bgColor\") : stack1), depth0))\n    + \"; border-color:\"\n    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"borderColor\") : stack1), depth0))\n    + \";\\n\";\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return ((stack1 = lookupProperty(helpers,\"each\").call(depth0 != null ? depth0 : (container.nullContext || {}),(depth0 != null ? lookupProperty(depth0,\"matrices\") : depth0),{\"name\":\"each\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":1,\"column\":0},\"end\":{\"line\":81,\"column\":11}}})) != null ? stack1 : \"\");\n},\"useData\":true});","/**\n * @fileoverview Click handler for month view\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\nvar util = require('tui-code-snippet');\nvar config = require('../../config'),\n    datetime = require('../../common/datetime'),\n    domutil = require('../../common/domutil');\n\n/**\n * @constructor\n * @implements {Handler}\n * @mixes util.CustomEvents\n * @param {Drag} [dragHandler] - Drag handler instance.\n * @param {Month} [monthView] - Month view instance.\n * @param {Base} [baseController] - Base controller instance.\n */\nfunction MonthClick(dragHandler, monthView, baseController) {\n    /**\n     * @type {Drag}\n     */\n    this.dragHandler = dragHandler;\n\n    /**\n     * @type {Month}\n     */\n    this.monthView = monthView;\n\n    /**\n     * @type {Base}\n     */\n    this.baseController = baseController;\n\n    dragHandler.on({\n        'click': this._onClick\n    }, this);\n}\n\n/**\n * Destructor\n */\nMonthClick.prototype.destroy = function() {\n    this.dragHandler.off(this);\n    this.monthView = this.baseController = this.dragHandler = null;\n};\n\n/**\n * @fires MonthClick#clickMore\n * @param {object} clickEvent - click event object\n */\nMonthClick.prototype._onClick = function(clickEvent) {\n    var self = this,\n        moreElement,\n        scheduleCollection = this.baseController.schedules,\n        blockElement = domutil.closest(clickEvent.target, config.classname('.weekday-schedule-block'))\n                    || domutil.closest(clickEvent.target, config.classname('.month-more-schedule'));\n\n    moreElement = domutil.closest(\n        clickEvent.target,\n        config.classname('.weekday-exceed-in-month')\n    );\n\n    if (moreElement) {\n        self.fire('clickMore', {\n            date: datetime.parse(domutil.getData(moreElement, 'ymd')),\n            target: moreElement,\n            ymd: domutil.getData(moreElement, 'ymd')\n        });\n    }\n\n    if (blockElement) {\n        scheduleCollection.doWhenHas(domutil.getData(blockElement, 'id'), function(schedule) {\n            /**\n             * @events AlldayClick#clickSchedule\n             * @type {object}\n             * @property {Schedule} schedule - schedule instance\n             * @property {MouseEvent} event - MouseEvent object\n             */\n            self.fire('clickSchedule', {\n                schedule: schedule,\n                event: clickEvent.originEvent\n            });\n        });\n    }\n};\n\nutil.CustomEvents.mixin(MonthClick);\n\nmodule.exports = MonthClick;\n","/**\n * @fileoverview Creation handler for month view\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\nvar util = require('tui-code-snippet');\n\nvar config = require('../../config');\nvar datetime = require('../../common/datetime');\nvar array = require('../../common/array');\nvar domutil = require('../../common/domutil');\nvar domevent = require('../../common/domevent');\nvar getMousePosDate = require('./core');\nvar Guide = require('./creationGuide');\nvar TZDate = require('../../common/timezone').Date;\n\nvar CLICK_DELAY = 300;\n\n/**\n * @constructor\n * @param {Drag} dragHandler - Drag handler instance.\n * @param {Month} monthView - Month view instance.\n * @param {Base} baseController - Base controller instance.\n * @param {Options} [options] - calendar Options\n */\nfunction MonthCreation(dragHandler, monthView, baseController, options) {\n    /**\n     * @type {Drag}\n     */\n    this.dragHandler = dragHandler;\n\n    /**\n     * @type {Month}\n     */\n    this.monthView = monthView;\n\n    /**\n     * @type {Base}\n     */\n    this.baseController = baseController;\n\n    /**\n     * @type {function}\n     */\n    this.getScheduleData = null;\n\n    /**\n     * Cache for dragging session\n     * @type {object}\n     */\n    this._cache = null;\n\n    /**\n     * @type {MonthCreationGuide}\n     */\n    this.guide = new Guide(this);\n\n    /**\n     * @type {boolean}\n     */\n    this._requestOnClick = false;\n\n    /**\n     * @type {boolean}\n     */\n    this._disableDblClick = options.disableDblClick;\n\n    /**\n     * @type {boolean}\n     */\n    this._disableClick = options.disableClick;\n\n    dragHandler.on('dragStart', this._onDragStart, this);\n    dragHandler.on('click', this._onClick, this);\n\n    if (this._disableDblClick) {\n        CLICK_DELAY = 0;\n    } else {\n        domevent.on(monthView.container, 'dblclick', this._onDblClick, this);\n    }\n}\n\n/**\n * Destructor\n */\nMonthCreation.prototype.destroy = function() {\n    this.dragHandler.off(this);\n    this.guide.destroy();\n\n    if (this.monthView && this.monthView.container) {\n        domevent.off(this.monthView.container, 'dblclick', this._onDblClick, this);\n    }\n\n    this.dragHandler = this.monthView = this.baseController =\n        this.getScheduleData = this._cache = this.guide = null;\n};\n\n/**\n * Fire before create schedule\n * @fires {MonthCreation#beforeCreateSchedule}\n * @param {object} eventData - cache data from single dragging session\n */\nMonthCreation.prototype._createSchedule = function(eventData) {\n    /**\n     * @event {MonthCreation#beforeCreateSchedule}\n     * @type {object}\n     * @property {boolean} isAllDay - whether schedule is fired in allday view area?\n     * @property {Date} start - select start time\n     * @property {Date} end - select end time\n     * @property {TimeCreationGuide} guide - TimeCreationGuide instance\n     * @property {string} triggerEventName - event name\n     */\n    this.fire('beforeCreateSchedule', {\n        isAllDay: eventData.isAllDay,\n        start: eventData.start,\n        end: eventData.end,\n        guide: this.guide.guide,\n        triggerEventName: eventData.triggerEvent\n    });\n};\n\n/**\n * DragStart event handler\n * @fires {MonthCreation#monthCreationDragstart}\n * @param {object} dragStartEvent - dragStart event data\n */\nMonthCreation.prototype._onDragStart = function(dragStartEvent) {\n    var eventData;\n\n    if (!isElementWeekdayGrid(dragStartEvent.target)) {\n        return;\n    }\n\n    this.dragHandler.on({\n        drag: this._onDrag,\n        dragEnd: this._onDragEnd\n    }, this);\n\n    this.getScheduleData = getMousePosDate(this.monthView);\n\n    eventData = this.getScheduleData(dragStartEvent.originEvent);\n\n    this._cache = {\n        start: new TZDate(eventData.date)\n    };\n\n    /**\n     * @event {MonthCreation#monthCreationDragstart}\n     * @type {object}\n     * @property {number} x - x index\n     * @property {number} y - y index\n     * @property {Date} date - drag date\n     */\n    this.fire('monthCreationDragstart', eventData);\n};\n\n/**\n * Drag event handler\n * @fires {MonthCreation#monthCreationDrag}\n * @param {object} dragEvent - drag event data\n */\nMonthCreation.prototype._onDrag = function(dragEvent) {\n    var eventData;\n\n    if (!this.getScheduleData) {\n        return;\n    }\n\n    eventData = this.getScheduleData(dragEvent.originEvent);\n\n    if (!eventData) {\n        return;\n    }\n\n    /**\n     * @event {MonthCreation#monthCreationDrag}\n     * @type {object}\n     * @property {number} x - x index\n     * @property {number} y - y index\n     * @property {Date} date - drag date\n     */\n    this.fire('monthCreationDrag', eventData);\n};\n\n/**\n * DragEnd event handler\n * @fires {MonthCreation#monthCreationDragend}\n * @param {object} dragEndEvent - drag end event data\n */\nMonthCreation.prototype._onDragEnd = function(dragEndEvent) {\n    var cache = this._cache;\n    var eventData;\n    var times;\n\n    this.dragHandler.off({\n        drag: this._onDrag,\n        dragEnd: this._onDragEnd\n    }, this);\n\n    if (!this.getScheduleData) {\n        return;\n    }\n\n    eventData = this.getScheduleData(dragEndEvent.originEvent);\n\n    if (eventData) {\n        cache.end = new TZDate(eventData.date);\n        cache.isAllDay = true;\n\n        times = [\n            cache.start,\n            cache.end\n        ].sort(array.compare.num.asc);\n\n        cache.start = new TZDate(times[0]);\n        cache.end = datetime.end(times[1]);\n\n        this._createSchedule(cache);\n    }\n\n    /**\n     * @event {MonthCreation#monthCreationDragend}\n     * @type {object}\n     * @property {number} x - x index\n     * @property {number} y - y index\n     * @property {Date} date - drag date\n     */\n    this.fire('monthCreationDragend', eventData);\n\n    this.getScheduleData = this._cache = null;\n};\n\n/**\n * Dblclick event handler\n * @fires {MonthCreation#monthCreationDragstart}\n * @param {MouseEvent} e - Native MouseEvent\n */\nMonthCreation.prototype._onDblClick = function(e) {\n    var eventData, range;\n\n    if (!isElementWeekdayGrid(e.target)) {\n        return;\n    }\n\n    eventData = getMousePosDate(this.monthView)(e);\n\n    this.fire('monthCreationClick', eventData);\n\n    range = this._adjustStartAndEndTime(new TZDate(eventData.date), new TZDate(eventData.date));\n\n    this._createSchedule({\n        start: range.start,\n        end: range.end,\n        isAllDay: false,\n        triggerEvent: eventData.triggerEvent\n    });\n\n    this._requestOnClick = false;\n};\n\n/**\n * Click event handler\n * @fires {MonthCreation#monthCreationDragstart}\n * @param {MouseEvent} e - Native MouseEvent\n */\nMonthCreation.prototype._onClick = function(e) {\n    var self = this;\n    var eventData, range;\n\n    if (!isElementWeekdayGrid(e.target) || this._disableClick) {\n        return;\n    }\n\n    eventData = getMousePosDate(this.monthView)(e.originEvent);\n\n    this._requestOnClick = true;\n    setTimeout(function() {\n        if (self._requestOnClick) {\n            self.fire('monthCreationClick', eventData);\n\n            range = self._adjustStartAndEndTime(new TZDate(eventData.date), new TZDate(eventData.date));\n\n            self._createSchedule({\n                start: range.start,\n                end: range.end,\n                isAllDay: false,\n                triggerEvent: eventData.triggerEvent\n            });\n        }\n        self._requestOnClick = false;\n    }, CLICK_DELAY);\n};\n\n/**\n * Adjust time to our o'clock\n * @param {TZDate} start - start time\n * @param {TZDate} end - end time\n * @returns {Object} start and end\n */\nMonthCreation.prototype._adjustStartAndEndTime = function(start, end) {\n    var now = new TZDate();\n    var hours = now.getHours();\n    var minutes = now.getMinutes();\n\n    // adjust start to less time. Adjusting had been greater time in monthly view when clicking grid\n    if (minutes <= 30) {\n        minutes = 0;\n    } else {\n        minutes = 30;\n    }\n    start.setHours(hours, minutes, 0, 0);\n    end.setHours(hours + 1, minutes, 0, 0);\n\n    return {\n        start: start,\n        end: end\n    };\n};\n\n/**\n * Invoke creation click\n * @param {Schedule} schedule - schedule instance\n */\nMonthCreation.prototype.invokeCreationClick = function(schedule) {\n    var eventData = {\n        model: schedule\n    };\n\n    this.fire('monthCreationClick', eventData);\n\n    this._createSchedule({\n        start: schedule.start,\n        end: schedule.end,\n        isAllDay: schedule.isAllDay,\n        triggerEvent: 'manual'\n    });\n};\n\n/**\n * Returns whether the given element is Weekday-Schedule.\n * @param {HTMLElement} el - target element\n * @returns {boolean}\n */\nfunction isElementWeekdayGrid(el) {\n    return domutil.closest(el, config.classname('.weekday-grid'))\n        && !domutil.closest(el, config.classname('.weekday-exceed-in-month'));\n}\n\nutil.CustomEvents.mixin(MonthCreation);\n\nmodule.exports = MonthCreation;\n","/**\n * @fileoverview Creation guide module for month view\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\nvar MonthGuide = require('./guide');\n\n/**\n * @constructor\n * @param {MonthCreation} monthCreation - instance of MonthCreation\n */\nfunction MonthCreationGuide(monthCreation) {\n    /**\n     * @type {MonthCreation}\n     */\n    this.monthCreation = monthCreation;\n\n    /**\n     * @type {MonthGuide}\n     */\n    this.guide = null;\n\n    monthCreation.on({\n        monthCreationDragstart: this._createGuideElement,\n        monthCreationDrag: this._onDrag,\n        monthCreationDragend: this._onDragEnd,\n        monthCreationClick: this._createGuideElement\n    }, this);\n}\n\n/**\n * Destructor\n */\nMonthCreationGuide.prototype.destroy = function() {\n    this.monthCreation.off(this);\n\n    if (this.guide) {\n        this.guide.destroy();\n    }\n\n    this.guide = this.monthCreation = null;\n};\n\n/**\n * Drag start event handler\n * @param {object} dragStartEvent - schedule data from MonthCreation\n */\nMonthCreationGuide.prototype._createGuideElement = function(dragStartEvent) {\n    var options = {\n        isCreationMode: true,\n        height: '100%',\n        top: 0\n    };\n\n    this.guide = new MonthGuide(options, this.monthCreation.monthView);\n    this.guide.start(dragStartEvent);\n};\n\n/**\n * Drag event handler\n * @param {object} dragEvent - schedule data from MonthCreation\n */\nMonthCreationGuide.prototype._onDrag = function(dragEvent) {\n    this.guide.update(dragEvent.x, dragEvent.y);\n};\n\n/**\n * Drag end event handler\n */\nMonthCreationGuide.prototype._onDragEnd = function() {\n    // Do nothing. User calls destroy directly.\n    this.guide = null;\n};\n\nmodule.exports = MonthCreationGuide;\n","var Handlebars = require('/Users/nhnent/Jodeng/workspace/Work/tui.calendar-new/node_modules/handlebars/runtime.js');\nmodule.exports = (Handlebars['default'] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data) {\n    var stack1, helper, alias1=container.escapeExpression, alias2=container.lambda, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"<div class=\\\"\"\n    + alias1(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":3,\"column\":16},\"end\":{\"line\":3,\"column\":30}}}) : helper)))\n    + \"month-creation-guide\\\" style=\\\"border: \"\n    + alias1(alias2(((stack1 = (depth0 != null ? lookupProperty(depth0,\"styles\") : depth0)) != null ? lookupProperty(stack1,\"border\") : stack1), depth0))\n    + \"; background-color: \"\n    + alias1(alias2(((stack1 = (depth0 != null ? lookupProperty(depth0,\"styles\") : depth0)) != null ? lookupProperty(stack1,\"backgroundColor\") : stack1), depth0))\n    + \";\\\"></div>\\n\";\n},\"3\":function(container,depth0,helpers,partials,data) {\n    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, alias5=container.lambda, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"<div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":5,\"column\":16},\"end\":{\"line\":5,\"column\":30}}}) : helper)))\n    + \"weekday-schedule\\\"\\n        style=\\\"height: \"\n    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,\"styles\") : depth0)) != null ? lookupProperty(stack1,\"scheduleHeight\") : stack1), depth0))\n    + \"; line-height: \"\n    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,\"styles\") : depth0)) != null ? lookupProperty(stack1,\"scheduleHeight\") : stack1), depth0))\n    + \"; margin-top: \"\n    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,\"styles\") : depth0)) != null ? lookupProperty(stack1,\"scheduleGutter\") : stack1), depth0))\n    + \"; border-radius:\"\n    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,\"styles\") : depth0)) != null ? lookupProperty(stack1,\"borderRadius\") : stack1), depth0))\n    + \"; margin-left: \"\n    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,\"styles\") : depth0)) != null ? lookupProperty(stack1,\"marginLeft\") : stack1), depth0))\n    + \"; margin-right: \"\n    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,\"styles\") : depth0)) != null ? lookupProperty(stack1,\"marginRight\") : stack1), depth0))\n    + \";\\n            color:\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"color\") || (depth0 != null ? lookupProperty(depth0,\"color\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"color\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":7,\"column\":18},\"end\":{\"line\":7,\"column\":27}}}) : helper)))\n    + \";border-color:\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"borderColor\") || (depth0 != null ? lookupProperty(depth0,\"borderColor\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"borderColor\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":7,\"column\":41},\"end\":{\"line\":7,\"column\":56}}}) : helper)))\n    + \";background-color:\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"bgColor\") || (depth0 != null ? lookupProperty(depth0,\"bgColor\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"bgColor\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":7,\"column\":74},\"end\":{\"line\":7,\"column\":85}}}) : helper)))\n    + \"\\\">\\n        <div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":8,\"column\":20},\"end\":{\"line\":8,\"column\":34}}}) : helper)))\n    + \"weekday-schedule-title\\\">\\n\"\n    + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"isAllDay\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(4, data, 0),\"inverse\":container.program(6, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":9,\"column\":12},\"end\":{\"line\":13,\"column\":19}}})) != null ? stack1 : \"\")\n    + \"        </div>\\n        <div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":15,\"column\":20},\"end\":{\"line\":15,\"column\":34}}}) : helper)))\n    + \"weekday-resize-handle handle-y\\\" style=\\\"line-height: \"\n    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,\"styles\") : depth0)) != null ? lookupProperty(stack1,\"scheduleHeight\") : stack1), depth0))\n    + \";\\\">&nbsp;</div>\\n    </div>\\n\";\n},\"4\":function(container,depth0,helpers,partials,data) {\n    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"                \"\n    + ((stack1 = (lookupProperty(helpers,\"allday-tmpl\")||(depth0 && lookupProperty(depth0,\"allday-tmpl\"))||container.hooks.helperMissing).call(depth0 != null ? depth0 : (container.nullContext || {}),depth0,{\"name\":\"allday-tmpl\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":10,\"column\":16},\"end\":{\"line\":10,\"column\":38}}})) != null ? stack1 : \"\")\n    + \"\\n\";\n},\"6\":function(container,depth0,helpers,partials,data) {\n    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"                \"\n    + ((stack1 = (lookupProperty(helpers,\"time-tmpl\")||(depth0 && lookupProperty(depth0,\"time-tmpl\"))||container.hooks.helperMissing).call(depth0 != null ? depth0 : (container.nullContext || {}),depth0,{\"name\":\"time-tmpl\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":12,\"column\":16},\"end\":{\"line\":12,\"column\":36}}})) != null ? stack1 : \"\")\n    + \"\\n\";\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"<div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":1,\"column\":12},\"end\":{\"line\":1,\"column\":26}}}) : helper)))\n    + \"month-guide-block\\\" style=\\\"top:\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"top\") || (depth0 != null ? lookupProperty(depth0,\"top\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"top\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":1,\"column\":56},\"end\":{\"line\":1,\"column\":63}}}) : helper)))\n    + \";height:\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"height\") || (depth0 != null ? lookupProperty(depth0,\"height\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"height\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":1,\"column\":71},\"end\":{\"line\":1,\"column\":81}}}) : helper)))\n    + \";display:none\\\">\\n\"\n    + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"isCreationMode\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.program(3, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":2,\"column\":4},\"end\":{\"line\":17,\"column\":11}}})) != null ? stack1 : \"\")\n    + \"</div>\\n\";\n},\"useData\":true});","/**\n * @fileoverview Module for resize schedule in month view\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\nvar util = require('tui-code-snippet');\n\nvar config = require('../../config'),\n    datetime = require('../../common/datetime'),\n    domutil = require('../../common/domutil'),\n    getMousePosData = require('./core'),\n    MonthResizeGuide = require('./resizeGuide'),\n    TZDate = require('../../common/timezone').Date;\n\nvar common = require('../../common/common');\n\n/**\n * @constructor\n * @param {Drag} dragHandler - Drag handler instance.\n * @param {Month} monthView - Month view instance.\n * @param {Base} baseController - Base controller instance.\n */\nfunction MonthResize(dragHandler, monthView, baseController) {\n    /**\n     * @type {Drag}\n     */\n    this.dragHandler = dragHandler;\n\n    /**\n     * @type {Month}\n     */\n    this.monthView = monthView;\n\n    /**\n     * @type {Base}\n     */\n    this.baseController = baseController;\n\n    /**\n     * @type {function}\n     */\n    this.getScheduleData = null;\n\n    /**\n     * @type {object}\n     */\n    this._cache = null;\n\n    /**\n     * @type {MonthResizeGuide}\n     */\n    this.guide = new MonthResizeGuide(this);\n\n    dragHandler.on('dragStart', this._onDragStart, this);\n}\n\n/**\n * Destructor\n */\nMonthResize.prototype.destroy = function() {\n    this.dragHandler.off(this);\n\n    this.dragHandler = this.monthView = this.baseController = null;\n};\n\n/**\n * Fire event for update model\n * @fires {MonthResize#beforeUpdateSchedule}\n * @param {object} scheduleCache - cache object that result of single dragging\n *  session.\n */\nMonthResize.prototype._updateSchedule = function(scheduleCache) {\n    // You can not change the start date of the event. Only the end time can be changed.\n    var newEnd = datetime.end(new TZDate(scheduleCache.end)),\n        schedule = scheduleCache.schedule;\n    var changes = common.getScheduleChanges(\n        schedule,\n        ['end'],\n        {end: newEnd}\n    );\n\n    /**\n     * @event MonthResize#beforeUpdateSchedule\n     * @type {object}\n     * @property {Schedule} schedule - The original schedule instance\n     * @property {Date} start - Deprecated: start time to update\n     * @property {Date} end - Deprecated: end time to update\n     * @property {object} changes - end time to update\n     *  @property {date} end - end time to update\n     */\n    this.fire('beforeUpdateSchedule', {\n        schedule: schedule,\n        changes: changes,\n        start: new TZDate(schedule.getStarts()),\n        end: newEnd\n    });\n};\n\n/**\n * Event handler for Drag#dragStart\n * @fires {MonthResize#monthResizeDragstart}\n * @param {object} dragStartEvent - drag start event data\n */\nMonthResize.prototype._onDragStart = function(dragStartEvent) {\n    var target = dragStartEvent.target,\n        modelID, schedule,\n        scheduleData;\n\n    if (!domutil.hasClass(target, config.classname('weekday-resize-handle'))) {\n        return;\n    }\n\n    target = domutil.closest(target, config.classname('.weekday-schedule-block'));\n\n    if (!target) {\n        return;\n    }\n\n    modelID = domutil.getData(target, 'id');\n    schedule = this.baseController.schedules.items[modelID];\n\n    this.dragHandler.on({\n        drag: this._onDrag,\n        dragEnd: this._onDragEnd\n    }, this);\n\n    this.getScheduleData = getMousePosData(this.monthView);\n    scheduleData = this.getScheduleData(dragStartEvent.originEvent);\n    scheduleData.target = target;\n    scheduleData.model = schedule;\n\n    this._cache = {\n        schedule: schedule,\n        target: target,\n        start: new TZDate(scheduleData.date)\n    };\n\n    /**\n     * @event {MonthCreation#monthResizeDragstart}\n     * @type {object}\n     * @property {number} x - x index\n     * @property {number} y - y index\n     * @property {Date} date - drag date\n     * @property {HTMLElement} target - schedule block element\n     * @property {Schedule} model - model instance\n     */\n    this.fire('monthResizeDragstart', scheduleData);\n};\n\n/**\n * @fires {MonthResize#monthResizeDrag}\n * @param {object} dragEvent - drag event data\n */\nMonthResize.prototype._onDrag = function(dragEvent) {\n    var scheduleData;\n\n    if (!this.getScheduleData) {\n        return;\n    }\n\n    scheduleData = this.getScheduleData(dragEvent.originEvent);\n\n    if (!scheduleData) {\n        return;\n    }\n\n    /**\n     * @event {MonthResize#monthResizeDrag}\n     * @type {object}\n     * @property {number} x - x index\n     * @property {number} y - y index\n     * @property {Date} date - drag date\n     */\n    this.fire('monthResizeDrag', scheduleData);\n};\n\n/**\n * @fires {MonthResize#monthResizeDragend}\n * @param {object} dragEndEvent - drag end event data\n */\nMonthResize.prototype._onDragEnd = function(dragEndEvent) {\n    var cache = this._cache;\n    var scheduleData;\n    var start, end;\n\n    this.dragHandler.off({\n        drag: this._onDrag,\n        dragEnd: this._onDragEnd\n    }, this);\n\n    if (!this.getScheduleData) {\n        return;\n    }\n\n    scheduleData = this.getScheduleData(dragEndEvent.originEvent);\n\n    if (scheduleData) {\n        start = new TZDate(cache.schedule.getStarts());\n        end = new TZDate(scheduleData.date);\n        cache.end = end;\n\n        if (start <= cache.end) {\n            this._updateSchedule(cache);\n        }\n    }\n\n    /**\n     * @event {MonthResize#monthResizeDragend}\n     * @type {object}\n     * @property {number} x - x index\n     * @property {number} y - y index\n     * @property {Date} date - drag date\n     */\n    this.fire('monthResizeDragend', scheduleData);\n\n    this.getScheduleData = this._cache = null;\n};\n\nutil.CustomEvents.mixin(MonthResize);\n\nmodule.exports = MonthResize;\n","/**\n * @fileoverview Module for modification of guide element in schedule resize\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\nvar util = require('tui-code-snippet');\n\nvar config = require('../../config'),\n    domutil = require('../../common/domutil'),\n    MonthGuide = require('./guide');\n\n/**\n * @constructor\n * @param {MonthResize} monthResize - month/resize module instance\n */\nfunction MonthResizeGuide(monthResize) {\n    /**\n     * @type {MonthResize}\n     */\n    this.monthResize = monthResize;\n\n    /**\n     * @type {HTMLElement[]}\n     */\n    this.elements = null;\n\n    /**\n     * @type {MonthGuide}\n     */\n    this.guide = null;\n\n    monthResize.on({\n        monthResizeDragstart: this._onDragStart,\n        monthResizeDrag: this._onDrag,\n        monthResizeDragend: this._onDragEnd\n    }, this);\n}\n\n/**\n * Destructor\n */\nMonthResizeGuide.prototype.destroy = function() {\n    this.monthResize.off(this);\n    this.guide.destroy();\n\n    this.guide = this.monthResize = null;\n};\n\n/**\n * Hide element blocks for resize effect\n * @param {number} modelID - Schedule model instance ID\n */\nMonthResizeGuide.prototype._hideScheduleBlocks = function(modelID) {\n    this.elements = domutil.find(\n        config.classname('.weekday-schedule-block-' + modelID),\n        this.monthResize.monthView.container,\n        true\n    );\n\n    util.forEach(this.elements, function(el) {\n        el.style.display = 'none';\n    });\n};\n\n/**\n * Show element blocks\n */\nMonthResizeGuide.prototype._showScheduleBlocks = function() {\n    util.forEach(this.elements, function(el) {\n        el.style.display = 'block';\n    });\n};\n\n/**\n * Drag start event handler\n * @param {object} dragStartEvent - schedule data from MonthResize\n */\nMonthResizeGuide.prototype._onDragStart = function(dragStartEvent) {\n    this.guide = new MonthGuide({\n        isResizeMode: true\n    }, this.monthResize.monthView);\n\n    this.guide.start(dragStartEvent);\n\n    this._hideScheduleBlocks(dragStartEvent.model.cid());\n\n    if (!util.browser.msie) {\n        domutil.addClass(global.document.body, config.classname('resizing-x'));\n    }\n};\n\n/**\n * Drag event handler\n * @param {object} dragEvent - event data from MonthCreation\n */\nMonthResizeGuide.prototype._onDrag = function(dragEvent) {\n    this.guide.update(dragEvent.x, dragEvent.y);\n};\n\n/**\n * Drag end event handler\n */\nMonthResizeGuide.prototype._onDragEnd = function() {\n    this._showScheduleBlocks();\n\n    this.guide.destroy();\n    this.elements = this.guide = null;\n\n    if (!util.browser.msie) {\n        domutil.removeClass(global.document.body, config.classname('resizing-x'));\n    }\n};\n\nmodule.exports = MonthResizeGuide;\n","/**\n * @fileoverview Move handler for month view\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\nvar util = require('tui-code-snippet');\n\nvar config = require('../../config'),\n    domutil = require('../../common/domutil'),\n    datetime = require('../../common/datetime'),\n    getMousePosData = require('./core'),\n    MonthMoveGuide = require('./moveGuide'),\n    TZDate = require('../../common/timezone').Date;\n\n/**\n * @constructor\n * @mixes CustomEvents\n * @param {Drag} dragHandler - Drag handler instance.\n * @param {Month} monthView - Month view instance.\n * @param {Base} baseController - Base controller instance.\n */\nfunction MonthMove(dragHandler, monthView, baseController) {\n    /**\n     * @type {Drag}\n     */\n    this.dragHandler = dragHandler;\n\n    /**\n     * @type {Month}\n     */\n    this.monthView = monthView;\n\n    /**\n     * @type {Base}\n     */\n    this.baseController = baseController;\n\n    /**\n     * @type {function}\n     */\n    this.getScheduleData = null;\n\n    /**\n     * @type {object}\n     */\n    this._cache = null;\n\n    /**\n     * @type {MonthMoveGuide}\n     */\n    this.guide = new MonthMoveGuide(this);\n\n    dragHandler.on('dragStart', this._onDragStart, this);\n}\n\n/**\n * Destructor\n */\nMonthMove.prototype.destroy = function() {\n    this.dragHandler.off(this);\n\n    this.dragHandler = this.monthView = this.baseController = null;\n};\n\n/**\n * Update target schedule\n * @fires {MonthMove#beforeUpdateSchedule}\n * @param {object} scheduleCache - cache object that result of single dragging\n *  session.\n */\nMonthMove.prototype.updateSchedule = function(scheduleCache) {\n    var schedule = scheduleCache.model;\n    var duration = schedule.duration();\n    var startDateRaw = datetime.raw(schedule.start);\n    var dragEndTime = new TZDate(scheduleCache.end);\n    var newStartDate = new TZDate(dragEndTime);\n\n    newStartDate.setHours(startDateRaw.h, startDateRaw.m, startDateRaw.s, startDateRaw.ms);\n\n    /**\n     * @event MonthMove#beforeUpdateSchedule\n     * @type {object}\n     * @property {Schedule} schedule - The original schedule instance\n     * @property {Date} start - Deprecated: start time to update\n     * @property {Date} end - Deprecated: end time to update\n     * @property {object} changes - start and end time to update\n     *  @property {Date} start - start time to update\n     *  @property {Date} end - end time to update\n     */\n    this.fire('beforeUpdateSchedule', {\n        schedule: schedule,\n        changes: {\n            start: newStartDate,\n            end: new TZDate(newStartDate).addMilliseconds(duration)\n        },\n        start: newStartDate,\n        end: new TZDate(newStartDate).addMilliseconds(duration)\n    });\n};\n\n/**\n * Get schedule block to clone for month guide effect\n * @param {HTMLElement} target - target element that related with drag schedule\n * @returns {HTMLElement} element to create guide effect\n */\nMonthMove.prototype.getMonthScheduleBlock = function(target) {\n    var blockSelector = config.classname('.weekday-schedule-block');\n\n    return domutil.closest(target, blockSelector);\n};\n\n/**\n * Get schedule block from more layer\n * @param {HTMLElement} target - element to check\n * @returns {HTMLElement} schedule element\n */\nMonthMove.prototype.getMoreLayerScheduleBlock = function(target) {\n    var className = config.classname('.month-more-schedule');\n\n    return domutil.closest(target, className);\n};\n\n/**\n * Check handler has permission to handle fired schedule\n * @fires {MonthMove#monthMoveStart_from_morelayer}\n * @param {HTMLElement} target - target element of fired schedule\n * @returns {(string|null)} model instance ID related with schedule. if handle\n *  has not permission to handle the schedule then return null.\n */\nMonthMove.prototype.hasPermissionToHandle = function(target) {\n    var modelID = null;\n    var blockElement;\n\n    if (domutil.hasClass(target, config.classname('weekday-resize-handle'))) {\n        return null;\n    }\n\n    blockElement = this.getMonthScheduleBlock(target);\n\n    if (blockElement) {\n        modelID = domutil.getData(blockElement, 'id');\n    } else {\n        blockElement = this.getMoreLayerScheduleBlock(target);\n\n        if (blockElement) {\n            modelID = domutil.getData(blockElement, 'id');\n            /**\n             * Fire for notificate that the drag schedule start at more layer view.\n             * @event {MonthMove#monthMoveStart_from_morelayer}\n             */\n            this.fire('monthMoveStart_from_morelayer');\n        }\n    }\n\n    return modelID;\n};\n\n/**\n * Event handler for Drag#dragStart\n * @fires {MonthMove#monthMoveDragstart}\n * @param {object} dragStartEvent - drag start schedule data\n */\nMonthMove.prototype._onDragStart = function(dragStartEvent) {\n    var target = dragStartEvent.target,\n        modelID = this.hasPermissionToHandle(target),\n        model = this.baseController.schedules.items[modelID],\n        scheduleData;\n\n    if (!modelID || !model || model.isReadOnly || model.isPending) {\n        return;\n    }\n\n    this.dragHandler.on({\n        drag: this._onDrag,\n        dragEnd: this._onDragEnd\n    }, this);\n\n    this.getScheduleData = getMousePosData(this.monthView);\n\n    scheduleData = this.getScheduleData(dragStartEvent.originEvent);\n    scheduleData.originEvent = dragStartEvent.originEvent;\n    scheduleData.target = this.getMonthScheduleBlock(target);\n    scheduleData.model = model;\n\n    this._cache = {\n        model: model,\n        target: target,\n        start: new TZDate(Number(scheduleData.date))\n    };\n\n    /**\n     * @event {MonthMove#monthMoveDragstart}\n     * @type {object}\n     * @property {number} x - x index\n     * @property {number} y - y index\n     * @property {Date} date - drag date\n     * @property {HTMLElement} target - schedule block element\n     * @property {Schedule} model - model instance\n     */\n    this.fire('monthMoveDragstart', scheduleData);\n};\n\n/**\n * @fires {MonthMove#monthMoveDrag}\n * @param {object} dragEvent - drag event data\n */\nMonthMove.prototype._onDrag = function(dragEvent) {\n    var scheduleData;\n\n    if (!this.getScheduleData) {\n        return;\n    }\n\n    scheduleData = util.extend({\n        originEvent: dragEvent.originEvent\n    }, this.getScheduleData(dragEvent.originEvent));\n\n    if (!scheduleData) {\n        return;\n    }\n\n    /**\n     * @event {MonthMove#monthMoveDrag}\n     * @type {object}\n     * @property {number} x - x index\n     * @property {number} y - y index\n     * @property {Date} date - drag date\n     */\n    this.fire('monthMoveDrag', scheduleData);\n};\n\n/**\n * Event handler for Drag#dragEnd\n * @fires {MonthMove#monthMoveDragend}\n * @param {object} dragEndEvent - dragend event data\n */\nMonthMove.prototype._onDragEnd = function(dragEndEvent) {\n    var cache = this._cache;\n    var scheduleData;\n\n    this.dragHandler.off({\n        drag: this._onDrag,\n        dragEnd: this._onDragEnd\n    }, this);\n\n    if (!this.getScheduleData) {\n        return;\n    }\n\n    scheduleData = this.getScheduleData(dragEndEvent.originEvent);\n\n    if (scheduleData) {\n        cache.end = new TZDate(scheduleData.date);\n        this.updateSchedule(cache);\n    }\n\n    /**\n     * @event {MonthResize#monthMoveDragend}\n     * @type {object}\n     * @property {number} x - x index\n     * @property {number} y - y index\n     * @property {Date} date - drag date\n     */\n    this.fire('monthMoveDragend', scheduleData);\n\n    this.getScheduleData = this._cache = null;\n};\n\nutil.CustomEvents.mixin(MonthMove);\n\nmodule.exports = MonthMove;\n","/**\n * @fileoverview Module for modification of guide element for move in month view\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\nvar util = require('tui-code-snippet');\n\nvar config = require('../../config'),\n    domutil = require('../../common/domutil'),\n    domevent = require('../../common/domevent'),\n    FloatingLayer = require('../../common/floatingLayer'),\n    tmpl = require('./moveGuide.hbs'),\n    Schedule = require('../../model/schedule');\n\n/**\n * @constructor\n * @param {MonthMove} monthMove - month/move module instance\n */\nfunction MonthMoveGuide(monthMove) {\n    /**\n     * @type {MonthMove}\n     */\n    this.monthMove = monthMove;\n\n    /**\n     * @type {HTMLElement[]}\n     */\n    this.elements = null;\n\n    /**\n     * @type {FloatingLayer}\n     */\n    this.layer = null;\n\n    monthMove.on({\n        monthMoveDragstart: this._onDragStart,\n        monthMoveDrag: this._onDrag,\n        monthMoveDragend: this._onDragEnd\n    }, this);\n}\n\n/**\n * Destructor\n */\nMonthMoveGuide.prototype.destroy = function() {\n    this.monthMove.off(this);\n    this._clearGridBgColor();\n\n    if (this.layer) {\n        this.layer.destroy();\n    }\n\n    if (this.element) {\n        domutil.remove(this.element);\n    }\n\n    this.monthMove = this.elements = this.layer = null;\n};\n\n/**\n * Hide element blocks for resize effect\n * @param {number} modelID - Schedule model instance ID\n */\nMonthMoveGuide.prototype._hideOriginScheduleBlocks = function(modelID) {\n    var className = config.classname('weekday-schedule-block-dragging-dim');\n\n    this.elements = domutil.find(\n        config.classname('.weekday-schedule-block-' + modelID),\n        this.monthMove.monthView.container,\n        true\n    );\n\n    util.forEach(this.elements, function(el) {\n        domutil.addClass(el, className);\n    });\n};\n\n/**\n * Show element blocks\n */\nMonthMoveGuide.prototype._showOriginScheduleBlocks = function() {\n    var className = config.classname('weekday-schedule-block-dragging-dim');\n\n    util.forEach(this.elements, function(el) {\n        domutil.removeClass(el, className);\n    });\n};\n\n/**\n * Clear background color for filled grid element.\n */\nMonthMoveGuide.prototype._clearGridBgColor = function() {\n    var selector = config.classname('.weekday-filled'),\n        className = config.classname('weekday-filled'),\n        beforeGridElement = domutil.find(selector,\n            this.monthMove.monthView.container);\n\n    if (beforeGridElement) {\n        domutil.removeClass(beforeGridElement, className);\n    }\n};\n\n/**\n * Fill background color of date grids relatied with model updates.\n * @param {object} dragEvent - drag event data from MonthMoveGuide#_onDrag\n */\nMonthMoveGuide.prototype._updateGridBgColor = function(dragEvent) {\n    var gridElements = domutil.find(config.classname('.weekday-grid-line'), this.monthMove.monthView.container, true),\n        className = config.classname('weekday-filled'),\n        targetIndex = (dragEvent.x + (dragEvent.sizeX * dragEvent.y));\n\n    this._clearGridBgColor();\n\n    if (!gridElements || !gridElements[targetIndex]) {\n        return;\n    }\n\n    domutil.addClass(gridElements[targetIndex], className);\n};\n\n/**\n * Handler for MonthMove#dragStart\n * @param {object} dragStartEvent - dragStart schedule data object\n */\nMonthMoveGuide.prototype._onDragStart = function(dragStartEvent) {\n    var monthView = this.monthMove.monthView,\n        firstWeekdayView = monthView.children.single(),\n        weekdayOptions = firstWeekdayView.options,\n        widthPercent = 100 / firstWeekdayView.getRenderDateRange().length,\n        height = weekdayOptions.scheduleGutter + weekdayOptions.scheduleHeight,\n        container = monthView.container,\n        mousePos = domevent.getMousePosition(dragStartEvent.originEvent, container),\n        model = dragStartEvent.model,\n        layer = new FloatingLayer(null, container);\n\n    this._hideOriginScheduleBlocks(model.cid());\n\n    this.layer = layer;\n    layer.setSize(widthPercent + '%', height);\n    layer.setPosition(mousePos[0], mousePos[1]);\n    layer.setContent(tmpl({\n        model: util.extend(\n            Schedule.create(model),\n            model\n        ),\n        styles: {\n            scheduleHeight: weekdayOptions.scheduleHeight,\n            scheduleBulletTop: weekdayOptions.scheduleHeight / 3,\n            borderRadius: monthView.controller.theme.month.schedule.borderRadius\n        }\n    }));\n    layer.show();\n\n    if (!util.browser.msie) {\n        domutil.addClass(global.document.body, config.classname('dragging'));\n    }\n};\n\n/**\n * Handler for MonthMove#drag\n * @param {object} dragEvent - drag event data object\n */\nMonthMoveGuide.prototype._onDrag = function(dragEvent) {\n    var container = this.monthMove.monthView.container,\n        mousePos = domevent.getMousePosition(\n            dragEvent.originEvent,\n            container\n        );\n\n    this._updateGridBgColor(dragEvent);\n\n    if (!this.layer) {\n        return;\n    }\n\n    this.layer.setPosition(mousePos[0], mousePos[1]);\n};\n\n/**\n * Handler for MonthMove#dragEnd\n */\nMonthMoveGuide.prototype._onDragEnd = function() {\n    this._showOriginScheduleBlocks();\n\n    if (!util.browser.msie) {\n        domutil.removeClass(global.document.body, config.classname('dragging'));\n    }\n\n    this._clearGridBgColor();\n    this.layer.destroy();\n    this.layer = null;\n};\n\nmodule.exports = MonthMoveGuide;\n","var Handlebars = require('/Users/nhnent/Jodeng/workspace/Work/tui.calendar-new/node_modules/handlebars/runtime.js');\nmodule.exports = (Handlebars['default'] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data) {\n    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"            border-left:3px solid \"\n    + container.escapeExpression(container.lambda(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"borderColor\") : stack1), depth0))\n    + \";\\n            \";\n},\"3\":function(container,depth0,helpers,partials,data) {\n    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"    <span class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":14,\"column\":17},\"end\":{\"line\":14,\"column\":31}}}) : helper)))\n    + \"weekday-schedule-bullet \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":14,\"column\":55},\"end\":{\"line\":14,\"column\":69}}}) : helper)))\n    + \"weekday-schedule-bullet-focused\\\" style=\\\"top: \"\n    + alias4(container.lambda(((stack1 = (depth0 != null ? lookupProperty(depth0,\"styles\") : depth0)) != null ? lookupProperty(stack1,\"scheduleBulletTop\") : stack1), depth0))\n    + \"px;\\\"></span>\\n\";\n},\"5\":function(container,depth0,helpers,partials,data) {\n    var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return container.escapeExpression(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":16,\"column\":110},\"end\":{\"line\":16,\"column\":124}}}) : helper)))\n    + \"weekday-schedule-title-focused\";\n},\"7\":function(container,depth0,helpers,partials,data) {\n    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"            \"\n    + ((stack1 = (lookupProperty(helpers,\"allday-tmpl\")||(depth0 && lookupProperty(depth0,\"allday-tmpl\"))||container.hooks.helperMissing).call(depth0 != null ? depth0 : (container.nullContext || {}),(depth0 != null ? lookupProperty(depth0,\"model\") : depth0),{\"name\":\"allday-tmpl\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":18,\"column\":12},\"end\":{\"line\":18,\"column\":35}}})) != null ? stack1 : \"\")\n    + \"\\n\";\n},\"9\":function(container,depth0,helpers,partials,data) {\n    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"            \"\n    + ((stack1 = (lookupProperty(helpers,\"time-tmpl\")||(depth0 && lookupProperty(depth0,\"time-tmpl\"))||container.hooks.helperMissing).call(depth0 != null ? depth0 : (container.nullContext || {}),(depth0 != null ? lookupProperty(depth0,\"model\") : depth0),{\"name\":\"time-tmpl\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":20,\"column\":12},\"end\":{\"line\":20,\"column\":33}}})) != null ? stack1 : \"\")\n    + \"\\n\";\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, alias5=container.lambda, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"<div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":1,\"column\":12},\"end\":{\"line\":1,\"column\":26}}}) : helper)))\n    + \"month-guide \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":1,\"column\":38},\"end\":{\"line\":1,\"column\":52}}}) : helper)))\n    + \"month-guide-focused\\\"\\n     style=\\\"top: -50%;\\n            left: -50%;\\n            width: 100%;\\n            color: #ffffff;\\n            background-color:\"\n    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"dragBgColor\") : stack1), depth0))\n    + \";\\n            height:\"\n    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,\"styles\") : depth0)) != null ? lookupProperty(stack1,\"scheduleHeight\") : stack1), depth0))\n    + \"px;\\n            line-height:\"\n    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,\"styles\") : depth0)) != null ? lookupProperty(stack1,\"scheduleHeight\") : stack1), depth0))\n    + \"px;\\n            border-radius: \"\n    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,\"styles\") : depth0)) != null ? lookupProperty(stack1,\"borderRadius\") : stack1), depth0))\n    + \";\\n\"\n    + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"isAllDay\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":10,\"column\":12},\"end\":{\"line\":12,\"column\":19}}})) != null ? stack1 : \"\")\n    + \"\\\">\\n\"\n    + ((stack1 = lookupProperty(helpers,\"unless\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"isAllDay\") : stack1),{\"name\":\"unless\",\"hash\":{},\"fn\":container.program(3, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":13,\"column\":4},\"end\":{\"line\":15,\"column\":15}}})) != null ? stack1 : \"\")\n    + \"    <div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":16,\"column\":16},\"end\":{\"line\":16,\"column\":30}}}) : helper)))\n    + \"month-move-guide \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":16,\"column\":47},\"end\":{\"line\":16,\"column\":61}}}) : helper)))\n    + \"weekday-schedule-title \"\n    + ((stack1 = lookupProperty(helpers,\"unless\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"isAllDay\") : stack1),{\"name\":\"unless\",\"hash\":{},\"fn\":container.program(5, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":16,\"column\":84},\"end\":{\"line\":16,\"column\":165}}})) != null ? stack1 : \"\")\n    + \"\\\">\\n\"\n    + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"isAllDay\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(7, data, 0),\"inverse\":container.program(9, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":17,\"column\":8},\"end\":{\"line\":21,\"column\":15}}})) != null ? stack1 : \"\")\n    + \"    </div>\\n</div>\\n<div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":24,\"column\":12},\"end\":{\"line\":24,\"column\":26}}}) : helper)))\n    + \"month-guide-cover\\\" style=\\\"height:\"\n    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,\"styles\") : depth0)) != null ? lookupProperty(stack1,\"scheduleHeight\") : stack1), depth0))\n    + \"px; border-radius: \"\n    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,\"styles\") : depth0)) != null ? lookupProperty(stack1,\"borderRadius\") : stack1), depth0))\n    + \";\\\"></div>\\n\";\n},\"useData\":true});","/**\n * @fileoverview Floating layer for displaying schedule in specific date\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\nvar OUT_PADDING = 5;\nvar VIEW_MIN_WIDTH = 280;\nvar util = require('tui-code-snippet');\nvar config = require('../../config'),\n    domevent = require('../../common/domevent'),\n    domutil = require('../../common/domutil'),\n    View = require('../../view/view'),\n    FloatingLayer = require('../../common/floatingLayer'),\n    common = require('../../common/common'),\n    tmpl = require('../template/month/more.hbs');\n\n/**\n * @constructor\n * @extends {View}\n * @param {object} options - options\n * @param {object} [options.moreLayerSize] - more layer size\n * @param {object} [options.moreLayerSize.width=null] - css width value(px, auto).\n *                                                           The default value 'null' is to fit a grid cell.\n * @param {object} [options.moreLayerSize.height=null] - css height value(px, auto).\n *                                                            The default value 'null' is to fit a grid cell.\n * @param {HTMLElement} container = container element\n * @param {Theme} theme - theme instance\n */\nfunction More(options, container, theme) {\n    View.call(this, container);\n\n    /**\n     * @type {FloatingLayer}\n     */\n    this.layer = new FloatingLayer(null, container);\n\n    /**\n     * cached view model\n     * @type {object}\n     */\n    this._viewModel = null;\n\n    /**\n     * @type {object}\n     */\n    this.options = util.extend({\n        moreLayerSize: {\n            width: null,\n            height: null\n        },\n        scheduleHeight: parseInt(theme.month.schedule.height, 10) || 18,\n        scheduleGutter: parseInt(theme.month.schedule.marginTop, 10) || 2,\n        scheduleBulletTop: (parseInt(theme.month.schedule.height, 10) || 18) / 3,\n        borderRadius: theme.month.schedule.borderRadius\n    }, options);\n\n    /**\n     * @type {Theme}\n     */\n    this.theme = theme;\n\n    domevent.on(container, 'click', this._onClick, this);\n}\n\nutil.inherit(More, View);\n\n/**\n * Click event handler for close button\n * @param {MouseEvent} clickEvent - mouse event object\n */\nMore.prototype._onClick = function(clickEvent) {\n    var target = domevent.getEventTarget(clickEvent);\n    var className = config.classname('month-more-close');\n\n    if (!domutil.hasClass(target, className) && !domutil.closest(target, '.' + className)) {\n        return;\n    }\n\n    this.hide();\n};\n\n/**\n * Mousedown event handler for hiding more layer when user mousedown outside of\n * layer\n * @param {MouseEvent} mouseDownEvent - mouse event object\n */\nMore.prototype._onMouseDown = function(mouseDownEvent) {\n    var target = domevent.getEventTarget(mouseDownEvent),\n        moreLayer = domutil.closest(target, config.classname('.month-more'));\n\n    if (moreLayer) {\n        return;\n    }\n\n    this.hide();\n};\n\n/**\n * Get new position for more layer by +n element itself\n * @param {HTMLElement} target - parent grid-line element of +n element\n * @param {HTMLElement} weekItem - weekItem container element\n * @returns {number[]} new position of more layer\n */\nMore.prototype._getRenderPosition = function(target, weekItem) {\n    var pos = domevent.getMousePosition({\n        clientX: domutil.getPosition(target)[0],\n        clientY: domutil.getPosition(weekItem)[1]\n    }, this.container);\n    var containerSize = domutil.getSize(this.container);\n    var left = pos[0] - OUT_PADDING;\n    var top = pos[1] - OUT_PADDING;\n\n    left = common.ratio(containerSize[0], 100, left);\n    top = common.ratio(containerSize[1], 100, top);\n\n    return [left, top];\n};\n\n/**\n * @override\n */\nMore.prototype.destroy = function() {\n    this.layer.destroy();\n    this.layer = null;\n    domevent.off(this.container, 'click', this._onClick, this);\n    domevent.off(document.body, 'mousedown', this._onMouseDown, this);\n    View.prototype.destroy.call(this);\n};\n\n/**\n * @override\n * @param {object} viewModel - view model from factory/monthView\n */\nMore.prototype.render = function(viewModel) {\n    var target = domutil.closest(viewModel.target, config.classname('.weekday-grid-line'));\n    var weekItem = domutil.closest(target, config.classname('.month-week-item'));\n    var layer = this.layer;\n    var self = this;\n    var pos = this._getRenderPosition(target, weekItem);\n    var minHeight = domutil.getSize(weekItem)[1] + (OUT_PADDING * 2);\n    var width = target.offsetWidth + (OUT_PADDING * 2);\n    var opt = this.options;\n    var optMoreLayerSize = opt.moreLayerSize;\n    var styles = this._getStyles(this.theme);\n    var maxVisibleSchedulesInLayer = 10;\n    var height = '';\n    var containerSize = domutil.getSize(this.container);\n    var calWidth = 0;\n    var calHeight = 0;\n    var isOverWidth = false;\n    var isOverHeight = false;\n    var leftPos = pos[0];\n    var topPos = pos[1];\n\n    this._viewModel = util.extend(viewModel, {\n        scheduleGutter: opt.scheduleGutter,\n        scheduleHeight: opt.scheduleHeight,\n        scheduleBulletTop: opt.scheduleBulletTop,\n        borderRadius: opt.borderRadius,\n        styles: styles\n    });\n\n    width = Math.max(width, VIEW_MIN_WIDTH);\n    height = parseInt(styles.titleHeight, 10);\n    height += parseInt(styles.titleMarginBottom, 10);\n    if (viewModel.schedules.length <= maxVisibleSchedulesInLayer) {\n        height += (opt.scheduleGutter + opt.scheduleHeight) * viewModel.schedules.length;\n    } else {\n        height += (opt.scheduleGutter + opt.scheduleHeight) * maxVisibleSchedulesInLayer;\n    }\n    height += parseInt(styles.paddingBottom, 10);\n    height += OUT_PADDING; // for border\n\n    if (optMoreLayerSize.width) {\n        width = optMoreLayerSize.width;\n    }\n\n    if (optMoreLayerSize.height) {\n        height = optMoreLayerSize.height;\n    }\n\n    if (isNaN(height) || height < minHeight) {\n        height = minHeight;\n    }\n\n    layer.setContent(tmpl(viewModel));\n\n    calWidth = leftPos * containerSize[0] / 100;\n    calHeight = topPos * containerSize[1] / 100;\n    isOverWidth = calWidth + width >= containerSize[0];\n    isOverHeight = calHeight + height >= containerSize[1];\n    leftPos = leftPos + '%';\n    topPos = topPos + '%';\n\n    if (isOverWidth && isOverHeight) {\n        layer.setLTRB({\n            right: 0,\n            bottom: 0\n        });\n    } else if (!isOverWidth && isOverHeight) {\n        layer.setLTRB({\n            left: leftPos,\n            bottom: 0\n        });\n    } else if (isOverWidth && !isOverHeight) {\n        layer.setLTRB({\n            right: 0,\n            top: topPos\n        });\n    } else {\n        layer.setPosition(leftPos, topPos);\n    }\n\n    layer.setSize(width, height);\n\n    layer.show();\n\n    util.debounce(function() {\n        domevent.on(document.body, 'mousedown', self._onMouseDown, self);\n    })();\n};\n\n/**\n * Hide layer\n */\nMore.prototype.hide = function() {\n    this.layer.hide();\n    domevent.off(document.body, 'mousedown', this._onMouseDown, this);\n};\n\n/**\n * refresh layer\n */\nMore.prototype.refresh = function() {\n    if (this._viewModel) {\n        this.layer.setContent(tmpl(this._viewModel));\n    }\n};\n\n/**\n * Return more layer root element\n * @returns {HTMLElement} root element\n */\nMore.prototype.getMoreViewElement = function() {\n    return domutil.find(config.classname('.month-more'), this.layer.container);\n};\n\n/**\n * Get the styles from theme\n * @param {Theme} theme - theme instance\n * @returns {object} styles - styles object\n */\nMore.prototype._getStyles = function(theme) {\n    var styles = {};\n    var listHeight = '';\n\n    if (theme) {\n        styles.border = theme.month.moreView.border || theme.common.border;\n        styles.boxShadow = theme.month.moreView.boxShadow;\n        styles.backgroundColor = theme.month.moreView.backgroundColor || theme.common.backgroundColor;\n        styles.paddingBottom = theme.month.moreView.paddingBottom;\n        styles.titleHeight = theme.month.moreViewTitle.height;\n        styles.titleMarginBottom = theme.month.moreViewTitle.marginBottom;\n        styles.titleBackgroundColor = theme.month.moreViewTitle.backgroundColor;\n        styles.titleBorderBottom = theme.month.moreViewTitle.borderBottom;\n        styles.titlePadding = theme.month.moreViewTitle.padding;\n        styles.listPadding = theme.month.moreViewList.padding;\n        listHeight = 'calc(100%';\n\n        if (parseInt(styles.titleHeight, 10)) {\n            listHeight += ' - ' + styles.titleHeight;\n        }\n        if (parseInt(styles.titleMarginBottom, 10)) {\n            listHeight += ' - ' + styles.titleMarginBottom;\n        }\n        listHeight += ')';\n\n        styles.listHeight = listHeight;\n    }\n\n    return styles;\n};\n\nmodule.exports = More;\n","var Handlebars = require('/Users/nhnent/Jodeng/workspace/Work/tui.calendar-new/node_modules/handlebars/runtime.js');\nmodule.exports = (Handlebars['default'] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data) {\n    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return ((stack1 = (lookupProperty(helpers,\"fi\")||(depth0 && lookupProperty(depth0,\"fi\"))||container.hooks.helperMissing).call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"isAllDay\") : stack1),\"||\",(depth0 != null ? lookupProperty(depth0,\"hasMultiDates\") : depth0),{\"name\":\"fi\",\"hash\":{},\"fn\":container.program(2, data, 0),\"inverse\":container.program(7, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":9,\"column\":8},\"end\":{\"line\":65,\"column\":15}}})) != null ? stack1 : \"\");\n},\"2\":function(container,depth0,helpers,partials,data) {\n    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=container.escapeExpression, alias4=container.lambda, alias5=\"function\", lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"<div data-id=\\\"\"\n    + alias3((lookupProperty(helpers,\"stamp\")||(depth0 && lookupProperty(depth0,\"stamp\"))||alias2).call(alias1,(depth0 != null ? lookupProperty(depth0,\"model\") : depth0),{\"name\":\"stamp\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":10,\"column\":26},\"end\":{\"line\":10,\"column\":41}}}))\n    + \"\\\"\\n                data-schedule-id=\\\"\"\n    + alias3(alias4(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"id\") : stack1), depth0))\n    + \"\\\" data-calendar-id=\\\"\"\n    + alias3(alias4(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"calendarId\") : stack1), depth0))\n    + \"\\\"\\n                class=\\\"\"\n    + alias3(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias5 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":12,\"column\":23},\"end\":{\"line\":12,\"column\":37}}}) : helper)))\n    + \"month-more-schedule \"\n    + alias3(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias5 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":12,\"column\":57},\"end\":{\"line\":12,\"column\":71}}}) : helper)))\n    + \"month-more-allday \"\n    + alias3(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias5 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":12,\"column\":89},\"end\":{\"line\":12,\"column\":103}}}) : helper)))\n    + \"weekday-schedule-title\\\"\\n                style=\\\"height: \"\n    + alias3(alias4(((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"scheduleHeight\")), depth0))\n    + \"px; line-height: \"\n    + alias3(alias4(((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"scheduleHeight\")), depth0))\n    + \"px; margin-top: \"\n    + alias3(alias4(((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"scheduleGutter\")), depth0))\n    + \"px; border-radius: \"\n    + alias3(alias4(((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"borderRadius\")), depth0))\n    + \";\\n\"\n    + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"isFocused\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(3, data, 0),\"inverse\":container.program(5, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":14,\"column\":20},\"end\":{\"line\":18,\"column\":27}}})) != null ? stack1 : \"\")\n    + \"                    \"\n    + alias3(alias4(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"customStyle\") : stack1), depth0))\n    + \"\\\">\\n                    \"\n    + ((stack1 = (lookupProperty(helpers,\"allday-tmpl\")||(depth0 && lookupProperty(depth0,\"allday-tmpl\"))||alias2).call(alias1,(depth0 != null ? lookupProperty(depth0,\"model\") : depth0),{\"name\":\"allday-tmpl\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":20,\"column\":20},\"end\":{\"line\":20,\"column\":43}}})) != null ? stack1 : \"\")\n    + \"\\n            </div>\\n\";\n},\"3\":function(container,depth0,helpers,partials,data) {\n    var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"                        color: #ffffff; background-color:\"\n    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"color\") : stack1), depth0))\n    + \"; border-left:3px solid \"\n    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"borderColor\") : stack1), depth0))\n    + \";\\n\";\n},\"5\":function(container,depth0,helpers,partials,data) {\n    var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"                        color:\"\n    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"color\") : stack1), depth0))\n    + \"; background-color:\"\n    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"bgColor\") : stack1), depth0))\n    + \"; border-left:3px solid \"\n    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"borderColor\") : stack1), depth0))\n    + \";\\n\";\n},\"7\":function(container,depth0,helpers,partials,data) {\n    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return ((stack1 = (lookupProperty(helpers,\"fi\")||(depth0 && lookupProperty(depth0,\"fi\"))||container.hooks.helperMissing).call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"category\") : stack1),\"===\",\"time\",{\"name\":\"fi\",\"hash\":{},\"fn\":container.program(8, data, 0),\"inverse\":container.program(17, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":23,\"column\":12},\"end\":{\"line\":64,\"column\":19}}})) != null ? stack1 : \"\");\n},\"8\":function(container,depth0,helpers,partials,data) {\n    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=container.escapeExpression, alias4=container.lambda, alias5=\"function\", lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"                <div data-id=\\\"\"\n    + alias3((lookupProperty(helpers,\"stamp\")||(depth0 && lookupProperty(depth0,\"stamp\"))||alias2).call(alias1,(depth0 != null ? lookupProperty(depth0,\"model\") : depth0),{\"name\":\"stamp\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":24,\"column\":30},\"end\":{\"line\":24,\"column\":45}}}))\n    + \"\\\"\\n                    data-schedule-id=\\\"\"\n    + alias3(alias4(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"id\") : stack1), depth0))\n    + \"\\\" data-calendar-id=\\\"\"\n    + alias3(alias4(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"calendarId\") : stack1), depth0))\n    + \"\\\"\\n                    class=\\\"\"\n    + alias3(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias5 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":26,\"column\":27},\"end\":{\"line\":26,\"column\":41}}}) : helper)))\n    + \"month-more-schedule \"\n    + alias3(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias5 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":26,\"column\":61},\"end\":{\"line\":26,\"column\":75}}}) : helper)))\n    + \"weekday-schedule \"\n    + alias3(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias5 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":26,\"column\":92},\"end\":{\"line\":26,\"column\":106}}}) : helper)))\n    + \"weekday-schedule-time\\\"\\n                    style=\\\"height: \"\n    + alias3(alias4(((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"scheduleHeight\")), depth0))\n    + \"px; line-height: \"\n    + alias3(alias4(((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"scheduleHeight\")), depth0))\n    + \"px; margin-top: \"\n    + alias3(alias4(((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"scheduleGutter\")), depth0))\n    + \"px;\"\n    + alias3(alias4(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"customStyle\") : stack1), depth0))\n    + \"\\\">\\n                    <span class=\\\"\"\n    + alias3(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias5 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":28,\"column\":33},\"end\":{\"line\":28,\"column\":47}}}) : helper)))\n    + \"weekday-schedule-bullet\\\"\\n                        style=\\\"top: \"\n    + alias3(alias4(((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"scheduleBulletTop\")), depth0))\n    + \"px;\\n\"\n    + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"isFocused\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(9, data, 0),\"inverse\":container.program(11, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":30,\"column\":28},\"end\":{\"line\":34,\"column\":35}}})) != null ? stack1 : \"\")\n    + \"\\\"></span>\\n                    <span class=\\\"\"\n    + alias3(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias5 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":35,\"column\":33},\"end\":{\"line\":35,\"column\":47}}}) : helper)))\n    + \"weekday-schedule-title\\\"\\n                        style=\\\"\"\n    + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"isFocused\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(13, data, 0),\"inverse\":container.program(15, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":36,\"column\":31},\"end\":{\"line\":41,\"column\":35}}})) != null ? stack1 : \"\")\n    + \"\\\"\\n                        data-title=\\\"\"\n    + alias3(alias4(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"title\") : stack1), depth0))\n    + \"\\\">\"\n    + ((stack1 = (lookupProperty(helpers,\"time-tmpl\")||(depth0 && lookupProperty(depth0,\"time-tmpl\"))||alias2).call(alias1,(depth0 != null ? lookupProperty(depth0,\"model\") : depth0),{\"name\":\"time-tmpl\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":42,\"column\":53},\"end\":{\"line\":42,\"column\":74}}})) != null ? stack1 : \"\")\n    + \"</span>\\n                </div>\\n\";\n},\"9\":function(container,depth0,helpers,partials,data) {\n    return \"                                background: #ffffff\\n\";\n},\"11\":function(container,depth0,helpers,partials,data) {\n    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"                                background:\"\n    + container.escapeExpression(container.lambda(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"borderColor\") : stack1), depth0))\n    + \"\\n                            \";\n},\"13\":function(container,depth0,helpers,partials,data) {\n    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"\\n                                color: #ffffff;\\n                                background-color: \"\n    + container.escapeExpression(container.lambda(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"color\") : stack1), depth0))\n    + \"\\n\";\n},\"15\":function(container,depth0,helpers,partials,data) {\n    return \"                                color:#333;\\n                            \";\n},\"17\":function(container,depth0,helpers,partials,data) {\n    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=container.escapeExpression, alias4=container.lambda, alias5=\"function\", lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"<div data-id=\\\"\"\n    + alias3((lookupProperty(helpers,\"stamp\")||(depth0 && lookupProperty(depth0,\"stamp\"))||alias2).call(alias1,(depth0 != null ? lookupProperty(depth0,\"model\") : depth0),{\"name\":\"stamp\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":45,\"column\":30},\"end\":{\"line\":45,\"column\":45}}}))\n    + \"\\\"\\n                    data-schedule-id=\\\"\"\n    + alias3(alias4(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"id\") : stack1), depth0))\n    + \"\\\" data-calendar-id=\\\"\"\n    + alias3(alias4(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"calendarId\") : stack1), depth0))\n    + \"\\\"\\n                    class=\\\"\"\n    + alias3(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias5 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":47,\"column\":27},\"end\":{\"line\":47,\"column\":41}}}) : helper)))\n    + \"month-more-schedule \"\n    + alias3(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias5 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":47,\"column\":61},\"end\":{\"line\":47,\"column\":75}}}) : helper)))\n    + \"weekday-schedule \"\n    + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"isFocused\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(18, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":47,\"column\":92},\"end\":{\"line\":47,\"column\":161}}})) != null ? stack1 : \"\")\n    + \"\\\"\\n                    style=\\\"height:\"\n    + alias3(alias4(((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"scheduleHeight\")), depth0))\n    + \"px; line-height:\"\n    + alias3(alias4(((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"scheduleHeight\")), depth0))\n    + \"px; border-radius: \"\n    + alias3(alias4(((stack1 = ((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"styles\"))) && lookupProperty(stack1,\"borderRadius\")), depth0))\n    + \";\\n\"\n    + ((stack1 = lookupProperty(helpers,\"unless\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"exceedLeft\") : depth0),{\"name\":\"unless\",\"hash\":{},\"fn\":container.program(20, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":49,\"column\":20},\"end\":{\"line\":51,\"column\":31}}})) != null ? stack1 : \"\")\n    + ((stack1 = lookupProperty(helpers,\"unless\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"exceedRight\") : depth0),{\"name\":\"unless\",\"hash\":{},\"fn\":container.program(22, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":52,\"column\":20},\"end\":{\"line\":54,\"column\":31}}})) != null ? stack1 : \"\")\n    + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"isFocused\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(24, data, 0),\"inverse\":container.program(26, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":55,\"column\":20},\"end\":{\"line\":59,\"column\":27}}})) != null ? stack1 : \"\")\n    + \"                        \"\n    + alias3(alias4(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"customStyle\") : stack1), depth0))\n    + \"\\\">\\n                    <span class=\\\"\"\n    + alias3(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias5 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":61,\"column\":33},\"end\":{\"line\":61,\"column\":47}}}) : helper)))\n    + \"weekday-schedule-title\\\"\\n                                    data-title=\\\"\"\n    + alias3(alias4(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"title\") : stack1), depth0))\n    + \"\\\">\"\n    + ((stack1 = (lookupProperty(helpers,\"schedule-tmpl\")||(depth0 && lookupProperty(depth0,\"schedule-tmpl\"))||alias2).call(alias1,(depth0 != null ? lookupProperty(depth0,\"model\") : depth0),{\"name\":\"schedule-tmpl\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":62,\"column\":65},\"end\":{\"line\":62,\"column\":90}}})) != null ? stack1 : \"\")\n    + \"</span>\\n                </div>\\n\";\n},\"18\":function(container,depth0,helpers,partials,data) {\n    var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return container.escapeExpression(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":47,\"column\":115},\"end\":{\"line\":47,\"column\":129}}}) : helper)))\n    + \"weekday-schedule-focused \";\n},\"20\":function(container,depth0,helpers,partials,data) {\n    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"                        margin-left: \"\n    + container.escapeExpression(container.lambda(((stack1 = ((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"styles\"))) && lookupProperty(stack1,\"marginLeft\")), depth0))\n    + \";\\n\";\n},\"22\":function(container,depth0,helpers,partials,data) {\n    var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"                        margin-right: \"\n    + container.escapeExpression(container.lambda(((stack1 = ((stack1 = (data && lookupProperty(data,\"root\"))) && lookupProperty(stack1,\"styles\"))) && lookupProperty(stack1,\"marginRight\")), depth0))\n    + \";\\n\";\n},\"24\":function(container,depth0,helpers,partials,data) {\n    var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"                        color: #ffffff; background-color:\"\n    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"color\") : stack1), depth0))\n    + \"; border-color:\"\n    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"color\") : stack1), depth0))\n    + \";\\n\";\n},\"26\":function(container,depth0,helpers,partials,data) {\n    var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"                        color:\"\n    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"color\") : stack1), depth0))\n    + \"; background-color:\"\n    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"bgColor\") : stack1), depth0))\n    + \"; border-color:\"\n    + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"model\") : depth0)) != null ? lookupProperty(stack1,\"borderColor\") : stack1), depth0))\n    + \";\\n\";\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, alias5=container.lambda, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    };\n\n  return \"<div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":1,\"column\":12},\"end\":{\"line\":1,\"column\":26}}}) : helper)))\n    + \"month-more\\\" style=\\\"padding-bottom: \"\n    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,\"styles\") : depth0)) != null ? lookupProperty(stack1,\"paddingBottom\") : stack1), depth0))\n    + \"; border: \"\n    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,\"styles\") : depth0)) != null ? lookupProperty(stack1,\"border\") : stack1), depth0))\n    + \"; box-shadow: \"\n    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,\"styles\") : depth0)) != null ? lookupProperty(stack1,\"boxShadow\") : stack1), depth0))\n    + \"; background-color: \"\n    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,\"styles\") : depth0)) != null ? lookupProperty(stack1,\"backgroundColor\") : stack1), depth0))\n    + \";\\\">\\n    <div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":2,\"column\":16},\"end\":{\"line\":2,\"column\":30}}}) : helper)))\n    + \"month-more-title\\\"\\n        style=\\\"height: \"\n    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,\"styles\") : depth0)) != null ? lookupProperty(stack1,\"titleHeight\") : stack1), depth0))\n    + \"; margin-bottom: \"\n    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,\"styles\") : depth0)) != null ? lookupProperty(stack1,\"titleMarginBottom\") : stack1), depth0))\n    + \"; background-color: \"\n    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,\"styles\") : depth0)) != null ? lookupProperty(stack1,\"titleBackgroundColor\") : stack1), depth0))\n    + \"; border-bottom: \"\n    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,\"styles\") : depth0)) != null ? lookupProperty(stack1,\"titleBorderBottom\") : stack1), depth0))\n    + \"; padding: \"\n    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,\"styles\") : depth0)) != null ? lookupProperty(stack1,\"titlePadding\") : stack1), depth0))\n    + \";\\\">\\n        <span class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":4,\"column\":21},\"end\":{\"line\":4,\"column\":35}}}) : helper)))\n    + \"month-more-title-date\\\">\"\n    + ((stack1 = (lookupProperty(helpers,\"monthMoreTitleDate-tmpl\")||(depth0 && lookupProperty(depth0,\"monthMoreTitleDate-tmpl\"))||alias2).call(alias1,(depth0 != null ? lookupProperty(depth0,\"date\") : depth0),(depth0 != null ? lookupProperty(depth0,\"dayname\") : depth0),{\"name\":\"monthMoreTitleDate-tmpl\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":4,\"column\":58},\"end\":{\"line\":4,\"column\":100}}})) != null ? stack1 : \"\")\n    + \"</span>\\n        <button type=\\\"button\\\" class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":5,\"column\":37},\"end\":{\"line\":5,\"column\":51}}}) : helper)))\n    + \"month-more-close\\\">\"\n    + ((stack1 = ((helper = (helper = lookupProperty(helpers,\"monthMoreClose-tmpl\") || (depth0 != null ? lookupProperty(depth0,\"monthMoreClose-tmpl\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"monthMoreClose-tmpl\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":5,\"column\":69},\"end\":{\"line\":5,\"column\":94}}}) : helper))) != null ? stack1 : \"\")\n    + \"</button>\\n    </div>\\n    <div class=\\\"\"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"CSS_PREFIX\") || (depth0 != null ? lookupProperty(depth0,\"CSS_PREFIX\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"CSS_PREFIX\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":7,\"column\":16},\"end\":{\"line\":7,\"column\":30}}}) : helper)))\n    + \"month-more-list\\\" style=\\\"padding: \"\n    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,\"styles\") : depth0)) != null ? lookupProperty(stack1,\"listPadding\") : stack1), depth0))\n    + \"; height: \"\n    + alias4(alias5(((stack1 = (depth0 != null ? lookupProperty(depth0,\"styles\") : depth0)) != null ? lookupProperty(stack1,\"listHeight\") : stack1), depth0))\n    + \";\\\">\\n\"\n    + ((stack1 = lookupProperty(helpers,\"each\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"schedules\") : depth0),{\"name\":\"each\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":8,\"column\":8},\"end\":{\"line\":66,\"column\":17}}})) != null ? stack1 : \"\")\n    + \"    </div>\\n</div>\\n\";\n},\"useData\":true});","/* eslint complexity: 0 */\n/**\n * @fileoverview Helpers for handlebar templates.\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n'use strict';\n\nvar util = require('tui-code-snippet');\nvar Handlebars = require('handlebars-template-loader/runtime');\nvar datetime = require('../../common/datetime');\nvar common = require('../../common/common');\nvar config = require('../../config');\nvar mmax = Math.max;\nvar SIXTY_MINUTES = 60;\nvar helpers = {\n    /**\n     * Stamp supplied object\n     *\n     * Commonly use for rendering object's unique ID to rendered view\n     * @param {object} obj - object to stamp\n     * @returns {number} stamp value\n     */\n    'stamp': function(obj) {\n        return util.stamp(obj);\n    },\n\n    /**\n     * Whether supplied object are equal?\n     * @param {*} a - a\n     * @param {*} b - b\n     * @returns {boolean} result of operation\n     */\n    'equal': function(a, b) {\n        return a === b;\n    },\n\n    /**\n     * OR\n     * @param {*} a - a\n     * @param {*} b - b\n     * @returns {boolean} or\n     */\n    'or': function(a, b) {\n        return a || b;\n    },\n\n    /**\n     * AND\n     * @param {*} a - a\n     * @param {*} b - b\n     * @returns {boolean} or\n     */\n    'and': function(a, b) {\n        return a && b;\n    },\n\n    /**\n     * Compare object or apply logical operation by customizable oper parameter\n     * @param {*} a - a\n     * @param {string} oper - operator ex) '==', '<'\n     * @param {*} b - b\n     * @param {Handlebars} options - handlebar options\n     * @returns {boolean} result of operation\n     */\n    'fi': function(a, oper, b, options) {\n        switch (oper) {\n            case '==':\n                return (a == b) ? options.fn(this) : options.inverse(this);  // eslint-disable-line\n            case '===':\n                return (a === b) ? options.fn(this) : options.inverse(this);\n            case '!==':\n                return (a !== b) ? options.fn(this) : options.inverse(this);\n            case '<':\n                return (a < b) ? options.fn(this) : options.inverse(this);\n            case '||':\n                return (a || b) ? options.fn(this) : options.inverse(this);\n            default:\n                throw new Error('Not match operation');\n        }\n    },\n\n    /**\n     * Get hhmm formatted time str\n     * @param {Date} date - date object\n     * @returns {string} formatted value\n     */\n    'hhmm': function(date) {\n        return datetime.format(date, 'HH:mm');\n    },\n\n    /**\n     * Get `width` stylesheet string\n     * @param {number} width - width percentage\n     * @returns {string} css style part\n     */\n    'common-width': function(width) {\n        return getElSize(width, '%', 'width');\n    },\n\n    /**\n     * Get element left based on narrowWeekend\n     * @param {object} viewModel - view model\n     * @param {Array} grids - dates information\n     * @returns {number} element left\n     */\n    'grid-left': function(viewModel, grids) {\n        return getElLeft(viewModel, grids);\n    },\n\n    /**\n     * Get element width based on narrowWeekend\n     * @param {object} viewModel - view model\n     * @param {Array} grids - dates information\n     * @returns {number} element width\n     */\n    'grid-width': function(viewModel, grids) {\n        return getElWidth(viewModel, grids);\n    },\n\n    /**\n     * Use in time.hbs\n     * @param {ScheduleViewModel} viewModel viewModel\n     * @returns {string} element size css class\n     */\n    'time-scheduleBlock': function(viewModel) {\n        var top = getElSize(viewModel.top, 'px', 'top'),\n            left = getElSize(viewModel.left, '%', 'left'),\n            width = getElSize(viewModel.width, '%', 'width'),\n            height = getElSize(viewModel.height, 'px', 'height');\n\n        return [top, left, width, height].join(';');\n    },\n\n    'month-scheduleBlock': function(viewModel, grids, blockHeight, paddingTop) {\n        var top = getElSize(((viewModel.top - 1) * blockHeight) + paddingTop, 'px', 'top');\n        var left = getElSize(grids[viewModel.left] ? grids[viewModel.left].left : 0, '%', 'left');\n        var width = getElSize(getElWidth(viewModel, grids), '%', 'width');\n        var height = getElSize(viewModel.height, 'px', 'height');\n\n        return [top, left, width, height].join(';');\n    },\n\n    'holiday': function(day) {\n        var cssClass = '';\n\n        if (day === 0) {\n            cssClass = config.classname('holiday-sun');\n        }\n\n        if (day === 6) {\n            cssClass = config.classname('holiday-sat');\n        }\n\n        return cssClass;\n    },\n\n    /**\n     * Add supplied two parameter\n     * @param {*} a - a\n     * @param {*} b - b\n     * @returns {number} result of operation\n     */\n    'add': function(a, b) {\n        return a + b;\n    },\n\n    /**\n     * Multiply supplied two parameter\n     * @param {*} a - a\n     * @param {*} b - b\n     * @returns {number} result of operation\n     */\n    'multiply': function(a, b) {\n        return a * b;\n    },\n\n    /**\n     * Divide supplied two parameter\n     * @param {*} a - a\n     * @param {*} b - b\n     * @returns {number} result of operation\n     */\n    'divide': function(a, b) {\n        return a / b;\n    },\n\n    /**\n     * Subtract supplied two parameter\n     * @param {*} a - a\n     * @param {*} b - b\n     * @returns {number} result of operation\n     */\n    'subtract': function(a, b) {\n        return a - b;\n    },\n\n    'getRight': function(a, b) {\n        return mmax(0, 100 - (a + b));\n    },\n\n    /**\n     * Get css prefix in global configuration\n     * @returns {string} css prefix\n     */\n    'CSS_PREFIX': function() {\n        return config.cssPrefix;\n    },\n\n    'reverse': function(array) {\n        return array.slice().reverse();\n    },\n\n    /**********\n     * Default schedule template\n     **********/\n\n    'milestone-tmpl': function(model) {\n        var icon = config.classname('icon');\n        var iconName = config.classname('ic-milestone');\n\n        return '<span class=\"' + icon + ' ' + iconName + '\"></span><span style=\"background-color: ' + model.bgColor + '\">' + common.stripTags(model.title) + '</span>';\n    },\n\n    'milestoneTitle-tmpl': function() {\n        var className = config.classname('left-content');\n\n        return '<span class=\"' + className + '\">Milestone</span>';\n    },\n\n    'task-tmpl': function(model) {\n        return '#' + model.title;\n    },\n\n    'taskTitle-tmpl': function() {\n        var className = config.classname('left-content');\n\n        return '<span class=\"' + className + '\">Task</span>';\n    },\n\n    'alldayTitle-tmpl': function() {\n        var className = config.classname('left-content');\n\n        return '<span class=\"' + className + '\">All Day</span>';\n    },\n\n    'allday-tmpl': function(model) {\n        return common.stripTags(model.title);\n    },\n\n    'time-tmpl': function(model) {\n        return common.stripTags(model.title);\n    },\n\n    'goingDuration-tmpl': function(model) {\n        var goingDuration = model.goingDuration;\n        var hour = parseInt(goingDuration / SIXTY_MINUTES, 10);\n        var minutes = goingDuration % SIXTY_MINUTES;\n\n        return 'GoingTime ' + datetime.leadingZero(hour, 2) + ':' + datetime.leadingZero(minutes, 2);\n    },\n\n    'comingDuration-tmpl': function(model) {\n        var goingDuration = model.goingDuration;\n        var hour = parseInt(goingDuration / SIXTY_MINUTES, 10);\n        var minutes = goingDuration % SIXTY_MINUTES;\n\n        return 'ComingTime ' + datetime.leadingZero(hour, 2) + ':' + datetime.leadingZero(minutes, 2);\n    },\n\n    'monthMoreTitleDate-tmpl': function(date, dayname) {\n        var classDay = config.classname('month-more-title-day');\n        var classDayLabel = config.classname('month-more-title-day-label');\n        var day = util.pick(date.split('.'), 2);\n\n        return '<span class=\"' + classDay + '\">' + day + '</span> <span class=\"' + classDayLabel + '\">' + dayname + '</span>';\n    },\n\n    'monthMoreClose-tmpl': function() {\n        return '';\n    },\n\n    'monthGridHeader-tmpl': function(model) {\n        var date = parseInt(model.date.split('-')[2], 10);\n        var classNames = [];\n\n        classNames.push(config.classname('weekday-grid-date'));\n        if (model.isToday) {\n            classNames.push(config.classname('weekday-grid-date-decorator'));\n        }\n\n        return '<span class=\"' + classNames.join(' ') + '\">' + date + '</span>';\n    },\n\n    'monthGridHeaderExceed-tmpl': function(hiddenSchedules) {\n        var className = config.classname('weekday-grid-more-schedules');\n\n        return '<span class=\"' + className + '\">' + hiddenSchedules + ' more</span>';\n    },\n\n    'monthGridFooter-tmpl': function() {\n        return '';\n    },\n\n    /* eslint no-unused-vars: 0 */\n    'monthGridFooterExceed-tmpl': function(hiddenSchedules) {\n        return '';\n    },\n\n    'monthDayname-tmpl': function(model) {\n        return model.label;\n    },\n\n    'weekDayname-tmpl': function(model) {\n        var classDate = config.classname('dayname-date');\n        var className = config.classname('dayname-name');\n\n        return '<span class=\"' + classDate + '\">' + model.date + '</span>&nbsp;&nbsp;<span class=\"' + className + '\">' + model.dayName + '</span>';\n    },\n\n    'weekGridFooterExceed-tmpl': function(hiddenSchedules) {\n        return '+' + hiddenSchedules;\n    },\n\n    'dayGridTitle-tmpl': function(viewName) {\n        var tmpl = Handlebars.helpers[viewName + 'Title-tmpl'];\n        if (tmpl) {\n            return tmpl(viewName);\n        }\n\n        return viewName;\n    },\n\n    'schedule-tmpl': function(model) {\n        var tmpl = Handlebars.helpers[model.category + '-tmpl'];\n        if (tmpl) {\n            return tmpl(model);\n        }\n\n        return '';\n    },\n\n    'collapseBtnTitle-tmpl': function() {\n        var iconName = config.classname('icon');\n        var closeIconName = config.classname('ic-arrow-solid-top');\n\n        return '<span class=\"' + iconName + ' ' + closeIconName + '\"></span>';\n    },\n\n    'timezoneDisplayLabel-tmpl': function(timezoneOffset, displayLabel) {\n        var gmt, hour, minutes;\n\n        if (util.isUndefined(displayLabel)) {\n            gmt = timezoneOffset < 0 ? '-' : '+';\n            hour = Math.abs(parseInt(timezoneOffset / SIXTY_MINUTES, 10));\n            minutes = Math.abs(timezoneOffset % SIXTY_MINUTES);\n            displayLabel = gmt + datetime.leadingZero(hour, 2) + ':' + datetime.leadingZero(minutes, 2);\n        }\n\n        return displayLabel;\n    },\n\n    'timegridDisplayPrimayTime-tmpl': function(time) {\n        /* TODO: 삭제 필요 (will be deprecated) */\n        return Handlebars.helpers['timegridDisplayPrimaryTime-tmpl'](time);\n    },\n\n    'timegridDisplayPrimaryTime-tmpl': function(time) {\n        var hour = time.hour;\n        var meridiem = hour >= 12 ? 'pm' : 'am';\n\n        if (hour > 12) {\n            hour = hour - 12;\n        }\n\n        return hour + ' ' + meridiem;\n    },\n\n    'timegridDisplayTime-tmpl': function(time) {\n        return datetime.leadingZero(time.hour, 2) + ':' + datetime.leadingZero(time.minutes, 2);\n    },\n\n    'timegridCurrentTime-tmpl': function(timezone) {\n        var templates = [];\n\n        if (timezone.dateDifference) {\n            templates.push('[' + timezone.dateDifferenceSign + timezone.dateDifference + ']<br>');\n        }\n\n        templates.push(datetime.format(timezone.hourmarker, 'HH:mm'));\n\n        return templates.join('');\n    },\n\n    'popupIsAllDay-tmpl': function() {\n        return 'All day';\n    },\n\n    'popupStateFree-tmpl': function() {\n        return 'Free';\n    },\n\n    'popupStateBusy-tmpl': function() {\n        return 'Busy';\n    },\n\n    'titlePlaceholder-tmpl': function() {\n        return 'Subject';\n    },\n\n    'locationPlaceholder-tmpl': function() {\n        return 'Location';\n    },\n\n    'startDatePlaceholder-tmpl': function() {\n        return 'Start date';\n    },\n\n    'endDatePlaceholder-tmpl': function() {\n        return 'End date';\n    },\n    'popupSave-tmpl': function() {\n        return 'Save';\n    },\n    'popupUpdate-tmpl': function() {\n        return 'Update';\n    },\n    'popupDetailDate-tmpl': function(isAllDay, start, end) {\n        var isSameDate = datetime.isSameDate(start, end);\n        var endFormat = (isSameDate ? '' : 'YYYY.MM.DD ') + 'hh:mm tt';\n\n        if (isAllDay) {\n            return datetime.format(start, 'YYYY.MM.DD') + (isSameDate ? '' : ' - ' + datetime.format(end, 'YYYY.MM.DD'));\n        }\n\n        return (datetime.format(start, 'YYYY.MM.DD hh:mm tt') + ' - ' + datetime.format(end, endFormat));\n    },\n    'popupDetailLocation-tmpl': function(schedule) {\n        return schedule.location;\n    },\n    'popupDetailUser-tmpl': function(schedule) {\n        return (schedule.attendees || []).join(', ');\n    },\n    'popupDetailState-tmpl': function(schedule) {\n        return schedule.state || 'Busy';\n    },\n    'popupDetailRepeat-tmpl': function(schedule) {\n        return schedule.recurrenceRule;\n    },\n    'popupDetailBody-tmpl': function(schedule) {\n        return schedule.body;\n    },\n    'popupEdit-tmpl': function() {\n        return 'Edit';\n    },\n    'popupDelete-tmpl': function() {\n        return 'Delete';\n    }\n};\n\n/**\n * Get CSS syntax for element size\n * @param {number} value - size value to apply element\n * @param {string} postfix - postfix string ex) px, em, %\n * @param {string} prefix - property name ex) width, height\n * @returns {string} CSS syntax\n */\nfunction getElSize(value, postfix, prefix) {\n    prefix = prefix || '';\n    if (util.isNumber(value)) {\n        return prefix + ':' + value + postfix;\n    }\n\n    return prefix + ':auto';\n}\n\n/**\n * Get element left based on narrowWeekend\n * @param {object} viewModel - view model\n * @param {Array} grids - dates information\n * @returns {number} element left\n */\nfunction getElLeft(viewModel, grids) {\n    return grids[viewModel.left] ? grids[viewModel.left].left : 0;\n}\n\n/**\n * Get element width based on narrowWeekend\n * @param {object} viewModel - view model\n * @param {Array} grids - dates information\n * @returns {number} element width\n */\nfunction getElWidth(viewModel, grids) {\n    var width = 0;\n    var i = 0;\n    var length = grids.length;\n    var left;\n    for (; i < viewModel.width; i += 1) {\n        left = (viewModel.left + i) % length;\n        left += parseInt((viewModel.left + i) / length, 10);\n        if (left < length) {\n            width += grids[left] ? grids[left].width : 0;\n        }\n    }\n\n    return width;\n}\n\nHandlebars.registerHelper(helpers);\n"],"sourceRoot":""}
\ No newline at end of file
diff --git a/admin/js/vendors/tui.color-picker/tui-color-picker.css b/admin/js/vendors/tui.color-picker/tui-color-picker.css
new file mode 100644 (file)
index 0000000..1342bac
--- /dev/null
@@ -0,0 +1,154 @@
+/*!
+ * TOAST UI Color Picker
+ * @version 2.2.6
+ * @author NHN FE Development Team <dl_javascript@nhn.com>
+ * @license MIT
+ */
+.tui-colorpicker-clearfix {
+  zoom: 1;
+}
+.tui-colorpicker-clearfix:after {
+  content: '';
+  display: block;
+  clear: both;
+}
+.tui-colorpicker-vml {
+  behavior: url("#default#VML");
+  display: block;
+}
+.tui-colorpicker-container {
+  width: 152px;
+}
+.tui-colorpicker-palette-container {
+  width: 152px;
+}
+.tui-colorpicker-palette-container ul {
+  width: 152px;
+  margin: 0px;
+  padding: 0px;
+}
+.tui-colorpicker-palette-container li {
+  float: left;
+  margin: 0;
+  padding: 0 3px 3px 0;
+  list-style: none;
+}
+.tui-colorpicker-palette-button {
+  display: block;
+  border: none;
+  overflow: hidden;
+  outline: none;
+  margin: 0px;
+  padding: 0px;
+  width: 16px;
+  height: 16px;
+  border: 1px solid #ccc;
+  cursor: pointer;
+}
+.tui-colorpicker-palette-button.tui-colorpicker-selected {
+  border: 2px solid #000;
+}
+.tui-colorpicker-palette-button.tui-colorpicker-color-transparent {
+  barckground-repeat: repeat;
+  background-repeat: no-repeat;
+  background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA0AAAAOCAYAAAD0f5bSAAABfGlDQ1BJQ0MgUHJvZmlsZQAAKJFjYGAqSSwoyGFhYGDIzSspCnJ3UoiIjFJgv8PAzcDDIMRgxSCemFxc4BgQ4MOAE3y7xsAIoi/rgsxK8/x506a1fP4WNq+ZclYlOrj1gQF3SmpxMgMDIweQnZxSnJwLZOcA2TrJBUUlQPYMIFu3vKQAxD4BZIsUAR0IZN8BsdMh7A8gdhKYzcQCVhMS5AxkSwDZAkkQtgaInQ5hW4DYyRmJKUC2B8guiBvAgNPDRcHcwFLXkYC7SQa5OaUwO0ChxZOaFxoMcgcQyzB4MLgwKDCYMxgwWDLoMjiWpFaUgBQ65xdUFmWmZ5QoOAJDNlXBOT+3oLQktUhHwTMvWU9HwcjA0ACkDhRnEKM/B4FNZxQ7jxDLX8jAYKnMwMDcgxBLmsbAsH0PA4PEKYSYyjwGBn5rBoZt5woSixLhDmf8xkKIX5xmbARh8zgxMLDe+///sxoDA/skBoa/E////73o//+/i4H2A+PsQA4AJHdp4IxrEg8AAAGbaVRYdFhNTDpjb20uYWRvYmUueG1wAAAAAAA8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJYTVAgQ29yZSA1LjQuMCI+CiAgIDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIj4KICAgICAgICAgPGV4aWY6UGl4ZWxYRGltZW5zaW9uPjEzPC9leGlmOlBpeGVsWERpbWVuc2lvbj4KICAgICAgICAgPGV4aWY6UGl4ZWxZRGltZW5zaW9uPjE0PC9leGlmOlBpeGVsWURpbWVuc2lvbj4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+CghrN1AAAABzSURBVCgVldKxEYAgDAXQD5VOpLuwgi4jlrTMqF00oOd5Aia/CcV/F4oYOgNlrLjvVyCEVJchBjEC25538PeaWTzRMBLxvIL7UZwFwL06qoA6aoAy+gFfJABvJAQPUoCMlICRRd8BzgHzJL4ok9aJ67l4AK9AxVKhHryUAAAAAElFTkSuQmCC");
+}
+.tui-colorpicker-palette-hex {
+  font-family: monospace;
+  display: inline-block;
+  *display: inline;
+  zoom: 1;
+  width: 60px;
+  vertical-align: middle;
+}
+.tui-colorpicker-palette-preview {
+  display: inline-block;
+  *display: inline;
+  zoom: 1;
+  width: 12px;
+  height: 12px;
+  border: 1px solid #ccc;
+  border: 1px solid #ccc;
+  vertical-align: middle;
+  overflow: hidden;
+}
+.tui-colorpicker-palette-toggle-slider {
+  display: inline-block;
+  *display: inline;
+  zoom: 1;
+  vertical-align: middle;
+  float: right;
+}
+.tui-colorpicker-slider-container {
+  margin: 5px 0 0 0;
+  height: 122px;
+  zoom: 1;
+}
+.tui-colorpicker-slider-container:after {
+  content: '';
+  display: block;
+  clear: both;
+}
+.tui-colorpicker-slider-left {
+  float: left;
+  width: 120px;
+  height: 120px;
+}
+.tui-colorpicker-slider-right {
+  float: right;
+  width: 32px;
+  height: 120px;
+}
+.tui-colorpicker-svg {
+  display: block;
+}
+.tui-colorpicker-slider-handle {
+  position: absolute;
+  overflow: visible;
+  top: 0;
+  left: 0;
+  width: 1px;
+  height: 1px;
+  z-index: 2;
+  opacity: 0.9;
+}
+.tui-colorpicker-svg-slider {
+  width: 120px;
+  height: 120px;
+  border: 1px solid #ccc;
+  overflow: hidden;
+}
+.tui-colorpicker-vml-slider {
+  position: relative;
+  width: 120px;
+  height: 120px;
+  border: 1px solid #ccc;
+  overflow: hidden;
+}
+.tui-colorpicker-vml-slider-bg {
+  position: absolute;
+  margin: -1px 0 0 -1px;
+  top: 0;
+  left: 0;
+  width: 122px;
+  height: 122px;
+}
+.tui-colorpicker-svg-huebar {
+  float: right;
+  width: 18px;
+  height: 120px;
+  border: 1px solid #ccc;
+  overflow: visible;
+}
+.tui-colorpicker-vml-huebar {
+  width: 32px;
+  position: relative;
+}
+.tui-colorpicker-vml-huebar-bg {
+  position: absolute;
+  top: 0;
+  right: 0;
+  width: 18px;
+  height: 121px;
+}
+
diff --git a/admin/js/vendors/tui.color-picker/tui-color-picker.js b/admin/js/vendors/tui.color-picker/tui-color-picker.js
new file mode 100644 (file)
index 0000000..bd31d8a
--- /dev/null
@@ -0,0 +1,5226 @@
+/*!
+ * TOAST UI Color Picker
+ * @version 2.2.6
+ * @author NHN FE Development Team <dl_javascript@nhn.com>
+ * @license MIT
+ */
+(function webpackUniversalModuleDefinition(root, factory) {
+       if(typeof exports === 'object' && typeof module === 'object')
+               module.exports = factory();
+       else if(typeof define === 'function' && define.amd)
+               define([], factory);
+       else if(typeof exports === 'object')
+               exports["colorPicker"] = factory();
+       else
+               root["tui"] = root["tui"] || {}, root["tui"]["colorPicker"] = factory();
+})(window, function() {
+return /******/ (function(modules) { // webpackBootstrap
+/******/       // The module cache
+/******/       var installedModules = {};
+/******/
+/******/       // The require function
+/******/       function __webpack_require__(moduleId) {
+/******/
+/******/               // Check if module is in cache
+/******/               if(installedModules[moduleId]) {
+/******/                       return installedModules[moduleId].exports;
+/******/               }
+/******/               // Create a new module (and put it into the cache)
+/******/               var module = installedModules[moduleId] = {
+/******/                       i: moduleId,
+/******/                       l: false,
+/******/                       exports: {}
+/******/               };
+/******/
+/******/               // Execute the module function
+/******/               modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/               // Flag the module as loaded
+/******/               module.l = true;
+/******/
+/******/               // Return the exports of the module
+/******/               return module.exports;
+/******/       }
+/******/
+/******/
+/******/       // expose the modules object (__webpack_modules__)
+/******/       __webpack_require__.m = modules;
+/******/
+/******/       // expose the module cache
+/******/       __webpack_require__.c = installedModules;
+/******/
+/******/       // define getter function for harmony exports
+/******/       __webpack_require__.d = function(exports, name, getter) {
+/******/               if(!__webpack_require__.o(exports, name)) {
+/******/                       Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/               }
+/******/       };
+/******/
+/******/       // define __esModule on exports
+/******/       __webpack_require__.r = function(exports) {
+/******/               if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/                       Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/               }
+/******/               Object.defineProperty(exports, '__esModule', { value: true });
+/******/       };
+/******/
+/******/       // create a fake namespace object
+/******/       // mode & 1: value is a module id, require it
+/******/       // mode & 2: merge all properties of value into the ns
+/******/       // mode & 4: return value when already ns object
+/******/       // mode & 8|1: behave like require
+/******/       __webpack_require__.t = function(value, mode) {
+/******/               if(mode & 1) value = __webpack_require__(value);
+/******/               if(mode & 8) return value;
+/******/               if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/               var ns = Object.create(null);
+/******/               __webpack_require__.r(ns);
+/******/               Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/               if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/               return ns;
+/******/       };
+/******/
+/******/       // getDefaultExport function for compatibility with non-harmony modules
+/******/       __webpack_require__.n = function(module) {
+/******/               var getter = module && module.__esModule ?
+/******/                       function getDefault() { return module['default']; } :
+/******/                       function getModuleExports() { return module; };
+/******/               __webpack_require__.d(getter, 'a', getter);
+/******/               return getter;
+/******/       };
+/******/
+/******/       // Object.prototype.hasOwnProperty.call
+/******/       __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/       // __webpack_public_path__
+/******/       __webpack_require__.p = "dist";
+/******/
+/******/
+/******/       // Load entry module and return exports
+/******/       return __webpack_require__(__webpack_require__.s = 33);
+/******/ })
+/************************************************************************/
+/******/ ([
+/* 0 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/**
+ * @fileoverview Extend the target object from other objects.
+ * @author NHN FE Development Lab <dl_javascript@nhn.com>
+ */
+
+
+
+/**
+ * @module object
+ */
+
+/**
+ * Extend the target object from other objects.
+ * @param {object} target - Object that will be extended
+ * @param {...object} objects - Objects as sources
+ * @returns {object} Extended object
+ * @memberof module:object
+ */
+function extend(target, objects) { // eslint-disable-line no-unused-vars
+  var hasOwnProp = Object.prototype.hasOwnProperty;
+  var source, prop, i, len;
+
+  for (i = 1, len = arguments.length; i < len; i += 1) {
+    source = arguments[i];
+    for (prop in source) {
+      if (hasOwnProp.call(source, prop)) {
+        target[prop] = source[prop];
+      }
+    }
+  }
+
+  return target;
+}
+
+module.exports = extend;
+
+
+/***/ }),
+/* 1 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/**
+ * @fileoverview Check whether the given variable is an instance of Array or not.
+ * @author NHN FE Development Lab <dl_javascript@nhn.com>
+ */
+
+
+
+/**
+ * Check whether the given variable is an instance of Array or not.
+ * If the given variable is an instance of Array, return true.
+ * @param {*} obj - Target for checking
+ * @returns {boolean} Is array instance?
+ * @memberof module:type
+ */
+function isArray(obj) {
+  return obj instanceof Array;
+}
+
+module.exports = isArray;
+
+
+/***/ }),
+/* 2 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/**
+ * @fileoverview Execute the provided callback once for each property of object(or element of array) which actually exist.
+ * @author NHN FE Development Lab <dl_javascript@nhn.com>
+ */
+
+
+
+var isArray = __webpack_require__(1);
+var forEachArray = __webpack_require__(6);
+var forEachOwnProperties = __webpack_require__(7);
+
+/**
+ * @module collection
+ */
+
+/**
+ * Execute the provided callback once for each property of object(or element of array) which actually exist.
+ * If the object is Array-like object(ex-arguments object), It needs to transform to Array.(see 'ex2' of example).
+ * If the callback function returns false, the loop will be stopped.
+ * Callback function(iteratee) is invoked with three arguments:
+ *  1) The value of the property(or The value of the element)
+ *  2) The name of the property(or The index of the element)
+ *  3) The object being traversed
+ * @param {Object} obj The object that will be traversed
+ * @param {function} iteratee Callback function
+ * @param {Object} [context] Context(this) of callback function
+ * @memberof module:collection
+ * @example
+ * var forEach = require('tui-code-snippet/collection/forEach'); // node, commonjs
+ *
+ * var sum = 0;
+ *
+ * forEach([1,2,3], function(value){
+ *     sum += value;
+ * });
+ * alert(sum); // 6
+ *
+ * // In case of Array-like object
+ * var array = Array.prototype.slice.call(arrayLike); // change to array
+ * forEach(array, function(value){
+ *     sum += value;
+ * });
+ */
+function forEach(obj, iteratee, context) {
+  if (isArray(obj)) {
+    forEachArray(obj, iteratee, context);
+  } else {
+    forEachOwnProperties(obj, iteratee, context);
+  }
+}
+
+module.exports = forEach;
+
+
+/***/ }),
+/* 3 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/**
+ * @fileoverview Check whether the given variable is undefined or not.
+ * @author NHN FE Development Lab <dl_javascript@nhn.com>
+ */
+
+
+
+/**
+ * Check whether the given variable is undefined or not.
+ * If the given variable is undefined, returns true.
+ * @param {*} obj - Target for checking
+ * @returns {boolean} Is undefined?
+ * @memberof module:type
+ */
+function isUndefined(obj) {
+  return obj === undefined; // eslint-disable-line no-undefined
+}
+
+module.exports = isUndefined;
+
+
+/***/ }),
+/* 4 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/**
+ * @fileoverview Utils for ColorPicker component
+ * @author NHN. FE dev Lab. <dl_javascript@nhn.com>
+ */
+
+
+var browser = __webpack_require__(22);
+
+var forEach = __webpack_require__(2);
+
+var forEachArray = __webpack_require__(6);
+
+var forEachOwnProperties = __webpack_require__(7);
+
+var sendHostname = __webpack_require__(37);
+
+var currentId = 0;
+/**
+ * Utils
+ * @namespace util
+ * @ignore
+ */
+
+var utils = {
+  /**
+   * Get the number of properties in the object.
+   * @param {Object} obj - object
+   * @returns {number}
+   */
+  getLength: function (obj) {
+    var length = 0;
+    forEachOwnProperties(obj, function () {
+      length += 1;
+    });
+    return length;
+  },
+
+  /**
+   * Constructs a new array by executing the provided callback function.
+   * @param {Object|Array} obj - object or array to be traversed
+   * @param {function} iteratee - callback function
+   * @param {Object} context - context of callback function
+   * @returns {Array}
+   */
+  map: function (obj, iteratee, context) {
+    var result = [];
+    forEach(obj, function () {
+      result.push(iteratee.apply(context || null, arguments));
+    });
+    return result;
+  },
+
+  /**
+   * Construct a new array with elements that pass the test by the provided callback function.
+   * @param {Array|NodeList|Arguments} arr - array to be traversed
+   * @param {function} iteratee - callback function
+   * @param {Object} context - context of callback function
+   * @returns {Array}
+   */
+  filter: function (arr, iteratee, context) {
+    var result = [];
+    forEachArray(arr, function (elem) {
+      if (iteratee.apply(context || null, arguments)) {
+        result.push(elem);
+      }
+    });
+    return result;
+  },
+
+  /**
+   * Create an unique id for a color-picker instance.
+   * @returns {number}
+   */
+  generateId: function () {
+    currentId += 1;
+    return currentId;
+  },
+
+  /**
+   * True when browser is below IE8.
+   */
+  isOldBrowser: function () {
+    return browser.msie && browser.version < 9;
+  }(),
+
+  /**
+   * send host name
+   * @ignore
+   */
+  sendHostName: function () {
+    sendHostname('color-picker', 'UA-129987462-1');
+  }
+};
+module.exports = utils;
+
+/***/ }),
+/* 5 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/* eslint-disable complexity */
+/**
+ * @fileoverview Returns the first index at which a given element can be found in the array.
+ * @author NHN FE Development Lab <dl_javascript@nhn.com>
+ */
+
+
+
+var isArray = __webpack_require__(1);
+
+/**
+ * @module array
+ */
+
+/**
+ * Returns the first index at which a given element can be found in the array
+ * from start index(default 0), or -1 if it is not present.
+ * It compares searchElement to elements of the Array using strict equality
+ * (the same method used by the ===, or triple-equals, operator).
+ * @param {*} searchElement Element to locate in the array
+ * @param {Array} array Array that will be traversed.
+ * @param {number} startIndex Start index in array for searching (default 0)
+ * @returns {number} the First index at which a given element, or -1 if it is not present
+ * @memberof module:array
+ * @example
+ * var inArray = require('tui-code-snippet/array/inArray'); // node, commonjs
+ *
+ * var arr = ['one', 'two', 'three', 'four'];
+ * var idx1 = inArray('one', arr, 3); // -1
+ * var idx2 = inArray('one', arr); // 0
+ */
+function inArray(searchElement, array, startIndex) {
+  var i;
+  var length;
+  startIndex = startIndex || 0;
+
+  if (!isArray(array)) {
+    return -1;
+  }
+
+  if (Array.prototype.indexOf) {
+    return Array.prototype.indexOf.call(array, searchElement, startIndex);
+  }
+
+  length = array.length;
+  for (i = startIndex; startIndex >= 0 && i < length; i += 1) {
+    if (array[i] === searchElement) {
+      return i;
+    }
+  }
+
+  return -1;
+}
+
+module.exports = inArray;
+
+
+/***/ }),
+/* 6 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/**
+ * @fileoverview Execute the provided callback once for each element present in the array(or Array-like object) in ascending order.
+ * @author NHN FE Development Lab <dl_javascript@nhn.com>
+ */
+
+
+
+/**
+ * Execute the provided callback once for each element present
+ * in the array(or Array-like object) in ascending order.
+ * If the callback function returns false, the loop will be stopped.
+ * Callback function(iteratee) is invoked with three arguments:
+ *  1) The value of the element
+ *  2) The index of the element
+ *  3) The array(or Array-like object) being traversed
+ * @param {Array|Arguments|NodeList} arr The array(or Array-like object) that will be traversed
+ * @param {function} iteratee Callback function
+ * @param {Object} [context] Context(this) of callback function
+ * @memberof module:collection
+ * @example
+ * var forEachArray = require('tui-code-snippet/collection/forEachArray'); // node, commonjs
+ *
+ * var sum = 0;
+ *
+ * forEachArray([1,2,3], function(value){
+ *     sum += value;
+ * });
+ * alert(sum); // 6
+ */
+function forEachArray(arr, iteratee, context) {
+  var index = 0;
+  var len = arr.length;
+
+  context = context || null;
+
+  for (; index < len; index += 1) {
+    if (iteratee.call(context, arr[index], index, arr) === false) {
+      break;
+    }
+  }
+}
+
+module.exports = forEachArray;
+
+
+/***/ }),
+/* 7 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/**
+ * @fileoverview Execute the provided callback once for each property of object which actually exist.
+ * @author NHN FE Development Lab <dl_javascript@nhn.com>
+ */
+
+
+
+/**
+ * Execute the provided callback once for each property of object which actually exist.
+ * If the callback function returns false, the loop will be stopped.
+ * Callback function(iteratee) is invoked with three arguments:
+ *  1) The value of the property
+ *  2) The name of the property
+ *  3) The object being traversed
+ * @param {Object} obj The object that will be traversed
+ * @param {function} iteratee  Callback function
+ * @param {Object} [context] Context(this) of callback function
+ * @memberof module:collection
+ * @example
+ * var forEachOwnProperties = require('tui-code-snippet/collection/forEachOwnProperties'); // node, commonjs
+ *
+ * var sum = 0;
+ *
+ * forEachOwnProperties({a:1,b:2,c:3}, function(value){
+ *     sum += value;
+ * });
+ * alert(sum); // 6
+ */
+function forEachOwnProperties(obj, iteratee, context) {
+  var key;
+
+  context = context || null;
+
+  for (key in obj) {
+    if (obj.hasOwnProperty(key)) {
+      if (iteratee.call(context, obj[key], key, obj) === false) {
+        break;
+      }
+    }
+  }
+}
+
+module.exports = forEachOwnProperties;
+
+
+/***/ }),
+/* 8 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/**
+ * @fileoverview The base class of views.
+ * @author NHN. FE Development Team <dl_javascript@nhn.com>
+ */
+
+
+var addClass = __webpack_require__(39);
+
+var isFunction = __webpack_require__(13);
+
+var isNumber = __webpack_require__(41);
+
+var isUndefined = __webpack_require__(3);
+
+var domUtil = __webpack_require__(9);
+
+var Collection = __webpack_require__(19);
+
+var util = __webpack_require__(4);
+/**
+ * Base class of views.
+ *
+ * All views create own container element inside supplied container element.
+ * @constructor
+ * @param {options} options The object for describe view's specs.
+ * @param {HTMLElement} container Default container element for view. you can use this element for this.container syntax.
+ * @ignore
+ */
+
+
+function View(options, container) {
+  var id = util.generateId();
+  options = options || {};
+
+  if (isUndefined(container)) {
+    container = domUtil.appendHTMLElement('div');
+  }
+
+  addClass(container, 'tui-view-' + id);
+  /**
+   * unique id
+   * @type {number}
+   */
+
+  this.id = id;
+  /**
+   * base element of view.
+   * @type {HTMLDIVElement}
+   */
+
+  this.container = container;
+  /**
+   * child views.
+   * @type {Collection}
+   */
+
+  this.childs = new Collection(function (view) {
+    return view.id;
+  });
+  /**
+   * parent view instance.
+   * @type {View}
+   */
+
+  this.parent = null;
+}
+/**
+ * Add child views.
+ * @param {View} view The view instance to add.
+ * @param {function} [fn] Function for invoke before add. parent view class is supplied first arguments.
+ */
+
+
+View.prototype.addChild = function (view, fn) {
+  if (fn) {
+    fn.call(view, this);
+  } // add parent view
+
+
+  view.parent = this;
+  this.childs.add(view);
+};
+/**
+ * Remove added child view.
+ * @param {(number|View)} id View id or instance itself to remove.
+ * @param {function} [fn] Function for invoke before remove. parent view class is supplied first arguments.
+ */
+
+
+View.prototype.removeChild = function (id, fn) {
+  var view = isNumber(id) ? this.childs.items[id] : id;
+
+  if (fn) {
+    fn.call(view, this);
+  }
+
+  this.childs.remove(view.id);
+};
+/**
+ * Render view recursively.
+ */
+
+
+View.prototype.render = function () {
+  this.childs.each(function (childView) {
+    childView.render();
+  });
+};
+/**
+ * Invoke function recursively.
+ * @param {function} fn - function to invoke child view recursively
+ * @param {boolean} [skipThis=false] - set true then skip invoke with this(root) view.
+ */
+
+
+View.prototype.recursive = function (fn, skipThis) {
+  if (!isFunction(fn)) {
+    return;
+  }
+
+  if (!skipThis) {
+    fn(this);
+  }
+
+  this.childs.each(function (childView) {
+    childView.recursive(fn);
+  });
+};
+/**
+ * Resize view recursively to parent.
+ */
+
+
+View.prototype.resize = function () {
+  var args = Array.prototype.slice.call(arguments);
+  var parent = this.parent;
+
+  while (parent) {
+    if (isFunction(parent._onResize)) {
+      parent._onResize.apply(parent, args);
+    }
+
+    parent = parent.parent;
+  }
+};
+/**
+ * Invoking method before destroying.
+ */
+
+
+View.prototype._beforeDestroy = function () {};
+/**
+ * Clear properties
+ */
+
+
+View.prototype._destroy = function () {
+  this._beforeDestroy();
+
+  this.container.innerHTML = '';
+  this.id = this.parent = this.childs = this.container = null;
+};
+/**
+ * Destroy child view recursively.
+ * @param {boolean} isChildView - Whether it is the child view or not
+ */
+
+
+View.prototype.destroy = function (isChildView) {
+  if (this.childs) {
+    this.childs.each(function (childView) {
+      childView.destroy(true);
+
+      childView._destroy();
+    });
+    this.childs.clear();
+  }
+
+  if (isChildView) {
+    return;
+  }
+
+  this._destroy();
+};
+/**
+ * Calculate view's container element bound.
+ * @returns {object} The bound of container element.
+ */
+
+
+View.prototype.getViewBound = function () {
+  var bound = this.container.getBoundingClientRect();
+  return {
+    x: bound.left,
+    y: bound.top,
+    width: bound.right - bound.left,
+    height: bound.bottom - bound.top
+  };
+};
+
+module.exports = View;
+
+/***/ }),
+/* 9 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/**
+ * @fileoverview Utility modules for manipulate DOM elements.
+ * @author NHN. FE Development Team <dl_javascript@nhn.com>
+ */
+
+
+var domUtil = {
+  /**
+   * Create DOM element and return it.
+   * @param {string} tagName Tag name to append.
+   * @param {HTMLElement} [container] HTML element will be parent to created element.
+   * if not supplied, will use **document.body**
+   * @param {string} [className] Design class names to appling created element.
+   * @returns {HTMLElement} HTML element created.
+   */
+  appendHTMLElement: function (tagName, container, className) {
+    var el = document.createElement(tagName);
+    el.className = className || '';
+
+    if (container) {
+      container.appendChild(el);
+    } else {
+      document.body.appendChild(el);
+    }
+
+    return el;
+  }
+};
+module.exports = domUtil;
+
+/***/ }),
+/* 10 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/**
+ * @fileoverview This module provides some functions for custom events. And it is implemented in the observer design pattern.
+ * @author NHN FE Development Lab <dl_javascript@nhn.com>
+ */
+
+
+
+var extend = __webpack_require__(0);
+var isExisty = __webpack_require__(20);
+var isString = __webpack_require__(11);
+var isObject = __webpack_require__(21);
+var isArray = __webpack_require__(1);
+var isFunction = __webpack_require__(13);
+var forEach = __webpack_require__(2);
+
+var R_EVENTNAME_SPLIT = /\s+/g;
+
+/**
+ * @class
+ * @example
+ * // node, commonjs
+ * var CustomEvents = require('tui-code-snippet/customEvents/customEvents');
+ */
+function CustomEvents() {
+  /**
+     * @type {HandlerItem[]}
+     */
+  this.events = null;
+
+  /**
+     * only for checking specific context event was binded
+     * @type {object[]}
+     */
+  this.contexts = null;
+}
+
+/**
+ * Mixin custom events feature to specific constructor
+ * @param {function} func - constructor
+ * @example
+ * var CustomEvents = require('tui-code-snippet/customEvents/customEvents'); // node, commonjs
+ *
+ * var model;
+ * function Model() {
+ *     this.name = '';
+ * }
+ * CustomEvents.mixin(Model);
+ *
+ * model = new Model();
+ * model.on('change', function() { this.name = 'model'; }, this);
+ * model.fire('change');
+ * alert(model.name); // 'model';
+ */
+CustomEvents.mixin = function(func) {
+  extend(func.prototype, CustomEvents.prototype);
+};
+
+/**
+ * Get HandlerItem object
+ * @param {function} handler - handler function
+ * @param {object} [context] - context for handler
+ * @returns {HandlerItem} HandlerItem object
+ * @private
+ */
+CustomEvents.prototype._getHandlerItem = function(handler, context) {
+  var item = {handler: handler};
+
+  if (context) {
+    item.context = context;
+  }
+
+  return item;
+};
+
+/**
+ * Get event object safely
+ * @param {string} [eventName] - create sub event map if not exist.
+ * @returns {(object|array)} event object. if you supplied `eventName`
+ *  parameter then make new array and return it
+ * @private
+ */
+CustomEvents.prototype._safeEvent = function(eventName) {
+  var events = this.events;
+  var byName;
+
+  if (!events) {
+    events = this.events = {};
+  }
+
+  if (eventName) {
+    byName = events[eventName];
+
+    if (!byName) {
+      byName = [];
+      events[eventName] = byName;
+    }
+
+    events = byName;
+  }
+
+  return events;
+};
+
+/**
+ * Get context array safely
+ * @returns {array} context array
+ * @private
+ */
+CustomEvents.prototype._safeContext = function() {
+  var context = this.contexts;
+
+  if (!context) {
+    context = this.contexts = [];
+  }
+
+  return context;
+};
+
+/**
+ * Get index of context
+ * @param {object} ctx - context that used for bind custom event
+ * @returns {number} index of context
+ * @private
+ */
+CustomEvents.prototype._indexOfContext = function(ctx) {
+  var context = this._safeContext();
+  var index = 0;
+
+  while (context[index]) {
+    if (ctx === context[index][0]) {
+      return index;
+    }
+
+    index += 1;
+  }
+
+  return -1;
+};
+
+/**
+ * Memorize supplied context for recognize supplied object is context or
+ *  name: handler pair object when off()
+ * @param {object} ctx - context object to memorize
+ * @private
+ */
+CustomEvents.prototype._memorizeContext = function(ctx) {
+  var context, index;
+
+  if (!isExisty(ctx)) {
+    return;
+  }
+
+  context = this._safeContext();
+  index = this._indexOfContext(ctx);
+
+  if (index > -1) {
+    context[index][1] += 1;
+  } else {
+    context.push([ctx, 1]);
+  }
+};
+
+/**
+ * Forget supplied context object
+ * @param {object} ctx - context object to forget
+ * @private
+ */
+CustomEvents.prototype._forgetContext = function(ctx) {
+  var context, contextIndex;
+
+  if (!isExisty(ctx)) {
+    return;
+  }
+
+  context = this._safeContext();
+  contextIndex = this._indexOfContext(ctx);
+
+  if (contextIndex > -1) {
+    context[contextIndex][1] -= 1;
+
+    if (context[contextIndex][1] <= 0) {
+      context.splice(contextIndex, 1);
+    }
+  }
+};
+
+/**
+ * Bind event handler
+ * @param {(string|{name:string, handler:function})} eventName - custom
+ *  event name or an object {eventName: handler}
+ * @param {(function|object)} [handler] - handler function or context
+ * @param {object} [context] - context for binding
+ * @private
+ */
+CustomEvents.prototype._bindEvent = function(eventName, handler, context) {
+  var events = this._safeEvent(eventName);
+  this._memorizeContext(context);
+  events.push(this._getHandlerItem(handler, context));
+};
+
+/**
+ * Bind event handlers
+ * @param {(string|{name:string, handler:function})} eventName - custom
+ *  event name or an object {eventName: handler}
+ * @param {(function|object)} [handler] - handler function or context
+ * @param {object} [context] - context for binding
+ * //-- #1. Get Module --//
+ * var CustomEvents = require('tui-code-snippet/customEvents/customEvents'); // node, commonjs
+ *
+ * //-- #2. Use method --//
+ * // # 2.1 Basic Usage
+ * CustomEvents.on('onload', handler);
+ *
+ * // # 2.2 With context
+ * CustomEvents.on('onload', handler, myObj);
+ *
+ * // # 2.3 Bind by object that name, handler pairs
+ * CustomEvents.on({
+ *     'play': handler,
+ *     'pause': handler2
+ * });
+ *
+ * // # 2.4 Bind by object that name, handler pairs with context object
+ * CustomEvents.on({
+ *     'play': handler
+ * }, myObj);
+ */
+CustomEvents.prototype.on = function(eventName, handler, context) {
+  var self = this;
+
+  if (isString(eventName)) {
+    // [syntax 1, 2]
+    eventName = eventName.split(R_EVENTNAME_SPLIT);
+    forEach(eventName, function(name) {
+      self._bindEvent(name, handler, context);
+    });
+  } else if (isObject(eventName)) {
+    // [syntax 3, 4]
+    context = handler;
+    forEach(eventName, function(func, name) {
+      self.on(name, func, context);
+    });
+  }
+};
+
+/**
+ * Bind one-shot event handlers
+ * @param {(string|{name:string,handler:function})} eventName - custom
+ *  event name or an object {eventName: handler}
+ * @param {function|object} [handler] - handler function or context
+ * @param {object} [context] - context for binding
+ */
+CustomEvents.prototype.once = function(eventName, handler, context) {
+  var self = this;
+
+  if (isObject(eventName)) {
+    context = handler;
+    forEach(eventName, function(func, name) {
+      self.once(name, func, context);
+    });
+
+    return;
+  }
+
+  function onceHandler() { // eslint-disable-line require-jsdoc
+    handler.apply(context, arguments);
+    self.off(eventName, onceHandler, context);
+  }
+
+  this.on(eventName, onceHandler, context);
+};
+
+/**
+ * Splice supplied array by callback result
+ * @param {array} arr - array to splice
+ * @param {function} predicate - function return boolean
+ * @private
+ */
+CustomEvents.prototype._spliceMatches = function(arr, predicate) {
+  var i = 0;
+  var len;
+
+  if (!isArray(arr)) {
+    return;
+  }
+
+  for (len = arr.length; i < len; i += 1) {
+    if (predicate(arr[i]) === true) {
+      arr.splice(i, 1);
+      len -= 1;
+      i -= 1;
+    }
+  }
+};
+
+/**
+ * Get matcher for unbind specific handler events
+ * @param {function} handler - handler function
+ * @returns {function} handler matcher
+ * @private
+ */
+CustomEvents.prototype._matchHandler = function(handler) {
+  var self = this;
+
+  return function(item) {
+    var needRemove = handler === item.handler;
+
+    if (needRemove) {
+      self._forgetContext(item.context);
+    }
+
+    return needRemove;
+  };
+};
+
+/**
+ * Get matcher for unbind specific context events
+ * @param {object} context - context
+ * @returns {function} object matcher
+ * @private
+ */
+CustomEvents.prototype._matchContext = function(context) {
+  var self = this;
+
+  return function(item) {
+    var needRemove = context === item.context;
+
+    if (needRemove) {
+      self._forgetContext(item.context);
+    }
+
+    return needRemove;
+  };
+};
+
+/**
+ * Get matcher for unbind specific hander, context pair events
+ * @param {function} handler - handler function
+ * @param {object} context - context
+ * @returns {function} handler, context matcher
+ * @private
+ */
+CustomEvents.prototype._matchHandlerAndContext = function(handler, context) {
+  var self = this;
+
+  return function(item) {
+    var matchHandler = (handler === item.handler);
+    var matchContext = (context === item.context);
+    var needRemove = (matchHandler && matchContext);
+
+    if (needRemove) {
+      self._forgetContext(item.context);
+    }
+
+    return needRemove;
+  };
+};
+
+/**
+ * Unbind event by event name
+ * @param {string} eventName - custom event name to unbind
+ * @param {function} [handler] - handler function
+ * @private
+ */
+CustomEvents.prototype._offByEventName = function(eventName, handler) {
+  var self = this;
+  var andByHandler = isFunction(handler);
+  var matchHandler = self._matchHandler(handler);
+
+  eventName = eventName.split(R_EVENTNAME_SPLIT);
+
+  forEach(eventName, function(name) {
+    var handlerItems = self._safeEvent(name);
+
+    if (andByHandler) {
+      self._spliceMatches(handlerItems, matchHandler);
+    } else {
+      forEach(handlerItems, function(item) {
+        self._forgetContext(item.context);
+      });
+
+      self.events[name] = [];
+    }
+  });
+};
+
+/**
+ * Unbind event by handler function
+ * @param {function} handler - handler function
+ * @private
+ */
+CustomEvents.prototype._offByHandler = function(handler) {
+  var self = this;
+  var matchHandler = this._matchHandler(handler);
+
+  forEach(this._safeEvent(), function(handlerItems) {
+    self._spliceMatches(handlerItems, matchHandler);
+  });
+};
+
+/**
+ * Unbind event by object(name: handler pair object or context object)
+ * @param {object} obj - context or {name: handler} pair object
+ * @param {function} handler - handler function
+ * @private
+ */
+CustomEvents.prototype._offByObject = function(obj, handler) {
+  var self = this;
+  var matchFunc;
+
+  if (this._indexOfContext(obj) < 0) {
+    forEach(obj, function(func, name) {
+      self.off(name, func);
+    });
+  } else if (isString(handler)) {
+    matchFunc = this._matchContext(obj);
+
+    self._spliceMatches(this._safeEvent(handler), matchFunc);
+  } else if (isFunction(handler)) {
+    matchFunc = this._matchHandlerAndContext(handler, obj);
+
+    forEach(this._safeEvent(), function(handlerItems) {
+      self._spliceMatches(handlerItems, matchFunc);
+    });
+  } else {
+    matchFunc = this._matchContext(obj);
+
+    forEach(this._safeEvent(), function(handlerItems) {
+      self._spliceMatches(handlerItems, matchFunc);
+    });
+  }
+};
+
+/**
+ * Unbind custom events
+ * @param {(string|object|function)} eventName - event name or context or
+ *  {name: handler} pair object or handler function
+ * @param {(function)} handler - handler function
+ * @example
+ * //-- #1. Get Module --//
+ * var CustomEvents = require('tui-code-snippet/customEvents/customEvents'); // node, commonjs
+ *
+ * //-- #2. Use method --//
+ * // # 2.1 off by event name
+ * CustomEvents.off('onload');
+ *
+ * // # 2.2 off by event name and handler
+ * CustomEvents.off('play', handler);
+ *
+ * // # 2.3 off by handler
+ * CustomEvents.off(handler);
+ *
+ * // # 2.4 off by context
+ * CustomEvents.off(myObj);
+ *
+ * // # 2.5 off by context and handler
+ * CustomEvents.off(myObj, handler);
+ *
+ * // # 2.6 off by context and event name
+ * CustomEvents.off(myObj, 'onload');
+ *
+ * // # 2.7 off by an Object.<string, function> that is {eventName: handler}
+ * CustomEvents.off({
+ *   'play': handler,
+ *   'pause': handler2
+ * });
+ *
+ * // # 2.8 off the all events
+ * CustomEvents.off();
+ */
+CustomEvents.prototype.off = function(eventName, handler) {
+  if (isString(eventName)) {
+    // [syntax 1, 2]
+    this._offByEventName(eventName, handler);
+  } else if (!arguments.length) {
+    // [syntax 8]
+    this.events = {};
+    this.contexts = [];
+  } else if (isFunction(eventName)) {
+    // [syntax 3]
+    this._offByHandler(eventName);
+  } else if (isObject(eventName)) {
+    // [syntax 4, 5, 6]
+    this._offByObject(eventName, handler);
+  }
+};
+
+/**
+ * Fire custom event
+ * @param {string} eventName - name of custom event
+ */
+CustomEvents.prototype.fire = function(eventName) {  // eslint-disable-line
+  this.invoke.apply(this, arguments);
+};
+
+/**
+ * Fire a event and returns the result of operation 'boolean AND' with all
+ *  listener's results.
+ *
+ * So, It is different from {@link CustomEvents#fire}.
+ *
+ * In service code, use this as a before event in component level usually
+ *  for notifying that the event is cancelable.
+ * @param {string} eventName - Custom event name
+ * @param {...*} data - Data for event
+ * @returns {boolean} The result of operation 'boolean AND'
+ * @example
+ * var map = new Map();
+ * map.on({
+ *     'beforeZoom': function() {
+ *         // It should cancel the 'zoom' event by some conditions.
+ *         if (that.disabled && this.getState()) {
+ *             return false;
+ *         }
+ *         return true;
+ *     }
+ * });
+ *
+ * if (this.invoke('beforeZoom')) {    // check the result of 'beforeZoom'
+ *     // if true,
+ *     // doSomething
+ * }
+ */
+CustomEvents.prototype.invoke = function(eventName) {
+  var events, args, index, item;
+
+  if (!this.hasListener(eventName)) {
+    return true;
+  }
+
+  events = this._safeEvent(eventName);
+  args = Array.prototype.slice.call(arguments, 1);
+  index = 0;
+
+  while (events[index]) {
+    item = events[index];
+
+    if (item.handler.apply(item.context, args) === false) {
+      return false;
+    }
+
+    index += 1;
+  }
+
+  return true;
+};
+
+/**
+ * Return whether at least one of the handlers is registered in the given
+ *  event name.
+ * @param {string} eventName - Custom event name
+ * @returns {boolean} Is there at least one handler in event name?
+ */
+CustomEvents.prototype.hasListener = function(eventName) {
+  return this.getListenerLength(eventName) > 0;
+};
+
+/**
+ * Return a count of events registered.
+ * @param {string} eventName - Custom event name
+ * @returns {number} number of event
+ */
+CustomEvents.prototype.getListenerLength = function(eventName) {
+  var events = this._safeEvent(eventName);
+
+  return events.length;
+};
+
+module.exports = CustomEvents;
+
+
+/***/ }),
+/* 11 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/**
+ * @fileoverview Check whether the given variable is a string or not.
+ * @author NHN FE Development Lab <dl_javascript@nhn.com>
+ */
+
+
+
+/**
+ * Check whether the given variable is a string or not.
+ * If the given variable is a string, return true.
+ * @param {*} obj - Target for checking
+ * @returns {boolean} Is string?
+ * @memberof module:type
+ */
+function isString(obj) {
+  return typeof obj === 'string' || obj instanceof String;
+}
+
+module.exports = isString;
+
+
+/***/ }),
+/* 12 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/**
+ * @fileoverview Utility methods to manipulate colors
+ * @author NHN. FE Development Team <dl_javascript@nhn.com>
+ */
+
+
+var hexRX = /(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i;
+var colorUtil = {
+  /**
+   * pad left zero characters.
+   * @param {number} number number value to pad zero.
+   * @param {number} length pad length to want.
+   * @returns {string} padded string.
+   */
+  leadingZero: function (number, length) {
+    var zero = '';
+    var i = 0;
+
+    if ((number + '').length > length) {
+      return number + '';
+    }
+
+    for (; i < length - 1; i += 1) {
+      zero += '0';
+    }
+
+    return (zero + number).slice(length * -1);
+  },
+
+  /**
+   * Check validate of hex string value is RGB
+   * @param {string} str - rgb hex string
+   * @returns {boolean} return true when supplied str is valid RGB hex string
+   */
+  isValidRGB: function (str) {
+    return hexRX.test(str);
+  },
+  // @license RGB <-> HSV conversion utilities based off of http://www.cs.rit.edu/~ncs/color/t_convert.html
+
+  /**
+   * Convert color hex string to rgb number array
+   * @param {string} hexStr - hex string
+   * @returns {number[]} rgb numbers
+   */
+  hexToRGB: function (hexStr) {
+    var r, g, b;
+
+    if (!colorUtil.isValidRGB(hexStr)) {
+      return false;
+    }
+
+    hexStr = hexStr.substring(1);
+    r = parseInt(hexStr.substr(0, 2), 16);
+    g = parseInt(hexStr.substr(2, 2), 16);
+    b = parseInt(hexStr.substr(4, 2), 16);
+    return [r, g, b];
+  },
+
+  /**
+   * Convert rgb number to hex string
+   * @param {number} r - red
+   * @param {number} g - green
+   * @param {number} b - blue
+   * @returns {string|boolean} return false when supplied rgb number is not valid. otherwise, converted hex string
+   */
+  rgbToHEX: function (r, g, b) {
+    var hexStr = '#' + colorUtil.leadingZero(r.toString(16), 2) + colorUtil.leadingZero(g.toString(16), 2) + colorUtil.leadingZero(b.toString(16), 2);
+
+    if (colorUtil.isValidRGB(hexStr)) {
+      return hexStr;
+    }
+
+    return false;
+  },
+
+  /**
+   * Convert rgb number to HSV value
+   * @param {number} r - red
+   * @param {number} g - green
+   * @param {number} b - blue
+   * @returns {number[]} hsv value
+   */
+  rgbToHSV: function (r, g, b) {
+    var max, min, h, s, v, d;
+    r /= 255;
+    g /= 255;
+    b /= 255;
+    max = Math.max(r, g, b);
+    min = Math.min(r, g, b);
+    v = max;
+    d = max - min;
+    s = max === 0 ? 0 : d / max;
+
+    if (max === min) {
+      h = 0;
+    } else {
+      switch (max) {
+        case r:
+          h = (g - b) / d + (g < b ? 6 : 0);
+          break;
+
+        case g:
+          h = (b - r) / d + 2;
+          break;
+
+        case b:
+          h = (r - g) / d + 4;
+          break;
+        // no default
+      }
+
+      h /= 6;
+    }
+
+    return [Math.round(h * 360), Math.round(s * 100), Math.round(v * 100)];
+  },
+
+  /**
+   * Convert HSV number to RGB
+   * @param {number} h - hue
+   * @param {number} s - saturation
+   * @param {number} v - value
+   * @returns {number[]} rgb value
+   */
+  hsvToRGB: function (h, s, v) {
+    var r, g, b;
+    var i;
+    var f, p, q, t;
+    h = Math.max(0, Math.min(360, h));
+    s = Math.max(0, Math.min(100, s));
+    v = Math.max(0, Math.min(100, v));
+    s /= 100;
+    v /= 100;
+
+    if (s === 0) {
+      // Achromatic (grey)
+      r = g = b = v;
+      return [Math.round(r * 255), Math.round(g * 255), Math.round(b * 255)];
+    }
+
+    h /= 60; // sector 0 to 5
+
+    i = Math.floor(h);
+    f = h - i; // factorial part of h
+
+    p = v * (1 - s);
+    q = v * (1 - s * f);
+    t = v * (1 - s * (1 - f));
+
+    switch (i) {
+      case 0:
+        r = v;
+        g = t;
+        b = p;
+        break;
+
+      case 1:
+        r = q;
+        g = v;
+        b = p;
+        break;
+
+      case 2:
+        r = p;
+        g = v;
+        b = t;
+        break;
+
+      case 3:
+        r = p;
+        g = q;
+        b = v;
+        break;
+
+      case 4:
+        r = t;
+        g = p;
+        b = v;
+        break;
+
+      default:
+        r = v;
+        g = p;
+        b = q;
+        break;
+    }
+
+    return [Math.round(r * 255), Math.round(g * 255), Math.round(b * 255)];
+  }
+};
+module.exports = colorUtil;
+
+/***/ }),
+/* 13 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/**
+ * @fileoverview Check whether the given variable is a function or not.
+ * @author NHN FE Development Lab <dl_javascript@nhn.com>
+ */
+
+
+
+/**
+ * Check whether the given variable is a function or not.
+ * If the given variable is a function, return true.
+ * @param {*} obj - Target for checking
+ * @returns {boolean} Is function?
+ * @memberof module:type
+ */
+function isFunction(obj) {
+  return obj instanceof Function;
+}
+
+module.exports = isFunction;
+
+
+/***/ }),
+/* 14 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/**
+ * @fileoverview Bind DOM events
+ * @author NHN FE Development Lab <dl_javascript@nhn.com>
+ */
+
+
+
+var isString = __webpack_require__(11);
+var forEach = __webpack_require__(2);
+
+var safeEvent = __webpack_require__(26);
+
+/**
+ * Bind DOM events.
+ * @param {HTMLElement} element - element to bind events
+ * @param {(string|object)} types - Space splitted events names or eventName:handler object
+ * @param {(function|object)} handler - handler function or context for handler method
+ * @param {object} [context] context - context for handler method.
+ * @memberof module:domEvent
+ * @example
+ * var div = document.querySelector('div');
+ * 
+ * // Bind one event to an element.
+ * on(div, 'click', toggle);
+ * 
+ * // Bind multiple events with a same handler to multiple elements at once.
+ * // Use event names splitted by a space.
+ * on(div, 'mouseenter mouseleave', changeColor);
+ * 
+ * // Bind multiple events with different handlers to an element at once.
+ * // Use an object which of key is an event name and value is a handler function.
+ * on(div, {
+ *   keydown: highlight,
+ *   keyup: dehighlight
+ * });
+ * 
+ * // Set a context for handler method.
+ * var name = 'global';
+ * var repository = {name: 'CodeSnippet'};
+ * on(div, 'drag', function() {
+ *  console.log(this.name);
+ * }, repository);
+ * // Result when you drag a div: "CodeSnippet"
+ */
+function on(element, types, handler, context) {
+  if (isString(types)) {
+    forEach(types.split(/\s+/g), function(type) {
+      bindEvent(element, type, handler, context);
+    });
+
+    return;
+  }
+
+  forEach(types, function(func, type) {
+    bindEvent(element, type, func, handler);
+  });
+}
+
+/**
+ * Bind DOM events
+ * @param {HTMLElement} element - element to bind events
+ * @param {string} type - events name
+ * @param {function} handler - handler function or context for handler method
+ * @param {object} [context] context - context for handler method.
+ * @private
+ */
+function bindEvent(element, type, handler, context) {
+  /**
+     * Event handler
+     * @param {Event} e - event object
+     */
+  function eventHandler(e) {
+    handler.call(context || element, e || window.event);
+  }
+
+  if ('addEventListener' in element) {
+    element.addEventListener(type, eventHandler);
+  } else if ('attachEvent' in element) {
+    element.attachEvent('on' + type, eventHandler);
+  }
+  memorizeHandler(element, type, handler, eventHandler);
+}
+
+/**
+ * Memorize DOM event handler for unbinding.
+ * @param {HTMLElement} element - element to bind events
+ * @param {string} type - events name
+ * @param {function} handler - handler function that user passed at on() use
+ * @param {function} wrappedHandler - handler function that wrapped by domevent for implementing some features
+ * @private
+ */
+function memorizeHandler(element, type, handler, wrappedHandler) {
+  var events = safeEvent(element, type);
+  var existInEvents = false;
+
+  forEach(events, function(obj) {
+    if (obj.handler === handler) {
+      existInEvents = true;
+
+      return false;
+    }
+
+    return true;
+  });
+
+  if (!existInEvents) {
+    events.push({
+      handler: handler,
+      wrappedHandler: wrappedHandler
+    });
+  }
+}
+
+module.exports = on;
+
+
+/***/ }),
+/* 15 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/**
+ * @fileoverview Prevent default action
+ * @author NHN FE Development Lab <dl_javascript@nhn.com>
+ */
+
+
+
+/**
+ * Prevent default action
+ * @param {Event} e - event object
+ * @memberof module:domEvent
+ */
+function preventDefault(e) {
+  if (e.preventDefault) {
+    e.preventDefault();
+
+    return;
+  }
+
+  e.returnValue = false;
+}
+
+module.exports = preventDefault;
+
+
+/***/ }),
+/* 16 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/**
+ * @fileoverview Convert kebab-case
+ * @author NHN FE Development Lab <dl_javascript@nhn.com>
+ */
+
+
+
+/**
+ * Convert kebab-case
+ * @param {string} key - string to be converted to Kebab-case
+ * @private
+ */
+function convertToKebabCase(key) {
+  return key.replace(/([A-Z])/g, function(match) {
+    return '-' + match.toLowerCase();
+  });
+}
+
+module.exports = convertToKebabCase;
+
+
+/***/ }),
+/* 17 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/**
+ * @fileoverview Unbind DOM events
+ * @author NHN FE Development Lab <dl_javascript@nhn.com>
+ */
+
+
+
+var isString = __webpack_require__(11);
+var forEach = __webpack_require__(2);
+
+var safeEvent = __webpack_require__(26);
+
+/**
+ * Unbind DOM events
+ * If a handler function is not passed, remove all events of that type.
+ * @param {HTMLElement} element - element to unbind events
+ * @param {(string|object)} types - Space splitted events names or eventName:handler object
+ * @param {function} [handler] - handler function
+ * @memberof module:domEvent
+ * @example
+ * // Following the example of domEvent#on
+ * 
+ * // Unbind one event from an element.
+ * off(div, 'click', toggle);
+ * 
+ * // Unbind multiple events with a same handler from multiple elements at once.
+ * // Use event names splitted by a space.
+ * off(element, 'mouseenter mouseleave', changeColor);
+ * 
+ * // Unbind multiple events with different handlers from an element at once.
+ * // Use an object which of key is an event name and value is a handler function.
+ * off(div, {
+ *   keydown: highlight,
+ *   keyup: dehighlight
+ * });
+ * 
+ * // Unbind events without handlers.
+ * off(div, 'drag');
+ */
+function off(element, types, handler) {
+  if (isString(types)) {
+    forEach(types.split(/\s+/g), function(type) {
+      unbindEvent(element, type, handler);
+    });
+
+    return;
+  }
+
+  forEach(types, function(func, type) {
+    unbindEvent(element, type, func);
+  });
+}
+
+/**
+ * Unbind DOM events
+ * If a handler function is not passed, remove all events of that type.
+ * @param {HTMLElement} element - element to unbind events
+ * @param {string} type - events name
+ * @param {function} [handler] - handler function
+ * @private
+ */
+function unbindEvent(element, type, handler) {
+  var events = safeEvent(element, type);
+  var index;
+
+  if (!handler) {
+    forEach(events, function(item) {
+      removeHandler(element, type, item.wrappedHandler);
+    });
+    events.splice(0, events.length);
+  } else {
+    forEach(events, function(item, idx) {
+      if (handler === item.handler) {
+        removeHandler(element, type, item.wrappedHandler);
+        index = idx;
+
+        return false;
+      }
+
+      return true;
+    });
+    events.splice(index, 1);
+  }
+}
+
+/**
+ * Remove an event handler
+ * @param {HTMLElement} element - An element to remove an event
+ * @param {string} type - event type
+ * @param {function} handler - event handler
+ * @private
+ */
+function removeHandler(element, type, handler) {
+  if ('removeEventListener' in element) {
+    element.removeEventListener(type, handler);
+  } else if ('detachEvent' in element) {
+    element.detachEvent('on' + type, handler);
+  }
+}
+
+module.exports = off;
+
+
+/***/ }),
+/* 18 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/**
+ * @fileoverview Provide a simple inheritance in prototype-oriented.
+ * @author NHN FE Development Lab <dl_javascript@nhn.com>
+ */
+
+
+
+var createObject = __webpack_require__(50);
+
+/**
+ * Provide a simple inheritance in prototype-oriented.
+ * Caution :
+ *  Don't overwrite the prototype of child constructor.
+ *
+ * @param {function} subType Child constructor
+ * @param {function} superType Parent constructor
+ * @memberof module:inheritance
+ * @example
+ * var inherit = require('tui-code-snippet/inheritance/inherit'); // node, commonjs
+ *
+ * // Parent constructor
+ * function Animal(leg) {
+ *     this.leg = leg;
+ * }
+ * Animal.prototype.growl = function() {
+ *     // ...
+ * };
+ *
+ * // Child constructor
+ * function Person(name) {
+ *     this.name = name;
+ * }
+ *
+ * // Inheritance
+ * inherit(Person, Animal);
+ *
+ * // After this inheritance, please use only the extending of property.
+ * // Do not overwrite prototype.
+ * Person.prototype.walk = function(direction) {
+ *     // ...
+ * };
+ */
+function inherit(subType, superType) {
+  var prototype = createObject(superType.prototype);
+  prototype.constructor = subType;
+  subType.prototype = prototype;
+}
+
+module.exports = inherit;
+
+
+/***/ }),
+/* 19 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/**
+ * @fileoverview Common collections.
+ * @author NHN. FE Development Team <dl_javascript@nhn.com>
+ */
+
+
+var forEachArray = __webpack_require__(6);
+
+var forEachOwnProperties = __webpack_require__(7);
+
+var extend = __webpack_require__(0);
+
+var isArray = __webpack_require__(1);
+
+var isExisty = __webpack_require__(20);
+
+var isFunction = __webpack_require__(13);
+
+var isObject = __webpack_require__(21);
+
+var util = __webpack_require__(4);
+
+var slice = Array.prototype.slice;
+/**
+ * Common collection.
+ *
+ * It need function for get model's unique id.
+ *
+ * if the function is not supplied then it use default function {@link Collection#getItemID}
+ * @constructor
+ * @param {function} [getItemIDFn] function for get model's id.
+ * @ignore
+ */
+
+function Collection(getItemIDFn) {
+  /**
+   * @type {object.<string, *>}
+   */
+  this.items = {};
+  /**
+   * @type {number}
+   */
+
+  this.length = 0;
+
+  if (isFunction(getItemIDFn)) {
+    /**
+     * @type {function}
+     */
+    this.getItemID = getItemIDFn;
+  }
+}
+/**********
+ * static props
+ **********/
+
+/**
+ * Combind supplied function filters and condition.
+ * @param {...function} filters - function filters
+ * @returns {function} combined filter
+ */
+
+
+Collection.and = function (filters) {
+  var cnt;
+  filters = slice.call(arguments);
+  cnt = filters.length;
+  return function (item) {
+    var i = 0;
+
+    for (; i < cnt; i += 1) {
+      if (!filters[i].call(null, item)) {
+        return false;
+      }
+    }
+
+    return true;
+  };
+};
+/**
+ * Combine multiple function filters with OR clause.
+ * @param {...function} filters - function filters
+ * @returns {function} combined filter
+ */
+
+
+Collection.or = function (filters) {
+  var cnt;
+  filters = slice.call(arguments);
+  cnt = filters.length;
+  return function (item) {
+    var i = 1;
+    var result = filters[0].call(null, item);
+
+    for (; i < cnt; i += 1) {
+      result = result || filters[i].call(null, item);
+    }
+
+    return result;
+  };
+};
+/**
+ * Merge several collections.
+ *
+ * You can\'t merge collections different _getEventID functions. Take case of use.
+ * @param {...Collection} collections collection arguments to merge
+ * @returns {Collection} merged collection.
+ */
+
+
+Collection.merge = function (firstCollection) {
+  var newItems = {};
+  var merged = new Collection(firstCollection.getItemID);
+  forEachArray(arguments, function (col) {
+    extend(newItems, col.items);
+  });
+  merged.items = newItems;
+  merged.length = util.getLength(merged.items);
+  return merged;
+};
+/**********
+ * prototype props
+ **********/
+
+/**
+ * get model's unique id.
+ * @param {object} item model instance.
+ * @returns {number} model unique id.
+ */
+
+
+Collection.prototype.getItemID = function (item) {
+  return item._id + '';
+};
+/**
+ * add models.
+ * @param {...*} item models to add this collection.
+ */
+
+
+Collection.prototype.add = function (item) {
+  var id, ownItems;
+
+  if (arguments.length > 1) {
+    forEachArray(slice.call(arguments), function (o) {
+      this.add(o);
+    }, this);
+    return;
+  }
+
+  id = this.getItemID(item);
+  ownItems = this.items;
+
+  if (!ownItems[id]) {
+    this.length += 1;
+  }
+
+  ownItems[id] = item;
+};
+/**
+ * remove models.
+ * @param {...(object|string|number)} id model instance or unique id to delete.
+ * @returns {array} deleted model list.
+ */
+
+
+Collection.prototype.remove = function (id) {
+  var removed = [];
+  var ownItems, itemToRemove;
+
+  if (!this.length) {
+    return removed;
+  }
+
+  if (arguments.length > 1) {
+    removed = util.map(slice.call(arguments), function (id) {
+      return this.remove(id);
+    }, this);
+    return removed;
+  }
+
+  ownItems = this.items;
+
+  if (isObject(id)) {
+    id = this.getItemID(id);
+  }
+
+  if (!ownItems[id]) {
+    return removed;
+  }
+
+  this.length -= 1;
+  itemToRemove = ownItems[id];
+  delete ownItems[id];
+  return itemToRemove;
+};
+/**
+ * remove all models in collection.
+ */
+
+
+Collection.prototype.clear = function () {
+  this.items = {};
+  this.length = 0;
+};
+/**
+ * check collection has specific model.
+ * @param {(object|string|number|function)} id model instance or id or filter function to check
+ * @returns {boolean} is has model?
+ */
+
+
+Collection.prototype.has = function (id) {
+  var isFilter, has;
+
+  if (!this.length) {
+    return false;
+  }
+
+  isFilter = isFunction(id);
+  has = false;
+
+  if (isFilter) {
+    this.each(function (item) {
+      if (id(item) === true) {
+        has = true;
+        return false;
+      }
+
+      return true;
+    });
+  } else {
+    id = isObject(id) ? this.getItemID(id) : id;
+    has = isExisty(this.items[id]);
+  }
+
+  return has;
+};
+/**
+ * invoke callback when model exist in collection.
+ * @param {(string|number)} id model unique id.
+ * @param {function} fn the callback.
+ * @param {*} [context] callback context.
+ */
+
+
+Collection.prototype.doWhenHas = function (id, fn, context) {
+  var item = this.items[id];
+
+  if (!isExisty(item)) {
+    return;
+  }
+
+  fn.call(context || this, item);
+};
+/**
+ * Search model. and return new collection.
+ * @param {function} filter filter function.
+ * @returns {Collection} new collection with filtered models.
+ * @example
+ * collection.find(function(item) {
+ *     return item.edited === true;
+ * });
+ *
+ * function filter1(item) {
+ *     return item.edited === false;
+ * }
+ *
+ * function filter2(item) {
+ *     return item.disabled === false;
+ * }
+ *
+ * collection.find(Collection.and(filter1, filter2));
+ *
+ * collection.find(Collection.or(filter1, filter2));
+ */
+
+
+Collection.prototype.find = function (filter) {
+  var result = new Collection();
+
+  if (this.hasOwnProperty('getItemID')) {
+    result.getItemID = this.getItemID;
+  }
+
+  this.each(function (item) {
+    if (filter(item) === true) {
+      result.add(item);
+    }
+  });
+  return result;
+};
+/**
+ * Group element by specific key values.
+ *
+ * if key parameter is function then invoke it and use returned value.
+ * @param {(string|number|function|array)} key key property or getter function. if string[] supplied, create each collection before grouping.
+ * @param {function} [groupFunc] - function that return each group's key
+ * @returns {object.<string, Collection>} grouped object
+ * @example
+ *
+ * // pass `string`, `number`, `boolean` type value then group by property value.
+ * collection.groupBy('gender');    // group by 'gender' property value.
+ * collection.groupBy(50);          // group by '50' property value.
+ *
+ * // pass `function` then group by return value. each invocation `function` is called with `(item)`.
+ * collection.groupBy(function(item) {
+ *     if (item.score > 60) {
+ *         return 'pass';
+ *     }
+ *     return 'fail';
+ * });
+ *
+ * // pass `array` with first arguments then create each collection before grouping.
+ * collection.groupBy(['go', 'ruby', 'javascript']);
+ * // result: { 'go': empty Collection, 'ruby': empty Collection, 'javascript': empty Collection }
+ *
+ * // can pass `function` with `array` then group each elements.
+ * collection.groupBy(['go', 'ruby', 'javascript'], function(item) {
+ *     if (item.isFast) {
+ *         return 'go';
+ *     }
+ *
+ *     return item.name;
+ * });
+ */
+
+
+Collection.prototype.groupBy = function (key, groupFunc) {
+  var result = {};
+  var keyIsFunc = isFunction(key);
+  var getItemIDFn = this.getItemID;
+  var collection, baseValue;
+
+  if (isArray(key)) {
+    forEachArray(key, function (k) {
+      result[k + ''] = new Collection(getItemIDFn);
+    });
+
+    if (!groupFunc) {
+      return result;
+    }
+
+    key = groupFunc;
+    keyIsFunc = true;
+  }
+
+  this.each(function (item) {
+    if (keyIsFunc) {
+      baseValue = key(item);
+    } else {
+      baseValue = item[key];
+
+      if (isFunction(baseValue)) {
+        baseValue = baseValue.apply(item);
+      }
+    }
+
+    collection = result[baseValue];
+
+    if (!collection) {
+      collection = result[baseValue] = new Collection(getItemIDFn);
+    }
+
+    collection.add(item);
+  });
+  return result;
+};
+/**
+ * Return single item in collection.
+ *
+ * Returned item is inserted in this collection firstly.
+ * @returns {object} item.
+ */
+
+
+Collection.prototype.single = function () {
+  var result;
+  this.each(function (item) {
+    result = item;
+    return false;
+  }, this);
+  return result;
+};
+/**
+ * sort a basis of supplied compare function.
+ * @param {function} compareFunction compareFunction
+ * @returns {array} sorted array.
+ */
+
+
+Collection.prototype.sort = function (compareFunction) {
+  var arr = [];
+  this.each(function (item) {
+    arr.push(item);
+  });
+
+  if (isFunction(compareFunction)) {
+    arr = arr.sort(compareFunction);
+  }
+
+  return arr;
+};
+/**
+ * iterate each model element.
+ *
+ * when iteratee return false then break the loop.
+ * @param {function} iteratee iteratee(item, index, items)
+ * @param {*} [context] context
+ */
+
+
+Collection.prototype.each = function (iteratee, context) {
+  forEachOwnProperties(this.items, iteratee, context || this);
+};
+/**
+ * return new array with collection items.
+ * @returns {array} new array.
+ */
+
+
+Collection.prototype.toArray = function () {
+  if (!this.length) {
+    return [];
+  }
+
+  return util.map(this.items, function (item) {
+    return item;
+  });
+};
+
+module.exports = Collection;
+
+/***/ }),
+/* 20 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/**
+ * @fileoverview Check whether the given variable is existing or not.
+ * @author NHN FE Development Lab <dl_javascript@nhn.com>
+ */
+
+
+
+var isUndefined = __webpack_require__(3);
+var isNull = __webpack_require__(36);
+
+/**
+ * Check whether the given variable is existing or not.
+ * If the given variable is not null and not undefined, returns true.
+ * @param {*} param - Target for checking
+ * @returns {boolean} Is existy?
+ * @memberof module:type
+ * @example
+ * var isExisty = require('tui-code-snippet/type/isExisty'); // node, commonjs
+ *
+ * isExisty(''); //true
+ * isExisty(0); //true
+ * isExisty([]); //true
+ * isExisty({}); //true
+ * isExisty(null); //false
+ * isExisty(undefined); //false
+*/
+function isExisty(param) {
+  return !isUndefined(param) && !isNull(param);
+}
+
+module.exports = isExisty;
+
+
+/***/ }),
+/* 21 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/**
+ * @fileoverview Check whether the given variable is an object or not.
+ * @author NHN FE Development Lab <dl_javascript@nhn.com>
+ */
+
+
+
+/**
+ * Check whether the given variable is an object or not.
+ * If the given variable is an object, return true.
+ * @param {*} obj - Target for checking
+ * @returns {boolean} Is object?
+ * @memberof module:type
+ */
+function isObject(obj) {
+  return obj === Object(obj);
+}
+
+module.exports = isObject;
+
+
+/***/ }),
+/* 22 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/**
+ * @fileoverview This module detects the kind of well-known browser and version.
+ * @author NHN FE Development Lab <dl_javascript@nhn.com>
+ */
+
+
+
+/**
+ * Browser module
+ * @module browser
+ */
+
+/**
+ * This object has an information that indicate the kind of browser.
+ * The list below is a detectable browser list.
+ *  - ie8 ~ ie11
+ *  - chrome
+ *  - firefox
+ *  - safari
+ *  - edge
+ * @memberof module:browser
+ * @example
+ * var browser = require('tui-code-snippet/browser/browser'); // node, commonjs
+ *
+ * browser.chrome === true; // chrome
+ * browser.firefox === true; // firefox
+ * browser.safari === true; // safari
+ * browser.msie === true; // IE
+ * browser.edge === true; // edge
+ * browser.others === true; // other browser
+ * browser.version; // browser version
+ */
+var browser = {
+  chrome: false,
+  firefox: false,
+  safari: false,
+  msie: false,
+  edge: false,
+  others: false,
+  version: 0
+};
+
+if (window && window.navigator) {
+  detectBrowser();
+}
+
+/**
+ * Detect the browser.
+ * @private
+ */
+function detectBrowser() {
+  var nav = window.navigator;
+  var appName = nav.appName.replace(/\s/g, '_');
+  var userAgent = nav.userAgent;
+
+  var rIE = /MSIE\s([0-9]+[.0-9]*)/;
+  var rIE11 = /Trident.*rv:11\./;
+  var rEdge = /Edge\/(\d+)\./;
+  var versionRegex = {
+    firefox: /Firefox\/(\d+)\./,
+    chrome: /Chrome\/(\d+)\./,
+    safari: /Version\/([\d.]+).*Safari\/(\d+)/
+  };
+
+  var key, tmp;
+
+  var detector = {
+    Microsoft_Internet_Explorer: function() { // eslint-disable-line camelcase
+      var detectedVersion = userAgent.match(rIE);
+
+      if (detectedVersion) { // ie8 ~ ie10
+        browser.msie = true;
+        browser.version = parseFloat(detectedVersion[1]);
+      } else { // no version information
+        browser.others = true;
+      }
+    },
+    Netscape: function() { // eslint-disable-line complexity
+      var detected = false;
+
+      if (rIE11.exec(userAgent)) {
+        browser.msie = true;
+        browser.version = 11;
+        detected = true;
+      } else if (rEdge.exec(userAgent)) {
+        browser.edge = true;
+        browser.version = userAgent.match(rEdge)[1];
+        detected = true;
+      } else {
+        for (key in versionRegex) {
+          if (versionRegex.hasOwnProperty(key)) {
+            tmp = userAgent.match(versionRegex[key]);
+            if (tmp && tmp.length > 1) { // eslint-disable-line max-depth
+              browser[key] = detected = true;
+              browser.version = parseFloat(tmp[1] || 0);
+              break;
+            }
+          }
+        }
+      }
+      if (!detected) {
+        browser.others = true;
+      }
+    }
+  };
+
+  var fn = detector[appName];
+
+  if (fn) {
+    detector[appName]();
+  }
+}
+
+module.exports = browser;
+
+
+/***/ }),
+/* 23 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/**
+ * @fileoverview Get HTML element's design classes.
+ * @author NHN FE Development Lab <dl_javascript@nhn.com>
+ */
+
+
+
+var isUndefined = __webpack_require__(3);
+
+/**
+ * Get HTML element's design classes.
+ * @param {(HTMLElement|SVGElement)} element target element
+ * @returns {string} element css class name
+ * @memberof module:domUtil
+ */
+function getClass(element) {
+  if (!element || !element.className) {
+    return '';
+  }
+
+  if (isUndefined(element.className.baseVal)) {
+    return element.className;
+  }
+
+  return element.className.baseVal;
+}
+
+module.exports = getClass;
+
+
+/***/ }),
+/* 24 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/* WEBPACK VAR INJECTION */(function(global) {/**
+ * @fileoverview General drag handler
+ * @author NHN. FE Development Team <dl_javascript@nhn.com>
+ */
+
+
+var CustomEvents = __webpack_require__(10);
+
+var disableTextSelection = __webpack_require__(42);
+
+var enableTextSelection = __webpack_require__(44);
+
+var getMouseButton = __webpack_require__(47);
+
+var getTarget = __webpack_require__(28);
+
+var off = __webpack_require__(17);
+
+var on = __webpack_require__(14);
+
+var preventDefault = __webpack_require__(15);
+
+var extend = __webpack_require__(0);
+/**
+ * @constructor
+ * @mixes CustomEvents
+ * @param {object} options - options for drag handler
+ * @param {number} [options.distance=10] - distance in pixels after mouse must move before dragging should start
+ * @param {HTMLElement} container - container element to bind drag events
+ * @ignore
+ */
+
+
+function Drag(options, container) {
+  on(container, 'mousedown', this._onMouseDown, this);
+  this.options = extend({
+    distance: 10
+  }, options);
+  /**
+   * @type {HTMLElement}
+   */
+
+  this.container = container;
+  /**
+   * @type {boolean}
+   */
+
+  this._isMoved = false;
+  /**
+   * dragging distance in pixel between mousedown and firing dragStart events
+   * @type {number}
+   */
+
+  this._distance = 0;
+  /**
+   * @type {boolean}
+   */
+
+  this._dragStartFired = false;
+  /**
+   * @type {object}
+   */
+
+  this._dragStartEventData = null;
+}
+/**
+ * Destroy method.
+ */
+
+
+Drag.prototype.destroy = function () {
+  off(this.container, 'mousedown', this._onMouseDown);
+  this.options = this.container = this._isMoved = this._distance = this._dragStartFired = this._dragStartEventData = null;
+};
+/**
+ * Toggle events for mouse dragging.
+ * @param {boolean} toBind - bind events related with dragging when supplied "true"
+ */
+
+
+Drag.prototype._toggleDragEvent = function (toBind) {
+  var container = this.container;
+
+  if (toBind) {
+    disableTextSelection(container);
+    on(window, 'dragstart', preventDefault);
+    on(global.document, {
+      mousemove: this._onMouseMove,
+      mouseup: this._onMouseUp
+    }, this);
+  } else {
+    enableTextSelection(container);
+    off(window, 'dragstart', preventDefault);
+    off(global.document, {
+      mousemove: this._onMouseMove,
+      mouseup: this._onMouseUp
+    });
+  }
+};
+/**
+ * Normalize mouse event object.
+ * @param {MouseEvent} mouseEvent - mouse event object.
+ * @returns {object} normalized mouse event data.
+ */
+
+
+Drag.prototype._getEventData = function (mouseEvent) {
+  return {
+    target: getTarget(mouseEvent),
+    originEvent: mouseEvent
+  };
+};
+/**
+ * MouseDown DOM event handler.
+ * @param {MouseEvent} mouseDownEvent MouseDown event object.
+ */
+
+
+Drag.prototype._onMouseDown = function (mouseDownEvent) {
+  // only primary button can start drag.
+  if (getMouseButton(mouseDownEvent) !== 0) {
+    return;
+  }
+
+  this._distance = 0;
+  this._dragStartFired = false;
+  this._dragStartEventData = this._getEventData(mouseDownEvent);
+
+  this._toggleDragEvent(true);
+};
+/**
+ * MouseMove DOM event handler.
+ * @emits Drag#drag
+ * @emits Drag#dragStart
+ * @param {MouseEvent} mouseMoveEvent MouseMove event object.
+ */
+
+
+Drag.prototype._onMouseMove = function (mouseMoveEvent) {
+  var distance = this.options.distance; // prevent automatic scrolling.
+
+  preventDefault(mouseMoveEvent);
+  this._isMoved = true;
+
+  if (this._distance < distance) {
+    this._distance += 1;
+    return;
+  }
+
+  if (!this._dragStartFired) {
+    this._dragStartFired = true;
+    /**
+     * Drag starts events. cancelable.
+     * @event Drag#dragStart
+     * @type {object}
+     * @property {HTMLElement} target - target element in this event.
+     * @property {MouseEvent} originEvent - original mouse event object.
+     */
+
+    if (!this.invoke('dragStart', this._dragStartEventData)) {
+      this._toggleDragEvent(false);
+
+      return;
+    }
+  }
+  /**
+   * Events while dragging.
+   * @event Drag#drag
+   * @type {object}
+   * @property {HTMLElement} target - target element in this event.
+   * @property {MouseEvent} originEvent - original mouse event object.
+   */
+
+
+  this.fire('drag', this._getEventData(mouseMoveEvent));
+};
+/**
+ * MouseUp DOM event handler.
+ * @param {MouseEvent} mouseUpEvent MouseUp event object.
+ * @emits Drag#dragEnd
+ * @emits Drag#click
+ */
+
+
+Drag.prototype._onMouseUp = function (mouseUpEvent) {
+  this._toggleDragEvent(false); // emit "click" event when not emitted drag event between mousedown and mouseup.
+
+
+  if (this._isMoved) {
+    this._isMoved = false;
+    /**
+     * Drag end events.
+     * @event Drag#dragEnd
+     * @type {MouseEvent}
+     * @property {HTMLElement} target - target element in this event.
+     * @property {MouseEvent} originEvent - original mouse event object.
+     */
+
+    this.fire('dragEnd', this._getEventData(mouseUpEvent));
+    return;
+  }
+  /**
+   * Click events.
+   * @event Drag#click
+   * @type {MouseEvent}
+   * @property {HTMLElement} target - target element in this event.
+   * @property {MouseEvent} originEvent - original mouse event object.
+   */
+
+
+  this.fire('click', this._getEventData(mouseUpEvent));
+};
+
+CustomEvents.mixin(Drag);
+module.exports = Drag;
+/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(25)))
+
+/***/ }),
+/* 25 */
+/***/ (function(module, exports) {
+
+var g;
+
+// This works in non-strict mode
+g = (function() {
+       return this;
+})();
+
+try {
+       // This works if eval is allowed (see CSP)
+       g = g || new Function("return this")();
+} catch (e) {
+       // This works if the window reference is available
+       if (typeof window === "object") g = window;
+}
+
+// g can still be undefined, but nothing to do about it...
+// We return undefined, instead of nothing here, so it's
+// easier to handle this case. if(!global) { ...}
+
+module.exports = g;
+
+
+/***/ }),
+/* 26 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/**
+ * @fileoverview Get event collection for specific HTML element
+ * @author NHN FE Development Lab <dl_javascript@nhn.com>
+ */
+
+
+
+var EVENT_KEY = '_feEventKey';
+
+/**
+ * Get event collection for specific HTML element
+ * @param {HTMLElement} element - HTML element
+ * @param {string} type - event type
+ * @returns {array}
+ * @private
+ */
+function safeEvent(element, type) {
+  var events = element[EVENT_KEY];
+  var handlers;
+
+  if (!events) {
+    events = element[EVENT_KEY] = {};
+  }
+
+  handlers = events[type];
+  if (!handlers) {
+    handlers = events[type] = [];
+  }
+
+  return handlers;
+}
+
+module.exports = safeEvent;
+
+
+/***/ }),
+/* 27 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/**
+ * @fileoverview Check specific CSS style is available.
+ * @author NHN FE Development Lab <dl_javascript@nhn.com>
+ */
+
+
+
+/**
+ * Check specific CSS style is available.
+ * @param {array} props property name to testing
+ * @returns {(string|boolean)} return true when property is available
+ * @private
+ */
+function testCSSProp(props) {
+  var style = document.documentElement.style;
+  var i, len;
+
+  for (i = 0, len = props.length; i < len; i += 1) {
+    if (props[i] in style) {
+      return props[i];
+    }
+  }
+
+  return false;
+}
+
+module.exports = testCSSProp;
+
+
+/***/ }),
+/* 28 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/**
+ * @fileoverview Get a target element from an event object.
+ * @author NHN FE Development Lab <dl_javascript@nhn.com>
+ */
+
+
+
+/**
+ * Get a target element from an event object.
+ * @param {Event} e - event object
+ * @returns {HTMLElement} - target element
+ * @memberof module:domEvent
+ */
+function getTarget(e) {
+  return e.target || e.srcElement;
+}
+
+module.exports = getTarget;
+
+
+/***/ }),
+/* 29 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/**
+ * @fileoverview Color palette view
+ * @author NHN. FE Development Team <dl_javascript@nhn.com>
+ */
+
+
+var CustomEvents = __webpack_require__(10);
+
+var getTarget = __webpack_require__(28);
+
+var off = __webpack_require__(17);
+
+var on = __webpack_require__(14);
+
+var hasClass = __webpack_require__(30);
+
+var extend = __webpack_require__(0);
+
+var inherit = __webpack_require__(18);
+
+var domUtil = __webpack_require__(9);
+
+var colorUtil = __webpack_require__(12);
+
+var View = __webpack_require__(8);
+
+var tmpl = __webpack_require__(51);
+/**
+ * @constructor
+ * @extends {View}
+ * @mixes CustomEvents
+ * @param {object} options - options for color palette view
+ * @param {string[]} options.preset - color list
+ * @param {HTMLDivElement} container - container element
+ * @ignore
+ */
+
+
+function Palette(options, container) {
+  /**
+   * option object
+   * @type {object}
+   */
+  this.options = extend({
+    cssPrefix: 'tui-colorpicker-',
+    preset: ['#181818', '#282828', '#383838', '#585858', '#B8B8B8', '#D8D8D8', '#E8E8E8', '#F8F8F8', '#AB4642', '#DC9656', '#F7CA88', '#A1B56C', '#86C1B9', '#7CAFC2', '#BA8BAF', '#A16946'],
+    detailTxt: 'Detail'
+  }, options);
+  container = domUtil.appendHTMLElement('div', container, this.options.cssPrefix + 'palette-container');
+  View.call(this, options, container);
+}
+
+inherit(Palette, View);
+/**
+ * Mouse click event handler
+ * @fires Palette#_selectColor
+ * @fires Palette#_toggleSlider
+ * @param {MouseEvent} clickEvent - mouse event object
+ */
+
+Palette.prototype._onClick = function (clickEvent) {
+  var options = this.options;
+  var target = getTarget(clickEvent);
+  var eventData = {};
+
+  if (hasClass(target, options.cssPrefix + 'palette-button')) {
+    eventData.color = target.value;
+    /**
+     * @event Palette#_selectColor
+     * @type {object}
+     * @property {string} color - selected color value
+     */
+
+    this.fire('_selectColor', eventData);
+    return;
+  }
+
+  if (hasClass(target, options.cssPrefix + 'palette-toggle-slider')) {
+    /**
+     * @event Palette#_toggleSlider
+     */
+    this.fire('_toggleSlider');
+  }
+};
+/**
+ * Textbox change event handler
+ * @fires Palette#_selectColor
+ * @param {Event} changeEvent - change event object
+ */
+
+
+Palette.prototype._onChange = function (changeEvent) {
+  var options = this.options;
+  var target = getTarget(changeEvent);
+  var eventData = {};
+
+  if (hasClass(target, options.cssPrefix + 'palette-hex')) {
+    eventData.color = target.value;
+    /**
+     * @event Palette#_selectColor
+     * @type {object}
+     * @property {string} color - selected color value
+     */
+
+    this.fire('_selectColor', eventData);
+  }
+};
+/**
+ * Invoke before destory
+ * @override
+ */
+
+
+Palette.prototype._beforeDestroy = function () {
+  this._toggleEvent(false);
+};
+/**
+ * Toggle view DOM events
+ * @param {boolean} [toBind=false] - true to bind event.
+ */
+
+
+Palette.prototype._toggleEvent = function (toBind) {
+  var options = this.options;
+  var container = this.container;
+  var handleEvent = toBind ? on : off;
+  var hexTextBox;
+  handleEvent(container, 'click', this._onClick, this);
+  hexTextBox = container.querySelector('.' + options.cssPrefix + 'palette-hex', container);
+
+  if (hexTextBox) {
+    handleEvent(hexTextBox, 'change', this._onChange, this);
+  }
+};
+/**
+ * Render palette
+ * @override
+ */
+
+
+Palette.prototype.render = function (color) {
+  var options = this.options;
+  var html = '';
+
+  this._toggleEvent(false);
+
+  html = tmpl({
+    cssPrefix: options.cssPrefix,
+    preset: options.preset,
+    detailTxt: options.detailTxt,
+    color: color,
+    isValidRGB: colorUtil.isValidRGB,
+    getItemClass: function (itemColor) {
+      return !itemColor ? ' ' + options.cssPrefix + 'color-transparent' : '';
+    },
+    isSelected: function (itemColor) {
+      return itemColor === color ? ' ' + options.cssPrefix + 'selected' : '';
+    }
+  });
+  this.container.innerHTML = html;
+
+  this._toggleEvent(true);
+};
+
+CustomEvents.mixin(Palette);
+module.exports = Palette;
+
+/***/ }),
+/* 30 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/**
+ * @fileoverview Check element has specific css class
+ * @author NHN FE Development Lab <dl_javascript@nhn.com>
+ */
+
+
+
+var inArray = __webpack_require__(5);
+var getClass = __webpack_require__(23);
+
+/**
+ * Check element has specific css class
+ * @param {(HTMLElement|SVGElement)} element - target element
+ * @param {string} cssClass - css class
+ * @returns {boolean}
+ * @memberof module:domUtil
+ */
+function hasClass(element, cssClass) {
+  var origin;
+
+  if (element.classList) {
+    return element.classList.contains(cssClass);
+  }
+
+  origin = getClass(element).split(/\s+/);
+
+  return inArray(cssClass, origin) > -1;
+}
+
+module.exports = hasClass;
+
+
+/***/ }),
+/* 31 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/**
+ * @fileoverview Slider view
+ * @author NHN. FE Development Team <dl_javascript@nhn.com>
+ */
+
+
+var CustomEvents = __webpack_require__(10);
+
+var getMousePosition = __webpack_require__(53);
+
+var closest = __webpack_require__(54);
+
+var hasClass = __webpack_require__(30);
+
+var extend = __webpack_require__(0);
+
+var inherit = __webpack_require__(18);
+
+var domUtil = __webpack_require__(9);
+
+var svgvml = __webpack_require__(32);
+
+var colorUtil = __webpack_require__(12);
+
+var View = __webpack_require__(8);
+
+var Drag = __webpack_require__(24);
+
+var tmpl = __webpack_require__(57); // Limitation position of point element inside of colorslider and hue bar
+// Minimum value can to be negative because that using color point of handle element is center point. not left, top point.
+
+
+var COLORSLIDER_POS_LIMIT_RANGE = [-7, 112];
+var HUEBAR_POS_LIMIT_RANGE = [-3, 115];
+var HUE_WHEEL_MAX = 359.99;
+/**
+ * @constructor
+ * @extends {View}
+ * @mixes CustomEvents
+ * @param {object} options - options for view
+ *  @param {string} options.cssPrefix - design css prefix
+ * @param {HTMLElement} container - container element
+ * @ignore
+ */
+
+function Slider(options, container) {
+  container = domUtil.appendHTMLElement('div', container, options.cssPrefix + 'slider-container');
+  container.style.display = 'none';
+  View.call(this, options, container);
+  /**
+   * @type {object}
+   */
+
+  this.options = extend({
+    color: '#f8f8f8',
+    cssPrefix: 'tui-colorpicker-'
+  }, options);
+  /**
+   * Cache immutable data in click, drag events.
+   *
+   * (i.e. is event related with colorslider? or huebar?)
+   * @type {object}
+   * @property {boolean} isColorSlider
+   * @property {number[]} containerSize
+   */
+
+  this._dragDataCache = {};
+  /**
+   * Color slider handle element
+   * @type {SVG|VML}
+   */
+
+  this.sliderHandleElement = null;
+  /**
+   * hue bar handle element
+   * @type {SVG|VML}
+   */
+
+  this.huebarHandleElement = null;
+  /**
+   * Element that render base color in colorslider part
+   * @type {SVG|VML}
+   */
+
+  this.baseColorElement = null;
+  /**
+   * @type {Drag}
+   */
+
+  this.drag = new Drag({
+    distance: 0
+  }, container); // bind drag events
+
+  this.drag.on({
+    dragStart: this._onDragStart,
+    drag: this._onDrag,
+    dragEnd: this._onDragEnd,
+    click: this._onClick
+  }, this);
+}
+
+inherit(Slider, View);
+/**
+ * @override
+ */
+
+Slider.prototype._beforeDestroy = function () {
+  this.drag.off();
+  this.drag = this.options = this._dragDataCache = this.sliderHandleElement = this.huebarHandleElement = this.baseColorElement = null;
+};
+/**
+ * Toggle slider view
+ * @param {boolean} onOff - set true then reveal slider view
+ */
+
+
+Slider.prototype.toggle = function (onOff) {
+  this.container.style.display = !!onOff ? 'block' : 'none';
+};
+/**
+ * Get slider display status
+ * @returns {boolean} return true when slider is visible
+ */
+
+
+Slider.prototype.isVisible = function () {
+  return this.container.style.display === 'block';
+};
+/**
+ * Render slider view
+ * @override
+ * @param {string} colorStr - hex string color from parent view (Layout)
+ */
+
+
+Slider.prototype.render = function (colorStr) {
+  var container = this.container;
+  var options = this.options;
+  var html = tmpl.layout;
+  var rgb, hsv;
+
+  if (!colorUtil.isValidRGB(colorStr)) {
+    return;
+  }
+
+  html = html.replace(/{{slider}}/, tmpl.slider);
+  html = html.replace(/{{huebar}}/, tmpl.huebar);
+  html = html.replace(/{{cssPrefix}}/g, options.cssPrefix);
+  html = html.replace(/{{id}}/g, options.id);
+  this.container.innerHTML = html;
+  this.sliderHandleElement = container.querySelector('.' + options.cssPrefix + 'slider-handle');
+  this.huebarHandleElement = container.querySelector('.' + options.cssPrefix + 'huebar-handle');
+  this.baseColorElement = container.querySelector('.' + options.cssPrefix + 'slider-basecolor');
+  rgb = colorUtil.hexToRGB(colorStr);
+  hsv = colorUtil.rgbToHSV.apply(null, rgb);
+  this.moveHue(hsv[0], true);
+  this.moveSaturationAndValue(hsv[1], hsv[2], true);
+};
+/**
+ * Move colorslider by newLeft(X), newTop(Y) value
+ * @private
+ * @param {number} newLeft - left pixel value to move handle
+ * @param {number} newTop - top pixel value to move handle
+ * @param {boolean} [silent=false] - set true then not fire custom event
+ */
+
+
+Slider.prototype._moveColorSliderHandle = function (newLeft, newTop, silent) {
+  var handle = this.sliderHandleElement;
+  var handleColor; // Check position limitation.
+
+  newTop = Math.max(COLORSLIDER_POS_LIMIT_RANGE[0], newTop);
+  newTop = Math.min(COLORSLIDER_POS_LIMIT_RANGE[1], newTop);
+  newLeft = Math.max(COLORSLIDER_POS_LIMIT_RANGE[0], newLeft);
+  newLeft = Math.min(COLORSLIDER_POS_LIMIT_RANGE[1], newLeft);
+  svgvml.setTranslateXY(handle, newLeft, newTop);
+  handleColor = newTop > 50 ? 'white' : 'black';
+  svgvml.setStrokeColor(handle, handleColor);
+
+  if (!silent) {
+    this.fire('_selectColor', {
+      color: colorUtil.rgbToHEX.apply(null, this.getRGB())
+    });
+  }
+};
+/**
+ * Move colorslider by supplied saturation and values.
+ *
+ * The movement of color slider handle follow HSV cylinder model. {@link https://en.wikipedia.org/wiki/HSL_and_HSV}
+ * @param {number} saturation - the percent of saturation (0% ~ 100%)
+ * @param {number} value - the percent of saturation (0% ~ 100%)
+ * @param {boolean} [silent=false] - set true then not fire custom event
+ */
+
+
+Slider.prototype.moveSaturationAndValue = function (saturation, value, silent) {
+  var absMin, maxValue, newLeft, newTop;
+  saturation = saturation || 0;
+  value = value || 0;
+  absMin = Math.abs(COLORSLIDER_POS_LIMIT_RANGE[0]);
+  maxValue = COLORSLIDER_POS_LIMIT_RANGE[1]; // subtract absMin value because current color position is not left, top of handle element.
+  // The saturation. from left 0 to right 100
+
+  newLeft = saturation * maxValue / 100 - absMin; // The Value. from top 100 to bottom 0. that why newTop subtract by maxValue.
+
+  newTop = maxValue - value * maxValue / 100 - absMin;
+
+  this._moveColorSliderHandle(newLeft, newTop, silent);
+};
+/**
+ * Move color slider handle to supplied position
+ *
+ * The number of X, Y must be related value from color slider container
+ * @private
+ * @param {number} x - the pixel value to move handle
+ * @param {number} y - the pixel value to move handle
+ */
+
+
+Slider.prototype._moveColorSliderByPosition = function (x, y) {
+  var offset = COLORSLIDER_POS_LIMIT_RANGE[0];
+
+  this._moveColorSliderHandle(x + offset, y + offset);
+};
+/**
+ * Get saturation and value value.
+ * @returns {number[]} saturation and value
+ */
+
+
+Slider.prototype.getSaturationAndValue = function () {
+  var absMin = Math.abs(COLORSLIDER_POS_LIMIT_RANGE[0]);
+  var maxValue = absMin + COLORSLIDER_POS_LIMIT_RANGE[1];
+  var position = svgvml.getTranslateXY(this.sliderHandleElement);
+  var saturation, value;
+  saturation = (position[1] + absMin) / maxValue * 100; // The value of HSV color model is inverted. top 100 ~ bottom 0. so subtract by 100
+
+  value = 100 - (position[0] + absMin) / maxValue * 100;
+  return [saturation, value];
+};
+/**
+ * Move hue handle supplied pixel value
+ * @private
+ * @param {number} newTop - pixel to move hue handle
+ * @param {boolean} [silent=false] - set true then not fire custom event
+ */
+
+
+Slider.prototype._moveHueHandle = function (newTop, silent) {
+  var hueHandleElement = this.huebarHandleElement;
+  var baseColorElement = this.baseColorElement;
+  var newGradientColor, hexStr;
+  newTop = Math.max(HUEBAR_POS_LIMIT_RANGE[0], newTop);
+  newTop = Math.min(HUEBAR_POS_LIMIT_RANGE[1], newTop);
+  svgvml.setTranslateY(hueHandleElement, newTop);
+  newGradientColor = colorUtil.hsvToRGB(this.getHue(), 100, 100);
+  hexStr = colorUtil.rgbToHEX.apply(null, newGradientColor);
+  svgvml.setGradientColorStop(baseColorElement, hexStr);
+
+  if (!silent) {
+    this.fire('_selectColor', {
+      color: colorUtil.rgbToHEX.apply(null, this.getRGB())
+    });
+  }
+};
+/**
+ * Move hue bar handle by supplied degree
+ * @param {number} degree - (0 ~ 359.9 degree)
+ * @param {boolean} [silent=false] - set true then not fire custom event
+ */
+
+
+Slider.prototype.moveHue = function (degree, silent) {
+  var newTop = 0;
+  var absMin, maxValue;
+  absMin = Math.abs(HUEBAR_POS_LIMIT_RANGE[0]);
+  maxValue = absMin + HUEBAR_POS_LIMIT_RANGE[1];
+  degree = degree || 0;
+  newTop = maxValue * degree / HUE_WHEEL_MAX - absMin;
+
+  this._moveHueHandle(newTop, silent);
+};
+/**
+ * Move hue bar handle by supplied percent
+ * @private
+ * @param {number} y - pixel value to move hue handle
+ */
+
+
+Slider.prototype._moveHueByPosition = function (y) {
+  var offset = HUEBAR_POS_LIMIT_RANGE[0];
+
+  this._moveHueHandle(y + offset);
+};
+/**
+ * Get huebar handle position by color degree
+ * @returns {number} degree (0 ~ 359.9 degree)
+ */
+
+
+Slider.prototype.getHue = function () {
+  var handle = this.huebarHandleElement;
+  var position = svgvml.getTranslateXY(handle);
+  var absMin, maxValue;
+  absMin = Math.abs(HUEBAR_POS_LIMIT_RANGE[0]);
+  maxValue = absMin + HUEBAR_POS_LIMIT_RANGE[1]; // maxValue : 359.99 = pos.y : x
+
+  return (position[0] + absMin) * HUE_WHEEL_MAX / maxValue;
+};
+/**
+ * Get HSV value from slider
+ * @returns {number[]} hsv values
+ */
+
+
+Slider.prototype.getHSV = function () {
+  var sv = this.getSaturationAndValue();
+  var h = this.getHue();
+  return [h].concat(sv);
+};
+/**
+ * Get RGB value from slider
+ * @returns {number[]} RGB value
+ */
+
+
+Slider.prototype.getRGB = function () {
+  return colorUtil.hsvToRGB.apply(null, this.getHSV());
+};
+/**********
+ * Drag event handler
+ **********/
+
+/**
+ * Cache immutable data when dragging or click view
+ * @param {object} event - Click, DragStart event.
+ * @returns {object} cached data.
+ */
+
+
+Slider.prototype._prepareColorSliderForMouseEvent = function (event) {
+  var options = this.options;
+  var sliderPart = closest(event.target, '.' + options.cssPrefix + 'slider-part');
+  var cache;
+  cache = this._dragDataCache = {
+    isColorSlider: hasClass(sliderPart, options.cssPrefix + 'slider-left'),
+    parentElement: sliderPart
+  };
+  return cache;
+};
+/**
+ * Click event handler
+ * @param {object} clickEvent - Click event from Drag module
+ */
+
+
+Slider.prototype._onClick = function (clickEvent) {
+  var cache = this._prepareColorSliderForMouseEvent(clickEvent);
+
+  var mousePos = getMousePosition(clickEvent.originEvent, cache.parentElement);
+
+  if (cache.isColorSlider) {
+    this._moveColorSliderByPosition(mousePos[0], mousePos[1]);
+  } else {
+    this._moveHueByPosition(mousePos[1]);
+  }
+
+  this._dragDataCache = null;
+};
+/**
+ * DragStart event handler
+ * @param {object} dragStartEvent - dragStart event data from Drag#dragStart
+ */
+
+
+Slider.prototype._onDragStart = function (dragStartEvent) {
+  this._prepareColorSliderForMouseEvent(dragStartEvent);
+};
+/**
+ * Drag event handler
+ * @param {Drag#drag} dragEvent - drag event data
+ */
+
+
+Slider.prototype._onDrag = function (dragEvent) {
+  var cache = this._dragDataCache;
+  var mousePos = getMousePosition(dragEvent.originEvent, cache.parentElement);
+
+  if (cache.isColorSlider) {
+    this._moveColorSliderByPosition(mousePos[0], mousePos[1]);
+  } else {
+    this._moveHueByPosition(mousePos[1]);
+  }
+};
+/**
+ * Drag#dragEnd event handler
+ */
+
+
+Slider.prototype._onDragEnd = function () {
+  this._dragDataCache = null;
+};
+
+CustomEvents.mixin(Slider);
+module.exports = Slider;
+
+/***/ }),
+/* 32 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/**
+ * @fileoverview module for manipulate SVG or VML object
+ * @author NHN. FE Development Team <dl_javascript@nhn.com>
+ */
+
+
+var isOldBrowser = __webpack_require__(4).isOldBrowser;
+
+var PARSE_TRANSLATE_NUM_REGEX = /[\.\-0-9]+/g;
+var SVG_HUE_HANDLE_RIGHT_POS = -6;
+/* istanbul ignore next */
+
+var svgvml = {
+  /**
+   * Get translate transform value
+   * @param {SVG|VML} obj - svg or vml object that want to know translate x, y
+   * @returns {number[]} translated coordinates [x, y]
+   */
+  getTranslateXY: function (obj) {
+    var temp;
+
+    if (isOldBrowser) {
+      temp = obj.style;
+      return [parseFloat(temp.top), parseFloat(temp.left)];
+    }
+
+    temp = obj.getAttribute('transform');
+
+    if (!temp) {
+      return [0, 0];
+    }
+
+    temp = temp.match(PARSE_TRANSLATE_NUM_REGEX); // need caution for difference of VML, SVG coordinates system.
+    // translate command need X coords in first parameter. but VML is use CSS coordinate system(top, left)
+
+    return [parseFloat(temp[1]), parseFloat(temp[0])];
+  },
+
+  /**
+   * Set translate transform value
+   * @param {SVG|VML} obj - SVG or VML object to setting translate transform.
+   * @param {number} x - translate X value
+   * @param {number} y - translate Y value
+   */
+  setTranslateXY: function (obj, x, y) {
+    if (isOldBrowser) {
+      obj.style.left = x + 'px';
+      obj.style.top = y + 'px';
+    } else {
+      obj.setAttribute('transform', 'translate(' + x + ',' + y + ')');
+    }
+  },
+
+  /**
+   * Set translate only Y value
+   * @param {SVG|VML} obj - SVG or VML object to setting translate transform.
+   * @param {number} y - translate Y value
+   */
+  setTranslateY: function (obj, y) {
+    if (isOldBrowser) {
+      obj.style.top = y + 'px';
+    } else {
+      obj.setAttribute('transform', 'translate(' + SVG_HUE_HANDLE_RIGHT_POS + ',' + y + ')');
+    }
+  },
+
+  /**
+   * Set stroke color to SVG or VML object
+   * @param {SVG|VML} obj - SVG or VML object to setting stroke color
+   * @param {string} colorStr - color string
+   */
+  setStrokeColor: function (obj, colorStr) {
+    if (isOldBrowser) {
+      obj.strokecolor = colorStr;
+    } else {
+      obj.setAttribute('stroke', colorStr);
+    }
+  },
+
+  /**
+   * Set gradient stop color to SVG, VML object.
+   * @param {SVG|VML} obj - SVG, VML object to applying gradient stop color
+   * @param {string} colorStr - color string
+   */
+  setGradientColorStop: function (obj, colorStr) {
+    if (isOldBrowser) {
+      obj.color = colorStr;
+    } else {
+      obj.setAttribute('stop-color', colorStr);
+    }
+  }
+};
+module.exports = svgvml;
+
+/***/ }),
+/* 33 */
+/***/ (function(module, exports, __webpack_require__) {
+
+__webpack_require__(34);
+module.exports = __webpack_require__(35);
+
+
+/***/ }),
+/* 34 */
+/***/ (function(module, exports, __webpack_require__) {
+
+// extracted by mini-css-extract-plugin
+
+/***/ }),
+/* 35 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+var Collection = __webpack_require__(19);
+
+var View = __webpack_require__(8);
+
+var Drag = __webpack_require__(24);
+
+var create = __webpack_require__(48);
+
+var Palette = __webpack_require__(29);
+
+var Slider = __webpack_require__(31);
+
+var colorUtil = __webpack_require__(12);
+
+var svgvml = __webpack_require__(32);
+
+var colorPicker = {
+  Collection: Collection,
+  View: View,
+  Drag: Drag,
+  create: create,
+  Palette: Palette,
+  Slider: Slider,
+  colorutil: colorUtil,
+  svgvml: svgvml
+};
+module.exports = colorPicker;
+
+/***/ }),
+/* 36 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/**
+ * @fileoverview Check whether the given variable is null or not.
+ * @author NHN FE Development Lab <dl_javascript@nhn.com>
+ */
+
+
+
+/**
+ * Check whether the given variable is null or not.
+ * If the given variable(arguments[0]) is null, returns true.
+ * @param {*} obj - Target for checking
+ * @returns {boolean} Is null?
+ * @memberof module:type
+ */
+function isNull(obj) {
+  return obj === null;
+}
+
+module.exports = isNull;
+
+
+/***/ }),
+/* 37 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/**
+ * @fileoverview Send hostname on DOMContentLoaded.
+ * @author NHN FE Development Lab <dl_javascript@nhn.com>
+ */
+
+
+
+var isUndefined = __webpack_require__(3);
+var imagePing = __webpack_require__(38);
+
+var ms7days = 7 * 24 * 60 * 60 * 1000;
+
+/**
+ * Check if the date has passed 7 days
+ * @param {number} date - milliseconds
+ * @returns {boolean}
+ * @private
+ */
+function isExpired(date) {
+  var now = new Date().getTime();
+
+  return now - date > ms7days;
+}
+
+/**
+ * Send hostname on DOMContentLoaded.
+ * To prevent hostname set tui.usageStatistics to false.
+ * @param {string} appName - application name
+ * @param {string} trackingId - GA tracking ID
+ * @ignore
+ */
+function sendHostname(appName, trackingId) {
+  var url = 'https://www.google-analytics.com/collect';
+  var hostname = location.hostname;
+  var hitType = 'event';
+  var eventCategory = 'use';
+  var applicationKeyForStorage = 'TOAST UI ' + appName + ' for ' + hostname + ': Statistics';
+  var date = window.localStorage.getItem(applicationKeyForStorage);
+
+  // skip if the flag is defined and is set to false explicitly
+  if (!isUndefined(window.tui) && window.tui.usageStatistics === false) {
+    return;
+  }
+
+  // skip if not pass seven days old
+  if (date && !isExpired(date)) {
+    return;
+  }
+
+  window.localStorage.setItem(applicationKeyForStorage, new Date().getTime());
+
+  setTimeout(function() {
+    if (document.readyState === 'interactive' || document.readyState === 'complete') {
+      imagePing(url, {
+        v: 1,
+        t: hitType,
+        tid: trackingId,
+        cid: hostname,
+        dp: hostname,
+        dh: appName,
+        el: appName,
+        ec: eventCategory
+      });
+    }
+  }, 1000);
+}
+
+module.exports = sendHostname;
+
+
+/***/ }),
+/* 38 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/**
+ * @fileoverview Request image ping.
+ * @author NHN FE Development Lab <dl_javascript@nhn.com>
+ */
+
+
+
+var forEachOwnProperties = __webpack_require__(7);
+
+/**
+ * @module request
+ */
+
+/**
+ * Request image ping.
+ * @param {String} url url for ping request
+ * @param {Object} trackingInfo infos for make query string
+ * @returns {HTMLElement}
+ * @memberof module:request
+ * @example
+ * var imagePing = require('tui-code-snippet/request/imagePing'); // node, commonjs
+ *
+ * imagePing('https://www.google-analytics.com/collect', {
+ *     v: 1,
+ *     t: 'event',
+ *     tid: 'trackingid',
+ *     cid: 'cid',
+ *     dp: 'dp',
+ *     dh: 'dh'
+ * });
+ */
+function imagePing(url, trackingInfo) {
+  var trackingElement = document.createElement('img');
+  var queryString = '';
+  forEachOwnProperties(trackingInfo, function(value, key) {
+    queryString += '&' + key + '=' + value;
+  });
+  queryString = queryString.substring(1);
+
+  trackingElement.src = url + '?' + queryString;
+
+  trackingElement.style.display = 'none';
+  document.body.appendChild(trackingElement);
+  document.body.removeChild(trackingElement);
+
+  return trackingElement;
+}
+
+module.exports = imagePing;
+
+
+/***/ }),
+/* 39 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/**
+ * @fileoverview Add css class to element
+ * @author NHN FE Development Lab <dl_javascript@nhn.com>
+ */
+
+
+
+var forEach = __webpack_require__(2);
+var inArray = __webpack_require__(5);
+var getClass = __webpack_require__(23);
+var setClassName = __webpack_require__(40);
+
+/**
+ * domUtil module
+ * @module domUtil
+ */
+
+/**
+ * Add css class to element
+ * @param {(HTMLElement|SVGElement)} element - target element
+ * @param {...string} cssClass - css classes to add
+ * @memberof module:domUtil
+ */
+function addClass(element) {
+  var cssClass = Array.prototype.slice.call(arguments, 1);
+  var classList = element.classList;
+  var newClass = [];
+  var origin;
+
+  if (classList) {
+    forEach(cssClass, function(name) {
+      element.classList.add(name);
+    });
+
+    return;
+  }
+
+  origin = getClass(element);
+
+  if (origin) {
+    cssClass = [].concat(origin.split(/\s+/), cssClass);
+  }
+
+  forEach(cssClass, function(cls) {
+    if (inArray(cls, newClass) < 0) {
+      newClass.push(cls);
+    }
+  });
+
+  setClassName(element, newClass);
+}
+
+module.exports = addClass;
+
+
+/***/ }),
+/* 40 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/**
+ * @fileoverview Set className value
+ * @author NHN FE Development Lab <dl_javascript@nhn.com>
+ */
+
+
+
+var isArray = __webpack_require__(1);
+var isUndefined = __webpack_require__(3);
+
+/**
+ * Set className value
+ * @param {(HTMLElement|SVGElement)} element - target element
+ * @param {(string|string[])} cssClass - class names
+ * @private
+ */
+function setClassName(element, cssClass) {
+  cssClass = isArray(cssClass) ? cssClass.join(' ') : cssClass;
+
+  cssClass = cssClass.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, '');
+
+  if (isUndefined(element.className.baseVal)) {
+    element.className = cssClass;
+
+    return;
+  }
+
+  element.className.baseVal = cssClass;
+}
+
+module.exports = setClassName;
+
+
+/***/ }),
+/* 41 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/**
+ * @fileoverview Check whether the given variable is a number or not.
+ * @author NHN FE Development Lab <dl_javascript@nhn.com>
+ */
+
+
+
+/**
+ * Check whether the given variable is a number or not.
+ * If the given variable is a number, return true.
+ * @param {*} obj - Target for checking
+ * @returns {boolean} Is number?
+ * @memberof module:type
+ */
+function isNumber(obj) {
+  return typeof obj === 'number' || obj instanceof Number;
+}
+
+module.exports = isNumber;
+
+
+/***/ }),
+/* 42 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/**
+ * @fileoverview Disable browser's text selection behaviors.
+ * @author NHN FE Development Lab <dl_javascript@nhn.com>
+ */
+
+
+
+var on = __webpack_require__(14);
+var preventDefault = __webpack_require__(15);
+var setData = __webpack_require__(43);
+var testCSSProp = __webpack_require__(27);
+
+var SUPPORT_SELECTSTART = 'onselectstart' in document;
+var KEY_PREVIOUS_USER_SELECT = 'prevUserSelect';
+var userSelectProperty = testCSSProp([
+  'userSelect',
+  'WebkitUserSelect',
+  'OUserSelect',
+  'MozUserSelect',
+  'msUserSelect'
+]);
+
+/**
+ * Disable browser's text selection behaviors.
+ * @param {HTMLElement} [el] - target element. if not supplied, use `document`
+ * @memberof module:domUtil
+ */
+function disableTextSelection(el) {
+  if (!el) {
+    el = document;
+  }
+
+  if (SUPPORT_SELECTSTART) {
+    on(el, 'selectstart', preventDefault);
+  } else {
+    el = (el === document) ? document.documentElement : el;
+    setData(el, KEY_PREVIOUS_USER_SELECT, el.style[userSelectProperty]);
+    el.style[userSelectProperty] = 'none';
+  }
+}
+
+module.exports = disableTextSelection;
+
+
+/***/ }),
+/* 43 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/**
+ * @fileoverview Set data attribute to target element
+ * @author NHN FE Development Lab <dl_javascript@nhn.com>
+ */
+
+
+
+var convertToKebabCase = __webpack_require__(16);
+
+/**
+ * Set data attribute to target element
+ * @param {HTMLElement} element - element to set data attribute
+ * @param {string} key - key
+ * @param {string} value - value
+ * @memberof module:domUtil
+ */
+function setData(element, key, value) {
+  if (element.dataset) {
+    element.dataset[key] = value;
+
+    return;
+  }
+
+  element.setAttribute('data-' + convertToKebabCase(key), value);
+}
+
+module.exports = setData;
+
+
+/***/ }),
+/* 44 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/**
+ * @fileoverview Transform the Array-like object to Array.
+ * @author NHN FE Development Lab <dl_javascript@nhn.com>
+ */
+
+
+
+var off = __webpack_require__(17);
+var preventDefault = __webpack_require__(15);
+var getData = __webpack_require__(45);
+var removeData = __webpack_require__(46);
+var testCSSProp = __webpack_require__(27);
+
+var SUPPORT_SELECTSTART = 'onselectstart' in document;
+var KEY_PREVIOUS_USER_SELECT = 'prevUserSelect';
+var userSelectProperty = testCSSProp([
+  'userSelect',
+  'WebkitUserSelect',
+  'OUserSelect',
+  'MozUserSelect',
+  'msUserSelect'
+]);
+
+/**
+ * Enable browser's text selection behaviors.
+ * @param {HTMLElement} [el] - target element. if not supplied, use `document`
+ * @memberof module:domUtil
+ */
+function enableTextSelection(el) {
+  if (!el) {
+    el = document;
+  }
+
+  if (SUPPORT_SELECTSTART) {
+    off(el, 'selectstart', preventDefault);
+  } else {
+    el = (el === document) ? document.documentElement : el;
+    el.style[userSelectProperty] = getData(el, KEY_PREVIOUS_USER_SELECT) || 'auto';
+    removeData(el, KEY_PREVIOUS_USER_SELECT);
+  }
+}
+
+module.exports = enableTextSelection;
+
+
+/***/ }),
+/* 45 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/**
+ * @fileoverview Get data value from data-attribute
+ * @author NHN FE Development Lab <dl_javascript@nhn.com>
+ */
+
+
+
+var convertToKebabCase = __webpack_require__(16);
+
+/**
+ * Get data value from data-attribute
+ * @param {HTMLElement} element - target element
+ * @param {string} key - key
+ * @returns {string} value
+ * @memberof module:domUtil
+ */
+function getData(element, key) {
+  if (element.dataset) {
+    return element.dataset[key];
+  }
+
+  return element.getAttribute('data-' + convertToKebabCase(key));
+}
+
+module.exports = getData;
+
+
+/***/ }),
+/* 46 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/**
+ * @fileoverview Remove data property
+ * @author NHN FE Development Lab <dl_javascript@nhn.com>
+ */
+
+
+
+var convertToKebabCase = __webpack_require__(16);
+
+/**
+ * Remove data property
+ * @param {HTMLElement} element - target element
+ * @param {string} key - key
+ * @memberof module:domUtil
+ */
+function removeData(element, key) {
+  if (element.dataset) {
+    delete element.dataset[key];
+
+    return;
+  }
+
+  element.removeAttribute('data-' + convertToKebabCase(key));
+}
+
+module.exports = removeData;
+
+
+/***/ }),
+/* 47 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/**
+ * @fileoverview Normalize mouse event's button attributes.
+ * @author NHN FE Development Lab <dl_javascript@nhn.com>
+ */
+
+
+
+var browser = __webpack_require__(22);
+var inArray = __webpack_require__(5);
+
+var primaryButton = ['0', '1', '3', '5', '7'];
+var secondaryButton = ['2', '6'];
+var wheelButton = ['4'];
+
+/**
+ * @module domEvent
+ */
+
+/**
+ * Normalize mouse event's button attributes.
+ *
+ * Can detect which button is clicked by this method.
+ *
+ * Meaning of return numbers
+ *
+ * - 0: primary mouse button
+ * - 1: wheel button or center button
+ * - 2: secondary mouse button
+ * @param {MouseEvent} mouseEvent - The mouse event object want to know.
+ * @returns {number} - The value of meaning which button is clicked?
+ * @memberof module:domEvent
+ */
+function getMouseButton(mouseEvent) {
+  if (browser.msie && browser.version <= 8) {
+    return getMouseButtonIE8AndEarlier(mouseEvent);
+  }
+
+  return mouseEvent.button;
+}
+
+/**
+ * Normalize return value of mouseEvent.button
+ * Make same to standard MouseEvent's button value
+ * @param {DispCEventObj} mouseEvent - mouse event object
+ * @returns {number|null} - id indicating which mouse button is clicked
+ * @private
+ */
+function getMouseButtonIE8AndEarlier(mouseEvent) {
+  var button = String(mouseEvent.button);
+
+  if (inArray(button, primaryButton) > -1) {
+    return 0;
+  }
+
+  if (inArray(button, secondaryButton) > -1) {
+    return 2;
+  }
+
+  if (inArray(button, wheelButton) > -1) {
+    return 1;
+  }
+
+  return null;
+}
+
+module.exports = getMouseButton;
+
+
+/***/ }),
+/* 48 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/**
+ * @fileoverview ColorPicker factory module
+ * @author NHN. FE Development Team <dl_javascript@nhn.com>
+ */
+
+
+var CustomEvents = __webpack_require__(10);
+
+var extend = __webpack_require__(0);
+
+var util = __webpack_require__(4);
+
+var colorUtil = __webpack_require__(12);
+
+var Layout = __webpack_require__(49);
+
+var Palette = __webpack_require__(29);
+
+var Slider = __webpack_require__(31);
+/**
+ * Create an unique id for a color-picker instance.
+ * @private
+ */
+
+
+var currentId = 0;
+
+function generateId() {
+  currentId += 1;
+  return currentId;
+}
+/**
+ * @constructor
+ * @param {object} options - options for colorpicker component
+ *  @param {HTMLDivElement} options.container - container element
+ *  @param {string} [options.color='#ffffff'] - default selected color
+ *  @param {string[]} [options.preset] - color preset for palette (use base16 palette if not supplied)
+ *  @param {string} [options.cssPrefix='tui-colorpicker-'] - css prefix text for each child elements
+ *  @param {string} [options.detailTxt='Detail'] - text for detail button.
+ *  @param {boolean} [options.usageStatistics=true] - Let us know the hostname. If you don't want to send the hostname, please set to false.
+ * @example
+ * var colorPicker = tui.colorPicker; // or require('tui-color-picker')
+ *
+ * var instance = colorPicker.create({
+ *   container: document.getElementById('color-picker')
+ * });
+ */
+
+
+function ColorPicker(options) {
+  var layout;
+
+  if (!(this instanceof ColorPicker)) {
+    return new ColorPicker(options);
+  }
+  /**
+   * Option object
+   * @type {object}
+   * @private
+   */
+
+
+  options = this.options = extend({
+    container: null,
+    color: '#f8f8f8',
+    preset: ['#181818', '#282828', '#383838', '#585858', '#b8b8b8', '#d8d8d8', '#e8e8e8', '#f8f8f8', '#ab4642', '#dc9656', '#f7ca88', '#a1b56c', '#86c1b9', '#7cafc2', '#ba8baf', '#a16946'],
+    cssPrefix: 'tui-colorpicker-',
+    detailTxt: 'Detail',
+    id: generateId(),
+    usageStatistics: true
+  }, options);
+
+  if (!options.container) {
+    throw new Error('ColorPicker(): need container option.');
+  }
+  /**********
+   * Create layout view
+   **********/
+
+  /**
+   * @type {Layout}
+   * @private
+   */
+
+
+  layout = this.layout = new Layout(options, options.container);
+  /**********
+   * Create palette view
+   **********/
+
+  this.palette = new Palette(options, layout.container);
+  this.palette.on({
+    _selectColor: this._onSelectColorInPalette,
+    _toggleSlider: this._onToggleSlider
+  }, this);
+  /**********
+   * Create slider view
+   **********/
+
+  this.slider = new Slider(options, layout.container);
+  this.slider.on('_selectColor', this._onSelectColorInSlider, this);
+  /**********
+   * Add child views
+   **********/
+
+  layout.addChild(this.palette);
+  layout.addChild(this.slider);
+  this.render(options.color);
+
+  if (options.usageStatistics) {
+    util.sendHostName();
+  }
+}
+/**
+ * Handler method for Palette#_selectColor event
+ * @private
+ * @fires ColorPicker#selectColor
+ * @param {object} selectColorEventData - event data
+ */
+
+
+ColorPicker.prototype._onSelectColorInPalette = function (selectColorEventData) {
+  var color = selectColorEventData.color;
+  var opt = this.options;
+
+  if (!colorUtil.isValidRGB(color) && color !== '') {
+    this.render();
+    return;
+  }
+  /**
+   * @event ColorPicker#selectColor
+   * @type {object}
+   * @property {string} color - selected color (hex string)
+   * @property {string} origin - flags for represent the source of event fires.
+   */
+
+
+  this.fire('selectColor', {
+    color: color,
+    origin: 'palette'
+  });
+
+  if (opt.color === color) {
+    return;
+  }
+
+  opt.color = color;
+  this.render(color);
+};
+/**
+ * Handler method for Palette#_toggleSlider event
+ * @private
+ */
+
+
+ColorPicker.prototype._onToggleSlider = function () {
+  this.slider.toggle(!this.slider.isVisible());
+};
+/**
+ * Handler method for Slider#_selectColor event
+ * @private
+ * @fires ColorPicker#selectColor
+ * @param {object} selectColorEventData - event data
+ */
+
+
+ColorPicker.prototype._onSelectColorInSlider = function (selectColorEventData) {
+  var color = selectColorEventData.color;
+  var opt = this.options;
+  /**
+   * @event ColorPicker#selectColor
+   * @type {object}
+   * @property {string} color - selected color (hex string)
+   * @property {string} origin - flags for represent the source of event fires.
+   * @ignore
+   */
+
+  this.fire('selectColor', {
+    color: color,
+    origin: 'slider'
+  });
+
+  if (opt.color === color) {
+    return;
+  }
+
+  opt.color = color;
+  this.palette.render(color);
+};
+/**********
+ * PUBLIC API
+ **********/
+
+/**
+ * Set color to colorpicker instance.<br>
+ * The string parameter must be hex color value
+ * @param {string} hexStr - hex formatted color string
+ * @example
+ * instance.setColor('#ffff00');
+ */
+
+
+ColorPicker.prototype.setColor = function (hexStr) {
+  if (!colorUtil.isValidRGB(hexStr)) {
+    throw new Error('ColorPicker#setColor(): need valid hex string color value');
+  }
+
+  this.options.color = hexStr;
+  this.render(hexStr);
+};
+/**
+ * Get hex color string of current selected color in colorpicker instance.
+ * @returns {string} hex string formatted color
+ * @example
+ * instance.setColor('#ffff00');
+ * instance.getColor(); // '#ffff00';
+ */
+
+
+ColorPicker.prototype.getColor = function () {
+  return this.options.color;
+};
+/**
+ * Toggle colorpicker element. set true then reveal colorpicker view.
+ * @param {boolean} [isShow=false] - A flag to show
+ * @example
+ * instance.toggle(false); // hide
+ * instance.toggle(); // hide
+ * instance.toggle(true); // show
+ */
+
+
+ColorPicker.prototype.toggle = function (isShow) {
+  this.layout.container.style.display = !!isShow ? 'block' : 'none';
+};
+/**
+ * Render colorpicker
+ * @param {string} [color] - selected color
+ * @ignore
+ */
+
+
+ColorPicker.prototype.render = function (color) {
+  this.layout.render(color || this.options.color);
+};
+/**
+ * Destroy colorpicker instance.
+ * @example
+ * instance.destroy(); // DOM-element is removed
+ */
+
+
+ColorPicker.prototype.destroy = function () {
+  this.layout.destroy();
+  this.options.container.innerHTML = '';
+  this.layout = this.slider = this.palette = this.options = null;
+};
+
+CustomEvents.mixin(ColorPicker);
+module.exports = ColorPicker;
+
+/***/ }),
+/* 49 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/**
+ * @fileoverview ColorPicker layout module
+ * @author NHN. FE Development Team <dl_javascript@nhn.com>
+ */
+
+
+var extend = __webpack_require__(0);
+
+var inherit = __webpack_require__(18);
+
+var domUtil = __webpack_require__(9);
+
+var View = __webpack_require__(8);
+/**
+ * @constructor
+ * @extends {View}
+ * @param {object} options - option object
+ *  @param {string} options.cssPrefix - css prefix for each child elements
+ * @param {HTMLDivElement} container - container
+ * @ignore
+ */
+
+
+function Layout(options, container) {
+  /**
+   * option object
+   * @type {object}
+   */
+  this.options = extend({
+    cssPrefix: 'tui-colorpicker-'
+  }, options);
+  container = domUtil.appendHTMLElement('div', container, this.options.cssPrefix + 'container');
+  View.call(this, options, container);
+  this.render();
+}
+
+inherit(Layout, View);
+/**
+ * @override
+ * @param {string} [color] - selected color
+ */
+
+Layout.prototype.render = function (color) {
+  this.recursive(function (view) {
+    view.render(color);
+  }, true);
+};
+
+module.exports = Layout;
+
+/***/ }),
+/* 50 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/**
+ * @fileoverview Create a new object with the specified prototype object and properties.
+ * @author NHN FE Development Lab <dl_javascript@nhn.com>
+ */
+
+
+
+/**
+ * @module inheritance
+ */
+
+/**
+ * Create a new object with the specified prototype object and properties.
+ * @param {Object} obj This object will be a prototype of the newly-created object.
+ * @returns {Object}
+ * @memberof module:inheritance
+ */
+function createObject(obj) {
+  function F() {} // eslint-disable-line require-jsdoc
+  F.prototype = obj;
+
+  return new F();
+}
+
+module.exports = createObject;
+
+
+/***/ }),
+/* 51 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/**
+ * @fileoverview Palette view template
+ * @author NHN. FE Development Team <dl_javascript@nhn.com>
+ */
+
+
+var template = __webpack_require__(52);
+
+module.exports = function (context) {
+  var item = ['<li><input class="{{cssPrefix}}palette-button{{isSelected @this}}{{getItemClass @this}}" type="button"', '{{if isValidRGB @this}}', ' style="background-color:{{@this}};color:{{@this}}"', '{{/if}}', ' title="{{@this}}" value="{{@this}}" /></li>'].join('');
+  var layout = ['<ul class="{{cssPrefix}}clearfix">', '{{each preset}}', item, '{{/each}}', '</ul>', '<div class="{{cssPrefix}}clearfix" style="overflow:hidden">', '<input type="button" class="{{cssPrefix}}palette-toggle-slider" value="{{detailTxt}}" />', '<input type="text" class="{{cssPrefix}}palette-hex" value="{{color}}" maxlength="7" />', '<span class="{{cssPrefix}}palette-preview" style="background-color:{{color}};color:{{color}}">{{color}}</span>', '</div>'].join('\n');
+  return template(layout, context);
+};
+
+/***/ }),
+/* 52 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/**
+ * @fileoverview Convert text by binding expressions with context.
+ * @author NHN FE Development Lab <dl_javascript@nhn.com>
+ */
+
+
+
+var inArray = __webpack_require__(5);
+var forEach = __webpack_require__(2);
+var isArray = __webpack_require__(1);
+var isString = __webpack_require__(11);
+var extend = __webpack_require__(0);
+
+// IE8 does not support capture groups.
+var EXPRESSION_REGEXP = /{{\s?|\s?}}/g;
+var BRACKET_NOTATION_REGEXP = /^[a-zA-Z0-9_@]+\[[a-zA-Z0-9_@"']+\]$/;
+var BRACKET_REGEXP = /\[\s?|\s?\]/;
+var DOT_NOTATION_REGEXP = /^[a-zA-Z_]+\.[a-zA-Z_]+$/;
+var DOT_REGEXP = /\./;
+var STRING_NOTATION_REGEXP = /^["']\w+["']$/;
+var STRING_REGEXP = /"|'/g;
+var NUMBER_REGEXP = /^-?\d+\.?\d*$/;
+
+var EXPRESSION_INTERVAL = 2;
+
+var BLOCK_HELPERS = {
+  'if': handleIf,
+  'each': handleEach,
+  'with': handleWith
+};
+
+var isValidSplit = 'a'.split(/a/).length === 3;
+
+/**
+ * Split by RegExp. (Polyfill for IE8)
+ * @param {string} text - text to be splitted\
+ * @param {RegExp} regexp - regular expression
+ * @returns {Array.<string>}
+ */
+var splitByRegExp = (function() {
+  if (isValidSplit) {
+    return function(text, regexp) {
+      return text.split(regexp);
+    };
+  }
+
+  return function(text, regexp) {
+    var result = [];
+    var prevIndex = 0;
+    var match, index;
+
+    if (!regexp.global) {
+      regexp = new RegExp(regexp, 'g');
+    }
+
+    match = regexp.exec(text);
+    while (match !== null) {
+      index = match.index;
+      result.push(text.slice(prevIndex, index));
+
+      prevIndex = index + match[0].length;
+      match = regexp.exec(text);
+    }
+    result.push(text.slice(prevIndex));
+
+    return result;
+  };
+})();
+
+/**
+ * Find value in the context by an expression.
+ * @param {string} exp - an expression
+ * @param {object} context - context
+ * @returns {*}
+ * @private
+ */
+// eslint-disable-next-line complexity
+function getValueFromContext(exp, context) {
+  var splitedExps;
+  var value = context[exp];
+
+  if (exp === 'true') {
+    value = true;
+  } else if (exp === 'false') {
+    value = false;
+  } else if (STRING_NOTATION_REGEXP.test(exp)) {
+    value = exp.replace(STRING_REGEXP, '');
+  } else if (BRACKET_NOTATION_REGEXP.test(exp)) {
+    splitedExps = exp.split(BRACKET_REGEXP);
+    value = getValueFromContext(splitedExps[0], context)[getValueFromContext(splitedExps[1], context)];
+  } else if (DOT_NOTATION_REGEXP.test(exp)) {
+    splitedExps = exp.split(DOT_REGEXP);
+    value = getValueFromContext(splitedExps[0], context)[splitedExps[1]];
+  } else if (NUMBER_REGEXP.test(exp)) {
+    value = parseFloat(exp);
+  }
+
+  return value;
+}
+
+/**
+ * Extract elseif and else expressions.
+ * @param {Array.<string>} ifExps - args of if expression
+ * @param {Array.<string>} sourcesInsideBlock - sources inside if block
+ * @returns {object} - exps: expressions of if, elseif, and else / sourcesInsideIf: sources inside if, elseif, and else block.
+ * @private
+ */
+function extractElseif(ifExps, sourcesInsideBlock) {
+  var exps = [ifExps];
+  var sourcesInsideIf = [];
+  var otherIfCount = 0;
+  var start = 0;
+
+  // eslint-disable-next-line complexity
+  forEach(sourcesInsideBlock, function(source, index) {
+    if (source.indexOf('if') === 0) {
+      otherIfCount += 1;
+    } else if (source === '/if') {
+      otherIfCount -= 1;
+    } else if (!otherIfCount && (source.indexOf('elseif') === 0 || source === 'else')) {
+      exps.push(source === 'else' ? ['true'] : source.split(' ').slice(1));
+      sourcesInsideIf.push(sourcesInsideBlock.slice(start, index));
+      start = index + 1;
+    }
+  });
+
+  sourcesInsideIf.push(sourcesInsideBlock.slice(start));
+
+  return {
+    exps: exps,
+    sourcesInsideIf: sourcesInsideIf
+  };
+}
+
+/**
+ * Helper function for "if". 
+ * @param {Array.<string>} exps - array of expressions split by spaces
+ * @param {Array.<string>} sourcesInsideBlock - array of sources inside the if block
+ * @param {object} context - context
+ * @returns {string}
+ * @private
+ */
+function handleIf(exps, sourcesInsideBlock, context) {
+  var analyzed = extractElseif(exps, sourcesInsideBlock);
+  var result = false;
+  var compiledSource = '';
+
+  forEach(analyzed.exps, function(exp, index) {
+    result = handleExpression(exp, context);
+    if (result) {
+      compiledSource = compile(analyzed.sourcesInsideIf[index], context);
+    }
+
+    return !result;
+  });
+
+  return compiledSource;
+}
+
+/**
+ * Helper function for "each".
+ * @param {Array.<string>} exps - array of expressions split by spaces
+ * @param {Array.<string>} sourcesInsideBlock - array of sources inside the each block
+ * @param {object} context - context
+ * @returns {string}
+ * @private
+ */
+function handleEach(exps, sourcesInsideBlock, context) {
+  var collection = handleExpression(exps, context);
+  var additionalKey = isArray(collection) ? '@index' : '@key';
+  var additionalContext = {};
+  var result = '';
+
+  forEach(collection, function(item, key) {
+    additionalContext[additionalKey] = key;
+    additionalContext['@this'] = item;
+    extend(context, additionalContext);
+
+    result += compile(sourcesInsideBlock.slice(), context);
+  });
+
+  return result;
+}
+
+/**
+ * Helper function for "with ... as"
+ * @param {Array.<string>} exps - array of expressions split by spaces
+ * @param {Array.<string>} sourcesInsideBlock - array of sources inside the with block
+ * @param {object} context - context
+ * @returns {string}
+ * @private
+ */
+function handleWith(exps, sourcesInsideBlock, context) {
+  var asIndex = inArray('as', exps);
+  var alias = exps[asIndex + 1];
+  var result = handleExpression(exps.slice(0, asIndex), context);
+
+  var additionalContext = {};
+  additionalContext[alias] = result;
+
+  return compile(sourcesInsideBlock, extend(context, additionalContext)) || '';
+}
+
+/**
+ * Extract sources inside block in place.
+ * @param {Array.<string>} sources - array of sources
+ * @param {number} start - index of start block
+ * @param {number} end - index of end block
+ * @returns {Array.<string>}
+ * @private
+ */
+function extractSourcesInsideBlock(sources, start, end) {
+  var sourcesInsideBlock = sources.splice(start + 1, end - start);
+  sourcesInsideBlock.pop();
+
+  return sourcesInsideBlock;
+}
+
+/**
+ * Handle block helper function
+ * @param {string} helperKeyword - helper keyword (ex. if, each, with)
+ * @param {Array.<string>} sourcesToEnd - array of sources after the starting block
+ * @param {object} context - context
+ * @returns {Array.<string>}
+ * @private
+ */
+function handleBlockHelper(helperKeyword, sourcesToEnd, context) {
+  var executeBlockHelper = BLOCK_HELPERS[helperKeyword];
+  var helperCount = 1;
+  var startBlockIndex = 0;
+  var endBlockIndex;
+  var index = startBlockIndex + EXPRESSION_INTERVAL;
+  var expression = sourcesToEnd[index];
+
+  while (helperCount && isString(expression)) {
+    if (expression.indexOf(helperKeyword) === 0) {
+      helperCount += 1;
+    } else if (expression.indexOf('/' + helperKeyword) === 0) {
+      helperCount -= 1;
+      endBlockIndex = index;
+    }
+
+    index += EXPRESSION_INTERVAL;
+    expression = sourcesToEnd[index];
+  }
+
+  if (helperCount) {
+    throw Error(helperKeyword + ' needs {{/' + helperKeyword + '}} expression.');
+  }
+
+  sourcesToEnd[startBlockIndex] = executeBlockHelper(
+    sourcesToEnd[startBlockIndex].split(' ').slice(1),
+    extractSourcesInsideBlock(sourcesToEnd, startBlockIndex, endBlockIndex),
+    context
+  );
+
+  return sourcesToEnd;
+}
+
+/**
+ * Helper function for "custom helper".
+ * If helper is not a function, return helper itself.
+ * @param {Array.<string>} exps - array of expressions split by spaces (first element: helper)
+ * @param {object} context - context
+ * @returns {string}
+ * @private
+ */
+function handleExpression(exps, context) {
+  var result = getValueFromContext(exps[0], context);
+
+  if (result instanceof Function) {
+    return executeFunction(result, exps.slice(1), context);
+  }
+
+  return result;
+}
+
+/**
+ * Execute a helper function.
+ * @param {Function} helper - helper function
+ * @param {Array.<string>} argExps - expressions of arguments
+ * @param {object} context - context
+ * @returns {string} - result of executing the function with arguments
+ * @private
+ */
+function executeFunction(helper, argExps, context) {
+  var args = [];
+  forEach(argExps, function(exp) {
+    args.push(getValueFromContext(exp, context));
+  });
+
+  return helper.apply(null, args);
+}
+
+/**
+ * Get a result of compiling an expression with the context.
+ * @param {Array.<string>} sources - array of sources split by regexp of expression.
+ * @param {object} context - context
+ * @returns {Array.<string>} - array of sources that bind with its context
+ * @private
+ */
+function compile(sources, context) {
+  var index = 1;
+  var expression = sources[index];
+  var exps, firstExp, result;
+
+  while (isString(expression)) {
+    exps = expression.split(' ');
+    firstExp = exps[0];
+
+    if (BLOCK_HELPERS[firstExp]) {
+      result = handleBlockHelper(firstExp, sources.splice(index, sources.length - index), context);
+      sources = sources.concat(result);
+    } else {
+      sources[index] = handleExpression(exps, context);
+    }
+
+    index += EXPRESSION_INTERVAL;
+    expression = sources[index];
+  }
+
+  return sources.join('');
+}
+
+/**
+ * Convert text by binding expressions with context.
+ * <br>
+ * If expression exists in the context, it will be replaced.
+ * ex) '{{title}}' with context {title: 'Hello!'} is converted to 'Hello!'.
+ * An array or object can be accessed using bracket and dot notation.
+ * ex) '{{odds\[2\]}}' with context {odds: \[1, 3, 5\]} is converted to '5'.
+ * ex) '{{evens\[first\]}}' with context {evens: \[2, 4\], first: 0} is converted to '2'.
+ * ex) '{{project\["name"\]}}' and '{{project.name}}' with context {project: {name: 'CodeSnippet'}} is converted to 'CodeSnippet'.
+ * <br>
+ * If replaced expression is a function, next expressions will be arguments of the function.
+ * ex) '{{add 1 2}}' with context {add: function(a, b) {return a + b;}} is converted to '3'.
+ * <br>
+ * It has 3 predefined block helpers '{{helper ...}} ... {{/helper}}': 'if', 'each', 'with ... as ...'.
+ * 1) 'if' evaluates conditional statements. It can use with 'elseif' and 'else'.
+ * 2) 'each' iterates an array or object. It provides '@index'(array), '@key'(object), and '@this'(current element).
+ * 3) 'with ... as ...' provides an alias.
+ * @param {string} text - text with expressions
+ * @param {object} context - context
+ * @returns {string} - text that bind with its context
+ * @memberof module:domUtil
+ * @example
+ * var template = require('tui-code-snippet/domUtil/template');
+ * 
+ * var source = 
+ *     '<h1>'
+ *   +   '{{if isValidNumber title}}'
+ *   +     '{{title}}th'
+ *   +   '{{elseif isValidDate title}}'
+ *   +     'Date: {{title}}'
+ *   +   '{{/if}}'
+ *   + '</h1>'
+ *   + '{{each list}}'
+ *   +   '{{with addOne @index as idx}}'
+ *   +     '<p>{{idx}}: {{@this}}</p>'
+ *   +   '{{/with}}'
+ *   + '{{/each}}';
+ * 
+ * var context = {
+ *   isValidDate: function(text) {
+ *     return /^\d{4}-(0|1)\d-(0|1|2|3)\d$/.test(text);
+ *   },
+ *   isValidNumber: function(text) {
+ *     return /^\d+$/.test(text);
+ *   }
+ *   title: '2019-11-25',
+ *   list: ['Clean the room', 'Wash the dishes'],
+ *   addOne: function(num) {
+ *     return num + 1;
+ *   }
+ * };
+ * 
+ * var result = template(source, context);
+ * console.log(result); // <h1>Date: 2019-11-25</h1><p>1: Clean the room</p><p>2: Wash the dishes</p>
+ */
+function template(text, context) {
+  return compile(splitByRegExp(text, EXPRESSION_REGEXP), context);
+}
+
+module.exports = template;
+
+
+/***/ }),
+/* 53 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/**
+ * @fileoverview Get mouse position from mouse event
+ * @author NHN FE Development Lab <dl_javascript@nhn.com>
+ */
+
+
+
+var isArray = __webpack_require__(1);
+
+/**
+ * Get mouse position from mouse event
+ *
+ * If supplied relatveElement parameter then return relative position based on
+ *  element
+ * @param {(MouseEvent|object|number[])} position - mouse position object
+ * @param {HTMLElement} relativeElement HTML element that calculate relative
+ *  position
+ * @returns {number[]} mouse position
+ * @memberof module:domEvent
+ */
+function getMousePosition(position, relativeElement) {
+  var positionArray = isArray(position);
+  var clientX = positionArray ? position[0] : position.clientX;
+  var clientY = positionArray ? position[1] : position.clientY;
+  var rect;
+
+  if (!relativeElement) {
+    return [clientX, clientY];
+  }
+
+  rect = relativeElement.getBoundingClientRect();
+
+  return [
+    clientX - rect.left - relativeElement.clientLeft,
+    clientY - rect.top - relativeElement.clientTop
+  ];
+}
+
+module.exports = getMousePosition;
+
+
+/***/ }),
+/* 54 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/**
+ * @fileoverview Find parent element recursively
+ * @author NHN FE Development Lab <dl_javascript@nhn.com>
+ */
+
+
+
+var matches = __webpack_require__(55);
+
+/**
+ * Find parent element recursively
+ * @param {HTMLElement} element - base element to start find
+ * @param {string} selector - selector string for find
+ * @returns {HTMLElement} - element finded or null
+ * @memberof module:domUtil
+ */
+function closest(element, selector) {
+  var parent = element.parentNode;
+
+  if (matches(element, selector)) {
+    return element;
+  }
+
+  while (parent && parent !== document) {
+    if (matches(parent, selector)) {
+      return parent;
+    }
+
+    parent = parent.parentNode;
+  }
+
+  return null;
+}
+
+module.exports = closest;
+
+
+/***/ }),
+/* 55 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/**
+ * @fileoverview Check element match selector
+ * @author NHN FE Development Lab <dl_javascript@nhn.com>
+ */
+
+
+
+var inArray = __webpack_require__(5);
+var toArray = __webpack_require__(56);
+
+var elProto = Element.prototype;
+var matchSelector = elProto.matches ||
+    elProto.webkitMatchesSelector ||
+    elProto.mozMatchesSelector ||
+    elProto.msMatchesSelector ||
+    function(selector) {
+      var doc = this.document || this.ownerDocument;
+
+      return inArray(this, toArray(doc.querySelectorAll(selector))) > -1;
+    };
+
+/**
+ * Check element match selector
+ * @param {HTMLElement} element - element to check
+ * @param {string} selector - selector to check
+ * @returns {boolean} is selector matched to element?
+ * @memberof module:domUtil
+ */
+function matches(element, selector) {
+  return matchSelector.call(element, selector);
+}
+
+module.exports = matches;
+
+
+/***/ }),
+/* 56 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/**
+ * @fileoverview Transform the Array-like object to Array.
+ * @author NHN FE Development Lab <dl_javascript@nhn.com>
+ */
+
+
+
+var forEachArray = __webpack_require__(6);
+
+/**
+ * Transform the Array-like object to Array.
+ * In low IE (below 8), Array.prototype.slice.call is not perfect. So, try-catch statement is used.
+ * @param {*} arrayLike Array-like object
+ * @returns {Array} Array
+ * @memberof module:collection
+ * @example
+ * var toArray = require('tui-code-snippet/collection/toArray'); // node, commonjs
+ *
+ * var arrayLike = {
+ *     0: 'one',
+ *     1: 'two',
+ *     2: 'three',
+ *     3: 'four',
+ *     length: 4
+ * };
+ * var result = toArray(arrayLike);
+ *
+ * alert(result instanceof Array); // true
+ * alert(result); // one,two,three,four
+ */
+function toArray(arrayLike) {
+  var arr;
+  try {
+    arr = Array.prototype.slice.call(arrayLike);
+  } catch (e) {
+    arr = [];
+    forEachArray(arrayLike, function(value) {
+      arr.push(value);
+    });
+  }
+
+  return arr;
+}
+
+module.exports = toArray;
+
+
+/***/ }),
+/* 57 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/* WEBPACK VAR INJECTION */(function(global) {/**
+ * @fileoverview Slider template
+ * @author NHN. FE Development Team <dl_javascript@nhn.com>
+ */
+
+
+var isOldBrowser = __webpack_require__(4).isOldBrowser;
+
+var layout = ['<div class="{{cssPrefix}}slider-left {{cssPrefix}}slider-part">{{slider}}</div>', '<div class="{{cssPrefix}}slider-right {{cssPrefix}}slider-part">{{huebar}}</div>'].join('\n');
+var SVGSlider = ['<svg class="{{cssPrefix}}svg {{cssPrefix}}svg-slider">', '<defs>', '<linearGradient id="{{cssPrefix}}svg-fill-color-{{id}}" x1="0%" y1="0%" x2="100%" y2="0%">', '<stop offset="0%" stop-color="rgb(255,255,255)" />', '<stop class="{{cssPrefix}}slider-basecolor" offset="100%" stop-color="rgb(255,0,0)" />', '</linearGradient>', '<linearGradient id="{{cssPrefix}}svn-fill-black-{{id}}" x1="0%" y1="0%" x2="0%" y2="100%">', '<stop offset="0%" style="stop-color:rgb(0,0,0);stop-opacity:0" />', '<stop offset="100%" style="stop-color:rgb(0,0,0);stop-opacity:1" />', '</linearGradient>', '</defs>', '<rect width="100%" height="100%" fill="url(#{{cssPrefix}}svg-fill-color-{{id}})"></rect>', '<rect width="100%" height="100%" fill="url(#{{cssPrefix}}svn-fill-black-{{id}})"></rect>', '<path transform="translate(0,0)" class="{{cssPrefix}}slider-handle" d="M0 7.5 L15 7.5 M7.5 15 L7.5 0 M2 7 a5.5 5.5 0 1 1 0 1 Z" stroke="black" stroke-width="0.75" fill="none" />', '</svg>'].join('\n');
+var VMLSlider = ['<div class="{{cssPrefix}}vml-slider">', '<v:rect strokecolor="none" class="{{cssPrefix}}vml {{cssPrefix}}vml-slider-bg">', '<v:fill class="{{cssPrefix}}vml {{cssPrefix}}slider-basecolor" type="gradient" method="none" color="#ff0000" color2="#fff" angle="90" />', '</v:rect>', '<v:rect strokecolor="#ccc" class="{{cssPrefix}}vml {{cssPrefix}}vml-slider-bg">', '<v:fill type="gradient" method="none" color="black" color2="white" o:opacity2="0%" class="{{cssPrefix}}vml" />', '</v:rect>', '<v:shape class="{{cssPrefix}}vml {{cssPrefix}}slider-handle" coordsize="1 1" style="width:1px;height:1px;"' + 'path="m 0,7 l 14,7 m 7,14 l 7,0 ar 12,12 2,2 z" filled="false" stroked="true" />', '</div>'].join('\n');
+var SVGHuebar = ['<svg class="{{cssPrefix}}svg {{cssPrefix}}svg-huebar">', '<defs>', '<linearGradient id="g-{{id}}" x1="0%" y1="0%" x2="0%" y2="100%">', '<stop offset="0%" stop-color="rgb(255,0,0)" />', '<stop offset="16.666%" stop-color="rgb(255,255,0)" />', '<stop offset="33.333%" stop-color="rgb(0,255,0)" />', '<stop offset="50%" stop-color="rgb(0,255,255)" />', '<stop offset="66.666%" stop-color="rgb(0,0,255)" />', '<stop offset="83.333%" stop-color="rgb(255,0,255)" />', '<stop offset="100%" stop-color="rgb(255,0,0)" />', '</linearGradient>', '</defs>', '<rect width="18px" height="100%" fill="url(#g-{{id}})"></rect>', '<path transform="translate(-6,-3)" class="{{cssPrefix}}huebar-handle" d="M0 0 L4 4 L0 8 L0 0 Z" fill="black" stroke="none" />', '</svg>'].join('\n');
+var VMLHuebar = ['<div class="{{cssPrefix}}vml-huebar">', '<v:rect strokecolor="#ccc" class="{{cssPrefix}}vml {{cssPrefix}}vml-huebar-bg">', '<v:fill type="gradient" method="none" colors="' + '0% rgb(255,0,0), 16.666% rgb(255,255,0), 33.333% rgb(0,255,0), 50% rgb(0,255,255), 66.666% rgb(0,0,255), 83.333% rgb(255,0,255), 100% rgb(255,0,0)' + '" angle="180" class="{{cssPrefix}}vml" />', '</v:rect>', '<v:shape class="{{cssPrefix}}vml {{cssPrefix}}huebar-handle" coordsize="1 1" style="width:1px;height:1px;position:absolute;z-index:1;right:22px;top:-3px;"' + 'path="m 0,0 l 4,4 l 0,8 l 0,0 z" filled="true" fillcolor="black" stroked="false" />', '</div>'].join('\n');
+
+if (isOldBrowser) {
+  global.document.namespaces.add('v', 'urn:schemas-microsoft-com:vml');
+}
+
+module.exports = {
+  layout: layout,
+  slider: isOldBrowser ? VMLSlider : SVGSlider,
+  huebar: isOldBrowser ? VMLHuebar : SVGHuebar
+};
+/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(25)))
+
+/***/ })
+/******/ ]);
+});
\ No newline at end of file
diff --git a/admin/js/vendors/tui.color-picker/tui-color-picker.min.css b/admin/js/vendors/tui.color-picker/tui-color-picker.min.css
new file mode 100644 (file)
index 0000000..d42ca53
--- /dev/null
@@ -0,0 +1,6 @@
+/*!
+ * TOAST UI Color Picker
+ * @version 2.2.6
+ * @author NHN FE Development Team <dl_javascript@nhn.com>
+ * @license MIT
+ */.tui-colorpicker-clearfix{zoom:1}.tui-colorpicker-clearfix:after{content:"";display:block;clear:both}.tui-colorpicker-vml{behavior:url(#default#VML);display:block}.tui-colorpicker-container,.tui-colorpicker-palette-container{width:152px}.tui-colorpicker-palette-container ul{width:152px;margin:0;padding:0}.tui-colorpicker-palette-container li{float:left;margin:0;padding:0 3px 3px 0;list-style:none}.tui-colorpicker-palette-button{display:block;overflow:hidden;outline:none;margin:0;padding:0;width:16px;height:16px;border:1px solid #ccc;cursor:pointer}.tui-colorpicker-palette-button.tui-colorpicker-selected{border:2px solid #000}.tui-colorpicker-palette-button.tui-colorpicker-color-transparent{barckground-repeat:repeat;background-repeat:no-repeat;background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA0AAAAOCAYAAAD0f5bSAAABfGlDQ1BJQ0MgUHJvZmlsZQAAKJFjYGAqSSwoyGFhYGDIzSspCnJ3UoiIjFJgv8PAzcDDIMRgxSCemFxc4BgQ4MOAE3y7xsAIoi/rgsxK8/x506a1fP4WNq+ZclYlOrj1gQF3SmpxMgMDIweQnZxSnJwLZOcA2TrJBUUlQPYMIFu3vKQAxD4BZIsUAR0IZN8BsdMh7A8gdhKYzcQCVhMS5AxkSwDZAkkQtgaInQ5hW4DYyRmJKUC2B8guiBvAgNPDRcHcwFLXkYC7SQa5OaUwO0ChxZOaFxoMcgcQyzB4MLgwKDCYMxgwWDLoMjiWpFaUgBQ65xdUFmWmZ5QoOAJDNlXBOT+3oLQktUhHwTMvWU9HwcjA0ACkDhRnEKM/B4FNZxQ7jxDLX8jAYKnMwMDcgxBLmsbAsH0PA4PEKYSYyjwGBn5rBoZt5woSixLhDmf8xkKIX5xmbARh8zgxMLDe+///sxoDA/skBoa/E////73o//+/i4H2A+PsQA4AJHdp4IxrEg8AAAGbaVRYdFhNTDpjb20uYWRvYmUueG1wAAAAAAA8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJYTVAgQ29yZSA1LjQuMCI+CiAgIDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIj4KICAgICAgICAgPGV4aWY6UGl4ZWxYRGltZW5zaW9uPjEzPC9leGlmOlBpeGVsWERpbWVuc2lvbj4KICAgICAgICAgPGV4aWY6UGl4ZWxZRGltZW5zaW9uPjE0PC9leGlmOlBpeGVsWURpbWVuc2lvbj4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+CghrN1AAAABzSURBVCgVldKxEYAgDAXQD5VOpLuwgi4jlrTMqF00oOd5Aia/CcV/F4oYOgNlrLjvVyCEVJchBjEC25538PeaWTzRMBLxvIL7UZwFwL06qoA6aoAy+gFfJABvJAQPUoCMlICRRd8BzgHzJL4ok9aJ67l4AK9AxVKhHryUAAAAAElFTkSuQmCC")}.tui-colorpicker-palette-hex{font-family:monospace;width:60px}.tui-colorpicker-palette-hex,.tui-colorpicker-palette-preview{display:inline-block;*display:inline;zoom:1;vertical-align:middle}.tui-colorpicker-palette-preview{width:12px;height:12px;border:1px solid #ccc;overflow:hidden}.tui-colorpicker-palette-toggle-slider{display:inline-block;*display:inline;zoom:1;vertical-align:middle;float:right}.tui-colorpicker-slider-container{margin:5px 0 0;height:122px;zoom:1}.tui-colorpicker-slider-container:after{content:"";display:block;clear:both}.tui-colorpicker-slider-left{float:left;width:120px;height:120px}.tui-colorpicker-slider-right{float:right;width:32px;height:120px}.tui-colorpicker-svg{display:block}.tui-colorpicker-slider-handle{position:absolute;overflow:visible;top:0;left:0;width:1px;height:1px;z-index:2;opacity:.9}.tui-colorpicker-svg-slider,.tui-colorpicker-vml-slider{width:120px;height:120px;border:1px solid #ccc;overflow:hidden}.tui-colorpicker-vml-slider{position:relative}.tui-colorpicker-vml-slider-bg{position:absolute;margin:-1px 0 0 -1px;top:0;left:0;width:122px;height:122px}.tui-colorpicker-svg-huebar{float:right;width:18px;height:120px;border:1px solid #ccc;overflow:visible}.tui-colorpicker-vml-huebar{width:32px;position:relative}.tui-colorpicker-vml-huebar-bg{position:absolute;top:0;right:0;width:18px;height:121px}
\ No newline at end of file
diff --git a/admin/js/vendors/tui.color-picker/tui-color-picker.min.js b/admin/js/vendors/tui.color-picker/tui-color-picker.min.js
new file mode 100644 (file)
index 0000000..91e4a06
--- /dev/null
@@ -0,0 +1,7 @@
+/*!
+ * TOAST UI Color Picker
+ * @version 2.2.6
+ * @author NHN FE Development Team <dl_javascript@nhn.com>
+ * @license MIT
+ */
+!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.colorPicker=e():(t.tui=t.tui||{},t.tui.colorPicker=e())}(window,(function(){return function(t){var e={};function n(r){if(e[r])return e[r].exports;var o=e[r]={i:r,l:!1,exports:{}};return t[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var o in t)n.d(r,o,function(e){return t[e]}.bind(null,o));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="dist",n(n.s=33)}([function(t,e,n){"use strict";t.exports=function(t,e){var n,r,o,i,s=Object.prototype.hasOwnProperty;for(o=1,i=arguments.length;o<i;o+=1)for(r in n=arguments[o])s.call(n,r)&&(t[r]=n[r]);return t}},function(t,e,n){"use strict";t.exports=function(t){return t instanceof Array}},function(t,e,n){"use strict";var r=n(1),o=n(6),i=n(7);t.exports=function(t,e,n){r(t)?o(t,e,n):i(t,e,n)}},function(t,e,n){"use strict";t.exports=function(t){return void 0===t}},function(t,e,n){"use strict";var r=n(22),o=n(2),i=n(6),s=n(7),c=n(37),a=0,l={getLength:function(t){var e=0;return s(t,(function(){e+=1})),e},map:function(t,e,n){var r=[];return o(t,(function(){r.push(e.apply(n||null,arguments))})),r},filter:function(t,e,n){var r=[];return i(t,(function(t){e.apply(n||null,arguments)&&r.push(t)})),r},generateId:function(){return a+=1},isOldBrowser:r.msie&&r.version<9,sendHostName:function(){c("color-picker","UA-129987462-1")}};t.exports=l},function(t,e,n){"use strict";var r=n(1);t.exports=function(t,e,n){var o,i;if(n=n||0,!r(e))return-1;if(Array.prototype.indexOf)return Array.prototype.indexOf.call(e,t,n);for(i=e.length,o=n;n>=0&&o<i;o+=1)if(e[o]===t)return o;return-1}},function(t,e,n){"use strict";t.exports=function(t,e,n){var r=0,o=t.length;for(n=n||null;r<o&&!1!==e.call(n,t[r],r,t);r+=1);}},function(t,e,n){"use strict";t.exports=function(t,e,n){var r;for(r in n=n||null,t)if(t.hasOwnProperty(r)&&!1===e.call(n,t[r],r,t))break}},function(t,e,n){"use strict";var r=n(39),o=n(13),i=n(41),s=n(3),c=n(9),a=n(19),l=n(4);function u(t,e){var n=l.generateId();t=t||{},s(e)&&(e=c.appendHTMLElement("div")),r(e,"tui-view-"+n),this.id=n,this.container=e,this.childs=new a((function(t){return t.id})),this.parent=null}u.prototype.addChild=function(t,e){e&&e.call(t,this),t.parent=this,this.childs.add(t)},u.prototype.removeChild=function(t,e){var n=i(t)?this.childs.items[t]:t;e&&e.call(n,this),this.childs.remove(n.id)},u.prototype.render=function(){this.childs.each((function(t){t.render()}))},u.prototype.recursive=function(t,e){o(t)&&(e||t(this),this.childs.each((function(e){e.recursive(t)})))},u.prototype.resize=function(){for(var t=Array.prototype.slice.call(arguments),e=this.parent;e;)o(e._onResize)&&e._onResize.apply(e,t),e=e.parent},u.prototype._beforeDestroy=function(){},u.prototype._destroy=function(){this._beforeDestroy(),this.container.innerHTML="",this.id=this.parent=this.childs=this.container=null},u.prototype.destroy=function(t){this.childs&&(this.childs.each((function(t){t.destroy(!0),t._destroy()})),this.childs.clear()),t||this._destroy()},u.prototype.getViewBound=function(){var t=this.container.getBoundingClientRect();return{x:t.left,y:t.top,width:t.right-t.left,height:t.bottom-t.top}},t.exports=u},function(t,e,n){"use strict";var r={appendHTMLElement:function(t,e,n){var r=document.createElement(t);return r.className=n||"",e?e.appendChild(r):document.body.appendChild(r),r}};t.exports=r},function(t,e,n){"use strict";var r=n(0),o=n(20),i=n(11),s=n(21),c=n(1),a=n(13),l=n(2),u=/\s+/g;function f(){this.events=null,this.contexts=null}f.mixin=function(t){r(t.prototype,f.prototype)},f.prototype._getHandlerItem=function(t,e){var n={handler:t};return e&&(n.context=e),n},f.prototype._safeEvent=function(t){var e,n=this.events;return n||(n=this.events={}),t&&((e=n[t])||(e=[],n[t]=e),n=e),n},f.prototype._safeContext=function(){var t=this.contexts;return t||(t=this.contexts=[]),t},f.prototype._indexOfContext=function(t){for(var e=this._safeContext(),n=0;e[n];){if(t===e[n][0])return n;n+=1}return-1},f.prototype._memorizeContext=function(t){var e,n;o(t)&&(e=this._safeContext(),(n=this._indexOfContext(t))>-1?e[n][1]+=1:e.push([t,1]))},f.prototype._forgetContext=function(t){var e,n;o(t)&&(e=this._safeContext(),(n=this._indexOfContext(t))>-1&&(e[n][1]-=1,e[n][1]<=0&&e.splice(n,1)))},f.prototype._bindEvent=function(t,e,n){var r=this._safeEvent(t);this._memorizeContext(n),r.push(this._getHandlerItem(e,n))},f.prototype.on=function(t,e,n){var r=this;i(t)?(t=t.split(u),l(t,(function(t){r._bindEvent(t,e,n)}))):s(t)&&(n=e,l(t,(function(t,e){r.on(e,t,n)})))},f.prototype.once=function(t,e,n){var r=this;if(s(t))return n=e,void l(t,(function(t,e){r.once(e,t,n)}));this.on(t,(function o(){e.apply(n,arguments),r.off(t,o,n)}),n)},f.prototype._spliceMatches=function(t,e){var n,r=0;if(c(t))for(n=t.length;r<n;r+=1)!0===e(t[r])&&(t.splice(r,1),n-=1,r-=1)},f.prototype._matchHandler=function(t){var e=this;return function(n){var r=t===n.handler;return r&&e._forgetContext(n.context),r}},f.prototype._matchContext=function(t){var e=this;return function(n){var r=t===n.context;return r&&e._forgetContext(n.context),r}},f.prototype._matchHandlerAndContext=function(t,e){var n=this;return function(r){var o=t===r.handler,i=e===r.context,s=o&&i;return s&&n._forgetContext(r.context),s}},f.prototype._offByEventName=function(t,e){var n=this,r=a(e),o=n._matchHandler(e);t=t.split(u),l(t,(function(t){var e=n._safeEvent(t);r?n._spliceMatches(e,o):(l(e,(function(t){n._forgetContext(t.context)})),n.events[t]=[])}))},f.prototype._offByHandler=function(t){var e=this,n=this._matchHandler(t);l(this._safeEvent(),(function(t){e._spliceMatches(t,n)}))},f.prototype._offByObject=function(t,e){var n,r=this;this._indexOfContext(t)<0?l(t,(function(t,e){r.off(e,t)})):i(e)?(n=this._matchContext(t),r._spliceMatches(this._safeEvent(e),n)):a(e)?(n=this._matchHandlerAndContext(e,t),l(this._safeEvent(),(function(t){r._spliceMatches(t,n)}))):(n=this._matchContext(t),l(this._safeEvent(),(function(t){r._spliceMatches(t,n)})))},f.prototype.off=function(t,e){i(t)?this._offByEventName(t,e):arguments.length?a(t)?this._offByHandler(t):s(t)&&this._offByObject(t,e):(this.events={},this.contexts=[])},f.prototype.fire=function(t){this.invoke.apply(this,arguments)},f.prototype.invoke=function(t){var e,n,r,o;if(!this.hasListener(t))return!0;for(e=this._safeEvent(t),n=Array.prototype.slice.call(arguments,1),r=0;e[r];){if(!1===(o=e[r]).handler.apply(o.context,n))return!1;r+=1}return!0},f.prototype.hasListener=function(t){return this.getListenerLength(t)>0},f.prototype.getListenerLength=function(t){return this._safeEvent(t).length},t.exports=f},function(t,e,n){"use strict";t.exports=function(t){return"string"==typeof t||t instanceof String}},function(t,e,n){"use strict";var r=/(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i,o={leadingZero:function(t,e){var n="",r=0;if((t+"").length>e)return t+"";for(;r<e-1;r+=1)n+="0";return(n+t).slice(-1*e)},isValidRGB:function(t){return r.test(t)},hexToRGB:function(t){return!!o.isValidRGB(t)&&(t=t.substring(1),[parseInt(t.substr(0,2),16),parseInt(t.substr(2,2),16),parseInt(t.substr(4,2),16)])},rgbToHEX:function(t,e,n){var r="#"+o.leadingZero(t.toString(16),2)+o.leadingZero(e.toString(16),2)+o.leadingZero(n.toString(16),2);return!!o.isValidRGB(r)&&r},rgbToHSV:function(t,e,n){var r,o,i,s,c,a;if(t/=255,e/=255,n/=255,c=r=Math.max(t,e,n),a=r-(o=Math.min(t,e,n)),s=0===r?0:a/r,r===o)i=0;else{switch(r){case t:i=(e-n)/a+(e<n?6:0);break;case e:i=(n-t)/a+2;break;case n:i=(t-e)/a+4}i/=6}return[Math.round(360*i),Math.round(100*s),Math.round(100*c)]},hsvToRGB:function(t,e,n){var r,o,i,s,c,a,l,u;if(t=Math.max(0,Math.min(360,t)),e=Math.max(0,Math.min(100,e)),n=Math.max(0,Math.min(100,n)),n/=100,0===(e/=100))return r=o=i=n,[Math.round(255*r),Math.round(255*o),Math.round(255*i)];switch(a=n*(1-e),l=n*(1-e*(c=(t/=60)-(s=Math.floor(t)))),u=n*(1-e*(1-c)),s){case 0:r=n,o=u,i=a;break;case 1:r=l,o=n,i=a;break;case 2:r=a,o=n,i=u;break;case 3:r=a,o=l,i=n;break;case 4:r=u,o=a,i=n;break;default:r=n,o=a,i=l}return[Math.round(255*r),Math.round(255*o),Math.round(255*i)]}};t.exports=o},function(t,e,n){"use strict";t.exports=function(t){return t instanceof Function}},function(t,e,n){"use strict";var r=n(11),o=n(2),i=n(26);function s(t,e,n,r){function s(e){n.call(r||t,e||window.event)}"addEventListener"in t?t.addEventListener(e,s):"attachEvent"in t&&t.attachEvent("on"+e,s),function(t,e,n,r){var s=i(t,e),c=!1;o(s,(function(t){return t.handler!==n||(c=!0,!1)})),c||s.push({handler:n,wrappedHandler:r})}(t,e,n,s)}t.exports=function(t,e,n,i){r(e)?o(e.split(/\s+/g),(function(e){s(t,e,n,i)})):o(e,(function(e,r){s(t,r,e,n)}))}},function(t,e,n){"use strict";t.exports=function(t){t.preventDefault?t.preventDefault():t.returnValue=!1}},function(t,e,n){"use strict";t.exports=function(t){return t.replace(/([A-Z])/g,(function(t){return"-"+t.toLowerCase()}))}},function(t,e,n){"use strict";var r=n(11),o=n(2),i=n(26);function s(t,e,n){var r,s=i(t,e);n?(o(s,(function(o,i){return n!==o.handler||(c(t,e,o.wrappedHandler),r=i,!1)})),s.splice(r,1)):(o(s,(function(n){c(t,e,n.wrappedHandler)})),s.splice(0,s.length))}function c(t,e,n){"removeEventListener"in t?t.removeEventListener(e,n):"detachEvent"in t&&t.detachEvent("on"+e,n)}t.exports=function(t,e,n){r(e)?o(e.split(/\s+/g),(function(e){s(t,e,n)})):o(e,(function(e,n){s(t,n,e)}))}},function(t,e,n){"use strict";var r=n(50);t.exports=function(t,e){var n=r(e.prototype);n.constructor=t,t.prototype=n}},function(t,e,n){"use strict";var r=n(6),o=n(7),i=n(0),s=n(1),c=n(20),a=n(13),l=n(21),u=n(4),f=Array.prototype.slice;function p(t){this.items={},this.length=0,a(t)&&(this.getItemID=t)}p.and=function(t){var e;return t=f.call(arguments),e=t.length,function(n){for(var r=0;r<e;r+=1)if(!t[r].call(null,n))return!1;return!0}},p.or=function(t){var e;return t=f.call(arguments),e=t.length,function(n){for(var r=1,o=t[0].call(null,n);r<e;r+=1)o=o||t[r].call(null,n);return o}},p.merge=function(t){var e={},n=new p(t.getItemID);return r(arguments,(function(t){i(e,t.items)})),n.items=e,n.length=u.getLength(n.items),n},p.prototype.getItemID=function(t){return t._id+""},p.prototype.add=function(t){var e,n;arguments.length>1?r(f.call(arguments),(function(t){this.add(t)}),this):(e=this.getItemID(t),(n=this.items)[e]||(this.length+=1),n[e]=t)},p.prototype.remove=function(t){var e,n,r=[];return this.length?arguments.length>1?r=u.map(f.call(arguments),(function(t){return this.remove(t)}),this):(e=this.items,l(t)&&(t=this.getItemID(t)),e[t]?(this.length-=1,n=e[t],delete e[t],n):r):r},p.prototype.clear=function(){this.items={},this.length=0},p.prototype.has=function(t){var e,n;return!!this.length&&(e=a(t),n=!1,e?this.each((function(e){return!0!==t(e)||(n=!0,!1)})):(t=l(t)?this.getItemID(t):t,n=c(this.items[t])),n)},p.prototype.doWhenHas=function(t,e,n){var r=this.items[t];c(r)&&e.call(n||this,r)},p.prototype.find=function(t){var e=new p;return this.hasOwnProperty("getItemID")&&(e.getItemID=this.getItemID),this.each((function(n){!0===t(n)&&e.add(n)})),e},p.prototype.groupBy=function(t,e){var n,o,i={},c=a(t),l=this.getItemID;if(s(t)){if(r(t,(function(t){i[t+""]=new p(l)})),!e)return i;t=e,c=!0}return this.each((function(e){c?o=t(e):(o=e[t],a(o)&&(o=o.apply(e))),(n=i[o])||(n=i[o]=new p(l)),n.add(e)})),i},p.prototype.single=function(){var t;return this.each((function(e){return t=e,!1}),this),t},p.prototype.sort=function(t){var e=[];return this.each((function(t){e.push(t)})),a(t)&&(e=e.sort(t)),e},p.prototype.each=function(t,e){o(this.items,t,e||this)},p.prototype.toArray=function(){return this.length?u.map(this.items,(function(t){return t})):[]},t.exports=p},function(t,e,n){"use strict";var r=n(3),o=n(36);t.exports=function(t){return!r(t)&&!o(t)}},function(t,e,n){"use strict";t.exports=function(t){return t===Object(t)}},function(t,e,n){"use strict";var r,o,i,s,c,a,l,u,f,p,h={chrome:!1,firefox:!1,safari:!1,msie:!1,edge:!1,others:!1,version:0};window&&window.navigator&&(i=window.navigator,s=i.appName.replace(/\s/g,"_"),c=i.userAgent,a=/MSIE\s([0-9]+[.0-9]*)/,l=/Trident.*rv:11\./,u=/Edge\/(\d+)\./,f={firefox:/Firefox\/(\d+)\./,chrome:/Chrome\/(\d+)\./,safari:/Version\/([\d.]+).*Safari\/(\d+)/},(p={Microsoft_Internet_Explorer:function(){var t=c.match(a);t?(h.msie=!0,h.version=parseFloat(t[1])):h.others=!0},Netscape:function(){var t=!1;if(l.exec(c))h.msie=!0,h.version=11,t=!0;else if(u.exec(c))h.edge=!0,h.version=c.match(u)[1],t=!0;else for(r in f)if(f.hasOwnProperty(r)&&(o=c.match(f[r]))&&o.length>1){h[r]=t=!0,h.version=parseFloat(o[1]||0);break}t||(h.others=!0)}})[s]&&p[s]()),t.exports=h},function(t,e,n){"use strict";var r=n(3);t.exports=function(t){return t&&t.className?r(t.className.baseVal)?t.className:t.className.baseVal:""}},function(t,e,n){"use strict";(function(e){var r=n(10),o=n(42),i=n(44),s=n(47),c=n(28),a=n(17),l=n(14),u=n(15),f=n(0);function p(t,e){l(e,"mousedown",this._onMouseDown,this),this.options=f({distance:10},t),this.container=e,this._isMoved=!1,this._distance=0,this._dragStartFired=!1,this._dragStartEventData=null}p.prototype.destroy=function(){a(this.container,"mousedown",this._onMouseDown),this.options=this.container=this._isMoved=this._distance=this._dragStartFired=this._dragStartEventData=null},p.prototype._toggleDragEvent=function(t){var n=this.container;t?(o(n),l(window,"dragstart",u),l(e.document,{mousemove:this._onMouseMove,mouseup:this._onMouseUp},this)):(i(n),a(window,"dragstart",u),a(e.document,{mousemove:this._onMouseMove,mouseup:this._onMouseUp}))},p.prototype._getEventData=function(t){return{target:c(t),originEvent:t}},p.prototype._onMouseDown=function(t){0===s(t)&&(this._distance=0,this._dragStartFired=!1,this._dragStartEventData=this._getEventData(t),this._toggleDragEvent(!0))},p.prototype._onMouseMove=function(t){var e=this.options.distance;u(t),this._isMoved=!0,this._distance<e?this._distance+=1:this._dragStartFired||(this._dragStartFired=!0,this.invoke("dragStart",this._dragStartEventData))?this.fire("drag",this._getEventData(t)):this._toggleDragEvent(!1)},p.prototype._onMouseUp=function(t){if(this._toggleDragEvent(!1),this._isMoved)return this._isMoved=!1,void this.fire("dragEnd",this._getEventData(t));this.fire("click",this._getEventData(t))},r.mixin(p),t.exports=p}).call(this,n(25))},function(t,e){var n;n=function(){return this}();try{n=n||new Function("return this")()}catch(t){"object"==typeof window&&(n=window)}t.exports=n},function(t,e,n){"use strict";var r="_feEventKey";t.exports=function(t,e){var n,o=t[r];return o||(o=t[r]={}),(n=o[e])||(n=o[e]=[]),n}},function(t,e,n){"use strict";t.exports=function(t){var e,n,r=document.documentElement.style;for(e=0,n=t.length;e<n;e+=1)if(t[e]in r)return t[e];return!1}},function(t,e,n){"use strict";t.exports=function(t){return t.target||t.srcElement}},function(t,e,n){"use strict";var r=n(10),o=n(28),i=n(17),s=n(14),c=n(30),a=n(0),l=n(18),u=n(9),f=n(12),p=n(8),h=n(51);function d(t,e){this.options=a({cssPrefix:"tui-colorpicker-",preset:["#181818","#282828","#383838","#585858","#B8B8B8","#D8D8D8","#E8E8E8","#F8F8F8","#AB4642","#DC9656","#F7CA88","#A1B56C","#86C1B9","#7CAFC2","#BA8BAF","#A16946"],detailTxt:"Detail"},t),e=u.appendHTMLElement("div",e,this.options.cssPrefix+"palette-container"),p.call(this,t,e)}l(d,p),d.prototype._onClick=function(t){var e=this.options,n=o(t),r={};if(c(n,e.cssPrefix+"palette-button"))return r.color=n.value,void this.fire("_selectColor",r);c(n,e.cssPrefix+"palette-toggle-slider")&&this.fire("_toggleSlider")},d.prototype._onChange=function(t){var e=this.options,n=o(t),r={};c(n,e.cssPrefix+"palette-hex")&&(r.color=n.value,this.fire("_selectColor",r))},d.prototype._beforeDestroy=function(){this._toggleEvent(!1)},d.prototype._toggleEvent=function(t){var e,n=this.options,r=this.container,o=t?s:i;o(r,"click",this._onClick,this),(e=r.querySelector("."+n.cssPrefix+"palette-hex",r))&&o(e,"change",this._onChange,this)},d.prototype.render=function(t){var e,n=this.options;this._toggleEvent(!1),e=h({cssPrefix:n.cssPrefix,preset:n.preset,detailTxt:n.detailTxt,color:t,isValidRGB:f.isValidRGB,getItemClass:function(t){return t?"":" "+n.cssPrefix+"color-transparent"},isSelected:function(e){return e===t?" "+n.cssPrefix+"selected":""}}),this.container.innerHTML=e,this._toggleEvent(!0)},r.mixin(d),t.exports=d},function(t,e,n){"use strict";var r=n(5),o=n(23);t.exports=function(t,e){var n;return t.classList?t.classList.contains(e):(n=o(t).split(/\s+/),r(e,n)>-1)}},function(t,e,n){"use strict";var r=n(10),o=n(53),i=n(54),s=n(30),c=n(0),a=n(18),l=n(9),u=n(32),f=n(12),p=n(8),h=n(24),d=n(57),v=[-7,112],g=[-3,115];function m(t,e){(e=l.appendHTMLElement("div",e,t.cssPrefix+"slider-container")).style.display="none",p.call(this,t,e),this.options=c({color:"#f8f8f8",cssPrefix:"tui-colorpicker-"},t),this._dragDataCache={},this.sliderHandleElement=null,this.huebarHandleElement=null,this.baseColorElement=null,this.drag=new h({distance:0},e),this.drag.on({dragStart:this._onDragStart,drag:this._onDrag,dragEnd:this._onDragEnd,click:this._onClick},this)}a(m,p),m.prototype._beforeDestroy=function(){this.drag.off(),this.drag=this.options=this._dragDataCache=this.sliderHandleElement=this.huebarHandleElement=this.baseColorElement=null},m.prototype.toggle=function(t){this.container.style.display=t?"block":"none"},m.prototype.isVisible=function(){return"block"===this.container.style.display},m.prototype.render=function(t){var e,n,r=this.container,o=this.options,i=d.layout;f.isValidRGB(t)&&(i=(i=(i=(i=i.replace(/{{slider}}/,d.slider)).replace(/{{huebar}}/,d.huebar)).replace(/{{cssPrefix}}/g,o.cssPrefix)).replace(/{{id}}/g,o.id),this.container.innerHTML=i,this.sliderHandleElement=r.querySelector("."+o.cssPrefix+"slider-handle"),this.huebarHandleElement=r.querySelector("."+o.cssPrefix+"huebar-handle"),this.baseColorElement=r.querySelector("."+o.cssPrefix+"slider-basecolor"),e=f.hexToRGB(t),n=f.rgbToHSV.apply(null,e),this.moveHue(n[0],!0),this.moveSaturationAndValue(n[1],n[2],!0))},m.prototype._moveColorSliderHandle=function(t,e,n){var r,o=this.sliderHandleElement;e=Math.max(v[0],e),e=Math.min(v[1],e),t=Math.max(v[0],t),t=Math.min(v[1],t),u.setTranslateXY(o,t,e),r=e>50?"white":"black",u.setStrokeColor(o,r),n||this.fire("_selectColor",{color:f.rgbToHEX.apply(null,this.getRGB())})},m.prototype.moveSaturationAndValue=function(t,e,n){var r,o,i,s;t=t||0,e=e||0,r=Math.abs(v[0]),i=t*(o=v[1])/100-r,s=o-e*o/100-r,this._moveColorSliderHandle(i,s,n)},m.prototype._moveColorSliderByPosition=function(t,e){var n=v[0];this._moveColorSliderHandle(t+n,e+n)},m.prototype.getSaturationAndValue=function(){var t=Math.abs(v[0]),e=t+v[1],n=u.getTranslateXY(this.sliderHandleElement);return[(n[1]+t)/e*100,100-(n[0]+t)/e*100]},m.prototype._moveHueHandle=function(t,e){var n,r,o=this.huebarHandleElement,i=this.baseColorElement;t=Math.max(g[0],t),t=Math.min(g[1],t),u.setTranslateY(o,t),n=f.hsvToRGB(this.getHue(),100,100),r=f.rgbToHEX.apply(null,n),u.setGradientColorStop(i,r),e||this.fire("_selectColor",{color:f.rgbToHEX.apply(null,this.getRGB())})},m.prototype.moveHue=function(t,e){var n,r;n=((r=Math.abs(g[0]))+g[1])*(t=t||0)/359.99-r,this._moveHueHandle(n,e)},m.prototype._moveHueByPosition=function(t){var e=g[0];this._moveHueHandle(t+e)},m.prototype.getHue=function(){var t,e,n=this.huebarHandleElement,r=u.getTranslateXY(n);return e=(t=Math.abs(g[0]))+g[1],359.99*(r[0]+t)/e},m.prototype.getHSV=function(){var t=this.getSaturationAndValue();return[this.getHue()].concat(t)},m.prototype.getRGB=function(){return f.hsvToRGB.apply(null,this.getHSV())},m.prototype._prepareColorSliderForMouseEvent=function(t){var e=this.options,n=i(t.target,"."+e.cssPrefix+"slider-part");return this._dragDataCache={isColorSlider:s(n,e.cssPrefix+"slider-left"),parentElement:n}},m.prototype._onClick=function(t){var e=this._prepareColorSliderForMouseEvent(t),n=o(t.originEvent,e.parentElement);e.isColorSlider?this._moveColorSliderByPosition(n[0],n[1]):this._moveHueByPosition(n[1]),this._dragDataCache=null},m.prototype._onDragStart=function(t){this._prepareColorSliderForMouseEvent(t)},m.prototype._onDrag=function(t){var e=this._dragDataCache,n=o(t.originEvent,e.parentElement);e.isColorSlider?this._moveColorSliderByPosition(n[0],n[1]):this._moveHueByPosition(n[1])},m.prototype._onDragEnd=function(){this._dragDataCache=null},r.mixin(m),t.exports=m},function(t,e,n){"use strict";var r=n(4).isOldBrowser,o=/[\.\-0-9]+/g,i={getTranslateXY:function(t){var e;return r?(e=t.style,[parseFloat(e.top),parseFloat(e.left)]):(e=t.getAttribute("transform"))?(e=e.match(o),[parseFloat(e[1]),parseFloat(e[0])]):[0,0]},setTranslateXY:function(t,e,n){r?(t.style.left=e+"px",t.style.top=n+"px"):t.setAttribute("transform","translate("+e+","+n+")")},setTranslateY:function(t,e){r?t.style.top=e+"px":t.setAttribute("transform","translate(-6,"+e+")")},setStrokeColor:function(t,e){r?t.strokecolor=e:t.setAttribute("stroke",e)},setGradientColorStop:function(t,e){r?t.color=e:t.setAttribute("stop-color",e)}};t.exports=i},function(t,e,n){n(34),t.exports=n(35)},function(t,e,n){},function(t,e,n){"use strict";var r={Collection:n(19),View:n(8),Drag:n(24),create:n(48),Palette:n(29),Slider:n(31),colorutil:n(12),svgvml:n(32)};t.exports=r},function(t,e,n){"use strict";t.exports=function(t){return null===t}},function(t,e,n){"use strict";var r=n(3),o=n(38),i=6048e5;t.exports=function(t,e){var n=location.hostname,s="TOAST UI "+t+" for "+n+": Statistics",c=window.localStorage.getItem(s);(r(window.tui)||!1!==window.tui.usageStatistics)&&(c&&!function(t){return(new Date).getTime()-t>i}(c)||(window.localStorage.setItem(s,(new Date).getTime()),setTimeout((function(){"interactive"!==document.readyState&&"complete"!==document.readyState||o("https://www.google-analytics.com/collect",{v:1,t:"event",tid:e,cid:n,dp:n,dh:t,el:t,ec:"use"})}),1e3)))}},function(t,e,n){"use strict";var r=n(7);t.exports=function(t,e){var n=document.createElement("img"),o="";return r(e,(function(t,e){o+="&"+e+"="+t})),o=o.substring(1),n.src=t+"?"+o,n.style.display="none",document.body.appendChild(n),document.body.removeChild(n),n}},function(t,e,n){"use strict";var r=n(2),o=n(5),i=n(23),s=n(40);t.exports=function(t){var e,n=Array.prototype.slice.call(arguments,1),c=t.classList,a=[];c?r(n,(function(e){t.classList.add(e)})):((e=i(t))&&(n=[].concat(e.split(/\s+/),n)),r(n,(function(t){o(t,a)<0&&a.push(t)})),s(t,a))}},function(t,e,n){"use strict";var r=n(1),o=n(3);t.exports=function(t,e){e=(e=r(e)?e.join(" "):e).replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,""),o(t.className.baseVal)?t.className=e:t.className.baseVal=e}},function(t,e,n){"use strict";t.exports=function(t){return"number"==typeof t||t instanceof Number}},function(t,e,n){"use strict";var r=n(14),o=n(15),i=n(43),s=n(27),c="onselectstart"in document,a="prevUserSelect",l=s(["userSelect","WebkitUserSelect","OUserSelect","MozUserSelect","msUserSelect"]);t.exports=function(t){t||(t=document),c?r(t,"selectstart",o):(t=t===document?document.documentElement:t,i(t,a,t.style[l]),t.style[l]="none")}},function(t,e,n){"use strict";var r=n(16);t.exports=function(t,e,n){t.dataset?t.dataset[e]=n:t.setAttribute("data-"+r(e),n)}},function(t,e,n){"use strict";var r=n(17),o=n(15),i=n(45),s=n(46),c=n(27),a="onselectstart"in document,l="prevUserSelect",u=c(["userSelect","WebkitUserSelect","OUserSelect","MozUserSelect","msUserSelect"]);t.exports=function(t){t||(t=document),a?r(t,"selectstart",o):((t=t===document?document.documentElement:t).style[u]=i(t,l)||"auto",s(t,l))}},function(t,e,n){"use strict";var r=n(16);t.exports=function(t,e){return t.dataset?t.dataset[e]:t.getAttribute("data-"+r(e))}},function(t,e,n){"use strict";var r=n(16);t.exports=function(t,e){t.dataset?delete t.dataset[e]:t.removeAttribute("data-"+r(e))}},function(t,e,n){"use strict";var r=n(22),o=n(5),i=["0","1","3","5","7"],s=["2","6"],c=["4"];t.exports=function(t){return r.msie&&r.version<=8?function(t){var e=String(t.button);if(o(e,i)>-1)return 0;if(o(e,s)>-1)return 2;if(o(e,c)>-1)return 1;return null}(t):t.button}},function(t,e,n){"use strict";var r=n(10),o=n(0),i=n(4),s=n(12),c=n(49),a=n(29),l=n(31),u=0;function f(t){var e;if(!(this instanceof f))return new f(t);if(!(t=this.options=o({container:null,color:"#f8f8f8",preset:["#181818","#282828","#383838","#585858","#b8b8b8","#d8d8d8","#e8e8e8","#f8f8f8","#ab4642","#dc9656","#f7ca88","#a1b56c","#86c1b9","#7cafc2","#ba8baf","#a16946"],cssPrefix:"tui-colorpicker-",detailTxt:"Detail",id:u+=1,usageStatistics:!0},t)).container)throw new Error("ColorPicker(): need container option.");e=this.layout=new c(t,t.container),this.palette=new a(t,e.container),this.palette.on({_selectColor:this._onSelectColorInPalette,_toggleSlider:this._onToggleSlider},this),this.slider=new l(t,e.container),this.slider.on("_selectColor",this._onSelectColorInSlider,this),e.addChild(this.palette),e.addChild(this.slider),this.render(t.color),t.usageStatistics&&i.sendHostName()}f.prototype._onSelectColorInPalette=function(t){var e=t.color,n=this.options;s.isValidRGB(e)||""===e?(this.fire("selectColor",{color:e,origin:"palette"}),n.color!==e&&(n.color=e,this.render(e))):this.render()},f.prototype._onToggleSlider=function(){this.slider.toggle(!this.slider.isVisible())},f.prototype._onSelectColorInSlider=function(t){var e=t.color,n=this.options;this.fire("selectColor",{color:e,origin:"slider"}),n.color!==e&&(n.color=e,this.palette.render(e))},f.prototype.setColor=function(t){if(!s.isValidRGB(t))throw new Error("ColorPicker#setColor(): need valid hex string color value");this.options.color=t,this.render(t)},f.prototype.getColor=function(){return this.options.color},f.prototype.toggle=function(t){this.layout.container.style.display=t?"block":"none"},f.prototype.render=function(t){this.layout.render(t||this.options.color)},f.prototype.destroy=function(){this.layout.destroy(),this.options.container.innerHTML="",this.layout=this.slider=this.palette=this.options=null},r.mixin(f),t.exports=f},function(t,e,n){"use strict";var r=n(0),o=n(18),i=n(9),s=n(8);function c(t,e){this.options=r({cssPrefix:"tui-colorpicker-"},t),e=i.appendHTMLElement("div",e,this.options.cssPrefix+"container"),s.call(this,t,e),this.render()}o(c,s),c.prototype.render=function(t){this.recursive((function(e){e.render(t)}),!0)},t.exports=c},function(t,e,n){"use strict";t.exports=function(t){function e(){}return e.prototype=t,new e}},function(t,e,n){"use strict";var r=n(52);t.exports=function(t){var e=['<ul class="{{cssPrefix}}clearfix">',"{{each preset}}",['<li><input class="{{cssPrefix}}palette-button{{isSelected @this}}{{getItemClass @this}}" type="button"',"{{if isValidRGB @this}}",' style="background-color:{{@this}};color:{{@this}}"',"{{/if}}",' title="{{@this}}" value="{{@this}}" /></li>'].join(""),"{{/each}}","</ul>",'<div class="{{cssPrefix}}clearfix" style="overflow:hidden">','<input type="button" class="{{cssPrefix}}palette-toggle-slider" value="{{detailTxt}}" />','<input type="text" class="{{cssPrefix}}palette-hex" value="{{color}}" maxlength="7" />','<span class="{{cssPrefix}}palette-preview" style="background-color:{{color}};color:{{color}}">{{color}}</span>',"</div>"].join("\n");return r(e,t)}},function(t,e,n){"use strict";var r=n(5),o=n(2),i=n(1),s=n(11),c=n(0),a=/{{\s?|\s?}}/g,l=/^[a-zA-Z0-9_@]+\[[a-zA-Z0-9_@"']+\]$/,u=/\[\s?|\s?\]/,f=/^[a-zA-Z_]+\.[a-zA-Z_]+$/,p=/\./,h=/^["']\w+["']$/,d=/"|'/g,v=/^-?\d+\.?\d*$/,g=2,m={if:function(t,e,n){var r=function(t,e){var n=[t],r=[],i=0,s=0;return o(e,(function(t,o){0===t.indexOf("if")?i+=1:"/if"===t?i-=1:i||0!==t.indexOf("elseif")&&"else"!==t||(n.push("else"===t?["true"]:t.split(" ").slice(1)),r.push(e.slice(s,o)),s=o+1)})),r.push(e.slice(s)),{exps:n,sourcesInsideIf:r}}(t,e),i=!1,s="";return o(r.exps,(function(t,e){return(i=b(t,n))&&(s=E(r.sourcesInsideIf[e],n)),!i})),s},each:function(t,e,n){var r=b(t,n),s=i(r)?"@index":"@key",a={},l="";return o(r,(function(t,r){a[s]=r,a["@this"]=t,c(n,a),l+=E(e.slice(),n)})),l},with:function(t,e,n){var o=r("as",t),i=t[o+1],s=b(t.slice(0,o),n),a={};return a[i]=s,E(e,c(n,a))||""}},x=3==="a".split(/a/).length?function(t,e){return t.split(e)}:function(t,e){var n,r,o=[],i=0;for(e.global||(e=new RegExp(e,"g")),n=e.exec(t);null!==n;)r=n.index,o.push(t.slice(i,r)),i=r+n[0].length,n=e.exec(t);return o.push(t.slice(i)),o};function y(t,e){var n,r=e[t];return"true"===t?r=!0:"false"===t?r=!1:h.test(t)?r=t.replace(d,""):l.test(t)?r=y((n=t.split(u))[0],e)[y(n[1],e)]:f.test(t)?r=y((n=t.split(p))[0],e)[n[1]]:v.test(t)&&(r=parseFloat(t)),r}function _(t,e,n){for(var r,o,i,c,a=m[t],l=1,u=0+g,f=e[u];l&&s(f);)0===f.indexOf(t)?l+=1:0===f.indexOf("/"+t)&&(l-=1,r=u),f=e[u+=g];if(l)throw Error(t+" needs {{/"+t+"}} expression.");return e[0]=a(e[0].split(" ").slice(1),(o=0,i=r,(c=e.splice(o+1,i-o)).pop(),c),n),e}function b(t,e){var n=y(t[0],e);return n instanceof Function?function(t,e,n){var r=[];return o(e,(function(t){r.push(y(t,n))})),t.apply(null,r)}(n,t.slice(1),e):n}function E(t,e){for(var n,r,o,i=1,c=t[i];s(c);)r=(n=c.split(" "))[0],m[r]?(o=_(r,t.splice(i,t.length-i),e),t=t.concat(o)):t[i]=b(n,e),c=t[i+=g];return t.join("")}t.exports=function(t,e){return E(x(t,a),e)}},function(t,e,n){"use strict";var r=n(1);t.exports=function(t,e){var n,o=r(t),i=o?t[0]:t.clientX,s=o?t[1]:t.clientY;return e?[i-(n=e.getBoundingClientRect()).left-e.clientLeft,s-n.top-e.clientTop]:[i,s]}},function(t,e,n){"use strict";var r=n(55);t.exports=function(t,e){var n=t.parentNode;if(r(t,e))return t;for(;n&&n!==document;){if(r(n,e))return n;n=n.parentNode}return null}},function(t,e,n){"use strict";var r=n(5),o=n(56),i=Element.prototype,s=i.matches||i.webkitMatchesSelector||i.mozMatchesSelector||i.msMatchesSelector||function(t){var e=this.document||this.ownerDocument;return r(this,o(e.querySelectorAll(t)))>-1};t.exports=function(t,e){return s.call(t,e)}},function(t,e,n){"use strict";var r=n(6);t.exports=function(t){var e;try{e=Array.prototype.slice.call(t)}catch(n){e=[],r(t,(function(t){e.push(t)}))}return e}},function(t,e,n){"use strict";(function(e){var r=n(4).isOldBrowser,o=['<div class="{{cssPrefix}}slider-left {{cssPrefix}}slider-part">{{slider}}</div>','<div class="{{cssPrefix}}slider-right {{cssPrefix}}slider-part">{{huebar}}</div>'].join("\n"),i=['<svg class="{{cssPrefix}}svg {{cssPrefix}}svg-slider">',"<defs>",'<linearGradient id="{{cssPrefix}}svg-fill-color-{{id}}" x1="0%" y1="0%" x2="100%" y2="0%">','<stop offset="0%" stop-color="rgb(255,255,255)" />','<stop class="{{cssPrefix}}slider-basecolor" offset="100%" stop-color="rgb(255,0,0)" />',"</linearGradient>",'<linearGradient id="{{cssPrefix}}svn-fill-black-{{id}}" x1="0%" y1="0%" x2="0%" y2="100%">','<stop offset="0%" style="stop-color:rgb(0,0,0);stop-opacity:0" />','<stop offset="100%" style="stop-color:rgb(0,0,0);stop-opacity:1" />',"</linearGradient>","</defs>",'<rect width="100%" height="100%" fill="url(#{{cssPrefix}}svg-fill-color-{{id}})"></rect>','<rect width="100%" height="100%" fill="url(#{{cssPrefix}}svn-fill-black-{{id}})"></rect>','<path transform="translate(0,0)" class="{{cssPrefix}}slider-handle" d="M0 7.5 L15 7.5 M7.5 15 L7.5 0 M2 7 a5.5 5.5 0 1 1 0 1 Z" stroke="black" stroke-width="0.75" fill="none" />',"</svg>"].join("\n"),s=['<div class="{{cssPrefix}}vml-slider">','<v:rect strokecolor="none" class="{{cssPrefix}}vml {{cssPrefix}}vml-slider-bg">','<v:fill class="{{cssPrefix}}vml {{cssPrefix}}slider-basecolor" type="gradient" method="none" color="#ff0000" color2="#fff" angle="90" />',"</v:rect>",'<v:rect strokecolor="#ccc" class="{{cssPrefix}}vml {{cssPrefix}}vml-slider-bg">','<v:fill type="gradient" method="none" color="black" color2="white" o:opacity2="0%" class="{{cssPrefix}}vml" />',"</v:rect>",'<v:shape class="{{cssPrefix}}vml {{cssPrefix}}slider-handle" coordsize="1 1" style="width:1px;height:1px;"path="m 0,7 l 14,7 m 7,14 l 7,0 ar 12,12 2,2 z" filled="false" stroked="true" />',"</div>"].join("\n"),c=['<svg class="{{cssPrefix}}svg {{cssPrefix}}svg-huebar">',"<defs>",'<linearGradient id="g-{{id}}" x1="0%" y1="0%" x2="0%" y2="100%">','<stop offset="0%" stop-color="rgb(255,0,0)" />','<stop offset="16.666%" stop-color="rgb(255,255,0)" />','<stop offset="33.333%" stop-color="rgb(0,255,0)" />','<stop offset="50%" stop-color="rgb(0,255,255)" />','<stop offset="66.666%" stop-color="rgb(0,0,255)" />','<stop offset="83.333%" stop-color="rgb(255,0,255)" />','<stop offset="100%" stop-color="rgb(255,0,0)" />',"</linearGradient>","</defs>",'<rect width="18px" height="100%" fill="url(#g-{{id}})"></rect>','<path transform="translate(-6,-3)" class="{{cssPrefix}}huebar-handle" d="M0 0 L4 4 L0 8 L0 0 Z" fill="black" stroke="none" />',"</svg>"].join("\n"),a=['<div class="{{cssPrefix}}vml-huebar">','<v:rect strokecolor="#ccc" class="{{cssPrefix}}vml {{cssPrefix}}vml-huebar-bg">','<v:fill type="gradient" method="none" colors="0% rgb(255,0,0), 16.666% rgb(255,255,0), 33.333% rgb(0,255,0), 50% rgb(0,255,255), 66.666% rgb(0,0,255), 83.333% rgb(255,0,255), 100% rgb(255,0,0)" angle="180" class="{{cssPrefix}}vml" />',"</v:rect>",'<v:shape class="{{cssPrefix}}vml {{cssPrefix}}huebar-handle" coordsize="1 1" style="width:1px;height:1px;position:absolute;z-index:1;right:22px;top:-3px;"path="m 0,0 l 4,4 l 0,8 l 0,0 z" filled="true" fillcolor="black" stroked="false" />',"</div>"].join("\n");r&&e.document.namespaces.add("v","urn:schemas-microsoft-com:vml"),t.exports={layout:o,slider:r?s:i,huebar:r?a:c}}).call(this,n(25))}])}));
\ No newline at end of file
diff --git a/admin/js/vendors/tui.image-editor/svg/icon-a.svg b/admin/js/vendors/tui.image-editor/svg/icon-a.svg
new file mode 100644 (file)
index 0000000..7e1efb8
--- /dev/null
@@ -0,0 +1,235 @@
+<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs>
+        <circle id="a" cx="16" cy="16" r="16"/>
+    </defs><symbol id="icon-a-ic-apply" viewBox="0 0 24 24">
+    <g fill="none" fill-rule="evenodd">
+        <path d="M0 0h24v24H0z"/>
+        <path stroke="#434343" d="M4 12.011l5 5L20.011 6"/>
+    </g>
+</symbol><symbol id="icon-a-ic-cancel" viewBox="0 0 24 24">
+    <g fill="none" fill-rule="evenodd">
+        <path d="M0 0h24v24H0z"/>
+        <path stroke="#434343" d="M6 6l12 12M18 6L6 18"/>
+    </g>
+</symbol><symbol id="icon-a-ic-color-transparent-w" viewBox="0 0 32 32">
+    
+    <g fill="none" fill-rule="evenodd">
+        <g>
+            <use fill="#FFF" xlink:href="#a"/>
+            <circle cx="16" cy="16" r="15.5" stroke="#D5D5D5"/>
+        </g>
+        <path stroke="#FF4040" stroke-width="1.5" d="M27 5L5 27"/>
+    </g>
+</symbol><symbol id="icon-a-ic-crop" viewBox="0 0 24 24">
+    <g fill="none" fill-rule="evenodd">
+        <path d="M0 0h24v24H0z"/>
+        <path fill="#434343" d="M4 0h1v20a1 1 0 0 1-1-1V0zM20 17h-1V5h1v12zm0 2v5h-1v-5h1z"/>
+        <path fill="#434343" d="M5 19h19v1H5zM4.762 4v1H0V4h4.762zM7 4h12a1 1 0 0 1 1 1H7V4z"/>
+    </g>
+</symbol><symbol id="icon-a-ic-delete-all" viewBox="0 0 24 24">
+    <g fill="#434343" fill-rule="evenodd">
+        <path d="M5 23H3a1 1 0 0 1-1-1V6h1v16h2v1zm16-10h-1V6h1v7zM9 13H8v-3h1v3zm3 0h-1v-3h1v3zm3 0h-1v-3h1v3zM14.794 3.794L13 2h-3L8.206 3.794A.963.963 0 0 1 8 2.5l.703-1.055A1 1 0 0 1 9.535 1h3.93a1 1 0 0 1 .832.445L15 2.5a.965.965 0 0 1-.206 1.294zM14.197 4H8.803h5.394z"/>
+        <path d="M0 3h23v1H0zM11.286 21H8.714L8 23H7l1-2.8V20h.071L9.5 16h1l1.429 4H12v.2l1 2.8h-1l-.714-2zm-.357-1L10 17.4 9.071 20h1.858zM20 22h3v1h-4v-7h1v6zm-5 0h3v1h-4v-7h1v6z"/>
+    </g>
+</symbol><symbol id="icon-a-ic-delete" viewBox="0 0 24 24">
+    <g fill="#434343" fill-rule="evenodd">
+        <path d="M3 6v16h17V6h1v16a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V6h1zM14.794 3.794L13 2h-3L8.206 3.794A.963.963 0 0 1 8 2.5l.703-1.055A1 1 0 0 1 9.535 1h3.93a1 1 0 0 1 .832.445L15 2.5a.965.965 0 0 1-.206 1.294zM14.197 4H8.803h5.394z"/>
+        <path d="M0 3h23v1H0zM8 10h1v6H8v-6zm3 0h1v6h-1v-6zm3 0h1v6h-1v-6z"/>
+    </g>
+</symbol><symbol id="icon-a-ic-draw-free" viewBox="0 0 32 32">
+    <g fill="none" fill-rule="evenodd">
+        <path stroke="#434343" d="M2.5 20.929C2.594 10.976 4.323 6 7.686 6c5.872 0 2.524 19 7.697 19s1.89-14.929 6.414-14.929 1.357 10.858 5.13 10.858c1.802 0 2.657-2.262 2.566-6.786"/>
+    </g>
+</symbol><symbol id="icon-a-ic-draw-line" viewBox="0 0 32 32">
+    <g fill="none" fill-rule="evenodd">
+        <path stroke="#434343" d="M2 15.5h28"/>
+    </g>
+</symbol><symbol id="icon-a-ic-draw" viewBox="0 0 24 24">
+    <g fill="none">
+        <path stroke="#434343" d="M2.5 21.5H5c.245 0 .48-.058.691-.168l.124-.065.14.01c.429.028.85-.127 1.16-.437L22.55 5.405a.5.5 0 0 0 0-.707l-3.246-3.245a.5.5 0 0 0-.707 0L3.162 16.888a1.495 1.495 0 0 0-.437 1.155l.01.14-.065.123c-.111.212-.17.448-.17.694v2.5z"/>
+        <path fill="#434343" d="M16.414 3.707l3.89 3.89-.708.706-3.889-3.889z"/>
+    </g>
+</symbol><symbol id="icon-a-ic-filter" viewBox="0 0 24 24">
+    <g fill="none" fill-rule="evenodd">
+        <path d="M0 0h24v24H0z"/>
+        <path fill="#434343" d="M12 7v1H2V7h10zm6 0h4v1h-4V7zM12 16v1h10v-1H12zm-6 0H2v1h4v-1z"/>
+        <path fill="#434343" d="M8.5 20a3.5 3.5 0 1 1 0-7 3.5 3.5 0 0 1 0 7zm0-1a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5zM15.5 11a3.5 3.5 0 1 1 0-7 3.5 3.5 0 0 1 0 7zm0-1a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5z"/>
+    </g>
+</symbol><symbol id="icon-a-ic-flip-reset" viewBox="0 0 31 32">
+    <g fill="none" fill-rule="evenodd">
+        <path d="M31 0H0v32h31z"/>
+        <path fill="#434343" d="M28 16a8 8 0 0 1-8 8H3v-1h1v-7H3a8 8 0 0 1 8-8h17v1h-1v7h1zM11 9a7 7 0 0 0-7 7v7h16a7 7 0 0 0 7-7V9H11z"/>
+        <path stroke="#434343" stroke-linecap="square" d="M24 5l3.5 3.5L24 12M7 20l-3.5 3.5L7 27"/>
+    </g>
+</symbol><symbol id="icon-a-ic-flip-x" viewBox="0 0 32 32">
+    <g fill="none" fill-rule="evenodd">
+        <path d="M32 32H0V0h32z"/>
+        <path fill="#434343" d="M17 32h-1V0h1zM27.167 11l.5 3h-1.03l-.546-3h1.076zm-.5-3h-1.122L25 5h-5V4h5.153a1 1 0 0 1 .986.836L26.667 8zm1.5 9l.5 3h-.94l-.545-3h.985zm1 6l.639 3.836A1 1 0 0 1 28.819 28H26v-1h3l-.726-4h.894zM23 28h-3v-1h3v1zM13 4v1H7L3 27h10v1H3.18a1 1 0 0 1-.986-1.164l3.666-22A1 1 0 0 1 6.847 4H13z"/>
+    </g>
+</symbol><symbol id="icon-a-ic-flip-y" viewBox="0 0 32 32">
+    <g fill="none" fill-rule="evenodd">
+        <path d="M0 0v32h32V0z"/>
+        <path fill="#434343" d="M0 16v1h32v-1zM11 27.167l3 .5v-1.03l-3-.546v1.076zm-3-.5v-1.122L5 25v-5H4v5.153a1 1 0 0 0 .836.986L8 26.667zm9 1.5l3 .5v-.94l-3-.545v.985zm6 1l3.836.639A1 1 0 0 0 28 28.82V26h-1v3l-4-.727v.894zM28 23v-3h-1v3h1zM4 13h1V7l22-4v10h1V3.18a1 1 0 0 0-1.164-.986l-22 3.667A1 1 0 0 0 4 6.847V13z"/>
+    </g>
+</symbol><symbol id="icon-a-ic-flip" viewBox="0 0 24 24">
+    <g fill="none" fill-rule="evenodd">
+        <path d="M0 0h24v24H0z"/>
+        <path fill="#434343" d="M11 0h1v24h-1zM19 21v-1h2v-2h1v2a1 1 0 0 1-1 1h-2zm-2 0h-3v-1h3v1zm5-5h-1v-3h1v3zm0-5h-1V8h1v3zm0-5h-1V4h-2V3h2a1 1 0 0 1 1 1v2zm-5-3v1h-3V3h3zM9 3v1H2v16h7v1H2a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h7z"/>
+    </g>
+</symbol><symbol id="icon-a-ic-icon-arrow-2" viewBox="0 0 32 32">
+    <g fill="none" fill-rule="evenodd">
+        <path stroke="#434343" stroke-linecap="round" stroke-linejoin="round" d="M21.793 18.5H2.5v-5h18.935l-7.6-8h5.872l10.5 10.5-10.5 10.5h-5.914l8-8z"/>
+    </g>
+</symbol><symbol id="icon-a-ic-icon-arrow-3" viewBox="0 0 32 32">
+    <g fill="none" fill-rule="evenodd">
+        <path stroke="#434343" stroke-linecap="round" stroke-linejoin="round" d="M25.288 16.42L14.208 27.5H6.792l11.291-11.291L6.826 4.5h7.381l11.661 11.661-.58.258z"/>
+    </g>
+</symbol><symbol id="icon-a-ic-icon-arrow" viewBox="0 0 32 32">
+    <g fill="none" fill-rule="evenodd">
+        <path stroke="#434343" d="M2.5 11.5v9h18v5.293L30.293 16 20.5 6.207V11.5h-18z"/>
+    </g>
+</symbol><symbol id="icon-a-ic-icon-bubble" viewBox="0 0 32 32">
+    <g fill="none" fill-rule="evenodd">
+        <path stroke="#434343" stroke-linecap="round" stroke-linejoin="round" d="M22.207 24.5L16.5 30.207V24.5H8A6.5 6.5 0 0 1 1.5 18V9A6.5 6.5 0 0 1 8 2.5h16A6.5 6.5 0 0 1 30.5 9v9a6.5 6.5 0 0 1-6.5 6.5h-1.793z"/>
+    </g>
+</symbol><symbol id="icon-a-ic-icon-heart" viewBox="0 0 32 32">
+    <g fill="none" fill-rule="evenodd">
+        <path fill-rule="nonzero" stroke="#434343" d="M15.996 30.675l1.981-1.79c7.898-7.177 10.365-9.718 12.135-13.012.922-1.716 1.377-3.37 1.377-5.076 0-4.65-3.647-8.297-8.297-8.297-2.33 0-4.86 1.527-6.817 3.824l-.38.447-.381-.447C13.658 4.027 11.126 2.5 8.797 2.5 4.147 2.5.5 6.147.5 10.797c0 1.714.46 3.375 1.389 5.098 1.775 3.288 4.26 5.843 12.123 12.974l1.984 1.806z"/>
+    </g>
+</symbol><symbol id="icon-a-ic-icon-load" viewBox="0 0 32 32">
+    <g fill="none" fill-rule="evenodd">
+        <path stroke="#434343" stroke-linecap="round" stroke-linejoin="round" d="M17.314 18.867l1.951-2.53 4 5.184h-17l6.5-8.84 4.549 6.186z"/>
+        <path fill="#434343" d="M18.01 4a11.798 11.798 0 0 0 0 1H3v24h24V14.986a8.738 8.738 0 0 0 1 0V29a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1h15.01z"/>
+        <path fill="#434343" d="M25 3h1v9h-1z"/>
+        <path stroke="#434343" d="M22 6l3.5-3.5L29 6"/>
+    </g>
+</symbol><symbol id="icon-a-ic-icon-location" viewBox="0 0 32 32">
+    <g fill="none" fill-rule="evenodd">
+        <g stroke="#434343">
+            <path d="M16 31.28C23.675 23.302 27.5 17.181 27.5 13c0-6.351-5.149-11.5-11.5-11.5S4.5 6.649 4.5 13c0 4.181 3.825 10.302 11.5 18.28z"/>
+            <circle cx="16" cy="13" r="4.5"/>
+        </g>
+    </g>
+</symbol><symbol id="icon-a-ic-icon-polygon" viewBox="0 0 32 32">
+    <g fill="none" fill-rule="evenodd">
+        <path stroke="#434343" d="M.576 16L8.29 29.5h15.42L31.424 16 23.71 2.5H8.29L.576 16z"/>
+    </g>
+</symbol><symbol id="icon-a-ic-icon-star-2" viewBox="0 0 32 32">
+    <g fill="none" fill-rule="evenodd">
+        <path stroke="#434343" d="M19.446 31.592l2.265-3.272 3.946.25.636-3.94 3.665-1.505-1.12-3.832 2.655-2.962-2.656-2.962 1.12-3.832-3.664-1.505-.636-3.941-3.946.25-2.265-3.271L16 3.024 12.554 1.07 10.289 4.34l-3.946-.25-.636 3.941-3.665 1.505 1.12 3.832L.508 16.33l2.656 2.962-1.12 3.832 3.664 1.504.636 3.942 3.946-.25 2.265 3.27L16 29.638l3.446 1.955z"/>
+    </g>
+</symbol><symbol id="icon-a-ic-icon-star" viewBox="0 0 32 32">
+    <g fill="none" fill-rule="evenodd">
+        <path stroke="#434343" d="M25.292 29.878l-1.775-10.346 7.517-7.327-10.388-1.51L16 1.282l-4.646 9.413-10.388 1.51 7.517 7.327-1.775 10.346L16 24.993l9.292 4.885z"/>
+    </g>
+</symbol><symbol id="icon-a-ic-icon" viewBox="0 0 24 24">
+    <g fill="none">
+        <path stroke="#434343" stroke-linecap="round" stroke-linejoin="round" d="M11.923 19.136L5.424 22l.715-7.065-4.731-5.296 6.94-1.503L11.923 2l3.574 6.136 6.94 1.503-4.731 5.296L18.42 22z"/>
+    </g>
+</symbol><symbol id="icon-a-ic-mask-load" viewBox="0 0 32 32">
+    <g fill="none" fill-rule="evenodd">
+        <path d="M0 0h32v32H0z"/>
+        <path fill="#434343" d="M18.01 4a11.798 11.798 0 0 0 0 1H3v24h24V14.986a8.738 8.738 0 0 0 1 0V29a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1h15.01zM15 23a6 6 0 1 1 0-12 6 6 0 0 1 0 12zm0-1a5 5 0 1 0 0-10 5 5 0 0 0 0 10z"/>
+        <path fill="#434343" d="M25 3h1v9h-1z"/>
+        <path stroke="#434343" d="M22 6l3.5-3.5L29 6"/>
+    </g>
+</symbol><symbol id="icon-a-ic-mask" viewBox="0 0 24 24">
+    <g fill="none">
+        <circle cx="12" cy="12" r="4.5" stroke="#434343"/>
+        <path fill="#434343" d="M2 1h20a1 1 0 0 1 1 1v20a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1zm0 1v20h20V2H2z"/>
+    </g>
+</symbol><symbol id="icon-a-ic-redo" viewBox="0 0 24 24">
+    <g fill="none" fill-rule="evenodd">
+        <path d="M0 0h24v24H0z" opacity=".5"/>
+        <path fill="#434343" d="M21 6H9a6 6 0 1 0 0 12h12v1H9A7 7 0 0 1 9 5h12v1z"/>
+        <path stroke="#434343" stroke-linecap="square" d="M19 3l2.5 2.5L19 8"/>
+    </g>
+</symbol><symbol id="icon-a-ic-reset" viewBox="0 0 24 24">
+    <g fill="none" fill-rule="evenodd">
+        <path d="M0 0h24v24H0z" opacity=".5"/>
+        <path fill="#434343" d="M2 13v-1a7 7 0 0 1 7-7h13v1h-1v5h1v1a7 7 0 0 1-7 7H2v-1h1v-5H2zm7-7a6 6 0 0 0-6 6v6h12a6 6 0 0 0 6-6V6H9z"/>
+        <path stroke="#434343" stroke-linecap="square" d="M19 3l2.5 2.5L19 8M5 16l-2.5 2.5L5 21"/>
+    </g>
+</symbol><symbol id="icon-a-ic-rotate-clockwise" viewBox="0 0 32 32">
+    <g fill="none" fill-rule="evenodd">
+        <path fill="#434343" d="M29 17h-.924c0 6.627-5.373 12-12 12-6.628 0-12-5.373-12-12C4.076 10.398 9.407 5.041 16 5V4C8.82 4 3 9.82 3 17s5.82 13 13 13 13-5.82 13-13z"/>
+        <path stroke="#434343" stroke-linecap="square" d="M16 1.5l4 3-4 3"/>
+        <path fill="#434343" fill-rule="nonzero" d="M16 4h4v1h-4z"/>
+    </g>
+</symbol><symbol id="icon-a-ic-rotate-counterclockwise" viewBox="0 0 32 32">
+    <g fill="none" fill-rule="evenodd">
+        <path fill="#434343" d="M3 17h.924c0 6.627 5.373 12 12 12 6.628 0 12-5.373 12-12 0-6.602-5.331-11.96-11.924-12V4c7.18 0 13 5.82 13 13s-5.82 13-13 13S3 24.18 3 17z"/>
+        <path fill="#434343" fill-rule="nonzero" d="M12 4h4v1h-4z"/>
+        <path stroke="#434343" stroke-linecap="square" d="M16 1.5l-4 3 4 3"/>
+    </g>
+</symbol><symbol id="icon-a-ic-rotate" viewBox="0 0 24 24">
+    <g fill="none" fill-rule="evenodd">
+        <path d="M0 0h24v24H0z"/>
+        <path fill="#434343" d="M8.349 22.254a10.002 10.002 0 0 1-2.778-1.719l.65-.76a9.002 9.002 0 0 0 2.495 1.548l-.367.931zm2.873.704l.078-.997a9 9 0 1 0-.557-17.852l-.14-.99A10.076 10.076 0 0 1 12.145 3c5.523 0 10 4.477 10 10s-4.477 10-10 10c-.312 0-.62-.014-.924-.042zm-7.556-4.655a9.942 9.942 0 0 1-1.253-2.996l.973-.234a8.948 8.948 0 0 0 1.124 2.693l-.844.537zm-1.502-5.91A9.949 9.949 0 0 1 2.88 9.23l.925.382a8.954 8.954 0 0 0-.644 2.844l-.998-.062zm2.21-5.686c.687-.848 1.51-1.58 2.436-2.166l.523.852a9.048 9.048 0 0 0-2.188 1.95l-.771-.636z"/>
+        <path stroke="#434343" stroke-linecap="square" d="M13 1l-2.5 2.5L13 6"/>
+    </g>
+</symbol><symbol id="icon-a-ic-shape-circle" viewBox="0 0 32 32">
+    <g fill="none" fill-rule="evenodd">
+        <circle cx="16" cy="16" r="14.5" stroke="#434343"/>
+    </g>
+</symbol><symbol id="icon-a-ic-shape-rectangle" viewBox="0 0 32 32">
+    <g fill="none" fill-rule="evenodd">
+        <rect width="27" height="27" x="2.5" y="2.5" stroke="#434343" rx="1"/>
+    </g>
+</symbol><symbol id="icon-a-ic-shape-triangle" viewBox="0 0 32 32">
+    <g fill="none" fill-rule="evenodd">
+        <path stroke="#434343" stroke-linecap="round" stroke-linejoin="round" d="M16 2.5l15.5 27H.5z"/>
+    </g>
+</symbol><symbol id="icon-a-ic-shape" viewBox="0 0 24 24">
+    <g fill="none" fill-rule="evenodd">
+        <path fill="#434343" d="M14.706 8H21a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H9a1 1 0 0 1-1-1v-4h1v4h12V9h-5.706l-.588-1z"/>
+        <path stroke="#434343" stroke-linecap="round" stroke-linejoin="round" d="M8.5 1.5l7.5 13H1z"/>
+    </g>
+</symbol><symbol id="icon-a-ic-text-align-center" viewBox="0 0 32 32">
+    <g fill="none" fill-rule="evenodd">
+        <path d="M0 0h32v32H0z"/>
+        <path fill="#434343" d="M2 5h28v1H2zM8 12h16v1H8zM2 19h28v1H2zM8 26h16v1H8z"/>
+    </g>
+</symbol><symbol id="icon-a-ic-text-align-left" viewBox="0 0 32 32">
+    <g fill="none" fill-rule="evenodd">
+        <path d="M0 0h32v32H0z"/>
+        <path fill="#434343" d="M2 5h28v1H2zM2 12h16v1H2zM2 19h28v1H2zM2 26h16v1H2z"/>
+    </g>
+</symbol><symbol id="icon-a-ic-text-align-right" viewBox="0 0 32 32">
+    <g fill="none" fill-rule="evenodd">
+        <path d="M0 0h32v32H0z"/>
+        <path fill="#434343" d="M2 5h28v1H2zM14 12h16v1H14zM2 19h28v1H2zM14 26h16v1H14z"/>
+    </g>
+</symbol><symbol id="icon-a-ic-text-bold" viewBox="0 0 32 32">
+    <g fill="none" fill-rule="evenodd">
+        <path d="M0 0h32v32H0z"/>
+        <path fill="#434343" d="M7 2h2v2H7zM7 28h2v2H7z"/>
+        <path stroke="#434343" stroke-width="2" d="M9 3v12h9a6 6 0 1 0 0-12H9zM9 15v14h10a7 7 0 0 0 0-14H9z"/>
+    </g>
+</symbol><symbol id="icon-a-ic-text-italic" viewBox="0 0 32 32">
+    <g fill="none" fill-rule="evenodd">
+        <path d="M0 0h32v32H0z"/>
+        <path fill="#434343" d="M15 2h5v1h-5zM11 29h5v1h-5zM17 3h1l-4 26h-1z"/>
+    </g>
+</symbol><symbol id="icon-a-ic-text-underline" viewBox="0 0 32 32">
+    <g fill="none" fill-rule="evenodd">
+        <path d="M0 0h32v32H0z"/>
+        <path fill="#434343" d="M8 2v14a8 8 0 1 0 16 0V2h1v14a9 9 0 0 1-18 0V2h1zM3 29h26v1H3z"/>
+        <path fill="#434343" d="M5 2h5v1H5zM22 2h5v1h-5z"/>
+    </g>
+</symbol><symbol id="icon-a-ic-text" viewBox="0 0 24 24">
+    <g fill="#434343" fill-rule="evenodd">
+        <path d="M4 3h15a1 1 0 0 1 1 1H3a1 1 0 0 1 1-1zM3 4h1v1H3zM19 4h1v1h-1z"/>
+        <path d="M11 3h1v18h-1z"/>
+        <path d="M10 20h3v1h-3z"/>
+    </g>
+</symbol><symbol id="icon-a-ic-undo" viewBox="0 0 24 24">
+    <g fill="none" fill-rule="evenodd">
+        <path d="M24 0H0v24h24z" opacity=".5"/>
+        <path fill="#434343" d="M3 6h12a6 6 0 1 1 0 12H3v1h12a7 7 0 0 0 0-14H3v1z"/>
+        <path stroke="#434343" stroke-linecap="square" d="M5 3L2.5 5.5 5 8"/>
+    </g>
+</symbol><symbol id="icon-a-img-bi" viewBox="0 0 257 26">
+    <g fill="#FDBA3B">
+        <path d="M26 5a8.001 8.001 0 0 0 0 16 8.001 8.001 0 0 0 0-16M51.893 19.812L43.676 5.396A.78.78 0 0 0 43 5a.78.78 0 0 0-.677.396l-8.218 14.418a.787.787 0 0 0 0 .792c.14.244.396.394.676.394h16.436c.28 0 .539-.15.678-.396a.796.796 0 0 0-.002-.792M15.767 5.231A.79.79 0 0 0 15.21 5H.791A.791.791 0 0 0 0 5.79v6.42a.793.793 0 0 0 .791.79h3.21v7.21c.001.21.082.408.234.56.147.148.347.23.558.23h6.416a.788.788 0 0 0 .792-.79V13h3.006c.413 0 .611-.082.762-.232.15-.149.23-.35.231-.559V5.791a.787.787 0 0 0-.233-.56M85.767 5.231A.79.79 0 0 0 85.21 5H70.791a.791.791 0 0 0-.791.79v6.42a.793.793 0 0 0 .791.79h3.21v7.21c.001.21.082.408.234.56.147.148.347.23.558.23h6.416a.788.788 0 0 0 .792-.79V13h3.006c.413 0 .611-.082.762-.232.15-.149.23-.35.231-.559V5.791a.787.787 0 0 0-.233-.56M65.942 9.948l2.17-3.76a.78.78 0 0 0 0-.792.791.791 0 0 0-.684-.396h-8.54A5.889 5.889 0 0 0 53 10.86a5.887 5.887 0 0 0 3.07 5.17l-2.184 3.782A.792.792 0 0 0 54.571 21h8.54a5.89 5.89 0 0 0 2.831-11.052M105.7 21h2.3V5h-2.3zM91 5h2.4v10.286c0 1.893 1.612 3.429 3.6 3.429s3.6-1.536 3.6-3.429V5h2.4v10.286c0 3.156-2.686 5.714-6 5.714-3.313 0-6-2.558-6-5.714V5zM252.148 21.128h-2.377V9.659h2.27v1.64c.69-1.299 1.792-1.938 3.304-1.938.497 0 .95.065 1.382.192l-.215 2.277a3.734 3.734 0 0 0-1.275-.213c-1.814 0-3.089 1.234-3.089 3.638v5.873zm-7.095-5.744a3.734 3.734 0 0 0-1.101-2.703c-.714-.766-1.6-1.149-2.658-1.149-1.058 0-1.944.383-2.679 1.149a3.803 3.803 0 0 0-1.08 2.703c0 1.063.368 1.978 1.08 2.722.735.746 1.62 1.128 2.68 1.128 1.058 0 1.943-.382 2.657-1.128.734-.744 1.101-1.659 1.101-2.722zm-9.916 0c0-1.682.583-3.086 1.729-4.256 1.166-1.17 2.635-1.767 4.428-1.767 1.793 0 3.262.597 4.407 1.767 1.167 1.17 1.75 2.574 1.75 4.256 0 1.7-.583 3.127-1.75 4.297-1.145 1.17-2.614 1.745-4.407 1.745-1.793 0-3.262-.575-4.428-1.745-1.146-1.17-1.729-2.596-1.729-4.297zm-1.5 3.233l.821 1.83c-.864.638-1.944.958-3.22.958-2.526 0-3.822-1.554-3.822-4.383V11.66h-2.01v-2h2.031V5.595h2.355v4.063h4.018v2h-4.018v5.405c0 1.469.605 2.191 1.793 2.191.626 0 1.318-.212 2.052-.638zm-12.43 2.51h2.375V9.66h-2.376v11.469zm1.23-12.977c-.929 0-1.642-.682-1.642-1.596 0-.873.713-1.554 1.643-1.554.885 0 1.576.681 1.576 1.554 0 .914-.69 1.596-1.576 1.596zm-6.49 7.234c0-1.086-.346-1.98-1.037-2.724-.692-.745-1.599-1.128-2.7-1.128-1.102 0-2.01.383-2.7 1.128-.692.744-1.037 1.638-1.037 2.724 0 1.084.345 2.02 1.036 2.766.691.744 1.6 1.105 2.7 1.105 1.102 0 2.01-.361 2.7-1.105.692-.746 1.038-1.682 1.038-2.766zm-.173-4.129V5h2.397v16.128h-2.354v-1.596c-1.015 1.255-2.333 1.873-3.91 1.873-1.663 0-3.068-.575-4.169-1.724-1.102-1.17-1.663-2.596-1.663-4.297 0-1.682.561-3.107 1.663-4.256 1.101-1.17 2.485-1.745 4.148-1.745 1.534 0 2.83.617 3.888 1.872zm-11.48 9.873h-10.218V5.405h10.195v2.318h-7.711V12h7.15v2.32h-7.15v4.489h7.733v2.319zm-23.891-9.724c-1.793 0-3.132 1.192-3.478 2.979h6.783c-.194-1.808-1.555-2.979-3.305-2.979zm5.703 3.766c0 .32-.021.703-.086 1.128h-9.095c.346 1.787 1.62 3 3.867 3 1.318 0 2.916-.49 3.953-1.234l.994 1.724c-1.189.872-3.067 1.595-5.033 1.595-4.364 0-6.243-3-6.243-6.021 0-1.724.54-3.15 1.642-4.277 1.101-1.127 2.548-1.702 4.298-1.702 1.664 0 3.046.511 4.105 1.553 1.058 1.043 1.598 2.447 1.598 4.234zm-19.949 3.894c1.08 0 1.966-.362 2.68-1.085.712-.724 1.058-1.617 1.058-2.703 0-1.084-.346-2-1.059-2.701-.713-.702-1.599-1.064-2.679-1.064-1.058 0-1.944.362-2.656 1.085-.714.702-1.059 1.596-1.059 2.68 0 1.086.345 2 1.059 2.724.712.702 1.598 1.064 2.656 1.064zm3.673-7.936V9.66h2.29v10.299c0 1.85-.584 3.32-1.728 4.404-1.146 1.085-2.68 1.638-4.58 1.638-1.945 0-3.672-.553-5.206-1.638l1.037-1.808c1.296.915 2.679 1.36 4.126 1.36 2.484 0 3.996-1.51 3.996-3.637v-.83c-1.015 1.127-2.311 1.702-3.91 1.702-1.684 0-3.089-.554-4.19-1.68-1.102-1.128-1.642-2.532-1.642-4.214 0-1.68.561-3.085 1.706-4.191 1.145-1.128 2.571-1.681 4.234-1.681 1.534 0 2.83.575 3.867 1.745zm-18.07 8.127c1.102 0 1.988-.382 2.7-1.128.714-.744 1.06-1.659 1.06-2.743 0-1.065-.346-1.98-1.06-2.724-.712-.745-1.598-1.128-2.7-1.128-1.101 0-2.008.383-2.7 1.128-.691.744-1.036 1.66-1.036 2.745 0 1.084.345 2 1.037 2.745.691.744 1.598 1.105 2.7 1.105zm3.652-8V9.66h2.29v11.469h-2.29v-1.575c-1.059 1.234-2.399 1.852-3.976 1.852-1.663 0-3.067-.575-4.168-1.745-1.102-1.17-1.642-2.617-1.642-4.34 0-1.724.54-3.128 1.642-4.256 1.1-1.128 2.505-1.681 4.168-1.681 1.577 0 2.917.617 3.976 1.872zM138.79 9.34c1.404 0 2.527.448 3.37 1.34.863.873 1.295 2.086 1.295 3.596v6.852h-2.376V14.66c0-2.021-1.036-3.128-2.657-3.128-1.727 0-2.915 1.255-2.915 3.192v6.404h-2.377v-6.426c0-1.978-1.037-3.17-2.679-3.17-1.728 0-2.937 1.277-2.937 3.234v6.362h-2.377V9.659h2.333v1.66c.692-1.212 1.988-1.979 3.522-1.979 1.533.021 2.958.767 3.586 2.107.798-1.277 2.419-2.107 4.212-2.107zm-19.517 11.788h2.484V5.405h-2.484v15.723z"/>
+    </g>
+</symbol></svg>
\ No newline at end of file
diff --git a/admin/js/vendors/tui.image-editor/svg/icon-b.svg b/admin/js/vendors/tui.image-editor/svg/icon-b.svg
new file mode 100644 (file)
index 0000000..c1ea625
--- /dev/null
@@ -0,0 +1,224 @@
+<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs/><symbol id="icon-b-ic-apply" viewBox="0 0 24 24">
+    <g fill="none" fill-rule="evenodd">
+        <path d="M0 0h24v24H0z"/>
+        <path stroke="#555555" d="M4 12.011l5 5L20.011 6"/>
+    </g>
+</symbol><symbol id="icon-b-ic-cancel" viewBox="0 0 24 24">
+    <g fill="none" fill-rule="evenodd">
+        <path d="M0 0h24v24H0z"/>
+        <path stroke="#555555" d="M6 6l12 12M18 6L6 18"/>
+    </g>
+</symbol><symbol id="icon-b-ic-crop" viewBox="0 0 24 24">
+    <g fill="none" fill-rule="evenodd">
+        <path d="M0 0h24v24H0z"/>
+        <path fill="#555555" d="M4 0h1v20a1 1 0 0 1-1-1V0zM20 17h-1V5h1v12zm0 2v5h-1v-5h1z"/>
+        <path fill="#555555" d="M5 19h19v1H5zM4.762 4v1H0V4h4.762zM7 4h12a1 1 0 0 1 1 1H7V4z"/>
+    </g>
+</symbol><symbol id="icon-b-ic-delete-all" viewBox="0 0 24 24">
+    <g fill="#555555" fill-rule="evenodd">
+        <path d="M5 23H3a1 1 0 0 1-1-1V6h1v16h2v1zm16-10h-1V6h1v7zM9 13H8v-3h1v3zm3 0h-1v-3h1v3zm3 0h-1v-3h1v3zM14.794 3.794L13 2h-3L8.206 3.794A.963.963 0 0 1 8 2.5l.703-1.055A1 1 0 0 1 9.535 1h3.93a1 1 0 0 1 .832.445L15 2.5a.965.965 0 0 1-.206 1.294zM14.197 4H8.803h5.394z"/>
+        <path d="M0 3h23v1H0zM11.286 21H8.714L8 23H7l1-2.8V20h.071L9.5 16h1l1.429 4H12v.2l1 2.8h-1l-.714-2zm-.357-1L10 17.4 9.071 20h1.858zM20 22h3v1h-4v-7h1v6zm-5 0h3v1h-4v-7h1v6z"/>
+    </g>
+</symbol><symbol id="icon-b-ic-delete" viewBox="0 0 24 24">
+    <g fill="#555555" fill-rule="evenodd">
+        <path d="M3 6v16h17V6h1v16a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V6h1zM14.794 3.794L13 2h-3L8.206 3.794A.963.963 0 0 1 8 2.5l.703-1.055A1 1 0 0 1 9.535 1h3.93a1 1 0 0 1 .832.445L15 2.5a.965.965 0 0 1-.206 1.294zM14.197 4H8.803h5.394z"/>
+        <path d="M0 3h23v1H0zM8 10h1v6H8v-6zm3 0h1v6h-1v-6zm3 0h1v6h-1v-6z"/>
+    </g>
+</symbol><symbol id="icon-b-ic-draw-free" viewBox="0 0 32 32">
+    <g fill="none" fill-rule="evenodd">
+        <path stroke="#555555" d="M2.5 20.929C2.594 10.976 4.323 6 7.686 6c5.872 0 2.524 19 7.697 19s1.89-14.929 6.414-14.929 1.357 10.858 5.13 10.858c1.802 0 2.657-2.262 2.566-6.786"/>
+    </g>
+</symbol><symbol id="icon-b-ic-draw-line" viewBox="0 0 32 32">
+    <g fill="none" fill-rule="evenodd">
+        <path stroke="#555555" d="M2 15.5h28"/>
+    </g>
+</symbol><symbol id="icon-b-ic-draw" viewBox="0 0 24 24">
+    <g fill="none">
+        <path stroke="#555555" d="M2.5 21.5H5c.245 0 .48-.058.691-.168l.124-.065.14.01c.429.028.85-.127 1.16-.437L22.55 5.405a.5.5 0 0 0 0-.707l-3.246-3.245a.5.5 0 0 0-.707 0L3.162 16.888a1.495 1.495 0 0 0-.437 1.155l.01.14-.065.123c-.111.212-.17.448-.17.694v2.5z"/>
+        <path fill="#555555" d="M16.414 3.707l3.89 3.89-.708.706-3.889-3.889z"/>
+    </g>
+</symbol><symbol id="icon-b-ic-filter" viewBox="0 0 24 24">
+    <g fill="none" fill-rule="evenodd">
+        <path d="M0 0h24v24H0z"/>
+        <path fill="#555555" d="M12 7v1H2V7h10zm6 0h4v1h-4V7zM12 16v1h10v-1H12zm-6 0H2v1h4v-1z"/>
+        <path fill="#555555" d="M8.5 20a3.5 3.5 0 1 1 0-7 3.5 3.5 0 0 1 0 7zm0-1a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5zM15.5 11a3.5 3.5 0 1 1 0-7 3.5 3.5 0 0 1 0 7zm0-1a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5z"/>
+    </g>
+</symbol><symbol id="icon-b-ic-flip-reset" viewBox="0 0 31 32">
+    <g fill="none" fill-rule="evenodd">
+        <path d="M31 0H0v32h31z"/>
+        <path fill="#555555" d="M28 16a8 8 0 0 1-8 8H3v-1h1v-7H3a8 8 0 0 1 8-8h17v1h-1v7h1zM11 9a7 7 0 0 0-7 7v7h16a7 7 0 0 0 7-7V9H11z"/>
+        <path stroke="#555555" stroke-linecap="square" d="M24 5l3.5 3.5L24 12M7 20l-3.5 3.5L7 27"/>
+    </g>
+</symbol><symbol id="icon-b-ic-flip-x" viewBox="0 0 32 32">
+    <g fill="none" fill-rule="evenodd">
+        <path d="M32 32H0V0h32z"/>
+        <path fill="#555555" d="M17 32h-1V0h1zM27.167 11l.5 3h-1.03l-.546-3h1.076zm-.5-3h-1.122L25 5h-5V4h5.153a1 1 0 0 1 .986.836L26.667 8zm1.5 9l.5 3h-.94l-.545-3h.985zm1 6l.639 3.836A1 1 0 0 1 28.819 28H26v-1h3l-.726-4h.894zM23 28h-3v-1h3v1zM13 4v1H7L3 27h10v1H3.18a1 1 0 0 1-.986-1.164l3.666-22A1 1 0 0 1 6.847 4H13z"/>
+    </g>
+</symbol><symbol id="icon-b-ic-flip-y" viewBox="0 0 32 32">
+    <g fill="none" fill-rule="evenodd">
+        <path d="M0 0v32h32V0z"/>
+        <path fill="#555555" d="M0 16v1h32v-1zM11 27.167l3 .5v-1.03l-3-.546v1.076zm-3-.5v-1.122L5 25v-5H4v5.153a1 1 0 0 0 .836.986L8 26.667zm9 1.5l3 .5v-.94l-3-.545v.985zm6 1l3.836.639A1 1 0 0 0 28 28.82V26h-1v3l-4-.727v.894zM28 23v-3h-1v3h1zM4 13h1V7l22-4v10h1V3.18a1 1 0 0 0-1.164-.986l-22 3.667A1 1 0 0 0 4 6.847V13z"/>
+    </g>
+</symbol><symbol id="icon-b-ic-flip" viewBox="0 0 24 24">
+    <g fill="none" fill-rule="evenodd">
+        <path d="M0 0h24v24H0z"/>
+        <path fill="#555555" d="M11 0h1v24h-1zM19 21v-1h2v-2h1v2a1 1 0 0 1-1 1h-2zm-2 0h-3v-1h3v1zm5-5h-1v-3h1v3zm0-5h-1V8h1v3zm0-5h-1V4h-2V3h2a1 1 0 0 1 1 1v2zm-5-3v1h-3V3h3zM9 3v1H2v16h7v1H2a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h7z"/>
+    </g>
+</symbol><symbol id="icon-b-ic-icon-arrow-2" viewBox="0 0 32 32">
+    <g fill="none" fill-rule="evenodd">
+        <path stroke="#555555" stroke-linecap="round" stroke-linejoin="round" d="M21.793 18.5H2.5v-5h18.935l-7.6-8h5.872l10.5 10.5-10.5 10.5h-5.914l8-8z"/>
+    </g>
+</symbol><symbol id="icon-b-ic-icon-arrow-3" viewBox="0 0 32 32">
+    <g fill="none" fill-rule="evenodd">
+        <path stroke="#555555" stroke-linecap="round" stroke-linejoin="round" d="M25.288 16.42L14.208 27.5H6.792l11.291-11.291L6.826 4.5h7.381l11.661 11.661-.58.258z"/>
+    </g>
+</symbol><symbol id="icon-b-ic-icon-arrow" viewBox="0 0 32 32">
+    <g fill="none" fill-rule="evenodd">
+        <path stroke="#555555" d="M2.5 11.5v9h18v5.293L30.293 16 20.5 6.207V11.5h-18z"/>
+    </g>
+</symbol><symbol id="icon-b-ic-icon-bubble" viewBox="0 0 32 32">
+    <g fill="none" fill-rule="evenodd">
+        <path stroke="#555555" stroke-linecap="round" stroke-linejoin="round" d="M22.207 24.5L16.5 30.207V24.5H8A6.5 6.5 0 0 1 1.5 18V9A6.5 6.5 0 0 1 8 2.5h16A6.5 6.5 0 0 1 30.5 9v9a6.5 6.5 0 0 1-6.5 6.5h-1.793z"/>
+    </g>
+</symbol><symbol id="icon-b-ic-icon-heart" viewBox="0 0 32 32">
+    <g fill="none" fill-rule="evenodd">
+        <path fill-rule="nonzero" stroke="#555555" d="M15.996 30.675l1.981-1.79c7.898-7.177 10.365-9.718 12.135-13.012.922-1.716 1.377-3.37 1.377-5.076 0-4.65-3.647-8.297-8.297-8.297-2.33 0-4.86 1.527-6.817 3.824l-.38.447-.381-.447C13.658 4.027 11.126 2.5 8.797 2.5 4.147 2.5.5 6.147.5 10.797c0 1.714.46 3.375 1.389 5.098 1.775 3.288 4.26 5.843 12.123 12.974l1.984 1.806z"/>
+    </g>
+</symbol><symbol id="icon-b-ic-icon-load" viewBox="0 0 32 32">
+    <g fill="none" fill-rule="evenodd">
+        <path stroke="#555555" stroke-linecap="round" stroke-linejoin="round" d="M17.314 18.867l1.951-2.53 4 5.184h-17l6.5-8.84 4.549 6.186z"/>
+        <path fill="#555555" d="M18.01 4a11.798 11.798 0 0 0 0 1H3v24h24V14.986a8.738 8.738 0 0 0 1 0V29a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1h15.01z"/>
+        <path fill="#555555" d="M25 3h1v9h-1z"/>
+        <path stroke="#555555" d="M22 6l3.5-3.5L29 6"/>
+    </g>
+</symbol><symbol id="icon-b-ic-icon-location" viewBox="0 0 32 32">
+    <g fill="none" fill-rule="evenodd">
+        <g stroke="#555555">
+            <path d="M16 31.28C23.675 23.302 27.5 17.181 27.5 13c0-6.351-5.149-11.5-11.5-11.5S4.5 6.649 4.5 13c0 4.181 3.825 10.302 11.5 18.28z"/>
+            <circle cx="16" cy="13" r="4.5"/>
+        </g>
+    </g>
+</symbol><symbol id="icon-b-ic-icon-polygon" viewBox="0 0 32 32">
+    <g fill="none" fill-rule="evenodd">
+        <path stroke="#555555" d="M.576 16L8.29 29.5h15.42L31.424 16 23.71 2.5H8.29L.576 16z"/>
+    </g>
+</symbol><symbol id="icon-b-ic-icon-star-2" viewBox="0 0 32 32">
+    <g fill="none" fill-rule="evenodd">
+        <path stroke="#555555" d="M19.446 31.592l2.265-3.272 3.946.25.636-3.94 3.665-1.505-1.12-3.832 2.655-2.962-2.656-2.962 1.12-3.832-3.664-1.505-.636-3.941-3.946.25-2.265-3.271L16 3.024 12.554 1.07 10.289 4.34l-3.946-.25-.636 3.941-3.665 1.505 1.12 3.832L.508 16.33l2.656 2.962-1.12 3.832 3.664 1.504.636 3.942 3.946-.25 2.265 3.27L16 29.638l3.446 1.955z"/>
+    </g>
+</symbol><symbol id="icon-b-ic-icon-star" viewBox="0 0 32 32">
+    <g fill="none" fill-rule="evenodd">
+        <path stroke="#555555" d="M25.292 29.878l-1.775-10.346 7.517-7.327-10.388-1.51L16 1.282l-4.646 9.413-10.388 1.51 7.517 7.327-1.775 10.346L16 24.993l9.292 4.885z"/>
+    </g>
+</symbol><symbol id="icon-b-ic-icon" viewBox="0 0 24 24">
+    <g fill="none">
+        <path stroke="#555555" stroke-linecap="round" stroke-linejoin="round" d="M11.923 19.136L5.424 22l.715-7.065-4.731-5.296 6.94-1.503L11.923 2l3.574 6.136 6.94 1.503-4.731 5.296L18.42 22z"/>
+    </g>
+</symbol><symbol id="icon-b-ic-mask-load" viewBox="0 0 32 32">
+    <g fill="none" fill-rule="evenodd">
+        <path d="M0 0h32v32H0z"/>
+        <path fill="#555555" d="M18.01 4a11.798 11.798 0 0 0 0 1H3v24h24V14.986a8.738 8.738 0 0 0 1 0V29a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1h15.01zM15 23a6 6 0 1 1 0-12 6 6 0 0 1 0 12zm0-1a5 5 0 1 0 0-10 5 5 0 0 0 0 10z"/>
+        <path fill="#555555" d="M25 3h1v9h-1z"/>
+        <path stroke="#555555" d="M22 6l3.5-3.5L29 6"/>
+    </g>
+</symbol><symbol id="icon-b-ic-mask" viewBox="0 0 24 24">
+    <g fill="none">
+        <circle cx="12" cy="12" r="4.5" stroke="#555555"/>
+        <path fill="#555555" d="M2 1h20a1 1 0 0 1 1 1v20a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1zm0 1v20h20V2H2z"/>
+    </g>
+</symbol><symbol id="icon-b-ic-redo" viewBox="0 0 24 24">
+    <g fill="none" fill-rule="evenodd">
+        <path d="M0 0h24v24H0z" opacity=".5"/>
+        <path fill="#555555" d="M21 6H9a6 6 0 1 0 0 12h12v1H9A7 7 0 0 1 9 5h12v1z"/>
+        <path stroke="#555555" stroke-linecap="square" d="M19 3l2.5 2.5L19 8"/>
+    </g>
+</symbol><symbol id="icon-b-ic-reset" viewBox="0 0 24 24">
+    <g fill="none" fill-rule="evenodd">
+        <path d="M0 0h24v24H0z" opacity=".5"/>
+        <path fill="#555555" d="M2 13v-1a7 7 0 0 1 7-7h13v1h-1v5h1v1a7 7 0 0 1-7 7H2v-1h1v-5H2zm7-7a6 6 0 0 0-6 6v6h12a6 6 0 0 0 6-6V6H9z"/>
+        <path stroke="#555555" stroke-linecap="square" d="M19 3l2.5 2.5L19 8M5 16l-2.5 2.5L5 21"/>
+    </g>
+</symbol><symbol id="icon-b-ic-rotate-clockwise" viewBox="0 0 32 32">
+    <g fill="none" fill-rule="evenodd">
+        <path fill="#555555" d="M29 17h-.924c0 6.627-5.373 12-12 12-6.628 0-12-5.373-12-12C4.076 10.398 9.407 5.041 16 5V4C8.82 4 3 9.82 3 17s5.82 13 13 13 13-5.82 13-13z"/>
+        <path stroke="#555555" stroke-linecap="square" d="M16 1.5l4 3-4 3"/>
+        <path fill="#555555" fill-rule="nonzero" d="M16 4h4v1h-4z"/>
+    </g>
+</symbol><symbol id="icon-b-ic-rotate-counterclockwise" viewBox="0 0 32 32">
+    <g fill="none" fill-rule="evenodd">
+        <path fill="#555555" d="M3 17h.924c0 6.627 5.373 12 12 12 6.628 0 12-5.373 12-12 0-6.602-5.331-11.96-11.924-12V4c7.18 0 13 5.82 13 13s-5.82 13-13 13S3 24.18 3 17z"/>
+        <path fill="#555555" fill-rule="nonzero" d="M12 4h4v1h-4z"/>
+        <path stroke="#555555" stroke-linecap="square" d="M16 1.5l-4 3 4 3"/>
+    </g>
+</symbol><symbol id="icon-b-ic-rotate" viewBox="0 0 24 24">
+    <g fill="none" fill-rule="evenodd">
+        <path d="M0 0h24v24H0z"/>
+        <path fill="#555555" d="M8.349 22.254a10.002 10.002 0 0 1-2.778-1.719l.65-.76a9.002 9.002 0 0 0 2.495 1.548l-.367.931zm2.873.704l.078-.997a9 9 0 1 0-.557-17.852l-.14-.99A10.076 10.076 0 0 1 12.145 3c5.523 0 10 4.477 10 10s-4.477 10-10 10c-.312 0-.62-.014-.924-.042zm-7.556-4.655a9.942 9.942 0 0 1-1.253-2.996l.973-.234a8.948 8.948 0 0 0 1.124 2.693l-.844.537zm-1.502-5.91A9.949 9.949 0 0 1 2.88 9.23l.925.382a8.954 8.954 0 0 0-.644 2.844l-.998-.062zm2.21-5.686c.687-.848 1.51-1.58 2.436-2.166l.523.852a9.048 9.048 0 0 0-2.188 1.95l-.771-.636z"/>
+        <path stroke="#555555" stroke-linecap="square" d="M13 1l-2.5 2.5L13 6"/>
+    </g>
+</symbol><symbol id="icon-b-ic-shape-circle" viewBox="0 0 32 32">
+    <g fill="none" fill-rule="evenodd">
+        <circle cx="16" cy="16" r="14.5" stroke="#555555"/>
+    </g>
+</symbol><symbol id="icon-b-ic-shape-rectangle" viewBox="0 0 32 32">
+    <g fill="none" fill-rule="evenodd">
+        <rect width="27" height="27" x="2.5" y="2.5" stroke="#555555" rx="1"/>
+    </g>
+</symbol><symbol id="icon-b-ic-shape-triangle" viewBox="0 0 32 32">
+    <g fill="none" fill-rule="evenodd">
+        <path stroke="#555555" stroke-linecap="round" stroke-linejoin="round" d="M16 2.5l15.5 27H.5z"/>
+    </g>
+</symbol><symbol id="icon-b-ic-shape" viewBox="0 0 24 24">
+    <g fill="none" fill-rule="evenodd">
+        <path fill="#555555" d="M14.706 8H21a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H9a1 1 0 0 1-1-1v-4h1v4h12V9h-5.706l-.588-1z"/>
+        <path stroke="#555555" stroke-linecap="round" stroke-linejoin="round" d="M8.5 1.5l7.5 13H1z"/>
+    </g>
+</symbol><symbol id="icon-b-ic-text-align-center" viewBox="0 0 32 32">
+    <g fill="none" fill-rule="evenodd">
+        <path d="M0 0h32v32H0z"/>
+        <path fill="#555555" d="M2 5h28v1H2zM8 12h16v1H8zM2 19h28v1H2zM8 26h16v1H8z"/>
+    </g>
+</symbol><symbol id="icon-b-ic-text-align-left" viewBox="0 0 32 32">
+    <g fill="none" fill-rule="evenodd">
+        <path d="M0 0h32v32H0z"/>
+        <path fill="#555555" d="M2 5h28v1H2zM2 12h16v1H2zM2 19h28v1H2zM2 26h16v1H2z"/>
+    </g>
+</symbol><symbol id="icon-b-ic-text-align-right" viewBox="0 0 32 32">
+    <g fill="none" fill-rule="evenodd">
+        <path d="M0 0h32v32H0z"/>
+        <path fill="#555555" d="M2 5h28v1H2zM14 12h16v1H14zM2 19h28v1H2zM14 26h16v1H14z"/>
+    </g>
+</symbol><symbol id="icon-b-ic-text-bold" viewBox="0 0 32 32">
+    <g fill="none" fill-rule="evenodd">
+        <path d="M0 0h32v32H0z"/>
+        <path fill="#555555" d="M7 2h2v2H7zM7 28h2v2H7z"/>
+        <path stroke="#555555" stroke-width="2" d="M9 3v12h9a6 6 0 1 0 0-12H9zM9 15v14h10a7 7 0 0 0 0-14H9z"/>
+    </g>
+</symbol><symbol id="icon-b-ic-text-italic" viewBox="0 0 32 32">
+    <g fill="none" fill-rule="evenodd">
+        <path d="M0 0h32v32H0z"/>
+        <path fill="#555555" d="M15 2h5v1h-5zM11 29h5v1h-5zM17 3h1l-4 26h-1z"/>
+    </g>
+</symbol><symbol id="icon-b-ic-text-underline" viewBox="0 0 32 32">
+    <g fill="none" fill-rule="evenodd">
+        <path d="M0 0h32v32H0z"/>
+        <path fill="#555555" d="M8 2v14a8 8 0 1 0 16 0V2h1v14a9 9 0 0 1-18 0V2h1zM3 29h26v1H3z"/>
+        <path fill="#555555" d="M5 2h5v1H5zM22 2h5v1h-5z"/>
+    </g>
+</symbol><symbol id="icon-b-ic-text" viewBox="0 0 24 24">
+    <g fill="#555555" fill-rule="evenodd">
+        <path d="M4 3h15a1 1 0 0 1 1 1H3a1 1 0 0 1 1-1zM3 4h1v1H3zM19 4h1v1h-1z"/>
+        <path d="M11 3h1v18h-1z"/>
+        <path d="M10 20h3v1h-3z"/>
+    </g>
+</symbol><symbol id="icon-b-ic-undo" viewBox="0 0 24 24">
+    <g fill="none" fill-rule="evenodd">
+        <path d="M24 0H0v24h24z" opacity=".5"/>
+        <path fill="#555555" d="M3 6h12a6 6 0 1 1 0 12H3v1h12a7 7 0 0 0 0-14H3v1z"/>
+        <path stroke="#555555" stroke-linecap="square" d="M5 3L2.5 5.5 5 8"/>
+    </g>
+</symbol><symbol id="icon-b-img-bi" viewBox="0 0 257 26">
+    <g fill="#FDBA3B">
+        <path d="M26 5a8.001 8.001 0 0 0 0 16 8.001 8.001 0 0 0 0-16M51.893 19.812L43.676 5.396A.78.78 0 0 0 43 5a.78.78 0 0 0-.677.396l-8.218 14.418a.787.787 0 0 0 0 .792c.14.244.396.394.676.394h16.436c.28 0 .539-.15.678-.396a.796.796 0 0 0-.002-.792M15.767 5.231A.79.79 0 0 0 15.21 5H.791A.791.791 0 0 0 0 5.79v6.42a.793.793 0 0 0 .791.79h3.21v7.21c.001.21.082.408.234.56.147.148.347.23.558.23h6.416a.788.788 0 0 0 .792-.79V13h3.006c.413 0 .611-.082.762-.232.15-.149.23-.35.231-.559V5.791a.787.787 0 0 0-.233-.56M85.767 5.231A.79.79 0 0 0 85.21 5H70.791a.791.791 0 0 0-.791.79v6.42a.793.793 0 0 0 .791.79h3.21v7.21c.001.21.082.408.234.56.147.148.347.23.558.23h6.416a.788.788 0 0 0 .792-.79V13h3.006c.413 0 .611-.082.762-.232.15-.149.23-.35.231-.559V5.791a.787.787 0 0 0-.233-.56M65.942 9.948l2.17-3.76a.78.78 0 0 0 0-.792.791.791 0 0 0-.684-.396h-8.54A5.889 5.889 0 0 0 53 10.86a5.887 5.887 0 0 0 3.07 5.17l-2.184 3.782A.792.792 0 0 0 54.571 21h8.54a5.89 5.89 0 0 0 2.831-11.052M105.7 21h2.3V5h-2.3zM91 5h2.4v10.286c0 1.893 1.612 3.429 3.6 3.429s3.6-1.536 3.6-3.429V5h2.4v10.286c0 3.156-2.686 5.714-6 5.714-3.313 0-6-2.558-6-5.714V5zM252.148 21.128h-2.377V9.659h2.27v1.64c.69-1.299 1.792-1.938 3.304-1.938.497 0 .95.065 1.382.192l-.215 2.277a3.734 3.734 0 0 0-1.275-.213c-1.814 0-3.089 1.234-3.089 3.638v5.873zm-7.095-5.744a3.734 3.734 0 0 0-1.101-2.703c-.714-.766-1.6-1.149-2.658-1.149-1.058 0-1.944.383-2.679 1.149a3.803 3.803 0 0 0-1.08 2.703c0 1.063.368 1.978 1.08 2.722.735.746 1.62 1.128 2.68 1.128 1.058 0 1.943-.382 2.657-1.128.734-.744 1.101-1.659 1.101-2.722zm-9.916 0c0-1.682.583-3.086 1.729-4.256 1.166-1.17 2.635-1.767 4.428-1.767 1.793 0 3.262.597 4.407 1.767 1.167 1.17 1.75 2.574 1.75 4.256 0 1.7-.583 3.127-1.75 4.297-1.145 1.17-2.614 1.745-4.407 1.745-1.793 0-3.262-.575-4.428-1.745-1.146-1.17-1.729-2.596-1.729-4.297zm-1.5 3.233l.821 1.83c-.864.638-1.944.958-3.22.958-2.526 0-3.822-1.554-3.822-4.383V11.66h-2.01v-2h2.031V5.595h2.355v4.063h4.018v2h-4.018v5.405c0 1.469.605 2.191 1.793 2.191.626 0 1.318-.212 2.052-.638zm-12.43 2.51h2.375V9.66h-2.376v11.469zm1.23-12.977c-.929 0-1.642-.682-1.642-1.596 0-.873.713-1.554 1.643-1.554.885 0 1.576.681 1.576 1.554 0 .914-.69 1.596-1.576 1.596zm-6.49 7.234c0-1.086-.346-1.98-1.037-2.724-.692-.745-1.599-1.128-2.7-1.128-1.102 0-2.01.383-2.7 1.128-.692.744-1.037 1.638-1.037 2.724 0 1.084.345 2.02 1.036 2.766.691.744 1.6 1.105 2.7 1.105 1.102 0 2.01-.361 2.7-1.105.692-.746 1.038-1.682 1.038-2.766zm-.173-4.129V5h2.397v16.128h-2.354v-1.596c-1.015 1.255-2.333 1.873-3.91 1.873-1.663 0-3.068-.575-4.169-1.724-1.102-1.17-1.663-2.596-1.663-4.297 0-1.682.561-3.107 1.663-4.256 1.101-1.17 2.485-1.745 4.148-1.745 1.534 0 2.83.617 3.888 1.872zm-11.48 9.873h-10.218V5.405h10.195v2.318h-7.711V12h7.15v2.32h-7.15v4.489h7.733v2.319zm-23.891-9.724c-1.793 0-3.132 1.192-3.478 2.979h6.783c-.194-1.808-1.555-2.979-3.305-2.979zm5.703 3.766c0 .32-.021.703-.086 1.128h-9.095c.346 1.787 1.62 3 3.867 3 1.318 0 2.916-.49 3.953-1.234l.994 1.724c-1.189.872-3.067 1.595-5.033 1.595-4.364 0-6.243-3-6.243-6.021 0-1.724.54-3.15 1.642-4.277 1.101-1.127 2.548-1.702 4.298-1.702 1.664 0 3.046.511 4.105 1.553 1.058 1.043 1.598 2.447 1.598 4.234zm-19.949 3.894c1.08 0 1.966-.362 2.68-1.085.712-.724 1.058-1.617 1.058-2.703 0-1.084-.346-2-1.059-2.701-.713-.702-1.599-1.064-2.679-1.064-1.058 0-1.944.362-2.656 1.085-.714.702-1.059 1.596-1.059 2.68 0 1.086.345 2 1.059 2.724.712.702 1.598 1.064 2.656 1.064zm3.673-7.936V9.66h2.29v10.299c0 1.85-.584 3.32-1.728 4.404-1.146 1.085-2.68 1.638-4.58 1.638-1.945 0-3.672-.553-5.206-1.638l1.037-1.808c1.296.915 2.679 1.36 4.126 1.36 2.484 0 3.996-1.51 3.996-3.637v-.83c-1.015 1.127-2.311 1.702-3.91 1.702-1.684 0-3.089-.554-4.19-1.68-1.102-1.128-1.642-2.532-1.642-4.214 0-1.68.561-3.085 1.706-4.191 1.145-1.128 2.571-1.681 4.234-1.681 1.534 0 2.83.575 3.867 1.745zm-18.07 8.127c1.102 0 1.988-.382 2.7-1.128.714-.744 1.06-1.659 1.06-2.743 0-1.065-.346-1.98-1.06-2.724-.712-.745-1.598-1.128-2.7-1.128-1.101 0-2.008.383-2.7 1.128-.691.744-1.036 1.66-1.036 2.745 0 1.084.345 2 1.037 2.745.691.744 1.598 1.105 2.7 1.105zm3.652-8V9.66h2.29v11.469h-2.29v-1.575c-1.059 1.234-2.399 1.852-3.976 1.852-1.663 0-3.067-.575-4.168-1.745-1.102-1.17-1.642-2.617-1.642-4.34 0-1.724.54-3.128 1.642-4.256 1.1-1.128 2.505-1.681 4.168-1.681 1.577 0 2.917.617 3.976 1.872zM138.79 9.34c1.404 0 2.527.448 3.37 1.34.863.873 1.295 2.086 1.295 3.596v6.852h-2.376V14.66c0-2.021-1.036-3.128-2.657-3.128-1.727 0-2.915 1.255-2.915 3.192v6.404h-2.377v-6.426c0-1.978-1.037-3.17-2.679-3.17-1.728 0-2.937 1.277-2.937 3.234v6.362h-2.377V9.659h2.333v1.66c.692-1.212 1.988-1.979 3.522-1.979 1.533.021 2.958.767 3.586 2.107.798-1.277 2.419-2.107 4.212-2.107zm-19.517 11.788h2.484V5.405h-2.484v15.723z"/>
+    </g>
+</symbol></svg>
\ No newline at end of file
diff --git a/admin/js/vendors/tui.image-editor/svg/icon-c.svg b/admin/js/vendors/tui.image-editor/svg/icon-c.svg
new file mode 100644 (file)
index 0000000..8074cf0
--- /dev/null
@@ -0,0 +1,224 @@
+<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs/><symbol id="icon-c-ic-apply" viewBox="0 0 24 24">
+    <g fill="none" fill-rule="evenodd">
+        <path d="M0 0h24v24H0z"/>
+        <path stroke="#e9e9e9" d="M4 12.011l5 5L20.011 6"/>
+    </g>
+</symbol><symbol id="icon-c-ic-cancel" viewBox="0 0 24 24">
+    <g fill="none" fill-rule="evenodd">
+        <path d="M0 0h24v24H0z"/>
+        <path stroke="#e9e9e9" d="M6 6l12 12M18 6L6 18"/>
+    </g>
+</symbol><symbol id="icon-c-ic-crop" viewBox="0 0 24 24">
+    <g fill="none" fill-rule="evenodd">
+        <path d="M0 0h24v24H0z"/>
+        <path fill="#e9e9e9" d="M4 0h1v20a1 1 0 0 1-1-1V0zM20 17h-1V5h1v12zm0 2v5h-1v-5h1z"/>
+        <path fill="#e9e9e9" d="M5 19h19v1H5zM4.762 4v1H0V4h4.762zM7 4h12a1 1 0 0 1 1 1H7V4z"/>
+    </g>
+</symbol><symbol id="icon-c-ic-delete-all" viewBox="0 0 24 24">
+    <g fill="#e9e9e9" fill-rule="evenodd">
+        <path d="M5 23H3a1 1 0 0 1-1-1V6h1v16h2v1zm16-10h-1V6h1v7zM9 13H8v-3h1v3zm3 0h-1v-3h1v3zm3 0h-1v-3h1v3zM14.794 3.794L13 2h-3L8.206 3.794A.963.963 0 0 1 8 2.5l.703-1.055A1 1 0 0 1 9.535 1h3.93a1 1 0 0 1 .832.445L15 2.5a.965.965 0 0 1-.206 1.294zM14.197 4H8.803h5.394z"/>
+        <path d="M0 3h23v1H0zM11.286 21H8.714L8 23H7l1-2.8V20h.071L9.5 16h1l1.429 4H12v.2l1 2.8h-1l-.714-2zm-.357-1L10 17.4 9.071 20h1.858zM20 22h3v1h-4v-7h1v6zm-5 0h3v1h-4v-7h1v6z"/>
+    </g>
+</symbol><symbol id="icon-c-ic-delete" viewBox="0 0 24 24">
+    <g fill="#e9e9e9" fill-rule="evenodd">
+        <path d="M3 6v16h17V6h1v16a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V6h1zM14.794 3.794L13 2h-3L8.206 3.794A.963.963 0 0 1 8 2.5l.703-1.055A1 1 0 0 1 9.535 1h3.93a1 1 0 0 1 .832.445L15 2.5a.965.965 0 0 1-.206 1.294zM14.197 4H8.803h5.394z"/>
+        <path d="M0 3h23v1H0zM8 10h1v6H8v-6zm3 0h1v6h-1v-6zm3 0h1v6h-1v-6z"/>
+    </g>
+</symbol><symbol id="icon-c-ic-draw-free" viewBox="0 0 32 32">
+    <g fill="none" fill-rule="evenodd">
+        <path stroke="#e9e9e9" d="M2.5 20.929C2.594 10.976 4.323 6 7.686 6c5.872 0 2.524 19 7.697 19s1.89-14.929 6.414-14.929 1.357 10.858 5.13 10.858c1.802 0 2.657-2.262 2.566-6.786"/>
+    </g>
+</symbol><symbol id="icon-c-ic-draw-line" viewBox="0 0 32 32">
+    <g fill="none" fill-rule="evenodd">
+        <path stroke="#e9e9e9" d="M2 15.5h28"/>
+    </g>
+</symbol><symbol id="icon-c-ic-draw" viewBox="0 0 24 24">
+    <g fill="none">
+        <path stroke="#e9e9e9" d="M2.5 21.5H5c.245 0 .48-.058.691-.168l.124-.065.14.01c.429.028.85-.127 1.16-.437L22.55 5.405a.5.5 0 0 0 0-.707l-3.246-3.245a.5.5 0 0 0-.707 0L3.162 16.888a1.495 1.495 0 0 0-.437 1.155l.01.14-.065.123c-.111.212-.17.448-.17.694v2.5z"/>
+        <path fill="#e9e9e9" d="M16.414 3.707l3.89 3.89-.708.706-3.889-3.889z"/>
+    </g>
+</symbol><symbol id="icon-c-ic-filter" viewBox="0 0 24 24">
+    <g fill="none" fill-rule="evenodd">
+        <path d="M0 0h24v24H0z"/>
+        <path fill="#e9e9e9" d="M12 7v1H2V7h10zm6 0h4v1h-4V7zM12 16v1h10v-1H12zm-6 0H2v1h4v-1z"/>
+        <path fill="#e9e9e9" d="M8.5 20a3.5 3.5 0 1 1 0-7 3.5 3.5 0 0 1 0 7zm0-1a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5zM15.5 11a3.5 3.5 0 1 1 0-7 3.5 3.5 0 0 1 0 7zm0-1a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5z"/>
+    </g>
+</symbol><symbol id="icon-c-ic-flip-reset" viewBox="0 0 31 32">
+    <g fill="none" fill-rule="evenodd">
+        <path d="M31 0H0v32h31z"/>
+        <path fill="#e9e9e9" d="M28 16a8 8 0 0 1-8 8H3v-1h1v-7H3a8 8 0 0 1 8-8h17v1h-1v7h1zM11 9a7 7 0 0 0-7 7v7h16a7 7 0 0 0 7-7V9H11z"/>
+        <path stroke="#e9e9e9" stroke-linecap="square" d="M24 5l3.5 3.5L24 12M7 20l-3.5 3.5L7 27"/>
+    </g>
+</symbol><symbol id="icon-c-ic-flip-x" viewBox="0 0 32 32">
+    <g fill="none" fill-rule="evenodd">
+        <path d="M32 32H0V0h32z"/>
+        <path fill="#e9e9e9" d="M17 32h-1V0h1zM27.167 11l.5 3h-1.03l-.546-3h1.076zm-.5-3h-1.122L25 5h-5V4h5.153a1 1 0 0 1 .986.836L26.667 8zm1.5 9l.5 3h-.94l-.545-3h.985zm1 6l.639 3.836A1 1 0 0 1 28.819 28H26v-1h3l-.726-4h.894zM23 28h-3v-1h3v1zM13 4v1H7L3 27h10v1H3.18a1 1 0 0 1-.986-1.164l3.666-22A1 1 0 0 1 6.847 4H13z"/>
+    </g>
+</symbol><symbol id="icon-c-ic-flip-y" viewBox="0 0 32 32">
+    <g fill="none" fill-rule="evenodd">
+        <path d="M0 0v32h32V0z"/>
+        <path fill="#e9e9e9" d="M0 16v1h32v-1zM11 27.167l3 .5v-1.03l-3-.546v1.076zm-3-.5v-1.122L5 25v-5H4v5.153a1 1 0 0 0 .836.986L8 26.667zm9 1.5l3 .5v-.94l-3-.545v.985zm6 1l3.836.639A1 1 0 0 0 28 28.82V26h-1v3l-4-.727v.894zM28 23v-3h-1v3h1zM4 13h1V7l22-4v10h1V3.18a1 1 0 0 0-1.164-.986l-22 3.667A1 1 0 0 0 4 6.847V13z"/>
+    </g>
+</symbol><symbol id="icon-c-ic-flip" viewBox="0 0 24 24">
+    <g fill="none" fill-rule="evenodd">
+        <path d="M0 0h24v24H0z"/>
+        <path fill="#e9e9e9" d="M11 0h1v24h-1zM19 21v-1h2v-2h1v2a1 1 0 0 1-1 1h-2zm-2 0h-3v-1h3v1zm5-5h-1v-3h1v3zm0-5h-1V8h1v3zm0-5h-1V4h-2V3h2a1 1 0 0 1 1 1v2zm-5-3v1h-3V3h3zM9 3v1H2v16h7v1H2a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h7z"/>
+    </g>
+</symbol><symbol id="icon-c-ic-icon-arrow-2" viewBox="0 0 32 32">
+    <g fill="none" fill-rule="evenodd">
+        <path stroke="#e9e9e9" stroke-linecap="round" stroke-linejoin="round" d="M21.793 18.5H2.5v-5h18.935l-7.6-8h5.872l10.5 10.5-10.5 10.5h-5.914l8-8z"/>
+    </g>
+</symbol><symbol id="icon-c-ic-icon-arrow-3" viewBox="0 0 32 32">
+    <g fill="none" fill-rule="evenodd">
+        <path stroke="#e9e9e9" stroke-linecap="round" stroke-linejoin="round" d="M25.288 16.42L14.208 27.5H6.792l11.291-11.291L6.826 4.5h7.381l11.661 11.661-.58.258z"/>
+    </g>
+</symbol><symbol id="icon-c-ic-icon-arrow" viewBox="0 0 32 32">
+    <g fill="none" fill-rule="evenodd">
+        <path stroke="#e9e9e9" d="M2.5 11.5v9h18v5.293L30.293 16 20.5 6.207V11.5h-18z"/>
+    </g>
+</symbol><symbol id="icon-c-ic-icon-bubble" viewBox="0 0 32 32">
+    <g fill="none" fill-rule="evenodd">
+        <path stroke="#e9e9e9" stroke-linecap="round" stroke-linejoin="round" d="M22.207 24.5L16.5 30.207V24.5H8A6.5 6.5 0 0 1 1.5 18V9A6.5 6.5 0 0 1 8 2.5h16A6.5 6.5 0 0 1 30.5 9v9a6.5 6.5 0 0 1-6.5 6.5h-1.793z"/>
+    </g>
+</symbol><symbol id="icon-c-ic-icon-heart" viewBox="0 0 32 32">
+    <g fill="none" fill-rule="evenodd">
+        <path fill-rule="nonzero" stroke="#e9e9e9" d="M15.996 30.675l1.981-1.79c7.898-7.177 10.365-9.718 12.135-13.012.922-1.716 1.377-3.37 1.377-5.076 0-4.65-3.647-8.297-8.297-8.297-2.33 0-4.86 1.527-6.817 3.824l-.38.447-.381-.447C13.658 4.027 11.126 2.5 8.797 2.5 4.147 2.5.5 6.147.5 10.797c0 1.714.46 3.375 1.389 5.098 1.775 3.288 4.26 5.843 12.123 12.974l1.984 1.806z"/>
+    </g>
+</symbol><symbol id="icon-c-ic-icon-load" viewBox="0 0 32 32">
+    <g fill="none" fill-rule="evenodd">
+        <path stroke="#e9e9e9" stroke-linecap="round" stroke-linejoin="round" d="M17.314 18.867l1.951-2.53 4 5.184h-17l6.5-8.84 4.549 6.186z"/>
+        <path fill="#e9e9e9" d="M18.01 4a11.798 11.798 0 0 0 0 1H3v24h24V14.986a8.738 8.738 0 0 0 1 0V29a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1h15.01z"/>
+        <path fill="#e9e9e9" d="M25 3h1v9h-1z"/>
+        <path stroke="#e9e9e9" d="M22 6l3.5-3.5L29 6"/>
+    </g>
+</symbol><symbol id="icon-c-ic-icon-location" viewBox="0 0 32 32">
+    <g fill="none" fill-rule="evenodd">
+        <g stroke="#e9e9e9">
+            <path d="M16 31.28C23.675 23.302 27.5 17.181 27.5 13c0-6.351-5.149-11.5-11.5-11.5S4.5 6.649 4.5 13c0 4.181 3.825 10.302 11.5 18.28z"/>
+            <circle cx="16" cy="13" r="4.5"/>
+        </g>
+    </g>
+</symbol><symbol id="icon-c-ic-icon-polygon" viewBox="0 0 32 32">
+    <g fill="none" fill-rule="evenodd">
+        <path stroke="#e9e9e9" d="M.576 16L8.29 29.5h15.42L31.424 16 23.71 2.5H8.29L.576 16z"/>
+    </g>
+</symbol><symbol id="icon-c-ic-icon-star-2" viewBox="0 0 32 32">
+    <g fill="none" fill-rule="evenodd">
+        <path stroke="#e9e9e9" d="M19.446 31.592l2.265-3.272 3.946.25.636-3.94 3.665-1.505-1.12-3.832 2.655-2.962-2.656-2.962 1.12-3.832-3.664-1.505-.636-3.941-3.946.25-2.265-3.271L16 3.024 12.554 1.07 10.289 4.34l-3.946-.25-.636 3.941-3.665 1.505 1.12 3.832L.508 16.33l2.656 2.962-1.12 3.832 3.664 1.504.636 3.942 3.946-.25 2.265 3.27L16 29.638l3.446 1.955z"/>
+    </g>
+</symbol><symbol id="icon-c-ic-icon-star" viewBox="0 0 32 32">
+    <g fill="none" fill-rule="evenodd">
+        <path stroke="#e9e9e9" d="M25.292 29.878l-1.775-10.346 7.517-7.327-10.388-1.51L16 1.282l-4.646 9.413-10.388 1.51 7.517 7.327-1.775 10.346L16 24.993l9.292 4.885z"/>
+    </g>
+</symbol><symbol id="icon-c-ic-icon" viewBox="0 0 24 24">
+    <g fill="none">
+        <path stroke="#e9e9e9" stroke-linecap="round" stroke-linejoin="round" d="M11.923 19.136L5.424 22l.715-7.065-4.731-5.296 6.94-1.503L11.923 2l3.574 6.136 6.94 1.503-4.731 5.296L18.42 22z"/>
+    </g>
+</symbol><symbol id="icon-c-ic-mask-load" viewBox="0 0 32 32">
+    <g fill="none" fill-rule="evenodd">
+        <path d="M0 0h32v32H0z"/>
+        <path fill="#e9e9e9" d="M18.01 4a11.798 11.798 0 0 0 0 1H3v24h24V14.986a8.738 8.738 0 0 0 1 0V29a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1h15.01zM15 23a6 6 0 1 1 0-12 6 6 0 0 1 0 12zm0-1a5 5 0 1 0 0-10 5 5 0 0 0 0 10z"/>
+        <path fill="#e9e9e9" d="M25 3h1v9h-1z"/>
+        <path stroke="#e9e9e9" d="M22 6l3.5-3.5L29 6"/>
+    </g>
+</symbol><symbol id="icon-c-ic-mask" viewBox="0 0 24 24">
+    <g fill="none">
+        <circle cx="12" cy="12" r="4.5" stroke="#e9e9e9"/>
+        <path fill="#e9e9e9" d="M2 1h20a1 1 0 0 1 1 1v20a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1zm0 1v20h20V2H2z"/>
+    </g>
+</symbol><symbol id="icon-c-ic-redo" viewBox="0 0 24 24">
+    <g fill="none" fill-rule="evenodd">
+        <path d="M0 0h24v24H0z" opacity=".5"/>
+        <path fill="#e9e9e9" d="M21 6H9a6 6 0 1 0 0 12h12v1H9A7 7 0 0 1 9 5h12v1z"/>
+        <path stroke="#e9e9e9" stroke-linecap="square" d="M19 3l2.5 2.5L19 8"/>
+    </g>
+</symbol><symbol id="icon-c-ic-reset" viewBox="0 0 24 24">
+    <g fill="none" fill-rule="evenodd">
+        <path d="M0 0h24v24H0z" opacity=".5"/>
+        <path fill="#e9e9e9" d="M2 13v-1a7 7 0 0 1 7-7h13v1h-1v5h1v1a7 7 0 0 1-7 7H2v-1h1v-5H2zm7-7a6 6 0 0 0-6 6v6h12a6 6 0 0 0 6-6V6H9z"/>
+        <path stroke="#e9e9e9" stroke-linecap="square" d="M19 3l2.5 2.5L19 8M5 16l-2.5 2.5L5 21"/>
+    </g>
+</symbol><symbol id="icon-c-ic-rotate-clockwise" viewBox="0 0 32 32">
+    <g fill="none" fill-rule="evenodd">
+        <path fill="#e9e9e9" d="M29 17h-.924c0 6.627-5.373 12-12 12-6.628 0-12-5.373-12-12C4.076 10.398 9.407 5.041 16 5V4C8.82 4 3 9.82 3 17s5.82 13 13 13 13-5.82 13-13z"/>
+        <path stroke="#e9e9e9" stroke-linecap="square" d="M16 1.5l4 3-4 3"/>
+        <path fill="#e9e9e9" fill-rule="nonzero" d="M16 4h4v1h-4z"/>
+    </g>
+</symbol><symbol id="icon-c-ic-rotate-counterclockwise" viewBox="0 0 32 32">
+    <g fill="none" fill-rule="evenodd">
+        <path fill="#e9e9e9" d="M3 17h.924c0 6.627 5.373 12 12 12 6.628 0 12-5.373 12-12 0-6.602-5.331-11.96-11.924-12V4c7.18 0 13 5.82 13 13s-5.82 13-13 13S3 24.18 3 17z"/>
+        <path fill="#e9e9e9" fill-rule="nonzero" d="M12 4h4v1h-4z"/>
+        <path stroke="#e9e9e9" stroke-linecap="square" d="M16 1.5l-4 3 4 3"/>
+    </g>
+</symbol><symbol id="icon-c-ic-rotate" viewBox="0 0 24 24">
+    <g fill="none" fill-rule="evenodd">
+        <path d="M0 0h24v24H0z"/>
+        <path fill="#e9e9e9" d="M8.349 22.254a10.002 10.002 0 0 1-2.778-1.719l.65-.76a9.002 9.002 0 0 0 2.495 1.548l-.367.931zm2.873.704l.078-.997a9 9 0 1 0-.557-17.852l-.14-.99A10.076 10.076 0 0 1 12.145 3c5.523 0 10 4.477 10 10s-4.477 10-10 10c-.312 0-.62-.014-.924-.042zm-7.556-4.655a9.942 9.942 0 0 1-1.253-2.996l.973-.234a8.948 8.948 0 0 0 1.124 2.693l-.844.537zm-1.502-5.91A9.949 9.949 0 0 1 2.88 9.23l.925.382a8.954 8.954 0 0 0-.644 2.844l-.998-.062zm2.21-5.686c.687-.848 1.51-1.58 2.436-2.166l.523.852a9.048 9.048 0 0 0-2.188 1.95l-.771-.636z"/>
+        <path stroke="#e9e9e9" stroke-linecap="square" d="M13 1l-2.5 2.5L13 6"/>
+    </g>
+</symbol><symbol id="icon-c-ic-shape-circle" viewBox="0 0 32 32">
+    <g fill="none" fill-rule="evenodd">
+        <circle cx="16" cy="16" r="14.5" stroke="#e9e9e9"/>
+    </g>
+</symbol><symbol id="icon-c-ic-shape-rectangle" viewBox="0 0 32 32">
+    <g fill="none" fill-rule="evenodd">
+        <rect width="27" height="27" x="2.5" y="2.5" stroke="#e9e9e9" rx="1"/>
+    </g>
+</symbol><symbol id="icon-c-ic-shape-triangle" viewBox="0 0 32 32">
+    <g fill="none" fill-rule="evenodd">
+        <path stroke="#e9e9e9" stroke-linecap="round" stroke-linejoin="round" d="M16 2.5l15.5 27H.5z"/>
+    </g>
+</symbol><symbol id="icon-c-ic-shape" viewBox="0 0 24 24">
+    <g fill="none" fill-rule="evenodd">
+        <path fill="#e9e9e9" d="M14.706 8H21a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H9a1 1 0 0 1-1-1v-4h1v4h12V9h-5.706l-.588-1z"/>
+        <path stroke="#e9e9e9" stroke-linecap="round" stroke-linejoin="round" d="M8.5 1.5l7.5 13H1z"/>
+    </g>
+</symbol><symbol id="icon-c-ic-text-align-center" viewBox="0 0 32 32">
+    <g fill="none" fill-rule="evenodd">
+        <path d="M0 0h32v32H0z"/>
+        <path fill="#e9e9e9" d="M2 5h28v1H2zM8 12h16v1H8zM2 19h28v1H2zM8 26h16v1H8z"/>
+    </g>
+</symbol><symbol id="icon-c-ic-text-align-left" viewBox="0 0 32 32">
+    <g fill="none" fill-rule="evenodd">
+        <path d="M0 0h32v32H0z"/>
+        <path fill="#e9e9e9" d="M2 5h28v1H2zM2 12h16v1H2zM2 19h28v1H2zM2 26h16v1H2z"/>
+    </g>
+</symbol><symbol id="icon-c-ic-text-align-right" viewBox="0 0 32 32">
+    <g fill="none" fill-rule="evenodd">
+        <path d="M0 0h32v32H0z"/>
+        <path fill="#e9e9e9" d="M2 5h28v1H2zM14 12h16v1H14zM2 19h28v1H2zM14 26h16v1H14z"/>
+    </g>
+</symbol><symbol id="icon-c-ic-text-bold" viewBox="0 0 32 32">
+    <g fill="none" fill-rule="evenodd">
+        <path d="M0 0h32v32H0z"/>
+        <path fill="#e9e9e9" d="M7 2h2v2H7zM7 28h2v2H7z"/>
+        <path stroke="#e9e9e9" stroke-width="2" d="M9 3v12h9a6 6 0 1 0 0-12H9zM9 15v14h10a7 7 0 0 0 0-14H9z"/>
+    </g>
+</symbol><symbol id="icon-c-ic-text-italic" viewBox="0 0 32 32">
+    <g fill="none" fill-rule="evenodd">
+        <path d="M0 0h32v32H0z"/>
+        <path fill="#e9e9e9" d="M15 2h5v1h-5zM11 29h5v1h-5zM17 3h1l-4 26h-1z"/>
+    </g>
+</symbol><symbol id="icon-c-ic-text-underline" viewBox="0 0 32 32">
+    <g fill="none" fill-rule="evenodd">
+        <path d="M0 0h32v32H0z"/>
+        <path fill="#e9e9e9" d="M8 2v14a8 8 0 1 0 16 0V2h1v14a9 9 0 0 1-18 0V2h1zM3 29h26v1H3z"/>
+        <path fill="#e9e9e9" d="M5 2h5v1H5zM22 2h5v1h-5z"/>
+    </g>
+</symbol><symbol id="icon-c-ic-text" viewBox="0 0 24 24">
+    <g fill="#e9e9e9" fill-rule="evenodd">
+        <path d="M4 3h15a1 1 0 0 1 1 1H3a1 1 0 0 1 1-1zM3 4h1v1H3zM19 4h1v1h-1z"/>
+        <path d="M11 3h1v18h-1z"/>
+        <path d="M10 20h3v1h-3z"/>
+    </g>
+</symbol><symbol id="icon-c-ic-undo" viewBox="0 0 24 24">
+    <g fill="none" fill-rule="evenodd">
+        <path d="M24 0H0v24h24z" opacity=".5"/>
+        <path fill="#e9e9e9" d="M3 6h12a6 6 0 1 1 0 12H3v1h12a7 7 0 0 0 0-14H3v1z"/>
+        <path stroke="#e9e9e9" stroke-linecap="square" d="M5 3L2.5 5.5 5 8"/>
+    </g>
+</symbol><symbol id="icon-c-img-bi" viewBox="0 0 257 26">
+    <g fill="#FDBA3B">
+        <path d="M26 5a8.001 8.001 0 0 0 0 16 8.001 8.001 0 0 0 0-16M51.893 19.812L43.676 5.396A.78.78 0 0 0 43 5a.78.78 0 0 0-.677.396l-8.218 14.418a.787.787 0 0 0 0 .792c.14.244.396.394.676.394h16.436c.28 0 .539-.15.678-.396a.796.796 0 0 0-.002-.792M15.767 5.231A.79.79 0 0 0 15.21 5H.791A.791.791 0 0 0 0 5.79v6.42a.793.793 0 0 0 .791.79h3.21v7.21c.001.21.082.408.234.56.147.148.347.23.558.23h6.416a.788.788 0 0 0 .792-.79V13h3.006c.413 0 .611-.082.762-.232.15-.149.23-.35.231-.559V5.791a.787.787 0 0 0-.233-.56M85.767 5.231A.79.79 0 0 0 85.21 5H70.791a.791.791 0 0 0-.791.79v6.42a.793.793 0 0 0 .791.79h3.21v7.21c.001.21.082.408.234.56.147.148.347.23.558.23h6.416a.788.788 0 0 0 .792-.79V13h3.006c.413 0 .611-.082.762-.232.15-.149.23-.35.231-.559V5.791a.787.787 0 0 0-.233-.56M65.942 9.948l2.17-3.76a.78.78 0 0 0 0-.792.791.791 0 0 0-.684-.396h-8.54A5.889 5.889 0 0 0 53 10.86a5.887 5.887 0 0 0 3.07 5.17l-2.184 3.782A.792.792 0 0 0 54.571 21h8.54a5.89 5.89 0 0 0 2.831-11.052M105.7 21h2.3V5h-2.3zM91 5h2.4v10.286c0 1.893 1.612 3.429 3.6 3.429s3.6-1.536 3.6-3.429V5h2.4v10.286c0 3.156-2.686 5.714-6 5.714-3.313 0-6-2.558-6-5.714V5zM252.148 21.128h-2.377V9.659h2.27v1.64c.69-1.299 1.792-1.938 3.304-1.938.497 0 .95.065 1.382.192l-.215 2.277a3.734 3.734 0 0 0-1.275-.213c-1.814 0-3.089 1.234-3.089 3.638v5.873zm-7.095-5.744a3.734 3.734 0 0 0-1.101-2.703c-.714-.766-1.6-1.149-2.658-1.149-1.058 0-1.944.383-2.679 1.149a3.803 3.803 0 0 0-1.08 2.703c0 1.063.368 1.978 1.08 2.722.735.746 1.62 1.128 2.68 1.128 1.058 0 1.943-.382 2.657-1.128.734-.744 1.101-1.659 1.101-2.722zm-9.916 0c0-1.682.583-3.086 1.729-4.256 1.166-1.17 2.635-1.767 4.428-1.767 1.793 0 3.262.597 4.407 1.767 1.167 1.17 1.75 2.574 1.75 4.256 0 1.7-.583 3.127-1.75 4.297-1.145 1.17-2.614 1.745-4.407 1.745-1.793 0-3.262-.575-4.428-1.745-1.146-1.17-1.729-2.596-1.729-4.297zm-1.5 3.233l.821 1.83c-.864.638-1.944.958-3.22.958-2.526 0-3.822-1.554-3.822-4.383V11.66h-2.01v-2h2.031V5.595h2.355v4.063h4.018v2h-4.018v5.405c0 1.469.605 2.191 1.793 2.191.626 0 1.318-.212 2.052-.638zm-12.43 2.51h2.375V9.66h-2.376v11.469zm1.23-12.977c-.929 0-1.642-.682-1.642-1.596 0-.873.713-1.554 1.643-1.554.885 0 1.576.681 1.576 1.554 0 .914-.69 1.596-1.576 1.596zm-6.49 7.234c0-1.086-.346-1.98-1.037-2.724-.692-.745-1.599-1.128-2.7-1.128-1.102 0-2.01.383-2.7 1.128-.692.744-1.037 1.638-1.037 2.724 0 1.084.345 2.02 1.036 2.766.691.744 1.6 1.105 2.7 1.105 1.102 0 2.01-.361 2.7-1.105.692-.746 1.038-1.682 1.038-2.766zm-.173-4.129V5h2.397v16.128h-2.354v-1.596c-1.015 1.255-2.333 1.873-3.91 1.873-1.663 0-3.068-.575-4.169-1.724-1.102-1.17-1.663-2.596-1.663-4.297 0-1.682.561-3.107 1.663-4.256 1.101-1.17 2.485-1.745 4.148-1.745 1.534 0 2.83.617 3.888 1.872zm-11.48 9.873h-10.218V5.405h10.195v2.318h-7.711V12h7.15v2.32h-7.15v4.489h7.733v2.319zm-23.891-9.724c-1.793 0-3.132 1.192-3.478 2.979h6.783c-.194-1.808-1.555-2.979-3.305-2.979zm5.703 3.766c0 .32-.021.703-.086 1.128h-9.095c.346 1.787 1.62 3 3.867 3 1.318 0 2.916-.49 3.953-1.234l.994 1.724c-1.189.872-3.067 1.595-5.033 1.595-4.364 0-6.243-3-6.243-6.021 0-1.724.54-3.15 1.642-4.277 1.101-1.127 2.548-1.702 4.298-1.702 1.664 0 3.046.511 4.105 1.553 1.058 1.043 1.598 2.447 1.598 4.234zm-19.949 3.894c1.08 0 1.966-.362 2.68-1.085.712-.724 1.058-1.617 1.058-2.703 0-1.084-.346-2-1.059-2.701-.713-.702-1.599-1.064-2.679-1.064-1.058 0-1.944.362-2.656 1.085-.714.702-1.059 1.596-1.059 2.68 0 1.086.345 2 1.059 2.724.712.702 1.598 1.064 2.656 1.064zm3.673-7.936V9.66h2.29v10.299c0 1.85-.584 3.32-1.728 4.404-1.146 1.085-2.68 1.638-4.58 1.638-1.945 0-3.672-.553-5.206-1.638l1.037-1.808c1.296.915 2.679 1.36 4.126 1.36 2.484 0 3.996-1.51 3.996-3.637v-.83c-1.015 1.127-2.311 1.702-3.91 1.702-1.684 0-3.089-.554-4.19-1.68-1.102-1.128-1.642-2.532-1.642-4.214 0-1.68.561-3.085 1.706-4.191 1.145-1.128 2.571-1.681 4.234-1.681 1.534 0 2.83.575 3.867 1.745zm-18.07 8.127c1.102 0 1.988-.382 2.7-1.128.714-.744 1.06-1.659 1.06-2.743 0-1.065-.346-1.98-1.06-2.724-.712-.745-1.598-1.128-2.7-1.128-1.101 0-2.008.383-2.7 1.128-.691.744-1.036 1.66-1.036 2.745 0 1.084.345 2 1.037 2.745.691.744 1.598 1.105 2.7 1.105zm3.652-8V9.66h2.29v11.469h-2.29v-1.575c-1.059 1.234-2.399 1.852-3.976 1.852-1.663 0-3.067-.575-4.168-1.745-1.102-1.17-1.642-2.617-1.642-4.34 0-1.724.54-3.128 1.642-4.256 1.1-1.128 2.505-1.681 4.168-1.681 1.577 0 2.917.617 3.976 1.872zM138.79 9.34c1.404 0 2.527.448 3.37 1.34.863.873 1.295 2.086 1.295 3.596v6.852h-2.376V14.66c0-2.021-1.036-3.128-2.657-3.128-1.727 0-2.915 1.255-2.915 3.192v6.404h-2.377v-6.426c0-1.978-1.037-3.17-2.679-3.17-1.728 0-2.937 1.277-2.937 3.234v6.362h-2.377V9.659h2.333v1.66c.692-1.212 1.988-1.979 3.522-1.979 1.533.021 2.958.767 3.586 2.107.798-1.277 2.419-2.107 4.212-2.107zm-19.517 11.788h2.484V5.405h-2.484v15.723z"/>
+    </g>
+</symbol></svg>
\ No newline at end of file
diff --git a/admin/js/vendors/tui.image-editor/svg/icon-d.svg b/admin/js/vendors/tui.image-editor/svg/icon-d.svg
new file mode 100644 (file)
index 0000000..52e6ffa
--- /dev/null
@@ -0,0 +1,224 @@
+<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs/><symbol id="icon-d-ic-apply" viewBox="0 0 24 24">
+    <g fill="none" fill-rule="evenodd">
+        <path d="M0 0h24v24H0z"/>
+        <path stroke="#8a8a8a" d="M4 12.011l5 5L20.011 6"/>
+    </g>
+</symbol><symbol id="icon-d-ic-cancel" viewBox="0 0 24 24">
+    <g fill="none" fill-rule="evenodd">
+        <path d="M0 0h24v24H0z"/>
+        <path stroke="#8a8a8a" d="M6 6l12 12M18 6L6 18"/>
+    </g>
+</symbol><symbol id="icon-d-ic-crop" viewBox="0 0 24 24">
+    <g fill="none" fill-rule="evenodd">
+        <path d="M0 0h24v24H0z"/>
+        <path fill="#8a8a8a" d="M4 0h1v20a1 1 0 0 1-1-1V0zM20 17h-1V5h1v12zm0 2v5h-1v-5h1z"/>
+        <path fill="#8a8a8a" d="M5 19h19v1H5zM4.762 4v1H0V4h4.762zM7 4h12a1 1 0 0 1 1 1H7V4z"/>
+    </g>
+</symbol><symbol id="icon-d-ic-delete-all" viewBox="0 0 24 24">
+    <g fill="#8a8a8a" fill-rule="evenodd">
+        <path d="M5 23H3a1 1 0 0 1-1-1V6h1v16h2v1zm16-10h-1V6h1v7zM9 13H8v-3h1v3zm3 0h-1v-3h1v3zm3 0h-1v-3h1v3zM14.794 3.794L13 2h-3L8.206 3.794A.963.963 0 0 1 8 2.5l.703-1.055A1 1 0 0 1 9.535 1h3.93a1 1 0 0 1 .832.445L15 2.5a.965.965 0 0 1-.206 1.294zM14.197 4H8.803h5.394z"/>
+        <path d="M0 3h23v1H0zM11.286 21H8.714L8 23H7l1-2.8V20h.071L9.5 16h1l1.429 4H12v.2l1 2.8h-1l-.714-2zm-.357-1L10 17.4 9.071 20h1.858zM20 22h3v1h-4v-7h1v6zm-5 0h3v1h-4v-7h1v6z"/>
+    </g>
+</symbol><symbol id="icon-d-ic-delete" viewBox="0 0 24 24">
+    <g fill="#8a8a8a" fill-rule="evenodd">
+        <path d="M3 6v16h17V6h1v16a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V6h1zM14.794 3.794L13 2h-3L8.206 3.794A.963.963 0 0 1 8 2.5l.703-1.055A1 1 0 0 1 9.535 1h3.93a1 1 0 0 1 .832.445L15 2.5a.965.965 0 0 1-.206 1.294zM14.197 4H8.803h5.394z"/>
+        <path d="M0 3h23v1H0zM8 10h1v6H8v-6zm3 0h1v6h-1v-6zm3 0h1v6h-1v-6z"/>
+    </g>
+</symbol><symbol id="icon-d-ic-draw-free" viewBox="0 0 32 32">
+    <g fill="none" fill-rule="evenodd">
+        <path stroke="#8a8a8a" d="M2.5 20.929C2.594 10.976 4.323 6 7.686 6c5.872 0 2.524 19 7.697 19s1.89-14.929 6.414-14.929 1.357 10.858 5.13 10.858c1.802 0 2.657-2.262 2.566-6.786"/>
+    </g>
+</symbol><symbol id="icon-d-ic-draw-line" viewBox="0 0 32 32">
+    <g fill="none" fill-rule="evenodd">
+        <path stroke="#8a8a8a" d="M2 15.5h28"/>
+    </g>
+</symbol><symbol id="icon-d-ic-draw" viewBox="0 0 24 24">
+    <g fill="none">
+        <path stroke="#8a8a8a" d="M2.5 21.5H5c.245 0 .48-.058.691-.168l.124-.065.14.01c.429.028.85-.127 1.16-.437L22.55 5.405a.5.5 0 0 0 0-.707l-3.246-3.245a.5.5 0 0 0-.707 0L3.162 16.888a1.495 1.495 0 0 0-.437 1.155l.01.14-.065.123c-.111.212-.17.448-.17.694v2.5z"/>
+        <path fill="#8a8a8a" d="M16.414 3.707l3.89 3.89-.708.706-3.889-3.889z"/>
+    </g>
+</symbol><symbol id="icon-d-ic-filter" viewBox="0 0 24 24">
+    <g fill="none" fill-rule="evenodd">
+        <path d="M0 0h24v24H0z"/>
+        <path fill="#8a8a8a" d="M12 7v1H2V7h10zm6 0h4v1h-4V7zM12 16v1h10v-1H12zm-6 0H2v1h4v-1z"/>
+        <path fill="#8a8a8a" d="M8.5 20a3.5 3.5 0 1 1 0-7 3.5 3.5 0 0 1 0 7zm0-1a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5zM15.5 11a3.5 3.5 0 1 1 0-7 3.5 3.5 0 0 1 0 7zm0-1a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5z"/>
+    </g>
+</symbol><symbol id="icon-d-ic-flip-reset" viewBox="0 0 31 32">
+    <g fill="none" fill-rule="evenodd">
+        <path d="M31 0H0v32h31z"/>
+        <path fill="#8a8a8a" d="M28 16a8 8 0 0 1-8 8H3v-1h1v-7H3a8 8 0 0 1 8-8h17v1h-1v7h1zM11 9a7 7 0 0 0-7 7v7h16a7 7 0 0 0 7-7V9H11z"/>
+        <path stroke="#8a8a8a" stroke-linecap="square" d="M24 5l3.5 3.5L24 12M7 20l-3.5 3.5L7 27"/>
+    </g>
+</symbol><symbol id="icon-d-ic-flip-x" viewBox="0 0 32 32">
+    <g fill="none" fill-rule="evenodd">
+        <path d="M32 32H0V0h32z"/>
+        <path fill="#8a8a8a" d="M17 32h-1V0h1zM27.167 11l.5 3h-1.03l-.546-3h1.076zm-.5-3h-1.122L25 5h-5V4h5.153a1 1 0 0 1 .986.836L26.667 8zm1.5 9l.5 3h-.94l-.545-3h.985zm1 6l.639 3.836A1 1 0 0 1 28.819 28H26v-1h3l-.726-4h.894zM23 28h-3v-1h3v1zM13 4v1H7L3 27h10v1H3.18a1 1 0 0 1-.986-1.164l3.666-22A1 1 0 0 1 6.847 4H13z"/>
+    </g>
+</symbol><symbol id="icon-d-ic-flip-y" viewBox="0 0 32 32">
+    <g fill="none" fill-rule="evenodd">
+        <path d="M0 0v32h32V0z"/>
+        <path fill="#8a8a8a" d="M0 16v1h32v-1zM11 27.167l3 .5v-1.03l-3-.546v1.076zm-3-.5v-1.122L5 25v-5H4v5.153a1 1 0 0 0 .836.986L8 26.667zm9 1.5l3 .5v-.94l-3-.545v.985zm6 1l3.836.639A1 1 0 0 0 28 28.82V26h-1v3l-4-.727v.894zM28 23v-3h-1v3h1zM4 13h1V7l22-4v10h1V3.18a1 1 0 0 0-1.164-.986l-22 3.667A1 1 0 0 0 4 6.847V13z"/>
+    </g>
+</symbol><symbol id="icon-d-ic-flip" viewBox="0 0 24 24">
+    <g fill="none" fill-rule="evenodd">
+        <path d="M0 0h24v24H0z"/>
+        <path fill="#8a8a8a" d="M11 0h1v24h-1zM19 21v-1h2v-2h1v2a1 1 0 0 1-1 1h-2zm-2 0h-3v-1h3v1zm5-5h-1v-3h1v3zm0-5h-1V8h1v3zm0-5h-1V4h-2V3h2a1 1 0 0 1 1 1v2zm-5-3v1h-3V3h3zM9 3v1H2v16h7v1H2a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h7z"/>
+    </g>
+</symbol><symbol id="icon-d-ic-icon-arrow-2" viewBox="0 0 32 32">
+    <g fill="none" fill-rule="evenodd">
+        <path stroke="#8a8a8a" stroke-linecap="round" stroke-linejoin="round" d="M21.793 18.5H2.5v-5h18.935l-7.6-8h5.872l10.5 10.5-10.5 10.5h-5.914l8-8z"/>
+    </g>
+</symbol><symbol id="icon-d-ic-icon-arrow-3" viewBox="0 0 32 32">
+    <g fill="none" fill-rule="evenodd">
+        <path stroke="#8a8a8a" stroke-linecap="round" stroke-linejoin="round" d="M25.288 16.42L14.208 27.5H6.792l11.291-11.291L6.826 4.5h7.381l11.661 11.661-.58.258z"/>
+    </g>
+</symbol><symbol id="icon-d-ic-icon-arrow" viewBox="0 0 32 32">
+    <g fill="none" fill-rule="evenodd">
+        <path stroke="#8a8a8a" d="M2.5 11.5v9h18v5.293L30.293 16 20.5 6.207V11.5h-18z"/>
+    </g>
+</symbol><symbol id="icon-d-ic-icon-bubble" viewBox="0 0 32 32">
+    <g fill="none" fill-rule="evenodd">
+        <path stroke="#8a8a8a" stroke-linecap="round" stroke-linejoin="round" d="M22.207 24.5L16.5 30.207V24.5H8A6.5 6.5 0 0 1 1.5 18V9A6.5 6.5 0 0 1 8 2.5h16A6.5 6.5 0 0 1 30.5 9v9a6.5 6.5 0 0 1-6.5 6.5h-1.793z"/>
+    </g>
+</symbol><symbol id="icon-d-ic-icon-heart" viewBox="0 0 32 32">
+    <g fill="none" fill-rule="evenodd">
+        <path fill-rule="nonzero" stroke="#8a8a8a" d="M15.996 30.675l1.981-1.79c7.898-7.177 10.365-9.718 12.135-13.012.922-1.716 1.377-3.37 1.377-5.076 0-4.65-3.647-8.297-8.297-8.297-2.33 0-4.86 1.527-6.817 3.824l-.38.447-.381-.447C13.658 4.027 11.126 2.5 8.797 2.5 4.147 2.5.5 6.147.5 10.797c0 1.714.46 3.375 1.389 5.098 1.775 3.288 4.26 5.843 12.123 12.974l1.984 1.806z"/>
+    </g>
+</symbol><symbol id="icon-d-ic-icon-load" viewBox="0 0 32 32">
+    <g fill="none" fill-rule="evenodd">
+        <path stroke="#8a8a8a" stroke-linecap="round" stroke-linejoin="round" d="M17.314 18.867l1.951-2.53 4 5.184h-17l6.5-8.84 4.549 6.186z"/>
+        <path fill="#8a8a8a" d="M18.01 4a11.798 11.798 0 0 0 0 1H3v24h24V14.986a8.738 8.738 0 0 0 1 0V29a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1h15.01z"/>
+        <path fill="#8a8a8a" d="M25 3h1v9h-1z"/>
+        <path stroke="#8a8a8a" d="M22 6l3.5-3.5L29 6"/>
+    </g>
+</symbol><symbol id="icon-d-ic-icon-location" viewBox="0 0 32 32">
+    <g fill="none" fill-rule="evenodd">
+        <g stroke="#8a8a8a">
+            <path d="M16 31.28C23.675 23.302 27.5 17.181 27.5 13c0-6.351-5.149-11.5-11.5-11.5S4.5 6.649 4.5 13c0 4.181 3.825 10.302 11.5 18.28z"/>
+            <circle cx="16" cy="13" r="4.5"/>
+        </g>
+    </g>
+</symbol><symbol id="icon-d-ic-icon-polygon" viewBox="0 0 32 32">
+    <g fill="none" fill-rule="evenodd">
+        <path stroke="#8a8a8a" d="M.576 16L8.29 29.5h15.42L31.424 16 23.71 2.5H8.29L.576 16z"/>
+    </g>
+</symbol><symbol id="icon-d-ic-icon-star-2" viewBox="0 0 32 32">
+    <g fill="none" fill-rule="evenodd">
+        <path stroke="#8a8a8a" d="M19.446 31.592l2.265-3.272 3.946.25.636-3.94 3.665-1.505-1.12-3.832 2.655-2.962-2.656-2.962 1.12-3.832-3.664-1.505-.636-3.941-3.946.25-2.265-3.271L16 3.024 12.554 1.07 10.289 4.34l-3.946-.25-.636 3.941-3.665 1.505 1.12 3.832L.508 16.33l2.656 2.962-1.12 3.832 3.664 1.504.636 3.942 3.946-.25 2.265 3.27L16 29.638l3.446 1.955z"/>
+    </g>
+</symbol><symbol id="icon-d-ic-icon-star" viewBox="0 0 32 32">
+    <g fill="none" fill-rule="evenodd">
+        <path stroke="#8a8a8a" d="M25.292 29.878l-1.775-10.346 7.517-7.327-10.388-1.51L16 1.282l-4.646 9.413-10.388 1.51 7.517 7.327-1.775 10.346L16 24.993l9.292 4.885z"/>
+    </g>
+</symbol><symbol id="icon-d-ic-icon" viewBox="0 0 24 24">
+    <g fill="none">
+        <path stroke="#8a8a8a" stroke-linecap="round" stroke-linejoin="round" d="M11.923 19.136L5.424 22l.715-7.065-4.731-5.296 6.94-1.503L11.923 2l3.574 6.136 6.94 1.503-4.731 5.296L18.42 22z"/>
+    </g>
+</symbol><symbol id="icon-d-ic-mask-load" viewBox="0 0 32 32">
+    <g fill="none" fill-rule="evenodd">
+        <path d="M0 0h32v32H0z"/>
+        <path fill="#8a8a8a" d="M18.01 4a11.798 11.798 0 0 0 0 1H3v24h24V14.986a8.738 8.738 0 0 0 1 0V29a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1h15.01zM15 23a6 6 0 1 1 0-12 6 6 0 0 1 0 12zm0-1a5 5 0 1 0 0-10 5 5 0 0 0 0 10z"/>
+        <path fill="#8a8a8a" d="M25 3h1v9h-1z"/>
+        <path stroke="#8a8a8a" d="M22 6l3.5-3.5L29 6"/>
+    </g>
+</symbol><symbol id="icon-d-ic-mask" viewBox="0 0 24 24">
+    <g fill="none">
+        <circle cx="12" cy="12" r="4.5" stroke="#8a8a8a"/>
+        <path fill="#8a8a8a" d="M2 1h20a1 1 0 0 1 1 1v20a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1zm0 1v20h20V2H2z"/>
+    </g>
+</symbol><symbol id="icon-d-ic-redo" viewBox="0 0 24 24">
+    <g fill="none" fill-rule="evenodd">
+        <path d="M0 0h24v24H0z" opacity=".5"/>
+        <path fill="#8a8a8a" d="M21 6H9a6 6 0 1 0 0 12h12v1H9A7 7 0 0 1 9 5h12v1z"/>
+        <path stroke="#8a8a8a" stroke-linecap="square" d="M19 3l2.5 2.5L19 8"/>
+    </g>
+</symbol><symbol id="icon-d-ic-reset" viewBox="0 0 24 24">
+    <g fill="none" fill-rule="evenodd">
+        <path d="M0 0h24v24H0z" opacity=".5"/>
+        <path fill="#8a8a8a" d="M2 13v-1a7 7 0 0 1 7-7h13v1h-1v5h1v1a7 7 0 0 1-7 7H2v-1h1v-5H2zm7-7a6 6 0 0 0-6 6v6h12a6 6 0 0 0 6-6V6H9z"/>
+        <path stroke="#8a8a8a" stroke-linecap="square" d="M19 3l2.5 2.5L19 8M5 16l-2.5 2.5L5 21"/>
+    </g>
+</symbol><symbol id="icon-d-ic-rotate-clockwise" viewBox="0 0 32 32">
+    <g fill="none" fill-rule="evenodd">
+        <path fill="#8a8a8a" d="M29 17h-.924c0 6.627-5.373 12-12 12-6.628 0-12-5.373-12-12C4.076 10.398 9.407 5.041 16 5V4C8.82 4 3 9.82 3 17s5.82 13 13 13 13-5.82 13-13z"/>
+        <path stroke="#8a8a8a" stroke-linecap="square" d="M16 1.5l4 3-4 3"/>
+        <path fill="#8a8a8a" fill-rule="nonzero" d="M16 4h4v1h-4z"/>
+    </g>
+</symbol><symbol id="icon-d-ic-rotate-counterclockwise" viewBox="0 0 32 32">
+    <g fill="none" fill-rule="evenodd">
+        <path fill="#8a8a8a" d="M3 17h.924c0 6.627 5.373 12 12 12 6.628 0 12-5.373 12-12 0-6.602-5.331-11.96-11.924-12V4c7.18 0 13 5.82 13 13s-5.82 13-13 13S3 24.18 3 17z"/>
+        <path fill="#8a8a8a" fill-rule="nonzero" d="M12 4h4v1h-4z"/>
+        <path stroke="#8a8a8a" stroke-linecap="square" d="M16 1.5l-4 3 4 3"/>
+    </g>
+</symbol><symbol id="icon-d-ic-rotate" viewBox="0 0 24 24">
+    <g fill="none" fill-rule="evenodd">
+        <path d="M0 0h24v24H0z"/>
+        <path fill="#8a8a8a" d="M8.349 22.254a10.002 10.002 0 0 1-2.778-1.719l.65-.76a9.002 9.002 0 0 0 2.495 1.548l-.367.931zm2.873.704l.078-.997a9 9 0 1 0-.557-17.852l-.14-.99A10.076 10.076 0 0 1 12.145 3c5.523 0 10 4.477 10 10s-4.477 10-10 10c-.312 0-.62-.014-.924-.042zm-7.556-4.655a9.942 9.942 0 0 1-1.253-2.996l.973-.234a8.948 8.948 0 0 0 1.124 2.693l-.844.537zm-1.502-5.91A9.949 9.949 0 0 1 2.88 9.23l.925.382a8.954 8.954 0 0 0-.644 2.844l-.998-.062zm2.21-5.686c.687-.848 1.51-1.58 2.436-2.166l.523.852a9.048 9.048 0 0 0-2.188 1.95l-.771-.636z"/>
+        <path stroke="#8a8a8a" stroke-linecap="square" d="M13 1l-2.5 2.5L13 6"/>
+    </g>
+</symbol><symbol id="icon-d-ic-shape-circle" viewBox="0 0 32 32">
+    <g fill="none" fill-rule="evenodd">
+        <circle cx="16" cy="16" r="14.5" stroke="#8a8a8a"/>
+    </g>
+</symbol><symbol id="icon-d-ic-shape-rectangle" viewBox="0 0 32 32">
+    <g fill="none" fill-rule="evenodd">
+        <rect width="27" height="27" x="2.5" y="2.5" stroke="#8a8a8a" rx="1"/>
+    </g>
+</symbol><symbol id="icon-d-ic-shape-triangle" viewBox="0 0 32 32">
+    <g fill="none" fill-rule="evenodd">
+        <path stroke="#8a8a8a" stroke-linecap="round" stroke-linejoin="round" d="M16 2.5l15.5 27H.5z"/>
+    </g>
+</symbol><symbol id="icon-d-ic-shape" viewBox="0 0 24 24">
+    <g fill="none" fill-rule="evenodd">
+        <path fill="#8a8a8a" d="M14.706 8H21a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H9a1 1 0 0 1-1-1v-4h1v4h12V9h-5.706l-.588-1z"/>
+        <path stroke="#8a8a8a" stroke-linecap="round" stroke-linejoin="round" d="M8.5 1.5l7.5 13H1z"/>
+    </g>
+</symbol><symbol id="icon-d-ic-text-align-center" viewBox="0 0 32 32">
+    <g fill="none" fill-rule="evenodd">
+        <path d="M0 0h32v32H0z"/>
+        <path fill="#8a8a8a" d="M2 5h28v1H2zM8 12h16v1H8zM2 19h28v1H2zM8 26h16v1H8z"/>
+    </g>
+</symbol><symbol id="icon-d-ic-text-align-left" viewBox="0 0 32 32">
+    <g fill="none" fill-rule="evenodd">
+        <path d="M0 0h32v32H0z"/>
+        <path fill="#8a8a8a" d="M2 5h28v1H2zM2 12h16v1H2zM2 19h28v1H2zM2 26h16v1H2z"/>
+    </g>
+</symbol><symbol id="icon-d-ic-text-align-right" viewBox="0 0 32 32">
+    <g fill="none" fill-rule="evenodd">
+        <path d="M0 0h32v32H0z"/>
+        <path fill="#8a8a8a" d="M2 5h28v1H2zM14 12h16v1H14zM2 19h28v1H2zM14 26h16v1H14z"/>
+    </g>
+</symbol><symbol id="icon-d-ic-text-bold" viewBox="0 0 32 32">
+    <g fill="none" fill-rule="evenodd">
+        <path d="M0 0h32v32H0z"/>
+        <path fill="#8a8a8a" d="M7 2h2v2H7zM7 28h2v2H7z"/>
+        <path stroke="#8a8a8a" stroke-width="2" d="M9 3v12h9a6 6 0 1 0 0-12H9zM9 15v14h10a7 7 0 0 0 0-14H9z"/>
+    </g>
+</symbol><symbol id="icon-d-ic-text-italic" viewBox="0 0 32 32">
+    <g fill="none" fill-rule="evenodd">
+        <path d="M0 0h32v32H0z"/>
+        <path fill="#8a8a8a" d="M15 2h5v1h-5zM11 29h5v1h-5zM17 3h1l-4 26h-1z"/>
+    </g>
+</symbol><symbol id="icon-d-ic-text-underline" viewBox="0 0 32 32">
+    <g fill="none" fill-rule="evenodd">
+        <path d="M0 0h32v32H0z"/>
+        <path fill="#8a8a8a" d="M8 2v14a8 8 0 1 0 16 0V2h1v14a9 9 0 0 1-18 0V2h1zM3 29h26v1H3z"/>
+        <path fill="#8a8a8a" d="M5 2h5v1H5zM22 2h5v1h-5z"/>
+    </g>
+</symbol><symbol id="icon-d-ic-text" viewBox="0 0 24 24">
+    <g fill="#8a8a8a" fill-rule="evenodd">
+        <path d="M4 3h15a1 1 0 0 1 1 1H3a1 1 0 0 1 1-1zM3 4h1v1H3zM19 4h1v1h-1z"/>
+        <path d="M11 3h1v18h-1z"/>
+        <path d="M10 20h3v1h-3z"/>
+    </g>
+</symbol><symbol id="icon-d-ic-undo" viewBox="0 0 24 24">
+    <g fill="none" fill-rule="evenodd">
+        <path d="M24 0H0v24h24z" opacity=".5"/>
+        <path fill="#8a8a8a" d="M3 6h12a6 6 0 1 1 0 12H3v1h12a7 7 0 0 0 0-14H3v1z"/>
+        <path stroke="#8a8a8a" stroke-linecap="square" d="M5 3L2.5 5.5 5 8"/>
+    </g>
+</symbol><symbol id="icon-d-img-bi" viewBox="0 0 257 26">
+    <g fill="#FDBA3B">
+        <path d="M26 5a8.001 8.001 0 0 0 0 16 8.001 8.001 0 0 0 0-16M51.893 19.812L43.676 5.396A.78.78 0 0 0 43 5a.78.78 0 0 0-.677.396l-8.218 14.418a.787.787 0 0 0 0 .792c.14.244.396.394.676.394h16.436c.28 0 .539-.15.678-.396a.796.796 0 0 0-.002-.792M15.767 5.231A.79.79 0 0 0 15.21 5H.791A.791.791 0 0 0 0 5.79v6.42a.793.793 0 0 0 .791.79h3.21v7.21c.001.21.082.408.234.56.147.148.347.23.558.23h6.416a.788.788 0 0 0 .792-.79V13h3.006c.413 0 .611-.082.762-.232.15-.149.23-.35.231-.559V5.791a.787.787 0 0 0-.233-.56M85.767 5.231A.79.79 0 0 0 85.21 5H70.791a.791.791 0 0 0-.791.79v6.42a.793.793 0 0 0 .791.79h3.21v7.21c.001.21.082.408.234.56.147.148.347.23.558.23h6.416a.788.788 0 0 0 .792-.79V13h3.006c.413 0 .611-.082.762-.232.15-.149.23-.35.231-.559V5.791a.787.787 0 0 0-.233-.56M65.942 9.948l2.17-3.76a.78.78 0 0 0 0-.792.791.791 0 0 0-.684-.396h-8.54A5.889 5.889 0 0 0 53 10.86a5.887 5.887 0 0 0 3.07 5.17l-2.184 3.782A.792.792 0 0 0 54.571 21h8.54a5.89 5.89 0 0 0 2.831-11.052M105.7 21h2.3V5h-2.3zM91 5h2.4v10.286c0 1.893 1.612 3.429 3.6 3.429s3.6-1.536 3.6-3.429V5h2.4v10.286c0 3.156-2.686 5.714-6 5.714-3.313 0-6-2.558-6-5.714V5zM252.148 21.128h-2.377V9.659h2.27v1.64c.69-1.299 1.792-1.938 3.304-1.938.497 0 .95.065 1.382.192l-.215 2.277a3.734 3.734 0 0 0-1.275-.213c-1.814 0-3.089 1.234-3.089 3.638v5.873zm-7.095-5.744a3.734 3.734 0 0 0-1.101-2.703c-.714-.766-1.6-1.149-2.658-1.149-1.058 0-1.944.383-2.679 1.149a3.803 3.803 0 0 0-1.08 2.703c0 1.063.368 1.978 1.08 2.722.735.746 1.62 1.128 2.68 1.128 1.058 0 1.943-.382 2.657-1.128.734-.744 1.101-1.659 1.101-2.722zm-9.916 0c0-1.682.583-3.086 1.729-4.256 1.166-1.17 2.635-1.767 4.428-1.767 1.793 0 3.262.597 4.407 1.767 1.167 1.17 1.75 2.574 1.75 4.256 0 1.7-.583 3.127-1.75 4.297-1.145 1.17-2.614 1.745-4.407 1.745-1.793 0-3.262-.575-4.428-1.745-1.146-1.17-1.729-2.596-1.729-4.297zm-1.5 3.233l.821 1.83c-.864.638-1.944.958-3.22.958-2.526 0-3.822-1.554-3.822-4.383V11.66h-2.01v-2h2.031V5.595h2.355v4.063h4.018v2h-4.018v5.405c0 1.469.605 2.191 1.793 2.191.626 0 1.318-.212 2.052-.638zm-12.43 2.51h2.375V9.66h-2.376v11.469zm1.23-12.977c-.929 0-1.642-.682-1.642-1.596 0-.873.713-1.554 1.643-1.554.885 0 1.576.681 1.576 1.554 0 .914-.69 1.596-1.576 1.596zm-6.49 7.234c0-1.086-.346-1.98-1.037-2.724-.692-.745-1.599-1.128-2.7-1.128-1.102 0-2.01.383-2.7 1.128-.692.744-1.037 1.638-1.037 2.724 0 1.084.345 2.02 1.036 2.766.691.744 1.6 1.105 2.7 1.105 1.102 0 2.01-.361 2.7-1.105.692-.746 1.038-1.682 1.038-2.766zm-.173-4.129V5h2.397v16.128h-2.354v-1.596c-1.015 1.255-2.333 1.873-3.91 1.873-1.663 0-3.068-.575-4.169-1.724-1.102-1.17-1.663-2.596-1.663-4.297 0-1.682.561-3.107 1.663-4.256 1.101-1.17 2.485-1.745 4.148-1.745 1.534 0 2.83.617 3.888 1.872zm-11.48 9.873h-10.218V5.405h10.195v2.318h-7.711V12h7.15v2.32h-7.15v4.489h7.733v2.319zm-23.891-9.724c-1.793 0-3.132 1.192-3.478 2.979h6.783c-.194-1.808-1.555-2.979-3.305-2.979zm5.703 3.766c0 .32-.021.703-.086 1.128h-9.095c.346 1.787 1.62 3 3.867 3 1.318 0 2.916-.49 3.953-1.234l.994 1.724c-1.189.872-3.067 1.595-5.033 1.595-4.364 0-6.243-3-6.243-6.021 0-1.724.54-3.15 1.642-4.277 1.101-1.127 2.548-1.702 4.298-1.702 1.664 0 3.046.511 4.105 1.553 1.058 1.043 1.598 2.447 1.598 4.234zm-19.949 3.894c1.08 0 1.966-.362 2.68-1.085.712-.724 1.058-1.617 1.058-2.703 0-1.084-.346-2-1.059-2.701-.713-.702-1.599-1.064-2.679-1.064-1.058 0-1.944.362-2.656 1.085-.714.702-1.059 1.596-1.059 2.68 0 1.086.345 2 1.059 2.724.712.702 1.598 1.064 2.656 1.064zm3.673-7.936V9.66h2.29v10.299c0 1.85-.584 3.32-1.728 4.404-1.146 1.085-2.68 1.638-4.58 1.638-1.945 0-3.672-.553-5.206-1.638l1.037-1.808c1.296.915 2.679 1.36 4.126 1.36 2.484 0 3.996-1.51 3.996-3.637v-.83c-1.015 1.127-2.311 1.702-3.91 1.702-1.684 0-3.089-.554-4.19-1.68-1.102-1.128-1.642-2.532-1.642-4.214 0-1.68.561-3.085 1.706-4.191 1.145-1.128 2.571-1.681 4.234-1.681 1.534 0 2.83.575 3.867 1.745zm-18.07 8.127c1.102 0 1.988-.382 2.7-1.128.714-.744 1.06-1.659 1.06-2.743 0-1.065-.346-1.98-1.06-2.724-.712-.745-1.598-1.128-2.7-1.128-1.101 0-2.008.383-2.7 1.128-.691.744-1.036 1.66-1.036 2.745 0 1.084.345 2 1.037 2.745.691.744 1.598 1.105 2.7 1.105zm3.652-8V9.66h2.29v11.469h-2.29v-1.575c-1.059 1.234-2.399 1.852-3.976 1.852-1.663 0-3.067-.575-4.168-1.745-1.102-1.17-1.642-2.617-1.642-4.34 0-1.724.54-3.128 1.642-4.256 1.1-1.128 2.505-1.681 4.168-1.681 1.577 0 2.917.617 3.976 1.872zM138.79 9.34c1.404 0 2.527.448 3.37 1.34.863.873 1.295 2.086 1.295 3.596v6.852h-2.376V14.66c0-2.021-1.036-3.128-2.657-3.128-1.727 0-2.915 1.255-2.915 3.192v6.404h-2.377v-6.426c0-1.978-1.037-3.17-2.679-3.17-1.728 0-2.937 1.277-2.937 3.234v6.362h-2.377V9.659h2.333v1.66c.692-1.212 1.988-1.979 3.522-1.979 1.533.021 2.958.767 3.586 2.107.798-1.277 2.419-2.107 4.212-2.107zm-19.517 11.788h2.484V5.405h-2.484v15.723z"/>
+    </g>
+</symbol></svg>
\ No newline at end of file
diff --git a/admin/js/vendors/tui.image-editor/tui-image-editor.css b/admin/js/vendors/tui.image-editor/tui-image-editor.css
new file mode 100644 (file)
index 0000000..0ccd7ea
--- /dev/null
@@ -0,0 +1,952 @@
+/*!
+ * tui-image-editor.js
+ * @version 3.10.1
+ * @author NHN FE Development Lab <dl_javascript@nhn.com>
+ * @license MIT
+ */
+body > textarea {
+  position: fixed !important;
+}
+.tui-image-editor-container {
+  margin: 0;
+  padding: 0;
+  box-sizing: border-box;
+  min-height: 300px;
+  height: 100%;
+  position: relative;
+  background-color: #282828;
+  overflow: hidden;
+  letter-spacing: 0.3px;
+}
+.tui-image-editor-container div,
+.tui-image-editor-container ul,
+.tui-image-editor-container label,
+.tui-image-editor-container input,
+.tui-image-editor-container li {
+  box-sizing: border-box;
+  margin: 0;
+  padding: 0;
+  -ms-user-select: none;
+  -moz-user-select: -moz-none;
+  -khtml-user-select: none;
+  -webkit-user-select: none;
+  user-select: none;
+}
+.tui-image-editor-container .tui-image-editor-header {
+/* BUTTON AND LOGO */
+  min-width: 533px;
+  position: absolute;
+  background-color: #151515;
+  top: 0;
+  width: 100%;
+}
+.tui-image-editor-container .tui-image-editor-header-buttons,
+.tui-image-editor-container .tui-image-editor-controls-buttons {
+  float: right;
+  margin: 8px;
+}
+.tui-image-editor-container .tui-image-editor-header-logo,
+.tui-image-editor-container .tui-image-editor-controls-logo {
+  float: left;
+  width: 30%;
+  padding: 17px;
+}
+.tui-image-editor-container .tui-image-editor-controls-logo,
+.tui-image-editor-container .tui-image-editor-controls-buttons {
+  width: 270px;
+  height: 100%;
+  display: none;
+}
+.tui-image-editor-container .tui-image-editor-header-buttons button,
+.tui-image-editor-container .tui-image-editor-header-buttons div,
+.tui-image-editor-container .tui-image-editor-controls-buttons button,
+.tui-image-editor-container .tui-image-editor-controls-buttons div {
+  display: inline-block;
+  position: relative;
+  width: 120px;
+  height: 40px;
+  padding: 0;
+  line-height: 40px;
+  outline: none;
+  border-radius: 20px;
+  border: 1px solid #ddd;
+  font-family: 'Noto Sans', sans-serif;
+  font-size: 12px;
+  font-weight: bold;
+  cursor: pointer;
+  vertical-align: middle;
+  letter-spacing: 0.3px;
+  text-align: center;
+}
+.tui-image-editor-container .tui-image-editor-download-btn {
+  background-color: #fdba3b;
+  border-color: #fdba3b;
+  color: #fff;
+}
+.tui-image-editor-container .tui-image-editor-load-btn {
+  position: absolute;
+  left: 0;
+  right: 0;
+  display: inline-block;
+  top: 0;
+  bottom: 0;
+  width: 100%;
+  cursor: pointer;
+  opacity: 0;
+}
+.tui-image-editor-container .tui-image-editor-main-container {
+  position: absolute;
+  width: 100%;
+  top: 0;
+  bottom: 64px;
+}
+.tui-image-editor-container .tui-image-editor-main {
+  position: absolute;
+  text-align: center;
+  top: 64px;
+  bottom: 0;
+  right: 0;
+  left: 0;
+}
+.tui-image-editor-container .tui-image-editor-wrap {
+  position: absolute;
+  bottom: 0;
+  width: 100%;
+  overflow: auto;
+}
+.tui-image-editor-container .tui-image-editor-wrap .tui-image-editor-size-wrap {
+  display: table;
+  width: 100%;
+  height: 100%;
+}
+.tui-image-editor-container .tui-image-editor-wrap .tui-image-editor-size-wrap .tui-image-editor-align-wrap {
+  display: table-cell;
+  vertical-align: middle;
+}
+.tui-image-editor-container .tui-image-editor {
+  position: relative;
+  display: inline-block;
+}
+.tui-image-editor-container .tui-image-editor-menu {
+  width: auto;
+  list-style: none;
+  padding: 0;
+  margin: 0 auto;
+  display: table-cell;
+  text-align: center;
+  vertical-align: middle;
+  white-space: nowrap;
+}
+.tui-image-editor-container .tui-image-editor-menu > .tui-image-editor-item {
+  position: relative;
+  display: inline-block;
+  border-radius: 2px;
+  padding: 7px 8px 3px 8px;
+  cursor: pointer;
+  margin: 0 4px;
+}
+.tui-image-editor-container .tui-image-editor-menu > .tui-image-editor-item[tooltip-content]:hover:before {
+  content: '';
+  position: absolute;
+  display: inline-block;
+  margin: 0 auto 0;
+  width: 0;
+  height: 0;
+  border-right: 7px solid transparent;
+  border-top: 7px solid #2f2f2f;
+  border-left: 7px solid transparent;
+  left: 13px;
+  top: -2px;
+}
+.tui-image-editor-container .tui-image-editor-menu > .tui-image-editor-item[tooltip-content]:hover:after {
+  content: attr(tooltip-content);
+  position: absolute;
+  display: inline-block;
+  background-color: #2f2f2f;
+  color: #fff;
+  padding: 5px 8px;
+  font-size: 11px;
+  font-weight: lighter;
+  border-radius: 3px;
+  max-height: 23px;
+  top: -25px;
+  left: 0;
+  min-width: 24px;
+}
+.tui-image-editor-container .tui-image-editor-menu > .tui-image-editor-item.active {
+  background-color: #fff;
+  transition: all 0.3s ease;
+}
+.tui-image-editor-container .tui-image-editor-wrap {
+  position: absolute;
+}
+.tui-image-editor-container .tui-image-editor-grid-visual {
+  display: none;
+  position: absolute;
+  width: 100%;
+  height: 100%;
+  border: 1px solid rgba(255,255,255,0.7);
+}
+.tui-image-editor-container .tui-image-editor-main.tui-image-editor-menu-flip .tui-image-editor,
+.tui-image-editor-container .tui-image-editor-main.tui-image-editor-menu-rotate .tui-image-editor {
+  transition: none;
+}
+.tui-image-editor-container .tui-image-editor-main.tui-image-editor-menu-flip .tui-image-editor-grid-visual,
+.tui-image-editor-container .tui-image-editor-main.tui-image-editor-menu-rotate .tui-image-editor-grid-visual {
+  display: block;
+}
+.tui-image-editor-container .tui-image-editor-grid-visual table {
+  width: 100%;
+  height: 100%;
+  border-collapse: collapse;
+}
+.tui-image-editor-container .tui-image-editor-grid-visual table td {
+  border: 1px solid rgba(255,255,255,0.3);
+}
+.tui-image-editor-container .tui-image-editor-grid-visual table td.dot:before {
+  content: '';
+  position: absolute;
+  box-sizing: border-box;
+  width: 10px;
+  height: 10px;
+  border: 0;
+  box-shadow: 0 0 1px 0 rgba(0,0,0,0.3);
+  border-radius: 100%;
+  background-color: #fff;
+}
+.tui-image-editor-container .tui-image-editor-grid-visual table td.dot.left-top:before {
+  top: -5px;
+  left: -5px;
+}
+.tui-image-editor-container .tui-image-editor-grid-visual table td.dot.right-top:before {
+  top: -5px;
+  right: -5px;
+}
+.tui-image-editor-container .tui-image-editor-grid-visual table td.dot.left-bottom:before {
+  bottom: -5px;
+  left: -5px;
+}
+.tui-image-editor-container .tui-image-editor-grid-visual table td.dot.right-bottom:before {
+  bottom: -5px;
+  right: -5px;
+}
+.tui-image-editor-container .tui-image-editor-submenu {
+  display: none;
+  position: absolute;
+  bottom: 0;
+  width: 100%;
+  height: 150px;
+  white-space: nowrap;
+  z-index: 2;
+}
+.tui-image-editor-container .tui-image-editor-submenu .tui-image-editor-button:hover svg > use.active {
+  display: block;
+}
+.tui-image-editor-container .tui-image-editor-submenu .tui-image-editor-submenu-item li {
+  display: inline-block;
+  vertical-align: top;
+}
+.tui-image-editor-container .tui-image-editor-submenu .tui-image-editor-submenu-item .tui-image-editor-newline {
+  display: block;
+  margin-top: 0;
+}
+.tui-image-editor-container .tui-image-editor-submenu .tui-image-editor-submenu-item .tui-image-editor-button {
+  position: relative;
+  cursor: pointer;
+  display: inline-block;
+  font-weight: normal;
+  font-size: 11px;
+  margin: 0 9px 0 9px;
+}
+.tui-image-editor-container .tui-image-editor-submenu .tui-image-editor-submenu-item .tui-image-editor-button.preset {
+  margin: 0 9px 20px 5px;
+}
+.tui-image-editor-container .tui-image-editor-submenu .tui-image-editor-submenu-item label > span {
+  display: inline-block;
+  cursor: pointer;
+  padding-top: 5px;
+  font-family: "Noto Sans", sans-serif;
+  font-size: 11px;
+}
+.tui-image-editor-container .tui-image-editor-submenu .tui-image-editor-submenu-item .tui-image-editor-button.apply label,
+.tui-image-editor-container .tui-image-editor-submenu .tui-image-editor-submenu-item .tui-image-editor-button.cancel label {
+  vertical-align: 7px;
+}
+.tui-image-editor-container .tui-image-editor-submenu > div {
+  display: none;
+  vertical-align: bottom;
+}
+.tui-image-editor-container .tui-image-editor-submenu .tui-image-editor-submenu-style {
+  opacity: 0.95;
+  z-index: -1;
+  position: absolute;
+  top: 0;
+  bottom: 0;
+  left: 0;
+  right: 0;
+  display: block;
+}
+.tui-image-editor-container .tui-image-editor-partition > div {
+  width: 1px;
+  height: 52px;
+  border-left: 1px solid #3c3c3c;
+  margin: 0 8px 0 8px;
+}
+.tui-image-editor-container .tui-image-editor-main.tui-image-editor-menu-filter .tui-image-editor-partition > div {
+  height: 108px;
+  margin: 0 29px 0 0px;
+}
+.tui-image-editor-container .tui-image-editor-submenu-align {
+  text-align: left;
+  margin-right: 30px;
+}
+.tui-image-editor-container .tui-image-editor-submenu-align label > span {
+  width: 55px;
+  white-space: nowrap;
+}
+.tui-image-editor-container .tui-image-editor-submenu-align:first-child {
+  margin-right: 0;
+}
+.tui-image-editor-container .tui-image-editor-submenu-align:first-child label > span {
+  width: 70px;
+}
+.tui-image-editor-container .tui-image-editor-main.tui-image-editor-menu-crop .tui-image-editor-submenu > div.tui-image-editor-menu-crop,
+.tui-image-editor-container .tui-image-editor-main.tui-image-editor-menu-flip .tui-image-editor-submenu > div.tui-image-editor-menu-flip,
+.tui-image-editor-container .tui-image-editor-main.tui-image-editor-menu-rotate .tui-image-editor-submenu > div.tui-image-editor-menu-rotate,
+.tui-image-editor-container .tui-image-editor-main.tui-image-editor-menu-shape .tui-image-editor-submenu > div.tui-image-editor-menu-shape,
+.tui-image-editor-container .tui-image-editor-main.tui-image-editor-menu-text .tui-image-editor-submenu > div.tui-image-editor-menu-text,
+.tui-image-editor-container .tui-image-editor-main.tui-image-editor-menu-mask .tui-image-editor-submenu > div.tui-image-editor-menu-mask,
+.tui-image-editor-container .tui-image-editor-main.tui-image-editor-menu-icon .tui-image-editor-submenu > div.tui-image-editor-menu-icon,
+.tui-image-editor-container .tui-image-editor-main.tui-image-editor-menu-draw .tui-image-editor-submenu > div.tui-image-editor-menu-draw,
+.tui-image-editor-container .tui-image-editor-main.tui-image-editor-menu-filter .tui-image-editor-submenu > div.tui-image-editor-menu-filter {
+  display: table-cell;
+}
+.tui-image-editor-container .tui-image-editor-main.tui-image-editor-menu-crop .tui-image-editor-submenu,
+.tui-image-editor-container .tui-image-editor-main.tui-image-editor-menu-flip .tui-image-editor-submenu,
+.tui-image-editor-container .tui-image-editor-main.tui-image-editor-menu-rotate .tui-image-editor-submenu,
+.tui-image-editor-container .tui-image-editor-main.tui-image-editor-menu-shape .tui-image-editor-submenu,
+.tui-image-editor-container .tui-image-editor-main.tui-image-editor-menu-text .tui-image-editor-submenu,
+.tui-image-editor-container .tui-image-editor-main.tui-image-editor-menu-mask .tui-image-editor-submenu,
+.tui-image-editor-container .tui-image-editor-main.tui-image-editor-menu-icon .tui-image-editor-submenu,
+.tui-image-editor-container .tui-image-editor-main.tui-image-editor-menu-draw .tui-image-editor-submenu,
+.tui-image-editor-container .tui-image-editor-main.tui-image-editor-menu-filter .tui-image-editor-submenu {
+  display: table;
+}
+.tui-image-editor-container .filter-color-item {
+  display: inline-block;
+}
+.tui-image-editor-container .filter-color-item .tui-image-editor-checkbox {
+  display: block;
+}
+.tui-image-editor-container .tui-image-editor-checkbox-wrap {
+  display: inline-block !important;
+  text-align: left;
+}
+.tui-image-editor-container .tui-image-editor-checkbox-wrap.fixed-width {
+  width: 187px;
+  white-space: normal;
+}
+.tui-image-editor-container .tui-image-editor-checkbox {
+  display: inline-block;
+  margin: 1px 0 1px 0;
+}
+.tui-image-editor-container .tui-image-editor-checkbox input {
+  width: 14px;
+  height: 14px;
+  opacity: 0;
+}
+.tui-image-editor-container .tui-image-editor-checkbox > label > span {
+  color: #fff;
+  height: 14px;
+  position: relative;
+}
+.tui-image-editor-container .tui-image-editor-checkbox input + label:before,
+.tui-image-editor-container .tui-image-editor-checkbox > label > span:before {
+  content: '';
+  position: absolute;
+  width: 14px;
+  height: 14px;
+  background-color: #fff;
+  top: 6px;
+  left: -19px;
+  display: inline-block;
+  margin: 0;
+  text-align: center;
+  font-size: 11px;
+  border: 0;
+  border-radius: 2px;
+  padding-top: 1px;
+  box-sizing: border-box;
+}
+.tui-image-editor-container .tui-image-editor-checkbox input[type='checkbox']:checked + span:before {
+  background-size: cover;
+  background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAAAXNSR0IArs4c6QAAAMBJREFUKBWVkjEOwjAMRe2WgZW7IIHEDdhghhuwcQ42rlJugAQS54Cxa5cq1QM5TUpByZfS2j9+dlJVt/tX5ZxbS4ZU9VLkQvSHKTIGRaVJYFmKrBbTCJxE2UgCdDzMZDkHrOV6b95V0US6UmgKodujEZbJg0B0ZgEModO5lrY1TMQf1TpyJGBEjD+E2NPN7ukIUDiF/BfEXgRiGEw8NgkffYGYwCi808fpn/6OvfUfsDr/Vc1IfRf8sKnFVqeiVQfDu0tf/nWH9gAAAABJRU5ErkJggg==");
+}
+.tui-image-editor-container .tui-image-editor-selectlist-wrap {
+  position: relative;
+}
+.tui-image-editor-container .tui-image-editor-selectlist-wrap select {
+  width: 100%;
+  height: 28px;
+  margin-top: 4px;
+  border: 0;
+  outline: 0;
+  border-radius: 0;
+  border: 1px solid #cbdbdb;
+  background-color: #fff;
+  -webkit-appearance: none;
+  -moz-appearance: none;
+  appearance: none;
+  padding: 0 7px 0 10px;
+}
+.tui-image-editor-container .tui-image-editor-selectlist-wrap .tui-image-editor-selectlist {
+  display: none;
+  position: relative;
+  top: -1px;
+  border: 1px solid #ccc;
+  background-color: #fff;
+  border-top: 0px;
+  padding: 4px 0;
+}
+.tui-image-editor-container .tui-image-editor-selectlist-wrap .tui-image-editor-selectlist li {
+  display: block;
+  text-align: left;
+  padding: 7px 10px;
+  font-family: 'Noto Sans', sans-serif;
+}
+.tui-image-editor-container .tui-image-editor-selectlist-wrap .tui-image-editor-selectlist li:hover {
+  background-color: rgba(81,92,230,0.05);
+}
+.tui-image-editor-container .tui-image-editor-selectlist-wrap:before {
+  content: '';
+  position: absolute;
+  display: inline-block;
+  width: 14px;
+  height: 14px;
+  right: 5px;
+  top: 10px;
+  background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAAAXNSR0IArs4c6QAAAHlJREFUKBVjYBgFOEOAEVkmPDxc89+/f6eAYjzI4kD2FyYmJrOVK1deh4kzwRggGiQBVJCELAZig8SQNYHEmEEEMrh69eo1HR0dfqCYJUickZGxf9WqVf3IakBsFBthklpaWmVA9mEQhrJhUoTp0NBQCRAmrHL4qgAAuu4cWZOZIGsAAAAASUVORK5CYII=");
+  background-size: cover;
+}
+.tui-image-editor-container .tui-image-editor-selectlist-wrap select::-ms-expand {
+  display: none;
+}
+.tui-image-editor-container .tui-image-editor-virtual-range-bar .tui-image-editor-disabled,
+.tui-image-editor-container .tui-image-editor-virtual-range-subbar .tui-image-editor-disabled,
+.tui-image-editor-container .tui-image-editor-virtual-range-pointer .tui-image-editor-disabled {
+  backbround-color: #f00;
+}
+.tui-image-editor-container .tui-image-editor-range {
+  position: relative;
+  top: 5px;
+  width: 166px;
+  height: 17px;
+  display: inline-block;
+}
+.tui-image-editor-container .tui-image-editor-virtual-range-bar {
+  top: 7px;
+  position: absolute;
+  width: 100%;
+  height: 2px;
+  background-color: #666;
+}
+.tui-image-editor-container .tui-image-editor-virtual-range-subbar {
+  position: absolute;
+  height: 100%;
+  left: 0;
+  right: 0;
+  background-color: #d1d1d1;
+}
+.tui-image-editor-container .tui-image-editor-virtual-range-pointer {
+  position: absolute;
+  cursor: pointer;
+  top: -5px;
+  left: 0;
+  width: 12px;
+  height: 12px;
+  background-color: #fff;
+  border-radius: 100%;
+}
+.tui-image-editor-container .tui-image-editor-range-wrap {
+  display: inline-block;
+  margin-left: 4px;
+}
+.tui-image-editor-container .tui-image-editor-range-wrap.short .tui-image-editor-range {
+  width: 100px;
+}
+.tui-image-editor-container .color-picker-control .tui-image-editor-range {
+  width: 108px;
+  margin-left: 10px;
+}
+.tui-image-editor-container .color-picker-control .tui-image-editor-virtual-range-pointer {
+  background-color: #333;
+}
+.tui-image-editor-container .color-picker-control .tui-image-editor-virtual-range-bar {
+  background-color: #ccc;
+}
+.tui-image-editor-container .color-picker-control .tui-image-editor-virtual-range-subbar {
+  background-color: #606060;
+}
+.tui-image-editor-container .tui-image-editor-range-wrap.tui-image-editor-newline.short {
+  margin-top: -2px;
+  margin-left: 19px;
+}
+.tui-image-editor-container .tui-image-editor-range-wrap.tui-image-editor-newline.short label {
+  color: #8e8e8e;
+  font-weight: normal;
+}
+.tui-image-editor-container .tui-image-editor-range-wrap label {
+  vertical-align: baseline;
+  font-size: 11px;
+  margin-right: 7px;
+  color: #fff;
+}
+.tui-image-editor-container .tui-image-editor-range-value {
+  cursor: default;
+  width: 40px;
+  height: 24px;
+  outline: none;
+  border-radius: 2px;
+  box-shadow: none;
+  border: 1px solid #d5d5d5;
+  text-align: center;
+  background-color: #1c1c1c;
+  color: #fff;
+  font-weight: lighter;
+  vertical-align: baseline;
+  font-family: 'Noto Sans', sans-serif;
+  margin-top: 21px;
+  margin-left: 4px;
+}
+.tui-image-editor-container .tui-image-editor-controls {
+  position: absolute;
+  background-color: #151515;
+  width: 100%;
+  height: 64px;
+  display: table;
+  bottom: 0;
+  z-index: 2;
+}
+.tui-image-editor-container .tui-image-editor-icpartition {
+  display: inline-block;
+  background-color: #282828;
+  width: 1px;
+  height: 24px;
+}
+.tui-image-editor-container.left .tui-image-editor-menu > .tui-image-editor-item[tooltip-content]:before {
+  left: 28px;
+  top: 11px;
+  border-right: 7px solid #2f2f2f;
+  border-top: 7px solid transparent;
+  border-bottom: 7px solid transparent;
+}
+.tui-image-editor-container.left .tui-image-editor-menu > .tui-image-editor-item[tooltip-content]:after {
+  top: 7px;
+  left: 42px;
+  white-space: nowrap;
+}
+.tui-image-editor-container.left .tui-image-editor-submenu {
+  left: 0;
+  height: 100%;
+  width: 248px;
+}
+.tui-image-editor-container.left .tui-image-editor-main-container {
+  left: 64px;
+  width: calc(100% - 64px);
+  height: 100%;
+}
+.tui-image-editor-container.left .tui-image-editor-controls {
+  width: 64px;
+  height: 100%;
+  display: table;
+}
+.tui-image-editor-container.left .tui-image-editor-menu,
+.tui-image-editor-container.right .tui-image-editor-menu {
+  white-space: inherit;
+}
+.tui-image-editor-container.left .tui-image-editor-submenu,
+.tui-image-editor-container.right .tui-image-editor-submenu {
+  white-space: normal;
+}
+.tui-image-editor-container.left .tui-image-editor-submenu > div,
+.tui-image-editor-container.right .tui-image-editor-submenu > div {
+  vertical-align: middle;
+}
+.tui-image-editor-container.left .tui-image-editor-controls li,
+.tui-image-editor-container.right .tui-image-editor-controls li {
+  display: inline-block;
+  margin: 4px auto;
+}
+.tui-image-editor-container.left .tui-image-editor-icpartition,
+.tui-image-editor-container.right .tui-image-editor-icpartition {
+  position: relative;
+  top: -7px;
+  width: 24px;
+  height: 1px;
+}
+.tui-image-editor-container.left .tui-image-editor-submenu .tui-image-editor-partition,
+.tui-image-editor-container.right .tui-image-editor-submenu .tui-image-editor-partition {
+  display: block;
+  width: 75%;
+  margin: auto;
+}
+.tui-image-editor-container.left .tui-image-editor-submenu .tui-image-editor-partition > div,
+.tui-image-editor-container.right .tui-image-editor-submenu .tui-image-editor-partition > div {
+  border-left: 0;
+  height: 10px;
+  border-bottom: 1px solid #3c3c3c;
+  width: 100%;
+  margin: 0;
+}
+.tui-image-editor-container.left .tui-image-editor-submenu .tui-image-editor-submenu-align,
+.tui-image-editor-container.right .tui-image-editor-submenu .tui-image-editor-submenu-align {
+  margin-right: 0;
+}
+.tui-image-editor-container.left .tui-image-editor-submenu .tui-image-editor-submenu-item li,
+.tui-image-editor-container.right .tui-image-editor-submenu .tui-image-editor-submenu-item li {
+  margin-top: 15px;
+}
+.tui-image-editor-container.left .tui-image-editor-submenu .tui-image-editor-submenu-item .tui-colorpicker-clearfix li,
+.tui-image-editor-container.right .tui-image-editor-submenu .tui-image-editor-submenu-item .tui-colorpicker-clearfix li {
+  margin-top: 0;
+}
+.tui-image-editor-container.left .tui-image-editor-checkbox-wrap.fixed-width,
+.tui-image-editor-container.right .tui-image-editor-checkbox-wrap.fixed-width {
+  width: 182px;
+  white-space: normal;
+}
+.tui-image-editor-container.left .tui-image-editor-range-wrap.tui-image-editor-newline label.range,
+.tui-image-editor-container.right .tui-image-editor-range-wrap.tui-image-editor-newline label.range {
+  display: block;
+  text-align: left;
+  width: 75%;
+  margin: auto;
+}
+.tui-image-editor-container.left .tui-image-editor-range,
+.tui-image-editor-container.right .tui-image-editor-range {
+  width: 136px;
+}
+.tui-image-editor-container.right .tui-image-editor-menu > .tui-image-editor-item[tooltip-content]:before {
+  left: -3px;
+  top: 11px;
+  border-left: 7px solid #2f2f2f;
+  border-top: 7px solid transparent;
+  border-bottom: 7px solid transparent;
+}
+.tui-image-editor-container.right .tui-image-editor-menu > .tui-image-editor-item[tooltip-content]:after {
+  top: 7px;
+  left: unset;
+  right: 43px;
+  white-space: nowrap;
+}
+.tui-image-editor-container.right .tui-image-editor-submenu {
+  right: 0;
+  height: 100%;
+  width: 248px;
+}
+.tui-image-editor-container.right .tui-image-editor-main-container {
+  right: 64px;
+  width: calc(100% - 64px);
+  height: 100%;
+}
+.tui-image-editor-container.right .tui-image-editor-controls {
+  right: 0;
+  width: 64px;
+  height: 100%;
+  display: table;
+}
+.tui-image-editor-container.top .tui-image-editor-submenu .tui-image-editor-partition.only-left-right,
+.tui-image-editor-container.bottom .tui-image-editor-submenu .tui-image-editor-partition.only-left-right {
+  display: none;
+}
+.tui-image-editor-container.bottom .tui-image-editor-submenu > div {
+  padding-bottom: 24px;
+}
+.tui-image-editor-container.top .color-picker-control .triangle {
+  top: -8px;
+  border-right: 7px solid transparent;
+  border-top: 0px;
+  border-left: 7px solid transparent;
+  border-bottom: 8px solid #fff;
+}
+.tui-image-editor-container.top .tui-image-editor-size-wrap {
+  height: 100%;
+}
+.tui-image-editor-container.top .tui-image-editor-main-container {
+  bottom: 0;
+}
+.tui-image-editor-container.top .tui-image-editor-menu > .tui-image-editor-item[tooltip-content]:before {
+  left: 13px;
+  border-top: 0;
+  border-bottom: 7px solid #2f2f2f;
+  top: 33px;
+}
+.tui-image-editor-container.top .tui-image-editor-menu > .tui-image-editor-item[tooltip-content]:after {
+  top: 38px;
+}
+.tui-image-editor-container.top .tui-image-editor-submenu {
+  top: 0;
+  bottom: auto;
+}
+.tui-image-editor-container.top .tui-image-editor-submenu > div {
+  padding-top: 24px;
+  vertical-align: top;
+}
+.tui-image-editor-container.top .tui-image-editor-controls-logo {
+  display: table-cell;
+}
+.tui-image-editor-container.top .tui-image-editor-controls-buttons {
+  display: table-cell;
+}
+.tui-image-editor-container.top .tui-image-editor-main {
+  top: 64px;
+  height: calc(100% - 64px);
+}
+.tui-image-editor-container.top .tui-image-editor-controls {
+  top: 0;
+  bottom: inherit;
+}
+.tui-image-editor-container .tie-icon-add-button .tui-image-editor-button {
+  min-width: 42px;
+}
+.tui-image-editor-container .svg_ic-menu,
+.tui-image-editor-container .svg_ic-helpmenu {
+  width: 24px;
+  height: 24px;
+}
+.tui-image-editor-container .svg_ic-submenu {
+  width: 32px;
+  height: 32px;
+}
+.tui-image-editor-container .svg_img-bi {
+  width: 257px;
+  height: 26px;
+}
+.tui-image-editor-container .tui-image-editor-controls svg > use {
+  display: none;
+}
+.tui-image-editor-container .tui-image-editor-controls .enabled svg:hover > use.hover,
+.tui-image-editor-container .tui-image-editor-controls .normal svg:hover > use.hover {
+  display: block;
+}
+.tui-image-editor-container .tui-image-editor-controls .active svg:hover > use.hover {
+  display: none;
+}
+.tui-image-editor-container .tui-image-editor-controls svg > use.normal {
+  display: block;
+}
+.tui-image-editor-container .tui-image-editor-controls .active svg > use.active {
+  display: block;
+}
+.tui-image-editor-container .tui-image-editor-controls .enabled svg > use.enabled {
+  display: block;
+}
+.tui-image-editor-container .tui-image-editor-controls .active svg > use.normal,
+.tui-image-editor-container .tui-image-editor-controls .enabled svg > use.normal {
+  display: none;
+}
+.tui-image-editor-container .tui-image-editor-controls .help svg > use.disabled,
+.tui-image-editor-container .tui-image-editor-controls .help.enabled svg > use.normal {
+  display: block;
+}
+.tui-image-editor-container .tui-image-editor-controls .help.enabled svg > use.disabled {
+  display: none;
+}
+.tui-image-editor-container .tui-image-editor-controls:hover {
+  z-index: 3;
+}
+.tui-image-editor-container div.tui-colorpicker-clearfix {
+  width: 159px;
+  height: 28px;
+  border: 1px solid #d5d5d5;
+  border-radius: 2px;
+  background-color: #f5f5f5;
+  margin-top: 6px;
+  padding: 4px 7px 4px 7px;
+}
+.tui-image-editor-container .tui-colorpicker-palette-hex {
+  width: 114px;
+  background-color: #f5f5f5;
+  border: 0;
+  font-size: 11px;
+  margin-top: 2px;
+  font-family: 'Noto Sans', sans-serif;
+}
+.tui-image-editor-container .tui-colorpicker-palette-hex[value='#ffffff'] + .tui-colorpicker-palette-preview,
+.tui-image-editor-container .tui-colorpicker-palette-hex[value=''] + .tui-colorpicker-palette-preview {
+  border: 1px solid #ccc;
+}
+.tui-image-editor-container .tui-colorpicker-palette-hex[value=''] + .tui-colorpicker-palette-preview {
+  background-size: cover;
+  background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAdBJREFUWAnFl0FuwjAQRZ0ukiugHqFSOQNdseuKW3ALzkA4BateICvUGyCxrtRFd4WuunH/TzykaYJrnLEYaTJJsP2+x8GZZCbQrLU5mj7Bn+EP8HvnCObd+R7xBV5lWfaNON4AnsA38E94qLEt+0yiFaBzAV/Bv+Cxxr4co7hKCDpw1q9wLeNYYdlAwyn8TYt8Hme3+8D5ozcTaMCZ68PXa2tnM2sbEcOZAJhrrpl2DAcTOGNjZPSfCdzkw6JrfbiMv+osBe4y9WOedhm4jZfhbENWuxS44H9Wz/xw4WzqLOAqh1+zycgAwzEMzr5k5gaHOa9ULBwuuDkFlHI1Kl4PJ66kgIpnoywOTmRFAYcbwYk9UMApWkD8zAV5ihcwHk4Rx7gl0IFTQL0EFc+CTQ9OZHWH3YhlVJiVpTHbrTGLhTHLZVgff6s9lyBsI9KduSS83oj+34rTwJutmBmCnMsvozRwZqB5GTkBw6/jdPDu69iJ6BYk6eCcfbcgcQIK/MByaaiMqm8rHcjol2TnpWDhyAKSGdA3FrxtJUToX0ODqatetfGE+8tyEUOV8GY5dGRwLP/MBS4RHQr4bT7NRAQjlcOTfZxmv2G+c4hI8nn+Ax5PG/zhI393AAAAAElFTkSuQmCC");
+}
+.tui-image-editor-container .tui-colorpicker-palette-preview {
+  border-radius: 100%;
+  float: left;
+  width: 17px;
+  height: 17px;
+  border: 0;
+}
+.tui-image-editor-container .color-picker-control {
+  position: absolute;
+  display: none;
+  z-index: 99;
+  width: 192px;
+  background-color: #fff;
+  box-shadow: 0 3px 22px 6px rgba(0,0,0,0.15);
+  padding: 16px;
+  border-radius: 2px;
+}
+.tui-image-editor-container .color-picker-control .tui-colorpicker-palette-toggle-slider {
+  display: none;
+}
+.tui-image-editor-container .color-picker-control .tui-colorpicker-palette-button {
+  border: 0;
+  border-radius: 100%;
+  margin: 2px;
+  background-size: cover;
+  font-size: 1px;
+}
+.tui-image-editor-container .color-picker-control .tui-colorpicker-palette-button[title='#ffffff'] {
+  border: 1px solid #ccc;
+}
+.tui-image-editor-container .color-picker-control .tui-colorpicker-palette-button[title=''] {
+  border: 1px solid #ccc;
+}
+.tui-image-editor-container .color-picker-control .triangle {
+  width: 0;
+  height: 0;
+  border-right: 7px solid transparent;
+  border-top: 8px solid #fff;
+  border-left: 7px solid transparent;
+  position: absolute;
+  bottom: -8px;
+  left: 84px;
+}
+.tui-image-editor-container .color-picker-control .tui-colorpicker-container,
+.tui-image-editor-container .color-picker-control .tui-colorpicker-palette-container ul,
+.tui-image-editor-container .color-picker-control .tui-colorpicker-palette-container {
+  width: 100%;
+  height: auto;
+}
+.tui-image-editor-container .filter-color-item .color-picker-control label {
+  font-color: #333;
+  font-weight: normal;
+  margin-right: 7pxleft;
+}
+.tui-image-editor-container .filter-color-item .tui-image-editor-checkbox {
+  margin-top: 0;
+}
+.tui-image-editor-container .filter-color-item .tui-image-editor-checkbox input + label:before,
+.tui-image-editor-container .filter-color-item .tui-image-editor-checkbox > label:before {
+  left: -16px;
+}
+.tui-image-editor-container .color-picker {
+  width: 100%;
+  height: auto;
+}
+.tui-image-editor-container .color-picker-value {
+  width: 32px;
+  height: 32px;
+  border: 0px;
+  border-radius: 100%;
+  margin: auto;
+  margin-bottom: 1px;
+}
+.tui-image-editor-container .color-picker-value.transparent {
+  border: 1px solid #cbcbcb;
+  background-size: cover;
+  background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAdBJREFUWAnFl0FuwjAQRZ0ukiugHqFSOQNdseuKW3ALzkA4BateICvUGyCxrtRFd4WuunH/TzykaYJrnLEYaTJJsP2+x8GZZCbQrLU5mj7Bn+EP8HvnCObd+R7xBV5lWfaNON4AnsA38E94qLEt+0yiFaBzAV/Bv+Cxxr4co7hKCDpw1q9wLeNYYdlAwyn8TYt8Hme3+8D5ozcTaMCZ68PXa2tnM2sbEcOZAJhrrpl2DAcTOGNjZPSfCdzkw6JrfbiMv+osBe4y9WOedhm4jZfhbENWuxS44H9Wz/xw4WzqLOAqh1+zycgAwzEMzr5k5gaHOa9ULBwuuDkFlHI1Kl4PJ66kgIpnoywOTmRFAYcbwYk9UMApWkD8zAV5ihcwHk4Rx7gl0IFTQL0EFc+CTQ9OZHWH3YhlVJiVpTHbrTGLhTHLZVgff6s9lyBsI9KduSS83oj+34rTwJutmBmCnMsvozRwZqB5GTkBw6/jdPDu69iJ6BYk6eCcfbcgcQIK/MByaaiMqm8rHcjol2TnpWDhyAKSGdA3FrxtJUToX0ODqatetfGE+8tyEUOV8GY5dGRwLP/MBS4RHQr4bT7NRAQjlcOTfZxmv2G+c4hI8nn+Ax5PG/zhI393AAAAAElFTkSuQmCC");
+}
+.tui-image-editor-container .color-picker-value + label {
+  color: #fff;
+}
+.tui-image-editor-container .tui-image-editor-submenu svg > use {
+  display: none;
+}
+.tui-image-editor-container .tui-image-editor-submenu svg > use.normal {
+  display: block;
+}
+.tie-icon-add-button.icon-bubble .tui-image-editor-button[data-icontype="icon-bubble"] svg > use.active,
+.tie-icon-add-button.icon-heart .tui-image-editor-button[data-icontype="icon-heart"] svg > use.active,
+.tie-icon-add-button.icon-location .tui-image-editor-button[data-icontype="icon-location"] svg > use.active,
+.tie-icon-add-button.icon-polygon .tui-image-editor-button[data-icontype="icon-polygon"] svg > use.active,
+.tie-icon-add-button.icon-star .tui-image-editor-button[data-icontype="icon-star"] svg > use.active,
+.tie-icon-add-button.icon-star-2 .tui-image-editor-button[data-icontype="icon-star-2"] svg > use.active,
+.tie-icon-add-button.icon-arrow-3 .tui-image-editor-button[data-icontype="icon-arrow-3"] svg > use.active,
+.tie-icon-add-button.icon-arrow-2 .tui-image-editor-button[data-icontype="icon-arrow-2"] svg > use.active,
+.tie-icon-add-button.icon-arrow .tui-image-editor-button[data-icontype="icon-arrow"] svg > use.active {
+  display: block;
+}
+.tie-draw-line-select-button.line .tui-image-editor-button.line svg > use.normal,
+.tie-draw-line-select-button.free .tui-image-editor-button.free svg > use.normal {
+  display: none;
+}
+.tie-draw-line-select-button.line .tui-image-editor-button.line svg > use.active,
+.tie-draw-line-select-button.free .tui-image-editor-button.free svg > use.active {
+  display: block;
+}
+.tie-flip-button.resetFlip .tui-image-editor-button.resetFlip svg > use.normal,
+.tie-flip-button.flipX .tui-image-editor-button.flipX svg > use.normal,
+.tie-flip-button.flipY .tui-image-editor-button.flipY svg > use.normal {
+  display: none;
+}
+.tie-flip-button.resetFlip .tui-image-editor-button.resetFlip svg > use.active,
+.tie-flip-button.flipX .tui-image-editor-button.flipX svg > use.active,
+.tie-flip-button.flipY .tui-image-editor-button.flipY svg > use.active {
+  display: block;
+}
+.tie-mask-apply.apply.active .tui-image-editor-button.apply label {
+  color: #fff;
+}
+.tie-mask-apply.apply.active .tui-image-editor-button.apply svg > use.active {
+  display: block;
+}
+.tie-crop-button .tui-image-editor-button.apply,
+.tie-crop-preset-button .tui-image-editor-button.apply {
+  margin-right: 24px;
+}
+.tie-crop-button .tui-image-editor-button.preset.active svg > use.active,
+.tie-crop-preset-button .tui-image-editor-button.preset.active svg > use.active {
+  display: block;
+}
+.tie-crop-button .tui-image-editor-button.apply.active svg > use.active,
+.tie-crop-preset-button .tui-image-editor-button.apply.active svg > use.active {
+  display: block;
+}
+.tie-shape-button.rect .tui-image-editor-button.rect svg > use.normal,
+.tie-shape-button.circle .tui-image-editor-button.circle svg > use.normal,
+.tie-shape-button.triangle .tui-image-editor-button.triangle svg > use.normal {
+  display: none;
+}
+.tie-shape-button.rect .tui-image-editor-button.rect svg > use.active,
+.tie-shape-button.circle .tui-image-editor-button.circle svg > use.active,
+.tie-shape-button.triangle .tui-image-editor-button.triangle svg > use.active {
+  display: block;
+}
+.tie-text-effect-button .tui-image-editor-button.active svg > use.active {
+  display: block;
+}
+.tie-text-align-button.left .tui-image-editor-button.left svg > use.active,
+.tie-text-align-button.center .tui-image-editor-button.center svg > use.active,
+.tie-text-align-button.right .tui-image-editor-button.right svg > use.active {
+  display: block;
+}
+.tie-mask-image-file,
+.tie-icon-image-file {
+  opacity: 0;
+  position: absolute;
+  width: 100%;
+  height: 100%;
+  border: 1px solid #008000;
+  cursor: inherit;
+  left: 0;
+  top: 0;
+}
+.tui-image-editor-container.top.tui-image-editor-top-optimization .tui-image-editor-controls ul {
+  text-align: right;
+}
+.tui-image-editor-container.top.tui-image-editor-top-optimization .tui-image-editor-controls-logo {
+  display: none;
+}
+/*# sourceMappingURL=src/css/index.css.map */
diff --git a/admin/js/vendors/tui.image-editor/tui-image-editor.js b/admin/js/vendors/tui.image-editor/tui-image-editor.js
new file mode 100644 (file)
index 0000000..61e3033
--- /dev/null
@@ -0,0 +1,2252 @@
+/*!
+ * tui-image-editor.js
+ * @version 3.10.1
+ * @author NHN FE Development Lab <dl_javascript@nhn.com>
+ * @license MIT
+ */
+(function webpackUniversalModuleDefinition(root, factory) {
+       if(typeof exports === 'object' && typeof module === 'object')
+               module.exports = factory(require("fabric")["fabric"], require("tui-code-snippet"), require("tui-color-picker"));
+       else if(typeof define === 'function' && define.amd)
+               define(["fabric", "tui-code-snippet", "tui-color-picker"], factory);
+       else if(typeof exports === 'object')
+               exports["ImageEditor"] = factory(require("fabric")["fabric"], require("tui-code-snippet"), require("tui-color-picker"));
+       else
+               root["tui"] = root["tui"] || {}, root["tui"]["ImageEditor"] = factory(root["fabric"], (root["tui"] && root["tui"]["util"]), (root["tui"] && root["tui"]["colorPicker"]));
+})(window, function(__WEBPACK_EXTERNAL_MODULE_fabric__, __WEBPACK_EXTERNAL_MODULE_tui_code_snippet__, __WEBPACK_EXTERNAL_MODULE_tui_color_picker__) {
+return /******/ (function(modules) { // webpackBootstrap
+/******/       // The module cache
+/******/       var installedModules = {};
+/******/
+/******/       // The require function
+/******/       function __webpack_require__(moduleId) {
+/******/
+/******/               // Check if module is in cache
+/******/               if(installedModules[moduleId]) {
+/******/                       return installedModules[moduleId].exports;
+/******/               }
+/******/               // Create a new module (and put it into the cache)
+/******/               var module = installedModules[moduleId] = {
+/******/                       i: moduleId,
+/******/                       l: false,
+/******/                       exports: {}
+/******/               };
+/******/
+/******/               // Execute the module function
+/******/               modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/               // Flag the module as loaded
+/******/               module.l = true;
+/******/
+/******/               // Return the exports of the module
+/******/               return module.exports;
+/******/       }
+/******/
+/******/
+/******/       // expose the modules object (__webpack_modules__)
+/******/       __webpack_require__.m = modules;
+/******/
+/******/       // expose the module cache
+/******/       __webpack_require__.c = installedModules;
+/******/
+/******/       // define getter function for harmony exports
+/******/       __webpack_require__.d = function(exports, name, getter) {
+/******/               if(!__webpack_require__.o(exports, name)) {
+/******/                       Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/               }
+/******/       };
+/******/
+/******/       // define __esModule on exports
+/******/       __webpack_require__.r = function(exports) {
+/******/               if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/                       Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/               }
+/******/               Object.defineProperty(exports, '__esModule', { value: true });
+/******/       };
+/******/
+/******/       // create a fake namespace object
+/******/       // mode & 1: value is a module id, require it
+/******/       // mode & 2: merge all properties of value into the ns
+/******/       // mode & 4: return value when already ns object
+/******/       // mode & 8|1: behave like require
+/******/       __webpack_require__.t = function(value, mode) {
+/******/               if(mode & 1) value = __webpack_require__(value);
+/******/               if(mode & 8) return value;
+/******/               if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/               var ns = Object.create(null);
+/******/               __webpack_require__.r(ns);
+/******/               Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/               if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/               return ns;
+/******/       };
+/******/
+/******/       // getDefaultExport function for compatibility with non-harmony modules
+/******/       __webpack_require__.n = function(module) {
+/******/               var getter = module && module.__esModule ?
+/******/                       function getDefault() { return module['default']; } :
+/******/                       function getModuleExports() { return module; };
+/******/               __webpack_require__.d(getter, 'a', getter);
+/******/               return getter;
+/******/       };
+/******/
+/******/       // Object.prototype.hasOwnProperty.call
+/******/       __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/       // __webpack_public_path__
+/******/       __webpack_require__.p = "/dist";
+/******/
+/******/
+/******/       // Load entry module and return exports
+/******/       return __webpack_require__(__webpack_require__.s = "./src/index.js");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./node_modules/core-js-pure/es/promise/index.js":
+/*!*******************************************************!*\
+  !*** ./node_modules/core-js-pure/es/promise/index.js ***!
+  \*******************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("__webpack_require__(/*! ../../modules/es.object.to-string */ \"./node_modules/core-js-pure/modules/es.object.to-string.js\");\n__webpack_require__(/*! ../../modules/es.string.iterator */ \"./node_modules/core-js-pure/modules/es.string.iterator.js\");\n__webpack_require__(/*! ../../modules/web.dom-collections.iterator */ \"./node_modules/core-js-pure/modules/web.dom-collections.iterator.js\");\n__webpack_require__(/*! ../../modules/es.promise */ \"./node_modules/core-js-pure/modules/es.promise.js\");\n__webpack_require__(/*! ../../modules/es.promise.all-settled */ \"./node_modules/core-js-pure/modules/es.promise.all-settled.js\");\n__webpack_require__(/*! ../../modules/es.promise.finally */ \"./node_modules/core-js-pure/modules/es.promise.finally.js\");\nvar path = __webpack_require__(/*! ../../internals/path */ \"./node_modules/core-js-pure/internals/path.js\");\n\nmodule.exports = path.Promise;\n\n\n//# sourceURL=webpack://tui.ImageEditor/./node_modules/core-js-pure/es/promise/index.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js-pure/features/promise/index.js":
+/*!*************************************************************!*\
+  !*** ./node_modules/core-js-pure/features/promise/index.js ***!
+  \*************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("var parent = __webpack_require__(/*! ../../es/promise */ \"./node_modules/core-js-pure/es/promise/index.js\");\n__webpack_require__(/*! ../../modules/esnext.aggregate-error */ \"./node_modules/core-js-pure/modules/esnext.aggregate-error.js\");\n// TODO: Remove from `core-js@4`\n__webpack_require__(/*! ../../modules/esnext.promise.all-settled */ \"./node_modules/core-js-pure/modules/esnext.promise.all-settled.js\");\n__webpack_require__(/*! ../../modules/esnext.promise.try */ \"./node_modules/core-js-pure/modules/esnext.promise.try.js\");\n__webpack_require__(/*! ../../modules/esnext.promise.any */ \"./node_modules/core-js-pure/modules/esnext.promise.any.js\");\n\nmodule.exports = parent;\n\n\n//# sourceURL=webpack://tui.ImageEditor/./node_modules/core-js-pure/features/promise/index.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js-pure/internals/a-function.js":
+/*!***********************************************************!*\
+  !*** ./node_modules/core-js-pure/internals/a-function.js ***!
+  \***********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("module.exports = function (it) {\n  if (typeof it != 'function') {\n    throw TypeError(String(it) + ' is not a function');\n  } return it;\n};\n\n\n//# sourceURL=webpack://tui.ImageEditor/./node_modules/core-js-pure/internals/a-function.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js-pure/internals/a-possible-prototype.js":
+/*!*********************************************************************!*\
+  !*** ./node_modules/core-js-pure/internals/a-possible-prototype.js ***!
+  \*********************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("var isObject = __webpack_require__(/*! ../internals/is-object */ \"./node_modules/core-js-pure/internals/is-object.js\");\n\nmodule.exports = function (it) {\n  if (!isObject(it) && it !== null) {\n    throw TypeError(\"Can't set \" + String(it) + ' as a prototype');\n  } return it;\n};\n\n\n//# sourceURL=webpack://tui.ImageEditor/./node_modules/core-js-pure/internals/a-possible-prototype.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js-pure/internals/add-to-unscopables.js":
+/*!*******************************************************************!*\
+  !*** ./node_modules/core-js-pure/internals/add-to-unscopables.js ***!
+  \*******************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("module.exports = function () { /* empty */ };\n\n\n//# sourceURL=webpack://tui.ImageEditor/./node_modules/core-js-pure/internals/add-to-unscopables.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js-pure/internals/an-instance.js":
+/*!************************************************************!*\
+  !*** ./node_modules/core-js-pure/internals/an-instance.js ***!
+  \************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("module.exports = function (it, Constructor, name) {\n  if (!(it instanceof Constructor)) {\n    throw TypeError('Incorrect ' + (name ? name + ' ' : '') + 'invocation');\n  } return it;\n};\n\n\n//# sourceURL=webpack://tui.ImageEditor/./node_modules/core-js-pure/internals/an-instance.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js-pure/internals/an-object.js":
+/*!**********************************************************!*\
+  !*** ./node_modules/core-js-pure/internals/an-object.js ***!
+  \**********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("var isObject = __webpack_require__(/*! ../internals/is-object */ \"./node_modules/core-js-pure/internals/is-object.js\");\n\nmodule.exports = function (it) {\n  if (!isObject(it)) {\n    throw TypeError(String(it) + ' is not an object');\n  } return it;\n};\n\n\n//# sourceURL=webpack://tui.ImageEditor/./node_modules/core-js-pure/internals/an-object.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js-pure/internals/array-includes.js":
+/*!***************************************************************!*\
+  !*** ./node_modules/core-js-pure/internals/array-includes.js ***!
+  \***************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("var toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ \"./node_modules/core-js-pure/internals/to-indexed-object.js\");\nvar toLength = __webpack_require__(/*! ../internals/to-length */ \"./node_modules/core-js-pure/internals/to-length.js\");\nvar toAbsoluteIndex = __webpack_require__(/*! ../internals/to-absolute-index */ \"./node_modules/core-js-pure/internals/to-absolute-index.js\");\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n  return function ($this, el, fromIndex) {\n    var O = toIndexedObject($this);\n    var length = toLength(O.length);\n    var index = toAbsoluteIndex(fromIndex, length);\n    var value;\n    // Array#includes uses SameValueZero equality algorithm\n    // eslint-disable-next-line no-self-compare\n    if (IS_INCLUDES && el != el) while (length > index) {\n      value = O[index++];\n      // eslint-disable-next-line no-self-compare\n      if (value != value) return true;\n    // Array#indexOf ignores holes, Array#includes - not\n    } else for (;length > index; index++) {\n      if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n    } return !IS_INCLUDES && -1;\n  };\n};\n\nmodule.exports = {\n  // `Array.prototype.includes` method\n  // https://tc39.github.io/ecma262/#sec-array.prototype.includes\n  includes: createMethod(true),\n  // `Array.prototype.indexOf` method\n  // https://tc39.github.io/ecma262/#sec-array.prototype.indexof\n  indexOf: createMethod(false)\n};\n\n\n//# sourceURL=webpack://tui.ImageEditor/./node_modules/core-js-pure/internals/array-includes.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js-pure/internals/call-with-safe-iteration-closing.js":
+/*!*********************************************************************************!*\
+  !*** ./node_modules/core-js-pure/internals/call-with-safe-iteration-closing.js ***!
+  \*********************************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("var anObject = __webpack_require__(/*! ../internals/an-object */ \"./node_modules/core-js-pure/internals/an-object.js\");\n\n// call something on iterator step with safe closing on error\nmodule.exports = function (iterator, fn, value, ENTRIES) {\n  try {\n    return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value);\n  // 7.4.6 IteratorClose(iterator, completion)\n  } catch (error) {\n    var returnMethod = iterator['return'];\n    if (returnMethod !== undefined) anObject(returnMethod.call(iterator));\n    throw error;\n  }\n};\n\n\n//# sourceURL=webpack://tui.ImageEditor/./node_modules/core-js-pure/internals/call-with-safe-iteration-closing.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js-pure/internals/check-correctness-of-iteration.js":
+/*!*******************************************************************************!*\
+  !*** ./node_modules/core-js-pure/internals/check-correctness-of-iteration.js ***!
+  \*******************************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \"./node_modules/core-js-pure/internals/well-known-symbol.js\");\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n  var called = 0;\n  var iteratorWithReturn = {\n    next: function () {\n      return { done: !!called++ };\n    },\n    'return': function () {\n      SAFE_CLOSING = true;\n    }\n  };\n  iteratorWithReturn[ITERATOR] = function () {\n    return this;\n  };\n  // eslint-disable-next-line no-throw-literal\n  Array.from(iteratorWithReturn, function () { throw 2; });\n} catch (error) { /* empty */ }\n\nmodule.exports = function (exec, SKIP_CLOSING) {\n  if (!SKIP_CLOSING && !SAFE_CLOSING) return false;\n  var ITERATION_SUPPORT = false;\n  try {\n    var object = {};\n    object[ITERATOR] = function () {\n      return {\n        next: function () {\n          return { done: ITERATION_SUPPORT = true };\n        }\n      };\n    };\n    exec(object);\n  } catch (error) { /* empty */ }\n  return ITERATION_SUPPORT;\n};\n\n\n//# sourceURL=webpack://tui.ImageEditor/./node_modules/core-js-pure/internals/check-correctness-of-iteration.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js-pure/internals/classof-raw.js":
+/*!************************************************************!*\
+  !*** ./node_modules/core-js-pure/internals/classof-raw.js ***!
+  \************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("var toString = {}.toString;\n\nmodule.exports = function (it) {\n  return toString.call(it).slice(8, -1);\n};\n\n\n//# sourceURL=webpack://tui.ImageEditor/./node_modules/core-js-pure/internals/classof-raw.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js-pure/internals/classof.js":
+/*!********************************************************!*\
+  !*** ./node_modules/core-js-pure/internals/classof.js ***!
+  \********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("var TO_STRING_TAG_SUPPORT = __webpack_require__(/*! ../internals/to-string-tag-support */ \"./node_modules/core-js-pure/internals/to-string-tag-support.js\");\nvar classofRaw = __webpack_require__(/*! ../internals/classof-raw */ \"./node_modules/core-js-pure/internals/classof-raw.js\");\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \"./node_modules/core-js-pure/internals/well-known-symbol.js\");\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n  try {\n    return it[key];\n  } catch (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nmodule.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\n  var O, tag, result;\n  return it === undefined ? 'Undefined' : it === null ? 'Null'\n    // @@toStringTag case\n    : typeof (tag = tryGet(O = Object(it), TO_STRING_TAG)) == 'string' ? tag\n    // builtinTag case\n    : CORRECT_ARGUMENTS ? classofRaw(O)\n    // ES3 arguments fallback\n    : (result = classofRaw(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : result;\n};\n\n\n//# sourceURL=webpack://tui.ImageEditor/./node_modules/core-js-pure/internals/classof.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js-pure/internals/correct-prototype-getter.js":
+/*!*************************************************************************!*\
+  !*** ./node_modules/core-js-pure/internals/correct-prototype-getter.js ***!
+  \*************************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("var fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js-pure/internals/fails.js\");\n\nmodule.exports = !fails(function () {\n  function F() { /* empty */ }\n  F.prototype.constructor = null;\n  return Object.getPrototypeOf(new F()) !== F.prototype;\n});\n\n\n//# sourceURL=webpack://tui.ImageEditor/./node_modules/core-js-pure/internals/correct-prototype-getter.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js-pure/internals/create-iterator-constructor.js":
+/*!****************************************************************************!*\
+  !*** ./node_modules/core-js-pure/internals/create-iterator-constructor.js ***!
+  \****************************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nvar IteratorPrototype = __webpack_require__(/*! ../internals/iterators-core */ \"./node_modules/core-js-pure/internals/iterators-core.js\").IteratorPrototype;\nvar create = __webpack_require__(/*! ../internals/object-create */ \"./node_modules/core-js-pure/internals/object-create.js\");\nvar createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ \"./node_modules/core-js-pure/internals/create-property-descriptor.js\");\nvar setToStringTag = __webpack_require__(/*! ../internals/set-to-string-tag */ \"./node_modules/core-js-pure/internals/set-to-string-tag.js\");\nvar Iterators = __webpack_require__(/*! ../internals/iterators */ \"./node_modules/core-js-pure/internals/iterators.js\");\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (IteratorConstructor, NAME, next) {\n  var TO_STRING_TAG = NAME + ' Iterator';\n  IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(1, next) });\n  setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true);\n  Iterators[TO_STRING_TAG] = returnThis;\n  return IteratorConstructor;\n};\n\n\n//# sourceURL=webpack://tui.ImageEditor/./node_modules/core-js-pure/internals/create-iterator-constructor.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js-pure/internals/create-non-enumerable-property.js":
+/*!*******************************************************************************!*\
+  !*** ./node_modules/core-js-pure/internals/create-non-enumerable-property.js ***!
+  \*******************************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \"./node_modules/core-js-pure/internals/descriptors.js\");\nvar definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ \"./node_modules/core-js-pure/internals/object-define-property.js\");\nvar createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ \"./node_modules/core-js-pure/internals/create-property-descriptor.js\");\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n  return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n  object[key] = value;\n  return object;\n};\n\n\n//# sourceURL=webpack://tui.ImageEditor/./node_modules/core-js-pure/internals/create-non-enumerable-property.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js-pure/internals/create-property-descriptor.js":
+/*!***************************************************************************!*\
+  !*** ./node_modules/core-js-pure/internals/create-property-descriptor.js ***!
+  \***************************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("module.exports = function (bitmap, value) {\n  return {\n    enumerable: !(bitmap & 1),\n    configurable: !(bitmap & 2),\n    writable: !(bitmap & 4),\n    value: value\n  };\n};\n\n\n//# sourceURL=webpack://tui.ImageEditor/./node_modules/core-js-pure/internals/create-property-descriptor.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js-pure/internals/define-iterator.js":
+/*!****************************************************************!*\
+  !*** ./node_modules/core-js-pure/internals/define-iterator.js ***!
+  \****************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js-pure/internals/export.js\");\nvar createIteratorConstructor = __webpack_require__(/*! ../internals/create-iterator-constructor */ \"./node_modules/core-js-pure/internals/create-iterator-constructor.js\");\nvar getPrototypeOf = __webpack_require__(/*! ../internals/object-get-prototype-of */ \"./node_modules/core-js-pure/internals/object-get-prototype-of.js\");\nvar setPrototypeOf = __webpack_require__(/*! ../internals/object-set-prototype-of */ \"./node_modules/core-js-pure/internals/object-set-prototype-of.js\");\nvar setToStringTag = __webpack_require__(/*! ../internals/set-to-string-tag */ \"./node_modules/core-js-pure/internals/set-to-string-tag.js\");\nvar createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ \"./node_modules/core-js-pure/internals/create-non-enumerable-property.js\");\nvar redefine = __webpack_require__(/*! ../internals/redefine */ \"./node_modules/core-js-pure/internals/redefine.js\");\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \"./node_modules/core-js-pure/internals/well-known-symbol.js\");\nvar IS_PURE = __webpack_require__(/*! ../internals/is-pure */ \"./node_modules/core-js-pure/internals/is-pure.js\");\nvar Iterators = __webpack_require__(/*! ../internals/iterators */ \"./node_modules/core-js-pure/internals/iterators.js\");\nvar IteratorsCore = __webpack_require__(/*! ../internals/iterators-core */ \"./node_modules/core-js-pure/internals/iterators-core.js\");\n\nvar IteratorPrototype = IteratorsCore.IteratorPrototype;\nvar BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS;\nvar ITERATOR = wellKnownSymbol('iterator');\nvar KEYS = 'keys';\nvar VALUES = 'values';\nvar ENTRIES = 'entries';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) {\n  createIteratorConstructor(IteratorConstructor, NAME, next);\n\n  var getIterationMethod = function (KIND) {\n    if (KIND === DEFAULT && defaultIterator) return defaultIterator;\n    if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype) return IterablePrototype[KIND];\n    switch (KIND) {\n      case KEYS: return function keys() { return new IteratorConstructor(this, KIND); };\n      case VALUES: return function values() { return new IteratorConstructor(this, KIND); };\n      case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); };\n    } return function () { return new IteratorConstructor(this); };\n  };\n\n  var TO_STRING_TAG = NAME + ' Iterator';\n  var INCORRECT_VALUES_NAME = false;\n  var IterablePrototype = Iterable.prototype;\n  var nativeIterator = IterablePrototype[ITERATOR]\n    || IterablePrototype['@@iterator']\n    || DEFAULT && IterablePrototype[DEFAULT];\n  var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT);\n  var anyNativeIterator = NAME == 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator;\n  var CurrentIteratorPrototype, methods, KEY;\n\n  // fix native\n  if (anyNativeIterator) {\n    CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable()));\n    if (IteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) {\n      if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) {\n        if (setPrototypeOf) {\n          setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype);\n        } else if (typeof CurrentIteratorPrototype[ITERATOR] != 'function') {\n          createNonEnumerableProperty(CurrentIteratorPrototype, ITERATOR, returnThis);\n        }\n      }\n      // Set @@toStringTag to native iterators\n      setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true);\n      if (IS_PURE) Iterators[TO_STRING_TAG] = returnThis;\n    }\n  }\n\n  // fix Array#{values, @@iterator}.name in V8 / FF\n  if (DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) {\n    INCORRECT_VALUES_NAME = true;\n    defaultIterator = function values() { return nativeIterator.call(this); };\n  }\n\n  // define iterator\n  if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) {\n    createNonEnumerableProperty(IterablePrototype, ITERATOR, defaultIterator);\n  }\n  Iterators[NAME] = defaultIterator;\n\n  // export additional methods\n  if (DEFAULT) {\n    methods = {\n      values: getIterationMethod(VALUES),\n      keys: IS_SET ? defaultIterator : getIterationMethod(KEYS),\n      entries: getIterationMethod(ENTRIES)\n    };\n    if (FORCED) for (KEY in methods) {\n      if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {\n        redefine(IterablePrototype, KEY, methods[KEY]);\n      }\n    } else $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods);\n  }\n\n  return methods;\n};\n\n\n//# sourceURL=webpack://tui.ImageEditor/./node_modules/core-js-pure/internals/define-iterator.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js-pure/internals/descriptors.js":
+/*!************************************************************!*\
+  !*** ./node_modules/core-js-pure/internals/descriptors.js ***!
+  \************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("var fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js-pure/internals/fails.js\");\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !fails(function () {\n  return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7;\n});\n\n\n//# sourceURL=webpack://tui.ImageEditor/./node_modules/core-js-pure/internals/descriptors.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js-pure/internals/document-create-element.js":
+/*!************************************************************************!*\
+  !*** ./node_modules/core-js-pure/internals/document-create-element.js ***!
+  \************************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("var global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js-pure/internals/global.js\");\nvar isObject = __webpack_require__(/*! ../internals/is-object */ \"./node_modules/core-js-pure/internals/is-object.js\");\n\nvar document = global.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n  return EXISTS ? document.createElement(it) : {};\n};\n\n\n//# sourceURL=webpack://tui.ImageEditor/./node_modules/core-js-pure/internals/document-create-element.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js-pure/internals/dom-iterables.js":
+/*!**************************************************************!*\
+  !*** ./node_modules/core-js-pure/internals/dom-iterables.js ***!
+  \**************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("// iterable DOM collections\n// flag - `iterable` interface - 'entries', 'keys', 'values', 'forEach' methods\nmodule.exports = {\n  CSSRuleList: 0,\n  CSSStyleDeclaration: 0,\n  CSSValueList: 0,\n  ClientRectList: 0,\n  DOMRectList: 0,\n  DOMStringList: 0,\n  DOMTokenList: 1,\n  DataTransferItemList: 0,\n  FileList: 0,\n  HTMLAllCollection: 0,\n  HTMLCollection: 0,\n  HTMLFormElement: 0,\n  HTMLSelectElement: 0,\n  MediaList: 0,\n  MimeTypeArray: 0,\n  NamedNodeMap: 0,\n  NodeList: 1,\n  PaintRequestList: 0,\n  Plugin: 0,\n  PluginArray: 0,\n  SVGLengthList: 0,\n  SVGNumberList: 0,\n  SVGPathSegList: 0,\n  SVGPointList: 0,\n  SVGStringList: 0,\n  SVGTransformList: 0,\n  SourceBufferList: 0,\n  StyleSheetList: 0,\n  TextTrackCueList: 0,\n  TextTrackList: 0,\n  TouchList: 0\n};\n\n\n//# sourceURL=webpack://tui.ImageEditor/./node_modules/core-js-pure/internals/dom-iterables.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js-pure/internals/engine-is-ios.js":
+/*!**************************************************************!*\
+  !*** ./node_modules/core-js-pure/internals/engine-is-ios.js ***!
+  \**************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("var userAgent = __webpack_require__(/*! ../internals/engine-user-agent */ \"./node_modules/core-js-pure/internals/engine-user-agent.js\");\n\nmodule.exports = /(iphone|ipod|ipad).*applewebkit/i.test(userAgent);\n\n\n//# sourceURL=webpack://tui.ImageEditor/./node_modules/core-js-pure/internals/engine-is-ios.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js-pure/internals/engine-user-agent.js":
+/*!******************************************************************!*\
+  !*** ./node_modules/core-js-pure/internals/engine-user-agent.js ***!
+  \******************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("var getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ \"./node_modules/core-js-pure/internals/get-built-in.js\");\n\nmodule.exports = getBuiltIn('navigator', 'userAgent') || '';\n\n\n//# sourceURL=webpack://tui.ImageEditor/./node_modules/core-js-pure/internals/engine-user-agent.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js-pure/internals/engine-v8-version.js":
+/*!******************************************************************!*\
+  !*** ./node_modules/core-js-pure/internals/engine-v8-version.js ***!
+  \******************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("var global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js-pure/internals/global.js\");\nvar userAgent = __webpack_require__(/*! ../internals/engine-user-agent */ \"./node_modules/core-js-pure/internals/engine-user-agent.js\");\n\nvar process = global.process;\nvar versions = process && process.versions;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n  match = v8.split('.');\n  version = match[0] + match[1];\n} else if (userAgent) {\n  match = userAgent.match(/Edge\\/(\\d+)/);\n  if (!match || match[1] >= 74) {\n    match = userAgent.match(/Chrome\\/(\\d+)/);\n    if (match) version = match[1];\n  }\n}\n\nmodule.exports = version && +version;\n\n\n//# sourceURL=webpack://tui.ImageEditor/./node_modules/core-js-pure/internals/engine-v8-version.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js-pure/internals/enum-bug-keys.js":
+/*!**************************************************************!*\
+  !*** ./node_modules/core-js-pure/internals/enum-bug-keys.js ***!
+  \**************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("// IE8- don't enum bug keys\nmodule.exports = [\n  'constructor',\n  'hasOwnProperty',\n  'isPrototypeOf',\n  'propertyIsEnumerable',\n  'toLocaleString',\n  'toString',\n  'valueOf'\n];\n\n\n//# sourceURL=webpack://tui.ImageEditor/./node_modules/core-js-pure/internals/enum-bug-keys.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js-pure/internals/export.js":
+/*!*******************************************************!*\
+  !*** ./node_modules/core-js-pure/internals/export.js ***!
+  \*******************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js-pure/internals/global.js\");\nvar getOwnPropertyDescriptor = __webpack_require__(/*! ../internals/object-get-own-property-descriptor */ \"./node_modules/core-js-pure/internals/object-get-own-property-descriptor.js\").f;\nvar isForced = __webpack_require__(/*! ../internals/is-forced */ \"./node_modules/core-js-pure/internals/is-forced.js\");\nvar path = __webpack_require__(/*! ../internals/path */ \"./node_modules/core-js-pure/internals/path.js\");\nvar bind = __webpack_require__(/*! ../internals/function-bind-context */ \"./node_modules/core-js-pure/internals/function-bind-context.js\");\nvar createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ \"./node_modules/core-js-pure/internals/create-non-enumerable-property.js\");\nvar has = __webpack_require__(/*! ../internals/has */ \"./node_modules/core-js-pure/internals/has.js\");\n\nvar wrapConstructor = function (NativeConstructor) {\n  var Wrapper = function (a, b, c) {\n    if (this instanceof NativeConstructor) {\n      switch (arguments.length) {\n        case 0: return new NativeConstructor();\n        case 1: return new NativeConstructor(a);\n        case 2: return new NativeConstructor(a, b);\n      } return new NativeConstructor(a, b, c);\n    } return NativeConstructor.apply(this, arguments);\n  };\n  Wrapper.prototype = NativeConstructor.prototype;\n  return Wrapper;\n};\n\n/*\n  options.target      - name of the target object\n  options.global      - target is the global object\n  options.stat        - export as static methods of target\n  options.proto       - export as prototype methods of target\n  options.real        - real prototype method for the `pure` version\n  options.forced      - export even if the native feature is available\n  options.bind        - bind methods to the target, required for the `pure` version\n  options.wrap        - wrap constructors to preventing global pollution, required for the `pure` version\n  options.unsafe      - use the simple assignment of property instead of delete + defineProperty\n  options.sham        - add a flag to not completely full polyfills\n  options.enumerable  - export as enumerable property\n  options.noTargetGet - prevent calling a getter on target\n*/\nmodule.exports = function (options, source) {\n  var TARGET = options.target;\n  var GLOBAL = options.global;\n  var STATIC = options.stat;\n  var PROTO = options.proto;\n\n  var nativeSource = GLOBAL ? global : STATIC ? global[TARGET] : (global[TARGET] || {}).prototype;\n\n  var target = GLOBAL ? path : path[TARGET] || (path[TARGET] = {});\n  var targetPrototype = target.prototype;\n\n  var FORCED, USE_NATIVE, VIRTUAL_PROTOTYPE;\n  var key, sourceProperty, targetProperty, nativeProperty, resultProperty, descriptor;\n\n  for (key in source) {\n    FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n    // contains in native\n    USE_NATIVE = !FORCED && nativeSource && has(nativeSource, key);\n\n    targetProperty = target[key];\n\n    if (USE_NATIVE) if (options.noTargetGet) {\n      descriptor = getOwnPropertyDescriptor(nativeSource, key);\n      nativeProperty = descriptor && descriptor.value;\n    } else nativeProperty = nativeSource[key];\n\n    // export native or implementation\n    sourceProperty = (USE_NATIVE && nativeProperty) ? nativeProperty : source[key];\n\n    if (USE_NATIVE && typeof targetProperty === typeof sourceProperty) continue;\n\n    // bind timers to global for call from export context\n    if (options.bind && USE_NATIVE) resultProperty = bind(sourceProperty, global);\n    // wrap global constructors for prevent changs in this version\n    else if (options.wrap && USE_NATIVE) resultProperty = wrapConstructor(sourceProperty);\n    // make static versions for prototype methods\n    else if (PROTO && typeof sourceProperty == 'function') resultProperty = bind(Function.call, sourceProperty);\n    // default case\n    else resultProperty = sourceProperty;\n\n    // add a flag to not completely full polyfills\n    if (options.sham || (sourceProperty && sourceProperty.sham) || (targetProperty && targetProperty.sham)) {\n      createNonEnumerableProperty(resultProperty, 'sham', true);\n    }\n\n    target[key] = resultProperty;\n\n    if (PROTO) {\n      VIRTUAL_PROTOTYPE = TARGET + 'Prototype';\n      if (!has(path, VIRTUAL_PROTOTYPE)) {\n        createNonEnumerableProperty(path, VIRTUAL_PROTOTYPE, {});\n      }\n      // export virtual prototype methods\n      path[VIRTUAL_PROTOTYPE][key] = sourceProperty;\n      // export real prototype methods\n      if (options.real && targetPrototype && !targetPrototype[key]) {\n        createNonEnumerableProperty(targetPrototype, key, sourceProperty);\n      }\n    }\n  }\n};\n\n\n//# sourceURL=webpack://tui.ImageEditor/./node_modules/core-js-pure/internals/export.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js-pure/internals/fails.js":
+/*!******************************************************!*\
+  !*** ./node_modules/core-js-pure/internals/fails.js ***!
+  \******************************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("module.exports = function (exec) {\n  try {\n    return !!exec();\n  } catch (error) {\n    return true;\n  }\n};\n\n\n//# sourceURL=webpack://tui.ImageEditor/./node_modules/core-js-pure/internals/fails.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js-pure/internals/function-bind-context.js":
+/*!**********************************************************************!*\
+  !*** ./node_modules/core-js-pure/internals/function-bind-context.js ***!
+  \**********************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("var aFunction = __webpack_require__(/*! ../internals/a-function */ \"./node_modules/core-js-pure/internals/a-function.js\");\n\n// optional / simple context binding\nmodule.exports = function (fn, that, length) {\n  aFunction(fn);\n  if (that === undefined) return fn;\n  switch (length) {\n    case 0: return function () {\n      return fn.call(that);\n    };\n    case 1: return function (a) {\n      return fn.call(that, a);\n    };\n    case 2: return function (a, b) {\n      return fn.call(that, a, b);\n    };\n    case 3: return function (a, b, c) {\n      return fn.call(that, a, b, c);\n    };\n  }\n  return function (/* ...args */) {\n    return fn.apply(that, arguments);\n  };\n};\n\n\n//# sourceURL=webpack://tui.ImageEditor/./node_modules/core-js-pure/internals/function-bind-context.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js-pure/internals/get-built-in.js":
+/*!*************************************************************!*\
+  !*** ./node_modules/core-js-pure/internals/get-built-in.js ***!
+  \*************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("var path = __webpack_require__(/*! ../internals/path */ \"./node_modules/core-js-pure/internals/path.js\");\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js-pure/internals/global.js\");\n\nvar aFunction = function (variable) {\n  return typeof variable == 'function' ? variable : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n  return arguments.length < 2 ? aFunction(path[namespace]) || aFunction(global[namespace])\n    : path[namespace] && path[namespace][method] || global[namespace] && global[namespace][method];\n};\n\n\n//# sourceURL=webpack://tui.ImageEditor/./node_modules/core-js-pure/internals/get-built-in.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js-pure/internals/get-iterator-method.js":
+/*!********************************************************************!*\
+  !*** ./node_modules/core-js-pure/internals/get-iterator-method.js ***!
+  \********************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("var classof = __webpack_require__(/*! ../internals/classof */ \"./node_modules/core-js-pure/internals/classof.js\");\nvar Iterators = __webpack_require__(/*! ../internals/iterators */ \"./node_modules/core-js-pure/internals/iterators.js\");\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \"./node_modules/core-js-pure/internals/well-known-symbol.js\");\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = function (it) {\n  if (it != undefined) return it[ITERATOR]\n    || it['@@iterator']\n    || Iterators[classof(it)];\n};\n\n\n//# sourceURL=webpack://tui.ImageEditor/./node_modules/core-js-pure/internals/get-iterator-method.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js-pure/internals/global.js":
+/*!*******************************************************!*\
+  !*** ./node_modules/core-js-pure/internals/global.js ***!
+  \*******************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("/* WEBPACK VAR INJECTION */(function(global) {var check = function (it) {\n  return it && it.Math == Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n  // eslint-disable-next-line no-undef\n  check(typeof globalThis == 'object' && globalThis) ||\n  check(typeof window == 'object' && window) ||\n  check(typeof self == 'object' && self) ||\n  check(typeof global == 'object' && global) ||\n  // eslint-disable-next-line no-new-func\n  Function('return this')();\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/global.js */ \"./node_modules/webpack/buildin/global.js\")))\n\n//# sourceURL=webpack://tui.ImageEditor/./node_modules/core-js-pure/internals/global.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js-pure/internals/has.js":
+/*!****************************************************!*\
+  !*** ./node_modules/core-js-pure/internals/has.js ***!
+  \****************************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("var hasOwnProperty = {}.hasOwnProperty;\n\nmodule.exports = function (it, key) {\n  return hasOwnProperty.call(it, key);\n};\n\n\n//# sourceURL=webpack://tui.ImageEditor/./node_modules/core-js-pure/internals/has.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js-pure/internals/hidden-keys.js":
+/*!************************************************************!*\
+  !*** ./node_modules/core-js-pure/internals/hidden-keys.js ***!
+  \************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("module.exports = {};\n\n\n//# sourceURL=webpack://tui.ImageEditor/./node_modules/core-js-pure/internals/hidden-keys.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js-pure/internals/host-report-errors.js":
+/*!*******************************************************************!*\
+  !*** ./node_modules/core-js-pure/internals/host-report-errors.js ***!
+  \*******************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("var global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js-pure/internals/global.js\");\n\nmodule.exports = function (a, b) {\n  var console = global.console;\n  if (console && console.error) {\n    arguments.length === 1 ? console.error(a) : console.error(a, b);\n  }\n};\n\n\n//# sourceURL=webpack://tui.ImageEditor/./node_modules/core-js-pure/internals/host-report-errors.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js-pure/internals/html.js":
+/*!*****************************************************!*\
+  !*** ./node_modules/core-js-pure/internals/html.js ***!
+  \*****************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("var getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ \"./node_modules/core-js-pure/internals/get-built-in.js\");\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n\n\n//# sourceURL=webpack://tui.ImageEditor/./node_modules/core-js-pure/internals/html.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js-pure/internals/ie8-dom-define.js":
+/*!***************************************************************!*\
+  !*** ./node_modules/core-js-pure/internals/ie8-dom-define.js ***!
+  \***************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \"./node_modules/core-js-pure/internals/descriptors.js\");\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js-pure/internals/fails.js\");\nvar createElement = __webpack_require__(/*! ../internals/document-create-element */ \"./node_modules/core-js-pure/internals/document-create-element.js\");\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n  return Object.defineProperty(createElement('div'), 'a', {\n    get: function () { return 7; }\n  }).a != 7;\n});\n\n\n//# sourceURL=webpack://tui.ImageEditor/./node_modules/core-js-pure/internals/ie8-dom-define.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js-pure/internals/indexed-object.js":
+/*!***************************************************************!*\
+  !*** ./node_modules/core-js-pure/internals/indexed-object.js ***!
+  \***************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("var fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js-pure/internals/fails.js\");\nvar classof = __webpack_require__(/*! ../internals/classof-raw */ \"./node_modules/core-js-pure/internals/classof-raw.js\");\n\nvar split = ''.split;\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n  // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n  // eslint-disable-next-line no-prototype-builtins\n  return !Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n  return classof(it) == 'String' ? split.call(it, '') : Object(it);\n} : Object;\n\n\n//# sourceURL=webpack://tui.ImageEditor/./node_modules/core-js-pure/internals/indexed-object.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js-pure/internals/inspect-source.js":
+/*!***************************************************************!*\
+  !*** ./node_modules/core-js-pure/internals/inspect-source.js ***!
+  \***************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("var store = __webpack_require__(/*! ../internals/shared-store */ \"./node_modules/core-js-pure/internals/shared-store.js\");\n\nvar functionToString = Function.toString;\n\n// this helper broken in `3.4.1-3.4.4`, so we can't use `shared` helper\nif (typeof store.inspectSource != 'function') {\n  store.inspectSource = function (it) {\n    return functionToString.call(it);\n  };\n}\n\nmodule.exports = store.inspectSource;\n\n\n//# sourceURL=webpack://tui.ImageEditor/./node_modules/core-js-pure/internals/inspect-source.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js-pure/internals/internal-state.js":
+/*!***************************************************************!*\
+  !*** ./node_modules/core-js-pure/internals/internal-state.js ***!
+  \***************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("var NATIVE_WEAK_MAP = __webpack_require__(/*! ../internals/native-weak-map */ \"./node_modules/core-js-pure/internals/native-weak-map.js\");\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js-pure/internals/global.js\");\nvar isObject = __webpack_require__(/*! ../internals/is-object */ \"./node_modules/core-js-pure/internals/is-object.js\");\nvar createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ \"./node_modules/core-js-pure/internals/create-non-enumerable-property.js\");\nvar objectHas = __webpack_require__(/*! ../internals/has */ \"./node_modules/core-js-pure/internals/has.js\");\nvar sharedKey = __webpack_require__(/*! ../internals/shared-key */ \"./node_modules/core-js-pure/internals/shared-key.js\");\nvar hiddenKeys = __webpack_require__(/*! ../internals/hidden-keys */ \"./node_modules/core-js-pure/internals/hidden-keys.js\");\n\nvar WeakMap = global.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n  return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n  return function (it) {\n    var state;\n    if (!isObject(it) || (state = get(it)).type !== TYPE) {\n      throw TypeError('Incompatible receiver, ' + TYPE + ' required');\n    } return state;\n  };\n};\n\nif (NATIVE_WEAK_MAP) {\n  var store = new WeakMap();\n  var wmget = store.get;\n  var wmhas = store.has;\n  var wmset = store.set;\n  set = function (it, metadata) {\n    wmset.call(store, it, metadata);\n    return metadata;\n  };\n  get = function (it) {\n    return wmget.call(store, it) || {};\n  };\n  has = function (it) {\n    return wmhas.call(store, it);\n  };\n} else {\n  var STATE = sharedKey('state');\n  hiddenKeys[STATE] = true;\n  set = function (it, metadata) {\n    createNonEnumerableProperty(it, STATE, metadata);\n    return metadata;\n  };\n  get = function (it) {\n    return objectHas(it, STATE) ? it[STATE] : {};\n  };\n  has = function (it) {\n    return objectHas(it, STATE);\n  };\n}\n\nmodule.exports = {\n  set: set,\n  get: get,\n  has: has,\n  enforce: enforce,\n  getterFor: getterFor\n};\n\n\n//# sourceURL=webpack://tui.ImageEditor/./node_modules/core-js-pure/internals/internal-state.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js-pure/internals/is-array-iterator-method.js":
+/*!*************************************************************************!*\
+  !*** ./node_modules/core-js-pure/internals/is-array-iterator-method.js ***!
+  \*************************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \"./node_modules/core-js-pure/internals/well-known-symbol.js\");\nvar Iterators = __webpack_require__(/*! ../internals/iterators */ \"./node_modules/core-js-pure/internals/iterators.js\");\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar ArrayPrototype = Array.prototype;\n\n// check on default Array iterator\nmodule.exports = function (it) {\n  return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);\n};\n\n\n//# sourceURL=webpack://tui.ImageEditor/./node_modules/core-js-pure/internals/is-array-iterator-method.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js-pure/internals/is-forced.js":
+/*!**********************************************************!*\
+  !*** ./node_modules/core-js-pure/internals/is-forced.js ***!
+  \**********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("var fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js-pure/internals/fails.js\");\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n  var value = data[normalize(feature)];\n  return value == POLYFILL ? true\n    : value == NATIVE ? false\n    : typeof detection == 'function' ? fails(detection)\n    : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n  return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n\n\n//# sourceURL=webpack://tui.ImageEditor/./node_modules/core-js-pure/internals/is-forced.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js-pure/internals/is-object.js":
+/*!**********************************************************!*\
+  !*** ./node_modules/core-js-pure/internals/is-object.js ***!
+  \**********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("module.exports = function (it) {\n  return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n\n\n//# sourceURL=webpack://tui.ImageEditor/./node_modules/core-js-pure/internals/is-object.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js-pure/internals/is-pure.js":
+/*!********************************************************!*\
+  !*** ./node_modules/core-js-pure/internals/is-pure.js ***!
+  \********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("module.exports = true;\n\n\n//# sourceURL=webpack://tui.ImageEditor/./node_modules/core-js-pure/internals/is-pure.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js-pure/internals/iterate.js":
+/*!********************************************************!*\
+  !*** ./node_modules/core-js-pure/internals/iterate.js ***!
+  \********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("var anObject = __webpack_require__(/*! ../internals/an-object */ \"./node_modules/core-js-pure/internals/an-object.js\");\nvar isArrayIteratorMethod = __webpack_require__(/*! ../internals/is-array-iterator-method */ \"./node_modules/core-js-pure/internals/is-array-iterator-method.js\");\nvar toLength = __webpack_require__(/*! ../internals/to-length */ \"./node_modules/core-js-pure/internals/to-length.js\");\nvar bind = __webpack_require__(/*! ../internals/function-bind-context */ \"./node_modules/core-js-pure/internals/function-bind-context.js\");\nvar getIteratorMethod = __webpack_require__(/*! ../internals/get-iterator-method */ \"./node_modules/core-js-pure/internals/get-iterator-method.js\");\nvar callWithSafeIterationClosing = __webpack_require__(/*! ../internals/call-with-safe-iteration-closing */ \"./node_modules/core-js-pure/internals/call-with-safe-iteration-closing.js\");\n\nvar Result = function (stopped, result) {\n  this.stopped = stopped;\n  this.result = result;\n};\n\nvar iterate = module.exports = function (iterable, fn, that, AS_ENTRIES, IS_ITERATOR) {\n  var boundFunction = bind(fn, that, AS_ENTRIES ? 2 : 1);\n  var iterator, iterFn, index, length, result, next, step;\n\n  if (IS_ITERATOR) {\n    iterator = iterable;\n  } else {\n    iterFn = getIteratorMethod(iterable);\n    if (typeof iterFn != 'function') throw TypeError('Target is not iterable');\n    // optimisation for array iterators\n    if (isArrayIteratorMethod(iterFn)) {\n      for (index = 0, length = toLength(iterable.length); length > index; index++) {\n        result = AS_ENTRIES\n          ? boundFunction(anObject(step = iterable[index])[0], step[1])\n          : boundFunction(iterable[index]);\n        if (result && result instanceof Result) return result;\n      } return new Result(false);\n    }\n    iterator = iterFn.call(iterable);\n  }\n\n  next = iterator.next;\n  while (!(step = next.call(iterator)).done) {\n    result = callWithSafeIterationClosing(iterator, boundFunction, step.value, AS_ENTRIES);\n    if (typeof result == 'object' && result && result instanceof Result) return result;\n  } return new Result(false);\n};\n\niterate.stop = function (result) {\n  return new Result(true, result);\n};\n\n\n//# sourceURL=webpack://tui.ImageEditor/./node_modules/core-js-pure/internals/iterate.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js-pure/internals/iterators-core.js":
+/*!***************************************************************!*\
+  !*** ./node_modules/core-js-pure/internals/iterators-core.js ***!
+  \***************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nvar getPrototypeOf = __webpack_require__(/*! ../internals/object-get-prototype-of */ \"./node_modules/core-js-pure/internals/object-get-prototype-of.js\");\nvar createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ \"./node_modules/core-js-pure/internals/create-non-enumerable-property.js\");\nvar has = __webpack_require__(/*! ../internals/has */ \"./node_modules/core-js-pure/internals/has.js\");\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \"./node_modules/core-js-pure/internals/well-known-symbol.js\");\nvar IS_PURE = __webpack_require__(/*! ../internals/is-pure */ \"./node_modules/core-js-pure/internals/is-pure.js\");\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar BUGGY_SAFARI_ITERATORS = false;\n\nvar returnThis = function () { return this; };\n\n// `%IteratorPrototype%` object\n// https://tc39.github.io/ecma262/#sec-%iteratorprototype%-object\nvar IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;\n\nif ([].keys) {\n  arrayIterator = [].keys();\n  // Safari 8 has buggy iterators w/o `next`\n  if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;\n  else {\n    PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));\n    if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;\n  }\n}\n\nif (IteratorPrototype == undefined) IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nif (!IS_PURE && !has(IteratorPrototype, ITERATOR)) {\n  createNonEnumerableProperty(IteratorPrototype, ITERATOR, returnThis);\n}\n\nmodule.exports = {\n  IteratorPrototype: IteratorPrototype,\n  BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS\n};\n\n\n//# sourceURL=webpack://tui.ImageEditor/./node_modules/core-js-pure/internals/iterators-core.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js-pure/internals/iterators.js":
+/*!**********************************************************!*\
+  !*** ./node_modules/core-js-pure/internals/iterators.js ***!
+  \**********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("module.exports = {};\n\n\n//# sourceURL=webpack://tui.ImageEditor/./node_modules/core-js-pure/internals/iterators.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js-pure/internals/microtask.js":
+/*!**********************************************************!*\
+  !*** ./node_modules/core-js-pure/internals/microtask.js ***!
+  \**********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("var global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js-pure/internals/global.js\");\nvar getOwnPropertyDescriptor = __webpack_require__(/*! ../internals/object-get-own-property-descriptor */ \"./node_modules/core-js-pure/internals/object-get-own-property-descriptor.js\").f;\nvar classof = __webpack_require__(/*! ../internals/classof-raw */ \"./node_modules/core-js-pure/internals/classof-raw.js\");\nvar macrotask = __webpack_require__(/*! ../internals/task */ \"./node_modules/core-js-pure/internals/task.js\").set;\nvar IS_IOS = __webpack_require__(/*! ../internals/engine-is-ios */ \"./node_modules/core-js-pure/internals/engine-is-ios.js\");\n\nvar MutationObserver = global.MutationObserver || global.WebKitMutationObserver;\nvar process = global.process;\nvar Promise = global.Promise;\nvar IS_NODE = classof(process) == 'process';\n// Node.js 11 shows ExperimentalWarning on getting `queueMicrotask`\nvar queueMicrotaskDescriptor = getOwnPropertyDescriptor(global, 'queueMicrotask');\nvar queueMicrotask = queueMicrotaskDescriptor && queueMicrotaskDescriptor.value;\n\nvar flush, head, last, notify, toggle, node, promise, then;\n\n// modern engines have queueMicrotask method\nif (!queueMicrotask) {\n  flush = function () {\n    var parent, fn;\n    if (IS_NODE && (parent = process.domain)) parent.exit();\n    while (head) {\n      fn = head.fn;\n      head = head.next;\n      try {\n        fn();\n      } catch (error) {\n        if (head) notify();\n        else last = undefined;\n        throw error;\n      }\n    } last = undefined;\n    if (parent) parent.enter();\n  };\n\n  // Node.js\n  if (IS_NODE) {\n    notify = function () {\n      process.nextTick(flush);\n    };\n  // browsers with MutationObserver, except iOS - https://github.com/zloirock/core-js/issues/339\n  } else if (MutationObserver && !IS_IOS) {\n    toggle = true;\n    node = document.createTextNode('');\n    new MutationObserver(flush).observe(node, { characterData: true });\n    notify = function () {\n      node.data = toggle = !toggle;\n    };\n  // environments with maybe non-completely correct, but existent Promise\n  } else if (Promise && Promise.resolve) {\n    // Promise.resolve without an argument throws an error in LG WebOS 2\n    promise = Promise.resolve(undefined);\n    then = promise.then;\n    notify = function () {\n      then.call(promise, flush);\n    };\n  // for other environments - macrotask based on:\n  // - setImmediate\n  // - MessageChannel\n  // - window.postMessag\n  // - onreadystatechange\n  // - setTimeout\n  } else {\n    notify = function () {\n      // strange IE + webpack dev server bug - use .call(global)\n      macrotask.call(global, flush);\n    };\n  }\n}\n\nmodule.exports = queueMicrotask || function (fn) {\n  var task = { fn: fn, next: undefined };\n  if (last) last.next = task;\n  if (!head) {\n    head = task;\n    notify();\n  } last = task;\n};\n\n\n//# sourceURL=webpack://tui.ImageEditor/./node_modules/core-js-pure/internals/microtask.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js-pure/internals/native-promise-constructor.js":
+/*!***************************************************************************!*\
+  !*** ./node_modules/core-js-pure/internals/native-promise-constructor.js ***!
+  \***************************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("var global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js-pure/internals/global.js\");\n\nmodule.exports = global.Promise;\n\n\n//# sourceURL=webpack://tui.ImageEditor/./node_modules/core-js-pure/internals/native-promise-constructor.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js-pure/internals/native-symbol.js":
+/*!**************************************************************!*\
+  !*** ./node_modules/core-js-pure/internals/native-symbol.js ***!
+  \**************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("var fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js-pure/internals/fails.js\");\n\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n  // Chrome 38 Symbol has incorrect toString conversion\n  // eslint-disable-next-line no-undef\n  return !String(Symbol());\n});\n\n\n//# sourceURL=webpack://tui.ImageEditor/./node_modules/core-js-pure/internals/native-symbol.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js-pure/internals/native-weak-map.js":
+/*!****************************************************************!*\
+  !*** ./node_modules/core-js-pure/internals/native-weak-map.js ***!
+  \****************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("var global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js-pure/internals/global.js\");\nvar inspectSource = __webpack_require__(/*! ../internals/inspect-source */ \"./node_modules/core-js-pure/internals/inspect-source.js\");\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = typeof WeakMap === 'function' && /native code/.test(inspectSource(WeakMap));\n\n\n//# sourceURL=webpack://tui.ImageEditor/./node_modules/core-js-pure/internals/native-weak-map.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js-pure/internals/new-promise-capability.js":
+/*!***********************************************************************!*\
+  !*** ./node_modules/core-js-pure/internals/new-promise-capability.js ***!
+  \***********************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nvar aFunction = __webpack_require__(/*! ../internals/a-function */ \"./node_modules/core-js-pure/internals/a-function.js\");\n\nvar PromiseCapability = function (C) {\n  var resolve, reject;\n  this.promise = new C(function ($$resolve, $$reject) {\n    if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');\n    resolve = $$resolve;\n    reject = $$reject;\n  });\n  this.resolve = aFunction(resolve);\n  this.reject = aFunction(reject);\n};\n\n// 25.4.1.5 NewPromiseCapability(C)\nmodule.exports.f = function (C) {\n  return new PromiseCapability(C);\n};\n\n\n//# sourceURL=webpack://tui.ImageEditor/./node_modules/core-js-pure/internals/new-promise-capability.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js-pure/internals/object-create.js":
+/*!**************************************************************!*\
+  !*** ./node_modules/core-js-pure/internals/object-create.js ***!
+  \**************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("var anObject = __webpack_require__(/*! ../internals/an-object */ \"./node_modules/core-js-pure/internals/an-object.js\");\nvar defineProperties = __webpack_require__(/*! ../internals/object-define-properties */ \"./node_modules/core-js-pure/internals/object-define-properties.js\");\nvar enumBugKeys = __webpack_require__(/*! ../internals/enum-bug-keys */ \"./node_modules/core-js-pure/internals/enum-bug-keys.js\");\nvar hiddenKeys = __webpack_require__(/*! ../internals/hidden-keys */ \"./node_modules/core-js-pure/internals/hidden-keys.js\");\nvar html = __webpack_require__(/*! ../internals/html */ \"./node_modules/core-js-pure/internals/html.js\");\nvar documentCreateElement = __webpack_require__(/*! ../internals/document-create-element */ \"./node_modules/core-js-pure/internals/document-create-element.js\");\nvar sharedKey = __webpack_require__(/*! ../internals/shared-key */ \"./node_modules/core-js-pure/internals/shared-key.js\");\n\nvar GT = '>';\nvar LT = '<';\nvar PROTOTYPE = 'prototype';\nvar SCRIPT = 'script';\nvar IE_PROTO = sharedKey('IE_PROTO');\n\nvar EmptyConstructor = function () { /* empty */ };\n\nvar scriptTag = function (content) {\n  return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;\n};\n\n// Create object with fake `null` prototype: use ActiveX Object with cleared prototype\nvar NullProtoObjectViaActiveX = function (activeXDocument) {\n  activeXDocument.write(scriptTag(''));\n  activeXDocument.close();\n  var temp = activeXDocument.parentWindow.Object;\n  activeXDocument = null; // avoid memory leak\n  return temp;\n};\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar NullProtoObjectViaIFrame = function () {\n  // Thrash, waste and sodomy: IE GC bug\n  var iframe = documentCreateElement('iframe');\n  var JS = 'java' + SCRIPT + ':';\n  var iframeDocument;\n  iframe.style.display = 'none';\n  html.appendChild(iframe);\n  // https://github.com/zloirock/core-js/issues/475\n  iframe.src = String(JS);\n  iframeDocument = iframe.contentWindow.document;\n  iframeDocument.open();\n  iframeDocument.write(scriptTag('document.F=Object'));\n  iframeDocument.close();\n  return iframeDocument.F;\n};\n\n// Check for document.domain and active x support\n// No need to use active x approach when document.domain is not set\n// see https://github.com/es-shims/es5-shim/issues/150\n// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346\n// avoid IE GC bug\nvar activeXDocument;\nvar NullProtoObject = function () {\n  try {\n    /* global ActiveXObject */\n    activeXDocument = document.domain && new ActiveXObject('htmlfile');\n  } catch (error) { /* ignore */ }\n  NullProtoObject = activeXDocument ? NullProtoObjectViaActiveX(activeXDocument) : NullProtoObjectViaIFrame();\n  var length = enumBugKeys.length;\n  while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];\n  return NullProtoObject();\n};\n\nhiddenKeys[IE_PROTO] = true;\n\n// `Object.create` method\n// https://tc39.github.io/ecma262/#sec-object.create\nmodule.exports = Object.create || function create(O, Properties) {\n  var result;\n  if (O !== null) {\n    EmptyConstructor[PROTOTYPE] = anObject(O);\n    result = new EmptyConstructor();\n    EmptyConstructor[PROTOTYPE] = null;\n    // add \"__proto__\" for Object.getPrototypeOf polyfill\n    result[IE_PROTO] = O;\n  } else result = NullProtoObject();\n  return Properties === undefined ? result : defineProperties(result, Properties);\n};\n\n\n//# sourceURL=webpack://tui.ImageEditor/./node_modules/core-js-pure/internals/object-create.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js-pure/internals/object-define-properties.js":
+/*!*************************************************************************!*\
+  !*** ./node_modules/core-js-pure/internals/object-define-properties.js ***!
+  \*************************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \"./node_modules/core-js-pure/internals/descriptors.js\");\nvar definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ \"./node_modules/core-js-pure/internals/object-define-property.js\");\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \"./node_modules/core-js-pure/internals/an-object.js\");\nvar objectKeys = __webpack_require__(/*! ../internals/object-keys */ \"./node_modules/core-js-pure/internals/object-keys.js\");\n\n// `Object.defineProperties` method\n// https://tc39.github.io/ecma262/#sec-object.defineproperties\nmodule.exports = DESCRIPTORS ? Object.defineProperties : function defineProperties(O, Properties) {\n  anObject(O);\n  var keys = objectKeys(Properties);\n  var length = keys.length;\n  var index = 0;\n  var key;\n  while (length > index) definePropertyModule.f(O, key = keys[index++], Properties[key]);\n  return O;\n};\n\n\n//# sourceURL=webpack://tui.ImageEditor/./node_modules/core-js-pure/internals/object-define-properties.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js-pure/internals/object-define-property.js":
+/*!***********************************************************************!*\
+  !*** ./node_modules/core-js-pure/internals/object-define-property.js ***!
+  \***********************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \"./node_modules/core-js-pure/internals/descriptors.js\");\nvar IE8_DOM_DEFINE = __webpack_require__(/*! ../internals/ie8-dom-define */ \"./node_modules/core-js-pure/internals/ie8-dom-define.js\");\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \"./node_modules/core-js-pure/internals/an-object.js\");\nvar toPrimitive = __webpack_require__(/*! ../internals/to-primitive */ \"./node_modules/core-js-pure/internals/to-primitive.js\");\n\nvar nativeDefineProperty = Object.defineProperty;\n\n// `Object.defineProperty` method\n// https://tc39.github.io/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? nativeDefineProperty : function defineProperty(O, P, Attributes) {\n  anObject(O);\n  P = toPrimitive(P, true);\n  anObject(Attributes);\n  if (IE8_DOM_DEFINE) try {\n    return nativeDefineProperty(O, P, Attributes);\n  } catch (error) { /* empty */ }\n  if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported');\n  if ('value' in Attributes) O[P] = Attributes.value;\n  return O;\n};\n\n\n//# sourceURL=webpack://tui.ImageEditor/./node_modules/core-js-pure/internals/object-define-property.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js-pure/internals/object-get-own-property-descriptor.js":
+/*!***********************************************************************************!*\
+  !*** ./node_modules/core-js-pure/internals/object-get-own-property-descriptor.js ***!
+  \***********************************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \"./node_modules/core-js-pure/internals/descriptors.js\");\nvar propertyIsEnumerableModule = __webpack_require__(/*! ../internals/object-property-is-enumerable */ \"./node_modules/core-js-pure/internals/object-property-is-enumerable.js\");\nvar createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ \"./node_modules/core-js-pure/internals/create-property-descriptor.js\");\nvar toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ \"./node_modules/core-js-pure/internals/to-indexed-object.js\");\nvar toPrimitive = __webpack_require__(/*! ../internals/to-primitive */ \"./node_modules/core-js-pure/internals/to-primitive.js\");\nvar has = __webpack_require__(/*! ../internals/has */ \"./node_modules/core-js-pure/internals/has.js\");\nvar IE8_DOM_DEFINE = __webpack_require__(/*! ../internals/ie8-dom-define */ \"./node_modules/core-js-pure/internals/ie8-dom-define.js\");\n\nvar nativeGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? nativeGetOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n  O = toIndexedObject(O);\n  P = toPrimitive(P, true);\n  if (IE8_DOM_DEFINE) try {\n    return nativeGetOwnPropertyDescriptor(O, P);\n  } catch (error) { /* empty */ }\n  if (has(O, P)) return createPropertyDescriptor(!propertyIsEnumerableModule.f.call(O, P), O[P]);\n};\n\n\n//# sourceURL=webpack://tui.ImageEditor/./node_modules/core-js-pure/internals/object-get-own-property-descriptor.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js-pure/internals/object-get-prototype-of.js":
+/*!************************************************************************!*\
+  !*** ./node_modules/core-js-pure/internals/object-get-prototype-of.js ***!
+  \************************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("var has = __webpack_require__(/*! ../internals/has */ \"./node_modules/core-js-pure/internals/has.js\");\nvar toObject = __webpack_require__(/*! ../internals/to-object */ \"./node_modules/core-js-pure/internals/to-object.js\");\nvar sharedKey = __webpack_require__(/*! ../internals/shared-key */ \"./node_modules/core-js-pure/internals/shared-key.js\");\nvar CORRECT_PROTOTYPE_GETTER = __webpack_require__(/*! ../internals/correct-prototype-getter */ \"./node_modules/core-js-pure/internals/correct-prototype-getter.js\");\n\nvar IE_PROTO = sharedKey('IE_PROTO');\nvar ObjectPrototype = Object.prototype;\n\n// `Object.getPrototypeOf` method\n// https://tc39.github.io/ecma262/#sec-object.getprototypeof\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? Object.getPrototypeOf : function (O) {\n  O = toObject(O);\n  if (has(O, IE_PROTO)) return O[IE_PROTO];\n  if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n    return O.constructor.prototype;\n  } return O instanceof Object ? ObjectPrototype : null;\n};\n\n\n//# sourceURL=webpack://tui.ImageEditor/./node_modules/core-js-pure/internals/object-get-prototype-of.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js-pure/internals/object-keys-internal.js":
+/*!*********************************************************************!*\
+  !*** ./node_modules/core-js-pure/internals/object-keys-internal.js ***!
+  \*********************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("var has = __webpack_require__(/*! ../internals/has */ \"./node_modules/core-js-pure/internals/has.js\");\nvar toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ \"./node_modules/core-js-pure/internals/to-indexed-object.js\");\nvar indexOf = __webpack_require__(/*! ../internals/array-includes */ \"./node_modules/core-js-pure/internals/array-includes.js\").indexOf;\nvar hiddenKeys = __webpack_require__(/*! ../internals/hidden-keys */ \"./node_modules/core-js-pure/internals/hidden-keys.js\");\n\nmodule.exports = function (object, names) {\n  var O = toIndexedObject(object);\n  var i = 0;\n  var result = [];\n  var key;\n  for (key in O) !has(hiddenKeys, key) && has(O, key) && result.push(key);\n  // Don't enum bug & hidden keys\n  while (names.length > i) if (has(O, key = names[i++])) {\n    ~indexOf(result, key) || result.push(key);\n  }\n  return result;\n};\n\n\n//# sourceURL=webpack://tui.ImageEditor/./node_modules/core-js-pure/internals/object-keys-internal.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js-pure/internals/object-keys.js":
+/*!************************************************************!*\
+  !*** ./node_modules/core-js-pure/internals/object-keys.js ***!
+  \************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("var internalObjectKeys = __webpack_require__(/*! ../internals/object-keys-internal */ \"./node_modules/core-js-pure/internals/object-keys-internal.js\");\nvar enumBugKeys = __webpack_require__(/*! ../internals/enum-bug-keys */ \"./node_modules/core-js-pure/internals/enum-bug-keys.js\");\n\n// `Object.keys` method\n// https://tc39.github.io/ecma262/#sec-object.keys\nmodule.exports = Object.keys || function keys(O) {\n  return internalObjectKeys(O, enumBugKeys);\n};\n\n\n//# sourceURL=webpack://tui.ImageEditor/./node_modules/core-js-pure/internals/object-keys.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js-pure/internals/object-property-is-enumerable.js":
+/*!******************************************************************************!*\
+  !*** ./node_modules/core-js-pure/internals/object-property-is-enumerable.js ***!
+  \******************************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nvar nativePropertyIsEnumerable = {}.propertyIsEnumerable;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !nativePropertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.github.io/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n  var descriptor = getOwnPropertyDescriptor(this, V);\n  return !!descriptor && descriptor.enumerable;\n} : nativePropertyIsEnumerable;\n\n\n//# sourceURL=webpack://tui.ImageEditor/./node_modules/core-js-pure/internals/object-property-is-enumerable.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js-pure/internals/object-set-prototype-of.js":
+/*!************************************************************************!*\
+  !*** ./node_modules/core-js-pure/internals/object-set-prototype-of.js ***!
+  \************************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("var anObject = __webpack_require__(/*! ../internals/an-object */ \"./node_modules/core-js-pure/internals/an-object.js\");\nvar aPossiblePrototype = __webpack_require__(/*! ../internals/a-possible-prototype */ \"./node_modules/core-js-pure/internals/a-possible-prototype.js\");\n\n// `Object.setPrototypeOf` method\n// https://tc39.github.io/ecma262/#sec-object.setprototypeof\n// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nmodule.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n  var CORRECT_SETTER = false;\n  var test = {};\n  var setter;\n  try {\n    setter = Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set;\n    setter.call(test, []);\n    CORRECT_SETTER = test instanceof Array;\n  } catch (error) { /* empty */ }\n  return function setPrototypeOf(O, proto) {\n    anObject(O);\n    aPossiblePrototype(proto);\n    if (CORRECT_SETTER) setter.call(O, proto);\n    else O.__proto__ = proto;\n    return O;\n  };\n}() : undefined);\n\n\n//# sourceURL=webpack://tui.ImageEditor/./node_modules/core-js-pure/internals/object-set-prototype-of.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js-pure/internals/object-to-string.js":
+/*!*****************************************************************!*\
+  !*** ./node_modules/core-js-pure/internals/object-to-string.js ***!
+  \*****************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nvar TO_STRING_TAG_SUPPORT = __webpack_require__(/*! ../internals/to-string-tag-support */ \"./node_modules/core-js-pure/internals/to-string-tag-support.js\");\nvar classof = __webpack_require__(/*! ../internals/classof */ \"./node_modules/core-js-pure/internals/classof.js\");\n\n// `Object.prototype.toString` method implementation\n// https://tc39.github.io/ecma262/#sec-object.prototype.tostring\nmodule.exports = TO_STRING_TAG_SUPPORT ? {}.toString : function toString() {\n  return '[object ' + classof(this) + ']';\n};\n\n\n//# sourceURL=webpack://tui.ImageEditor/./node_modules/core-js-pure/internals/object-to-string.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js-pure/internals/path.js":
+/*!*****************************************************!*\
+  !*** ./node_modules/core-js-pure/internals/path.js ***!
+  \*****************************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("module.exports = {};\n\n\n//# sourceURL=webpack://tui.ImageEditor/./node_modules/core-js-pure/internals/path.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js-pure/internals/perform.js":
+/*!********************************************************!*\
+  !*** ./node_modules/core-js-pure/internals/perform.js ***!
+  \********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("module.exports = function (exec) {\n  try {\n    return { error: false, value: exec() };\n  } catch (error) {\n    return { error: true, value: error };\n  }\n};\n\n\n//# sourceURL=webpack://tui.ImageEditor/./node_modules/core-js-pure/internals/perform.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js-pure/internals/promise-resolve.js":
+/*!****************************************************************!*\
+  !*** ./node_modules/core-js-pure/internals/promise-resolve.js ***!
+  \****************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("var anObject = __webpack_require__(/*! ../internals/an-object */ \"./node_modules/core-js-pure/internals/an-object.js\");\nvar isObject = __webpack_require__(/*! ../internals/is-object */ \"./node_modules/core-js-pure/internals/is-object.js\");\nvar newPromiseCapability = __webpack_require__(/*! ../internals/new-promise-capability */ \"./node_modules/core-js-pure/internals/new-promise-capability.js\");\n\nmodule.exports = function (C, x) {\n  anObject(C);\n  if (isObject(x) && x.constructor === C) return x;\n  var promiseCapability = newPromiseCapability.f(C);\n  var resolve = promiseCapability.resolve;\n  resolve(x);\n  return promiseCapability.promise;\n};\n\n\n//# sourceURL=webpack://tui.ImageEditor/./node_modules/core-js-pure/internals/promise-resolve.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js-pure/internals/redefine-all.js":
+/*!*************************************************************!*\
+  !*** ./node_modules/core-js-pure/internals/redefine-all.js ***!
+  \*************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("var redefine = __webpack_require__(/*! ../internals/redefine */ \"./node_modules/core-js-pure/internals/redefine.js\");\n\nmodule.exports = function (target, src, options) {\n  for (var key in src) {\n    if (options && options.unsafe && target[key]) target[key] = src[key];\n    else redefine(target, key, src[key], options);\n  } return target;\n};\n\n\n//# sourceURL=webpack://tui.ImageEditor/./node_modules/core-js-pure/internals/redefine-all.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js-pure/internals/redefine.js":
+/*!*********************************************************!*\
+  !*** ./node_modules/core-js-pure/internals/redefine.js ***!
+  \*********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("var createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ \"./node_modules/core-js-pure/internals/create-non-enumerable-property.js\");\n\nmodule.exports = function (target, key, value, options) {\n  if (options && options.enumerable) target[key] = value;\n  else createNonEnumerableProperty(target, key, value);\n};\n\n\n//# sourceURL=webpack://tui.ImageEditor/./node_modules/core-js-pure/internals/redefine.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js-pure/internals/require-object-coercible.js":
+/*!*************************************************************************!*\
+  !*** ./node_modules/core-js-pure/internals/require-object-coercible.js ***!
+  \*************************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("// `RequireObjectCoercible` abstract operation\n// https://tc39.github.io/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n  if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n  return it;\n};\n\n\n//# sourceURL=webpack://tui.ImageEditor/./node_modules/core-js-pure/internals/require-object-coercible.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js-pure/internals/set-global.js":
+/*!***********************************************************!*\
+  !*** ./node_modules/core-js-pure/internals/set-global.js ***!
+  \***********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("var global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js-pure/internals/global.js\");\nvar createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ \"./node_modules/core-js-pure/internals/create-non-enumerable-property.js\");\n\nmodule.exports = function (key, value) {\n  try {\n    createNonEnumerableProperty(global, key, value);\n  } catch (error) {\n    global[key] = value;\n  } return value;\n};\n\n\n//# sourceURL=webpack://tui.ImageEditor/./node_modules/core-js-pure/internals/set-global.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js-pure/internals/set-species.js":
+/*!************************************************************!*\
+  !*** ./node_modules/core-js-pure/internals/set-species.js ***!
+  \************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nvar getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ \"./node_modules/core-js-pure/internals/get-built-in.js\");\nvar definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ \"./node_modules/core-js-pure/internals/object-define-property.js\");\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \"./node_modules/core-js-pure/internals/well-known-symbol.js\");\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \"./node_modules/core-js-pure/internals/descriptors.js\");\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (CONSTRUCTOR_NAME) {\n  var Constructor = getBuiltIn(CONSTRUCTOR_NAME);\n  var defineProperty = definePropertyModule.f;\n\n  if (DESCRIPTORS && Constructor && !Constructor[SPECIES]) {\n    defineProperty(Constructor, SPECIES, {\n      configurable: true,\n      get: function () { return this; }\n    });\n  }\n};\n\n\n//# sourceURL=webpack://tui.ImageEditor/./node_modules/core-js-pure/internals/set-species.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js-pure/internals/set-to-string-tag.js":
+/*!******************************************************************!*\
+  !*** ./node_modules/core-js-pure/internals/set-to-string-tag.js ***!
+  \******************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("var TO_STRING_TAG_SUPPORT = __webpack_require__(/*! ../internals/to-string-tag-support */ \"./node_modules/core-js-pure/internals/to-string-tag-support.js\");\nvar defineProperty = __webpack_require__(/*! ../internals/object-define-property */ \"./node_modules/core-js-pure/internals/object-define-property.js\").f;\nvar createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ \"./node_modules/core-js-pure/internals/create-non-enumerable-property.js\");\nvar has = __webpack_require__(/*! ../internals/has */ \"./node_modules/core-js-pure/internals/has.js\");\nvar toString = __webpack_require__(/*! ../internals/object-to-string */ \"./node_modules/core-js-pure/internals/object-to-string.js\");\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \"./node_modules/core-js-pure/internals/well-known-symbol.js\");\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nmodule.exports = function (it, TAG, STATIC, SET_METHOD) {\n  if (it) {\n    var target = STATIC ? it : it.prototype;\n    if (!has(target, TO_STRING_TAG)) {\n      defineProperty(target, TO_STRING_TAG, { configurable: true, value: TAG });\n    }\n    if (SET_METHOD && !TO_STRING_TAG_SUPPORT) {\n      createNonEnumerableProperty(target, 'toString', toString);\n    }\n  }\n};\n\n\n//# sourceURL=webpack://tui.ImageEditor/./node_modules/core-js-pure/internals/set-to-string-tag.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js-pure/internals/shared-key.js":
+/*!***********************************************************!*\
+  !*** ./node_modules/core-js-pure/internals/shared-key.js ***!
+  \***********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("var shared = __webpack_require__(/*! ../internals/shared */ \"./node_modules/core-js-pure/internals/shared.js\");\nvar uid = __webpack_require__(/*! ../internals/uid */ \"./node_modules/core-js-pure/internals/uid.js\");\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n  return keys[key] || (keys[key] = uid(key));\n};\n\n\n//# sourceURL=webpack://tui.ImageEditor/./node_modules/core-js-pure/internals/shared-key.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js-pure/internals/shared-store.js":
+/*!*************************************************************!*\
+  !*** ./node_modules/core-js-pure/internals/shared-store.js ***!
+  \*************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("var global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js-pure/internals/global.js\");\nvar setGlobal = __webpack_require__(/*! ../internals/set-global */ \"./node_modules/core-js-pure/internals/set-global.js\");\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || setGlobal(SHARED, {});\n\nmodule.exports = store;\n\n\n//# sourceURL=webpack://tui.ImageEditor/./node_modules/core-js-pure/internals/shared-store.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js-pure/internals/shared.js":
+/*!*******************************************************!*\
+  !*** ./node_modules/core-js-pure/internals/shared.js ***!
+  \*******************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("var IS_PURE = __webpack_require__(/*! ../internals/is-pure */ \"./node_modules/core-js-pure/internals/is-pure.js\");\nvar store = __webpack_require__(/*! ../internals/shared-store */ \"./node_modules/core-js-pure/internals/shared-store.js\");\n\n(module.exports = function (key, value) {\n  return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n  version: '3.6.4',\n  mode: IS_PURE ? 'pure' : 'global',\n  copyright: '© 2020 Denis Pushkarev (zloirock.ru)'\n});\n\n\n//# sourceURL=webpack://tui.ImageEditor/./node_modules/core-js-pure/internals/shared.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js-pure/internals/species-constructor.js":
+/*!********************************************************************!*\
+  !*** ./node_modules/core-js-pure/internals/species-constructor.js ***!
+  \********************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("var anObject = __webpack_require__(/*! ../internals/an-object */ \"./node_modules/core-js-pure/internals/an-object.js\");\nvar aFunction = __webpack_require__(/*! ../internals/a-function */ \"./node_modules/core-js-pure/internals/a-function.js\");\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \"./node_modules/core-js-pure/internals/well-known-symbol.js\");\n\nvar SPECIES = wellKnownSymbol('species');\n\n// `SpeciesConstructor` abstract operation\n// https://tc39.github.io/ecma262/#sec-speciesconstructor\nmodule.exports = function (O, defaultConstructor) {\n  var C = anObject(O).constructor;\n  var S;\n  return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? defaultConstructor : aFunction(S);\n};\n\n\n//# sourceURL=webpack://tui.ImageEditor/./node_modules/core-js-pure/internals/species-constructor.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js-pure/internals/string-multibyte.js":
+/*!*****************************************************************!*\
+  !*** ./node_modules/core-js-pure/internals/string-multibyte.js ***!
+  \*****************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("var toInteger = __webpack_require__(/*! ../internals/to-integer */ \"./node_modules/core-js-pure/internals/to-integer.js\");\nvar requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ \"./node_modules/core-js-pure/internals/require-object-coercible.js\");\n\n// `String.prototype.{ codePointAt, at }` methods implementation\nvar createMethod = function (CONVERT_TO_STRING) {\n  return function ($this, pos) {\n    var S = String(requireObjectCoercible($this));\n    var position = toInteger(pos);\n    var size = S.length;\n    var first, second;\n    if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined;\n    first = S.charCodeAt(position);\n    return first < 0xD800 || first > 0xDBFF || position + 1 === size\n      || (second = S.charCodeAt(position + 1)) < 0xDC00 || second > 0xDFFF\n        ? CONVERT_TO_STRING ? S.charAt(position) : first\n        : CONVERT_TO_STRING ? S.slice(position, position + 2) : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;\n  };\n};\n\nmodule.exports = {\n  // `String.prototype.codePointAt` method\n  // https://tc39.github.io/ecma262/#sec-string.prototype.codepointat\n  codeAt: createMethod(false),\n  // `String.prototype.at` method\n  // https://github.com/mathiasbynens/String.prototype.at\n  charAt: createMethod(true)\n};\n\n\n//# sourceURL=webpack://tui.ImageEditor/./node_modules/core-js-pure/internals/string-multibyte.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js-pure/internals/task.js":
+/*!*****************************************************!*\
+  !*** ./node_modules/core-js-pure/internals/task.js ***!
+  \*****************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("var global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js-pure/internals/global.js\");\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js-pure/internals/fails.js\");\nvar classof = __webpack_require__(/*! ../internals/classof-raw */ \"./node_modules/core-js-pure/internals/classof-raw.js\");\nvar bind = __webpack_require__(/*! ../internals/function-bind-context */ \"./node_modules/core-js-pure/internals/function-bind-context.js\");\nvar html = __webpack_require__(/*! ../internals/html */ \"./node_modules/core-js-pure/internals/html.js\");\nvar createElement = __webpack_require__(/*! ../internals/document-create-element */ \"./node_modules/core-js-pure/internals/document-create-element.js\");\nvar IS_IOS = __webpack_require__(/*! ../internals/engine-is-ios */ \"./node_modules/core-js-pure/internals/engine-is-ios.js\");\n\nvar location = global.location;\nvar set = global.setImmediate;\nvar clear = global.clearImmediate;\nvar process = global.process;\nvar MessageChannel = global.MessageChannel;\nvar Dispatch = global.Dispatch;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar defer, channel, port;\n\nvar run = function (id) {\n  // eslint-disable-next-line no-prototype-builtins\n  if (queue.hasOwnProperty(id)) {\n    var fn = queue[id];\n    delete queue[id];\n    fn();\n  }\n};\n\nvar runner = function (id) {\n  return function () {\n    run(id);\n  };\n};\n\nvar listener = function (event) {\n  run(event.data);\n};\n\nvar post = function (id) {\n  // old engines have not location.origin\n  global.postMessage(id + '', location.protocol + '//' + location.host);\n};\n\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!set || !clear) {\n  set = function setImmediate(fn) {\n    var args = [];\n    var i = 1;\n    while (arguments.length > i) args.push(arguments[i++]);\n    queue[++counter] = function () {\n      // eslint-disable-next-line no-new-func\n      (typeof fn == 'function' ? fn : Function(fn)).apply(undefined, args);\n    };\n    defer(counter);\n    return counter;\n  };\n  clear = function clearImmediate(id) {\n    delete queue[id];\n  };\n  // Node.js 0.8-\n  if (classof(process) == 'process') {\n    defer = function (id) {\n      process.nextTick(runner(id));\n    };\n  // Sphere (JS game engine) Dispatch API\n  } else if (Dispatch && Dispatch.now) {\n    defer = function (id) {\n      Dispatch.now(runner(id));\n    };\n  // Browsers with MessageChannel, includes WebWorkers\n  // except iOS - https://github.com/zloirock/core-js/issues/624\n  } else if (MessageChannel && !IS_IOS) {\n    channel = new MessageChannel();\n    port = channel.port2;\n    channel.port1.onmessage = listener;\n    defer = bind(port.postMessage, port, 1);\n  // Browsers with postMessage, skip WebWorkers\n  // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n  } else if (global.addEventListener && typeof postMessage == 'function' && !global.importScripts && !fails(post)) {\n    defer = post;\n    global.addEventListener('message', listener, false);\n  // IE8-\n  } else if (ONREADYSTATECHANGE in createElement('script')) {\n    defer = function (id) {\n      html.appendChild(createElement('script'))[ONREADYSTATECHANGE] = function () {\n        html.removeChild(this);\n        run(id);\n      };\n    };\n  // Rest old browsers\n  } else {\n    defer = function (id) {\n      setTimeout(runner(id), 0);\n    };\n  }\n}\n\nmodule.exports = {\n  set: set,\n  clear: clear\n};\n\n\n//# sourceURL=webpack://tui.ImageEditor/./node_modules/core-js-pure/internals/task.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js-pure/internals/to-absolute-index.js":
+/*!******************************************************************!*\
+  !*** ./node_modules/core-js-pure/internals/to-absolute-index.js ***!
+  \******************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("var toInteger = __webpack_require__(/*! ../internals/to-integer */ \"./node_modules/core-js-pure/internals/to-integer.js\");\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n  var integer = toInteger(index);\n  return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n\n\n//# sourceURL=webpack://tui.ImageEditor/./node_modules/core-js-pure/internals/to-absolute-index.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js-pure/internals/to-indexed-object.js":
+/*!******************************************************************!*\
+  !*** ./node_modules/core-js-pure/internals/to-indexed-object.js ***!
+  \******************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = __webpack_require__(/*! ../internals/indexed-object */ \"./node_modules/core-js-pure/internals/indexed-object.js\");\nvar requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ \"./node_modules/core-js-pure/internals/require-object-coercible.js\");\n\nmodule.exports = function (it) {\n  return IndexedObject(requireObjectCoercible(it));\n};\n\n\n//# sourceURL=webpack://tui.ImageEditor/./node_modules/core-js-pure/internals/to-indexed-object.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js-pure/internals/to-integer.js":
+/*!***********************************************************!*\
+  !*** ./node_modules/core-js-pure/internals/to-integer.js ***!
+  \***********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("var ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `ToInteger` abstract operation\n// https://tc39.github.io/ecma262/#sec-tointeger\nmodule.exports = function (argument) {\n  return isNaN(argument = +argument) ? 0 : (argument > 0 ? floor : ceil)(argument);\n};\n\n\n//# sourceURL=webpack://tui.ImageEditor/./node_modules/core-js-pure/internals/to-integer.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js-pure/internals/to-length.js":
+/*!**********************************************************!*\
+  !*** ./node_modules/core-js-pure/internals/to-length.js ***!
+  \**********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("var toInteger = __webpack_require__(/*! ../internals/to-integer */ \"./node_modules/core-js-pure/internals/to-integer.js\");\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.github.io/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n  return argument > 0 ? min(toInteger(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n\n\n//# sourceURL=webpack://tui.ImageEditor/./node_modules/core-js-pure/internals/to-length.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js-pure/internals/to-object.js":
+/*!**********************************************************!*\
+  !*** ./node_modules/core-js-pure/internals/to-object.js ***!
+  \**********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("var requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ \"./node_modules/core-js-pure/internals/require-object-coercible.js\");\n\n// `ToObject` abstract operation\n// https://tc39.github.io/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n  return Object(requireObjectCoercible(argument));\n};\n\n\n//# sourceURL=webpack://tui.ImageEditor/./node_modules/core-js-pure/internals/to-object.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js-pure/internals/to-primitive.js":
+/*!*************************************************************!*\
+  !*** ./node_modules/core-js-pure/internals/to-primitive.js ***!
+  \*************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("var isObject = __webpack_require__(/*! ../internals/is-object */ \"./node_modules/core-js-pure/internals/is-object.js\");\n\n// `ToPrimitive` abstract operation\n// https://tc39.github.io/ecma262/#sec-toprimitive\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (input, PREFERRED_STRING) {\n  if (!isObject(input)) return input;\n  var fn, val;\n  if (PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;\n  if (typeof (fn = input.valueOf) == 'function' && !isObject(val = fn.call(input))) return val;\n  if (!PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;\n  throw TypeError(\"Can't convert object to primitive value\");\n};\n\n\n//# sourceURL=webpack://tui.ImageEditor/./node_modules/core-js-pure/internals/to-primitive.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js-pure/internals/to-string-tag-support.js":
+/*!**********************************************************************!*\
+  !*** ./node_modules/core-js-pure/internals/to-string-tag-support.js ***!
+  \**********************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \"./node_modules/core-js-pure/internals/well-known-symbol.js\");\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n\ntest[TO_STRING_TAG] = 'z';\n\nmodule.exports = String(test) === '[object z]';\n\n\n//# sourceURL=webpack://tui.ImageEditor/./node_modules/core-js-pure/internals/to-string-tag-support.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js-pure/internals/uid.js":
+/*!****************************************************!*\
+  !*** ./node_modules/core-js-pure/internals/uid.js ***!
+  \****************************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("var id = 0;\nvar postfix = Math.random();\n\nmodule.exports = function (key) {\n  return 'Symbol(' + String(key === undefined ? '' : key) + ')_' + (++id + postfix).toString(36);\n};\n\n\n//# sourceURL=webpack://tui.ImageEditor/./node_modules/core-js-pure/internals/uid.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js-pure/internals/use-symbol-as-uid.js":
+/*!******************************************************************!*\
+  !*** ./node_modules/core-js-pure/internals/use-symbol-as-uid.js ***!
+  \******************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("var NATIVE_SYMBOL = __webpack_require__(/*! ../internals/native-symbol */ \"./node_modules/core-js-pure/internals/native-symbol.js\");\n\nmodule.exports = NATIVE_SYMBOL\n  // eslint-disable-next-line no-undef\n  && !Symbol.sham\n  // eslint-disable-next-line no-undef\n  && typeof Symbol.iterator == 'symbol';\n\n\n//# sourceURL=webpack://tui.ImageEditor/./node_modules/core-js-pure/internals/use-symbol-as-uid.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js-pure/internals/well-known-symbol.js":
+/*!******************************************************************!*\
+  !*** ./node_modules/core-js-pure/internals/well-known-symbol.js ***!
+  \******************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("var global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js-pure/internals/global.js\");\nvar shared = __webpack_require__(/*! ../internals/shared */ \"./node_modules/core-js-pure/internals/shared.js\");\nvar has = __webpack_require__(/*! ../internals/has */ \"./node_modules/core-js-pure/internals/has.js\");\nvar uid = __webpack_require__(/*! ../internals/uid */ \"./node_modules/core-js-pure/internals/uid.js\");\nvar NATIVE_SYMBOL = __webpack_require__(/*! ../internals/native-symbol */ \"./node_modules/core-js-pure/internals/native-symbol.js\");\nvar USE_SYMBOL_AS_UID = __webpack_require__(/*! ../internals/use-symbol-as-uid */ \"./node_modules/core-js-pure/internals/use-symbol-as-uid.js\");\n\nvar WellKnownSymbolsStore = shared('wks');\nvar Symbol = global.Symbol;\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n  if (!has(WellKnownSymbolsStore, name)) {\n    if (NATIVE_SYMBOL && has(Symbol, name)) WellKnownSymbolsStore[name] = Symbol[name];\n    else WellKnownSymbolsStore[name] = createWellKnownSymbol('Symbol.' + name);\n  } return WellKnownSymbolsStore[name];\n};\n\n\n//# sourceURL=webpack://tui.ImageEditor/./node_modules/core-js-pure/internals/well-known-symbol.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js-pure/modules/es.array.iterator.js":
+/*!****************************************************************!*\
+  !*** ./node_modules/core-js-pure/modules/es.array.iterator.js ***!
+  \****************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nvar toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ \"./node_modules/core-js-pure/internals/to-indexed-object.js\");\nvar addToUnscopables = __webpack_require__(/*! ../internals/add-to-unscopables */ \"./node_modules/core-js-pure/internals/add-to-unscopables.js\");\nvar Iterators = __webpack_require__(/*! ../internals/iterators */ \"./node_modules/core-js-pure/internals/iterators.js\");\nvar InternalStateModule = __webpack_require__(/*! ../internals/internal-state */ \"./node_modules/core-js-pure/internals/internal-state.js\");\nvar defineIterator = __webpack_require__(/*! ../internals/define-iterator */ \"./node_modules/core-js-pure/internals/define-iterator.js\");\n\nvar ARRAY_ITERATOR = 'Array Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(ARRAY_ITERATOR);\n\n// `Array.prototype.entries` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.entries\n// `Array.prototype.keys` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.keys\n// `Array.prototype.values` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.values\n// `Array.prototype[@@iterator]` method\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@iterator\n// `CreateArrayIterator` internal method\n// https://tc39.github.io/ecma262/#sec-createarrayiterator\nmodule.exports = defineIterator(Array, 'Array', function (iterated, kind) {\n  setInternalState(this, {\n    type: ARRAY_ITERATOR,\n    target: toIndexedObject(iterated), // target\n    index: 0,                          // next index\n    kind: kind                         // kind\n  });\n// `%ArrayIteratorPrototype%.next` method\n// https://tc39.github.io/ecma262/#sec-%arrayiteratorprototype%.next\n}, function () {\n  var state = getInternalState(this);\n  var target = state.target;\n  var kind = state.kind;\n  var index = state.index++;\n  if (!target || index >= target.length) {\n    state.target = undefined;\n    return { value: undefined, done: true };\n  }\n  if (kind == 'keys') return { value: index, done: false };\n  if (kind == 'values') return { value: target[index], done: false };\n  return { value: [index, target[index]], done: false };\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values%\n// https://tc39.github.io/ecma262/#sec-createunmappedargumentsobject\n// https://tc39.github.io/ecma262/#sec-createmappedargumentsobject\nIterators.Arguments = Iterators.Array;\n\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n\n\n//# sourceURL=webpack://tui.ImageEditor/./node_modules/core-js-pure/modules/es.array.iterator.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js-pure/modules/es.object.to-string.js":
+/*!******************************************************************!*\
+  !*** ./node_modules/core-js-pure/modules/es.object.to-string.js ***!
+  \******************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("// empty\n\n\n//# sourceURL=webpack://tui.ImageEditor/./node_modules/core-js-pure/modules/es.object.to-string.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js-pure/modules/es.promise.all-settled.js":
+/*!*********************************************************************!*\
+  !*** ./node_modules/core-js-pure/modules/es.promise.all-settled.js ***!
+  \*********************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js-pure/internals/export.js\");\nvar aFunction = __webpack_require__(/*! ../internals/a-function */ \"./node_modules/core-js-pure/internals/a-function.js\");\nvar newPromiseCapabilityModule = __webpack_require__(/*! ../internals/new-promise-capability */ \"./node_modules/core-js-pure/internals/new-promise-capability.js\");\nvar perform = __webpack_require__(/*! ../internals/perform */ \"./node_modules/core-js-pure/internals/perform.js\");\nvar iterate = __webpack_require__(/*! ../internals/iterate */ \"./node_modules/core-js-pure/internals/iterate.js\");\n\n// `Promise.allSettled` method\n// https://github.com/tc39/proposal-promise-allSettled\n$({ target: 'Promise', stat: true }, {\n  allSettled: function allSettled(iterable) {\n    var C = this;\n    var capability = newPromiseCapabilityModule.f(C);\n    var resolve = capability.resolve;\n    var reject = capability.reject;\n    var result = perform(function () {\n      var promiseResolve = aFunction(C.resolve);\n      var values = [];\n      var counter = 0;\n      var remaining = 1;\n      iterate(iterable, function (promise) {\n        var index = counter++;\n        var alreadyCalled = false;\n        values.push(undefined);\n        remaining++;\n        promiseResolve.call(C, promise).then(function (value) {\n          if (alreadyCalled) return;\n          alreadyCalled = true;\n          values[index] = { status: 'fulfilled', value: value };\n          --remaining || resolve(values);\n        }, function (e) {\n          if (alreadyCalled) return;\n          alreadyCalled = true;\n          values[index] = { status: 'rejected', reason: e };\n          --remaining || resolve(values);\n        });\n      });\n      --remaining || resolve(values);\n    });\n    if (result.error) reject(result.value);\n    return capability.promise;\n  }\n});\n\n\n//# sourceURL=webpack://tui.ImageEditor/./node_modules/core-js-pure/modules/es.promise.all-settled.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js-pure/modules/es.promise.finally.js":
+/*!*****************************************************************!*\
+  !*** ./node_modules/core-js-pure/modules/es.promise.finally.js ***!
+  \*****************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js-pure/internals/export.js\");\nvar IS_PURE = __webpack_require__(/*! ../internals/is-pure */ \"./node_modules/core-js-pure/internals/is-pure.js\");\nvar NativePromise = __webpack_require__(/*! ../internals/native-promise-constructor */ \"./node_modules/core-js-pure/internals/native-promise-constructor.js\");\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js-pure/internals/fails.js\");\nvar getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ \"./node_modules/core-js-pure/internals/get-built-in.js\");\nvar speciesConstructor = __webpack_require__(/*! ../internals/species-constructor */ \"./node_modules/core-js-pure/internals/species-constructor.js\");\nvar promiseResolve = __webpack_require__(/*! ../internals/promise-resolve */ \"./node_modules/core-js-pure/internals/promise-resolve.js\");\nvar redefine = __webpack_require__(/*! ../internals/redefine */ \"./node_modules/core-js-pure/internals/redefine.js\");\n\n// Safari bug https://bugs.webkit.org/show_bug.cgi?id=200829\nvar NON_GENERIC = !!NativePromise && fails(function () {\n  NativePromise.prototype['finally'].call({ then: function () { /* empty */ } }, function () { /* empty */ });\n});\n\n// `Promise.prototype.finally` method\n// https://tc39.github.io/ecma262/#sec-promise.prototype.finally\n$({ target: 'Promise', proto: true, real: true, forced: NON_GENERIC }, {\n  'finally': function (onFinally) {\n    var C = speciesConstructor(this, getBuiltIn('Promise'));\n    var isFunction = typeof onFinally == 'function';\n    return this.then(\n      isFunction ? function (x) {\n        return promiseResolve(C, onFinally()).then(function () { return x; });\n      } : onFinally,\n      isFunction ? function (e) {\n        return promiseResolve(C, onFinally()).then(function () { throw e; });\n      } : onFinally\n    );\n  }\n});\n\n// patch native Promise.prototype for native async functions\nif (!IS_PURE && typeof NativePromise == 'function' && !NativePromise.prototype['finally']) {\n  redefine(NativePromise.prototype, 'finally', getBuiltIn('Promise').prototype['finally']);\n}\n\n\n//# sourceURL=webpack://tui.ImageEditor/./node_modules/core-js-pure/modules/es.promise.finally.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js-pure/modules/es.promise.js":
+/*!*********************************************************!*\
+  !*** ./node_modules/core-js-pure/modules/es.promise.js ***!
+  \*********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js-pure/internals/export.js\");\nvar IS_PURE = __webpack_require__(/*! ../internals/is-pure */ \"./node_modules/core-js-pure/internals/is-pure.js\");\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js-pure/internals/global.js\");\nvar getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ \"./node_modules/core-js-pure/internals/get-built-in.js\");\nvar NativePromise = __webpack_require__(/*! ../internals/native-promise-constructor */ \"./node_modules/core-js-pure/internals/native-promise-constructor.js\");\nvar redefine = __webpack_require__(/*! ../internals/redefine */ \"./node_modules/core-js-pure/internals/redefine.js\");\nvar redefineAll = __webpack_require__(/*! ../internals/redefine-all */ \"./node_modules/core-js-pure/internals/redefine-all.js\");\nvar setToStringTag = __webpack_require__(/*! ../internals/set-to-string-tag */ \"./node_modules/core-js-pure/internals/set-to-string-tag.js\");\nvar setSpecies = __webpack_require__(/*! ../internals/set-species */ \"./node_modules/core-js-pure/internals/set-species.js\");\nvar isObject = __webpack_require__(/*! ../internals/is-object */ \"./node_modules/core-js-pure/internals/is-object.js\");\nvar aFunction = __webpack_require__(/*! ../internals/a-function */ \"./node_modules/core-js-pure/internals/a-function.js\");\nvar anInstance = __webpack_require__(/*! ../internals/an-instance */ \"./node_modules/core-js-pure/internals/an-instance.js\");\nvar classof = __webpack_require__(/*! ../internals/classof-raw */ \"./node_modules/core-js-pure/internals/classof-raw.js\");\nvar inspectSource = __webpack_require__(/*! ../internals/inspect-source */ \"./node_modules/core-js-pure/internals/inspect-source.js\");\nvar iterate = __webpack_require__(/*! ../internals/iterate */ \"./node_modules/core-js-pure/internals/iterate.js\");\nvar checkCorrectnessOfIteration = __webpack_require__(/*! ../internals/check-correctness-of-iteration */ \"./node_modules/core-js-pure/internals/check-correctness-of-iteration.js\");\nvar speciesConstructor = __webpack_require__(/*! ../internals/species-constructor */ \"./node_modules/core-js-pure/internals/species-constructor.js\");\nvar task = __webpack_require__(/*! ../internals/task */ \"./node_modules/core-js-pure/internals/task.js\").set;\nvar microtask = __webpack_require__(/*! ../internals/microtask */ \"./node_modules/core-js-pure/internals/microtask.js\");\nvar promiseResolve = __webpack_require__(/*! ../internals/promise-resolve */ \"./node_modules/core-js-pure/internals/promise-resolve.js\");\nvar hostReportErrors = __webpack_require__(/*! ../internals/host-report-errors */ \"./node_modules/core-js-pure/internals/host-report-errors.js\");\nvar newPromiseCapabilityModule = __webpack_require__(/*! ../internals/new-promise-capability */ \"./node_modules/core-js-pure/internals/new-promise-capability.js\");\nvar perform = __webpack_require__(/*! ../internals/perform */ \"./node_modules/core-js-pure/internals/perform.js\");\nvar InternalStateModule = __webpack_require__(/*! ../internals/internal-state */ \"./node_modules/core-js-pure/internals/internal-state.js\");\nvar isForced = __webpack_require__(/*! ../internals/is-forced */ \"./node_modules/core-js-pure/internals/is-forced.js\");\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \"./node_modules/core-js-pure/internals/well-known-symbol.js\");\nvar V8_VERSION = __webpack_require__(/*! ../internals/engine-v8-version */ \"./node_modules/core-js-pure/internals/engine-v8-version.js\");\n\nvar SPECIES = wellKnownSymbol('species');\nvar PROMISE = 'Promise';\nvar getInternalState = InternalStateModule.get;\nvar setInternalState = InternalStateModule.set;\nvar getInternalPromiseState = InternalStateModule.getterFor(PROMISE);\nvar PromiseConstructor = NativePromise;\nvar TypeError = global.TypeError;\nvar document = global.document;\nvar process = global.process;\nvar $fetch = getBuiltIn('fetch');\nvar newPromiseCapability = newPromiseCapabilityModule.f;\nvar newGenericPromiseCapability = newPromiseCapability;\nvar IS_NODE = classof(process) == 'process';\nvar DISPATCH_EVENT = !!(document && document.createEvent && global.dispatchEvent);\nvar UNHANDLED_REJECTION = 'unhandledrejection';\nvar REJECTION_HANDLED = 'rejectionhandled';\nvar PENDING = 0;\nvar FULFILLED = 1;\nvar REJECTED = 2;\nvar HANDLED = 1;\nvar UNHANDLED = 2;\nvar Internal, OwnPromiseCapability, PromiseWrapper, nativeThen;\n\nvar FORCED = isForced(PROMISE, function () {\n  var GLOBAL_CORE_JS_PROMISE = inspectSource(PromiseConstructor) !== String(PromiseConstructor);\n  if (!GLOBAL_CORE_JS_PROMISE) {\n    // V8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables\n    // https://bugs.chromium.org/p/chromium/issues/detail?id=830565\n    // We can't detect it synchronously, so just check versions\n    if (V8_VERSION === 66) return true;\n    // Unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n    if (!IS_NODE && typeof PromiseRejectionEvent != 'function') return true;\n  }\n  // We need Promise#finally in the pure version for preventing prototype pollution\n  if (IS_PURE && !PromiseConstructor.prototype['finally']) return true;\n  // We can't use @@species feature detection in V8 since it causes\n  // deoptimization and performance degradation\n  // https://github.com/zloirock/core-js/issues/679\n  if (V8_VERSION >= 51 && /native code/.test(PromiseConstructor)) return false;\n  // Detect correctness of subclassing with @@species support\n  var promise = PromiseConstructor.resolve(1);\n  var FakePromise = function (exec) {\n    exec(function () { /* empty */ }, function () { /* empty */ });\n  };\n  var constructor = promise.constructor = {};\n  constructor[SPECIES] = FakePromise;\n  return !(promise.then(function () { /* empty */ }) instanceof FakePromise);\n});\n\nvar INCORRECT_ITERATION = FORCED || !checkCorrectnessOfIteration(function (iterable) {\n  PromiseConstructor.all(iterable)['catch'](function () { /* empty */ });\n});\n\n// helpers\nvar isThenable = function (it) {\n  var then;\n  return isObject(it) && typeof (then = it.then) == 'function' ? then : false;\n};\n\nvar notify = function (promise, state, isReject) {\n  if (state.notified) return;\n  state.notified = true;\n  var chain = state.reactions;\n  microtask(function () {\n    var value = state.value;\n    var ok = state.state == FULFILLED;\n    var index = 0;\n    // variable length - can't use forEach\n    while (chain.length > index) {\n      var reaction = chain[index++];\n      var handler = ok ? reaction.ok : reaction.fail;\n      var resolve = reaction.resolve;\n      var reject = reaction.reject;\n      var domain = reaction.domain;\n      var result, then, exited;\n      try {\n        if (handler) {\n          if (!ok) {\n            if (state.rejection === UNHANDLED) onHandleUnhandled(promise, state);\n            state.rejection = HANDLED;\n          }\n          if (handler === true) result = value;\n          else {\n            if (domain) domain.enter();\n            result = handler(value); // can throw\n            if (domain) {\n              domain.exit();\n              exited = true;\n            }\n          }\n          if (result === reaction.promise) {\n            reject(TypeError('Promise-chain cycle'));\n          } else if (then = isThenable(result)) {\n            then.call(result, resolve, reject);\n          } else resolve(result);\n        } else reject(value);\n      } catch (error) {\n        if (domain && !exited) domain.exit();\n        reject(error);\n      }\n    }\n    state.reactions = [];\n    state.notified = false;\n    if (isReject && !state.rejection) onUnhandled(promise, state);\n  });\n};\n\nvar dispatchEvent = function (name, promise, reason) {\n  var event, handler;\n  if (DISPATCH_EVENT) {\n    event = document.createEvent('Event');\n    event.promise = promise;\n    event.reason = reason;\n    event.initEvent(name, false, true);\n    global.dispatchEvent(event);\n  } else event = { promise: promise, reason: reason };\n  if (handler = global['on' + name]) handler(event);\n  else if (name === UNHANDLED_REJECTION) hostReportErrors('Unhandled promise rejection', reason);\n};\n\nvar onUnhandled = function (promise, state) {\n  task.call(global, function () {\n    var value = state.value;\n    var IS_UNHANDLED = isUnhandled(state);\n    var result;\n    if (IS_UNHANDLED) {\n      result = perform(function () {\n        if (IS_NODE) {\n          process.emit('unhandledRejection', value, promise);\n        } else dispatchEvent(UNHANDLED_REJECTION, promise, value);\n      });\n      // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\n      state.rejection = IS_NODE || isUnhandled(state) ? UNHANDLED : HANDLED;\n      if (result.error) throw result.value;\n    }\n  });\n};\n\nvar isUnhandled = function (state) {\n  return state.rejection !== HANDLED && !state.parent;\n};\n\nvar onHandleUnhandled = function (promise, state) {\n  task.call(global, function () {\n    if (IS_NODE) {\n      process.emit('rejectionHandled', promise);\n    } else dispatchEvent(REJECTION_HANDLED, promise, state.value);\n  });\n};\n\nvar bind = function (fn, promise, state, unwrap) {\n  return function (value) {\n    fn(promise, state, value, unwrap);\n  };\n};\n\nvar internalReject = function (promise, state, value, unwrap) {\n  if (state.done) return;\n  state.done = true;\n  if (unwrap) state = unwrap;\n  state.value = value;\n  state.state = REJECTED;\n  notify(promise, state, true);\n};\n\nvar internalResolve = function (promise, state, value, unwrap) {\n  if (state.done) return;\n  state.done = true;\n  if (unwrap) state = unwrap;\n  try {\n    if (promise === value) throw TypeError(\"Promise can't be resolved itself\");\n    var then = isThenable(value);\n    if (then) {\n      microtask(function () {\n        var wrapper = { done: false };\n        try {\n          then.call(value,\n            bind(internalResolve, promise, wrapper, state),\n            bind(internalReject, promise, wrapper, state)\n          );\n        } catch (error) {\n          internalReject(promise, wrapper, error, state);\n        }\n      });\n    } else {\n      state.value = value;\n      state.state = FULFILLED;\n      notify(promise, state, false);\n    }\n  } catch (error) {\n    internalReject(promise, { done: false }, error, state);\n  }\n};\n\n// constructor polyfill\nif (FORCED) {\n  // 25.4.3.1 Promise(executor)\n  PromiseConstructor = function Promise(executor) {\n    anInstance(this, PromiseConstructor, PROMISE);\n    aFunction(executor);\n    Internal.call(this);\n    var state = getInternalState(this);\n    try {\n      executor(bind(internalResolve, this, state), bind(internalReject, this, state));\n    } catch (error) {\n      internalReject(this, state, error);\n    }\n  };\n  // eslint-disable-next-line no-unused-vars\n  Internal = function Promise(executor) {\n    setInternalState(this, {\n      type: PROMISE,\n      done: false,\n      notified: false,\n      parent: false,\n      reactions: [],\n      rejection: false,\n      state: PENDING,\n      value: undefined\n    });\n  };\n  Internal.prototype = redefineAll(PromiseConstructor.prototype, {\n    // `Promise.prototype.then` method\n    // https://tc39.github.io/ecma262/#sec-promise.prototype.then\n    then: function then(onFulfilled, onRejected) {\n      var state = getInternalPromiseState(this);\n      var reaction = newPromiseCapability(speciesConstructor(this, PromiseConstructor));\n      reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;\n      reaction.fail = typeof onRejected == 'function' && onRejected;\n      reaction.domain = IS_NODE ? process.domain : undefined;\n      state.parent = true;\n      state.reactions.push(reaction);\n      if (state.state != PENDING) notify(this, state, false);\n      return reaction.promise;\n    },\n    // `Promise.prototype.catch` method\n    // https://tc39.github.io/ecma262/#sec-promise.prototype.catch\n    'catch': function (onRejected) {\n      return this.then(undefined, onRejected);\n    }\n  });\n  OwnPromiseCapability = function () {\n    var promise = new Internal();\n    var state = getInternalState(promise);\n    this.promise = promise;\n    this.resolve = bind(internalResolve, promise, state);\n    this.reject = bind(internalReject, promise, state);\n  };\n  newPromiseCapabilityModule.f = newPromiseCapability = function (C) {\n    return C === PromiseConstructor || C === PromiseWrapper\n      ? new OwnPromiseCapability(C)\n      : newGenericPromiseCapability(C);\n  };\n\n  if (!IS_PURE && typeof NativePromise == 'function') {\n    nativeThen = NativePromise.prototype.then;\n\n    // wrap native Promise#then for native async functions\n    redefine(NativePromise.prototype, 'then', function then(onFulfilled, onRejected) {\n      var that = this;\n      return new PromiseConstructor(function (resolve, reject) {\n        nativeThen.call(that, resolve, reject);\n      }).then(onFulfilled, onRejected);\n    // https://github.com/zloirock/core-js/issues/640\n    }, { unsafe: true });\n\n    // wrap fetch result\n    if (typeof $fetch == 'function') $({ global: true, enumerable: true, forced: true }, {\n      // eslint-disable-next-line no-unused-vars\n      fetch: function fetch(input /* , init */) {\n        return promiseResolve(PromiseConstructor, $fetch.apply(global, arguments));\n      }\n    });\n  }\n}\n\n$({ global: true, wrap: true, forced: FORCED }, {\n  Promise: PromiseConstructor\n});\n\nsetToStringTag(PromiseConstructor, PROMISE, false, true);\nsetSpecies(PROMISE);\n\nPromiseWrapper = getBuiltIn(PROMISE);\n\n// statics\n$({ target: PROMISE, stat: true, forced: FORCED }, {\n  // `Promise.reject` method\n  // https://tc39.github.io/ecma262/#sec-promise.reject\n  reject: function reject(r) {\n    var capability = newPromiseCapability(this);\n    capability.reject.call(undefined, r);\n    return capability.promise;\n  }\n});\n\n$({ target: PROMISE, stat: true, forced: IS_PURE || FORCED }, {\n  // `Promise.resolve` method\n  // https://tc39.github.io/ecma262/#sec-promise.resolve\n  resolve: function resolve(x) {\n    return promiseResolve(IS_PURE && this === PromiseWrapper ? PromiseConstructor : this, x);\n  }\n});\n\n$({ target: PROMISE, stat: true, forced: INCORRECT_ITERATION }, {\n  // `Promise.all` method\n  // https://tc39.github.io/ecma262/#sec-promise.all\n  all: function all(iterable) {\n    var C = this;\n    var capability = newPromiseCapability(C);\n    var resolve = capability.resolve;\n    var reject = capability.reject;\n    var result = perform(function () {\n      var $promiseResolve = aFunction(C.resolve);\n      var values = [];\n      var counter = 0;\n      var remaining = 1;\n      iterate(iterable, function (promise) {\n        var index = counter++;\n        var alreadyCalled = false;\n        values.push(undefined);\n        remaining++;\n        $promiseResolve.call(C, promise).then(function (value) {\n          if (alreadyCalled) return;\n          alreadyCalled = true;\n          values[index] = value;\n          --remaining || resolve(values);\n        }, reject);\n      });\n      --remaining || resolve(values);\n    });\n    if (result.error) reject(result.value);\n    return capability.promise;\n  },\n  // `Promise.race` method\n  // https://tc39.github.io/ecma262/#sec-promise.race\n  race: function race(iterable) {\n    var C = this;\n    var capability = newPromiseCapability(C);\n    var reject = capability.reject;\n    var result = perform(function () {\n      var $promiseResolve = aFunction(C.resolve);\n      iterate(iterable, function (promise) {\n        $promiseResolve.call(C, promise).then(capability.resolve, reject);\n      });\n    });\n    if (result.error) reject(result.value);\n    return capability.promise;\n  }\n});\n\n\n//# sourceURL=webpack://tui.ImageEditor/./node_modules/core-js-pure/modules/es.promise.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js-pure/modules/es.string.iterator.js":
+/*!*****************************************************************!*\
+  !*** ./node_modules/core-js-pure/modules/es.string.iterator.js ***!
+  \*****************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nvar charAt = __webpack_require__(/*! ../internals/string-multibyte */ \"./node_modules/core-js-pure/internals/string-multibyte.js\").charAt;\nvar InternalStateModule = __webpack_require__(/*! ../internals/internal-state */ \"./node_modules/core-js-pure/internals/internal-state.js\");\nvar defineIterator = __webpack_require__(/*! ../internals/define-iterator */ \"./node_modules/core-js-pure/internals/define-iterator.js\");\n\nvar STRING_ITERATOR = 'String Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(STRING_ITERATOR);\n\n// `String.prototype[@@iterator]` method\n// https://tc39.github.io/ecma262/#sec-string.prototype-@@iterator\ndefineIterator(String, 'String', function (iterated) {\n  setInternalState(this, {\n    type: STRING_ITERATOR,\n    string: String(iterated),\n    index: 0\n  });\n// `%StringIteratorPrototype%.next` method\n// https://tc39.github.io/ecma262/#sec-%stringiteratorprototype%.next\n}, function next() {\n  var state = getInternalState(this);\n  var string = state.string;\n  var index = state.index;\n  var point;\n  if (index >= string.length) return { value: undefined, done: true };\n  point = charAt(string, index);\n  state.index += point.length;\n  return { value: point, done: false };\n});\n\n\n//# sourceURL=webpack://tui.ImageEditor/./node_modules/core-js-pure/modules/es.string.iterator.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js-pure/modules/esnext.aggregate-error.js":
+/*!*********************************************************************!*\
+  !*** ./node_modules/core-js-pure/modules/esnext.aggregate-error.js ***!
+  \*********************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js-pure/internals/export.js\");\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \"./node_modules/core-js-pure/internals/descriptors.js\");\nvar getPrototypeOf = __webpack_require__(/*! ../internals/object-get-prototype-of */ \"./node_modules/core-js-pure/internals/object-get-prototype-of.js\");\nvar setPrototypeOf = __webpack_require__(/*! ../internals/object-set-prototype-of */ \"./node_modules/core-js-pure/internals/object-set-prototype-of.js\");\nvar create = __webpack_require__(/*! ../internals/object-create */ \"./node_modules/core-js-pure/internals/object-create.js\");\nvar defineProperty = __webpack_require__(/*! ../internals/object-define-property */ \"./node_modules/core-js-pure/internals/object-define-property.js\");\nvar createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ \"./node_modules/core-js-pure/internals/create-property-descriptor.js\");\nvar iterate = __webpack_require__(/*! ../internals/iterate */ \"./node_modules/core-js-pure/internals/iterate.js\");\nvar createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ \"./node_modules/core-js-pure/internals/create-non-enumerable-property.js\");\nvar InternalStateModule = __webpack_require__(/*! ../internals/internal-state */ \"./node_modules/core-js-pure/internals/internal-state.js\");\n\nvar setInternalState = InternalStateModule.set;\nvar getInternalAggregateErrorState = InternalStateModule.getterFor('AggregateError');\n\nvar $AggregateError = function AggregateError(errors, message) {\n  var that = this;\n  if (!(that instanceof $AggregateError)) return new $AggregateError(errors, message);\n  if (setPrototypeOf) {\n    that = setPrototypeOf(new Error(message), getPrototypeOf(that));\n  }\n  var errorsArray = [];\n  iterate(errors, errorsArray.push, errorsArray);\n  if (DESCRIPTORS) setInternalState(that, { errors: errorsArray, type: 'AggregateError' });\n  else that.errors = errorsArray;\n  if (message !== undefined) createNonEnumerableProperty(that, 'message', String(message));\n  return that;\n};\n\n$AggregateError.prototype = create(Error.prototype, {\n  constructor: createPropertyDescriptor(5, $AggregateError),\n  message: createPropertyDescriptor(5, ''),\n  name: createPropertyDescriptor(5, 'AggregateError')\n});\n\nif (DESCRIPTORS) defineProperty.f($AggregateError.prototype, 'errors', {\n  get: function () {\n    return getInternalAggregateErrorState(this).errors;\n  },\n  configurable: true\n});\n\n$({ global: true }, {\n  AggregateError: $AggregateError\n});\n\n\n//# sourceURL=webpack://tui.ImageEditor/./node_modules/core-js-pure/modules/esnext.aggregate-error.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js-pure/modules/esnext.promise.all-settled.js":
+/*!*************************************************************************!*\
+  !*** ./node_modules/core-js-pure/modules/esnext.promise.all-settled.js ***!
+  \*************************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("// TODO: Remove from `core-js@4`\n__webpack_require__(/*! ./es.promise.all-settled.js */ \"./node_modules/core-js-pure/modules/es.promise.all-settled.js\");\n\n\n//# sourceURL=webpack://tui.ImageEditor/./node_modules/core-js-pure/modules/esnext.promise.all-settled.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js-pure/modules/esnext.promise.any.js":
+/*!*****************************************************************!*\
+  !*** ./node_modules/core-js-pure/modules/esnext.promise.any.js ***!
+  \*****************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js-pure/internals/export.js\");\nvar aFunction = __webpack_require__(/*! ../internals/a-function */ \"./node_modules/core-js-pure/internals/a-function.js\");\nvar getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ \"./node_modules/core-js-pure/internals/get-built-in.js\");\nvar newPromiseCapabilityModule = __webpack_require__(/*! ../internals/new-promise-capability */ \"./node_modules/core-js-pure/internals/new-promise-capability.js\");\nvar perform = __webpack_require__(/*! ../internals/perform */ \"./node_modules/core-js-pure/internals/perform.js\");\nvar iterate = __webpack_require__(/*! ../internals/iterate */ \"./node_modules/core-js-pure/internals/iterate.js\");\n\nvar PROMISE_ANY_ERROR = 'No one promise resolved';\n\n// `Promise.any` method\n// https://github.com/tc39/proposal-promise-any\n$({ target: 'Promise', stat: true }, {\n  any: function any(iterable) {\n    var C = this;\n    var capability = newPromiseCapabilityModule.f(C);\n    var resolve = capability.resolve;\n    var reject = capability.reject;\n    var result = perform(function () {\n      var promiseResolve = aFunction(C.resolve);\n      var errors = [];\n      var counter = 0;\n      var remaining = 1;\n      var alreadyResolved = false;\n      iterate(iterable, function (promise) {\n        var index = counter++;\n        var alreadyRejected = false;\n        errors.push(undefined);\n        remaining++;\n        promiseResolve.call(C, promise).then(function (value) {\n          if (alreadyRejected || alreadyResolved) return;\n          alreadyResolved = true;\n          resolve(value);\n        }, function (e) {\n          if (alreadyRejected || alreadyResolved) return;\n          alreadyRejected = true;\n          errors[index] = e;\n          --remaining || reject(new (getBuiltIn('AggregateError'))(errors, PROMISE_ANY_ERROR));\n        });\n      });\n      --remaining || reject(new (getBuiltIn('AggregateError'))(errors, PROMISE_ANY_ERROR));\n    });\n    if (result.error) reject(result.value);\n    return capability.promise;\n  }\n});\n\n\n//# sourceURL=webpack://tui.ImageEditor/./node_modules/core-js-pure/modules/esnext.promise.any.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js-pure/modules/esnext.promise.try.js":
+/*!*****************************************************************!*\
+  !*** ./node_modules/core-js-pure/modules/esnext.promise.try.js ***!
+  \*****************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js-pure/internals/export.js\");\nvar newPromiseCapabilityModule = __webpack_require__(/*! ../internals/new-promise-capability */ \"./node_modules/core-js-pure/internals/new-promise-capability.js\");\nvar perform = __webpack_require__(/*! ../internals/perform */ \"./node_modules/core-js-pure/internals/perform.js\");\n\n// `Promise.try` method\n// https://github.com/tc39/proposal-promise-try\n$({ target: 'Promise', stat: true }, {\n  'try': function (callbackfn) {\n    var promiseCapability = newPromiseCapabilityModule.f(this);\n    var result = perform(callbackfn);\n    (result.error ? promiseCapability.reject : promiseCapability.resolve)(result.value);\n    return promiseCapability.promise;\n  }\n});\n\n\n//# sourceURL=webpack://tui.ImageEditor/./node_modules/core-js-pure/modules/esnext.promise.try.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js-pure/modules/web.dom-collections.iterator.js":
+/*!***************************************************************************!*\
+  !*** ./node_modules/core-js-pure/modules/web.dom-collections.iterator.js ***!
+  \***************************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("__webpack_require__(/*! ./es.array.iterator */ \"./node_modules/core-js-pure/modules/es.array.iterator.js\");\nvar DOMIterables = __webpack_require__(/*! ../internals/dom-iterables */ \"./node_modules/core-js-pure/internals/dom-iterables.js\");\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js-pure/internals/global.js\");\nvar classof = __webpack_require__(/*! ../internals/classof */ \"./node_modules/core-js-pure/internals/classof.js\");\nvar createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ \"./node_modules/core-js-pure/internals/create-non-enumerable-property.js\");\nvar Iterators = __webpack_require__(/*! ../internals/iterators */ \"./node_modules/core-js-pure/internals/iterators.js\");\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \"./node_modules/core-js-pure/internals/well-known-symbol.js\");\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nfor (var COLLECTION_NAME in DOMIterables) {\n  var Collection = global[COLLECTION_NAME];\n  var CollectionPrototype = Collection && Collection.prototype;\n  if (CollectionPrototype && classof(CollectionPrototype) !== TO_STRING_TAG) {\n    createNonEnumerableProperty(CollectionPrototype, TO_STRING_TAG, COLLECTION_NAME);\n  }\n  Iterators[COLLECTION_NAME] = Iterators.Array;\n}\n\n\n//# sourceURL=webpack://tui.ImageEditor/./node_modules/core-js-pure/modules/web.dom-collections.iterator.js?");
+
+/***/ }),
+
+/***/ "./node_modules/webpack/buildin/global.js":
+/*!***********************************!*\
+  !*** (webpack)/buildin/global.js ***!
+  \***********************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n\n\n//# sourceURL=webpack://tui.ImageEditor/(webpack)/buildin/global.js?");
+
+/***/ }),
+
+/***/ "./src/css/index.styl":
+/*!****************************!*\
+  !*** ./src/css/index.styl ***!
+  \****************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("// extracted by mini-css-extract-plugin\n\n//# sourceURL=webpack://tui.ImageEditor/./src/css/index.styl?");
+
+/***/ }),
+
+/***/ "./src/index.js":
+/*!**********************!*\
+  !*** ./src/index.js ***!
+  \**********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\n__webpack_require__(/*! ./js/polyfill */ \"./src/js/polyfill.js\");\n\nvar _imageEditor = __webpack_require__(/*! ./js/imageEditor */ \"./src/js/imageEditor.js\");\n\nvar _imageEditor2 = _interopRequireDefault(_imageEditor);\n\n__webpack_require__(/*! ./css/index.styl */ \"./src/css/index.styl\");\n\n__webpack_require__(/*! ./js/command/addIcon */ \"./src/js/command/addIcon.js\");\n\n__webpack_require__(/*! ./js/command/addImageObject */ \"./src/js/command/addImageObject.js\");\n\n__webpack_require__(/*! ./js/command/addObject */ \"./src/js/command/addObject.js\");\n\n__webpack_require__(/*! ./js/command/addShape */ \"./src/js/command/addShape.js\");\n\n__webpack_require__(/*! ./js/command/addText */ \"./src/js/command/addText.js\");\n\n__webpack_require__(/*! ./js/command/applyFilter */ \"./src/js/command/applyFilter.js\");\n\n__webpack_require__(/*! ./js/command/changeIconColor */ \"./src/js/command/changeIconColor.js\");\n\n__webpack_require__(/*! ./js/command/changeShape */ \"./src/js/command/changeShape.js\");\n\n__webpack_require__(/*! ./js/command/changeText */ \"./src/js/command/changeText.js\");\n\n__webpack_require__(/*! ./js/command/changeTextStyle */ \"./src/js/command/changeTextStyle.js\");\n\n__webpack_require__(/*! ./js/command/clearObjects */ \"./src/js/command/clearObjects.js\");\n\n__webpack_require__(/*! ./js/command/flip */ \"./src/js/command/flip.js\");\n\n__webpack_require__(/*! ./js/command/loadImage */ \"./src/js/command/loadImage.js\");\n\n__webpack_require__(/*! ./js/command/removeFilter */ \"./src/js/command/removeFilter.js\");\n\n__webpack_require__(/*! ./js/command/removeObject */ \"./src/js/command/removeObject.js\");\n\n__webpack_require__(/*! ./js/command/resizeCanvasDimension */ \"./src/js/command/resizeCanvasDimension.js\");\n\n__webpack_require__(/*! ./js/command/rotate */ \"./src/js/command/rotate.js\");\n\n__webpack_require__(/*! ./js/command/setObjectProperties */ \"./src/js/command/setObjectProperties.js\");\n\n__webpack_require__(/*! ./js/command/setObjectPosition */ \"./src/js/command/setObjectPosition.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = _imageEditor2.default;\n\n// commands\n\n//# sourceURL=webpack://tui.ImageEditor/./src/index.js?");
+
+/***/ }),
+
+/***/ "./src/js/action.js":
+/*!**************************!*\
+  !*** ./src/js/action.js ***!
+  \**************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n\nvar _tuiCodeSnippet = __webpack_require__(/*! tui-code-snippet */ \"tui-code-snippet\");\n\nvar _util = __webpack_require__(/*! ./util */ \"./src/js/util.js\");\n\nvar _imagetracer = __webpack_require__(/*! ./helper/imagetracer */ \"./src/js/helper/imagetracer.js\");\n\nvar _imagetracer2 = _interopRequireDefault(_imagetracer);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = {\n\n    /**\n     * Get ui actions\n     * @returns {Object} actions for ui\n     * @private\n     */\n    getActions: function getActions() {\n        return {\n            main: this._mainAction(),\n            shape: this._shapeAction(),\n            crop: this._cropAction(),\n            flip: this._flipAction(),\n            rotate: this._rotateAction(),\n            text: this._textAction(),\n            mask: this._maskAction(),\n            draw: this._drawAction(),\n            icon: this._iconAction(),\n            filter: this._filterAction()\n        };\n    },\n\n\n    /**\n     * Main Action\n     * @returns {Object} actions for ui main\n     * @private\n     */\n    _mainAction: function _mainAction() {\n        var _this = this;\n\n        var exitCropOnAction = function exitCropOnAction() {\n            if (_this.ui.submenu === 'crop') {\n                _this.stopDrawingMode();\n                _this.ui.changeMenu('crop');\n            }\n        };\n        var setAngleRangeBarOnAction = function setAngleRangeBarOnAction(angle) {\n            if (_this.ui.submenu === 'rotate') {\n                _this.ui.rotate.setRangeBarAngle('setAngle', angle);\n            }\n        };\n        var setFilterStateRangeBarOnAction = function setFilterStateRangeBarOnAction(filterOptions) {\n            if (_this.ui.submenu === 'filter') {\n                _this.ui.filter.setFilterState(filterOptions);\n            }\n        };\n        var onEndUndoRedo = function onEndUndoRedo(result) {\n            setAngleRangeBarOnAction(result);\n            setFilterStateRangeBarOnAction(result);\n\n            return result;\n        };\n\n        return (0, _tuiCodeSnippet.extend)({\n            initLoadImage: function initLoadImage(imagePath, imageName) {\n                return _this.loadImageFromURL(imagePath, imageName).then(function (sizeValue) {\n                    exitCropOnAction();\n                    _this.ui.initializeImgUrl = imagePath;\n                    _this.ui.resizeEditor({ imageSize: sizeValue });\n                    _this.clearUndoStack();\n                });\n            },\n            undo: function undo() {\n                if (!_this.isEmptyUndoStack()) {\n                    exitCropOnAction();\n                    _this.deactivateAll();\n                    _this.undo().then(onEndUndoRedo);\n                }\n            },\n            redo: function redo() {\n                if (!_this.isEmptyRedoStack()) {\n                    exitCropOnAction();\n                    _this.deactivateAll();\n                    _this.redo().then(onEndUndoRedo);\n                }\n            },\n            reset: function reset() {\n                exitCropOnAction();\n                _this.loadImageFromURL(_this.ui.initializeImgUrl, 'resetImage').then(function (sizeValue) {\n                    exitCropOnAction();\n                    _this.ui.resizeEditor({ imageSize: sizeValue });\n                    _this.clearUndoStack();\n                });\n            },\n            delete: function _delete() {\n                _this.ui.changeHelpButtonEnabled('delete', false);\n                exitCropOnAction();\n                _this.removeActiveObject();\n                _this.activeObjectId = null;\n            },\n            deleteAll: function deleteAll() {\n                exitCropOnAction();\n                _this.clearObjects();\n                _this.ui.changeHelpButtonEnabled('delete', false);\n                _this.ui.changeHelpButtonEnabled('deleteAll', false);\n            },\n            load: function load(file) {\n                if (!(0, _util.isSupportFileApi)()) {\n                    alert('This browser does not support file-api');\n                }\n\n                _this.ui.initializeImgUrl = URL.createObjectURL(file);\n                _this.loadImageFromFile(file).then(function (sizeValue) {\n                    exitCropOnAction();\n                    _this.clearUndoStack();\n                    _this.ui.activeMenuEvent();\n                    _this.ui.resizeEditor({ imageSize: sizeValue });\n                })['catch'](function (message) {\n                    return Promise.reject(message);\n                });\n            },\n            download: function download() {\n                var dataURL = _this.toDataURL();\n                var imageName = _this.getImageName();\n                var blob = void 0,\n                    type = void 0,\n                    w = void 0;\n\n                if ((0, _util.isSupportFileApi)() && window.saveAs) {\n                    blob = (0, _util.base64ToBlob)(dataURL);\n                    type = blob.type.split('/')[1];\n                    if (imageName.split('.').pop() !== type) {\n                        imageName += '.' + type;\n                    }\n                    saveAs(blob, imageName); // eslint-disable-line\n                } else {\n                    w = window.open();\n                    w.document.body.innerHTML = '<img src=\\'' + dataURL + '\\'>';\n                }\n            }\n        }, this._commonAction());\n    },\n\n\n    /**\n     * Icon Action\n     * @returns {Object} actions for ui icon\n     * @private\n     */\n    _iconAction: function _iconAction() {\n        var _this2 = this;\n\n        var cacheIconType = void 0;\n        var cacheIconColor = void 0;\n        var startX = void 0;\n        var startY = void 0;\n        var iconWidth = void 0;\n        var iconHeight = void 0;\n        var objId = void 0;\n\n        this.on({\n            'iconCreateResize': function iconCreateResize(_ref) {\n                var moveOriginPointer = _ref.moveOriginPointer;\n\n                var scaleX = (moveOriginPointer.x - startX) / iconWidth;\n                var scaleY = (moveOriginPointer.y - startY) / iconHeight;\n\n                _this2.setObjectPropertiesQuietly(objId, {\n                    scaleX: Math.abs(scaleX * 2),\n                    scaleY: Math.abs(scaleY * 2)\n                });\n            },\n            'iconCreateEnd': function iconCreateEnd() {\n                _this2.ui.icon.clearIconType();\n                _this2.changeSelectableAll(true);\n            }\n        });\n\n        var mouseDown = function mouseDown(e, originPointer) {\n            startX = originPointer.x;\n            startY = originPointer.y;\n\n            _this2.addIcon(cacheIconType, {\n                left: originPointer.x,\n                top: originPointer.y,\n                fill: cacheIconColor\n            }).then(function (obj) {\n                objId = obj.id;\n                iconWidth = obj.width;\n                iconHeight = obj.height;\n            });\n        };\n\n        return (0, _tuiCodeSnippet.extend)({\n            changeColor: function changeColor(color) {\n                if (_this2.activeObjectId) {\n                    _this2.changeIconColor(_this2.activeObjectId, color);\n                }\n            },\n            addIcon: function addIcon(iconType, iconColor) {\n                cacheIconType = iconType;\n                cacheIconColor = iconColor;\n                // this.readyAddIcon();\n                _this2.changeCursor('crosshair');\n                _this2.off('mousedown');\n                _this2.once('mousedown', mouseDown.bind(_this2));\n            },\n            cancelAddIcon: function cancelAddIcon() {\n                _this2.off('mousedown');\n                _this2.ui.icon.clearIconType();\n                _this2.changeSelectableAll(true);\n                _this2.changeCursor('default');\n            },\n            registDefalutIcons: function registDefalutIcons(type, path) {\n                var iconObj = {};\n                iconObj[type] = path;\n                _this2.registerIcons(iconObj);\n            },\n            registCustomIcon: function registCustomIcon(imgUrl, file) {\n                var imagetracer = new _imagetracer2.default();\n                imagetracer.imageToSVG(imgUrl, function (svgstr) {\n                    var _svgstr$match = svgstr.match(/path[^>]*d=\"([^\"]*)\"/),\n                        svgPath = _svgstr$match[1];\n\n                    var iconObj = {};\n                    iconObj[file.name] = svgPath;\n                    _this2.registerIcons(iconObj);\n                    _this2.addIcon(file.name, {\n                        left: 100,\n                        top: 100\n                    });\n                }, _imagetracer2.default.tracerDefaultOption());\n            }\n        }, this._commonAction());\n    },\n\n\n    /**\n     * Draw Action\n     * @returns {Object} actions for ui draw\n     * @private\n     */\n    _drawAction: function _drawAction() {\n        var _this3 = this;\n\n        return (0, _tuiCodeSnippet.extend)({\n            setDrawMode: function setDrawMode(type, settings) {\n                _this3.stopDrawingMode();\n                if (type === 'free') {\n                    _this3.startDrawingMode('FREE_DRAWING', settings);\n                } else {\n                    _this3.startDrawingMode('LINE_DRAWING', settings);\n                }\n            },\n            setColor: function setColor(color) {\n                _this3.setBrush({\n                    color: color\n                });\n            }\n        }, this._commonAction());\n    },\n\n\n    /**\n     * Mask Action\n     * @returns {Object} actions for ui mask\n     * @private\n     */\n    _maskAction: function _maskAction() {\n        var _this4 = this;\n\n        return (0, _tuiCodeSnippet.extend)({\n            loadImageFromURL: function loadImageFromURL(imgUrl, file) {\n                return _this4.loadImageFromURL(_this4.toDataURL(), 'FilterImage').then(function () {\n                    _this4.addImageObject(imgUrl).then(function () {\n                        URL.revokeObjectURL(file);\n                    });\n                });\n            },\n            applyFilter: function applyFilter() {\n                _this4.applyFilter('mask', {\n                    maskObjId: _this4.activeObjectId\n                });\n            }\n        }, this._commonAction());\n    },\n\n\n    /**\n     * Text Action\n     * @returns {Object} actions for ui text\n     * @private\n     */\n    _textAction: function _textAction() {\n        var _this5 = this;\n\n        return (0, _tuiCodeSnippet.extend)({\n            changeTextStyle: function changeTextStyle(styleObj, isSilent) {\n                if (_this5.activeObjectId) {\n                    _this5.changeTextStyle(_this5.activeObjectId, styleObj, isSilent);\n                }\n            }\n        }, this._commonAction());\n    },\n\n\n    /**\n     * Rotate Action\n     * @returns {Object} actions for ui rotate\n     * @private\n     */\n    _rotateAction: function _rotateAction() {\n        var _this6 = this;\n\n        return (0, _tuiCodeSnippet.extend)({\n            rotate: function rotate(angle, isSilent) {\n                _this6.rotate(angle, isSilent);\n                _this6.ui.resizeEditor();\n                _this6.ui.rotate.setRangeBarAngle('rotate', angle);\n            },\n            setAngle: function setAngle(angle, isSilent) {\n                _this6.setAngle(angle, isSilent);\n                _this6.ui.resizeEditor();\n                _this6.ui.rotate.setRangeBarAngle('setAngle', angle);\n            }\n        }, this._commonAction());\n    },\n\n\n    /**\n     * Shape Action\n     * @returns {Object} actions for ui shape\n     * @private\n     */\n    _shapeAction: function _shapeAction() {\n        var _this7 = this;\n\n        return (0, _tuiCodeSnippet.extend)({\n            changeShape: function changeShape(changeShapeObject, isSilent) {\n                if (_this7.activeObjectId) {\n                    _this7.changeShape(_this7.activeObjectId, changeShapeObject, isSilent);\n                }\n            },\n            setDrawingShape: function setDrawingShape(shapeType) {\n                _this7.setDrawingShape(shapeType);\n            }\n        }, this._commonAction());\n    },\n\n\n    /**\n     * Crop Action\n     * @returns {Object} actions for ui crop\n     * @private\n     */\n    _cropAction: function _cropAction() {\n        var _this8 = this;\n\n        return (0, _tuiCodeSnippet.extend)({\n            crop: function crop() {\n                var cropRect = _this8.getCropzoneRect();\n                if (cropRect) {\n                    _this8.crop(cropRect).then(function () {\n                        _this8.stopDrawingMode();\n                        _this8.ui.resizeEditor();\n                        _this8.ui.changeMenu('crop');\n                    })['catch'](function (message) {\n                        return Promise.reject(message);\n                    });\n                }\n            },\n            cancel: function cancel() {\n                _this8.stopDrawingMode();\n                _this8.ui.changeMenu('crop');\n            },\n            /* eslint-disable */\n            preset: function preset(presetType) {\n                switch (presetType) {\n                    case 'preset-square':\n                        _this8.setCropzoneRect(1 / 1);\n                        break;\n                    case 'preset-3-2':\n                        _this8.setCropzoneRect(3 / 2);\n                        break;\n                    case 'preset-4-3':\n                        _this8.setCropzoneRect(4 / 3);\n                        break;\n                    case 'preset-5-4':\n                        _this8.setCropzoneRect(5 / 4);\n                        break;\n                    case 'preset-7-5':\n                        _this8.setCropzoneRect(7 / 5);\n                        break;\n                    case 'preset-16-9':\n                        _this8.setCropzoneRect(16 / 9);\n                        break;\n                    default:\n                        _this8.setCropzoneRect();\n                        _this8.ui.crop.changeApplyButtonStatus(false);\n                        break;\n                }\n            }\n        }, this._commonAction());\n    },\n\n\n    /**\n     * Flip Action\n     * @returns {Object} actions for ui flip\n     * @private\n     */\n    _flipAction: function _flipAction() {\n        var _this9 = this;\n\n        return (0, _tuiCodeSnippet.extend)({\n            flip: function flip(flipType) {\n                return _this9[flipType]();\n            }\n        }, this._commonAction());\n    },\n\n\n    /**\n     * Filter Action\n     * @returns {Object} actions for ui filter\n     * @private\n     */\n    _filterAction: function _filterAction() {\n        var _this10 = this;\n\n        return (0, _tuiCodeSnippet.extend)({\n            applyFilter: function applyFilter(applying, type, options, isSilent) {\n\n                if (applying) {\n                    _this10.applyFilter(type, options, isSilent);\n                } else if (_this10.hasFilter(type)) {\n                    _this10.removeFilter(type);\n                }\n            }\n        }, this._commonAction());\n    },\n\n\n    /**\n     * Image Editor Event Observer\n     */\n    setReAction: function setReAction() {\n        var _this11 = this;\n\n        this.on({\n            undoStackChanged: function undoStackChanged(length) {\n                if (length) {\n                    _this11.ui.changeHelpButtonEnabled('undo', true);\n                    _this11.ui.changeHelpButtonEnabled('reset', true);\n                } else {\n                    _this11.ui.changeHelpButtonEnabled('undo', false);\n                    _this11.ui.changeHelpButtonEnabled('reset', false);\n                }\n                _this11.ui.resizeEditor();\n            },\n            redoStackChanged: function redoStackChanged(length) {\n                if (length) {\n                    _this11.ui.changeHelpButtonEnabled('redo', true);\n                } else {\n                    _this11.ui.changeHelpButtonEnabled('redo', false);\n                }\n                _this11.ui.resizeEditor();\n            },\n            /* eslint-disable complexity */\n            objectActivated: function objectActivated(obj) {\n                _this11.activeObjectId = obj.id;\n\n                _this11.ui.changeHelpButtonEnabled('delete', true);\n                _this11.ui.changeHelpButtonEnabled('deleteAll', true);\n\n                if (obj.type === 'cropzone') {\n                    _this11.ui.crop.changeApplyButtonStatus(true);\n                } else if (['rect', 'circle', 'triangle'].indexOf(obj.type) > -1) {\n                    _this11.stopDrawingMode();\n                    if (_this11.ui.submenu !== 'shape') {\n                        _this11.ui.changeMenu('shape', false, false);\n                    }\n                    _this11.ui.shape.setShapeStatus({\n                        strokeColor: obj.stroke,\n                        strokeWidth: obj.strokeWidth,\n                        fillColor: obj.fill\n                    });\n\n                    _this11.ui.shape.setMaxStrokeValue(Math.min(obj.width, obj.height));\n                } else if (obj.type === 'path' || obj.type === 'line') {\n                    if (_this11.ui.submenu !== 'draw') {\n                        _this11.ui.changeMenu('draw', false, false);\n                        _this11.ui.draw.changeStandbyMode();\n                    }\n                } else if (['i-text', 'text'].indexOf(obj.type) > -1) {\n                    if (_this11.ui.submenu !== 'text') {\n                        _this11.ui.changeMenu('text', false, false);\n                    }\n\n                    _this11.ui.text.setTextStyleStateOnAction(obj);\n                } else if (obj.type === 'icon') {\n                    _this11.stopDrawingMode();\n                    if (_this11.ui.submenu !== 'icon') {\n                        _this11.ui.changeMenu('icon', false, false);\n                    }\n                    _this11.ui.icon.setIconPickerColor(obj.fill);\n                }\n            },\n            /* eslint-enable complexity */\n            addText: function addText(pos) {\n                var _ui$text = _this11.ui.text,\n                    fill = _ui$text.textColor,\n                    fontSize = _ui$text.fontSize,\n                    fontStyle = _ui$text.fontStyle,\n                    fontWeight = _ui$text.fontWeight,\n                    underline = _ui$text.underline;\n\n                var fontFamily = 'Noto Sans';\n\n                _this11.addText('Double Click', {\n                    position: pos.originPosition,\n                    styles: { fill: fill, fontSize: fontSize, fontFamily: fontFamily, fontStyle: fontStyle, fontWeight: fontWeight, underline: underline }\n                }).then(function () {\n                    _this11.changeCursor('default');\n                });\n            },\n            addObjectAfter: function addObjectAfter(obj) {\n                if (['rect', 'circle', 'triangle'].indexOf(obj.type) > -1) {\n                    _this11.ui.shape.setMaxStrokeValue(Math.min(obj.width, obj.height));\n                    _this11.ui.shape.changeStandbyMode();\n                }\n            },\n            objectScaled: function objectScaled(obj) {\n                if (['i-text', 'text'].indexOf(obj.type) > -1) {\n                    _this11.ui.text.fontSize = (0, _util.toInteger)(obj.fontSize);\n                } else if (['rect', 'circle', 'triangle'].indexOf(obj.type) >= 0) {\n                    var width = obj.width,\n                        height = obj.height;\n\n                    var strokeValue = _this11.ui.shape.getStrokeValue();\n\n                    if (width < strokeValue) {\n                        _this11.ui.shape.setStrokeValue(width);\n                    }\n                    if (height < strokeValue) {\n                        _this11.ui.shape.setStrokeValue(height);\n                    }\n                }\n            },\n            selectionCleared: function selectionCleared() {\n                _this11.activeObjectId = null;\n                if (_this11.ui.submenu === 'text') {\n                    _this11.changeCursor('text');\n                } else if (_this11.ui.submenu !== 'draw' && _this11.ui.submenu !== 'crop') {\n                    _this11.stopDrawingMode();\n                }\n            }\n        });\n    },\n\n\n    /**\n     * Common Action\n     * @returns {Object} common actions for ui\n     * @private\n     */\n    _commonAction: function _commonAction() {\n        var _this12 = this;\n\n        return {\n            modeChange: function modeChange(menu) {\n                switch (menu) {\n                    case 'text':\n                        _this12._changeActivateMode('TEXT');\n                        break;\n                    case 'crop':\n                        _this12.startDrawingMode('CROPPER');\n                        break;\n                    case 'shape':\n                        _this12._changeActivateMode('SHAPE');\n                        _this12.setDrawingShape(_this12.ui.shape.type, _this12.ui.shape.options);\n                        break;\n                    default:\n                        break;\n                }\n            },\n            deactivateAll: this.deactivateAll.bind(this),\n            changeSelectableAll: this.changeSelectableAll.bind(this),\n            discardSelection: this.discardSelection.bind(this),\n            stopDrawingMode: this.stopDrawingMode.bind(this)\n        };\n    },\n\n\n    /**\n     * Mixin\n     * @param {ImageEditor} ImageEditor instance\n     */\n    mixin: function mixin(ImageEditor) {\n        (0, _tuiCodeSnippet.extend)(ImageEditor.prototype, this);\n    }\n};\n\n//# sourceURL=webpack://tui.ImageEditor/./src/js/action.js?");
+
+/***/ }),
+
+/***/ "./src/js/command/addIcon.js":
+/*!***********************************!*\
+  !*** ./src/js/command/addIcon.js ***!
+  \***********************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n\nvar _command = __webpack_require__(/*! ../factory/command */ \"./src/js/factory/command.js\");\n\nvar _command2 = _interopRequireDefault(_command);\n\nvar _util = __webpack_require__(/*! ../util */ \"./src/js/util.js\");\n\nvar _consts = __webpack_require__(/*! ../consts */ \"./src/js/consts.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar ICON = _consts.componentNames.ICON; /**\n                                         * @author NHN Ent. FE Development Team <dl_javascript@nhn.com>\n                                         * @fileoverview Add an icon\n                                         */\n\nvar command = {\n    name: _consts.commandNames.ADD_ICON,\n\n    /**\n     * Add an icon\n     * @param {Graphics} graphics - Graphics instance\n     * @param {string} type - Icon type ('arrow', 'cancel', custom icon name)\n     * @param {Object} options - Icon options\n     *      @param {string} [options.fill] - Icon foreground color\n     *      @param {string} [options.left] - Icon x position\n     *      @param {string} [options.top] - Icon y position\n     * @returns {Promise}\n     */\n    execute: function execute(graphics, type, options) {\n        var _this = this;\n\n        var iconComp = graphics.getComponent(ICON);\n\n        return iconComp.add(type, options).then(function (objectProps) {\n            _this.undoData.object = graphics.getObject(objectProps.id);\n\n            return objectProps;\n        });\n    },\n\n    /**\n     * @param {Graphics} graphics - Graphics instance\n     * @returns {Promise}\n     */\n    undo: function undo(graphics) {\n        graphics.remove(this.undoData.object);\n\n        return _util.Promise.resolve();\n    }\n};\n\n_command2.default.register(command);\n\nexports.default = command;\n\n//# sourceURL=webpack://tui.ImageEditor/./src/js/command/addIcon.js?");
+
+/***/ }),
+
+/***/ "./src/js/command/addImageObject.js":
+/*!******************************************!*\
+  !*** ./src/js/command/addImageObject.js ***!
+  \******************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n\nvar _command = __webpack_require__(/*! ../factory/command */ \"./src/js/factory/command.js\");\n\nvar _command2 = _interopRequireDefault(_command);\n\nvar _util = __webpack_require__(/*! ../util */ \"./src/js/util.js\");\n\nvar _consts = __webpack_require__(/*! ../consts */ \"./src/js/consts.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar command = {\n    name: _consts.commandNames.ADD_IMAGE_OBJECT,\n\n    /**\n     * Add an image object\n     * @param {Graphics} graphics - Graphics instance\n     * @param {string} imgUrl - Image url to make object\n     * @returns {Promise}\n     */\n    execute: function execute(graphics, imgUrl) {\n        var _this = this;\n\n        return graphics.addImageObject(imgUrl).then(function (objectProps) {\n            _this.undoData.object = graphics.getObject(objectProps.id);\n\n            return objectProps;\n        });\n    },\n\n    /**\n     * @param {Graphics} graphics - Graphics instance\n     * @returns {Promise}\n     */\n    undo: function undo(graphics) {\n        graphics.remove(this.undoData.object);\n\n        return _util.Promise.resolve();\n    }\n}; /**\n    * @author NHN Ent. FE Development Team <dl_javascript@nhn.com>\n    * @fileoverview Add an image object\n    */\n\n\n_command2.default.register(command);\n\nexports.default = command;\n\n//# sourceURL=webpack://tui.ImageEditor/./src/js/command/addImageObject.js?");
+
+/***/ }),
+
+/***/ "./src/js/command/addObject.js":
+/*!*************************************!*\
+  !*** ./src/js/command/addObject.js ***!
+  \*************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n\nvar _command = __webpack_require__(/*! ../factory/command */ \"./src/js/factory/command.js\");\n\nvar _command2 = _interopRequireDefault(_command);\n\nvar _util = __webpack_require__(/*! ../util */ \"./src/js/util.js\");\n\nvar _consts = __webpack_require__(/*! ../consts */ \"./src/js/consts.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar command = {\n    name: _consts.commandNames.ADD_OBJECT,\n\n    /**\n     * Add an object\n     * @param {Graphics} graphics - Graphics instance\n     * @param {Object} object - Fabric object\n     * @returns {Promise}\n     */\n    execute: function execute(graphics, object) {\n        return new _util.Promise(function (resolve, reject) {\n            if (!graphics.contains(object)) {\n                graphics.add(object);\n                resolve(object);\n            } else {\n                reject(_consts.rejectMessages.addedObject);\n            }\n        });\n    },\n\n    /**\n     * @param {Graphics} graphics - Graphics instance\n     * @param {Object} object - Fabric object\n     * @returns {Promise}\n     */\n    undo: function undo(graphics, object) {\n        return new _util.Promise(function (resolve, reject) {\n            if (graphics.contains(object)) {\n                graphics.remove(object);\n                resolve(object);\n            } else {\n                reject(_consts.rejectMessages.noObject);\n            }\n        });\n    }\n}; /**\n    * @author NHN Ent. FE Development Team <dl_javascript@nhn.com>\n    * @fileoverview Add an object\n    */\n\n\n_command2.default.register(command);\n\nexports.default = command;\n\n//# sourceURL=webpack://tui.ImageEditor/./src/js/command/addObject.js?");
+
+/***/ }),
+
+/***/ "./src/js/command/addShape.js":
+/*!************************************!*\
+  !*** ./src/js/command/addShape.js ***!
+  \************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n\nvar _command = __webpack_require__(/*! ../factory/command */ \"./src/js/factory/command.js\");\n\nvar _command2 = _interopRequireDefault(_command);\n\nvar _util = __webpack_require__(/*! ../util */ \"./src/js/util.js\");\n\nvar _consts = __webpack_require__(/*! ../consts */ \"./src/js/consts.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar SHAPE = _consts.componentNames.SHAPE; /**\n                                           * @author NHN Ent. FE Development Team <dl_javascript@nhn.com>\n                                           * @fileoverview Add a shape\n                                           */\n\nvar command = {\n    name: _consts.commandNames.ADD_SHAPE,\n\n    /**\n     * Add a shape\n     * @param {Graphics} graphics - Graphics instance\n     * @param {string} type - Shape type (ex: 'rect', 'circle', 'triangle')\n     * @param {Object} options - Shape options\n     *      @param {string} [options.fill] - Shape foreground color (ex: '#fff', 'transparent')\n     *      @param {string} [options.stroke] - Shape outline color\n     *      @param {number} [options.strokeWidth] - Shape outline width\n     *      @param {number} [options.width] - Width value (When type option is 'rect', this options can use)\n     *      @param {number} [options.height] - Height value (When type option is 'rect', this options can use)\n     *      @param {number} [options.rx] - Radius x value (When type option is 'circle', this options can use)\n     *      @param {number} [options.ry] - Radius y value (When type option is 'circle', this options can use)\n     *      @param {number} [options.left] - Shape x position\n     *      @param {number} [options.top] - Shape y position\n     *      @param {number} [options.isRegular] - Whether resizing shape has 1:1 ratio or not\n     * @returns {Promise}\n     */\n    execute: function execute(graphics, type, options) {\n        var _this = this;\n\n        var shapeComp = graphics.getComponent(SHAPE);\n\n        return shapeComp.add(type, options).then(function (objectProps) {\n            _this.undoData.object = graphics.getObject(objectProps.id);\n\n            return objectProps;\n        });\n    },\n\n    /**\n     * @param {Graphics} graphics - Graphics instance\n     * @returns {Promise}\n     */\n    undo: function undo(graphics) {\n        graphics.remove(this.undoData.object);\n\n        return _util.Promise.resolve();\n    }\n};\n\n_command2.default.register(command);\n\nexports.default = command;\n\n//# sourceURL=webpack://tui.ImageEditor/./src/js/command/addShape.js?");
+
+/***/ }),
+
+/***/ "./src/js/command/addText.js":
+/*!***********************************!*\
+  !*** ./src/js/command/addText.js ***!
+  \***********************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n\nvar _command = __webpack_require__(/*! ../factory/command */ \"./src/js/factory/command.js\");\n\nvar _command2 = _interopRequireDefault(_command);\n\nvar _util = __webpack_require__(/*! ../util */ \"./src/js/util.js\");\n\nvar _consts = __webpack_require__(/*! ../consts */ \"./src/js/consts.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar TEXT = _consts.componentNames.TEXT; /**\n                                         * @author NHN Ent. FE Development Team <dl_javascript@nhn.com>\n                                         * @fileoverview Add a text object\n                                         */\n\nvar command = {\n    name: _consts.commandNames.ADD_TEXT,\n\n    /**\n     * Add a text object\n     * @param {Graphics} graphics - Graphics instance\n     * @param {string} text - Initial input text\n     * @param {Object} [options] Options for text styles\n     *     @param {Object} [options.styles] Initial styles\n     *         @param {string} [options.styles.fill] Color\n     *         @param {string} [options.styles.fontFamily] Font type for text\n     *         @param {number} [options.styles.fontSize] Size\n     *         @param {string} [options.styles.fontStyle] Type of inclination (normal / italic)\n     *         @param {string} [options.styles.fontWeight] Type of thicker or thinner looking (normal / bold)\n     *         @param {string} [options.styles.textAlign] Type of text align (left / center / right)\n     *         @param {string} [options.styles.textDecoration] Type of line (underline / line-through / overline)\n     *     @param {{x: number, y: number}} [options.position] - Initial position\n     * @returns {Promise}\n     */\n    execute: function execute(graphics, text, options) {\n        var _this = this;\n\n        var textComp = graphics.getComponent(TEXT);\n\n        if (this.undoData.object) {\n            var undoObject = this.undoData.object;\n\n            return new _util.Promise(function (resolve, reject) {\n                if (!graphics.contains(undoObject)) {\n                    graphics.add(undoObject);\n                    resolve(undoObject);\n                } else {\n                    reject(_consts.rejectMessages.redo);\n                }\n            });\n        }\n\n        return textComp.add(text, options).then(function (objectProps) {\n            var id = objectProps.id;\n\n            var textObject = graphics.getObject(id);\n\n            _this.undoData.object = textObject;\n\n            return objectProps;\n        });\n    },\n\n    /**\n     * @param {Graphics} graphics - Graphics instance\n     * @returns {Promise}\n     */\n    undo: function undo(graphics) {\n        graphics.remove(this.undoData.object);\n\n        return _util.Promise.resolve();\n    }\n};\n\n_command2.default.register(command);\n\nexports.default = command;\n\n//# sourceURL=webpack://tui.ImageEditor/./src/js/command/addText.js?");
+
+/***/ }),
+
+/***/ "./src/js/command/applyFilter.js":
+/*!***************************************!*\
+  !*** ./src/js/command/applyFilter.js ***!
+  \***************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n\nvar _tuiCodeSnippet = __webpack_require__(/*! tui-code-snippet */ \"tui-code-snippet\");\n\nvar _tuiCodeSnippet2 = _interopRequireDefault(_tuiCodeSnippet);\n\nvar _command = __webpack_require__(/*! ../factory/command */ \"./src/js/factory/command.js\");\n\nvar _command2 = _interopRequireDefault(_command);\n\nvar _consts = __webpack_require__(/*! ../consts */ \"./src/js/consts.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar FILTER = _consts.componentNames.FILTER;\n\n/**\n * Chched data for undo\n * @type {Object}\n */\n/**\n * @author NHN Ent. FE Development Team <dl_javascript@nhn.com>\n * @fileoverview Apply a filter into an image\n */\n\nvar chchedUndoDataForSilent = null;\n\n/**\n * Make undoData\n * @param {string} type - Filter type \n * @param {Object} prevfilterOption - prev Filter options\n * @param {Object} options - Filter options\n * @returns {object} - undo data\n */\nfunction makeUndoData(type, prevfilterOption, options) {\n    var undoData = {};\n\n    if (type === 'mask') {\n        undoData.object = options.mask;\n    }\n\n    undoData.options = prevfilterOption;\n\n    return undoData;\n}\n\nvar command = {\n    name: _consts.commandNames.APPLY_FILTER,\n\n    /**\n     * Apply a filter into an image\n     * @param {Graphics} graphics - Graphics instance\n     * @param {string} type - Filter type\n     * @param {Object} options - Filter options\n     *  @param {number} options.maskObjId - masking image object id\n     * @param {boolean} isSilent - is silent execution or not\n     * @returns {Promise}\n     */\n    execute: function execute(graphics, type, options, isSilent) {\n        var filterComp = graphics.getComponent(FILTER);\n\n        if (type === 'mask') {\n            var maskObj = graphics.getObject(options.maskObjId);\n\n            if (!(maskObj && maskObj.isType('image'))) {\n                return Promise.reject(_consts.rejectMessages.invalidParameters);\n            }\n\n            _tuiCodeSnippet2.default.extend(options, { mask: maskObj });\n            graphics.remove(options.mask);\n        }\n        if (!this.isRedo) {\n            var prevfilterOption = filterComp.getOptions(type);\n            var undoData = makeUndoData(type, prevfilterOption, options);\n\n            chchedUndoDataForSilent = this.setUndoData(undoData, chchedUndoDataForSilent, isSilent);\n        }\n\n        return filterComp.add(type, options);\n    },\n\n    /**\n     * @param {Graphics} graphics - Graphics instance\n     * @param {string} type - Filter type\n     * @returns {Promise}\n     */\n    undo: function undo(graphics, type) {\n        var filterComp = graphics.getComponent(FILTER);\n\n        if (type === 'mask') {\n            var mask = this.undoData.object;\n            graphics.add(mask);\n            graphics.setActiveObject(mask);\n\n            return filterComp.remove(type);\n        }\n\n        // options changed case\n        if (this.undoData.options) {\n            return filterComp.add(type, this.undoData.options);\n        }\n\n        // filter added case\n        return filterComp.remove(type);\n    }\n};\n\n_command2.default.register(command);\n\nexports.default = command;\n\n//# sourceURL=webpack://tui.ImageEditor/./src/js/command/applyFilter.js?");
+
+/***/ }),
+
+/***/ "./src/js/command/changeIconColor.js":
+/*!*******************************************!*\
+  !*** ./src/js/command/changeIconColor.js ***!
+  \*******************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n\nvar _command = __webpack_require__(/*! ../factory/command */ \"./src/js/factory/command.js\");\n\nvar _command2 = _interopRequireDefault(_command);\n\nvar _util = __webpack_require__(/*! ../util */ \"./src/js/util.js\");\n\nvar _consts = __webpack_require__(/*! ../consts */ \"./src/js/consts.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar ICON = _consts.componentNames.ICON; /**\n                                         * @author NHN Ent. FE Development Team <dl_javascript@nhn.com>\n                                         * @fileoverview Change icon color\n                                         */\n\nvar command = {\n    name: _consts.commandNames.CHANGE_ICON_COLOR,\n\n    /**\n     * Change icon color\n     * @param {Graphics} graphics - Graphics instance\n     * @param {number} id - object id\n     * @param {string} color - Color for icon\n     * @returns {Promise}\n     */\n    execute: function execute(graphics, id, color) {\n        var _this = this;\n\n        return new _util.Promise(function (resolve, reject) {\n            var iconComp = graphics.getComponent(ICON);\n            var targetObj = graphics.getObject(id);\n\n            if (!targetObj) {\n                reject(_consts.rejectMessages.noObject);\n            }\n\n            _this.undoData.object = targetObj;\n            _this.undoData.color = iconComp.getColor(targetObj);\n            iconComp.setColor(color, targetObj);\n            resolve();\n        });\n    },\n\n    /**\n     * @param {Graphics} graphics - Graphics instance\n     * @returns {Promise}\n     */\n    undo: function undo(graphics) {\n        var iconComp = graphics.getComponent(ICON);\n        var _undoData = this.undoData,\n            icon = _undoData.object,\n            color = _undoData.color;\n\n\n        iconComp.setColor(color, icon);\n\n        return _util.Promise.resolve();\n    }\n};\n\n_command2.default.register(command);\n\nexports.default = command;\n\n//# sourceURL=webpack://tui.ImageEditor/./src/js/command/changeIconColor.js?");
+
+/***/ }),
+
+/***/ "./src/js/command/changeShape.js":
+/*!***************************************!*\
+  !*** ./src/js/command/changeShape.js ***!
+  \***************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n\nvar _tuiCodeSnippet = __webpack_require__(/*! tui-code-snippet */ \"tui-code-snippet\");\n\nvar _tuiCodeSnippet2 = _interopRequireDefault(_tuiCodeSnippet);\n\nvar _util = __webpack_require__(/*! ../util */ \"./src/js/util.js\");\n\nvar _command = __webpack_require__(/*! ../factory/command */ \"./src/js/factory/command.js\");\n\nvar _command2 = _interopRequireDefault(_command);\n\nvar _consts = __webpack_require__(/*! ../consts */ \"./src/js/consts.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * @author NHN Ent. FE Development Team <dl_javascript@nhn.com>\n * @fileoverview change a shape\n */\nvar SHAPE = _consts.componentNames.SHAPE;\n\n/**\n * Chched data for undo\n * @type {Object}\n */\n\nvar chchedUndoDataForSilent = null;\n\n/**\n * Make undoData\n * @param {object} options - shape options\n * @param {Component} targetObj - shape component\n * @returns {object} - undo data\n */\nfunction makeUndoData(options, targetObj) {\n    var undoData = {\n        object: targetObj,\n        options: {}\n    };\n\n    _tuiCodeSnippet2.default.forEachOwnProperties(options, function (value, key) {\n        undoData.options[key] = targetObj[key];\n    });\n\n    return undoData;\n}\n\nvar command = {\n    name: _consts.commandNames.CHANGE_SHAPE,\n\n    /**\n     * Change a shape\n     * @param {Graphics} graphics - Graphics instance\n     * @param {number} id - object id\n     * @param {Object} options - Shape options\n     *      @param {string} [options.fill] - Shape foreground color (ex: '#fff', 'transparent')\n     *      @param {string} [options.stroke] - Shape outline color\n     *      @param {number} [options.strokeWidth] - Shape outline width\n     *      @param {number} [options.width] - Width value (When type option is 'rect', this options can use)\n     *      @param {number} [options.height] - Height value (When type option is 'rect', this options can use)\n     *      @param {number} [options.rx] - Radius x value (When type option is 'circle', this options can use)\n     *      @param {number} [options.ry] - Radius y value (When type option is 'circle', this options can use)\n     *      @param {number} [options.left] - Shape x position\n     *      @param {number} [options.top] - Shape y position\n     *      @param {number} [options.isRegular] - Whether resizing shape has 1:1 ratio or not\n     * @param {boolean} isSilent - is silent execution or not\n     * @returns {Promise}\n     */\n    execute: function execute(graphics, id, options, isSilent) {\n        var shapeComp = graphics.getComponent(SHAPE);\n        var targetObj = graphics.getObject(id);\n\n        if (!targetObj) {\n            return _util.Promise.reject(_consts.rejectMessages.noObject);\n        }\n\n        if (!this.isRedo) {\n            var undoData = makeUndoData(options, targetObj);\n\n            chchedUndoDataForSilent = this.setUndoData(undoData, chchedUndoDataForSilent, isSilent);\n        }\n\n        return shapeComp.change(targetObj, options);\n    },\n\n    /**\n     * @param {Graphics} graphics - Graphics instance\n     * @returns {Promise}\n     */\n    undo: function undo(graphics) {\n        var shapeComp = graphics.getComponent(SHAPE);\n        var _undoData = this.undoData,\n            shape = _undoData.object,\n            options = _undoData.options;\n\n\n        return shapeComp.change(shape, options);\n    }\n};\n\n_command2.default.register(command);\n\nexports.default = command;\n\n//# sourceURL=webpack://tui.ImageEditor/./src/js/command/changeShape.js?");
+
+/***/ }),
+
+/***/ "./src/js/command/changeText.js":
+/*!**************************************!*\
+  !*** ./src/js/command/changeText.js ***!
+  \**************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n\nvar _command = __webpack_require__(/*! ../factory/command */ \"./src/js/factory/command.js\");\n\nvar _command2 = _interopRequireDefault(_command);\n\nvar _util = __webpack_require__(/*! ../util */ \"./src/js/util.js\");\n\nvar _consts = __webpack_require__(/*! ../consts */ \"./src/js/consts.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar TEXT = _consts.componentNames.TEXT; /**\n                                         * @author NHN Ent. FE Development Team <dl_javascript@nhn.com>\n                                         * @fileoverview Change a text\n                                         */\n\nvar command = {\n    name: _consts.commandNames.CHANGE_TEXT,\n\n    /**\n     * Change a text\n     * @param {Graphics} graphics - Graphics instance\n     * @param {number} id - object id\n     * @param {string} text - Changing text\n     * @returns {Promise}\n     */\n    execute: function execute(graphics, id, text) {\n        var textComp = graphics.getComponent(TEXT);\n        var targetObj = graphics.getObject(id);\n\n        if (!targetObj) {\n            return _util.Promise.reject(_consts.rejectMessages.noObject);\n        }\n\n        this.undoData.object = targetObj;\n        this.undoData.text = textComp.getText(targetObj);\n\n        return textComp.change(targetObj, text);\n    },\n\n    /**\n     * @param {Graphics} graphics - Graphics instance\n     * @returns {Promise}\n     */\n    undo: function undo(graphics) {\n        var textComp = graphics.getComponent(TEXT);\n        var _undoData = this.undoData,\n            textObj = _undoData.object,\n            text = _undoData.text;\n\n\n        return textComp.change(textObj, text);\n    }\n};\n\n_command2.default.register(command);\n\nexports.default = command;\n\n//# sourceURL=webpack://tui.ImageEditor/./src/js/command/changeText.js?");
+
+/***/ }),
+
+/***/ "./src/js/command/changeTextStyle.js":
+/*!*******************************************!*\
+  !*** ./src/js/command/changeTextStyle.js ***!
+  \*******************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n\nvar _tuiCodeSnippet = __webpack_require__(/*! tui-code-snippet */ \"tui-code-snippet\");\n\nvar _tuiCodeSnippet2 = _interopRequireDefault(_tuiCodeSnippet);\n\nvar _command = __webpack_require__(/*! ../factory/command */ \"./src/js/factory/command.js\");\n\nvar _command2 = _interopRequireDefault(_command);\n\nvar _util = __webpack_require__(/*! ../util */ \"./src/js/util.js\");\n\nvar _consts = __webpack_require__(/*! ../consts */ \"./src/js/consts.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * @author NHN Ent. FE Development Team <dl_javascript@nhn.com>\n * @fileoverview Change text styles\n */\nvar TEXT = _consts.componentNames.TEXT;\n\n/**\n * Chched data for undo\n * @type {Object}\n */\n\nvar chchedUndoDataForSilent = null;\n\n/**\n * Make undoData\n * @param {object} styles - text styles\n * @param {Component} targetObj - text component\n * @returns {object} - undo data\n */\nfunction makeUndoData(styles, targetObj) {\n    var undoData = {\n        object: targetObj,\n        styles: {}\n    };\n    _tuiCodeSnippet2.default.forEachOwnProperties(styles, function (value, key) {\n        var undoValue = targetObj[key];\n        undoData.styles[key] = undoValue;\n    });\n\n    return undoData;\n}\n\nvar command = {\n    name: _consts.commandNames.CHANGE_TEXT_STYLE,\n\n    /**\n     * Change text styles\n     * @param {Graphics} graphics - Graphics instance\n     * @param {number} id - object id\n     * @param {Object} styles - text styles\n     *     @param {string} [styles.fill] Color\n     *     @param {string} [styles.fontFamily] Font type for text\n     *     @param {number} [styles.fontSize] Size\n     *     @param {string} [styles.fontStyle] Type of inclination (normal / italic)\n     *     @param {string} [styles.fontWeight] Type of thicker or thinner looking (normal / bold)\n     *     @param {string} [styles.textAlign] Type of text align (left / center / right)\n     *     @param {string} [styles.textDecoration] Type of line (underline / line-through / overline)\n     * @param {boolean} isSilent - is silent execution or not\n     * @returns {Promise}\n     */\n    execute: function execute(graphics, id, styles, isSilent) {\n        var textComp = graphics.getComponent(TEXT);\n        var targetObj = graphics.getObject(id);\n\n        if (!targetObj) {\n            return _util.Promise.reject(_consts.rejectMessages.noObject);\n        }\n        if (!this.isRedo) {\n            var undoData = makeUndoData(styles, targetObj);\n\n            chchedUndoDataForSilent = this.setUndoData(undoData, chchedUndoDataForSilent, isSilent);\n        }\n\n        return textComp.setStyle(targetObj, styles);\n    },\n\n    /**\n     * @param {Graphics} graphics - Graphics instance\n     * @returns {Promise}\n     */\n    undo: function undo(graphics) {\n        var textComp = graphics.getComponent(TEXT);\n        var _undoData = this.undoData,\n            textObj = _undoData.object,\n            styles = _undoData.styles;\n\n\n        return textComp.setStyle(textObj, styles);\n    }\n};\n\n_command2.default.register(command);\n\nexports.default = command;\n\n//# sourceURL=webpack://tui.ImageEditor/./src/js/command/changeTextStyle.js?");
+
+/***/ }),
+
+/***/ "./src/js/command/clearObjects.js":
+/*!****************************************!*\
+  !*** ./src/js/command/clearObjects.js ***!
+  \****************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n\nvar _command = __webpack_require__(/*! ../factory/command */ \"./src/js/factory/command.js\");\n\nvar _command2 = _interopRequireDefault(_command);\n\nvar _util = __webpack_require__(/*! ../util */ \"./src/js/util.js\");\n\nvar _consts = __webpack_require__(/*! ../consts */ \"./src/js/consts.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar command = {\n    name: _consts.commandNames.CLEAR_OBJECTS,\n\n    /**\n     * Clear all objects without background (main) image\n     * @param {Graphics} graphics - Graphics instance\n     * @returns {Promise}\n     */\n    execute: function execute(graphics) {\n        var _this = this;\n\n        return new _util.Promise(function (resolve) {\n            _this.undoData.objects = graphics.removeAll();\n            resolve();\n        });\n    },\n\n    /**\n     * @param {Graphics} graphics - Graphics instance\n     * @returns {Promise}\n     * @ignore\n     */\n    undo: function undo(graphics) {\n        graphics.add(this.undoData.objects);\n\n        return _util.Promise.resolve();\n    }\n}; /**\n    * @author NHN Ent. FE Development Team <dl_javascript@nhn.com>\n    * @fileoverview Clear all objects\n    */\n\n\n_command2.default.register(command);\n\nexports.default = command;\n\n//# sourceURL=webpack://tui.ImageEditor/./src/js/command/clearObjects.js?");
+
+/***/ }),
+
+/***/ "./src/js/command/flip.js":
+/*!********************************!*\
+  !*** ./src/js/command/flip.js ***!
+  \********************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _command = __webpack_require__(/*! ../factory/command */ \"./src/js/factory/command.js\");\n\nvar _command2 = _interopRequireDefault(_command);\n\nvar _consts = __webpack_require__(/*! ../consts */ \"./src/js/consts.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * @author NHN Ent. FE Development Team <dl_javascript@nhn.com>\n * @fileoverview Flip an image\n */\nvar FLIP = _consts.componentNames.FLIP;\n\n\nvar command = {\n  name: _consts.commandNames.FLIP_IMAGE,\n\n  /**\n   * flip an image\n   * @param {Graphics} graphics - Graphics instance\n   * @param {string} type - 'flipX' or 'flipY' or 'reset'\n   * @returns {Promise}\n   */\n  execute: function execute(graphics, type) {\n    var flipComp = graphics.getComponent(FLIP);\n\n    this.undoData.setting = flipComp.getCurrentSetting();\n\n    return flipComp[type]();\n  },\n\n  /**\n   * @param {Graphics} graphics - Graphics instance\n   * @returns {Promise}\n   */\n  undo: function undo(graphics) {\n    var flipComp = graphics.getComponent(FLIP);\n\n    return flipComp.set(this.undoData.setting);\n  }\n};\n\n_command2.default.register(command);\n\nexports.default = command;\n\n//# sourceURL=webpack://tui.ImageEditor/./src/js/command/flip.js?");
+
+/***/ }),
+
+/***/ "./src/js/command/loadImage.js":
+/*!*************************************!*\
+  !*** ./src/js/command/loadImage.js ***!
+  \*************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n\nvar _command = __webpack_require__(/*! ../factory/command */ \"./src/js/factory/command.js\");\n\nvar _command2 = _interopRequireDefault(_command);\n\nvar _consts = __webpack_require__(/*! ../consts */ \"./src/js/consts.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * @author NHN Ent. FE Development Team <dl_javascript@nhn.com>\n * @fileoverview Load a background (main) image\n */\nvar IMAGE_LOADER = _consts.componentNames.IMAGE_LOADER;\n\n\nvar command = {\n    name: _consts.commandNames.LOAD_IMAGE,\n\n    /**\n     * Load a background (main) image\n     * @param {Graphics} graphics - Graphics instance\n     * @param {string} imageName - Image name\n     * @param {string} imgUrl - Image Url\n     * @returns {Promise}\n     */\n    execute: function execute(graphics, imageName, imgUrl) {\n        var loader = graphics.getComponent(IMAGE_LOADER);\n        var prevImage = loader.getCanvasImage();\n        var prevImageWidth = prevImage ? prevImage.width : 0;\n        var prevImageHeight = prevImage ? prevImage.height : 0;\n        var objects = graphics.removeAll(true).filter(function (objectItem) {\n            return objectItem.type !== 'cropzone';\n        });\n\n        objects.forEach(function (objectItem) {\n            objectItem.evented = true;\n        });\n\n        this.undoData = {\n            name: loader.getImageName(),\n            image: prevImage,\n            objects: objects\n        };\n\n        return loader.load(imageName, imgUrl).then(function (newImage) {\n            return {\n                oldWidth: prevImageWidth,\n                oldHeight: prevImageHeight,\n                newWidth: newImage.width,\n                newHeight: newImage.height\n            };\n        });\n    },\n\n\n    /**\n     * @param {Graphics} graphics - Graphics instance\n     * @returns {Promise}\n     */\n    undo: function undo(graphics) {\n        var loader = graphics.getComponent(IMAGE_LOADER);\n        var _undoData = this.undoData,\n            objects = _undoData.objects,\n            name = _undoData.name,\n            image = _undoData.image;\n\n\n        graphics.removeAll(true);\n        graphics.add(objects);\n\n        return loader.load(name, image);\n    }\n};\n\n_command2.default.register(command);\n\nexports.default = command;\n\n//# sourceURL=webpack://tui.ImageEditor/./src/js/command/loadImage.js?");
+
+/***/ }),
+
+/***/ "./src/js/command/removeFilter.js":
+/*!****************************************!*\
+  !*** ./src/js/command/removeFilter.js ***!
+  \****************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _command = __webpack_require__(/*! ../factory/command */ \"./src/js/factory/command.js\");\n\nvar _command2 = _interopRequireDefault(_command);\n\nvar _consts = __webpack_require__(/*! ../consts */ \"./src/js/consts.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * @author NHN Ent. FE Development Team <dl_javascript@nhn.com>\n * @fileoverview Remove a filter from an image\n */\nvar FILTER = _consts.componentNames.FILTER;\n\n\nvar command = {\n  name: _consts.commandNames.REMOVE_FILTER,\n\n  /**\n   * Remove a filter from an image\n   * @param {Graphics} graphics - Graphics instance\n   * @param {string} type - Filter type\n   * @returns {Promise}\n   */\n  execute: function execute(graphics, type) {\n    var filterComp = graphics.getComponent(FILTER);\n\n    this.undoData.options = filterComp.getOptions(type);\n\n    return filterComp.remove(type);\n  },\n\n  /**\n   * @param {Graphics} graphics - Graphics instance\n   * @param {string} type - Filter type\n   * @returns {Promise}\n   */\n  undo: function undo(graphics, type) {\n    var filterComp = graphics.getComponent(FILTER);\n    var options = this.undoData.options;\n\n\n    return filterComp.add(type, options);\n  }\n};\n\n_command2.default.register(command);\n\nexports.default = command;\n\n//# sourceURL=webpack://tui.ImageEditor/./src/js/command/removeFilter.js?");
+
+/***/ }),
+
+/***/ "./src/js/command/removeObject.js":
+/*!****************************************!*\
+  !*** ./src/js/command/removeObject.js ***!
+  \****************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n\nvar _command = __webpack_require__(/*! ../factory/command */ \"./src/js/factory/command.js\");\n\nvar _command2 = _interopRequireDefault(_command);\n\nvar _util = __webpack_require__(/*! ../util */ \"./src/js/util.js\");\n\nvar _consts = __webpack_require__(/*! ../consts */ \"./src/js/consts.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar command = {\n    name: _consts.commandNames.REMOVE_OBJECT,\n\n    /**\n     * Remove an object\n     * @param {Graphics} graphics - Graphics instance\n     * @param {number} id - object id\n     * @returns {Promise}\n     */\n    execute: function execute(graphics, id) {\n        var _this = this;\n\n        return new _util.Promise(function (resolve, reject) {\n            _this.undoData.objects = graphics.removeObjectById(id);\n            if (_this.undoData.objects.length) {\n                resolve();\n            } else {\n                reject(_consts.rejectMessages.noObject);\n            }\n        });\n    },\n\n    /**\n     * @param {Graphics} graphics - Graphics instance\n     * @returns {Promise}\n     */\n    undo: function undo(graphics) {\n        graphics.add(this.undoData.objects);\n\n        return _util.Promise.resolve();\n    }\n}; /**\n    * @author NHN Ent. FE Development Team <dl_javascript@nhn.com>\n    * @fileoverview Remove an object\n    */\n\n\n_command2.default.register(command);\n\nexports.default = command;\n\n//# sourceURL=webpack://tui.ImageEditor/./src/js/command/removeObject.js?");
+
+/***/ }),
+
+/***/ "./src/js/command/resizeCanvasDimension.js":
+/*!*************************************************!*\
+  !*** ./src/js/command/resizeCanvasDimension.js ***!
+  \*************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n\nvar _command = __webpack_require__(/*! ../factory/command */ \"./src/js/factory/command.js\");\n\nvar _command2 = _interopRequireDefault(_command);\n\nvar _util = __webpack_require__(/*! ../util */ \"./src/js/util.js\");\n\nvar _consts = __webpack_require__(/*! ../consts */ \"./src/js/consts.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar command = {\n    name: _consts.commandNames.RESIZE_CANVAS_DIMENSION,\n\n    /**\n     * resize the canvas with given dimension\n     * @param {Graphics} graphics - Graphics instance\n     * @param {{width: number, height: number}} dimension - Max width & height\n     * @returns {Promise}\n     */\n    execute: function execute(graphics, dimension) {\n        var _this = this;\n\n        return new _util.Promise(function (resolve) {\n            _this.undoData.size = {\n                width: graphics.cssMaxWidth,\n                height: graphics.cssMaxHeight\n            };\n\n            graphics.setCssMaxDimension(dimension);\n            graphics.adjustCanvasDimension();\n            resolve();\n        });\n    },\n\n    /**\n     * @param {Graphics} graphics - Graphics instance\n     * @returns {Promise}\n     */\n    undo: function undo(graphics) {\n        graphics.setCssMaxDimension(this.undoData.size);\n        graphics.adjustCanvasDimension();\n\n        return _util.Promise.resolve();\n    }\n}; /**\n    * @author NHN Ent. FE Development Team <dl_javascript@nhn.com>\n    * @fileoverview Resize a canvas\n    */\n\n\n_command2.default.register(command);\n\nexports.default = command;\n\n//# sourceURL=webpack://tui.ImageEditor/./src/js/command/resizeCanvasDimension.js?");
+
+/***/ }),
+
+/***/ "./src/js/command/rotate.js":
+/*!**********************************!*\
+  !*** ./src/js/command/rotate.js ***!
+  \**********************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n\nvar _command = __webpack_require__(/*! ../factory/command */ \"./src/js/factory/command.js\");\n\nvar _command2 = _interopRequireDefault(_command);\n\nvar _consts = __webpack_require__(/*! ../consts */ \"./src/js/consts.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * @author NHN Ent. FE Development Team <dl_javascript@nhn.com>\n * @fileoverview Rotate an image\n */\nvar ROTATION = _consts.componentNames.ROTATION;\n\n/**\n * Chched data for undo\n * @type {Object}\n */\n\nvar chchedUndoDataForSilent = null;\n\n/**\n * Make undo data\n * @param {Component} rotationComp - rotation component\n * @returns {object} - undodata\n */\nfunction makeUndoData(rotationComp) {\n    return {\n        angle: rotationComp.getCurrentAngle()\n    };\n}\n\nvar command = {\n    name: _consts.commandNames.ROTATE_IMAGE,\n\n    /**\n     * Rotate an image\n     * @param {Graphics} graphics - Graphics instance\n     * @param {string} type - 'rotate' or 'setAngle'\n     * @param {number} angle - angle value (degree)\n     * @param {boolean} isSilent - is silent execution or not\n     * @returns {Promise}\n     */\n    execute: function execute(graphics, type, angle, isSilent) {\n        var rotationComp = graphics.getComponent(ROTATION);\n\n        if (!this.isRedo) {\n            var undoData = makeUndoData(rotationComp);\n\n            chchedUndoDataForSilent = this.setUndoData(undoData, chchedUndoDataForSilent, isSilent);\n        }\n\n        return rotationComp[type](angle);\n    },\n\n    /**\n     * @param {Graphics} graphics - Graphics instance\n     * @returns {Promise}\n     */\n    undo: function undo(graphics) {\n        var rotationComp = graphics.getComponent(ROTATION);\n        var _args = this.args,\n            type = _args[1],\n            angle = _args[2];\n\n\n        if (type === 'setAngle') {\n            return rotationComp[type](this.undoData.angle);\n        }\n\n        return rotationComp.rotate(-angle);\n    }\n};\n\n_command2.default.register(command);\n\nexports.default = command;\n\n//# sourceURL=webpack://tui.ImageEditor/./src/js/command/rotate.js?");
+
+/***/ }),
+
+/***/ "./src/js/command/setObjectPosition.js":
+/*!*********************************************!*\
+  !*** ./src/js/command/setObjectPosition.js ***!
+  \*********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n\nvar _command = __webpack_require__(/*! ../factory/command */ \"./src/js/factory/command.js\");\n\nvar _command2 = _interopRequireDefault(_command);\n\nvar _util = __webpack_require__(/*! ../util */ \"./src/js/util.js\");\n\nvar _consts = __webpack_require__(/*! ../consts */ \"./src/js/consts.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar command = {\n    name: _consts.commandNames.SET_OBJECT_POSITION,\n\n    /**\n     * Set object properties\n     * @param {Graphics} graphics - Graphics instance\n     * @param {number} id - object id\n     * @param {Object} posInfo - position object\n     *  @param {number} posInfo.x - x position\n     *  @param {number} posInfo.y - y position\n     *  @param {string} posInfo.originX - can be 'left', 'center', 'right'\n     *  @param {string} posInfo.originY - can be 'top', 'center', 'bottom'\n     * @returns {Promise}\n     */\n    execute: function execute(graphics, id, posInfo) {\n        var targetObj = graphics.getObject(id);\n\n        if (!targetObj) {\n            return _util.Promise.reject(_consts.rejectMessages.noObject);\n        }\n\n        this.undoData.objectId = id;\n        this.undoData.props = graphics.getObjectProperties(id, ['left', 'top']);\n\n        graphics.setObjectPosition(id, posInfo);\n        graphics.renderAll();\n\n        return _util.Promise.resolve();\n    },\n\n    /**\n     * @param {Graphics} graphics - Graphics instance\n     * @returns {Promise}\n     */\n    undo: function undo(graphics) {\n        var _undoData = this.undoData,\n            objectId = _undoData.objectId,\n            props = _undoData.props;\n\n\n        graphics.setObjectProperties(objectId, props);\n        graphics.renderAll();\n\n        return _util.Promise.resolve();\n    }\n}; /**\n    * @author NHN Ent. FE Development Team <dl_javascript@nhn.com>\n    * @fileoverview Set object properties\n    */\n\n\n_command2.default.register(command);\n\nexports.default = command;\n\n//# sourceURL=webpack://tui.ImageEditor/./src/js/command/setObjectPosition.js?");
+
+/***/ }),
+
+/***/ "./src/js/command/setObjectProperties.js":
+/*!***********************************************!*\
+  !*** ./src/js/command/setObjectProperties.js ***!
+  \***********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n\nvar _tuiCodeSnippet = __webpack_require__(/*! tui-code-snippet */ \"tui-code-snippet\");\n\nvar _tuiCodeSnippet2 = _interopRequireDefault(_tuiCodeSnippet);\n\nvar _command = __webpack_require__(/*! ../factory/command */ \"./src/js/factory/command.js\");\n\nvar _command2 = _interopRequireDefault(_command);\n\nvar _util = __webpack_require__(/*! ../util */ \"./src/js/util.js\");\n\nvar _consts = __webpack_require__(/*! ../consts */ \"./src/js/consts.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * @author NHN Ent. FE Development Team <dl_javascript@nhn.com>\n * @fileoverview Set object properties\n */\nvar command = {\n    name: _consts.commandNames.SET_OBJECT_PROPERTIES,\n\n    /**\n     * Set object properties\n     * @param {Graphics} graphics - Graphics instance\n     * @param {number} id - object id\n     * @param {Object} props - properties\n     *     @param {string} [props.fill] Color\n     *     @param {string} [props.fontFamily] Font type for text\n     *     @param {number} [props.fontSize] Size\n     *     @param {string} [props.fontStyle] Type of inclination (normal / italic)\n     *     @param {string} [props.fontWeight] Type of thicker or thinner looking (normal / bold)\n     *     @param {string} [props.textAlign] Type of text align (left / center / right)\n     *     @param {string} [props.textDecoration] Type of line (underline / line-through / overline)\n     * @returns {Promise}\n     */\n    execute: function execute(graphics, id, props) {\n        var _this = this;\n\n        var targetObj = graphics.getObject(id);\n\n        if (!targetObj) {\n            return _util.Promise.reject(_consts.rejectMessages.noObject);\n        }\n\n        this.undoData.props = {};\n        _tuiCodeSnippet2.default.forEachOwnProperties(props, function (value, key) {\n            _this.undoData.props[key] = targetObj[key];\n        });\n\n        graphics.setObjectProperties(id, props);\n\n        return _util.Promise.resolve();\n    },\n\n    /**\n     * @param {Graphics} graphics - Graphics instance\n     * @param {number} id - object id\n     * @returns {Promise}\n     */\n    undo: function undo(graphics, id) {\n        var props = this.undoData.props;\n\n\n        graphics.setObjectProperties(id, props);\n\n        return _util.Promise.resolve();\n    }\n};\n\n_command2.default.register(command);\n\nexports.default = command;\n\n//# sourceURL=webpack://tui.ImageEditor/./src/js/command/setObjectProperties.js?");
+
+/***/ }),
+
+/***/ "./src/js/component/cropper.js":
+/*!*************************************!*\
+  !*** ./src/js/component/cropper.js ***!
+  \*************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _tuiCodeSnippet = __webpack_require__(/*! tui-code-snippet */ \"tui-code-snippet\");\n\nvar _tuiCodeSnippet2 = _interopRequireDefault(_tuiCodeSnippet);\n\nvar _fabric = __webpack_require__(/*! fabric */ \"fabric\");\n\nvar _fabric2 = _interopRequireDefault(_fabric);\n\nvar _component = __webpack_require__(/*! ../interface/component */ \"./src/js/interface/component.js\");\n\nvar _component2 = _interopRequireDefault(_component);\n\nvar _cropzone = __webpack_require__(/*! ../extension/cropzone */ \"./src/js/extension/cropzone.js\");\n\nvar _cropzone2 = _interopRequireDefault(_cropzone);\n\nvar _consts = __webpack_require__(/*! ../consts */ \"./src/js/consts.js\");\n\nvar _util = __webpack_require__(/*! ../util */ \"./src/js/util.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } /**\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                * @author NHN Ent. FE Development Team <dl_javascript@nhn.com>\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                * @fileoverview Image crop module (start cropping, end cropping)\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                */\n\n\nvar MOUSE_MOVE_THRESHOLD = 10;\nvar DEFAULT_OPTION = {\n    presetRatio: null,\n    top: -10,\n    left: -10,\n    height: 1,\n    width: 1\n};\n\n/**\n * Cropper components\n * @param {Graphics} graphics - Graphics instance\n * @extends {Component}\n * @class Cropper\n * @ignore\n */\n\nvar Cropper = function (_Component) {\n    _inherits(Cropper, _Component);\n\n    function Cropper(graphics) {\n        _classCallCheck(this, Cropper);\n\n        /**\n         * Cropzone\n         * @type {Cropzone}\n         * @private\n         */\n        var _this = _possibleConstructorReturn(this, (Cropper.__proto__ || Object.getPrototypeOf(Cropper)).call(this, _consts.componentNames.CROPPER, graphics));\n\n        _this._cropzone = null;\n\n        /**\n         * StartX of Cropzone\n         * @type {number}\n         * @private\n         */\n        _this._startX = null;\n\n        /**\n         * StartY of Cropzone\n         * @type {number}\n         * @private\n         */\n        _this._startY = null;\n\n        /**\n         * State whether shortcut key is pressed or not\n         * @type {boolean}\n         * @private\n         */\n        _this._withShiftKey = false;\n\n        /**\n         * Listeners\n         * @type {object.<string, function>}\n         * @private\n         */\n        _this._listeners = {\n            keydown: _this._onKeyDown.bind(_this),\n            keyup: _this._onKeyUp.bind(_this),\n            mousedown: _this._onFabricMouseDown.bind(_this),\n            mousemove: _this._onFabricMouseMove.bind(_this),\n            mouseup: _this._onFabricMouseUp.bind(_this)\n        };\n        return _this;\n    }\n\n    /**\n     * Start cropping\n     */\n\n\n    _createClass(Cropper, [{\n        key: 'start',\n        value: function start() {\n            if (this._cropzone) {\n                return;\n            }\n            var canvas = this.getCanvas();\n\n            canvas.forEachObject(function (obj) {\n                // {@link http://fabricjs.com/docs/fabric.Object.html#evented}\n                obj.evented = false;\n            });\n\n            this._cropzone = new _cropzone2.default(canvas, _tuiCodeSnippet2.default.extend({\n                left: 0,\n                top: 0,\n                width: 0.5,\n                height: 0.5,\n                strokeWidth: 0, // {@link https://github.com/kangax/fabric.js/issues/2860}\n                cornerSize: 10,\n                cornerColor: 'black',\n                fill: 'transparent'\n            }, _consts.CROPZONE_DEFAULT_OPTIONS, this.graphics.cropSelectionStyle));\n\n            canvas.discardActiveObject();\n            canvas.add(this._cropzone);\n            canvas.on('mouse:down', this._listeners.mousedown);\n            canvas.selection = false;\n            canvas.defaultCursor = 'crosshair';\n\n            _fabric2.default.util.addListener(document, 'keydown', this._listeners.keydown);\n            _fabric2.default.util.addListener(document, 'keyup', this._listeners.keyup);\n        }\n\n        /**\n         * End cropping\n         */\n\n    }, {\n        key: 'end',\n        value: function end() {\n            var canvas = this.getCanvas();\n            var cropzone = this._cropzone;\n\n            if (!cropzone) {\n                return;\n            }\n            canvas.remove(cropzone);\n            canvas.selection = true;\n            canvas.defaultCursor = 'default';\n            canvas.off('mouse:down', this._listeners.mousedown);\n            canvas.forEachObject(function (obj) {\n                obj.evented = true;\n            });\n\n            this._cropzone = null;\n\n            _fabric2.default.util.removeListener(document, 'keydown', this._listeners.keydown);\n            _fabric2.default.util.removeListener(document, 'keyup', this._listeners.keyup);\n        }\n\n        /**\n         * Change cropzone visible\n         * @param {boolean} visible - cropzone visible state\n         */\n\n    }, {\n        key: 'changeVisibility',\n        value: function changeVisibility(visible) {\n            if (this._cropzone) {\n                this._cropzone.set({ visible: visible });\n            }\n        }\n\n        /**\n         * onMousedown handler in fabric canvas\n         * @param {{target: fabric.Object, e: MouseEvent}} fEvent - Fabric event\n         * @private\n         */\n\n    }, {\n        key: '_onFabricMouseDown',\n        value: function _onFabricMouseDown(fEvent) {\n            var canvas = this.getCanvas();\n\n            if (fEvent.target) {\n                return;\n            }\n\n            canvas.selection = false;\n            var coord = canvas.getPointer(fEvent.e);\n\n            this._startX = coord.x;\n            this._startY = coord.y;\n\n            canvas.on({\n                'mouse:move': this._listeners.mousemove,\n                'mouse:up': this._listeners.mouseup\n            });\n        }\n\n        /**\n         * onMousemove handler in fabric canvas\n         * @param {{target: fabric.Object, e: MouseEvent}} fEvent - Fabric event\n         * @private\n         */\n\n    }, {\n        key: '_onFabricMouseMove',\n        value: function _onFabricMouseMove(fEvent) {\n            var canvas = this.getCanvas();\n            var pointer = canvas.getPointer(fEvent.e);\n            var x = pointer.x,\n                y = pointer.y;\n\n            var cropzone = this._cropzone;\n\n            if (Math.abs(x - this._startX) + Math.abs(y - this._startY) > MOUSE_MOVE_THRESHOLD) {\n                canvas.remove(cropzone);\n                cropzone.set(this._calcRectDimensionFromPoint(x, y));\n\n                canvas.add(cropzone);\n                canvas.setActiveObject(cropzone);\n            }\n        }\n\n        /**\n         * Get rect dimension setting from Canvas-Mouse-Position(x, y)\n         * @param {number} x - Canvas-Mouse-Position x\n         * @param {number} y - Canvas-Mouse-Position Y\n         * @returns {{left: number, top: number, width: number, height: number}}\n         * @private\n         */\n\n    }, {\n        key: '_calcRectDimensionFromPoint',\n        value: function _calcRectDimensionFromPoint(x, y) {\n            var canvas = this.getCanvas();\n            var canvasWidth = canvas.getWidth();\n            var canvasHeight = canvas.getHeight();\n            var startX = this._startX;\n            var startY = this._startY;\n            var left = (0, _util.clamp)(x, 0, startX);\n            var top = (0, _util.clamp)(y, 0, startY);\n            var width = (0, _util.clamp)(x, startX, canvasWidth) - left; // (startX <= x(mouse) <= canvasWidth) - left\n            var height = (0, _util.clamp)(y, startY, canvasHeight) - top; // (startY <= y(mouse) <= canvasHeight) - top\n\n            if (this._withShiftKey) {\n                // make fixed ratio cropzone\n                if (width > height) {\n                    height = width;\n                } else if (height > width) {\n                    width = height;\n                }\n\n                if (startX >= x) {\n                    left = startX - width;\n                }\n\n                if (startY >= y) {\n                    top = startY - height;\n                }\n            }\n\n            return {\n                left: left,\n                top: top,\n                width: width,\n                height: height\n            };\n        }\n\n        /**\n         * onMouseup handler in fabric canvas\n         * @private\n         */\n\n    }, {\n        key: '_onFabricMouseUp',\n        value: function _onFabricMouseUp() {\n            var cropzone = this._cropzone;\n            var listeners = this._listeners;\n            var canvas = this.getCanvas();\n\n            canvas.setActiveObject(cropzone);\n            canvas.off({\n                'mouse:move': listeners.mousemove,\n                'mouse:up': listeners.mouseup\n            });\n        }\n\n        /**\n         * Get cropped image data\n         * @param {Object} cropRect cropzone rect\n         *  @param {Number} cropRect.left left position\n         *  @param {Number} cropRect.top top position\n         *  @param {Number} cropRect.width width\n         *  @param {Number} cropRect.height height\n         * @returns {?{imageName: string, url: string}} cropped Image data\n         */\n\n    }, {\n        key: 'getCroppedImageData',\n        value: function getCroppedImageData(cropRect) {\n            var canvas = this.getCanvas();\n            var containsCropzone = canvas.contains(this._cropzone);\n            if (!cropRect) {\n                return null;\n            }\n\n            if (containsCropzone) {\n                canvas.remove(this._cropzone);\n            }\n\n            var imageData = {\n                imageName: this.getImageName(),\n                url: canvas.toDataURL(cropRect)\n            };\n\n            if (containsCropzone) {\n                canvas.add(this._cropzone);\n            }\n\n            return imageData;\n        }\n\n        /**\n         * Get cropped rect\n         * @returns {Object} rect\n         */\n\n    }, {\n        key: 'getCropzoneRect',\n        value: function getCropzoneRect() {\n            var cropzone = this._cropzone;\n\n            if (!cropzone.isValid()) {\n                return null;\n            }\n\n            return {\n                left: cropzone.left,\n                top: cropzone.top,\n                width: cropzone.width,\n                height: cropzone.height\n            };\n        }\n\n        /**\n         * Set a cropzone square\n         * @param {number} [presetRatio] - preset ratio\n         */\n\n    }, {\n        key: 'setCropzoneRect',\n        value: function setCropzoneRect(presetRatio) {\n            var canvas = this.getCanvas();\n            var cropzone = this._cropzone;\n\n            canvas.discardActiveObject();\n            canvas.selection = false;\n            canvas.remove(cropzone);\n\n            cropzone.set(presetRatio ? this._getPresetPropertiesForCropSize(presetRatio) : DEFAULT_OPTION);\n\n            canvas.add(cropzone);\n            canvas.selection = true;\n\n            if (presetRatio) {\n                canvas.setActiveObject(cropzone);\n            }\n        }\n\n        /**\n         * get a cropzone square info\n         * @param {number} presetRatio - preset ratio\n         * @returns {{presetRatio: number, left: number, top: number, width: number, height: number}}\n         * @private\n         */\n\n    }, {\n        key: '_getPresetPropertiesForCropSize',\n        value: function _getPresetPropertiesForCropSize(presetRatio) {\n            var canvas = this.getCanvas();\n            var originalWidth = canvas.getWidth();\n            var originalHeight = canvas.getHeight();\n\n            var standardSize = originalWidth >= originalHeight ? originalWidth : originalHeight;\n            var getScale = function getScale(value, orignalValue) {\n                return value > orignalValue ? orignalValue / value : 1;\n            };\n\n            var width = standardSize * presetRatio;\n            var height = standardSize;\n\n            var scaleWidth = getScale(width, originalWidth);\n\n            var _snippet$map = _tuiCodeSnippet2.default.map([width, height], function (sizeValue) {\n                return sizeValue * scaleWidth;\n            });\n\n            width = _snippet$map[0];\n            height = _snippet$map[1];\n\n\n            var scaleHeight = getScale(height, originalHeight);\n\n            var _snippet$map2 = _tuiCodeSnippet2.default.map([width, height], function (sizeValue) {\n                return (0, _util.fixFloatingPoint)(sizeValue * scaleHeight);\n            });\n\n            width = _snippet$map2[0];\n            height = _snippet$map2[1];\n\n\n            return {\n                presetRatio: presetRatio,\n                top: (originalHeight - height) / 2,\n                left: (originalWidth - width) / 2,\n                width: width,\n                height: height\n            };\n        }\n\n        /**\n         * Keydown event handler\n         * @param {KeyboardEvent} e - Event object\n         * @private\n         */\n\n    }, {\n        key: '_onKeyDown',\n        value: function _onKeyDown(e) {\n            if (e.keyCode === _consts.keyCodes.SHIFT) {\n                this._withShiftKey = true;\n            }\n        }\n\n        /**\n         * Keyup event handler\n         * @param {KeyboardEvent} e - Event object\n         * @private\n         */\n\n    }, {\n        key: '_onKeyUp',\n        value: function _onKeyUp(e) {\n            if (e.keyCode === _consts.keyCodes.SHIFT) {\n                this._withShiftKey = false;\n            }\n        }\n    }]);\n\n    return Cropper;\n}(_component2.default);\n\nexports.default = Cropper;\n\n//# sourceURL=webpack://tui.ImageEditor/./src/js/component/cropper.js?");
+
+/***/ }),
+
+/***/ "./src/js/component/filter.js":
+/*!************************************!*\
+  !*** ./src/js/component/filter.js ***!
+  \************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _tuiCodeSnippet = __webpack_require__(/*! tui-code-snippet */ \"tui-code-snippet\");\n\nvar _util = __webpack_require__(/*! ../util */ \"./src/js/util.js\");\n\nvar _fabric = __webpack_require__(/*! fabric */ \"fabric\");\n\nvar _fabric2 = _interopRequireDefault(_fabric);\n\nvar _component = __webpack_require__(/*! ../interface/component */ \"./src/js/interface/component.js\");\n\nvar _component2 = _interopRequireDefault(_component);\n\nvar _mask = __webpack_require__(/*! ../extension/mask */ \"./src/js/extension/mask.js\");\n\nvar _mask2 = _interopRequireDefault(_mask);\n\nvar _consts = __webpack_require__(/*! ../consts */ \"./src/js/consts.js\");\n\nvar _sharpen = __webpack_require__(/*! ../extension/sharpen */ \"./src/js/extension/sharpen.js\");\n\nvar _sharpen2 = _interopRequireDefault(_sharpen);\n\nvar _emboss = __webpack_require__(/*! ../extension/emboss */ \"./src/js/extension/emboss.js\");\n\nvar _emboss2 = _interopRequireDefault(_emboss);\n\nvar _colorFilter = __webpack_require__(/*! ../extension/colorFilter */ \"./src/js/extension/colorFilter.js\");\n\nvar _colorFilter2 = _interopRequireDefault(_colorFilter);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } /**\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                * @author NHN Ent. FE Development Team <dl_javascript@nhn.com>\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                * @fileoverview Add filter module\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                */\n\n\nvar filters = _fabric2.default.Image.filters;\n\nfilters.Mask = _mask2.default;\nfilters.Sharpen = _sharpen2.default;\nfilters.Emboss = _emboss2.default;\nfilters.ColorFilter = _colorFilter2.default;\n\n/**\n * Filter\n * @class Filter\n * @param {Graphics} graphics - Graphics instance\n * @extends {Component}\n * @ignore\n */\n\nvar Filter = function (_Component) {\n    _inherits(Filter, _Component);\n\n    function Filter(graphics) {\n        _classCallCheck(this, Filter);\n\n        return _possibleConstructorReturn(this, (Filter.__proto__ || Object.getPrototypeOf(Filter)).call(this, _consts.componentNames.FILTER, graphics));\n    }\n\n    /**\n     * Add filter to source image (a specific filter is added on fabric.js)\n     * @param {string} type - Filter type\n     * @param {Object} [options] - Options of filter\n     * @returns {Promise}\n     */\n\n\n    _createClass(Filter, [{\n        key: 'add',\n        value: function add(type, options) {\n            var _this2 = this;\n\n            return new _util.Promise(function (resolve, reject) {\n                var sourceImg = _this2._getSourceImage();\n                var canvas = _this2.getCanvas();\n                var imgFilter = _this2._getFilter(sourceImg, type);\n                if (!imgFilter) {\n                    imgFilter = _this2._createFilter(sourceImg, type, options);\n                }\n\n                if (!imgFilter) {\n                    reject(_consts.rejectMessages.invalidParameters);\n                }\n\n                _this2._changeFilterValues(imgFilter, options);\n\n                _this2._apply(sourceImg, function () {\n                    canvas.renderAll();\n                    resolve({\n                        type: type,\n                        action: 'add',\n                        options: options\n                    });\n                });\n            });\n        }\n\n        /**\n         * Remove filter to source image\n         * @param {string} type - Filter type\n         * @returns {Promise}\n         */\n\n    }, {\n        key: 'remove',\n        value: function remove(type) {\n            var _this3 = this;\n\n            return new _util.Promise(function (resolve, reject) {\n                var sourceImg = _this3._getSourceImage();\n                var canvas = _this3.getCanvas();\n                var options = _this3.getOptions(type);\n\n                if (!sourceImg.filters.length) {\n                    reject(_consts.rejectMessages.unsupportedOperation);\n                }\n\n                _this3._removeFilter(sourceImg, type);\n\n                _this3._apply(sourceImg, function () {\n                    canvas.renderAll();\n                    resolve({\n                        type: type,\n                        action: 'remove',\n                        options: options\n                    });\n                });\n            });\n        }\n\n        /**\n         * Whether this has the filter or not\n         * @param {string} type - Filter type\n         * @returns {boolean} true if it has the filter\n         */\n\n    }, {\n        key: 'hasFilter',\n        value: function hasFilter(type) {\n            return !!this._getFilter(this._getSourceImage(), type);\n        }\n\n        /**\n         * Get a filter options\n         * @param {string} type - Filter type\n         * @returns {Object} filter options or null if there is no that filter\n         */\n\n    }, {\n        key: 'getOptions',\n        value: function getOptions(type) {\n            var sourceImg = this._getSourceImage();\n            var imgFilter = this._getFilter(sourceImg, type);\n            if (!imgFilter) {\n                return null;\n            }\n\n            return (0, _tuiCodeSnippet.extend)({}, imgFilter.options);\n        }\n\n        /**\n         * Change filter values\n         * @param {Object} imgFilter object of filter\n         * @param {Object} options object\n         * @private\n         */\n\n    }, {\n        key: '_changeFilterValues',\n        value: function _changeFilterValues(imgFilter, options) {\n            (0, _tuiCodeSnippet.forEach)(options, function (value, key) {\n                if (!(0, _tuiCodeSnippet.isUndefined)(imgFilter[key])) {\n                    imgFilter[key] = value;\n                }\n            });\n            (0, _tuiCodeSnippet.forEach)(imgFilter.options, function (value, key) {\n                if (!(0, _tuiCodeSnippet.isUndefined)(options[key])) {\n                    imgFilter.options[key] = options[key];\n                }\n            });\n        }\n\n        /**\n         * Apply filter\n         * @param {fabric.Image} sourceImg - Source image to apply filter\n         * @param {function} callback - Executed function after applying filter\n         * @private\n         */\n\n    }, {\n        key: '_apply',\n        value: function _apply(sourceImg, callback) {\n            sourceImg.filters.push();\n            var result = sourceImg.applyFilters();\n            if (result) {\n                callback();\n            }\n        }\n\n        /**\n         * Get source image on canvas\n         * @returns {fabric.Image} Current source image on canvas\n         * @private\n         */\n\n    }, {\n        key: '_getSourceImage',\n        value: function _getSourceImage() {\n            return this.getCanvasImage();\n        }\n\n        /**\n         * Create filter instance\n         * @param {fabric.Image} sourceImg - Source image to apply filter\n         * @param {string} type - Filter type\n         * @param {Object} [options] - Options of filter\n         * @returns {Object} Fabric object of filter\n         * @private\n         */\n\n    }, {\n        key: '_createFilter',\n        value: function _createFilter(sourceImg, type, options) {\n            var filterObj = void 0;\n            // capitalize first letter for matching with fabric image filter name\n            var fabricType = this._getFabricFilterType(type);\n            var ImageFilter = _fabric2.default.Image.filters[fabricType];\n            if (ImageFilter) {\n                filterObj = new ImageFilter(options);\n                filterObj.options = options;\n                sourceImg.filters.push(filterObj);\n            }\n\n            return filterObj;\n        }\n\n        /**\n         * Get applied filter instance\n         * @param {fabric.Image} sourceImg - Source image to apply filter\n         * @param {string} type - Filter type\n         * @returns {Object} Fabric object of filter\n         * @private\n         */\n\n    }, {\n        key: '_getFilter',\n        value: function _getFilter(sourceImg, type) {\n            var imgFilter = null;\n\n            if (sourceImg) {\n                var fabricType = this._getFabricFilterType(type);\n                var length = sourceImg.filters.length;\n\n                var item = void 0,\n                    i = void 0;\n\n                for (i = 0; i < length; i += 1) {\n                    item = sourceImg.filters[i];\n                    if (item.type === fabricType) {\n                        imgFilter = item;\n                        break;\n                    }\n                }\n            }\n\n            return imgFilter;\n        }\n\n        /**\n         * Remove applied filter instance\n         * @param {fabric.Image} sourceImg - Source image to apply filter\n         * @param {string} type - Filter type\n         * @private\n         */\n\n    }, {\n        key: '_removeFilter',\n        value: function _removeFilter(sourceImg, type) {\n            var fabricType = this._getFabricFilterType(type);\n            sourceImg.filters = (0, _tuiCodeSnippet.filter)(sourceImg.filters, function (value) {\n                return value.type !== fabricType;\n            });\n        }\n\n        /**\n         * Change filter class name to fabric's, especially capitalizing first letter\n         * @param {string} type - Filter type\n         * @example\n         * 'grayscale' -> 'Grayscale'\n         * @returns {string} Fabric filter class name\n         */\n\n    }, {\n        key: '_getFabricFilterType',\n        value: function _getFabricFilterType(type) {\n            return type.charAt(0).toUpperCase() + type.slice(1);\n        }\n    }]);\n\n    return Filter;\n}(_component2.default);\n\nexports.default = Filter;\n\n//# sourceURL=webpack://tui.ImageEditor/./src/js/component/filter.js?");
+
+/***/ }),
+
+/***/ "./src/js/component/flip.js":
+/*!**********************************!*\
+  !*** ./src/js/component/flip.js ***!
+  \**********************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _tuiCodeSnippet = __webpack_require__(/*! tui-code-snippet */ \"tui-code-snippet\");\n\nvar _tuiCodeSnippet2 = _interopRequireDefault(_tuiCodeSnippet);\n\nvar _util = __webpack_require__(/*! ../util */ \"./src/js/util.js\");\n\nvar _component = __webpack_require__(/*! ../interface/component */ \"./src/js/interface/component.js\");\n\nvar _component2 = _interopRequireDefault(_component);\n\nvar _consts = __webpack_require__(/*! ../consts */ \"./src/js/consts.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } /**\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                * @author NHN Ent. FE Development Team <dl_javascript@nhn.com>\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                * @fileoverview Image flip module\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                */\n\n\n/**\n * Flip\n * @class Flip\n * @param {Graphics} graphics - Graphics instance\n * @extends {Component}\n * @ignore\n */\nvar Flip = function (_Component) {\n    _inherits(Flip, _Component);\n\n    function Flip(graphics) {\n        _classCallCheck(this, Flip);\n\n        return _possibleConstructorReturn(this, (Flip.__proto__ || Object.getPrototypeOf(Flip)).call(this, _consts.componentNames.FLIP, graphics));\n    }\n\n    /**\n     * Get current flip settings\n     * @returns {{flipX: Boolean, flipY: Boolean}}\n     */\n\n\n    _createClass(Flip, [{\n        key: 'getCurrentSetting',\n        value: function getCurrentSetting() {\n            var canvasImage = this.getCanvasImage();\n\n            return {\n                flipX: canvasImage.flipX,\n                flipY: canvasImage.flipY\n            };\n        }\n\n        /**\n         * Set flipX, flipY\n         * @param {{flipX: Boolean, flipY: Boolean}} newSetting - Flip setting\n         * @returns {Promise}\n         */\n\n    }, {\n        key: 'set',\n        value: function set(newSetting) {\n            var setting = this.getCurrentSetting();\n            var isChangingFlipX = setting.flipX !== newSetting.flipX;\n            var isChangingFlipY = setting.flipY !== newSetting.flipY;\n\n            if (!isChangingFlipX && !isChangingFlipY) {\n                return _util.Promise.reject(_consts.rejectMessages.flip);\n            }\n\n            _tuiCodeSnippet2.default.extend(setting, newSetting);\n            this.setImageProperties(setting, true);\n            this._invertAngle(isChangingFlipX, isChangingFlipY);\n            this._flipObjects(isChangingFlipX, isChangingFlipY);\n\n            return _util.Promise.resolve({\n                flipX: setting.flipX,\n                flipY: setting.flipY,\n                angle: this.getCanvasImage().angle\n            });\n        }\n\n        /**\n         * Invert image angle for flip\n         * @param {boolean} isChangingFlipX - Change flipX\n         * @param {boolean} isChangingFlipY - Change flipY\n         */\n\n    }, {\n        key: '_invertAngle',\n        value: function _invertAngle(isChangingFlipX, isChangingFlipY) {\n            var canvasImage = this.getCanvasImage();\n            var angle = canvasImage.angle;\n\n\n            if (isChangingFlipX) {\n                angle *= -1;\n            }\n            if (isChangingFlipY) {\n                angle *= -1;\n            }\n            canvasImage.rotate(parseFloat(angle)).setCoords(); // parseFloat for -0 to 0\n        }\n\n        /**\n         * Flip objects\n         * @param {boolean} isChangingFlipX - Change flipX\n         * @param {boolean} isChangingFlipY - Change flipY\n         * @private\n         */\n\n    }, {\n        key: '_flipObjects',\n        value: function _flipObjects(isChangingFlipX, isChangingFlipY) {\n            var canvas = this.getCanvas();\n\n            if (isChangingFlipX) {\n                canvas.forEachObject(function (obj) {\n                    obj.set({\n                        angle: parseFloat(obj.angle * -1), // parseFloat for -0 to 0\n                        flipX: !obj.flipX,\n                        left: canvas.width - obj.left\n                    }).setCoords();\n                });\n            }\n            if (isChangingFlipY) {\n                canvas.forEachObject(function (obj) {\n                    obj.set({\n                        angle: parseFloat(obj.angle * -1), // parseFloat for -0 to 0\n                        flipY: !obj.flipY,\n                        top: canvas.height - obj.top\n                    }).setCoords();\n                });\n            }\n            canvas.renderAll();\n        }\n\n        /**\n         * Reset flip settings\n         * @returns {Promise}\n         */\n\n    }, {\n        key: 'reset',\n        value: function reset() {\n            return this.set({\n                flipX: false,\n                flipY: false\n            });\n        }\n\n        /**\n         * Flip x\n         * @returns {Promise}\n         */\n\n    }, {\n        key: 'flipX',\n        value: function flipX() {\n            var current = this.getCurrentSetting();\n\n            return this.set({\n                flipX: !current.flipX,\n                flipY: current.flipY\n            });\n        }\n\n        /**\n         * Flip y\n         * @returns {Promise}\n         */\n\n    }, {\n        key: 'flipY',\n        value: function flipY() {\n            var current = this.getCurrentSetting();\n\n            return this.set({\n                flipX: current.flipX,\n                flipY: !current.flipY\n            });\n        }\n    }]);\n\n    return Flip;\n}(_component2.default);\n\nexports.default = Flip;\n\n//# sourceURL=webpack://tui.ImageEditor/./src/js/component/flip.js?");
+
+/***/ }),
+
+/***/ "./src/js/component/freeDrawing.js":
+/*!*****************************************!*\
+  !*** ./src/js/component/freeDrawing.js ***!
+  \*****************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _fabric = __webpack_require__(/*! fabric */ \"fabric\");\n\nvar _fabric2 = _interopRequireDefault(_fabric);\n\nvar _component = __webpack_require__(/*! ../interface/component */ \"./src/js/interface/component.js\");\n\nvar _component2 = _interopRequireDefault(_component);\n\nvar _consts = __webpack_require__(/*! ../consts */ \"./src/js/consts.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } /**\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                * @author NHN Ent. FE Development Team <dl_javascript@nhn.com>\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                * @fileoverview Free drawing module, Set brush\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                */\n\n\n/**\n * FreeDrawing\n * @class FreeDrawing\n * @param {Graphics} graphics - Graphics instance\n * @extends {Component}\n * @ignore\n */\nvar FreeDrawing = function (_Component) {\n  _inherits(FreeDrawing, _Component);\n\n  function FreeDrawing(graphics) {\n    _classCallCheck(this, FreeDrawing);\n\n    /**\n     * Brush width\n     * @type {number}\n     */\n    var _this = _possibleConstructorReturn(this, (FreeDrawing.__proto__ || Object.getPrototypeOf(FreeDrawing)).call(this, _consts.componentNames.FREE_DRAWING, graphics));\n\n    _this.width = 12;\n\n    /**\n     * fabric.Color instance for brush color\n     * @type {fabric.Color}\n     */\n    _this.oColor = new _fabric2.default.Color('rgba(0, 0, 0, 0.5)');\n    return _this;\n  }\n\n  /**\n   * Start free drawing mode\n   * @param {{width: ?number, color: ?string}} [setting] - Brush width & color\n   */\n\n\n  _createClass(FreeDrawing, [{\n    key: 'start',\n    value: function start(setting) {\n      var canvas = this.getCanvas();\n\n      canvas.isDrawingMode = true;\n      this.setBrush(setting);\n    }\n\n    /**\n     * Set brush\n     * @param {{width: ?number, color: ?string}} [setting] - Brush width & color\n     */\n\n  }, {\n    key: 'setBrush',\n    value: function setBrush(setting) {\n      var brush = this.getCanvas().freeDrawingBrush;\n\n      setting = setting || {};\n      this.width = setting.width || this.width;\n      if (setting.color) {\n        this.oColor = new _fabric2.default.Color(setting.color);\n      }\n      brush.width = this.width;\n      brush.color = this.oColor.toRgba();\n    }\n\n    /**\n     * End free drawing mode\n     */\n\n  }, {\n    key: 'end',\n    value: function end() {\n      var canvas = this.getCanvas();\n\n      canvas.isDrawingMode = false;\n    }\n  }]);\n\n  return FreeDrawing;\n}(_component2.default);\n\nexports.default = FreeDrawing;\n\n//# sourceURL=webpack://tui.ImageEditor/./src/js/component/freeDrawing.js?");
+
+/***/ }),
+
+/***/ "./src/js/component/icon.js":
+/*!**********************************!*\
+  !*** ./src/js/component/icon.js ***!
+  \**********************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _fabric = __webpack_require__(/*! fabric */ \"fabric\");\n\nvar _fabric2 = _interopRequireDefault(_fabric);\n\nvar _tuiCodeSnippet = __webpack_require__(/*! tui-code-snippet */ \"tui-code-snippet\");\n\nvar _tuiCodeSnippet2 = _interopRequireDefault(_tuiCodeSnippet);\n\nvar _util = __webpack_require__(/*! ../util */ \"./src/js/util.js\");\n\nvar _component = __webpack_require__(/*! ../interface/component */ \"./src/js/interface/component.js\");\n\nvar _component2 = _interopRequireDefault(_component);\n\nvar _consts = __webpack_require__(/*! ../consts */ \"./src/js/consts.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } /**\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                * @author NHN Ent. FE Development Team <dl_javascript@nhn.com>\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                * @fileoverview Add icon module\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                */\n\n\nvar pathMap = {\n    arrow: 'M 0 90 H 105 V 120 L 160 60 L 105 0 V 30 H 0 Z',\n    cancel: 'M 0 30 L 30 60 L 0 90 L 30 120 L 60 90 L 90 120 L 120 90 ' + 'L 90 60 L 120 30 L 90 0 L 60 30 L 30 0 Z'\n};\n\n/**\n * Icon\n * @class Icon\n * @param {Graphics} graphics - Graphics instance\n * @extends {Component}\n * @ignore\n */\n\nvar Icon = function (_Component) {\n    _inherits(Icon, _Component);\n\n    function Icon(graphics) {\n        _classCallCheck(this, Icon);\n\n        /**\n         * Default icon color\n         * @type {string}\n         */\n        var _this = _possibleConstructorReturn(this, (Icon.__proto__ || Object.getPrototypeOf(Icon)).call(this, _consts.componentNames.ICON, graphics));\n\n        _this._oColor = '#000000';\n\n        /**\n         * Path value of each icon type\n         * @type {Object}\n         */\n        _this._pathMap = pathMap;\n\n        /**\n         * Option to add icon to drag.\n         * @type {boolean}\n         */\n        _this.useDragAddIcon = graphics.useDragAddIcon;\n        return _this;\n    }\n\n    /**\n     * Add icon\n     * @param {string} type - Icon type\n     * @param {Object} options - Icon options\n     *      @param {string} [options.fill] - Icon foreground color\n     *      @param {string} [options.left] - Icon x position\n     *      @param {string} [options.top] - Icon y position\n     * @returns {Promise}\n     */\n\n\n    _createClass(Icon, [{\n        key: 'add',\n        value: function add(type, options) {\n            var _this2 = this;\n\n            return new _util.Promise(function (resolve, reject) {\n                var canvas = _this2.getCanvas();\n                var path = _this2._pathMap[type];\n                var selectionStyle = _consts.fObjectOptions.SELECTION_STYLE;\n                var registerdIcon = Object.keys(_consts.defaultIconPath).indexOf(type) >= 0;\n                var useDragAddIcon = _this2.useDragAddIcon && registerdIcon;\n                var icon = path ? _this2._createIcon(path) : null;\n\n                if (!icon) {\n                    reject(_consts.rejectMessages.invalidParameters);\n                }\n\n                icon.set(_tuiCodeSnippet2.default.extend({\n                    type: 'icon',\n                    fill: _this2._oColor\n                }, selectionStyle, options, _this2.graphics.controlStyle));\n\n                canvas.add(icon).setActiveObject(icon);\n\n                if (useDragAddIcon) {\n                    _this2._addWithDragEvent(canvas);\n                }\n\n                resolve(_this2.graphics.createObjectProperties(icon));\n            });\n        }\n\n        /**\n         * Added icon drag event\n         * @param {fabric.Canvas} canvas - Canvas instance\n         * @private\n         */\n\n    }, {\n        key: '_addWithDragEvent',\n        value: function _addWithDragEvent(canvas) {\n            var _this3 = this;\n\n            canvas.on({\n                'mouse:move': function mouseMove(fEvent) {\n                    canvas.selection = false;\n\n                    _this3.fire(_consts.eventNames.ICON_CREATE_RESIZE, {\n                        moveOriginPointer: canvas.getPointer(fEvent.e)\n                    });\n                },\n                'mouse:up': function mouseUp(fEvent) {\n                    _this3.fire(_consts.eventNames.ICON_CREATE_END, {\n                        moveOriginPointer: canvas.getPointer(fEvent.e)\n                    });\n\n                    canvas.defaultCursor = 'default';\n                    canvas.off('mouse:up');\n                    canvas.off('mouse:move');\n                    canvas.selection = true;\n                }\n            });\n        }\n\n        /**\n         * Register icon paths\n         * @param {{key: string, value: string}} pathInfos - Path infos\n         */\n\n    }, {\n        key: 'registerPaths',\n        value: function registerPaths(pathInfos) {\n            var _this4 = this;\n\n            _tuiCodeSnippet2.default.forEach(pathInfos, function (path, type) {\n                _this4._pathMap[type] = path;\n            }, this);\n        }\n\n        /**\n         * Set icon object color\n         * @param {string} color - Color to set\n         * @param {fabric.Path}[obj] - Current activated path object\n         */\n\n    }, {\n        key: 'setColor',\n        value: function setColor(color, obj) {\n            this._oColor = color;\n\n            if (obj && obj.get('type') === 'icon') {\n                obj.set({ fill: this._oColor });\n                this.getCanvas().renderAll();\n            }\n        }\n\n        /**\n         * Get icon color\n         * @param {fabric.Path}[obj] - Current activated path object\n         * @returns {string} color\n         */\n\n    }, {\n        key: 'getColor',\n        value: function getColor(obj) {\n            return obj.fill;\n        }\n\n        /**\n         * Create icon object\n         * @param {string} path - Path value to create icon\n         * @returns {fabric.Path} Path object\n         */\n\n    }, {\n        key: '_createIcon',\n        value: function _createIcon(path) {\n            return new _fabric2.default.Path(path);\n        }\n    }]);\n\n    return Icon;\n}(_component2.default);\n\nexports.default = Icon;\n\n//# sourceURL=webpack://tui.ImageEditor/./src/js/component/icon.js?");
+
+/***/ }),
+
+/***/ "./src/js/component/imageLoader.js":
+/*!*****************************************!*\
+  !*** ./src/js/component/imageLoader.js ***!
+  \*****************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _component = __webpack_require__(/*! ../interface/component */ \"./src/js/interface/component.js\");\n\nvar _component2 = _interopRequireDefault(_component);\n\nvar _consts = __webpack_require__(/*! ../consts */ \"./src/js/consts.js\");\n\nvar _util = __webpack_require__(/*! ../util */ \"./src/js/util.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } /**\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                * @author NHN Ent. FE Development Team <dl_javascript@nhn.com>\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                * @fileoverview Image loader\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                */\n\n\nvar imageOption = {\n    padding: 0,\n    crossOrigin: 'Anonymous'\n};\n\n/**\n * ImageLoader components\n * @extends {Component}\n * @class ImageLoader\n * @param {Graphics} graphics - Graphics instance\n * @ignore\n */\n\nvar ImageLoader = function (_Component) {\n    _inherits(ImageLoader, _Component);\n\n    function ImageLoader(graphics) {\n        _classCallCheck(this, ImageLoader);\n\n        return _possibleConstructorReturn(this, (ImageLoader.__proto__ || Object.getPrototypeOf(ImageLoader)).call(this, _consts.componentNames.IMAGE_LOADER, graphics));\n    }\n\n    /**\n     * Load image from url\n     * @param {?string} imageName - File name\n     * @param {?(fabric.Image|string)} img - fabric.Image instance or URL of an image\n     * @returns {Promise}\n     */\n\n\n    _createClass(ImageLoader, [{\n        key: 'load',\n        value: function load(imageName, img) {\n            var _this2 = this;\n\n            var promise = void 0;\n\n            if (!imageName && !img) {\n                // Back to the initial state, not error.\n                var canvas = this.getCanvas();\n\n                canvas.backgroundImage = null;\n                canvas.renderAll();\n\n                promise = new _util.Promise(function (resolve) {\n                    _this2.setCanvasImage('', null);\n                    resolve();\n                });\n            } else {\n                promise = this._setBackgroundImage(img).then(function (oImage) {\n                    _this2.setCanvasImage(imageName, oImage);\n                    _this2.adjustCanvasDimension();\n\n                    return oImage;\n                });\n            }\n\n            return promise;\n        }\n\n        /**\n         * Set background image\n         * @param {?(fabric.Image|String)} img fabric.Image instance or URL of an image to set background to\n         * @returns {Promise}\n         * @private\n         */\n\n    }, {\n        key: '_setBackgroundImage',\n        value: function _setBackgroundImage(img) {\n            var _this3 = this;\n\n            if (!img) {\n                return _util.Promise.reject(_consts.rejectMessages.loadImage);\n            }\n\n            return new _util.Promise(function (resolve, reject) {\n                var canvas = _this3.getCanvas();\n\n                canvas.setBackgroundImage(img, function () {\n                    var oImage = canvas.backgroundImage;\n\n                    if (oImage && oImage.getElement()) {\n                        resolve(oImage);\n                    } else {\n                        reject(_consts.rejectMessages.loadingImageFailed);\n                    }\n                }, imageOption);\n            });\n        }\n    }]);\n\n    return ImageLoader;\n}(_component2.default);\n\nexports.default = ImageLoader;\n\n//# sourceURL=webpack://tui.ImageEditor/./src/js/component/imageLoader.js?");
+
+/***/ }),
+
+/***/ "./src/js/component/line.js":
+/*!**********************************!*\
+  !*** ./src/js/component/line.js ***!
+  \**********************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _fabric = __webpack_require__(/*! fabric */ \"fabric\");\n\nvar _fabric2 = _interopRequireDefault(_fabric);\n\nvar _tuiCodeSnippet = __webpack_require__(/*! tui-code-snippet */ \"tui-code-snippet\");\n\nvar _tuiCodeSnippet2 = _interopRequireDefault(_tuiCodeSnippet);\n\nvar _component = __webpack_require__(/*! ../interface/component */ \"./src/js/interface/component.js\");\n\nvar _component2 = _interopRequireDefault(_component);\n\nvar _arrowLine = __webpack_require__(/*! ../extension/arrowLine */ \"./src/js/extension/arrowLine.js\");\n\nvar _arrowLine2 = _interopRequireDefault(_arrowLine);\n\nvar _consts = __webpack_require__(/*! ../consts */ \"./src/js/consts.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } /**\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                * @author NHN. FE Development Team <dl_javascript@nhn.com>\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                * @fileoverview Free drawing module, Set brush\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                */\n\n\n/**\n * Line\n * @class Line\n * @param {Graphics} graphics - Graphics instance\n * @extends {Component}\n * @ignore\n */\nvar Line = function (_Component) {\n    _inherits(Line, _Component);\n\n    function Line(graphics) {\n        _classCallCheck(this, Line);\n\n        /**\n         * Brush width\n         * @type {number}\n         * @private\n         */\n        var _this = _possibleConstructorReturn(this, (Line.__proto__ || Object.getPrototypeOf(Line)).call(this, _consts.componentNames.LINE, graphics));\n\n        _this._width = 12;\n\n        /**\n         * fabric.Color instance for brush color\n         * @type {fabric.Color}\n         * @private\n         */\n        _this._oColor = new _fabric2.default.Color('rgba(0, 0, 0, 0.5)');\n\n        /**\n         * Listeners\n         * @type {object.<string, function>}\n         * @private\n         */\n        _this._listeners = {\n            mousedown: _this._onFabricMouseDown.bind(_this),\n            mousemove: _this._onFabricMouseMove.bind(_this),\n            mouseup: _this._onFabricMouseUp.bind(_this)\n        };\n        return _this;\n    }\n\n    /**\n     * Start drawing line mode\n     * @param {{width: ?number, color: ?string}} [setting] - Brush width & color\n     */\n\n\n    _createClass(Line, [{\n        key: 'setHeadOption',\n        value: function setHeadOption(setting) {\n            var _setting$arrowType = setting.arrowType,\n                arrowType = _setting$arrowType === undefined ? {\n                head: null,\n                tail: null\n            } : _setting$arrowType;\n\n\n            this._arrowType = arrowType;\n        }\n\n        /**\n         * Start drawing line mode\n         * @param {{width: ?number, color: ?string}} [setting] - Brush width & color\n         */\n\n    }, {\n        key: 'start',\n        value: function start() {\n            var setting = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n            var canvas = this.getCanvas();\n\n            canvas.defaultCursor = 'crosshair';\n            canvas.selection = false;\n\n            this.setHeadOption(setting);\n            this.setBrush(setting);\n\n            canvas.forEachObject(function (obj) {\n                obj.set({\n                    evented: false\n                });\n            });\n\n            canvas.on({\n                'mouse:down': this._listeners.mousedown\n            });\n        }\n\n        /**\n         * Set brush\n         * @param {{width: ?number, color: ?string}} [setting] - Brush width & color\n         */\n\n    }, {\n        key: 'setBrush',\n        value: function setBrush(setting) {\n            var brush = this.getCanvas().freeDrawingBrush;\n\n            setting = setting || {};\n            this._width = setting.width || this._width;\n\n            if (setting.color) {\n                this._oColor = new _fabric2.default.Color(setting.color);\n            }\n            brush.width = this._width;\n            brush.color = this._oColor.toRgba();\n        }\n\n        /**\n         * End drawing line mode\n         */\n\n    }, {\n        key: 'end',\n        value: function end() {\n            var canvas = this.getCanvas();\n\n            canvas.defaultCursor = 'default';\n            canvas.selection = true;\n\n            canvas.forEachObject(function (obj) {\n                obj.set({\n                    evented: true\n                });\n            });\n\n            canvas.off('mouse:down', this._listeners.mousedown);\n        }\n\n        /**\n         * Mousedown event handler in fabric canvas\n         * @param {{target: fabric.Object, e: MouseEvent}} fEvent - Fabric event object\n         * @private\n         */\n\n    }, {\n        key: '_onFabricMouseDown',\n        value: function _onFabricMouseDown(fEvent) {\n            var canvas = this.getCanvas();\n\n            var _canvas$getPointer = canvas.getPointer(fEvent.e),\n                x = _canvas$getPointer.x,\n                y = _canvas$getPointer.y;\n\n            var points = [x, y, x, y];\n\n            this._line = new _arrowLine2.default(points, {\n                stroke: this._oColor.toRgba(),\n                strokeWidth: this._width,\n                arrowType: this._arrowType,\n                evented: false\n            });\n\n            this._line.set(_consts.fObjectOptions.SELECTION_STYLE);\n\n            canvas.add(this._line);\n\n            canvas.on({\n                'mouse:move': this._listeners.mousemove,\n                'mouse:up': this._listeners.mouseup\n            });\n\n            this.fire(_consts.eventNames.ADD_OBJECT, this._createLineEventObjectProperties());\n        }\n\n        /**\n         * Mousemove event handler in fabric canvas\n         * @param {{target: fabric.Object, e: MouseEvent}} fEvent - Fabric event object\n         * @private\n         */\n\n    }, {\n        key: '_onFabricMouseMove',\n        value: function _onFabricMouseMove(fEvent) {\n            var canvas = this.getCanvas();\n            var pointer = canvas.getPointer(fEvent.e);\n\n            this._line.set({\n                x2: pointer.x,\n                y2: pointer.y\n            });\n\n            this._line.setCoords();\n\n            canvas.renderAll();\n        }\n\n        /**\n         * Mouseup event handler in fabric canvas\n         * @param {{target: fabric.Object, e: MouseEvent}} fEvent - Fabric event object\n         * @private\n         */\n\n    }, {\n        key: '_onFabricMouseUp',\n        value: function _onFabricMouseUp() {\n            var canvas = this.getCanvas();\n\n            this.fire(_consts.eventNames.OBJECT_ADDED, this._createLineEventObjectProperties());\n\n            this._line = null;\n\n            canvas.off({\n                'mouse:move': this._listeners.mousemove,\n                'mouse:up': this._listeners.mouseup\n            });\n        }\n\n        /**\n         * create line event object properties\n         * @returns {Object} properties line object\n         * @private\n         */\n\n    }, {\n        key: '_createLineEventObjectProperties',\n        value: function _createLineEventObjectProperties() {\n            var params = this.graphics.createObjectProperties(this._line);\n            var _line = this._line,\n                x1 = _line.x1,\n                x2 = _line.x2,\n                y1 = _line.y1,\n                y2 = _line.y2;\n\n\n            return _tuiCodeSnippet2.default.extend({}, params, {\n                startPosition: {\n                    x: x1,\n                    y: y1\n                },\n                endPosition: {\n                    x: x2,\n                    y: y2\n                }\n            });\n        }\n    }]);\n\n    return Line;\n}(_component2.default);\n\nexports.default = Line;\n\n//# sourceURL=webpack://tui.ImageEditor/./src/js/component/line.js?");
+
+/***/ }),
+
+/***/ "./src/js/component/rotation.js":
+/*!**************************************!*\
+  !*** ./src/js/component/rotation.js ***!
+  \**************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _fabric = __webpack_require__(/*! fabric */ \"fabric\");\n\nvar _fabric2 = _interopRequireDefault(_fabric);\n\nvar _util = __webpack_require__(/*! ../util */ \"./src/js/util.js\");\n\nvar _component = __webpack_require__(/*! ../interface/component */ \"./src/js/interface/component.js\");\n\nvar _component2 = _interopRequireDefault(_component);\n\nvar _consts = __webpack_require__(/*! ../consts */ \"./src/js/consts.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } /**\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                * @author NHN Ent. FE Development Team <dl_javascript@nhn.com>\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                * @fileoverview Image rotation module\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                */\n\n\n/**\n * Image Rotation component\n * @class Rotation\n * @extends {Component}\n * @param {Graphics} graphics - Graphics instance\n * @ignore\n */\nvar Rotation = function (_Component) {\n    _inherits(Rotation, _Component);\n\n    function Rotation(graphics) {\n        _classCallCheck(this, Rotation);\n\n        return _possibleConstructorReturn(this, (Rotation.__proto__ || Object.getPrototypeOf(Rotation)).call(this, _consts.componentNames.ROTATION, graphics));\n    }\n\n    /**\n     * Get current angle\n     * @returns {Number}\n     */\n\n\n    _createClass(Rotation, [{\n        key: 'getCurrentAngle',\n        value: function getCurrentAngle() {\n            return this.getCanvasImage().angle;\n        }\n\n        /**\n         * Set angle of the image\n         *\n         *  Do not call \"this.setImageProperties\" for setting angle directly.\n         *  Before setting angle, The originX,Y of image should be set to center.\n         *      See \"http://fabricjs.com/docs/fabric.Object.html#setAngle\"\n         *\n         * @param {number} angle - Angle value\n         * @returns {Promise}\n         */\n\n    }, {\n        key: 'setAngle',\n        value: function setAngle(angle) {\n            var oldAngle = this.getCurrentAngle() % 360; // The angle is lower than 2*PI(===360 degrees)\n\n            angle %= 360;\n\n            var canvasImage = this.getCanvasImage();\n            var oldImageCenter = canvasImage.getCenterPoint();\n            canvasImage.set({ angle: angle }).setCoords();\n            this.adjustCanvasDimension();\n            var newImageCenter = canvasImage.getCenterPoint();\n            this._rotateForEachObject(oldImageCenter, newImageCenter, angle - oldAngle);\n\n            return _util.Promise.resolve(angle);\n        }\n\n        /**\n         * Rotate for each object\n         * @param {fabric.Point} oldImageCenter - Image center point before rotation\n         * @param {fabric.Point} newImageCenter - Image center point after rotation\n         * @param {number} angleDiff - Image angle difference after rotation\n         * @private\n         */\n\n    }, {\n        key: '_rotateForEachObject',\n        value: function _rotateForEachObject(oldImageCenter, newImageCenter, angleDiff) {\n            var canvas = this.getCanvas();\n            var centerDiff = {\n                x: oldImageCenter.x - newImageCenter.x,\n                y: oldImageCenter.y - newImageCenter.y\n            };\n\n            canvas.forEachObject(function (obj) {\n                var objCenter = obj.getCenterPoint();\n                var radian = _fabric2.default.util.degreesToRadians(angleDiff);\n                var newObjCenter = _fabric2.default.util.rotatePoint(objCenter, oldImageCenter, radian);\n\n                obj.set({\n                    left: newObjCenter.x - centerDiff.x,\n                    top: newObjCenter.y - centerDiff.y,\n                    angle: (obj.angle + angleDiff) % 360\n                });\n                obj.setCoords();\n            });\n            canvas.renderAll();\n        }\n\n        /**\n         * Rotate the image\n         * @param {number} additionalAngle - Additional angle\n         * @returns {Promise}\n         */\n\n    }, {\n        key: 'rotate',\n        value: function rotate(additionalAngle) {\n            var current = this.getCurrentAngle();\n\n            return this.setAngle(current + additionalAngle);\n        }\n    }]);\n\n    return Rotation;\n}(_component2.default);\n\nexports.default = Rotation;\n\n//# sourceURL=webpack://tui.ImageEditor/./src/js/component/rotation.js?");
+
+/***/ }),
+
+/***/ "./src/js/component/shape.js":
+/*!***********************************!*\
+  !*** ./src/js/component/shape.js ***!
+  \***********************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _fabric = __webpack_require__(/*! fabric */ \"fabric\");\n\nvar _fabric2 = _interopRequireDefault(_fabric);\n\nvar _component = __webpack_require__(/*! ../interface/component */ \"./src/js/interface/component.js\");\n\nvar _component2 = _interopRequireDefault(_component);\n\nvar _consts = __webpack_require__(/*! ../consts */ \"./src/js/consts.js\");\n\nvar _shapeResizeHelper = __webpack_require__(/*! ../helper/shapeResizeHelper */ \"./src/js/helper/shapeResizeHelper.js\");\n\nvar _shapeResizeHelper2 = _interopRequireDefault(_shapeResizeHelper);\n\nvar _shapeFilterFillHelper = __webpack_require__(/*! ../helper/shapeFilterFillHelper */ \"./src/js/helper/shapeFilterFillHelper.js\");\n\nvar _util = __webpack_require__(/*! ../util */ \"./src/js/util.js\");\n\nvar _tuiCodeSnippet = __webpack_require__(/*! tui-code-snippet */ \"tui-code-snippet\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } /**\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                * @author NHN Ent. FE Development Team <dl_javascript@nhn.com>\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                * @fileoverview Shape component\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                */\n\n\nvar SHAPE_INIT_OPTIONS = (0, _tuiCodeSnippet.extend)({\n    strokeWidth: 1,\n    stroke: '#000000',\n    fill: '#ffffff',\n    width: 1,\n    height: 1,\n    rx: 0,\n    ry: 0\n}, _consts.SHAPE_DEFAULT_OPTIONS);\n\nvar DEFAULT_TYPE = 'rect';\nvar DEFAULT_WIDTH = 20;\nvar DEFAULT_HEIGHT = 20;\n\n/**\n * Make fill option\n * @param {Object} options - Options to create the shape\n * @param {Object.Image} canvasImage - canvas background image\n * @param {Function} createStaticCanvas - static canvas creater\n * @returns {Object} - shape option\n * @private\n */\nfunction makeFabricFillOption(options, canvasImage, createStaticCanvas) {\n    var fillOption = options.fill;\n    var fillType = (0, _util.getFillTypeFromOption)(options.fill);\n    var fill = fillOption;\n\n    if (fillOption.color) {\n        fill = fillOption.color;\n    }\n\n    var extOption = null;\n    if (fillType === 'filter') {\n        var newStaticCanvas = createStaticCanvas();\n        extOption = (0, _shapeFilterFillHelper.makeFillPatternForFilter)(canvasImage, fillOption.filter, newStaticCanvas);\n    } else {\n        extOption = { fill: fill };\n    }\n\n    return (0, _tuiCodeSnippet.extend)({}, options, extOption);\n}\n\n/**\n * Shape\n * @class Shape\n * @param {Graphics} graphics - Graphics instance\n * @extends {Component}\n * @ignore\n */\n\nvar Shape = function (_Component) {\n    _inherits(Shape, _Component);\n\n    function Shape(graphics) {\n        _classCallCheck(this, Shape);\n\n        /**\n         * Object of The drawing shape\n         * @type {fabric.Object}\n         * @private\n         */\n        var _this = _possibleConstructorReturn(this, (Shape.__proto__ || Object.getPrototypeOf(Shape)).call(this, _consts.componentNames.SHAPE, graphics));\n\n        _this._shapeObj = null;\n\n        /**\n         * Type of the drawing shape\n         * @type {string}\n         * @private\n         */\n        _this._type = DEFAULT_TYPE;\n\n        /**\n         * Options to draw the shape\n         * @type {Object}\n         * @private\n         */\n        _this._options = (0, _tuiCodeSnippet.extend)({}, SHAPE_INIT_OPTIONS);\n\n        /**\n         * Whether the shape object is selected or not\n         * @type {boolean}\n         * @private\n         */\n        _this._isSelected = false;\n\n        /**\n         * Pointer for drawing shape (x, y)\n         * @type {Object}\n         * @private\n         */\n        _this._startPoint = {};\n\n        /**\n         * Using shortcut on drawing shape\n         * @type {boolean}\n         * @private\n         */\n        _this._withShiftKey = false;\n\n        /**\n         * Event handler list\n         * @type {Object}\n         * @private\n         */\n        _this._handlers = {\n            mousedown: _this._onFabricMouseDown.bind(_this),\n            mousemove: _this._onFabricMouseMove.bind(_this),\n            mouseup: _this._onFabricMouseUp.bind(_this),\n            keydown: _this._onKeyDown.bind(_this),\n            keyup: _this._onKeyUp.bind(_this)\n        };\n        return _this;\n    }\n\n    /**\n     * Start to draw the shape on canvas\n     * @ignore\n     */\n\n\n    _createClass(Shape, [{\n        key: 'start',\n        value: function start() {\n            var canvas = this.getCanvas();\n\n            this._isSelected = false;\n\n            canvas.defaultCursor = 'crosshair';\n            canvas.selection = false;\n            canvas.uniScaleTransform = true;\n            canvas.on({\n                'mouse:down': this._handlers.mousedown\n            });\n\n            _fabric2.default.util.addListener(document, 'keydown', this._handlers.keydown);\n            _fabric2.default.util.addListener(document, 'keyup', this._handlers.keyup);\n        }\n\n        /**\n         * End to draw the shape on canvas\n         * @ignore\n         */\n\n    }, {\n        key: 'end',\n        value: function end() {\n            var canvas = this.getCanvas();\n\n            this._isSelected = false;\n\n            canvas.defaultCursor = 'default';\n\n            canvas.selection = true;\n            canvas.uniScaleTransform = false;\n            canvas.off({\n                'mouse:down': this._handlers.mousedown\n            });\n\n            _fabric2.default.util.removeListener(document, 'keydown', this._handlers.keydown);\n            _fabric2.default.util.removeListener(document, 'keyup', this._handlers.keyup);\n        }\n\n        /**\n         * Set states of the current drawing shape\n         * @ignore\n         * @param {string} type - Shape type (ex: 'rect', 'circle')\n         * @param {Object} [options] - Shape options\n         *      @param {(ShapeFillOption | string)} [options.fill] - {@link ShapeFillOption} or \n         *        Shape foreground color (ex: '#fff', 'transparent')\n         *      @param {string} [options.stoke] - Shape outline color\n         *      @param {number} [options.strokeWidth] - Shape outline width\n         *      @param {number} [options.width] - Width value (When type option is 'rect', this options can use)\n         *      @param {number} [options.height] - Height value (When type option is 'rect', this options can use)\n         *      @param {number} [options.rx] - Radius x value (When type option is 'circle', this options can use)\n         *      @param {number} [options.ry] - Radius y value (When type option is 'circle', this options can use)\n         */\n\n    }, {\n        key: 'setStates',\n        value: function setStates(type, options) {\n            this._type = type;\n\n            if (options) {\n                this._options = (0, _tuiCodeSnippet.extend)(this._options, options);\n            }\n        }\n\n        /**\n         * Add the shape\n         * @ignore\n         * @param {string} type - Shape type (ex: 'rect', 'circle')\n         * @param {Object} options - Shape options\n         *      @param {(ShapeFillOption | string)} [options.fill] - ShapeFillOption or Shape foreground color (ex: '#fff', 'transparent') or ShapeFillOption object\n         *      @param {string} [options.stroke] - Shape outline color\n         *      @param {number} [options.strokeWidth] - Shape outline width\n         *      @param {number} [options.width] - Width value (When type option is 'rect', this options can use)\n         *      @param {number} [options.height] - Height value (When type option is 'rect', this options can use)\n         *      @param {number} [options.rx] - Radius x value (When type option is 'circle', this options can use)\n         *      @param {number} [options.ry] - Radius y value (When type option is 'circle', this options can use)\n         *      @param {number} [options.isRegular] - Whether scaling shape has 1:1 ratio or not\n         * @returns {Promise}\n         */\n\n    }, {\n        key: 'add',\n        value: function add(type, options) {\n            var _this2 = this;\n\n            return new _util.Promise(function (resolve) {\n                var canvas = _this2.getCanvas();\n                var extendOption = _this2._extendOptions(options);\n                var shapeObj = _this2._createInstance(type, extendOption);\n                var objectProperties = _this2.graphics.createObjectProperties(shapeObj);\n\n                _this2._bindEventOnShape(shapeObj);\n\n                canvas.add(shapeObj).setActiveObject(shapeObj);\n\n                _this2._resetPositionFillFilter(shapeObj);\n\n                resolve(objectProperties);\n            });\n        }\n\n        /**\n         * Change the shape\n         * @ignore\n         * @param {fabric.Object} shapeObj - Selected shape object on canvas\n         * @param {Object} options - Shape options\n         *      @param {(ShapeFillOption | string)} [options.fill] - {@link ShapeFillOption} or \n         *        Shape foreground color (ex: '#fff', 'transparent')\n         *      @param {string} [options.stroke] - Shape outline color\n         *      @param {number} [options.strokeWidth] - Shape outline width\n         *      @param {number} [options.width] - Width value (When type option is 'rect', this options can use)\n         *      @param {number} [options.height] - Height value (When type option is 'rect', this options can use)\n         *      @param {number} [options.rx] - Radius x value (When type option is 'circle', this options can use)\n         *      @param {number} [options.ry] - Radius y value (When type option is 'circle', this options can use)\n         *      @param {number} [options.isRegular] - Whether scaling shape has 1:1 ratio or not\n         * @returns {Promise}\n         */\n\n    }, {\n        key: 'change',\n        value: function change(shapeObj, options) {\n            var _this3 = this;\n\n            return new _util.Promise(function (resolve, reject) {\n                if (!(0, _util.isShape)(shapeObj)) {\n                    reject(_consts.rejectMessages.unsupportedType);\n                }\n                var hasFillOption = (0, _util.getFillTypeFromOption)(options.fill) === 'filter';\n                var _graphics = _this3.graphics,\n                    canvasImage = _graphics.canvasImage,\n                    createStaticCanvas = _graphics.createStaticCanvas;\n\n\n                shapeObj.set(hasFillOption ? makeFabricFillOption(options, canvasImage, createStaticCanvas) : options);\n\n                if (hasFillOption) {\n                    _this3._resetPositionFillFilter(shapeObj);\n                }\n\n                _this3.getCanvas().renderAll();\n                resolve();\n            });\n        }\n\n        /**\n         * make fill property for user event\n         * @param {fabric.Object} shapeObj - fabric object\n         * @returns {Object}\n         */\n\n    }, {\n        key: 'makeFillPropertyForUserEvent',\n        value: function makeFillPropertyForUserEvent(shapeObj) {\n            var fillType = (0, _util.getFillTypeFromObject)(shapeObj);\n            var fillProp = {};\n\n            if (fillType === _consts.SHAPE_FILL_TYPE.FILTER) {\n                var fillImage = (0, _shapeFilterFillHelper.getFillImageFromShape)(shapeObj);\n                var filterOption = (0, _shapeFilterFillHelper.makeFilterOptionFromFabricImage)(fillImage);\n\n                fillProp.type = fillType;\n                fillProp.filter = filterOption;\n            } else {\n                fillProp.type = _consts.SHAPE_FILL_TYPE.COLOR;\n                fillProp.color = shapeObj.fill || 'transparent';\n            }\n\n            return fillProp;\n        }\n\n        /**\n         * Copy object handling.\n         * @param {fabric.Object} shapeObj - Shape object\n         * @param {fabric.Object} originalShapeObj - Shape object\n         */\n\n    }, {\n        key: 'processForCopiedObject',\n        value: function processForCopiedObject(shapeObj, originalShapeObj) {\n            this._bindEventOnShape(shapeObj);\n\n            if ((0, _util.getFillTypeFromObject)(shapeObj) === 'filter') {\n                var fillImage = (0, _shapeFilterFillHelper.getFillImageFromShape)(originalShapeObj);\n                var filterOption = (0, _shapeFilterFillHelper.makeFilterOptionFromFabricImage)(fillImage);\n                var newStaticCanvas = this.graphics.createStaticCanvas();\n\n                shapeObj.set((0, _shapeFilterFillHelper.makeFillPatternForFilter)(this.graphics.canvasImage, filterOption, newStaticCanvas));\n                this._resetPositionFillFilter(shapeObj);\n            }\n        }\n\n        /**\n         * Create the instance of shape\n         * @param {string} type - Shape type\n         * @param {Object} options - Options to creat the shape\n         * @returns {fabric.Object} Shape instance\n         * @private\n         */\n\n    }, {\n        key: '_createInstance',\n        value: function _createInstance(type, options) {\n            var instance = void 0;\n\n            switch (type) {\n                case 'rect':\n                    instance = new _fabric2.default.Rect(options);\n                    break;\n                case 'circle':\n                    instance = new _fabric2.default.Ellipse((0, _tuiCodeSnippet.extend)({\n                        type: 'circle'\n                    }, options));\n                    break;\n                case 'triangle':\n                    instance = new _fabric2.default.Triangle(options);\n                    break;\n                default:\n                    instance = {};\n            }\n\n            return instance;\n        }\n\n        /**\n         * Get the options to create the shape\n         * @param {Object} options - Options to creat the shape\n         * @returns {Object} Shape options\n         * @private\n         */\n\n    }, {\n        key: '_extendOptions',\n        value: function _extendOptions(options) {\n            var selectionStyles = _consts.fObjectOptions.SELECTION_STYLE;\n            var _graphics2 = this.graphics,\n                canvasImage = _graphics2.canvasImage,\n                createStaticCanvas = _graphics2.createStaticCanvas;\n\n\n            options = (0, _tuiCodeSnippet.extend)({}, SHAPE_INIT_OPTIONS, this._options, selectionStyles, options);\n\n            if (options.isRegular) {\n                options.lockUniScaling = true;\n            }\n\n            return makeFabricFillOption(options, canvasImage, createStaticCanvas);\n        }\n\n        /**\n         * Bind fabric events on the creating shape object\n         * @param {fabric.Object} shapeObj - Shape object\n         * @private\n         */\n\n    }, {\n        key: '_bindEventOnShape',\n        value: function _bindEventOnShape(shapeObj) {\n            var self = this;\n            var canvas = this.getCanvas();\n\n            shapeObj.on({\n                added: function added() {\n                    self._shapeObj = this;\n                    _shapeResizeHelper2.default.setOrigins(self._shapeObj);\n                },\n                selected: function selected() {\n                    self._isSelected = true;\n                    self._shapeObj = this;\n                    canvas.uniScaleTransform = true;\n                    canvas.defaultCursor = 'default';\n                    _shapeResizeHelper2.default.setOrigins(self._shapeObj);\n                },\n                deselected: function deselected() {\n                    self._isSelected = false;\n                    self._shapeObj = null;\n                    canvas.defaultCursor = 'crosshair';\n                    canvas.uniScaleTransform = false;\n                },\n                modified: function modified() {\n                    var currentObj = self._shapeObj;\n\n                    _shapeResizeHelper2.default.adjustOriginToCenter(currentObj);\n                    _shapeResizeHelper2.default.setOrigins(currentObj);\n                },\n                modifiedInGroup: function modifiedInGroup(activeSelection) {\n                    self._fillFilterRePositionInGroupSelection(shapeObj, activeSelection);\n                },\n                moving: function moving() {\n                    self._resetPositionFillFilter(this);\n                },\n                rotating: function rotating() {\n                    self._resetPositionFillFilter(this);\n                },\n                scaling: function scaling(fEvent) {\n                    var pointer = canvas.getPointer(fEvent.e);\n                    var currentObj = self._shapeObj;\n\n                    canvas.setCursor('crosshair');\n                    _shapeResizeHelper2.default.resize(currentObj, pointer, true);\n\n                    self._resetPositionFillFilter(this);\n                }\n            });\n        }\n\n        /**\n         * MouseDown event handler on canvas\n         * @param {{target: fabric.Object, e: MouseEvent}} fEvent - Fabric event object\n         * @private\n         */\n\n    }, {\n        key: '_onFabricMouseDown',\n        value: function _onFabricMouseDown(fEvent) {\n            if (!fEvent.target) {\n                this._isSelected = false;\n                this._shapeObj = false;\n            }\n\n            if (!this._isSelected && !this._shapeObj) {\n                var canvas = this.getCanvas();\n                this._startPoint = canvas.getPointer(fEvent.e);\n\n                canvas.on({\n                    'mouse:move': this._handlers.mousemove,\n                    'mouse:up': this._handlers.mouseup\n                });\n            }\n        }\n\n        /**\n         * MouseDown event handler on canvas\n         * @param {{target: fabric.Object, e: MouseEvent}} fEvent - Fabric event object\n         * @private\n         */\n\n    }, {\n        key: '_onFabricMouseMove',\n        value: function _onFabricMouseMove(fEvent) {\n            var _this4 = this;\n\n            var canvas = this.getCanvas();\n            var pointer = canvas.getPointer(fEvent.e);\n            var startPointX = this._startPoint.x;\n            var startPointY = this._startPoint.y;\n            var width = startPointX - pointer.x;\n            var height = startPointY - pointer.y;\n            var shape = this._shapeObj;\n\n            if (!shape) {\n                this.add(this._type, {\n                    left: startPointX,\n                    top: startPointY,\n                    width: width,\n                    height: height\n                }).then(function (objectProps) {\n                    _this4.fire(_consts.eventNames.ADD_OBJECT, objectProps);\n                });\n            } else {\n                this._shapeObj.set({\n                    isRegular: this._withShiftKey\n                });\n\n                _shapeResizeHelper2.default.resize(shape, pointer);\n                canvas.renderAll();\n\n                this._resetPositionFillFilter(shape);\n            }\n        }\n\n        /**\n         * MouseUp event handler on canvas\n         * @private\n         */\n\n    }, {\n        key: '_onFabricMouseUp',\n        value: function _onFabricMouseUp() {\n            var _this5 = this;\n\n            var canvas = this.getCanvas();\n            var startPointX = this._startPoint.x;\n            var startPointY = this._startPoint.y;\n            var shape = this._shapeObj;\n\n            if (!shape) {\n                this.add(this._type, {\n                    left: startPointX,\n                    top: startPointY,\n                    width: DEFAULT_WIDTH,\n                    height: DEFAULT_HEIGHT\n                }).then(function (objectProps) {\n                    _this5.fire(_consts.eventNames.ADD_OBJECT, objectProps);\n                });\n            } else if (shape) {\n                _shapeResizeHelper2.default.adjustOriginToCenter(shape);\n                this.fire(_consts.eventNames.OBJECT_ADDED, this.graphics.createObjectProperties(shape));\n            }\n\n            canvas.off({\n                'mouse:move': this._handlers.mousemove,\n                'mouse:up': this._handlers.mouseup\n            });\n        }\n\n        /**\n         * Keydown event handler on document\n         * @param {KeyboardEvent} e - Event object\n         * @private\n         */\n\n    }, {\n        key: '_onKeyDown',\n        value: function _onKeyDown(e) {\n            if (e.keyCode === _consts.keyCodes.SHIFT) {\n                this._withShiftKey = true;\n\n                if (this._shapeObj) {\n                    this._shapeObj.isRegular = true;\n                }\n            }\n        }\n\n        /**\n         * Keyup event handler on document\n         * @param {KeyboardEvent} e - Event object\n         * @private\n         */\n\n    }, {\n        key: '_onKeyUp',\n        value: function _onKeyUp(e) {\n            if (e.keyCode === _consts.keyCodes.SHIFT) {\n                this._withShiftKey = false;\n\n                if (this._shapeObj) {\n                    this._shapeObj.isRegular = false;\n                }\n            }\n        }\n\n        /**\n         * Reset shape position and internal proportions in the filter type fill area.\n         * @param {fabric.Object} shapeObj - Shape object\n         * @private\n         */\n\n    }, {\n        key: '_resetPositionFillFilter',\n        value: function _resetPositionFillFilter(shapeObj) {\n            if ((0, _util.getFillTypeFromObject)(shapeObj) !== 'filter') {\n                return;\n            }\n\n            var fillImage = (0, _shapeFilterFillHelper.getFillImageFromShape)(shapeObj);\n\n            var _getCustomProperty = (0, _util.getCustomProperty)(fillImage, 'originalAngle'),\n                originalAngle = _getCustomProperty.originalAngle;\n\n            if (this.graphics.canvasImage.angle !== originalAngle) {\n                (0, _shapeFilterFillHelper.reMakePatternImageSource)(shapeObj, this.graphics.canvasImage);\n            }\n            var originX = shapeObj.originX,\n                originY = shapeObj.originY;\n\n\n            _shapeResizeHelper2.default.adjustOriginToCenter(shapeObj);\n\n            shapeObj.width *= shapeObj.scaleX;\n            shapeObj.height *= shapeObj.scaleY;\n            shapeObj.rx *= shapeObj.scaleX;\n            shapeObj.ry *= shapeObj.scaleY;\n            shapeObj.scaleX = 1;\n            shapeObj.scaleY = 1;\n\n            (0, _shapeFilterFillHelper.rePositionFilterTypeFillImage)(shapeObj);\n\n            (0, _util.changeOrigin)(shapeObj, {\n                originX: originX,\n                originY: originY\n            });\n        }\n\n        /**\n         * Reset filter area position within group selection.\n         * @param {fabric.Object} shapeObj - Shape object\n         * @param {fabric.ActiveSelection} activeSelection - Shape object\n         * @private\n         */\n\n    }, {\n        key: '_fillFilterRePositionInGroupSelection',\n        value: function _fillFilterRePositionInGroupSelection(shapeObj, activeSelection) {\n            if (activeSelection.scaleX !== 1 || activeSelection.scaleY !== 1) {\n                // This is necessary because the group's scale transition state affects the relative size of the fill area.\n                // The only way to reset the object transformation scale state to neutral.\n                // {@link https://github.com/fabricjs/fabric.js/issues/5372}\n                activeSelection.addWithUpdate();\n            }\n\n            var angle = shapeObj.angle,\n                left = shapeObj.left,\n                top = shapeObj.top;\n\n\n            activeSelection.realizeTransform(shapeObj);\n            this._resetPositionFillFilter(shapeObj);\n\n            shapeObj.set({\n                angle: angle,\n                left: left,\n                top: top\n            });\n        }\n    }]);\n\n    return Shape;\n}(_component2.default);\n\nexports.default = Shape;\n\n//# sourceURL=webpack://tui.ImageEditor/./src/js/component/shape.js?");
+
+/***/ }),
+
+/***/ "./src/js/component/text.js":
+/*!**********************************!*\
+  !*** ./src/js/component/text.js ***!
+  \**********************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _fabric = __webpack_require__(/*! fabric */ \"fabric\");\n\nvar _fabric2 = _interopRequireDefault(_fabric);\n\nvar _tuiCodeSnippet = __webpack_require__(/*! tui-code-snippet */ \"tui-code-snippet\");\n\nvar _tuiCodeSnippet2 = _interopRequireDefault(_tuiCodeSnippet);\n\nvar _component = __webpack_require__(/*! ../interface/component */ \"./src/js/interface/component.js\");\n\nvar _component2 = _interopRequireDefault(_component);\n\nvar _consts = __webpack_require__(/*! ../consts */ \"./src/js/consts.js\");\n\nvar _util = __webpack_require__(/*! ../util */ \"./src/js/util.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } /**\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                * @author NHN Ent. FE Development Team <dl_javascript@nhn.com>\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                * @fileoverview Text module\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                */\n\n\nvar defaultStyles = {\n    fill: '#000000',\n    left: 0,\n    top: 0\n};\nvar resetStyles = {\n    fill: '#000000',\n    fontStyle: 'normal',\n    fontWeight: 'normal',\n    textAlign: 'left',\n    underline: false\n};\n\nvar DBCLICK_TIME = 500;\n\n/**\n * Text\n * @class Text\n * @param {Graphics} graphics - Graphics instance\n * @extends {Component}\n * @ignore\n */\n\nvar Text = function (_Component) {\n    _inherits(Text, _Component);\n\n    function Text(graphics) {\n        _classCallCheck(this, Text);\n\n        /**\n         * Default text style\n         * @type {Object}\n         */\n        var _this = _possibleConstructorReturn(this, (Text.__proto__ || Object.getPrototypeOf(Text)).call(this, _consts.componentNames.TEXT, graphics));\n\n        _this._defaultStyles = defaultStyles;\n\n        /**\n         * Selected state\n         * @type {boolean}\n         */\n        _this._isSelected = false;\n\n        /**\n         * Selected text object\n         * @type {Object}\n         */\n        _this._selectedObj = {};\n\n        /**\n         * Editing text object\n         * @type {Object}\n         */\n        _this._editingObj = {};\n\n        /**\n         * Listeners for fabric event\n         * @type {Object}\n         */\n        _this._listeners = {\n            mousedown: _this._onFabricMouseDown.bind(_this),\n            select: _this._onFabricSelect.bind(_this),\n            selectClear: _this._onFabricSelectClear.bind(_this),\n            scaling: _this._onFabricScaling.bind(_this)\n        };\n\n        /**\n         * Textarea element for editing\n         * @type {HTMLElement}\n         */\n        _this._textarea = null;\n\n        /**\n         * Ratio of current canvas\n         * @type {number}\n         */\n        _this._ratio = 1;\n\n        /**\n         * Last click time\n         * @type {Date}\n         */\n        _this._lastClickTime = new Date().getTime();\n\n        /**\n         * Text object infos before editing\n         * @type {Object}\n         */\n        _this._editingObjInfos = {};\n\n        /**\n         * Previous state of editing\n         * @type {boolean}\n         */\n        _this.isPrevEditing = false;\n        return _this;\n    }\n\n    /**\n     * Start input text mode\n     */\n\n\n    _createClass(Text, [{\n        key: 'start',\n        value: function start() {\n            var _this2 = this;\n\n            var canvas = this.getCanvas();\n\n            canvas.selection = false;\n            canvas.defaultCursor = 'text';\n            canvas.on({\n                'mouse:down': this._listeners.mousedown,\n                'object:selected': this._listeners.select,\n                'before:selection:cleared': this._listeners.selectClear,\n                'object:scaling': this._listeners.scaling,\n                'text:editing': this._listeners.modify\n            });\n\n            canvas.forEachObject(function (obj) {\n                if (obj.type === 'i-text') {\n                    _this2.adjustOriginPosition(obj, 'start');\n                }\n            });\n\n            this.setCanvasRatio();\n        }\n\n        /**\n         * End input text mode\n         */\n\n    }, {\n        key: 'end',\n        value: function end() {\n            var _this3 = this;\n\n            var canvas = this.getCanvas();\n\n            canvas.selection = true;\n            canvas.defaultCursor = 'default';\n\n            canvas.forEachObject(function (obj) {\n                if (obj.type === 'i-text') {\n                    if (obj.text === '') {\n                        canvas.remove(obj);\n                    } else {\n                        _this3.adjustOriginPosition(obj, 'end');\n                    }\n                }\n            });\n\n            canvas.off({\n                'mouse:down': this._listeners.mousedown,\n                'object:selected': this._listeners.select,\n                'before:selection:cleared': this._listeners.selectClear,\n                'object:scaling': this._listeners.scaling,\n                'text:editing': this._listeners.modify\n            });\n        }\n\n        /**\n         * Adjust the origin position\n         * @param {fabric.Object} text - text object\n         * @param {string} editStatus - 'start' or 'end'\n         */\n\n    }, {\n        key: 'adjustOriginPosition',\n        value: function adjustOriginPosition(text, editStatus) {\n            var originX = 'center',\n                originY = 'center';\n\n            if (editStatus === 'start') {\n                originX = 'left';\n                originY = 'top';\n            }\n\n            var _text$getPointByOrigi = text.getPointByOrigin(originX, originY),\n                left = _text$getPointByOrigi.x,\n                top = _text$getPointByOrigi.y;\n\n            text.set({\n                left: left,\n                top: top,\n                originX: originX,\n                originY: originY\n            });\n            text.setCoords();\n        }\n\n        /**\n         * Add new text on canvas image\n         * @param {string} text - Initial input text\n         * @param {Object} options - Options for generating text\n         *     @param {Object} [options.styles] Initial styles\n         *         @param {string} [options.styles.fill] Color\n         *         @param {string} [options.styles.fontFamily] Font type for text\n         *         @param {number} [options.styles.fontSize] Size\n         *         @param {string} [options.styles.fontStyle] Type of inclination (normal / italic)\n         *         @param {string} [options.styles.fontWeight] Type of thicker or thinner looking (normal / bold)\n         *         @param {string} [options.styles.textAlign] Type of text align (left / center / right)\n         *         @param {string} [options.styles.textDecoration] Type of line (underline / line-through / overline)\n         *     @param {{x: number, y: number}} [options.position] - Initial position\n         * @returns {Promise}\n         */\n\n    }, {\n        key: 'add',\n        value: function add(text, options) {\n            var _this4 = this;\n\n            return new _util.Promise(function (resolve) {\n                var canvas = _this4.getCanvas();\n                var newText = null;\n                var selectionStyle = _consts.fObjectOptions.SELECTION_STYLE;\n                var styles = _this4._defaultStyles;\n\n                _this4._setInitPos(options.position);\n\n                if (options.styles) {\n                    styles = _tuiCodeSnippet2.default.extend(styles, options.styles);\n                }\n\n                if (!_tuiCodeSnippet2.default.isExisty(options.autofocus)) {\n                    options.autofocus = true;\n                }\n\n                newText = new _fabric2.default.IText(text, styles);\n                selectionStyle = _tuiCodeSnippet2.default.extend({}, selectionStyle, {\n                    originX: 'left',\n                    originY: 'top'\n                });\n\n                newText.set(selectionStyle);\n                newText.on({\n                    mouseup: _this4._onFabricMouseUp.bind(_this4)\n                });\n\n                canvas.add(newText);\n\n                if (options.autofocus) {\n                    newText.enterEditing();\n                    newText.selectAll();\n                }\n\n                if (!canvas.getActiveObject()) {\n                    canvas.setActiveObject(newText);\n                }\n\n                _this4.isPrevEditing = true;\n                resolve(_this4.graphics.createObjectProperties(newText));\n            });\n        }\n\n        /**\n         * Change text of activate object on canvas image\n         * @param {Object} activeObj - Current selected text object\n         * @param {string} text - Changed text\n         * @returns {Promise}\n         */\n\n    }, {\n        key: 'change',\n        value: function change(activeObj, text) {\n            var _this5 = this;\n\n            return new _util.Promise(function (resolve) {\n                activeObj.set('text', text);\n\n                _this5.getCanvas().renderAll();\n                resolve();\n            });\n        }\n\n        /**\n         * Set style\n         * @param {Object} activeObj - Current selected text object\n         * @param {Object} styleObj - Initial styles\n         *     @param {string} [styleObj.fill] Color\n         *     @param {string} [styleObj.fontFamily] Font type for text\n         *     @param {number} [styleObj.fontSize] Size\n         *     @param {string} [styleObj.fontStyle] Type of inclination (normal / italic)\n         *     @param {string} [styleObj.fontWeight] Type of thicker or thinner looking (normal / bold)\n         *     @param {string} [styleObj.textAlign] Type of text align (left / center / right)\n         *     @param {string} [styleObj.textDecoration] Type of line (underline / line-through / overline)\n         * @returns {Promise}\n         */\n\n    }, {\n        key: 'setStyle',\n        value: function setStyle(activeObj, styleObj) {\n            var _this6 = this;\n\n            return new _util.Promise(function (resolve) {\n                _tuiCodeSnippet2.default.forEach(styleObj, function (val, key) {\n                    if (activeObj[key] === val && key !== 'fontSize') {\n                        styleObj[key] = resetStyles[key] || '';\n                    }\n                }, _this6);\n\n                if ('textDecoration' in styleObj) {\n                    _tuiCodeSnippet2.default.extend(styleObj, _this6._getTextDecorationAdaptObject(styleObj.textDecoration));\n                }\n\n                activeObj.set(styleObj);\n\n                _this6.getCanvas().renderAll();\n                resolve();\n            });\n        }\n\n        /**\n         * Get the text\n         * @param {Object} activeObj - Current selected text object\n         * @returns {String} text\n         */\n\n    }, {\n        key: 'getText',\n        value: function getText(activeObj) {\n            return activeObj.text;\n        }\n\n        /**\n         * Set infos of the current selected object\n         * @param {fabric.Text} obj - Current selected text object\n         * @param {boolean} state - State of selecting\n         */\n\n    }, {\n        key: 'setSelectedInfo',\n        value: function setSelectedInfo(obj, state) {\n            this._selectedObj = obj;\n            this._isSelected = state;\n        }\n\n        /**\n         * Whether object is selected or not\n         * @returns {boolean} State of selecting\n         */\n\n    }, {\n        key: 'isSelected',\n        value: function isSelected() {\n            return this._isSelected;\n        }\n\n        /**\n         * Get current selected text object\n         * @returns {fabric.Text} Current selected text object\n         */\n\n    }, {\n        key: 'getSelectedObj',\n        value: function getSelectedObj() {\n            return this._selectedObj;\n        }\n\n        /**\n         * Set ratio value of canvas\n         */\n\n    }, {\n        key: 'setCanvasRatio',\n        value: function setCanvasRatio() {\n            var canvasElement = this.getCanvasElement();\n            var cssWidth = parseInt(canvasElement.style.maxWidth, 10);\n            var originWidth = canvasElement.width;\n            var ratio = originWidth / cssWidth;\n\n            this._ratio = ratio;\n        }\n\n        /**\n         * Get ratio value of canvas\n         * @returns {number} Ratio value\n         */\n\n    }, {\n        key: 'getCanvasRatio',\n        value: function getCanvasRatio() {\n            return this._ratio;\n        }\n\n        /**\n         * Get text decoration adapt object\n         * @param {string} textDecoration - text decoration option string\n         * @returns {object} adapt object for override\n         */\n\n    }, {\n        key: '_getTextDecorationAdaptObject',\n        value: function _getTextDecorationAdaptObject(textDecoration) {\n            return {\n                underline: textDecoration === 'underline',\n                linetrought: textDecoration === 'line-through',\n                overline: textDecoration === 'overline'\n            };\n        }\n\n        /**\n         * Set initial position on canvas image\n         * @param {{x: number, y: number}} [position] - Selected position\n         * @private\n         */\n\n    }, {\n        key: '_setInitPos',\n        value: function _setInitPos(position) {\n            position = position || this.getCanvasImage().getCenterPoint();\n\n            this._defaultStyles.left = position.x;\n            this._defaultStyles.top = position.y;\n        }\n\n        /**\n         * Input event handler\n         * @private\n         */\n\n    }, {\n        key: '_onInput',\n        value: function _onInput() {\n            var ratio = this.getCanvasRatio();\n            var obj = this._editingObj;\n            var textareaStyle = this._textarea.style;\n\n            textareaStyle.width = Math.ceil(obj.width / ratio) + 'px';\n            textareaStyle.height = Math.ceil(obj.height / ratio) + 'px';\n        }\n\n        /**\n         * Keydown event handler\n         * @private\n         */\n\n    }, {\n        key: '_onKeyDown',\n        value: function _onKeyDown() {\n            var _this7 = this;\n\n            var ratio = this.getCanvasRatio();\n            var obj = this._editingObj;\n            var textareaStyle = this._textarea.style;\n\n            setTimeout(function () {\n                obj.text(_this7._textarea.value);\n\n                textareaStyle.width = Math.ceil(obj.width / ratio) + 'px';\n                textareaStyle.height = Math.ceil(obj.height / ratio) + 'px';\n            }, 0);\n        }\n\n        /**\n         * Blur event handler\n         * @private\n         */\n\n    }, {\n        key: '_onBlur',\n        value: function _onBlur() {\n            var ratio = this.getCanvasRatio();\n            var editingObj = this._editingObj;\n            var editingObjInfos = this._editingObjInfos;\n            var textContent = this._textarea.value;\n            var transWidth = editingObj.width / ratio - editingObjInfos.width / ratio;\n            var transHeight = editingObj.height / ratio - editingObjInfos.height / ratio;\n\n            if (ratio === 1) {\n                transWidth /= 2;\n                transHeight /= 2;\n            }\n\n            this._textarea.style.display = 'none';\n\n            editingObj.set({\n                left: editingObjInfos.left + transWidth,\n                top: editingObjInfos.top + transHeight\n            });\n\n            if (textContent.length) {\n                this.getCanvas().add(editingObj);\n\n                var params = {\n                    id: _tuiCodeSnippet2.default.stamp(editingObj),\n                    type: editingObj.type,\n                    text: textContent\n                };\n\n                this.fire(_consts.eventNames.TEXT_CHANGED, params);\n            }\n        }\n\n        /**\n         * Scroll event handler\n         * @private\n         */\n\n    }, {\n        key: '_onScroll',\n        value: function _onScroll() {\n            this._textarea.scrollLeft = 0;\n            this._textarea.scrollTop = 0;\n        }\n\n        /**\n         * Fabric scaling event handler\n         * @param {fabric.Event} fEvent - Current scaling event on selected object\n         * @private\n         */\n\n    }, {\n        key: '_onFabricScaling',\n        value: function _onFabricScaling(fEvent) {\n            var obj = fEvent.target;\n            var scalingSize = obj.fontSize * obj.scaleY;\n\n            obj.fontSize = scalingSize;\n            obj.scaleX = 1;\n            obj.scaleY = 1;\n        }\n\n        /**\n         * onSelectClear handler in fabric canvas\n         * @param {{target: fabric.Object, e: MouseEvent}} fEvent - Fabric event\n         * @private\n         */\n\n    }, {\n        key: '_onFabricSelectClear',\n        value: function _onFabricSelectClear(fEvent) {\n            var obj = this.getSelectedObj();\n\n            this.isPrevEditing = true;\n\n            this.setSelectedInfo(fEvent.target, false);\n\n            if (obj) {\n                // obj is empty object at initial time, will be set fabric object\n                if (obj.text === '') {\n                    this.getCanvas().remove(obj);\n                }\n            }\n        }\n\n        /**\n         * onSelect handler in fabric canvas\n         * @param {{target: fabric.Object, e: MouseEvent}} fEvent - Fabric event\n         * @private\n         */\n\n    }, {\n        key: '_onFabricSelect',\n        value: function _onFabricSelect(fEvent) {\n            this.isPrevEditing = true;\n\n            this.setSelectedInfo(fEvent.target, true);\n        }\n\n        /**\n         * Fabric 'mousedown' event handler\n         * @param {fabric.Event} fEvent - Current mousedown event on selected object\n         * @private\n         */\n\n    }, {\n        key: '_onFabricMouseDown',\n        value: function _onFabricMouseDown(fEvent) {\n            var obj = fEvent.target;\n\n            if (obj && !obj.isType('text')) {\n                return;\n            }\n\n            if (this.isPrevEditing) {\n                this.isPrevEditing = false;\n\n                return;\n            }\n\n            this._fireAddText(fEvent);\n        }\n\n        /**\n         * Fire 'addText' event if object is not selected.\n         * @param {fabric.Event} fEvent - Current mousedown event on selected object\n         * @private\n         */\n\n    }, {\n        key: '_fireAddText',\n        value: function _fireAddText(fEvent) {\n            var obj = fEvent.target;\n            var e = fEvent.e || {};\n            var originPointer = this.getCanvas().getPointer(e);\n\n            if (!obj) {\n                this.fire(_consts.eventNames.ADD_TEXT, {\n                    originPosition: {\n                        x: originPointer.x,\n                        y: originPointer.y\n                    },\n                    clientPosition: {\n                        x: e.clientX || 0,\n                        y: e.clientY || 0\n                    }\n                });\n            }\n        }\n\n        /**\n         * Fabric mouseup event handler\n         * @param {fabric.Event} fEvent - Current mousedown event on selected object\n         * @private\n         */\n\n    }, {\n        key: '_onFabricMouseUp',\n        value: function _onFabricMouseUp(fEvent) {\n            var target = fEvent.target;\n\n            var newClickTime = new Date().getTime();\n\n            if (this._isDoubleClick(newClickTime) && !target.isEditing) {\n                target.enterEditing();\n            }\n\n            if (target.isEditing) {\n                this.fire(_consts.eventNames.TEXT_EDITING); // fire editing text event\n            }\n\n            this._lastClickTime = newClickTime;\n        }\n\n        /**\n         * Get state of firing double click event\n         * @param {Date} newClickTime - Current clicked time\n         * @returns {boolean} Whether double clicked or not\n         * @private\n         */\n\n    }, {\n        key: '_isDoubleClick',\n        value: function _isDoubleClick(newClickTime) {\n            return newClickTime - this._lastClickTime < DBCLICK_TIME;\n        }\n    }]);\n\n    return Text;\n}(_component2.default);\n\nexports.default = Text;\n\n//# sourceURL=webpack://tui.ImageEditor/./src/js/component/text.js?");
+
+/***/ }),
+
+/***/ "./src/js/consts.js":
+/*!**************************!*\
+  !*** ./src/js/consts.js ***!
+  \**************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\nexports.defaultFilterRangeValus = exports.defaultTextRangeValus = exports.defaultShapeStrokeValus = exports.defaultDrawRangeValus = exports.defaultRotateRangeValus = exports.defaultIconPath = exports.rejectMessages = exports.fObjectOptions = exports.keyCodes = exports.drawingModes = exports.eventNames = exports.commandNames = exports.CROPZONE_DEFAULT_OPTIONS = exports.SHAPE_DEFAULT_OPTIONS = exports.componentNames = exports.SHAPE_TYPE = exports.SHAPE_FILL_TYPE = exports.FILTER_NAME_VALUE_MAP = exports.HELP_MENUS = undefined;\n\nvar _util = __webpack_require__(/*! ./util */ \"./src/js/util.js\");\n\n/**\n * Editor help features\n * @type {Array.<string>}\n */\nvar HELP_MENUS = exports.HELP_MENUS = ['undo', 'redo', 'reset', 'delete', 'deleteAll'];\n\n/**\n * Filter name value map\n * @type {Object.<string, string>}\n */\n/**\n * @author NHN Ent. FE Development Team <dl_javascript@nhn.com>\n * @fileoverview Constants\n */\nvar FILTER_NAME_VALUE_MAP = exports.FILTER_NAME_VALUE_MAP = {\n    blur: 'blur',\n    blocksize: 'pixelate'\n};\n\n/**\n * Fill type for shape\n * @type {Object.<string, string>}\n */\nvar SHAPE_FILL_TYPE = exports.SHAPE_FILL_TYPE = {\n    FILTER: 'filter',\n    COLOR: 'color'\n};\n\n/**\n * Shape type list\n * @type {Array.<string>}\n */\nvar SHAPE_TYPE = exports.SHAPE_TYPE = ['rect', 'circle', 'triangle'];\n\n/**\n * Component names\n * @type {Object.<string, string>}\n */\nvar componentNames = exports.componentNames = (0, _util.keyMirror)('IMAGE_LOADER', 'CROPPER', 'FLIP', 'ROTATION', 'FREE_DRAWING', 'LINE', 'TEXT', 'ICON', 'FILTER', 'SHAPE');\n\n/**\n * Shape default option\n * @type {Object}\n */\nvar SHAPE_DEFAULT_OPTIONS = exports.SHAPE_DEFAULT_OPTIONS = {\n    lockSkewingX: true,\n    lockSkewingY: true,\n    lockUniScaling: false,\n    bringForward: true,\n    isRegular: false\n};\n\n/**\n * Cropzone default option\n * @type {Object}\n */\nvar CROPZONE_DEFAULT_OPTIONS = exports.CROPZONE_DEFAULT_OPTIONS = {\n    hasRotatingPoint: false,\n    hasBorders: false,\n    lockScalingFlip: true,\n    lockRotation: true,\n    lockSkewingX: true,\n    lockSkewingY: true\n};\n\n/**\n * Command names\n * @type {Object.<string, string>}\n */\nvar commandNames = exports.commandNames = {\n    'CLEAR_OBJECTS': 'clearObjects',\n    'LOAD_IMAGE': 'loadImage',\n    'FLIP_IMAGE': 'flip',\n    'ROTATE_IMAGE': 'rotate',\n    'ADD_OBJECT': 'addObject',\n    'REMOVE_OBJECT': 'removeObject',\n    'APPLY_FILTER': 'applyFilter',\n    'REMOVE_FILTER': 'removeFilter',\n    'ADD_ICON': 'addIcon',\n    'CHANGE_ICON_COLOR': 'changeIconColor',\n    'ADD_SHAPE': 'addShape',\n    'CHANGE_SHAPE': 'changeShape',\n    'ADD_TEXT': 'addText',\n    'CHANGE_TEXT': 'changeText',\n    'CHANGE_TEXT_STYLE': 'changeTextStyle',\n    'ADD_IMAGE_OBJECT': 'addImageObject',\n    'RESIZE_CANVAS_DIMENSION': 'resizeCanvasDimension',\n    'SET_OBJECT_PROPERTIES': 'setObjectProperties',\n    'SET_OBJECT_POSITION': 'setObjectPosition'\n};\n\n/**\n * Event names\n * @type {Object.<string, string>}\n */\nvar eventNames = exports.eventNames = {\n    OBJECT_ACTIVATED: 'objectActivated',\n    OBJECT_MOVED: 'objectMoved',\n    OBJECT_SCALED: 'objectScaled',\n    OBJECT_CREATED: 'objectCreated',\n    OBJECT_ROTATED: 'objectRotated',\n    OBJECT_ADDED: 'objectAdded',\n    TEXT_EDITING: 'textEditing',\n    TEXT_CHANGED: 'textChanged',\n    ICON_CREATE_RESIZE: 'iconCreateResize',\n    ICON_CREATE_END: 'iconCreateEnd',\n    ADD_TEXT: 'addText',\n    ADD_OBJECT: 'addObject',\n    ADD_OBJECT_AFTER: 'addObjectAfter',\n    MOUSE_DOWN: 'mousedown',\n    MOUSE_UP: 'mouseup',\n    MOUSE_MOVE: 'mousemove',\n    // UNDO/REDO Events\n    REDO_STACK_CHANGED: 'redoStackChanged',\n    UNDO_STACK_CHANGED: 'undoStackChanged',\n    SELECTION_CLEARED: 'selectionCleared',\n    SELECTION_CREATED: 'selectionCreated'\n};\n\n/**\n * Editor states\n * @type {Object.<string, string>}\n */\nvar drawingModes = exports.drawingModes = (0, _util.keyMirror)('NORMAL', 'CROPPER', 'FREE_DRAWING', 'LINE_DRAWING', 'TEXT', 'SHAPE');\n\n/**\n * Shortcut key values\n * @type {Object.<string, number>}\n */\nvar keyCodes = exports.keyCodes = {\n    Z: 90,\n    Y: 89,\n    C: 67,\n    V: 86,\n    SHIFT: 16,\n    BACKSPACE: 8,\n    DEL: 46,\n    ARROW_DOWN: 40,\n    ARROW_UP: 38\n};\n\n/**\n * Fabric object options\n * @type {Object.<string, Object>}\n */\nvar fObjectOptions = exports.fObjectOptions = {\n    SELECTION_STYLE: {\n        borderColor: 'red',\n        cornerColor: 'green',\n        cornerSize: 10,\n        originX: 'center',\n        originY: 'center',\n        transparentCorners: false\n    }\n};\n\n/**\n * Promise reject messages\n * @type {Object.<string, string>}\n */\nvar rejectMessages = exports.rejectMessages = {\n    addedObject: 'The object is already added.',\n    flip: 'The flipX and flipY setting values are not changed.',\n    invalidDrawingMode: 'This operation is not supported in the drawing mode.',\n    invalidParameters: 'Invalid parameters.',\n    isLock: 'The executing command state is locked.',\n    loadImage: 'The background image is empty.',\n    loadingImageFailed: 'Invalid image loaded.',\n    noActiveObject: 'There is no active object.',\n    noObject: 'The object is not in canvas.',\n    redo: 'The promise of redo command is reject.',\n    rotation: 'The current angle is same the old angle.',\n    undo: 'The promise of undo command is reject.',\n    unsupportedOperation: 'Unsupported operation.',\n    unsupportedType: 'Unsupported object type.'\n};\n\n/**\n * Default icon menu svg path\n * @type {Object.<string, string>}\n */\nvar defaultIconPath = exports.defaultIconPath = {\n    'icon-arrow': 'M40 12V0l24 24-24 24V36H0V12h40z',\n    'icon-arrow-2': 'M49,32 H3 V22 h46 l-18,-18 h12 l23,23 L43,50 h-12 l18,-18  z ',\n    'icon-arrow-3': 'M43.349998,27 L17.354,53 H1.949999 l25.996,-26 L1.949999,1 h15.404 L43.349998,27  z ',\n    'icon-star': 'M35,54.557999 l-19.912001,10.468 l3.804,-22.172001 l-16.108,-15.7 l22.26,-3.236 L35,3.746 l9.956,20.172001 l22.26,3.236 l-16.108,15.7 l3.804,22.172001  z ',\n    'icon-star-2': 'M17,31.212 l-7.194,4.08 l-4.728,-6.83 l-8.234,0.524 l-1.328,-8.226 l-7.644,-3.14 l2.338,-7.992 l-5.54,-6.18 l5.54,-6.176 l-2.338,-7.994 l7.644,-3.138 l1.328,-8.226 l8.234,0.522 l4.728,-6.83 L17,-24.312 l7.194,-4.08 l4.728,6.83 l8.234,-0.522 l1.328,8.226 l7.644,3.14 l-2.338,7.992 l5.54,6.178 l-5.54,6.178 l2.338,7.992 l-7.644,3.14 l-1.328,8.226 l-8.234,-0.524 l-4.728,6.83  z ',\n    'icon-polygon': 'M3,31 L19,3 h32 l16,28 l-16,28 H19  z ',\n    'icon-location': 'M24 62C8 45.503 0 32.837 0 24 0 10.745 10.745 0 24 0s24 10.745 24 24c0 8.837-8 21.503-24 38zm0-28c5.523 0 10-4.477 10-10s-4.477-10-10-10-10 4.477-10 10 4.477 10 10 10z',\n    'icon-heart': 'M49.994999,91.349998 l-6.96,-6.333 C18.324001,62.606995 2.01,47.829002 2.01,29.690998 C2.01,14.912998 13.619999,3.299999 28.401001,3.299999 c8.349,0 16.362,5.859 21.594,12 c5.229,-6.141 13.242001,-12 21.591,-12 c14.778,0 26.390999,11.61 26.390999,26.390999 c0,18.138 -16.314001,32.916 -41.025002,55.374001 l-6.96,6.285  z ',\n    'icon-bubble': 'M44 48L34 58V48H12C5.373 48 0 42.627 0 36V12C0 5.373 5.373 0 12 0h40c6.627 0 12 5.373 12 12v24c0 6.627-5.373 12-12 12h-8z'\n};\n\nvar defaultRotateRangeValus = exports.defaultRotateRangeValus = {\n    realTimeEvent: true,\n    min: -360,\n    max: 360,\n    value: 0\n};\n\nvar defaultDrawRangeValus = exports.defaultDrawRangeValus = {\n    min: 5,\n    max: 30,\n    value: 12\n};\n\nvar defaultShapeStrokeValus = exports.defaultShapeStrokeValus = {\n    realTimeEvent: true,\n    min: 2,\n    max: 300,\n    value: 3\n};\n\nvar defaultTextRangeValus = exports.defaultTextRangeValus = {\n    realTimeEvent: true,\n    min: 10,\n    max: 100,\n    value: 50\n};\n\nvar defaultFilterRangeValus = exports.defaultFilterRangeValus = {\n    tintOpacityRange: {\n        realTimeEvent: true,\n        min: 0,\n        max: 1,\n        value: 0.7,\n        useDecimal: true\n    },\n    removewhiteDistanceRange: {\n        realTimeEvent: true,\n        min: 0,\n        max: 1,\n        value: 0.2,\n        useDecimal: true\n    },\n    brightnessRange: {\n        realTimeEvent: true,\n        min: -1,\n        max: 1,\n        value: 0,\n        useDecimal: true\n    },\n    noiseRange: {\n        realTimeEvent: true,\n        min: 0,\n        max: 1000,\n        value: 100\n    },\n    pixelateRange: {\n        realTimeEvent: true,\n        min: 2,\n        max: 20,\n        value: 4\n    },\n    colorfilterThresholeRange: {\n        realTimeEvent: true,\n        min: 0,\n        max: 1,\n        value: 0.2,\n        useDecimal: true\n    },\n    blurFilterRange: {\n        value: 0.1\n    }\n};\n\n//# sourceURL=webpack://tui.ImageEditor/./src/js/consts.js?");
+
+/***/ }),
+
+/***/ "./src/js/drawingMode/cropper.js":
+/*!***************************************!*\
+  !*** ./src/js/drawingMode/cropper.js ***!
+  \***************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _drawingMode = __webpack_require__(/*! ../interface/drawingMode */ \"./src/js/interface/drawingMode.js\");\n\nvar _drawingMode2 = _interopRequireDefault(_drawingMode);\n\nvar _consts = __webpack_require__(/*! ../consts */ \"./src/js/consts.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } /**\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                * @author NHN Ent. FE Development Team <dl_javascript@nhn.com>\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                * @fileoverview CropperDrawingMode class\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                */\n\n\n/**\n * CropperDrawingMode class\n * @class\n * @ignore\n */\nvar CropperDrawingMode = function (_DrawingMode) {\n    _inherits(CropperDrawingMode, _DrawingMode);\n\n    function CropperDrawingMode() {\n        _classCallCheck(this, CropperDrawingMode);\n\n        return _possibleConstructorReturn(this, (CropperDrawingMode.__proto__ || Object.getPrototypeOf(CropperDrawingMode)).call(this, _consts.drawingModes.CROPPER));\n    }\n\n    /**\n    * start this drawing mode\n    * @param {Graphics} graphics - Graphics instance\n    * @override\n    */\n\n\n    _createClass(CropperDrawingMode, [{\n        key: 'start',\n        value: function start(graphics) {\n            var cropper = graphics.getComponent(_consts.componentNames.CROPPER);\n            cropper.start();\n        }\n\n        /**\n         * stop this drawing mode\n         * @param {Graphics} graphics - Graphics instance\n         * @override\n         */\n\n    }, {\n        key: 'end',\n        value: function end(graphics) {\n            var cropper = graphics.getComponent(_consts.componentNames.CROPPER);\n            cropper.end();\n        }\n    }]);\n\n    return CropperDrawingMode;\n}(_drawingMode2.default);\n\nexports.default = CropperDrawingMode;\n\n//# sourceURL=webpack://tui.ImageEditor/./src/js/drawingMode/cropper.js?");
+
+/***/ }),
+
+/***/ "./src/js/drawingMode/freeDrawing.js":
+/*!*******************************************!*\
+  !*** ./src/js/drawingMode/freeDrawing.js ***!
+  \*******************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _drawingMode = __webpack_require__(/*! ../interface/drawingMode */ \"./src/js/interface/drawingMode.js\");\n\nvar _drawingMode2 = _interopRequireDefault(_drawingMode);\n\nvar _consts = __webpack_require__(/*! ../consts */ \"./src/js/consts.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } /**\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                * @author NHN Ent. FE Development Team <dl_javascript@nhn.com>\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                * @fileoverview FreeDrawingMode class\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                */\n\n\n/**\n * FreeDrawingMode class\n * @class\n * @ignore\n */\nvar FreeDrawingMode = function (_DrawingMode) {\n    _inherits(FreeDrawingMode, _DrawingMode);\n\n    function FreeDrawingMode() {\n        _classCallCheck(this, FreeDrawingMode);\n\n        return _possibleConstructorReturn(this, (FreeDrawingMode.__proto__ || Object.getPrototypeOf(FreeDrawingMode)).call(this, _consts.drawingModes.FREE_DRAWING));\n    }\n\n    /**\n    * start this drawing mode\n    * @param {Graphics} graphics - Graphics instance\n    * @param {{width: ?number, color: ?string}} [options] - Brush width & color\n    * @override\n    */\n\n\n    _createClass(FreeDrawingMode, [{\n        key: 'start',\n        value: function start(graphics, options) {\n            var freeDrawing = graphics.getComponent(_consts.componentNames.FREE_DRAWING);\n            freeDrawing.start(options);\n        }\n\n        /**\n         * stop this drawing mode\n         * @param {Graphics} graphics - Graphics instance\n         * @override\n         */\n\n    }, {\n        key: 'end',\n        value: function end(graphics) {\n            var freeDrawing = graphics.getComponent(_consts.componentNames.FREE_DRAWING);\n            freeDrawing.end();\n        }\n    }]);\n\n    return FreeDrawingMode;\n}(_drawingMode2.default);\n\nexports.default = FreeDrawingMode;\n\n//# sourceURL=webpack://tui.ImageEditor/./src/js/drawingMode/freeDrawing.js?");
+
+/***/ }),
+
+/***/ "./src/js/drawingMode/lineDrawing.js":
+/*!*******************************************!*\
+  !*** ./src/js/drawingMode/lineDrawing.js ***!
+  \*******************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _drawingMode = __webpack_require__(/*! ../interface/drawingMode */ \"./src/js/interface/drawingMode.js\");\n\nvar _drawingMode2 = _interopRequireDefault(_drawingMode);\n\nvar _consts = __webpack_require__(/*! ../consts */ \"./src/js/consts.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } /**\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                * @author NHN Ent. FE Development Team <dl_javascript@nhn.com>\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                * @fileoverview LineDrawingMode class\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                */\n\n\n/**\n * LineDrawingMode class\n * @class\n * @ignore\n */\nvar LineDrawingMode = function (_DrawingMode) {\n    _inherits(LineDrawingMode, _DrawingMode);\n\n    function LineDrawingMode() {\n        _classCallCheck(this, LineDrawingMode);\n\n        return _possibleConstructorReturn(this, (LineDrawingMode.__proto__ || Object.getPrototypeOf(LineDrawingMode)).call(this, _consts.drawingModes.LINE_DRAWING));\n    }\n\n    /**\n    * start this drawing mode\n    * @param {Graphics} graphics - Graphics instance\n    * @param {{width: ?number, color: ?string}} [options] - Brush width & color\n    * @override\n    */\n\n\n    _createClass(LineDrawingMode, [{\n        key: 'start',\n        value: function start(graphics, options) {\n            var lineDrawing = graphics.getComponent(_consts.componentNames.LINE);\n            lineDrawing.start(options);\n        }\n\n        /**\n         * stop this drawing mode\n         * @param {Graphics} graphics - Graphics instance\n         * @override\n         */\n\n    }, {\n        key: 'end',\n        value: function end(graphics) {\n            var lineDrawing = graphics.getComponent(_consts.componentNames.LINE);\n            lineDrawing.end();\n        }\n    }]);\n\n    return LineDrawingMode;\n}(_drawingMode2.default);\n\nexports.default = LineDrawingMode;\n\n//# sourceURL=webpack://tui.ImageEditor/./src/js/drawingMode/lineDrawing.js?");
+
+/***/ }),
+
+/***/ "./src/js/drawingMode/shape.js":
+/*!*************************************!*\
+  !*** ./src/js/drawingMode/shape.js ***!
+  \*************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _drawingMode = __webpack_require__(/*! ../interface/drawingMode */ \"./src/js/interface/drawingMode.js\");\n\nvar _drawingMode2 = _interopRequireDefault(_drawingMode);\n\nvar _consts = __webpack_require__(/*! ../consts */ \"./src/js/consts.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } /**\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                * @author NHN Ent. FE Development Team <dl_javascript@nhn.com>\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                * @fileoverview ShapeDrawingMode class\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                */\n\n\n/**\n * ShapeDrawingMode class\n * @class\n * @ignore\n */\nvar ShapeDrawingMode = function (_DrawingMode) {\n    _inherits(ShapeDrawingMode, _DrawingMode);\n\n    function ShapeDrawingMode() {\n        _classCallCheck(this, ShapeDrawingMode);\n\n        return _possibleConstructorReturn(this, (ShapeDrawingMode.__proto__ || Object.getPrototypeOf(ShapeDrawingMode)).call(this, _consts.drawingModes.SHAPE));\n    }\n\n    /**\n    * start this drawing mode\n    * @param {Graphics} graphics - Graphics instance\n    * @override\n    */\n\n\n    _createClass(ShapeDrawingMode, [{\n        key: 'start',\n        value: function start(graphics) {\n            var shape = graphics.getComponent(_consts.componentNames.SHAPE);\n            shape.start();\n        }\n\n        /**\n         * stop this drawing mode\n         * @param {Graphics} graphics - Graphics instance\n         * @override\n         */\n\n    }, {\n        key: 'end',\n        value: function end(graphics) {\n            var shape = graphics.getComponent(_consts.componentNames.SHAPE);\n            shape.end();\n        }\n    }]);\n\n    return ShapeDrawingMode;\n}(_drawingMode2.default);\n\nexports.default = ShapeDrawingMode;\n\n//# sourceURL=webpack://tui.ImageEditor/./src/js/drawingMode/shape.js?");
+
+/***/ }),
+
+/***/ "./src/js/drawingMode/text.js":
+/*!************************************!*\
+  !*** ./src/js/drawingMode/text.js ***!
+  \************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _drawingMode = __webpack_require__(/*! ../interface/drawingMode */ \"./src/js/interface/drawingMode.js\");\n\nvar _drawingMode2 = _interopRequireDefault(_drawingMode);\n\nvar _consts = __webpack_require__(/*! ../consts */ \"./src/js/consts.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } /**\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                * @author NHN Ent. FE Development Team <dl_javascript@nhn.com>\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                * @fileoverview TextDrawingMode class\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                */\n\n\n/**\n * TextDrawingMode class\n * @class\n * @ignore\n */\nvar TextDrawingMode = function (_DrawingMode) {\n    _inherits(TextDrawingMode, _DrawingMode);\n\n    function TextDrawingMode() {\n        _classCallCheck(this, TextDrawingMode);\n\n        return _possibleConstructorReturn(this, (TextDrawingMode.__proto__ || Object.getPrototypeOf(TextDrawingMode)).call(this, _consts.drawingModes.TEXT));\n    }\n\n    /**\n    * start this drawing mode\n    * @param {Graphics} graphics - Graphics instance\n    * @override\n    */\n\n\n    _createClass(TextDrawingMode, [{\n        key: 'start',\n        value: function start(graphics) {\n            var text = graphics.getComponent(_consts.componentNames.TEXT);\n            text.start();\n        }\n\n        /**\n         * stop this drawing mode\n         * @param {Graphics} graphics - Graphics instance\n         * @override\n         */\n\n    }, {\n        key: 'end',\n        value: function end(graphics) {\n            var text = graphics.getComponent(_consts.componentNames.TEXT);\n            text.end();\n        }\n    }]);\n\n    return TextDrawingMode;\n}(_drawingMode2.default);\n\nexports.default = TextDrawingMode;\n\n//# sourceURL=webpack://tui.ImageEditor/./src/js/drawingMode/text.js?");
+
+/***/ }),
+
+/***/ "./src/js/extension/arrowLine.js":
+/*!***************************************!*\
+  !*** ./src/js/extension/arrowLine.js ***!
+  \***************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n\nvar _fabric = __webpack_require__(/*! fabric */ \"fabric\");\n\nvar _fabric2 = _interopRequireDefault(_fabric);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar ARROW_ANGLE = 30; /**\n                       * @author NHN. FE Development Team <dl_javascript@nhn.com>\n                       * @fileoverview Blur extending fabric.Image.filters.Convolute\n                       */\n\nvar CHEVRON_SIZE_RATIO = 2.7;\nvar TRIANGLE_SIZE_RATIO = 1.7;\nvar RADIAN_CONVERSION_VALUE = 180;\n\nvar ArrowLine = _fabric2.default.util.createClass(_fabric2.default.Line, /** @lends Convolute.prototype */{\n\n    /**\n     * Line type\n     * @param {String} type\n     * @default\n     */\n    type: 'line',\n\n    /**\n     * Constructor\n     * @param {Array} [points] Array of points\n     * @param {Object} [options] Options object\n     * @override\n     */\n    initialize: function initialize(points) {\n        var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n        this.callSuper('initialize', points, options);\n\n        this.arrowType = options.arrowType;\n    },\n\n\n    /**\n     * Render ArrowLine\n     * @private\n     * @override\n     */\n    _render: function _render(ctx) {\n        var _calcLinePoints = this.calcLinePoints(),\n            fromX = _calcLinePoints.x1,\n            fromY = _calcLinePoints.y1,\n            toX = _calcLinePoints.x2,\n            toY = _calcLinePoints.y2;\n\n        var linePosition = {\n            fromX: fromX,\n            fromY: fromY,\n            toX: toX,\n            toY: toY\n        };\n        this.ctx = ctx;\n        ctx.lineWidth = this.strokeWidth;\n\n        this._renderBasicLinePath(linePosition);\n        this._drawDecoratorPath(linePosition);\n\n        this._renderStroke(ctx);\n    },\n\n\n    /**\n     * Render Basic line path\n     * @param {Object} linePosition - line position\n     *  @param {number} option.fromX - line start position x\n     *  @param {number} option.fromY - line start position y\n     *  @param {number} option.toX - line end position x\n     *  @param {number} option.toY - line end position y\n     * @private\n     */\n    _renderBasicLinePath: function _renderBasicLinePath(_ref) {\n        var fromX = _ref.fromX,\n            fromY = _ref.fromY,\n            toX = _ref.toX,\n            toY = _ref.toY;\n\n        this.ctx.beginPath();\n        this.ctx.moveTo(fromX, fromY);\n        this.ctx.lineTo(toX, toY);\n    },\n\n\n    /**\n     * Render Arrow Head\n     * @param {Object} linePosition - line position\n     *  @param {number} option.fromX - line start position x\n     *  @param {number} option.fromY - line start position y\n     *  @param {number} option.toX - line end position x\n     *  @param {number} option.toY - line end position y\n     * @private\n     */\n    _drawDecoratorPath: function _drawDecoratorPath(linePosition) {\n        this._drawDecoratorPathType('head', linePosition);\n        this._drawDecoratorPathType('tail', linePosition);\n    },\n\n\n    /**\n     * Render Arrow Head\n     * @param {string} type - 'head' or 'tail'\n     * @param {Object} linePosition - line position\n     *  @param {number} option.fromX - line start position x\n     *  @param {number} option.fromY - line start position y\n     *  @param {number} option.toX - line end position x\n     *  @param {number} option.toY - line end position y\n     * @private\n     */\n    _drawDecoratorPathType: function _drawDecoratorPathType(type, linePosition) {\n        switch (this.arrowType[type]) {\n            case 'triangle':\n                this._drawTrianglePath(type, linePosition);\n                break;\n            case 'chevron':\n                this._drawChevronPath(type, linePosition);\n                break;\n            default:\n                break;\n        }\n    },\n\n\n    /**\n     * Render Triangle Head\n     * @param {string} type - 'head' or 'tail'\n     * @param {Object} linePosition - line position\n     *  @param {number} option.fromX - line start position x\n     *  @param {number} option.fromY - line start position y\n     *  @param {number} option.toX - line end position x\n     *  @param {number} option.toY - line end position y\n     * @private\n     */\n    _drawTrianglePath: function _drawTrianglePath(type, linePosition) {\n        var decorateSize = this.ctx.lineWidth * TRIANGLE_SIZE_RATIO;\n\n        this._drawChevronPath(type, linePosition, decorateSize);\n        this.ctx.closePath();\n    },\n\n\n    /**\n     * Render Chevron Head\n     * @param {string} type - 'head' or 'tail'\n     * @param {Object} linePosition - line position\n     *  @param {number} option.fromX - line start position x\n     *  @param {number} option.fromY - line start position y\n     *  @param {number} option.toX - line end position x\n     *  @param {number} option.toY - line end position y\n     * @param {number} decorateSize - decorate size\n     * @private\n     */\n    _drawChevronPath: function _drawChevronPath(type, _ref2, decorateSize) {\n        var _this = this;\n\n        var fromX = _ref2.fromX,\n            fromY = _ref2.fromY,\n            toX = _ref2.toX,\n            toY = _ref2.toY;\n        var ctx = this.ctx;\n\n        if (!decorateSize) {\n            decorateSize = this.ctx.lineWidth * CHEVRON_SIZE_RATIO;\n        }\n\n        var _ref3 = type === 'head' ? [fromX, fromY] : [toX, toY],\n            standardX = _ref3[0],\n            standardY = _ref3[1];\n\n        var _ref4 = type === 'head' ? [toX, toY] : [fromX, fromY],\n            compareX = _ref4[0],\n            compareY = _ref4[1];\n\n        var angle = Math.atan2(compareY - standardY, compareX - standardX) * RADIAN_CONVERSION_VALUE / Math.PI;\n        var rotatedPosition = function rotatedPosition(changeAngle) {\n            return _this.getRotatePosition(decorateSize, changeAngle, {\n                x: standardX,\n                y: standardY\n            });\n        };\n\n        ctx.moveTo.apply(ctx, rotatedPosition(angle + ARROW_ANGLE));\n        ctx.lineTo(standardX, standardY);\n        ctx.lineTo.apply(ctx, rotatedPosition(angle - ARROW_ANGLE));\n    },\n\n\n    /**\n     * return position from change angle.\n     * @param {number} distance - change distance\n     * @param {number} angle - change angle\n     * @param {Object} referencePosition - reference position\n     * @returns {Array}\n     * @private\n     */\n    getRotatePosition: function getRotatePosition(distance, angle, referencePosition) {\n        var radian = angle * Math.PI / RADIAN_CONVERSION_VALUE;\n        var x = referencePosition.x,\n            y = referencePosition.y;\n\n\n        return [distance * Math.cos(radian) + x, distance * Math.sin(radian) + y];\n    }\n});\n\nexports.default = ArrowLine;\n\n//# sourceURL=webpack://tui.ImageEditor/./src/js/extension/arrowLine.js?");
+
+/***/ }),
+
+/***/ "./src/js/extension/colorFilter.js":
+/*!*****************************************!*\
+  !*** ./src/js/extension/colorFilter.js ***!
+  \*****************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n\nvar _fabric = __webpack_require__(/*! fabric */ \"fabric\");\n\nvar _fabric2 = _interopRequireDefault(_fabric);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * ColorFilter object\n * @class ColorFilter\n * @extends {fabric.Image.filters.BaseFilter}\n * @ignore\n */\nvar ColorFilter = _fabric2.default.util.createClass(_fabric2.default.Image.filters.BaseFilter, /** @lends BaseFilter.prototype */{\n    /**\n     * Filter type\n     * @param {String} type\n     * @default\n     */\n    type: 'ColorFilter',\n\n    /**\n     * Constructor\n     * @member fabric.Image.filters.ColorFilter.prototype\n     * @param {Object} [options] Options object\n     * @param {Number} [options.color='#FFFFFF'] Value of color (0...255)\n     * @param {Number} [options.threshold=45] Value of threshold (0...255)\n     * @override\n     */\n    initialize: function initialize(options) {\n        if (!options) {\n            options = {};\n        }\n        this.color = options.color || '#FFFFFF';\n        this.threshold = options.threshold || 45;\n        this.x = options.x || null;\n        this.y = options.y || null;\n    },\n\n\n    /**\n     * Applies filter to canvas element\n     * @param {Object} canvas Canvas object passed by fabric\n     */\n    applyTo: function applyTo(canvas) {\n        // eslint-disable-line\n        var canvasEl = canvas.canvasEl;\n\n        var context = canvasEl.getContext('2d');\n        var imageData = context.getImageData(0, 0, canvasEl.width, canvasEl.height);\n        var data = imageData.data;\n        var threshold = this.threshold;\n\n        var filterColor = _fabric2.default.Color.sourceFromHex(this.color);\n        var i = void 0,\n            len = void 0;\n\n        if (this.x && this.y) {\n            filterColor = this._getColor(imageData, this.x, this.y);\n        }\n\n        for (i = 0, len = data.length; i < len; i += 4) {\n            if (this._isOutsideThreshold(data[i], filterColor[0], threshold) || this._isOutsideThreshold(data[i + 1], filterColor[1], threshold) || this._isOutsideThreshold(data[i + 2], filterColor[2], threshold)) {\n                continue;\n            }\n            data[i] = data[i + 1] = data[i + 2] = data[i + 3] = 0;\n        }\n        context.putImageData(imageData, 0, 0);\n    },\n\n\n    /**\n     * Check color if it is within threshold\n     * @param {Number} color1 source color\n     * @param {Number} color2 filtering color\n     * @param {Number} threshold threshold\n     * @returns {boolean} true if within threshold or false\n     */\n    _isOutsideThreshold: function _isOutsideThreshold(color1, color2, threshold) {\n        var diff = color1 - color2;\n\n        return Math.abs(diff) > threshold;\n    },\n\n\n    /**\n     * Get color at (x, y)\n     * @param {Object} imageData of canvas\n     * @param {Number} x left position\n     * @param {Number} y top position\n     * @returns {Array} color array\n     */\n    _getColor: function _getColor(imageData, x, y) {\n        var color = [0, 0, 0, 0];\n        var data = imageData.data,\n            width = imageData.width;\n\n        var bytes = 4;\n        var position = (width * y + x) * bytes;\n\n        color[0] = data[position];\n        color[1] = data[position + 1];\n        color[2] = data[position + 2];\n        color[3] = data[position + 3];\n\n        return color;\n    }\n}); /**\n     * @author NHN Ent. FE Development Team <dl_javascript@nhn.com>\n     * @fileoverview ColorFilter extending fabric.Image.filters.BaseFilter\n     */\nexports.default = ColorFilter;\n\n//# sourceURL=webpack://tui.ImageEditor/./src/js/extension/colorFilter.js?");
+
+/***/ }),
+
+/***/ "./src/js/extension/cropzone.js":
+/*!**************************************!*\
+  !*** ./src/js/extension/cropzone.js ***!
+  \**************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n\nvar _tuiCodeSnippet = __webpack_require__(/*! tui-code-snippet */ \"tui-code-snippet\");\n\nvar _tuiCodeSnippet2 = _interopRequireDefault(_tuiCodeSnippet);\n\nvar _fabric = __webpack_require__(/*! fabric */ \"fabric\");\n\nvar _fabric2 = _interopRequireDefault(_fabric);\n\nvar _util = __webpack_require__(/*! ../util */ \"./src/js/util.js\");\n\nvar _consts = __webpack_require__(/*! ../consts */ \"./src/js/consts.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } /**\n                                                                                                                                                                                                                   * @author NHN Ent. FE Development Team <dl_javascript@nhn.com>\n                                                                                                                                                                                                                   * @fileoverview Cropzone extending fabric.Rect\n                                                                                                                                                                                                                   */\n\n\nvar CORNER_TYPE_TOP_LEFT = 'tl';\nvar CORNER_TYPE_TOP_RIGHT = 'tr';\nvar CORNER_TYPE_MIDDLE_TOP = 'mt';\nvar CORNER_TYPE_MIDDLE_LEFT = 'ml';\nvar CORNER_TYPE_MIDDLE_RIGHT = 'mr';\nvar CORNER_TYPE_MIDDLE_BOTTOM = 'mb';\nvar CORNER_TYPE_BOTTOM_LEFT = 'bl';\nvar CORNER_TYPE_BOTTOM_RIGHT = 'br';\nvar CORNER_TYPE_LIST = [CORNER_TYPE_TOP_LEFT, CORNER_TYPE_TOP_RIGHT, CORNER_TYPE_MIDDLE_TOP, CORNER_TYPE_MIDDLE_LEFT, CORNER_TYPE_MIDDLE_RIGHT, CORNER_TYPE_MIDDLE_BOTTOM, CORNER_TYPE_BOTTOM_LEFT, CORNER_TYPE_BOTTOM_RIGHT];\nvar NOOP_FUNCTION = function NOOP_FUNCTION() {};\n\n/**\n * Align with cropzone ratio\n * @param {string} selectedCorner - selected corner type\n * @returns {{width: number, height: number}}\n * @private\n */\nfunction cornerTypeValid(selectedCorner) {\n    return CORNER_TYPE_LIST.indexOf(selectedCorner) >= 0;\n}\n\n/**\n * return scale basis type\n * @param {number} diffX - X distance of the cursor and corner.\n * @param {number} diffY - Y distance of the cursor and corner.\n * @returns {string}\n * @private\n */\nfunction getScaleBasis(diffX, diffY) {\n    return diffX > diffY ? 'width' : 'height';\n}\n\n/**\n * Cropzone object\n * Issue: IE7, 8(with excanvas)\n *  - Cropzone is a black zone without transparency.\n * @class Cropzone\n * @extends {fabric.Rect}\n * @ignore\n */\nvar Cropzone = _fabric2.default.util.createClass(_fabric2.default.Rect, /** @lends Cropzone.prototype */{\n    /**\n     * Constructor\n     * @param {Object} canvas canvas\n     * @param {Object} options Options object\n     * @param {Object} extendsOptions object for extends \"options\" \n     * @override\n     */\n    initialize: function initialize(canvas, options, extendsOptions) {\n        options = _tuiCodeSnippet2.default.extend(options, extendsOptions);\n        options.type = 'cropzone';\n\n        this.callSuper('initialize', options);\n        this._addEventHandler();\n\n        this.canvas = canvas;\n        this.options = options;\n    },\n    canvasEventDelegation: function canvasEventDelegation(eventName) {\n        var delegationState = 'unregisted';\n        var isRegisted = this.canvasEventTrigger[eventName] !== NOOP_FUNCTION;\n        if (isRegisted) {\n            delegationState = 'registed';\n        } else if ([_consts.eventNames.OBJECT_MOVED, _consts.eventNames.OBJECT_SCALED].indexOf(eventName) < 0) {\n            delegationState = 'none';\n        }\n\n        return delegationState;\n    },\n    canvasEventRegister: function canvasEventRegister(eventName, eventTrigger) {\n        this.canvasEventTrigger[eventName] = eventTrigger;\n    },\n    _addEventHandler: function _addEventHandler() {\n        var _canvasEventTrigger;\n\n        this.canvasEventTrigger = (_canvasEventTrigger = {}, _defineProperty(_canvasEventTrigger, _consts.eventNames.OBJECT_MOVED, NOOP_FUNCTION), _defineProperty(_canvasEventTrigger, _consts.eventNames.OBJECT_SCALED, NOOP_FUNCTION), _canvasEventTrigger);\n        this.on({\n            'moving': this._onMoving.bind(this),\n            'scaling': this._onScaling.bind(this)\n        });\n    },\n    _renderCropzone: function _renderCropzone(ctx) {\n        var cropzoneDashLineWidth = 7;\n        var cropzoneDashLineOffset = 7;\n\n        // Calc original scale\n        var originalFlipX = this.flipX ? -1 : 1;\n        var originalFlipY = this.flipY ? -1 : 1;\n        var originalScaleX = originalFlipX / this.scaleX;\n        var originalScaleY = originalFlipY / this.scaleY;\n\n        // Set original scale\n        ctx.scale(originalScaleX, originalScaleY);\n\n        // Render outer rect\n        this._fillOuterRect(ctx, 'rgba(0, 0, 0, 0.5)');\n\n        if (this.options.lineWidth) {\n            this._fillInnerRect(ctx);\n            this._strokeBorder(ctx, 'rgb(255, 255, 255)', {\n                lineWidth: this.options.lineWidth\n            });\n        } else {\n            // Black dash line\n            this._strokeBorder(ctx, 'rgb(0, 0, 0)', {\n                lineDashWidth: cropzoneDashLineWidth\n            });\n\n            // White dash line\n            this._strokeBorder(ctx, 'rgb(255, 255, 255)', {\n                lineDashWidth: cropzoneDashLineWidth,\n                lineDashOffset: cropzoneDashLineOffset\n            });\n        }\n\n        // Reset scale\n        ctx.scale(1 / originalScaleX, 1 / originalScaleY);\n    },\n\n\n    /**\n     * Render Crop-zone\n     * @private\n     * @override\n     */\n    _render: function _render(ctx) {\n        this.callSuper('_render', ctx);\n\n        this._renderCropzone(ctx);\n    },\n\n\n    /**\n     * Cropzone-coordinates with outer rectangle\n     *\n     *     x0     x1         x2      x3\n     *  y0 +--------------------------+\n     *     |///////|//////////|///////|    // <--- \"Outer-rectangle\"\n     *     |///////|//////////|///////|\n     *  y1 +-------+----------+-------+\n     *     |///////| Cropzone |///////|    Cropzone is the \"Inner-rectangle\"\n     *     |///////|  (0, 0)  |///////|    Center point (0, 0)\n     *  y2 +-------+----------+-------+\n     *     |///////|//////////|///////|\n     *     |///////|//////////|///////|\n     *  y3 +--------------------------+\n     *\n     * @typedef {{x: Array<number>, y: Array<number>}} cropzoneCoordinates\n     * @ignore\n     */\n\n    /**\n     * Fill outer rectangle\n     * @param {CanvasRenderingContext2D} ctx - Context\n     * @param {string|CanvasGradient|CanvasPattern} fillStyle - Fill-style\n     * @private\n     */\n    _fillOuterRect: function _fillOuterRect(ctx, fillStyle) {\n        var _getCoordinates = this._getCoordinates(),\n            x = _getCoordinates.x,\n            y = _getCoordinates.y;\n\n        ctx.save();\n        ctx.fillStyle = fillStyle;\n        ctx.beginPath();\n\n        // Outer rectangle\n        // Numbers are +/-1 so that overlay edges don't get blurry.\n        ctx.moveTo(x[0] - 1, y[0] - 1);\n        ctx.lineTo(x[3] + 1, y[0] - 1);\n        ctx.lineTo(x[3] + 1, y[3] + 1);\n        ctx.lineTo(x[0] - 1, y[3] + 1);\n        ctx.lineTo(x[0] - 1, y[0] - 1);\n        ctx.closePath();\n\n        // Inner rectangle\n        ctx.moveTo(x[1], y[1]);\n        ctx.lineTo(x[1], y[2]);\n        ctx.lineTo(x[2], y[2]);\n        ctx.lineTo(x[2], y[1]);\n        ctx.lineTo(x[1], y[1]);\n        ctx.closePath();\n\n        ctx.fill();\n        ctx.restore();\n    },\n\n\n    /**\n     * Draw Inner grid line\n     * @param {CanvasRenderingContext2D} ctx - Context\n     * @private\n     */\n    _fillInnerRect: function _fillInnerRect(ctx) {\n        var _getCoordinates2 = this._getCoordinates(),\n            outerX = _getCoordinates2.x,\n            outerY = _getCoordinates2.y;\n\n        var x = this._caculateInnerPosition(outerX, (outerX[2] - outerX[1]) / 3);\n        var y = this._caculateInnerPosition(outerY, (outerY[2] - outerY[1]) / 3);\n\n        ctx.save();\n        ctx.strokeStyle = 'rgba(255, 255, 255, 0.7)';\n        ctx.lineWidth = this.options.lineWidth;\n        ctx.beginPath();\n\n        ctx.moveTo(x[0], y[1]);\n        ctx.lineTo(x[3], y[1]);\n\n        ctx.moveTo(x[0], y[2]);\n        ctx.lineTo(x[3], y[2]);\n\n        ctx.moveTo(x[1], y[0]);\n        ctx.lineTo(x[1], y[3]);\n\n        ctx.moveTo(x[2], y[0]);\n        ctx.lineTo(x[2], y[3]);\n        ctx.stroke();\n        ctx.closePath();\n\n        ctx.restore();\n    },\n\n\n    /**\n     * Calculate Inner Position\n     * @param {Array} outer - outer position\n     * @param {number} size - interval for calculate\n     * @returns {Array} - inner position\n     * @private\n     */\n    _caculateInnerPosition: function _caculateInnerPosition(outer, size) {\n        var position = [];\n        position[0] = outer[1];\n        position[1] = outer[1] + size;\n        position[2] = outer[1] + size * 2;\n        position[3] = outer[2];\n\n        return position;\n    },\n\n\n    /**\n     * Get coordinates\n     * @returns {cropzoneCoordinates} - {@link cropzoneCoordinates}\n     * @private\n     */\n    _getCoordinates: function _getCoordinates() {\n        var canvas = this.canvas,\n            width = this.width,\n            height = this.height,\n            left = this.left,\n            top = this.top;\n\n        var halfWidth = width / 2;\n        var halfHeight = height / 2;\n        var canvasHeight = canvas.getHeight(); // fabric object\n        var canvasWidth = canvas.getWidth(); // fabric object\n\n        return {\n            x: _tuiCodeSnippet2.default.map([-(halfWidth + left), // x0\n            -halfWidth, // x1\n            halfWidth, // x2\n            halfWidth + (canvasWidth - left - width) // x3\n            ], Math.ceil),\n            y: _tuiCodeSnippet2.default.map([-(halfHeight + top), // y0\n            -halfHeight, // y1\n            halfHeight, // y2\n            halfHeight + (canvasHeight - top - height) // y3\n            ], Math.ceil)\n        };\n    },\n\n\n    /**\n     * Stroke border\n     * @param {CanvasRenderingContext2D} ctx - Context\n     * @param {string|CanvasGradient|CanvasPattern} strokeStyle - Stroke-style\n     * @param {number} lineDashWidth - Dash width\n     * @param {number} [lineDashOffset] - Dash offset\n     * @param {number} [lineWidth] - line width\n     * @private\n     */\n    _strokeBorder: function _strokeBorder(ctx, strokeStyle, _ref) {\n        var lineDashWidth = _ref.lineDashWidth,\n            lineDashOffset = _ref.lineDashOffset,\n            lineWidth = _ref.lineWidth;\n\n        var halfWidth = this.width / 2;\n        var halfHeight = this.height / 2;\n\n        ctx.save();\n        ctx.strokeStyle = strokeStyle;\n\n        if (ctx.setLineDash) {\n            ctx.setLineDash([lineDashWidth, lineDashWidth]);\n        }\n        if (lineDashOffset) {\n            ctx.lineDashOffset = lineDashOffset;\n        }\n        if (lineWidth) {\n            ctx.lineWidth = lineWidth;\n        }\n\n        ctx.beginPath();\n        ctx.moveTo(-halfWidth, -halfHeight);\n        ctx.lineTo(halfWidth, -halfHeight);\n        ctx.lineTo(halfWidth, halfHeight);\n        ctx.lineTo(-halfWidth, halfHeight);\n        ctx.lineTo(-halfWidth, -halfHeight);\n        ctx.stroke();\n\n        ctx.restore();\n    },\n\n\n    /**\n     * onMoving event listener\n     * @private\n     */\n    _onMoving: function _onMoving() {\n        var height = this.height,\n            width = this.width,\n            left = this.left,\n            top = this.top;\n\n        var maxLeft = this.canvas.getWidth() - width;\n        var maxTop = this.canvas.getHeight() - height;\n\n        this.left = (0, _util.clamp)(left, 0, maxLeft);\n        this.top = (0, _util.clamp)(top, 0, maxTop);\n\n        this.canvasEventTrigger[_consts.eventNames.OBJECT_MOVED](this);\n    },\n\n\n    /**\n     * onScaling event listener\n     * @param {{e: MouseEvent}} fEvent - Fabric event\n     * @private\n     */\n    _onScaling: function _onScaling(fEvent) {\n        var selectedCorner = fEvent.transform.corner;\n        var pointer = this.canvas.getPointer(fEvent.e);\n        var settings = this._calcScalingSizeFromPointer(pointer, selectedCorner);\n\n        // On scaling cropzone,\n        // change real width and height and fix scaleFactor to 1\n        this.scale(1).set(settings);\n\n        this.canvasEventTrigger[_consts.eventNames.OBJECT_SCALED](this);\n    },\n\n\n    /**\n     * Calc scaled size from mouse pointer with selected corner\n     * @param {{x: number, y: number}} pointer - Mouse position\n     * @param {string} selectedCorner - selected corner type\n     * @returns {Object} Having left or(and) top or(and) width or(and) height.\n     * @private\n     */\n    _calcScalingSizeFromPointer: function _calcScalingSizeFromPointer(pointer, selectedCorner) {\n        var isCornerTypeValid = cornerTypeValid(selectedCorner);\n\n        return isCornerTypeValid && this._resizeCropZone(pointer, selectedCorner);\n    },\n\n\n    /**\n     * Align with cropzone ratio\n     * @param {number} width - cropzone width\n     * @param {number} height - cropzone height\n     * @param {number} maxWidth - limit max width\n     * @param {number} maxHeight - limit max height\n     * @param {number} scaleTo - cropzone ratio\n     * @returns {{width: number, height: number}}\n     * @private\n     */\n    adjustRatioCropzoneSize: function adjustRatioCropzoneSize(_ref2) {\n        var width = _ref2.width,\n            height = _ref2.height,\n            leftMaker = _ref2.leftMaker,\n            topMaker = _ref2.topMaker,\n            maxWidth = _ref2.maxWidth,\n            maxHeight = _ref2.maxHeight,\n            scaleTo = _ref2.scaleTo;\n\n        width = maxWidth ? (0, _util.clamp)(width, 1, maxWidth) : width;\n        height = maxHeight ? (0, _util.clamp)(height, 1, maxHeight) : height;\n\n        if (!this.presetRatio) {\n            return {\n                width: width,\n                height: height,\n                left: leftMaker(width),\n                top: topMaker(height)\n            };\n        }\n\n        if (scaleTo === 'width') {\n            height = width / this.presetRatio;\n        } else {\n            width = height * this.presetRatio;\n        }\n\n        var maxScaleFactor = Math.min(maxWidth / width, maxHeight / height);\n        if (maxScaleFactor <= 1) {\n            var _map = [width, height].map(function (v) {\n                return v * maxScaleFactor;\n            });\n\n            width = _map[0];\n            height = _map[1];\n        }\n\n        return {\n            width: width,\n            height: height,\n            left: leftMaker(width),\n            top: topMaker(height)\n        };\n    },\n\n\n    /**\n     * Get dimension last state cropzone\n     * @returns {{rectTop: number, rectLeft: number, rectWidth: number, rectHeight: number}}\n     * @private\n     */\n    _getCropzoneRectInfo: function _getCropzoneRectInfo() {\n        var _canvas = this.canvas,\n            canvasWidth = _canvas.width,\n            canvasHeight = _canvas.height;\n\n        var _getBoundingRect = this.getBoundingRect(false, true),\n            rectTop = _getBoundingRect.top,\n            rectLeft = _getBoundingRect.left,\n            rectWidth = _getBoundingRect.width,\n            rectHeight = _getBoundingRect.height;\n\n        return {\n            rectTop: rectTop,\n            rectLeft: rectLeft,\n            rectWidth: rectWidth,\n            rectHeight: rectHeight,\n            rectRight: rectLeft + rectWidth,\n            rectBottom: rectTop + rectHeight,\n            canvasWidth: canvasWidth,\n            canvasHeight: canvasHeight\n        };\n    },\n\n\n    /**\n     * Calc scaling dimension\n     * @param {Object} position - Mouse position\n     * @param {string} corner - corner type\n     * @returns {{left: number, top: number, width: number, height: number}}\n     * @private\n     */\n    _resizeCropZone: function _resizeCropZone(_ref3, corner) {\n        var x = _ref3.x,\n            y = _ref3.y;\n\n        var _getCropzoneRectInfo2 = this._getCropzoneRectInfo(),\n            rectWidth = _getCropzoneRectInfo2.rectWidth,\n            rectHeight = _getCropzoneRectInfo2.rectHeight,\n            rectTop = _getCropzoneRectInfo2.rectTop,\n            rectLeft = _getCropzoneRectInfo2.rectLeft,\n            rectBottom = _getCropzoneRectInfo2.rectBottom,\n            rectRight = _getCropzoneRectInfo2.rectRight,\n            canvasWidth = _getCropzoneRectInfo2.canvasWidth,\n            canvasHeight = _getCropzoneRectInfo2.canvasHeight;\n\n        var resizeInfoMap = {\n            tl: {\n                width: rectRight - x,\n                height: rectBottom - y,\n                leftMaker: function leftMaker(newWidth) {\n                    return rectRight - newWidth;\n                },\n                topMaker: function topMaker(newHeight) {\n                    return rectBottom - newHeight;\n                },\n                maxWidth: rectRight,\n                maxHeight: rectBottom,\n                scaleTo: getScaleBasis(rectLeft - x, rectTop - y)\n            },\n            tr: {\n                width: x - rectLeft,\n                height: rectBottom - y,\n                leftMaker: function leftMaker() {\n                    return rectLeft;\n                },\n                topMaker: function topMaker(newHeight) {\n                    return rectBottom - newHeight;\n                },\n                maxWidth: canvasWidth - rectLeft,\n                maxHeight: rectBottom,\n                scaleTo: getScaleBasis(x - rectRight, rectTop - y)\n            },\n            mt: {\n                width: rectWidth,\n                height: rectBottom - y,\n                leftMaker: function leftMaker() {\n                    return rectLeft;\n                },\n                topMaker: function topMaker(newHeight) {\n                    return rectBottom - newHeight;\n                },\n                maxWidth: canvasWidth - rectLeft,\n                maxHeight: rectBottom,\n                scaleTo: 'height'\n            },\n            ml: {\n                width: rectRight - x,\n                height: rectHeight,\n                leftMaker: function leftMaker(newWidth) {\n                    return rectRight - newWidth;\n                },\n                topMaker: function topMaker() {\n                    return rectTop;\n                },\n                maxWidth: rectRight,\n                maxHeight: canvasHeight - rectTop,\n                scaleTo: 'width'\n            },\n            mr: {\n                width: x - rectLeft,\n                height: rectHeight,\n                leftMaker: function leftMaker() {\n                    return rectLeft;\n                },\n                topMaker: function topMaker() {\n                    return rectTop;\n                },\n                maxWidth: canvasWidth - rectLeft,\n                maxHeight: canvasHeight - rectTop,\n                scaleTo: 'width'\n            },\n            mb: {\n                width: rectWidth,\n                height: y - rectTop,\n                leftMaker: function leftMaker() {\n                    return rectLeft;\n                },\n                topMaker: function topMaker() {\n                    return rectTop;\n                },\n                maxWidth: canvasWidth - rectLeft,\n                maxHeight: canvasHeight - rectTop,\n                scaleTo: 'height'\n            },\n            bl: {\n                width: rectRight - x,\n                height: y - rectTop,\n                leftMaker: function leftMaker(newWidth) {\n                    return rectRight - newWidth;\n                },\n                topMaker: function topMaker() {\n                    return rectTop;\n                },\n                maxWidth: rectRight,\n                maxHeight: canvasHeight - rectTop,\n                scaleTo: getScaleBasis(rectLeft - x, y - rectBottom)\n            },\n            br: {\n                width: x - rectLeft,\n                height: y - rectTop,\n                leftMaker: function leftMaker() {\n                    return rectLeft;\n                },\n                topMaker: function topMaker() {\n                    return rectTop;\n                },\n                maxWidth: canvasWidth - rectLeft,\n                maxHeight: canvasHeight - rectTop,\n                scaleTo: getScaleBasis(x - rectRight, y - rectBottom)\n            }\n        };\n\n        return this.adjustRatioCropzoneSize(resizeInfoMap[corner]);\n    },\n\n\n    /**\n     * Return the whether this cropzone is valid\n     * @returns {boolean}\n     */\n    isValid: function isValid() {\n        return this.left >= 0 && this.top >= 0 && this.width > 0 && this.height > 0;\n    }\n});\n\nexports.default = Cropzone;\n\n//# sourceURL=webpack://tui.ImageEditor/./src/js/extension/cropzone.js?");
+
+/***/ }),
+
+/***/ "./src/js/extension/emboss.js":
+/*!************************************!*\
+  !*** ./src/js/extension/emboss.js ***!
+  \************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _fabric = __webpack_require__(/*! fabric */ \"fabric\");\n\nvar _fabric2 = _interopRequireDefault(_fabric);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Emboss object\n * @class Emboss\n * @extends {fabric.Image.filters.Convolute}\n * @ignore\n */\nvar Emboss = _fabric2.default.util.createClass(_fabric2.default.Image.filters.Convolute, /** @lends Convolute.prototype */{\n  /**\n   * Filter type\n   * @param {String} type\n   * @default\n   */\n  type: 'Emboss',\n\n  /**\n   * constructor\n   * @override\n   */\n  initialize: function initialize() {\n    var matrix = [1, 1, 1, 1, 0.7, -1, -1, -1, -1];\n    this.matrix = matrix;\n  }\n}); /**\n     * @author NHN Ent. FE Development Team <dl_javascript@nhn.com>\n     * @fileoverview Emboss extending fabric.Image.filters.Convolute\n     */\nexports.default = Emboss;\n\n//# sourceURL=webpack://tui.ImageEditor/./src/js/extension/emboss.js?");
+
+/***/ }),
+
+/***/ "./src/js/extension/mask.js":
+/*!**********************************!*\
+  !*** ./src/js/extension/mask.js ***!
+  \**********************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n\nvar _fabric = __webpack_require__(/*! fabric */ \"fabric\");\n\nvar _fabric2 = _interopRequireDefault(_fabric);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Mask object\n * @class Mask\n * @extends {fabric.Image.filters.BlendImage}\n * @ignore\n */\nvar Mask = _fabric2.default.util.createClass(_fabric2.default.Image.filters.BlendImage, /** @lends Mask.prototype */{\n    /**\n     * Apply filter to canvas element\n     * @param {Object} pipelineState - Canvas element to apply filter\n     * @override\n     */\n    applyTo: function applyTo(pipelineState) {\n        if (!this.mask) {\n            return;\n        }\n\n        var canvas = pipelineState.canvasEl;\n        var width = canvas.width,\n            height = canvas.height;\n\n        var maskCanvasEl = this._createCanvasOfMask(width, height);\n        var ctx = canvas.getContext('2d');\n        var maskCtx = maskCanvasEl.getContext('2d');\n        var imageData = ctx.getImageData(0, 0, width, height);\n\n        this._drawMask(maskCtx, canvas, ctx);\n        this._mapData(maskCtx, imageData, width, height);\n\n        pipelineState.imageData = imageData;\n    },\n\n\n    /**\n     * Create canvas of mask image\n     * @param {number} width - Width of main canvas\n     * @param {number} height - Height of main canvas\n     * @returns {HTMLElement} Canvas element\n     * @private\n     */\n    _createCanvasOfMask: function _createCanvasOfMask(width, height) {\n        var maskCanvasEl = _fabric2.default.util.createCanvasElement();\n\n        maskCanvasEl.width = width;\n        maskCanvasEl.height = height;\n\n        return maskCanvasEl;\n    },\n\n\n    /**\n     * Draw mask image on canvas element\n     * @param {Object} maskCtx - Context of mask canvas\n     * @private\n     */\n    _drawMask: function _drawMask(maskCtx) {\n        var mask = this.mask;\n\n        var maskImg = mask.getElement();\n        var angle = mask.angle,\n            left = mask.left,\n            scaleX = mask.scaleX,\n            scaleY = mask.scaleY,\n            top = mask.top;\n\n\n        maskCtx.save();\n        maskCtx.translate(left, top);\n        maskCtx.rotate(angle * Math.PI / 180);\n        maskCtx.scale(scaleX, scaleY);\n        maskCtx.drawImage(maskImg, -maskImg.width / 2, -maskImg.height / 2);\n        maskCtx.restore();\n    },\n\n\n    /**\n     * Map mask image data to source image data\n     * @param {Object} maskCtx - Context of mask canvas\n     * @param {Object} imageData - Data of source image\n     * @param {number} width - Width of main canvas\n     * @param {number} height - Height of main canvas\n     * @private\n     */\n    _mapData: function _mapData(maskCtx, imageData, width, height) {\n        var data = imageData.data,\n            imgHeight = imageData.height,\n            imgWidth = imageData.width;\n\n        var sourceData = data;\n        var len = imgWidth * imgHeight * 4;\n        var maskData = maskCtx.getImageData(0, 0, width, height).data;\n\n        for (var i = 0; i < len; i += 4) {\n            sourceData[i + 3] = maskData[i]; // adjust value of alpha data\n        }\n    }\n}); /**\n     * @author NHN Ent. FE Development Team <dl_javascript@nhn.com>\n     * @fileoverview Mask extending fabric.Image.filters.Mask\n     */\nexports.default = Mask;\n\n//# sourceURL=webpack://tui.ImageEditor/./src/js/extension/mask.js?");
+
+/***/ }),
+
+/***/ "./src/js/extension/sharpen.js":
+/*!*************************************!*\
+  !*** ./src/js/extension/sharpen.js ***!
+  \*************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _fabric = __webpack_require__(/*! fabric */ \"fabric\");\n\nvar _fabric2 = _interopRequireDefault(_fabric);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Sharpen object\n * @class Sharpen\n * @extends {fabric.Image.filters.Convolute}\n * @ignore\n */\nvar Sharpen = _fabric2.default.util.createClass(_fabric2.default.Image.filters.Convolute, /** @lends Convolute.prototype */{\n  /**\n   * Filter type\n   * @param {String} type\n   * @default\n   */\n  type: 'Sharpen',\n\n  /**\n   * constructor\n   * @override\n   */\n  initialize: function initialize() {\n    var matrix = [0, -1, 0, -1, 5, -1, 0, -1, 0];\n    this.matrix = matrix;\n  }\n}); /**\n     * @author NHN Ent. FE Development Team <dl_javascript@nhn.com>\n     * @fileoverview Sharpen extending fabric.Image.filters.Convolute\n     */\nexports.default = Sharpen;\n\n//# sourceURL=webpack://tui.ImageEditor/./src/js/extension/sharpen.js?");
+
+/***/ }),
+
+/***/ "./src/js/factory/command.js":
+/*!***********************************!*\
+  !*** ./src/js/factory/command.js ***!
+  \***********************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n\nvar _command = __webpack_require__(/*! ../interface/command */ \"./src/js/interface/command.js\");\n\nvar _command2 = _interopRequireDefault(_command);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar commands = {};\n\n/**\n * Create a command\n * @param {string} name - Command name\n * @param {...*} args - Arguments for creating command\n * @returns {Command}\n * @ignore\n */\n/**\n * @author NHN Ent. FE Development Team <dl_javascript@nhn.com>\n * @fileoverview Command factory\n */\nfunction create(name) {\n    var actions = commands[name];\n    if (actions) {\n        for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n            args[_key - 1] = arguments[_key];\n        }\n\n        return new _command2.default(actions, args);\n    }\n\n    return null;\n}\n\n/**\n * Register a command with name as a key\n * @param {Object} command - {name:{string}, execute: {function}, undo: {function}}\n * @param {string} command.name - command name\n * @param {function} command.execute - executable function\n * @param {function} command.undo - undo function\n * @ignore\n */\nfunction register(command) {\n    commands[command.name] = command;\n}\n\nexports.default = {\n    create: create,\n    register: register\n};\n\n//# sourceURL=webpack://tui.ImageEditor/./src/js/factory/command.js?");
+
+/***/ }),
+
+/***/ "./src/js/factory/errorMessage.js":
+/*!****************************************!*\
+  !*** ./src/js/factory/errorMessage.js ***!
+  \****************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n\nvar _tuiCodeSnippet = __webpack_require__(/*! tui-code-snippet */ \"tui-code-snippet\");\n\nvar _tuiCodeSnippet2 = _interopRequireDefault(_tuiCodeSnippet);\n\nvar _util = __webpack_require__(/*! ../util */ \"./src/js/util.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * @author NHN Ent. FE Development Team <dl_javascript@nhn.com>\n * @fileoverview Error-message factory\n */\nvar types = (0, _util.keyMirror)('UN_IMPLEMENTATION', 'NO_COMPONENT_NAME');\nvar messages = {\n    UN_IMPLEMENTATION: 'Should implement a method: ',\n    NO_COMPONENT_NAME: 'Should set a component name'\n};\nvar map = {\n    UN_IMPLEMENTATION: function UN_IMPLEMENTATION(methodName) {\n        return messages.UN_IMPLEMENTATION + methodName;\n    },\n    NO_COMPONENT_NAME: function NO_COMPONENT_NAME() {\n        return messages.NO_COMPONENT_NAME;\n    }\n};\n\nexports.default = {\n    types: _tuiCodeSnippet2.default.extend({}, types),\n\n    create: function create(type) {\n        type = type.toLowerCase();\n        var func = map[type];\n\n        for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n            args[_key - 1] = arguments[_key];\n        }\n\n        return func.apply(undefined, args);\n    }\n};\n\n//# sourceURL=webpack://tui.ImageEditor/./src/js/factory/errorMessage.js?");
+
+/***/ }),
+
+/***/ "./src/js/graphics.js":
+/*!****************************!*\
+  !*** ./src/js/graphics.js ***!
+  \****************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); /**\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      * @author NHN Ent. FE Development Team <dl_javascript@nhn.com>\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      * @fileoverview Graphics module\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      */\n\n\nvar _tuiCodeSnippet = __webpack_require__(/*! tui-code-snippet */ \"tui-code-snippet\");\n\nvar _tuiCodeSnippet2 = _interopRequireDefault(_tuiCodeSnippet);\n\nvar _fabric = __webpack_require__(/*! fabric */ \"fabric\");\n\nvar _fabric2 = _interopRequireDefault(_fabric);\n\nvar _imageLoader = __webpack_require__(/*! ./component/imageLoader */ \"./src/js/component/imageLoader.js\");\n\nvar _imageLoader2 = _interopRequireDefault(_imageLoader);\n\nvar _cropper = __webpack_require__(/*! ./component/cropper */ \"./src/js/component/cropper.js\");\n\nvar _cropper2 = _interopRequireDefault(_cropper);\n\nvar _flip = __webpack_require__(/*! ./component/flip */ \"./src/js/component/flip.js\");\n\nvar _flip2 = _interopRequireDefault(_flip);\n\nvar _rotation = __webpack_require__(/*! ./component/rotation */ \"./src/js/component/rotation.js\");\n\nvar _rotation2 = _interopRequireDefault(_rotation);\n\nvar _freeDrawing = __webpack_require__(/*! ./component/freeDrawing */ \"./src/js/component/freeDrawing.js\");\n\nvar _freeDrawing2 = _interopRequireDefault(_freeDrawing);\n\nvar _line = __webpack_require__(/*! ./component/line */ \"./src/js/component/line.js\");\n\nvar _line2 = _interopRequireDefault(_line);\n\nvar _text = __webpack_require__(/*! ./component/text */ \"./src/js/component/text.js\");\n\nvar _text2 = _interopRequireDefault(_text);\n\nvar _icon = __webpack_require__(/*! ./component/icon */ \"./src/js/component/icon.js\");\n\nvar _icon2 = _interopRequireDefault(_icon);\n\nvar _filter = __webpack_require__(/*! ./component/filter */ \"./src/js/component/filter.js\");\n\nvar _filter2 = _interopRequireDefault(_filter);\n\nvar _shape = __webpack_require__(/*! ./component/shape */ \"./src/js/component/shape.js\");\n\nvar _shape2 = _interopRequireDefault(_shape);\n\nvar _cropper3 = __webpack_require__(/*! ./drawingMode/cropper */ \"./src/js/drawingMode/cropper.js\");\n\nvar _cropper4 = _interopRequireDefault(_cropper3);\n\nvar _freeDrawing3 = __webpack_require__(/*! ./drawingMode/freeDrawing */ \"./src/js/drawingMode/freeDrawing.js\");\n\nvar _freeDrawing4 = _interopRequireDefault(_freeDrawing3);\n\nvar _lineDrawing = __webpack_require__(/*! ./drawingMode/lineDrawing */ \"./src/js/drawingMode/lineDrawing.js\");\n\nvar _lineDrawing2 = _interopRequireDefault(_lineDrawing);\n\nvar _shape3 = __webpack_require__(/*! ./drawingMode/shape */ \"./src/js/drawingMode/shape.js\");\n\nvar _shape4 = _interopRequireDefault(_shape3);\n\nvar _text3 = __webpack_require__(/*! ./drawingMode/text */ \"./src/js/drawingMode/text.js\");\n\nvar _text4 = _interopRequireDefault(_text3);\n\nvar _util = __webpack_require__(/*! ./util */ \"./src/js/util.js\");\n\nvar _consts = __webpack_require__(/*! ./consts */ \"./src/js/consts.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar extend = _tuiCodeSnippet2.default.extend,\n    stamp = _tuiCodeSnippet2.default.stamp,\n    isArray = _tuiCodeSnippet2.default.isArray,\n    isString = _tuiCodeSnippet2.default.isString,\n    forEachArray = _tuiCodeSnippet2.default.forEachArray,\n    forEachOwnProperties = _tuiCodeSnippet2.default.forEachOwnProperties,\n    CustomEvents = _tuiCodeSnippet2.default.CustomEvents;\n\nvar DEFAULT_CSS_MAX_WIDTH = 1000;\nvar DEFAULT_CSS_MAX_HEIGHT = 800;\nvar EXTRA_PX_FOR_PASTE = 10;\n\nvar cssOnly = {\n    cssOnly: true\n};\nvar backstoreOnly = {\n    backstoreOnly: true\n};\n\n/**\n * Graphics class\n * @class\n * @param {string|HTMLElement} wrapper - Wrapper's element or selector\n * @param {Object} [option] - Canvas max width & height of css\n *  @param {number} option.cssMaxWidth - Canvas css-max-width\n *  @param {number} option.cssMaxHeight - Canvas css-max-height\n *  @param {boolean} option.useDragAddIcon - Use dragable add in icon mode\n * @ignore\n */\n\nvar Graphics = function () {\n    function Graphics(element) {\n        var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n            cssMaxWidth = _ref.cssMaxWidth,\n            cssMaxHeight = _ref.cssMaxHeight,\n            _ref$useDragAddIcon = _ref.useDragAddIcon,\n            useDragAddIcon = _ref$useDragAddIcon === undefined ? false : _ref$useDragAddIcon;\n\n        _classCallCheck(this, Graphics);\n\n        /**\n         * Fabric image instance\n         * @type {fabric.Image}\n         */\n        this.canvasImage = null;\n\n        /**\n         * Max width of canvas elements\n         * @type {number}\n         */\n        this.cssMaxWidth = cssMaxWidth || DEFAULT_CSS_MAX_WIDTH;\n\n        /**\n         * Max height of canvas elements\n         * @type {number}\n         */\n        this.cssMaxHeight = cssMaxHeight || DEFAULT_CSS_MAX_HEIGHT;\n\n        /**\n         * Use add drag icon mode for icon component\n         * @type {boolean}\n         */\n        this.useDragAddIcon = useDragAddIcon;\n\n        /**\n         * cropper Selection Style\n         * @type {Object}\n         */\n        this.cropSelectionStyle = {};\n\n        /**\n         * target fabric object for copy paste feature\n         * @type {fabric.Object}\n         * @private\n         */\n        this.targetObjectForCopyPaste = null;\n\n        /**\n         * Image name\n         * @type {string}\n         */\n        this.imageName = '';\n\n        /**\n         * Object Map\n         * @type {Object}\n         * @private\n         */\n        this._objects = {};\n\n        /**\n         * Fabric-Canvas instance\n         * @type {fabric.Canvas}\n         * @private\n         */\n        this._canvas = null;\n\n        /**\n         * Drawing mode\n         * @type {string}\n         * @private\n         */\n        this._drawingMode = _consts.drawingModes.NORMAL;\n\n        /**\n         * DrawingMode map\n         * @type {Object.<string, DrawingMode>}\n         * @private\n         */\n        this._drawingModeMap = {};\n\n        /**\n         * Component map\n         * @type {Object.<string, Component>}\n         * @private\n         */\n        this._componentMap = {};\n\n        /**\n         * fabric event handlers\n         * @type {Object.<string, function>}\n         * @private\n         */\n        this._handler = {\n            onMouseDown: this._onMouseDown.bind(this),\n            onObjectAdded: this._onObjectAdded.bind(this),\n            onObjectRemoved: this._onObjectRemoved.bind(this),\n            onObjectMoved: this._onObjectMoved.bind(this),\n            onObjectScaled: this._onObjectScaled.bind(this),\n            onObjectModified: this._onObjectModified.bind(this),\n            onObjectRotated: this._onObjectRotated.bind(this),\n            onObjectSelected: this._onObjectSelected.bind(this),\n            onPathCreated: this._onPathCreated.bind(this),\n            onSelectionCleared: this._onSelectionCleared.bind(this),\n            onSelectionCreated: this._onSelectionCreated.bind(this)\n        };\n\n        this._setObjectCachingToFalse();\n        this._setCanvasElement(element);\n        this._createDrawingModeInstances();\n        this._createComponents();\n        this._attachCanvasEvents();\n    }\n\n    /**\n     * Destroy canvas element\n     */\n\n\n    _createClass(Graphics, [{\n        key: 'destroy',\n        value: function destroy() {\n            var wrapperEl = this._canvas.wrapperEl;\n\n\n            this._canvas.clear();\n\n            wrapperEl.parentNode.removeChild(wrapperEl);\n        }\n\n        /**\n         * Deactivates all objects on canvas\n         * @returns {Graphics} this\n         */\n\n    }, {\n        key: 'deactivateAll',\n        value: function deactivateAll() {\n            this._canvas.discardActiveObject();\n\n            return this;\n        }\n\n        /**\n         * Renders all objects on canvas\n         * @returns {Graphics} this\n         */\n\n    }, {\n        key: 'renderAll',\n        value: function renderAll() {\n            this._canvas.renderAll();\n\n            return this;\n        }\n\n        /**\n         * Adds objects on canvas\n         * @param {Object|Array} objects - objects\n         */\n\n    }, {\n        key: 'add',\n        value: function add(objects) {\n            var _canvas;\n\n            var theArgs = [];\n            if (isArray(objects)) {\n                theArgs = objects;\n            } else {\n                theArgs.push(objects);\n            }\n\n            (_canvas = this._canvas).add.apply(_canvas, theArgs);\n        }\n\n        /**\n         * Removes the object or group\n         * @param {Object} target - graphics object or group\n         * @returns {boolean} true if contains or false\n         */\n\n    }, {\n        key: 'contains',\n        value: function contains(target) {\n            return this._canvas.contains(target);\n        }\n\n        /**\n         * Gets all objects or group\n         * @returns {Array} all objects, shallow copy\n         */\n\n    }, {\n        key: 'getObjects',\n        value: function getObjects() {\n            return this._canvas.getObjects().slice();\n        }\n\n        /**\n         * Get an object by id\n         * @param {number} id - object id\n         * @returns {fabric.Object} object corresponding id\n         */\n\n    }, {\n        key: 'getObject',\n        value: function getObject(id) {\n            return this._objects[id];\n        }\n\n        /**\n         * Removes the object or group\n         * @param {Object} target - graphics object or group\n         */\n\n    }, {\n        key: 'remove',\n        value: function remove(target) {\n            this._canvas.remove(target);\n        }\n\n        /**\n         * Removes all object or group\n         * @param {boolean} includesBackground - remove the background image or not\n         * @returns {Array} all objects array which is removed\n         */\n\n    }, {\n        key: 'removeAll',\n        value: function removeAll(includesBackground) {\n            var canvas = this._canvas;\n            var objects = canvas.getObjects().slice();\n            canvas.remove.apply(canvas, this._canvas.getObjects());\n\n            if (includesBackground) {\n                canvas.clear();\n            }\n\n            return objects;\n        }\n\n        /**\n         * Removes an object or group by id\n         * @param {number} id - object id\n         * @returns {Array} removed objects\n         */\n\n    }, {\n        key: 'removeObjectById',\n        value: function removeObjectById(id) {\n            var objects = [];\n            var canvas = this._canvas;\n            var target = this.getObject(id);\n            var isValidGroup = target && target.isType('group') && !target.isEmpty();\n\n            if (isValidGroup) {\n                canvas.discardActiveObject(); // restore states for each objects\n                target.forEachObject(function (obj) {\n                    objects.push(obj);\n                    canvas.remove(obj);\n                });\n            } else if (canvas.contains(target)) {\n                objects.push(target);\n                canvas.remove(target);\n            }\n\n            return objects;\n        }\n\n        /**\n         * Get an id by object instance\n         * @param {fabric.Object} object object\n         * @returns {number} object id if it exists or null\n         */\n\n    }, {\n        key: 'getObjectId',\n        value: function getObjectId(object) {\n            var key = null;\n            for (key in this._objects) {\n                if (this._objects.hasOwnProperty(key)) {\n                    if (object === this._objects[key]) {\n                        return key;\n                    }\n                }\n            }\n\n            return null;\n        }\n\n        /**\n         * Gets an active object or group\n         * @returns {Object} active object or group instance\n         */\n\n    }, {\n        key: 'getActiveObject',\n        value: function getActiveObject() {\n            return this._canvas._activeObject;\n        }\n\n        /**\n         * Returns the object ID to delete the object.\n         * @returns {number} object id for remove\n         */\n\n    }, {\n        key: 'getActiveObjectIdForRemove',\n        value: function getActiveObjectIdForRemove() {\n            var activeObject = this.getActiveObject();\n            var type = activeObject.type,\n                left = activeObject.left,\n                top = activeObject.top;\n\n            var isSelection = type === 'activeSelection';\n\n            if (isSelection) {\n                var group = new _fabric2.default.Group([].concat(activeObject.getObjects()), {\n                    left: left,\n                    top: top\n                });\n\n                return this._addFabricObject(group);\n            }\n\n            return this.getObjectId(activeObject);\n        }\n\n        /**\n         * Verify that you are ready to erase the object.\n         * @returns {boolean} ready for object remove\n         */\n\n    }, {\n        key: 'isReadyRemoveObject',\n        value: function isReadyRemoveObject() {\n            var activeObject = this.getActiveObject();\n\n            return activeObject && !activeObject.isEditing;\n        }\n\n        /**\n         * Gets an active group object\n         * @returns {Object} active group object instance\n         */\n\n    }, {\n        key: 'getActiveObjects',\n        value: function getActiveObjects() {\n            var activeObject = this._canvas._activeObject;\n\n            return activeObject && activeObject.type === 'activeSelection' ? activeObject : null;\n        }\n\n        /**\n         * Get Active object Selection from object ids\n         * @param {Array.<Object>} objects - fabric objects\n         * @returns {Object} target - target object group\n         */\n\n    }, {\n        key: 'getActiveSelectionFromObjects',\n        value: function getActiveSelectionFromObjects(objects) {\n            var canvas = this.getCanvas();\n\n            return new _fabric2.default.ActiveSelection(objects, { canvas: canvas });\n        }\n\n        /**\n         * Activates an object or group\n         * @param {Object} target - target object or group\n         */\n\n    }, {\n        key: 'setActiveObject',\n        value: function setActiveObject(target) {\n            this._canvas.setActiveObject(target);\n        }\n\n        /**\n         * Set Crop selection style\n         * @param {Object} style - Selection styles\n         */\n\n    }, {\n        key: 'setCropSelectionStyle',\n        value: function setCropSelectionStyle(style) {\n            this.cropSelectionStyle = style;\n        }\n\n        /**\n         * Get component\n         * @param {string} name - Component name\n         * @returns {Component}\n         */\n\n    }, {\n        key: 'getComponent',\n        value: function getComponent(name) {\n            return this._componentMap[name];\n        }\n\n        /**\n         * Get current drawing mode\n         * @returns {string}\n         */\n\n    }, {\n        key: 'getDrawingMode',\n        value: function getDrawingMode() {\n            return this._drawingMode;\n        }\n\n        /**\n         * Start a drawing mode. If the current mode is not 'NORMAL', 'stopDrawingMode()' will be called first.\n         * @param {String} mode Can be one of <I>'CROPPER', 'FREE_DRAWING', 'LINE', 'TEXT', 'SHAPE'</I>\n         * @param {Object} [option] parameters of drawing mode, it's available with 'FREE_DRAWING', 'LINE_DRAWING'\n         *  @param {Number} [option.width] brush width\n         *  @param {String} [option.color] brush color\n         * @returns {boolean} true if success or false\n         */\n\n    }, {\n        key: 'startDrawingMode',\n        value: function startDrawingMode(mode, option) {\n            if (this._isSameDrawingMode(mode)) {\n                return true;\n            }\n\n            // If the current mode is not 'NORMAL', 'stopDrawingMode()' will be called first.\n            this.stopDrawingMode();\n\n            var drawingModeInstance = this._getDrawingModeInstance(mode);\n            if (drawingModeInstance && drawingModeInstance.start) {\n                drawingModeInstance.start(this, option);\n\n                this._drawingMode = mode;\n            }\n\n            return !!drawingModeInstance;\n        }\n\n        /**\n         * Stop the current drawing mode and back to the 'NORMAL' mode\n         */\n\n    }, {\n        key: 'stopDrawingMode',\n        value: function stopDrawingMode() {\n            if (this._isSameDrawingMode(_consts.drawingModes.NORMAL)) {\n                return;\n            }\n\n            var drawingModeInstance = this._getDrawingModeInstance(this.getDrawingMode());\n            if (drawingModeInstance && drawingModeInstance.end) {\n                drawingModeInstance.end(this);\n            }\n            this._drawingMode = _consts.drawingModes.NORMAL;\n        }\n\n        /**\n         * To data url from canvas\n         * @param {Object} options - options for toDataURL\n         *   @param {String} [options.format=png] The format of the output image. Either \"jpeg\" or \"png\"\n         *   @param {Number} [options.quality=1] Quality level (0..1). Only used for jpeg.\n         *   @param {Number} [options.multiplier=1] Multiplier to scale by\n         *   @param {Number} [options.left] Cropping left offset. Introduced in fabric v1.2.14\n         *   @param {Number} [options.top] Cropping top offset. Introduced in fabric v1.2.14\n         *   @param {Number} [options.width] Cropping width. Introduced in fabric v1.2.14\n         *   @param {Number} [options.height] Cropping height. Introduced in fabric v1.2.14\n         * @returns {string} A DOMString containing the requested data URI.\n         */\n\n    }, {\n        key: 'toDataURL',\n        value: function toDataURL(options) {\n            var cropper = this.getComponent(_consts.componentNames.CROPPER);\n            cropper.changeVisibility(false);\n\n            var dataUrl = this._canvas && this._canvas.toDataURL(options);\n            cropper.changeVisibility(true);\n\n            return dataUrl;\n        }\n\n        /**\n         * Save image(background) of canvas\n         * @param {string} name - Name of image\n         * @param {?fabric.Image} canvasImage - Fabric image instance\n         */\n\n    }, {\n        key: 'setCanvasImage',\n        value: function setCanvasImage(name, canvasImage) {\n            if (canvasImage) {\n                stamp(canvasImage);\n            }\n            this.imageName = name;\n            this.canvasImage = canvasImage;\n        }\n\n        /**\n         * Set css max dimension\n         * @param {{width: number, height: number}} maxDimension - Max width & Max height\n         */\n\n    }, {\n        key: 'setCssMaxDimension',\n        value: function setCssMaxDimension(maxDimension) {\n            this.cssMaxWidth = maxDimension.width || this.cssMaxWidth;\n            this.cssMaxHeight = maxDimension.height || this.cssMaxHeight;\n        }\n\n        /**\n         * Adjust canvas dimension with scaling image\n         */\n\n    }, {\n        key: 'adjustCanvasDimension',\n        value: function adjustCanvasDimension() {\n            var canvasImage = this.canvasImage.scale(1);\n\n            var _canvasImage$getBound = canvasImage.getBoundingRect(),\n                width = _canvasImage$getBound.width,\n                height = _canvasImage$getBound.height;\n\n            var maxDimension = this._calcMaxDimension(width, height);\n\n            this.setCanvasCssDimension({\n                width: '100%',\n                height: '100%', // Set height '' for IE9\n                'max-width': maxDimension.width + 'px',\n                'max-height': maxDimension.height + 'px'\n            });\n\n            this.setCanvasBackstoreDimension({\n                width: width,\n                height: height\n            });\n            this._canvas.centerObject(canvasImage);\n        }\n\n        /**\n         * Set canvas dimension - css only\n         *  {@link http://fabricjs.com/docs/fabric.Canvas.html#setDimensions}\n         * @param {Object} dimension - Canvas css dimension\n         */\n\n    }, {\n        key: 'setCanvasCssDimension',\n        value: function setCanvasCssDimension(dimension) {\n            this._canvas.setDimensions(dimension, cssOnly);\n        }\n\n        /**\n         * Set canvas dimension - backstore only\n         *  {@link http://fabricjs.com/docs/fabric.Canvas.html#setDimensions}\n         * @param {Object} dimension - Canvas backstore dimension\n         */\n\n    }, {\n        key: 'setCanvasBackstoreDimension',\n        value: function setCanvasBackstoreDimension(dimension) {\n            this._canvas.setDimensions(dimension, backstoreOnly);\n        }\n\n        /**\n         * Set image properties\n         * {@link http://fabricjs.com/docs/fabric.Image.html#set}\n         * @param {Object} setting - Image properties\n         * @param {boolean} [withRendering] - If true, The changed image will be reflected in the canvas\n         */\n\n    }, {\n        key: 'setImageProperties',\n        value: function setImageProperties(setting, withRendering) {\n            var canvasImage = this.canvasImage;\n\n\n            if (!canvasImage) {\n                return;\n            }\n\n            canvasImage.set(setting).setCoords();\n            if (withRendering) {\n                this._canvas.renderAll();\n            }\n        }\n\n        /**\n         * Returns canvas element of fabric.Canvas[[lower-canvas]]\n         * @returns {HTMLCanvasElement}\n         */\n\n    }, {\n        key: 'getCanvasElement',\n        value: function getCanvasElement() {\n            return this._canvas.getElement();\n        }\n\n        /**\n         * Get fabric.Canvas instance\n         * @returns {fabric.Canvas}\n         * @private\n         */\n\n    }, {\n        key: 'getCanvas',\n        value: function getCanvas() {\n            return this._canvas;\n        }\n\n        /**\n         * Get canvasImage (fabric.Image instance)\n         * @returns {fabric.Image}\n         */\n\n    }, {\n        key: 'getCanvasImage',\n        value: function getCanvasImage() {\n            return this.canvasImage;\n        }\n\n        /**\n         * Get image name\n         * @returns {string}\n         */\n\n    }, {\n        key: 'getImageName',\n        value: function getImageName() {\n            return this.imageName;\n        }\n\n        /**\n         * Add image object on canvas\n         * @param {string} imgUrl - Image url to make object\n         * @returns {Promise}\n         */\n\n    }, {\n        key: 'addImageObject',\n        value: function addImageObject(imgUrl) {\n            var _this = this;\n\n            var callback = this._callbackAfterLoadingImageObject.bind(this);\n\n            return new _util.Promise(function (resolve) {\n                _fabric2.default.Image.fromURL(imgUrl, function (image) {\n                    callback(image);\n                    resolve(_this.createObjectProperties(image));\n                }, {\n                    crossOrigin: 'Anonymous'\n                });\n            });\n        }\n\n        /**\n         * Get center position of canvas\n         * @returns {Object} {left, top}\n         */\n\n    }, {\n        key: 'getCenter',\n        value: function getCenter() {\n            return this._canvas.getCenter();\n        }\n\n        /**\n         * Get cropped rect\n         * @returns {Object} rect\n         */\n\n    }, {\n        key: 'getCropzoneRect',\n        value: function getCropzoneRect() {\n            return this.getComponent(_consts.componentNames.CROPPER).getCropzoneRect();\n        }\n\n        /**\n         * Get cropped rect\n         * @param {number} [mode] cropzone rect mode\n         */\n\n    }, {\n        key: 'setCropzoneRect',\n        value: function setCropzoneRect(mode) {\n            this.getComponent(_consts.componentNames.CROPPER).setCropzoneRect(mode);\n        }\n\n        /**\n         * Get cropped image data\n         * @param {Object} cropRect cropzone rect\n         *  @param {Number} cropRect.left left position\n         *  @param {Number} cropRect.top top position\n         *  @param {Number} cropRect.width width\n         *  @param {Number} cropRect.height height\n         * @returns {?{imageName: string, url: string}} cropped Image data\n         */\n\n    }, {\n        key: 'getCroppedImageData',\n        value: function getCroppedImageData(cropRect) {\n            return this.getComponent(_consts.componentNames.CROPPER).getCroppedImageData(cropRect);\n        }\n\n        /**\n         * Set brush option\n         * @param {Object} option brush option\n         *  @param {Number} option.width width\n         *  @param {String} option.color color like 'FFFFFF', 'rgba(0, 0, 0, 0.5)'\n         */\n\n    }, {\n        key: 'setBrush',\n        value: function setBrush(option) {\n            var drawingMode = this._drawingMode;\n            var compName = _consts.componentNames.FREE_DRAWING;\n\n            if (drawingMode === _consts.drawingModes.LINE) {\n                compName = _consts.drawingModes.LINE;\n            }\n\n            this.getComponent(compName).setBrush(option);\n        }\n\n        /**\n         * Set states of current drawing shape\n         * @param {string} type - Shape type (ex: 'rect', 'circle', 'triangle')\n         * @param {Object} [options] - Shape options\n         *      @param {(ShapeFillOption | string)} [options.fill] - {@link ShapeFillOption} or \n         *        Shape foreground color (ex: '#fff', 'transparent')\n         *      @param {string} [options.stoke] - Shape outline color\n         *      @param {number} [options.strokeWidth] - Shape outline width\n         *      @param {number} [options.width] - Width value (When type option is 'rect', this options can use)\n         *      @param {number} [options.height] - Height value (When type option is 'rect', this options can use)\n         *      @param {number} [options.rx] - Radius x value (When type option is 'circle', this options can use)\n         *      @param {number} [options.ry] - Radius y value (When type option is 'circle', this options can use)\n         *      @param {number} [options.isRegular] - Whether resizing shape has 1:1 ratio or not\n         */\n\n    }, {\n        key: 'setDrawingShape',\n        value: function setDrawingShape(type, options) {\n            this.getComponent(_consts.componentNames.SHAPE).setStates(type, options);\n        }\n\n        /**\n         * Register icon paths\n         * @param {Object} pathInfos - Path infos\n         *  @param {string} pathInfos.key - key\n         *  @param {string} pathInfos.value - value\n         */\n\n    }, {\n        key: 'registerPaths',\n        value: function registerPaths(pathInfos) {\n            this.getComponent(_consts.componentNames.ICON).registerPaths(pathInfos);\n        }\n\n        /**\n         * Change cursor style\n         * @param {string} cursorType - cursor type\n         */\n\n    }, {\n        key: 'changeCursor',\n        value: function changeCursor(cursorType) {\n            var canvas = this.getCanvas();\n            canvas.defaultCursor = cursorType;\n            canvas.renderAll();\n        }\n\n        /**\n         * Whether it has the filter or not\n         * @param {string} type - Filter type\n         * @returns {boolean} true if it has the filter\n         */\n\n    }, {\n        key: 'hasFilter',\n        value: function hasFilter(type) {\n            return this.getComponent(_consts.componentNames.FILTER).hasFilter(type);\n        }\n\n        /**\n         * Set selection style of fabric object by init option\n         * @param {Object} styles - Selection styles\n         */\n\n    }, {\n        key: 'setSelectionStyle',\n        value: function setSelectionStyle(styles) {\n            extend(_consts.fObjectOptions.SELECTION_STYLE, styles);\n        }\n\n        /**\n         * Set object properties\n         * @param {number} id - object id\n         * @param {Object} props - props\n         *     @param {string} [props.fill] Color\n         *     @param {string} [props.fontFamily] Font type for text\n         *     @param {number} [props.fontSize] Size\n         *     @param {string} [props.fontStyle] Type of inclination (normal / italic)\n         *     @param {string} [props.fontWeight] Type of thicker or thinner looking (normal / bold)\n         *     @param {string} [props.textAlign] Type of text align (left / center / right)\n         *     @param {string} [props.textDecoration] Type of line (underline / line-through / overline)\n         * @returns {Object} applied properties\n         */\n\n    }, {\n        key: 'setObjectProperties',\n        value: function setObjectProperties(id, props) {\n            var object = this.getObject(id);\n            var clone = extend({}, props);\n\n            object.set(clone);\n\n            object.setCoords();\n\n            this.getCanvas().renderAll();\n\n            return clone;\n        }\n\n        /**\n         * Get object properties corresponding key\n         * @param {number} id - object id\n         * @param {Array<string>|ObjectProps|string} keys - property's key\n         * @returns {Object} properties\n         */\n\n    }, {\n        key: 'getObjectProperties',\n        value: function getObjectProperties(id, keys) {\n            var object = this.getObject(id);\n            var props = {};\n\n            if (isString(keys)) {\n                props[keys] = object[keys];\n            } else if (isArray(keys)) {\n                forEachArray(keys, function (value) {\n                    props[value] = object[value];\n                });\n            } else {\n                forEachOwnProperties(keys, function (value, key) {\n                    props[key] = object[key];\n                });\n            }\n\n            return props;\n        }\n\n        /**\n         * Get object position by originX, originY\n         * @param {number} id - object id\n         * @param {string} originX - can be 'left', 'center', 'right'\n         * @param {string} originY - can be 'top', 'center', 'bottom'\n         * @returns {Object} {{x:number, y: number}} position by origin if id is valid, or null\n         */\n\n    }, {\n        key: 'getObjectPosition',\n        value: function getObjectPosition(id, originX, originY) {\n            var targetObj = this.getObject(id);\n            if (!targetObj) {\n                return null;\n            }\n\n            return targetObj.getPointByOrigin(originX, originY);\n        }\n\n        /**\n         * Set object position  by originX, originY\n         * @param {number} id - object id\n         * @param {Object} posInfo - position object\n         *  @param {number} posInfo.x - x position\n         *  @param {number} posInfo.y - y position\n         *  @param {string} posInfo.originX - can be 'left', 'center', 'right'\n         *  @param {string} posInfo.originY - can be 'top', 'center', 'bottom'\n         * @returns {boolean} true if target id is valid or false\n         */\n\n    }, {\n        key: 'setObjectPosition',\n        value: function setObjectPosition(id, posInfo) {\n            var targetObj = this.getObject(id);\n            var x = posInfo.x,\n                y = posInfo.y,\n                originX = posInfo.originX,\n                originY = posInfo.originY;\n\n            if (!targetObj) {\n                return false;\n            }\n\n            var targetOrigin = targetObj.getPointByOrigin(originX, originY);\n            var centerOrigin = targetObj.getPointByOrigin('center', 'center');\n            var diffX = centerOrigin.x - targetOrigin.x;\n            var diffY = centerOrigin.y - targetOrigin.y;\n\n            targetObj.set({\n                left: x + diffX,\n                top: y + diffY\n            });\n\n            targetObj.setCoords();\n\n            return true;\n        }\n\n        /**\n         * Get the canvas size\n         * @returns {Object} {{width: number, height: number}} image size\n         */\n\n    }, {\n        key: 'getCanvasSize',\n        value: function getCanvasSize() {\n            var image = this.getCanvasImage();\n\n            return {\n                width: image ? image.width : 0,\n                height: image ? image.height : 0\n            };\n        }\n\n        /**\n         * Create fabric static canvas\n         * @returns {Object} {{width: number, height: number}} image size\n         */\n\n    }, {\n        key: 'createStaticCanvas',\n        value: function createStaticCanvas() {\n            var staticCanvas = new _fabric2.default.StaticCanvas();\n\n            staticCanvas.set({\n                enableRetinaScaling: false\n            });\n\n            return staticCanvas;\n        }\n\n        /**\n         * Get a DrawingMode instance\n         * @param {string} modeName - DrawingMode Class Name\n         * @returns {DrawingMode} DrawingMode instance\n         * @private\n         */\n\n    }, {\n        key: '_getDrawingModeInstance',\n        value: function _getDrawingModeInstance(modeName) {\n            return this._drawingModeMap[modeName];\n        }\n\n        /**\n         * Set object caching to false. This brought many bugs when draw Shape & cropzone\n         * @see http://fabricjs.com/fabric-object-caching\n         * @private\n         */\n\n    }, {\n        key: '_setObjectCachingToFalse',\n        value: function _setObjectCachingToFalse() {\n            _fabric2.default.Object.prototype.objectCaching = false;\n        }\n\n        /**\n         * Set canvas element to fabric.Canvas\n         * @param {Element|string} element - Wrapper or canvas element or selector\n         * @private\n         */\n\n    }, {\n        key: '_setCanvasElement',\n        value: function _setCanvasElement(element) {\n            var selectedElement = void 0;\n            var canvasElement = void 0;\n\n            if (element.nodeType) {\n                selectedElement = element;\n            } else {\n                selectedElement = document.querySelector(element);\n            }\n\n            if (selectedElement.nodeName.toUpperCase() !== 'CANVAS') {\n                canvasElement = document.createElement('canvas');\n                selectedElement.appendChild(canvasElement);\n            }\n\n            this._canvas = new _fabric2.default.Canvas(canvasElement, {\n                containerClass: 'tui-image-editor-canvas-container',\n                enableRetinaScaling: false\n            });\n        }\n\n        /**\n         * Creates DrawingMode instances\n         * @private\n         */\n\n    }, {\n        key: '_createDrawingModeInstances',\n        value: function _createDrawingModeInstances() {\n            this._register(this._drawingModeMap, new _cropper4.default());\n            this._register(this._drawingModeMap, new _freeDrawing4.default());\n            this._register(this._drawingModeMap, new _lineDrawing2.default());\n            this._register(this._drawingModeMap, new _shape4.default());\n            this._register(this._drawingModeMap, new _text4.default());\n        }\n\n        /**\n         * Create components\n         * @private\n         */\n\n    }, {\n        key: '_createComponents',\n        value: function _createComponents() {\n            this._register(this._componentMap, new _imageLoader2.default(this));\n            this._register(this._componentMap, new _cropper2.default(this));\n            this._register(this._componentMap, new _flip2.default(this));\n            this._register(this._componentMap, new _rotation2.default(this));\n            this._register(this._componentMap, new _freeDrawing2.default(this));\n            this._register(this._componentMap, new _line2.default(this));\n            this._register(this._componentMap, new _text2.default(this));\n            this._register(this._componentMap, new _icon2.default(this));\n            this._register(this._componentMap, new _filter2.default(this));\n            this._register(this._componentMap, new _shape2.default(this));\n        }\n\n        /**\n         * Register component\n         * @param {Object} map - map object\n         * @param {Object} module - module which has getName method\n         * @private\n         */\n\n    }, {\n        key: '_register',\n        value: function _register(map, module) {\n            map[module.getName()] = module;\n        }\n\n        /**\n         * Get the current drawing mode is same with given mode\n         * @param {string} mode drawing mode\n         * @returns {boolean} true if same or false\n         */\n\n    }, {\n        key: '_isSameDrawingMode',\n        value: function _isSameDrawingMode(mode) {\n            return this.getDrawingMode() === mode;\n        }\n\n        /**\n         * Calculate max dimension of canvas\n         * The css-max dimension is dynamically decided with maintaining image ratio\n         * The css-max dimension is lower than canvas dimension (attribute of canvas, not css)\n         * @param {number} width - Canvas width\n         * @param {number} height - Canvas height\n         * @returns {{width: number, height: number}} - Max width & Max height\n         * @private\n         */\n\n    }, {\n        key: '_calcMaxDimension',\n        value: function _calcMaxDimension(width, height) {\n            var wScaleFactor = this.cssMaxWidth / width;\n            var hScaleFactor = this.cssMaxHeight / height;\n            var cssMaxWidth = Math.min(width, this.cssMaxWidth);\n            var cssMaxHeight = Math.min(height, this.cssMaxHeight);\n\n            if (wScaleFactor < 1 && wScaleFactor < hScaleFactor) {\n                cssMaxWidth = width * wScaleFactor;\n                cssMaxHeight = height * wScaleFactor;\n            } else if (hScaleFactor < 1 && hScaleFactor < wScaleFactor) {\n                cssMaxWidth = width * hScaleFactor;\n                cssMaxHeight = height * hScaleFactor;\n            }\n\n            return {\n                width: Math.floor(cssMaxWidth),\n                height: Math.floor(cssMaxHeight)\n            };\n        }\n\n        /**\n         * Callback function after loading image\n         * @param {fabric.Image} obj - Fabric image object\n         * @private\n         */\n\n    }, {\n        key: '_callbackAfterLoadingImageObject',\n        value: function _callbackAfterLoadingImageObject(obj) {\n            var centerPos = this.getCanvasImage().getCenterPoint();\n\n            obj.set(_consts.fObjectOptions.SELECTION_STYLE);\n            obj.set({\n                left: centerPos.x,\n                top: centerPos.y,\n                crossOrigin: 'Anonymous'\n            });\n\n            this.getCanvas().add(obj).setActiveObject(obj);\n        }\n\n        /**\n         * Attach canvas's events\n         */\n\n    }, {\n        key: '_attachCanvasEvents',\n        value: function _attachCanvasEvents() {\n            var canvas = this._canvas;\n            var handler = this._handler;\n            canvas.on({\n                'mouse:down': handler.onMouseDown,\n                'object:added': handler.onObjectAdded,\n                'object:removed': handler.onObjectRemoved,\n                'object:moving': handler.onObjectMoved,\n                'object:scaling': handler.onObjectScaled,\n                'object:modified': handler.onObjectModified,\n                'object:rotating': handler.onObjectRotated,\n                'object:selected': handler.onObjectSelected,\n                'path:created': handler.onPathCreated,\n                'selection:cleared': handler.onSelectionCleared,\n                'selection:created': handler.onSelectionCreated,\n                'selection:updated': handler.onObjectSelected\n            });\n        }\n\n        /**\n         * \"mouse:down\" canvas event handler\n         * @param {{target: fabric.Object, e: MouseEvent}} fEvent - Fabric event\n         * @private\n         */\n\n    }, {\n        key: '_onMouseDown',\n        value: function _onMouseDown(fEvent) {\n            var originPointer = this._canvas.getPointer(fEvent.e);\n            this.fire(_consts.eventNames.MOUSE_DOWN, fEvent.e, originPointer);\n        }\n\n        /**\n         * \"object:added\" canvas event handler\n         * @param {{target: fabric.Object, e: MouseEvent}} fEvent - Fabric event\n         * @private\n         */\n\n    }, {\n        key: '_onObjectAdded',\n        value: function _onObjectAdded(fEvent) {\n            var obj = fEvent.target;\n            if (obj.isType('cropzone')) {\n                return;\n            }\n\n            this._addFabricObject(obj);\n        }\n\n        /**\n         * \"object:removed\" canvas event handler\n         * @param {{target: fabric.Object, e: MouseEvent}} fEvent - Fabric event\n         * @private\n         */\n\n    }, {\n        key: '_onObjectRemoved',\n        value: function _onObjectRemoved(fEvent) {\n            var obj = fEvent.target;\n\n            this._removeFabricObject(stamp(obj));\n        }\n\n        /**\n         * \"object:moving\" canvas event handler\n         * @param {{target: fabric.Object, e: MouseEvent}} fEvent - Fabric event\n         * @private\n         */\n\n    }, {\n        key: '_onObjectMoved',\n        value: function _onObjectMoved(fEvent) {\n            var _this2 = this;\n\n            this._lazyFire(_consts.eventNames.OBJECT_MOVED, function (object) {\n                return _this2.createObjectProperties(object);\n            }, fEvent.target);\n        }\n\n        /**\n         * \"object:scaling\" canvas event handler\n         * @param {{target: fabric.Object, e: MouseEvent}} fEvent - Fabric event\n         * @private\n         */\n\n    }, {\n        key: '_onObjectScaled',\n        value: function _onObjectScaled(fEvent) {\n            var _this3 = this;\n\n            this._lazyFire(_consts.eventNames.OBJECT_SCALED, function (object) {\n                return _this3.createObjectProperties(object);\n            }, fEvent.target);\n        }\n\n        /**\n         * \"object:modified\" canvas event handler\n         * @param {{target: fabric.Object, e: MouseEvent}} fEvent - Fabric event\n         * @private\n         */\n\n    }, {\n        key: '_onObjectModified',\n        value: function _onObjectModified(fEvent) {\n            var target = fEvent.target;\n\n            if (target.type === 'activeSelection') {\n                var items = target.getObjects();\n\n                items.forEach(function (item) {\n                    return item.fire('modifiedInGroup', target);\n                });\n            }\n        }\n\n        /**\n         * \"object:rotating\" canvas event handler\n         * @param {{target: fabric.Object, e: MouseEvent}} fEvent - Fabric event\n         * @private\n         */\n\n    }, {\n        key: '_onObjectRotated',\n        value: function _onObjectRotated(fEvent) {\n            var _this4 = this;\n\n            this._lazyFire(_consts.eventNames.OBJECT_ROTATED, function (object) {\n                return _this4.createObjectProperties(object);\n            }, fEvent.target);\n        }\n\n        /**\n         * Lazy event emitter\n         * @param {string} eventName - event name\n         * @param {Function} paramsMaker - make param function\n         * @param {Object} [target] - Object of the event owner.\n         * @private\n         */\n\n    }, {\n        key: '_lazyFire',\n        value: function _lazyFire(eventName, paramsMaker, target) {\n            var _this5 = this;\n\n            var existEventDelegation = target && target.canvasEventDelegation;\n            var delegationState = existEventDelegation ? target.canvasEventDelegation(eventName) : 'none';\n\n            if (delegationState === 'unregisted') {\n                target.canvasEventRegister(eventName, function (object) {\n                    _this5.fire(eventName, paramsMaker(object));\n                });\n            }\n\n            if (delegationState === 'none') {\n                this.fire(eventName, paramsMaker(target));\n            }\n        }\n\n        /**\n         * \"object:selected\" canvas event handler\n         * @param {{target: fabric.Object, e: MouseEvent}} fEvent - Fabric event\n         * @private\n         */\n\n    }, {\n        key: '_onObjectSelected',\n        value: function _onObjectSelected(fEvent) {\n            var target = fEvent.target;\n\n            var params = this.createObjectProperties(target);\n\n            this.fire(_consts.eventNames.OBJECT_ACTIVATED, params);\n        }\n\n        /**\n         * \"path:created\" canvas event handler\n         * @param {{path: fabric.Path}} obj - Path object\n         * @private\n         */\n\n    }, {\n        key: '_onPathCreated',\n        value: function _onPathCreated(obj) {\n            var _obj$path$getCenterPo = obj.path.getCenterPoint(),\n                left = _obj$path$getCenterPo.x,\n                top = _obj$path$getCenterPo.y;\n\n            obj.path.set(extend({\n                left: left,\n                top: top\n            }, _consts.fObjectOptions.SELECTION_STYLE));\n\n            var params = this.createObjectProperties(obj.path);\n\n            this.fire(_consts.eventNames.ADD_OBJECT, params);\n        }\n\n        /**\n         * \"selction:cleared\" canvas event handler\n         * @private\n         */\n\n    }, {\n        key: '_onSelectionCleared',\n        value: function _onSelectionCleared() {\n            this.fire(_consts.eventNames.SELECTION_CLEARED);\n        }\n\n        /**\n         * \"selction:created\" canvas event handler\n         * @param {{target: fabric.Object, e: MouseEvent}} fEvent - Fabric event\n         * @private\n         */\n\n    }, {\n        key: '_onSelectionCreated',\n        value: function _onSelectionCreated(fEvent) {\n            this.fire(_consts.eventNames.SELECTION_CREATED, fEvent.target);\n        }\n\n        /**\n         * Canvas discard selection all\n         */\n\n    }, {\n        key: 'discardSelection',\n        value: function discardSelection() {\n            this._canvas.discardActiveObject();\n            this._canvas.renderAll();\n        }\n\n        /**\n         * Canvas Selectable status change\n         * @param {boolean} selectable - expect status\n         */\n\n    }, {\n        key: 'changeSelectableAll',\n        value: function changeSelectableAll(selectable) {\n            this._canvas.forEachObject(function (obj) {\n                obj.selectable = selectable;\n                obj.hoverCursor = selectable ? 'move' : 'crosshair';\n            });\n        }\n\n        /**\n         * Return object's properties\n         * @param {fabric.Object} obj - fabric object\n         * @returns {Object} properties object\n         */\n\n    }, {\n        key: 'createObjectProperties',\n        value: function createObjectProperties(obj) {\n            var predefinedKeys = ['left', 'top', 'width', 'height', 'fill', 'stroke', 'strokeWidth', 'opacity', 'angle'];\n            var props = {\n                id: stamp(obj),\n                type: obj.type\n            };\n\n            extend(props, (0, _util.getProperties)(obj, predefinedKeys));\n\n            if ((0, _util.includes)(['i-text', 'text'], obj.type)) {\n                extend(props, this._createTextProperties(obj, props));\n            } else if ((0, _util.includes)(['rect', 'triangle', 'circle'], obj.type)) {\n                var shapeComp = this.getComponent(_consts.componentNames.SHAPE);\n                extend(props, {\n                    fill: shapeComp.makeFillPropertyForUserEvent(obj)\n                });\n            }\n\n            return props;\n        }\n\n        /**\n         * Get text object's properties\n         * @param {fabric.Object} obj - fabric text object\n         * @param {Object} props - properties\n         * @returns {Object} properties object\n         */\n\n    }, {\n        key: '_createTextProperties',\n        value: function _createTextProperties(obj) {\n            var predefinedKeys = ['text', 'fontFamily', 'fontSize', 'fontStyle', 'textAlign', 'textDecoration', 'fontWeight'];\n            var props = {};\n            extend(props, (0, _util.getProperties)(obj, predefinedKeys));\n\n            return props;\n        }\n\n        /**\n         * Add object array by id\n         * @param {fabric.Object} obj - fabric object\n         * @returns {number} object id\n         */\n\n    }, {\n        key: '_addFabricObject',\n        value: function _addFabricObject(obj) {\n            var id = stamp(obj);\n            this._objects[id] = obj;\n\n            return id;\n        }\n\n        /**\n         * Remove an object in array yb id\n         * @param {number} id - object id\n         */\n\n    }, {\n        key: '_removeFabricObject',\n        value: function _removeFabricObject(id) {\n            delete this._objects[id];\n        }\n\n        /**\n         * Reset targetObjectForCopyPaste value from activeObject\n         */\n\n    }, {\n        key: 'resetTargetObjectForCopyPaste',\n        value: function resetTargetObjectForCopyPaste() {\n            var activeObject = this.getActiveObject();\n\n            if (activeObject) {\n                this.targetObjectForCopyPaste = activeObject;\n            }\n        }\n\n        /**\n         * Paste fabric object\n         * @returns {Promise}\n         */\n\n    }, {\n        key: 'pasteObject',\n        value: function pasteObject() {\n            var _this6 = this;\n\n            if (!this.targetObjectForCopyPaste) {\n                return _util.Promise.resolve([]);\n            }\n\n            var targetObject = this.targetObjectForCopyPaste;\n            var isGroupSelect = targetObject.type === 'activeSelection';\n            var targetObjects = isGroupSelect ? targetObject.getObjects() : [targetObject];\n            var newTargetObject = null;\n\n            this.discardSelection();\n\n            return this._cloneObject(targetObjects).then(function (addedObjects) {\n                if (addedObjects.length > 1) {\n                    newTargetObject = _this6.getActiveSelectionFromObjects(addedObjects);\n                } else {\n                    newTargetObject = addedObjects[0];\n                }\n                _this6.targetObjectForCopyPaste = newTargetObject;\n                _this6.setActiveObject(newTargetObject);\n            });\n        }\n\n        /**\n         * Clone object\n         * @param {fabric.Object} targetObjects - fabric object\n         * @returns {Promise}\n         * @private\n         */\n\n    }, {\n        key: '_cloneObject',\n        value: function _cloneObject(targetObjects) {\n            var _this7 = this;\n\n            var addedObjects = _tuiCodeSnippet2.default.map(targetObjects, function (targetObject) {\n                return _this7._cloneObjectItem(targetObject);\n            });\n\n            return _util.Promise.all(addedObjects);\n        }\n\n        /**\n         * Clone object one item\n         * @param {fabric.Object} targetObject - fabric object\n         * @returns {Promise}\n         * @private\n         */\n\n    }, {\n        key: '_cloneObjectItem',\n        value: function _cloneObjectItem(targetObject) {\n            var _this8 = this;\n\n            return this._copyFabricObjectForPaste(targetObject).then(function (clonedObject) {\n                var objectProperties = _this8.createObjectProperties(clonedObject);\n                _this8.add(clonedObject);\n\n                _this8.fire(_consts.eventNames.ADD_OBJECT, objectProperties);\n\n                return clonedObject;\n            });\n        }\n\n        /**\n         * Copy fabric object with Changed position for copy and paste\n         * @param {fabric.Object} targetObject - fabric object\n         * @returns {Promise}\n         * @private\n         */\n\n    }, {\n        key: '_copyFabricObjectForPaste',\n        value: function _copyFabricObjectForPaste(targetObject) {\n            var _this9 = this;\n\n            var addExtraPx = function addExtraPx(value, isReverse) {\n                return isReverse ? value - EXTRA_PX_FOR_PASTE : value + EXTRA_PX_FOR_PASTE;\n            };\n\n            return this._copyFabricObject(targetObject).then(function (clonedObject) {\n                var left = clonedObject.left,\n                    top = clonedObject.top,\n                    width = clonedObject.width,\n                    height = clonedObject.height;\n\n                var _getCanvasSize = _this9.getCanvasSize(),\n                    canvasWidth = _getCanvasSize.width,\n                    canvasHeight = _getCanvasSize.height;\n\n                var rightEdge = left + width / 2;\n                var bottomEdge = top + height / 2;\n\n                clonedObject.set(_tuiCodeSnippet2.default.extend({\n                    left: addExtraPx(left, rightEdge + EXTRA_PX_FOR_PASTE > canvasWidth),\n                    top: addExtraPx(top, bottomEdge + EXTRA_PX_FOR_PASTE > canvasHeight)\n                }, _consts.fObjectOptions.SELECTION_STYLE));\n\n                return clonedObject;\n            });\n        }\n\n        /**\n         * Copy fabric object\n         * @param {fabric.Object} targetObject - fabric object\n         * @returns {Promise}\n         * @private\n         */\n\n    }, {\n        key: '_copyFabricObject',\n        value: function _copyFabricObject(targetObject) {\n            var _this10 = this;\n\n            return new _util.Promise(function (resolve) {\n                targetObject.clone(function (cloned) {\n                    var shapeComp = _this10.getComponent(_consts.componentNames.SHAPE);\n                    if ((0, _util.isShape)(cloned)) {\n                        shapeComp.processForCopiedObject(cloned, targetObject);\n                    }\n\n                    resolve(cloned);\n                });\n            });\n        }\n    }]);\n\n    return Graphics;\n}();\n\nCustomEvents.mixin(Graphics);\n\nexports.default = Graphics;\n\n//# sourceURL=webpack://tui.ImageEditor/./src/js/graphics.js?");
+
+/***/ }),
+
+/***/ "./src/js/helper/imagetracer.js":
+/*!**************************************!*\
+  !*** ./src/js/helper/imagetracer.js ***!
+  \**************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n/*\n  imagetracer.js version 1.2.4\n  Simple raster image tracer and vectorizer written in JavaScript.\n  andras@jankovics.net\n*/\n\n/*\n  The Unlicense / PUBLIC DOMAIN\n  This is free and unencumbered software released into the public domain.\n  Anyone is free to copy, modify, publish, use, compile, sell, or\n  distribute this software, either in source code form or as a compiled\n  binary, for any purpose, commercial or non-commercial, and by any\n  means.\n  In jurisdictions that recognize copyright laws, the author or authors\n  of this software dedicate any and all copyright interest in the\n  software to the public domain. We make this dedication for the benefit\n  of the public at large and to the detriment of our heirs and\n  successors. We intend this dedication to be an overt act of\n  relinquishment in perpetuity of all present and future rights to this\n  software under copyright law.\n  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n  IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR\n  OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,\n  ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n  OTHER DEALINGS IN THE SOFTWARE.\n  For more information, please refer to http://unlicense.org/\n*/\nvar ImageTracer = function () {\n    _createClass(ImageTracer, null, [{\n        key: 'tracerDefaultOption',\n        value: function tracerDefaultOption() {\n            return {\n                pathomit: 100,\n                ltres: 0.1,\n                qtres: 1,\n\n                scale: 1,\n                strokewidth: 5,\n                viewbox: false,\n                linefilter: true,\n                desc: false,\n                rightangleenhance: false,\n                pal: [{\n                    r: 0,\n                    g: 0,\n                    b: 0,\n                    a: 255\n                }, {\n                    r: 255,\n                    g: 255,\n                    b: 255,\n                    a: 255\n                }]\n            };\n        }\n        /* eslint-disable */\n\n    }]);\n\n    function ImageTracer() {\n        _classCallCheck(this, ImageTracer);\n\n        this.versionnumber = '1.2.4';\n        this.optionpresets = {\n            default: {\n                corsenabled: false,\n                ltres: 1,\n                qtres: 1,\n                pathomit: 8,\n                rightangleenhance: true,\n                colorsampling: 2,\n                numberofcolors: 16,\n                mincolorratio: 0,\n                colorquantcycles: 3,\n                layering: 0,\n                strokewidth: 1,\n                linefilter: false,\n                scale: 1,\n                roundcoords: 1,\n                viewbox: false,\n                desc: false,\n                lcpr: 0,\n                qcpr: 0,\n                blurradius: 0,\n                blurdelta: 20\n            },\n            'posterized1': {\n                colorsampling: 0,\n                numberofcolors: 2\n            },\n            'posterized2': {\n                numberofcolors: 4,\n                blurradius: 5\n            },\n            'curvy': {\n                ltres: 0.01,\n                linefilter: true,\n                rightangleenhance: false },\n            'sharp': { qtres: 0.01,\n                linefilter: false },\n            'detailed': { pathomit: 0,\n                roundcoords: 2,\n                ltres: 0.5,\n                qtres: 0.5,\n                numberofcolors: 64 },\n            'smoothed': { blurradius: 5,\n                blurdelta: 64 },\n            'grayscale': { colorsampling: 0,\n                colorquantcycles: 1,\n                numberofcolors: 7 },\n            'fixedpalette': { colorsampling: 0,\n                colorquantcycles: 1,\n                numberofcolors: 27 },\n            'randomsampling1': { colorsampling: 1,\n                numberofcolors: 8 },\n            'randomsampling2': { colorsampling: 1,\n                numberofcolors: 64 },\n            'artistic1': { colorsampling: 0,\n                colorquantcycles: 1,\n                pathomit: 0,\n                blurradius: 5,\n                blurdelta: 64,\n                ltres: 0.01,\n                linefilter: true,\n                numberofcolors: 16,\n                strokewidth: 2 },\n            'artistic2': { qtres: 0.01,\n                colorsampling: 0,\n                colorquantcycles: 1,\n                numberofcolors: 4,\n                strokewidth: 0 },\n            'artistic3': { qtres: 10,\n                ltres: 10,\n                numberofcolors: 8 },\n            'artistic4': { qtres: 10,\n                ltres: 10,\n                numberofcolors: 64,\n                blurradius: 5,\n                blurdelta: 256,\n                strokewidth: 2 },\n            'posterized3': { ltres: 1,\n                qtres: 1,\n                pathomit: 20,\n                rightangleenhance: true,\n                colorsampling: 0,\n                numberofcolors: 3,\n                mincolorratio: 0,\n                colorquantcycles: 3,\n                blurradius: 3,\n                blurdelta: 20,\n                strokewidth: 0,\n                linefilter: false,\n                roundcoords: 1,\n                pal: [{ r: 0,\n                    g: 0,\n                    b: 100,\n                    a: 255 }, { r: 255,\n                    g: 255,\n                    b: 255,\n                    a: 255 }] }\n        };\n\n        this.pathscan_combined_lookup = [[[-1, -1, -1, -1], [-1, -1, -1, -1], [-1, -1, -1, -1], [-1, -1, -1, -1]], [[0, 1, 0, -1], [-1, -1, -1, -1], [-1, -1, -1, -1], [0, 2, -1, 0]], [[-1, -1, -1, -1], [-1, -1, -1, -1], [0, 1, 0, -1], [0, 0, 1, 0]], [[0, 0, 1, 0], [-1, -1, -1, -1], [0, 2, -1, 0], [-1, -1, -1, -1]], [[-1, -1, -1, -1], [0, 0, 1, 0], [0, 3, 0, 1], [-1, -1, -1, -1]], [[13, 3, 0, 1], [13, 2, -1, 0], [7, 1, 0, -1], [7, 0, 1, 0]], [[-1, -1, -1, -1], [0, 1, 0, -1], [-1, -1, -1, -1], [0, 3, 0, 1]], [[0, 3, 0, 1], [0, 2, -1, 0], [-1, -1, -1, -1], [-1, -1, -1, -1]], [[0, 3, 0, 1], [0, 2, -1, 0], [-1, -1, -1, -1], [-1, -1, -1, -1]], [[-1, -1, -1, -1], [0, 1, 0, -1], [-1, -1, -1, -1], [0, 3, 0, 1]], [[11, 1, 0, -1], [14, 0, 1, 0], [14, 3, 0, 1], [11, 2, -1, 0]], [[-1, -1, -1, -1], [0, 0, 1, 0], [0, 3, 0, 1], [-1, -1, -1, -1]], [[0, 0, 1, 0], [-1, -1, -1, -1], [0, 2, -1, 0], [-1, -1, -1, -1]], [[-1, -1, -1, -1], [-1, -1, -1, -1], [0, 1, 0, -1], [0, 0, 1, 0]], [[0, 1, 0, -1], [-1, -1, -1, -1], [-1, -1, -1, -1], [0, 2, -1, 0]], [[-1, -1, -1, -1], [-1, -1, -1, -1], [-1, -1, -1, -1], [-1, -1, -1, -1]]];\n\n        this.gks = [[0.27901, 0.44198, 0.27901], [0.135336, 0.228569, 0.272192, 0.228569, 0.135336], [0.086776, 0.136394, 0.178908, 0.195843, 0.178908, 0.136394, 0.086776], [0.063327, 0.093095, 0.122589, 0.144599, 0.152781, 0.144599, 0.122589, 0.093095, 0.063327], [0.049692, 0.069304, 0.089767, 0.107988, 0.120651, 0.125194, 0.120651, 0.107988, 0.089767, 0.069304, 0.049692]];\n\n        this.specpalette = [{ r: 0, g: 0, b: 0, a: 255 }, { r: 128, g: 128, b: 128, a: 255 }, { r: 0, g: 0, b: 128, a: 255 }, { r: 64, g: 64, b: 128, a: 255 }, { r: 192, g: 192, b: 192, a: 255 }, { r: 255, g: 255, b: 255, a: 255 }, { r: 128, g: 128, b: 192, a: 255 }, { r: 0, g: 0, b: 192, a: 255 }, { r: 128, g: 0, b: 0, a: 255 }, { r: 128, g: 64, b: 64, a: 255 }, { r: 128, g: 0, b: 128, a: 255 }, { r: 168, g: 168, b: 168, a: 255 }, { r: 192, g: 128, b: 128, a: 255 }, { r: 192, g: 0, b: 0, a: 255 }, { r: 255, g: 255, b: 255, a: 255 }, { r: 0, g: 128, b: 0, a: 255 }];\n    }\n\n    _createClass(ImageTracer, [{\n        key: 'imageToSVG',\n        value: function imageToSVG(url, callback, options) {\n            var _this = this;\n\n            options = this.checkoptions(options);\n            this.loadImage(url, function (canvas) {\n                callback(_this.imagedataToSVG(_this.getImgdata(canvas), options));\n            }, options);\n        }\n    }, {\n        key: 'imagedataToSVG',\n        value: function imagedataToSVG(imgd, options) {\n            options = this.checkoptions(options);\n            var td = this.imagedataToTracedata(imgd, options);\n\n            return this.getsvgstring(td, options);\n        }\n    }, {\n        key: 'imageToTracedata',\n        value: function imageToTracedata(url, callback, options) {\n            var _this2 = this;\n\n            options = this.checkoptions(options);\n            this.loadImage(url, function (canvas) {\n                callback(_this2.imagedataToTracedata(_this2.getImgdata(canvas), options));\n            }, options);\n        }\n    }, {\n        key: 'imagedataToTracedata',\n        value: function imagedataToTracedata(imgd, options) {\n            options = this.checkoptions(options);\n            var ii = this.colorquantization(imgd, options);\n            var tracedata = void 0;\n            if (options.layering === 0) {\n                tracedata = {\n                    layers: [],\n                    palette: ii.palette,\n                    width: ii.array[0].length - 2,\n                    height: ii.array.length - 2\n                };\n\n                for (var colornum = 0; colornum < ii.palette.length; colornum += 1) {\n                    var tracedlayer = this.batchtracepaths(this.internodes(this.pathscan(this.layeringstep(ii, colornum), options.pathomit), options), options.ltres, options.qtres);\n                    tracedata.layers.push(tracedlayer);\n                }\n            } else {\n                var ls = this.layering(ii);\n                if (options.layercontainerid) {\n                    this.drawLayers(ls, this.specpalette, options.scale, options.layercontainerid);\n                }\n                var bps = this.batchpathscan(ls, options.pathomit);\n                var bis = this.batchinternodes(bps, options);\n                tracedata = {\n                    layers: this.batchtracelayers(bis, options.ltres, options.qtres),\n                    palette: ii.palette,\n                    width: imgd.width,\n                    height: imgd.height\n                };\n            }\n\n            return tracedata;\n        }\n    }, {\n        key: 'checkoptions',\n        value: function checkoptions(options) {\n            options = options || {};\n            if (typeof options === 'string') {\n                options = options.toLowerCase();\n                if (this.optionpresets[options]) {\n                    options = this.optionpresets[options];\n                } else {\n                    options = {};\n                }\n            }\n            var ok = Object.keys(this.optionpresets['default']);\n            for (var k = 0; k < ok.length; k += 1) {\n                if (!options.hasOwnProperty(ok[k])) {\n                    options[ok[k]] = this.optionpresets['default'][ok[k]];\n                }\n            }\n\n            return options;\n        }\n    }, {\n        key: 'colorquantization',\n        value: function colorquantization(imgd, options) {\n            var arr = [];\n            var idx = 0;\n            var cd = void 0;\n            var cdl = void 0;\n            var ci = void 0;\n            var paletteacc = [];\n            var pixelnum = imgd.width * imgd.height;\n            var i = void 0;\n            var j = void 0;\n            var k = void 0;\n            var cnt = void 0;\n            var palette = void 0;\n\n            for (j = 0; j < imgd.height + 2; j += 1) {\n                arr[j] = [];\n                for (i = 0; i < imgd.width + 2; i += 1) {\n                    arr[j][i] = -1;\n                }\n            }\n            if (options.pal) {\n                palette = options.pal;\n            } else if (options.colorsampling === 0) {\n                palette = this.generatepalette(options.numberofcolors);\n            } else if (options.colorsampling === 1) {\n                palette = this.samplepalette(options.numberofcolors, imgd);\n            } else {\n                palette = this.samplepalette2(options.numberofcolors, imgd);\n            }\n            if (options.blurradius > 0) {\n                imgd = this.blur(imgd, options.blurradius, options.blurdelta);\n            }\n            for (cnt = 0; cnt < options.colorquantcycles; cnt += 1) {\n                if (cnt > 0) {\n                    for (k = 0; k < palette.length; k += 1) {\n                        if (paletteacc[k].n > 0) {\n                            palette[k] = { r: Math.floor(paletteacc[k].r / paletteacc[k].n),\n                                g: Math.floor(paletteacc[k].g / paletteacc[k].n),\n                                b: Math.floor(paletteacc[k].b / paletteacc[k].n),\n                                a: Math.floor(paletteacc[k].a / paletteacc[k].n) };\n                        }\n\n                        if (paletteacc[k].n / pixelnum < options.mincolorratio && cnt < options.colorquantcycles - 1) {\n                            palette[k] = { r: Math.floor(Math.random() * 255),\n                                g: Math.floor(Math.random() * 255),\n                                b: Math.floor(Math.random() * 255),\n                                a: Math.floor(Math.random() * 255) };\n                        }\n                    }\n                }\n\n                for (i = 0; i < palette.length; i += 1) {\n                    paletteacc[i] = { r: 0,\n                        g: 0,\n                        b: 0,\n                        a: 0,\n                        n: 0 };\n                }\n\n                for (j = 0; j < imgd.height; j += 1) {\n                    for (i = 0; i < imgd.width; i += 1) {\n                        idx = (j * imgd.width + i) * 4;\n\n                        ci = 0;\n                        cdl = 1024;\n                        for (k = 0; k < palette.length; k += 1) {\n                            cd = Math.abs(palette[k].r - imgd.data[idx]) + Math.abs(palette[k].g - imgd.data[idx + 1]) + Math.abs(palette[k].b - imgd.data[idx + 2]) + Math.abs(palette[k].a - imgd.data[idx + 3]);\n\n                            if (cd < cdl) {\n                                cdl = cd;\n                                ci = k;\n                            }\n                        }\n\n                        paletteacc[ci].r += imgd.data[idx];\n                        paletteacc[ci].g += imgd.data[idx + 1];\n                        paletteacc[ci].b += imgd.data[idx + 2];\n                        paletteacc[ci].a += imgd.data[idx + 3];\n                        paletteacc[ci].n += 1;\n\n                        arr[j + 1][i + 1] = ci;\n                    }\n                }\n            }\n\n            return { array: arr,\n                palette: palette };\n        }\n    }, {\n        key: 'samplepalette',\n        value: function samplepalette(numberofcolors, imgd) {\n            var idx = void 0;\n            var palette = [];\n            for (var i = 0; i < numberofcolors; i += 1) {\n                idx = Math.floor(Math.random() * imgd.data.length / 4) * 4;\n                palette.push({ r: imgd.data[idx],\n                    g: imgd.data[idx + 1],\n                    b: imgd.data[idx + 2],\n                    a: imgd.data[idx + 3] });\n            }\n\n            return palette;\n        }\n    }, {\n        key: 'samplepalette2',\n        value: function samplepalette2(numberofcolors, imgd) {\n            var idx = void 0;\n            var palette = [];\n            var ni = Math.ceil(Math.sqrt(numberofcolors));\n            var nj = Math.ceil(numberofcolors / ni);\n            var vx = imgd.width / (ni + 1);\n            var vy = imgd.height / (nj + 1);\n            for (var j = 0; j < nj; j += 1) {\n                for (var i = 0; i < ni; i += 1) {\n                    if (palette.length === numberofcolors) {\n                        break;\n                    } else {\n                        idx = Math.floor((j + 1) * vy * imgd.width + (i + 1) * vx) * 4;\n                        palette.push({ r: imgd.data[idx],\n                            g: imgd.data[idx + 1],\n                            b: imgd.data[idx + 2],\n                            a: imgd.data[idx + 3] });\n                    }\n                }\n            }\n\n            return palette;\n        }\n    }, {\n        key: 'generatepalette',\n        value: function generatepalette(numberofcolors) {\n            var palette = [];\n            var rcnt = void 0;\n            var gcnt = void 0;\n            var bcnt = void 0;\n            if (numberofcolors < 8) {\n                var graystep = Math.floor(255 / (numberofcolors - 1));\n                for (var i = 0; i < numberofcolors; i += 1) {\n                    palette.push({ r: i * graystep,\n                        g: i * graystep,\n                        b: i * graystep,\n                        a: 255 });\n                }\n            } else {\n                var colorqnum = Math.floor(Math.pow(numberofcolors, 1 / 3));\n                var colorstep = Math.floor(255 / (colorqnum - 1));\n                var rndnum = numberofcolors - colorqnum * colorqnum * colorqnum;\n                for (rcnt = 0; rcnt < colorqnum; rcnt += 1) {\n                    for (gcnt = 0; gcnt < colorqnum; gcnt += 1) {\n                        for (bcnt = 0; bcnt < colorqnum; bcnt += 1) {\n                            palette.push({ r: rcnt * colorstep,\n                                g: gcnt * colorstep,\n                                b: bcnt * colorstep,\n                                a: 255 });\n                        }\n                    }\n                }\n                for (rcnt = 0; rcnt < rndnum; rcnt += 1) {\n                    palette.push({ r: Math.floor(Math.random() * 255),\n                        g: Math.floor(Math.random() * 255),\n                        b: Math.floor(Math.random() * 255),\n                        a: Math.floor(Math.random() * 255) });\n                }\n            }\n\n            return palette;\n        }\n    }, {\n        key: 'layering',\n        value: function layering(ii) {\n            var layers = [];\n            var val = 0;\n            var ah = ii.array.length;\n            var aw = ii.array[0].length;\n            var n1 = void 0;\n            var n2 = void 0;\n            var n3 = void 0;\n            var n4 = void 0;\n            var n5 = void 0;\n            var n6 = void 0;\n            var n7 = void 0;\n            var n8 = void 0;\n            var i = void 0;\n            var j = void 0;\n            var k = void 0;\n            for (k = 0; k < ii.palette.length; k += 1) {\n                layers[k] = [];\n                for (j = 0; j < ah; j += 1) {\n                    layers[k][j] = [];\n                    for (i = 0; i < aw; i += 1) {\n                        layers[k][j][i] = 0;\n                    }\n                }\n            }\n            for (j = 1; j < ah - 1; j += 1) {\n                for (i = 1; i < aw - 1; i += 1) {\n                    val = ii.array[j][i];\n\n                    n1 = ii.array[j - 1][i - 1] === val ? 1 : 0;\n                    n2 = ii.array[j - 1][i] === val ? 1 : 0;\n                    n3 = ii.array[j - 1][i + 1] === val ? 1 : 0;\n                    n4 = ii.array[j][i - 1] === val ? 1 : 0;\n                    n5 = ii.array[j][i + 1] === val ? 1 : 0;\n                    n6 = ii.array[j + 1][i - 1] === val ? 1 : 0;\n                    n7 = ii.array[j + 1][i] === val ? 1 : 0;\n                    n8 = ii.array[j + 1][i + 1] === val ? 1 : 0;\n\n                    layers[val][j + 1][i + 1] = 1 + n5 * 2 + n8 * 4 + n7 * 8;\n                    if (!n4) {\n                        layers[val][j + 1][i] = 0 + 2 + n7 * 4 + n6 * 8;\n                    }\n                    if (!n2) {\n                        layers[val][j][i + 1] = 0 + n3 * 2 + n5 * 4 + 8;\n                    }\n                    if (!n1) {\n                        layers[val][j][i] = 0 + n2 * 2 + 4 + n4 * 8;\n                    }\n                }\n            }\n\n            return layers;\n        }\n    }, {\n        key: 'layeringstep',\n        value: function layeringstep(ii, cnum) {\n            var layer = [];\n            var ah = ii.array.length;\n            var aw = ii.array[0].length;\n            var i = void 0;\n            var j = void 0;\n            for (j = 0; j < ah; j += 1) {\n                layer[j] = [];\n                for (i = 0; i < aw; i += 1) {\n                    layer[j][i] = 0;\n                }\n            }\n            for (j = 1; j < ah; j += 1) {\n                for (i = 1; i < aw; i += 1) {\n                    layer[j][i] = (ii.array[j - 1][i - 1] === cnum ? 1 : 0) + (ii.array[j - 1][i] === cnum ? 2 : 0) + (ii.array[j][i - 1] === cnum ? 8 : 0) + (ii.array[j][i] === cnum ? 4 : 0);\n                }\n            }\n\n            return layer;\n        }\n    }, {\n        key: 'pathscan',\n        value: function pathscan(arr, pathomit) {\n            var paths = [];\n            var pacnt = 0;\n            var pcnt = 0;\n            var px = 0;\n            var py = 0;\n            var w = arr[0].length;\n            var h = arr.length;\n            var dir = 0;\n            var pathfinished = true;\n            var holepath = false;\n            var lookuprow = void 0;\n            for (var j = 0; j < h; j += 1) {\n                for (var i = 0; i < w; i += 1) {\n                    if (arr[j][i] === 4 || arr[j][i] === 11) {\n                        px = i;\n                        py = j;\n                        paths[pacnt] = {};\n                        paths[pacnt].points = [];\n                        paths[pacnt].boundingbox = [px, py, px, py];\n                        paths[pacnt].holechildren = [];\n                        pathfinished = false;\n                        pcnt = 0;\n                        holepath = arr[j][i] === 11;\n                        dir = 1;\n\n                        while (!pathfinished) {\n                            paths[pacnt].points[pcnt] = {};\n                            paths[pacnt].points[pcnt].x = px - 1;\n                            paths[pacnt].points[pcnt].y = py - 1;\n                            paths[pacnt].points[pcnt].t = arr[py][px];\n\n                            if (px - 1 < paths[pacnt].boundingbox[0]) {\n                                paths[pacnt].boundingbox[0] = px - 1;\n                            }\n                            if (px - 1 > paths[pacnt].boundingbox[2]) {\n                                paths[pacnt].boundingbox[2] = px - 1;\n                            }\n                            if (py - 1 < paths[pacnt].boundingbox[1]) {\n                                paths[pacnt].boundingbox[1] = py - 1;\n                            }\n                            if (py - 1 > paths[pacnt].boundingbox[3]) {\n                                paths[pacnt].boundingbox[3] = py - 1;\n                            }\n\n                            lookuprow = this.pathscan_combined_lookup[arr[py][px]][dir];\n                            arr[py][px] = lookuprow[0];dir = lookuprow[1];px += lookuprow[2];py += lookuprow[3];\n\n                            if (px - 1 === paths[pacnt].points[0].x && py - 1 === paths[pacnt].points[0].y) {\n                                pathfinished = true;\n\n                                if (paths[pacnt].points.length < pathomit) {\n                                    paths.pop();\n                                } else {\n                                    paths[pacnt].isholepath = !!holepath;\n\n                                    if (holepath) {\n                                        var parentidx = 0,\n                                            parentbbox = [-1, -1, w + 1, h + 1];\n                                        for (var parentcnt = 0; parentcnt < pacnt; parentcnt++) {\n                                            if (!paths[parentcnt].isholepath && this.boundingboxincludes(paths[parentcnt].boundingbox, paths[pacnt].boundingbox) && this.boundingboxincludes(parentbbox, paths[parentcnt].boundingbox)) {\n                                                parentidx = parentcnt;\n                                                parentbbox = paths[parentcnt].boundingbox;\n                                            }\n                                        }\n                                        paths[parentidx].holechildren.push(pacnt);\n                                    }\n                                    pacnt += 1;\n                                }\n                            }\n                            pcnt += 1;\n                        }\n                    }\n                }\n            }\n\n            return paths;\n        }\n    }, {\n        key: 'boundingboxincludes',\n        value: function boundingboxincludes(parentbbox, childbbox) {\n            return parentbbox[0] < childbbox[0] && parentbbox[1] < childbbox[1] && parentbbox[2] > childbbox[2] && parentbbox[3] > childbbox[3];\n        }\n    }, {\n        key: 'batchpathscan',\n        value: function batchpathscan(layers, pathomit) {\n            var bpaths = [];\n            for (var k in layers) {\n                if (!layers.hasOwnProperty(k)) {\n                    continue;\n                }\n                bpaths[k] = this.pathscan(layers[k], pathomit);\n            }\n\n            return bpaths;\n        }\n    }, {\n        key: 'internodes',\n        value: function internodes(paths, options) {\n            var ins = [];\n            var palen = 0;\n            var nextidx = 0;\n            var nextidx2 = 0;\n            var previdx = 0;\n            var previdx2 = 0;\n            var pacnt = void 0;\n            var pcnt = void 0;\n            for (pacnt = 0; pacnt < paths.length; pacnt += 1) {\n                ins[pacnt] = {};\n                ins[pacnt].points = [];\n                ins[pacnt].boundingbox = paths[pacnt].boundingbox;\n                ins[pacnt].holechildren = paths[pacnt].holechildren;\n                ins[pacnt].isholepath = paths[pacnt].isholepath;\n                palen = paths[pacnt].points.length;\n\n                for (pcnt = 0; pcnt < palen; pcnt += 1) {\n                    nextidx = (pcnt + 1) % palen;nextidx2 = (pcnt + 2) % palen;previdx = (pcnt - 1 + palen) % palen;previdx2 = (pcnt - 2 + palen) % palen;\n\n                    if (options.rightangleenhance && this.testrightangle(paths[pacnt], previdx2, previdx, pcnt, nextidx, nextidx2)) {\n                        if (ins[pacnt].points.length > 0) {\n                            ins[pacnt].points[ins[pacnt].points.length - 1].linesegment = this.getdirection(ins[pacnt].points[ins[pacnt].points.length - 1].x, ins[pacnt].points[ins[pacnt].points.length - 1].y, paths[pacnt].points[pcnt].x, paths[pacnt].points[pcnt].y);\n                        }\n\n                        ins[pacnt].points.push({\n                            x: paths[pacnt].points[pcnt].x,\n                            y: paths[pacnt].points[pcnt].y,\n                            linesegment: this.getdirection(paths[pacnt].points[pcnt].x, paths[pacnt].points[pcnt].y, (paths[pacnt].points[pcnt].x + paths[pacnt].points[nextidx].x) / 2, (paths[pacnt].points[pcnt].y + paths[pacnt].points[nextidx].y) / 2)\n                        });\n                    }\n\n                    ins[pacnt].points.push({\n                        x: (paths[pacnt].points[pcnt].x + paths[pacnt].points[nextidx].x) / 2,\n                        y: (paths[pacnt].points[pcnt].y + paths[pacnt].points[nextidx].y) / 2,\n                        linesegment: this.getdirection((paths[pacnt].points[pcnt].x + paths[pacnt].points[nextidx].x) / 2, (paths[pacnt].points[pcnt].y + paths[pacnt].points[nextidx].y) / 2, (paths[pacnt].points[nextidx].x + paths[pacnt].points[nextidx2].x) / 2, (paths[pacnt].points[nextidx].y + paths[pacnt].points[nextidx2].y) / 2)\n                    });\n                }\n            }\n\n            return ins;\n        }\n    }, {\n        key: 'testrightangle',\n        value: function testrightangle(path, idx1, idx2, idx3, idx4, idx5) {\n            return path.points[idx3].x === path.points[idx1].x && path.points[idx3].x === path.points[idx2].x && path.points[idx3].y === path.points[idx4].y && path.points[idx3].y === path.points[idx5].y || path.points[idx3].y === path.points[idx1].y && path.points[idx3].y === path.points[idx2].y && path.points[idx3].x === path.points[idx4].x && path.points[idx3].x === path.points[idx5].x;\n        }\n    }, {\n        key: 'getdirection',\n        value: function getdirection(x1, y1, x2, y2) {\n            var val = 8;\n            if (x1 < x2) {\n                if (y1 < y2) {\n                    val = 1;\n                } else if (y1 > y2) {\n                    val = 7;\n                } else {\n                    val = 0;\n                }\n            } else if (x1 > x2) {\n                if (y1 < y2) {\n                    val = 3;\n                } else if (y1 > y2) {\n                    val = 5;\n                } else {\n                    val = 4;\n                }\n            } else if (y1 < y2) {\n                val = 2;\n            } else if (y1 > y2) {\n                val = 6;\n            } else {\n                val = 8;\n            }\n\n            return val;\n        }\n    }, {\n        key: 'batchinternodes',\n        value: function batchinternodes(bpaths, options) {\n            var binternodes = [];\n            for (var k in bpaths) {\n                if (!bpaths.hasOwnProperty(k)) {\n                    continue;\n                }\n                binternodes[k] = this.internodes(bpaths[k], options);\n            }\n\n            return binternodes;\n        }\n    }, {\n        key: 'tracepath',\n        value: function tracepath(path, ltres, qtres) {\n            var pcnt = 0;\n            var segtype1 = void 0;\n            var segtype2 = void 0;\n            var seqend = void 0;\n            var smp = {};\n            smp.segments = [];\n            smp.boundingbox = path.boundingbox;\n            smp.holechildren = path.holechildren;\n            smp.isholepath = path.isholepath;\n\n            while (pcnt < path.points.length) {\n                segtype1 = path.points[pcnt].linesegment;\n                segtype2 = -1;\n                seqend = pcnt + 1;\n                while ((path.points[seqend].linesegment === segtype1 || path.points[seqend].linesegment === segtype2 || segtype2 === -1) && seqend < path.points.length - 1) {\n                    if (path.points[seqend].linesegment !== segtype1 && segtype2 === -1) {\n                        segtype2 = path.points[seqend].linesegment;\n                    }\n                    seqend += 1;\n                }\n                if (seqend === path.points.length - 1) {\n                    seqend = 0;\n                }\n\n                smp.segments = smp.segments.concat(this.fitseq(path, ltres, qtres, pcnt, seqend));\n\n                if (seqend > 0) {\n                    pcnt = seqend;\n                } else {\n                    pcnt = path.points.length;\n                }\n            }\n\n            return smp;\n        }\n    }, {\n        key: 'fitseq',\n        value: function fitseq(path, ltres, qtres, seqstart, seqend) {\n            if (seqend > path.points.length || seqend < 0) {\n                return [];\n            }\n            var errorpoint = seqstart,\n                errorval = 0,\n                curvepass = true,\n                px = void 0,\n                py = void 0,\n                dist2 = void 0;\n            var tl = seqend - seqstart;if (tl < 0) {\n                tl += path.points.length;\n            }\n            var vx = (path.points[seqend].x - path.points[seqstart].x) / tl,\n                vy = (path.points[seqend].y - path.points[seqstart].y) / tl;\n            var pcnt = (seqstart + 1) % path.points.length,\n                pl = void 0;\n            while (pcnt != seqend) {\n                pl = pcnt - seqstart;if (pl < 0) {\n                    pl += path.points.length;\n                }\n                px = path.points[seqstart].x + vx * pl;py = path.points[seqstart].y + vy * pl;\n                dist2 = (path.points[pcnt].x - px) * (path.points[pcnt].x - px) + (path.points[pcnt].y - py) * (path.points[pcnt].y - py);\n                if (dist2 > ltres) {\n                    curvepass = false;\n                }\n                if (dist2 > errorval) {\n                    errorpoint = pcnt;errorval = dist2;\n                }\n                pcnt = (pcnt + 1) % path.points.length;\n            }\n            if (curvepass) {\n                return [{ type: 'L',\n                    x1: path.points[seqstart].x,\n                    y1: path.points[seqstart].y,\n                    x2: path.points[seqend].x,\n                    y2: path.points[seqend].y }];\n            }\n            var fitpoint = errorpoint;curvepass = true;errorval = 0;\n            var t = (fitpoint - seqstart) / tl,\n                t1 = (1 - t) * (1 - t),\n                t2 = 2 * (1 - t) * t,\n                t3 = t * t;\n            var cpx = (t1 * path.points[seqstart].x + t3 * path.points[seqend].x - path.points[fitpoint].x) / -t2,\n                cpy = (t1 * path.points[seqstart].y + t3 * path.points[seqend].y - path.points[fitpoint].y) / -t2;\n            pcnt = seqstart + 1;\n            while (pcnt != seqend) {\n                t = (pcnt - seqstart) / tl;t1 = (1 - t) * (1 - t);t2 = 2 * (1 - t) * t;t3 = t * t;\n                px = t1 * path.points[seqstart].x + t2 * cpx + t3 * path.points[seqend].x;\n                py = t1 * path.points[seqstart].y + t2 * cpy + t3 * path.points[seqend].y;\n                dist2 = (path.points[pcnt].x - px) * (path.points[pcnt].x - px) + (path.points[pcnt].y - py) * (path.points[pcnt].y - py);\n                if (dist2 > qtres) {\n                    curvepass = false;\n                }\n                if (dist2 > errorval) {\n                    errorpoint = pcnt;errorval = dist2;\n                }\n                pcnt = (pcnt + 1) % path.points.length;\n            }\n            if (curvepass) {\n                return [{ type: 'Q',\n                    x1: path.points[seqstart].x,\n                    y1: path.points[seqstart].y,\n                    x2: cpx,\n                    y2: cpy,\n                    x3: path.points[seqend].x,\n                    y3: path.points[seqend].y }];\n            }\n            var splitpoint = fitpoint;\n\n            return this.fitseq(path, ltres, qtres, seqstart, splitpoint).concat(this.fitseq(path, ltres, qtres, splitpoint, seqend));\n        }\n    }, {\n        key: 'batchtracepaths',\n        value: function batchtracepaths(internodepaths, ltres, qtres) {\n            var btracedpaths = [];\n            for (var k in internodepaths) {\n                if (!internodepaths.hasOwnProperty(k)) {\n                    continue;\n                }\n                btracedpaths.push(this.tracepath(internodepaths[k], ltres, qtres));\n            }\n\n            return btracedpaths;\n        }\n    }, {\n        key: 'batchtracelayers',\n        value: function batchtracelayers(binternodes, ltres, qtres) {\n            var btbis = [];\n            for (var k in binternodes) {\n                if (!binternodes.hasOwnProperty(k)) {\n                    continue;\n                }\n                btbis[k] = this.batchtracepaths(binternodes[k], ltres, qtres);\n            }\n\n            return btbis;\n        }\n    }, {\n        key: 'roundtodec',\n        value: function roundtodec(val, places) {\n            return Number(val.toFixed(places));\n        }\n    }, {\n        key: 'svgpathstring',\n        value: function svgpathstring(tracedata, lnum, pathnum, options) {\n            var layer = tracedata.layers[lnum],\n                smp = layer[pathnum],\n                str = '',\n                pcnt = void 0;\n            if (options.linefilter && smp.segments.length < 3) {\n                return str;\n            }\n            str = '<path ' + (options.desc ? 'desc=\"l ' + lnum + ' p ' + pathnum + '\" ' : '') + this.tosvgcolorstr(tracedata.palette[lnum], options) + 'd=\"';\n            if (options.roundcoords === -1) {\n                str += 'M ' + smp.segments[0].x1 * options.scale + ' ' + smp.segments[0].y1 * options.scale + ' ';\n                for (pcnt = 0; pcnt < smp.segments.length; pcnt++) {\n                    str += smp.segments[pcnt].type + ' ' + smp.segments[pcnt].x2 * options.scale + ' ' + smp.segments[pcnt].y2 * options.scale + ' ';\n                    if (smp.segments[pcnt].hasOwnProperty('x3')) {\n                        str += smp.segments[pcnt].x3 * options.scale + ' ' + smp.segments[pcnt].y3 * options.scale + ' ';\n                    }\n                }\n                str += 'Z ';\n            } else {\n                str += 'M ' + this.roundtodec(smp.segments[0].x1 * options.scale, options.roundcoords) + ' ' + this.roundtodec(smp.segments[0].y1 * options.scale, options.roundcoords) + ' ';\n                for (pcnt = 0; pcnt < smp.segments.length; pcnt++) {\n                    str += smp.segments[pcnt].type + ' ' + this.roundtodec(smp.segments[pcnt].x2 * options.scale, options.roundcoords) + ' ' + this.roundtodec(smp.segments[pcnt].y2 * options.scale, options.roundcoords) + ' ';\n                    if (smp.segments[pcnt].hasOwnProperty('x3')) {\n                        str += this.roundtodec(smp.segments[pcnt].x3 * options.scale, options.roundcoords) + ' ' + this.roundtodec(smp.segments[pcnt].y3 * options.scale, options.roundcoords) + ' ';\n                    }\n                }\n                str += 'Z ';\n            }\n            for (var hcnt = 0; hcnt < smp.holechildren.length; hcnt++) {\n                var hsmp = layer[smp.holechildren[hcnt]];\n\n                if (options.roundcoords === -1) {\n                    if (hsmp.segments[hsmp.segments.length - 1].hasOwnProperty('x3')) {\n                        str += 'M ' + hsmp.segments[hsmp.segments.length - 1].x3 * options.scale + ' ' + hsmp.segments[hsmp.segments.length - 1].y3 * options.scale + ' ';\n                    } else {\n                        str += 'M ' + hsmp.segments[hsmp.segments.length - 1].x2 * options.scale + ' ' + hsmp.segments[hsmp.segments.length - 1].y2 * options.scale + ' ';\n                    }\n                    for (pcnt = hsmp.segments.length - 1; pcnt >= 0; pcnt--) {\n                        str += hsmp.segments[pcnt].type + ' ';\n                        if (hsmp.segments[pcnt].hasOwnProperty('x3')) {\n                            str += hsmp.segments[pcnt].x2 * options.scale + ' ' + hsmp.segments[pcnt].y2 * options.scale + ' ';\n                        }\n                        str += hsmp.segments[pcnt].x1 * options.scale + ' ' + hsmp.segments[pcnt].y1 * options.scale + ' ';\n                    }\n                } else {\n                    if (hsmp.segments[hsmp.segments.length - 1].hasOwnProperty('x3')) {\n                        str += 'M ' + this.roundtodec(hsmp.segments[hsmp.segments.length - 1].x3 * options.scale) + ' ' + this.roundtodec(hsmp.segments[hsmp.segments.length - 1].y3 * options.scale) + ' ';\n                    } else {\n                        str += 'M ' + this.roundtodec(hsmp.segments[hsmp.segments.length - 1].x2 * options.scale) + ' ' + this.roundtodec(hsmp.segments[hsmp.segments.length - 1].y2 * options.scale) + ' ';\n                    }\n                    for (pcnt = hsmp.segments.length - 1; pcnt >= 0; pcnt--) {\n                        str += hsmp.segments[pcnt].type + ' ';\n                        if (hsmp.segments[pcnt].hasOwnProperty('x3')) {\n                            str += this.roundtodec(hsmp.segments[pcnt].x2 * options.scale) + ' ' + this.roundtodec(hsmp.segments[pcnt].y2 * options.scale) + ' ';\n                        }\n                        str += this.roundtodec(hsmp.segments[pcnt].x1 * options.scale) + ' ' + this.roundtodec(hsmp.segments[pcnt].y1 * options.scale) + ' ';\n                    }\n                }\n                str += 'Z ';\n            }\n            str += '\" />';\n            if (options.lcpr || options.qcpr) {\n                for (pcnt = 0; pcnt < smp.segments.length; pcnt++) {\n                    if (smp.segments[pcnt].hasOwnProperty('x3') && options.qcpr) {\n                        str += '<circle cx=\"' + smp.segments[pcnt].x2 * options.scale + '\" cy=\"' + smp.segments[pcnt].y2 * options.scale + '\" r=\"' + options.qcpr + '\" fill=\"cyan\" stroke-width=\"' + options.qcpr * 0.2 + '\" stroke=\"black\" />';\n                        str += '<circle cx=\"' + smp.segments[pcnt].x3 * options.scale + '\" cy=\"' + smp.segments[pcnt].y3 * options.scale + '\" r=\"' + options.qcpr + '\" fill=\"white\" stroke-width=\"' + options.qcpr * 0.2 + '\" stroke=\"black\" />';\n                        str += '<line x1=\"' + smp.segments[pcnt].x1 * options.scale + '\" y1=\"' + smp.segments[pcnt].y1 * options.scale + '\" x2=\"' + smp.segments[pcnt].x2 * options.scale + '\" y2=\"' + smp.segments[pcnt].y2 * options.scale + '\" stroke-width=\"' + options.qcpr * 0.2 + '\" stroke=\"cyan\" />';\n                        str += '<line x1=\"' + smp.segments[pcnt].x2 * options.scale + '\" y1=\"' + smp.segments[pcnt].y2 * options.scale + '\" x2=\"' + smp.segments[pcnt].x3 * options.scale + '\" y2=\"' + smp.segments[pcnt].y3 * options.scale + '\" stroke-width=\"' + options.qcpr * 0.2 + '\" stroke=\"cyan\" />';\n                    }\n                    if (!smp.segments[pcnt].hasOwnProperty('x3') && options.lcpr) {\n                        str += '<circle cx=\"' + smp.segments[pcnt].x2 * options.scale + '\" cy=\"' + smp.segments[pcnt].y2 * options.scale + '\" r=\"' + options.lcpr + '\" fill=\"white\" stroke-width=\"' + options.lcpr * 0.2 + '\" stroke=\"black\" />';\n                    }\n                }\n\n                for (var hcnt = 0; hcnt < smp.holechildren.length; hcnt++) {\n                    var hsmp = layer[smp.holechildren[hcnt]];\n                    for (pcnt = 0; pcnt < hsmp.segments.length; pcnt++) {\n                        if (hsmp.segments[pcnt].hasOwnProperty('x3') && options.qcpr) {\n                            str += '<circle cx=\"' + hsmp.segments[pcnt].x2 * options.scale + '\" cy=\"' + hsmp.segments[pcnt].y2 * options.scale + '\" r=\"' + options.qcpr + '\" fill=\"cyan\" stroke-width=\"' + options.qcpr * 0.2 + '\" stroke=\"black\" />';\n                            str += '<circle cx=\"' + hsmp.segments[pcnt].x3 * options.scale + '\" cy=\"' + hsmp.segments[pcnt].y3 * options.scale + '\" r=\"' + options.qcpr + '\" fill=\"white\" stroke-width=\"' + options.qcpr * 0.2 + '\" stroke=\"black\" />';\n                            str += '<line x1=\"' + hsmp.segments[pcnt].x1 * options.scale + '\" y1=\"' + hsmp.segments[pcnt].y1 * options.scale + '\" x2=\"' + hsmp.segments[pcnt].x2 * options.scale + '\" y2=\"' + hsmp.segments[pcnt].y2 * options.scale + '\" stroke-width=\"' + options.qcpr * 0.2 + '\" stroke=\"cyan\" />';\n                            str += '<line x1=\"' + hsmp.segments[pcnt].x2 * options.scale + '\" y1=\"' + hsmp.segments[pcnt].y2 * options.scale + '\" x2=\"' + hsmp.segments[pcnt].x3 * options.scale + '\" y2=\"' + hsmp.segments[pcnt].y3 * options.scale + '\" stroke-width=\"' + options.qcpr * 0.2 + '\" stroke=\"cyan\" />';\n                        }\n                        if (!hsmp.segments[pcnt].hasOwnProperty('x3') && options.lcpr) {\n                            str += '<circle cx=\"' + hsmp.segments[pcnt].x2 * options.scale + '\" cy=\"' + hsmp.segments[pcnt].y2 * options.scale + '\" r=\"' + options.lcpr + '\" fill=\"white\" stroke-width=\"' + options.lcpr * 0.2 + '\" stroke=\"black\" />';\n                        }\n                    }\n                }\n            }\n\n            return str;\n        }\n    }, {\n        key: 'getsvgstring',\n        value: function getsvgstring(tracedata, options) {\n            options = this.checkoptions(options);\n            var w = tracedata.width * options.scale;\n            var h = tracedata.height * options.scale;\n\n            var svgstr = '<svg ' + (options.viewbox ? 'viewBox=\"0 0 ' + w + ' ' + h + '\" ' : 'width=\"' + w + '\" height=\"' + h + '\" ') + 'version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" desc=\"Created with imagetracer.js version ' + this.versionnumber + '\" >';\n            for (var lcnt = 0; lcnt < tracedata.layers.length; lcnt += 1) {\n                for (var pcnt = 0; pcnt < tracedata.layers[lcnt].length; pcnt += 1) {\n                    if (!tracedata.layers[lcnt][pcnt].isholepath) {\n                        svgstr += this.svgpathstring(tracedata, lcnt, pcnt, options);\n                    }\n                }\n            }\n            svgstr += '</svg>';\n\n            return svgstr;\n        }\n    }, {\n        key: 'compareNumbers',\n        value: function compareNumbers(a, b) {\n            return a - b;\n        }\n    }, {\n        key: 'torgbastr',\n        value: function torgbastr(c) {\n            return 'rgba(' + c.r + ',' + c.g + ',' + c.b + ',' + c.a + ')';\n        }\n    }, {\n        key: 'tosvgcolorstr',\n        value: function tosvgcolorstr(c, options) {\n            return 'fill=\"rgb(' + c.r + ',' + c.g + ',' + c.b + ')\" stroke=\"rgb(' + c.r + ',' + c.g + ',' + c.b + ')\" stroke-width=\"' + options.strokewidth + '\" opacity=\"' + c.a / 255.0 + '\" ';\n        }\n    }, {\n        key: 'appendSVGString',\n        value: function appendSVGString(svgstr, parentid) {\n            var div = void 0;\n            if (parentid) {\n                div = document.getElementById(parentid);\n                if (!div) {\n                    div = document.createElement('div');\n                    div.id = parentid;\n                    document.body.appendChild(div);\n                }\n            } else {\n                div = document.createElement('div');\n                document.body.appendChild(div);\n            }\n            div.innerHTML += svgstr;\n        }\n    }, {\n        key: 'blur',\n        value: function blur(imgd, radius, delta) {\n            var i = void 0,\n                j = void 0,\n                k = void 0,\n                d = void 0,\n                idx = void 0,\n                racc = void 0,\n                gacc = void 0,\n                bacc = void 0,\n                aacc = void 0,\n                wacc = void 0;\n            var imgd2 = { width: imgd.width,\n                height: imgd.height,\n                data: [] };\n            radius = Math.floor(radius);if (radius < 1) {\n                return imgd;\n            }if (radius > 5) {\n                radius = 5;\n            }delta = Math.abs(delta);if (delta > 1024) {\n                delta = 1024;\n            }\n            var thisgk = this.gks[radius - 1];\n            for (j = 0; j < imgd.height; j++) {\n                for (i = 0; i < imgd.width; i++) {\n                    racc = 0;gacc = 0;bacc = 0;aacc = 0;wacc = 0;\n\n                    for (k = -radius; k < radius + 1; k++) {\n                        if (i + k > 0 && i + k < imgd.width) {\n                            idx = (j * imgd.width + i + k) * 4;\n                            racc += imgd.data[idx] * thisgk[k + radius];\n                            gacc += imgd.data[idx + 1] * thisgk[k + radius];\n                            bacc += imgd.data[idx + 2] * thisgk[k + radius];\n                            aacc += imgd.data[idx + 3] * thisgk[k + radius];\n                            wacc += thisgk[k + radius];\n                        }\n                    }\n\n                    idx = (j * imgd.width + i) * 4;\n                    imgd2.data[idx] = Math.floor(racc / wacc);\n                    imgd2.data[idx + 1] = Math.floor(gacc / wacc);\n                    imgd2.data[idx + 2] = Math.floor(bacc / wacc);\n                    imgd2.data[idx + 3] = Math.floor(aacc / wacc);\n                }\n            }\n            var himgd = new Uint8ClampedArray(imgd2.data);\n            for (j = 0; j < imgd.height; j++) {\n                for (i = 0; i < imgd.width; i++) {\n                    racc = 0;gacc = 0;bacc = 0;aacc = 0;wacc = 0;\n\n                    for (k = -radius; k < radius + 1; k++) {\n                        if (j + k > 0 && j + k < imgd.height) {\n                            idx = ((j + k) * imgd.width + i) * 4;\n                            racc += himgd[idx] * thisgk[k + radius];\n                            gacc += himgd[idx + 1] * thisgk[k + radius];\n                            bacc += himgd[idx + 2] * thisgk[k + radius];\n                            aacc += himgd[idx + 3] * thisgk[k + radius];\n                            wacc += thisgk[k + radius];\n                        }\n                    }\n\n                    idx = (j * imgd.width + i) * 4;\n                    imgd2.data[idx] = Math.floor(racc / wacc);\n                    imgd2.data[idx + 1] = Math.floor(gacc / wacc);\n                    imgd2.data[idx + 2] = Math.floor(bacc / wacc);\n                    imgd2.data[idx + 3] = Math.floor(aacc / wacc);\n                }\n            }\n            for (j = 0; j < imgd.height; j++) {\n                for (i = 0; i < imgd.width; i++) {\n                    idx = (j * imgd.width + i) * 4;\n\n                    d = Math.abs(imgd2.data[idx] - imgd.data[idx]) + Math.abs(imgd2.data[idx + 1] - imgd.data[idx + 1]) + Math.abs(imgd2.data[idx + 2] - imgd.data[idx + 2]) + Math.abs(imgd2.data[idx + 3] - imgd.data[idx + 3]);\n\n                    if (d > delta) {\n                        imgd2.data[idx] = imgd.data[idx];\n                        imgd2.data[idx + 1] = imgd.data[idx + 1];\n                        imgd2.data[idx + 2] = imgd.data[idx + 2];\n                        imgd2.data[idx + 3] = imgd.data[idx + 3];\n                    }\n                }\n            }\n\n            return imgd2;\n        }\n    }, {\n        key: 'loadImage',\n        value: function loadImage(url, callback, options) {\n            var img = new Image();\n            if (options && options.corsenabled) {\n                img.crossOrigin = 'Anonymous';\n            }\n            img.src = url;\n            img.onload = function () {\n                var canvas = document.createElement('canvas');\n                canvas.width = img.width;\n                canvas.height = img.height;\n                var context = canvas.getContext('2d');\n                context.drawImage(img, 0, 0);\n                callback(canvas);\n            };\n        }\n    }, {\n        key: 'getImgdata',\n        value: function getImgdata(canvas) {\n            var context = canvas.getContext('2d');\n\n            return context.getImageData(0, 0, canvas.width, canvas.height);\n        }\n    }, {\n        key: 'drawLayers',\n        value: function drawLayers(layers, palette, scale, parentid) {\n            scale = scale || 1;\n            var w = void 0,\n                h = void 0,\n                i = void 0,\n                j = void 0,\n                k = void 0;\n            var div = void 0;\n            if (parentid) {\n                div = document.getElementById(parentid);\n                if (!div) {\n                    div = document.createElement('div');\n                    div.id = parentid;\n                    document.body.appendChild(div);\n                }\n            } else {\n                div = document.createElement('div');\n                document.body.appendChild(div);\n            }\n            for (k in layers) {\n                if (!layers.hasOwnProperty(k)) {\n                    continue;\n                }\n\n                w = layers[k][0].length;\n                h = layers[k].length;\n\n                var canvas = document.createElement('canvas');\n                canvas.width = w * scale;\n                canvas.height = h * scale;\n                var context = canvas.getContext('2d');\n\n                for (j = 0; j < h; j += 1) {\n                    for (i = 0; i < w; i += 1) {\n                        context.fillStyle = this.torgbastr(palette[layers[k][j][i] % palette.length]);\n                        context.fillRect(i * scale, j * scale, scale, scale);\n                    }\n                }\n\n                div.appendChild(canvas);\n            }\n        }\n    }]);\n\n    return ImageTracer;\n}();\n\nexports.default = ImageTracer;\n\n//# sourceURL=webpack://tui.ImageEditor/./src/js/helper/imagetracer.js?");
+
+/***/ }),
+
+/***/ "./src/js/helper/shapeFilterFillHelper.js":
+/*!************************************************!*\
+  !*** ./src/js/helper/shapeFilterFillHelper.js ***!
+  \************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\nexports.getFillImageFromShape = getFillImageFromShape;\nexports.rePositionFilterTypeFillImage = rePositionFilterTypeFillImage;\nexports.makeFilterOptionFromFabricImage = makeFilterOptionFromFabricImage;\nexports.makeFillPatternForFilter = makeFillPatternForFilter;\nexports.reMakePatternImageSource = reMakePatternImageSource;\nexports.getCachedCanvasImageElement = getCachedCanvasImageElement;\n\nvar _tuiCodeSnippet = __webpack_require__(/*! tui-code-snippet */ \"tui-code-snippet\");\n\nvar _util = __webpack_require__(/*! ../util */ \"./src/js/util.js\");\n\nvar _shapeResizeHelper = __webpack_require__(/*! ../helper/shapeResizeHelper */ \"./src/js/helper/shapeResizeHelper.js\");\n\nvar _shapeResizeHelper2 = _interopRequireDefault(_shapeResizeHelper);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } /**\n                                                                                                                                                                                                                   * @author NHN. FE Development Team <dl_javascript@nhn.com>\n                                                                                                                                                                                                                   * @fileoverview Shape resize helper\n                                                                                                                                                                                                                   */\n\n\nvar FILTER_OPTION_MAP = {\n    'pixelate': 'blocksize',\n    'blur': 'blur'\n};\nvar POSITION_DIMENSION_MAP = {\n    x: 'width',\n    y: 'height'\n};\n\nvar FILTER_NAME_VALUE_MAP = (0, _util.flipObject)(FILTER_OPTION_MAP);\n\n/**\n * Cached canvas image element for fill image\n * @type {boolean}\n * @private\n */\nvar cachedCanvasImageElement = null;\n\n/**\n * Get background image of fill\n * @param {fabric.Object} shapeObj - Shape object\n * @returns {fabric.Image}\n * @private\n */\nfunction getFillImageFromShape(shapeObj) {\n    var _getCustomProperty = (0, _util.getCustomProperty)(shapeObj, 'patternSourceCanvas'),\n        patternSourceCanvas = _getCustomProperty.patternSourceCanvas;\n\n    var _patternSourceCanvas$ = patternSourceCanvas.getObjects(),\n        fillImage = _patternSourceCanvas$[0];\n\n    return fillImage;\n}\n\n/**\n * Reset the image position in the filter type fill area.\n * @param {fabric.Object} shapeObj - Shape object\n * @private\n */\nfunction rePositionFilterTypeFillImage(shapeObj) {\n    var angle = shapeObj.angle,\n        flipX = shapeObj.flipX,\n        flipY = shapeObj.flipY;\n\n    var fillImage = getFillImageFromShape(shapeObj);\n    var rotatedShapeCornerDimension = getRotatedDimension(shapeObj);\n    var right = rotatedShapeCornerDimension.right,\n        bottom = rotatedShapeCornerDimension.bottom;\n    var width = rotatedShapeCornerDimension.width,\n        height = rotatedShapeCornerDimension.height;\n\n    var diffLeft = (width - shapeObj.width) / 2;\n    var diffTop = (height - shapeObj.height) / 2;\n    var cropX = shapeObj.left - shapeObj.width / 2 - diffLeft;\n    var cropY = shapeObj.top - shapeObj.height / 2 - diffTop;\n    var left = width / 2 - diffLeft;\n    var top = height / 2 - diffTop;\n    var fillImageMaxSize = Math.max(width, height) + Math.max(diffLeft, diffTop);\n\n    var _calculateFillImageDi = calculateFillImageDimensionOutsideCanvas({\n        shapeObj: shapeObj,\n        left: left,\n        top: top,\n        width: width,\n        height: height,\n        cropX: cropX,\n        cropY: cropY,\n        flipX: flipX,\n        flipY: flipY,\n        right: right,\n        bottom: bottom\n    });\n\n    left = _calculateFillImageDi[0];\n    top = _calculateFillImageDi[1];\n    width = _calculateFillImageDi[2];\n    height = _calculateFillImageDi[3];\n\n\n    fillImage.set({\n        angle: flipX === flipY ? -angle : angle,\n        left: left,\n        top: top,\n        width: width,\n        height: height,\n        cropX: cropX,\n        cropY: cropY,\n        flipX: flipX,\n        flipY: flipY\n    });\n\n    (0, _util.setCustomProperty)(fillImage, { fillImageMaxSize: fillImageMaxSize });\n}\n\n/**\n * Make filter option from fabric image\n * @param {fabric.Image} imageObject - fabric image object\n * @returns {object}\n */\nfunction makeFilterOptionFromFabricImage(imageObject) {\n    return (0, _tuiCodeSnippet.map)(imageObject.filters, function (filter) {\n        var _Object$keys = Object.keys(filter),\n            key = _Object$keys[0];\n\n        return _defineProperty({}, FILTER_NAME_VALUE_MAP[key], filter[key]);\n    });\n}\n\n/**\n * Calculate fill image position and size for out of Canvas\n * @param {Object} options - options for position dimension calculate\n *   @param {fabric.Object} shapeObj - shape object\n *   @param {number} left - original left position\n *   @param {number} top - original top position\n *   @param {number} width - image width\n *   @param {number} height - image height\n *   @param {number} cropX - image cropX\n *   @param {number} cropY - image cropY\n *   @param {boolean} flipX - shape flipX\n *   @param {boolean} flipY - shape flipY\n * @returns {Object}\n */\nfunction calculateFillImageDimensionOutsideCanvas(_ref2) {\n    var shapeObj = _ref2.shapeObj,\n        left = _ref2.left,\n        top = _ref2.top,\n        width = _ref2.width,\n        height = _ref2.height,\n        cropX = _ref2.cropX,\n        cropY = _ref2.cropY,\n        flipX = _ref2.flipX,\n        flipY = _ref2.flipY,\n        right = _ref2.right,\n        bottom = _ref2.bottom;\n\n    var overflowAreaPositionFixer = function overflowAreaPositionFixer(type, outDistance, imageLeft, imageTop) {\n        return calculateDistanceOverflowPart({\n            type: type,\n            outDistance: outDistance,\n            shapeObj: shapeObj,\n            flipX: flipX,\n            flipY: flipY,\n            left: imageLeft,\n            top: imageTop\n        });\n    };\n    var originalWidth = width,\n        originalHeight = height;\n\n    var _calculateDimensionLe = calculateDimensionLeftTopEdge(overflowAreaPositionFixer, {\n        left: left,\n        top: top,\n        width: width,\n        height: height,\n        cropX: cropX,\n        cropY: cropY\n    });\n\n    left = _calculateDimensionLe[0];\n    top = _calculateDimensionLe[1];\n    width = _calculateDimensionLe[2];\n    height = _calculateDimensionLe[3];\n\n    var _calculateDimensionRi = calculateDimensionRightBottomEdge(overflowAreaPositionFixer, {\n        left: left,\n        top: top,\n        insideCanvasRealImageWidth: width,\n        insideCanvasRealImageHeight: height,\n        right: right,\n        bottom: bottom,\n        cropX: cropX,\n        cropY: cropY,\n        originalWidth: originalWidth,\n        originalHeight: originalHeight\n    });\n\n    left = _calculateDimensionRi[0];\n    top = _calculateDimensionRi[1];\n    width = _calculateDimensionRi[2];\n    height = _calculateDimensionRi[3];\n\n\n    return [left, top, width, height];\n}\n\n/**\n * Calculate fill image position and size for for right bottom edge\n * @param {Function} overflowAreaPositionFixer - position fixer\n * @param {Object} options - options for position dimension calculate\n *   @param {fabric.Object} shapeObj - shape object\n *   @param {number} left - original left position\n *   @param {number} top - original top position\n *   @param {number} width - image width\n *   @param {number} height - image height\n *   @param {number} right - image right\n *   @param {number} bottom - image bottom\n *   @param {number} cropX - image cropX\n *   @param {number} cropY - image cropY\n *   @param {boolean} originalWidth - image original width\n *   @param {boolean} originalHeight - image original height\n * @returns {Object}\n */\nfunction calculateDimensionRightBottomEdge(overflowAreaPositionFixer, _ref3) {\n    var left = _ref3.left,\n        top = _ref3.top,\n        insideCanvasRealImageWidth = _ref3.insideCanvasRealImageWidth,\n        insideCanvasRealImageHeight = _ref3.insideCanvasRealImageHeight,\n        right = _ref3.right,\n        bottom = _ref3.bottom,\n        cropX = _ref3.cropX,\n        cropY = _ref3.cropY,\n        originalWidth = _ref3.originalWidth,\n        originalHeight = _ref3.originalHeight;\n    var width = insideCanvasRealImageWidth,\n        height = insideCanvasRealImageHeight;\n    var _cachedCanvasImageEle = cachedCanvasImageElement,\n        canvasWidth = _cachedCanvasImageEle.width,\n        canvasHeight = _cachedCanvasImageEle.height;\n\n\n    if (right > canvasWidth && cropX > 0) {\n        width = originalWidth - Math.abs(right - canvasWidth);\n    }\n    if (bottom > canvasHeight && cropY > 0) {\n        height = originalHeight - Math.abs(bottom - canvasHeight);\n    }\n\n    var diff = {\n        x: (insideCanvasRealImageWidth - width) / 2,\n        y: (insideCanvasRealImageHeight - height) / 2\n    };\n\n    (0, _tuiCodeSnippet.forEach)(['x', 'y'], function (type) {\n        var cropDistance2 = diff[type];\n        if (cropDistance2 > 0) {\n            var _overflowAreaPosition = overflowAreaPositionFixer(type, cropDistance2, left, top);\n\n            left = _overflowAreaPosition[0];\n            top = _overflowAreaPosition[1];\n        }\n    });\n\n    return [left, top, width, height];\n}\n\n/**\n * Calculate fill image position and size for for left top\n * @param {Function} overflowAreaPositionFixer - position fixer\n * @param {Object} options - options for position dimension calculate\n *   @param {fabric.Object} shapeObj - shape object\n *   @param {number} left - original left position\n *   @param {number} top - original top position\n *   @param {number} width - image width\n *   @param {number} height - image height\n *   @param {number} cropX - image cropX\n *   @param {number} cropY - image cropY\n * @returns {Object}\n */\nfunction calculateDimensionLeftTopEdge(overflowAreaPositionFixer, _ref4) {\n    var left = _ref4.left,\n        top = _ref4.top,\n        width = _ref4.width,\n        height = _ref4.height,\n        cropX = _ref4.cropX,\n        cropY = _ref4.cropY;\n\n    var dimension = {\n        width: width,\n        height: height\n    };\n\n    (0, _tuiCodeSnippet.forEach)(['x', 'y'], function (type) {\n        var cropDistance = type === 'x' ? cropX : cropY;\n        var compareSize = dimension[POSITION_DIMENSION_MAP[type]];\n        var standardSize = cachedCanvasImageElement[POSITION_DIMENSION_MAP[type]];\n\n        if (compareSize > standardSize) {\n            var outDistance = (compareSize - standardSize) / 2;\n\n            dimension[POSITION_DIMENSION_MAP[type]] = standardSize;\n\n            var _overflowAreaPosition2 = overflowAreaPositionFixer(type, outDistance, left, top);\n\n            left = _overflowAreaPosition2[0];\n            top = _overflowAreaPosition2[1];\n        }\n        if (cropDistance < 0) {\n            var _overflowAreaPosition3 = overflowAreaPositionFixer(type, cropDistance, left, top);\n\n            left = _overflowAreaPosition3[0];\n            top = _overflowAreaPosition3[1];\n        }\n    });\n\n    return [left, top, dimension.width, dimension.height];\n}\n\n/**\n * Make fill property of dynamic pattern type\n * @param {fabric.Image} canvasImage - canvas background image\n * @param {Array} filterOption - filter option\n * @param {fabric.StaticCanvas} patternSourceCanvas - fabric static canvas\n * @returns {Object}\n * @private\n */\nfunction makeFillPatternForFilter(canvasImage, filterOption, patternSourceCanvas) {\n    var copiedCanvasElement = getCachedCanvasImageElement(canvasImage);\n    var fillImage = makeFillImage(copiedCanvasElement, canvasImage.angle, filterOption);\n    patternSourceCanvas.add(fillImage);\n\n    var fabricProperty = {\n        fill: new fabric.Pattern({\n            source: function source() {\n                var _patternSourceCanvas$2 = patternSourceCanvas.getObjects(),\n                    innerImage = _patternSourceCanvas$2[0];\n\n                var _getCustomProperty2 = (0, _util.getCustomProperty)(innerImage, 'fillImageMaxSize'),\n                    fillImageMaxSize = _getCustomProperty2.fillImageMaxSize;\n\n                fillImageMaxSize = Math.max(1, fillImageMaxSize);\n\n                patternSourceCanvas.setDimensions({\n                    width: fillImageMaxSize,\n                    height: fillImageMaxSize\n                });\n                patternSourceCanvas.renderAll();\n\n                return patternSourceCanvas.getElement();\n            },\n            repeat: 'no-repeat'\n        })\n    };\n\n    (0, _util.setCustomProperty)(fabricProperty, { patternSourceCanvas: patternSourceCanvas });\n\n    return fabricProperty;\n}\n\n/**\n * Remake filter pattern image source\n * @param {fabric.Object} shapeObj - Shape object\n * @param {fabric.Image} canvasImage - canvas background image\n * @private\n */\nfunction reMakePatternImageSource(shapeObj, canvasImage) {\n    var _getCustomProperty3 = (0, _util.getCustomProperty)(shapeObj, 'patternSourceCanvas'),\n        patternSourceCanvas = _getCustomProperty3.patternSourceCanvas;\n\n    var _patternSourceCanvas$3 = patternSourceCanvas.getObjects(),\n        fillImage = _patternSourceCanvas$3[0];\n\n    var filterOption = makeFilterOptionFromFabricImage(fillImage);\n\n    patternSourceCanvas.remove(fillImage);\n\n    var copiedCanvasElement = getCachedCanvasImageElement(canvasImage, true);\n    var newFillImage = makeFillImage(copiedCanvasElement, canvasImage.angle, filterOption);\n\n    patternSourceCanvas.add(newFillImage);\n}\n\n/**\n * Calculate a point line outside the canvas. \n * @param {fabric.Image} canvasImage - canvas background image\n * @param {boolean} reset - default is false\n * @returns {HTMLImageElement}\n */\nfunction getCachedCanvasImageElement(canvasImage) {\n    var reset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n    if (!cachedCanvasImageElement || reset) {\n        cachedCanvasImageElement = canvasImage.toCanvasElement();\n    }\n\n    return cachedCanvasImageElement;\n}\n\n/**\n * Calculate fill image position for out of Canvas\n * @param {string} type - 'x' or 'y'\n * @param {fabric.Object} shapeObj - shape object\n * @param {number} outDistance - distance away\n * @param {number} left - original left position\n * @param {number} top - original top position\n * @returns {Array}\n */\nfunction calculateDistanceOverflowPart(_ref5) {\n    var type = _ref5.type,\n        shapeObj = _ref5.shapeObj,\n        outDistance = _ref5.outDistance,\n        left = _ref5.left,\n        top = _ref5.top,\n        flipX = _ref5.flipX,\n        flipY = _ref5.flipY;\n\n    var shapePointNavigation = getShapeEdgePoint(shapeObj);\n    var shapeNeighborPointNavigation = [[1, 2], [0, 3], [0, 3], [1, 2]];\n    var linePointsOutsideCanvas = calculateLinePointsOutsideCanvas(type, shapePointNavigation, shapeNeighborPointNavigation);\n    var reatAngles = calculateLineAngleOfOutsideCanvas(type, shapePointNavigation, linePointsOutsideCanvas);\n    var startPointIndex = linePointsOutsideCanvas.startPointIndex;\n\n    var diffPosition = getReversePositionForFlip({\n        outDistance: outDistance,\n        startPointIndex: startPointIndex,\n        flipX: flipX,\n        flipY: flipY,\n        reatAngles: reatAngles\n    });\n\n    return [left + diffPosition.left, top + diffPosition.top];\n}\n\n/**\n * Calculate fill image position for out of Canvas\n * @param {number} outDistance - distance away\n * @param {boolean} flipX - flip x statux\n * @param {boolean} flipY - flip y statux\n * @param {Array} reatAngles - Line angle of the rectangle vertex.\n * @returns {Object} diffPosition\n */\nfunction getReversePositionForFlip(_ref6) {\n    var outDistance = _ref6.outDistance,\n        startPointIndex = _ref6.startPointIndex,\n        flipX = _ref6.flipX,\n        flipY = _ref6.flipY,\n        reatAngles = _ref6.reatAngles;\n\n    var rotationChangePoint1 = outDistance * Math.cos(reatAngles[0] * Math.PI / 180);\n    var rotationChangePoint2 = outDistance * Math.cos(reatAngles[1] * Math.PI / 180);\n    var isForward = startPointIndex === 2 || startPointIndex === 3;\n    var diffPosition = {\n        top: isForward ? rotationChangePoint1 : rotationChangePoint2,\n        left: isForward ? rotationChangePoint2 : rotationChangePoint1\n    };\n\n    if (isReverseLeftPositionForFlip(startPointIndex, flipX, flipY)) {\n        diffPosition.left = diffPosition.left * -1;\n    }\n    if (isReverseTopPositionForFlip(startPointIndex, flipX, flipY)) {\n        diffPosition.top = diffPosition.top * -1;\n    }\n\n    return diffPosition;\n}\n\n/**\n * Calculate a point line outside the canvas. \n * @param {string} type - 'x' or 'y'\n * @param {Array} shapePointNavigation - shape edge positions\n *   @param {Object} shapePointNavigation.lefttop - left top position\n *   @param {Object} shapePointNavigation.righttop - right top position\n *   @param {Object} shapePointNavigation.leftbottom - lefttop position\n *   @param {Object} shapePointNavigation.rightbottom - rightbottom position\n * @param {Array} shapeNeighborPointNavigation - Array to find adjacent edges.\n * @returns {Object}\n */\nfunction calculateLinePointsOutsideCanvas(type, shapePointNavigation, shapeNeighborPointNavigation) {\n    var minimumPoint = 0;\n    var minimumPointIndex = 0;\n    (0, _tuiCodeSnippet.forEach)(shapePointNavigation, function (point, index) {\n        if (point[type] < minimumPoint) {\n            minimumPoint = point[type];\n            minimumPointIndex = index;\n        }\n    });\n\n    var _shapeNeighborPointNa = shapeNeighborPointNavigation[minimumPointIndex],\n        endPointIndex1 = _shapeNeighborPointNa[0],\n        endPointIndex2 = _shapeNeighborPointNa[1];\n\n\n    return {\n        startPointIndex: minimumPointIndex,\n        endPointIndex1: endPointIndex1,\n        endPointIndex2: endPointIndex2\n    };\n}\n\n/**\n * Calculate a point line outside the canvas. \n * @param {string} type - 'x' or 'y'\n * @param {Array} shapePointNavigation - shape edge positions\n *   @param {object} shapePointNavigation.lefttop - left top position\n *   @param {object} shapePointNavigation.righttop - right top position\n *   @param {object} shapePointNavigation.leftbottom - lefttop position\n *   @param {object} shapePointNavigation.rightbottom - rightbottom position\n * @param {Object} linePointsOfOneVertexIndex - Line point of one vertex\n *   @param {Object} linePointsOfOneVertexIndex.startPoint - start point index\n *   @param {Object} linePointsOfOneVertexIndex.endPointIndex1 - end point index\n *   @param {Object} linePointsOfOneVertexIndex.endPointIndex2 - end point index\n * @returns {Object}\n */\nfunction calculateLineAngleOfOutsideCanvas(type, shapePointNavigation, linePointsOfOneVertexIndex) {\n    var startPointIndex = linePointsOfOneVertexIndex.startPointIndex,\n        endPointIndex1 = linePointsOfOneVertexIndex.endPointIndex1,\n        endPointIndex2 = linePointsOfOneVertexIndex.endPointIndex2;\n\n    var horizontalVerticalAngle = type === 'x' ? 180 : 270;\n\n    return (0, _tuiCodeSnippet.map)([endPointIndex1, endPointIndex2], function (pointIndex) {\n        var startPoint = shapePointNavigation[startPointIndex];\n        var endPoint = shapePointNavigation[pointIndex];\n        var diffY = startPoint.y - endPoint.y;\n        var diffX = startPoint.x - endPoint.x;\n\n        return Math.atan2(diffY, diffX) * 180 / Math.PI - horizontalVerticalAngle;\n    });\n}\n\n/* eslint-disable complexity */\n/**\n * Calculate a point line outside the canvas for horizontal.\n * @param {number} startPointIndex - start point index\n * @param {boolean} flipX - flip x statux\n * @param {boolean} flipY - flip y statux\n * @returns {boolean} flipY - flip y statux\n */\nfunction isReverseLeftPositionForFlip(startPointIndex, flipX, flipY) {\n    return (!flipX && flipY || !flipX && !flipY) && startPointIndex === 0 || (flipX && flipY || flipX && !flipY) && startPointIndex === 1 || (!flipX && !flipY || !flipX && flipY) && startPointIndex === 2 || (flipX && !flipY || flipX && flipY) && startPointIndex === 3;\n}\n/* eslint-enable complexity */\n\n/* eslint-disable complexity */\n/**\n * Calculate a point line outside the canvas for vertical. \n * @param {number} startPointIndex - start point index\n * @param {boolean} flipX - flip x statux\n * @param {boolean} flipY - flip y statux\n * @returns {boolean} flipY - flip y statux\n */\nfunction isReverseTopPositionForFlip(startPointIndex, flipX, flipY) {\n    return (flipX && !flipY || !flipX && !flipY) && startPointIndex === 0 || (!flipX && !flipY || flipX && !flipY) && startPointIndex === 1 || (flipX && flipY || !flipX && flipY) && startPointIndex === 2 || (!flipX && flipY || flipX && flipY) && startPointIndex === 3;\n}\n/* eslint-enable complexity */\n\n/**\n * Shape edge points\n * @param {fabric.Object} shapeObj - Selected shape object on canvas\n * @returns {Array} shapeEdgePoint - shape edge positions\n */\nfunction getShapeEdgePoint(shapeObj) {\n    return [shapeObj.getPointByOrigin('left', 'top'), shapeObj.getPointByOrigin('right', 'top'), shapeObj.getPointByOrigin('left', 'bottom'), shapeObj.getPointByOrigin('right', 'bottom')];\n}\n\n/**\n * Rotated shape dimension\n * @param {fabric.Object} shapeObj - Shape object\n * @returns {Object} Rotated shape dimension\n */\nfunction getRotatedDimension(shapeObj) {\n    var _getShapeEdgePoint = getShapeEdgePoint(shapeObj),\n        _getShapeEdgePoint$ = _getShapeEdgePoint[0],\n        ax = _getShapeEdgePoint$.x,\n        ay = _getShapeEdgePoint$.y,\n        _getShapeEdgePoint$2 = _getShapeEdgePoint[1],\n        bx = _getShapeEdgePoint$2.x,\n        by = _getShapeEdgePoint$2.y,\n        _getShapeEdgePoint$3 = _getShapeEdgePoint[2],\n        cx = _getShapeEdgePoint$3.x,\n        cy = _getShapeEdgePoint$3.y,\n        _getShapeEdgePoint$4 = _getShapeEdgePoint[3],\n        dx = _getShapeEdgePoint$4.x,\n        dy = _getShapeEdgePoint$4.y;\n\n    var left = Math.min(ax, bx, cx, dx);\n    var top = Math.min(ay, by, cy, dy);\n    var right = Math.max(ax, bx, cx, dx);\n    var bottom = Math.max(ay, by, cy, dy);\n\n    return {\n        left: left,\n        top: top,\n        right: right,\n        bottom: bottom,\n        width: right - left,\n        height: bottom - top\n    };\n}\n\n/**\n * Make fill image\n * @param {HTMLImageElement} copiedCanvasElement - html image element\n * @param {number} currentCanvasImageAngle - current canvas angle\n * @param {Array} filterOption - filter option\n * @returns {fabric.Image}\n * @private\n */\nfunction makeFillImage(copiedCanvasElement, currentCanvasImageAngle, filterOption) {\n    var fillImage = new fabric.Image(copiedCanvasElement);\n\n    (0, _tuiCodeSnippet.forEach)(_tuiCodeSnippet.extend.apply(undefined, [{}].concat(filterOption)), function (value, key) {\n        var fabricFiterClassName = (0, _util.capitalizeString)(key);\n        var filter = new fabric.Image.filters[fabricFiterClassName](_defineProperty({}, FILTER_OPTION_MAP[key], value));\n        fillImage.filters.push(filter);\n    });\n    fillImage.applyFilters();\n\n    (0, _util.setCustomProperty)(fillImage, {\n        originalAngle: currentCanvasImageAngle,\n        fillImageMaxSize: Math.max(fillImage.width, fillImage.height)\n    });\n    _shapeResizeHelper2.default.adjustOriginToCenter(fillImage);\n\n    return fillImage;\n}\n\n//# sourceURL=webpack://tui.ImageEditor/./src/js/helper/shapeFilterFillHelper.js?");
+
+/***/ }),
+
+/***/ "./src/js/helper/shapeResizeHelper.js":
+/*!********************************************!*\
+  !*** ./src/js/helper/shapeResizeHelper.js ***!
+  \********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\n/**\n * @author NHN Ent. FE Development Team <dl_javascript@nhn.com>\n * @fileoverview Shape resize helper\n */\nvar DIVISOR = {\n    rect: 1,\n    circle: 2,\n    triangle: 1\n};\nvar DIMENSION_KEYS = {\n    rect: {\n        w: 'width',\n        h: 'height'\n    },\n    circle: {\n        w: 'rx',\n        h: 'ry'\n    },\n    triangle: {\n        w: 'width',\n        h: 'height'\n    }\n};\n\n/**\n * Set the start point value to the shape object\n * @param {fabric.Object} shape - Shape object\n * @ignore\n */\nfunction setStartPoint(shape) {\n    var originX = shape.originX,\n        originY = shape.originY;\n\n    var originKey = originX.substring(0, 1) + originY.substring(0, 1);\n\n    shape.startPoint = shape.origins[originKey];\n}\n\n/**\n * Get the positions of ratated origin by the pointer value\n * @param {{x: number, y: number}} origin - Origin value\n * @param {{x: number, y: number}} pointer - Pointer value\n * @param {number} angle - Rotating angle\n * @returns {Object} Postions of origin\n * @ignore\n */\nfunction getPositionsOfRotatedOrigin(origin, pointer, angle) {\n    var sx = origin.x;\n    var sy = origin.y;\n    var px = pointer.x;\n    var py = pointer.y;\n    var r = angle * Math.PI / 180;\n    var rx = (px - sx) * Math.cos(r) - (py - sy) * Math.sin(r) + sx;\n    var ry = (px - sx) * Math.sin(r) + (py - sy) * Math.cos(r) + sy;\n\n    return {\n        originX: sx > rx ? 'right' : 'left',\n        originY: sy > ry ? 'bottom' : 'top'\n    };\n}\n\n/**\n * Whether the shape has the center origin or not\n * @param {fabric.Object} shape - Shape object\n * @returns {boolean} State\n * @ignore\n */\nfunction hasCenterOrigin(shape) {\n    return shape.originX === 'center' && shape.originY === 'center';\n}\n\n/**\n * Adjust the origin of shape by the start point\n * @param {{x: number, y: number}} pointer - Pointer value\n * @param {fabric.Object} shape - Shape object\n * @ignore\n */\nfunction adjustOriginByStartPoint(pointer, shape) {\n    var centerPoint = shape.getPointByOrigin('center', 'center');\n    var angle = -shape.angle;\n    var originPositions = getPositionsOfRotatedOrigin(centerPoint, pointer, angle);\n    var originX = originPositions.originX,\n        originY = originPositions.originY;\n\n    var origin = shape.getPointByOrigin(originX, originY);\n    var left = shape.left - (centerPoint.x - origin.x);\n    var top = shape.top - (centerPoint.y - origin.y);\n\n    shape.set({\n        originX: originX,\n        originY: originY,\n        left: left,\n        top: top\n    });\n\n    shape.setCoords();\n}\n\n/**\n * Adjust the origin of shape by the moving pointer value\n * @param {{x: number, y: number}} pointer - Pointer value\n * @param {fabric.Object} shape - Shape object\n * @ignore\n */\nfunction adjustOriginByMovingPointer(pointer, shape) {\n    var origin = shape.startPoint;\n    var angle = -shape.angle;\n    var originPositions = getPositionsOfRotatedOrigin(origin, pointer, angle);\n    var originX = originPositions.originX,\n        originY = originPositions.originY;\n\n\n    shape.setPositionByOrigin(origin, originX, originY);\n    shape.setCoords();\n}\n\n/**\n * Adjust the dimension of shape on firing scaling event\n * @param {fabric.Object} shape - Shape object\n * @ignore\n */\nfunction adjustDimensionOnScaling(shape) {\n    var type = shape.type,\n        scaleX = shape.scaleX,\n        scaleY = shape.scaleY;\n\n    var dimensionKeys = DIMENSION_KEYS[type];\n    var width = shape[dimensionKeys.w] * scaleX;\n    var height = shape[dimensionKeys.h] * scaleY;\n\n    if (shape.isRegular) {\n        var maxScale = Math.max(scaleX, scaleY);\n\n        width = shape[dimensionKeys.w] * maxScale;\n        height = shape[dimensionKeys.h] * maxScale;\n    }\n\n    var options = {\n        hasControls: false,\n        hasBorders: false,\n        scaleX: 1,\n        scaleY: 1\n    };\n\n    options[dimensionKeys.w] = width;\n    options[dimensionKeys.h] = height;\n\n    shape.set(options);\n}\n\n/**\n * Adjust the dimension of shape on firing mouse move event\n * @param {{x: number, y: number}} pointer - Pointer value\n * @param {fabric.Object} shape - Shape object\n * @ignore\n */\nfunction adjustDimensionOnMouseMove(pointer, shape) {\n    var type = shape.type,\n        strokeWidth = shape.strokeWidth,\n        origin = shape.startPoint;\n\n    var divisor = DIVISOR[type];\n    var dimensionKeys = DIMENSION_KEYS[type];\n    var isTriangle = !!(shape.type === 'triangle');\n    var options = {};\n    var width = Math.abs(origin.x - pointer.x) / divisor;\n    var height = Math.abs(origin.y - pointer.y) / divisor;\n\n    if (width > strokeWidth) {\n        width -= strokeWidth / divisor;\n    }\n\n    if (height > strokeWidth) {\n        height -= strokeWidth / divisor;\n    }\n\n    if (shape.isRegular) {\n        width = height = Math.max(width, height);\n\n        if (isTriangle) {\n            height = Math.sqrt(3) / 2 * width;\n        }\n    }\n\n    options[dimensionKeys.w] = width;\n    options[dimensionKeys.h] = height;\n\n    shape.set(options);\n}\n\nmodule.exports = {\n    /**\n     * Set each origin value to shape\n     * @param {fabric.Object} shape - Shape object\n     */\n    setOrigins: function setOrigins(shape) {\n        var leftTopPoint = shape.getPointByOrigin('left', 'top');\n        var rightTopPoint = shape.getPointByOrigin('right', 'top');\n        var rightBottomPoint = shape.getPointByOrigin('right', 'bottom');\n        var leftBottomPoint = shape.getPointByOrigin('left', 'bottom');\n\n        shape.origins = {\n            lt: leftTopPoint,\n            rt: rightTopPoint,\n            rb: rightBottomPoint,\n            lb: leftBottomPoint\n        };\n    },\n\n\n    /**\n     * Resize the shape\n     * @param {fabric.Object} shape - Shape object\n     * @param {{x: number, y: number}} pointer - Mouse pointer values on canvas\n     * @param {boolean} isScaling - Whether the resizing action is scaling or not\n     */\n    resize: function resize(shape, pointer, isScaling) {\n        if (hasCenterOrigin(shape)) {\n            adjustOriginByStartPoint(pointer, shape);\n            setStartPoint(shape);\n        }\n\n        if (isScaling) {\n            adjustDimensionOnScaling(shape, pointer);\n        } else {\n            adjustDimensionOnMouseMove(pointer, shape);\n        }\n\n        adjustOriginByMovingPointer(pointer, shape);\n    },\n\n\n    /**\n     * Adjust the origin position of shape to center\n     * @param {fabric.Object} shape - Shape object\n     */\n    adjustOriginToCenter: function adjustOriginToCenter(shape) {\n        var centerPoint = shape.getPointByOrigin('center', 'center');\n        var originX = shape.originX,\n            originY = shape.originY;\n\n        var origin = shape.getPointByOrigin(originX, originY);\n        var left = shape.left + (centerPoint.x - origin.x);\n        var top = shape.top + (centerPoint.y - origin.y);\n\n        shape.set({\n            hasControls: true,\n            hasBorders: true,\n            originX: 'center',\n            originY: 'center',\n            left: left,\n            top: top\n        });\n\n        shape.setCoords(); // For left, top properties\n    }\n};\n\n//# sourceURL=webpack://tui.ImageEditor/./src/js/helper/shapeResizeHelper.js?");
+
+/***/ }),
+
+/***/ "./src/js/imageEditor.js":
+/*!*******************************!*\
+  !*** ./src/js/imageEditor.js ***!
+  \*******************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); /**\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      * @author NHN Ent. FE Development Team <dl_javascript@nhn.com>\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      * @fileoverview Image-editor application class\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      */\n\n\nvar _tuiCodeSnippet = __webpack_require__(/*! tui-code-snippet */ \"tui-code-snippet\");\n\nvar _tuiCodeSnippet2 = _interopRequireDefault(_tuiCodeSnippet);\n\nvar _invoker3 = __webpack_require__(/*! ./invoker */ \"./src/js/invoker.js\");\n\nvar _invoker4 = _interopRequireDefault(_invoker3);\n\nvar _ui = __webpack_require__(/*! ./ui */ \"./src/js/ui.js\");\n\nvar _ui2 = _interopRequireDefault(_ui);\n\nvar _action = __webpack_require__(/*! ./action */ \"./src/js/action.js\");\n\nvar _action2 = _interopRequireDefault(_action);\n\nvar _command = __webpack_require__(/*! ./factory/command */ \"./src/js/factory/command.js\");\n\nvar _command2 = _interopRequireDefault(_command);\n\nvar _graphics = __webpack_require__(/*! ./graphics */ \"./src/js/graphics.js\");\n\nvar _graphics2 = _interopRequireDefault(_graphics);\n\nvar _util = __webpack_require__(/*! ./util */ \"./src/js/util.js\");\n\nvar _consts = __webpack_require__(/*! ./consts */ \"./src/js/consts.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar isUndefined = _tuiCodeSnippet2.default.isUndefined,\n    forEach = _tuiCodeSnippet2.default.forEach,\n    CustomEvents = _tuiCodeSnippet2.default.CustomEvents;\nvar MOUSE_DOWN = _consts.eventNames.MOUSE_DOWN,\n    OBJECT_MOVED = _consts.eventNames.OBJECT_MOVED,\n    OBJECT_SCALED = _consts.eventNames.OBJECT_SCALED,\n    OBJECT_ACTIVATED = _consts.eventNames.OBJECT_ACTIVATED,\n    OBJECT_ROTATED = _consts.eventNames.OBJECT_ROTATED,\n    OBJECT_ADDED = _consts.eventNames.OBJECT_ADDED,\n    ADD_TEXT = _consts.eventNames.ADD_TEXT,\n    ADD_OBJECT = _consts.eventNames.ADD_OBJECT,\n    TEXT_EDITING = _consts.eventNames.TEXT_EDITING,\n    TEXT_CHANGED = _consts.eventNames.TEXT_CHANGED,\n    ICON_CREATE_RESIZE = _consts.eventNames.ICON_CREATE_RESIZE,\n    ICON_CREATE_END = _consts.eventNames.ICON_CREATE_END,\n    SELECTION_CLEARED = _consts.eventNames.SELECTION_CLEARED,\n    SELECTION_CREATED = _consts.eventNames.SELECTION_CREATED,\n    ADD_OBJECT_AFTER = _consts.eventNames.ADD_OBJECT_AFTER;\n\n/**\n * Image filter result\n * @typedef {object} FilterResult\n * @property {string} type - filter type like 'mask', 'Grayscale' and so on\n * @property {string} action - action type like 'add', 'remove'\n */\n\n/**\n * Flip status\n * @typedef {object} FlipStatus\n * @property {boolean} flipX - x axis\n * @property {boolean} flipY - y axis\n * @property {Number} angle - angle\n */\n/**\n * Rotation status\n * @typedef {Number} RotateStatus\n * @property {Number} angle - angle\n */\n\n/**\n * Old and new Size\n * @typedef {object} SizeChange\n * @property {Number} oldWidth - old width\n * @property {Number} oldHeight - old height\n * @property {Number} newWidth - new width\n * @property {Number} newHeight - new height\n */\n\n/**\n * @typedef {string} ErrorMsg - {string} error message\n */\n\n/**\n * @typedef {object} ObjectProps - graphics object properties\n * @property {number} id - object id\n * @property {string} type - object type\n * @property {string} text - text content\n * @property {(string | number)} left - Left\n * @property {(string | number)} top - Top\n * @property {(string | number)} width - Width\n * @property {(string | number)} height - Height\n * @property {string} fill - Color\n * @property {string} stroke - Stroke\n * @property {(string | number)} strokeWidth - StrokeWidth\n * @property {string} fontFamily - Font type for text\n * @property {number} fontSize - Font Size\n * @property {string} fontStyle - Type of inclination (normal / italic)\n * @property {string} fontWeight - Type of thicker or thinner looking (normal / bold)\n * @property {string} textAlign - Type of text align (left / center / right)\n * @property {string} textDecoration - Type of line (underline / line-through / overline)\n */\n\n/**\n * Shape filter option\n * @typedef {object.<string, number>} ShapeFilterOption\n */\n\n/**\n * Shape filter option\n * @typedef {object} ShapeFillOption - fill option of shape\n * @property {string} type - fill type ('color' or 'filter')\n * @property {Array.<ShapeFillFilterOption>} [filter] - {@link ShapeFilterOption} List.\n *  only applies to filter types \n *  (ex: \\[\\{pixelate: 20\\}, \\{blur: 0.3\\}\\]) \n * @property {string} [color] - Shape foreground color (ex: '#fff', 'transparent')\n */\n\n/**\n * Image editor\n * @class\n * @param {string|HTMLElement} wrapper - Wrapper's element or selector\n * @param {Object} [options] - Canvas max width & height of css\n *  @param {number} [options.includeUI] - Use the provided UI\n *    @param {Object} [options.includeUI.loadImage] - Basic editing image\n *      @param {string} options.includeUI.loadImage.path - image path\n *      @param {string} options.includeUI.loadImage.name - image name\n *    @param {Object} [options.includeUI.theme] - Theme object\n *    @param {Array} [options.includeUI.menu] - It can be selected when only specific menu is used, Default values are \\['crop', 'flip', 'rotate', 'draw', 'shape', 'icon', 'text', 'mask', 'filter'\\].\n *    @param {string} [options.includeUI.initMenu] - The first menu to be selected and started.\n *    @param {Object} [options.includeUI.uiSize] - ui size of editor\n *      @param {string} options.includeUI.uiSize.width - width of ui\n *      @param {string} options.includeUI.uiSize.height - height of ui\n *    @param {string} [options.includeUI.menuBarPosition=bottom] - Menu bar position('top', 'bottom', 'left', 'right')\n *  @param {number} options.cssMaxWidth - Canvas css-max-width\n *  @param {number} options.cssMaxHeight - Canvas css-max-height\n *  @param {Object} [options.selectionStyle] - selection style\n *  @param {string} [options.selectionStyle.cornerStyle] - selection corner style\n *  @param {number} [options.selectionStyle.cornerSize] - selection corner size\n *  @param {string} [options.selectionStyle.cornerColor] - selection corner color\n *  @param {string} [options.selectionStyle.cornerStrokeColor] = selection corner stroke color\n *  @param {boolean} [options.selectionStyle.transparentCorners] - selection corner transparent\n *  @param {number} [options.selectionStyle.lineWidth] - selection line width\n *  @param {string} [options.selectionStyle.borderColor] - selection border color\n *  @param {number} [options.selectionStyle.rotatingPointOffset] - selection rotating point length\n *  @param {Boolean} [options.usageStatistics=true] - Let us know the hostname. If you don't want to send the hostname, please set to false.\n * @example\n * var ImageEditor = require('tui-image-editor');\n * var blackTheme = require('./js/theme/black-theme.js');\n * var instance = new ImageEditor(document.querySelector('#tui-image-editor'), {\n *   includeUI: {\n *     loadImage: {\n *       path: 'img/sampleImage.jpg',\n *       name: 'SampleImage'\n *     },\n *     theme: blackTheme, // or whiteTheme\n *     menu: ['shape', 'filter'],\n *     initMenu: 'filter',\n *     uiSize: {\n *         width: '1000px',\n *         height: '700px'\n *     },\n *     menuBarPosition: 'bottom'\n *   },\n *   cssMaxWidth: 700,\n *   cssMaxHeight: 500,\n *   selectionStyle: {\n *     cornerSize: 20,\n *     rotatingPointOffset: 70\n *   }\n * });\n */\n\nvar ImageEditor = function () {\n    function ImageEditor(wrapper, options) {\n        _classCallCheck(this, ImageEditor);\n\n        options = _tuiCodeSnippet2.default.extend({\n            includeUI: false,\n            usageStatistics: true\n        }, options);\n\n        this.mode = null;\n\n        this.activeObjectId = null;\n\n        /**\n         * UI instance\n         * @type {Ui}\n         */\n        if (options.includeUI) {\n            var UIOption = options.includeUI;\n            UIOption.usageStatistics = options.usageStatistics;\n\n            this.ui = new _ui2.default(wrapper, UIOption, this.getActions());\n            options = this.ui.setUiDefaultSelectionStyle(options);\n        }\n\n        /**\n         * Invoker\n         * @type {Invoker}\n         * @private\n         */\n        this._invoker = new _invoker4.default();\n\n        /**\n         * Graphics instance\n         * @type {Graphics}\n         * @private\n         */\n        this._graphics = new _graphics2.default(this.ui ? this.ui.getEditorArea() : wrapper, {\n            cssMaxWidth: options.cssMaxWidth,\n            cssMaxHeight: options.cssMaxHeight,\n            useDragAddIcon: !!this.ui\n        });\n\n        /**\n         * Event handler list\n         * @type {Object}\n         * @private\n         */\n        this._handlers = {\n            keydown: this._onKeyDown.bind(this),\n            mousedown: this._onMouseDown.bind(this),\n            objectActivated: this._onObjectActivated.bind(this),\n            objectMoved: this._onObjectMoved.bind(this),\n            objectScaled: this._onObjectScaled.bind(this),\n            objectRotated: this._onObjectRotated.bind(this),\n            objectAdded: this._onObjectAdded.bind(this),\n            createdPath: this._onCreatedPath,\n            addText: this._onAddText.bind(this),\n            addObject: this._onAddObject.bind(this),\n            textEditing: this._onTextEditing.bind(this),\n            textChanged: this._onTextChanged.bind(this),\n            iconCreateResize: this._onIconCreateResize.bind(this),\n            iconCreateEnd: this._onIconCreateEnd.bind(this),\n            selectionCleared: this._selectionCleared.bind(this),\n            selectionCreated: this._selectionCreated.bind(this)\n        };\n\n        this._attachInvokerEvents();\n        this._attachGraphicsEvents();\n        this._attachDomEvents();\n        this._setSelectionStyle(options.selectionStyle, {\n            applyCropSelectionStyle: options.applyCropSelectionStyle,\n            applyGroupSelectionStyle: options.applyGroupSelectionStyle\n        });\n\n        if (options.usageStatistics) {\n            (0, _util.sendHostName)();\n        }\n\n        if (this.ui) {\n            this.ui.initCanvas();\n            this.setReAction();\n        }\n        fabric.enableGLFiltering = false;\n    }\n\n    /**\n     * Set selection style by init option\n     * @param {Object} selectionStyle - Selection styles\n     * @param {Object} applyTargets - Selection apply targets\n     *   @param {boolean} applyCropSelectionStyle - whether apply with crop selection style or not\n     *   @param {boolean} applyGroupSelectionStyle - whether apply with group selection style or not\n     * @private\n     */\n\n\n    _createClass(ImageEditor, [{\n        key: '_setSelectionStyle',\n        value: function _setSelectionStyle(selectionStyle, _ref) {\n            var applyCropSelectionStyle = _ref.applyCropSelectionStyle,\n                applyGroupSelectionStyle = _ref.applyGroupSelectionStyle;\n\n            if (selectionStyle) {\n                this._graphics.setSelectionStyle(selectionStyle);\n            }\n\n            if (applyCropSelectionStyle) {\n                this._graphics.setCropSelectionStyle(selectionStyle);\n            }\n\n            if (applyGroupSelectionStyle) {\n                this.on('selectionCreated', function (eventTarget) {\n                    if (eventTarget.type === 'activeSelection') {\n                        eventTarget.set(selectionStyle);\n                    }\n                });\n            }\n        }\n\n        /**\n         * Attach invoker events\n         * @private\n         */\n\n    }, {\n        key: '_attachInvokerEvents',\n        value: function _attachInvokerEvents() {\n            var UNDO_STACK_CHANGED = _consts.eventNames.UNDO_STACK_CHANGED,\n                REDO_STACK_CHANGED = _consts.eventNames.REDO_STACK_CHANGED;\n\n            /**\n             * Undo stack changed event\n             * @event ImageEditor#undoStackChanged\n             * @param {Number} length - undo stack length\n             * @example\n             * imageEditor.on('undoStackChanged', function(length) {\n             *     console.log(length);\n             * });\n             */\n\n            this._invoker.on(UNDO_STACK_CHANGED, this.fire.bind(this, UNDO_STACK_CHANGED));\n            /**\n             * Redo stack changed event\n             * @event ImageEditor#redoStackChanged\n             * @param {Number} length - redo stack length\n             * @example\n             * imageEditor.on('redoStackChanged', function(length) {\n             *     console.log(length);\n             * });\n             */\n            this._invoker.on(REDO_STACK_CHANGED, this.fire.bind(this, REDO_STACK_CHANGED));\n        }\n\n        /**\n         * Attach canvas events\n         * @private\n         */\n\n    }, {\n        key: '_attachGraphicsEvents',\n        value: function _attachGraphicsEvents() {\n            var _graphics$on;\n\n            this._graphics.on((_graphics$on = {}, _defineProperty(_graphics$on, MOUSE_DOWN, this._handlers.mousedown), _defineProperty(_graphics$on, OBJECT_MOVED, this._handlers.objectMoved), _defineProperty(_graphics$on, OBJECT_SCALED, this._handlers.objectScaled), _defineProperty(_graphics$on, OBJECT_ROTATED, this._handlers.objectRotated), _defineProperty(_graphics$on, OBJECT_ACTIVATED, this._handlers.objectActivated), _defineProperty(_graphics$on, OBJECT_ADDED, this._handlers.objectAdded), _defineProperty(_graphics$on, ADD_TEXT, this._handlers.addText), _defineProperty(_graphics$on, ADD_OBJECT, this._handlers.addObject), _defineProperty(_graphics$on, TEXT_EDITING, this._handlers.textEditing), _defineProperty(_graphics$on, TEXT_CHANGED, this._handlers.textChanged), _defineProperty(_graphics$on, ICON_CREATE_RESIZE, this._handlers.iconCreateResize), _defineProperty(_graphics$on, ICON_CREATE_END, this._handlers.iconCreateEnd), _defineProperty(_graphics$on, SELECTION_CLEARED, this._handlers.selectionCleared), _defineProperty(_graphics$on, SELECTION_CREATED, this._handlers.selectionCreated), _graphics$on));\n        }\n\n        /**\n         * Attach dom events\n         * @private\n         */\n\n    }, {\n        key: '_attachDomEvents',\n        value: function _attachDomEvents() {\n            // ImageEditor supports IE 9 higher\n            document.addEventListener('keydown', this._handlers.keydown);\n        }\n\n        /**\n         * Detach dom events\n         * @private\n         */\n\n    }, {\n        key: '_detachDomEvents',\n        value: function _detachDomEvents() {\n            // ImageEditor supports IE 9 higher\n            document.removeEventListener('keydown', this._handlers.keydown);\n        }\n\n        /**\n         * Keydown event handler\n         * @param {KeyboardEvent} e - Event object\n         * @private\n         */\n        /* eslint-disable complexity */\n\n    }, {\n        key: '_onKeyDown',\n        value: function _onKeyDown(e) {\n            var ctrlKey = e.ctrlKey,\n                keyCode = e.keyCode,\n                metaKey = e.metaKey;\n\n            var isModifierKey = ctrlKey || metaKey;\n\n            if (isModifierKey) {\n                if (keyCode === _consts.keyCodes.C) {\n                    this._graphics.resetTargetObjectForCopyPaste();\n                } else if (keyCode === _consts.keyCodes.V) {\n                    this._graphics.pasteObject();\n                    this.clearRedoStack();\n                } else if (keyCode === _consts.keyCodes.Z) {\n                    // There is no error message on shortcut when it's empty\n                    this.undo()['catch'](function () {});\n                } else if (keyCode === _consts.keyCodes.Y) {\n                    // There is no error message on shortcut when it's empty\n                    this.redo()['catch'](function () {});\n                }\n            }\n\n            var isDeleteKey = keyCode === _consts.keyCodes.BACKSPACE || keyCode === _consts.keyCodes.DEL;\n            var isRemoveReady = this._graphics.isReadyRemoveObject();\n\n            if (isRemoveReady && isDeleteKey) {\n                e.preventDefault();\n                this.removeActiveObject();\n            }\n        }\n\n        /**\n         * Remove Active Object\n         */\n\n    }, {\n        key: 'removeActiveObject',\n        value: function removeActiveObject() {\n            var activeObjectId = this._graphics.getActiveObjectIdForRemove();\n\n            this.removeObject(activeObjectId);\n        }\n\n        /**\n         * mouse down event handler\n         * @param {Event} event mouse down event\n         * @param {Object} originPointer origin pointer\n         *  @param {Number} originPointer.x x position\n         *  @param {Number} originPointer.y y position\n         * @private\n         */\n\n    }, {\n        key: '_onMouseDown',\n        value: function _onMouseDown(event, originPointer) {\n            /**\n             * The mouse down event with position x, y on canvas\n             * @event ImageEditor#mousedown\n             * @param {Object} event - browser mouse event object\n             * @param {Object} originPointer origin pointer\n             *  @param {Number} originPointer.x x position\n             *  @param {Number} originPointer.y y position\n             * @example\n             * imageEditor.on('mousedown', function(event, originPointer) {\n             *     console.log(event);\n             *     console.log(originPointer);\n             *     if (imageEditor.hasFilter('colorFilter')) {\n             *         imageEditor.applyFilter('colorFilter', {\n             *             x: parseInt(originPointer.x, 10),\n             *             y: parseInt(originPointer.y, 10)\n             *         });\n             *     }\n             * });\n             */\n            this.fire(_consts.eventNames.MOUSE_DOWN, event, originPointer);\n        }\n\n        /**\n         * Add a 'addObject' command\n         * @param {Object} obj - Fabric object\n         * @private\n         */\n\n    }, {\n        key: '_pushAddObjectCommand',\n        value: function _pushAddObjectCommand(obj) {\n            var command = _command2.default.create(_consts.commandNames.ADD_OBJECT, this._graphics, obj);\n            this._invoker.pushUndoStack(command);\n        }\n\n        /**\n         * 'objectActivated' event handler\n         * @param {ObjectProps} props - object properties\n         * @private\n         */\n\n    }, {\n        key: '_onObjectActivated',\n        value: function _onObjectActivated(props) {\n            /**\n             * The event when object is selected(aka activated).\n             * @event ImageEditor#objectActivated\n             * @param {ObjectProps} objectProps - object properties\n             * @example\n             * imageEditor.on('objectActivated', function(props) {\n             *     console.log(props);\n             *     console.log(props.type);\n             *     console.log(props.id);\n             * });\n             */\n            this.fire(_consts.eventNames.OBJECT_ACTIVATED, props);\n        }\n\n        /**\n         * 'objectMoved' event handler\n         * @param {ObjectProps} props - object properties\n         * @private\n         */\n\n    }, {\n        key: '_onObjectMoved',\n        value: function _onObjectMoved(props) {\n            /**\n             * The event when object is moved\n             * @event ImageEditor#objectMoved\n             * @param {ObjectProps} props - object properties\n             * @example\n             * imageEditor.on('objectMoved', function(props) {\n             *     console.log(props);\n             *     console.log(props.type);\n             * });\n             */\n            this.fire(_consts.eventNames.OBJECT_MOVED, props);\n        }\n\n        /**\n         * 'objectScaled' event handler\n         * @param {ObjectProps} props - object properties\n         * @private\n         */\n\n    }, {\n        key: '_onObjectScaled',\n        value: function _onObjectScaled(props) {\n            /**\n             * The event when scale factor is changed\n             * @event ImageEditor#objectScaled\n             * @param {ObjectProps} props - object properties\n             * @example\n             * imageEditor.on('objectScaled', function(props) {\n             *     console.log(props);\n             *     console.log(props.type);\n             * });\n             */\n            this.fire(_consts.eventNames.OBJECT_SCALED, props);\n        }\n\n        /**\n         * 'objectRotated' event handler\n         * @param {ObjectProps} props - object properties\n         * @private\n         */\n\n    }, {\n        key: '_onObjectRotated',\n        value: function _onObjectRotated(props) {\n            /**\n             * The event when object angle is changed\n             * @event ImageEditor#objectRotated\n             * @param {ObjectProps} props - object properties\n             * @example\n             * imageEditor.on('objectRotated', function(props) {\n             *     console.log(props);\n             *     console.log(props.type);\n             * });\n             */\n            this.fire(_consts.eventNames.OBJECT_ROTATED, props);\n        }\n\n        /**\n         * Get current drawing mode\n         * @returns {string}\n         * @example\n         * // Image editor drawing mode\n         * //\n         * //    NORMAL: 'NORMAL'\n         * //    CROPPER: 'CROPPER'\n         * //    FREE_DRAWING: 'FREE_DRAWING'\n         * //    LINE_DRAWING: 'LINE_DRAWING'\n         * //    TEXT: 'TEXT'\n         * //\n         * if (imageEditor.getDrawingMode() === 'FREE_DRAWING') {\n         *     imageEditor.stopDrawingMode();\n         * }\n         */\n\n    }, {\n        key: 'getDrawingMode',\n        value: function getDrawingMode() {\n            return this._graphics.getDrawingMode();\n        }\n\n        /**\n         * Clear all objects\n         * @returns {Promise}\n         * @example\n         * imageEditor.clearObjects();\n         */\n\n    }, {\n        key: 'clearObjects',\n        value: function clearObjects() {\n            return this.execute(_consts.commandNames.CLEAR_OBJECTS);\n        }\n\n        /**\n         * Deactivate all objects\n         * @example\n         * imageEditor.deactivateAll();\n         */\n\n    }, {\n        key: 'deactivateAll',\n        value: function deactivateAll() {\n            this._graphics.deactivateAll();\n            this._graphics.renderAll();\n        }\n\n        /**\n         * discard selction\n         * @example\n         * imageEditor.discardSelection();\n         */\n\n    }, {\n        key: 'discardSelection',\n        value: function discardSelection() {\n            this._graphics.discardSelection();\n        }\n\n        /**\n         * selectable status change\n         * @param {boolean} selectable - selctable status\n         * @example\n         * imageEditor.changeSelectableAll(false); // or true\n         */\n\n    }, {\n        key: 'changeSelectableAll',\n        value: function changeSelectableAll(selectable) {\n            this._graphics.changeSelectableAll(selectable);\n        }\n\n        /**\n         * Invoke command\n         * @param {String} commandName - Command name\n         * @param {...*} args - Arguments for creating command\n         * @returns {Promise}\n         * @private\n         */\n\n    }, {\n        key: 'execute',\n        value: function execute(commandName) {\n            var _invoker;\n\n            for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n                args[_key - 1] = arguments[_key];\n            }\n\n            // Inject an Graphics instance as first parameter\n            var theArgs = [this._graphics].concat(args);\n\n            return (_invoker = this._invoker).execute.apply(_invoker, [commandName].concat(theArgs));\n        }\n\n        /**\n         * Invoke command\n         * @param {String} commandName - Command name\n         * @param {...*} args - Arguments for creating command\n         * @returns {Promise}\n         * @private\n         */\n\n    }, {\n        key: 'executeSilent',\n        value: function executeSilent(commandName) {\n            var _invoker2;\n\n            for (var _len2 = arguments.length, args = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n                args[_key2 - 1] = arguments[_key2];\n            }\n\n            // Inject an Graphics instance as first parameter\n            var theArgs = [this._graphics].concat(args);\n\n            return (_invoker2 = this._invoker).executeSilent.apply(_invoker2, [commandName].concat(theArgs));\n        }\n\n        /**\n         * Undo\n         * @returns {Promise}\n         * @example\n         * imageEditor.undo();\n         */\n\n    }, {\n        key: 'undo',\n        value: function undo() {\n            return this._invoker.undo();\n        }\n\n        /**\n         * Redo\n         * @returns {Promise}\n         * @example\n         * imageEditor.redo();\n         */\n\n    }, {\n        key: 'redo',\n        value: function redo() {\n            return this._invoker.redo();\n        }\n\n        /**\n         * Load image from file\n         * @param {File} imgFile - Image file\n         * @param {string} [imageName] - imageName\n         * @returns {Promise<SizeChange, ErrorMsg>}\n         * @example\n         * imageEditor.loadImageFromFile(file).then(result => {\n         *      console.log('old : ' + result.oldWidth + ', ' + result.oldHeight);\n         *      console.log('new : ' + result.newWidth + ', ' + result.newHeight);\n         * });\n         */\n\n    }, {\n        key: 'loadImageFromFile',\n        value: function loadImageFromFile(imgFile, imageName) {\n            if (!imgFile) {\n                return _util.Promise.reject(_consts.rejectMessages.invalidParameters);\n            }\n\n            var imgUrl = URL.createObjectURL(imgFile);\n            imageName = imageName || imgFile.name;\n\n            return this.loadImageFromURL(imgUrl, imageName).then(function (value) {\n                URL.revokeObjectURL(imgFile);\n\n                return value;\n            });\n        }\n\n        /**\n         * Load image from url\n         * @param {string} url - File url\n         * @param {string} imageName - imageName\n         * @returns {Promise<SizeChange, ErrorMsg>}\n         * @example\n         * imageEditor.loadImageFromURL('http://url/testImage.png', 'lena').then(result => {\n         *      console.log('old : ' + result.oldWidth + ', ' + result.oldHeight);\n         *      console.log('new : ' + result.newWidth + ', ' + result.newHeight);\n         * });\n         */\n\n    }, {\n        key: 'loadImageFromURL',\n        value: function loadImageFromURL(url, imageName) {\n            if (!imageName || !url) {\n                return _util.Promise.reject(_consts.rejectMessages.invalidParameters);\n            }\n\n            return this.execute(_consts.commandNames.LOAD_IMAGE, imageName, url);\n        }\n\n        /**\n         * Add image object on canvas\n         * @param {string} imgUrl - Image url to make object\n         * @returns {Promise<ObjectProps, ErrorMsg>}\n         * @example\n         * imageEditor.addImageObject('path/fileName.jpg').then(objectProps => {\n         *     console.log(ojectProps.id);\n         * });\n         */\n\n    }, {\n        key: 'addImageObject',\n        value: function addImageObject(imgUrl) {\n            if (!imgUrl) {\n                return _util.Promise.reject(_consts.rejectMessages.invalidParameters);\n            }\n\n            return this.execute(_consts.commandNames.ADD_IMAGE_OBJECT, imgUrl);\n        }\n\n        /**\n         * Start a drawing mode. If the current mode is not 'NORMAL', 'stopDrawingMode()' will be called first.\n         * @param {String} mode Can be one of <I>'CROPPER', 'FREE_DRAWING', 'LINE_DRAWING', 'TEXT', 'SHAPE'</I>\n         * @param {Object} [option] parameters of drawing mode, it's available with 'FREE_DRAWING', 'LINE_DRAWING'\n         *  @param {Number} [option.width] brush width\n         *  @param {String} [option.color] brush color\n         *  @param {Object} [option.arrowType] arrow decorate\n         *    @param {string} [option.arrowType.tail] arrow decorate for tail. 'chevron' or 'triangle'\n         *    @param {string} [option.arrowType.head] arrow decorate for head. 'chevron' or 'triangle'\n         * @returns {boolean} true if success or false\n         * @example\n         * imageEditor.startDrawingMode('FREE_DRAWING', {\n         *      width: 10,\n         *      color: 'rgba(255,0,0,0.5)'\n         * });\n         * imageEditor.startDrawingMode('LINE_DRAWING', {\n         *      width: 10,\n         *      color: 'rgba(255,0,0,0.5)',\n         *      arrowType: {\n         *          tail: 'chevron' // triangle\n         *      }\n         * });\n         *\n         */\n\n    }, {\n        key: 'startDrawingMode',\n        value: function startDrawingMode(mode, option) {\n            return this._graphics.startDrawingMode(mode, option);\n        }\n\n        /**\n         * Stop the current drawing mode and back to the 'NORMAL' mode\n         * @example\n         * imageEditor.stopDrawingMode();\n         */\n\n    }, {\n        key: 'stopDrawingMode',\n        value: function stopDrawingMode() {\n            this._graphics.stopDrawingMode();\n        }\n\n        /**\n         * Crop this image with rect\n         * @param {Object} rect crop rect\n         *  @param {Number} rect.left left position\n         *  @param {Number} rect.top top position\n         *  @param {Number} rect.width width\n         *  @param {Number} rect.height height\n         * @returns {Promise}\n         * @example\n         * imageEditor.crop(imageEditor.getCropzoneRect());\n         */\n\n    }, {\n        key: 'crop',\n        value: function crop(rect) {\n            var data = this._graphics.getCroppedImageData(rect);\n            if (!data) {\n                return _util.Promise.reject(_consts.rejectMessages.invalidParameters);\n            }\n\n            return this.loadImageFromURL(data.url, data.imageName);\n        }\n\n        /**\n         * Get the cropping rect\n         * @returns {Object}  {{left: number, top: number, width: number, height: number}} rect\n         */\n\n    }, {\n        key: 'getCropzoneRect',\n        value: function getCropzoneRect() {\n            return this._graphics.getCropzoneRect();\n        }\n\n        /**\n         * Set the cropping rect\n         * @param {number} [mode] crop rect mode [1, 1.5, 1.3333333333333333, 1.25, 1.7777777777777777]\n         */\n\n    }, {\n        key: 'setCropzoneRect',\n        value: function setCropzoneRect(mode) {\n            this._graphics.setCropzoneRect(mode);\n        }\n\n        /**\n         * Flip\n         * @returns {Promise}\n         * @param {string} type - 'flipX' or 'flipY' or 'reset'\n         * @returns {Promise<FlipStatus, ErrorMsg>}\n         * @private\n         */\n\n    }, {\n        key: '_flip',\n        value: function _flip(type) {\n            return this.execute(_consts.commandNames.FLIP_IMAGE, type);\n        }\n\n        /**\n         * Flip x\n         * @returns {Promise<FlipStatus, ErrorMsg>}\n         * @example\n         * imageEditor.flipX().then((status => {\n         *     console.log('flipX: ', status.flipX);\n         *     console.log('flipY: ', status.flipY);\n         *     console.log('angle: ', status.angle);\n         * }).catch(message => {\n         *     console.log('error: ', message);\n         * });\n         */\n\n    }, {\n        key: 'flipX',\n        value: function flipX() {\n            return this._flip('flipX');\n        }\n\n        /**\n         * Flip y\n         * @returns {Promise<FlipStatus, ErrorMsg>}\n         * @example\n         * imageEditor.flipY().then(status => {\n         *     console.log('flipX: ', status.flipX);\n         *     console.log('flipY: ', status.flipY);\n         *     console.log('angle: ', status.angle);\n         * }).catch(message => {\n         *     console.log('error: ', message);\n         * });\n         */\n\n    }, {\n        key: 'flipY',\n        value: function flipY() {\n            return this._flip('flipY');\n        }\n\n        /**\n         * Reset flip\n         * @returns {Promise<FlipStatus, ErrorMsg>}\n         * @example\n         * imageEditor.resetFlip().then(status => {\n         *     console.log('flipX: ', status.flipX);\n         *     console.log('flipY: ', status.flipY);\n         *     console.log('angle: ', status.angle);\n         * }).catch(message => {\n         *     console.log('error: ', message);\n         * });;\n         */\n\n    }, {\n        key: 'resetFlip',\n        value: function resetFlip() {\n            return this._flip('reset');\n        }\n\n        /**\n         * @param {string} type - 'rotate' or 'setAngle'\n         * @param {number} angle - angle value (degree)\n         * @param {boolean} isSilent - is silent execution or not\n         * @returns {Promise<RotateStatus, ErrorMsg>}\n         * @private\n         */\n\n    }, {\n        key: '_rotate',\n        value: function _rotate(type, angle, isSilent) {\n            var result = null;\n            if (isSilent) {\n                result = this.executeSilent(_consts.commandNames.ROTATE_IMAGE, type, angle);\n            } else {\n                result = this.execute(_consts.commandNames.ROTATE_IMAGE, type, angle);\n            }\n\n            return result;\n        }\n\n        /**\n         * Rotate image\n         * @returns {Promise}\n         * @param {number} angle - Additional angle to rotate image\n         * @param {boolean} isSilent - is silent execution or not\n         * @returns {Promise<RotateStatus, ErrorMsg>}\n         * @example\n         * imageEditor.rotate(10); // angle = 10\n         * imageEditor.rotate(10); // angle = 20\n         * imageEidtor.rotate(5); // angle = 5\n         * imageEidtor.rotate(-95); // angle = -90\n         * imageEditor.rotate(10).then(status => {\n         *     console.log('angle: ', status.angle);\n         * })).catch(message => {\n         *     console.log('error: ', message);\n         * });\n         */\n\n    }, {\n        key: 'rotate',\n        value: function rotate(angle, isSilent) {\n            return this._rotate('rotate', angle, isSilent);\n        }\n\n        /**\n         * Set angle\n         * @param {number} angle - Angle of image\n         * @param {boolean} isSilent - is silent execution or not\n         * @returns {Promise<RotateStatus, ErrorMsg>}\n         * @example\n         * imageEditor.setAngle(10); // angle = 10\n         * imageEditor.rotate(10); // angle = 20\n         * imageEidtor.setAngle(5); // angle = 5\n         * imageEidtor.rotate(50); // angle = 55\n         * imageEidtor.setAngle(-40); // angle = -40\n         * imageEditor.setAngle(10).then(status => {\n         *     console.log('angle: ', status.angle);\n         * })).catch(message => {\n         *     console.log('error: ', message);\n         * });\n         */\n\n    }, {\n        key: 'setAngle',\n        value: function setAngle(angle, isSilent) {\n            return this._rotate('setAngle', angle, isSilent);\n        }\n\n        /**\n         * Set drawing brush\n         * @param {Object} option brush option\n         *  @param {Number} option.width width\n         *  @param {String} option.color color like 'FFFFFF', 'rgba(0, 0, 0, 0.5)'\n         * @example\n         * imageEditor.startDrawingMode('FREE_DRAWING');\n         * imageEditor.setBrush({\n         *     width: 12,\n         *     color: 'rgba(0, 0, 0, 0.5)'\n         * });\n         * imageEditor.setBrush({\n         *     width: 8,\n         *     color: 'FFFFFF'\n         * });\n         */\n\n    }, {\n        key: 'setBrush',\n        value: function setBrush(option) {\n            this._graphics.setBrush(option);\n        }\n\n        /**\n         * Set states of current drawing shape\n         * @param {string} type - Shape type (ex: 'rect', 'circle', 'triangle')\n         * @param {Object} [options] - Shape options\n         *      @param {(ShapeFillOption | string)} [options.fill] - {@link ShapeFillOption} or \n         *        Shape foreground color (ex: '#fff', 'transparent')\n         *      @param {string} [options.stoke] - Shape outline color\n         *      @param {number} [options.strokeWidth] - Shape outline width\n         *      @param {number} [options.width] - Width value (When type option is 'rect', this options can use)\n         *      @param {number} [options.height] - Height value (When type option is 'rect', this options can use)\n         *      @param {number} [options.rx] - Radius x value (When type option is 'circle', this options can use)\n         *      @param {number} [options.ry] - Radius y value (When type option is 'circle', this options can use)\n         *      @param {number} [options.isRegular] - Whether resizing shape has 1:1 ratio or not\n         * @example\n         * imageEditor.setDrawingShape('rect', {\n         *     fill: 'red',\n         *     width: 100,\n         *     height: 200\n         * });\n         * @example\n         * imageEditor.setDrawingShape('rect', {\n         *     fill: {\n         *         type: 'filter',\n         *         filter: [{blur: 0.3}, {pixelate: 20}]\n         *     },\n         *     width: 100,\n         *     height: 200\n         * });\n         * @example\n         * imageEditor.setDrawingShape('circle', {\n         *     fill: 'transparent',\n         *     stroke: 'blue',\n         *     strokeWidth: 3,\n         *     rx: 10,\n         *     ry: 100\n         * });\n         * @example\n         * imageEditor.setDrawingShape('triangle', { // When resizing, the shape keep the 1:1 ratio\n         *     width: 1,\n         *     height: 1,\n         *     isRegular: true\n         * });\n         * @example\n         * imageEditor.setDrawingShape('circle', { // When resizing, the shape keep the 1:1 ratio\n         *     rx: 10,\n         *     ry: 10,\n         *     isRegular: true\n         * });\n         */\n\n    }, {\n        key: 'setDrawingShape',\n        value: function setDrawingShape(type, options) {\n            this._graphics.setDrawingShape(type, options);\n        }\n\n        /**\n         * Add shape\n         * @param {string} type - Shape type (ex: 'rect', 'circle', 'triangle')\n         * @param {Object} options - Shape options\n         *      @param {(ShapeFillOption | string)} [options.fill] - {@link ShapeFillOption} or \n         *        Shape foreground color (ex: '#fff', 'transparent')\n         *      @param {string} [options.stroke] - Shape outline color\n         *      @param {number} [options.strokeWidth] - Shape outline width\n         *      @param {number} [options.width] - Width value (When type option is 'rect', this options can use)\n         *      @param {number} [options.height] - Height value (When type option is 'rect', this options can use)\n         *      @param {number} [options.rx] - Radius x value (When type option is 'circle', this options can use)\n         *      @param {number} [options.ry] - Radius y value (When type option is 'circle', this options can use)\n         *      @param {number} [options.left] - Shape x position\n         *      @param {number} [options.top] - Shape y position\n         *      @param {boolean} [options.isRegular] - Whether resizing shape has 1:1 ratio or not\n         * @returns {Promise<ObjectProps, ErrorMsg>}\n         * @example\n         * imageEditor.addShape('rect', {\n         *     fill: 'red',\n         *     stroke: 'blue',\n         *     strokeWidth: 3,\n         *     width: 100,\n         *     height: 200,\n         *     left: 10,\n         *     top: 10,\n         *     isRegular: true\n         * });\n         * @example\n         * imageEditor.addShape('circle', {\n         *     fill: 'red',\n         *     stroke: 'blue',\n         *     strokeWidth: 3,\n         *     rx: 10,\n         *     ry: 100,\n         *     isRegular: false\n         * }).then(objectProps => {\n         *     console.log(objectProps.id);\n         * });\n         * @example\n         * imageEditor.addShape('rect', {\n         *     fill: {\n         *         type: 'filter',\n         *         filter: [{blur: 0.3}, {pixelate: 20}]\n         *     },\n         *     stroke: 'blue',\n         *     strokeWidth: 3,\n         *     rx: 10,\n         *     ry: 100,\n         *     isRegular: false\n         * }).then(objectProps => {\n         *     console.log(objectProps.id);\n         * });\n         */\n\n    }, {\n        key: 'addShape',\n        value: function addShape(type, options) {\n            options = options || {};\n\n            this._setPositions(options);\n\n            return this.execute(_consts.commandNames.ADD_SHAPE, type, options);\n        }\n\n        /**\n         * Change shape\n         * @param {number} id - object id\n         * @param {Object} options - Shape options\n         *      @param {(ShapeFillOption | string)} [options.fill] - {@link ShapeFillOption} or \n         *        Shape foreground color (ex: '#fff', 'transparent')\n         *      @param {string} [options.stroke] - Shape outline color\n         *      @param {number} [options.strokeWidth] - Shape outline width\n         *      @param {number} [options.width] - Width value (When type option is 'rect', this options can use)\n         *      @param {number} [options.height] - Height value (When type option is 'rect', this options can use)\n         *      @param {number} [options.rx] - Radius x value (When type option is 'circle', this options can use)\n         *      @param {number} [options.ry] - Radius y value (When type option is 'circle', this options can use)\n         *      @param {boolean} [options.isRegular] - Whether resizing shape has 1:1 ratio or not\n         * @param {boolean} isSilent - is silent execution or not\n         * @returns {Promise}\n         * @example\n         * // call after selecting shape object on canvas\n         * imageEditor.changeShape(id, { // change rectagle or triangle\n         *     fill: 'red',\n         *     stroke: 'blue',\n         *     strokeWidth: 3,\n         *     width: 100,\n         *     height: 200\n         * });\n         * @example\n         * // call after selecting shape object on canvas\n         * imageEditor.changeShape(id, { // change circle\n         *     fill: 'red',\n         *     stroke: 'blue',\n         *     strokeWidth: 3,\n         *     rx: 10,\n         *     ry: 100\n         * });\n         */\n\n    }, {\n        key: 'changeShape',\n        value: function changeShape(id, options, isSilent) {\n            var executeMethodName = isSilent ? 'executeSilent' : 'execute';\n\n            return this[executeMethodName](_consts.commandNames.CHANGE_SHAPE, id, options);\n        }\n\n        /**\n         * Add text on image\n         * @param {string} text - Initial input text\n         * @param {Object} [options] Options for generating text\n         *     @param {Object} [options.styles] Initial styles\n         *         @param {string} [options.styles.fill] Color\n         *         @param {string} [options.styles.fontFamily] Font type for text\n         *         @param {number} [options.styles.fontSize] Size\n         *         @param {string} [options.styles.fontStyle] Type of inclination (normal / italic)\n         *         @param {string} [options.styles.fontWeight] Type of thicker or thinner looking (normal / bold)\n         *         @param {string} [options.styles.textAlign] Type of text align (left / center / right)\n         *         @param {string} [options.styles.textDecoration] Type of line (underline / line-through / overline)\n         *     @param {{x: number, y: number}} [options.position] - Initial position\n         *     @param {boolean} [options.autofocus] - text autofocus, default is true\n         * @returns {Promise}\n         * @example\n         * imageEditor.addText('init text');\n         * @example\n         * imageEditor.addText('init text', {\n         *     styles: {\n         *         fill: '#000',\n         *         fontSize: 20,\n         *         fontWeight: 'bold'\n         *     },\n         *     position: {\n         *         x: 10,\n         *         y: 10\n         *     }\n         * }).then(objectProps => {\n         *     console.log(objectProps.id);\n         * });\n         */\n\n    }, {\n        key: 'addText',\n        value: function addText(text, options) {\n            text = text || '';\n            options = options || {};\n\n            return this.execute(_consts.commandNames.ADD_TEXT, text, options);\n        }\n\n        /**\n         * Change contents of selected text object on image\n         * @param {number} id - object id\n         * @param {string} text - Changing text\n         * @returns {Promise<ObjectProps, ErrorMsg>}\n         * @example\n         * imageEditor.changeText(id, 'change text');\n         */\n\n    }, {\n        key: 'changeText',\n        value: function changeText(id, text) {\n            text = text || '';\n\n            return this.execute(_consts.commandNames.CHANGE_TEXT, id, text);\n        }\n\n        /**\n         * Set style\n         * @param {number} id - object id\n         * @param {Object} styleObj - text styles\n         *     @param {string} [styleObj.fill] Color\n         *     @param {string} [styleObj.fontFamily] Font type for text\n         *     @param {number} [styleObj.fontSize] Size\n         *     @param {string} [styleObj.fontStyle] Type of inclination (normal / italic)\n         *     @param {string} [styleObj.fontWeight] Type of thicker or thinner looking (normal / bold)\n         *     @param {string} [styleObj.textAlign] Type of text align (left / center / right)\n         *     @param {string} [styleObj.textDecoration] Type of line (underline / line-through / overline)\n         * @param {boolean} isSilent - is silent execution or not\n         * @returns {Promise}\n         * @example\n         * imageEditor.changeTextStyle(id, {\n         *     fontStyle: 'italic'\n         * });\n         */\n\n    }, {\n        key: 'changeTextStyle',\n        value: function changeTextStyle(id, styleObj, isSilent) {\n            var executeMethodName = isSilent ? 'executeSilent' : 'execute';\n\n            return this[executeMethodName](_consts.commandNames.CHANGE_TEXT_STYLE, id, styleObj);\n        }\n\n        /**\n         * change text mode\n         * @param {string} type - change type\n         * @private\n         */\n\n    }, {\n        key: '_changeActivateMode',\n        value: function _changeActivateMode(type) {\n            if (type !== 'ICON' && this.getDrawingMode() !== type) {\n                this.startDrawingMode(type);\n            }\n        }\n\n        /**\n         * 'textChanged' event handler\n         * @param {Object} objectProps changed object properties\n         * @private\n         */\n\n    }, {\n        key: '_onTextChanged',\n        value: function _onTextChanged(objectProps) {\n            this.changeText(objectProps.id, objectProps.text);\n        }\n\n        /**\n         * 'iconCreateResize' event handler\n         * @param {Object} originPointer origin pointer\n         *  @param {Number} originPointer.x x position\n         *  @param {Number} originPointer.y y position\n         * @private\n         */\n\n    }, {\n        key: '_onIconCreateResize',\n        value: function _onIconCreateResize(originPointer) {\n            this.fire(_consts.eventNames.ICON_CREATE_RESIZE, originPointer);\n        }\n\n        /**\n         * 'iconCreateEnd' event handler\n         * @param {Object} originPointer origin pointer\n         *  @param {Number} originPointer.x x position\n         *  @param {Number} originPointer.y y position\n         * @private\n         */\n\n    }, {\n        key: '_onIconCreateEnd',\n        value: function _onIconCreateEnd(originPointer) {\n            this.fire(_consts.eventNames.ICON_CREATE_END, originPointer);\n        }\n\n        /**\n         * 'textEditing' event handler\n         * @private\n         */\n\n    }, {\n        key: '_onTextEditing',\n        value: function _onTextEditing() {\n            /**\n             * The event which starts to edit text object\n             * @event ImageEditor#textEditing\n             * @example\n             * imageEditor.on('textEditing', function() {\n             *     console.log('text editing');\n             * });\n             */\n            this.fire(_consts.eventNames.TEXT_EDITING);\n        }\n\n        /**\n         * Mousedown event handler in case of 'TEXT' drawing mode\n         * @param {fabric.Event} event - Current mousedown event object\n         * @private\n         */\n\n    }, {\n        key: '_onAddText',\n        value: function _onAddText(event) {\n            /**\n             * The event when 'TEXT' drawing mode is enabled and click non-object area.\n             * @event ImageEditor#addText\n             * @param {Object} pos\n             *  @param {Object} pos.originPosition - Current position on origin canvas\n             *      @param {Number} pos.originPosition.x - x\n             *      @param {Number} pos.originPosition.y - y\n             *  @param {Object} pos.clientPosition - Current position on client area\n             *      @param {Number} pos.clientPosition.x - x\n             *      @param {Number} pos.clientPosition.y - y\n             * @example\n             * imageEditor.on('addText', function(pos) {\n             *     console.log('text position on canvas: ' + pos.originPosition);\n             *     console.log('text position on brwoser: ' + pos.clientPosition);\n             * });\n             */\n            this.fire(_consts.eventNames.ADD_TEXT, {\n                originPosition: event.originPosition,\n                clientPosition: event.clientPosition\n            });\n        }\n\n        /**\n         * 'addObject' event handler\n         * @param {Object} objectProps added object properties\n         * @private\n         */\n\n    }, {\n        key: '_onAddObject',\n        value: function _onAddObject(objectProps) {\n            var obj = this._graphics.getObject(objectProps.id);\n            this._pushAddObjectCommand(obj);\n        }\n\n        /**\n         * 'objectAdded' event handler\n         * @param {Object} objectProps added object properties\n         * @private\n         */\n\n    }, {\n        key: '_onObjectAdded',\n        value: function _onObjectAdded(objectProps) {\n            /**\n             * The event when object added\n             * @event ImageEditor#objectAdded\n             * @param {ObjectProps} props - object properties\n             * @example\n             * imageEditor.on('objectAdded', function(props) {\n             *     console.log(props);\n             * });\n             */\n            this.fire(OBJECT_ADDED, objectProps);\n\n            /**\n             * The event when object added (deprecated)\n             * @event ImageEditor#addObjectAfter\n             * @param {ObjectProps} props - object properties\n             * @deprecated\n             */\n            this.fire(ADD_OBJECT_AFTER, objectProps);\n        }\n\n        /**\n         * 'selectionCleared' event handler\n         * @private\n         */\n\n    }, {\n        key: '_selectionCleared',\n        value: function _selectionCleared() {\n            this.fire(SELECTION_CLEARED);\n        }\n\n        /**\n         * 'selectionCreated' event handler\n         * @param {Object} eventTarget - Fabric object\n         * @private\n         */\n\n    }, {\n        key: '_selectionCreated',\n        value: function _selectionCreated(eventTarget) {\n            this.fire(SELECTION_CREATED, eventTarget);\n        }\n\n        /**\n         * Register custom icons\n         * @param {{iconType: string, pathValue: string}} infos - Infos to register icons\n         * @example\n         * imageEditor.registerIcons({\n         *     customIcon: 'M 0 0 L 20 20 L 10 10 Z',\n         *     customArrow: 'M 60 0 L 120 60 H 90 L 75 45 V 180 H 45 V 45 L 30 60 H 0 Z'\n         * });\n         */\n\n    }, {\n        key: 'registerIcons',\n        value: function registerIcons(infos) {\n            this._graphics.registerPaths(infos);\n        }\n\n        /**\n         * Change canvas cursor type\n         * @param {string} cursorType - cursor type\n         * @example\n         * imageEditor.changeCursor('crosshair');\n         */\n\n    }, {\n        key: 'changeCursor',\n        value: function changeCursor(cursorType) {\n            this._graphics.changeCursor(cursorType);\n        }\n\n        /**\n         * Add icon on canvas\n         * @param {string} type - Icon type ('arrow', 'cancel', custom icon name)\n         * @param {Object} options - Icon options\n         *      @param {string} [options.fill] - Icon foreground color\n         *      @param {number} [options.left] - Icon x position\n         *      @param {number} [options.top] - Icon y position\n         * @returns {Promise<ObjectProps, ErrorMsg>}\n         * @example\n         * imageEditor.addIcon('arrow'); // The position is center on canvas\n         * @example\n         * imageEditor.addIcon('arrow', {\n         *     left: 100,\n         *     top: 100\n         * }).then(objectProps => {\n         *     console.log(objectProps.id);\n         * });\n         */\n\n    }, {\n        key: 'addIcon',\n        value: function addIcon(type, options) {\n            options = options || {};\n\n            this._setPositions(options);\n\n            return this.execute(_consts.commandNames.ADD_ICON, type, options);\n        }\n\n        /**\n         * Change icon color\n         * @param {number} id - object id\n         * @param {string} color - Color for icon\n         * @returns {Promise}\n         * @example\n         * imageEditor.changeIconColor(id, '#000000');\n         */\n\n    }, {\n        key: 'changeIconColor',\n        value: function changeIconColor(id, color) {\n            return this.execute(_consts.commandNames.CHANGE_ICON_COLOR, id, color);\n        }\n\n        /**\n         * Remove an object or group by id\n         * @param {number} id - object id\n         * @returns {Promise}\n         * @example\n         * imageEditor.removeObject(id);\n         */\n\n    }, {\n        key: 'removeObject',\n        value: function removeObject(id) {\n            return this.execute(_consts.commandNames.REMOVE_OBJECT, id);\n        }\n\n        /**\n         * Whether it has the filter or not\n         * @param {string} type - Filter type\n         * @returns {boolean} true if it has the filter\n         */\n\n    }, {\n        key: 'hasFilter',\n        value: function hasFilter(type) {\n            return this._graphics.hasFilter(type);\n        }\n\n        /**\n         * Remove filter on canvas image\n         * @param {string} type - Filter type\n         * @returns {Promise<FilterResult, ErrorMsg>}\n         * @example\n         * imageEditor.removeFilter('Grayscale').then(obj => {\n         *     console.log('filterType: ', obj.type);\n         *     console.log('actType: ', obj.action);\n         * }).catch(message => {\n         *     console.log('error: ', message);\n         * });\n         */\n\n    }, {\n        key: 'removeFilter',\n        value: function removeFilter(type) {\n            return this.execute(_consts.commandNames.REMOVE_FILTER, type);\n        }\n\n        /**\n         * Apply filter on canvas image\n         * @param {string} type - Filter type\n         * @param {Object} options - Options to apply filter\n         *  @param {number} options.maskObjId - masking image object id\n         * @param {boolean} isSilent - is silent execution or not\n         * @returns {Promise<FilterResult, ErrorMsg>}\n         * @example\n         * imageEditor.applyFilter('Grayscale');\n         * @example\n         * imageEditor.applyFilter('mask', {maskObjId: id}).then(obj => {\n         *     console.log('filterType: ', obj.type);\n         *     console.log('actType: ', obj.action);\n         * }).catch(message => {\n         *     console.log('error: ', message);\n         * });;\n         */\n\n    }, {\n        key: 'applyFilter',\n        value: function applyFilter(type, options, isSilent) {\n            var executeMethodName = isSilent ? 'executeSilent' : 'execute';\n\n            return this[executeMethodName](_consts.commandNames.APPLY_FILTER, type, options);\n        }\n\n        /**\n         * Get data url\n         * @param {Object} options - options for toDataURL\n         *   @param {String} [options.format=png] The format of the output image. Either \"jpeg\" or \"png\"\n         *   @param {Number} [options.quality=1] Quality level (0..1). Only used for jpeg.\n         *   @param {Number} [options.multiplier=1] Multiplier to scale by\n         *   @param {Number} [options.left] Cropping left offset. Introduced in fabric v1.2.14\n         *   @param {Number} [options.top] Cropping top offset. Introduced in fabric v1.2.14\n         *   @param {Number} [options.width] Cropping width. Introduced in fabric v1.2.14\n         *   @param {Number} [options.height] Cropping height. Introduced in fabric v1.2.14\n         * @returns {string} A DOMString containing the requested data URI\n         * @example\n         * imgEl.src = imageEditor.toDataURL();\n         *\n         * imageEditor.loadImageFromURL(imageEditor.toDataURL(), 'FilterImage').then(() => {\n         *      imageEditor.addImageObject(imgUrl);\n         * });\n         */\n\n    }, {\n        key: 'toDataURL',\n        value: function toDataURL(options) {\n            return this._graphics.toDataURL(options);\n        }\n\n        /**\n         * Get image name\n         * @returns {string} image name\n         * @example\n         * console.log(imageEditor.getImageName());\n         */\n\n    }, {\n        key: 'getImageName',\n        value: function getImageName() {\n            return this._graphics.getImageName();\n        }\n\n        /**\n         * Clear undoStack\n         * @example\n         * imageEditor.clearUndoStack();\n         */\n\n    }, {\n        key: 'clearUndoStack',\n        value: function clearUndoStack() {\n            this._invoker.clearUndoStack();\n        }\n\n        /**\n         * Clear redoStack\n         * @example\n         * imageEditor.clearRedoStack();\n         */\n\n    }, {\n        key: 'clearRedoStack',\n        value: function clearRedoStack() {\n            this._invoker.clearRedoStack();\n        }\n\n        /**\n         * Whehter the undo stack is empty or not\n         * @returns {boolean}\n         * imageEditor.isEmptyUndoStack();\n         */\n\n    }, {\n        key: 'isEmptyUndoStack',\n        value: function isEmptyUndoStack() {\n            return this._invoker.isEmptyUndoStack();\n        }\n\n        /**\n         * Whehter the redo stack is empty or not\n         * @returns {boolean}\n         * imageEditor.isEmptyRedoStack();\n         */\n\n    }, {\n        key: 'isEmptyRedoStack',\n        value: function isEmptyRedoStack() {\n            return this._invoker.isEmptyRedoStack();\n        }\n\n        /**\n         * Resize canvas dimension\n         * @param {{width: number, height: number}} dimension - Max width & height\n         * @returns {Promise}\n         */\n\n    }, {\n        key: 'resizeCanvasDimension',\n        value: function resizeCanvasDimension(dimension) {\n            if (!dimension) {\n                return _util.Promise.reject(_consts.rejectMessages.invalidParameters);\n            }\n\n            return this.execute(_consts.commandNames.RESIZE_CANVAS_DIMENSION, dimension);\n        }\n\n        /**\n         * Destroy\n         */\n\n    }, {\n        key: 'destroy',\n        value: function destroy() {\n            var _this = this;\n\n            this.stopDrawingMode();\n            this._detachDomEvents();\n            this._graphics.destroy();\n            this._graphics = null;\n\n            if (this.ui) {\n                this.ui.destroy();\n            }\n\n            forEach(this, function (value, key) {\n                _this[key] = null;\n            }, this);\n        }\n\n        /**\n         * Set position\n         * @param {Object} options - Position options (left or top)\n         * @private\n         */\n\n    }, {\n        key: '_setPositions',\n        value: function _setPositions(options) {\n            var centerPosition = this._graphics.getCenter();\n\n            if (isUndefined(options.left)) {\n                options.left = centerPosition.left;\n            }\n\n            if (isUndefined(options.top)) {\n                options.top = centerPosition.top;\n            }\n        }\n\n        /**\n         * Set properties of active object\n         * @param {number} id - object id\n         * @param {Object} keyValue - key & value\n         * @returns {Promise}\n         * @example\n         * imageEditor.setObjectProperties(id, {\n         *     left:100,\n         *     top:100,\n         *     width: 200,\n         *     height: 200,\n         *     opacity: 0.5\n         * });\n         */\n\n    }, {\n        key: 'setObjectProperties',\n        value: function setObjectProperties(id, keyValue) {\n            return this.execute(_consts.commandNames.SET_OBJECT_PROPERTIES, id, keyValue);\n        }\n\n        /**\n         * Set properties of active object, Do not leave an invoke history.\n         * @param {number} id - object id\n         * @param {Object} keyValue - key & value\n         * @example\n         * imageEditor.setObjectPropertiesQuietly(id, {\n         *     left:100,\n         *     top:100,\n         *     width: 200,\n         *     height: 200,\n         *     opacity: 0.5\n         * });\n         */\n\n    }, {\n        key: 'setObjectPropertiesQuietly',\n        value: function setObjectPropertiesQuietly(id, keyValue) {\n            this._graphics.setObjectProperties(id, keyValue);\n        }\n\n        /**\n         * Get properties of active object corresponding key\n         * @param {number} id - object id\n         * @param {Array<string>|ObjectProps|string} keys - property's key\n         * @returns {ObjectProps} properties if id is valid or null\n         * @example\n         * var props = imageEditor.getObjectProperties(id, 'left');\n         * console.log(props);\n         * @example\n         * var props = imageEditor.getObjectProperties(id, ['left', 'top', 'width', 'height']);\n         * console.log(props);\n         * @example\n         * var props = imageEditor.getObjectProperties(id, {\n         *     left: null,\n         *     top: null,\n         *     width: null,\n         *     height: null,\n         *     opacity: null\n         * });\n         * console.log(props);\n         */\n\n    }, {\n        key: 'getObjectProperties',\n        value: function getObjectProperties(id, keys) {\n            var object = this._graphics.getObject(id);\n            if (!object) {\n                return null;\n            }\n\n            return this._graphics.getObjectProperties(id, keys);\n        }\n\n        /**\n         * Get the canvas size\n         * @returns {Object} {{width: number, height: number}} canvas size\n         * @example\n         * var canvasSize = imageEditor.getCanvasSize();\n         * console.log(canvasSize.width);\n         * console.height(canvasSize.height);\n         */\n\n    }, {\n        key: 'getCanvasSize',\n        value: function getCanvasSize() {\n            return this._graphics.getCanvasSize();\n        }\n\n        /**\n         * Get object position by originX, originY\n         * @param {number} id - object id\n         * @param {string} originX - can be 'left', 'center', 'right'\n         * @param {string} originY - can be 'top', 'center', 'bottom'\n         * @returns {Object} {{x:number, y: number}} position by origin if id is valid, or null\n         * @example\n         * var position = imageEditor.getObjectPosition(id, 'left', 'top');\n         * console.log(position);\n         */\n\n    }, {\n        key: 'getObjectPosition',\n        value: function getObjectPosition(id, originX, originY) {\n            return this._graphics.getObjectPosition(id, originX, originY);\n        }\n\n        /**\n         * Set object position  by originX, originY\n         * @param {number} id - object id\n         * @param {Object} posInfo - position object\n         *  @param {number} posInfo.x - x position\n         *  @param {number} posInfo.y - y position\n         *  @param {string} posInfo.originX - can be 'left', 'center', 'right'\n         *  @param {string} posInfo.originY - can be 'top', 'center', 'bottom'\n         * @returns {Promise}\n         * @example\n         * // align the object to 'left', 'top'\n         * imageEditor.setObjectPosition(id, {\n         *     x: 0,\n         *     y: 0,\n         *     originX: 'left',\n         *     originY: 'top'\n         * });\n         * @example\n         * // align the object to 'right', 'top'\n         * var canvasSize = imageEditor.getCanvasSize();\n         * imageEditor.setObjectPosition(id, {\n         *     x: canvasSize.width,\n         *     y: 0,\n         *     originX: 'right',\n         *     originY: 'top'\n         * });\n         * @example\n         * // align the object to 'left', 'bottom'\n         * var canvasSize = imageEditor.getCanvasSize();\n         * imageEditor.setObjectPosition(id, {\n         *     x: 0,\n         *     y: canvasSize.height,\n         *     originX: 'left',\n         *     originY: 'bottom'\n         * });\n         * @example\n         * // align the object to 'right', 'bottom'\n         * var canvasSize = imageEditor.getCanvasSize();\n         * imageEditor.setObjectPosition(id, {\n         *     x: canvasSize.width,\n         *     y: canvasSize.height,\n         *     originX: 'right',\n         *     originY: 'bottom'\n         * });\n         */\n\n    }, {\n        key: 'setObjectPosition',\n        value: function setObjectPosition(id, posInfo) {\n            return this.execute(_consts.commandNames.SET_OBJECT_POSITION, id, posInfo);\n        }\n    }]);\n\n    return ImageEditor;\n}();\n\n_action2.default.mixin(ImageEditor);\nCustomEvents.mixin(ImageEditor);\n\nexports.default = ImageEditor;\n\n//# sourceURL=webpack://tui.ImageEditor/./src/js/imageEditor.js?");
+
+/***/ }),
+
+/***/ "./src/js/interface/command.js":
+/*!*************************************!*\
+  !*** ./src/js/interface/command.js ***!
+  \*************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); /**\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      * @author NHN Ent. FE Development Team <dl_javascript@nhn.com>\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      * @fileoverview Command interface\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      */\n\n\nvar _tuiCodeSnippet = __webpack_require__(/*! tui-code-snippet */ \"tui-code-snippet\");\n\nvar _tuiCodeSnippet2 = _interopRequireDefault(_tuiCodeSnippet);\n\nvar _errorMessage = __webpack_require__(/*! ../factory/errorMessage */ \"./src/js/factory/errorMessage.js\");\n\nvar _errorMessage2 = _interopRequireDefault(_errorMessage);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar createMessage = _errorMessage2.default.create;\nvar errorTypes = _errorMessage2.default.types;\n\n/**\n * Command class\n * @class\n * @param {{name:function, execute: function, undo: function,\n *          executeCallback: function, undoCallback: function}} actions - Command actions\n * @param {Array} args - passing arguments on execute, undo\n * @ignore\n */\n\nvar Command = function () {\n  function Command(actions, args) {\n    _classCallCheck(this, Command);\n\n    /**\n     * command name\n     * @type {string}\n     */\n    this.name = actions.name;\n\n    /**\n     * arguments\n     * @type {Array}\n     */\n    this.args = args;\n\n    /**\n     * Execute function\n     * @type {function}\n     */\n    this.execute = actions.execute;\n\n    /**\n     * Undo function\n     * @type {function}\n     */\n    this.undo = actions.undo;\n\n    /**\n     * executeCallback\n     * @type {function}\n     */\n    this.executeCallback = actions.executeCallback || null;\n\n    /**\n     * undoCallback\n     * @type {function}\n     */\n    this.undoCallback = actions.undoCallback || null;\n\n    /**\n     * data for undo\n     * @type {Object}\n     */\n    this.undoData = {};\n  }\n\n  /**\n   * Execute action\n   * @param {Object.<string, Component>} compMap - Components injection\n   * @abstract\n   */\n\n\n  _createClass(Command, [{\n    key: 'execute',\n    value: function execute() {\n      throw new Error(createMessage(errorTypes.UN_IMPLEMENTATION, 'execute'));\n    }\n\n    /**\n     * Undo action\n     * @param {Object.<string, Component>} compMap - Components injection\n     * @abstract\n     */\n\n  }, {\n    key: 'undo',\n    value: function undo() {\n      throw new Error(createMessage(errorTypes.UN_IMPLEMENTATION, 'undo'));\n    }\n\n    /**\n     * command for redo if undoData exists\n     * @returns {boolean} isRedo\n     */\n\n  }, {\n    key: 'setUndoData',\n\n\n    /**\n     * Set undoData action\n     * @param {Object} undoData - maked undo data\n     * @param {Object} cachedUndoDataForSilent - cached undo data\n     * @param {boolean} isSilent - is silent execution or not\n     * @returns {Object} cachedUndoDataForSilent\n     */\n    value: function setUndoData(undoData, cachedUndoDataForSilent, isSilent) {\n      if (cachedUndoDataForSilent) {\n        undoData = cachedUndoDataForSilent;\n      }\n\n      if (!isSilent) {\n        _tuiCodeSnippet2.default.extend(this.undoData, undoData);\n        cachedUndoDataForSilent = null;\n      } else if (!cachedUndoDataForSilent) {\n        cachedUndoDataForSilent = undoData;\n      }\n\n      return cachedUndoDataForSilent;\n    }\n\n    /**\n     * Attach execute callabck\n     * @param {function} callback - Callback after execution\n     * @returns {Command} this\n     */\n\n  }, {\n    key: 'setExecuteCallback',\n    value: function setExecuteCallback(callback) {\n      this.executeCallback = callback;\n\n      return this;\n    }\n\n    /**\n     * Attach undo callback\n     * @param {function} callback - Callback after undo\n     * @returns {Command} this\n     */\n\n  }, {\n    key: 'setUndoCallback',\n    value: function setUndoCallback(callback) {\n      this.undoCallback = callback;\n\n      return this;\n    }\n  }, {\n    key: 'isRedo',\n    get: function get() {\n      return Object.keys(this.undoData).length;\n    }\n  }]);\n\n  return Command;\n}();\n\nexports.default = Command;\n\n//# sourceURL=webpack://tui.ImageEditor/./src/js/interface/command.js?");
+
+/***/ }),
+
+/***/ "./src/js/interface/component.js":
+/*!***************************************!*\
+  !*** ./src/js/interface/component.js ***!
+  \***************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n/**\n * @author NHN Ent. FE Development Team <dl_javascript@nhn.com>\n * @fileoverview Component interface\n */\n\n/**\n * Component interface\n * @class\n * @param {string} name - component name\n * @param {Graphics} graphics - Graphics instance\n * @ignore\n */\nvar Component = function () {\n  function Component(name, graphics) {\n    _classCallCheck(this, Component);\n\n    /**\n     * Component name\n     * @type {string}\n     */\n    this.name = name;\n\n    /**\n     * Graphics instance\n     * @type {Graphics}\n     */\n    this.graphics = graphics;\n  }\n\n  /**\n   * Fire Graphics event\n   * @returns {Object} return value\n   */\n\n\n  _createClass(Component, [{\n    key: \"fire\",\n    value: function fire() {\n      var context = this.graphics;\n\n      for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n\n      return this.graphics.fire.apply(context, args);\n    }\n\n    /**\n     * Save image(background) of canvas\n     * @param {string} name - Name of image\n     * @param {fabric.Image} oImage - Fabric image instance\n     */\n\n  }, {\n    key: \"setCanvasImage\",\n    value: function setCanvasImage(name, oImage) {\n      this.graphics.setCanvasImage(name, oImage);\n    }\n\n    /**\n     * Returns canvas element of fabric.Canvas[[lower-canvas]]\n     * @returns {HTMLCanvasElement}\n     */\n\n  }, {\n    key: \"getCanvasElement\",\n    value: function getCanvasElement() {\n      return this.graphics.getCanvasElement();\n    }\n\n    /**\n     * Get fabric.Canvas instance\n     * @returns {fabric.Canvas}\n     */\n\n  }, {\n    key: \"getCanvas\",\n    value: function getCanvas() {\n      return this.graphics.getCanvas();\n    }\n\n    /**\n     * Get canvasImage (fabric.Image instance)\n     * @returns {fabric.Image}\n     */\n\n  }, {\n    key: \"getCanvasImage\",\n    value: function getCanvasImage() {\n      return this.graphics.getCanvasImage();\n    }\n\n    /**\n     * Get image name\n     * @returns {string}\n     */\n\n  }, {\n    key: \"getImageName\",\n    value: function getImageName() {\n      return this.graphics.getImageName();\n    }\n\n    /**\n     * Get image editor\n     * @returns {ImageEditor}\n     */\n\n  }, {\n    key: \"getEditor\",\n    value: function getEditor() {\n      return this.graphics.getEditor();\n    }\n\n    /**\n     * Return component name\n     * @returns {string}\n     */\n\n  }, {\n    key: \"getName\",\n    value: function getName() {\n      return this.name;\n    }\n\n    /**\n     * Set image properties\n     * @param {Object} setting - Image properties\n     * @param {boolean} [withRendering] - If true, The changed image will be reflected in the canvas\n     */\n\n  }, {\n    key: \"setImageProperties\",\n    value: function setImageProperties(setting, withRendering) {\n      this.graphics.setImageProperties(setting, withRendering);\n    }\n\n    /**\n     * Set canvas dimension - css only\n     * @param {Object} dimension - Canvas css dimension\n     */\n\n  }, {\n    key: \"setCanvasCssDimension\",\n    value: function setCanvasCssDimension(dimension) {\n      this.graphics.setCanvasCssDimension(dimension);\n    }\n\n    /**\n     * Set canvas dimension - css only\n     * @param {Object} dimension - Canvas backstore dimension\n     */\n\n  }, {\n    key: \"setCanvasBackstoreDimension\",\n    value: function setCanvasBackstoreDimension(dimension) {\n      this.graphics.setCanvasBackstoreDimension(dimension);\n    }\n\n    /**\n     * Adjust canvas dimension with scaling image\n     */\n\n  }, {\n    key: \"adjustCanvasDimension\",\n    value: function adjustCanvasDimension() {\n      this.graphics.adjustCanvasDimension();\n    }\n  }]);\n\n  return Component;\n}();\n\nexports.default = Component;\n\n//# sourceURL=webpack://tui.ImageEditor/./src/js/interface/component.js?");
+
+/***/ }),
+
+/***/ "./src/js/interface/drawingMode.js":
+/*!*****************************************!*\
+  !*** ./src/js/interface/drawingMode.js ***!
+  \*****************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); /**\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      * @author NHN Ent. FE Development Team <dl_javascript@nhn.com>\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      * @fileoverview DrawingMode interface\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      */\n\n\nvar _errorMessage = __webpack_require__(/*! ../factory/errorMessage */ \"./src/js/factory/errorMessage.js\");\n\nvar _errorMessage2 = _interopRequireDefault(_errorMessage);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar createMessage = _errorMessage2.default.create;\nvar errorTypes = _errorMessage2.default.types;\n\n/**\n * DrawingMode interface\n * @class\n * @param {string} name - drawing mode name\n * @ignore\n */\n\nvar DrawingMode = function () {\n  function DrawingMode(name) {\n    _classCallCheck(this, DrawingMode);\n\n    /**\n     * the name of drawing mode\n     * @type {string}\n     */\n    this.name = name;\n  }\n\n  /**\n   * Get this drawing mode name;\n   * @returns {string} drawing mode name\n   */\n\n\n  _createClass(DrawingMode, [{\n    key: 'getName',\n    value: function getName() {\n      return this.name;\n    }\n\n    /**\n    * start this drawing mode\n    * @param {Object} options - drawing mode options\n    * @abstract\n    */\n\n  }, {\n    key: 'start',\n    value: function start() {\n      throw new Error(createMessage(errorTypes.UN_IMPLEMENTATION, 'start'));\n    }\n\n    /**\n     * stop this drawing mode\n     * @abstract\n     */\n\n  }, {\n    key: 'stop',\n    value: function stop() {\n      throw new Error(createMessage(errorTypes.UN_IMPLEMENTATION, 'stop'));\n    }\n  }]);\n\n  return DrawingMode;\n}();\n\nexports.default = DrawingMode;\n\n//# sourceURL=webpack://tui.ImageEditor/./src/js/interface/drawingMode.js?");
+
+/***/ }),
+
+/***/ "./src/js/invoker.js":
+/*!***************************!*\
+  !*** ./src/js/invoker.js ***!
+  \***************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); /**\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      * @author NHN Ent. FE Development Team <dl_javascript@nhn.com>\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      * @fileoverview Invoker - invoke commands\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      */\n\n\nvar _tuiCodeSnippet = __webpack_require__(/*! tui-code-snippet */ \"tui-code-snippet\");\n\nvar _tuiCodeSnippet2 = _interopRequireDefault(_tuiCodeSnippet);\n\nvar _util = __webpack_require__(/*! ./util */ \"./src/js/util.js\");\n\nvar _command = __webpack_require__(/*! ./factory/command */ \"./src/js/factory/command.js\");\n\nvar _command2 = _interopRequireDefault(_command);\n\nvar _consts = __webpack_require__(/*! ./consts */ \"./src/js/consts.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar isFunction = _tuiCodeSnippet2.default.isFunction,\n    isString = _tuiCodeSnippet2.default.isString,\n    CustomEvents = _tuiCodeSnippet2.default.CustomEvents;\n\n/**\n * Invoker\n * @class\n * @ignore\n */\n\nvar Invoker = function () {\n    function Invoker() {\n        _classCallCheck(this, Invoker);\n\n        /**\n         * Undo stack\n         * @type {Array.<Command>}\n         * @private\n         */\n        this._undoStack = [];\n\n        /**\n         * Redo stack\n         * @type {Array.<Command>}\n         * @private\n         */\n        this._redoStack = [];\n\n        /**\n         * Lock-flag for executing command\n         * @type {boolean}\n         * @private\n         */\n        this._isLocked = false;\n\n        this._isSilent = false;\n    }\n\n    /**\n     * Invoke command execution\n     * @param {Command} command - Command\n     * @returns {Promise}\n     * @private\n     */\n\n\n    _createClass(Invoker, [{\n        key: '_invokeExecution',\n        value: function _invokeExecution(command) {\n            var _this = this;\n\n            this.lock();\n\n            var args = command.args;\n\n            if (!args) {\n                args = [];\n            }\n\n            return command.execute.apply(command, args).then(function (value) {\n                if (!_this._isSilent) {\n                    _this.pushUndoStack(command);\n                }\n                _this.unlock();\n                if (isFunction(command.executeCallback)) {\n                    command.executeCallback(value);\n                }\n\n                return value;\n            })['catch'](function (message) {\n                _this.unlock();\n\n                return _util.Promise.reject(message);\n            });\n        }\n\n        /**\n         * Invoke command undo\n         * @param {Command} command - Command\n         * @returns {Promise}\n         * @private\n         */\n\n    }, {\n        key: '_invokeUndo',\n        value: function _invokeUndo(command) {\n            var _this2 = this;\n\n            this.lock();\n\n            var args = command.args;\n\n            if (!args) {\n                args = [];\n            }\n\n            return command.undo.apply(command, args).then(function (value) {\n                _this2.pushRedoStack(command);\n                _this2.unlock();\n                if (isFunction(command.undoCallback)) {\n                    command.undoCallback(value);\n                }\n\n                return value;\n            })['catch'](function (message) {\n                _this2.unlock();\n\n                return _util.Promise.reject(message);\n            });\n        }\n\n        /**\n         * fire REDO_STACK_CHANGED event\n         * @private\n         */\n\n    }, {\n        key: '_fireRedoStackChanged',\n        value: function _fireRedoStackChanged() {\n            this.fire(_consts.eventNames.REDO_STACK_CHANGED, this._redoStack.length);\n        }\n\n        /**\n         * fire UNDO_STACK_CHANGED event\n         * @private\n         */\n\n    }, {\n        key: '_fireUndoStackChanged',\n        value: function _fireUndoStackChanged() {\n            this.fire(_consts.eventNames.UNDO_STACK_CHANGED, this._undoStack.length);\n        }\n\n        /**\n         * Lock this invoker\n         */\n\n    }, {\n        key: 'lock',\n        value: function lock() {\n            this._isLocked = true;\n        }\n\n        /**\n         * Unlock this invoker\n         */\n\n    }, {\n        key: 'unlock',\n        value: function unlock() {\n            this._isLocked = false;\n        }\n    }, {\n        key: 'executeSilent',\n        value: function executeSilent() {\n            var _this3 = this;\n\n            this._isSilent = true;\n\n            for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n                args[_key] = arguments[_key];\n            }\n\n            return this.execute.apply(this, args.concat([this._isSilent])).then(function () {\n                _this3._isSilent = false;\n            });\n        }\n\n        /**\n         * Invoke command\n         * Store the command to the undoStack\n         * Clear the redoStack\n         * @param {String} commandName - Command name\n         * @param {...*} args - Arguments for creating command\n         * @returns {Promise}\n         */\n\n    }, {\n        key: 'execute',\n        value: function execute() {\n            var _this4 = this;\n\n            if (this._isLocked) {\n                return _util.Promise.reject(_consts.rejectMessages.isLock);\n            }\n\n            for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n                args[_key2] = arguments[_key2];\n            }\n\n            var command = args[0];\n\n            if (isString(command)) {\n                command = _command2.default.create.apply(_command2.default, args);\n            }\n\n            return this._invokeExecution(command).then(function (value) {\n                _this4.clearRedoStack();\n\n                return value;\n            });\n        }\n\n        /**\n         * Undo command\n         * @returns {Promise}\n         */\n\n    }, {\n        key: 'undo',\n        value: function undo() {\n            var command = this._undoStack.pop();\n            var promise = void 0;\n            var message = '';\n\n            if (command && this._isLocked) {\n                this.pushUndoStack(command, true);\n                command = null;\n            }\n            if (command) {\n                if (this.isEmptyUndoStack()) {\n                    this._fireUndoStackChanged();\n                }\n                promise = this._invokeUndo(command);\n            } else {\n                message = _consts.rejectMessages.undo;\n                if (this._isLocked) {\n                    message = message + ' Because ' + _consts.rejectMessages.isLock;\n                }\n                promise = _util.Promise.reject(message);\n            }\n\n            return promise;\n        }\n\n        /**\n         * Redo command\n         * @returns {Promise}\n         */\n\n    }, {\n        key: 'redo',\n        value: function redo() {\n            var command = this._redoStack.pop();\n            var promise = void 0;\n            var message = '';\n\n            if (command && this._isLocked) {\n                this.pushRedoStack(command, true);\n                command = null;\n            }\n            if (command) {\n                if (this.isEmptyRedoStack()) {\n                    this._fireRedoStackChanged();\n                }\n                promise = this._invokeExecution(command);\n            } else {\n                message = _consts.rejectMessages.redo;\n                if (this._isLocked) {\n                    message = message + ' Because ' + _consts.rejectMessages.isLock;\n                }\n                promise = _util.Promise.reject(message);\n            }\n\n            return promise;\n        }\n\n        /**\n         * Push undo stack\n         * @param {Command} command - command\n         * @param {boolean} [isSilent] - Fire event or not\n         */\n\n    }, {\n        key: 'pushUndoStack',\n        value: function pushUndoStack(command, isSilent) {\n            this._undoStack.push(command);\n            if (!isSilent) {\n                this._fireUndoStackChanged();\n            }\n        }\n\n        /**\n         * Push redo stack\n         * @param {Command} command - command\n         * @param {boolean} [isSilent] - Fire event or not\n         */\n\n    }, {\n        key: 'pushRedoStack',\n        value: function pushRedoStack(command, isSilent) {\n            this._redoStack.push(command);\n            if (!isSilent) {\n                this._fireRedoStackChanged();\n            }\n        }\n\n        /**\n         * Return whether the redoStack is empty\n         * @returns {boolean}\n         */\n\n    }, {\n        key: 'isEmptyRedoStack',\n        value: function isEmptyRedoStack() {\n            return this._redoStack.length === 0;\n        }\n\n        /**\n         * Return whether the undoStack is empty\n         * @returns {boolean}\n         */\n\n    }, {\n        key: 'isEmptyUndoStack',\n        value: function isEmptyUndoStack() {\n            return this._undoStack.length === 0;\n        }\n\n        /**\n         * Clear undoStack\n         */\n\n    }, {\n        key: 'clearUndoStack',\n        value: function clearUndoStack() {\n            if (!this.isEmptyUndoStack()) {\n                this._undoStack = [];\n                this._fireUndoStackChanged();\n            }\n        }\n\n        /**\n         * Clear redoStack\n         */\n\n    }, {\n        key: 'clearRedoStack',\n        value: function clearRedoStack() {\n            if (!this.isEmptyRedoStack()) {\n                this._redoStack = [];\n                this._fireRedoStackChanged();\n            }\n        }\n    }]);\n\n    return Invoker;\n}();\n\nCustomEvents.mixin(Invoker);\n\nexports.default = Invoker;\n\n//# sourceURL=webpack://tui.ImageEditor/./src/js/invoker.js?");
+
+/***/ }),
+
+/***/ "./src/js/polyfill.js":
+/*!****************************!*\
+  !*** ./src/js/polyfill.js ***!
+  \****************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\n// https://developer.mozilla.org/en-US/docs/Web/API/Element/closest\n// Any copyright is dedicated to the Public Domain. http://creativecommons.org/publicdomain/zero/1.0/if (!Element.prototype.matches)\nElement.prototype.matches = Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector;\n\nif (!Element.prototype.closest) Element.prototype.closest = function (s) {\n    var el = this;\n    if (!document.documentElement.contains(el)) return null;\n    do {\n        if (el.matches(s)) return el;\n        el = el.parentElement || el.parentNode;\n    } while (el !== null && el.nodeType === 1);\n    return null;\n};\n\n/*\n * classList.js: Cross-browser full element.classList implementation.\n * 1.1.20170427\n *\n * By Eli Grey, http://eligrey.com\n * License: Dedicated to the public domain.\n *   See https://github.com/eligrey/classList.js/blob/master/LICENSE.md\n */\n\n/*global self, document, DOMException */\n\n/*! @source http://purl.eligrey.com/github/classList.js/blob/master/classList.js */\n\nif (\"document\" in window.self) {\n\n    // Full polyfill for browsers with no classList support\n    // Including IE < Edge missing SVGElement.classList\n    if (!(\"classList\" in document.createElement(\"_\")) || document.createElementNS && !(\"classList\" in document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\"))) {\n\n        (function (view) {\n\n            \"use strict\";\n\n            if (!('Element' in view)) return;\n\n            var classListProp = \"classList\",\n                protoProp = \"prototype\",\n                elemCtrProto = view.Element[protoProp],\n                objCtr = Object,\n                strTrim = String[protoProp].trim || function () {\n                return this.replace(/^\\s+|\\s+$/g, \"\");\n            },\n                arrIndexOf = Array[protoProp].indexOf || function (item) {\n                var i = 0,\n                    len = this.length;\n                for (; i < len; i++) {\n                    if (i in this && this[i] === item) {\n                        return i;\n                    }\n                }\n                return -1;\n            }\n            // Vendors: please allow content code to instantiate DOMExceptions\n            ,\n                DOMEx = function DOMEx(type, message) {\n                this.name = type;\n                this.code = DOMException[type];\n                this.message = message;\n            },\n                checkTokenAndGetIndex = function checkTokenAndGetIndex(classList, token) {\n                if (token === \"\") {\n                    throw new DOMEx(\"SYNTAX_ERR\", \"An invalid or illegal string was specified\");\n                }\n                if (/\\s/.test(token)) {\n                    throw new DOMEx(\"INVALID_CHARACTER_ERR\", \"String contains an invalid character\");\n                }\n                return arrIndexOf.call(classList, token);\n            },\n                ClassList = function ClassList(elem) {\n                var trimmedClasses = strTrim.call(elem.getAttribute(\"class\") || \"\"),\n                    classes = trimmedClasses ? trimmedClasses.split(/\\s+/) : [],\n                    i = 0,\n                    len = classes.length;\n                for (; i < len; i++) {\n                    this.push(classes[i]);\n                }\n                this._updateClassName = function () {\n                    elem.setAttribute(\"class\", this.toString());\n                };\n            },\n                classListProto = ClassList[protoProp] = [],\n                classListGetter = function classListGetter() {\n                return new ClassList(this);\n            };\n            // Most DOMException implementations don't allow calling DOMException's toString()\n            // on non-DOMExceptions. Error's toString() is sufficient here.\n            DOMEx[protoProp] = Error[protoProp];\n            classListProto.item = function (i) {\n                return this[i] || null;\n            };\n            classListProto.contains = function (token) {\n                token += \"\";\n                return checkTokenAndGetIndex(this, token) !== -1;\n            };\n            classListProto.add = function () {\n                var tokens = arguments,\n                    i = 0,\n                    l = tokens.length,\n                    token,\n                    updated = false;\n                do {\n                    token = tokens[i] + \"\";\n                    if (checkTokenAndGetIndex(this, token) === -1) {\n                        this.push(token);\n                        updated = true;\n                    }\n                } while (++i < l);\n\n                if (updated) {\n                    this._updateClassName();\n                }\n            };\n            classListProto.remove = function () {\n                var tokens = arguments,\n                    i = 0,\n                    l = tokens.length,\n                    token,\n                    updated = false,\n                    index;\n                do {\n                    token = tokens[i] + \"\";\n                    index = checkTokenAndGetIndex(this, token);\n                    while (index !== -1) {\n                        this.splice(index, 1);\n                        updated = true;\n                        index = checkTokenAndGetIndex(this, token);\n                    }\n                } while (++i < l);\n\n                if (updated) {\n                    this._updateClassName();\n                }\n            };\n            classListProto.toggle = function (token, force) {\n                token += \"\";\n\n                var result = this.contains(token),\n                    method = result ? force !== true && \"remove\" : force !== false && \"add\";\n\n                if (method) {\n                    this[method](token);\n                }\n\n                if (force === true || force === false) {\n                    return force;\n                } else {\n                    return !result;\n                }\n            };\n            classListProto.toString = function () {\n                return this.join(\" \");\n            };\n\n            if (objCtr.defineProperty) {\n                var classListPropDesc = {\n                    get: classListGetter,\n                    enumerable: true,\n                    configurable: true\n                };\n                try {\n                    objCtr.defineProperty(elemCtrProto, classListProp, classListPropDesc);\n                } catch (ex) {\n                    // IE 8 doesn't support enumerable:true\n                    // adding undefined to fight this issue https://github.com/eligrey/classList.js/issues/36\n                    // modernie IE8-MSW7 machine has IE8 8.0.6001.18702 and is affected\n                    if (ex.number === undefined || ex.number === -0x7FF5EC54) {\n                        classListPropDesc.enumerable = false;\n                        objCtr.defineProperty(elemCtrProto, classListProp, classListPropDesc);\n                    }\n                }\n            } else if (objCtr[protoProp].__defineGetter__) {\n                elemCtrProto.__defineGetter__(classListProp, classListGetter);\n            }\n        })(window.self);\n    }\n\n    // There is full or partial native classList support, so just check if we need\n    // to normalize the add/remove and toggle APIs.\n\n    (function () {\n        \"use strict\";\n\n        var testElement = document.createElement(\"_\");\n\n        testElement.classList.add(\"c1\", \"c2\");\n\n        // Polyfill for IE 10/11 and Firefox <26, where classList.add and\n        // classList.remove exist but support only one argument at a time.\n        if (!testElement.classList.contains(\"c2\")) {\n            var createMethod = function createMethod(method) {\n                var original = DOMTokenList.prototype[method];\n\n                DOMTokenList.prototype[method] = function (token) {\n                    var i,\n                        len = arguments.length;\n\n                    for (i = 0; i < len; i++) {\n                        token = arguments[i];\n                        original.call(this, token);\n                    }\n                };\n            };\n            createMethod('add');\n            createMethod('remove');\n        }\n\n        testElement.classList.toggle(\"c3\", false);\n\n        // Polyfill for IE 10 and Firefox <24, where classList.toggle does not\n        // support the second argument.\n        if (testElement.classList.contains(\"c3\")) {\n            var _toggle = DOMTokenList.prototype.toggle;\n\n            DOMTokenList.prototype.toggle = function (token, force) {\n                if (1 in arguments && !this.contains(token) === !force) {\n                    return force;\n                } else {\n                    return _toggle.call(this, token);\n                }\n            };\n        }\n\n        testElement = null;\n    })();\n}\n\n/*!\n * @copyright Copyright (c) 2017 IcoMoon.io\n * @license   Licensed under MIT license\n *            See https://github.com/Keyamoon/svgxuse\n * @version   1.2.6\n */\n/*jslint browser: true */\n/*global XDomainRequest, MutationObserver, window */\n(function () {\n    \"use strict\";\n\n    if (typeof window !== \"undefined\" && window.addEventListener) {\n        var cache = Object.create(null); // holds xhr objects to prevent multiple requests\n        var checkUseElems;\n        var tid; // timeout id\n        var debouncedCheck = function debouncedCheck() {\n            clearTimeout(tid);\n            tid = setTimeout(checkUseElems, 100);\n        };\n        var unobserveChanges = function unobserveChanges() {\n            return;\n        };\n        var observeChanges = function observeChanges() {\n            var observer;\n            window.addEventListener(\"resize\", debouncedCheck, false);\n            window.addEventListener(\"orientationchange\", debouncedCheck, false);\n            if (window.MutationObserver) {\n                observer = new MutationObserver(debouncedCheck);\n                observer.observe(document.documentElement, {\n                    childList: true,\n                    subtree: true,\n                    attributes: true\n                });\n                unobserveChanges = function unobserveChanges() {\n                    try {\n                        observer.disconnect();\n                        window.removeEventListener(\"resize\", debouncedCheck, false);\n                        window.removeEventListener(\"orientationchange\", debouncedCheck, false);\n                    } catch (ignore) {}\n                };\n            } else {\n                document.documentElement.addEventListener(\"DOMSubtreeModified\", debouncedCheck, false);\n                unobserveChanges = function unobserveChanges() {\n                    document.documentElement.removeEventListener(\"DOMSubtreeModified\", debouncedCheck, false);\n                    window.removeEventListener(\"resize\", debouncedCheck, false);\n                    window.removeEventListener(\"orientationchange\", debouncedCheck, false);\n                };\n            }\n        };\n        var createRequest = function createRequest(url) {\n            // In IE 9, cross origin requests can only be sent using XDomainRequest.\n            // XDomainRequest would fail if CORS headers are not set.\n            // Therefore, XDomainRequest should only be used with cross origin requests.\n            function getOrigin(loc) {\n                var a;\n                if (loc.protocol !== undefined) {\n                    a = loc;\n                } else {\n                    a = document.createElement(\"a\");\n                    a.href = loc;\n                }\n                return a.protocol.replace(/:/g, \"\") + a.host;\n            }\n            var Request;\n            var origin;\n            var origin2;\n            if (window.XMLHttpRequest) {\n                Request = new XMLHttpRequest();\n                origin = getOrigin(location);\n                origin2 = getOrigin(url);\n                if (Request.withCredentials === undefined && origin2 !== \"\" && origin2 !== origin) {\n                    Request = XDomainRequest || undefined;\n                } else {\n                    Request = XMLHttpRequest;\n                }\n            }\n            return Request;\n        };\n        var xlinkNS = \"http://www.w3.org/1999/xlink\";\n        checkUseElems = function checkUseElems() {\n            var base;\n            var bcr;\n            var fallback = \"\"; // optional fallback URL in case no base path to SVG file was given and no symbol definition was found.\n            var hash;\n            var href;\n            var i;\n            var inProgressCount = 0;\n            var isHidden;\n            var Request;\n            var url;\n            var uses;\n            var xhr;\n            function observeIfDone() {\n                // If done with making changes, start watching for chagnes in DOM again\n                inProgressCount -= 1;\n                if (inProgressCount === 0) {\n                    // if all xhrs were resolved\n                    unobserveChanges(); // make sure to remove old handlers\n                    observeChanges(); // watch for changes to DOM\n                }\n            }\n            function attrUpdateFunc(spec) {\n                return function () {\n                    if (cache[spec.base] !== true) {\n                        spec.useEl.setAttributeNS(xlinkNS, \"xlink:href\", \"#\" + spec.hash);\n                        if (spec.useEl.hasAttribute(\"href\")) {\n                            spec.useEl.setAttribute(\"href\", \"#\" + spec.hash);\n                        }\n                    }\n                };\n            }\n            function onloadFunc(xhr) {\n                return function () {\n                    var body = document.body;\n                    var x = document.createElement(\"x\");\n                    var svg;\n                    xhr.onload = null;\n                    x.innerHTML = xhr.responseText;\n                    svg = x.getElementsByTagName(\"svg\")[0];\n                    if (svg) {\n                        svg.setAttribute(\"aria-hidden\", \"true\");\n                        svg.style.position = \"absolute\";\n                        svg.style.width = 0;\n                        svg.style.height = 0;\n                        svg.style.overflow = \"hidden\";\n                        body.insertBefore(svg, body.firstChild);\n                    }\n                    observeIfDone();\n                };\n            }\n            function onErrorTimeout(xhr) {\n                return function () {\n                    xhr.onerror = null;\n                    xhr.ontimeout = null;\n                    observeIfDone();\n                };\n            }\n            unobserveChanges(); // stop watching for changes to DOM\n            // find all use elements\n            uses = document.getElementsByTagName(\"use\");\n            for (i = 0; i < uses.length; i += 1) {\n                try {\n                    bcr = uses[i].getBoundingClientRect();\n                } catch (ignore) {\n                    // failed to get bounding rectangle of the use element\n                    bcr = false;\n                }\n                href = uses[i].getAttribute(\"href\") || uses[i].getAttributeNS(xlinkNS, \"href\") || uses[i].getAttribute(\"xlink:href\");\n                if (href && href.split) {\n                    url = href.split(\"#\");\n                } else {\n                    url = [\"\", \"\"];\n                }\n                base = url[0];\n                hash = url[1];\n                isHidden = bcr && bcr.left === 0 && bcr.right === 0 && bcr.top === 0 && bcr.bottom === 0;\n                if (bcr && bcr.width === 0 && bcr.height === 0 && !isHidden) {\n                    // the use element is empty\n                    // if there is a reference to an external SVG, try to fetch it\n                    // use the optional fallback URL if there is no reference to an external SVG\n                    if (fallback && !base.length && hash && !document.getElementById(hash)) {\n                        base = fallback;\n                    }\n                    if (uses[i].hasAttribute(\"href\")) {\n                        uses[i].setAttributeNS(xlinkNS, \"xlink:href\", href);\n                    }\n                    if (base.length) {\n                        // schedule updating xlink:href\n                        xhr = cache[base];\n                        if (xhr !== true) {\n                            // true signifies that prepending the SVG was not required\n                            setTimeout(attrUpdateFunc({\n                                useEl: uses[i],\n                                base: base,\n                                hash: hash\n                            }), 0);\n                        }\n                        if (xhr === undefined) {\n                            Request = createRequest(base);\n                            if (Request !== undefined) {\n                                xhr = new Request();\n                                cache[base] = xhr;\n                                xhr.onload = onloadFunc(xhr);\n                                xhr.onerror = onErrorTimeout(xhr);\n                                xhr.ontimeout = onErrorTimeout(xhr);\n                                xhr.open(\"GET\", base);\n                                xhr.send();\n                                inProgressCount += 1;\n                            }\n                        }\n                    }\n                } else {\n                    if (!isHidden) {\n                        if (cache[base] === undefined) {\n                            // remember this URL if the use element was not empty and no request was sent\n                            cache[base] = true;\n                        } else if (cache[base].onload) {\n                            // if it turns out that prepending the SVG is not necessary,\n                            // abort the in-progress xhr.\n                            cache[base].abort();\n                            delete cache[base].onload;\n                            cache[base] = true;\n                        }\n                    } else if (base.length && cache[base]) {\n                        setTimeout(attrUpdateFunc({\n                            useEl: uses[i],\n                            base: base,\n                            hash: hash\n                        }), 0);\n                    }\n                }\n            }\n            uses = \"\";\n            inProgressCount += 1;\n            observeIfDone();\n        };\n        var _winLoad;\n        _winLoad = function winLoad() {\n            window.removeEventListener(\"load\", _winLoad, false); // to prevent memory leaks\n            tid = setTimeout(checkUseElems, 0);\n        };\n        if (document.readyState !== \"complete\") {\n            // The load event fires when all resources have finished loading, which allows detecting whether SVG use elements are empty.\n            window.addEventListener(\"load\", _winLoad, false);\n        } else {\n            // No need to add a listener if the document is already loaded, initialize immediately.\n            _winLoad();\n        }\n    }\n})();\n\n//# sourceURL=webpack://tui.ImageEditor/./src/js/polyfill.js?");
+
+/***/ }),
+
+/***/ "./src/js/ui.js":
+/*!**********************!*\
+  !*** ./src/js/ui.js ***!
+  \**********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _tuiCodeSnippet = __webpack_require__(/*! tui-code-snippet */ \"tui-code-snippet\");\n\nvar _tuiCodeSnippet2 = _interopRequireDefault(_tuiCodeSnippet);\n\nvar _consts = __webpack_require__(/*! ./consts */ \"./src/js/consts.js\");\n\nvar _util = __webpack_require__(/*! ./util */ \"./src/js/util.js\");\n\nvar _mainContainer = __webpack_require__(/*! ./ui/template/mainContainer */ \"./src/js/ui/template/mainContainer.js\");\n\nvar _mainContainer2 = _interopRequireDefault(_mainContainer);\n\nvar _controls = __webpack_require__(/*! ./ui/template/controls */ \"./src/js/ui/template/controls.js\");\n\nvar _controls2 = _interopRequireDefault(_controls);\n\nvar _theme = __webpack_require__(/*! ./ui/theme/theme */ \"./src/js/ui/theme/theme.js\");\n\nvar _theme2 = _interopRequireDefault(_theme);\n\nvar _shape = __webpack_require__(/*! ./ui/shape */ \"./src/js/ui/shape.js\");\n\nvar _shape2 = _interopRequireDefault(_shape);\n\nvar _crop = __webpack_require__(/*! ./ui/crop */ \"./src/js/ui/crop.js\");\n\nvar _crop2 = _interopRequireDefault(_crop);\n\nvar _flip = __webpack_require__(/*! ./ui/flip */ \"./src/js/ui/flip.js\");\n\nvar _flip2 = _interopRequireDefault(_flip);\n\nvar _rotate = __webpack_require__(/*! ./ui/rotate */ \"./src/js/ui/rotate.js\");\n\nvar _rotate2 = _interopRequireDefault(_rotate);\n\nvar _text = __webpack_require__(/*! ./ui/text */ \"./src/js/ui/text.js\");\n\nvar _text2 = _interopRequireDefault(_text);\n\nvar _mask = __webpack_require__(/*! ./ui/mask */ \"./src/js/ui/mask.js\");\n\nvar _mask2 = _interopRequireDefault(_mask);\n\nvar _icon = __webpack_require__(/*! ./ui/icon */ \"./src/js/ui/icon.js\");\n\nvar _icon2 = _interopRequireDefault(_icon);\n\nvar _draw = __webpack_require__(/*! ./ui/draw */ \"./src/js/ui/draw.js\");\n\nvar _draw2 = _interopRequireDefault(_draw);\n\nvar _filter = __webpack_require__(/*! ./ui/filter */ \"./src/js/ui/filter.js\");\n\nvar _filter2 = _interopRequireDefault(_filter);\n\nvar _locale = __webpack_require__(/*! ./ui/locale/locale */ \"./src/js/ui/locale/locale.js\");\n\nvar _locale2 = _interopRequireDefault(_locale);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar SUB_UI_COMPONENT = {\n    Shape: _shape2.default,\n    Crop: _crop2.default,\n    Flip: _flip2.default,\n    Rotate: _rotate2.default,\n    Text: _text2.default,\n    Mask: _mask2.default,\n    Icon: _icon2.default,\n    Draw: _draw2.default,\n    Filter: _filter2.default\n};\n\nvar BI_EXPRESSION_MINSIZE_WHEN_TOP_POSITION = '1300';\n\n/**\n * Default UI Class\n * @class\n * @param {string|HTMLElement} element - Wrapper's element or selector\n * @param {Object} [options] - Ui setting options\n *   @param {number} options.loadImage - Init default load image\n *   @param {number} options.initMenu - Init start menu\n *   @param {Boolean} [options.menuBarPosition=bottom] - Let\n *   @param {Boolean} [options.applyCropSelectionStyle=false] - Let\n *   @param {Boolean} [options.usageStatistics=false] - Use statistics or not\n *   @param {Object} [options.uiSize] - ui size of editor\n *     @param {string} options.uiSize.width - width of ui\n *     @param {string} options.uiSize.height - height of ui\n * @param {Object} actions - ui action instance\n */\n\nvar Ui = function () {\n    function Ui(element, options, actions) {\n        _classCallCheck(this, Ui);\n\n        this.options = this._initializeOption(options);\n        this._actions = actions;\n        this.submenu = false;\n        this.imageSize = {};\n        this.uiSize = {};\n        this._locale = new _locale2.default(this.options.locale);\n        this.theme = new _theme2.default(this.options.theme);\n        this.eventHandler = {};\n        this._submenuChangeTransection = false;\n        this._selectedElement = null;\n        this._mainElement = null;\n        this._editorElementWrap = null;\n        this._editorElement = null;\n        this._menuElement = null;\n        this._subMenuElement = null;\n        this._makeUiElement(element);\n        this._setUiSize();\n        this._initMenuEvent = false;\n\n        this._makeSubMenu();\n    }\n\n    /**\n     * Destroys the instance.\n     */\n\n\n    _createClass(Ui, [{\n        key: 'destroy',\n        value: function destroy() {\n            this._removeUiEvent();\n            this._destroyAllMenu();\n            this._selectedElement.innerHTML = '';\n\n            (0, _util.assignmentForDestroy)(this);\n        }\n\n        /**\n         * Set Default Selection for includeUI\n         * @param {Object} option - imageEditor options\n         * @returns {Object} - extends selectionStyle option\n         * @ignore\n         */\n\n    }, {\n        key: 'setUiDefaultSelectionStyle',\n        value: function setUiDefaultSelectionStyle(option) {\n            return _tuiCodeSnippet2.default.extend({\n                applyCropSelectionStyle: true,\n                applyGroupSelectionStyle: true,\n                selectionStyle: {\n                    cornerStyle: 'circle',\n                    cornerSize: 16,\n                    cornerColor: '#fff',\n                    cornerStrokeColor: '#fff',\n                    transparentCorners: false,\n                    lineWidth: 2,\n                    borderColor: '#fff'\n                }\n            }, option);\n        }\n\n        /**\n         * Change editor size\n         * @param {Object} resizeInfo - ui & image size info\n         *   @param {Object} [resizeInfo.uiSize] - image size dimension\n         *     @param {string} resizeInfo.uiSize.width - ui width\n         *     @param {string} resizeInfo.uiSize.height - ui height\n         *   @param {Object} [resizeInfo.imageSize] - image size dimension\n         *     @param {Number} resizeInfo.imageSize.oldWidth - old width\n         *     @param {Number} resizeInfo.imageSize.oldHeight - old height\n         *     @param {Number} resizeInfo.imageSize.newWidth - new width\n         *     @param {Number} resizeInfo.imageSize.newHeight - new height\n         * @example\n         * // Change the image size and ui size, and change the affected ui state together.\n         * imageEditor.ui.resizeEditor({\n         *     imageSize: {oldWidth: 100, oldHeight: 100, newWidth: 700, newHeight: 700},\n         *     uiSize: {width: 1000, height: 1000}\n         * });\n         * @example\n         * // Apply the ui state while preserving the previous attribute (for example, if responsive UI)\n         * imageEditor.ui.resizeEditor();\n         */\n\n    }, {\n        key: 'resizeEditor',\n        value: function resizeEditor() {\n            var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n                uiSize = _ref.uiSize,\n                _ref$imageSize = _ref.imageSize,\n                imageSize = _ref$imageSize === undefined ? this.imageSize : _ref$imageSize;\n\n            if (imageSize !== this.imageSize) {\n                this.imageSize = imageSize;\n            }\n            if (uiSize) {\n                this._setUiSize(uiSize);\n            }\n\n            var _getCanvasMaxDimensio = this._getCanvasMaxDimension(),\n                width = _getCanvasMaxDimensio.width,\n                height = _getCanvasMaxDimensio.height;\n\n            var editorElementStyle = this._editorElement.style;\n            var menuBarPosition = this.options.menuBarPosition;\n\n\n            editorElementStyle.height = height + 'px';\n            editorElementStyle.width = width + 'px';\n\n            this._setEditorPosition(menuBarPosition);\n\n            this._editorElementWrap.style.bottom = '0px';\n            this._editorElementWrap.style.top = '0px';\n            this._editorElementWrap.style.left = '0px';\n            this._editorElementWrap.style.width = '100%';\n\n            var selectElementClassList = this._selectedElement.classList;\n\n            if (menuBarPosition === 'top' && this._selectedElement.offsetWidth < BI_EXPRESSION_MINSIZE_WHEN_TOP_POSITION) {\n                selectElementClassList.add('tui-image-editor-top-optimization');\n            } else {\n                selectElementClassList.remove('tui-image-editor-top-optimization');\n            }\n        }\n\n        /**\n         * Change help button status\n         * @param {string} buttonType - target button type\n         * @param {Boolean} enableStatus - enabled status\n         * @ignore\n         */\n\n    }, {\n        key: 'changeHelpButtonEnabled',\n        value: function changeHelpButtonEnabled(buttonType, enableStatus) {\n            var buttonClassList = this._buttonElements[buttonType].classList;\n\n            buttonClassList[enableStatus ? 'add' : 'remove']('enabled');\n        }\n\n        /**\n         * Change delete button status\n         * @param {Object} [options] - Ui setting options\n         *   @param {object} [options.loadImage] - Init default load image\n         *   @param {string} [options.initMenu] - Init start menu\n         *   @param {string} [options.menuBarPosition=bottom] - Let\n         *   @param {boolean} [options.applyCropSelectionStyle=false] - Let\n         *   @param {boolean} [options.usageStatistics=false] - Send statistics ping or not\n         * @returns {Object} initialize option\n         * @private\n         */\n\n    }, {\n        key: '_initializeOption',\n        value: function _initializeOption(options) {\n            return _tuiCodeSnippet2.default.extend({\n                loadImage: {\n                    path: '',\n                    name: ''\n                },\n                locale: {},\n                menuIconPath: '',\n                menu: ['crop', 'flip', 'rotate', 'draw', 'shape', 'icon', 'text', 'mask', 'filter'],\n                initMenu: '',\n                uiSize: {\n                    width: '100%',\n                    height: '100%'\n                },\n                menuBarPosition: 'bottom'\n            }, options);\n        }\n\n        /**\n         * Set ui container size\n         * @param {Object} uiSize - ui dimension\n         *   @param {string} uiSize.width - css width property\n         *   @param {string} uiSize.height - css height property \n         * @private\n         */\n\n    }, {\n        key: '_setUiSize',\n        value: function _setUiSize() {\n            var uiSize = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.options.uiSize;\n\n            var elementDimension = this._selectedElement.style;\n            elementDimension.width = uiSize.width;\n            elementDimension.height = uiSize.height;\n        }\n\n        /**\n         * Make submenu dom element\n         * @private\n         */\n\n    }, {\n        key: '_makeSubMenu',\n        value: function _makeSubMenu() {\n            var _this = this;\n\n            _tuiCodeSnippet2.default.forEach(this.options.menu, function (menuName) {\n                var SubComponentClass = SUB_UI_COMPONENT[menuName.replace(/^[a-z]/, function ($0) {\n                    return $0.toUpperCase();\n                })];\n\n                // make menu element\n                _this._makeMenuElement(menuName);\n\n                // menu btn element\n                _this._buttonElements[menuName] = _this._menuElement.querySelector('.tie-btn-' + menuName);\n\n                // submenu ui instance\n                _this[menuName] = new SubComponentClass(_this._subMenuElement, {\n                    locale: _this._locale,\n                    makeSvgIcon: _this.theme.makeMenSvgIconSet.bind(_this.theme),\n                    menuBarPosition: _this.options.menuBarPosition,\n                    usageStatistics: _this.options.usageStatistics\n                });\n            });\n        }\n\n        /**\n         * Make primary ui dom element\n         * @param {string|HTMLElement} element - Wrapper's element or selector\n         * @private\n         */\n\n    }, {\n        key: '_makeUiElement',\n        value: function _makeUiElement(element) {\n            var selectedElement = void 0;\n\n            window.snippet = _tuiCodeSnippet2.default;\n\n            if (element.nodeType) {\n                selectedElement = element;\n            } else {\n                selectedElement = document.querySelector(element);\n            }\n            var selector = (0, _util.getSelector)(selectedElement);\n\n            selectedElement.classList.add('tui-image-editor-container');\n            selectedElement.innerHTML = (0, _controls2.default)({\n                locale: this._locale,\n                biImage: this.theme.getStyle('common.bi'),\n                loadButtonStyle: this.theme.getStyle('loadButton'),\n                downloadButtonStyle: this.theme.getStyle('downloadButton')\n            }) + (0, _mainContainer2.default)({\n                locale: this._locale,\n                biImage: this.theme.getStyle('common.bi'),\n                commonStyle: this.theme.getStyle('common'),\n                headerStyle: this.theme.getStyle('header'),\n                loadButtonStyle: this.theme.getStyle('loadButton'),\n                downloadButtonStyle: this.theme.getStyle('downloadButton'),\n                submenuStyle: this.theme.getStyle('submenu')\n            });\n\n            this._selectedElement = selectedElement;\n            this._selectedElement.classList.add(this.options.menuBarPosition);\n\n            this._mainElement = selector('.tui-image-editor-main');\n            this._editorElementWrap = selector('.tui-image-editor-wrap');\n            this._editorElement = selector('.tui-image-editor');\n            this._menuElement = selector('.tui-image-editor-menu');\n            this._subMenuElement = selector('.tui-image-editor-submenu');\n            this._buttonElements = {\n                'download': this._selectedElement.querySelectorAll('.tui-image-editor-download-btn'),\n                'load': this._selectedElement.querySelectorAll('.tui-image-editor-load-btn')\n            };\n\n            this._addHelpMenus();\n        }\n\n        /**\n         * make array for help menu output, including partitions.\n         * @returns {Array}\n         * @private\n         */\n\n    }, {\n        key: '_makeHelpMenuWithPartition',\n        value: function _makeHelpMenuWithPartition() {\n            var helpMenuWithPartition = [].concat(_consts.HELP_MENUS, ['']);\n            helpMenuWithPartition.splice(3, 0, '');\n\n            return helpMenuWithPartition;\n        }\n\n        /**\n         * Add help menu\n         * @private\n         */\n\n    }, {\n        key: '_addHelpMenus',\n        value: function _addHelpMenus() {\n            var _this2 = this;\n\n            var helpMenuWithPartition = this._makeHelpMenuWithPartition();\n\n            _tuiCodeSnippet2.default.forEach(helpMenuWithPartition, function (menuName) {\n                if (!menuName) {\n                    _this2._makeMenuPartitionElement();\n                } else {\n                    _this2._makeMenuElement(menuName, ['normal', 'disabled', 'hover'], 'help');\n\n                    if (menuName) {\n                        _this2._buttonElements[menuName] = _this2._menuElement.querySelector('.tie-btn-' + menuName);\n                    }\n                }\n            });\n        }\n\n        /**\n         * Make menu partition element\n         * @private\n         */\n\n    }, {\n        key: '_makeMenuPartitionElement',\n        value: function _makeMenuPartitionElement() {\n            var partitionElement = document.createElement('li');\n            var partitionInnerElement = document.createElement('div');\n            partitionElement.className = (0, _util.cls)('item');\n            partitionInnerElement.className = (0, _util.cls)('icpartition');\n            partitionElement.appendChild(partitionInnerElement);\n\n            this._menuElement.appendChild(partitionElement);\n        }\n\n        /**\n         * Make menu button element\n         * @param {string} menuName - menu name\n         * @param {Array} useIconTypes - Possible values are  \\['normal', 'active', 'hover', 'disabled'\\]\n         * @param {string} menuType - 'normal' or 'help'\n         * @private\n         */\n\n    }, {\n        key: '_makeMenuElement',\n        value: function _makeMenuElement(menuName) {\n            var useIconTypes = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ['normal', 'active', 'hover'];\n            var menuType = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'normal';\n\n            var btnElement = document.createElement('li');\n            var menuItemHtml = this.theme.makeMenSvgIconSet(useIconTypes, menuName);\n\n            this._addTooltipAttribute(btnElement, menuName);\n            btnElement.className = 'tie-btn-' + menuName + ' ' + (0, _util.cls)('item') + ' ' + menuType;\n            btnElement.innerHTML = menuItemHtml;\n\n            this._menuElement.appendChild(btnElement);\n        }\n\n        /**\n         * Add help action event\n         * @private\n         */\n\n    }, {\n        key: '_addHelpActionEvent',\n        value: function _addHelpActionEvent() {\n            var _this3 = this;\n\n            _tuiCodeSnippet2.default.forEach(_consts.HELP_MENUS, function (helpName) {\n                _this3.eventHandler[helpName] = function () {\n                    return _this3._actions.main[helpName]();\n                };\n                _this3._buttonElements[helpName].addEventListener('click', _this3.eventHandler[helpName]);\n            });\n        }\n\n        /**\n         * Remove help action event\n         * @private\n         */\n\n    }, {\n        key: '_removeHelpActionEvent',\n        value: function _removeHelpActionEvent() {\n            var _this4 = this;\n\n            _tuiCodeSnippet2.default.forEach(_consts.HELP_MENUS, function (helpName) {\n                _this4._buttonElements[helpName].removeEventListener('click', _this4.eventHandler[helpName]);\n            });\n        }\n\n        /**\n         * Add attribute for menu tooltip\n         * @param {HTMLElement} element - menu element\n         * @param {string} tooltipName - tooltipName\n         * @private\n         */\n\n    }, {\n        key: '_addTooltipAttribute',\n        value: function _addTooltipAttribute(element, tooltipName) {\n            element.setAttribute('tooltip-content', this._locale.localize(tooltipName.replace(/^[a-z]/g, function ($0) {\n                return $0.toUpperCase();\n            })));\n        }\n\n        /**\n         * Add download event\n         * @private\n         */\n\n    }, {\n        key: '_addDownloadEvent',\n        value: function _addDownloadEvent() {\n            var _this5 = this;\n\n            this.eventHandler.download = function () {\n                return _this5._actions.main.download();\n            };\n            _tuiCodeSnippet2.default.forEach(this._buttonElements.download, function (element) {\n                element.addEventListener('click', _this5.eventHandler.download);\n            });\n        }\n    }, {\n        key: '_removeDownloadEvent',\n        value: function _removeDownloadEvent() {\n            var _this6 = this;\n\n            _tuiCodeSnippet2.default.forEach(this._buttonElements.download, function (element) {\n                element.removeEventListener('click', _this6.eventHandler.download);\n            });\n        }\n\n        /**\n         * Add load event\n         * @private\n         */\n\n    }, {\n        key: '_addLoadEvent',\n        value: function _addLoadEvent() {\n            var _this7 = this;\n\n            this.eventHandler.loadImage = function (event) {\n                return _this7._actions.main.load(event.target.files[0]);\n            };\n\n            _tuiCodeSnippet2.default.forEach(this._buttonElements.load, function (element) {\n                element.addEventListener('change', _this7.eventHandler.loadImage);\n            });\n        }\n\n        /**\n         * Remmove load event\n         * @private\n         */\n\n    }, {\n        key: '_removeLoadEvent',\n        value: function _removeLoadEvent() {\n            var _this8 = this;\n\n            _tuiCodeSnippet2.default.forEach(this._buttonElements.load, function (element) {\n                element.removeEventListener('change', _this8.eventHandler.loadImage);\n            });\n        }\n\n        /**\n         * Add menu event\n         * @param {string} menuName - menu name\n         * @private\n         */\n\n    }, {\n        key: '_addMainMenuEvent',\n        value: function _addMainMenuEvent(menuName) {\n            var _this9 = this;\n\n            this.eventHandler[menuName] = function () {\n                return _this9.changeMenu(menuName);\n            };\n            this._buttonElements[menuName].addEventListener('click', this.eventHandler[menuName]);\n        }\n\n        /**\n         * Add menu event\n         * @param {string} menuName - menu name\n         * @private\n         */\n\n    }, {\n        key: '_addSubMenuEvent',\n        value: function _addSubMenuEvent(menuName) {\n            this[menuName].addEvent(this._actions[menuName]);\n        }\n\n        /**\n         * Add menu event\n         * @private\n         */\n\n    }, {\n        key: '_addMenuEvent',\n        value: function _addMenuEvent() {\n            var _this10 = this;\n\n            _tuiCodeSnippet2.default.forEach(this.options.menu, function (menuName) {\n                _this10._addMainMenuEvent(menuName);\n                _this10._addSubMenuEvent(menuName);\n            });\n        }\n\n        /**\n         * Remove menu event\n         * @private\n         */\n\n    }, {\n        key: '_removeMainMenuEvent',\n        value: function _removeMainMenuEvent() {\n            var _this11 = this;\n\n            _tuiCodeSnippet2.default.forEach(this.options.menu, function (menuName) {\n                _this11._buttonElements[menuName].removeEventListener('click', _this11.eventHandler[menuName]);\n            });\n        }\n\n        /**\n         * Get editor area element\n         * @returns {HTMLElement} editor area html element\n         * @ignore\n         */\n\n    }, {\n        key: 'getEditorArea',\n        value: function getEditorArea() {\n            return this._editorElement;\n        }\n\n        /**\n         * Add event for menu items\n         * @ignore\n         */\n\n    }, {\n        key: 'activeMenuEvent',\n        value: function activeMenuEvent() {\n            if (this._initMenuEvent) {\n                return;\n            }\n\n            this._addHelpActionEvent();\n            this._addDownloadEvent();\n            this._addMenuEvent();\n            this._initMenu();\n            this._initMenuEvent = true;\n        }\n\n        /**\n         * Remove ui event\n         * @private\n         */\n\n    }, {\n        key: '_removeUiEvent',\n        value: function _removeUiEvent() {\n            this._removeHelpActionEvent();\n            this._removeDownloadEvent();\n            this._removeLoadEvent();\n            this._removeMainMenuEvent();\n        }\n\n        /**\n         * Destroy all menu instance\n         * @private\n         */\n\n    }, {\n        key: '_destroyAllMenu',\n        value: function _destroyAllMenu() {\n            var _this12 = this;\n\n            _tuiCodeSnippet2.default.forEach(this.options.menu, function (menuName) {\n                _this12[menuName].destroy();\n            });\n        }\n\n        /**\n         * Init canvas\n         * @ignore\n         */\n\n    }, {\n        key: 'initCanvas',\n        value: function initCanvas() {\n            var _this13 = this;\n\n            var loadImageInfo = this._getLoadImage();\n            if (loadImageInfo.path) {\n                this._actions.main.initLoadImage(loadImageInfo.path, loadImageInfo.name).then(function () {\n                    _this13.activeMenuEvent();\n                });\n            }\n\n            this._addLoadEvent();\n\n            var gridVisual = document.createElement('div');\n\n            gridVisual.className = (0, _util.cls)('grid-visual');\n            var grid = '<table>\\n           <tr><td class=\"dot left-top\"></td><td></td><td class=\"dot right-top\"></td></tr>\\n           <tr><td></td><td></td><td></td></tr>\\n           <tr><td class=\"dot left-bottom\"></td><td></td><td class=\"dot right-bottom\"></td></tr>\\n         </table>';\n            gridVisual.innerHTML = grid;\n            this._editorContainerElement = this._editorElement.querySelector('.tui-image-editor-canvas-container');\n            this._editorContainerElement.appendChild(gridVisual);\n        }\n\n        /**\n         * get editor area element\n         * @returns {Object} load image option\n         * @private\n         */\n\n    }, {\n        key: '_getLoadImage',\n        value: function _getLoadImage() {\n            return this.options.loadImage;\n        }\n\n        /**\n         * change menu\n         * @param {string} menuName - menu name\n         * @param {boolean} toggle - whether toogle or not\n         * @param {boolean} discardSelection - discard selection\n         * @ignore\n         */\n\n    }, {\n        key: 'changeMenu',\n        value: function changeMenu(menuName) {\n            var toggle = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n            var discardSelection = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n\n            if (!this._submenuChangeTransection) {\n                this._submenuChangeTransection = true;\n                this._changeMenu(menuName, toggle, discardSelection);\n                this._submenuChangeTransection = false;\n            }\n        }\n\n        /**\n         * change menu\n         * @param {string} menuName - menu name\n         * @param {boolean} toggle - whether toogle or not\n         * @param {boolean} discardSelection - discard selection\n         * @private\n         */\n\n    }, {\n        key: '_changeMenu',\n        value: function _changeMenu(menuName, toggle, discardSelection) {\n            if (this.submenu) {\n                this._buttonElements[this.submenu].classList.remove('active');\n                this._mainElement.classList.remove('tui-image-editor-menu-' + this.submenu);\n                if (discardSelection) {\n                    this._actions.main.discardSelection();\n                }\n                this._actions.main.changeSelectableAll(true);\n                this[this.submenu].changeStandbyMode();\n            }\n\n            if (this.submenu === menuName && toggle) {\n                this.submenu = null;\n            } else {\n                this._buttonElements[menuName].classList.add('active');\n                this._mainElement.classList.add('tui-image-editor-menu-' + menuName);\n                this.submenu = menuName;\n                this[this.submenu].changeStartMode();\n            }\n\n            this.resizeEditor();\n        }\n\n        /**\n         * Init menu\n         * @private\n         */\n\n    }, {\n        key: '_initMenu',\n        value: function _initMenu() {\n            if (this.options.initMenu) {\n                var evt = document.createEvent('MouseEvents');\n                evt.initEvent('click', true, false);\n                this._buttonElements[this.options.initMenu].dispatchEvent(evt);\n            }\n\n            if (this.icon) {\n                this.icon.registDefaultIcon();\n            }\n        }\n\n        /**\n         * Get canvas max Dimension\n         * @returns {Object} - width & height of editor\n         * @private\n         */\n\n    }, {\n        key: '_getCanvasMaxDimension',\n        value: function _getCanvasMaxDimension() {\n            var _editorContainerEleme = this._editorContainerElement.style,\n                maxWidth = _editorContainerEleme.maxWidth,\n                maxHeight = _editorContainerEleme.maxHeight;\n\n            var width = parseFloat(maxWidth);\n            var height = parseFloat(maxHeight);\n\n            return {\n                width: width,\n                height: height\n            };\n        }\n\n        /**\n         * Set editor position\n         * @param {string} menuBarPosition - top or right or bottom or left\n         * @private\n         */\n\n    }, {\n        key: '_setEditorPosition',\n        value: function _setEditorPosition(menuBarPosition) {\n            // eslint-disable-line complexity\n            var _getCanvasMaxDimensio2 = this._getCanvasMaxDimension(),\n                width = _getCanvasMaxDimensio2.width,\n                height = _getCanvasMaxDimensio2.height;\n\n            var editorElementStyle = this._editorElement.style;\n            var top = 0;\n            var left = 0;\n\n            if (this.submenu) {\n                if (menuBarPosition === 'bottom') {\n                    if (height > this._editorElementWrap.scrollHeight - 150) {\n                        top = (height - this._editorElementWrap.scrollHeight) / 2;\n                    } else {\n                        top = 150 / 2 * -1;\n                    }\n                } else if (menuBarPosition === 'top') {\n                    if (height > this._editorElementWrap.offsetHeight - 150) {\n                        top = 150 / 2 - (height - (this._editorElementWrap.offsetHeight - 150)) / 2;\n                    } else {\n                        top = 150 / 2;\n                    }\n                } else if (menuBarPosition === 'left') {\n                    if (width > this._editorElementWrap.offsetWidth - 248) {\n                        left = 248 / 2 - (width - (this._editorElementWrap.offsetWidth - 248)) / 2;\n                    } else {\n                        left = 248 / 2;\n                    }\n                } else if (menuBarPosition === 'right') {\n                    if (width > this._editorElementWrap.scrollWidth - 248) {\n                        left = (width - this._editorElementWrap.scrollWidth) / 2;\n                    } else {\n                        left = 248 / 2 * -1;\n                    }\n                }\n            }\n            editorElementStyle.top = top + 'px';\n            editorElementStyle.left = left + 'px';\n        }\n    }]);\n\n    return Ui;\n}();\n\nexports.default = Ui;\n\n//# sourceURL=webpack://tui.ImageEditor/./src/js/ui.js?");
+
+/***/ }),
+
+/***/ "./src/js/ui/crop.js":
+/*!***************************!*\
+  !*** ./src/js/ui/crop.js ***!
+  \***************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _tuiCodeSnippet = __webpack_require__(/*! tui-code-snippet */ \"tui-code-snippet\");\n\nvar _tuiCodeSnippet2 = _interopRequireDefault(_tuiCodeSnippet);\n\nvar _submenuBase = __webpack_require__(/*! ./submenuBase */ \"./src/js/ui/submenuBase.js\");\n\nvar _submenuBase2 = _interopRequireDefault(_submenuBase);\n\nvar _util = __webpack_require__(/*! ../util */ \"./src/js/util.js\");\n\nvar _crop = __webpack_require__(/*! ./template/submenu/crop */ \"./src/js/ui/template/submenu/crop.js\");\n\nvar _crop2 = _interopRequireDefault(_crop);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n/**\n * Crop ui class\n * @class\n * @ignore\n */\nvar Crop = function (_Submenu) {\n    _inherits(Crop, _Submenu);\n\n    function Crop(subMenuElement, _ref) {\n        var locale = _ref.locale,\n            makeSvgIcon = _ref.makeSvgIcon,\n            menuBarPosition = _ref.menuBarPosition,\n            usageStatistics = _ref.usageStatistics;\n\n        _classCallCheck(this, Crop);\n\n        var _this = _possibleConstructorReturn(this, (Crop.__proto__ || Object.getPrototypeOf(Crop)).call(this, subMenuElement, {\n            locale: locale,\n            name: 'crop',\n            makeSvgIcon: makeSvgIcon,\n            menuBarPosition: menuBarPosition,\n            templateHtml: _crop2.default,\n            usageStatistics: usageStatistics\n        }));\n\n        _this.status = 'active';\n\n        _this._els = {\n            apply: _this.selector('.tie-crop-button .apply'),\n            cancel: _this.selector('.tie-crop-button .cancel'),\n            preset: _this.selector('.tie-crop-preset-button')\n        };\n\n        _this.defaultPresetButton = _this._els.preset.querySelector('.preset-none');\n        return _this;\n    }\n\n    /**\n     * Destroys the instance.\n     */\n\n\n    _createClass(Crop, [{\n        key: 'destroy',\n        value: function destroy() {\n            this._removeEvent();\n\n            (0, _util.assignmentForDestroy)(this);\n        }\n\n        /**\n         * Add event for crop\n         * @param {Object} actions - actions for crop\n         *   @param {Function} actions.crop - crop action\n         *   @param {Function} actions.cancel - cancel action\n         *   @param {Function} actions.preset - draw rectzone at a predefined ratio\n         */\n\n    }, {\n        key: 'addEvent',\n        value: function addEvent(actions) {\n            var apply = this._applyEventHandler.bind(this);\n            var cancel = this._cancelEventHandler.bind(this);\n            var cropzonePreset = this._cropzonePresetEventHandler.bind(this);\n\n            this.eventHandler = {\n                apply: apply,\n                cancel: cancel,\n                cropzonePreset: cropzonePreset\n            };\n\n            this.actions = actions;\n            this._els.apply.addEventListener('click', apply);\n            this._els.cancel.addEventListener('click', cancel);\n            this._els.preset.addEventListener('click', cropzonePreset);\n        }\n\n        /**\n         * Remove event\n         * @private\n         */\n\n    }, {\n        key: '_removeEvent',\n        value: function _removeEvent() {\n            this._els.apply.removeEventListener('click', this.eventHandler.apply);\n            this._els.cancel.removeEventListener('click', this.eventHandler.cancel);\n            this._els.preset.removeEventListener('click', this.eventHandler.cropzonePreset);\n        }\n    }, {\n        key: '_applyEventHandler',\n        value: function _applyEventHandler() {\n            this.actions.crop();\n            this._els.apply.classList.remove('active');\n        }\n    }, {\n        key: '_cancelEventHandler',\n        value: function _cancelEventHandler() {\n            this.actions.cancel();\n            this._els.apply.classList.remove('active');\n        }\n    }, {\n        key: '_cropzonePresetEventHandler',\n        value: function _cropzonePresetEventHandler(event) {\n            var button = event.target.closest('.tui-image-editor-button.preset');\n            if (button) {\n                var _button$className$mat = button.className.match(/preset-[^\\s]+/),\n                    presetType = _button$className$mat[0];\n\n                this._setPresetButtonActive(button);\n                this.actions.preset(presetType);\n            }\n        }\n\n        /**\n         * Executed when the menu starts.\n         */\n\n    }, {\n        key: 'changeStartMode',\n        value: function changeStartMode() {\n            this.actions.modeChange('crop');\n        }\n\n        /**\n         * Returns the menu to its default state.\n         */\n\n    }, {\n        key: 'changeStandbyMode',\n        value: function changeStandbyMode() {\n            this.actions.stopDrawingMode();\n            this._setPresetButtonActive();\n        }\n\n        /**\n         * Change apply button status\n         * @param {Boolean} enableStatus - apply button status\n         */\n\n    }, {\n        key: 'changeApplyButtonStatus',\n        value: function changeApplyButtonStatus(enableStatus) {\n            if (enableStatus) {\n                this._els.apply.classList.add('active');\n            } else {\n                this._els.apply.classList.remove('active');\n            }\n        }\n\n        /**\n         * Set preset button to active status\n         * @param {HTMLElement} button - event target element\n         * @private\n         */\n\n    }, {\n        key: '_setPresetButtonActive',\n        value: function _setPresetButtonActive() {\n            var button = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.defaultPresetButton;\n\n            _tuiCodeSnippet2.default.forEach([].slice.call(this._els.preset.querySelectorAll('.preset')), function (presetButton) {\n                presetButton.classList.remove('active');\n            });\n\n            if (button) {\n                button.classList.add('active');\n            }\n        }\n    }]);\n\n    return Crop;\n}(_submenuBase2.default);\n\nexports.default = Crop;\n\n//# sourceURL=webpack://tui.ImageEditor/./src/js/ui/crop.js?");
+
+/***/ }),
+
+/***/ "./src/js/ui/draw.js":
+/*!***************************!*\
+  !*** ./src/js/ui/draw.js ***!
+  \***************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _util = __webpack_require__(/*! ../util */ \"./src/js/util.js\");\n\nvar _colorpicker = __webpack_require__(/*! ./tools/colorpicker */ \"./src/js/ui/tools/colorpicker.js\");\n\nvar _colorpicker2 = _interopRequireDefault(_colorpicker);\n\nvar _range = __webpack_require__(/*! ./tools/range */ \"./src/js/ui/tools/range.js\");\n\nvar _range2 = _interopRequireDefault(_range);\n\nvar _submenuBase = __webpack_require__(/*! ./submenuBase */ \"./src/js/ui/submenuBase.js\");\n\nvar _submenuBase2 = _interopRequireDefault(_submenuBase);\n\nvar _draw = __webpack_require__(/*! ./template/submenu/draw */ \"./src/js/ui/template/submenu/draw.js\");\n\nvar _draw2 = _interopRequireDefault(_draw);\n\nvar _consts = __webpack_require__(/*! ../consts */ \"./src/js/consts.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar DRAW_OPACITY = 0.7;\n\n/**\n * Draw ui class\n * @class\n * @ignore\n */\n\nvar Draw = function (_Submenu) {\n    _inherits(Draw, _Submenu);\n\n    function Draw(subMenuElement, _ref) {\n        var locale = _ref.locale,\n            makeSvgIcon = _ref.makeSvgIcon,\n            menuBarPosition = _ref.menuBarPosition,\n            usageStatistics = _ref.usageStatistics;\n\n        _classCallCheck(this, Draw);\n\n        var _this = _possibleConstructorReturn(this, (Draw.__proto__ || Object.getPrototypeOf(Draw)).call(this, subMenuElement, {\n            locale: locale,\n            name: 'draw',\n            makeSvgIcon: makeSvgIcon,\n            menuBarPosition: menuBarPosition,\n            templateHtml: _draw2.default,\n            usageStatistics: usageStatistics\n        }));\n\n        _this._els = {\n            lineSelectButton: _this.selector('.tie-draw-line-select-button'),\n            drawColorPicker: new _colorpicker2.default(_this.selector('.tie-draw-color'), '#00a9ff', _this.toggleDirection, _this.usageStatistics),\n            drawRange: new _range2.default({\n                slider: _this.selector('.tie-draw-range'),\n                input: _this.selector('.tie-draw-range-value')\n            }, _consts.defaultDrawRangeValus)\n        };\n\n        _this.type = null;\n        _this.color = _this._els.drawColorPicker.color;\n        _this.width = _this._els.drawRange.value;\n        return _this;\n    }\n\n    /**\n     * Destroys the instance.\n     */\n\n\n    _createClass(Draw, [{\n        key: 'destroy',\n        value: function destroy() {\n            this._removeEvent();\n            this._els.drawColorPicker.destroy();\n            this._els.drawRange.destroy();\n\n            (0, _util.assignmentForDestroy)(this);\n        }\n\n        /**\n         * Add event for draw\n         * @param {Object} actions - actions for crop\n         *   @param {Function} actions.setDrawMode - set draw mode\n         */\n\n    }, {\n        key: 'addEvent',\n        value: function addEvent(actions) {\n            this.eventHandler.changeDrawType = this._changeDrawType.bind(this);\n\n            this.actions = actions;\n            this._els.lineSelectButton.addEventListener('click', this.eventHandler.changeDrawType);\n            this._els.drawColorPicker.on('change', this._changeDrawColor.bind(this));\n            this._els.drawRange.on('change', this._changeDrawRange.bind(this));\n        }\n\n        /**\n         * Remove event\n         * @private\n         */\n\n    }, {\n        key: '_removeEvent',\n        value: function _removeEvent() {\n            this._els.lineSelectButton.removeEventListener('click', this.eventHandler.changeDrawType);\n            this._els.drawColorPicker.off();\n            this._els.drawRange.off();\n        }\n\n        /**\n         * set draw mode - action runner\n         */\n\n    }, {\n        key: 'setDrawMode',\n        value: function setDrawMode() {\n            this.actions.setDrawMode(this.type, {\n                width: this.width,\n                color: (0, _util.getRgb)(this.color, DRAW_OPACITY)\n            });\n        }\n\n        /**\n         * Returns the menu to its default state.\n         */\n\n    }, {\n        key: 'changeStandbyMode',\n        value: function changeStandbyMode() {\n            this.type = null;\n            this.actions.stopDrawingMode();\n            this.actions.changeSelectableAll(true);\n            this._els.lineSelectButton.classList.remove('free');\n            this._els.lineSelectButton.classList.remove('line');\n        }\n\n        /**\n         * Executed when the menu starts.\n         */\n\n    }, {\n        key: 'changeStartMode',\n        value: function changeStartMode() {\n            this.type = 'free';\n            this._els.lineSelectButton.classList.add('free');\n            this.setDrawMode();\n        }\n\n        /**\n         * Change draw type event\n         * @param {object} event - line select event\n         * @private\n         */\n\n    }, {\n        key: '_changeDrawType',\n        value: function _changeDrawType(event) {\n            var button = event.target.closest('.tui-image-editor-button');\n            if (button) {\n                var lineType = this.getButtonType(button, ['free', 'line']);\n                this.actions.discardSelection();\n\n                if (this.type === lineType) {\n                    this.changeStandbyMode();\n\n                    return;\n                }\n\n                this.changeStandbyMode();\n                this.type = lineType;\n                this._els.lineSelectButton.classList.add(lineType);\n                this.setDrawMode();\n            }\n        }\n\n        /**\n         * Change drawing color\n         * @param {string} color - select drawing color\n         * @private\n         */\n\n    }, {\n        key: '_changeDrawColor',\n        value: function _changeDrawColor(color) {\n            this.color = color || 'transparent';\n            if (!this.type) {\n                this.changeStartMode();\n            } else {\n                this.setDrawMode();\n            }\n        }\n\n        /**\n         * Change drawing Range\n         * @param {number} value - select drawing range\n         * @private\n         */\n\n    }, {\n        key: '_changeDrawRange',\n        value: function _changeDrawRange(value) {\n            this.width = value;\n            if (!this.type) {\n                this.changeStartMode();\n            } else {\n                this.setDrawMode();\n            }\n        }\n    }]);\n\n    return Draw;\n}(_submenuBase2.default);\n\nexports.default = Draw;\n\n//# sourceURL=webpack://tui.ImageEditor/./src/js/ui/draw.js?");
+
+/***/ }),
+
+/***/ "./src/js/ui/filter.js":
+/*!*****************************!*\
+  !*** ./src/js/ui/filter.js ***!
+  \*****************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _tuiCodeSnippet = __webpack_require__(/*! tui-code-snippet */ \"tui-code-snippet\");\n\nvar _tuiCodeSnippet2 = _interopRequireDefault(_tuiCodeSnippet);\n\nvar _colorpicker = __webpack_require__(/*! ./tools/colorpicker */ \"./src/js/ui/tools/colorpicker.js\");\n\nvar _colorpicker2 = _interopRequireDefault(_colorpicker);\n\nvar _range = __webpack_require__(/*! ./tools/range */ \"./src/js/ui/tools/range.js\");\n\nvar _range2 = _interopRequireDefault(_range);\n\nvar _submenuBase = __webpack_require__(/*! ./submenuBase */ \"./src/js/ui/submenuBase.js\");\n\nvar _submenuBase2 = _interopRequireDefault(_submenuBase);\n\nvar _filter = __webpack_require__(/*! ./template/submenu/filter */ \"./src/js/ui/template/submenu/filter.js\");\n\nvar _filter2 = _interopRequireDefault(_filter);\n\nvar _util = __webpack_require__(/*! ../util */ \"./src/js/util.js\");\n\nvar _consts = __webpack_require__(/*! ../consts */ \"./src/js/consts.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar PICKER_CONTROL_HEIGHT = '130px';\nvar BLEND_OPTIONS = ['add', 'diff', 'subtract', 'multiply', 'screen', 'lighten', 'darken'];\nvar FILTER_OPTIONS = ['grayscale', 'invert', 'sepia', 'vintage', 'blur', 'sharpen', 'emboss', 'remove-white', 'brightness', 'noise', 'pixelate', 'color-filter', 'tint', 'multiply', 'blend'];\n\nvar filterNameMap = {\n    grayscale: 'grayscale',\n    invert: 'invert',\n    sepia: 'sepia',\n    blur: 'blur',\n    sharpen: 'sharpen',\n    emboss: 'emboss',\n    removeWhite: 'removeColor',\n    brightness: 'brightness',\n    contrast: 'contrast',\n    saturation: 'saturation',\n    vintage: 'vintage',\n    polaroid: 'polaroid',\n    noise: 'noise',\n    pixelate: 'pixelate',\n    colorFilter: 'removeColor',\n    tint: 'blendColor',\n    multiply: 'blendColor',\n    blend: 'blendColor',\n    hue: 'hue',\n    gamma: 'gamma'\n};\n\nvar RANGE_INSTANCE_NAMES = ['removewhiteDistanceRange', 'colorfilterThresholeRange', 'pixelateRange', 'noiseRange', 'brightnessRange', 'tintOpacity'];\nvar COLORPICKER_INSTANCE_NAMES = ['filterBlendColor', 'filterMultiplyColor', 'filterTintColor'];\n\n/**\n * Filter ui class\n * @class\n * @ignore\n */\n\nvar Filter = function (_Submenu) {\n    _inherits(Filter, _Submenu);\n\n    function Filter(subMenuElement, _ref) {\n        var locale = _ref.locale,\n            menuBarPosition = _ref.menuBarPosition,\n            usageStatistics = _ref.usageStatistics;\n\n        _classCallCheck(this, Filter);\n\n        var _this = _possibleConstructorReturn(this, (Filter.__proto__ || Object.getPrototypeOf(Filter)).call(this, subMenuElement, {\n            locale: locale,\n            name: 'filter',\n            menuBarPosition: menuBarPosition,\n            templateHtml: _filter2.default,\n            usageStatistics: usageStatistics\n        }));\n\n        _this.selectBoxShow = false;\n\n        _this.checkedMap = {};\n        _this._makeControlElement();\n        return _this;\n    }\n\n    /**\n     * Destroys the instance.\n     */\n\n\n    _createClass(Filter, [{\n        key: 'destroy',\n        value: function destroy() {\n            this._removeEvent();\n            this._destroyToolInstance();\n\n            (0, _util.assignmentForDestroy)(this);\n        }\n\n        /**\n         * Remove event for filter\n         */\n\n    }, {\n        key: '_removeEvent',\n        value: function _removeEvent() {\n            var _this2 = this;\n\n            _tuiCodeSnippet2.default.forEach(FILTER_OPTIONS, function (filter) {\n                var filterCheckElement = _this2.selector('.tie-' + filter);\n                var filterNameCamelCase = (0, _util.toCamelCase)(filter);\n\n                filterCheckElement.removeEventListener('change', _this2.eventHandler[filterNameCamelCase]);\n            });\n\n            _tuiCodeSnippet2.default.forEach([].concat(RANGE_INSTANCE_NAMES, COLORPICKER_INSTANCE_NAMES), function (instanceName) {\n                _this2._els[instanceName].off();\n            });\n\n            this._els.blendType.removeEventListener('change', this.eventHandler.changeBlendFilter);\n            this._els.blendType.removeEventListener('click', this.eventHandler.changeBlendFilter);\n        }\n    }, {\n        key: '_destroyToolInstance',\n        value: function _destroyToolInstance() {\n            var _this3 = this;\n\n            _tuiCodeSnippet2.default.forEach([].concat(RANGE_INSTANCE_NAMES, COLORPICKER_INSTANCE_NAMES), function (instanceName) {\n                _this3._els[instanceName].destroy();\n            });\n        }\n\n        /**\n         * Add event for filter\n         * @param {Object} actions - actions for crop\n         *   @param {Function} actions.applyFilter - apply filter option\n         */\n\n    }, {\n        key: 'addEvent',\n        value: function addEvent(_ref2) {\n            var _this4 = this;\n\n            var applyFilter = _ref2.applyFilter;\n\n            var changeFilterState = function changeFilterState(filterName) {\n                return _this4._changeFilterState.bind(_this4, applyFilter, filterName);\n            };\n            var changeFilterStateForRange = function changeFilterStateForRange(filterName) {\n                return function (value, isLast) {\n                    return _this4._changeFilterState(applyFilter, filterName, isLast);\n                };\n            };\n\n            this.eventHandler = {\n                changeBlendFilter: changeFilterState('blend'),\n                blandTypeClick: function blandTypeClick(event) {\n                    return event.stopPropagation();\n                }\n            };\n\n            _tuiCodeSnippet2.default.forEach(FILTER_OPTIONS, function (filter) {\n                var filterCheckElement = _this4.selector('.tie-' + filter);\n                var filterNameCamelCase = (0, _util.toCamelCase)(filter);\n                _this4.checkedMap[filterNameCamelCase] = filterCheckElement;\n                _this4.eventHandler[filterNameCamelCase] = changeFilterState(filterNameCamelCase);\n\n                filterCheckElement.addEventListener('change', _this4.eventHandler[filterNameCamelCase]);\n            });\n\n            this._els.removewhiteDistanceRange.on('change', changeFilterStateForRange('removeWhite'));\n            this._els.colorfilterThresholeRange.on('change', changeFilterStateForRange('colorFilter'));\n            this._els.pixelateRange.on('change', changeFilterStateForRange('pixelate'));\n            this._els.noiseRange.on('change', changeFilterStateForRange('noise'));\n            this._els.brightnessRange.on('change', changeFilterStateForRange('brightness'));\n\n            this._els.filterBlendColor.on('change', this.eventHandler.changeBlendFilter);\n            this._els.filterMultiplyColor.on('change', changeFilterState('multiply'));\n            this._els.filterTintColor.on('change', changeFilterState('tint'));\n            this._els.tintOpacity.on('change', changeFilterStateForRange('tint'));\n            this._els.filterMultiplyColor.on('changeShow', this.colorPickerChangeShow.bind(this));\n            this._els.filterTintColor.on('changeShow', this.colorPickerChangeShow.bind(this));\n            this._els.filterBlendColor.on('changeShow', this.colorPickerChangeShow.bind(this));\n\n            this._els.blendType.addEventListener('change', this.eventHandler.changeBlendFilter);\n            this._els.blendType.addEventListener('click', this.eventHandler.blandTypeClick);\n        }\n\n        /**\n         * Set filter for undo changed\n         * @param {Object} chagedFilterInfos - changed command infos\n         *   @param {string} type - filter type\n         *   @param {string} action - add or remove\n         *   @param {Object} options - filter options\n         */\n\n    }, {\n        key: 'setFilterState',\n        value: function setFilterState(chagedFilterInfos) {\n            var type = chagedFilterInfos.type,\n                options = chagedFilterInfos.options,\n                action = chagedFilterInfos.action;\n\n            var filterName = this._getFilterNameFromOptions(type, options);\n            var isRemove = action === 'remove';\n\n            if (!isRemove) {\n                this._setFilterState(filterName, options);\n            }\n\n            this.checkedMap[filterName].checked = !isRemove;\n        }\n\n        /**\n         * Set filter for undo changed\n         * @param {string} filterName - filter name\n         * @param {Object} options - filter options\n         * @private\n         */\n\n    }, {\n        key: '_setFilterState',\n        value: function _setFilterState(filterName, options) {\n            // eslint-disable-line\n            if (filterName === 'colorFilter') {\n                this._els.colorfilterThresholeRange.value = options.distance;\n            } else if (filterName === 'removeWhite') {\n                this._els.removewhiteDistanceRange.value = options.distance;\n            } else if (filterName === 'pixelate') {\n                this._els.pixelateRange.value = options.blocksize;\n            } else if (filterName === 'brightness') {\n                this._els.brightnessRange.value = options.brightness;\n            } else if (filterName === 'noise') {\n                this._els.noiseRange.value = options.noise;\n            } else if (filterName === 'tint') {\n                this._els.tintOpacity.value = options.alpha;\n                this._els.filterTintColor.color = options.color;\n            } else if (filterName === 'blend') {\n                this._els.filterBlendColor.color = options.color;\n            } else if (filterName === 'multiply') {\n                this._els.filterMultiplyColor.color = options.color;\n            }\n        }\n\n        /**\n         * Get filter name\n         * @param {string} type - filter type\n         * @param {Object} options - filter options\n         * @returns {string} filter name\n         * @private\n         */\n\n    }, {\n        key: '_getFilterNameFromOptions',\n        value: function _getFilterNameFromOptions(type, options) {\n            var filterName = type;\n\n            if (type === 'removeColor') {\n                filterName = _tuiCodeSnippet2.default.isExisty(options.useAlpha) ? 'removeWhite' : 'colorFilter';\n            } else if (type === 'blendColor') {\n                filterName = {\n                    add: 'blend',\n                    multiply: 'multiply',\n                    tint: 'tint'\n                }[options.mode];\n            }\n\n            return filterName;\n        }\n\n        /**\n         * Add event for filter\n         * @param {Function} applyFilter - actions for firter\n         * @param {string} filterName - filter name\n         * @param {boolean} [isLast] - Is last change\n         */\n\n    }, {\n        key: '_changeFilterState',\n        value: function _changeFilterState(applyFilter, filterName) {\n            var isLast = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n\n            var apply = this.checkedMap[filterName].checked;\n            var type = filterNameMap[filterName];\n\n            var checkboxGroup = this.checkedMap[filterName].closest('.tui-image-editor-checkbox-group');\n            if (checkboxGroup) {\n                if (apply) {\n                    checkboxGroup.classList.remove('tui-image-editor-disabled');\n                } else {\n                    checkboxGroup.classList.add('tui-image-editor-disabled');\n                }\n            }\n            applyFilter(apply, type, this._getFilterOption(filterName), !isLast);\n        }\n\n        /**\n         * Get filter option\n         * @param {String} type - filter type\n         * @returns {Object} filter option object\n         * @private\n         */\n\n    }, {\n        key: '_getFilterOption',\n        value: function _getFilterOption(type) {\n            // eslint-disable-line\n            var option = {};\n            switch (type) {\n                case 'removeWhite':\n                    option.color = '#FFFFFF';\n                    option.useAlpha = false;\n                    option.distance = parseFloat(this._els.removewhiteDistanceRange.value);\n                    break;\n                case 'colorFilter':\n                    option.color = '#FFFFFF';\n                    option.distance = parseFloat(this._els.colorfilterThresholeRange.value);\n                    break;\n                case 'pixelate':\n                    option.blocksize = (0, _util.toInteger)(this._els.pixelateRange.value);\n                    break;\n                case 'noise':\n                    option.noise = (0, _util.toInteger)(this._els.noiseRange.value);\n                    break;\n                case 'brightness':\n                    option.brightness = parseFloat(this._els.brightnessRange.value);\n                    break;\n                case 'blend':\n                    option.mode = 'add';\n                    option.color = this._els.filterBlendColor.color;\n                    option.mode = this._els.blendType.value;\n                    break;\n                case 'multiply':\n                    option.mode = 'multiply';\n                    option.color = this._els.filterMultiplyColor.color;\n                    break;\n                case 'tint':\n                    option.mode = 'tint';\n                    option.color = this._els.filterTintColor.color;\n                    option.alpha = this._els.tintOpacity.value;\n                    break;\n                case 'blur':\n                    option.blur = this._els.blurRange.value;\n                    break;\n                default:\n                    break;\n            }\n\n            return option;\n        }\n\n        /**\n         * Make submenu range and colorpicker control\n         * @private\n         */\n\n    }, {\n        key: '_makeControlElement',\n        value: function _makeControlElement() {\n            this._els = {\n                removewhiteDistanceRange: new _range2.default({ slider: this.selector('.tie-removewhite-distance-range') }, _consts.defaultFilterRangeValus.removewhiteDistanceRange),\n                brightnessRange: new _range2.default({ slider: this.selector('.tie-brightness-range') }, _consts.defaultFilterRangeValus.brightnessRange),\n                noiseRange: new _range2.default({ slider: this.selector('.tie-noise-range') }, _consts.defaultFilterRangeValus.noiseRange),\n                pixelateRange: new _range2.default({ slider: this.selector('.tie-pixelate-range') }, _consts.defaultFilterRangeValus.pixelateRange),\n                colorfilterThresholeRange: new _range2.default({ slider: this.selector('.tie-colorfilter-threshole-range') }, _consts.defaultFilterRangeValus.colorfilterThresholeRange),\n                filterTintColor: new _colorpicker2.default(this.selector('.tie-filter-tint-color'), '#03bd9e', this.toggleDirection, this.usageStatistics),\n                filterMultiplyColor: new _colorpicker2.default(this.selector('.tie-filter-multiply-color'), '#515ce6', this.toggleDirection, this.usageStatistics),\n                filterBlendColor: new _colorpicker2.default(this.selector('.tie-filter-blend-color'), '#ffbb3b', this.toggleDirection, this.usageStatistics),\n                blurRange: _consts.defaultFilterRangeValus.blurFilterRange\n            };\n\n            this._els.tintOpacity = this._pickerWithRange(this._els.filterTintColor.pickerControl);\n            this._els.blendType = this._pickerWithSelectbox(this._els.filterBlendColor.pickerControl);\n\n            this.colorPickerControls.push(this._els.filterTintColor);\n            this.colorPickerControls.push(this._els.filterMultiplyColor);\n            this.colorPickerControls.push(this._els.filterBlendColor);\n        }\n\n        /**\n         * Make submenu control for picker & range mixin\n         * @param {HTMLElement} pickerControl - pickerControl dom element\n         * @returns {Range}\n         * @private\n         */\n\n    }, {\n        key: '_pickerWithRange',\n        value: function _pickerWithRange(pickerControl) {\n            var rangeWrap = document.createElement('div');\n            var rangelabel = document.createElement('label');\n            var slider = document.createElement('div');\n\n            slider.id = 'tie-filter-tint-opacity';\n            rangelabel.innerHTML = 'Opacity';\n            rangeWrap.appendChild(rangelabel);\n            rangeWrap.appendChild(slider);\n            pickerControl.appendChild(rangeWrap);\n            pickerControl.style.height = PICKER_CONTROL_HEIGHT;\n\n            return new _range2.default({ slider: slider }, _consts.defaultFilterRangeValus.tintOpacityRange);\n        }\n\n        /**\n         * Make submenu control for picker & selectbox\n         * @param {HTMLElement} pickerControl - pickerControl dom element\n         * @returns {HTMLElement}\n         * @private\n         */\n\n    }, {\n        key: '_pickerWithSelectbox',\n        value: function _pickerWithSelectbox(pickerControl) {\n            var selectlistWrap = document.createElement('div');\n            var selectlist = document.createElement('select');\n            var optionlist = document.createElement('ul');\n\n            selectlistWrap.className = 'tui-image-editor-selectlist-wrap';\n            optionlist.className = 'tui-image-editor-selectlist';\n\n            selectlistWrap.appendChild(selectlist);\n            selectlistWrap.appendChild(optionlist);\n\n            this._makeSelectOptionList(selectlist);\n\n            pickerControl.appendChild(selectlistWrap);\n            pickerControl.style.height = PICKER_CONTROL_HEIGHT;\n\n            this._drawSelectOptionList(selectlist, optionlist);\n            this._pickerWithSelectboxForAddEvent(selectlist, optionlist);\n\n            return selectlist;\n        }\n\n        /**\n         * Make selectbox option list custom style\n         * @param {HTMLElement} selectlist - selectbox element\n         * @param {HTMLElement} optionlist - custom option list item element\n         * @private\n         */\n\n    }, {\n        key: '_drawSelectOptionList',\n        value: function _drawSelectOptionList(selectlist, optionlist) {\n            var options = selectlist.querySelectorAll('option');\n            _tuiCodeSnippet2.default.forEach(options, function (option) {\n                var optionElement = document.createElement('li');\n                optionElement.innerHTML = option.innerHTML;\n                optionElement.setAttribute('data-item', option.value);\n                optionlist.appendChild(optionElement);\n            });\n        }\n\n        /**\n         * custome selectbox custom event\n         * @param {HTMLElement} selectlist - selectbox element\n         * @param {HTMLElement} optionlist - custom option list item element\n         * @private\n         */\n\n    }, {\n        key: '_pickerWithSelectboxForAddEvent',\n        value: function _pickerWithSelectboxForAddEvent(selectlist, optionlist) {\n            var _this5 = this;\n\n            optionlist.addEventListener('click', function (event) {\n                var optionValue = event.target.getAttribute('data-item');\n                var fireEvent = document.createEvent('HTMLEvents');\n\n                selectlist.querySelector('[value=\"' + optionValue + '\"]').selected = true;\n                fireEvent.initEvent('change', true, true);\n\n                selectlist.dispatchEvent(fireEvent);\n\n                _this5.selectBoxShow = false;\n                optionlist.style.display = 'none';\n            });\n\n            selectlist.addEventListener('mousedown', function (event) {\n                event.preventDefault();\n                _this5.selectBoxShow = !_this5.selectBoxShow;\n                optionlist.style.display = _this5.selectBoxShow ? 'block' : 'none';\n                optionlist.setAttribute('data-selectitem', selectlist.value);\n                optionlist.querySelector('[data-item=\\'' + selectlist.value + '\\']').classList.add('active');\n            });\n        }\n\n        /**\n         * Make option list for select control\n         * @param {HTMLElement} selectlist - blend option select list element\n         * @private\n         */\n\n    }, {\n        key: '_makeSelectOptionList',\n        value: function _makeSelectOptionList(selectlist) {\n            _tuiCodeSnippet2.default.forEach(BLEND_OPTIONS, function (option) {\n                var selectOption = document.createElement('option');\n                selectOption.setAttribute('value', option);\n                selectOption.innerHTML = option.replace(/^[a-z]/, function ($0) {\n                    return $0.toUpperCase();\n                });\n                selectlist.appendChild(selectOption);\n            });\n        }\n    }]);\n\n    return Filter;\n}(_submenuBase2.default);\n\nexports.default = Filter;\n\n//# sourceURL=webpack://tui.ImageEditor/./src/js/ui/filter.js?");
+
+/***/ }),
+
+/***/ "./src/js/ui/flip.js":
+/*!***************************!*\
+  !*** ./src/js/ui/flip.js ***!
+  \***************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _tuiCodeSnippet = __webpack_require__(/*! tui-code-snippet */ \"tui-code-snippet\");\n\nvar _tuiCodeSnippet2 = _interopRequireDefault(_tuiCodeSnippet);\n\nvar _util = __webpack_require__(/*! ../util */ \"./src/js/util.js\");\n\nvar _submenuBase = __webpack_require__(/*! ./submenuBase */ \"./src/js/ui/submenuBase.js\");\n\nvar _submenuBase2 = _interopRequireDefault(_submenuBase);\n\nvar _flip = __webpack_require__(/*! ./template/submenu/flip */ \"./src/js/ui/template/submenu/flip.js\");\n\nvar _flip2 = _interopRequireDefault(_flip);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n/**\n * Flip ui class\n * @class\n * @ignore\n */\nvar Flip = function (_Submenu) {\n    _inherits(Flip, _Submenu);\n\n    function Flip(subMenuElement, _ref) {\n        var locale = _ref.locale,\n            makeSvgIcon = _ref.makeSvgIcon,\n            menuBarPosition = _ref.menuBarPosition,\n            usageStatistics = _ref.usageStatistics;\n\n        _classCallCheck(this, Flip);\n\n        var _this = _possibleConstructorReturn(this, (Flip.__proto__ || Object.getPrototypeOf(Flip)).call(this, subMenuElement, {\n            locale: locale,\n            name: 'flip',\n            makeSvgIcon: makeSvgIcon,\n            menuBarPosition: menuBarPosition,\n            templateHtml: _flip2.default,\n            usageStatistics: usageStatistics\n        }));\n\n        _this.flipStatus = false;\n\n        _this._els = {\n            flipButton: _this.selector('.tie-flip-button')\n        };\n        return _this;\n    }\n\n    /**\n     * Destroys the instance.\n     */\n\n\n    _createClass(Flip, [{\n        key: 'destroy',\n        value: function destroy() {\n            this._removeEvent();\n\n            (0, _util.assignmentForDestroy)(this);\n        }\n\n        /**\n         * Add event for flip\n         * @param {Object} actions - actions for flip\n         *   @param {Function} actions.flip - flip action\n         */\n\n    }, {\n        key: 'addEvent',\n        value: function addEvent(actions) {\n            this.eventHandler.changeFlip = this._changeFlip.bind(this);\n            this._actions = actions;\n            this._els.flipButton.addEventListener('click', this.eventHandler.changeFlip);\n        }\n\n        /**\n         * Remove event\n         * @private\n         */\n\n    }, {\n        key: '_removeEvent',\n        value: function _removeEvent() {\n            this._els.flipButton.removeEventListener('click', this.eventHandler.changeFlip);\n        }\n\n        /**\n         * change Flip status\n         * @param {object} event - change event\n         * @private\n         */\n\n    }, {\n        key: '_changeFlip',\n        value: function _changeFlip(event) {\n            var _this2 = this;\n\n            var button = event.target.closest('.tui-image-editor-button');\n            if (button) {\n                var flipType = this.getButtonType(button, ['flipX', 'flipY', 'resetFlip']);\n                if (!this.flipStatus && flipType === 'resetFlip') {\n                    return;\n                }\n\n                this._actions.flip(flipType).then(function (flipStatus) {\n                    var flipClassList = _this2._els.flipButton.classList;\n                    _this2.flipStatus = false;\n\n                    flipClassList.remove('resetFlip');\n                    _tuiCodeSnippet2.default.forEach(['flipX', 'flipY'], function (type) {\n                        flipClassList.remove(type);\n                        if (flipStatus[type]) {\n                            flipClassList.add(type);\n                            flipClassList.add('resetFlip');\n                            _this2.flipStatus = true;\n                        }\n                    });\n                });\n            }\n        }\n    }]);\n\n    return Flip;\n}(_submenuBase2.default);\n\nexports.default = Flip;\n\n//# sourceURL=webpack://tui.ImageEditor/./src/js/ui/flip.js?");
+
+/***/ }),
+
+/***/ "./src/js/ui/icon.js":
+/*!***************************!*\
+  !*** ./src/js/ui/icon.js ***!
+  \***************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _tuiCodeSnippet = __webpack_require__(/*! tui-code-snippet */ \"tui-code-snippet\");\n\nvar _tuiCodeSnippet2 = _interopRequireDefault(_tuiCodeSnippet);\n\nvar _colorpicker = __webpack_require__(/*! ./tools/colorpicker */ \"./src/js/ui/tools/colorpicker.js\");\n\nvar _colorpicker2 = _interopRequireDefault(_colorpicker);\n\nvar _submenuBase = __webpack_require__(/*! ./submenuBase */ \"./src/js/ui/submenuBase.js\");\n\nvar _submenuBase2 = _interopRequireDefault(_submenuBase);\n\nvar _icon = __webpack_require__(/*! ./template/submenu/icon */ \"./src/js/ui/template/submenu/icon.js\");\n\nvar _icon2 = _interopRequireDefault(_icon);\n\nvar _util = __webpack_require__(/*! ../util */ \"./src/js/util.js\");\n\nvar _consts = __webpack_require__(/*! ../consts */ \"./src/js/consts.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n/**\n * Icon ui class\n * @class\n * @ignore\n */\nvar Icon = function (_Submenu) {\n    _inherits(Icon, _Submenu);\n\n    function Icon(subMenuElement, _ref) {\n        var locale = _ref.locale,\n            makeSvgIcon = _ref.makeSvgIcon,\n            menuBarPosition = _ref.menuBarPosition,\n            usageStatistics = _ref.usageStatistics;\n\n        _classCallCheck(this, Icon);\n\n        var _this = _possibleConstructorReturn(this, (Icon.__proto__ || Object.getPrototypeOf(Icon)).call(this, subMenuElement, {\n            locale: locale,\n            name: 'icon',\n            makeSvgIcon: makeSvgIcon,\n            menuBarPosition: menuBarPosition,\n            templateHtml: _icon2.default,\n            usageStatistics: usageStatistics\n        }));\n\n        _this.iconType = null;\n        _this._iconMap = {};\n\n        _this._els = {\n            registrIconButton: _this.selector('.tie-icon-image-file'),\n            addIconButton: _this.selector('.tie-icon-add-button'),\n            iconColorpicker: new _colorpicker2.default(_this.selector('.tie-icon-color'), '#ffbb3b', _this.toggleDirection, _this.usageStatistics)\n        };\n        return _this;\n    }\n\n    /**\n     * Destroys the instance.\n     */\n\n\n    _createClass(Icon, [{\n        key: 'destroy',\n        value: function destroy() {\n            this._removeEvent();\n            this._els.iconColorpicker.destroy();\n\n            (0, _util.assignmentForDestroy)(this);\n        }\n\n        /**\n         * Add event for icon\n         * @param {Object} actions - actions for icon\n         *   @param {Function} actions.registCustomIcon - register icon\n         *   @param {Function} actions.addIcon - add icon\n         *   @param {Function} actions.changeColor - change icon color\n         */\n\n    }, {\n        key: 'addEvent',\n        value: function addEvent(actions) {\n            var registerIcon = this._registerIconHandler.bind(this);\n            var addIcon = this._addIconHandler.bind(this);\n\n            this.eventHandler = {\n                registerIcon: registerIcon,\n                addIcon: addIcon\n            };\n\n            this.actions = actions;\n            this._els.iconColorpicker.on('change', this._changeColorHandler.bind(this));\n            this._els.registrIconButton.addEventListener('change', registerIcon);\n            this._els.addIconButton.addEventListener('click', addIcon);\n        }\n\n        /**\n         * Remove event\n         * @private\n         */\n\n    }, {\n        key: '_removeEvent',\n        value: function _removeEvent() {\n            this._els.iconColorpicker.off();\n            this._els.registrIconButton.removeEventListener('change', this.eventHandler.registerIcon);\n            this._els.addIconButton.removeEventListener('click', this.eventHandler.addIcon);\n        }\n\n        /**\n         * Clear icon type\n         */\n\n    }, {\n        key: 'clearIconType',\n        value: function clearIconType() {\n            this._els.addIconButton.classList.remove(this.iconType);\n            this.iconType = null;\n        }\n\n        /**\n         * Register default icon\n         */\n\n    }, {\n        key: 'registDefaultIcon',\n        value: function registDefaultIcon() {\n            var _this2 = this;\n\n            _tuiCodeSnippet2.default.forEach(_consts.defaultIconPath, function (path, type) {\n                _this2.actions.registDefalutIcons(type, path);\n            });\n        }\n\n        /**\n         * Set icon picker color\n         * @param {string} iconColor - rgb color string\n         */\n\n    }, {\n        key: 'setIconPickerColor',\n        value: function setIconPickerColor(iconColor) {\n            this._els.iconColorpicker.color = iconColor;\n        }\n\n        /**\n         * Returns the menu to its default state.\n         */\n\n    }, {\n        key: 'changeStandbyMode',\n        value: function changeStandbyMode() {\n            this.clearIconType();\n            this.actions.cancelAddIcon();\n        }\n\n        /**\n         * Change icon color\n         * @param {string} color - color for change\n         * @private\n         */\n\n    }, {\n        key: '_changeColorHandler',\n        value: function _changeColorHandler(color) {\n            color = color || 'transparent';\n            this.actions.changeColor(color);\n        }\n\n        /**\n         * Change icon color\n         * @param {object} event - add button event object\n         * @private\n         */\n\n    }, {\n        key: '_addIconHandler',\n        value: function _addIconHandler(event) {\n            var button = event.target.closest('.tui-image-editor-button');\n\n            if (button) {\n                var iconType = button.getAttribute('data-icontype');\n                var iconColor = this._els.iconColorpicker.color;\n                this.actions.discardSelection();\n                this.actions.changeSelectableAll(false);\n                this._els.addIconButton.classList.remove(this.iconType);\n                this._els.addIconButton.classList.add(iconType);\n\n                if (this.iconType === iconType) {\n                    this.changeStandbyMode();\n                } else {\n                    this.actions.addIcon(iconType, iconColor);\n                    this.iconType = iconType;\n                }\n            }\n        }\n\n        /**\n         * register icon\n         * @param {object} event - file change event object\n         * @private\n         */\n\n    }, {\n        key: '_registerIconHandler',\n        value: function _registerIconHandler(event) {\n            var imgUrl = void 0;\n\n            if (!_util.isSupportFileApi) {\n                alert('This browser does not support file-api');\n            }\n\n            var _event$target$files = event.target.files,\n                file = _event$target$files[0];\n\n\n            if (file) {\n                imgUrl = URL.createObjectURL(file);\n                this.actions.registCustomIcon(imgUrl, file);\n            }\n        }\n    }]);\n\n    return Icon;\n}(_submenuBase2.default);\n\nexports.default = Icon;\n\n//# sourceURL=webpack://tui.ImageEditor/./src/js/ui/icon.js?");
+
+/***/ }),
+
+/***/ "./src/js/ui/locale/locale.js":
+/*!************************************!*\
+  !*** ./src/js/ui/locale/locale.js ***!
+  \************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n/**\n * Translate messages\n */\nvar Locale = function () {\n  /**\n   * @constructor\n   * @param {Object} locale - Locale object for initialise\n   */\n  function Locale(locale) {\n    _classCallCheck(this, Locale);\n\n    this._locale = locale;\n  }\n\n  /**\n   * localize message\n   * @param {string} message - message who will be localized\n   * @returns {string}\n   */\n\n\n  _createClass(Locale, [{\n    key: \"localize\",\n    value: function localize(message) {\n      return this._locale[message] || message;\n    }\n  }]);\n\n  return Locale;\n}();\n\nexports.default = Locale;\n\n//# sourceURL=webpack://tui.ImageEditor/./src/js/ui/locale/locale.js?");
+
+/***/ }),
+
+/***/ "./src/js/ui/mask.js":
+/*!***************************!*\
+  !*** ./src/js/ui/mask.js ***!
+  \***************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _submenuBase = __webpack_require__(/*! ./submenuBase */ \"./src/js/ui/submenuBase.js\");\n\nvar _submenuBase2 = _interopRequireDefault(_submenuBase);\n\nvar _util = __webpack_require__(/*! ../util */ \"./src/js/util.js\");\n\nvar _mask = __webpack_require__(/*! ./template/submenu/mask */ \"./src/js/ui/template/submenu/mask.js\");\n\nvar _mask2 = _interopRequireDefault(_mask);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n/**\n * Mask ui class\n * @class\n * @ignore\n */\nvar Mask = function (_Submenu) {\n    _inherits(Mask, _Submenu);\n\n    function Mask(subMenuElement, _ref) {\n        var locale = _ref.locale,\n            makeSvgIcon = _ref.makeSvgIcon,\n            menuBarPosition = _ref.menuBarPosition,\n            usageStatistics = _ref.usageStatistics;\n\n        _classCallCheck(this, Mask);\n\n        var _this = _possibleConstructorReturn(this, (Mask.__proto__ || Object.getPrototypeOf(Mask)).call(this, subMenuElement, {\n            locale: locale,\n            name: 'mask',\n            makeSvgIcon: makeSvgIcon,\n            menuBarPosition: menuBarPosition,\n            templateHtml: _mask2.default,\n            usageStatistics: usageStatistics\n        }));\n\n        _this._els = {\n            applyButton: _this.selector('.tie-mask-apply'),\n            maskImageButton: _this.selector('.tie-mask-image-file')\n        };\n        return _this;\n    }\n\n    /**\n     * Destroys the instance.\n     */\n\n\n    _createClass(Mask, [{\n        key: 'destroy',\n        value: function destroy() {\n            this._removeEvent();\n\n            (0, _util.assignmentForDestroy)(this);\n        }\n\n        /**\n         * Add event for mask\n         * @param {Object} actions - actions for crop\n         *   @param {Function} actions.loadImageFromURL - load image action\n         *   @param {Function} actions.applyFilter - apply filter action\n         */\n\n    }, {\n        key: 'addEvent',\n        value: function addEvent(actions) {\n            var loadMaskFile = this._loadMaskFile.bind(this);\n            var applyMask = this._applyMask.bind(this);\n\n            this.eventHandler = {\n                loadMaskFile: loadMaskFile,\n                applyMask: applyMask\n            };\n\n            this.actions = actions;\n            this._els.maskImageButton.addEventListener('change', loadMaskFile);\n            this._els.applyButton.addEventListener('click', applyMask);\n        }\n\n        /**\n         * Remove event\n         * @private\n         */\n\n    }, {\n        key: '_removeEvent',\n        value: function _removeEvent() {\n            this._els.maskImageButton.removeEventListener('change', this.eventHandler.loadMaskFile);\n            this._els.applyButton.removeEventListener('click', this.eventHandler.applyMask);\n        }\n\n        /**\n         * Apply mask\n         * @private\n         */\n\n    }, {\n        key: '_applyMask',\n        value: function _applyMask() {\n            this.actions.applyFilter();\n            this._els.applyButton.classList.remove('active');\n        }\n\n        /**\n         * Load mask file\n         * @param {object} event - File change event object\n         * @private\n         */\n\n    }, {\n        key: '_loadMaskFile',\n        value: function _loadMaskFile(event) {\n            var imgUrl = void 0;\n\n            if (!(0, _util.isSupportFileApi)()) {\n                alert('This browser does not support file-api');\n            }\n\n            var _event$target$files = event.target.files,\n                file = _event$target$files[0];\n\n\n            if (file) {\n                imgUrl = URL.createObjectURL(file);\n                this.actions.loadImageFromURL(imgUrl, file);\n                this._els.applyButton.classList.add('active');\n            }\n        }\n    }]);\n\n    return Mask;\n}(_submenuBase2.default);\n\nexports.default = Mask;\n\n//# sourceURL=webpack://tui.ImageEditor/./src/js/ui/mask.js?");
+
+/***/ }),
+
+/***/ "./src/js/ui/rotate.js":
+/*!*****************************!*\
+  !*** ./src/js/ui/rotate.js ***!
+  \*****************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _range = __webpack_require__(/*! ./tools/range */ \"./src/js/ui/tools/range.js\");\n\nvar _range2 = _interopRequireDefault(_range);\n\nvar _submenuBase = __webpack_require__(/*! ./submenuBase */ \"./src/js/ui/submenuBase.js\");\n\nvar _submenuBase2 = _interopRequireDefault(_submenuBase);\n\nvar _rotate = __webpack_require__(/*! ./template/submenu/rotate */ \"./src/js/ui/template/submenu/rotate.js\");\n\nvar _rotate2 = _interopRequireDefault(_rotate);\n\nvar _util = __webpack_require__(/*! ../util */ \"./src/js/util.js\");\n\nvar _consts = __webpack_require__(/*! ../consts */ \"./src/js/consts.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar CLOCKWISE = 30;\nvar COUNTERCLOCKWISE = -30;\n\n/**\n * Rotate ui class\n * @class\n * @ignore\n */\n\nvar Rotate = function (_Submenu) {\n    _inherits(Rotate, _Submenu);\n\n    function Rotate(subMenuElement, _ref) {\n        var locale = _ref.locale,\n            makeSvgIcon = _ref.makeSvgIcon,\n            menuBarPosition = _ref.menuBarPosition,\n            usageStatistics = _ref.usageStatistics;\n\n        _classCallCheck(this, Rotate);\n\n        var _this = _possibleConstructorReturn(this, (Rotate.__proto__ || Object.getPrototypeOf(Rotate)).call(this, subMenuElement, {\n            locale: locale,\n            name: 'rotate',\n            makeSvgIcon: makeSvgIcon,\n            menuBarPosition: menuBarPosition,\n            templateHtml: _rotate2.default,\n            usageStatistics: usageStatistics\n        }));\n\n        _this._value = 0;\n\n        _this._els = {\n            rotateButton: _this.selector('.tie-retate-button'),\n            rotateRange: new _range2.default({\n                slider: _this.selector('.tie-rotate-range'),\n                input: _this.selector('.tie-ratate-range-value')\n            }, _consts.defaultRotateRangeValus)\n        };\n        return _this;\n    }\n\n    /**\n     * Destroys the instance.\n     */\n\n\n    _createClass(Rotate, [{\n        key: 'destroy',\n        value: function destroy() {\n            this._removeEvent();\n            this._els.rotateRange.destroy();\n\n            (0, _util.assignmentForDestroy)(this);\n        }\n    }, {\n        key: 'setRangeBarAngle',\n        value: function setRangeBarAngle(type, angle) {\n            var resultAngle = angle;\n\n            if (type === 'rotate') {\n                resultAngle = parseInt(this._els.rotateRange.value, 10) + angle;\n            }\n\n            this._setRangeBarRatio(resultAngle);\n        }\n    }, {\n        key: '_setRangeBarRatio',\n        value: function _setRangeBarRatio(angle) {\n            this._els.rotateRange.value = angle;\n        }\n\n        /**\n         * Add event for rotate\n         * @param {Object} actions - actions for crop\n         *   @param {Function} actions.rotate - rotate action\n         *   @param {Function} actions.setAngle - set angle action\n         */\n\n    }, {\n        key: 'addEvent',\n        value: function addEvent(actions) {\n            this.eventHandler.rotationAngleChanged = this._changeRotateForButton.bind(this);\n\n            // {rotate, setAngle}\n            this.actions = actions;\n            this._els.rotateButton.addEventListener('click', this.eventHandler.rotationAngleChanged);\n            this._els.rotateRange.on('change', this._changeRotateForRange.bind(this));\n        }\n\n        /**\n         * Remove event\n         * @private\n         */\n\n    }, {\n        key: '_removeEvent',\n        value: function _removeEvent() {\n            this._els.rotateButton.removeEventListener('click', this.eventHandler.rotationAngleChanged);\n            this._els.rotateRange.off();\n        }\n\n        /**\n         * Change rotate for range\n         * @param {number} value - angle value\n         * @param {boolean} isLast - Is last change\n         * @private\n         */\n\n    }, {\n        key: '_changeRotateForRange',\n        value: function _changeRotateForRange(value, isLast) {\n            var angle = (0, _util.toInteger)(value);\n            this.actions.setAngle(angle, !isLast);\n            this._value = angle;\n        }\n\n        /**\n         * Change rotate for button\n         * @param {object} event - add button event object\n         * @private\n         */\n\n    }, {\n        key: '_changeRotateForButton',\n        value: function _changeRotateForButton(event) {\n            var button = event.target.closest('.tui-image-editor-button');\n            var angle = this._els.rotateRange.value;\n\n            if (button) {\n                var rotateType = this.getButtonType(button, ['counterclockwise', 'clockwise']);\n                var rotateAngle = {\n                    clockwise: CLOCKWISE,\n                    counterclockwise: COUNTERCLOCKWISE\n                }[rotateType];\n                var newAngle = parseInt(angle, 10) + rotateAngle;\n                var isRotatable = newAngle >= -360 && newAngle <= 360;\n                if (isRotatable) {\n                    this.actions.rotate(rotateAngle);\n                }\n            }\n        }\n    }]);\n\n    return Rotate;\n}(_submenuBase2.default);\n\nexports.default = Rotate;\n\n//# sourceURL=webpack://tui.ImageEditor/./src/js/ui/rotate.js?");
+
+/***/ }),
+
+/***/ "./src/js/ui/shape.js":
+/*!****************************!*\
+  !*** ./src/js/ui/shape.js ***!
+  \****************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _colorpicker = __webpack_require__(/*! ./tools/colorpicker */ \"./src/js/ui/tools/colorpicker.js\");\n\nvar _colorpicker2 = _interopRequireDefault(_colorpicker);\n\nvar _range = __webpack_require__(/*! ./tools/range */ \"./src/js/ui/tools/range.js\");\n\nvar _range2 = _interopRequireDefault(_range);\n\nvar _submenuBase = __webpack_require__(/*! ./submenuBase */ \"./src/js/ui/submenuBase.js\");\n\nvar _submenuBase2 = _interopRequireDefault(_submenuBase);\n\nvar _shape = __webpack_require__(/*! ./template/submenu/shape */ \"./src/js/ui/template/submenu/shape.js\");\n\nvar _shape2 = _interopRequireDefault(_shape);\n\nvar _util = __webpack_require__(/*! ../util */ \"./src/js/util.js\");\n\nvar _consts = __webpack_require__(/*! ../consts */ \"./src/js/consts.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar SHAPE_DEFAULT_OPTION = {\n    stroke: '#ffbb3b',\n    fill: '',\n    strokeWidth: 3\n};\n\n/**\n * Shape ui class\n * @class\n * @ignore\n */\n\nvar Shape = function (_Submenu) {\n    _inherits(Shape, _Submenu);\n\n    function Shape(subMenuElement, _ref) {\n        var locale = _ref.locale,\n            makeSvgIcon = _ref.makeSvgIcon,\n            menuBarPosition = _ref.menuBarPosition,\n            usageStatistics = _ref.usageStatistics;\n\n        _classCallCheck(this, Shape);\n\n        var _this = _possibleConstructorReturn(this, (Shape.__proto__ || Object.getPrototypeOf(Shape)).call(this, subMenuElement, {\n            locale: locale,\n            name: 'shape',\n            makeSvgIcon: makeSvgIcon,\n            menuBarPosition: menuBarPosition,\n            templateHtml: _shape2.default,\n            usageStatistics: usageStatistics\n        }));\n\n        _this.type = null;\n        _this.options = SHAPE_DEFAULT_OPTION;\n\n        _this._els = {\n            shapeSelectButton: _this.selector('.tie-shape-button'),\n            shapeColorButton: _this.selector('.tie-shape-color-button'),\n            strokeRange: new _range2.default({\n                slider: _this.selector('.tie-stroke-range'),\n                input: _this.selector('.tie-stroke-range-value')\n            }, _consts.defaultShapeStrokeValus),\n            fillColorpicker: new _colorpicker2.default(_this.selector('.tie-color-fill'), '', _this.toggleDirection, _this.usageStatistics),\n            strokeColorpicker: new _colorpicker2.default(_this.selector('.tie-color-stroke'), '#ffbb3b', _this.toggleDirection, _this.usageStatistics)\n        };\n\n        _this.colorPickerControls.push(_this._els.fillColorpicker);\n        _this.colorPickerControls.push(_this._els.strokeColorpicker);\n        return _this;\n    }\n\n    /**\n     * Destroys the instance.\n     */\n\n\n    _createClass(Shape, [{\n        key: 'destroy',\n        value: function destroy() {\n            this._removeEvent();\n            this._els.strokeRange.destroy();\n            this._els.fillColorpicker.destroy();\n            this._els.strokeColorpicker.destroy();\n\n            (0, _util.assignmentForDestroy)(this);\n        }\n\n        /**\n         * Add event for shape\n         * @param {Object} actions - actions for shape\n         *   @param {Function} actions.changeShape - change shape mode\n         *   @param {Function} actions.setDrawingShape - set dreawing shape\n         */\n\n    }, {\n        key: 'addEvent',\n        value: function addEvent(actions) {\n            this.eventHandler.shapeTypeSelected = this._changeShapeHandler.bind(this);\n            this.actions = actions;\n\n            this._els.shapeSelectButton.addEventListener('click', this.eventHandler.shapeTypeSelected);\n            this._els.strokeRange.on('change', this._changeStrokeRangeHandler.bind(this));\n            this._els.fillColorpicker.on('change', this._changeFillColorHandler.bind(this));\n            this._els.strokeColorpicker.on('change', this._changeStrokeColorHandler.bind(this));\n            this._els.fillColorpicker.on('changeShow', this.colorPickerChangeShow.bind(this));\n            this._els.strokeColorpicker.on('changeShow', this.colorPickerChangeShow.bind(this));\n        }\n\n        /**\n         * Remove event\n         * @private\n         */\n\n    }, {\n        key: '_removeEvent',\n        value: function _removeEvent() {\n            this._els.shapeSelectButton.removeEventListener('click', this.eventHandler.shapeTypeSelected);\n            this._els.strokeRange.off();\n            this._els.fillColorpicker.off();\n            this._els.strokeColorpicker.off();\n        }\n\n        /**\n         * Set Shape status\n         * @param {Object} options - options of shape status\n         *   @param {string} strokeWidth - stroke width\n         *   @param {string} strokeColor - stroke color\n         *   @param {string} fillColor - fill color\n         */\n\n    }, {\n        key: 'setShapeStatus',\n        value: function setShapeStatus(_ref2) {\n            var strokeWidth = _ref2.strokeWidth,\n                strokeColor = _ref2.strokeColor,\n                fillColor = _ref2.fillColor;\n\n            this._els.strokeRange.value = strokeWidth;\n            this._els.strokeColorpicker.color = strokeColor;\n            this._els.fillColorpicker.color = fillColor;\n            this.options.stroke = strokeColor;\n            this.options.fill = fillColor;\n            this.options.strokeWidth = strokeWidth;\n\n            this.actions.setDrawingShape(this.type, { strokeWidth: strokeWidth });\n        }\n\n        /**\n         * Executed when the menu starts.\n         */\n\n    }, {\n        key: 'changeStartMode',\n        value: function changeStartMode() {\n            this.actions.stopDrawingMode();\n        }\n\n        /**\n         * Returns the menu to its default state.\n         */\n\n    }, {\n        key: 'changeStandbyMode',\n        value: function changeStandbyMode() {\n            this.type = null;\n            this.actions.changeSelectableAll(true);\n            this._els.shapeSelectButton.classList.remove('circle');\n            this._els.shapeSelectButton.classList.remove('triangle');\n            this._els.shapeSelectButton.classList.remove('rect');\n        }\n\n        /**\n         * set range stroke max value\n         * @param {number} maxValue - expect max value for change\n         */\n\n    }, {\n        key: 'setMaxStrokeValue',\n        value: function setMaxStrokeValue(maxValue) {\n            var strokeMaxValue = maxValue;\n            if (strokeMaxValue <= 0) {\n                strokeMaxValue = _consts.defaultShapeStrokeValus.max;\n            }\n            this._els.strokeRange.max = strokeMaxValue;\n        }\n\n        /**\n         * Set stroke value\n         * @param {number} value - expect value for strokeRange change\n         */\n\n    }, {\n        key: 'setStrokeValue',\n        value: function setStrokeValue(value) {\n            this._els.strokeRange.value = value;\n            this._els.strokeRange.trigger('change');\n        }\n\n        /**\n         * Get stroke value\n         * @returns {number} - stroke range value\n         */\n\n    }, {\n        key: 'getStrokeValue',\n        value: function getStrokeValue() {\n            return this._els.strokeRange.value;\n        }\n\n        /**\n         * Change icon color\n         * @param {object} event - add button event object\n         * @private\n         */\n\n    }, {\n        key: '_changeShapeHandler',\n        value: function _changeShapeHandler(event) {\n            var button = event.target.closest('.tui-image-editor-button');\n            if (button) {\n                this.actions.stopDrawingMode();\n                this.actions.discardSelection();\n                var shapeType = this.getButtonType(button, ['circle', 'triangle', 'rect']);\n\n                if (this.type === shapeType) {\n                    this.changeStandbyMode();\n\n                    return;\n                }\n                this.changeStandbyMode();\n                this.type = shapeType;\n                event.currentTarget.classList.add(shapeType);\n                this.actions.changeSelectableAll(false);\n                this.actions.modeChange('shape');\n            }\n        }\n\n        /**\n         * Change stroke range\n         * @param {number} value - stroke range value\n         * @param {boolean} isLast - Is last change\n         * @private\n         */\n\n    }, {\n        key: '_changeStrokeRangeHandler',\n        value: function _changeStrokeRangeHandler(value, isLast) {\n            this.options.strokeWidth = (0, _util.toInteger)(value);\n            this.actions.changeShape({\n                strokeWidth: value\n            }, !isLast);\n\n            this.actions.setDrawingShape(this.type, this.options);\n        }\n\n        /**\n         * Change shape color\n         * @param {string} color - fill color\n         * @private\n         */\n\n    }, {\n        key: '_changeFillColorHandler',\n        value: function _changeFillColorHandler(color) {\n            color = color || 'transparent';\n            this.options.fill = color;\n            this.actions.changeShape({\n                fill: color\n            });\n        }\n\n        /**\n         * Change shape stroke color\n         * @param {string} color - fill color\n         * @private\n         */\n\n    }, {\n        key: '_changeStrokeColorHandler',\n        value: function _changeStrokeColorHandler(color) {\n            color = color || 'transparent';\n            this.options.stroke = color;\n            this.actions.changeShape({\n                stroke: color\n            });\n        }\n    }]);\n\n    return Shape;\n}(_submenuBase2.default);\n\nexports.default = Shape;\n\n//# sourceURL=webpack://tui.ImageEditor/./src/js/ui/shape.js?");
+
+/***/ }),
+
+/***/ "./src/js/ui/submenuBase.js":
+/*!**********************************!*\
+  !*** ./src/js/ui/submenuBase.js ***!
+  \**********************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n/**\n * Submenu Base Class\n * @class\n * @ignore\n */\nvar Submenu = function () {\n    /**\n     * @param {HTMLElement} subMenuElement - submenu dom element\n     * @param {Locale} locale - translate text\n     * @param {string} name - name of sub menu\n     * @param {Object} iconStyle - style of icon\n     * @param {string} menuBarPosition - position of menu\n     * @param {*} templateHtml - template for SubMenuElement\n     * @param {boolean} [usageStatistics=false] - template for SubMenuElement\n     */\n    function Submenu(subMenuElement, _ref) {\n        var locale = _ref.locale,\n            name = _ref.name,\n            makeSvgIcon = _ref.makeSvgIcon,\n            menuBarPosition = _ref.menuBarPosition,\n            templateHtml = _ref.templateHtml,\n            usageStatistics = _ref.usageStatistics;\n\n        _classCallCheck(this, Submenu);\n\n        this.subMenuElement = subMenuElement;\n        this.menuBarPosition = menuBarPosition;\n        this.toggleDirection = menuBarPosition === 'top' ? 'down' : 'up';\n        this.colorPickerControls = [];\n        this.usageStatistics = usageStatistics;\n        this.eventHandler = {};\n        this._makeSubMenuElement({\n            locale: locale,\n            name: name,\n            makeSvgIcon: makeSvgIcon,\n            templateHtml: templateHtml\n        });\n    }\n\n    /**\n     * editor dom ui query selector\n     * @param {string} selectName - query selector string name\n     * @returns {HTMLElement}\n     */\n\n\n    _createClass(Submenu, [{\n        key: 'selector',\n        value: function selector(selectName) {\n            return this.subMenuElement.querySelector(selectName);\n        }\n\n        /**\n         * change show state change for colorpicker instance\n         * @param {Colorpicker} occurredControl - target Colorpicker Instance\n         */\n\n    }, {\n        key: 'colorPickerChangeShow',\n        value: function colorPickerChangeShow(occurredControl) {\n            this.colorPickerControls.forEach(function (pickerControl) {\n                if (occurredControl !== pickerControl) {\n                    pickerControl.hide();\n                }\n            });\n        }\n\n        /**\n         * Get butten type\n         * @param {HTMLElement} button - event target element\n         * @param {array} buttonNames - Array of button names\n         * @returns {string} - button type\n         */\n\n    }, {\n        key: 'getButtonType',\n        value: function getButtonType(button, buttonNames) {\n            return button.className.match(RegExp('(' + buttonNames.join('|') + ')'))[0];\n        }\n\n        /**\n         * Get butten type\n         * @param {HTMLElement} target - event target element\n         * @param {string} removeClass - remove class name\n         * @param {string} addClass - add class name\n         */\n\n    }, {\n        key: 'changeClass',\n        value: function changeClass(target, removeClass, addClass) {\n            target.classList.remove(removeClass);\n            target.classList.add(addClass);\n        }\n\n        /**\n         * Interface method whose implementation is optional.\n         * Returns the menu to its default state.\n         */\n\n    }, {\n        key: 'changeStandbyMode',\n        value: function changeStandbyMode() {}\n\n        /**\n         * Interface method whose implementation is optional.\n         * Executed when the menu starts.\n         */\n\n    }, {\n        key: 'changeStartMode',\n        value: function changeStartMode() {}\n\n        /**\n         * Make submenu dom element\n         * @param {Locale} locale - translate text\n         * @param {string} name - submenu name\n         * @param {Object} iconStyle -  icon style\n         * @param {*} templateHtml - template for SubMenuElement\n         * @private\n         */\n\n    }, {\n        key: '_makeSubMenuElement',\n        value: function _makeSubMenuElement(_ref2) {\n            var locale = _ref2.locale,\n                name = _ref2.name,\n                iconStyle = _ref2.iconStyle,\n                makeSvgIcon = _ref2.makeSvgIcon,\n                templateHtml = _ref2.templateHtml;\n\n            var iconSubMenu = document.createElement('div');\n            iconSubMenu.className = 'tui-image-editor-menu-' + name;\n            iconSubMenu.innerHTML = templateHtml({\n                locale: locale,\n                iconStyle: iconStyle,\n                makeSvgIcon: makeSvgIcon\n            });\n\n            this.subMenuElement.appendChild(iconSubMenu);\n        }\n    }]);\n\n    return Submenu;\n}();\n\nexports.default = Submenu;\n\n//# sourceURL=webpack://tui.ImageEditor/./src/js/ui/submenuBase.js?");
+
+/***/ }),
+
+/***/ "./src/js/ui/template/controls.js":
+/*!****************************************!*\
+  !*** ./src/js/ui/template/controls.js ***!
+  \****************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n\nexports.default = function (_ref) {\n    var locale = _ref.locale,\n        biImage = _ref.biImage,\n        loadButtonStyle = _ref.loadButtonStyle,\n        downloadButtonStyle = _ref.downloadButtonStyle;\n    return '\\n    <div class=\"tui-image-editor-controls\">\\n        <div class=\"tui-image-editor-controls-logo\">\\n            <img src=\"' + biImage + '\" />\\n        </div>\\n        <ul class=\"tui-image-editor-menu\"></ul>\\n\\n        <div class=\"tui-image-editor-controls-buttons\">\\n            <div style=\"' + loadButtonStyle + '\">\\n                ' + locale.localize('Load') + '\\n                <input type=\"file\" class=\"tui-image-editor-load-btn\" />\\n            </div>\\n            <button class=\"tui-image-editor-download-btn\" style=\"' + downloadButtonStyle + '\">\\n                ' + locale.localize('Download') + '\\n            </button>\\n        </div>\\n    </div>\\n';\n};\n\n//# sourceURL=webpack://tui.ImageEditor/./src/js/ui/template/controls.js?");
+
+/***/ }),
+
+/***/ "./src/js/ui/template/mainContainer.js":
+/*!*********************************************!*\
+  !*** ./src/js/ui/template/mainContainer.js ***!
+  \*********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n\nexports.default = function (_ref) {\n    var locale = _ref.locale,\n        biImage = _ref.biImage,\n        commonStyle = _ref.commonStyle,\n        headerStyle = _ref.headerStyle,\n        loadButtonStyle = _ref.loadButtonStyle,\n        downloadButtonStyle = _ref.downloadButtonStyle,\n        submenuStyle = _ref.submenuStyle;\n    return '\\n    <div class=\"tui-image-editor-main-container\" style=\"' + commonStyle + '\">\\n        <div class=\"tui-image-editor-header\" style=\"' + headerStyle + '\">\\n            <div class=\"tui-image-editor-header-logo\">\\n                <img src=\"' + biImage + '\" />\\n            </div>\\n            <div class=\"tui-image-editor-header-buttons\">\\n                <div style=\"' + loadButtonStyle + '\">\\n                    ' + locale.localize('Load') + '\\n                    <input type=\"file\" class=\"tui-image-editor-load-btn\" />\\n                </div>\\n                <button class=\"tui-image-editor-download-btn\" style=\"' + downloadButtonStyle + '\">\\n                    ' + locale.localize('Download') + '\\n                </button>\\n            </div>\\n        </div>\\n        <div class=\"tui-image-editor-main\">\\n            <div class=\"tui-image-editor-submenu\">\\n                <div class=\"tui-image-editor-submenu-style\" style=\"' + submenuStyle + '\"></div>\\n            </div>\\n            <div class=\"tui-image-editor-wrap\">\\n                <div class=\"tui-image-editor-size-wrap\">\\n                    <div class=\"tui-image-editor-align-wrap\">\\n                        <div class=\"tui-image-editor\"></div>\\n                    </div>\\n                </div>\\n            </div>\\n        </div>\\n    </div>\\n';\n};\n\n//# sourceURL=webpack://tui.ImageEditor/./src/js/ui/template/mainContainer.js?");
+
+/***/ }),
+
+/***/ "./src/js/ui/template/style.js":
+/*!*************************************!*\
+  !*** ./src/js/ui/template/style.js ***!
+  \*************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n\nexports.default = function (_ref) {\n    var subMenuLabelActive = _ref.subMenuLabelActive,\n        subMenuLabelNormal = _ref.subMenuLabelNormal,\n        subMenuRangeTitle = _ref.subMenuRangeTitle,\n        submenuPartitionVertical = _ref.submenuPartitionVertical,\n        submenuPartitionHorizontal = _ref.submenuPartitionHorizontal,\n        submenuCheckbox = _ref.submenuCheckbox,\n        submenuRangePointer = _ref.submenuRangePointer,\n        submenuRangeValue = _ref.submenuRangeValue,\n        submenuColorpickerTitle = _ref.submenuColorpickerTitle,\n        submenuColorpickerButton = _ref.submenuColorpickerButton,\n        submenuRangeBar = _ref.submenuRangeBar,\n        submenuRangeSubbar = _ref.submenuRangeSubbar,\n        submenuDisabledRangePointer = _ref.submenuDisabledRangePointer,\n        submenuDisabledRangeBar = _ref.submenuDisabledRangeBar,\n        submenuDisabledRangeSubbar = _ref.submenuDisabledRangeSubbar,\n        submenuIconSize = _ref.submenuIconSize,\n        menuIconSize = _ref.menuIconSize,\n        biSize = _ref.biSize,\n        menuIconStyle = _ref.menuIconStyle,\n        submenuIconStyle = _ref.submenuIconStyle;\n    return \"\\n    .tie-icon-add-button.icon-bubble .tui-image-editor-button[data-icontype=\\\"icon-bubble\\\"] label,\\n    .tie-icon-add-button.icon-heart .tui-image-editor-button[data-icontype=\\\"icon-heart\\\"] label,\\n    .tie-icon-add-button.icon-location .tui-image-editor-button[data-icontype=\\\"icon-location\\\"] label,\\n    .tie-icon-add-button.icon-polygon .tui-image-editor-button[data-icontype=\\\"icon-polygon\\\"] label,\\n    .tie-icon-add-button.icon-star .tui-image-editor-button[data-icontype=\\\"icon-star\\\"] label,\\n    .tie-icon-add-button.icon-star-2 .tui-image-editor-button[data-icontype=\\\"icon-star-2\\\"] label,\\n    .tie-icon-add-button.icon-arrow-3 .tui-image-editor-button[data-icontype=\\\"icon-arrow-3\\\"] label,\\n    .tie-icon-add-button.icon-arrow-2 .tui-image-editor-button[data-icontype=\\\"icon-arrow-2\\\"] label,\\n    .tie-icon-add-button.icon-arrow .tui-image-editor-button[data-icontype=\\\"icon-arrow\\\"] label,\\n    .tie-icon-add-button.icon-bubble .tui-image-editor-button[data-icontype=\\\"icon-bubble\\\"] label,\\n    .tie-draw-line-select-button.line .tui-image-editor-button.line label,\\n    .tie-draw-line-select-button.free .tui-image-editor-button.free label,\\n    .tie-flip-button.flipX .tui-image-editor-button.flipX label,\\n    .tie-flip-button.flipY .tui-image-editor-button.flipY label,\\n    .tie-flip-button.resetFlip .tui-image-editor-button.resetFlip label,\\n    .tie-crop-button .tui-image-editor-button.apply.active label,\\n    .tie-crop-preset-button .tui-image-editor-button.preset.active label,\\n    .tie-shape-button.rect .tui-image-editor-button.rect label,\\n    .tie-shape-button.circle .tui-image-editor-button.circle label,\\n    .tie-shape-button.triangle .tui-image-editor-button.triangle label,\\n    .tie-text-effect-button .tui-image-editor-button.active label,\\n    .tie-text-align-button.left .tui-image-editor-button.left label,\\n    .tie-text-align-button.center .tui-image-editor-button.center label,\\n    .tie-text-align-button.right .tui-image-editor-button.right label,\\n    .tie-mask-apply.apply.active .tui-image-editor-button.apply label,\\n    .tui-image-editor-container .tui-image-editor-submenu .tui-image-editor-button:hover > label,\\n    .tui-image-editor-container .tui-image-editor-checkbox label > span {\\n        \" + subMenuLabelActive + \"\\n    }\\n    .tui-image-editor-container .tui-image-editor-submenu .tui-image-editor-button > label,\\n    .tui-image-editor-container .tui-image-editor-range-wrap.tui-image-editor-newline.short label,\\n    .tui-image-editor-container .tui-image-editor-range-wrap.tui-image-editor-newline.short label > span {\\n        \" + subMenuLabelNormal + \"\\n    }\\n    .tui-image-editor-container .tui-image-editor-range-wrap label > span {\\n        \" + subMenuRangeTitle + \"\\n    }\\n    .tui-image-editor-container .tui-image-editor-partition > div {\\n        \" + submenuPartitionVertical + \"\\n    }\\n    .tui-image-editor-container.left .tui-image-editor-submenu .tui-image-editor-partition > div,\\n    .tui-image-editor-container.right .tui-image-editor-submenu .tui-image-editor-partition > div {\\n        \" + submenuPartitionHorizontal + \"\\n    }\\n    .tui-image-editor-container .tui-image-editor-checkbox label > span:before {\\n        \" + submenuCheckbox + \"\\n    }\\n    .tui-image-editor-container .tui-image-editor-checkbox label > input:checked + span:before {\\n        border: 0;\\n    }\\n    .tui-image-editor-container .tui-image-editor-virtual-range-pointer {\\n        \" + submenuRangePointer + \"\\n    }\\n    .tui-image-editor-container .tui-image-editor-virtual-range-bar {\\n        \" + submenuRangeBar + \"\\n    }\\n    .tui-image-editor-container .tui-image-editor-virtual-range-subbar {\\n        \" + submenuRangeSubbar + \"\\n    }\\n    .tui-image-editor-container .tui-image-editor-disabled .tui-image-editor-virtual-range-pointer {\\n        \" + submenuDisabledRangePointer + \"\\n    }\\n    .tui-image-editor-container .tui-image-editor-disabled .tui-image-editor-virtual-range-subbar {\\n        \" + submenuDisabledRangeSubbar + \"\\n    }\\n    .tui-image-editor-container .tui-image-editor-disabled .tui-image-editor-virtual-range-bar {\\n        \" + submenuDisabledRangeBar + \"\\n    }\\n    .tui-image-editor-container .tui-image-editor-range-value {\\n        \" + submenuRangeValue + \"\\n    }\\n    .tui-image-editor-container .tui-image-editor-submenu .tui-image-editor-button .color-picker-value + label {\\n        \" + submenuColorpickerTitle + \"\\n    }\\n    .tui-image-editor-container .tui-image-editor-submenu .tui-image-editor-button .color-picker-value {\\n        \" + submenuColorpickerButton + \"\\n    }\\n    .tui-image-editor-container .svg_ic-menu {\\n        \" + menuIconSize + \"\\n    }\\n    .tui-image-editor-container .svg_ic-submenu {\\n        \" + submenuIconSize + \"\\n    }\\n    .tui-image-editor-container .tui-image-editor-controls-logo > img,\\n    .tui-image-editor-container .tui-image-editor-header-logo > img {\\n        \" + biSize + \"\\n    }\\n    .tui-image-editor-menu use.normal.use-default {\\n        fill-rule: evenodd;\\n        fill: \" + menuIconStyle.normal.color + \";\\n        stroke: \" + menuIconStyle.normal.color + \";\\n    }\\n    .tui-image-editor-menu use.active.use-default {\\n        fill-rule: evenodd;\\n        fill: \" + menuIconStyle.active.color + \";\\n        stroke: \" + menuIconStyle.active.color + \";\\n    }\\n    .tui-image-editor-menu use.hover.use-default {\\n        fill-rule: evenodd;\\n        fill: \" + menuIconStyle.hover.color + \";\\n        stroke: \" + menuIconStyle.hover.color + \";\\n    }\\n    .tui-image-editor-menu use.disabled.use-default {\\n        fill-rule: evenodd;\\n        fill: \" + menuIconStyle.disabled.color + \";\\n        stroke: \" + menuIconStyle.disabled.color + \";\\n    }\\n    .tui-image-editor-submenu use.normal.use-default {\\n        fill-rule: evenodd;\\n        fill: \" + submenuIconStyle.normal.color + \";\\n        stroke: \" + submenuIconStyle.normal.color + \";\\n    }\\n    .tui-image-editor-submenu use.active.use-default {\\n        fill-rule: evenodd;\\n        fill: \" + submenuIconStyle.active.color + \";\\n        stroke: \" + submenuIconStyle.active.color + \";\\n    }\\n\";\n};\n\n//# sourceURL=webpack://tui.ImageEditor/./src/js/ui/template/style.js?");
+
+/***/ }),
+
+/***/ "./src/js/ui/template/submenu/crop.js":
+/*!********************************************!*\
+  !*** ./src/js/ui/template/submenu/crop.js ***!
+  \********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n\n/**\n * @param {Object} submenuInfo - submenu info for make template\n *   @param {Locale} locale - Translate text\n *   @param {Function} makeSvgIcon - svg icon generator\n * @returns {string}\n */\nexports.default = function (_ref) {\n    var locale = _ref.locale,\n        makeSvgIcon = _ref.makeSvgIcon;\n    return '\\n    <ul class=\"tui-image-editor-submenu-item\">\\n        <li class=\"tie-crop-preset-button\">\\n            <div class=\"tui-image-editor-button preset preset-none active\">\\n                <div>\\n                    ' + makeSvgIcon(['normal', 'active'], 'shape-rectangle', true) + '\\n                </div>\\n                <label> ' + locale.localize('Custom') + ' </label>\\n            </div>\\n            <div class=\"tui-image-editor-button preset preset-square\">\\n                <div>\\n                    ' + makeSvgIcon(['normal', 'active'], 'crop', true) + '\\n                </div>\\n                <label> ' + locale.localize('Square') + ' </label>\\n            </div>\\n            <div class=\"tui-image-editor-button preset preset-3-2\">\\n                <div>\\n                    ' + makeSvgIcon(['normal', 'active'], 'crop', true) + '\\n                </div>\\n                <label> ' + locale.localize('3:2') + ' </label>\\n            </div>\\n            <div class=\"tui-image-editor-button preset preset-4-3\">\\n                <div>\\n                    ' + makeSvgIcon(['normal', 'active'], 'crop', true) + '\\n                </div>\\n                <label> ' + locale.localize('4:3') + ' </label>\\n            </div>\\n            <div class=\"tui-image-editor-button preset preset-5-4\">\\n                <div>\\n                    ' + makeSvgIcon(['normal', 'active'], 'crop', true) + '\\n                </div>\\n                <label> ' + locale.localize('5:4') + ' </label>\\n            </div>\\n            <div class=\"tui-image-editor-button preset preset-7-5\">\\n                <div>\\n                    ' + makeSvgIcon(['normal', 'active'], 'crop', true) + '\\n                </div>\\n                <label> ' + locale.localize('7:5') + ' </label>\\n            </div>\\n            <div class=\"tui-image-editor-button preset preset-16-9\">\\n                <div>\\n                    ' + makeSvgIcon(['normal', 'active'], 'crop', true) + '\\n                </div>\\n                <label> ' + locale.localize('16:9') + ' </label>\\n            </div>\\n        </li>\\n        <li class=\"tui-image-editor-partition tui-image-editor-newline\">\\n        </li>\\n        <li class=\"tui-image-editor-partition only-left-right\">\\n            <div></div>\\n        </li>\\n        <li class=\"tie-crop-button action\">\\n            <div class=\"tui-image-editor-button apply\">\\n                ' + makeSvgIcon(['normal', 'active'], 'apply') + '\\n                <label>\\n                    ' + locale.localize('Apply') + '\\n                </label>\\n            </div>\\n            <div class=\"tui-image-editor-button cancel\">\\n                ' + makeSvgIcon(['normal', 'active'], 'cancel') + '\\n                <label>\\n                    ' + locale.localize('Cancel') + '\\n                </label>\\n            </div>\\n        </li>\\n    </ul>\\n';\n};\n\n//# sourceURL=webpack://tui.ImageEditor/./src/js/ui/template/submenu/crop.js?");
+
+/***/ }),
+
+/***/ "./src/js/ui/template/submenu/draw.js":
+/*!********************************************!*\
+  !*** ./src/js/ui/template/submenu/draw.js ***!
+  \********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n\n/**\n * @param {Object} submenuInfo - submenu info for make template\n *   @param {Locale} locale - Translate text\n *   @param {Function} makeSvgIcon - svg icon generator\n * @returns {string}\n */\nexports.default = function (_ref) {\n    var locale = _ref.locale,\n        makeSvgIcon = _ref.makeSvgIcon;\n    return '\\n    <ul class=\"tui-image-editor-submenu-item\">\\n        <li class=\"tie-draw-line-select-button\">\\n            <div class=\"tui-image-editor-button free\">\\n                <div>\\n                    ' + makeSvgIcon(['normal', 'active'], 'draw-free', true) + '\\n                </div>\\n                <label>\\n                    ' + locale.localize('Free') + '\\n                </label>\\n            </div>\\n            <div class=\"tui-image-editor-button line\">\\n                <div>\\n                    ' + makeSvgIcon(['normal', 'active'], 'draw-line', true) + '\\n                </div>\\n                <label>\\n                    ' + locale.localize('Straight') + '\\n                </label>\\n            </div>\\n        </li>\\n        <li class=\"tui-image-editor-partition\">\\n            <div></div>\\n        </li>\\n        <li>\\n            <div class=\"tie-draw-color\" title=\"' + locale.localize('Color') + '\"></div>\\n        </li>\\n        <li class=\"tui-image-editor-partition only-left-right\">\\n            <div></div>\\n        </li>\\n        <li class=\"tui-image-editor-newline tui-image-editor-range-wrap\">\\n            <label class=\"range\">' + locale.localize('Range') + '</label>\\n            <div class=\"tie-draw-range\"></div>\\n            <input class=\"tie-draw-range-value tui-image-editor-range-value\" value=\"0\" />\\n        </li>\\n    </ul>\\n';\n};\n\n//# sourceURL=webpack://tui.ImageEditor/./src/js/ui/template/submenu/draw.js?");
+
+/***/ }),
+
+/***/ "./src/js/ui/template/submenu/filter.js":
+/*!**********************************************!*\
+  !*** ./src/js/ui/template/submenu/filter.js ***!
+  \**********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n\n/**\n * @param {Locale} locale - Translate text\n * @returns {string}\n */\nexports.default = function (_ref) {\n    var locale = _ref.locale;\n    return '\\n    <ul class=\"tui-image-editor-submenu-item\">\\n        <li class=\"tui-image-editor-submenu-align\">\\n            <div class=\"tui-image-editor-checkbox-wrap fixed-width\">\\n                <div class=\"tui-image-editor-checkbox\">\\n                    <label>\\n                        <input type=\"checkbox\" class=\"tie-grayscale\">\\n                        <span>' + locale.localize('Grayscale') + '</span>\\n                    </label>\\n                </div>\\n                <div class=\"tui-image-editor-checkbox\">\\n                    <label>\\n                        <input type=\"checkbox\" class=\"tie-invert\">\\n                        <span>' + locale.localize('Invert') + '</span>\\n                    </label>\\n                </div>\\n                <div class=\"tui-image-editor-checkbox\">\\n                    <label>\\n                        <input type=\"checkbox\" class=\"tie-sepia\">\\n                        <span>' + locale.localize('Sepia') + '</span>\\n                    </label>\\n                </div>\\n                <div class=\"tui-image-editor-checkbox\">\\n                    <label>\\n                        <input type=\"checkbox\" class=\"tie-vintage\">\\n                        <span>' + locale.localize('Sepia2') + '</span>\\n                    </label>\\n                </div>\\n                <div class=\"tui-image-editor-checkbox\">\\n                    <label>\\n                        <input type=\"checkbox\" class=\"tie-blur\">\\n                        <span>' + locale.localize('Blur') + '</span>\\n                    </label>\\n                </div>\\n                <div class=\"tui-image-editor-checkbox\">\\n                    <label>\\n                        <input type=\"checkbox\" class=\"tie-sharpen\">\\n                        <span>' + locale.localize('Sharpen') + '</span>\\n                    </label>\\n                </div>\\n                <div class=\"tui-image-editor-checkbox\">\\n                    <label>\\n                        <input type=\"checkbox\" class=\"tie-emboss\">\\n                        <span>' + locale.localize('Emboss') + '</span>\\n                    </label>\\n                </div>\\n            </div>\\n        </li>\\n        <li class=\"tui-image-editor-partition\">\\n            <div></div>\\n        </li>\\n        <li class=\"tui-image-editor-submenu-align\">\\n            <div class=\"tui-image-editor-checkbox-group tui-image-editor-disabled\" style=\"margin-bottom: 7px;\">\\n                <div class=\"tui-image-editor-checkbox-wrap\">\\n                    <div class=\"tui-image-editor-checkbox\">\\n                        <label>\\n                            <input type=\"checkbox\" class=\"tie-remove-white\">\\n                            <span>' + locale.localize('Remove White') + '</span>\\n                        </label>\\n                    </div>\\n                </div>\\n                <div class=\"tui-image-editor-newline tui-image-editor-range-wrap short\">\\n                    <label>' + locale.localize('Distance') + '</label>\\n                    <div class=\"tie-removewhite-distance-range\"></div>\\n                </div>\\n            </div>\\n            <div class=\"tui-image-editor-checkbox-group tui-image-editor-disabled\">\\n                <div class=\"tui-image-editor-checkbox\">\\n                    <label>\\n                        <input type=\"checkbox\" class=\"tie-brightness\">\\n                        <span>' + locale.localize('Brightness') + '</span>\\n                    </label>\\n                </div>\\n                <div class=\"tui-image-editor-range-wrap short\">\\n                    <div class=\"tie-brightness-range\"></div>\\n                </div>\\n            </div>\\n            <div class=\"tui-image-editor-checkbox-group tui-image-editor-disabled\">\\n                <div class=\"tui-image-editor-checkbox\">\\n                    <label>\\n                        <input type=\"checkbox\" class=\"tie-noise\">\\n                        <span>' + locale.localize('Noise') + '</span>\\n                    </label>\\n                </div>\\n                <div class=\"tui-image-editor-range-wrap short\">\\n                    <div class=\"tie-noise-range\"></div>\\n                </div>\\n            </div>\\n        </li>\\n        <li class=\"tui-image-editor-partition only-left-right\">\\n            <div></div>\\n        </li>\\n        <li class=\"tui-image-editor-submenu-align\">\\n            <div class=\"tui-image-editor-checkbox-group tui-image-editor-disabled\">\\n                <div class=\"tui-image-editor-checkbox\">\\n                    <label>\\n                        <input type=\"checkbox\" class=\"tie-pixelate\">\\n                        <span>' + locale.localize('Pixelate') + '</span>\\n                    </label>\\n                </div>\\n                <div class=\"tui-image-editor-range-wrap short\">\\n                    <div class=\"tie-pixelate-range\"></div>\\n                </div>\\n            </div>\\n            <div class=\"tui-image-editor-checkbox-group tui-image-editor-disabled\">\\n                <div class=\"tui-image-editor-newline tui-image-editor-checkbox-wrap\">\\n                    <div class=\"tui-image-editor-checkbox\">\\n                        <label>\\n                            <input type=\"checkbox\" class=\"tie-color-filter\">\\n                            <span>' + locale.localize('Color Filter') + '</span>\\n                        </label>\\n                    </div>\\n                </div>\\n                <div class=\"tui-image-editor-newline tui-image-editor-range-wrap short\">\\n                    <label>' + locale.localize('Threshold') + '</label>\\n                    <div class=\"tie-colorfilter-threshole-range\"></div>\\n                </div>\\n            </div>\\n        </li>\\n        <li class=\"tui-image-editor-partition\">\\n            <div></div>\\n        </li>\\n        <li>\\n            <div class=\"filter-color-item\">\\n                <div class=\"tie-filter-tint-color\" title=\"' + locale.localize('Tint') + '\"></div>\\n                <div class=\"tui-image-editor-checkbox\">\\n                    <label>\\n                        <input type=\"checkbox\" class=\"tie-tint\">\\n                        <span></span>\\n                    </label>\\n                </div>\\n            </div>\\n            <div class=\"filter-color-item\">\\n                <div class=\"tie-filter-multiply-color\" title=\"' + locale.localize('Multiply') + '\"></div>\\n                <div class=\"tui-image-editor-checkbox\">\\n                    <label>\\n                        <input type=\"checkbox\" class=\"tie-multiply\">\\n                        <span></span>\\n                    </label>\\n                </div>\\n            </div>\\n            <div class=\"filter-color-item\">\\n                <div class=\"tie-filter-blend-color\" title=\"' + locale.localize('Blend') + '\"></div>\\n                <div class=\"tui-image-editor-checkbox\">\\n                    <label>\\n                        <input type=\"checkbox\" class=\"tie-blend\">\\n                        <span></span>\\n                    </label>\\n                </div>\\n            </div>\\n        </li>\\n    </ul>\\n';\n};\n\n//# sourceURL=webpack://tui.ImageEditor/./src/js/ui/template/submenu/filter.js?");
+
+/***/ }),
+
+/***/ "./src/js/ui/template/submenu/flip.js":
+/*!********************************************!*\
+  !*** ./src/js/ui/template/submenu/flip.js ***!
+  \********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n\n/**\n * @param {Object} submenuInfo - submenu info for make template\n *   @param {Locale} locale - Translate text\n *   @param {Function} makeSvgIcon - svg icon generator\n * @returns {string}\n */\nexports.default = function (_ref) {\n    var locale = _ref.locale,\n        makeSvgIcon = _ref.makeSvgIcon;\n    return '\\n    <ul class=\"tie-flip-button tui-image-editor-submenu-item\">\\n        <li>\\n            <div class=\"tui-image-editor-button flipX\">\\n                <div>\\n                    ' + makeSvgIcon(['normal', 'active'], 'flip-x', true) + '\\n                </div>\\n                <label>\\n                    ' + locale.localize('Flip X') + '\\n                </label>\\n            </div>\\n            <div class=\"tui-image-editor-button flipY\">\\n                <div>\\n                    ' + makeSvgIcon(['normal', 'active'], 'flip-y', true) + '\\n                </div>\\n                <label>\\n                    ' + locale.localize('Flip Y') + '\\n                </label>\\n            </div>\\n        </li>\\n        <li class=\"tui-image-editor-partition\">\\n            <div></div>\\n        </li>\\n        <li>\\n            <div class=\"tui-image-editor-button resetFlip\">\\n                <div>\\n                    ' + makeSvgIcon(['normal', 'active'], 'flip-reset', true) + '\\n                </div>\\n                <label>\\n                    ' + locale.localize('Reset') + '\\n                </label>\\n            </div>\\n        </li>\\n    </ul>\\n';\n};\n\n//# sourceURL=webpack://tui.ImageEditor/./src/js/ui/template/submenu/flip.js?");
+
+/***/ }),
+
+/***/ "./src/js/ui/template/submenu/icon.js":
+/*!********************************************!*\
+  !*** ./src/js/ui/template/submenu/icon.js ***!
+  \********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n\n/**\n * @param {Object} submenuInfo - submenu info for make template\n *   @param {Locale} locale - Translate text\n *   @param {Function} makeSvgIcon - svg icon generator\n * @returns {string}\n */\nexports.default = function (_ref) {\n    var locale = _ref.locale,\n        makeSvgIcon = _ref.makeSvgIcon;\n    return '\\n    <ul class=\"tui-image-editor-submenu-item\">\\n        <li class=\"tie-icon-add-button\">\\n            <div class=\"tui-image-editor-button\" data-icontype=\"icon-arrow\">\\n                <div>\\n                    ' + makeSvgIcon(['normal', 'active'], 'icon-arrow', true) + '\\n                </div>\\n                <label>\\n                    ' + locale.localize('Arrow') + '\\n                </label>\\n            </div>\\n            <div class=\"tui-image-editor-button\" data-icontype=\"icon-arrow-2\">\\n                <div>\\n                    ' + makeSvgIcon(['normal', 'active'], 'icon-arrow-2', true) + '\\n                </div>\\n                <label>\\n                    ' + locale.localize('Arrow-2') + '\\n                </label>\\n            </div>\\n            <div class=\"tui-image-editor-button\" data-icontype=\"icon-arrow-3\">\\n                <div>\\n                    ' + makeSvgIcon(['normal', 'active'], 'icon-arrow-3', true) + '\\n                </div>\\n                <label>\\n                    ' + locale.localize('Arrow-3') + '\\n                </label>\\n            </div>\\n            <div class=\"tui-image-editor-button\" data-icontype=\"icon-star\">\\n                <div>\\n                    ' + makeSvgIcon(['normal', 'active'], 'icon-star', true) + '\\n                </div>\\n                <label>\\n                    ' + locale.localize('Star-1') + '\\n                </label>\\n            </div>\\n            <div class=\"tui-image-editor-button\" data-icontype=\"icon-star-2\">\\n                <div>\\n                    ' + makeSvgIcon(['normal', 'active'], 'icon-star-2', true) + '\\n                </div>\\n                <label>\\n                    ' + locale.localize('Star-2') + '\\n                </label>\\n            </div>\\n\\n            <div class=\"tui-image-editor-button\" data-icontype=\"icon-polygon\">\\n                <div>\\n                    ' + makeSvgIcon(['normal', 'active'], 'icon-polygon', true) + '\\n                </div>\\n                <label>\\n                    ' + locale.localize('Polygon') + '\\n                </label>\\n            </div>\\n\\n            <div class=\"tui-image-editor-button\" data-icontype=\"icon-location\">\\n                <div>\\n                    ' + makeSvgIcon(['normal', 'active'], 'icon-location', true) + '\\n                </div>\\n                <label>\\n                    ' + locale.localize('Location') + '\\n                </label>\\n            </div>\\n\\n            <div class=\"tui-image-editor-button\" data-icontype=\"icon-heart\">\\n                <div>\\n                    ' + makeSvgIcon(['normal', 'active'], 'icon-heart', true) + '\\n                </div>\\n                <label>\\n                    ' + locale.localize('Heart') + '\\n                </label>\\n            </div>\\n\\n            <div class=\"tui-image-editor-button\" data-icontype=\"icon-bubble\">\\n                <div>\\n                    ' + makeSvgIcon(['normal', 'active'], 'icon-bubble', true) + '\\n                </div>\\n                <label>\\n                    ' + locale.localize('Bubble') + '\\n                </label>\\n            </div>\\n        </li>\\n        <li class=\"tui-image-editor-partition\">\\n            <div></div>\\n        </li>\\n        <li class=\"tie-icon-add-button\">\\n            <div class=\"tui-image-editor-button\" style=\"margin:0\">\\n                <div>\\n                    <input type=\"file\" accept=\"image/*\" class=\"tie-icon-image-file\">\\n                    ' + makeSvgIcon(['normal', 'active'], 'icon-load', true) + '\\n                </div>\\n                <label>\\n                    ' + locale.localize('Custom icon') + '\\n                </label>\\n            </div>\\n        </li>\\n        <li class=\"tui-image-editor-partition\">\\n            <div></div>\\n        </li>\\n        <li>\\n            <div class=\"tie-icon-color\" title=\"' + locale.localize('Color') + '\"></div>\\n        </li>\\n    </ul>\\n';\n};\n\n//# sourceURL=webpack://tui.ImageEditor/./src/js/ui/template/submenu/icon.js?");
+
+/***/ }),
+
+/***/ "./src/js/ui/template/submenu/mask.js":
+/*!********************************************!*\
+  !*** ./src/js/ui/template/submenu/mask.js ***!
+  \********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n\n/**\n * @param {Object} submenuInfo - submenu info for make template\n *   @param {Locale} locale - Translate text\n *   @param {Function} makeSvgIcon - svg icon generator\n * @returns {string}\n */\nexports.default = function (_ref) {\n    var locale = _ref.locale,\n        makeSvgIcon = _ref.makeSvgIcon;\n    return '\\n    <ul class=\"tui-image-editor-submenu-item\">\\n        <li>\\n            <div class=\"tui-image-editor-button\">\\n                <div>\\n                    <input type=\"file\" accept=\"image/*\" class=\"tie-mask-image-file\">\\n                    ' + makeSvgIcon(['normal', 'active'], 'mask-load', true) + '\\n                </div>\\n                <label> ' + locale.localize('Load Mask Image') + ' </label>\\n            </div>\\n        </li>\\n        <li class=\"tui-image-editor-partition only-left-right\">\\n            <div></div>\\n        </li>\\n        <li class=\"tie-mask-apply tui-image-editor-newline apply\" style=\"margin-top: 22px;margin-bottom: 5px\">\\n            <div class=\"tui-image-editor-button apply\">\\n                ' + makeSvgIcon(['normal', 'active'], 'apply') + '\\n                <label>\\n                    ' + locale.localize('Apply') + '\\n                </label>\\n            </div>\\n        </li>\\n    </ul>\\n';\n};\n\n//# sourceURL=webpack://tui.ImageEditor/./src/js/ui/template/submenu/mask.js?");
+
+/***/ }),
+
+/***/ "./src/js/ui/template/submenu/rotate.js":
+/*!**********************************************!*\
+  !*** ./src/js/ui/template/submenu/rotate.js ***!
+  \**********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n\n/**\n * @param {Object} submenuInfo - submenu info for make template\n *   @param {Locale} locale - Translate text\n *   @param {Function} makeSvgIcon - svg icon generator\n * @returns {string}\n */\nexports.default = function (_ref) {\n    var locale = _ref.locale,\n        makeSvgIcon = _ref.makeSvgIcon;\n    return '\\n    <ul class=\"tui-image-editor-submenu-item\">\\n        <li class=\"tie-retate-button\">\\n            <div class=\"tui-image-editor-button clockwise\">\\n                <div>\\n                    ' + makeSvgIcon(['normal', 'active'], 'rotate-clockwise', true) + '\\n                </div>\\n                <label> 30 </label>\\n            </div>\\n            <div class=\"tui-image-editor-button counterclockwise\">\\n                <div>\\n                    ' + makeSvgIcon(['normal', 'active'], 'rotate-counterclockwise', true) + '\\n                </div>\\n                <label> -30 </label>\\n            </div>\\n        </li>\\n        <li class=\"tui-image-editor-partition only-left-right\">\\n            <div></div>\\n        </li>\\n        <li class=\"tui-image-editor-newline tui-image-editor-range-wrap\">\\n            <label class=\"range\">' + locale.localize('Range') + '</label>\\n            <div class=\"tie-rotate-range\"></div>\\n            <input class=\"tie-ratate-range-value tui-image-editor-range-value\" value=\"0\" />\\n        </li>\\n    </ul>\\n';\n};\n\n//# sourceURL=webpack://tui.ImageEditor/./src/js/ui/template/submenu/rotate.js?");
+
+/***/ }),
+
+/***/ "./src/js/ui/template/submenu/shape.js":
+/*!*********************************************!*\
+  !*** ./src/js/ui/template/submenu/shape.js ***!
+  \*********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n\n/**\n * @param {Object} submenuInfo - submenu info for make template\n *   @param {Locale} locale - Translate text\n *   @param {Function} makeSvgIcon - svg icon generator\n * @returns {string}\n */\nexports.default = function (_ref) {\n    var locale = _ref.locale,\n        makeSvgIcon = _ref.makeSvgIcon;\n    return '\\n    <ul class=\"tui-image-editor-submenu-item\">\\n        <li class=\"tie-shape-button\">\\n            <div class=\"tui-image-editor-button rect\">\\n                <div>\\n                    ' + makeSvgIcon(['normal', 'active'], 'shape-rectangle', true) + '\\n                </div>\\n                <label> ' + locale.localize('Rectangle') + ' </label>\\n            </div>\\n            <div class=\"tui-image-editor-button circle\">\\n                <div>\\n                    ' + makeSvgIcon(['normal', 'active'], 'shape-circle', true) + '\\n                </div>\\n                <label> ' + locale.localize('Circle') + ' </label>\\n            </div>\\n            <div class=\"tui-image-editor-button triangle\">\\n                <div>\\n                    ' + makeSvgIcon(['normal', 'active'], 'shape-triangle', true) + '\\n                </div>\\n                <label> ' + locale.localize('Triangle') + ' </label>\\n            </div>\\n        </li>\\n        <li class=\"tui-image-editor-partition\">\\n            <div></div>\\n        </li>\\n        <li class=\"tie-shape-color-button\">\\n            <div class=\"tie-color-fill\" title=\"' + locale.localize('Fill') + '\"></div>\\n            <div class=\"tie-color-stroke\" title=\"' + locale.localize('Stroke') + '\"></div>\\n        </li>\\n        <li class=\"tui-image-editor-partition only-left-right\">\\n            <div></div>\\n        </li>\\n        <li class=\"tui-image-editor-newline tui-image-editor-range-wrap\">\\n            <label class=\"range\">' + locale.localize('Stroke') + '</label>\\n            <div class=\"tie-stroke-range\"></div>\\n            <input class=\"tie-stroke-range-value tui-image-editor-range-value\" value=\"0\" />\\n        </li>\\n    </ul>\\n';\n};\n\n//# sourceURL=webpack://tui.ImageEditor/./src/js/ui/template/submenu/shape.js?");
+
+/***/ }),
+
+/***/ "./src/js/ui/template/submenu/text.js":
+/*!********************************************!*\
+  !*** ./src/js/ui/template/submenu/text.js ***!
+  \********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n\n/**\n * @param {Object} submenuInfo - submenu info for make template\n *   @param {Locale} locale - Translate text\n *   @param {Function} makeSvgIcon - svg icon generator\n * @returns {string}\n */\nexports.default = function (_ref) {\n    var locale = _ref.locale,\n        makeSvgIcon = _ref.makeSvgIcon;\n    return '\\n    <ul class=\"tui-image-editor-submenu-item\">\\n        <li class=\"tie-text-effect-button\">\\n            <div class=\"tui-image-editor-button bold\">\\n                <div>\\n                    ' + makeSvgIcon(['normal', 'active'], 'text-bold', true) + '\\n                </div>\\n                <label> ' + locale.localize('Bold') + ' </label>\\n            </div>\\n            <div class=\"tui-image-editor-button italic\">\\n                <div>\\n                    ' + makeSvgIcon(['normal', 'active'], 'text-italic', true) + '\\n                </div>\\n                <label> ' + locale.localize('Italic') + ' </label>\\n            </div>\\n            <div class=\"tui-image-editor-button underline\">\\n                <div>\\n                    ' + makeSvgIcon(['normal', 'active'], 'text-underline', true) + '\\n                </div>\\n                <label> ' + locale.localize('Underline') + ' </label>\\n            </div>\\n        </li>\\n        <li class=\"tui-image-editor-partition\">\\n            <div></div>\\n        </li>\\n        <li class=\"tie-text-align-button\">\\n            <div class=\"tui-image-editor-button left\">\\n                <div>\\n                    ' + makeSvgIcon(['normal', 'active'], 'text-align-left', true) + '\\n                </div>\\n                <label> ' + locale.localize('Left') + ' </label>\\n            </div>\\n            <div class=\"tui-image-editor-button center\">\\n                <div>\\n                    ' + makeSvgIcon(['normal', 'active'], 'text-align-center', true) + '\\n                </div>\\n                <label> ' + locale.localize('Center') + ' </label>\\n            </div>\\n            <div class=\"tui-image-editor-button right\">\\n                <div>\\n                    ' + makeSvgIcon(['normal', 'active'], 'text-align-right', true) + '\\n                </div>\\n                <label> ' + locale.localize('Right') + ' </label>\\n            </div>\\n        </li>\\n        <li class=\"tui-image-editor-partition\">\\n            <div></div>\\n        </li>\\n        <li>\\n            <div class=\"tie-text-color\" title=\"' + locale.localize('Color') + '\"></div>\\n        </li>\\n        <li class=\"tui-image-editor-partition only-left-right\">\\n            <div></div>\\n        </li>\\n        <li class=\"tui-image-editor-newline tui-image-editor-range-wrap\">\\n            <label class=\"range\">' + locale.localize('Text size') + '</label>\\n            <div class=\"tie-text-range\"></div>\\n            <input class=\"tie-text-range-value tui-image-editor-range-value\" value=\"0\" />\\n        </li>\\n    </ul>\\n';\n};\n\n//# sourceURL=webpack://tui.ImageEditor/./src/js/ui/template/submenu/text.js?");
+
+/***/ }),
+
+/***/ "./src/js/ui/text.js":
+/*!***************************!*\
+  !*** ./src/js/ui/text.js ***!
+  \***************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _util = __webpack_require__(/*! ../util */ \"./src/js/util.js\");\n\nvar _range = __webpack_require__(/*! ./tools/range */ \"./src/js/ui/tools/range.js\");\n\nvar _range2 = _interopRequireDefault(_range);\n\nvar _colorpicker = __webpack_require__(/*! ./tools/colorpicker */ \"./src/js/ui/tools/colorpicker.js\");\n\nvar _colorpicker2 = _interopRequireDefault(_colorpicker);\n\nvar _submenuBase = __webpack_require__(/*! ./submenuBase */ \"./src/js/ui/submenuBase.js\");\n\nvar _submenuBase2 = _interopRequireDefault(_submenuBase);\n\nvar _text = __webpack_require__(/*! ./template/submenu/text */ \"./src/js/ui/template/submenu/text.js\");\n\nvar _text2 = _interopRequireDefault(_text);\n\nvar _consts = __webpack_require__(/*! ../consts */ \"./src/js/consts.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n/**\n * Crop ui class\n * @class\n * @ignore\n */\nvar Text = function (_Submenu) {\n    _inherits(Text, _Submenu);\n\n    function Text(subMenuElement, _ref) {\n        var locale = _ref.locale,\n            makeSvgIcon = _ref.makeSvgIcon,\n            menuBarPosition = _ref.menuBarPosition,\n            usageStatistics = _ref.usageStatistics;\n\n        _classCallCheck(this, Text);\n\n        var _this = _possibleConstructorReturn(this, (Text.__proto__ || Object.getPrototypeOf(Text)).call(this, subMenuElement, {\n            locale: locale,\n            name: 'text',\n            makeSvgIcon: makeSvgIcon,\n            menuBarPosition: menuBarPosition,\n            templateHtml: _text2.default,\n            usageStatistics: usageStatistics\n        }));\n\n        _this.effect = {\n            bold: false,\n            italic: false,\n            underline: false\n        };\n        _this.align = 'left';\n        _this._els = {\n            textEffectButton: _this.selector('.tie-text-effect-button'),\n            textAlignButton: _this.selector('.tie-text-align-button'),\n            textColorpicker: new _colorpicker2.default(_this.selector('.tie-text-color'), '#ffbb3b', _this.toggleDirection, _this.usageStatistics),\n            textRange: new _range2.default({\n                slider: _this.selector('.tie-text-range'),\n                input: _this.selector('.tie-text-range-value')\n            }, _consts.defaultTextRangeValus)\n        };\n        return _this;\n    }\n\n    /**\n     * Destroys the instance.\n     */\n\n\n    _createClass(Text, [{\n        key: 'destroy',\n        value: function destroy() {\n            this._removeEvent();\n            this._els.textColorpicker.destroy();\n            this._els.textRange.destroy();\n\n            (0, _util.assignmentForDestroy)(this);\n        }\n\n        /**\n         * Add event for text\n         * @param {Object} actions - actions for text\n         *   @param {Function} actions.changeTextStyle - change text style\n         */\n\n    }, {\n        key: 'addEvent',\n        value: function addEvent(actions) {\n            var setTextEffect = this._setTextEffectHandler.bind(this);\n            var setTextAlign = this._setTextAlignHandler.bind(this);\n\n            this.eventHandler = {\n                setTextEffect: setTextEffect,\n                setTextAlign: setTextAlign\n            };\n\n            this.actions = actions;\n            this._els.textEffectButton.addEventListener('click', setTextEffect);\n            this._els.textAlignButton.addEventListener('click', setTextAlign);\n            this._els.textRange.on('change', this._changeTextRnageHandler.bind(this));\n            this._els.textColorpicker.on('change', this._changeColorHandler.bind(this));\n        }\n\n        /**\n         * Remove event\n         * @private\n         */\n\n    }, {\n        key: '_removeEvent',\n        value: function _removeEvent() {\n            var _eventHandler = this.eventHandler,\n                setTextEffect = _eventHandler.setTextEffect,\n                setTextAlign = _eventHandler.setTextAlign;\n\n\n            this._els.textEffectButton.removeEventListener('click', setTextEffect);\n            this._els.textAlignButton.removeEventListener('click', setTextAlign);\n            this._els.textRange.off();\n            this._els.textColorpicker.off();\n        }\n\n        /**\n         * Returns the menu to its default state.\n         */\n\n    }, {\n        key: 'changeStandbyMode',\n        value: function changeStandbyMode() {\n            this.actions.stopDrawingMode();\n        }\n\n        /**\n         * Executed when the menu starts.\n         */\n\n    }, {\n        key: 'changeStartMode',\n        value: function changeStartMode() {\n            this.actions.modeChange('text');\n        }\n    }, {\n        key: 'setTextStyleStateOnAction',\n        value: function setTextStyleStateOnAction() {\n            var textStyle = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n            var fill = textStyle.fill,\n                fontSize = textStyle.fontSize,\n                fontStyle = textStyle.fontStyle,\n                fontWeight = textStyle.fontWeight,\n                textDecoration = textStyle.textDecoration,\n                textAlign = textStyle.textAlign;\n\n\n            this.textColor = fill;\n            this.fontSize = fontSize;\n            this.setEffactState('italic', fontStyle);\n            this.setEffactState('bold', fontWeight);\n            this.setEffactState('underline', textDecoration);\n            this.setAlignState(textAlign);\n        }\n    }, {\n        key: 'setEffactState',\n        value: function setEffactState(effactName, value) {\n            var effactValue = value === 'italic' || value === 'bold' || value === 'underline';\n            var button = this._els.textEffectButton.querySelector('.tui-image-editor-button.' + effactName);\n\n            this.effect[effactName] = effactValue;\n\n            button.classList[effactValue ? 'add' : 'remove']('active');\n        }\n    }, {\n        key: 'setAlignState',\n        value: function setAlignState(value) {\n            var button = this._els.textAlignButton;\n            button.classList.remove(this.align);\n            button.classList.add(value);\n            this.align = value;\n        }\n\n        /**\n         * text effect set handler\n         * @param {object} event - add button event object\n         * @private\n         */\n\n    }, {\n        key: '_setTextEffectHandler',\n        value: function _setTextEffectHandler(event) {\n            var button = event.target.closest('.tui-image-editor-button');\n\n            var _button$className$mat = button.className.match(/(bold|italic|underline)/),\n                styleType = _button$className$mat[0];\n\n            var styleObj = {\n                'bold': { fontWeight: 'bold' },\n                'italic': { fontStyle: 'italic' },\n                'underline': { textDecoration: 'underline' }\n            }[styleType];\n\n            this.effect[styleType] = !this.effect[styleType];\n            button.classList.toggle('active');\n            this.actions.changeTextStyle(styleObj);\n        }\n\n        /**\n         * text effect set handler\n         * @param {object} event - add button event object\n         * @private\n         */\n\n    }, {\n        key: '_setTextAlignHandler',\n        value: function _setTextAlignHandler(event) {\n            var button = event.target.closest('.tui-image-editor-button');\n            if (button) {\n                var styleType = this.getButtonType(button, ['left', 'center', 'right']);\n\n                event.currentTarget.classList.remove(this.align);\n                if (this.align !== styleType) {\n                    event.currentTarget.classList.add(styleType);\n                }\n                this.actions.changeTextStyle({ textAlign: styleType });\n\n                this.align = styleType;\n            }\n        }\n\n        /**\n         * text align set handler\n         * @param {number} value - range value\n         * @param {boolean} isLast - Is last change\n         * @private\n         */\n\n    }, {\n        key: '_changeTextRnageHandler',\n        value: function _changeTextRnageHandler(value, isLast) {\n            this.actions.changeTextStyle({\n                fontSize: value\n            }, !isLast);\n        }\n\n        /**\n         * change color handler\n         * @param {string} color - change color string\n         * @private\n         */\n\n    }, {\n        key: '_changeColorHandler',\n        value: function _changeColorHandler(color) {\n            color = color || 'transparent';\n            this.actions.changeTextStyle({\n                'fill': color\n            });\n        }\n    }, {\n        key: 'textColor',\n        set: function set(color) {\n            this._els.textColorpicker.color = color;\n        }\n\n        /**\n         * Get text color\n         * @returns {string} - text color\n         */\n        ,\n        get: function get() {\n            return this._els.textColorpicker.color;\n        }\n\n        /**\n         * Get text size\n         * @returns {string} - text size\n         */\n\n    }, {\n        key: 'fontSize',\n        get: function get() {\n            return this._els.textRange.value;\n        }\n\n        /**\n         * Set text size\n         * @param {Number} value - text size\n         */\n        ,\n        set: function set(value) {\n            this._els.textRange.value = value;\n        }\n\n        /**\n         * get font style\n         * @returns {string} - font style\n         */\n\n    }, {\n        key: 'fontStyle',\n        get: function get() {\n            return this.effect.italic ? 'italic' : 'normal';\n        }\n\n        /**\n         * get font weight\n         * @returns {string} - font weight\n         */\n\n    }, {\n        key: 'fontWeight',\n        get: function get() {\n            return this.effect.bold ? 'bold' : 'normal';\n        }\n\n        /**\n         * get text underline text underline\n         * @returns {boolean} - true or false\n         */\n\n    }, {\n        key: 'underline',\n        get: function get() {\n            return this.effect.underline;\n        }\n    }]);\n\n    return Text;\n}(_submenuBase2.default);\n\nexports.default = Text;\n\n//# sourceURL=webpack://tui.ImageEditor/./src/js/ui/text.js?");
+
+/***/ }),
+
+/***/ "./src/js/ui/theme/standard.js":
+/*!*************************************!*\
+  !*** ./src/js/ui/theme/standard.js ***!
+  \*************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n/**\n * @fileoverview The standard theme\n * @author NHN Ent. FE Development Team <dl_javascript@nhn.com>\n */\n\n/**\n * Full configuration for theme.<br>\n * @typedef {object} themeConfig\n * @property {string} common.bi.image - Brand icon image\n * @property {string} common.bisize.width - Icon image width\n * @property {string} common.bisize.height - Icon Image Height\n * @property {string} common.backgroundImage - Background image\n * @property {string} common.backgroundColor - Background color\n * @property {string} common.border - Full area border style\n * @property {string} header.backgroundImage - header area background\n * @property {string} header.backgroundColor - header area background color\n * @property {string} header.border - header area border style\n * @property {string} loadButton.backgroundColor - load button background color\n * @property {string} loadButton.border - load button border style\n * @property {string} loadButton.color - load button foreground color\n * @property {string} loadButton.fontFamily - load button font type\n * @property {string} loadButton.fontSize - load button font size\n * @property {string} downloadButton.backgroundColor - download button background color\n * @property {string} downloadButton.border - download button border style\n * @property {string} downloadButton.color - download button foreground color\n * @property {string} downloadButton.fontFamily - download button font type\n * @property {string} downloadButton.fontSize - download button font size\n * @property {string} menu.normalIcon.color - Menu normal color for default icon\n * @property {string} menu.normalIcon.path - Menu normal icon svg bundle file path\n * @property {string} menu.normalIcon.name - Menu normal icon svg bundle name\n * @property {string} menu.activeIcon.color - Menu active color for default icon\n * @property {string} menu.activeIcon.path - Menu active icon svg bundle file path\n * @property {string} menu.activeIcon.name - Menu active icon svg bundle name\n * @property {string} menu.disabled.color - Menu disabled color for default icon\n * @property {string} menu.disabled.path - Menu disabled icon svg bundle file path\n * @property {string} menu.disabled.name - Menu disabled icon svg bundle name\n * @property {string} menu.hover.color - Menu default icon hover color\n * @property {string} menu.hover.path - Menu hover icon svg bundle file path\n * @property {string} menu.hover.name - Menu hover icon svg bundle name\n * @property {string} menu.iconSize.width - Menu icon Size Width\n * @property {string} menu.iconSize.height - Menu Icon Size Height\n * @property {string} submenu.backgroundColor - Sub-menu area background color\n * @property {string} submenu.partition.color - Submenu partition line color\n * @property {string} submenu.normalIcon.color - Submenu normal color for default icon\n * @property {string} submenu.normalIcon.path - Submenu default icon svg bundle file path\n * @property {string} submenu.normalIcon.name - Submenu default icon svg bundle name\n * @property {string} submenu.activeIcon.color - Submenu active color for default icon\n * @property {string} submenu.activeIcon.path - Submenu active icon svg bundle file path\n * @property {string} submenu.activeIcon.name - Submenu active icon svg bundle name\n * @property {string} submenu.iconSize.width - Submenu icon Size Width\n * @property {string} submenu.iconSize.height - Submenu Icon Size Height\n * @property {string} submenu.normalLabel.color - Submenu default label color\n * @property {string} submenu.normalLabel.fontWeight - Sub Menu Default Label Font Thickness\n * @property {string} submenu.activeLabel.color - Submenu active label color\n * @property {string} submenu.activeLabel.fontWeight - Submenu active label Font thickness\n * @property {string} checkbox.border - Checkbox border style\n * @property {string} checkbox.backgroundColor - Checkbox background color\n * @property {string} range.pointer.color - range control pointer color\n * @property {string} range.bar.color - range control bar color\n * @property {string} range.subbar.color - range control subbar color\n * @property {string} range.value.color - range number box font color\n * @property {string} range.value.fontWeight - range number box font thickness\n * @property {string} range.value.fontSize - range number box font size\n * @property {string} range.value.border - range number box border style\n * @property {string} range.value.backgroundColor - range number box background color\n * @property {string} range.title.color - range title font color\n * @property {string} range.title.fontWeight - range title font weight\n * @property {string} colorpicker.button.border - colorpicker button border style\n * @property {string} colorpicker.title.color - colorpicker button title font color\n * @example\n // default keys and styles\n var customTheme = {\n    'common.bi.image': 'https://uicdn.toast.com/toastui/img/tui-image-editor-bi.png',\n    'common.bisize.width': '251px',\n    'common.bisize.height': '21px',\n    'common.backgroundImage': 'none',\n    'common.backgroundColor': '#1e1e1e',\n    'common.border': '0px',\n\n    // header\n    'header.backgroundImage': 'none',\n    'header.backgroundColor': 'transparent',\n    'header.border': '0px',\n\n    // load button\n    'loadButton.backgroundColor': '#fff',\n    'loadButton.border': '1px solid #ddd',\n    'loadButton.color': '#222',\n    'loadButton.fontFamily': 'NotoSans, sans-serif',\n    'loadButton.fontSize': '12px',\n\n    // download button\n    'downloadButton.backgroundColor': '#fdba3b',\n    'downloadButton.border': '1px solid #fdba3b',\n    'downloadButton.color': '#fff',\n    'downloadButton.fontFamily': 'NotoSans, sans-serif',\n    'downloadButton.fontSize': '12px',\n\n    // icons default\n    'menu.normalIcon.color': '#8a8a8a',\n    'menu.activeIcon.color': '#555555',\n    'menu.disabledIcon.color': '#434343',\n    'menu.hoverIcon.color': '#e9e9e9',\n    'submenu.normalIcon.color': '#8a8a8a',\n    'submenu.activeIcon.color': '#e9e9e9',\n\n    'menu.iconSize.width': '24px',\n    'menu.iconSize.height': '24px',\n    'submenu.iconSize.width': '32px',\n    'submenu.iconSize.height': '32px',\n\n    // submenu primary color\n    'submenu.backgroundColor': '#1e1e1e',\n    'submenu.partition.color': '#858585',\n\n    // submenu labels\n    'submenu.normalLabel.color': '#858585',\n    'submenu.normalLabel.fontWeight': 'lighter',\n    'submenu.activeLabel.color': '#fff',\n    'submenu.activeLabel.fontWeight': 'lighter',\n\n    // checkbox style\n    'checkbox.border': '1px solid #ccc',\n    'checkbox.backgroundColor': '#fff',\n\n    // rango style\n    'range.pointer.color': '#fff',\n    'range.bar.color': '#666',\n    'range.subbar.color': '#d1d1d1',\n\n    'range.disabledPointer.color': '#414141',\n    'range.disabledBar.color': '#282828',\n    'range.disabledSubbar.color': '#414141',\n\n    'range.value.color': '#fff',\n    'range.value.fontWeight': 'lighter',\n    'range.value.fontSize': '11px',\n    'range.value.border': '1px solid #353535',\n    'range.value.backgroundColor': '#151515',\n    'range.title.color': '#fff',\n    'range.title.fontWeight': 'lighter',\n\n    // colorpicker style\n    'colorpicker.button.border': '1px solid #1e1e1e',\n    'colorpicker.title.color': '#fff'\n};\n */\nexports.default = {\n  'common.bi.image': 'https://uicdn.toast.com/toastui/img/tui-image-editor-bi.png',\n  'common.bisize.width': '251px',\n  'common.bisize.height': '21px',\n  'common.backgroundImage': 'none',\n  'common.backgroundColor': '#1e1e1e',\n  'common.border': '0px',\n\n  // header\n  'header.backgroundImage': 'none',\n  'header.backgroundColor': 'transparent',\n  'header.border': '0px',\n\n  // load button\n  'loadButton.backgroundColor': '#fff',\n  'loadButton.border': '1px solid #ddd',\n  'loadButton.color': '#222',\n  'loadButton.fontFamily': '\\'Noto Sans\\', sans-serif',\n  'loadButton.fontSize': '12px',\n\n  // download button\n  'downloadButton.backgroundColor': '#fdba3b',\n  'downloadButton.border': '1px solid #fdba3b',\n  'downloadButton.color': '#fff',\n  'downloadButton.fontFamily': '\\'Noto Sans\\', sans-serif',\n  'downloadButton.fontSize': '12px',\n\n  // main icons\n  'menu.normalIcon.color': '#8a8a8a',\n  'menu.activeIcon.color': '#555555',\n  'menu.disabledIcon.color': '#434343',\n  'menu.hoverIcon.color': '#e9e9e9',\n\n  // submenu icons\n  'submenu.normalIcon.color': '#8a8a8a',\n  'submenu.activeIcon.color': '#e9e9e9',\n\n  'menu.iconSize.width': '24px',\n  'menu.iconSize.height': '24px',\n\n  'submenu.iconSize.width': '32px',\n  'submenu.iconSize.height': '32px',\n\n  // submenu primary color\n  'submenu.backgroundColor': '#1e1e1e',\n  'submenu.partition.color': '#3c3c3c',\n\n  // submenu labels\n  'submenu.normalLabel.color': '#8a8a8a',\n  'submenu.normalLabel.fontWeight': 'lighter',\n  'submenu.activeLabel.color': '#fff',\n  'submenu.activeLabel.fontWeight': 'lighter',\n\n  // checkbox style\n  'checkbox.border': '0px',\n  'checkbox.backgroundColor': '#fff',\n\n  // range style\n  'range.pointer.color': '#fff',\n  'range.bar.color': '#666',\n  'range.subbar.color': '#d1d1d1',\n\n  'range.disabledPointer.color': '#414141',\n  'range.disabledBar.color': '#282828',\n  'range.disabledSubbar.color': '#414141',\n\n  'range.value.color': '#fff',\n  'range.value.fontWeight': 'lighter',\n  'range.value.fontSize': '11px',\n  'range.value.border': '1px solid #353535',\n  'range.value.backgroundColor': '#151515',\n  'range.title.color': '#fff',\n  'range.title.fontWeight': 'lighter',\n\n  // colorpicker style\n  'colorpicker.button.border': '1px solid #1e1e1e',\n  'colorpicker.title.color': '#fff'\n};\n\n//# sourceURL=webpack://tui.ImageEditor/./src/js/ui/theme/standard.js?");
+
+/***/ }),
+
+/***/ "./src/js/ui/theme/theme.js":
+/*!**********************************!*\
+  !*** ./src/js/ui/theme/theme.js ***!
+  \**********************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _tuiCodeSnippet = __webpack_require__(/*! tui-code-snippet */ \"tui-code-snippet\");\n\nvar _util = __webpack_require__(/*! ../../util */ \"./src/js/util.js\");\n\nvar _style = __webpack_require__(/*! ../template/style */ \"./src/js/ui/template/style.js\");\n\nvar _style2 = _interopRequireDefault(_style);\n\nvar _standard = __webpack_require__(/*! ./standard */ \"./src/js/ui/theme/standard.js\");\n\nvar _standard2 = _interopRequireDefault(_standard);\n\nvar _default = __webpack_require__(/*! ../../../svg/default.svg */ \"./src/svg/default.svg\");\n\nvar _default2 = _interopRequireDefault(_default);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n/**\n * Theme manager\n * @class\n * @param {Object} customTheme - custom theme\n * @ignore\n */\nvar Theme = function () {\n    function Theme(customTheme) {\n        _classCallCheck(this, Theme);\n\n        this.styles = this._changeToObject((0, _tuiCodeSnippet.extend)({}, _standard2.default, customTheme));\n        (0, _util.styleLoad)(this._styleMaker());\n\n        this._loadDefaultSvgIcon();\n    }\n\n    /**\n     * Get a Style cssText or StyleObject\n     * @param {string} type - style type\n     * @returns {string|object} - cssText or StyleObject\n     */\n\n\n    _createClass(Theme, [{\n        key: 'getStyle',\n        value: function getStyle(type) {\n            // eslint-disable-line\n            var result = null;\n            var firstProperty = type.replace(/\\..+$/, '');\n            var option = this.styles[type];\n            switch (type) {\n                case 'common.bi':\n                    result = this.styles[type].image;\n                    break;\n                case 'menu.icon':\n                    result = {\n                        active: this.styles[firstProperty + '.activeIcon'],\n                        normal: this.styles[firstProperty + '.normalIcon'],\n                        hover: this.styles[firstProperty + '.hoverIcon'],\n                        disabled: this.styles[firstProperty + '.disabledIcon']\n                    };\n                    break;\n                case 'submenu.icon':\n                    result = {\n                        active: this.styles[firstProperty + '.activeIcon'],\n                        normal: this.styles[firstProperty + '.normalIcon']\n                    };\n                    break;\n                case 'submenu.label':\n                    result = {\n                        active: this._makeCssText(this.styles[firstProperty + '.activeLabel']),\n                        normal: this._makeCssText(this.styles[firstProperty + '.normalLabel'])\n                    };\n                    break;\n                case 'submenu.partition':\n                    result = {\n                        vertical: this._makeCssText((0, _tuiCodeSnippet.extend)({}, option, { borderLeft: '1px solid ' + option.color })),\n                        horizontal: this._makeCssText((0, _tuiCodeSnippet.extend)({}, option, { borderBottom: '1px solid ' + option.color }))\n                    };\n                    break;\n\n                case 'range.disabledPointer':\n                case 'range.disabledBar':\n                case 'range.disabledSubbar':\n                case 'range.pointer':\n                case 'range.bar':\n                case 'range.subbar':\n                    option.backgroundColor = option.color;\n                    result = this._makeCssText(option);\n                    break;\n                default:\n                    result = this._makeCssText(option);\n                    break;\n            }\n\n            return result;\n        }\n\n        /**\n         * Make css resource\n         * @returns {string} - serialized css text\n         * @private\n         */\n\n    }, {\n        key: '_styleMaker',\n        value: function _styleMaker() {\n            var submenuLabelStyle = this.getStyle('submenu.label');\n            var submenuPartitionStyle = this.getStyle('submenu.partition');\n\n            return (0, _style2.default)({\n                subMenuLabelActive: submenuLabelStyle.active,\n                subMenuLabelNormal: submenuLabelStyle.normal,\n                submenuPartitionVertical: submenuPartitionStyle.vertical,\n                submenuPartitionHorizontal: submenuPartitionStyle.horizontal,\n                biSize: this.getStyle('common.bisize'),\n                subMenuRangeTitle: this.getStyle('range.title'),\n                submenuRangePointer: this.getStyle('range.pointer'),\n                submenuRangeBar: this.getStyle('range.bar'),\n                submenuRangeSubbar: this.getStyle('range.subbar'),\n\n                submenuDisabledRangePointer: this.getStyle('range.disabledPointer'),\n                submenuDisabledRangeBar: this.getStyle('range.disabledBar'),\n                submenuDisabledRangeSubbar: this.getStyle('range.disabledSubbar'),\n\n                submenuRangeValue: this.getStyle('range.value'),\n                submenuColorpickerTitle: this.getStyle('colorpicker.title'),\n                submenuColorpickerButton: this.getStyle('colorpicker.button'),\n                submenuCheckbox: this.getStyle('checkbox'),\n                menuIconSize: this.getStyle('menu.iconSize'),\n                submenuIconSize: this.getStyle('submenu.iconSize'),\n                menuIconStyle: this.getStyle('menu.icon'),\n                submenuIconStyle: this.getStyle('submenu.icon')\n            });\n        }\n\n        /**\n         * Change to low dimensional object.\n         * @param {object} styleOptions - style object of user interface\n         * @returns {object} low level object for style apply\n         * @private\n         */\n\n    }, {\n        key: '_changeToObject',\n        value: function _changeToObject(styleOptions) {\n            var styleObject = {};\n            (0, _tuiCodeSnippet.forEach)(styleOptions, function (value, key) {\n                var keyExplode = key.match(/^(.+)\\.([a-z]+)$/i);\n                var property = keyExplode[1],\n                    subProperty = keyExplode[2];\n\n\n                if (!styleObject[property]) {\n                    styleObject[property] = {};\n                }\n                styleObject[property][subProperty] = value;\n            });\n\n            return styleObject;\n        }\n\n        /**\n         * Style object to Csstext serialize\n         * @param {object} styleObject - style object\n         * @returns {string} - css text string\n         * @private\n         */\n\n    }, {\n        key: '_makeCssText',\n        value: function _makeCssText(styleObject) {\n            var _this = this;\n\n            var converterStack = [];\n\n            (0, _tuiCodeSnippet.forEach)(styleObject, function (value, key) {\n                if (['backgroundImage'].indexOf(key) > -1 && value !== 'none') {\n                    value = 'url(' + value + ')';\n                }\n\n                converterStack.push(_this._toUnderScore(key) + ': ' + value);\n            });\n\n            return converterStack.join(';');\n        }\n\n        /**\n         * Camel key string to Underscore string\n         * @param {string} targetString - change target\n         * @returns {string}\n         * @private\n         */\n\n    }, {\n        key: '_toUnderScore',\n        value: function _toUnderScore(targetString) {\n            return targetString.replace(/([A-Z])/g, function ($0, $1) {\n                return '-' + $1.toLowerCase();\n            });\n        }\n\n        /**\n         * Load defulat svg icon \n         * @private\n         */\n\n    }, {\n        key: '_loadDefaultSvgIcon',\n        value: function _loadDefaultSvgIcon() {\n            if (!document.getElementById('tui-image-editor-svg-default-icons')) {\n                var parser = new DOMParser();\n                var dom = parser.parseFromString(_default2.default, 'text/xml');\n\n                document.body.appendChild(dom.documentElement);\n            }\n        }\n\n        /**\n         * Make className for svg icon\n         * @param {string} iconType - normal' or 'active' or 'hover' or 'disabled\n         * @param {boolean} isSubmenu - submenu icon or not.\n         * @returns {string}\n         * @private\n         */\n\n    }, {\n        key: '_makeIconClassName',\n        value: function _makeIconClassName(iconType, isSubmenu) {\n            var iconStyleInfo = isSubmenu ? this.getStyle('submenu.icon') : this.getStyle('menu.icon');\n            var _iconStyleInfo$iconTy = iconStyleInfo[iconType],\n                path = _iconStyleInfo$iconTy.path,\n                name = _iconStyleInfo$iconTy.name;\n\n\n            return path && name ? iconType : iconType + ' use-default';\n        }\n\n        /**\n         * Make svg use link path name\n         * @param {string} iconType - normal' or 'active' or 'hover' or 'disabled\n         * @param {boolean} isSubmenu - submenu icon or not.\n         * @returns {string}\n         * @private\n         */\n\n    }, {\n        key: '_makeSvgIconPrefix',\n        value: function _makeSvgIconPrefix(iconType, isSubmenu) {\n            var iconStyleInfo = isSubmenu ? this.getStyle('submenu.icon') : this.getStyle('menu.icon');\n            var _iconStyleInfo$iconTy2 = iconStyleInfo[iconType],\n                path = _iconStyleInfo$iconTy2.path,\n                name = _iconStyleInfo$iconTy2.name;\n\n\n            return path && name ? path + '#' + name + '-' : '#';\n        }\n\n        /**\n         * Make svg use link path name\n         * @param {Array.<string>} useIconTypes - normal' or 'active' or 'hover' or 'disabled\n         * @param {string} menuName - menu name\n         * @param {boolean} isSubmenu - submenu icon or not.\n         * @returns {string}\n         * @private\n         */\n\n    }, {\n        key: '_makeSvgItem',\n        value: function _makeSvgItem(useIconTypes, menuName, isSubmenu) {\n            var _this2 = this;\n\n            return (0, _tuiCodeSnippet.map)(useIconTypes, function (iconType) {\n                var svgIconPrefix = _this2._makeSvgIconPrefix(iconType, isSubmenu);\n                var iconName = _this2._toUnderScore(menuName);\n                var svgIconClassName = _this2._makeIconClassName(iconType, isSubmenu);\n\n                return '<use xlink:href=\"' + svgIconPrefix + 'ic-' + iconName + '\" class=\"' + svgIconClassName + '\"/>';\n            }).join('');\n        }\n\n        /**\n         * Make svg icon set\n         * @param {Array.<string>} useIconTypes - normal' or 'active' or 'hover' or 'disabled\n         * @param {string} menuName - menu name\n         * @param {boolean} isSubmenu - submenu icon or not.\n         * @returns {string}\n         */\n\n    }, {\n        key: 'makeMenSvgIconSet',\n        value: function makeMenSvgIconSet(useIconTypes, menuName) {\n            var isSubmenu = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n            return '<svg class=\"svg_ic-' + (isSubmenu ? 'submenu' : 'menu') + '\">' + this._makeSvgItem(useIconTypes, menuName, isSubmenu) + '</svg>';\n        }\n    }]);\n\n    return Theme;\n}();\n\nexports.default = Theme;\n\n//# sourceURL=webpack://tui.ImageEditor/./src/js/ui/theme/theme.js?");
+
+/***/ }),
+
+/***/ "./src/js/ui/tools/colorpicker.js":
+/*!****************************************!*\
+  !*** ./src/js/ui/tools/colorpicker.js ***!
+  \****************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _tuiCodeSnippet = __webpack_require__(/*! tui-code-snippet */ \"tui-code-snippet\");\n\nvar _tuiCodeSnippet2 = _interopRequireDefault(_tuiCodeSnippet);\n\nvar _tuiColorPicker = __webpack_require__(/*! tui-color-picker */ \"tui-color-picker\");\n\nvar _tuiColorPicker2 = _interopRequireDefault(_tuiColorPicker);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar PICKER_COLOR = ['#000000', '#2a2a2a', '#545454', '#7e7e7e', '#a8a8a8', '#d2d2d2', '#ffffff', '', '#ff4040', '#ff6518', '#ffbb3b', '#03bd9e', '#00a9ff', '#515ce6', '#9e5fff', '#ff5583'];\n\n/**\n * Colorpicker control class\n * @class\n * @ignore\n */\n\nvar Colorpicker = function () {\n    function Colorpicker(colorpickerElement) {\n        var defaultColor = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '#7e7e7e';\n        var toggleDirection = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'up';\n        var usageStatistics = arguments[3];\n\n        _classCallCheck(this, Colorpicker);\n\n        this.colorpickerElement = colorpickerElement;\n        this.usageStatistics = usageStatistics;\n\n        this._show = false;\n\n        this._colorpickerElement = colorpickerElement;\n        this._toggleDirection = toggleDirection;\n        this._makePickerButtonElement(defaultColor);\n        this._makePickerLayerElement(colorpickerElement, colorpickerElement.getAttribute('title'));\n        this._color = defaultColor;\n        this.picker = _tuiColorPicker2.default.create({\n            container: this.pickerElement,\n            preset: PICKER_COLOR,\n            color: defaultColor,\n            usageStatistics: this.usageStatistics\n        });\n\n        this._addEvent();\n    }\n\n    /**\n     * Destroys the instance.\n     */\n\n\n    _createClass(Colorpicker, [{\n        key: 'destroy',\n        value: function destroy() {\n            var _this = this;\n\n            this._removeEvent();\n            this.picker.destroy();\n            this.colorpickerElement.innerHTML = '';\n            _tuiCodeSnippet2.default.forEach(this, function (value, key) {\n                _this[key] = null;\n            });\n        }\n\n        /**\n         * Get color\n         * @returns {Number} color value\n         */\n\n    }, {\n        key: '_changeColorElement',\n\n\n        /**\n         * Change color element\n         * @param {string} color color value\n         * #private\n         */\n        value: function _changeColorElement(color) {\n            if (color) {\n                this.colorElement.classList.remove('transparent');\n                this.colorElement.style.backgroundColor = color;\n            } else {\n                this.colorElement.style.backgroundColor = '#fff';\n                this.colorElement.classList.add('transparent');\n            }\n        }\n\n        /**\n         * Make picker button element\n         * @param {string} defaultColor color value\n         * @private\n         */\n\n    }, {\n        key: '_makePickerButtonElement',\n        value: function _makePickerButtonElement(defaultColor) {\n            this.colorpickerElement.classList.add('tui-image-editor-button');\n\n            this.colorElement = document.createElement('div');\n            this.colorElement.className = 'color-picker-value';\n            if (defaultColor) {\n                this.colorElement.style.backgroundColor = defaultColor;\n            } else {\n                this.colorElement.classList.add('transparent');\n            }\n        }\n\n        /**\n         * Make picker layer element\n         * @param {HTMLElement} colorpickerElement color picker element\n         * @param {string} title picker title\n         * @private\n         */\n\n    }, {\n        key: '_makePickerLayerElement',\n        value: function _makePickerLayerElement(colorpickerElement, title) {\n            var label = document.createElement('label');\n            var triangle = document.createElement('div');\n\n            this.pickerControl = document.createElement('div');\n            this.pickerControl.className = 'color-picker-control';\n\n            this.pickerElement = document.createElement('div');\n            this.pickerElement.className = 'color-picker';\n\n            label.innerHTML = title;\n            triangle.className = 'triangle';\n\n            this.pickerControl.appendChild(this.pickerElement);\n            this.pickerControl.appendChild(triangle);\n\n            colorpickerElement.appendChild(this.pickerControl);\n            colorpickerElement.appendChild(this.colorElement);\n            colorpickerElement.appendChild(label);\n        }\n\n        /**\n         * Add event\n         * @private\n         */\n\n    }, {\n        key: '_addEvent',\n        value: function _addEvent() {\n            var _this2 = this;\n\n            this.picker.on('selectColor', function (value) {\n                _this2._changeColorElement(value.color);\n                _this2._color = value.color;\n                _this2.fire('change', value.color);\n            });\n\n            this.eventHandler = {\n                pickerToggle: this._pickerToggleEventHandler.bind(this),\n                pickerHide: function pickerHide() {\n                    return _this2.hide();\n                }\n            };\n\n            this.colorpickerElement.addEventListener('click', this.eventHandler.pickerToggle);\n            document.body.addEventListener('click', this.eventHandler.pickerHide);\n        }\n\n        /**\n         * Remove event\n         * @private\n         */\n\n    }, {\n        key: '_removeEvent',\n        value: function _removeEvent() {\n            this.colorpickerElement.removeEventListener('click', this.eventHandler.pickerToggle);\n            document.body.removeEventListener('click', this.eventHandler.pickerHide);\n            this.picker.off();\n        }\n\n        /**\n         * Picker toggle event handler\n         * @param {object} event - change event\n         * @private\n         */\n\n    }, {\n        key: '_pickerToggleEventHandler',\n        value: function _pickerToggleEventHandler(event) {\n            var target = event.target;\n\n            var isInPickerControl = target && this._isElementInColorPickerControl(target);\n\n            if (!isInPickerControl || isInPickerControl && this._isPaletteButton(target)) {\n                this._show = !this._show;\n                this.pickerControl.style.display = this._show ? 'block' : 'none';\n                this._setPickerControlPosition();\n                this.fire('changeShow', this);\n            }\n            event.stopPropagation();\n        }\n\n        /**\n         * Check hex input or not\n         * @param {Element} target - Event target element\n         * @returns {boolean}\n         * @private\n         */\n\n    }, {\n        key: '_isPaletteButton',\n        value: function _isPaletteButton(target) {\n            return target.className === 'tui-colorpicker-palette-button';\n        }\n\n        /**\n         * Check given element is in pickerControl element\n         * @param {Element} element - element to check\n         * @returns {boolean}\n         * @private\n         */\n\n    }, {\n        key: '_isElementInColorPickerControl',\n        value: function _isElementInColorPickerControl(element) {\n            var parentNode = element;\n\n            while (parentNode !== document.body) {\n                if (!parentNode) {\n                    break;\n                }\n\n                if (parentNode === this.pickerControl) {\n                    return true;\n                }\n\n                parentNode = parentNode.parentNode;\n            }\n\n            return false;\n        }\n    }, {\n        key: 'hide',\n        value: function hide() {\n            this._show = false;\n            this.pickerControl.style.display = 'none';\n        }\n\n        /**\n         * Set picker control position\n         * @private\n         */\n\n    }, {\n        key: '_setPickerControlPosition',\n        value: function _setPickerControlPosition() {\n            var controlStyle = this.pickerControl.style;\n            var halfPickerWidth = this._colorpickerElement.clientWidth / 2 + 2;\n            var left = this.pickerControl.offsetWidth / 2 - halfPickerWidth;\n            var top = (this.pickerControl.offsetHeight + 10) * -1;\n\n            if (this._toggleDirection === 'down') {\n                top = 30;\n            }\n\n            controlStyle.top = top + 'px';\n            controlStyle.left = '-' + left + 'px';\n        }\n    }, {\n        key: 'color',\n        get: function get() {\n            return this._color;\n        }\n\n        /**\n         * Set color\n         * @param {string} color color value\n         */\n        ,\n        set: function set(color) {\n            this._color = color;\n            this._changeColorElement(color);\n        }\n    }]);\n\n    return Colorpicker;\n}();\n\n_tuiCodeSnippet2.default.CustomEvents.mixin(Colorpicker);\nexports.default = Colorpicker;\n\n//# sourceURL=webpack://tui.ImageEditor/./src/js/ui/tools/colorpicker.js?");
+
+/***/ }),
+
+/***/ "./src/js/ui/tools/range.js":
+/*!**********************************!*\
+  !*** ./src/js/ui/tools/range.js ***!
+  \**********************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _tuiCodeSnippet = __webpack_require__(/*! tui-code-snippet */ \"tui-code-snippet\");\n\nvar _tuiCodeSnippet2 = _interopRequireDefault(_tuiCodeSnippet);\n\nvar _util = __webpack_require__(/*! ../../util */ \"./src/js/util.js\");\n\nvar _consts = __webpack_require__(/*! ../../consts */ \"./src/js/consts.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar INPUT_FILTER_REGEXP = /(-?)([0-9]*)[^0-9]*([0-9]*)/g;\n\n/**\n * Range control class\n * @class\n * @ignore\n */\n\nvar Range = function () {\n    /**\n     * @constructor\n     * @extends {View}\n     * @param {Object} rangeElements - Html resources for creating sliders\n     *  @param {HTMLElement} rangeElements.slider - b\n     *  @param {HTMLElement} [rangeElements.input] - c\n     * @param {Object} options - Slider make options\n     *  @param {number} options.min - min value\n     *  @param {number} options.max - max value\n     *  @param {number} options.value - default value\n     *  @param {number} [options.useDecimal] - Decimal point processing.\n     *  @param {number} [options.realTimeEvent] - Reflect live events.\n     */\n    function Range(rangeElements) {\n        var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n        _classCallCheck(this, Range);\n\n        this._value = options.value || 0;\n\n        this.rangeElement = rangeElements.slider;\n        this.rangeInputElement = rangeElements.input;\n\n        this._drawRangeElement();\n\n        this.rangeWidth = this._getRangeWidth();\n        this._min = options.min || 0;\n        this._max = options.max || 100;\n        this._useDecimal = options.useDecimal;\n        this._absMax = this._min * -1 + this._max;\n        this.realTimeEvent = options.realTimeEvent || false;\n\n        this.eventHandler = {\n            startChangingSlide: this._startChangingSlide.bind(this),\n            stopChangingSlide: this._stopChangingSlide.bind(this),\n            changeSlide: this._changeSlide.bind(this),\n            changeSlideFinally: this._changeSlideFinally.bind(this),\n            changeInput: this._changeValueWithInput.bind(this, false),\n            changeInputFinally: this._changeValueWithInput.bind(this, true),\n            changeInputWithArrow: this._changeValueWithInputKeyEvent.bind(this)\n        };\n\n        this._addClickEvent();\n        this._addDragEvent();\n        this._addInputEvent();\n        this.value = options.value;\n        this.trigger('change');\n    }\n\n    /**\n     * Destroys the instance.\n     */\n\n\n    _createClass(Range, [{\n        key: 'destroy',\n        value: function destroy() {\n            var _this = this;\n\n            this._removeClickEvent();\n            this._removeDragEvent();\n            this._removeInputEvent();\n            this.rangeElement.innerHTML = '';\n            _tuiCodeSnippet2.default.forEach(this, function (value, key) {\n                _this[key] = null;\n            });\n        }\n\n        /**\n         * Set range max value and re position cursor\n         * @param {number} maxValue - max value\n         */\n\n    }, {\n        key: 'trigger',\n\n\n        /**\n         * event tirigger\n         * @param {string} type - type\n         */\n        value: function trigger(type) {\n            this.fire(type, this._value);\n        }\n\n        /**\n         * Calculate slider width\n         * @returns {number} - slider width\n         */\n\n    }, {\n        key: '_getRangeWidth',\n        value: function _getRangeWidth() {\n            var getElementWidth = function getElementWidth(element) {\n                return (0, _util.toInteger)(window.getComputedStyle(element, null).width);\n            };\n\n            return getElementWidth(this.rangeElement) - getElementWidth(this.pointer);\n        }\n\n        /**\n         * Make range element\n         * @private\n         */\n\n    }, {\n        key: '_drawRangeElement',\n        value: function _drawRangeElement() {\n            this.rangeElement.classList.add('tui-image-editor-range');\n\n            this.bar = document.createElement('div');\n            this.bar.className = 'tui-image-editor-virtual-range-bar';\n\n            this.subbar = document.createElement('div');\n            this.subbar.className = 'tui-image-editor-virtual-range-subbar';\n\n            this.pointer = document.createElement('div');\n            this.pointer.className = 'tui-image-editor-virtual-range-pointer';\n\n            this.bar.appendChild(this.subbar);\n            this.bar.appendChild(this.pointer);\n            this.rangeElement.appendChild(this.bar);\n        }\n\n        /**\n         * Add range input editing event\n         * @private\n         */\n\n    }, {\n        key: '_addInputEvent',\n        value: function _addInputEvent() {\n            if (this.rangeInputElement) {\n                this.rangeInputElement.addEventListener('keydown', this.eventHandler.changeInputWithArrow);\n                this.rangeInputElement.addEventListener('keyup', this.eventHandler.changeInput);\n                this.rangeInputElement.addEventListener('blur', this.eventHandler.changeInputFinally);\n            }\n        }\n\n        /**\n         * Remove range input editing event\n         * @private\n         */\n\n    }, {\n        key: '_removeInputEvent',\n        value: function _removeInputEvent() {\n            if (this.rangeInputElement) {\n                this.rangeInputElement.removeEventListener('keydown', this.eventHandler.changeInputWithArrow);\n                this.rangeInputElement.removeEventListener('keyup', this.eventHandler.changeInput);\n                this.rangeInputElement.removeEventListener('blur', this.eventHandler.changeInputFinally);\n            }\n        }\n\n        /**\n         * change angle event\n         * @param {object} event - key event\n         * @private\n         */\n\n    }, {\n        key: '_changeValueWithInputKeyEvent',\n        value: function _changeValueWithInputKeyEvent(event) {\n            var keyCode = event.keyCode,\n                target = event.target;\n\n\n            if ([_consts.keyCodes.ARROW_UP, _consts.keyCodes.ARROW_DOWN].indexOf(keyCode) < 0) {\n                return;\n            }\n\n            var value = Number(target.value);\n\n            value = this._valueUpDownForKeyEvent(value, keyCode);\n\n            var unChanged = value < this._min || value > this._max;\n\n            if (!unChanged) {\n                var clampValue = (0, _util.clamp)(value, this._min, this.max);\n                this.value = clampValue;\n                this.fire('change', clampValue, false);\n            }\n        }\n\n        /**\n         * value up down for input\n         * @param {number} value - original value number\n         * @param {number} keyCode - input event key code\n         * @returns {number} value - changed value\n         * @private\n         */\n\n    }, {\n        key: '_valueUpDownForKeyEvent',\n        value: function _valueUpDownForKeyEvent(value, keyCode) {\n            var step = this._useDecimal ? 0.1 : 1;\n\n            if (keyCode === _consts.keyCodes.ARROW_UP) {\n                value += step;\n            } else if (keyCode === _consts.keyCodes.ARROW_DOWN) {\n                value -= step;\n            }\n\n            return value;\n        }\n\n        /**\n         * change angle event\n         * @param {boolean} isLast - Is last change\n         * @param {object} event - key event\n         * @private\n         */\n\n    }, {\n        key: '_changeValueWithInput',\n        value: function _changeValueWithInput(isLast, event) {\n            var keyCode = event.keyCode,\n                target = event.target;\n\n\n            if ([_consts.keyCodes.ARROW_UP, _consts.keyCodes.ARROW_DOWN].indexOf(keyCode) >= 0) {\n                return;\n            }\n\n            var stringValue = this._filterForInputText(target.value);\n            var waitForChange = !stringValue || isNaN(stringValue);\n            target.value = stringValue;\n\n            if (!waitForChange) {\n                var value = this._useDecimal ? Number(stringValue) : (0, _util.toInteger)(stringValue);\n                value = (0, _util.clamp)(value, this._min, this.max);\n\n                this.value = value;\n                this.fire('change', value, isLast);\n            }\n        }\n\n        /**\n         * Add Range click event\n         * @private\n         */\n\n    }, {\n        key: '_addClickEvent',\n        value: function _addClickEvent() {\n            this.rangeElement.addEventListener('click', this.eventHandler.changeSlideFinally);\n        }\n\n        /**\n         * Remove Range click event\n         * @private\n         */\n\n    }, {\n        key: '_removeClickEvent',\n        value: function _removeClickEvent() {\n            this.rangeElement.removeEventListener('click', this.eventHandler.changeSlideFinally);\n        }\n\n        /**\n         * Add Range drag event\n         * @private\n         */\n\n    }, {\n        key: '_addDragEvent',\n        value: function _addDragEvent() {\n            this.pointer.addEventListener('mousedown', this.eventHandler.startChangingSlide);\n        }\n\n        /**\n         * Remove Range drag event\n         * @private\n         */\n\n    }, {\n        key: '_removeDragEvent',\n        value: function _removeDragEvent() {\n            this.pointer.removeEventListener('mousedown', this.eventHandler.startChangingSlide);\n        }\n\n        /**\n         * change angle event\n         * @param {object} event - change event\n         * @private\n         */\n\n    }, {\n        key: '_changeSlide',\n        value: function _changeSlide(event) {\n            var changePosition = event.screenX;\n            var diffPosition = changePosition - this.firstPosition;\n            var touchPx = this.firstLeft + diffPosition;\n            touchPx = touchPx > this.rangeWidth ? this.rangeWidth : touchPx;\n            touchPx = touchPx < 0 ? 0 : touchPx;\n\n            this.pointer.style.left = touchPx + 'px';\n            this.subbar.style.right = this.rangeWidth - touchPx + 'px';\n\n            var ratio = touchPx / this.rangeWidth;\n            var resultValue = this._absMax * ratio + this._min;\n            var value = this._useDecimal ? resultValue : (0, _util.toInteger)(resultValue);\n            var isValueChanged = this.value !== value;\n\n            if (isValueChanged) {\n                this.value = value;\n                if (this.realTimeEvent) {\n                    this.fire('change', this._value, false);\n                }\n            }\n        }\n    }, {\n        key: '_changeSlideFinally',\n        value: function _changeSlideFinally(event) {\n            event.stopPropagation();\n            if (event.target.className !== 'tui-image-editor-range') {\n                return;\n            }\n            var touchPx = event.offsetX;\n            var ratio = touchPx / this.rangeWidth;\n            var value = this._absMax * ratio + this._min;\n            this.pointer.style.left = ratio * this.rangeWidth + 'px';\n            this.subbar.style.right = (1 - ratio) * this.rangeWidth + 'px';\n            this.value = value;\n\n            this.fire('change', value, true);\n        }\n    }, {\n        key: '_startChangingSlide',\n        value: function _startChangingSlide(event) {\n            this.firstPosition = event.screenX;\n            this.firstLeft = (0, _util.toInteger)(this.pointer.style.left) || 0;\n\n            document.addEventListener('mousemove', this.eventHandler.changeSlide);\n            document.addEventListener('mouseup', this.eventHandler.stopChangingSlide);\n        }\n\n        /**\n         * stop change angle event\n         * @private\n         */\n\n    }, {\n        key: '_stopChangingSlide',\n        value: function _stopChangingSlide() {\n            this.fire('change', this._value, true);\n\n            document.removeEventListener('mousemove', this.eventHandler.changeSlide);\n            document.removeEventListener('mouseup', this.eventHandler.stopChangingSlide);\n        }\n\n        /**\n         * Unnecessary string filtering.\n         * @param {string} inputValue - origin string of input\n         * @returns {string} filtered string\n         * @private\n         */\n\n    }, {\n        key: '_filterForInputText',\n        value: function _filterForInputText(inputValue) {\n            return inputValue.replace(INPUT_FILTER_REGEXP, '$1$2$3');\n        }\n    }, {\n        key: 'max',\n        set: function set(maxValue) {\n            this._max = maxValue;\n            this._absMax = this._min * -1 + this._max;\n            this.value = this._value;\n        },\n        get: function get() {\n            return this._max;\n        }\n\n        /**\n         * Get range value\n         * @returns {Number} range value\n         */\n\n    }, {\n        key: 'value',\n        get: function get() {\n            return this._value;\n        }\n\n        /**\n         * Set range value\n         * @param {Number} value range value\n         * @param {Boolean} fire whether fire custom event or not\n         */\n        ,\n        set: function set(value) {\n            value = this._useDecimal ? value : (0, _util.toInteger)(value);\n\n            var absValue = value - this._min;\n            var leftPosition = absValue * this.rangeWidth / this._absMax;\n\n            if (this.rangeWidth < leftPosition) {\n                leftPosition = this.rangeWidth;\n            }\n\n            this.pointer.style.left = leftPosition + 'px';\n            this.subbar.style.right = this.rangeWidth - leftPosition + 'px';\n\n            this._value = value;\n            if (this.rangeInputElement) {\n                this.rangeInputElement.value = value;\n            }\n        }\n    }]);\n\n    return Range;\n}();\n\n_tuiCodeSnippet2.default.CustomEvents.mixin(Range);\nexports.default = Range;\n\n//# sourceURL=webpack://tui.ImageEditor/./src/js/ui/tools/range.js?");
+
+/***/ }),
+
+/***/ "./src/js/util.js":
+/*!************************!*\
+  !*** ./src/js/util.js ***!
+  \************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\nexports.Promise = undefined;\nexports.clamp = clamp;\nexports.keyMirror = keyMirror;\nexports.makeStyleText = makeStyleText;\nexports.getProperties = getProperties;\nexports.toInteger = toInteger;\nexports.toCamelCase = toCamelCase;\nexports.isSupportFileApi = isSupportFileApi;\nexports.getRgb = getRgb;\nexports.sendHostName = sendHostName;\nexports.styleLoad = styleLoad;\nexports.getSelector = getSelector;\nexports.base64ToBlob = base64ToBlob;\nexports.fixFloatingPoint = fixFloatingPoint;\nexports.assignmentForDestroy = assignmentForDestroy;\nexports.cls = cls;\nexports.changeOrigin = changeOrigin;\nexports.flipObject = flipObject;\nexports.setCustomProperty = setCustomProperty;\nexports.getCustomProperty = getCustomProperty;\nexports.capitalizeString = capitalizeString;\nexports.includes = includes;\nexports.getFillTypeFromOption = getFillTypeFromOption;\nexports.getFillTypeFromObject = getFillTypeFromObject;\nexports.isShape = isShape;\n\nvar _tuiCodeSnippet = __webpack_require__(/*! tui-code-snippet */ \"tui-code-snippet\");\n\nvar _promise = __webpack_require__(/*! core-js-pure/features/promise */ \"./node_modules/core-js-pure/features/promise/index.js\");\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _consts = __webpack_require__(/*! ./consts */ \"./src/js/consts.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar FLOATING_POINT_DIGIT = 2; /**\n                               * @author NHN Ent. FE Development Team <dl_javascript@nhn.com>\n                               * @fileoverview Util\n                               */\n\nvar CSS_PREFIX = 'tui-image-editor-';\nvar min = Math.min,\n    max = Math.max;\n\nvar hostnameSent = false;\n\n/**\n * Export Promise Class (for simplified module path)\n * @returns {Promise} promise class\n */\nexports.Promise = _promise2.default;\n\n/**\n * Clamp value\n * @param {number} value - Value\n * @param {number} minValue - Minimum value\n * @param {number} maxValue - Maximum value\n * @returns {number} clamped value\n */\n\nfunction clamp(value, minValue, maxValue) {\n    var temp = void 0;\n    if (minValue > maxValue) {\n        temp = minValue;\n        minValue = maxValue;\n        maxValue = temp;\n    }\n\n    return max(minValue, min(value, maxValue));\n}\n\n/**\n * Make key-value object from arguments\n * @returns {object.<string, string>}\n */\nfunction keyMirror() {\n    var obj = {};\n\n    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n    }\n\n    (0, _tuiCodeSnippet.forEach)(args, function (key) {\n        obj[key] = key;\n    });\n\n    return obj;\n}\n\n/**\n * Make CSSText\n * @param {Object} styleObj - Style info object\n * @returns {string} Connected string of style\n */\nfunction makeStyleText(styleObj) {\n    var styleStr = '';\n\n    (0, _tuiCodeSnippet.forEach)(styleObj, function (value, prop) {\n        styleStr += prop + ': ' + value + ';';\n    });\n\n    return styleStr;\n}\n\n/**\n * Get object's properties\n * @param {Object} obj - object\n * @param {Array} keys - keys\n * @returns {Object} properties object\n */\nfunction getProperties(obj, keys) {\n    var props = {};\n    var length = keys.length;\n\n    var i = 0;\n    var key = void 0;\n\n    for (i = 0; i < length; i += 1) {\n        key = keys[i];\n        props[key] = obj[key];\n    }\n\n    return props;\n}\n\n/**\n * ParseInt simpliment\n * @param {number} value - Value\n * @returns {number}\n */\nfunction toInteger(value) {\n    return parseInt(value, 10);\n}\n\n/**\n * String to camelcase string\n * @param {string} targetString - change target\n * @returns {string}\n * @private\n */\nfunction toCamelCase(targetString) {\n    return targetString.replace(/-([a-z])/g, function ($0, $1) {\n        return $1.toUpperCase();\n    });\n}\n\n/**\n * Check browser file api support\n * @returns {boolean}\n * @private\n */\nfunction isSupportFileApi() {\n    return !!(window.File && window.FileList && window.FileReader);\n}\n\n/**\n * hex to rgb\n * @param {string} color - hex color\n * @param {string} alpha - color alpha value\n * @returns {string} rgb expression\n */\nfunction getRgb(color, alpha) {\n    if (color.length === 4) {\n        color = '' + color + color.slice(1, 4);\n    }\n    var r = parseInt(color.slice(1, 3), 16);\n    var g = parseInt(color.slice(3, 5), 16);\n    var b = parseInt(color.slice(5, 7), 16);\n    var a = alpha || 1;\n\n    return 'rgba(' + r + ', ' + g + ', ' + b + ', ' + a + ')';\n}\n\n/**\n * send hostname\n */\nfunction sendHostName() {\n    if (hostnameSent) {\n        return;\n    }\n    hostnameSent = true;\n\n    (0, _tuiCodeSnippet.sendHostname)('image-editor', 'UA-129999381-1');\n}\n\n/**\n * Apply css resource\n * @param {string} styleBuffer - serialized css text\n * @param {string} tagId - style tag id\n */\nfunction styleLoad(styleBuffer, tagId) {\n    var _document$getElements = document.getElementsByTagName('head'),\n        head = _document$getElements[0];\n\n    var linkElement = document.createElement('link');\n    var styleData = encodeURIComponent(styleBuffer);\n    if (tagId) {\n        linkElement.id = tagId;\n        // linkElement.id = 'tui-image-editor-theme-style';\n    }\n    linkElement.setAttribute('rel', 'stylesheet');\n    linkElement.setAttribute('type', 'text/css');\n    linkElement.setAttribute('href', 'data:text/css;charset=UTF-8,' + styleData);\n    head.appendChild(linkElement);\n}\n\n/**\n * Get selector\n * @param {HTMLElement} targetElement - target element\n * @returns {Function} selector\n */\nfunction getSelector(targetElement) {\n    return function (str) {\n        return targetElement.querySelector(str);\n    };\n}\n\n/**\n * Change base64 to blob\n * @param {String} data - base64 string data\n * @returns {Blob} Blob Data\n */\nfunction base64ToBlob(data) {\n    var rImageType = /data:(image\\/.+);base64,/;\n    var mimeString = '';\n    var raw = void 0,\n        uInt8Array = void 0,\n        i = void 0;\n\n    raw = data.replace(rImageType, function (header, imageType) {\n        mimeString = imageType;\n\n        return '';\n    });\n\n    raw = atob(raw);\n    var rawLength = raw.length;\n    uInt8Array = new Uint8Array(rawLength); // eslint-disable-line\n\n    for (i = 0; i < rawLength; i += 1) {\n        uInt8Array[i] = raw.charCodeAt(i);\n    }\n\n    return new Blob([uInt8Array], { type: mimeString });\n}\n\n/**\n * Fix floating point diff.\n * @param {number} value - original value\n * @returns {number} fixed value\n */\nfunction fixFloatingPoint(value) {\n    return Number(value.toFixed(FLOATING_POINT_DIGIT));\n}\n\n/**\n * Assignment for destroying objects.\n * @param {Object} targetObject - object to be removed.\n */\nfunction assignmentForDestroy(targetObject) {\n    (0, _tuiCodeSnippet.forEach)(targetObject, function (value, key) {\n        targetObject[key] = null;\n    });\n}\n\n/**\n * Make class name for ui\n * @param {String} str  - main string of className\n * @param {String} prefix - prefix string of className\n * @returns {String} class name\n */\nfunction cls() {\n    var str = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n    var prefix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n\n    if (str.charAt(0) === '.') {\n        return '.' + CSS_PREFIX + prefix + str.slice(1);\n    }\n\n    return '' + CSS_PREFIX + prefix + str;\n}\n\n/**\n * Change object origin\n * @param {fabric.Object} fObject - fabric object\n * @param {Object} origin - origin of fabric object\n *   @param {string} originX - horizontal basis.\n *   @param {string} originY - vertical basis.\n */\nfunction changeOrigin(fObject, origin) {\n    var originX = origin.originX,\n        originY = origin.originY;\n\n    var _fObject$getPointByOr = fObject.getPointByOrigin(originX, originY),\n        left = _fObject$getPointByOr.x,\n        top = _fObject$getPointByOr.y;\n\n    fObject.set({\n        left: left,\n        top: top,\n        originX: originX,\n        originY: originY\n    });\n\n    fObject.setCoords();\n}\n\n/**\n * Object key value flip\n * @param {Object} targetObject - The data object of the key value. \n * @returns {Object}\n */\nfunction flipObject(targetObject) {\n    var result = {};\n\n    Object.keys(targetObject).forEach(function (key) {\n        result[targetObject[key]] = key;\n    });\n\n    return result;\n}\n\n/**\n * Set custom properties\n * @param {Object} targetObject - target object\n * @param {Object} props - custom props object\n */\nfunction setCustomProperty(targetObject, props) {\n    targetObject.customProps = targetObject.customProps || {};\n    (0, _tuiCodeSnippet.extend)(targetObject.customProps, props);\n}\n\n/**\n * Get custom property\n * @param {fabric.Object} fObject - fabric object\n * @param {Array|string} propNames - prop name array\n * @returns {object | number | string}\n */\nfunction getCustomProperty(fObject, propNames) {\n    var resultObject = {};\n    if ((0, _tuiCodeSnippet.isString)(propNames)) {\n        propNames = [propNames];\n    }\n    (0, _tuiCodeSnippet.forEach)(propNames, function (propName) {\n        resultObject[propName] = fObject.customProps[propName];\n    });\n\n    return resultObject;\n}\n\n/**\n * Capitalize string\n * @param {string} targetString - target string\n * @returns {string}\n */\nfunction capitalizeString(targetString) {\n    return targetString.charAt(0).toUpperCase() + targetString.slice(1);\n}\n\n/**\n * Array includes check\n * @param {Array} targetArray - target array\n * @param {string|number} compareValue - compare value\n * @returns {boolean}\n */\nfunction includes(targetArray, compareValue) {\n    return targetArray.indexOf(compareValue) >= 0;\n}\n\n/**\n * Get fill type\n * @param {Object | string} fillOption - shape fill option\n * @returns {string} 'color' or 'filter'\n */\nfunction getFillTypeFromOption() {\n    var fillOption = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n    return (0, _tuiCodeSnippet.pick)(fillOption, 'type') || _consts.SHAPE_FILL_TYPE.COLOR;\n}\n\n/**\n * Get fill type of shape type object\n * @param {fabric.Object} shapeObj - fabric object\n * @returns {string} 'transparent' or 'color' or 'filter'\n */\nfunction getFillTypeFromObject(shapeObj) {\n    var _shapeObj$fill = shapeObj.fill,\n        fill = _shapeObj$fill === undefined ? {} : _shapeObj$fill;\n\n    if (fill.source) {\n        return _consts.SHAPE_FILL_TYPE.FILTER;\n    }\n\n    return _consts.SHAPE_FILL_TYPE.COLOR;\n}\n\n/**\n * Check if the object is a shape object.\n * @param {fabric.Object} obj - fabric object\n * @returns {boolean}\n */\nfunction isShape(obj) {\n    return (0, _tuiCodeSnippet.inArray)(obj.get('type'), _consts.SHAPE_TYPE) >= 0;\n}\n\n//# sourceURL=webpack://tui.ImageEditor/./src/js/util.js?");
+
+/***/ }),
+
+/***/ "./src/svg/default.svg":
+/*!*****************************!*\
+  !*** ./src/svg/default.svg ***!
+  \*****************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("module.exports = \"<svg display=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\"><defs id=\\\"tui-image-editor-svg-default-icons\\\"><symbol id=\\\"ic-apply\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"M0 0h24v24H0z\\\" stroke=\\\"none\\\" fill=\\\"none\\\"></path><path fill=\\\"none\\\" stroke=\\\"inherit\\\" d=\\\"M4 12.011l5 5L20.011 6\\\"></path></symbol><symbol id=\\\"ic-cancel\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"M0 0h24v24H0z\\\" fill=\\\"none\\\" stroke=\\\"none\\\"></path><path fill=\\\"none\\\" stroke=\\\"inherit\\\" d=\\\"M6 6l12 12M18 6L6 18\\\"></path></symbol><symbol id=\\\"ic-crop\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"M0 0h24v24H0z\\\" stroke=\\\"none\\\" fill=\\\"none\\\"></path><path stroke=\\\"none\\\" fill=\\\"inherit\\\" d=\\\"M4 0h1v20a1 1 0 0 1-1-1V0zM20 17h-1V5h1v12zm0 2v5h-1v-5h1z\\\"></path><path stroke=\\\"none\\\" fill=\\\"inherit\\\" d=\\\"M5 19h19v1H5zM4.762 4v1H0V4h4.762zM7 4h12a1 1 0 0 1 1 1H7V4z\\\"></path></symbol><symbol id=\\\"ic-delete-all\\\" viewBox=\\\"0 0 24 24\\\"><path stroke=\\\"none\\\" fill=\\\"inherit\\\" d=\\\"M5 23H3a1 1 0 0 1-1-1V6h1v16h2v1zm16-10h-1V6h1v7zM9 13H8v-3h1v3zm3 0h-1v-3h1v3zm3 0h-1v-3h1v3zM14.794 3.794L13 2h-3L8.206 3.794A.963.963 0 0 1 8 2.5l.703-1.055A1 1 0 0 1 9.535 1h3.93a1 1 0 0 1 .832.445L15 2.5a.965.965 0 0 1-.206 1.294zM14.197 4H8.803h5.394z\\\"></path><path stroke=\\\"none\\\" fill=\\\"inherit\\\" d=\\\"M0 3h23v1H0zM11.286 21H8.714L8 23H7l1-2.8V20h.071L9.5 16h1l1.429 4H12v.2l1 2.8h-1l-.714-2zm-.357-1L10 17.4 9.071 20h1.858zM20 22h3v1h-4v-7h1v6zm-5 0h3v1h-4v-7h1v6z\\\"></path></symbol><symbol id=\\\"ic-delete\\\" viewBox=\\\"0 0 24 24\\\"><path stroke=\\\"none\\\" fill=\\\"inherit\\\" d=\\\"M3 6v16h17V6h1v16a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V6h1zM14.794 3.794L13 2h-3L8.206 3.794A.963.963 0 0 1 8 2.5l.703-1.055A1 1 0 0 1 9.535 1h3.93a1 1 0 0 1 .832.445L15 2.5a.965.965 0 0 1-.206 1.294zM14.197 4H8.803h5.394z\\\"></path><path stroke=\\\"none\\\" fill=\\\"inherit\\\" d=\\\"M0 3h23v1H0zM8 10h1v6H8v-6zm3 0h1v6h-1v-6zm3 0h1v6h-1v-6z\\\"></path></symbol><symbol id=\\\"ic-draw-free\\\" viewBox=\\\"0 0 32 32\\\"><path fill=\\\"none\\\" stroke=\\\"inherit\\\" d=\\\"M2.5 20.929C2.594 10.976 4.323 6 7.686 6c5.872 0 2.524 19 7.697 19s1.89-14.929 6.414-14.929 1.357 10.858 5.13 10.858c1.802 0 2.657-2.262 2.566-6.786\\\"></path></symbol><symbol id=\\\"ic-draw-line\\\" viewBox=\\\"0 0 32 32\\\"><path fill=\\\"none\\\" stroke=\\\"inherit\\\" d=\\\"M2 15.5h28\\\"></path></symbol><symbol id=\\\"ic-draw\\\" viewBox=\\\"0 0 24 24\\\"><path fill=\\\"none\\\" stroke=\\\"inherit\\\" d=\\\"M2.5 21.5H5c.245 0 .48-.058.691-.168l.124-.065.14.01c.429.028.85-.127 1.16-.437L22.55 5.405a.5.5 0 0 0 0-.707l-3.246-3.245a.5.5 0 0 0-.707 0L3.162 16.888a1.495 1.495 0 0 0-.437 1.155l.01.14-.065.123c-.111.212-.17.448-.17.694v2.5z\\\"></path><path stroke=\\\"none\\\" fill=\\\"inherit\\\" d=\\\"M16.414 3.707l3.89 3.89-.708.706-3.889-3.889z\\\"></path></symbol><symbol id=\\\"ic-filter\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"M0 0h24v24H0z\\\" fill=\\\"none\\\" stroke=\\\"none\\\"></path><path stroke=\\\"none\\\" fill=\\\"inherit\\\" d=\\\"M12 7v1H2V7h10zm6 0h4v1h-4V7zM12 16v1h10v-1H12zm-6 0H2v1h4v-1z\\\"></path><path stroke=\\\"none\\\" fill=\\\"inherit\\\" d=\\\"M8.5 20a3.5 3.5 0 1 1 0-7 3.5 3.5 0 0 1 0 7zm0-1a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5zM15.5 11a3.5 3.5 0 1 1 0-7 3.5 3.5 0 0 1 0 7zm0-1a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5z\\\"></path></symbol><symbol id=\\\"ic-flip-reset\\\" viewBox=\\\"0 0 31 32\\\"><path fill=\\\"none\\\" stroke=\\\"none\\\" d=\\\"M31 0H0v32h31z\\\"></path><path stroke=\\\"none\\\" fill=\\\"inherit\\\" d=\\\"M28 16a8 8 0 0 1-8 8H3v-1h1v-7H3a8 8 0 0 1 8-8h17v1h-1v7h1zM11 9a7 7 0 0 0-7 7v7h16a7 7 0 0 0 7-7V9H11z\\\"></path><path fill=\\\"none\\\" stroke=\\\"inherit\\\" stroke-linecap=\\\"square\\\" d=\\\"M24 5l3.5 3.5L24 12M7 20l-3.5 3.5L7 27\\\"></path></symbol><symbol id=\\\"ic-flip-x\\\" viewBox=\\\"0 0 32 32\\\"><path fill=\\\"none\\\" stroke=\\\"none\\\" d=\\\"M32 32H0V0h32z\\\"></path><path stroke=\\\"none\\\" fill=\\\"inherit\\\" d=\\\"M17 32h-1V0h1zM27.167 11l.5 3h-1.03l-.546-3h1.076zm-.5-3h-1.122L25 5h-5V4h5.153a1 1 0 0 1 .986.836L26.667 8zm1.5 9l.5 3h-.94l-.545-3h.985zm1 6l.639 3.836A1 1 0 0 1 28.819 28H26v-1h3l-.726-4h.894zM23 28h-3v-1h3v1zM13 4v1H7L3 27h10v1H3.18a1 1 0 0 1-.986-1.164l3.666-22A1 1 0 0 1 6.847 4H13z\\\"></path></symbol><symbol id=\\\"ic-flip-y\\\" viewBox=\\\"0 0 32 32\\\"><path fill=\\\"none\\\" stroke=\\\"none\\\" d=\\\"M0 0v32h32V0z\\\"></path><path stroke=\\\"none\\\" fill=\\\"inherit\\\" d=\\\"M0 16v1h32v-1zM11 27.167l3 .5v-1.03l-3-.546v1.076zm-3-.5v-1.122L5 25v-5H4v5.153a1 1 0 0 0 .836.986L8 26.667zm9 1.5l3 .5v-.94l-3-.545v.985zm6 1l3.836.639A1 1 0 0 0 28 28.82V26h-1v3l-4-.727v.894zM28 23v-3h-1v3h1zM4 13h1V7l22-4v10h1V3.18a1 1 0 0 0-1.164-.986l-22 3.667A1 1 0 0 0 4 6.847V13z\\\"></path></symbol><symbol id=\\\"ic-flip\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"M0 0h24v24H0z\\\" fill=\\\"none\\\" stroke=\\\"none\\\"></path><path fill=\\\"inherit\\\" stroke=\\\"none\\\" d=\\\"M11 0h1v24h-1zM19 21v-1h2v-2h1v2a1 1 0 0 1-1 1h-2zm-2 0h-3v-1h3v1zm5-5h-1v-3h1v3zm0-5h-1V8h1v3zm0-5h-1V4h-2V3h2a1 1 0 0 1 1 1v2zm-5-3v1h-3V3h3zM9 3v1H2v16h7v1H2a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h7z\\\"></path></symbol><symbol id=\\\"ic-icon-arrow-2\\\" viewBox=\\\"0 0 32 32\\\"><path fill=\\\"none\\\" stroke=\\\"inherit\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" d=\\\"M21.793 18.5H2.5v-5h18.935l-7.6-8h5.872l10.5 10.5-10.5 10.5h-5.914l8-8z\\\"></path></symbol><symbol id=\\\"ic-icon-arrow-3\\\" viewBox=\\\"0 0 32 32\\\"><path fill=\\\"none\\\" stroke=\\\"inherit\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" d=\\\"M25.288 16.42L14.208 27.5H6.792l11.291-11.291L6.826 4.5h7.381l11.661 11.661-.58.258z\\\"></path></symbol><symbol id=\\\"ic-icon-arrow\\\" viewBox=\\\"0 0 32 32\\\"><path fill=\\\"none\\\" stroke=\\\"inherit\\\" d=\\\"M2.5 11.5v9h18v5.293L30.293 16 20.5 6.207V11.5h-18z\\\"></path></symbol><symbol id=\\\"ic-icon-bubble\\\" viewBox=\\\"0 0 32 32\\\"><path fill=\\\"none\\\" stroke=\\\"inherit\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" d=\\\"M22.207 24.5L16.5 30.207V24.5H8A6.5 6.5 0 0 1 1.5 18V9A6.5 6.5 0 0 1 8 2.5h16A6.5 6.5 0 0 1 30.5 9v9a6.5 6.5 0 0 1-6.5 6.5h-1.793z\\\"></path></symbol><symbol id=\\\"ic-icon-heart\\\" viewBox=\\\"0 0 32 32\\\"><path fill-rule=\\\"nonzero\\\" fill=\\\"none\\\" stroke=\\\"inherit\\\" d=\\\"M15.996 30.675l1.981-1.79c7.898-7.177 10.365-9.718 12.135-13.012.922-1.716 1.377-3.37 1.377-5.076 0-4.65-3.647-8.297-8.297-8.297-2.33 0-4.86 1.527-6.817 3.824l-.38.447-.381-.447C13.658 4.027 11.126 2.5 8.797 2.5 4.147 2.5.5 6.147.5 10.797c0 1.714.46 3.375 1.389 5.098 1.775 3.288 4.26 5.843 12.123 12.974l1.984 1.806z\\\"></path></symbol><symbol id=\\\"ic-icon-load\\\" viewBox=\\\"0 0 32 32\\\"><path fill=\\\"none\\\" stroke=\\\"inherit\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" d=\\\"M17.314 18.867l1.951-2.53 4 5.184h-17l6.5-8.84 4.549 6.186z\\\"></path><path stroke=\\\"none\\\" fill=\\\"inherit\\\" d=\\\"M18.01 4a11.798 11.798 0 0 0 0 1H3v24h24V14.986a8.738 8.738 0 0 0 1 0V29a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1h15.01z\\\"></path><path stroke=\\\"none\\\" fill=\\\"inherit\\\" d=\\\"M25 3h1v9h-1z\\\"></path><path fill=\\\"none\\\" stroke=\\\"inherit\\\" d=\\\"M22 6l3.5-3.5L29 6\\\"></path></symbol><symbol id=\\\"ic-icon-location\\\" viewBox=\\\"0 0 32 32\\\"><path fill=\\\"none\\\" stroke=\\\"inherit\\\" d=\\\"M16 31.28C23.675 23.302 27.5 17.181 27.5 13c0-6.351-5.149-11.5-11.5-11.5S4.5 6.649 4.5 13c0 4.181 3.825 10.302 11.5 18.28z\\\"></path><circle fill=\\\"none\\\" stroke=\\\"inherit\\\" cx=\\\"16\\\" cy=\\\"13\\\" r=\\\"4.5\\\"></circle></symbol><symbol id=\\\"ic-icon-polygon\\\" viewBox=\\\"0 0 32 32\\\"><path fill=\\\"none\\\" stroke=\\\"inherit\\\" d=\\\"M.576 16L8.29 29.5h15.42L31.424 16 23.71 2.5H8.29L.576 16z\\\"></path></symbol><symbol id=\\\"ic-icon-star-2\\\" viewBox=\\\"0 0 32 32\\\"><path fill=\\\"none\\\" stroke=\\\"inherit\\\" d=\\\"M19.446 31.592l2.265-3.272 3.946.25.636-3.94 3.665-1.505-1.12-3.832 2.655-2.962-2.656-2.962 1.12-3.832-3.664-1.505-.636-3.941-3.946.25-2.265-3.271L16 3.024 12.554 1.07 10.289 4.34l-3.946-.25-.636 3.941-3.665 1.505 1.12 3.832L.508 16.33l2.656 2.962-1.12 3.832 3.664 1.504.636 3.942 3.946-.25 2.265 3.27L16 29.638l3.446 1.955z\\\"></path></symbol><symbol id=\\\"ic-icon-star\\\" viewBox=\\\"0 0 32 32\\\"><path fill=\\\"none\\\" stroke=\\\"inherit\\\" d=\\\"M25.292 29.878l-1.775-10.346 7.517-7.327-10.388-1.51L16 1.282l-4.646 9.413-10.388 1.51 7.517 7.327-1.775 10.346L16 24.993l9.292 4.885z\\\"></path></symbol><symbol id=\\\"ic-icon\\\" viewBox=\\\"0 0 24 24\\\"><path fill=\\\"none\\\" stroke=\\\"inherit\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" d=\\\"M11.923 19.136L5.424 22l.715-7.065-4.731-5.296 6.94-1.503L11.923 2l3.574 6.136 6.94 1.503-4.731 5.296L18.42 22z\\\"></path></symbol><symbol id=\\\"ic-mask-load\\\" viewBox=\\\"0 0 32 32\\\"><path stroke=\\\"none\\\" fill=\\\"none\\\" d=\\\"M0 0h32v32H0z\\\"></path><path stroke=\\\"none\\\" fill=\\\"inherit\\\" d=\\\"M18.01 4a11.798 11.798 0 0 0 0 1H3v24h24V14.986a8.738 8.738 0 0 0 1 0V29a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1h15.01zM15 23a6 6 0 1 1 0-12 6 6 0 0 1 0 12zm0-1a5 5 0 1 0 0-10 5 5 0 0 0 0 10z\\\"></path><path stroke=\\\"none\\\" fill=\\\"inherit\\\" d=\\\"M25 3h1v9h-1z\\\"></path><path fill=\\\"none\\\" stroke=\\\"inherit\\\" d=\\\"M22 6l3.5-3.5L29 6\\\"></path></symbol><symbol id=\\\"ic-mask\\\" viewBox=\\\"0 0 24 24\\\"><circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"4.5\\\" stroke=\\\"inherit\\\" fill=\\\"none\\\"></circle><path stroke=\\\"none\\\" fill=\\\"inherit\\\" d=\\\"M2 1h20a1 1 0 0 1 1 1v20a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1zm0 1v20h20V2H2z\\\"></path></symbol><symbol id=\\\"ic-redo\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"M0 0h24v24H0z\\\" opacity=\\\".5\\\" fill=\\\"none\\\" stroke=\\\"none\\\"></path><path stroke=\\\"none\\\" fill=\\\"inherit\\\" d=\\\"M21 6H9a6 6 0 1 0 0 12h12v1H9A7 7 0 0 1 9 5h12v1z\\\"></path><path fill=\\\"none\\\" stroke=\\\"inherit\\\" stroke-linecap=\\\"square\\\" d=\\\"M19 3l2.5 2.5L19 8\\\"></path></symbol><symbol id=\\\"ic-reset\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"M0 0h24v24H0z\\\" opacity=\\\".5\\\" stroke=\\\"none\\\" fill=\\\"none\\\"></path><path stroke=\\\"none\\\" fill=\\\"inherit\\\" d=\\\"M2 13v-1a7 7 0 0 1 7-7h13v1h-1v5h1v1a7 7 0 0 1-7 7H2v-1h1v-5H2zm7-7a6 6 0 0 0-6 6v6h12a6 6 0 0 0 6-6V6H9z\\\"></path><path fill=\\\"none\\\" stroke=\\\"inherit\\\" stroke-linecap=\\\"square\\\" d=\\\"M19 3l2.5 2.5L19 8M5 16l-2.5 2.5L5 21\\\"></path></symbol><symbol id=\\\"ic-rotate-clockwise\\\" viewBox=\\\"0 0 32 32\\\"><path stroke=\\\"none\\\" fill=\\\"inherit\\\" d=\\\"M29 17h-.924c0 6.627-5.373 12-12 12-6.628 0-12-5.373-12-12C4.076 10.398 9.407 5.041 16 5V4C8.82 4 3 9.82 3 17s5.82 13 13 13 13-5.82 13-13z\\\"></path><path fill=\\\"none\\\" stroke=\\\"inherit\\\" stroke-linecap=\\\"square\\\" d=\\\"M16 1.5l4 3-4 3\\\"></path><path stroke=\\\"none\\\" fill=\\\"inherit\\\" fill-rule=\\\"nonzero\\\" d=\\\"M16 4h4v1h-4z\\\"></path></symbol><symbol id=\\\"ic-rotate-counterclockwise\\\" viewBox=\\\"0 0 32 32\\\"><path stroke=\\\"none\\\" d=\\\"M3 17h.924c0 6.627 5.373 12 12 12 6.628 0 12-5.373 12-12 0-6.602-5.331-11.96-11.924-12V4c7.18 0 13 5.82 13 13s-5.82 13-13 13S3 24.18 3 17z\\\"></path><path stroke=\\\"none\\\" fill=\\\"inherit\\\" fill-rule=\\\"nonzero\\\" d=\\\"M12 4h4v1h-4z\\\"></path><path fill=\\\"none\\\" stroke=\\\"inherit\\\" stroke-linecap=\\\"square\\\" d=\\\"M16 1.5l-4 3 4 3\\\"></path></symbol><symbol id=\\\"ic-rotate\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"M0 0h24v24H0z\\\" fill=\\\"none\\\" stroke=\\\"none\\\"></path><path fill=\\\"inherit\\\" stroke=\\\"none\\\" d=\\\"M8.349 22.254a10.002 10.002 0 0 1-2.778-1.719l.65-.76a9.002 9.002 0 0 0 2.495 1.548l-.367.931zm2.873.704l.078-.997a9 9 0 1 0-.557-17.852l-.14-.99A10.076 10.076 0 0 1 12.145 3c5.523 0 10 4.477 10 10s-4.477 10-10 10c-.312 0-.62-.014-.924-.042zm-7.556-4.655a9.942 9.942 0 0 1-1.253-2.996l.973-.234a8.948 8.948 0 0 0 1.124 2.693l-.844.537zm-1.502-5.91A9.949 9.949 0 0 1 2.88 9.23l.925.382a8.954 8.954 0 0 0-.644 2.844l-.998-.062zm2.21-5.686c.687-.848 1.51-1.58 2.436-2.166l.523.852a9.048 9.048 0 0 0-2.188 1.95l-.771-.636z\\\"></path><path stroke=\\\"inherit\\\" fill=\\\"none\\\" stroke-linecap=\\\"square\\\" d=\\\"M13 1l-2.5 2.5L13 6\\\"></path></symbol><symbol id=\\\"ic-shape-circle\\\" viewBox=\\\"0 0 32 32\\\"><circle cx=\\\"16\\\" cy=\\\"16\\\" r=\\\"14.5\\\" fill=\\\"none\\\" stroke=\\\"inherit\\\"></circle></symbol><symbol id=\\\"ic-shape-rectangle\\\" viewBox=\\\"0 0 32 32\\\"><rect width=\\\"27\\\" height=\\\"27\\\" x=\\\"2.5\\\" y=\\\"2.5\\\" fill=\\\"none\\\" stroke=\\\"inherit\\\" rx=\\\"1\\\"></rect></symbol><symbol id=\\\"ic-shape-triangle\\\" viewBox=\\\"0 0 32 32\\\"><path fill=\\\"none\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" d=\\\"M16 2.5l15.5 27H.5z\\\"></path></symbol><symbol id=\\\"ic-shape\\\" viewBox=\\\"0 0 24 24\\\"><path stroke=\\\"none\\\" fill=\\\"inherit\\\" d=\\\"M14.706 8H21a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H9a1 1 0 0 1-1-1v-4h1v4h12V9h-5.706l-.588-1z\\\"></path><path fill=\\\"none\\\" stroke=\\\"inherit\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" d=\\\"M8.5 1.5l7.5 13H1z\\\"></path></symbol><symbol id=\\\"ic-text-align-center\\\" viewBox=\\\"0 0 32 32\\\"><path stroke=\\\"none\\\" fill=\\\"none\\\" d=\\\"M0 0h32v32H0z\\\"></path><path stroke=\\\"none\\\" fill=\\\"inherit\\\" d=\\\"M2 5h28v1H2zM8 12h16v1H8zM2 19h28v1H2zM8 26h16v1H8z\\\"></path></symbol><symbol id=\\\"ic-text-align-left\\\" viewBox=\\\"0 0 32 32\\\"><path stroke=\\\"none\\\" fill=\\\"none\\\" d=\\\"M0 0h32v32H0z\\\"></path><path stroke=\\\"none\\\" fill=\\\"inherit\\\" d=\\\"M2 5h28v1H2zM2 12h16v1H2zM2 19h28v1H2zM2 26h16v1H2z\\\"></path></symbol><symbol id=\\\"ic-text-align-right\\\" viewBox=\\\"0 0 32 32\\\"><path stroke=\\\"none\\\" fill=\\\"none\\\" d=\\\"M0 0h32v32H0z\\\"></path><path stroke=\\\"none\\\" fill=\\\"inherit\\\" d=\\\"M2 5h28v1H2zM14 12h16v1H14zM2 19h28v1H2zM14 26h16v1H14z\\\"></path></symbol><symbol id=\\\"ic-text-bold\\\" viewBox=\\\"0 0 32 32\\\"><path fill=\\\"none\\\" stroke=\\\"none\\\" d=\\\"M0 0h32v32H0z\\\"></path><path stroke=\\\"none\\\" fill=\\\"inherit\\\" d=\\\"M7 2h2v2H7zM7 28h2v2H7z\\\"></path><path fill=\\\"none\\\" stroke=\\\"inherit\\\" stroke-width=\\\"2\\\" d=\\\"M9 3v12h9a6 6 0 1 0 0-12H9zM9 15v14h10a7 7 0 0 0 0-14H9z\\\"></path></symbol><symbol id=\\\"ic-text-italic\\\" viewBox=\\\"0 0 32 32\\\"><path fill=\\\"none\\\" stroke=\\\"none\\\" d=\\\"M0 0h32v32H0z\\\"></path><path stroke=\\\"none\\\" fill=\\\"inherit\\\" d=\\\"M15 2h5v1h-5zM11 29h5v1h-5zM17 3h1l-4 26h-1z\\\"></path></symbol><symbol id=\\\"ic-text-underline\\\" viewBox=\\\"0 0 32 32\\\"><path stroke=\\\"none\\\" fill=\\\"none\\\" d=\\\"M0 0h32v32H0z\\\"></path><path stroke=\\\"none\\\" fill=\\\"inherit\\\" d=\\\"M8 2v14a8 8 0 1 0 16 0V2h1v14a9 9 0 0 1-18 0V2h1zM3 29h26v1H3z\\\"></path><path stroke=\\\"none\\\" fill=\\\"inherit\\\" d=\\\"M5 2h5v1H5zM22 2h5v1h-5z\\\"></path></symbol><symbol id=\\\"ic-text\\\" viewBox=\\\"0 0 24 24\\\"><path stroke=\\\"none\\\" fill=\\\"inherit\\\" d=\\\"M4 3h15a1 1 0 0 1 1 1H3a1 1 0 0 1 1-1zM3 4h1v1H3zM19 4h1v1h-1z\\\"></path><path stroke=\\\"none\\\" fill=\\\"inherit\\\" d=\\\"M11 3h1v18h-1z\\\"></path><path stroke=\\\"none\\\" fill=\\\"inherit\\\" d=\\\"M10 20h3v1h-3z\\\"></path></symbol><symbol id=\\\"ic-undo\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"M24 0H0v24h24z\\\" opacity=\\\".5\\\" fill=\\\"none\\\" stroke=\\\"none\\\"></path><path stroke=\\\"none\\\" fill=\\\"inherit\\\" d=\\\"M3 6h12a6 6 0 1 1 0 12H3v1h12a7 7 0 0 0 0-14H3v1z\\\"></path><path fill=\\\"none\\\" stroke=\\\"inherit\\\" stroke-linecap=\\\"square\\\" d=\\\"M5 3L2.5 5.5 5 8\\\"></path></symbol></defs></svg>\"\n\n//# sourceURL=webpack://tui.ImageEditor/./src/svg/default.svg?");
+
+/***/ }),
+
+/***/ "fabric":
+/*!****************************************************************************************************************!*\
+  !*** external {"commonjs":["fabric","fabric"],"commonjs2":["fabric","fabric"],"amd":"fabric","root":"fabric"} ***!
+  \****************************************************************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("module.exports = __WEBPACK_EXTERNAL_MODULE_fabric__;\n\n//# sourceURL=webpack://tui.ImageEditor/external_%7B%22commonjs%22:%5B%22fabric%22,%22fabric%22%5D,%22commonjs2%22:%5B%22fabric%22,%22fabric%22%5D,%22amd%22:%22fabric%22,%22root%22:%22fabric%22%7D?");
+
+/***/ }),
+
+/***/ "tui-code-snippet":
+/*!******************************************************************************************************************************!*\
+  !*** external {"commonjs":"tui-code-snippet","commonjs2":"tui-code-snippet","amd":"tui-code-snippet","root":["tui","util"]} ***!
+  \******************************************************************************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("module.exports = __WEBPACK_EXTERNAL_MODULE_tui_code_snippet__;\n\n//# sourceURL=webpack://tui.ImageEditor/external_%7B%22commonjs%22:%22tui-code-snippet%22,%22commonjs2%22:%22tui-code-snippet%22,%22amd%22:%22tui-code-snippet%22,%22root%22:%5B%22tui%22,%22util%22%5D%7D?");
+
+/***/ }),
+
+/***/ "tui-color-picker":
+/*!*************************************************************************************************************************************!*\
+  !*** external {"commonjs":"tui-color-picker","commonjs2":"tui-color-picker","amd":"tui-color-picker","root":["tui","colorPicker"]} ***!
+  \*************************************************************************************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("module.exports = __WEBPACK_EXTERNAL_MODULE_tui_color_picker__;\n\n//# sourceURL=webpack://tui.ImageEditor/external_%7B%22commonjs%22:%22tui-color-picker%22,%22commonjs2%22:%22tui-color-picker%22,%22amd%22:%22tui-color-picker%22,%22root%22:%5B%22tui%22,%22colorPicker%22%5D%7D?");
+
+/***/ })
+
+/******/ });
+});
\ No newline at end of file
diff --git a/admin/js/vendors/tui.image-editor/tui-image-editor.min.css b/admin/js/vendors/tui.image-editor/tui-image-editor.min.css
new file mode 100644 (file)
index 0000000..58b6cc3
--- /dev/null
@@ -0,0 +1,7 @@
+/*!
+ * tui-image-editor.min.js
+ * @version 3.10.1
+ * @author NHN FE Development Lab <dl_javascript@nhn.com>
+ * @license MIT
+ */body>textarea{position:fixed!important}.tui-image-editor-container{margin:0;padding:0;box-sizing:border-box;min-height:300px;height:100%;position:relative;background-color:#282828;overflow:hidden;letter-spacing:.3px}.tui-image-editor-container div,.tui-image-editor-container input,.tui-image-editor-container label,.tui-image-editor-container li,.tui-image-editor-container ul{box-sizing:border-box;margin:0;padding:0;-ms-user-select:none;-moz-user-select:-moz-none;-khtml-user-select:none;-webkit-user-select:none;user-select:none}.tui-image-editor-container .tui-image-editor-header{min-width:533px;position:absolute;background-color:#151515;top:0;width:100%}.tui-image-editor-container .tui-image-editor-controls-buttons,.tui-image-editor-container .tui-image-editor-header-buttons{float:right;margin:8px}.tui-image-editor-container .tui-image-editor-controls-logo,.tui-image-editor-container .tui-image-editor-header-logo{float:left;width:30%;padding:17px}.tui-image-editor-container .tui-image-editor-controls-buttons,.tui-image-editor-container .tui-image-editor-controls-logo{width:270px;height:100%;display:none}.tui-image-editor-container .tui-image-editor-controls-buttons button,.tui-image-editor-container .tui-image-editor-controls-buttons div,.tui-image-editor-container .tui-image-editor-header-buttons button,.tui-image-editor-container .tui-image-editor-header-buttons div{display:inline-block;position:relative;width:120px;height:40px;padding:0;line-height:40px;outline:none;border-radius:20px;border:1px solid #ddd;font-family:Noto Sans,sans-serif;font-size:12px;font-weight:700;cursor:pointer;vertical-align:middle;letter-spacing:.3px;text-align:center}.tui-image-editor-container .tui-image-editor-download-btn{background-color:#fdba3b;border-color:#fdba3b;color:#fff}.tui-image-editor-container .tui-image-editor-load-btn{position:absolute;left:0;right:0;display:inline-block;top:0;bottom:0;width:100%;cursor:pointer;opacity:0}.tui-image-editor-container .tui-image-editor-main-container{position:absolute;width:100%;top:0;bottom:64px}.tui-image-editor-container .tui-image-editor-main{position:absolute;text-align:center;top:64px;bottom:0;right:0;left:0}.tui-image-editor-container .tui-image-editor-wrap{bottom:0;width:100%;overflow:auto}.tui-image-editor-container .tui-image-editor-wrap .tui-image-editor-size-wrap{display:table;width:100%;height:100%}.tui-image-editor-container .tui-image-editor-wrap .tui-image-editor-size-wrap .tui-image-editor-align-wrap{display:table-cell;vertical-align:middle}.tui-image-editor-container .tui-image-editor{position:relative;display:inline-block}.tui-image-editor-container .tui-image-editor-menu{width:auto;list-style:none;padding:0;margin:0 auto;display:table-cell;text-align:center;vertical-align:middle;white-space:nowrap}.tui-image-editor-container .tui-image-editor-menu>.tui-image-editor-item{position:relative;display:inline-block;border-radius:2px;padding:7px 8px 3px;cursor:pointer;margin:0 4px}.tui-image-editor-container .tui-image-editor-menu>.tui-image-editor-item[tooltip-content]:hover:before{content:"";position:absolute;display:inline-block;margin:0 auto;width:0;height:0;border-right:7px solid transparent;border-top:7px solid #2f2f2f;border-left:7px solid transparent;left:13px;top:-2px}.tui-image-editor-container .tui-image-editor-menu>.tui-image-editor-item[tooltip-content]:hover:after{content:attr(tooltip-content);position:absolute;display:inline-block;background-color:#2f2f2f;color:#fff;padding:5px 8px;font-size:11px;font-weight:lighter;border-radius:3px;max-height:23px;top:-25px;left:0;min-width:24px}.tui-image-editor-container .tui-image-editor-menu>.tui-image-editor-item.active{background-color:#fff;transition:all .3s ease}.tui-image-editor-container .tui-image-editor-wrap{position:absolute}.tui-image-editor-container .tui-image-editor-grid-visual{display:none;position:absolute;width:100%;height:100%;border:1px solid hsla(0,0%,100%,.7)}.tui-image-editor-container .tui-image-editor-main.tui-image-editor-menu-flip .tui-image-editor,.tui-image-editor-container .tui-image-editor-main.tui-image-editor-menu-rotate .tui-image-editor{transition:none}.tui-image-editor-container .tui-image-editor-main.tui-image-editor-menu-flip .tui-image-editor-grid-visual,.tui-image-editor-container .tui-image-editor-main.tui-image-editor-menu-rotate .tui-image-editor-grid-visual{display:block}.tui-image-editor-container .tui-image-editor-grid-visual table{width:100%;height:100%;border-collapse:collapse}.tui-image-editor-container .tui-image-editor-grid-visual table td{border:1px solid hsla(0,0%,100%,.3)}.tui-image-editor-container .tui-image-editor-grid-visual table td.dot:before{content:"";position:absolute;box-sizing:border-box;width:10px;height:10px;border:0;box-shadow:0 0 1px 0 rgba(0,0,0,.3);border-radius:100%;background-color:#fff}.tui-image-editor-container .tui-image-editor-grid-visual table td.dot.left-top:before{top:-5px;left:-5px}.tui-image-editor-container .tui-image-editor-grid-visual table td.dot.right-top:before{top:-5px;right:-5px}.tui-image-editor-container .tui-image-editor-grid-visual table td.dot.left-bottom:before{bottom:-5px;left:-5px}.tui-image-editor-container .tui-image-editor-grid-visual table td.dot.right-bottom:before{bottom:-5px;right:-5px}.tui-image-editor-container .tui-image-editor-submenu{display:none;position:absolute;bottom:0;width:100%;height:150px;white-space:nowrap;z-index:2}.tui-image-editor-container .tui-image-editor-submenu .tui-image-editor-button:hover svg>use.active{display:block}.tui-image-editor-container .tui-image-editor-submenu .tui-image-editor-submenu-item li{display:inline-block;vertical-align:top}.tui-image-editor-container .tui-image-editor-submenu .tui-image-editor-submenu-item .tui-image-editor-newline{display:block;margin-top:0}.tui-image-editor-container .tui-image-editor-submenu .tui-image-editor-submenu-item .tui-image-editor-button{position:relative;cursor:pointer;display:inline-block;font-weight:400;font-size:11px;margin:0 9px}.tui-image-editor-container .tui-image-editor-submenu .tui-image-editor-submenu-item .tui-image-editor-button.preset{margin:0 9px 20px 5px}.tui-image-editor-container .tui-image-editor-submenu .tui-image-editor-submenu-item label>span{display:inline-block;cursor:pointer;padding-top:5px;font-family:Noto Sans,sans-serif;font-size:11px}.tui-image-editor-container .tui-image-editor-submenu .tui-image-editor-submenu-item .tui-image-editor-button.apply label,.tui-image-editor-container .tui-image-editor-submenu .tui-image-editor-submenu-item .tui-image-editor-button.cancel label{vertical-align:7px}.tui-image-editor-container .tui-image-editor-submenu>div{display:none;vertical-align:bottom}.tui-image-editor-container .tui-image-editor-submenu .tui-image-editor-submenu-style{opacity:.95;z-index:-1;position:absolute;top:0;bottom:0;left:0;right:0;display:block}.tui-image-editor-container .tui-image-editor-partition>div{width:1px;height:52px;border-left:1px solid #3c3c3c;margin:0 8px}.tui-image-editor-container .tui-image-editor-main.tui-image-editor-menu-filter .tui-image-editor-partition>div{height:108px;margin:0 29px 0 0}.tui-image-editor-container .tui-image-editor-submenu-align{text-align:left;margin-right:30px}.tui-image-editor-container .tui-image-editor-submenu-align label>span{width:55px;white-space:nowrap}.tui-image-editor-container .tui-image-editor-submenu-align:first-child{margin-right:0}.tui-image-editor-container .tui-image-editor-submenu-align:first-child label>span{width:70px}.tui-image-editor-container .tui-image-editor-main.tui-image-editor-menu-crop .tui-image-editor-submenu>div.tui-image-editor-menu-crop,.tui-image-editor-container .tui-image-editor-main.tui-image-editor-menu-draw .tui-image-editor-submenu>div.tui-image-editor-menu-draw,.tui-image-editor-container .tui-image-editor-main.tui-image-editor-menu-filter .tui-image-editor-submenu>div.tui-image-editor-menu-filter,.tui-image-editor-container .tui-image-editor-main.tui-image-editor-menu-flip .tui-image-editor-submenu>div.tui-image-editor-menu-flip,.tui-image-editor-container .tui-image-editor-main.tui-image-editor-menu-icon .tui-image-editor-submenu>div.tui-image-editor-menu-icon,.tui-image-editor-container .tui-image-editor-main.tui-image-editor-menu-mask .tui-image-editor-submenu>div.tui-image-editor-menu-mask,.tui-image-editor-container .tui-image-editor-main.tui-image-editor-menu-rotate .tui-image-editor-submenu>div.tui-image-editor-menu-rotate,.tui-image-editor-container .tui-image-editor-main.tui-image-editor-menu-shape .tui-image-editor-submenu>div.tui-image-editor-menu-shape,.tui-image-editor-container .tui-image-editor-main.tui-image-editor-menu-text .tui-image-editor-submenu>div.tui-image-editor-menu-text{display:table-cell}.tui-image-editor-container .tui-image-editor-main.tui-image-editor-menu-crop .tui-image-editor-submenu,.tui-image-editor-container .tui-image-editor-main.tui-image-editor-menu-draw .tui-image-editor-submenu,.tui-image-editor-container .tui-image-editor-main.tui-image-editor-menu-filter .tui-image-editor-submenu,.tui-image-editor-container .tui-image-editor-main.tui-image-editor-menu-flip .tui-image-editor-submenu,.tui-image-editor-container .tui-image-editor-main.tui-image-editor-menu-icon .tui-image-editor-submenu,.tui-image-editor-container .tui-image-editor-main.tui-image-editor-menu-mask .tui-image-editor-submenu,.tui-image-editor-container .tui-image-editor-main.tui-image-editor-menu-rotate .tui-image-editor-submenu,.tui-image-editor-container .tui-image-editor-main.tui-image-editor-menu-shape .tui-image-editor-submenu,.tui-image-editor-container .tui-image-editor-main.tui-image-editor-menu-text .tui-image-editor-submenu{display:table}.tui-image-editor-container .filter-color-item{display:inline-block}.tui-image-editor-container .filter-color-item .tui-image-editor-checkbox{display:block}.tui-image-editor-container .tui-image-editor-checkbox-wrap{display:inline-block!important;text-align:left}.tui-image-editor-container .tui-image-editor-checkbox-wrap.fixed-width{width:187px;white-space:normal}.tui-image-editor-container .tui-image-editor-checkbox{display:inline-block;margin:1px 0}.tui-image-editor-container .tui-image-editor-checkbox input{width:14px;height:14px;opacity:0}.tui-image-editor-container .tui-image-editor-checkbox>label>span{color:#fff;height:14px;position:relative}.tui-image-editor-container .tui-image-editor-checkbox>label>span:before,.tui-image-editor-container .tui-image-editor-checkbox input+label:before{content:"";position:absolute;width:14px;height:14px;background-color:#fff;top:6px;left:-19px;display:inline-block;margin:0;text-align:center;font-size:11px;border:0;border-radius:2px;padding-top:1px;box-sizing:border-box}.tui-image-editor-container .tui-image-editor-checkbox input[type=checkbox]:checked+span:before{background-size:cover;background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAAAXNSR0IArs4c6QAAAMBJREFUKBWVkjEOwjAMRe2WgZW7IIHEDdhghhuwcQ42rlJugAQS54Cxa5cq1QM5TUpByZfS2j9+dlJVt/tX5ZxbS4ZU9VLkQvSHKTIGRaVJYFmKrBbTCJxE2UgCdDzMZDkHrOV6b95V0US6UmgKodujEZbJg0B0ZgEModO5lrY1TMQf1TpyJGBEjD+E2NPN7ukIUDiF/BfEXgRiGEw8NgkffYGYwCi808fpn/6OvfUfsDr/Vc1IfRf8sKnFVqeiVQfDu0tf/nWH9gAAAABJRU5ErkJggg==")}.tui-image-editor-container .tui-image-editor-selectlist-wrap{position:relative}.tui-image-editor-container .tui-image-editor-selectlist-wrap select{width:100%;height:28px;margin-top:4px;outline:0;border-radius:0;border:1px solid #cbdbdb;background-color:#fff;-webkit-appearance:none;-moz-appearance:none;appearance:none;padding:0 7px 0 10px}.tui-image-editor-container .tui-image-editor-selectlist-wrap .tui-image-editor-selectlist{display:none;position:relative;top:-1px;border:1px solid #ccc;background-color:#fff;border-top:0;padding:4px 0}.tui-image-editor-container .tui-image-editor-selectlist-wrap .tui-image-editor-selectlist li{display:block;text-align:left;padding:7px 10px;font-family:Noto Sans,sans-serif}.tui-image-editor-container .tui-image-editor-selectlist-wrap .tui-image-editor-selectlist li:hover{background-color:rgba(81,92,230,.05)}.tui-image-editor-container .tui-image-editor-selectlist-wrap:before{content:"";position:absolute;display:inline-block;width:14px;height:14px;right:5px;top:10px;background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAAAXNSR0IArs4c6QAAAHlJREFUKBVjYBgFOEOAEVkmPDxc89+/f6eAYjzI4kD2FyYmJrOVK1deh4kzwRggGiQBVJCELAZig8SQNYHEmEEEMrh69eo1HR0dfqCYJUickZGxf9WqVf3IakBsFBthklpaWmVA9mEQhrJhUoTp0NBQCRAmrHL4qgAAuu4cWZOZIGsAAAAASUVORK5CYII=");background-size:cover}.tui-image-editor-container .tui-image-editor-selectlist-wrap select::-ms-expand{display:none}.tui-image-editor-container .tui-image-editor-virtual-range-bar .tui-image-editor-disabled,.tui-image-editor-container .tui-image-editor-virtual-range-pointer .tui-image-editor-disabled,.tui-image-editor-container .tui-image-editor-virtual-range-subbar .tui-image-editor-disabled{backbround-color:red}.tui-image-editor-container .tui-image-editor-range{position:relative;top:5px;width:166px;height:17px;display:inline-block}.tui-image-editor-container .tui-image-editor-virtual-range-bar{top:7px;position:absolute;width:100%;height:2px;background-color:#666}.tui-image-editor-container .tui-image-editor-virtual-range-subbar{position:absolute;height:100%;left:0;right:0;background-color:#d1d1d1}.tui-image-editor-container .tui-image-editor-virtual-range-pointer{position:absolute;cursor:pointer;top:-5px;left:0;width:12px;height:12px;background-color:#fff;border-radius:100%}.tui-image-editor-container .tui-image-editor-range-wrap{display:inline-block;margin-left:4px}.tui-image-editor-container .tui-image-editor-range-wrap.short .tui-image-editor-range{width:100px}.tui-image-editor-container .color-picker-control .tui-image-editor-range{width:108px;margin-left:10px}.tui-image-editor-container .color-picker-control .tui-image-editor-virtual-range-pointer{background-color:#333}.tui-image-editor-container .color-picker-control .tui-image-editor-virtual-range-bar{background-color:#ccc}.tui-image-editor-container .color-picker-control .tui-image-editor-virtual-range-subbar{background-color:#606060}.tui-image-editor-container .tui-image-editor-range-wrap.tui-image-editor-newline.short{margin-top:-2px;margin-left:19px}.tui-image-editor-container .tui-image-editor-range-wrap.tui-image-editor-newline.short label{color:#8e8e8e;font-weight:400}.tui-image-editor-container .tui-image-editor-range-wrap label{vertical-align:baseline;font-size:11px;margin-right:7px;color:#fff}.tui-image-editor-container .tui-image-editor-range-value{cursor:default;width:40px;height:24px;outline:none;border-radius:2px;box-shadow:none;border:1px solid #d5d5d5;text-align:center;background-color:#1c1c1c;color:#fff;font-weight:lighter;vertical-align:baseline;font-family:Noto Sans,sans-serif;margin-top:21px;margin-left:4px}.tui-image-editor-container .tui-image-editor-controls{position:absolute;background-color:#151515;width:100%;height:64px;display:table;bottom:0;z-index:2}.tui-image-editor-container .tui-image-editor-icpartition{display:inline-block;background-color:#282828;width:1px;height:24px}.tui-image-editor-container.left .tui-image-editor-menu>.tui-image-editor-item[tooltip-content]:before{left:28px;top:11px;border-right:7px solid #2f2f2f;border-top:7px solid transparent;border-bottom:7px solid transparent}.tui-image-editor-container.left .tui-image-editor-menu>.tui-image-editor-item[tooltip-content]:after{top:7px;left:42px;white-space:nowrap}.tui-image-editor-container.left .tui-image-editor-submenu{left:0;height:100%;width:248px}.tui-image-editor-container.left .tui-image-editor-main-container{left:64px;width:calc(100% - 64px);height:100%}.tui-image-editor-container.left .tui-image-editor-controls{width:64px;height:100%;display:table}.tui-image-editor-container.left .tui-image-editor-menu,.tui-image-editor-container.right .tui-image-editor-menu{white-space:inherit}.tui-image-editor-container.left .tui-image-editor-submenu,.tui-image-editor-container.right .tui-image-editor-submenu{white-space:normal}.tui-image-editor-container.left .tui-image-editor-submenu>div,.tui-image-editor-container.right .tui-image-editor-submenu>div{vertical-align:middle}.tui-image-editor-container.left .tui-image-editor-controls li,.tui-image-editor-container.right .tui-image-editor-controls li{display:inline-block;margin:4px auto}.tui-image-editor-container.left .tui-image-editor-icpartition,.tui-image-editor-container.right .tui-image-editor-icpartition{position:relative;top:-7px;width:24px;height:1px}.tui-image-editor-container.left .tui-image-editor-submenu .tui-image-editor-partition,.tui-image-editor-container.right .tui-image-editor-submenu .tui-image-editor-partition{display:block;width:75%;margin:auto}.tui-image-editor-container.left .tui-image-editor-submenu .tui-image-editor-partition>div,.tui-image-editor-container.right .tui-image-editor-submenu .tui-image-editor-partition>div{border-left:0;height:10px;border-bottom:1px solid #3c3c3c;width:100%;margin:0}.tui-image-editor-container.left .tui-image-editor-submenu .tui-image-editor-submenu-align,.tui-image-editor-container.right .tui-image-editor-submenu .tui-image-editor-submenu-align{margin-right:0}.tui-image-editor-container.left .tui-image-editor-submenu .tui-image-editor-submenu-item li,.tui-image-editor-container.right .tui-image-editor-submenu .tui-image-editor-submenu-item li{margin-top:15px}.tui-image-editor-container.left .tui-image-editor-submenu .tui-image-editor-submenu-item .tui-colorpicker-clearfix li,.tui-image-editor-container.right .tui-image-editor-submenu .tui-image-editor-submenu-item .tui-colorpicker-clearfix li{margin-top:0}.tui-image-editor-container.left .tui-image-editor-checkbox-wrap.fixed-width,.tui-image-editor-container.right .tui-image-editor-checkbox-wrap.fixed-width{width:182px;white-space:normal}.tui-image-editor-container.left .tui-image-editor-range-wrap.tui-image-editor-newline label.range,.tui-image-editor-container.right .tui-image-editor-range-wrap.tui-image-editor-newline label.range{display:block;text-align:left;width:75%;margin:auto}.tui-image-editor-container.left .tui-image-editor-range,.tui-image-editor-container.right .tui-image-editor-range{width:136px}.tui-image-editor-container.right .tui-image-editor-menu>.tui-image-editor-item[tooltip-content]:before{left:-3px;top:11px;border-left:7px solid #2f2f2f;border-top:7px solid transparent;border-bottom:7px solid transparent}.tui-image-editor-container.right .tui-image-editor-menu>.tui-image-editor-item[tooltip-content]:after{top:7px;left:unset;right:43px;white-space:nowrap}.tui-image-editor-container.right .tui-image-editor-submenu{right:0;height:100%;width:248px}.tui-image-editor-container.right .tui-image-editor-main-container{right:64px;width:calc(100% - 64px);height:100%}.tui-image-editor-container.right .tui-image-editor-controls{right:0;width:64px;height:100%;display:table}.tui-image-editor-container.bottom .tui-image-editor-submenu .tui-image-editor-partition.only-left-right,.tui-image-editor-container.top .tui-image-editor-submenu .tui-image-editor-partition.only-left-right{display:none}.tui-image-editor-container.bottom .tui-image-editor-submenu>div{padding-bottom:24px}.tui-image-editor-container.top .color-picker-control .triangle{top:-8px;border-right:7px solid transparent;border-top:0;border-left:7px solid transparent;border-bottom:8px solid #fff}.tui-image-editor-container.top .tui-image-editor-size-wrap{height:100%}.tui-image-editor-container.top .tui-image-editor-main-container{bottom:0}.tui-image-editor-container.top .tui-image-editor-menu>.tui-image-editor-item[tooltip-content]:before{left:13px;border-top:0;border-bottom:7px solid #2f2f2f;top:33px}.tui-image-editor-container.top .tui-image-editor-menu>.tui-image-editor-item[tooltip-content]:after{top:38px}.tui-image-editor-container.top .tui-image-editor-submenu{top:0;bottom:auto}.tui-image-editor-container.top .tui-image-editor-submenu>div{padding-top:24px;vertical-align:top}.tui-image-editor-container.top .tui-image-editor-controls-buttons,.tui-image-editor-container.top .tui-image-editor-controls-logo{display:table-cell}.tui-image-editor-container.top .tui-image-editor-main{top:64px;height:calc(100% - 64px)}.tui-image-editor-container.top .tui-image-editor-controls{top:0;bottom:inherit}.tui-image-editor-container .tie-icon-add-button .tui-image-editor-button{min-width:42px}.tui-image-editor-container .svg_ic-helpmenu,.tui-image-editor-container .svg_ic-menu{width:24px;height:24px}.tui-image-editor-container .svg_ic-submenu{width:32px;height:32px}.tui-image-editor-container .svg_img-bi{width:257px;height:26px}.tui-image-editor-container .tui-image-editor-controls svg>use{display:none}.tui-image-editor-container .tui-image-editor-controls .enabled svg:hover>use.hover,.tui-image-editor-container .tui-image-editor-controls .normal svg:hover>use.hover{display:block}.tui-image-editor-container .tui-image-editor-controls .active svg:hover>use.hover{display:none}.tui-image-editor-container .tui-image-editor-controls .active svg>use.active,.tui-image-editor-container .tui-image-editor-controls .enabled svg>use.enabled,.tui-image-editor-container .tui-image-editor-controls svg>use.normal{display:block}.tui-image-editor-container .tui-image-editor-controls .active svg>use.normal,.tui-image-editor-container .tui-image-editor-controls .enabled svg>use.normal{display:none}.tui-image-editor-container .tui-image-editor-controls .help.enabled svg>use.normal,.tui-image-editor-container .tui-image-editor-controls .help svg>use.disabled{display:block}.tui-image-editor-container .tui-image-editor-controls .help.enabled svg>use.disabled{display:none}.tui-image-editor-container .tui-image-editor-controls:hover{z-index:3}.tui-image-editor-container div.tui-colorpicker-clearfix{width:159px;height:28px;border:1px solid #d5d5d5;border-radius:2px;background-color:#f5f5f5;margin-top:6px;padding:4px 7px}.tui-image-editor-container .tui-colorpicker-palette-hex{width:114px;background-color:#f5f5f5;border:0;font-size:11px;margin-top:2px;font-family:Noto Sans,sans-serif}.tui-image-editor-container .tui-colorpicker-palette-hex[value=""]+.tui-colorpicker-palette-preview,.tui-image-editor-container .tui-colorpicker-palette-hex[value="#ffffff"]+.tui-colorpicker-palette-preview{border:1px solid #ccc}.tui-image-editor-container .tui-colorpicker-palette-hex[value=""]+.tui-colorpicker-palette-preview{background-size:cover;background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAdBJREFUWAnFl0FuwjAQRZ0ukiugHqFSOQNdseuKW3ALzkA4BateICvUGyCxrtRFd4WuunH/TzykaYJrnLEYaTJJsP2+x8GZZCbQrLU5mj7Bn+EP8HvnCObd+R7xBV5lWfaNON4AnsA38E94qLEt+0yiFaBzAV/Bv+Cxxr4co7hKCDpw1q9wLeNYYdlAwyn8TYt8Hme3+8D5ozcTaMCZ68PXa2tnM2sbEcOZAJhrrpl2DAcTOGNjZPSfCdzkw6JrfbiMv+osBe4y9WOedhm4jZfhbENWuxS44H9Wz/xw4WzqLOAqh1+zycgAwzEMzr5k5gaHOa9ULBwuuDkFlHI1Kl4PJ66kgIpnoywOTmRFAYcbwYk9UMApWkD8zAV5ihcwHk4Rx7gl0IFTQL0EFc+CTQ9OZHWH3YhlVJiVpTHbrTGLhTHLZVgff6s9lyBsI9KduSS83oj+34rTwJutmBmCnMsvozRwZqB5GTkBw6/jdPDu69iJ6BYk6eCcfbcgcQIK/MByaaiMqm8rHcjol2TnpWDhyAKSGdA3FrxtJUToX0ODqatetfGE+8tyEUOV8GY5dGRwLP/MBS4RHQr4bT7NRAQjlcOTfZxmv2G+c4hI8nn+Ax5PG/zhI393AAAAAElFTkSuQmCC")}.tui-image-editor-container .tui-colorpicker-palette-preview{border-radius:100%;float:left;width:17px;height:17px;border:0}.tui-image-editor-container .color-picker-control{position:absolute;display:none;z-index:99;width:192px;background-color:#fff;box-shadow:0 3px 22px 6px rgba(0,0,0,.15);padding:16px;border-radius:2px}.tui-image-editor-container .color-picker-control .tui-colorpicker-palette-toggle-slider{display:none}.tui-image-editor-container .color-picker-control .tui-colorpicker-palette-button{border:0;border-radius:100%;margin:2px;background-size:cover;font-size:1px}.tui-image-editor-container .color-picker-control .tui-colorpicker-palette-button[title=""],.tui-image-editor-container .color-picker-control .tui-colorpicker-palette-button[title="#ffffff"]{border:1px solid #ccc}.tui-image-editor-container .color-picker-control .triangle{width:0;height:0;border-right:7px solid transparent;border-top:8px solid #fff;border-left:7px solid transparent;position:absolute;bottom:-8px;left:84px}.tui-image-editor-container .color-picker-control .tui-colorpicker-container,.tui-image-editor-container .color-picker-control .tui-colorpicker-palette-container,.tui-image-editor-container .color-picker-control .tui-colorpicker-palette-container ul{width:100%;height:auto}.tui-image-editor-container .filter-color-item .color-picker-control label{font-color:#333;font-weight:400;margin-right:7pxleft}.tui-image-editor-container .filter-color-item .tui-image-editor-checkbox{margin-top:0}.tui-image-editor-container .filter-color-item .tui-image-editor-checkbox>label:before,.tui-image-editor-container .filter-color-item .tui-image-editor-checkbox input+label:before{left:-16px}.tui-image-editor-container .color-picker{width:100%;height:auto}.tui-image-editor-container .color-picker-value{width:32px;height:32px;border:0;border-radius:100%;margin:auto auto 1px}.tui-image-editor-container .color-picker-value.transparent{border:1px solid #cbcbcb;background-size:cover;background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAdBJREFUWAnFl0FuwjAQRZ0ukiugHqFSOQNdseuKW3ALzkA4BateICvUGyCxrtRFd4WuunH/TzykaYJrnLEYaTJJsP2+x8GZZCbQrLU5mj7Bn+EP8HvnCObd+R7xBV5lWfaNON4AnsA38E94qLEt+0yiFaBzAV/Bv+Cxxr4co7hKCDpw1q9wLeNYYdlAwyn8TYt8Hme3+8D5ozcTaMCZ68PXa2tnM2sbEcOZAJhrrpl2DAcTOGNjZPSfCdzkw6JrfbiMv+osBe4y9WOedhm4jZfhbENWuxS44H9Wz/xw4WzqLOAqh1+zycgAwzEMzr5k5gaHOa9ULBwuuDkFlHI1Kl4PJ66kgIpnoywOTmRFAYcbwYk9UMApWkD8zAV5ihcwHk4Rx7gl0IFTQL0EFc+CTQ9OZHWH3YhlVJiVpTHbrTGLhTHLZVgff6s9lyBsI9KduSS83oj+34rTwJutmBmCnMsvozRwZqB5GTkBw6/jdPDu69iJ6BYk6eCcfbcgcQIK/MByaaiMqm8rHcjol2TnpWDhyAKSGdA3FrxtJUToX0ODqatetfGE+8tyEUOV8GY5dGRwLP/MBS4RHQr4bT7NRAQjlcOTfZxmv2G+c4hI8nn+Ax5PG/zhI393AAAAAElFTkSuQmCC")}.tui-image-editor-container .color-picker-value+label{color:#fff}.tui-image-editor-container .tui-image-editor-submenu svg>use{display:none}.tie-icon-add-button.icon-arrow-2 .tui-image-editor-button[data-icontype=icon-arrow-2] svg>use.active,.tie-icon-add-button.icon-arrow-3 .tui-image-editor-button[data-icontype=icon-arrow-3] svg>use.active,.tie-icon-add-button.icon-arrow .tui-image-editor-button[data-icontype=icon-arrow] svg>use.active,.tie-icon-add-button.icon-bubble .tui-image-editor-button[data-icontype=icon-bubble] svg>use.active,.tie-icon-add-button.icon-heart .tui-image-editor-button[data-icontype=icon-heart] svg>use.active,.tie-icon-add-button.icon-location .tui-image-editor-button[data-icontype=icon-location] svg>use.active,.tie-icon-add-button.icon-polygon .tui-image-editor-button[data-icontype=icon-polygon] svg>use.active,.tie-icon-add-button.icon-star-2 .tui-image-editor-button[data-icontype=icon-star-2] svg>use.active,.tie-icon-add-button.icon-star .tui-image-editor-button[data-icontype=icon-star] svg>use.active,.tui-image-editor-container .tui-image-editor-submenu svg>use.normal{display:block}.tie-draw-line-select-button.free .tui-image-editor-button.free svg>use.normal,.tie-draw-line-select-button.line .tui-image-editor-button.line svg>use.normal{display:none}.tie-draw-line-select-button.free .tui-image-editor-button.free svg>use.active,.tie-draw-line-select-button.line .tui-image-editor-button.line svg>use.active{display:block}.tie-flip-button.flipX .tui-image-editor-button.flipX svg>use.normal,.tie-flip-button.flipY .tui-image-editor-button.flipY svg>use.normal,.tie-flip-button.resetFlip .tui-image-editor-button.resetFlip svg>use.normal{display:none}.tie-flip-button.flipX .tui-image-editor-button.flipX svg>use.active,.tie-flip-button.flipY .tui-image-editor-button.flipY svg>use.active,.tie-flip-button.resetFlip .tui-image-editor-button.resetFlip svg>use.active{display:block}.tie-mask-apply.apply.active .tui-image-editor-button.apply label{color:#fff}.tie-mask-apply.apply.active .tui-image-editor-button.apply svg>use.active{display:block}.tie-crop-button .tui-image-editor-button.apply,.tie-crop-preset-button .tui-image-editor-button.apply{margin-right:24px}.tie-crop-button .tui-image-editor-button.apply.active svg>use.active,.tie-crop-button .tui-image-editor-button.preset.active svg>use.active,.tie-crop-preset-button .tui-image-editor-button.apply.active svg>use.active,.tie-crop-preset-button .tui-image-editor-button.preset.active svg>use.active{display:block}.tie-shape-button.circle .tui-image-editor-button.circle svg>use.normal,.tie-shape-button.rect .tui-image-editor-button.rect svg>use.normal,.tie-shape-button.triangle .tui-image-editor-button.triangle svg>use.normal{display:none}.tie-shape-button.circle .tui-image-editor-button.circle svg>use.active,.tie-shape-button.rect .tui-image-editor-button.rect svg>use.active,.tie-shape-button.triangle .tui-image-editor-button.triangle svg>use.active,.tie-text-align-button.center .tui-image-editor-button.center svg>use.active,.tie-text-align-button.left .tui-image-editor-button.left svg>use.active,.tie-text-align-button.right .tui-image-editor-button.right svg>use.active,.tie-text-effect-button .tui-image-editor-button.active svg>use.active{display:block}.tie-icon-image-file,.tie-mask-image-file{opacity:0;position:absolute;width:100%;height:100%;border:1px solid green;cursor:inherit;left:0;top:0}.tui-image-editor-container.top.tui-image-editor-top-optimization .tui-image-editor-controls ul{text-align:right}.tui-image-editor-container.top.tui-image-editor-top-optimization .tui-image-editor-controls-logo{display:none}
+/*# sourceMappingURL=tui-image-editor.min.css.map */
\ No newline at end of file
diff --git a/admin/js/vendors/tui.image-editor/tui-image-editor.min.css.map b/admin/js/vendors/tui.image-editor/tui-image-editor.min.css.map
new file mode 100644 (file)
index 0000000..03a385f
--- /dev/null
@@ -0,0 +1 @@
+{"version":3,"sources":["tui-image-editor.min.css","src/css/main.styl","index.styl","src/css/gridtable.styl","src/css/submenu.styl","src/css/checkbox.styl","src/css/range.styl","src/css/position.styl","src/css/icon.styl","src/css/colorpicker.styl","src/css/buttons.styl","src/css/index.styl"],"names":[],"mappings":"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","file":"tui-image-editor.min.css","sourcesContent":["/*!\n * tui-image-editor.min.js\n * @version 3.10.1\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n * @license MIT\n */\nbody > textarea {\n  position: fixed !important;\n}\n.tui-image-editor-container {\n  margin: 0;\n  padding: 0;\n  box-sizing: border-box;\n  min-height: 300px;\n  height: 100%;\n  position: relative;\n  background-color: #282828;\n  overflow: hidden;\n  letter-spacing: 0.3px;\n}\n.tui-image-editor-container div,\n.tui-image-editor-container ul,\n.tui-image-editor-container label,\n.tui-image-editor-container input,\n.tui-image-editor-container li {\n  box-sizing: border-box;\n  margin: 0;\n  padding: 0;\n  -ms-user-select: none;\n  -moz-user-select: -moz-none;\n  -khtml-user-select: none;\n  -webkit-user-select: none;\n  user-select: none;\n}\n.tui-image-editor-container .tui-image-editor-header {\n/* BUTTON AND LOGO */\n  min-width: 533px;\n  position: absolute;\n  background-color: #151515;\n  top: 0;\n  width: 100%;\n}\n.tui-image-editor-container .tui-image-editor-header-buttons,\n.tui-image-editor-container .tui-image-editor-controls-buttons {\n  float: right;\n  margin: 8px;\n}\n.tui-image-editor-container .tui-image-editor-header-logo,\n.tui-image-editor-container .tui-image-editor-controls-logo {\n  float: left;\n  width: 30%;\n  padding: 17px;\n}\n.tui-image-editor-container .tui-image-editor-controls-logo,\n.tui-image-editor-container .tui-image-editor-controls-buttons {\n  width: 270px;\n  height: 100%;\n  display: none;\n}\n.tui-image-editor-container .tui-image-editor-header-buttons button,\n.tui-image-editor-container .tui-image-editor-header-buttons div,\n.tui-image-editor-container .tui-image-editor-controls-buttons button,\n.tui-image-editor-container .tui-image-editor-controls-buttons div {\n  display: inline-block;\n  position: relative;\n  width: 120px;\n  height: 40px;\n  padding: 0;\n  line-height: 40px;\n  outline: none;\n  border-radius: 20px;\n  border: 1px solid #ddd;\n  font-family: 'Noto Sans', sans-serif;\n  font-size: 12px;\n  font-weight: bold;\n  cursor: pointer;\n  vertical-align: middle;\n  letter-spacing: 0.3px;\n  text-align: center;\n}\n.tui-image-editor-container .tui-image-editor-download-btn {\n  background-color: #fdba3b;\n  border-color: #fdba3b;\n  color: #fff;\n}\n.tui-image-editor-container .tui-image-editor-load-btn {\n  position: absolute;\n  left: 0;\n  right: 0;\n  display: inline-block;\n  top: 0;\n  bottom: 0;\n  width: 100%;\n  cursor: pointer;\n  opacity: 0;\n}\n.tui-image-editor-container .tui-image-editor-main-container {\n  position: absolute;\n  width: 100%;\n  top: 0;\n  bottom: 64px;\n}\n.tui-image-editor-container .tui-image-editor-main {\n  position: absolute;\n  text-align: center;\n  top: 64px;\n  bottom: 0;\n  right: 0;\n  left: 0;\n}\n.tui-image-editor-container .tui-image-editor-wrap {\n  position: absolute;\n  bottom: 0;\n  width: 100%;\n  overflow: auto;\n}\n.tui-image-editor-container .tui-image-editor-wrap .tui-image-editor-size-wrap {\n  display: table;\n  width: 100%;\n  height: 100%;\n}\n.tui-image-editor-container .tui-image-editor-wrap .tui-image-editor-size-wrap .tui-image-editor-align-wrap {\n  display: table-cell;\n  vertical-align: middle;\n}\n.tui-image-editor-container .tui-image-editor {\n  position: relative;\n  display: inline-block;\n}\n.tui-image-editor-container .tui-image-editor-menu {\n  width: auto;\n  list-style: none;\n  padding: 0;\n  margin: 0 auto;\n  display: table-cell;\n  text-align: center;\n  vertical-align: middle;\n  white-space: nowrap;\n}\n.tui-image-editor-container .tui-image-editor-menu > .tui-image-editor-item {\n  position: relative;\n  display: inline-block;\n  border-radius: 2px;\n  padding: 7px 8px 3px 8px;\n  cursor: pointer;\n  margin: 0 4px;\n}\n.tui-image-editor-container .tui-image-editor-menu > .tui-image-editor-item[tooltip-content]:hover:before {\n  content: '';\n  position: absolute;\n  display: inline-block;\n  margin: 0 auto 0;\n  width: 0;\n  height: 0;\n  border-right: 7px solid transparent;\n  border-top: 7px solid #2f2f2f;\n  border-left: 7px solid transparent;\n  left: 13px;\n  top: -2px;\n}\n.tui-image-editor-container .tui-image-editor-menu > .tui-image-editor-item[tooltip-content]:hover:after {\n  content: attr(tooltip-content);\n  position: absolute;\n  display: inline-block;\n  background-color: #2f2f2f;\n  color: #fff;\n  padding: 5px 8px;\n  font-size: 11px;\n  font-weight: lighter;\n  border-radius: 3px;\n  max-height: 23px;\n  top: -25px;\n  left: 0;\n  min-width: 24px;\n}\n.tui-image-editor-container .tui-image-editor-menu > .tui-image-editor-item.active {\n  background-color: #fff;\n  transition: all 0.3s ease;\n}\n.tui-image-editor-container .tui-image-editor-wrap {\n  position: absolute;\n}\n.tui-image-editor-container .tui-image-editor-grid-visual {\n  display: none;\n  position: absolute;\n  width: 100%;\n  height: 100%;\n  border: 1px solid rgba(255,255,255,0.7);\n}\n.tui-image-editor-container .tui-image-editor-main.tui-image-editor-menu-flip .tui-image-editor,\n.tui-image-editor-container .tui-image-editor-main.tui-image-editor-menu-rotate .tui-image-editor {\n  transition: none;\n}\n.tui-image-editor-container .tui-image-editor-main.tui-image-editor-menu-flip .tui-image-editor-grid-visual,\n.tui-image-editor-container .tui-image-editor-main.tui-image-editor-menu-rotate .tui-image-editor-grid-visual {\n  display: block;\n}\n.tui-image-editor-container .tui-image-editor-grid-visual table {\n  width: 100%;\n  height: 100%;\n  border-collapse: collapse;\n}\n.tui-image-editor-container .tui-image-editor-grid-visual table td {\n  border: 1px solid rgba(255,255,255,0.3);\n}\n.tui-image-editor-container .tui-image-editor-grid-visual table td.dot:before {\n  content: '';\n  position: absolute;\n  box-sizing: border-box;\n  width: 10px;\n  height: 10px;\n  border: 0;\n  box-shadow: 0 0 1px 0 rgba(0,0,0,0.3);\n  border-radius: 100%;\n  background-color: #fff;\n}\n.tui-image-editor-container .tui-image-editor-grid-visual table td.dot.left-top:before {\n  top: -5px;\n  left: -5px;\n}\n.tui-image-editor-container .tui-image-editor-grid-visual table td.dot.right-top:before {\n  top: -5px;\n  right: -5px;\n}\n.tui-image-editor-container .tui-image-editor-grid-visual table td.dot.left-bottom:before {\n  bottom: -5px;\n  left: -5px;\n}\n.tui-image-editor-container .tui-image-editor-grid-visual table td.dot.right-bottom:before {\n  bottom: -5px;\n  right: -5px;\n}\n.tui-image-editor-container .tui-image-editor-submenu {\n  display: none;\n  position: absolute;\n  bottom: 0;\n  width: 100%;\n  height: 150px;\n  white-space: nowrap;\n  z-index: 2;\n}\n.tui-image-editor-container .tui-image-editor-submenu .tui-image-editor-button:hover svg > use.active {\n  display: block;\n}\n.tui-image-editor-container .tui-image-editor-submenu .tui-image-editor-submenu-item li {\n  display: inline-block;\n  vertical-align: top;\n}\n.tui-image-editor-container .tui-image-editor-submenu .tui-image-editor-submenu-item .tui-image-editor-newline {\n  display: block;\n  margin-top: 0;\n}\n.tui-image-editor-container .tui-image-editor-submenu .tui-image-editor-submenu-item .tui-image-editor-button {\n  position: relative;\n  cursor: pointer;\n  display: inline-block;\n  font-weight: normal;\n  font-size: 11px;\n  margin: 0 9px 0 9px;\n}\n.tui-image-editor-container .tui-image-editor-submenu .tui-image-editor-submenu-item .tui-image-editor-button.preset {\n  margin: 0 9px 20px 5px;\n}\n.tui-image-editor-container .tui-image-editor-submenu .tui-image-editor-submenu-item label > span {\n  display: inline-block;\n  cursor: pointer;\n  padding-top: 5px;\n  font-family: \"Noto Sans\", sans-serif;\n  font-size: 11px;\n}\n.tui-image-editor-container .tui-image-editor-submenu .tui-image-editor-submenu-item .tui-image-editor-button.apply label,\n.tui-image-editor-container .tui-image-editor-submenu .tui-image-editor-submenu-item .tui-image-editor-button.cancel label {\n  vertical-align: 7px;\n}\n.tui-image-editor-container .tui-image-editor-submenu > div {\n  display: none;\n  vertical-align: bottom;\n}\n.tui-image-editor-container .tui-image-editor-submenu .tui-image-editor-submenu-style {\n  opacity: 0.95;\n  z-index: -1;\n  position: absolute;\n  top: 0;\n  bottom: 0;\n  left: 0;\n  right: 0;\n  display: block;\n}\n.tui-image-editor-container .tui-image-editor-partition > div {\n  width: 1px;\n  height: 52px;\n  border-left: 1px solid #3c3c3c;\n  margin: 0 8px 0 8px;\n}\n.tui-image-editor-container .tui-image-editor-main.tui-image-editor-menu-filter .tui-image-editor-partition > div {\n  height: 108px;\n  margin: 0 29px 0 0px;\n}\n.tui-image-editor-container .tui-image-editor-submenu-align {\n  text-align: left;\n  margin-right: 30px;\n}\n.tui-image-editor-container .tui-image-editor-submenu-align label > span {\n  width: 55px;\n  white-space: nowrap;\n}\n.tui-image-editor-container .tui-image-editor-submenu-align:first-child {\n  margin-right: 0;\n}\n.tui-image-editor-container .tui-image-editor-submenu-align:first-child label > span {\n  width: 70px;\n}\n.tui-image-editor-container .tui-image-editor-main.tui-image-editor-menu-crop .tui-image-editor-submenu > div.tui-image-editor-menu-crop,\n.tui-image-editor-container .tui-image-editor-main.tui-image-editor-menu-flip .tui-image-editor-submenu > div.tui-image-editor-menu-flip,\n.tui-image-editor-container .tui-image-editor-main.tui-image-editor-menu-rotate .tui-image-editor-submenu > div.tui-image-editor-menu-rotate,\n.tui-image-editor-container .tui-image-editor-main.tui-image-editor-menu-shape .tui-image-editor-submenu > div.tui-image-editor-menu-shape,\n.tui-image-editor-container .tui-image-editor-main.tui-image-editor-menu-text .tui-image-editor-submenu > div.tui-image-editor-menu-text,\n.tui-image-editor-container .tui-image-editor-main.tui-image-editor-menu-mask .tui-image-editor-submenu > div.tui-image-editor-menu-mask,\n.tui-image-editor-container .tui-image-editor-main.tui-image-editor-menu-icon .tui-image-editor-submenu > div.tui-image-editor-menu-icon,\n.tui-image-editor-container .tui-image-editor-main.tui-image-editor-menu-draw .tui-image-editor-submenu > div.tui-image-editor-menu-draw,\n.tui-image-editor-container .tui-image-editor-main.tui-image-editor-menu-filter .tui-image-editor-submenu > div.tui-image-editor-menu-filter {\n  display: table-cell;\n}\n.tui-image-editor-container .tui-image-editor-main.tui-image-editor-menu-crop .tui-image-editor-submenu,\n.tui-image-editor-container .tui-image-editor-main.tui-image-editor-menu-flip .tui-image-editor-submenu,\n.tui-image-editor-container .tui-image-editor-main.tui-image-editor-menu-rotate .tui-image-editor-submenu,\n.tui-image-editor-container .tui-image-editor-main.tui-image-editor-menu-shape .tui-image-editor-submenu,\n.tui-image-editor-container .tui-image-editor-main.tui-image-editor-menu-text .tui-image-editor-submenu,\n.tui-image-editor-container .tui-image-editor-main.tui-image-editor-menu-mask .tui-image-editor-submenu,\n.tui-image-editor-container .tui-image-editor-main.tui-image-editor-menu-icon .tui-image-editor-submenu,\n.tui-image-editor-container .tui-image-editor-main.tui-image-editor-menu-draw .tui-image-editor-submenu,\n.tui-image-editor-container .tui-image-editor-main.tui-image-editor-menu-filter .tui-image-editor-submenu {\n  display: table;\n}\n.tui-image-editor-container .filter-color-item {\n  display: inline-block;\n}\n.tui-image-editor-container .filter-color-item .tui-image-editor-checkbox {\n  display: block;\n}\n.tui-image-editor-container .tui-image-editor-checkbox-wrap {\n  display: inline-block !important;\n  text-align: left;\n}\n.tui-image-editor-container .tui-image-editor-checkbox-wrap.fixed-width {\n  width: 187px;\n  white-space: normal;\n}\n.tui-image-editor-container .tui-image-editor-checkbox {\n  display: inline-block;\n  margin: 1px 0 1px 0;\n}\n.tui-image-editor-container .tui-image-editor-checkbox input {\n  width: 14px;\n  height: 14px;\n  opacity: 0;\n}\n.tui-image-editor-container .tui-image-editor-checkbox > label > span {\n  color: #fff;\n  height: 14px;\n  position: relative;\n}\n.tui-image-editor-container .tui-image-editor-checkbox input + label:before,\n.tui-image-editor-container .tui-image-editor-checkbox > label > span:before {\n  content: '';\n  position: absolute;\n  width: 14px;\n  height: 14px;\n  background-color: #fff;\n  top: 6px;\n  left: -19px;\n  display: inline-block;\n  margin: 0;\n  text-align: center;\n  font-size: 11px;\n  border: 0;\n  border-radius: 2px;\n  padding-top: 1px;\n  box-sizing: border-box;\n}\n.tui-image-editor-container .tui-image-editor-checkbox input[type='checkbox']:checked + span:before {\n  background-size: cover;\n  background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAAAXNSR0IArs4c6QAAAMBJREFUKBWVkjEOwjAMRe2WgZW7IIHEDdhghhuwcQ42rlJugAQS54Cxa5cq1QM5TUpByZfS2j9+dlJVt/tX5ZxbS4ZU9VLkQvSHKTIGRaVJYFmKrBbTCJxE2UgCdDzMZDkHrOV6b95V0US6UmgKodujEZbJg0B0ZgEModO5lrY1TMQf1TpyJGBEjD+E2NPN7ukIUDiF/BfEXgRiGEw8NgkffYGYwCi808fpn/6OvfUfsDr/Vc1IfRf8sKnFVqeiVQfDu0tf/nWH9gAAAABJRU5ErkJggg==\");\n}\n.tui-image-editor-container .tui-image-editor-selectlist-wrap {\n  position: relative;\n}\n.tui-image-editor-container .tui-image-editor-selectlist-wrap select {\n  width: 100%;\n  height: 28px;\n  margin-top: 4px;\n  border: 0;\n  outline: 0;\n  border-radius: 0;\n  border: 1px solid #cbdbdb;\n  background-color: #fff;\n  -webkit-appearance: none;\n  -moz-appearance: none;\n  appearance: none;\n  padding: 0 7px 0 10px;\n}\n.tui-image-editor-container .tui-image-editor-selectlist-wrap .tui-image-editor-selectlist {\n  display: none;\n  position: relative;\n  top: -1px;\n  border: 1px solid #ccc;\n  background-color: #fff;\n  border-top: 0px;\n  padding: 4px 0;\n}\n.tui-image-editor-container .tui-image-editor-selectlist-wrap .tui-image-editor-selectlist li {\n  display: block;\n  text-align: left;\n  padding: 7px 10px;\n  font-family: 'Noto Sans', sans-serif;\n}\n.tui-image-editor-container .tui-image-editor-selectlist-wrap .tui-image-editor-selectlist li:hover {\n  background-color: rgba(81,92,230,0.05);\n}\n.tui-image-editor-container .tui-image-editor-selectlist-wrap:before {\n  content: '';\n  position: absolute;\n  display: inline-block;\n  width: 14px;\n  height: 14px;\n  right: 5px;\n  top: 10px;\n  background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAAAXNSR0IArs4c6QAAAHlJREFUKBVjYBgFOEOAEVkmPDxc89+/f6eAYjzI4kD2FyYmJrOVK1deh4kzwRggGiQBVJCELAZig8SQNYHEmEEEMrh69eo1HR0dfqCYJUickZGxf9WqVf3IakBsFBthklpaWmVA9mEQhrJhUoTp0NBQCRAmrHL4qgAAuu4cWZOZIGsAAAAASUVORK5CYII=\");\n  background-size: cover;\n}\n.tui-image-editor-container .tui-image-editor-selectlist-wrap select::-ms-expand {\n  display: none;\n}\n.tui-image-editor-container .tui-image-editor-virtual-range-bar .tui-image-editor-disabled,\n.tui-image-editor-container .tui-image-editor-virtual-range-subbar .tui-image-editor-disabled,\n.tui-image-editor-container .tui-image-editor-virtual-range-pointer .tui-image-editor-disabled {\n  backbround-color: #f00;\n}\n.tui-image-editor-container .tui-image-editor-range {\n  position: relative;\n  top: 5px;\n  width: 166px;\n  height: 17px;\n  display: inline-block;\n}\n.tui-image-editor-container .tui-image-editor-virtual-range-bar {\n  top: 7px;\n  position: absolute;\n  width: 100%;\n  height: 2px;\n  background-color: #666;\n}\n.tui-image-editor-container .tui-image-editor-virtual-range-subbar {\n  position: absolute;\n  height: 100%;\n  left: 0;\n  right: 0;\n  background-color: #d1d1d1;\n}\n.tui-image-editor-container .tui-image-editor-virtual-range-pointer {\n  position: absolute;\n  cursor: pointer;\n  top: -5px;\n  left: 0;\n  width: 12px;\n  height: 12px;\n  background-color: #fff;\n  border-radius: 100%;\n}\n.tui-image-editor-container .tui-image-editor-range-wrap {\n  display: inline-block;\n  margin-left: 4px;\n}\n.tui-image-editor-container .tui-image-editor-range-wrap.short .tui-image-editor-range {\n  width: 100px;\n}\n.tui-image-editor-container .color-picker-control .tui-image-editor-range {\n  width: 108px;\n  margin-left: 10px;\n}\n.tui-image-editor-container .color-picker-control .tui-image-editor-virtual-range-pointer {\n  background-color: #333;\n}\n.tui-image-editor-container .color-picker-control .tui-image-editor-virtual-range-bar {\n  background-color: #ccc;\n}\n.tui-image-editor-container .color-picker-control .tui-image-editor-virtual-range-subbar {\n  background-color: #606060;\n}\n.tui-image-editor-container .tui-image-editor-range-wrap.tui-image-editor-newline.short {\n  margin-top: -2px;\n  margin-left: 19px;\n}\n.tui-image-editor-container .tui-image-editor-range-wrap.tui-image-editor-newline.short label {\n  color: #8e8e8e;\n  font-weight: normal;\n}\n.tui-image-editor-container .tui-image-editor-range-wrap label {\n  vertical-align: baseline;\n  font-size: 11px;\n  margin-right: 7px;\n  color: #fff;\n}\n.tui-image-editor-container .tui-image-editor-range-value {\n  cursor: default;\n  width: 40px;\n  height: 24px;\n  outline: none;\n  border-radius: 2px;\n  box-shadow: none;\n  border: 1px solid #d5d5d5;\n  text-align: center;\n  background-color: #1c1c1c;\n  color: #fff;\n  font-weight: lighter;\n  vertical-align: baseline;\n  font-family: 'Noto Sans', sans-serif;\n  margin-top: 21px;\n  margin-left: 4px;\n}\n.tui-image-editor-container .tui-image-editor-controls {\n  position: absolute;\n  background-color: #151515;\n  width: 100%;\n  height: 64px;\n  display: table;\n  bottom: 0;\n  z-index: 2;\n}\n.tui-image-editor-container .tui-image-editor-icpartition {\n  display: inline-block;\n  background-color: #282828;\n  width: 1px;\n  height: 24px;\n}\n.tui-image-editor-container.left .tui-image-editor-menu > .tui-image-editor-item[tooltip-content]:before {\n  left: 28px;\n  top: 11px;\n  border-right: 7px solid #2f2f2f;\n  border-top: 7px solid transparent;\n  border-bottom: 7px solid transparent;\n}\n.tui-image-editor-container.left .tui-image-editor-menu > .tui-image-editor-item[tooltip-content]:after {\n  top: 7px;\n  left: 42px;\n  white-space: nowrap;\n}\n.tui-image-editor-container.left .tui-image-editor-submenu {\n  left: 0;\n  height: 100%;\n  width: 248px;\n}\n.tui-image-editor-container.left .tui-image-editor-main-container {\n  left: 64px;\n  width: calc(100% - 64px);\n  height: 100%;\n}\n.tui-image-editor-container.left .tui-image-editor-controls {\n  width: 64px;\n  height: 100%;\n  display: table;\n}\n.tui-image-editor-container.left .tui-image-editor-menu,\n.tui-image-editor-container.right .tui-image-editor-menu {\n  white-space: inherit;\n}\n.tui-image-editor-container.left .tui-image-editor-submenu,\n.tui-image-editor-container.right .tui-image-editor-submenu {\n  white-space: normal;\n}\n.tui-image-editor-container.left .tui-image-editor-submenu > div,\n.tui-image-editor-container.right .tui-image-editor-submenu > div {\n  vertical-align: middle;\n}\n.tui-image-editor-container.left .tui-image-editor-controls li,\n.tui-image-editor-container.right .tui-image-editor-controls li {\n  display: inline-block;\n  margin: 4px auto;\n}\n.tui-image-editor-container.left .tui-image-editor-icpartition,\n.tui-image-editor-container.right .tui-image-editor-icpartition {\n  position: relative;\n  top: -7px;\n  width: 24px;\n  height: 1px;\n}\n.tui-image-editor-container.left .tui-image-editor-submenu .tui-image-editor-partition,\n.tui-image-editor-container.right .tui-image-editor-submenu .tui-image-editor-partition {\n  display: block;\n  width: 75%;\n  margin: auto;\n}\n.tui-image-editor-container.left .tui-image-editor-submenu .tui-image-editor-partition > div,\n.tui-image-editor-container.right .tui-image-editor-submenu .tui-image-editor-partition > div {\n  border-left: 0;\n  height: 10px;\n  border-bottom: 1px solid #3c3c3c;\n  width: 100%;\n  margin: 0;\n}\n.tui-image-editor-container.left .tui-image-editor-submenu .tui-image-editor-submenu-align,\n.tui-image-editor-container.right .tui-image-editor-submenu .tui-image-editor-submenu-align {\n  margin-right: 0;\n}\n.tui-image-editor-container.left .tui-image-editor-submenu .tui-image-editor-submenu-item li,\n.tui-image-editor-container.right .tui-image-editor-submenu .tui-image-editor-submenu-item li {\n  margin-top: 15px;\n}\n.tui-image-editor-container.left .tui-image-editor-submenu .tui-image-editor-submenu-item .tui-colorpicker-clearfix li,\n.tui-image-editor-container.right .tui-image-editor-submenu .tui-image-editor-submenu-item .tui-colorpicker-clearfix li {\n  margin-top: 0;\n}\n.tui-image-editor-container.left .tui-image-editor-checkbox-wrap.fixed-width,\n.tui-image-editor-container.right .tui-image-editor-checkbox-wrap.fixed-width {\n  width: 182px;\n  white-space: normal;\n}\n.tui-image-editor-container.left .tui-image-editor-range-wrap.tui-image-editor-newline label.range,\n.tui-image-editor-container.right .tui-image-editor-range-wrap.tui-image-editor-newline label.range {\n  display: block;\n  text-align: left;\n  width: 75%;\n  margin: auto;\n}\n.tui-image-editor-container.left .tui-image-editor-range,\n.tui-image-editor-container.right .tui-image-editor-range {\n  width: 136px;\n}\n.tui-image-editor-container.right .tui-image-editor-menu > .tui-image-editor-item[tooltip-content]:before {\n  left: -3px;\n  top: 11px;\n  border-left: 7px solid #2f2f2f;\n  border-top: 7px solid transparent;\n  border-bottom: 7px solid transparent;\n}\n.tui-image-editor-container.right .tui-image-editor-menu > .tui-image-editor-item[tooltip-content]:after {\n  top: 7px;\n  left: unset;\n  right: 43px;\n  white-space: nowrap;\n}\n.tui-image-editor-container.right .tui-image-editor-submenu {\n  right: 0;\n  height: 100%;\n  width: 248px;\n}\n.tui-image-editor-container.right .tui-image-editor-main-container {\n  right: 64px;\n  width: calc(100% - 64px);\n  height: 100%;\n}\n.tui-image-editor-container.right .tui-image-editor-controls {\n  right: 0;\n  width: 64px;\n  height: 100%;\n  display: table;\n}\n.tui-image-editor-container.top .tui-image-editor-submenu .tui-image-editor-partition.only-left-right,\n.tui-image-editor-container.bottom .tui-image-editor-submenu .tui-image-editor-partition.only-left-right {\n  display: none;\n}\n.tui-image-editor-container.bottom .tui-image-editor-submenu > div {\n  padding-bottom: 24px;\n}\n.tui-image-editor-container.top .color-picker-control .triangle {\n  top: -8px;\n  border-right: 7px solid transparent;\n  border-top: 0px;\n  border-left: 7px solid transparent;\n  border-bottom: 8px solid #fff;\n}\n.tui-image-editor-container.top .tui-image-editor-size-wrap {\n  height: 100%;\n}\n.tui-image-editor-container.top .tui-image-editor-main-container {\n  bottom: 0;\n}\n.tui-image-editor-container.top .tui-image-editor-menu > .tui-image-editor-item[tooltip-content]:before {\n  left: 13px;\n  border-top: 0;\n  border-bottom: 7px solid #2f2f2f;\n  top: 33px;\n}\n.tui-image-editor-container.top .tui-image-editor-menu > .tui-image-editor-item[tooltip-content]:after {\n  top: 38px;\n}\n.tui-image-editor-container.top .tui-image-editor-submenu {\n  top: 0;\n  bottom: auto;\n}\n.tui-image-editor-container.top .tui-image-editor-submenu > div {\n  padding-top: 24px;\n  vertical-align: top;\n}\n.tui-image-editor-container.top .tui-image-editor-controls-logo {\n  display: table-cell;\n}\n.tui-image-editor-container.top .tui-image-editor-controls-buttons {\n  display: table-cell;\n}\n.tui-image-editor-container.top .tui-image-editor-main {\n  top: 64px;\n  height: calc(100% - 64px);\n}\n.tui-image-editor-container.top .tui-image-editor-controls {\n  top: 0;\n  bottom: inherit;\n}\n.tui-image-editor-container .tie-icon-add-button .tui-image-editor-button {\n  min-width: 42px;\n}\n.tui-image-editor-container .svg_ic-menu,\n.tui-image-editor-container .svg_ic-helpmenu {\n  width: 24px;\n  height: 24px;\n}\n.tui-image-editor-container .svg_ic-submenu {\n  width: 32px;\n  height: 32px;\n}\n.tui-image-editor-container .svg_img-bi {\n  width: 257px;\n  height: 26px;\n}\n.tui-image-editor-container .tui-image-editor-controls svg > use {\n  display: none;\n}\n.tui-image-editor-container .tui-image-editor-controls .enabled svg:hover > use.hover,\n.tui-image-editor-container .tui-image-editor-controls .normal svg:hover > use.hover {\n  display: block;\n}\n.tui-image-editor-container .tui-image-editor-controls .active svg:hover > use.hover {\n  display: none;\n}\n.tui-image-editor-container .tui-image-editor-controls svg > use.normal {\n  display: block;\n}\n.tui-image-editor-container .tui-image-editor-controls .active svg > use.active {\n  display: block;\n}\n.tui-image-editor-container .tui-image-editor-controls .enabled svg > use.enabled {\n  display: block;\n}\n.tui-image-editor-container .tui-image-editor-controls .active svg > use.normal,\n.tui-image-editor-container .tui-image-editor-controls .enabled svg > use.normal {\n  display: none;\n}\n.tui-image-editor-container .tui-image-editor-controls .help svg > use.disabled,\n.tui-image-editor-container .tui-image-editor-controls .help.enabled svg > use.normal {\n  display: block;\n}\n.tui-image-editor-container .tui-image-editor-controls .help.enabled svg > use.disabled {\n  display: none;\n}\n.tui-image-editor-container .tui-image-editor-controls:hover {\n  z-index: 3;\n}\n.tui-image-editor-container div.tui-colorpicker-clearfix {\n  width: 159px;\n  height: 28px;\n  border: 1px solid #d5d5d5;\n  border-radius: 2px;\n  background-color: #f5f5f5;\n  margin-top: 6px;\n  padding: 4px 7px 4px 7px;\n}\n.tui-image-editor-container .tui-colorpicker-palette-hex {\n  width: 114px;\n  background-color: #f5f5f5;\n  border: 0;\n  font-size: 11px;\n  margin-top: 2px;\n  font-family: 'Noto Sans', sans-serif;\n}\n.tui-image-editor-container .tui-colorpicker-palette-hex[value='#ffffff'] + .tui-colorpicker-palette-preview,\n.tui-image-editor-container .tui-colorpicker-palette-hex[value=''] + .tui-colorpicker-palette-preview {\n  border: 1px solid #ccc;\n}\n.tui-image-editor-container .tui-colorpicker-palette-hex[value=''] + .tui-colorpicker-palette-preview {\n  background-size: cover;\n  background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAdBJREFUWAnFl0FuwjAQRZ0ukiugHqFSOQNdseuKW3ALzkA4BateICvUGyCxrtRFd4WuunH/TzykaYJrnLEYaTJJsP2+x8GZZCbQrLU5mj7Bn+EP8HvnCObd+R7xBV5lWfaNON4AnsA38E94qLEt+0yiFaBzAV/Bv+Cxxr4co7hKCDpw1q9wLeNYYdlAwyn8TYt8Hme3+8D5ozcTaMCZ68PXa2tnM2sbEcOZAJhrrpl2DAcTOGNjZPSfCdzkw6JrfbiMv+osBe4y9WOedhm4jZfhbENWuxS44H9Wz/xw4WzqLOAqh1+zycgAwzEMzr5k5gaHOa9ULBwuuDkFlHI1Kl4PJ66kgIpnoywOTmRFAYcbwYk9UMApWkD8zAV5ihcwHk4Rx7gl0IFTQL0EFc+CTQ9OZHWH3YhlVJiVpTHbrTGLhTHLZVgff6s9lyBsI9KduSS83oj+34rTwJutmBmCnMsvozRwZqB5GTkBw6/jdPDu69iJ6BYk6eCcfbcgcQIK/MByaaiMqm8rHcjol2TnpWDhyAKSGdA3FrxtJUToX0ODqatetfGE+8tyEUOV8GY5dGRwLP/MBS4RHQr4bT7NRAQjlcOTfZxmv2G+c4hI8nn+Ax5PG/zhI393AAAAAElFTkSuQmCC\");\n}\n.tui-image-editor-container .tui-colorpicker-palette-preview {\n  border-radius: 100%;\n  float: left;\n  width: 17px;\n  height: 17px;\n  border: 0;\n}\n.tui-image-editor-container .color-picker-control {\n  position: absolute;\n  display: none;\n  z-index: 99;\n  width: 192px;\n  background-color: #fff;\n  box-shadow: 0 3px 22px 6px rgba(0,0,0,0.15);\n  padding: 16px;\n  border-radius: 2px;\n}\n.tui-image-editor-container .color-picker-control .tui-colorpicker-palette-toggle-slider {\n  display: none;\n}\n.tui-image-editor-container .color-picker-control .tui-colorpicker-palette-button {\n  border: 0;\n  border-radius: 100%;\n  margin: 2px;\n  background-size: cover;\n  font-size: 1px;\n}\n.tui-image-editor-container .color-picker-control .tui-colorpicker-palette-button[title='#ffffff'] {\n  border: 1px solid #ccc;\n}\n.tui-image-editor-container .color-picker-control .tui-colorpicker-palette-button[title=''] {\n  border: 1px solid #ccc;\n}\n.tui-image-editor-container .color-picker-control .triangle {\n  width: 0;\n  height: 0;\n  border-right: 7px solid transparent;\n  border-top: 8px solid #fff;\n  border-left: 7px solid transparent;\n  position: absolute;\n  bottom: -8px;\n  left: 84px;\n}\n.tui-image-editor-container .color-picker-control .tui-colorpicker-container,\n.tui-image-editor-container .color-picker-control .tui-colorpicker-palette-container ul,\n.tui-image-editor-container .color-picker-control .tui-colorpicker-palette-container {\n  width: 100%;\n  height: auto;\n}\n.tui-image-editor-container .filter-color-item .color-picker-control label {\n  font-color: #333;\n  font-weight: normal;\n  margin-right: 7pxleft;\n}\n.tui-image-editor-container .filter-color-item .tui-image-editor-checkbox {\n  margin-top: 0;\n}\n.tui-image-editor-container .filter-color-item .tui-image-editor-checkbox input + label:before,\n.tui-image-editor-container .filter-color-item .tui-image-editor-checkbox > label:before {\n  left: -16px;\n}\n.tui-image-editor-container .color-picker {\n  width: 100%;\n  height: auto;\n}\n.tui-image-editor-container .color-picker-value {\n  width: 32px;\n  height: 32px;\n  border: 0px;\n  border-radius: 100%;\n  margin: auto;\n  margin-bottom: 1px;\n}\n.tui-image-editor-container .color-picker-value.transparent {\n  border: 1px solid #cbcbcb;\n  background-size: cover;\n  background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAdBJREFUWAnFl0FuwjAQRZ0ukiugHqFSOQNdseuKW3ALzkA4BateICvUGyCxrtRFd4WuunH/TzykaYJrnLEYaTJJsP2+x8GZZCbQrLU5mj7Bn+EP8HvnCObd+R7xBV5lWfaNON4AnsA38E94qLEt+0yiFaBzAV/Bv+Cxxr4co7hKCDpw1q9wLeNYYdlAwyn8TYt8Hme3+8D5ozcTaMCZ68PXa2tnM2sbEcOZAJhrrpl2DAcTOGNjZPSfCdzkw6JrfbiMv+osBe4y9WOedhm4jZfhbENWuxS44H9Wz/xw4WzqLOAqh1+zycgAwzEMzr5k5gaHOa9ULBwuuDkFlHI1Kl4PJ66kgIpnoywOTmRFAYcbwYk9UMApWkD8zAV5ihcwHk4Rx7gl0IFTQL0EFc+CTQ9OZHWH3YhlVJiVpTHbrTGLhTHLZVgff6s9lyBsI9KduSS83oj+34rTwJutmBmCnMsvozRwZqB5GTkBw6/jdPDu69iJ6BYk6eCcfbcgcQIK/MByaaiMqm8rHcjol2TnpWDhyAKSGdA3FrxtJUToX0ODqatetfGE+8tyEUOV8GY5dGRwLP/MBS4RHQr4bT7NRAQjlcOTfZxmv2G+c4hI8nn+Ax5PG/zhI393AAAAAElFTkSuQmCC\");\n}\n.tui-image-editor-container .color-picker-value + label {\n  color: #fff;\n}\n.tui-image-editor-container .tui-image-editor-submenu svg > use {\n  display: none;\n}\n.tui-image-editor-container .tui-image-editor-submenu svg > use.normal {\n  display: block;\n}\n.tie-icon-add-button.icon-bubble .tui-image-editor-button[data-icontype=\"icon-bubble\"] svg > use.active,\n.tie-icon-add-button.icon-heart .tui-image-editor-button[data-icontype=\"icon-heart\"] svg > use.active,\n.tie-icon-add-button.icon-location .tui-image-editor-button[data-icontype=\"icon-location\"] svg > use.active,\n.tie-icon-add-button.icon-polygon .tui-image-editor-button[data-icontype=\"icon-polygon\"] svg > use.active,\n.tie-icon-add-button.icon-star .tui-image-editor-button[data-icontype=\"icon-star\"] svg > use.active,\n.tie-icon-add-button.icon-star-2 .tui-image-editor-button[data-icontype=\"icon-star-2\"] svg > use.active,\n.tie-icon-add-button.icon-arrow-3 .tui-image-editor-button[data-icontype=\"icon-arrow-3\"] svg > use.active,\n.tie-icon-add-button.icon-arrow-2 .tui-image-editor-button[data-icontype=\"icon-arrow-2\"] svg > use.active,\n.tie-icon-add-button.icon-arrow .tui-image-editor-button[data-icontype=\"icon-arrow\"] svg > use.active {\n  display: block;\n}\n.tie-draw-line-select-button.line .tui-image-editor-button.line svg > use.normal,\n.tie-draw-line-select-button.free .tui-image-editor-button.free svg > use.normal {\n  display: none;\n}\n.tie-draw-line-select-button.line .tui-image-editor-button.line svg > use.active,\n.tie-draw-line-select-button.free .tui-image-editor-button.free svg > use.active {\n  display: block;\n}\n.tie-flip-button.resetFlip .tui-image-editor-button.resetFlip svg > use.normal,\n.tie-flip-button.flipX .tui-image-editor-button.flipX svg > use.normal,\n.tie-flip-button.flipY .tui-image-editor-button.flipY svg > use.normal {\n  display: none;\n}\n.tie-flip-button.resetFlip .tui-image-editor-button.resetFlip svg > use.active,\n.tie-flip-button.flipX .tui-image-editor-button.flipX svg > use.active,\n.tie-flip-button.flipY .tui-image-editor-button.flipY svg > use.active {\n  display: block;\n}\n.tie-mask-apply.apply.active .tui-image-editor-button.apply label {\n  color: #fff;\n}\n.tie-mask-apply.apply.active .tui-image-editor-button.apply svg > use.active {\n  display: block;\n}\n.tie-crop-button .tui-image-editor-button.apply,\n.tie-crop-preset-button .tui-image-editor-button.apply {\n  margin-right: 24px;\n}\n.tie-crop-button .tui-image-editor-button.preset.active svg > use.active,\n.tie-crop-preset-button .tui-image-editor-button.preset.active svg > use.active {\n  display: block;\n}\n.tie-crop-button .tui-image-editor-button.apply.active svg > use.active,\n.tie-crop-preset-button .tui-image-editor-button.apply.active svg > use.active {\n  display: block;\n}\n.tie-shape-button.rect .tui-image-editor-button.rect svg > use.normal,\n.tie-shape-button.circle .tui-image-editor-button.circle svg > use.normal,\n.tie-shape-button.triangle .tui-image-editor-button.triangle svg > use.normal {\n  display: none;\n}\n.tie-shape-button.rect .tui-image-editor-button.rect svg > use.active,\n.tie-shape-button.circle .tui-image-editor-button.circle svg > use.active,\n.tie-shape-button.triangle .tui-image-editor-button.triangle svg > use.active {\n  display: block;\n}\n.tie-text-effect-button .tui-image-editor-button.active svg > use.active {\n  display: block;\n}\n.tie-text-align-button.left .tui-image-editor-button.left svg > use.active,\n.tie-text-align-button.center .tui-image-editor-button.center svg > use.active,\n.tie-text-align-button.right .tui-image-editor-button.right svg > use.active {\n  display: block;\n}\n.tie-mask-image-file,\n.tie-icon-image-file {\n  opacity: 0;\n  position: absolute;\n  width: 100%;\n  height: 100%;\n  border: 1px solid #008000;\n  cursor: inherit;\n  left: 0;\n  top: 0;\n}\n.tui-image-editor-container.top.tui-image-editor-top-optimization .tui-image-editor-controls ul {\n  text-align: right;\n}\n.tui-image-editor-container.top.tui-image-editor-top-optimization .tui-image-editor-controls-logo {\n  display: none;\n}\n/*# sourceMappingURL=src/css/index.css.map */\n","body > textarea\n    position: fixed !important;\n\n+prefix-classes(prefix)\n  .-container\n    margin: 0;\n    padding: 0;\n    box-sizing: border-box;\n    min-height: 300px;\n    height: 100%;\n    position: relative;\n    background-color: #282828;\n    overflow: hidden;\n    letter-spacing: 0.3px;\n  \n    div, ul, label, input, li\n      box-sizing: border-box;\n      margin: 0;\n      padding: 0;\n      -ms-user-select: none; \n      -moz-user-select: -moz-none;\n      -khtml-user-select: none;\n      -webkit-user-select: none;\n      user-select: none;\n  \n    .-header\n        /* BUTTON AND LOGO */\n        min-width: 533px;\n        position: absolute;\n        background-color: #151515;\n        top: 0;\n        width: 100%;\n    .-header-buttons,\n    .-controls-buttons\n        float: right;\n        margin: 8px;\n\n    .-header-logo,\n    .-controls-logo\n        float: left;\n        width: 30%;\n        padding: 17px;\n\n    .-controls-logo,\n    .-controls-buttons\n        width: 270px;\n        height: 100%;\n        display: none;\n\n    .-header-buttons button,\n    .-header-buttons div,\n    .-controls-buttons button,\n    .-controls-buttons div\n        display: inline-block;\n        position: relative;\n        width: 120px;\n        height: 40px;\n        padding: 0;\n        line-height: 40px;\n        outline: none;\n        border-radius: 20px;\n        border: 1px solid #ddd;\n        font-family: 'Noto Sans', sans-serif;\n        font-size: 12px;\n        font-weight: bold;\n        cursor: pointer;\n        vertical-align: middle;\n        letter-spacing: 0.3px;\n        text-align: center;\n\n    .-download-btn\n        background-color: #fdba3b;\n        border-color: #fdba3b;\n        color: #fff;\n    .-load-btn\n        position: absolute;\n        left: 0;\n        right: 0;\n        display: inline-block;\n        top: 0;\n        bottom: 0;\n        width: 100%;\n        cursor: pointer;\n        opacity: 0;\n    .-main-container\n        position: absolute;\n        width: 100%;\n        top: 0;\n        bottom: 64px;\n    .-main\n        position: absolute;\n        text-align: center;\n        top: 64px;\n        bottom: 0;\n        right: 0;\n        left: 0;\n    .-wrap\n        position: absolute;\n        bottom: 0;\n        width: 100%;\n        overflow: auto;\n        .-size-wrap\n            display: table;\n            width: 100%;\n            height: 100%\n            .-align-wrap\n                display: table-cell;\n                vertical-align: middle;\n    .\n        position: relative;\n        display: inline-block;\n\n\n/* BIG MENU */\n.{prefix}-container\n    .{prefix}-menu\n        width: auto;\n        list-style: none;\n        padding: 0;\n        margin: 0 auto;\n        display: table-cell;\n        text-align: center;\n        vertical-align: middle;\n        white-space: nowrap;\n        > .{prefix}-item\n            position: relative;\n            display: inline-block;\n            border-radius: 2px;\n            padding: 7px 8px 3px 8px;\n            cursor: pointer;\n            margin: 0 4px;\n        > .{prefix}-item[tooltip-content]:hover\n            &:before\n                content: '';\n                position: absolute;\n                display: inline-block;\n                margin: 0 auto 0;\n                width: 0;\n                height: 0;\n                border-right: 7px solid transparent;\n                border-top: 7px solid #2f2f2f;\n                border-left: 7px solid transparent;\n                left: 13px;\n                top: -2px;\n            &:after\n                content: attr(tooltip-content);\n                position: absolute;\n                display: inline-block;\n                background-color: #2f2f2f;\n                color: #fff;\n                padding: 5px 8px;\n                font-size: 11px;\n                font-weight: lighter;\n                border-radius: 3px;\n                max-height: 23px;\n                top: -25px;\n                left: 0;\n                min-width: 24px;\n        > .{prefix}-item.active\n            background-color: #fff;\n            transition: all .3s ease;\n    .{prefix}-wrap\n        position: absolute;\n","body > textarea {\n  position: fixed !important;\n}\n.tui-image-editor-container {\n  margin: 0;\n  padding: 0;\n  box-sizing: border-box;\n  min-height: 300px;\n  height: 100%;\n  position: relative;\n  background-color: #282828;\n  overflow: hidden;\n  letter-spacing: 0.3px;\n}\n.tui-image-editor-container div,\n.tui-image-editor-container ul,\n.tui-image-editor-container label,\n.tui-image-editor-container input,\n.tui-image-editor-container li {\n  box-sizing: border-box;\n  margin: 0;\n  padding: 0;\n  -ms-user-select: none;\n  -moz-user-select: -moz-none;\n  -khtml-user-select: none;\n  -webkit-user-select: none;\n  user-select: none;\n}\n.tui-image-editor-container .tui-image-editor-header {\n/* BUTTON AND LOGO */\n  min-width: 533px;\n  position: absolute;\n  background-color: #151515;\n  top: 0;\n  width: 100%;\n}\n.tui-image-editor-container .tui-image-editor-header-buttons,\n.tui-image-editor-container .tui-image-editor-controls-buttons {\n  float: right;\n  margin: 8px;\n}\n.tui-image-editor-container .tui-image-editor-header-logo,\n.tui-image-editor-container .tui-image-editor-controls-logo {\n  float: left;\n  width: 30%;\n  padding: 17px;\n}\n.tui-image-editor-container .tui-image-editor-controls-logo,\n.tui-image-editor-container .tui-image-editor-controls-buttons {\n  width: 270px;\n  height: 100%;\n  display: none;\n}\n.tui-image-editor-container .tui-image-editor-header-buttons button,\n.tui-image-editor-container .tui-image-editor-header-buttons div,\n.tui-image-editor-container .tui-image-editor-controls-buttons button,\n.tui-image-editor-container .tui-image-editor-controls-buttons div {\n  display: inline-block;\n  position: relative;\n  width: 120px;\n  height: 40px;\n  padding: 0;\n  line-height: 40px;\n  outline: none;\n  border-radius: 20px;\n  border: 1px solid #ddd;\n  font-family: 'Noto Sans', sans-serif;\n  font-size: 12px;\n  font-weight: bold;\n  cursor: pointer;\n  vertical-align: middle;\n  letter-spacing: 0.3px;\n  text-align: center;\n}\n.tui-image-editor-container .tui-image-editor-download-btn {\n  background-color: #fdba3b;\n  border-color: #fdba3b;\n  color: #fff;\n}\n.tui-image-editor-container .tui-image-editor-load-btn {\n  position: absolute;\n  left: 0;\n  right: 0;\n  display: inline-block;\n  top: 0;\n  bottom: 0;\n  width: 100%;\n  cursor: pointer;\n  opacity: 0;\n}\n.tui-image-editor-container .tui-image-editor-main-container {\n  position: absolute;\n  width: 100%;\n  top: 0;\n  bottom: 64px;\n}\n.tui-image-editor-container .tui-image-editor-main {\n  position: absolute;\n  text-align: center;\n  top: 64px;\n  bottom: 0;\n  right: 0;\n  left: 0;\n}\n.tui-image-editor-container .tui-image-editor-wrap {\n  position: absolute;\n  bottom: 0;\n  width: 100%;\n  overflow: auto;\n}\n.tui-image-editor-container .tui-image-editor-wrap .tui-image-editor-size-wrap {\n  display: table;\n  width: 100%;\n  height: 100%;\n}\n.tui-image-editor-container .tui-image-editor-wrap .tui-image-editor-size-wrap .tui-image-editor-align-wrap {\n  display: table-cell;\n  vertical-align: middle;\n}\n.tui-image-editor-container .tui-image-editor {\n  position: relative;\n  display: inline-block;\n}\n.tui-image-editor-container .tui-image-editor-menu {\n  width: auto;\n  list-style: none;\n  padding: 0;\n  margin: 0 auto;\n  display: table-cell;\n  text-align: center;\n  vertical-align: middle;\n  white-space: nowrap;\n}\n.tui-image-editor-container .tui-image-editor-menu > .tui-image-editor-item {\n  position: relative;\n  display: inline-block;\n  border-radius: 2px;\n  padding: 7px 8px 3px 8px;\n  cursor: pointer;\n  margin: 0 4px;\n}\n.tui-image-editor-container .tui-image-editor-menu > .tui-image-editor-item[tooltip-content]:hover:before {\n  content: '';\n  position: absolute;\n  display: inline-block;\n  margin: 0 auto 0;\n  width: 0;\n  height: 0;\n  border-right: 7px solid transparent;\n  border-top: 7px solid #2f2f2f;\n  border-left: 7px solid transparent;\n  left: 13px;\n  top: -2px;\n}\n.tui-image-editor-container .tui-image-editor-menu > .tui-image-editor-item[tooltip-content]:hover:after {\n  content: attr(tooltip-content);\n  position: absolute;\n  display: inline-block;\n  background-color: #2f2f2f;\n  color: #fff;\n  padding: 5px 8px;\n  font-size: 11px;\n  font-weight: lighter;\n  border-radius: 3px;\n  max-height: 23px;\n  top: -25px;\n  left: 0;\n  min-width: 24px;\n}\n.tui-image-editor-container .tui-image-editor-menu > .tui-image-editor-item.active {\n  background-color: #fff;\n  transition: all 0.3s ease;\n}\n.tui-image-editor-container .tui-image-editor-wrap {\n  position: absolute;\n}\n.tui-image-editor-container .tui-image-editor-grid-visual {\n  display: none;\n  position: absolute;\n  width: 100%;\n  height: 100%;\n  border: 1px solid rgba(255,255,255,0.7);\n}\n.tui-image-editor-container .tui-image-editor-main.tui-image-editor-menu-flip .tui-image-editor,\n.tui-image-editor-container .tui-image-editor-main.tui-image-editor-menu-rotate .tui-image-editor {\n  transition: none;\n}\n.tui-image-editor-container .tui-image-editor-main.tui-image-editor-menu-flip .tui-image-editor-grid-visual,\n.tui-image-editor-container .tui-image-editor-main.tui-image-editor-menu-rotate .tui-image-editor-grid-visual {\n  display: block;\n}\n.tui-image-editor-container .tui-image-editor-grid-visual table {\n  width: 100%;\n  height: 100%;\n  border-collapse: collapse;\n}\n.tui-image-editor-container .tui-image-editor-grid-visual table td {\n  border: 1px solid rgba(255,255,255,0.3);\n}\n.tui-image-editor-container .tui-image-editor-grid-visual table td.dot:before {\n  content: '';\n  position: absolute;\n  box-sizing: border-box;\n  width: 10px;\n  height: 10px;\n  border: 0;\n  box-shadow: 0 0 1px 0 rgba(0,0,0,0.3);\n  border-radius: 100%;\n  background-color: #fff;\n}\n.tui-image-editor-container .tui-image-editor-grid-visual table td.dot.left-top:before {\n  top: -5px;\n  left: -5px;\n}\n.tui-image-editor-container .tui-image-editor-grid-visual table td.dot.right-top:before {\n  top: -5px;\n  right: -5px;\n}\n.tui-image-editor-container .tui-image-editor-grid-visual table td.dot.left-bottom:before {\n  bottom: -5px;\n  left: -5px;\n}\n.tui-image-editor-container .tui-image-editor-grid-visual table td.dot.right-bottom:before {\n  bottom: -5px;\n  right: -5px;\n}\n.tui-image-editor-container .tui-image-editor-submenu {\n  display: none;\n  position: absolute;\n  bottom: 0;\n  width: 100%;\n  height: 150px;\n  white-space: nowrap;\n  z-index: 2;\n}\n.tui-image-editor-container .tui-image-editor-submenu .tui-image-editor-button:hover svg > use.active {\n  display: block;\n}\n.tui-image-editor-container .tui-image-editor-submenu .tui-image-editor-submenu-item li {\n  display: inline-block;\n  vertical-align: top;\n}\n.tui-image-editor-container .tui-image-editor-submenu .tui-image-editor-submenu-item .tui-image-editor-newline {\n  display: block;\n  margin-top: 0;\n}\n.tui-image-editor-container .tui-image-editor-submenu .tui-image-editor-submenu-item .tui-image-editor-button {\n  position: relative;\n  cursor: pointer;\n  display: inline-block;\n  font-weight: normal;\n  font-size: 11px;\n  margin: 0 9px 0 9px;\n}\n.tui-image-editor-container .tui-image-editor-submenu .tui-image-editor-submenu-item .tui-image-editor-button.preset {\n  margin: 0 9px 20px 5px;\n}\n.tui-image-editor-container .tui-image-editor-submenu .tui-image-editor-submenu-item label > span {\n  display: inline-block;\n  cursor: pointer;\n  padding-top: 5px;\n  font-family: \"Noto Sans\", sans-serif;\n  font-size: 11px;\n}\n.tui-image-editor-container .tui-image-editor-submenu .tui-image-editor-submenu-item .tui-image-editor-button.apply label,\n.tui-image-editor-container .tui-image-editor-submenu .tui-image-editor-submenu-item .tui-image-editor-button.cancel label {\n  vertical-align: 7px;\n}\n.tui-image-editor-container .tui-image-editor-submenu > div {\n  display: none;\n  vertical-align: bottom;\n}\n.tui-image-editor-container .tui-image-editor-submenu .tui-image-editor-submenu-style {\n  opacity: 0.95;\n  z-index: -1;\n  position: absolute;\n  top: 0;\n  bottom: 0;\n  left: 0;\n  right: 0;\n  display: block;\n}\n.tui-image-editor-container .tui-image-editor-partition > div {\n  width: 1px;\n  height: 52px;\n  border-left: 1px solid #3c3c3c;\n  margin: 0 8px 0 8px;\n}\n.tui-image-editor-container .tui-image-editor-main.tui-image-editor-menu-filter .tui-image-editor-partition > div {\n  height: 108px;\n  margin: 0 29px 0 0px;\n}\n.tui-image-editor-container .tui-image-editor-submenu-align {\n  text-align: left;\n  margin-right: 30px;\n}\n.tui-image-editor-container .tui-image-editor-submenu-align label > span {\n  width: 55px;\n  white-space: nowrap;\n}\n.tui-image-editor-container .tui-image-editor-submenu-align:first-child {\n  margin-right: 0;\n}\n.tui-image-editor-container .tui-image-editor-submenu-align:first-child label > span {\n  width: 70px;\n}\n.tui-image-editor-container .tui-image-editor-main.tui-image-editor-menu-crop .tui-image-editor-submenu > div.tui-image-editor-menu-crop,\n.tui-image-editor-container .tui-image-editor-main.tui-image-editor-menu-flip .tui-image-editor-submenu > div.tui-image-editor-menu-flip,\n.tui-image-editor-container .tui-image-editor-main.tui-image-editor-menu-rotate .tui-image-editor-submenu > div.tui-image-editor-menu-rotate,\n.tui-image-editor-container .tui-image-editor-main.tui-image-editor-menu-shape .tui-image-editor-submenu > div.tui-image-editor-menu-shape,\n.tui-image-editor-container .tui-image-editor-main.tui-image-editor-menu-text .tui-image-editor-submenu > div.tui-image-editor-menu-text,\n.tui-image-editor-container .tui-image-editor-main.tui-image-editor-menu-mask .tui-image-editor-submenu > div.tui-image-editor-menu-mask,\n.tui-image-editor-container .tui-image-editor-main.tui-image-editor-menu-icon .tui-image-editor-submenu > div.tui-image-editor-menu-icon,\n.tui-image-editor-container .tui-image-editor-main.tui-image-editor-menu-draw .tui-image-editor-submenu > div.tui-image-editor-menu-draw,\n.tui-image-editor-container .tui-image-editor-main.tui-image-editor-menu-filter .tui-image-editor-submenu > div.tui-image-editor-menu-filter {\n  display: table-cell;\n}\n.tui-image-editor-container .tui-image-editor-main.tui-image-editor-menu-crop .tui-image-editor-submenu,\n.tui-image-editor-container .tui-image-editor-main.tui-image-editor-menu-flip .tui-image-editor-submenu,\n.tui-image-editor-container .tui-image-editor-main.tui-image-editor-menu-rotate .tui-image-editor-submenu,\n.tui-image-editor-container .tui-image-editor-main.tui-image-editor-menu-shape .tui-image-editor-submenu,\n.tui-image-editor-container .tui-image-editor-main.tui-image-editor-menu-text .tui-image-editor-submenu,\n.tui-image-editor-container .tui-image-editor-main.tui-image-editor-menu-mask .tui-image-editor-submenu,\n.tui-image-editor-container .tui-image-editor-main.tui-image-editor-menu-icon .tui-image-editor-submenu,\n.tui-image-editor-container .tui-image-editor-main.tui-image-editor-menu-draw .tui-image-editor-submenu,\n.tui-image-editor-container .tui-image-editor-main.tui-image-editor-menu-filter .tui-image-editor-submenu {\n  display: table;\n}\n.tui-image-editor-container .filter-color-item {\n  display: inline-block;\n}\n.tui-image-editor-container .filter-color-item .tui-image-editor-checkbox {\n  display: block;\n}\n.tui-image-editor-container .tui-image-editor-checkbox-wrap {\n  display: inline-block !important;\n  text-align: left;\n}\n.tui-image-editor-container .tui-image-editor-checkbox-wrap.fixed-width {\n  width: 187px;\n  white-space: normal;\n}\n.tui-image-editor-container .tui-image-editor-checkbox {\n  display: inline-block;\n  margin: 1px 0 1px 0;\n}\n.tui-image-editor-container .tui-image-editor-checkbox input {\n  width: 14px;\n  height: 14px;\n  opacity: 0;\n}\n.tui-image-editor-container .tui-image-editor-checkbox > label > span {\n  color: #fff;\n  height: 14px;\n  position: relative;\n}\n.tui-image-editor-container .tui-image-editor-checkbox input + label:before,\n.tui-image-editor-container .tui-image-editor-checkbox > label > span:before {\n  content: '';\n  position: absolute;\n  width: 14px;\n  height: 14px;\n  background-color: #fff;\n  top: 6px;\n  left: -19px;\n  display: inline-block;\n  margin: 0;\n  text-align: center;\n  font-size: 11px;\n  border: 0;\n  border-radius: 2px;\n  padding-top: 1px;\n  box-sizing: border-box;\n}\n.tui-image-editor-container .tui-image-editor-checkbox input[type='checkbox']:checked + span:before {\n  background-size: cover;\n  background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAAAXNSR0IArs4c6QAAAMBJREFUKBWVkjEOwjAMRe2WgZW7IIHEDdhghhuwcQ42rlJugAQS54Cxa5cq1QM5TUpByZfS2j9+dlJVt/tX5ZxbS4ZU9VLkQvSHKTIGRaVJYFmKrBbTCJxE2UgCdDzMZDkHrOV6b95V0US6UmgKodujEZbJg0B0ZgEModO5lrY1TMQf1TpyJGBEjD+E2NPN7ukIUDiF/BfEXgRiGEw8NgkffYGYwCi808fpn/6OvfUfsDr/Vc1IfRf8sKnFVqeiVQfDu0tf/nWH9gAAAABJRU5ErkJggg==\");\n}\n.tui-image-editor-container .tui-image-editor-selectlist-wrap {\n  position: relative;\n}\n.tui-image-editor-container .tui-image-editor-selectlist-wrap select {\n  width: 100%;\n  height: 28px;\n  margin-top: 4px;\n  border: 0;\n  outline: 0;\n  border-radius: 0;\n  border: 1px solid #cbdbdb;\n  background-color: #fff;\n  -webkit-appearance: none;\n  -moz-appearance: none;\n  appearance: none;\n  padding: 0 7px 0 10px;\n}\n.tui-image-editor-container .tui-image-editor-selectlist-wrap .tui-image-editor-selectlist {\n  display: none;\n  position: relative;\n  top: -1px;\n  border: 1px solid #ccc;\n  background-color: #fff;\n  border-top: 0px;\n  padding: 4px 0;\n}\n.tui-image-editor-container .tui-image-editor-selectlist-wrap .tui-image-editor-selectlist li {\n  display: block;\n  text-align: left;\n  padding: 7px 10px;\n  font-family: 'Noto Sans', sans-serif;\n}\n.tui-image-editor-container .tui-image-editor-selectlist-wrap .tui-image-editor-selectlist li:hover {\n  background-color: rgba(81,92,230,0.05);\n}\n.tui-image-editor-container .tui-image-editor-selectlist-wrap:before {\n  content: '';\n  position: absolute;\n  display: inline-block;\n  width: 14px;\n  height: 14px;\n  right: 5px;\n  top: 10px;\n  background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAAAXNSR0IArs4c6QAAAHlJREFUKBVjYBgFOEOAEVkmPDxc89+/f6eAYjzI4kD2FyYmJrOVK1deh4kzwRggGiQBVJCELAZig8SQNYHEmEEEMrh69eo1HR0dfqCYJUickZGxf9WqVf3IakBsFBthklpaWmVA9mEQhrJhUoTp0NBQCRAmrHL4qgAAuu4cWZOZIGsAAAAASUVORK5CYII=\");\n  background-size: cover;\n}\n.tui-image-editor-container .tui-image-editor-selectlist-wrap select::-ms-expand {\n  display: none;\n}\n.tui-image-editor-container .tui-image-editor-virtual-range-bar .tui-image-editor-disabled,\n.tui-image-editor-container .tui-image-editor-virtual-range-subbar .tui-image-editor-disabled,\n.tui-image-editor-container .tui-image-editor-virtual-range-pointer .tui-image-editor-disabled {\n  backbround-color: #f00;\n}\n.tui-image-editor-container .tui-image-editor-range {\n  position: relative;\n  top: 5px;\n  width: 166px;\n  height: 17px;\n  display: inline-block;\n}\n.tui-image-editor-container .tui-image-editor-virtual-range-bar {\n  top: 7px;\n  position: absolute;\n  width: 100%;\n  height: 2px;\n  background-color: #666;\n}\n.tui-image-editor-container .tui-image-editor-virtual-range-subbar {\n  position: absolute;\n  height: 100%;\n  left: 0;\n  right: 0;\n  background-color: #d1d1d1;\n}\n.tui-image-editor-container .tui-image-editor-virtual-range-pointer {\n  position: absolute;\n  cursor: pointer;\n  top: -5px;\n  left: 0;\n  width: 12px;\n  height: 12px;\n  background-color: #fff;\n  border-radius: 100%;\n}\n.tui-image-editor-container .tui-image-editor-range-wrap {\n  display: inline-block;\n  margin-left: 4px;\n}\n.tui-image-editor-container .tui-image-editor-range-wrap.short .tui-image-editor-range {\n  width: 100px;\n}\n.tui-image-editor-container .color-picker-control .tui-image-editor-range {\n  width: 108px;\n  margin-left: 10px;\n}\n.tui-image-editor-container .color-picker-control .tui-image-editor-virtual-range-pointer {\n  background-color: #333;\n}\n.tui-image-editor-container .color-picker-control .tui-image-editor-virtual-range-bar {\n  background-color: #ccc;\n}\n.tui-image-editor-container .color-picker-control .tui-image-editor-virtual-range-subbar {\n  background-color: #606060;\n}\n.tui-image-editor-container .tui-image-editor-range-wrap.tui-image-editor-newline.short {\n  margin-top: -2px;\n  margin-left: 19px;\n}\n.tui-image-editor-container .tui-image-editor-range-wrap.tui-image-editor-newline.short label {\n  color: #8e8e8e;\n  font-weight: normal;\n}\n.tui-image-editor-container .tui-image-editor-range-wrap label {\n  vertical-align: baseline;\n  font-size: 11px;\n  margin-right: 7px;\n  color: #fff;\n}\n.tui-image-editor-container .tui-image-editor-range-value {\n  cursor: default;\n  width: 40px;\n  height: 24px;\n  outline: none;\n  border-radius: 2px;\n  box-shadow: none;\n  border: 1px solid #d5d5d5;\n  text-align: center;\n  background-color: #1c1c1c;\n  color: #fff;\n  font-weight: lighter;\n  vertical-align: baseline;\n  font-family: 'Noto Sans', sans-serif;\n  margin-top: 21px;\n  margin-left: 4px;\n}\n.tui-image-editor-container .tui-image-editor-controls {\n  position: absolute;\n  background-color: #151515;\n  width: 100%;\n  height: 64px;\n  display: table;\n  bottom: 0;\n  z-index: 2;\n}\n.tui-image-editor-container .tui-image-editor-icpartition {\n  display: inline-block;\n  background-color: #282828;\n  width: 1px;\n  height: 24px;\n}\n.tui-image-editor-container.left .tui-image-editor-menu > .tui-image-editor-item[tooltip-content]:before {\n  left: 28px;\n  top: 11px;\n  border-right: 7px solid #2f2f2f;\n  border-top: 7px solid transparent;\n  border-bottom: 7px solid transparent;\n}\n.tui-image-editor-container.left .tui-image-editor-menu > .tui-image-editor-item[tooltip-content]:after {\n  top: 7px;\n  left: 42px;\n  white-space: nowrap;\n}\n.tui-image-editor-container.left .tui-image-editor-submenu {\n  left: 0;\n  height: 100%;\n  width: 248px;\n}\n.tui-image-editor-container.left .tui-image-editor-main-container {\n  left: 64px;\n  width: calc(100% - 64px);\n  height: 100%;\n}\n.tui-image-editor-container.left .tui-image-editor-controls {\n  width: 64px;\n  height: 100%;\n  display: table;\n}\n.tui-image-editor-container.left .tui-image-editor-menu,\n.tui-image-editor-container.right .tui-image-editor-menu {\n  white-space: inherit;\n}\n.tui-image-editor-container.left .tui-image-editor-submenu,\n.tui-image-editor-container.right .tui-image-editor-submenu {\n  white-space: normal;\n}\n.tui-image-editor-container.left .tui-image-editor-submenu > div,\n.tui-image-editor-container.right .tui-image-editor-submenu > div {\n  vertical-align: middle;\n}\n.tui-image-editor-container.left .tui-image-editor-controls li,\n.tui-image-editor-container.right .tui-image-editor-controls li {\n  display: inline-block;\n  margin: 4px auto;\n}\n.tui-image-editor-container.left .tui-image-editor-icpartition,\n.tui-image-editor-container.right .tui-image-editor-icpartition {\n  position: relative;\n  top: -7px;\n  width: 24px;\n  height: 1px;\n}\n.tui-image-editor-container.left .tui-image-editor-submenu .tui-image-editor-partition,\n.tui-image-editor-container.right .tui-image-editor-submenu .tui-image-editor-partition {\n  display: block;\n  width: 75%;\n  margin: auto;\n}\n.tui-image-editor-container.left .tui-image-editor-submenu .tui-image-editor-partition > div,\n.tui-image-editor-container.right .tui-image-editor-submenu .tui-image-editor-partition > div {\n  border-left: 0;\n  height: 10px;\n  border-bottom: 1px solid #3c3c3c;\n  width: 100%;\n  margin: 0;\n}\n.tui-image-editor-container.left .tui-image-editor-submenu .tui-image-editor-submenu-align,\n.tui-image-editor-container.right .tui-image-editor-submenu .tui-image-editor-submenu-align {\n  margin-right: 0;\n}\n.tui-image-editor-container.left .tui-image-editor-submenu .tui-image-editor-submenu-item li,\n.tui-image-editor-container.right .tui-image-editor-submenu .tui-image-editor-submenu-item li {\n  margin-top: 15px;\n}\n.tui-image-editor-container.left .tui-image-editor-submenu .tui-image-editor-submenu-item .tui-colorpicker-clearfix li,\n.tui-image-editor-container.right .tui-image-editor-submenu .tui-image-editor-submenu-item .tui-colorpicker-clearfix li {\n  margin-top: 0;\n}\n.tui-image-editor-container.left .tui-image-editor-checkbox-wrap.fixed-width,\n.tui-image-editor-container.right .tui-image-editor-checkbox-wrap.fixed-width {\n  width: 182px;\n  white-space: normal;\n}\n.tui-image-editor-container.left .tui-image-editor-range-wrap.tui-image-editor-newline label.range,\n.tui-image-editor-container.right .tui-image-editor-range-wrap.tui-image-editor-newline label.range {\n  display: block;\n  text-align: left;\n  width: 75%;\n  margin: auto;\n}\n.tui-image-editor-container.left .tui-image-editor-range,\n.tui-image-editor-container.right .tui-image-editor-range {\n  width: 136px;\n}\n.tui-image-editor-container.right .tui-image-editor-menu > .tui-image-editor-item[tooltip-content]:before {\n  left: -3px;\n  top: 11px;\n  border-left: 7px solid #2f2f2f;\n  border-top: 7px solid transparent;\n  border-bottom: 7px solid transparent;\n}\n.tui-image-editor-container.right .tui-image-editor-menu > .tui-image-editor-item[tooltip-content]:after {\n  top: 7px;\n  left: unset;\n  right: 43px;\n  white-space: nowrap;\n}\n.tui-image-editor-container.right .tui-image-editor-submenu {\n  right: 0;\n  height: 100%;\n  width: 248px;\n}\n.tui-image-editor-container.right .tui-image-editor-main-container {\n  right: 64px;\n  width: calc(100% - 64px);\n  height: 100%;\n}\n.tui-image-editor-container.right .tui-image-editor-controls {\n  right: 0;\n  width: 64px;\n  height: 100%;\n  display: table;\n}\n.tui-image-editor-container.top .tui-image-editor-submenu .tui-image-editor-partition.only-left-right,\n.tui-image-editor-container.bottom .tui-image-editor-submenu .tui-image-editor-partition.only-left-right {\n  display: none;\n}\n.tui-image-editor-container.bottom .tui-image-editor-submenu > div {\n  padding-bottom: 24px;\n}\n.tui-image-editor-container.top .color-picker-control .triangle {\n  top: -8px;\n  border-right: 7px solid transparent;\n  border-top: 0px;\n  border-left: 7px solid transparent;\n  border-bottom: 8px solid #fff;\n}\n.tui-image-editor-container.top .tui-image-editor-size-wrap {\n  height: 100%;\n}\n.tui-image-editor-container.top .tui-image-editor-main-container {\n  bottom: 0;\n}\n.tui-image-editor-container.top .tui-image-editor-menu > .tui-image-editor-item[tooltip-content]:before {\n  left: 13px;\n  border-top: 0;\n  border-bottom: 7px solid #2f2f2f;\n  top: 33px;\n}\n.tui-image-editor-container.top .tui-image-editor-menu > .tui-image-editor-item[tooltip-content]:after {\n  top: 38px;\n}\n.tui-image-editor-container.top .tui-image-editor-submenu {\n  top: 0;\n  bottom: auto;\n}\n.tui-image-editor-container.top .tui-image-editor-submenu > div {\n  padding-top: 24px;\n  vertical-align: top;\n}\n.tui-image-editor-container.top .tui-image-editor-controls-logo {\n  display: table-cell;\n}\n.tui-image-editor-container.top .tui-image-editor-controls-buttons {\n  display: table-cell;\n}\n.tui-image-editor-container.top .tui-image-editor-main {\n  top: 64px;\n  height: calc(100% - 64px);\n}\n.tui-image-editor-container.top .tui-image-editor-controls {\n  top: 0;\n  bottom: inherit;\n}\n.tui-image-editor-container .tie-icon-add-button .tui-image-editor-button {\n  min-width: 42px;\n}\n.tui-image-editor-container .svg_ic-menu,\n.tui-image-editor-container .svg_ic-helpmenu {\n  width: 24px;\n  height: 24px;\n}\n.tui-image-editor-container .svg_ic-submenu {\n  width: 32px;\n  height: 32px;\n}\n.tui-image-editor-container .svg_img-bi {\n  width: 257px;\n  height: 26px;\n}\n.tui-image-editor-container .tui-image-editor-controls svg > use {\n  display: none;\n}\n.tui-image-editor-container .tui-image-editor-controls .enabled svg:hover > use.hover,\n.tui-image-editor-container .tui-image-editor-controls .normal svg:hover > use.hover {\n  display: block;\n}\n.tui-image-editor-container .tui-image-editor-controls .active svg:hover > use.hover {\n  display: none;\n}\n.tui-image-editor-container .tui-image-editor-controls svg > use.normal {\n  display: block;\n}\n.tui-image-editor-container .tui-image-editor-controls .active svg > use.active {\n  display: block;\n}\n.tui-image-editor-container .tui-image-editor-controls .enabled svg > use.enabled {\n  display: block;\n}\n.tui-image-editor-container .tui-image-editor-controls .active svg > use.normal,\n.tui-image-editor-container .tui-image-editor-controls .enabled svg > use.normal {\n  display: none;\n}\n.tui-image-editor-container .tui-image-editor-controls .help svg > use.disabled,\n.tui-image-editor-container .tui-image-editor-controls .help.enabled svg > use.normal {\n  display: block;\n}\n.tui-image-editor-container .tui-image-editor-controls .help.enabled svg > use.disabled {\n  display: none;\n}\n.tui-image-editor-container .tui-image-editor-controls:hover {\n  z-index: 3;\n}\n.tui-image-editor-container div.tui-colorpicker-clearfix {\n  width: 159px;\n  height: 28px;\n  border: 1px solid #d5d5d5;\n  border-radius: 2px;\n  background-color: #f5f5f5;\n  margin-top: 6px;\n  padding: 4px 7px 4px 7px;\n}\n.tui-image-editor-container .tui-colorpicker-palette-hex {\n  width: 114px;\n  background-color: #f5f5f5;\n  border: 0;\n  font-size: 11px;\n  margin-top: 2px;\n  font-family: 'Noto Sans', sans-serif;\n}\n.tui-image-editor-container .tui-colorpicker-palette-hex[value='#ffffff'] + .tui-colorpicker-palette-preview,\n.tui-image-editor-container .tui-colorpicker-palette-hex[value=''] + .tui-colorpicker-palette-preview {\n  border: 1px solid #ccc;\n}\n.tui-image-editor-container .tui-colorpicker-palette-hex[value=''] + .tui-colorpicker-palette-preview {\n  background-size: cover;\n  background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAdBJREFUWAnFl0FuwjAQRZ0ukiugHqFSOQNdseuKW3ALzkA4BateICvUGyCxrtRFd4WuunH/TzykaYJrnLEYaTJJsP2+x8GZZCbQrLU5mj7Bn+EP8HvnCObd+R7xBV5lWfaNON4AnsA38E94qLEt+0yiFaBzAV/Bv+Cxxr4co7hKCDpw1q9wLeNYYdlAwyn8TYt8Hme3+8D5ozcTaMCZ68PXa2tnM2sbEcOZAJhrrpl2DAcTOGNjZPSfCdzkw6JrfbiMv+osBe4y9WOedhm4jZfhbENWuxS44H9Wz/xw4WzqLOAqh1+zycgAwzEMzr5k5gaHOa9ULBwuuDkFlHI1Kl4PJ66kgIpnoywOTmRFAYcbwYk9UMApWkD8zAV5ihcwHk4Rx7gl0IFTQL0EFc+CTQ9OZHWH3YhlVJiVpTHbrTGLhTHLZVgff6s9lyBsI9KduSS83oj+34rTwJutmBmCnMsvozRwZqB5GTkBw6/jdPDu69iJ6BYk6eCcfbcgcQIK/MByaaiMqm8rHcjol2TnpWDhyAKSGdA3FrxtJUToX0ODqatetfGE+8tyEUOV8GY5dGRwLP/MBS4RHQr4bT7NRAQjlcOTfZxmv2G+c4hI8nn+Ax5PG/zhI393AAAAAElFTkSuQmCC\");\n}\n.tui-image-editor-container .tui-colorpicker-palette-preview {\n  border-radius: 100%;\n  float: left;\n  width: 17px;\n  height: 17px;\n  border: 0;\n}\n.tui-image-editor-container .color-picker-control {\n  position: absolute;\n  display: none;\n  z-index: 99;\n  width: 192px;\n  background-color: #fff;\n  box-shadow: 0 3px 22px 6px rgba(0,0,0,0.15);\n  padding: 16px;\n  border-radius: 2px;\n}\n.tui-image-editor-container .color-picker-control .tui-colorpicker-palette-toggle-slider {\n  display: none;\n}\n.tui-image-editor-container .color-picker-control .tui-colorpicker-palette-button {\n  border: 0;\n  border-radius: 100%;\n  margin: 2px;\n  background-size: cover;\n  font-size: 1px;\n}\n.tui-image-editor-container .color-picker-control .tui-colorpicker-palette-button[title='#ffffff'] {\n  border: 1px solid #ccc;\n}\n.tui-image-editor-container .color-picker-control .tui-colorpicker-palette-button[title=''] {\n  border: 1px solid #ccc;\n}\n.tui-image-editor-container .color-picker-control .triangle {\n  width: 0;\n  height: 0;\n  border-right: 7px solid transparent;\n  border-top: 8px solid #fff;\n  border-left: 7px solid transparent;\n  position: absolute;\n  bottom: -8px;\n  left: 84px;\n}\n.tui-image-editor-container .color-picker-control .tui-colorpicker-container,\n.tui-image-editor-container .color-picker-control .tui-colorpicker-palette-container ul,\n.tui-image-editor-container .color-picker-control .tui-colorpicker-palette-container {\n  width: 100%;\n  height: auto;\n}\n.tui-image-editor-container .filter-color-item .color-picker-control label {\n  font-color: #333;\n  font-weight: normal;\n  margin-right: 7pxleft;\n}\n.tui-image-editor-container .filter-color-item .tui-image-editor-checkbox {\n  margin-top: 0;\n}\n.tui-image-editor-container .filter-color-item .tui-image-editor-checkbox input + label:before,\n.tui-image-editor-container .filter-color-item .tui-image-editor-checkbox > label:before {\n  left: -16px;\n}\n.tui-image-editor-container .color-picker {\n  width: 100%;\n  height: auto;\n}\n.tui-image-editor-container .color-picker-value {\n  width: 32px;\n  height: 32px;\n  border: 0px;\n  border-radius: 100%;\n  margin: auto;\n  margin-bottom: 1px;\n}\n.tui-image-editor-container .color-picker-value.transparent {\n  border: 1px solid #cbcbcb;\n  background-size: cover;\n  background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAdBJREFUWAnFl0FuwjAQRZ0ukiugHqFSOQNdseuKW3ALzkA4BateICvUGyCxrtRFd4WuunH/TzykaYJrnLEYaTJJsP2+x8GZZCbQrLU5mj7Bn+EP8HvnCObd+R7xBV5lWfaNON4AnsA38E94qLEt+0yiFaBzAV/Bv+Cxxr4co7hKCDpw1q9wLeNYYdlAwyn8TYt8Hme3+8D5ozcTaMCZ68PXa2tnM2sbEcOZAJhrrpl2DAcTOGNjZPSfCdzkw6JrfbiMv+osBe4y9WOedhm4jZfhbENWuxS44H9Wz/xw4WzqLOAqh1+zycgAwzEMzr5k5gaHOa9ULBwuuDkFlHI1Kl4PJ66kgIpnoywOTmRFAYcbwYk9UMApWkD8zAV5ihcwHk4Rx7gl0IFTQL0EFc+CTQ9OZHWH3YhlVJiVpTHbrTGLhTHLZVgff6s9lyBsI9KduSS83oj+34rTwJutmBmCnMsvozRwZqB5GTkBw6/jdPDu69iJ6BYk6eCcfbcgcQIK/MByaaiMqm8rHcjol2TnpWDhyAKSGdA3FrxtJUToX0ODqatetfGE+8tyEUOV8GY5dGRwLP/MBS4RHQr4bT7NRAQjlcOTfZxmv2G+c4hI8nn+Ax5PG/zhI393AAAAAElFTkSuQmCC\");\n}\n.tui-image-editor-container .color-picker-value + label {\n  color: #fff;\n}\n.tui-image-editor-container .tui-image-editor-submenu svg > use {\n  display: none;\n}\n.tui-image-editor-container .tui-image-editor-submenu svg > use.normal {\n  display: block;\n}\n.tie-icon-add-button.icon-bubble .tui-image-editor-button[data-icontype=\"icon-bubble\"] svg > use.active,\n.tie-icon-add-button.icon-heart .tui-image-editor-button[data-icontype=\"icon-heart\"] svg > use.active,\n.tie-icon-add-button.icon-location .tui-image-editor-button[data-icontype=\"icon-location\"] svg > use.active,\n.tie-icon-add-button.icon-polygon .tui-image-editor-button[data-icontype=\"icon-polygon\"] svg > use.active,\n.tie-icon-add-button.icon-star .tui-image-editor-button[data-icontype=\"icon-star\"] svg > use.active,\n.tie-icon-add-button.icon-star-2 .tui-image-editor-button[data-icontype=\"icon-star-2\"] svg > use.active,\n.tie-icon-add-button.icon-arrow-3 .tui-image-editor-button[data-icontype=\"icon-arrow-3\"] svg > use.active,\n.tie-icon-add-button.icon-arrow-2 .tui-image-editor-button[data-icontype=\"icon-arrow-2\"] svg > use.active,\n.tie-icon-add-button.icon-arrow .tui-image-editor-button[data-icontype=\"icon-arrow\"] svg > use.active {\n  display: block;\n}\n.tie-draw-line-select-button.line .tui-image-editor-button.line svg > use.normal,\n.tie-draw-line-select-button.free .tui-image-editor-button.free svg > use.normal {\n  display: none;\n}\n.tie-draw-line-select-button.line .tui-image-editor-button.line svg > use.active,\n.tie-draw-line-select-button.free .tui-image-editor-button.free svg > use.active {\n  display: block;\n}\n.tie-flip-button.resetFlip .tui-image-editor-button.resetFlip svg > use.normal,\n.tie-flip-button.flipX .tui-image-editor-button.flipX svg > use.normal,\n.tie-flip-button.flipY .tui-image-editor-button.flipY svg > use.normal {\n  display: none;\n}\n.tie-flip-button.resetFlip .tui-image-editor-button.resetFlip svg > use.active,\n.tie-flip-button.flipX .tui-image-editor-button.flipX svg > use.active,\n.tie-flip-button.flipY .tui-image-editor-button.flipY svg > use.active {\n  display: block;\n}\n.tie-mask-apply.apply.active .tui-image-editor-button.apply label {\n  color: #fff;\n}\n.tie-mask-apply.apply.active .tui-image-editor-button.apply svg > use.active {\n  display: block;\n}\n.tie-crop-button .tui-image-editor-button.apply,\n.tie-crop-preset-button .tui-image-editor-button.apply {\n  margin-right: 24px;\n}\n.tie-crop-button .tui-image-editor-button.preset.active svg > use.active,\n.tie-crop-preset-button .tui-image-editor-button.preset.active svg > use.active {\n  display: block;\n}\n.tie-crop-button .tui-image-editor-button.apply.active svg > use.active,\n.tie-crop-preset-button .tui-image-editor-button.apply.active svg > use.active {\n  display: block;\n}\n.tie-shape-button.rect .tui-image-editor-button.rect svg > use.normal,\n.tie-shape-button.circle .tui-image-editor-button.circle svg > use.normal,\n.tie-shape-button.triangle .tui-image-editor-button.triangle svg > use.normal {\n  display: none;\n}\n.tie-shape-button.rect .tui-image-editor-button.rect svg > use.active,\n.tie-shape-button.circle .tui-image-editor-button.circle svg > use.active,\n.tie-shape-button.triangle .tui-image-editor-button.triangle svg > use.active {\n  display: block;\n}\n.tie-text-effect-button .tui-image-editor-button.active svg > use.active {\n  display: block;\n}\n.tie-text-align-button.left .tui-image-editor-button.left svg > use.active,\n.tie-text-align-button.center .tui-image-editor-button.center svg > use.active,\n.tie-text-align-button.right .tui-image-editor-button.right svg > use.active {\n  display: block;\n}\n.tie-mask-image-file,\n.tie-icon-image-file {\n  opacity: 0;\n  position: absolute;\n  width: 100%;\n  height: 100%;\n  border: 1px solid #008000;\n  cursor: inherit;\n  left: 0;\n  top: 0;\n}\n.tui-image-editor-container.top.tui-image-editor-top-optimization .tui-image-editor-controls ul {\n  text-align: right;\n}\n.tui-image-editor-container.top.tui-image-editor-top-optimization .tui-image-editor-controls-logo {\n  display: none;\n}\n/*# sourceMappingURL=src/css/index.css.map */","/* GRID VISUAL OF FLIP AND ROTATE MENU  */\n.{prefix}-container\n    .{prefix}-grid-visual\n        display: none;\n        position: absolute;\n        width: 100%;\n        height: 100%;\n        border: 1px solid rgba(255,255,255,0.7);\n    .{prefix}-main.{prefix}-menu-flip,\n    .{prefix}-main.{prefix}-menu-rotate\n        .tui-image-editor\n            transition: none;\n    .{prefix}-main.{prefix}-menu-flip .{prefix}-grid-visual,\n    .{prefix}-main.{prefix}-menu-rotate .{prefix}-grid-visual\n        display: block;\n    .{prefix}-grid-visual \n        table\n            width: 100%;\n            height: 100%;\n            border-collapse: collapse;\n            td\n                border: 1px solid rgba(255,255,255,0.3);\n            td.dot:before\n                content: '';\n                position: absolute;\n                box-sizing: border-box;\n                width: 10px;\n                height: 10px;\n                border: 0;\n                box-shadow: 0 0 1px 0 rgba(0,0,0,0.3);\n                border-radius: 100%;\n                background-color: #fff;\n            td.dot.left-top:before\n                top: -5px;\n                left: -5px;\n            td.dot.right-top:before\n                top: -5px;\n                right: -5px;\n            td.dot.left-bottom:before\n                bottom: -5px;\n                left: -5px;\n            td.dot.right-bottom:before\n                bottom: -5px;\n                right: -5px;\n","/* SUBMENU */\n.{prefix}-container\n    .{prefix}-submenu\n        display: none;\n        position: absolute;\n        bottom: 0;\n        width:100%;\n        height: 150px;\n        white-space: nowrap;\n        z-index: 2;\n        .{prefix}-button:hover svg > use.active\n            display: block;\n        .{prefix}-submenu-item\n            li\n                display: inline-block;\n                vertical-align: top;\n            .{prefix}-newline\n                display: block;\n                margin-top: 0;\n            .{prefix}-button\n                position: relative;\n                cursor: pointer;\n                display: inline-block;\n                font-weight: normal;\n                font-size: 11px;\n                margin: 0 9px 0 9px;\n            .{prefix}-button.preset\n                margin: 0 9px 20px 5px;\n            label > span\n                display: inline-block;\n                cursor: pointer;\n                padding-top: 5px;\n                font-family: \"Noto Sans\", sans-serif;\n                font-size: 11px;\n            .{prefix}-button.apply label,\n            .{prefix}-button.cancel label\n                vertical-align: 7px;\n        > div\n            display: none;\n            vertical-align: bottom;\n        .{prefix}-submenu-style\n            opacity: 0.95;\n            z-index: -1;\n            position: absolute;\n            top: 0;\n            bottom: 0;\n            left: 0;\n            right: 0;\n            display: block;\n\n    .{prefix}-partition > div\n        width: 1px;\n        height: 52px;\n        border-left: 1px solid #3c3c3c;\n        margin: 0 8px 0 8px;\n    .{prefix}-main.{prefix}-menu-filter .{prefix}-partition > div\n        height: 108px;\n        margin: 0 29px 0 0px;\n    .{prefix}-submenu-align\n        text-align: left;\n        margin-right: 30px;\n        label > span\n            width: 55px;\n            white-space: nowrap;\n    .{prefix}-submenu-align:first-child\n        margin-right: 0;\n        label > span\n            width: 70px;\n    .{prefix}-main.{prefix}-menu-crop .{prefix}-submenu > div.{prefix}-menu-crop,\n    .{prefix}-main.{prefix}-menu-flip .{prefix}-submenu > div.{prefix}-menu-flip,\n    .{prefix}-main.{prefix}-menu-rotate .{prefix}-submenu > div.{prefix}-menu-rotate,\n    .{prefix}-main.{prefix}-menu-shape .{prefix}-submenu > div.{prefix}-menu-shape,\n    .{prefix}-main.{prefix}-menu-text .{prefix}-submenu > div.{prefix}-menu-text,\n    .{prefix}-main.{prefix}-menu-mask .{prefix}-submenu > div.{prefix}-menu-mask,\n    .{prefix}-main.{prefix}-menu-icon .{prefix}-submenu > div.{prefix}-menu-icon,\n    .{prefix}-main.{prefix}-menu-draw .{prefix}-submenu > div.{prefix}-menu-draw,\n    .{prefix}-main.{prefix}-menu-filter .{prefix}-submenu > div.{prefix}-menu-filter\n        display: table-cell;\n    .{prefix}-main.{prefix}-menu-crop,\n    .{prefix}-main.{prefix}-menu-flip,\n    .{prefix}-main.{prefix}-menu-rotate,\n    .{prefix}-main.{prefix}-menu-shape,\n    .{prefix}-main.{prefix}-menu-text,\n    .{prefix}-main.{prefix}-menu-mask,\n    .{prefix}-main.{prefix}-menu-icon,\n    .{prefix}-main.{prefix}-menu-draw,\n    .{prefix}-main.{prefix}-menu-filter\n      .{prefix}-submenu\n        display: table;\n\n","/* VIRTUAL CHECKBOX */\n.{prefix}-container\n  .filter-color-item\n    display: inline-block;\n    .tui-image-editor-checkbox\n        display: block;\n  .{prefix}-checkbox-wrap\n      display: inline-block !important;\n      text-align: left;\n  .{prefix}-checkbox-wrap.fixed-width\n      width: 187px;\n      white-space: normal;\n  .{prefix}-checkbox\n      display: inline-block;\n      margin: 1px 0 1px 0;\n      input\n          width: 14px;\n          height: 14px;\n          opacity: 0;\n      > label > span\n          color: #fff;\n          height: 14px;\n          position: relative;\n      input + label:before,\n      > label > span:before\n          content: '';\n          position: absolute;\n          width: 14px;\n          height: 14px;\n          background-color: #fff;\n          top: 6px;\n          left: -19px;\n          display: inline-block;\n          margin: 0;\n          text-align: center;\n          font-size: 11px;\n          border: 0;\n          border-radius: 2px;\n          padding-top: 1px;\n          box-sizing: border-box;\n      input[type='checkbox']:checked + span:before\n          background-size: cover;\n          background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAAAXNSR0IArs4c6QAAAMBJREFUKBWVkjEOwjAMRe2WgZW7IIHEDdhghhuwcQ42rlJugAQS54Cxa5cq1QM5TUpByZfS2j9+dlJVt/tX5ZxbS4ZU9VLkQvSHKTIGRaVJYFmKrBbTCJxE2UgCdDzMZDkHrOV6b95V0US6UmgKodujEZbJg0B0ZgEModO5lrY1TMQf1TpyJGBEjD+E2NPN7ukIUDiF/BfEXgRiGEw8NgkffYGYwCi808fpn/6OvfUfsDr/Vc1IfRf8sKnFVqeiVQfDu0tf/nWH9gAAAABJRU5ErkJggg==');\n\n  .{prefix}-selectlist-wrap\n      position: relative;\n      select\n          width: 100%;\n          height: 28px;\n          margin-top: 4px;\n          border: 0;\n          outline: 0;\n          border-radius: 0;\n          border: 1px solid #cbdbdb;\n          background-color: #fff;\n          -webkit-appearance: none;\n          -moz-appearance: none;\n          appearance: none;\n          padding: 0 7px 0 10px;\n      .{prefix}-selectlist\n          display: none;\n          position: relative;\n          top: -1px;\n          border: 1px solid #ccc;\n          background-color: #fff;\n          border-top: 0px;\n          padding: 4px 0;\n          li\n              display: block;\n              text-align: left;\n              padding: 7px 10px;\n              font-family: 'Noto Sans', sans-serif;\n          li:hover\n                  background-color: rgba(81, 92, 230, 0.05);\n  .{prefix}-selectlist-wrap:before\n      content: '';\n      position: absolute;\n      display: inline-block;\n      width: 14px;\n      height: 14px;\n      right: 5px;\n      top: 10px;\n      background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAAAXNSR0IArs4c6QAAAHlJREFUKBVjYBgFOEOAEVkmPDxc89+/f6eAYjzI4kD2FyYmJrOVK1deh4kzwRggGiQBVJCELAZig8SQNYHEmEEEMrh69eo1HR0dfqCYJUickZGxf9WqVf3IakBsFBthklpaWmVA9mEQhrJhUoTp0NBQCRAmrHL4qgAAuu4cWZOZIGsAAAAASUVORK5CYII=');\n      background-size: cover;\n  .{prefix}-selectlist-wrap select::-ms-expand\n      display:none;\n","/* VIRTUAL RANGE */\n.{prefix}-container\n\n    .{prefix}-virtual-range-bar\n    .{prefix}-virtual-range-subbar\n    .{prefix}-virtual-range-pointer\n        .{prefix}-disabled\n            backbround-color: red;\n\n    .{prefix}-range\n        position: relative;\n        top: 5px;\n        width: 166px;\n        height: 17px;\n        display: inline-block;\n    .{prefix}-virtual-range-bar\n        top: 7px;\n        position: absolute;\n        width: 100%;\n        height: 2px;\n        background-color: #666666;\n    .{prefix}-virtual-range-subbar\n        position: absolute;\n        height: 100%;\n        left: 0;\n        right: 0;\n        background-color: #d1d1d1;\n    .{prefix}-virtual-range-pointer\n        position: absolute;\n        cursor: pointer;\n        top: -5px;\n        left: 0;\n        width: 12px;\n        height: 12px;\n        background-color: #fff;\n        border-radius: 100%;\n    .{prefix}-range-wrap\n        display: inline-block;\n        margin-left: 4px;\n        &.short .tui-image-editor-range\n            width: 100px;\n    .color-picker-control\n        .{prefix}-range\n            width: 108px;\n            margin-left: 10px;\n        .{prefix}-virtual-range-pointer\n            background-color: #333;\n        .{prefix}-virtual-range-bar\n            background-color: #ccc;\n        .{prefix}-virtual-range-subbar\n            background-color: #606060;\n    .{prefix}-range-wrap.{prefix}-newline.short\n        margin-top: -2px;\n        margin-left: 19px;\n        label\n            color: #8e8e8e;\n            font-weight: normal;\n    .{prefix}-range-wrap label\n        vertical-align: baseline;\n        font-size: 11px;\n        margin-right: 7px;\n        color: #fff;\n    .{prefix}-range-value\n        cursor: default;\n        width: 40px;\n        height: 24px;\n        outline: none;\n        border-radius: 2px;\n        box-shadow: none;\n        border: 1px solid #d5d5d5;\n        text-align: center;\n        background-color: #1c1c1c;\n        color: #fff;\n        font-weight: lighter;\n        vertical-align: baseline;\n        font-family: 'Noto Sans', sans-serif;\n        margin-top: 21px;\n        margin-left: 4px;\n    .{prefix}-controls\n        position: absolute;\n        background-color: #151515;\n        width: 100%;\n        height: 64px;\n        display: table;\n        bottom: 0;\n        z-index: 2;\n    .{prefix}-icpartition\n        display: inline-block;\n        background-color: #282828;\n        width: 1px;\n        height: 24px;","/* POSITION LEFT */\n.{prefix}-container\n  &.left\n    .{prefix}-menu\n        > .{prefix}-item[tooltip-content]\n            &:before\n                left: 28px;\n                top: 11px;\n                border-right: 7px solid #2f2f2f;\n                border-top: 7px solid transparent;\n                border-bottom: 7px solid transparent;\n            &:after\n                top: 7px;\n                left: 42px;\n                white-space: nowrap;\n    .{prefix}-submenu\n        left: 0;\n        height: 100%;\n        width: 248px;\n    .{prefix}-main-container\n        left: 64px;\n        width: calc(100% - 64px);\n        height: 100%;\n    .{prefix}-controls\n        width: 64px;\n        height: 100%;\n        display: table;\n\n/* POSITION LEFT & RIGHT */\n.{prefix}-container\n  &.left, &.right\n    .{prefix}-menu\n        white-space: inherit;\n    .{prefix}-submenu\n        white-space: normal;\n        > div\n            vertical-align: middle;\n    .{prefix}-controls li\n        display: inline-block;\n        margin: 4px auto;\n    .{prefix}-icpartition\n        position: relative;\n        top: -7px;\n        width: 24px;\n        height: 1px;\n    .{prefix}-submenu\n        .{prefix}-partition\n            display: block;\n            width: 75%;\n            margin: auto;\n            > div\n                border-left: 0;\n                height:10px;\n                border-bottom: 1px solid #3c3c3c;\n                width: 100%;\n                margin: 0;\n        .{prefix}-submenu-align\n            margin-right: 0;\n        .{prefix}-submenu-item\n            li\n                margin-top: 15px;\n            .tui-colorpicker-clearfix li\n                margin-top: 0;\n\n    .{prefix}-checkbox-wrap.fixed-width\n        width: 182px;\n        white-space: normal;\n    .{prefix}-range-wrap.{prefix}-newline label.range\n        display: block;\n        text-align: left;\n        width: 75%;\n        margin: auto;\n    .{prefix}-range\n        width: 136px;\n\n\n/* POSITION RIGIHT */\n.{prefix}-container\n  &.right\n    .{prefix}-menu\n        > .{prefix}-item[tooltip-content]\n            &:before\n                left: -3px;\n                top: 11px;\n                border-left: 7px solid #2f2f2f;\n                border-top: 7px solid transparent;\n                border-bottom: 7px solid transparent;\n            &:after\n                top: 7px;\n                left: unset;\n                right: 43px;\n                white-space: nowrap;\n    .{prefix}-submenu\n        right: 0;\n        height: 100%;\n        width: 248px;\n    .{prefix}-main-container \n        right: 64px;\n        width: calc(100% - 64px);\n        height: 100%;\n    .{prefix}-controls\n        right: 0;\n        width: 64px;\n        height: 100%;\n        display: table;\n\n\n/* POSITION TOP & BOTTOM */\n.{prefix}-container\n  &.top, &.bottom\n    .{prefix}-submenu\n        .{prefix}-partition.only-left-right\n            display: none;\n\n\n/* POSITION BOTTOM */\n.{prefix}-container\n    &.bottom .tui-image-editor-submenu > div\n        padding-bottom: 24px;\n\n/* POSITION TOP */\n.{prefix}-container\n  &.top\n    .color-picker-control .triangle\n        top: -8px;\n        border-right: 7px solid transparent;\n        border-top: 0px;\n        border-left: 7px solid transparent;\n        border-bottom: 8px solid #fff;\n    .{prefix}-size-wrap\n        height: 100%;\n    .{prefix}-main-container\n        bottom: 0;\n    .{prefix}-menu\n        > .{prefix}-item[tooltip-content]\n            &:before\n                left: 13px;\n                border-top: 0;\n                border-bottom: 7px solid #2f2f2f;\n                top: 33px;\n            &:after\n                top: 38px;\n    .{prefix}-submenu\n        top: 0;\n        bottom: auto;\n        > div\n            padding-top: 24px;\n            vertical-align: top;\n    .{prefix}-controls-logo\n        display: table-cell;\n    .{prefix}-controls-buttons\n        display: table-cell;\n    .{prefix}-main\n        top: 64px;\n        height: calc(100% - 64px);\n    .{prefix}-controls\n        top: 0;\n        bottom: inherit;\n\n","/* ICON */\n.{prefix}-container\n    .tie-icon-add-button .{prefix}-button\n        min-width: 42px;\n    .svg_ic-menu\n    .svg_ic-helpmenu\n        width: 24px;\n        height: 24px;\n    .svg_ic-submenu\n        width: 32px;\n        height: 32px;\n    .svg_img-bi\n        width: 257px;\n        height: 26px;\n\n    .{prefix}-controls\n        svg > use\n            display: none;\n        .enabled svg:hover > use.hover\n        .normal svg:hover > use.hover\n            display: block;\n        .active svg:hover > use.hover\n            display: none;\n        svg > use.normal\n            display: block;\n        .active svg > use.active\n            display: block;\n        .enabled svg > use.enabled\n            display: block;\n        .active svg > use.normal,\n        .enabled svg > use.normal\n            display: none;\n        .help svg > use.disabled,\n        .help.enabled svg > use.normal\n            display: block;\n        .help.enabled svg > use.disabled\n            display: none;\n\n    .{prefix}-controls:hover\n        z-index: 3;\n","/* COLOR PICKER */\n.{prefix}-container\n    div.tui-colorpicker-clearfix\n        width: 159px;\n        height: 28px;\n        border: 1px solid #d5d5d5;\n        border-radius: 2px;\n        background-color: #f5f5f5;\n        margin-top: 6px;\n        padding: 4px 7px 4px 7px;\n    .tui-colorpicker-palette-hex\n        width: 114px;\n        background-color: #f5f5f5;\n        border: 0;\n        font-size: 11px;\n        margin-top: 2px;\n        font-family: 'Noto Sans', sans-serif;\n    .tui-colorpicker-palette-hex[value='#ffffff'] + .tui-colorpicker-palette-preview,\n    .tui-colorpicker-palette-hex[value=''] + .tui-colorpicker-palette-preview\n            border: 1px solid #ccc;\n    .tui-colorpicker-palette-hex[value=''] + .tui-colorpicker-palette-preview\n            background-size: cover;\n            background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAdBJREFUWAnFl0FuwjAQRZ0ukiugHqFSOQNdseuKW3ALzkA4BateICvUGyCxrtRFd4WuunH/TzykaYJrnLEYaTJJsP2+x8GZZCbQrLU5mj7Bn+EP8HvnCObd+R7xBV5lWfaNON4AnsA38E94qLEt+0yiFaBzAV/Bv+Cxxr4co7hKCDpw1q9wLeNYYdlAwyn8TYt8Hme3+8D5ozcTaMCZ68PXa2tnM2sbEcOZAJhrrpl2DAcTOGNjZPSfCdzkw6JrfbiMv+osBe4y9WOedhm4jZfhbENWuxS44H9Wz/xw4WzqLOAqh1+zycgAwzEMzr5k5gaHOa9ULBwuuDkFlHI1Kl4PJ66kgIpnoywOTmRFAYcbwYk9UMApWkD8zAV5ihcwHk4Rx7gl0IFTQL0EFc+CTQ9OZHWH3YhlVJiVpTHbrTGLhTHLZVgff6s9lyBsI9KduSS83oj+34rTwJutmBmCnMsvozRwZqB5GTkBw6/jdPDu69iJ6BYk6eCcfbcgcQIK/MByaaiMqm8rHcjol2TnpWDhyAKSGdA3FrxtJUToX0ODqatetfGE+8tyEUOV8GY5dGRwLP/MBS4RHQr4bT7NRAQjlcOTfZxmv2G+c4hI8nn+Ax5PG/zhI393AAAAAElFTkSuQmCC');\n    .tui-colorpicker-palette-preview\n        border-radius: 100%;\n        float: left;\n        width: 17px;\n        height: 17px;\n        border: 0;\n    .color-picker-control\n        position: absolute;\n        display: none;\n        z-index: 99;\n        width: 192px;\n        background-color: #fff;\n        box-shadow: 0 3px 22px 6px rgba(0, 0, 0, .15);\n        padding: 16px;\n        border-radius: 2px;\n        .tui-colorpicker-palette-toggle-slider\n            display: none;\n        .tui-colorpicker-palette-button\n            border: 0;\n            border-radius: 100%;\n            margin: 2px;\n            background-size: cover;\n            font-size: 1px;\n            &[title='#ffffff']\n              border: 1px solid #ccc;\n            &[title='']\n              border: 1px solid #ccc;\n        .triangle\n            width: 0;\n            height: 0;\n            border-right: 7px solid transparent;\n            border-top: 8px solid #fff;\n            border-left: 7px solid transparent;\n            position: absolute;\n            bottom: -8px;\n            left: 84px;\n        .tui-colorpicker-container,\n        .tui-colorpicker-palette-container ul,\n        .tui-colorpicker-palette-container\n            width: 100%;\n            height: auto;\n\n\n    .filter-color-item\n        .color-picker-control label\n            font-color: #333;\n            font-weight: normal;\n            margin-right: 7pxleft\n        .tui-image-editor-checkbox\n            margin-top: 0;\n            input + label:before,\n            > label:before\n              left: -16px;\n    .color-picker\n        width: 100%;\n        height: auto;\n    .color-picker-value \n        width: 32px;\n        height: 32px;\n        border: 0px;\n        border-radius: 100%;\n        margin: auto;\n        margin-bottom: 1px;\n        &.transparent\n            border: 1px solid #cbcbcb;\n            background-size: cover;\n            background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAdBJREFUWAnFl0FuwjAQRZ0ukiugHqFSOQNdseuKW3ALzkA4BateICvUGyCxrtRFd4WuunH/TzykaYJrnLEYaTJJsP2+x8GZZCbQrLU5mj7Bn+EP8HvnCObd+R7xBV5lWfaNON4AnsA38E94qLEt+0yiFaBzAV/Bv+Cxxr4co7hKCDpw1q9wLeNYYdlAwyn8TYt8Hme3+8D5ozcTaMCZ68PXa2tnM2sbEcOZAJhrrpl2DAcTOGNjZPSfCdzkw6JrfbiMv+osBe4y9WOedhm4jZfhbENWuxS44H9Wz/xw4WzqLOAqh1+zycgAwzEMzr5k5gaHOa9ULBwuuDkFlHI1Kl4PJ66kgIpnoywOTmRFAYcbwYk9UMApWkD8zAV5ihcwHk4Rx7gl0IFTQL0EFc+CTQ9OZHWH3YhlVJiVpTHbrTGLhTHLZVgff6s9lyBsI9KduSS83oj+34rTwJutmBmCnMsvozRwZqB5GTkBw6/jdPDu69iJ6BYk6eCcfbcgcQIK/MByaaiMqm8rHcjol2TnpWDhyAKSGdA3FrxtJUToX0ODqatetfGE+8tyEUOV8GY5dGRwLP/MBS4RHQr4bT7NRAQjlcOTfZxmv2G+c4hI8nn+Ax5PG/zhI393AAAAAElFTkSuQmCC');\n\n    .color-picker-value + label\n        color: #fff;\n\n    .{prefix}-submenu svg > use\n        display: none;\n    .{prefix}-submenu svg > use.normal\n        display: block;\n","/* ICON BUTTON */\n.tie-icon-add-button\n    &.icon-bubble .{prefix}-button[data-icontype=\"icon-bubble\"] svg > use.active,\n    &.icon-heart .{prefix}-button[data-icontype=\"icon-heart\"] svg > use.active,\n    &.icon-location .{prefix}-button[data-icontype=\"icon-location\"] svg > use.active,\n    &.icon-polygon .{prefix}-button[data-icontype=\"icon-polygon\"] svg > use.active,\n    &.icon-star .{prefix}-button[data-icontype=\"icon-star\"] svg > use.active,\n    &.icon-star-2 .{prefix}-button[data-icontype=\"icon-star-2\"] svg > use.active,\n    &.icon-arrow-3 .{prefix}-button[data-icontype=\"icon-arrow-3\"] svg > use.active,\n    &.icon-arrow-2 .{prefix}-button[data-icontype=\"icon-arrow-2\"] svg > use.active,\n    &.icon-arrow .{prefix}-button[data-icontype=\"icon-arrow\"] svg > use.active,\n    &.icon-bubble .{prefix}-button[data-icontype=\"icon-bubble\"] svg > use.active\n        display: block;\n\n/* DRAW BUTTON */\n.tie-draw-line-select-button\n  &.line .{prefix}-button.line svg > use.normal,\n  &.free .{prefix}-button.free svg > use.normal\n    display: none;\n\n  &.line .{prefix}-button.line svg > use.active,\n  &.free .{prefix}-button.free svg > use.active\n    display: block;\n\n/* FLIP BUTTON */\n.tie-flip-button\n  &.resetFlip .{prefix}-button.resetFlip,\n  &.flipX .{prefix}-button.flipX,\n  &.flipY .{prefix}-button.flipY\n    svg > use.normal\n        display: none;\n    svg > use.active\n        display: block;\n\n/*  MASK BUTTON */\n.tie-mask-apply.apply.active .{prefix}-button.apply\n    label\n        color: #fff;\n    svg > use.active\n        display: block;\n\n/* CROP BUTTON */\n.tie-crop-button,\n.tie-crop-preset-button\n    .{prefix}-button.apply\n        margin-right: 24px;\n    .{prefix}-button.preset.active svg > use.active\n        display: block;\n    .{prefix}-button.apply.active svg > use.active\n        display: block;\n\n\n/* SHAPE BUTTON */\n.tie-shape-button\n  &.rect .{prefix}-button.rect,\n  &.circle .{prefix}-button.circle,\n  &.triangle .{prefix}-button.triangle\n    svg > use.normal\n        display: none;\n    svg > use.active\n        display: block;\n\n/* TEXT BUTTON */\n.tie-text-effect-button\n    .{prefix}-button.active svg > use.active\n        display: block;\n.tie-text-align-button\n    &.left .{prefix}-button.left svg > use.active,\n    &.center .{prefix}-button.center svg > use.active,\n    &.right .{prefix}-button.right svg > use.active\n        display: block;\n.tie-mask-image-file,\n.tie-icon-image-file\n    opacity: 0;\n    position: absolute;\n    width: 100%;\n    height: 100%;\n    border: 1px solid green;\n    cursor: inherit;\n    left: 0;\n    top: 0;\n","prefix = 'tui-image-editor'\n\n@import 'main.styl'\n@import 'gridtable.styl'\n@import 'submenu.styl'\n@import 'checkbox.styl'\n@import 'range.styl'\n@import 'position.styl'\n@import 'icon.styl'\n@import 'colorpicker.styl'\n@import 'buttons.styl'\n.{prefix}-container.top\n    &.{prefix}-top-optimization\n      .{prefix}-controls ul\n          text-align: right;\n      .{prefix}-controls-logo\n          display: none;\n"]}
\ No newline at end of file
diff --git a/admin/js/vendors/tui.image-editor/tui-image-editor.min.js b/admin/js/vendors/tui.image-editor/tui-image-editor.min.js
new file mode 100644 (file)
index 0000000..93859ac
--- /dev/null
@@ -0,0 +1,15 @@
+/*!
+ * tui-image-editor.min.js
+ * @version 3.10.1
+ * @author NHN FE Development Lab <dl_javascript@nhn.com>
+ * @license MIT
+ */
+!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("tui-code-snippet"),require("fabric").fabric,require("tui-color-picker")):"function"==typeof define&&define.amd?define(["tui-code-snippet","fabric","tui-color-picker"],t):"object"==typeof exports?exports.ImageEditor=t(require("tui-code-snippet"),require("fabric").fabric,require("tui-color-picker")):(e.tui=e.tui||{},e.tui.ImageEditor=t(e.tui&&e.tui.util,e.fabric,e.tui&&e.tui.colorPicker))}(window,function(n,i,o){return s={},r.m=a=[function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.defaultFilterRangeValus=t.defaultTextRangeValus=t.defaultShapeStrokeValus=t.defaultDrawRangeValus=t.defaultRotateRangeValus=t.defaultIconPath=t.rejectMessages=t.fObjectOptions=t.keyCodes=t.drawingModes=t.eventNames=t.commandNames=t.CROPZONE_DEFAULT_OPTIONS=t.SHAPE_DEFAULT_OPTIONS=t.componentNames=t.SHAPE_TYPE=t.SHAPE_FILL_TYPE=t.FILTER_NAME_VALUE_MAP=t.HELP_MENUS=void 0;var i=n(1);t.HELP_MENUS=["undo","redo","reset","delete","deleteAll"],t.FILTER_NAME_VALUE_MAP={blur:"blur",blocksize:"pixelate"},t.SHAPE_FILL_TYPE={FILTER:"filter",COLOR:"color"},t.SHAPE_TYPE=["rect","circle","triangle"],t.componentNames=(0,i.keyMirror)("IMAGE_LOADER","CROPPER","FLIP","ROTATION","FREE_DRAWING","LINE","TEXT","ICON","FILTER","SHAPE"),t.SHAPE_DEFAULT_OPTIONS={lockSkewingX:!0,lockSkewingY:!0,lockUniScaling:!1,bringForward:!0,isRegular:!1},t.CROPZONE_DEFAULT_OPTIONS={hasRotatingPoint:!1,hasBorders:!1,lockScalingFlip:!0,lockRotation:!0,lockSkewingX:!0,lockSkewingY:!0},t.commandNames={CLEAR_OBJECTS:"clearObjects",LOAD_IMAGE:"loadImage",FLIP_IMAGE:"flip",ROTATE_IMAGE:"rotate",ADD_OBJECT:"addObject",REMOVE_OBJECT:"removeObject",APPLY_FILTER:"applyFilter",REMOVE_FILTER:"removeFilter",ADD_ICON:"addIcon",CHANGE_ICON_COLOR:"changeIconColor",ADD_SHAPE:"addShape",CHANGE_SHAPE:"changeShape",ADD_TEXT:"addText",CHANGE_TEXT:"changeText",CHANGE_TEXT_STYLE:"changeTextStyle",ADD_IMAGE_OBJECT:"addImageObject",RESIZE_CANVAS_DIMENSION:"resizeCanvasDimension",SET_OBJECT_PROPERTIES:"setObjectProperties",SET_OBJECT_POSITION:"setObjectPosition"},t.eventNames={OBJECT_ACTIVATED:"objectActivated",OBJECT_MOVED:"objectMoved",OBJECT_SCALED:"objectScaled",OBJECT_CREATED:"objectCreated",OBJECT_ROTATED:"objectRotated",OBJECT_ADDED:"objectAdded",TEXT_EDITING:"textEditing",TEXT_CHANGED:"textChanged",ICON_CREATE_RESIZE:"iconCreateResize",ICON_CREATE_END:"iconCreateEnd",ADD_TEXT:"addText",ADD_OBJECT:"addObject",ADD_OBJECT_AFTER:"addObjectAfter",MOUSE_DOWN:"mousedown",MOUSE_UP:"mouseup",MOUSE_MOVE:"mousemove",REDO_STACK_CHANGED:"redoStackChanged",UNDO_STACK_CHANGED:"undoStackChanged",SELECTION_CLEARED:"selectionCleared",SELECTION_CREATED:"selectionCreated"},t.drawingModes=(0,i.keyMirror)("NORMAL","CROPPER","FREE_DRAWING","LINE_DRAWING","TEXT","SHAPE"),t.keyCodes={Z:90,Y:89,C:67,V:86,SHIFT:16,BACKSPACE:8,DEL:46,ARROW_DOWN:40,ARROW_UP:38},t.fObjectOptions={SELECTION_STYLE:{borderColor:"red",cornerColor:"green",cornerSize:10,originX:"center",originY:"center",transparentCorners:!1}},t.rejectMessages={addedObject:"The object is already added.",flip:"The flipX and flipY setting values are not changed.",invalidDrawingMode:"This operation is not supported in the drawing mode.",invalidParameters:"Invalid parameters.",isLock:"The executing command state is locked.",loadImage:"The background image is empty.",loadingImageFailed:"Invalid image loaded.",noActiveObject:"There is no active object.",noObject:"The object is not in canvas.",redo:"The promise of redo command is reject.",rotation:"The current angle is same the old angle.",undo:"The promise of undo command is reject.",unsupportedOperation:"Unsupported operation.",unsupportedType:"Unsupported object type."},t.defaultIconPath={"icon-arrow":"M40 12V0l24 24-24 24V36H0V12h40z","icon-arrow-2":"M49,32 H3 V22 h46 l-18,-18 h12 l23,23 L43,50 h-12 l18,-18  z ","icon-arrow-3":"M43.349998,27 L17.354,53 H1.949999 l25.996,-26 L1.949999,1 h15.404 L43.349998,27  z ","icon-star":"M35,54.557999 l-19.912001,10.468 l3.804,-22.172001 l-16.108,-15.7 l22.26,-3.236 L35,3.746 l9.956,20.172001 l22.26,3.236 l-16.108,15.7 l3.804,22.172001  z ","icon-star-2":"M17,31.212 l-7.194,4.08 l-4.728,-6.83 l-8.234,0.524 l-1.328,-8.226 l-7.644,-3.14 l2.338,-7.992 l-5.54,-6.18 l5.54,-6.176 l-2.338,-7.994 l7.644,-3.138 l1.328,-8.226 l8.234,0.522 l4.728,-6.83 L17,-24.312 l7.194,-4.08 l4.728,6.83 l8.234,-0.522 l1.328,8.226 l7.644,3.14 l-2.338,7.992 l5.54,6.178 l-5.54,6.178 l2.338,7.992 l-7.644,3.14 l-1.328,8.226 l-8.234,-0.524 l-4.728,6.83  z ","icon-polygon":"M3,31 L19,3 h32 l16,28 l-16,28 H19  z ","icon-location":"M24 62C8 45.503 0 32.837 0 24 0 10.745 10.745 0 24 0s24 10.745 24 24c0 8.837-8 21.503-24 38zm0-28c5.523 0 10-4.477 10-10s-4.477-10-10-10-10 4.477-10 10 4.477 10 10 10z","icon-heart":"M49.994999,91.349998 l-6.96,-6.333 C18.324001,62.606995 2.01,47.829002 2.01,29.690998 C2.01,14.912998 13.619999,3.299999 28.401001,3.299999 c8.349,0 16.362,5.859 21.594,12 c5.229,-6.141 13.242001,-12 21.591,-12 c14.778,0 26.390999,11.61 26.390999,26.390999 c0,18.138 -16.314001,32.916 -41.025002,55.374001 l-6.96,6.285  z ","icon-bubble":"M44 48L34 58V48H12C5.373 48 0 42.627 0 36V12C0 5.373 5.373 0 12 0h40c6.627 0 12 5.373 12 12v24c0 6.627-5.373 12-12 12h-8z"},t.defaultRotateRangeValus={realTimeEvent:!0,min:-360,max:360,value:0},t.defaultDrawRangeValus={min:5,max:30,value:12},t.defaultShapeStrokeValus={realTimeEvent:!0,min:2,max:300,value:3},t.defaultTextRangeValus={realTimeEvent:!0,min:10,max:100,value:50},t.defaultFilterRangeValus={tintOpacityRange:{realTimeEvent:!0,min:0,max:1,value:.7,useDecimal:!0},removewhiteDistanceRange:{realTimeEvent:!0,min:0,max:1,value:.2,useDecimal:!0},brightnessRange:{realTimeEvent:!0,min:-1,max:1,value:0,useDecimal:!0},noiseRange:{realTimeEvent:!0,min:0,max:1e3,value:100},pixelateRange:{realTimeEvent:!0,min:2,max:20,value:4},colorfilterThresholeRange:{realTimeEvent:!0,min:0,max:1,value:.2,useDecimal:!0},blurFilterRange:{value:.1}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Promise=void 0,t.clamp=function(e,t,n){var i=void 0;n<t&&(i=t,t=n,n=i);return d(t,u(e,n))},t.keyMirror=function(){for(var t={},e=arguments.length,n=Array(e),i=0;i<e;i++)n[i]=arguments[i];return(0,o.forEach)(n,function(e){t[e]=e}),t},t.makeStyleText=function(e){var n="";return(0,o.forEach)(e,function(e,t){n+=t+": "+e+";"}),n},t.getProperties=function(e,t){var n={},i=t.length,o=0,r=void 0;for(o=0;o<i;o+=1)r=t[o],n[r]=e[r];return n},t.toInteger=function(e){return parseInt(e,10)},t.toCamelCase=function(e){return e.replace(/-([a-z])/g,function(e,t){return t.toUpperCase()})},t.isSupportFileApi=function(){return!!(window.File&&window.FileList&&window.FileReader)},t.getRgb=function(e,t){4===e.length&&(e=""+e+e.slice(1,4));var n=parseInt(e.slice(1,3),16),i=parseInt(e.slice(3,5),16),o=parseInt(e.slice(5,7),16);return"rgba("+n+", "+i+", "+o+", "+(t||1)+")"},t.sendHostName=function(){if(h)return;h=!0,(0,o.sendHostname)("image-editor","UA-129999381-1")},t.styleLoad=function(e,t){var n=document.getElementsByTagName("head")[0],i=document.createElement("link"),o=encodeURIComponent(e);t&&(i.id=t);i.setAttribute("rel","stylesheet"),i.setAttribute("type","text/css"),i.setAttribute("href","data:text/css;charset=UTF-8,"+o),n.appendChild(i)},t.getSelector=function(t){return function(e){return t.querySelector(e)}},t.base64ToBlob=function(e){var n="",t=void 0,i=void 0,o=void 0;t=e.replace(/data:(image\/.+);base64,/,function(e,t){return n=t,""});var r=(t=atob(t)).length;for(i=new Uint8Array(r),o=0;o<r;o+=1)i[o]=t.charCodeAt(o);return new Blob([i],{type:n})},t.fixFloatingPoint=function(e){return Number(e.toFixed(l))},t.assignmentForDestroy=function(n){(0,o.forEach)(n,function(e,t){n[t]=null})},t.cls=function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:"",t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:"";return"."!==e.charAt(0)?""+c+t+e:"."+c+t+e.slice(1)},t.changeOrigin=function(e,t){var n=t.originX,i=t.originY,o=e.getPointByOrigin(n,i),r=o.x,a=o.y;e.set({left:r,top:a,originX:n,originY:i}),e.setCoords()},t.flipObject=function(t){var n={};return Object.keys(t).forEach(function(e){n[t[e]]=e}),n},t.setCustomProperty=function(e,t){e.customProps=e.customProps||{},(0,o.extend)(e.customProps,t)},t.getCustomProperty=function(t,e){var n={};(0,o.isString)(e)&&(e=[e]);return(0,o.forEach)(e,function(e){n[e]=t.customProps[e]}),n},t.capitalizeString=function(e){return e.charAt(0).toUpperCase()+e.slice(1)},t.includes=function(e,t){return 0<=e.indexOf(t)},t.getFillTypeFromOption=function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};return(0,o.pick)(e,"type")||s.SHAPE_FILL_TYPE.COLOR},t.getFillTypeFromObject=function(e){var t=e.fill;if((void 0===t?{}:t).source)return s.SHAPE_FILL_TYPE.FILTER;return s.SHAPE_FILL_TYPE.COLOR},t.isShape=function(e){return 0<=(0,o.inArray)(e.get("type"),s.SHAPE_TYPE)};var i,o=n(2),r=n(72),a=(i=r)&&i.__esModule?i:{default:i},s=n(0);var l=2,c="tui-image-editor-",u=Math.min,d=Math.max,h=!1;t.Promise=a.default},function(e,t){e.exports=n},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i,o=n(113),r=(i=o)&&i.__esModule?i:{default:i};var a={};t.default={create:function(e){var t=a[e];if(t){for(var n=arguments.length,i=Array(1<n?n-1:0),o=1;o<n;o++)i[o-1]=arguments[o];return new r.default(t,i)}return null},register:function(e){a[e.name]=e}}},function(n,e,t){(function(e){function t(e){return e&&e.Math==Math&&e}n.exports=t("object"==typeof globalThis&&globalThis)||t("object"==typeof window&&window)||t("object"==typeof self&&self)||t("object"==typeof e&&e)||Function("return this")()}).call(this,t(78))},function(e,t){e.exports=i},function(e,t,n){var i=n(4),o=n(47),r=n(12),a=n(48),s=n(53),l=n(85),c=o("wks"),u=i.Symbol,d=l?u:u&&u.withoutSetter||a;e.exports=function(e){return r(c,e)||(s&&r(u,e)?c[e]=u[e]:c[e]=d("Symbol."+e)),c[e]}},function(e,t,n){"use strict";function i(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}Object.defineProperty(t,"__esModule",{value:!0});var o=(function(e,t,n){return t&&i(e.prototype,t),n&&i(e,n),e}(r,[{key:"fire",value:function(){for(var e=this.graphics,t=arguments.length,n=Array(t),i=0;i<t;i++)n[i]=arguments[i];return this.graphics.fire.apply(e,n)}},{key:"setCanvasImage",value:function(e,t){this.graphics.setCanvasImage(e,t)}},{key:"getCanvasElement",value:function(){return this.graphics.getCanvasElement()}},{key:"getCanvas",value:function(){return this.graphics.getCanvas()}},{key:"getCanvasImage",value:function(){return this.graphics.getCanvasImage()}},{key:"getImageName",value:function(){return this.graphics.getImageName()}},{key:"getEditor",value:function(){return this.graphics.getEditor()}},{key:"getName",value:function(){return this.name}},{key:"setImageProperties",value:function(e,t){this.graphics.setImageProperties(e,t)}},{key:"setCanvasCssDimension",value:function(e){this.graphics.setCanvasCssDimension(e)}},{key:"setCanvasBackstoreDimension",value:function(e){this.graphics.setCanvasBackstoreDimension(e)}},{key:"adjustCanvasDimension",value:function(){this.graphics.adjustCanvasDimension()}}]),r);function r(e,t){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,r),this.name=e,this.graphics=t}t.default=o},function(e,t,n){var i=n(13),o=n(19),r=n(27);e.exports=i?function(e,t,n){return o.f(e,t,r(1,n))}:function(e,t,n){return e[t]=n,e}},function(e,t,n){"use strict";function i(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}Object.defineProperty(t,"__esModule",{value:!0});var o=(function(e,t,n){return t&&i(e.prototype,t),n&&i(e,n),e}(l,[{key:"selector",value:function(e){return this.subMenuElement.querySelector(e)}},{key:"colorPickerChangeShow",value:function(t){this.colorPickerControls.forEach(function(e){t!==e&&e.hide()})}},{key:"getButtonType",value:function(e,t){return e.className.match(RegExp("("+t.join("|")+")"))[0]}},{key:"changeClass",value:function(e,t,n){e.classList.remove(t),e.classList.add(n)}},{key:"changeStandbyMode",value:function(){}},{key:"changeStartMode",value:function(){}},{key:"_makeSubMenuElement",value:function(e){var t=e.locale,n=e.name,i=e.iconStyle,o=e.makeSvgIcon,r=e.templateHtml,a=document.createElement("div");a.className="tui-image-editor-menu-"+n,a.innerHTML=r({locale:t,iconStyle:i,makeSvgIcon:o}),this.subMenuElement.appendChild(a)}}]),l);function l(e,t){var n=t.locale,i=t.name,o=t.makeSvgIcon,r=t.menuBarPosition,a=t.templateHtml,s=t.usageStatistics;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,l),this.subMenuElement=e,this.menuBarPosition=r,this.toggleDirection="top"===r?"down":"up",this.colorPickerControls=[],this.usageStatistics=s,this.eventHandler={},this._makeSubMenuElement({locale:n,name:i,makeSvgIcon:o,templateHtml:a})}t.default=o},function(e,t){e.exports=function(e){try{return!!e()}catch(e){return!0}}},function(e,t,n){var i=n(14);e.exports=function(e){if(!i(e))throw TypeError(String(e)+" is not an object");return e}},function(e,t){var n={}.hasOwnProperty;e.exports=function(e,t){return n.call(e,t)}},function(e,t,n){var i=n(10);e.exports=!i(function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]})},function(e,t){e.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},function(e,t,n){"use strict";function m(i){function e(e,t,n){if(this instanceof i){switch(arguments.length){case 0:return new i;case 1:return new i(e);case 2:return new i(e,t)}return new i(e,t,n)}return i.apply(this,arguments)}return e.prototype=i.prototype,e}var b=n(4),y=n(50).f,_=n(51),k=n(37),E=n(38),w=n(8),O=n(12);e.exports=function(e,t){var n,i,o,r,a,s,l,c,u=e.target,d=e.global,h=e.stat,f=e.proto,v=d?b:h?b[u]:(b[u]||{}).prototype,p=d?k:k[u]||(k[u]={}),g=p.prototype;for(o in t)n=!_(d?o:u+(h?".":"#")+o,e.forced)&&v&&O(v,o),a=p[o],n&&(s=e.noTargetGet?(c=y(v,o))&&c.value:v[o]),r=n&&s?s:t[o],n&&typeof a==typeof r||(l=e.bind&&n?E(r,b):e.wrap&&n?m(r):f&&"function"==typeof r?E(Function.call,r):r,(e.sham||r&&r.sham||a&&a.sham)&&w(l,"sham",!0),p[o]=l,f&&(O(k,i=u+"Prototype")||w(k,i,{}),k[i][o]=r,e.real&&g&&!g[o]&&w(g,o,r)))}},function(e,t){e.exports=function(e){if("function"!=typeof e)throw TypeError(String(e)+" is not a function");return e}},function(e,t,n){function i(e){return"function"==typeof e?e:void 0}var o=n(37),r=n(4);e.exports=function(e,t){return arguments.length<2?i(o[e])||i(r[e]):o[e]&&o[e][t]||r[e]&&r[e][t]}},function(e,t){e.exports={}},function(e,t,n){var i=n(13),o=n(45),r=n(11),a=n(46),s=Object.defineProperty;t.f=i?s:function(e,t,n){if(r(e),t=a(t,!0),r(n),o)try{return s(e,t,n)}catch(e){}if("get"in n||"set"in n)throw TypeError("Accessors not supported");return"value"in n&&(e[t]=n.value),e}},function(e,t){e.exports=!0},function(e,t){var n={}.toString;e.exports=function(e){return n.call(e).slice(8,-1)}},function(e,t,n){"use strict";function i(e){var n,i;this.promise=new e(function(e,t){if(void 0!==n||void 0!==i)throw TypeError("Bad Promise constructor");n=e,i=t}),this.resolve=o(n),this.reject=o(i)}var o=n(16);e.exports.f=function(e){return new i(e)}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=function(e,t,n){return t&&o(e.prototype,t),n&&o(e,n),e};function o(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}var r=s(n(2)),a=s(n(122));function s(e){return e&&e.__esModule?e:{default:e}}var l=["#000000","#2a2a2a","#545454","#7e7e7e","#a8a8a8","#d2d2d2","#ffffff","","#ff4040","#ff6518","#ffbb3b","#03bd9e","#00a9ff","#515ce6","#9e5fff","#ff5583"],c=(i(u,[{key:"destroy",value:function(){var n=this;this._removeEvent(),this.picker.destroy(),this.colorpickerElement.innerHTML="",r.default.forEach(this,function(e,t){n[t]=null})}},{key:"_changeColorElement",value:function(e){e?(this.colorElement.classList.remove("transparent"),this.colorElement.style.backgroundColor=e):(this.colorElement.style.backgroundColor="#fff",this.colorElement.classList.add("transparent"))}},{key:"_makePickerButtonElement",value:function(e){this.colorpickerElement.classList.add("tui-image-editor-button"),this.colorElement=document.createElement("div"),this.colorElement.className="color-picker-value",e?this.colorElement.style.backgroundColor=e:this.colorElement.classList.add("transparent")}},{key:"_makePickerLayerElement",value:function(e,t){var n=document.createElement("label"),i=document.createElement("div");this.pickerControl=document.createElement("div"),this.pickerControl.className="color-picker-control",this.pickerElement=document.createElement("div"),this.pickerElement.className="color-picker",n.innerHTML=t,i.className="triangle",this.pickerControl.appendChild(this.pickerElement),this.pickerControl.appendChild(i),e.appendChild(this.pickerControl),e.appendChild(this.colorElement),e.appendChild(n)}},{key:"_addEvent",value:function(){var t=this;this.picker.on("selectColor",function(e){t._changeColorElement(e.color),t._color=e.color,t.fire("change",e.color)}),this.eventHandler={pickerToggle:this._pickerToggleEventHandler.bind(this),pickerHide:function(){return t.hide()}},this.colorpickerElement.addEventListener("click",this.eventHandler.pickerToggle),document.body.addEventListener("click",this.eventHandler.pickerHide)}},{key:"_removeEvent",value:function(){this.colorpickerElement.removeEventListener("click",this.eventHandler.pickerToggle),document.body.removeEventListener("click",this.eventHandler.pickerHide),this.picker.off()}},{key:"_pickerToggleEventHandler",value:function(e){var t=e.target,n=t&&this._isElementInColorPickerControl(t);(!n||n&&this._isPaletteButton(t))&&(this._show=!this._show,this.pickerControl.style.display=this._show?"block":"none",this._setPickerControlPosition(),this.fire("changeShow",this)),e.stopPropagation()}},{key:"_isPaletteButton",value:function(e){return"tui-colorpicker-palette-button"===e.className}},{key:"_isElementInColorPickerControl",value:function(e){for(var t=e;t!==document.body&&t;){if(t===this.pickerControl)return!0;t=t.parentNode}return!1}},{key:"hide",value:function(){this._show=!1,this.pickerControl.style.display="none"}},{key:"_setPickerControlPosition",value:function(){var e=this.pickerControl.style,t=this._colorpickerElement.clientWidth/2+2,n=this.pickerControl.offsetWidth/2-t,i=-1*(this.pickerControl.offsetHeight+10);"down"===this._toggleDirection&&(i=30),e.top=i+"px",e.left="-"+n+"px"}},{key:"color",get:function(){return this._color},set:function(e){this._color=e,this._changeColorElement(e)}}]),u);function u(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:"#7e7e7e",n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:"up",i=arguments[3];!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,u),this.colorpickerElement=e,this.usageStatistics=i,this._show=!1,this._colorpickerElement=e,this._toggleDirection=n,this._makePickerButtonElement(t),this._makePickerLayerElement(e,e.getAttribute("title")),this._color=t,this.picker=a.default.create({container:this.pickerElement,preset:l,color:t,usageStatistics:this.usageStatistics}),this._addEvent()}r.default.CustomEvents.mixin(c),t.default=c},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=function(e,t,n){return t&&o(e.prototype,t),n&&o(e,n),e};function o(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}var r,a=n(2),s=(r=a)&&r.__esModule?r:{default:r},l=n(1),c=n(0);var u=/(-?)([0-9]*)[^0-9]*([0-9]*)/g,d=(i(h,[{key:"destroy",value:function(){var n=this;this._removeClickEvent(),this._removeDragEvent(),this._removeInputEvent(),this.rangeElement.innerHTML="",s.default.forEach(this,function(e,t){n[t]=null})}},{key:"trigger",value:function(e){this.fire(e,this._value)}},{key:"_getRangeWidth",value:function(){function e(e){return(0,l.toInteger)(window.getComputedStyle(e,null).width)}return e(this.rangeElement)-e(this.pointer)}},{key:"_drawRangeElement",value:function(){this.rangeElement.classList.add("tui-image-editor-range"),this.bar=document.createElement("div"),this.bar.className="tui-image-editor-virtual-range-bar",this.subbar=document.createElement("div"),this.subbar.className="tui-image-editor-virtual-range-subbar",this.pointer=document.createElement("div"),this.pointer.className="tui-image-editor-virtual-range-pointer",this.bar.appendChild(this.subbar),this.bar.appendChild(this.pointer),this.rangeElement.appendChild(this.bar)}},{key:"_addInputEvent",value:function(){this.rangeInputElement&&(this.rangeInputElement.addEventListener("keydown",this.eventHandler.changeInputWithArrow),this.rangeInputElement.addEventListener("keyup",this.eventHandler.changeInput),this.rangeInputElement.addEventListener("blur",this.eventHandler.changeInputFinally))}},{key:"_removeInputEvent",value:function(){this.rangeInputElement&&(this.rangeInputElement.removeEventListener("keydown",this.eventHandler.changeInputWithArrow),this.rangeInputElement.removeEventListener("keyup",this.eventHandler.changeInput),this.rangeInputElement.removeEventListener("blur",this.eventHandler.changeInputFinally))}},{key:"_changeValueWithInputKeyEvent",value:function(e){var t=e.keyCode,n=e.target;if(!([c.keyCodes.ARROW_UP,c.keyCodes.ARROW_DOWN].indexOf(t)<0)){var i=Number(n.value);if(!((i=this._valueUpDownForKeyEvent(i,t))<this._min||i>this._max)){var o=(0,l.clamp)(i,this._min,this.max);this.value=o,this.fire("change",o,!1)}}}},{key:"_valueUpDownForKeyEvent",value:function(e,t){var n=this._useDecimal?.1:1;return t===c.keyCodes.ARROW_UP?e+=n:t===c.keyCodes.ARROW_DOWN&&(e-=n),e}},{key:"_changeValueWithInput",value:function(e,t){var n=t.keyCode,i=t.target;if(!(0<=[c.keyCodes.ARROW_UP,c.keyCodes.ARROW_DOWN].indexOf(n))){var o=this._filterForInputText(i.value),r=!o||isNaN(o);if(i.value=o,!r){var a=(this._useDecimal?Number:l.toInteger)(o);a=(0,l.clamp)(a,this._min,this.max),this.value=a,this.fire("change",a,e)}}}},{key:"_addClickEvent",value:function(){this.rangeElement.addEventListener("click",this.eventHandler.changeSlideFinally)}},{key:"_removeClickEvent",value:function(){this.rangeElement.removeEventListener("click",this.eventHandler.changeSlideFinally)}},{key:"_addDragEvent",value:function(){this.pointer.addEventListener("mousedown",this.eventHandler.startChangingSlide)}},{key:"_removeDragEvent",value:function(){this.pointer.removeEventListener("mousedown",this.eventHandler.startChangingSlide)}},{key:"_changeSlide",value:function(e){var t=e.screenX-this.firstPosition,n=this.firstLeft+t;n=(n=n>this.rangeWidth?this.rangeWidth:n)<0?0:n,this.pointer.style.left=n+"px",this.subbar.style.right=this.rangeWidth-n+"px";var i=n/this.rangeWidth,o=this._absMax*i+this._min,r=this._useDecimal?o:(0,l.toInteger)(o);this.value!==r&&(this.value=r,this.realTimeEvent&&this.fire("change",this._value,!1))}},{key:"_changeSlideFinally",value:function(e){if(e.stopPropagation(),"tui-image-editor-range"===e.target.className){var t=e.offsetX/this.rangeWidth,n=this._absMax*t+this._min;this.pointer.style.left=t*this.rangeWidth+"px",this.subbar.style.right=(1-t)*this.rangeWidth+"px",this.value=n,this.fire("change",n,!0)}}},{key:"_startChangingSlide",value:function(e){this.firstPosition=e.screenX,this.firstLeft=(0,l.toInteger)(this.pointer.style.left)||0,document.addEventListener("mousemove",this.eventHandler.changeSlide),document.addEventListener("mouseup",this.eventHandler.stopChangingSlide)}},{key:"_stopChangingSlide",value:function(){this.fire("change",this._value,!0),document.removeEventListener("mousemove",this.eventHandler.changeSlide),document.removeEventListener("mouseup",this.eventHandler.stopChangingSlide)}},{key:"_filterForInputText",value:function(e){return e.replace(u,"$1$2$3")}},{key:"max",set:function(e){this._max=e,this._absMax=-1*this._min+this._max,this.value=this._value},get:function(){return this._max}},{key:"value",get:function(){return this._value},set:function(e){var t=((e=this._useDecimal?e:(0,l.toInteger)(e))-this._min)*this.rangeWidth/this._absMax;this.rangeWidth<t&&(t=this.rangeWidth),this.pointer.style.left=t+"px",this.subbar.style.right=this.rangeWidth-t+"px",this._value=e,this.rangeInputElement&&(this.rangeInputElement.value=e)}}]),h);function h(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{};!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,h),this._value=t.value||0,this.rangeElement=e.slider,this.rangeInputElement=e.input,this._drawRangeElement(),this.rangeWidth=this._getRangeWidth(),this._min=t.min||0,this._max=t.max||100,this._useDecimal=t.useDecimal,this._absMax=-1*this._min+this._max,this.realTimeEvent=t.realTimeEvent||!1,this.eventHandler={startChangingSlide:this._startChangingSlide.bind(this),stopChangingSlide:this._stopChangingSlide.bind(this),changeSlide:this._changeSlide.bind(this),changeSlideFinally:this._changeSlideFinally.bind(this),changeInput:this._changeValueWithInput.bind(this,!1),changeInputFinally:this._changeValueWithInput.bind(this,!0),changeInputWithArrow:this._changeValueWithInputKeyEvent.bind(this)},this._addClickEvent(),this._addDragEvent(),this._addInputEvent(),this.value=t.value,this.trigger("change")}s.default.CustomEvents.mixin(d),t.default=d},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=function(e,t,n){return t&&o(e.prototype,t),n&&o(e,n),e};function o(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}var r,a=n(66),s=(r=a)&&r.__esModule?r:{default:r};var l=s.default.create,c=s.default.types,u=(i(d,[{key:"getName",value:function(){return this.name}},{key:"start",value:function(){throw new Error(l(c.UN_IMPLEMENTATION,"start"))}},{key:"stop",value:function(){throw new Error(l(c.UN_IMPLEMENTATION,"stop"))}}]),d);function d(e){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,d),this.name=e}t.default=u},function(e,t,n){var i,o,r,a=n(77),s=n(4),l=n(14),c=n(8),u=n(12),d=n(35),h=n(36),f=s.WeakMap;if(a){var v=new f,p=v.get,g=v.has,m=v.set;i=function(e,t){return m.call(v,e,t),t},o=function(e){return p.call(v,e)||{}},r=function(e){return g.call(v,e)}}else{var b=d("state");h[b]=!0,i=function(e,t){return c(e,b,t),t},o=function(e){return u(e,b)?e[b]:{}},r=function(e){return u(e,b)}}e.exports={set:i,get:o,has:r,enforce:function(e){return r(e)?o(e):i(e,{})},getterFor:function(n){return function(e){var t;if(!l(e)||(t=o(e)).type!==n)throw TypeError("Incompatible receiver, "+n+" required");return t}}}},function(e,t){e.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},function(e,t,n){var i=n(81),o=n(33);e.exports=function(e){return i(o(e))}},function(e,t,n){var o=n(8);e.exports=function(e,t,n,i){i&&i.enumerable?e[t]=n:o(e,t,n)}},function(e,t,n){function f(e,t){this.stopped=e,this.result=t}var v=n(11),p=n(101),g=n(55),m=n(38),b=n(102),y=n(103);(e.exports=function(e,t,n,i,o){var r,a,s,l,c,u,d,h=m(t,n,i?2:1);if(o)r=e;else{if("function"!=typeof(a=b(e)))throw TypeError("Target is not iterable");if(p(a)){for(s=0,l=g(e.length);s<l;s++)if((c=i?h(v(d=e[s])[0],d[1]):h(e[s]))&&c instanceof f)return c;return new f(!1)}r=a.call(e)}for(u=r.next;!(d=u.call(r)).done;)if("object"==typeof(c=y(r,h,d.value,i))&&c&&c instanceof f)return c;return new f(!1)}).stop=function(e){return new f(!0,e)}},function(e,t){e.exports=function(e){try{return{error:!1,value:e()}}catch(e){return{error:!0,value:e}}}},function(e,t){var n=Math.ceil,i=Math.floor;e.exports=function(e){return isNaN(e=+e)?0:(0<e?i:n)(e)}},function(e,t){e.exports=function(e){if(null==e)throw TypeError("Can't call method on "+e);return e}},function(e,t,n){var i=n(4),o=n(14),r=i.document,a=o(r)&&o(r.createElement);e.exports=function(e){return a?r.createElement(e):{}}},function(e,t,n){var i=n(47),o=n(48),r=i("keys");e.exports=function(e){return r[e]||(r[e]=o(e))}},function(e,t){e.exports={}},function(e,t){e.exports={}},function(e,t,n){var r=n(16);e.exports=function(i,o,e){if(r(i),void 0===o)return i;switch(e){case 0:return function(){return i.call(o)};case 1:return function(e){return i.call(o,e)};case 2:return function(e,t){return i.call(o,e,t)};case 3:return function(e,t,n){return i.call(o,e,t,n)}}return function(){return i.apply(o,arguments)}}},function(e,t,n){var i=n(12),o=n(83),r=n(35),a=n(84),s=r("IE_PROTO"),l=Object.prototype;e.exports=a?Object.getPrototypeOf:function(e){return e=o(e),i(e,s)?e[s]:"function"==typeof e.constructor&&e instanceof e.constructor?e.constructor.prototype:e instanceof Object?l:null}},function(e,t,n){var r=n(41),a=n(19).f,s=n(8),l=n(12),c=n(91),u=n(6)("toStringTag");e.exports=function(e,t,n,i){if(e){var o=n?e:e.prototype;l(o,u)||a(o,u,{configurable:!0,value:t}),i&&!r&&s(o,"toString",c)}}},function(e,t,n){var i={};i[n(6)("toStringTag")]="z",e.exports="[object z]"===String(i)},function(e,t,n){var i=n(41),o=n(21),r=n(6)("toStringTag"),a="Arguments"==o(function(){return arguments}());e.exports=i?o:function(e){var t,n,i;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(n=function(e,t){try{return e[t]}catch(e){}}(t=Object(e),r))?n:a?o(t):"Object"==(i=o(t))&&"function"==typeof t.callee?"Arguments":i}},function(e,t,n){var i=n(44),o=Function.toString;"function"!=typeof i.inspectSource&&(i.inspectSource=function(e){return o.call(e)}),e.exports=i.inspectSource},function(e,t,n){var i=n(4),o=n(79),r="__core-js_shared__",a=i[r]||o(r,{});e.exports=a},function(e,t,n){var i=n(13),o=n(10),r=n(34);e.exports=!i&&!o(function(){return 7!=Object.defineProperty(r("div"),"a",{get:function(){return 7}}).a})},function(e,t,n){var o=n(14);e.exports=function(e,t){if(!o(e))return e;var n,i;if(t&&"function"==typeof(n=e.toString)&&!o(i=n.call(e)))return i;if("function"==typeof(n=e.valueOf)&&!o(i=n.call(e)))return i;if(!t&&"function"==typeof(n=e.toString)&&!o(i=n.call(e)))return i;throw TypeError("Can't convert object to primitive value")}},function(e,t,n){var i=n(20),o=n(44);(e.exports=function(e,t){return o[e]||(o[e]=void 0!==t?t:{})})("versions",[]).push({version:"3.6.4",mode:i?"pure":"global",copyright:"© 2020 Denis Pushkarev (zloirock.ru)"})},function(e,t){var n=0,i=Math.random();e.exports=function(e){return"Symbol("+String(void 0===e?"":e)+")_"+(++n+i).toString(36)}},function(e,t,n){"use strict";function m(){return this}var b=n(15),y=n(82),_=n(39),k=n(58),E=n(40),w=n(8),O=n(29),i=n(6),C=n(20),x=n(18),o=n(52),S=o.IteratorPrototype,M=o.BUGGY_SAFARI_ITERATORS,P=i("iterator"),j="values",T="entries";e.exports=function(e,t,n,i,o,r,a){y(n,t,i);function s(e){if(e===o&&p)return p;if(!M&&e in f)return f[e];switch(e){case"keys":case j:case T:return function(){return new n(this,e)}}return function(){return new n(this)}}var l,c,u,d=t+" Iterator",h=!1,f=e.prototype,v=f[P]||f["@@iterator"]||o&&f[o],p=!M&&v||s(o),g="Array"==t&&f.entries||v;if(g&&(l=_(g.call(new e)),S!==Object.prototype&&l.next&&(C||_(l)===S||(k?k(l,S):"function"!=typeof l[P]&&w(l,P,m)),E(l,d,!0,!0),C&&(x[d]=m))),o==j&&v&&v.name!==j&&(h=!0,p=function(){return v.call(this)}),C&&!a||f[P]===p||w(f,P,p),x[t]=p,o)if(c={values:s(j),keys:r?p:s("keys"),entries:s(T)},a)for(u in c)!M&&!h&&u in f||O(f,u,c[u]);else b({target:t,proto:!0,forced:M||h},c);return c}},function(e,t,n){var i=n(13),o=n(80),r=n(27),a=n(28),s=n(46),l=n(12),c=n(45),u=Object.getOwnPropertyDescriptor;t.f=i?u:function(e,t){if(e=a(e),t=s(t,!0),c)try{return u(e,t)}catch(e){}if(l(e,t))return r(!o.f.call(e,t),e[t])}},function(e,t,n){function i(e,t){var n=s[a(e)];return n==c||n!=l&&("function"==typeof t?o(t):!!t)}var o=n(10),r=/#|\.prototype\./,a=i.normalize=function(e){return String(e).replace(r,".").toLowerCase()},s=i.data={},l=i.NATIVE="N",c=i.POLYFILL="P";e.exports=i},function(e,t,n){"use strict";var i,o,r,a=n(39),s=n(8),l=n(12),c=n(6),u=n(20),d=c("iterator"),h=!1;[].keys&&("next"in(r=[].keys())?(o=a(a(r)))!==Object.prototype&&(i=o):h=!0),null==i&&(i={}),u||l(i,d)||s(i,d,function(){return this}),e.exports={IteratorPrototype:i,BUGGY_SAFARI_ITERATORS:h}},function(e,t,n){var i=n(10);e.exports=!!Object.getOwnPropertySymbols&&!i(function(){return!String(Symbol())})},function(e,t,n){function i(){}function o(e){return"<script>"+e+"</"+v+">"}var r,a=n(11),s=n(86),l=n(56),c=n(36),u=n(57),d=n(34),h=n(35),f="prototype",v="script",p=h("IE_PROTO"),g=function(){try{r=document.domain&&new ActiveXObject("htmlfile")}catch(e){}var e,t;g=r?function(e){e.write(o("")),e.close();var t=e.parentWindow.Object;return e=null,t}(r):((t=d("iframe")).style.display="none",u.appendChild(t),t.src=String("javascript:"),(e=t.contentWindow.document).open(),e.write(o("document.F=Object")),e.close(),e.F);for(var n=l.length;n--;)delete g[f][l[n]];return g()};c[p]=!0,e.exports=Object.create||function(e,t){var n;return null!==e?(i[f]=a(e),n=new i,i[f]=null,n[p]=e):n=g(),void 0===t?n:s(n,t)}},function(e,t,n){var i=n(32),o=Math.min;e.exports=function(e){return 0<e?o(i(e),9007199254740991):0}},function(e,t){e.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},function(e,t,n){var i=n(17);e.exports=i("document","documentElement")},function(e,t,n){var o=n(11),r=n(92);e.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var n,i=!1,e={};try{(n=Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set).call(e,[]),i=e instanceof Array}catch(e){}return function(e,t){return o(e),r(t),i?n.call(e,t):e.__proto__=t,e}}():void 0)},function(e,t,n){var i=n(4);e.exports=i.Promise},function(e,t,n){var o=n(11),r=n(16),a=n(6)("species");e.exports=function(e,t){var n,i=o(e).constructor;return void 0===i||null==(n=o(i)[a])?t:r(n)}},function(e,t,n){function i(e){if(O.hasOwnProperty(e)){var t=O[e];delete O[e],t()}}function o(e){return function(){i(e)}}function r(e){i(e.data)}function a(e){u.postMessage(e+"",m.protocol+"//"+m.host)}var s,l,c,u=n(4),d=n(10),h=n(21),f=n(38),v=n(57),p=n(34),g=n(62),m=u.location,b=u.setImmediate,y=u.clearImmediate,_=u.process,k=u.MessageChannel,E=u.Dispatch,w=0,O={},C="onreadystatechange";b&&y||(b=function(e){for(var t=[],n=1;n<arguments.length;)t.push(arguments[n++]);return O[++w]=function(){("function"==typeof e?e:Function(e)).apply(void 0,t)},s(w),w},y=function(e){delete O[e]},"process"==h(_)?s=function(e){_.nextTick(o(e))}:E&&E.now?s=function(e){E.now(o(e))}:k&&!g?(c=(l=new k).port2,l.port1.onmessage=r,s=f(c.postMessage,c,1)):!u.addEventListener||"function"!=typeof postMessage||u.importScripts||d(a)?s=C in p("script")?function(e){v.appendChild(p("script"))[C]=function(){v.removeChild(this),i(e)}}:function(e){setTimeout(o(e),0)}:(s=a,u.addEventListener("message",r,!1))),e.exports={set:b,clear:y}},function(e,t,n){var i=n(63);e.exports=/(iphone|ipod|ipad).*applewebkit/i.test(i)},function(e,t,n){var i=n(17);e.exports=i("navigator","userAgent")||""},function(e,t,n){var i=n(11),o=n(14),r=n(22);e.exports=function(e,t){if(i(e),o(t)&&t.constructor===e)return t;var n=r.f(e);return(0,n.resolve)(t),n.promise}},function(e,t,n){"use strict";var i=n(15),c=n(16),o=n(22),r=n(31),u=n(30);i({target:"Promise",stat:!0},{allSettled:function(e){var s=this,t=o.f(s),l=t.resolve,n=t.reject,i=r(function(){var i=c(s.resolve),o=[],r=0,a=1;u(e,function(e){var t=r++,n=!1;o.push(void 0),a++,i.call(s,e).then(function(e){n||(n=!0,o[t]={status:"fulfilled",value:e},--a||l(o))},function(e){n||(n=!0,o[t]={status:"rejected",reason:e},--a||l(o))})}),--a||l(o)});return i.error&&n(i.value),t.promise}})},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i,o=n(2),r=(i=o)&&i.__esModule?i:{default:i};var a=(0,n(1).keyMirror)("UN_IMPLEMENTATION","NO_COMPONENT_NAME"),s="Should implement a method: ",l="Should set a component name",c={UN_IMPLEMENTATION:function(e){return s+e},NO_COMPONENT_NAME:function(){return l}};t.default={types:r.default.extend({},a),create:function(e){e=e.toLowerCase();for(var t=c[e],n=arguments.length,i=Array(1<n?n-1:0),o=1;o<n;o++)i[o-1]=arguments[o];return t.apply(void 0,i)}}},function(e,t,n){"use strict";var R={rect:1,circle:2,triangle:1},D={rect:{w:"width",h:"height"},circle:{w:"rx",h:"ry"},triangle:{w:"width",h:"height"}};function L(e,t,n){var i=e.x,o=e.y,r=t.x,a=t.y,s=n*Math.PI/180;return{originX:(r-i)*Math.cos(s)-(a-o)*Math.sin(s)+i<i?"right":"left",originY:(r-i)*Math.sin(s)+(a-o)*Math.cos(s)+o<o?"bottom":"top"}}e.exports={setOrigins:function(e){var t=e.getPointByOrigin("left","top"),n=e.getPointByOrigin("right","top"),i=e.getPointByOrigin("right","bottom"),o=e.getPointByOrigin("left","bottom");e.origins={lt:t,rt:n,rb:i,lb:o}},resize:function(e,t,n){var i,o,r,a,s,l,c,u,d,h,f,v,p,g,m,b,y,_,k,E,w,O,C,x,S,M,P,j,T,I,A;"center"===(g=e).originX&&"center"===g.originY&&(s=t,c=(l=e).getPointByOrigin("center","center"),u=L(c,s,-l.angle),d=u.originX,h=u.originY,f=l.getPointByOrigin(d,h),v=l.left-(c.x-f.x),p=l.top-(c.y-f.y),l.set({originX:d,originY:h,left:v,top:p}),l.setCoords(),o=(i=e).originX,r=i.originY,a=o.substring(0,1)+r.substring(0,1),i.startPoint=i.origins[a]),n?function(e){var t=e.type,n=e.scaleX,i=e.scaleY,o=D[t],r=e[o.w]*n,a=e[o.h]*i;if(e.isRegular){var s=Math.max(n,i);r=e[o.w]*s,a=e[o.h]*s}var l={hasControls:!1,hasBorders:!1,scaleX:1,scaleY:1};l[o.w]=r,l[o.h]=a,e.set(l)}(e):(m=t,y=(b=e).type,_=b.strokeWidth,k=b.startPoint,E=R[y],w=D[y],O=!("triangle"!==b.type),C={},x=Math.abs(k.x-m.x)/E,S=Math.abs(k.y-m.y)/E,_<x&&(x-=_/E),_<S&&(S-=_/E),b.isRegular&&(x=S=Math.max(x,S),O&&(S=Math.sqrt(3)/2*x)),C[w.w]=x,C[w.h]=S,b.set(C)),M=t,j=(P=e).startPoint,T=L(j,M,-P.angle),I=T.originX,A=T.originY,P.setPositionByOrigin(j,I,A),P.setCoords()},adjustOriginToCenter:function(e){var t=e.getPointByOrigin("center","center"),n=e.originX,i=e.originY,o=e.getPointByOrigin(n,i),r=e.left+(t.x-o.x),a=e.top+(t.y-o.y);e.set({hasControls:!0,hasBorders:!0,originX:"center",originY:"center",left:r,top:a}),e.setCoords()}}},function(e,t,n){"use strict";n(69);var i,o=n(70),r=(i=o)&&i.__esModule?i:{default:i};n(166),n(167),n(168),n(169),n(170),n(171),n(172),n(173),n(174),n(175),n(176),n(177),n(178),n(179),n(180),n(181),n(182),n(183),n(184),n(185),e.exports=r.default},function(e,t,n){"use strict";Element.prototype.matches=Element.prototype.msMatchesSelector||Element.prototype.webkitMatchesSelector,Element.prototype.closest||(Element.prototype.closest=function(e){var t=this;if(!document.documentElement.contains(t))return null;do{if(t.matches(e))return t;t=t.parentElement||t.parentNode}while(null!==t&&1===t.nodeType);return null})
+/*! @source http://purl.eligrey.com/github/classList.js/blob/master/classList.js */,"document"in window.self&&("classList"in document.createElement("_")&&(!document.createElementNS||"classList"in document.createElementNS("http://www.w3.org/2000/svg","g"))||function(e){if("Element"in e){var t="classList",n="prototype",i=e.Element[n],o=Object,r=String[n].trim||function(){return this.replace(/^\s+|\s+$/g,"")},a=Array[n].indexOf||function(e){for(var t=0,n=this.length;t<n;t++)if(t in this&&this[t]===e)return t;return-1},s=function(e,t){this.name=e,this.code=DOMException[e],this.message=t},l=function(e,t){if(""===t)throw new s("SYNTAX_ERR","An invalid or illegal string was specified");if(/\s/.test(t))throw new s("INVALID_CHARACTER_ERR","String contains an invalid character");return a.call(e,t)},c=function(e){for(var t=r.call(e.getAttribute("class")||""),n=t?t.split(/\s+/):[],i=0,o=n.length;i<o;i++)this.push(n[i]);this._updateClassName=function(){e.setAttribute("class",this.toString())}},u=c[n]=[],d=function(){return new c(this)};if(s[n]=Error[n],u.item=function(e){return this[e]||null},u.contains=function(e){return-1!==l(this,e+="")},u.add=function(){for(var e,t=arguments,n=0,i=t.length,o=!1;-1===l(this,e=t[n]+"")&&(this.push(e),o=!0),++n<i;);o&&this._updateClassName()},u.remove=function(){var e,t,n=arguments,i=0,o=n.length,r=!1;do{for(t=l(this,e=n[i]+"");-1!==t;)this.splice(t,1),r=!0,t=l(this,e)}while(++i<o);r&&this._updateClassName()},u.toggle=function(e,t){e+="";var n=this.contains(e),i=n?!0!==t&&"remove":!1!==t&&"add";return i&&this[i](e),!0===t||!1===t?t:!n},u.toString=function(){return this.join(" ")},o.defineProperty){var h={get:d,enumerable:!0,configurable:!0};try{o.defineProperty(i,t,h)}catch(e){void 0!==e.number&&-2146823252!==e.number||(h.enumerable=!1,o.defineProperty(i,t,h))}}else o[n].__defineGetter__&&i.__defineGetter__(t,d)}}(window.self),function(){var e=document.createElement("_");if(e.classList.add("c1","c2"),!e.classList.contains("c2")){var t=function(e){var i=DOMTokenList.prototype[e];DOMTokenList.prototype[e]=function(e){var t,n=arguments.length;for(t=0;t<n;t++)e=arguments[t],i.call(this,e)}};t("add"),t("remove")}if(e.classList.toggle("c3",!1),e.classList.contains("c3")){var n=DOMTokenList.prototype.toggle;DOMTokenList.prototype.toggle=function(e,t){return 1 in arguments&&!this.contains(e)==!t?t:n.call(this,e)}}e=null}()),
+/*!
+ * @copyright Copyright (c) 2017 IcoMoon.io
+ * @license   Licensed under MIT license
+ *            See https://github.com/Keyamoon/svgxuse
+ * @version   1.2.6
+ */
+function(){if("undefined"!=typeof window&&window.addEventListener){var e,t,n,y=Object.create(null),_=function(){clearTimeout(t),t=setTimeout(e,100)},k=function(){},E="http://www.w3.org/1999/xlink";e=function(){var e,t,n,i,o,r,a,s,l,c,u,d,h,f=0;function v(){var e;0===--f&&(k(),window.addEventListener("resize",_,!1),window.addEventListener("orientationchange",_,!1),k=window.MutationObserver?((e=new MutationObserver(_)).observe(document.documentElement,{childList:!0,subtree:!0,attributes:!0}),function(){try{e.disconnect(),window.removeEventListener("resize",_,!1),window.removeEventListener("orientationchange",_,!1)}catch(e){}}):(document.documentElement.addEventListener("DOMSubtreeModified",_,!1),function(){document.documentElement.removeEventListener("DOMSubtreeModified",_,!1),window.removeEventListener("resize",_,!1),window.removeEventListener("orientationchange",_,!1)}))}function p(e){return function(){!0!==y[e.base]&&(e.useEl.setAttributeNS(E,"xlink:href","#"+e.hash),e.useEl.hasAttribute("href")&&e.useEl.setAttribute("href","#"+e.hash))}}function g(i){return function(){var e,t=document.body,n=document.createElement("x");i.onload=null,n.innerHTML=i.responseText,(e=n.getElementsByTagName("svg")[0])&&(e.setAttribute("aria-hidden","true"),e.style.position="absolute",e.style.width=0,e.style.height=0,e.style.overflow="hidden",t.insertBefore(e,t.firstChild)),v()}}function m(e){return function(){e.onerror=null,e.ontimeout=null,v()}}for(k(),s=document.getElementsByTagName("use"),o=0;o<s.length;o+=1){try{t=s[o].getBoundingClientRect()}catch(e){t=!1}e=(a=(i=s[o].getAttribute("href")||s[o].getAttributeNS(E,"href")||s[o].getAttribute("xlink:href"))&&i.split?i.split("#"):["",""])[0],n=a[1],r=t&&0===t.left&&0===t.right&&0===t.top&&0===t.bottom,t&&0===t.width&&0===t.height&&!r?(s[o].hasAttribute("href")&&s[o].setAttributeNS(E,"xlink:href",i),e.length&&(!0!==(l=y[e])&&setTimeout(p({useEl:s[o],base:e,hash:n}),0),void 0===l&&(c=e,h=d=u=void 0,window.XMLHttpRequest&&(u=new XMLHttpRequest,d=b(location),h=b(c),u=void 0===u.withCredentials&&""!==h&&h!==d?XDomainRequest||void 0:XMLHttpRequest),void 0!==u&&(l=new u,(y[e]=l).onload=g(l),l.onerror=m(l),l.ontimeout=m(l),l.open("GET",e),l.send(),f+=1)))):r?e.length&&y[e]&&setTimeout(p({useEl:s[o],base:e,hash:n}),0):void 0===y[e]?y[e]=!0:y[e].onload&&(y[e].abort(),delete y[e].onload,y[e]=!0)}function b(e){var t;return void 0!==e.protocol?t=e:(t=document.createElement("a")).href=e,t.protocol.replace(/:/g,"")+t.host}s="",f+=1,v()},n=function(){window.removeEventListener("load",n,!1),t=setTimeout(e,0)},"complete"!==document.readyState?window.addEventListener("load",n,!1):n()}}()},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=function(e,t,n){return t&&o(e.prototype,t),n&&o(e,n),e};function o(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}var r=f(n(2)),a=f(n(71)),s=f(n(114)),l=f(n(141)),c=f(n(3)),u=f(n(143)),d=n(1),h=n(0);function f(e){return e&&e.__esModule?e:{default:e}}function v(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var p=r.default.isUndefined,g=r.default.forEach,m=r.default.CustomEvents,b=h.eventNames.MOUSE_DOWN,y=h.eventNames.OBJECT_MOVED,_=h.eventNames.OBJECT_SCALED,k=h.eventNames.OBJECT_ACTIVATED,E=h.eventNames.OBJECT_ROTATED,w=h.eventNames.OBJECT_ADDED,O=h.eventNames.ADD_TEXT,C=h.eventNames.ADD_OBJECT,x=h.eventNames.TEXT_EDITING,S=h.eventNames.TEXT_CHANGED,M=h.eventNames.ICON_CREATE_RESIZE,P=h.eventNames.ICON_CREATE_END,j=h.eventNames.SELECTION_CLEARED,T=h.eventNames.SELECTION_CREATED,I=h.eventNames.ADD_OBJECT_AFTER,A=(i(R,[{key:"_setSelectionStyle",value:function(t,e){var n=e.applyCropSelectionStyle,i=e.applyGroupSelectionStyle;t&&this._graphics.setSelectionStyle(t),n&&this._graphics.setCropSelectionStyle(t),i&&this.on("selectionCreated",function(e){"activeSelection"===e.type&&e.set(t)})}},{key:"_attachInvokerEvents",value:function(){var e=h.eventNames.UNDO_STACK_CHANGED,t=h.eventNames.REDO_STACK_CHANGED;this._invoker.on(e,this.fire.bind(this,e)),this._invoker.on(t,this.fire.bind(this,t))}},{key:"_attachGraphicsEvents",value:function(){var e;this._graphics.on((v(e={},b,this._handlers.mousedown),v(e,y,this._handlers.objectMoved),v(e,_,this._handlers.objectScaled),v(e,E,this._handlers.objectRotated),v(e,k,this._handlers.objectActivated),v(e,w,this._handlers.objectAdded),v(e,O,this._handlers.addText),v(e,C,this._handlers.addObject),v(e,x,this._handlers.textEditing),v(e,S,this._handlers.textChanged),v(e,M,this._handlers.iconCreateResize),v(e,P,this._handlers.iconCreateEnd),v(e,j,this._handlers.selectionCleared),v(e,T,this._handlers.selectionCreated),e))}},{key:"_attachDomEvents",value:function(){document.addEventListener("keydown",this._handlers.keydown)}},{key:"_detachDomEvents",value:function(){document.removeEventListener("keydown",this._handlers.keydown)}},{key:"_onKeyDown",value:function(e){var t=e.ctrlKey,n=e.keyCode,i=e.metaKey;(t||i)&&(n===h.keyCodes.C?this._graphics.resetTargetObjectForCopyPaste():n===h.keyCodes.V?(this._graphics.pasteObject(),this.clearRedoStack()):n===h.keyCodes.Z?this.undo().catch(function(){}):n===h.keyCodes.Y&&this.redo().catch(function(){}));var o=n===h.keyCodes.BACKSPACE||n===h.keyCodes.DEL;this._graphics.isReadyRemoveObject()&&o&&(e.preventDefault(),this.removeActiveObject())}},{key:"removeActiveObject",value:function(){var e=this._graphics.getActiveObjectIdForRemove();this.removeObject(e)}},{key:"_onMouseDown",value:function(e,t){this.fire(h.eventNames.MOUSE_DOWN,e,t)}},{key:"_pushAddObjectCommand",value:function(e){var t=c.default.create(h.commandNames.ADD_OBJECT,this._graphics,e);this._invoker.pushUndoStack(t)}},{key:"_onObjectActivated",value:function(e){this.fire(h.eventNames.OBJECT_ACTIVATED,e)}},{key:"_onObjectMoved",value:function(e){this.fire(h.eventNames.OBJECT_MOVED,e)}},{key:"_onObjectScaled",value:function(e){this.fire(h.eventNames.OBJECT_SCALED,e)}},{key:"_onObjectRotated",value:function(e){this.fire(h.eventNames.OBJECT_ROTATED,e)}},{key:"getDrawingMode",value:function(){return this._graphics.getDrawingMode()}},{key:"clearObjects",value:function(){return this.execute(h.commandNames.CLEAR_OBJECTS)}},{key:"deactivateAll",value:function(){this._graphics.deactivateAll(),this._graphics.renderAll()}},{key:"discardSelection",value:function(){this._graphics.discardSelection()}},{key:"changeSelectableAll",value:function(e){this._graphics.changeSelectableAll(e)}},{key:"execute",value:function(e){for(var t,n=arguments.length,i=Array(1<n?n-1:0),o=1;o<n;o++)i[o-1]=arguments[o];var r=[this._graphics].concat(i);return(t=this._invoker).execute.apply(t,[e].concat(r))}},{key:"executeSilent",value:function(e){for(var t,n=arguments.length,i=Array(1<n?n-1:0),o=1;o<n;o++)i[o-1]=arguments[o];var r=[this._graphics].concat(i);return(t=this._invoker).executeSilent.apply(t,[e].concat(r))}},{key:"undo",value:function(){return this._invoker.undo()}},{key:"redo",value:function(){return this._invoker.redo()}},{key:"loadImageFromFile",value:function(t,e){if(!t)return d.Promise.reject(h.rejectMessages.invalidParameters);var n=URL.createObjectURL(t);return e=e||t.name,this.loadImageFromURL(n,e).then(function(e){return URL.revokeObjectURL(t),e})}},{key:"loadImageFromURL",value:function(e,t){return t&&e?this.execute(h.commandNames.LOAD_IMAGE,t,e):d.Promise.reject(h.rejectMessages.invalidParameters)}},{key:"addImageObject",value:function(e){return e?this.execute(h.commandNames.ADD_IMAGE_OBJECT,e):d.Promise.reject(h.rejectMessages.invalidParameters)}},{key:"startDrawingMode",value:function(e,t){return this._graphics.startDrawingMode(e,t)}},{key:"stopDrawingMode",value:function(){this._graphics.stopDrawingMode()}},{key:"crop",value:function(e){var t=this._graphics.getCroppedImageData(e);return t?this.loadImageFromURL(t.url,t.imageName):d.Promise.reject(h.rejectMessages.invalidParameters)}},{key:"getCropzoneRect",value:function(){return this._graphics.getCropzoneRect()}},{key:"setCropzoneRect",value:function(e){this._graphics.setCropzoneRect(e)}},{key:"_flip",value:function(e){return this.execute(h.commandNames.FLIP_IMAGE,e)}},{key:"flipX",value:function(){return this._flip("flipX")}},{key:"flipY",value:function(){return this._flip("flipY")}},{key:"resetFlip",value:function(){return this._flip("reset")}},{key:"_rotate",value:function(e,t,n){return n?this.executeSilent(h.commandNames.ROTATE_IMAGE,e,t):this.execute(h.commandNames.ROTATE_IMAGE,e,t)}},{key:"rotate",value:function(e,t){return this._rotate("rotate",e,t)}},{key:"setAngle",value:function(e,t){return this._rotate("setAngle",e,t)}},{key:"setBrush",value:function(e){this._graphics.setBrush(e)}},{key:"setDrawingShape",value:function(e,t){this._graphics.setDrawingShape(e,t)}},{key:"addShape",value:function(e,t){return t=t||{},this._setPositions(t),this.execute(h.commandNames.ADD_SHAPE,e,t)}},{key:"changeShape",value:function(e,t,n){return this[n?"executeSilent":"execute"](h.commandNames.CHANGE_SHAPE,e,t)}},{key:"addText",value:function(e,t){return e=e||"",t=t||{},this.execute(h.commandNames.ADD_TEXT,e,t)}},{key:"changeText",value:function(e,t){return t=t||"",this.execute(h.commandNames.CHANGE_TEXT,e,t)}},{key:"changeTextStyle",value:function(e,t,n){return this[n?"executeSilent":"execute"](h.commandNames.CHANGE_TEXT_STYLE,e,t)}},{key:"_changeActivateMode",value:function(e){"ICON"!==e&&this.getDrawingMode()!==e&&this.startDrawingMode(e)}},{key:"_onTextChanged",value:function(e){this.changeText(e.id,e.text)}},{key:"_onIconCreateResize",value:function(e){this.fire(h.eventNames.ICON_CREATE_RESIZE,e)}},{key:"_onIconCreateEnd",value:function(e){this.fire(h.eventNames.ICON_CREATE_END,e)}},{key:"_onTextEditing",value:function(){this.fire(h.eventNames.TEXT_EDITING)}},{key:"_onAddText",value:function(e){this.fire(h.eventNames.ADD_TEXT,{originPosition:e.originPosition,clientPosition:e.clientPosition})}},{key:"_onAddObject",value:function(e){var t=this._graphics.getObject(e.id);this._pushAddObjectCommand(t)}},{key:"_onObjectAdded",value:function(e){this.fire(w,e),this.fire(I,e)}},{key:"_selectionCleared",value:function(){this.fire(j)}},{key:"_selectionCreated",value:function(e){this.fire(T,e)}},{key:"registerIcons",value:function(e){this._graphics.registerPaths(e)}},{key:"changeCursor",value:function(e){this._graphics.changeCursor(e)}},{key:"addIcon",value:function(e,t){return t=t||{},this._setPositions(t),this.execute(h.commandNames.ADD_ICON,e,t)}},{key:"changeIconColor",value:function(e,t){return this.execute(h.commandNames.CHANGE_ICON_COLOR,e,t)}},{key:"removeObject",value:function(e){return this.execute(h.commandNames.REMOVE_OBJECT,e)}},{key:"hasFilter",value:function(e){return this._graphics.hasFilter(e)}},{key:"removeFilter",value:function(e){return this.execute(h.commandNames.REMOVE_FILTER,e)}},{key:"applyFilter",value:function(e,t,n){return this[n?"executeSilent":"execute"](h.commandNames.APPLY_FILTER,e,t)}},{key:"toDataURL",value:function(e){return this._graphics.toDataURL(e)}},{key:"getImageName",value:function(){return this._graphics.getImageName()}},{key:"clearUndoStack",value:function(){this._invoker.clearUndoStack()}},{key:"clearRedoStack",value:function(){this._invoker.clearRedoStack()}},{key:"isEmptyUndoStack",value:function(){return this._invoker.isEmptyUndoStack()}},{key:"isEmptyRedoStack",value:function(){return this._invoker.isEmptyRedoStack()}},{key:"resizeCanvasDimension",value:function(e){return e?this.execute(h.commandNames.RESIZE_CANVAS_DIMENSION,e):d.Promise.reject(h.rejectMessages.invalidParameters)}},{key:"destroy",value:function(){var n=this;this.stopDrawingMode(),this._detachDomEvents(),this._graphics.destroy(),this._graphics=null,this.ui&&this.ui.destroy(),g(this,function(e,t){n[t]=null},this)}},{key:"_setPositions",value:function(e){var t=this._graphics.getCenter();p(e.left)&&(e.left=t.left),p(e.top)&&(e.top=t.top)}},{key:"setObjectProperties",value:function(e,t){return this.execute(h.commandNames.SET_OBJECT_PROPERTIES,e,t)}},{key:"setObjectPropertiesQuietly",value:function(e,t){this._graphics.setObjectProperties(e,t)}},{key:"getObjectProperties",value:function(e,t){return this._graphics.getObject(e)?this._graphics.getObjectProperties(e,t):null}},{key:"getCanvasSize",value:function(){return this._graphics.getCanvasSize()}},{key:"getObjectPosition",value:function(e,t,n){return this._graphics.getObjectPosition(e,t,n)}},{key:"setObjectPosition",value:function(e,t){return this.execute(h.commandNames.SET_OBJECT_POSITION,e,t)}}]),R);function R(e,t){if(!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,R),t=r.default.extend({includeUI:!1,usageStatistics:!0},t),this.mode=null,this.activeObjectId=null,t.includeUI){var n=t.includeUI;n.usageStatistics=t.usageStatistics,this.ui=new s.default(e,n,this.getActions()),t=this.ui.setUiDefaultSelectionStyle(t)}this._invoker=new a.default,this._graphics=new u.default(this.ui?this.ui.getEditorArea():e,{cssMaxWidth:t.cssMaxWidth,cssMaxHeight:t.cssMaxHeight,useDragAddIcon:!!this.ui}),this._handlers={keydown:this._onKeyDown.bind(this),mousedown:this._onMouseDown.bind(this),objectActivated:this._onObjectActivated.bind(this),objectMoved:this._onObjectMoved.bind(this),objectScaled:this._onObjectScaled.bind(this),objectRotated:this._onObjectRotated.bind(this),objectAdded:this._onObjectAdded.bind(this),createdPath:this._onCreatedPath,addText:this._onAddText.bind(this),addObject:this._onAddObject.bind(this),textEditing:this._onTextEditing.bind(this),textChanged:this._onTextChanged.bind(this),iconCreateResize:this._onIconCreateResize.bind(this),iconCreateEnd:this._onIconCreateEnd.bind(this),selectionCleared:this._selectionCleared.bind(this),selectionCreated:this._selectionCreated.bind(this)},this._attachInvokerEvents(),this._attachGraphicsEvents(),this._attachDomEvents(),this._setSelectionStyle(t.selectionStyle,{applyCropSelectionStyle:t.applyCropSelectionStyle,applyGroupSelectionStyle:t.applyGroupSelectionStyle}),t.usageStatistics&&(0,d.sendHostName)(),this.ui&&(this.ui.initCanvas(),this.setReAction()),fabric.enableGLFiltering=!1}l.default.mixin(A),m.mixin(A),t.default=A},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=function(e,t,n){return t&&o(e.prototype,t),n&&o(e,n),e};function o(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}var r=c(n(2)),a=n(1),s=c(n(3)),l=n(0);function c(e){return e&&e.__esModule?e:{default:e}}var u=r.default.isFunction,d=r.default.isString,h=r.default.CustomEvents,f=(i(v,[{key:"_invokeExecution",value:function(t){var n=this;this.lock();var e=t.args;return e=e||[],t.execute.apply(t,e).then(function(e){return n._isSilent||n.pushUndoStack(t),n.unlock(),u(t.executeCallback)&&t.executeCallback(e),e}).catch(function(e){return n.unlock(),a.Promise.reject(e)})}},{key:"_invokeUndo",value:function(t){var n=this;this.lock();var e=t.args;return e=e||[],t.undo.apply(t,e).then(function(e){return n.pushRedoStack(t),n.unlock(),u(t.undoCallback)&&t.undoCallback(e),e}).catch(function(e){return n.unlock(),a.Promise.reject(e)})}},{key:"_fireRedoStackChanged",value:function(){this.fire(l.eventNames.REDO_STACK_CHANGED,this._redoStack.length)}},{key:"_fireUndoStackChanged",value:function(){this.fire(l.eventNames.UNDO_STACK_CHANGED,this._undoStack.length)}},{key:"lock",value:function(){this._isLocked=!0}},{key:"unlock",value:function(){this._isLocked=!1}},{key:"executeSilent",value:function(){var e=this;this._isSilent=!0;for(var t=arguments.length,n=Array(t),i=0;i<t;i++)n[i]=arguments[i];return this.execute.apply(this,n.concat([this._isSilent])).then(function(){e._isSilent=!1})}},{key:"execute",value:function(){var t=this;if(this._isLocked)return a.Promise.reject(l.rejectMessages.isLock);for(var e=arguments.length,n=Array(e),i=0;i<e;i++)n[i]=arguments[i];var o=n[0];return d(o)&&(o=s.default.create.apply(s.default,n)),this._invokeExecution(o).then(function(e){return t.clearRedoStack(),e})}},{key:"undo",value:function(){var e=this._undoStack.pop(),t="";return e&&this._isLocked&&(this.pushUndoStack(e,!0),e=null),e?(this.isEmptyUndoStack()&&this._fireUndoStackChanged(),this._invokeUndo(e)):(t=l.rejectMessages.undo,this._isLocked&&(t=t+" Because "+l.rejectMessages.isLock),a.Promise.reject(t))}},{key:"redo",value:function(){var e=this._redoStack.pop(),t="";return e&&this._isLocked&&(this.pushRedoStack(e,!0),e=null),e?(this.isEmptyRedoStack()&&this._fireRedoStackChanged(),this._invokeExecution(e)):(t=l.rejectMessages.redo,this._isLocked&&(t=t+" Because "+l.rejectMessages.isLock),a.Promise.reject(t))}},{key:"pushUndoStack",value:function(e,t){this._undoStack.push(e),t||this._fireUndoStackChanged()}},{key:"pushRedoStack",value:function(e,t){this._redoStack.push(e),t||this._fireRedoStackChanged()}},{key:"isEmptyRedoStack",value:function(){return 0===this._redoStack.length}},{key:"isEmptyUndoStack",value:function(){return 0===this._undoStack.length}},{key:"clearUndoStack",value:function(){this.isEmptyUndoStack()||(this._undoStack=[],this._fireUndoStackChanged())}},{key:"clearRedoStack",value:function(){this.isEmptyRedoStack()||(this._redoStack=[],this._fireRedoStackChanged())}}]),v);function v(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,v),this._undoStack=[],this._redoStack=[],this._isLocked=!1,this._isSilent=!1}h.mixin(f),t.default=f},function(e,t,n){var i=n(73);n(109),n(110),n(111),n(112),e.exports=i},function(e,t,n){n(74),n(75),n(93),n(97),n(65),n(108);var i=n(37);e.exports=i.Promise},function(e,t){},function(e,t,n){"use strict";var o=n(76).charAt,i=n(26),r=n(49),a="String Iterator",s=i.set,l=i.getterFor(a);r(String,"String",function(e){s(this,{type:a,string:String(e),index:0})},function(){var e,t=l(this),n=t.string,i=t.index;return i>=n.length?{value:void 0,done:!0}:(e=o(n,i),t.index+=e.length,{value:e,done:!1})})},function(e,t,n){function i(s){return function(e,t){var n,i,o=String(c(e)),r=l(t),a=o.length;return r<0||a<=r?s?"":void 0:(n=o.charCodeAt(r))<55296||56319<n||r+1===a||(i=o.charCodeAt(r+1))<56320||57343<i?s?o.charAt(r):n:s?o.slice(r,r+2):i-56320+(n-55296<<10)+65536}}var l=n(32),c=n(33);e.exports={codeAt:i(!1),charAt:i(!0)}},function(e,t,n){var i=n(4),o=n(43),r=i.WeakMap;e.exports="function"==typeof r&&/native code/.test(o(r))},function(e,t){var n;n=function(){return this}();try{n=n||new Function("return this")()}catch(e){"object"==typeof window&&(n=window)}e.exports=n},function(e,t,n){var i=n(4),o=n(8);e.exports=function(t,n){try{o(i,t,n)}catch(e){i[t]=n}return n}},function(e,t,n){"use strict";var i={}.propertyIsEnumerable,o=Object.getOwnPropertyDescriptor,r=o&&!i.call({1:2},1);t.f=r?function(e){var t=o(this,e);return!!t&&t.enumerable}:i},function(e,t,n){var i=n(10),o=n(21),r="".split;e.exports=i(function(){return!Object("z").propertyIsEnumerable(0)})?function(e){return"String"==o(e)?r.call(e,""):Object(e)}:Object},function(e,t,n){"use strict";function o(){return this}var r=n(52).IteratorPrototype,a=n(54),s=n(27),l=n(40),c=n(18);e.exports=function(e,t,n){var i=t+" Iterator";return e.prototype=a(r,{next:s(1,n)}),l(e,i,!1,!0),c[i]=o,e}},function(e,t,n){var i=n(33);e.exports=function(e){return Object(i(e))}},function(e,t,n){var i=n(10);e.exports=!i(function(){function e(){}return e.prototype.constructor=null,Object.getPrototypeOf(new e)!==e.prototype})},function(e,t,n){var i=n(53);e.exports=i&&!Symbol.sham&&"symbol"==typeof Symbol.iterator},function(e,t,n){var i=n(13),a=n(19),s=n(11),l=n(87);e.exports=i?Object.defineProperties:function(e,t){s(e);for(var n,i=l(t),o=i.length,r=0;r<o;)a.f(e,n=i[r++],t[n]);return e}},function(e,t,n){var i=n(88),o=n(56);e.exports=Object.keys||function(e){return i(e,o)}},function(e,t,n){var a=n(12),s=n(28),l=n(89).indexOf,c=n(36);e.exports=function(e,t){var n,i=s(e),o=0,r=[];for(n in i)!a(c,n)&&a(i,n)&&r.push(n);for(;t.length>o;)a(i,n=t[o++])&&(~l(r,n)||r.push(n));return r}},function(e,t,n){function i(s){return function(e,t,n){var i,o=l(e),r=c(o.length),a=u(n,r);if(s&&t!=t){for(;a<r;)if((i=o[a++])!=i)return!0}else for(;a<r;a++)if((s||a in o)&&o[a]===t)return s||a||0;return!s&&-1}}var l=n(28),c=n(55),u=n(90);e.exports={includes:i(!0),indexOf:i(!1)}},function(e,t,n){var i=n(32),o=Math.max,r=Math.min;e.exports=function(e,t){var n=i(e);return n<0?o(n+t,0):r(n,t)}},function(e,t,n){"use strict";var i=n(41),o=n(42);e.exports=i?{}.toString:function(){return"[object "+o(this)+"]"}},function(e,t,n){var i=n(14);e.exports=function(e){if(!i(e)&&null!==e)throw TypeError("Can't set "+String(e)+" as a prototype");return e}},function(e,t,n){n(94);var i=n(96),o=n(4),r=n(42),a=n(8),s=n(18),l=n(6)("toStringTag");for(var c in i){var u=o[c],d=u&&u.prototype;d&&r(d)!==l&&a(d,l,c),s[c]=s.Array}},function(e,t,n){"use strict";var i=n(28),o=n(95),r=n(18),a=n(26),s=n(49),l="Array Iterator",c=a.set,u=a.getterFor(l);e.exports=s(Array,"Array",function(e,t){c(this,{type:l,target:i(e),index:0,kind:t})},function(){var e=u(this),t=e.target,n=e.kind,i=e.index++;return!t||i>=t.length?{value:e.target=void 0,done:!0}:"keys"==n?{value:i,done:!1}:"values"==n?{value:t[i],done:!1}:{value:[i,t[i]],done:!1}},"values"),r.Arguments=r.Array,o("keys"),o("values"),o("entries")},function(e,t){e.exports=function(){}},function(e,t){e.exports={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0}},function(e,t,n){"use strict";function p(e){var t;return!(!k(e)||"function"!=typeof(t=e.then))&&t}function r(d,h,f){if(!h.notified){h.notified=!0;var v=h.reactions;j(function(){for(var e=h.value,t=1==h.state,n=0;v.length>n;){var i,o,r,a=v[n++],s=t?a.ok:a.fail,l=a.resolve,c=a.reject,u=a.domain;try{s?(t||(2===h.rejection&&oe(d,h),h.rejection=1),!0===s?i=e:(u&&u.enter(),i=s(e),u&&(u.exit(),r=!0)),i===a.promise?c(X("Promise-chain cycle")):(o=p(i))?o.call(i,l,c):l(i)):c(e)}catch(e){u&&!r&&u.exit(),c(e)}}h.reactions=[],h.notified=!1,f&&!h.rejection&&ne(d,h)})}}function o(e,t,n){var i,o;$?((i=Y.createEvent("Event")).promise=t,i.reason=n,i.initEvent(e,!1,!0),f.dispatchEvent(i)):i={promise:t,reason:n},(o=f["on"+e])?o(i):e===Q&&I("Unhandled promise rejection",n)}function a(t,n,i,o){return function(e){t(n,i,e,o)}}function s(e,t,n,i){t.done||(t.done=!0,i&&(t=i),t.value=n,t.state=2,r(e,t,!0))}var i,l,c,u,d=n(15),h=n(20),f=n(4),v=n(17),g=n(59),m=n(29),b=n(98),y=n(40),_=n(99),k=n(14),E=n(16),w=n(100),O=n(21),C=n(43),x=n(30),S=n(104),M=n(60),P=n(61).set,j=n(105),T=n(64),I=n(106),A=n(22),R=n(31),D=n(26),L=n(51),z=n(6),F=n(107),N=z("species"),H="Promise",B=D.get,W=D.set,U=D.getterFor(H),V=g,X=f.TypeError,Y=f.document,G=f.process,q=v("fetch"),J=A.f,K=J,Z="process"==O(G),$=!!(Y&&Y.createEvent&&f.dispatchEvent),Q="unhandledrejection",ee=L(H,function(){if(!(C(V)!==String(V))){if(66===F)return!0;if(!Z&&"function"!=typeof PromiseRejectionEvent)return!0}if(h&&!V.prototype.finally)return!0;if(51<=F&&/native code/.test(V))return!1;function e(e){e(function(){},function(){})}var t=V.resolve(1);return(t.constructor={})[N]=e,!(t.then(function(){})instanceof e)}),te=ee||!S(function(e){V.all(e).catch(function(){})}),ne=function(n,i){P.call(f,function(){var e,t=i.value;if(ie(i)&&(e=R(function(){Z?G.emit("unhandledRejection",t,n):o(Q,n,t)}),i.rejection=Z||ie(i)?2:1,e.error))throw e.value})},ie=function(e){return 1!==e.rejection&&!e.parent},oe=function(e,t){P.call(f,function(){Z?G.emit("rejectionHandled",e):o("rejectionhandled",e,t.value)})},re=function(n,i,e,t){if(!i.done){i.done=!0,t&&(i=t);try{if(n===e)throw X("Promise can't be resolved itself");var o=p(e);o?j(function(){var t={done:!1};try{o.call(e,a(re,n,t,i),a(s,n,t,i))}catch(e){s(n,t,e,i)}}):(i.value=e,i.state=1,r(n,i,!1))}catch(e){s(n,{done:!1},e,i)}}};ee&&(V=function(e){w(this,V,H),E(e),i.call(this);var t=B(this);try{e(a(re,this,t),a(s,this,t))}catch(e){s(this,t,e)}},(i=function(){W(this,{type:H,done:!1,notified:!1,parent:!1,reactions:[],rejection:!1,state:0,value:void 0})}).prototype=b(V.prototype,{then:function(e,t){var n=U(this),i=J(M(this,V));return i.ok="function"!=typeof e||e,i.fail="function"==typeof t&&t,i.domain=Z?G.domain:void 0,n.parent=!0,n.reactions.push(i),0!=n.state&&r(this,n,!1),i.promise},catch:function(e){return this.then(void 0,e)}}),l=function(){var e=new i,t=B(e);this.promise=e,this.resolve=a(re,e,t),this.reject=a(s,e,t)},A.f=J=function(e){return e===V||e===c?new l:K(e)},h||"function"!=typeof g||(u=g.prototype.then,m(g.prototype,"then",function(e,t){var n=this;return new V(function(e,t){u.call(n,e,t)}).then(e,t)},{unsafe:!0}),"function"==typeof q&&d({global:!0,enumerable:!0,forced:!0},{fetch:function(e){return T(V,q.apply(f,arguments))}}))),d({global:!0,wrap:!0,forced:ee},{Promise:V}),y(V,H,!1,!0),_(H),c=v(H),d({target:H,stat:!0,forced:ee},{reject:function(e){var t=J(this);return t.reject.call(void 0,e),t.promise}}),d({target:H,stat:!0,forced:h||ee},{resolve:function(e){return T(h&&this===c?V:this,e)}}),d({target:H,stat:!0,forced:te},{all:function(e){var s=this,t=J(s),l=t.resolve,c=t.reject,n=R(function(){var i=E(s.resolve),o=[],r=0,a=1;x(e,function(e){var t=r++,n=!1;o.push(void 0),a++,i.call(s,e).then(function(e){n||(n=!0,o[t]=e,--a||l(o))},c)}),--a||l(o)});return n.error&&c(n.value),t.promise},race:function(e){var n=this,i=J(n),o=i.reject,t=R(function(){var t=E(n.resolve);x(e,function(e){t.call(n,e).then(i.resolve,o)})});return t.error&&o(t.value),i.promise}})},function(e,t,n){var o=n(29);e.exports=function(e,t,n){for(var i in t)n&&n.unsafe&&e[i]?e[i]=t[i]:o(e,i,t[i],n);return e}},function(e,t,n){"use strict";var i=n(17),o=n(19),r=n(6),a=n(13),s=r("species");e.exports=function(e){var t=i(e),n=o.f;a&&t&&!t[s]&&n(t,s,{configurable:!0,get:function(){return this}})}},function(e,t){e.exports=function(e,t,n){if(!(e instanceof t))throw TypeError("Incorrect "+(n?n+" ":"")+"invocation");return e}},function(e,t,n){var i=n(6),o=n(18),r=i("iterator"),a=Array.prototype;e.exports=function(e){return void 0!==e&&(o.Array===e||a[r]===e)}},function(e,t,n){var i=n(42),o=n(18),r=n(6)("iterator");e.exports=function(e){if(null!=e)return e[r]||e["@@iterator"]||o[i(e)]}},function(e,t,n){var r=n(11);e.exports=function(t,e,n,i){try{return i?e(r(n)[0],n[1]):e(n)}catch(e){var o=t.return;throw void 0!==o&&r(o.call(t)),e}}},function(e,t,n){var o=n(6)("iterator"),r=!1;try{var i=0,a={next:function(){return{done:!!i++}},return:function(){r=!0}};a[o]=function(){return this},Array.from(a,function(){throw 2})}catch(e){}e.exports=function(e,t){if(!t&&!r)return!1;var n=!1;try{var i={};i[o]=function(){return{next:function(){return{done:n=!0}}}},e(i)}catch(e){}return n}},function(e,t,n){var i,o,r,a,s,l,c,u,d=n(4),h=n(50).f,f=n(21),v=n(61).set,p=n(62),g=d.MutationObserver||d.WebKitMutationObserver,m=d.process,b=d.Promise,y="process"==f(m),_=h(d,"queueMicrotask"),k=_&&_.value;k||(i=function(){var e,t;for(y&&(e=m.domain)&&e.exit();o;){t=o.fn,o=o.next;try{t()}catch(e){throw o?a():r=void 0,e}}r=void 0,e&&e.enter()},a=y?function(){m.nextTick(i)}:g&&!p?(s=!0,l=document.createTextNode(""),new g(i).observe(l,{characterData:!0}),function(){l.data=s=!s}):b&&b.resolve?(c=b.resolve(void 0),u=c.then,function(){u.call(c,i)}):function(){v.call(d,i)}),e.exports=k||function(e){var t={fn:e,next:void 0};r&&(r.next=t),o||(o=t,a()),r=t}},function(e,t,n){var i=n(4);e.exports=function(e,t){var n=i.console;n&&n.error&&(1===arguments.length?n.error(e):n.error(e,t))}},function(e,t,n){var i,o,r=n(4),a=n(63),s=r.process,l=s&&s.versions,c=l&&l.v8;c?o=(i=c.split("."))[0]+i[1]:a&&(!(i=a.match(/Edge\/(\d+)/))||74<=i[1])&&(i=a.match(/Chrome\/(\d+)/))&&(o=i[1]),e.exports=o&&+o},function(e,t,n){"use strict";var i=n(15),o=n(20),r=n(59),a=n(10),s=n(17),l=n(60),c=n(64),u=n(29);i({target:"Promise",proto:!0,real:!0,forced:!!r&&a(function(){r.prototype.finally.call({then:function(){}},function(){})})},{finally:function(t){var n=l(this,s("Promise")),e="function"==typeof t;return this.then(e?function(e){return c(n,t()).then(function(){return e})}:t,e?function(e){return c(n,t()).then(function(){throw e})}:t)}}),o||"function"!=typeof r||r.prototype.finally||u(r.prototype,"finally",s("Promise").prototype.finally)},function(e,t,n){"use strict";var i=n(15),o=n(13),r=n(39),a=n(58),s=n(54),l=n(19),c=n(27),u=n(30),d=n(8),h=n(26),f=h.set,v=h.getterFor("AggregateError"),p=function(e,t){var n=this;if(!(n instanceof p))return new p(e,t);a&&(n=a(new Error(t),r(n)));var i=[];return u(e,i.push,i),o?f(n,{errors:i,type:"AggregateError"}):n.errors=i,void 0!==t&&d(n,"message",String(t)),n};p.prototype=s(Error.prototype,{constructor:c(5,p),message:c(5,""),name:c(5,"AggregateError")}),o&&l.f(p.prototype,"errors",{get:function(){return v(this).errors},configurable:!0}),i({global:!0},{AggregateError:p})},function(e,t,n){n(65)},function(e,t,n){"use strict";var i=n(15),o=n(22),r=n(31);i({target:"Promise",stat:!0},{try:function(e){var t=o.f(this),n=r(e);return(n.error?t.reject:t.resolve)(n.value),t.promise}})},function(e,t,n){"use strict";var i=n(15),d=n(16),h=n(17),o=n(22),r=n(31),f=n(30),v="No one promise resolved";i({target:"Promise",stat:!0},{any:function(e){var l=this,t=o.f(l),c=t.resolve,u=t.reject,n=r(function(){var i=d(l.resolve),o=[],r=0,a=1,s=!1;f(e,function(e){var t=r++,n=!1;o.push(void 0),a++,i.call(l,e).then(function(e){n||s||(s=!0,c(e))},function(e){n||s||(n=!0,o[t]=e,--a||u(new(h("AggregateError"))(o,v)))})}),--a||u(new(h("AggregateError"))(o,v))});return n.error&&u(n.value),t.promise}})},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=function(e,t,n){return t&&o(e.prototype,t),n&&o(e,n),e};function o(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}var r=s(n(2)),a=s(n(66));function s(e){return e&&e.__esModule?e:{default:e}}var l=a.default.create,c=a.default.types,u=(i(d,[{key:"execute",value:function(){throw new Error(l(c.UN_IMPLEMENTATION,"execute"))}},{key:"undo",value:function(){throw new Error(l(c.UN_IMPLEMENTATION,"undo"))}},{key:"setUndoData",value:function(e,t,n){return t&&(e=t),t=n?t||e:(r.default.extend(this.undoData,e),null)}},{key:"setExecuteCallback",value:function(e){return this.executeCallback=e,this}},{key:"setUndoCallback",value:function(e){return this.undoCallback=e,this}},{key:"isRedo",get:function(){return Object.keys(this.undoData).length}}]),d);function d(e,t){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,d),this.name=e.name,this.args=t,this.execute=e.execute,this.undo=e.undo,this.executeCallback=e.executeCallback||null,this.undoCallback=e.undoCallback||null,this.undoData={}}t.default=u},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=function(e,t,n){return t&&o(e.prototype,t),n&&o(e,n),e};function o(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}var r=k(n(2)),a=n(0),s=n(1),l=k(n(115)),c=k(n(116)),u=k(n(117)),d=k(n(121)),h=k(n(124)),f=k(n(126)),v=k(n(128)),p=k(n(130)),g=k(n(132)),m=k(n(134)),b=k(n(136)),y=k(n(138)),_=k(n(140));function k(e){return e&&e.__esModule?e:{default:e}}var E={Shape:d.default,Crop:h.default,Flip:f.default,Rotate:v.default,Text:p.default,Mask:g.default,Icon:m.default,Draw:b.default,Filter:y.default},w=(i(O,[{key:"destroy",value:function(){this._removeUiEvent(),this._destroyAllMenu(),(this._selectedElement.innerHTML="",s.assignmentForDestroy)(this)}},{key:"setUiDefaultSelectionStyle",value:function(e){return r.default.extend({applyCropSelectionStyle:!0,applyGroupSelectionStyle:!0,selectionStyle:{cornerStyle:"circle",cornerSize:16,cornerColor:"#fff",cornerStrokeColor:"#fff",transparentCorners:!1,lineWidth:2,borderColor:"#fff"}},e)}},{key:"resizeEditor",value:function(e){var t=0<arguments.length&&void 0!==e?e:{},n=t.uiSize,i=t.imageSize,o=void 0===i?this.imageSize:i;o!==this.imageSize&&(this.imageSize=o),n&&this._setUiSize(n);var r=this._getCanvasMaxDimension(),a=r.width,s=r.height,l=this._editorElement.style,c=this.options.menuBarPosition;l.height=s+"px",l.width=a+"px",this._setEditorPosition(c),this._editorElementWrap.style.bottom="0px",this._editorElementWrap.style.top="0px",this._editorElementWrap.style.left="0px",this._editorElementWrap.style.width="100%";var u=this._selectedElement.classList;"top"===c&&this._selectedElement.offsetWidth<"1300"?u.add("tui-image-editor-top-optimization"):u.remove("tui-image-editor-top-optimization")}},{key:"changeHelpButtonEnabled",value:function(e,t){this._buttonElements[e].classList[t?"add":"remove"]("enabled")}},{key:"_initializeOption",value:function(e){return r.default.extend({loadImage:{path:"",name:""},locale:{},menuIconPath:"",menu:["crop","flip","rotate","draw","shape","icon","text","mask","filter"],initMenu:"",uiSize:{width:"100%",height:"100%"},menuBarPosition:"bottom"},e)}},{key:"_setUiSize",value:function(e){var t=0<arguments.length&&void 0!==e?e:this.options.uiSize,n=this._selectedElement.style;n.width=t.width,n.height=t.height}},{key:"_makeSubMenu",value:function(){var n=this;r.default.forEach(this.options.menu,function(e){var t=E[e.replace(/^[a-z]/,function(e){return e.toUpperCase()})];n._makeMenuElement(e),n._buttonElements[e]=n._menuElement.querySelector(".tie-btn-"+e),n[e]=new t(n._subMenuElement,{locale:n._locale,makeSvgIcon:n.theme.makeMenSvgIconSet.bind(n.theme),menuBarPosition:n.options.menuBarPosition,usageStatistics:n.options.usageStatistics})})}},{key:"_makeUiElement",value:function(e){var t=void 0;window.snippet=r.default,t=e.nodeType?e:document.querySelector(e);var n=(0,s.getSelector)(t);t.classList.add("tui-image-editor-container"),t.innerHTML=(0,c.default)({locale:this._locale,biImage:this.theme.getStyle("common.bi"),loadButtonStyle:this.theme.getStyle("loadButton"),downloadButtonStyle:this.theme.getStyle("downloadButton")})+(0,l.default)({locale:this._locale,biImage:this.theme.getStyle("common.bi"),commonStyle:this.theme.getStyle("common"),headerStyle:this.theme.getStyle("header"),loadButtonStyle:this.theme.getStyle("loadButton"),downloadButtonStyle:this.theme.getStyle("downloadButton"),submenuStyle:this.theme.getStyle("submenu")}),this._selectedElement=t,this._selectedElement.classList.add(this.options.menuBarPosition),this._mainElement=n(".tui-image-editor-main"),this._editorElementWrap=n(".tui-image-editor-wrap"),this._editorElement=n(".tui-image-editor"),this._menuElement=n(".tui-image-editor-menu"),this._subMenuElement=n(".tui-image-editor-submenu"),this._buttonElements={download:this._selectedElement.querySelectorAll(".tui-image-editor-download-btn"),load:this._selectedElement.querySelectorAll(".tui-image-editor-load-btn")},this._addHelpMenus()}},{key:"_makeHelpMenuWithPartition",value:function(){var e=[].concat(a.HELP_MENUS,[""]);return e.splice(3,0,""),e}},{key:"_addHelpMenus",value:function(){var t=this,e=this._makeHelpMenuWithPartition();r.default.forEach(e,function(e){e?(t._makeMenuElement(e,["normal","disabled","hover"],"help"),e&&(t._buttonElements[e]=t._menuElement.querySelector(".tie-btn-"+e))):t._makeMenuPartitionElement()})}},{key:"_makeMenuPartitionElement",value:function(){var e=document.createElement("li"),t=document.createElement("div");e.className=(0,s.cls)("item"),t.className=(0,s.cls)("icpartition"),e.appendChild(t),this._menuElement.appendChild(e)}},{key:"_makeMenuElement",value:function(e,t,n){var i=1<arguments.length&&void 0!==t?t:["normal","active","hover"],o=2<arguments.length&&void 0!==n?n:"normal",r=document.createElement("li"),a=this.theme.makeMenSvgIconSet(i,e);this._addTooltipAttribute(r,e),r.className="tie-btn-"+e+" "+(0,s.cls)("item")+" "+o,r.innerHTML=a,this._menuElement.appendChild(r)}},{key:"_addHelpActionEvent",value:function(){var t=this;r.default.forEach(a.HELP_MENUS,function(e){t.eventHandler[e]=function(){return t._actions.main[e]()},t._buttonElements[e].addEventListener("click",t.eventHandler[e])})}},{key:"_removeHelpActionEvent",value:function(){var t=this;r.default.forEach(a.HELP_MENUS,function(e){t._buttonElements[e].removeEventListener("click",t.eventHandler[e])})}},{key:"_addTooltipAttribute",value:function(e,t){e.setAttribute("tooltip-content",this._locale.localize(t.replace(/^[a-z]/g,function(e){return e.toUpperCase()})))}},{key:"_addDownloadEvent",value:function(){var t=this;this.eventHandler.download=function(){return t._actions.main.download()},r.default.forEach(this._buttonElements.download,function(e){e.addEventListener("click",t.eventHandler.download)})}},{key:"_removeDownloadEvent",value:function(){var t=this;r.default.forEach(this._buttonElements.download,function(e){e.removeEventListener("click",t.eventHandler.download)})}},{key:"_addLoadEvent",value:function(){var t=this;this.eventHandler.loadImage=function(e){return t._actions.main.load(e.target.files[0])},r.default.forEach(this._buttonElements.load,function(e){e.addEventListener("change",t.eventHandler.loadImage)})}},{key:"_removeLoadEvent",value:function(){var t=this;r.default.forEach(this._buttonElements.load,function(e){e.removeEventListener("change",t.eventHandler.loadImage)})}},{key:"_addMainMenuEvent",value:function(e){var t=this;this.eventHandler[e]=function(){return t.changeMenu(e)},this._buttonElements[e].addEventListener("click",this.eventHandler[e])}},{key:"_addSubMenuEvent",value:function(e){this[e].addEvent(this._actions[e])}},{key:"_addMenuEvent",value:function(){var t=this;r.default.forEach(this.options.menu,function(e){t._addMainMenuEvent(e),t._addSubMenuEvent(e)})}},{key:"_removeMainMenuEvent",value:function(){var t=this;r.default.forEach(this.options.menu,function(e){t._buttonElements[e].removeEventListener("click",t.eventHandler[e])})}},{key:"getEditorArea",value:function(){return this._editorElement}},{key:"activeMenuEvent",value:function(){this._initMenuEvent||(this._addHelpActionEvent(),this._addDownloadEvent(),this._addMenuEvent(),this._initMenu(),this._initMenuEvent=!0)}},{key:"_removeUiEvent",value:function(){this._removeHelpActionEvent(),this._removeDownloadEvent(),this._removeLoadEvent(),this._removeMainMenuEvent()}},{key:"_destroyAllMenu",value:function(){var t=this;r.default.forEach(this.options.menu,function(e){t[e].destroy()})}},{key:"initCanvas",value:function(){var e=this,t=this._getLoadImage();t.path&&this._actions.main.initLoadImage(t.path,t.name).then(function(){e.activeMenuEvent()}),this._addLoadEvent();var n=document.createElement("div");n.className=(0,s.cls)("grid-visual"),n.innerHTML='<table>\n           <tr><td class="dot left-top"></td><td></td><td class="dot right-top"></td></tr>\n           <tr><td></td><td></td><td></td></tr>\n           <tr><td class="dot left-bottom"></td><td></td><td class="dot right-bottom"></td></tr>\n         </table>',this._editorContainerElement=this._editorElement.querySelector(".tui-image-editor-canvas-container"),this._editorContainerElement.appendChild(n)}},{key:"_getLoadImage",value:function(){return this.options.loadImage}},{key:"changeMenu",value:function(e,t,n){var i=!(1<arguments.length&&void 0!==t)||t,o=!(2<arguments.length&&void 0!==n)||n;this._submenuChangeTransection||(this._submenuChangeTransection=!0,this._changeMenu(e,i,o),this._submenuChangeTransection=!1)}},{key:"_changeMenu",value:function(e,t,n){this.submenu&&(this._buttonElements[this.submenu].classList.remove("active"),this._mainElement.classList.remove("tui-image-editor-menu-"+this.submenu),n&&this._actions.main.discardSelection(),this._actions.main.changeSelectableAll(!0),this[this.submenu].changeStandbyMode()),this.submenu===e&&t?this.submenu=null:(this._buttonElements[e].classList.add("active"),this._mainElement.classList.add("tui-image-editor-menu-"+e),this.submenu=e,this[this.submenu].changeStartMode()),this.resizeEditor()}},{key:"_initMenu",value:function(){if(this.options.initMenu){var e=document.createEvent("MouseEvents");e.initEvent("click",!0,!1),this._buttonElements[this.options.initMenu].dispatchEvent(e)}this.icon&&this.icon.registDefaultIcon()}},{key:"_getCanvasMaxDimension",value:function(){var e=this._editorContainerElement.style,t=e.maxWidth,n=e.maxHeight;return{width:parseFloat(t),height:parseFloat(n)}}},{key:"_setEditorPosition",value:function(e){var t=this._getCanvasMaxDimension(),n=t.width,i=t.height,o=this._editorElement.style,r=0,a=0;this.submenu&&("bottom"===e?r=i>this._editorElementWrap.scrollHeight-150?(i-this._editorElementWrap.scrollHeight)/2:-75:"top"===e?r=i>this._editorElementWrap.offsetHeight-150?75-(i-(this._editorElementWrap.offsetHeight-150))/2:75:"left"===e?a=n>this._editorElementWrap.offsetWidth-248?124-(n-(this._editorElementWrap.offsetWidth-248))/2:124:"right"===e&&(a=n>this._editorElementWrap.scrollWidth-248?(n-this._editorElementWrap.scrollWidth)/2:-124)),o.top=r+"px",o.left=a+"px"}}]),O);function O(e,t,n){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,O),this.options=this._initializeOption(t),this._actions=n,this.submenu=!1,this.imageSize={},this.uiSize={},this._locale=new _.default(this.options.locale),this.theme=new u.default(this.options.theme),this.eventHandler={},this._submenuChangeTransection=!1,this._selectedElement=null,this._mainElement=null,this._editorElementWrap=null,this._editorElement=null,this._menuElement=null,this._subMenuElement=null,this._makeUiElement(e),this._setUiSize(),this._initMenuEvent=!1,this._makeSubMenu()}t.default=w},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){var t=e.locale,n=e.biImage,i=e.commonStyle,o=e.headerStyle,r=e.loadButtonStyle,a=e.downloadButtonStyle,s=e.submenuStyle;return'\n    <div class="tui-image-editor-main-container" style="'+i+'">\n        <div class="tui-image-editor-header" style="'+o+'">\n            <div class="tui-image-editor-header-logo">\n                <img src="'+n+'" />\n            </div>\n            <div class="tui-image-editor-header-buttons">\n                <div style="'+r+'">\n                    '+t.localize("Load")+'\n                    <input type="file" class="tui-image-editor-load-btn" />\n                </div>\n                <button class="tui-image-editor-download-btn" style="'+a+'">\n                    '+t.localize("Download")+'\n                </button>\n            </div>\n        </div>\n        <div class="tui-image-editor-main">\n            <div class="tui-image-editor-submenu">\n                <div class="tui-image-editor-submenu-style" style="'+s+'"></div>\n            </div>\n            <div class="tui-image-editor-wrap">\n                <div class="tui-image-editor-size-wrap">\n                    <div class="tui-image-editor-align-wrap">\n                        <div class="tui-image-editor"></div>\n                    </div>\n                </div>\n            </div>\n        </div>\n    </div>\n'}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){var t=e.locale,n=e.biImage,i=e.loadButtonStyle,o=e.downloadButtonStyle;return'\n    <div class="tui-image-editor-controls">\n        <div class="tui-image-editor-controls-logo">\n            <img src="'+n+'" />\n        </div>\n        <ul class="tui-image-editor-menu"></ul>\n\n        <div class="tui-image-editor-controls-buttons">\n            <div style="'+i+'">\n                '+t.localize("Load")+'\n                <input type="file" class="tui-image-editor-load-btn" />\n            </div>\n            <button class="tui-image-editor-download-btn" style="'+o+'">\n                '+t.localize("Download")+"\n            </button>\n        </div>\n    </div>\n"}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=function(e,t,n){return t&&o(e.prototype,t),n&&o(e,n),e};function o(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}var a=n(2),r=n(1),s=u(n(118)),l=u(n(119)),c=u(n(120));function u(e){return e&&e.__esModule?e:{default:e}}var d=(i(h,[{key:"getStyle",value:function(e){var t=null,n=e.replace(/\..+$/,""),i=this.styles[e];switch(e){case"common.bi":t=this.styles[e].image;break;case"menu.icon":t={active:this.styles[n+".activeIcon"],normal:this.styles[n+".normalIcon"],hover:this.styles[n+".hoverIcon"],disabled:this.styles[n+".disabledIcon"]};break;case"submenu.icon":t={active:this.styles[n+".activeIcon"],normal:this.styles[n+".normalIcon"]};break;case"submenu.label":t={active:this._makeCssText(this.styles[n+".activeLabel"]),normal:this._makeCssText(this.styles[n+".normalLabel"])};break;case"submenu.partition":t={vertical:this._makeCssText((0,a.extend)({},i,{borderLeft:"1px solid "+i.color})),horizontal:this._makeCssText((0,a.extend)({},i,{borderBottom:"1px solid "+i.color}))};break;case"range.disabledPointer":case"range.disabledBar":case"range.disabledSubbar":case"range.pointer":case"range.bar":case"range.subbar":i.backgroundColor=i.color,t=this._makeCssText(i);break;default:t=this._makeCssText(i)}return t}},{key:"_styleMaker",value:function(){var e=this.getStyle("submenu.label"),t=this.getStyle("submenu.partition");return(0,s.default)({subMenuLabelActive:e.active,subMenuLabelNormal:e.normal,submenuPartitionVertical:t.vertical,submenuPartitionHorizontal:t.horizontal,biSize:this.getStyle("common.bisize"),subMenuRangeTitle:this.getStyle("range.title"),submenuRangePointer:this.getStyle("range.pointer"),submenuRangeBar:this.getStyle("range.bar"),submenuRangeSubbar:this.getStyle("range.subbar"),submenuDisabledRangePointer:this.getStyle("range.disabledPointer"),submenuDisabledRangeBar:this.getStyle("range.disabledBar"),submenuDisabledRangeSubbar:this.getStyle("range.disabledSubbar"),submenuRangeValue:this.getStyle("range.value"),submenuColorpickerTitle:this.getStyle("colorpicker.title"),submenuColorpickerButton:this.getStyle("colorpicker.button"),submenuCheckbox:this.getStyle("checkbox"),menuIconSize:this.getStyle("menu.iconSize"),submenuIconSize:this.getStyle("submenu.iconSize"),menuIconStyle:this.getStyle("menu.icon"),submenuIconStyle:this.getStyle("submenu.icon")})}},{key:"_changeToObject",value:function(e){var r={};return(0,a.forEach)(e,function(e,t){var n=t.match(/^(.+)\.([a-z]+)$/i),i=n[1],o=n[2];r[i]||(r[i]={}),r[i][o]=e}),r}},{key:"_makeCssText",value:function(e){var n=this,i=[];return(0,a.forEach)(e,function(e,t){-1<["backgroundImage"].indexOf(t)&&"none"!==e&&(e="url("+e+")"),i.push(n._toUnderScore(t)+": "+e)}),i.join(";")}},{key:"_toUnderScore",value:function(e){return e.replace(/([A-Z])/g,function(e,t){return"-"+t.toLowerCase()})}},{key:"_loadDefaultSvgIcon",value:function(){if(!document.getElementById("tui-image-editor-svg-default-icons")){var e=(new DOMParser).parseFromString(c.default,"text/xml");document.body.appendChild(e.documentElement)}}},{key:"_makeIconClassName",value:function(e,t){var n=(t?this.getStyle("submenu.icon"):this.getStyle("menu.icon"))[e],i=n.path,o=n.name;return i&&o?e:e+" use-default"}},{key:"_makeSvgIconPrefix",value:function(e,t){var n=(t?this.getStyle("submenu.icon"):this.getStyle("menu.icon"))[e],i=n.path,o=n.name;return i&&o?i+"#"+o+"-":"#"}},{key:"_makeSvgItem",value:function(e,t,n){var i=this;return(0,a.map)(e,function(e){return'<use xlink:href="'+i._makeSvgIconPrefix(e,n)+"ic-"+i._toUnderScore(t)+'" class="'+i._makeIconClassName(e,n)+'"/>'}).join("")}},{key:"makeMenSvgIconSet",value:function(e,t,n){var i=2<arguments.length&&void 0!==n&&n;return'<svg class="svg_ic-'+(i?"submenu":"menu")+'">'+this._makeSvgItem(e,t,i)+"</svg>"}}]),h);function h(e){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,h),this.styles=this._changeToObject((0,a.extend)({},l.default,e)),(0,r.styleLoad)(this._styleMaker()),this._loadDefaultSvgIcon()}t.default=d},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){var t=e.subMenuLabelActive,n=e.subMenuLabelNormal,i=e.subMenuRangeTitle,o=e.submenuPartitionVertical,r=e.submenuPartitionHorizontal,a=e.submenuCheckbox,s=e.submenuRangePointer,l=e.submenuRangeValue,c=e.submenuColorpickerTitle,u=e.submenuColorpickerButton,d=e.submenuRangeBar,h=e.submenuRangeSubbar,f=e.submenuDisabledRangePointer,v=e.submenuDisabledRangeBar,p=e.submenuDisabledRangeSubbar,g=e.submenuIconSize,m=e.menuIconSize,b=e.biSize,y=e.menuIconStyle,_=e.submenuIconStyle;return'\n    .tie-icon-add-button.icon-bubble .tui-image-editor-button[data-icontype="icon-bubble"] label,\n    .tie-icon-add-button.icon-heart .tui-image-editor-button[data-icontype="icon-heart"] label,\n    .tie-icon-add-button.icon-location .tui-image-editor-button[data-icontype="icon-location"] label,\n    .tie-icon-add-button.icon-polygon .tui-image-editor-button[data-icontype="icon-polygon"] label,\n    .tie-icon-add-button.icon-star .tui-image-editor-button[data-icontype="icon-star"] label,\n    .tie-icon-add-button.icon-star-2 .tui-image-editor-button[data-icontype="icon-star-2"] label,\n    .tie-icon-add-button.icon-arrow-3 .tui-image-editor-button[data-icontype="icon-arrow-3"] label,\n    .tie-icon-add-button.icon-arrow-2 .tui-image-editor-button[data-icontype="icon-arrow-2"] label,\n    .tie-icon-add-button.icon-arrow .tui-image-editor-button[data-icontype="icon-arrow"] label,\n    .tie-icon-add-button.icon-bubble .tui-image-editor-button[data-icontype="icon-bubble"] label,\n    .tie-draw-line-select-button.line .tui-image-editor-button.line label,\n    .tie-draw-line-select-button.free .tui-image-editor-button.free label,\n    .tie-flip-button.flipX .tui-image-editor-button.flipX label,\n    .tie-flip-button.flipY .tui-image-editor-button.flipY label,\n    .tie-flip-button.resetFlip .tui-image-editor-button.resetFlip label,\n    .tie-crop-button .tui-image-editor-button.apply.active label,\n    .tie-crop-preset-button .tui-image-editor-button.preset.active label,\n    .tie-shape-button.rect .tui-image-editor-button.rect label,\n    .tie-shape-button.circle .tui-image-editor-button.circle label,\n    .tie-shape-button.triangle .tui-image-editor-button.triangle label,\n    .tie-text-effect-button .tui-image-editor-button.active label,\n    .tie-text-align-button.left .tui-image-editor-button.left label,\n    .tie-text-align-button.center .tui-image-editor-button.center label,\n    .tie-text-align-button.right .tui-image-editor-button.right label,\n    .tie-mask-apply.apply.active .tui-image-editor-button.apply label,\n    .tui-image-editor-container .tui-image-editor-submenu .tui-image-editor-button:hover > label,\n    .tui-image-editor-container .tui-image-editor-checkbox label > span {\n        '+t+"\n    }\n    .tui-image-editor-container .tui-image-editor-submenu .tui-image-editor-button > label,\n    .tui-image-editor-container .tui-image-editor-range-wrap.tui-image-editor-newline.short label,\n    .tui-image-editor-container .tui-image-editor-range-wrap.tui-image-editor-newline.short label > span {\n        "+n+"\n    }\n    .tui-image-editor-container .tui-image-editor-range-wrap label > span {\n        "+i+"\n    }\n    .tui-image-editor-container .tui-image-editor-partition > div {\n        "+o+"\n    }\n    .tui-image-editor-container.left .tui-image-editor-submenu .tui-image-editor-partition > div,\n    .tui-image-editor-container.right .tui-image-editor-submenu .tui-image-editor-partition > div {\n        "+r+"\n    }\n    .tui-image-editor-container .tui-image-editor-checkbox label > span:before {\n        "+a+"\n    }\n    .tui-image-editor-container .tui-image-editor-checkbox label > input:checked + span:before {\n        border: 0;\n    }\n    .tui-image-editor-container .tui-image-editor-virtual-range-pointer {\n        "+s+"\n    }\n    .tui-image-editor-container .tui-image-editor-virtual-range-bar {\n        "+d+"\n    }\n    .tui-image-editor-container .tui-image-editor-virtual-range-subbar {\n        "+h+"\n    }\n    .tui-image-editor-container .tui-image-editor-disabled .tui-image-editor-virtual-range-pointer {\n        "+f+"\n    }\n    .tui-image-editor-container .tui-image-editor-disabled .tui-image-editor-virtual-range-subbar {\n        "+p+"\n    }\n    .tui-image-editor-container .tui-image-editor-disabled .tui-image-editor-virtual-range-bar {\n        "+v+"\n    }\n    .tui-image-editor-container .tui-image-editor-range-value {\n        "+l+"\n    }\n    .tui-image-editor-container .tui-image-editor-submenu .tui-image-editor-button .color-picker-value + label {\n        "+c+"\n    }\n    .tui-image-editor-container .tui-image-editor-submenu .tui-image-editor-button .color-picker-value {\n        "+u+"\n    }\n    .tui-image-editor-container .svg_ic-menu {\n        "+m+"\n    }\n    .tui-image-editor-container .svg_ic-submenu {\n        "+g+"\n    }\n    .tui-image-editor-container .tui-image-editor-controls-logo > img,\n    .tui-image-editor-container .tui-image-editor-header-logo > img {\n        "+b+"\n    }\n    .tui-image-editor-menu use.normal.use-default {\n        fill-rule: evenodd;\n        fill: "+y.normal.color+";\n        stroke: "+y.normal.color+";\n    }\n    .tui-image-editor-menu use.active.use-default {\n        fill-rule: evenodd;\n        fill: "+y.active.color+";\n        stroke: "+y.active.color+";\n    }\n    .tui-image-editor-menu use.hover.use-default {\n        fill-rule: evenodd;\n        fill: "+y.hover.color+";\n        stroke: "+y.hover.color+";\n    }\n    .tui-image-editor-menu use.disabled.use-default {\n        fill-rule: evenodd;\n        fill: "+y.disabled.color+";\n        stroke: "+y.disabled.color+";\n    }\n    .tui-image-editor-submenu use.normal.use-default {\n        fill-rule: evenodd;\n        fill: "+_.normal.color+";\n        stroke: "+_.normal.color+";\n    }\n    .tui-image-editor-submenu use.active.use-default {\n        fill-rule: evenodd;\n        fill: "+_.active.color+";\n        stroke: "+_.active.color+";\n    }\n"}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={"common.bi.image":"https://uicdn.toast.com/toastui/img/tui-image-editor-bi.png","common.bisize.width":"251px","common.bisize.height":"21px","common.backgroundImage":"none","common.backgroundColor":"#1e1e1e","common.border":"0px","header.backgroundImage":"none","header.backgroundColor":"transparent","header.border":"0px","loadButton.backgroundColor":"#fff","loadButton.border":"1px solid #ddd","loadButton.color":"#222","loadButton.fontFamily":"'Noto Sans', sans-serif","loadButton.fontSize":"12px","downloadButton.backgroundColor":"#fdba3b","downloadButton.border":"1px solid #fdba3b","downloadButton.color":"#fff","downloadButton.fontFamily":"'Noto Sans', sans-serif","downloadButton.fontSize":"12px","menu.normalIcon.color":"#8a8a8a","menu.activeIcon.color":"#555555","menu.disabledIcon.color":"#434343","menu.hoverIcon.color":"#e9e9e9","submenu.normalIcon.color":"#8a8a8a","submenu.activeIcon.color":"#e9e9e9","menu.iconSize.width":"24px","menu.iconSize.height":"24px","submenu.iconSize.width":"32px","submenu.iconSize.height":"32px","submenu.backgroundColor":"#1e1e1e","submenu.partition.color":"#3c3c3c","submenu.normalLabel.color":"#8a8a8a","submenu.normalLabel.fontWeight":"lighter","submenu.activeLabel.color":"#fff","submenu.activeLabel.fontWeight":"lighter","checkbox.border":"0px","checkbox.backgroundColor":"#fff","range.pointer.color":"#fff","range.bar.color":"#666","range.subbar.color":"#d1d1d1","range.disabledPointer.color":"#414141","range.disabledBar.color":"#282828","range.disabledSubbar.color":"#414141","range.value.color":"#fff","range.value.fontWeight":"lighter","range.value.fontSize":"11px","range.value.border":"1px solid #353535","range.value.backgroundColor":"#151515","range.title.color":"#fff","range.title.fontWeight":"lighter","colorpicker.button.border":"1px solid #1e1e1e","colorpicker.title.color":"#fff"}},function(e,t){e.exports='<svg display="none" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs id="tui-image-editor-svg-default-icons"><symbol id="ic-apply" viewBox="0 0 24 24"><path d="M0 0h24v24H0z" stroke="none" fill="none"></path><path fill="none" stroke="inherit" d="M4 12.011l5 5L20.011 6"></path></symbol><symbol id="ic-cancel" viewBox="0 0 24 24"><path d="M0 0h24v24H0z" fill="none" stroke="none"></path><path fill="none" stroke="inherit" d="M6 6l12 12M18 6L6 18"></path></symbol><symbol id="ic-crop" viewBox="0 0 24 24"><path d="M0 0h24v24H0z" stroke="none" fill="none"></path><path stroke="none" fill="inherit" d="M4 0h1v20a1 1 0 0 1-1-1V0zM20 17h-1V5h1v12zm0 2v5h-1v-5h1z"></path><path stroke="none" fill="inherit" d="M5 19h19v1H5zM4.762 4v1H0V4h4.762zM7 4h12a1 1 0 0 1 1 1H7V4z"></path></symbol><symbol id="ic-delete-all" viewBox="0 0 24 24"><path stroke="none" fill="inherit" d="M5 23H3a1 1 0 0 1-1-1V6h1v16h2v1zm16-10h-1V6h1v7zM9 13H8v-3h1v3zm3 0h-1v-3h1v3zm3 0h-1v-3h1v3zM14.794 3.794L13 2h-3L8.206 3.794A.963.963 0 0 1 8 2.5l.703-1.055A1 1 0 0 1 9.535 1h3.93a1 1 0 0 1 .832.445L15 2.5a.965.965 0 0 1-.206 1.294zM14.197 4H8.803h5.394z"></path><path stroke="none" fill="inherit" d="M0 3h23v1H0zM11.286 21H8.714L8 23H7l1-2.8V20h.071L9.5 16h1l1.429 4H12v.2l1 2.8h-1l-.714-2zm-.357-1L10 17.4 9.071 20h1.858zM20 22h3v1h-4v-7h1v6zm-5 0h3v1h-4v-7h1v6z"></path></symbol><symbol id="ic-delete" viewBox="0 0 24 24"><path stroke="none" fill="inherit" d="M3 6v16h17V6h1v16a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V6h1zM14.794 3.794L13 2h-3L8.206 3.794A.963.963 0 0 1 8 2.5l.703-1.055A1 1 0 0 1 9.535 1h3.93a1 1 0 0 1 .832.445L15 2.5a.965.965 0 0 1-.206 1.294zM14.197 4H8.803h5.394z"></path><path stroke="none" fill="inherit" d="M0 3h23v1H0zM8 10h1v6H8v-6zm3 0h1v6h-1v-6zm3 0h1v6h-1v-6z"></path></symbol><symbol id="ic-draw-free" viewBox="0 0 32 32"><path fill="none" stroke="inherit" d="M2.5 20.929C2.594 10.976 4.323 6 7.686 6c5.872 0 2.524 19 7.697 19s1.89-14.929 6.414-14.929 1.357 10.858 5.13 10.858c1.802 0 2.657-2.262 2.566-6.786"></path></symbol><symbol id="ic-draw-line" viewBox="0 0 32 32"><path fill="none" stroke="inherit" d="M2 15.5h28"></path></symbol><symbol id="ic-draw" viewBox="0 0 24 24"><path fill="none" stroke="inherit" d="M2.5 21.5H5c.245 0 .48-.058.691-.168l.124-.065.14.01c.429.028.85-.127 1.16-.437L22.55 5.405a.5.5 0 0 0 0-.707l-3.246-3.245a.5.5 0 0 0-.707 0L3.162 16.888a1.495 1.495 0 0 0-.437 1.155l.01.14-.065.123c-.111.212-.17.448-.17.694v2.5z"></path><path stroke="none" fill="inherit" d="M16.414 3.707l3.89 3.89-.708.706-3.889-3.889z"></path></symbol><symbol id="ic-filter" viewBox="0 0 24 24"><path d="M0 0h24v24H0z" fill="none" stroke="none"></path><path stroke="none" fill="inherit" d="M12 7v1H2V7h10zm6 0h4v1h-4V7zM12 16v1h10v-1H12zm-6 0H2v1h4v-1z"></path><path stroke="none" fill="inherit" d="M8.5 20a3.5 3.5 0 1 1 0-7 3.5 3.5 0 0 1 0 7zm0-1a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5zM15.5 11a3.5 3.5 0 1 1 0-7 3.5 3.5 0 0 1 0 7zm0-1a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5z"></path></symbol><symbol id="ic-flip-reset" viewBox="0 0 31 32"><path fill="none" stroke="none" d="M31 0H0v32h31z"></path><path stroke="none" fill="inherit" d="M28 16a8 8 0 0 1-8 8H3v-1h1v-7H3a8 8 0 0 1 8-8h17v1h-1v7h1zM11 9a7 7 0 0 0-7 7v7h16a7 7 0 0 0 7-7V9H11z"></path><path fill="none" stroke="inherit" stroke-linecap="square" d="M24 5l3.5 3.5L24 12M7 20l-3.5 3.5L7 27"></path></symbol><symbol id="ic-flip-x" viewBox="0 0 32 32"><path fill="none" stroke="none" d="M32 32H0V0h32z"></path><path stroke="none" fill="inherit" d="M17 32h-1V0h1zM27.167 11l.5 3h-1.03l-.546-3h1.076zm-.5-3h-1.122L25 5h-5V4h5.153a1 1 0 0 1 .986.836L26.667 8zm1.5 9l.5 3h-.94l-.545-3h.985zm1 6l.639 3.836A1 1 0 0 1 28.819 28H26v-1h3l-.726-4h.894zM23 28h-3v-1h3v1zM13 4v1H7L3 27h10v1H3.18a1 1 0 0 1-.986-1.164l3.666-22A1 1 0 0 1 6.847 4H13z"></path></symbol><symbol id="ic-flip-y" viewBox="0 0 32 32"><path fill="none" stroke="none" d="M0 0v32h32V0z"></path><path stroke="none" fill="inherit" d="M0 16v1h32v-1zM11 27.167l3 .5v-1.03l-3-.546v1.076zm-3-.5v-1.122L5 25v-5H4v5.153a1 1 0 0 0 .836.986L8 26.667zm9 1.5l3 .5v-.94l-3-.545v.985zm6 1l3.836.639A1 1 0 0 0 28 28.82V26h-1v3l-4-.727v.894zM28 23v-3h-1v3h1zM4 13h1V7l22-4v10h1V3.18a1 1 0 0 0-1.164-.986l-22 3.667A1 1 0 0 0 4 6.847V13z"></path></symbol><symbol id="ic-flip" viewBox="0 0 24 24"><path d="M0 0h24v24H0z" fill="none" stroke="none"></path><path fill="inherit" stroke="none" d="M11 0h1v24h-1zM19 21v-1h2v-2h1v2a1 1 0 0 1-1 1h-2zm-2 0h-3v-1h3v1zm5-5h-1v-3h1v3zm0-5h-1V8h1v3zm0-5h-1V4h-2V3h2a1 1 0 0 1 1 1v2zm-5-3v1h-3V3h3zM9 3v1H2v16h7v1H2a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h7z"></path></symbol><symbol id="ic-icon-arrow-2" viewBox="0 0 32 32"><path fill="none" stroke="inherit" stroke-linecap="round" stroke-linejoin="round" d="M21.793 18.5H2.5v-5h18.935l-7.6-8h5.872l10.5 10.5-10.5 10.5h-5.914l8-8z"></path></symbol><symbol id="ic-icon-arrow-3" viewBox="0 0 32 32"><path fill="none" stroke="inherit" stroke-linecap="round" stroke-linejoin="round" d="M25.288 16.42L14.208 27.5H6.792l11.291-11.291L6.826 4.5h7.381l11.661 11.661-.58.258z"></path></symbol><symbol id="ic-icon-arrow" viewBox="0 0 32 32"><path fill="none" stroke="inherit" d="M2.5 11.5v9h18v5.293L30.293 16 20.5 6.207V11.5h-18z"></path></symbol><symbol id="ic-icon-bubble" viewBox="0 0 32 32"><path fill="none" stroke="inherit" stroke-linecap="round" stroke-linejoin="round" d="M22.207 24.5L16.5 30.207V24.5H8A6.5 6.5 0 0 1 1.5 18V9A6.5 6.5 0 0 1 8 2.5h16A6.5 6.5 0 0 1 30.5 9v9a6.5 6.5 0 0 1-6.5 6.5h-1.793z"></path></symbol><symbol id="ic-icon-heart" viewBox="0 0 32 32"><path fill-rule="nonzero" fill="none" stroke="inherit" d="M15.996 30.675l1.981-1.79c7.898-7.177 10.365-9.718 12.135-13.012.922-1.716 1.377-3.37 1.377-5.076 0-4.65-3.647-8.297-8.297-8.297-2.33 0-4.86 1.527-6.817 3.824l-.38.447-.381-.447C13.658 4.027 11.126 2.5 8.797 2.5 4.147 2.5.5 6.147.5 10.797c0 1.714.46 3.375 1.389 5.098 1.775 3.288 4.26 5.843 12.123 12.974l1.984 1.806z"></path></symbol><symbol id="ic-icon-load" viewBox="0 0 32 32"><path fill="none" stroke="inherit" stroke-linecap="round" stroke-linejoin="round" d="M17.314 18.867l1.951-2.53 4 5.184h-17l6.5-8.84 4.549 6.186z"></path><path stroke="none" fill="inherit" d="M18.01 4a11.798 11.798 0 0 0 0 1H3v24h24V14.986a8.738 8.738 0 0 0 1 0V29a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1h15.01z"></path><path stroke="none" fill="inherit" d="M25 3h1v9h-1z"></path><path fill="none" stroke="inherit" d="M22 6l3.5-3.5L29 6"></path></symbol><symbol id="ic-icon-location" viewBox="0 0 32 32"><path fill="none" stroke="inherit" d="M16 31.28C23.675 23.302 27.5 17.181 27.5 13c0-6.351-5.149-11.5-11.5-11.5S4.5 6.649 4.5 13c0 4.181 3.825 10.302 11.5 18.28z"></path><circle fill="none" stroke="inherit" cx="16" cy="13" r="4.5"></circle></symbol><symbol id="ic-icon-polygon" viewBox="0 0 32 32"><path fill="none" stroke="inherit" d="M.576 16L8.29 29.5h15.42L31.424 16 23.71 2.5H8.29L.576 16z"></path></symbol><symbol id="ic-icon-star-2" viewBox="0 0 32 32"><path fill="none" stroke="inherit" d="M19.446 31.592l2.265-3.272 3.946.25.636-3.94 3.665-1.505-1.12-3.832 2.655-2.962-2.656-2.962 1.12-3.832-3.664-1.505-.636-3.941-3.946.25-2.265-3.271L16 3.024 12.554 1.07 10.289 4.34l-3.946-.25-.636 3.941-3.665 1.505 1.12 3.832L.508 16.33l2.656 2.962-1.12 3.832 3.664 1.504.636 3.942 3.946-.25 2.265 3.27L16 29.638l3.446 1.955z"></path></symbol><symbol id="ic-icon-star" viewBox="0 0 32 32"><path fill="none" stroke="inherit" d="M25.292 29.878l-1.775-10.346 7.517-7.327-10.388-1.51L16 1.282l-4.646 9.413-10.388 1.51 7.517 7.327-1.775 10.346L16 24.993l9.292 4.885z"></path></symbol><symbol id="ic-icon" viewBox="0 0 24 24"><path fill="none" stroke="inherit" stroke-linecap="round" stroke-linejoin="round" d="M11.923 19.136L5.424 22l.715-7.065-4.731-5.296 6.94-1.503L11.923 2l3.574 6.136 6.94 1.503-4.731 5.296L18.42 22z"></path></symbol><symbol id="ic-mask-load" viewBox="0 0 32 32"><path stroke="none" fill="none" d="M0 0h32v32H0z"></path><path stroke="none" fill="inherit" d="M18.01 4a11.798 11.798 0 0 0 0 1H3v24h24V14.986a8.738 8.738 0 0 0 1 0V29a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1h15.01zM15 23a6 6 0 1 1 0-12 6 6 0 0 1 0 12zm0-1a5 5 0 1 0 0-10 5 5 0 0 0 0 10z"></path><path stroke="none" fill="inherit" d="M25 3h1v9h-1z"></path><path fill="none" stroke="inherit" d="M22 6l3.5-3.5L29 6"></path></symbol><symbol id="ic-mask" viewBox="0 0 24 24"><circle cx="12" cy="12" r="4.5" stroke="inherit" fill="none"></circle><path stroke="none" fill="inherit" d="M2 1h20a1 1 0 0 1 1 1v20a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1zm0 1v20h20V2H2z"></path></symbol><symbol id="ic-redo" viewBox="0 0 24 24"><path d="M0 0h24v24H0z" opacity=".5" fill="none" stroke="none"></path><path stroke="none" fill="inherit" d="M21 6H9a6 6 0 1 0 0 12h12v1H9A7 7 0 0 1 9 5h12v1z"></path><path fill="none" stroke="inherit" stroke-linecap="square" d="M19 3l2.5 2.5L19 8"></path></symbol><symbol id="ic-reset" viewBox="0 0 24 24"><path d="M0 0h24v24H0z" opacity=".5" stroke="none" fill="none"></path><path stroke="none" fill="inherit" d="M2 13v-1a7 7 0 0 1 7-7h13v1h-1v5h1v1a7 7 0 0 1-7 7H2v-1h1v-5H2zm7-7a6 6 0 0 0-6 6v6h12a6 6 0 0 0 6-6V6H9z"></path><path fill="none" stroke="inherit" stroke-linecap="square" d="M19 3l2.5 2.5L19 8M5 16l-2.5 2.5L5 21"></path></symbol><symbol id="ic-rotate-clockwise" viewBox="0 0 32 32"><path stroke="none" fill="inherit" d="M29 17h-.924c0 6.627-5.373 12-12 12-6.628 0-12-5.373-12-12C4.076 10.398 9.407 5.041 16 5V4C8.82 4 3 9.82 3 17s5.82 13 13 13 13-5.82 13-13z"></path><path fill="none" stroke="inherit" stroke-linecap="square" d="M16 1.5l4 3-4 3"></path><path stroke="none" fill="inherit" fill-rule="nonzero" d="M16 4h4v1h-4z"></path></symbol><symbol id="ic-rotate-counterclockwise" viewBox="0 0 32 32"><path stroke="none" d="M3 17h.924c0 6.627 5.373 12 12 12 6.628 0 12-5.373 12-12 0-6.602-5.331-11.96-11.924-12V4c7.18 0 13 5.82 13 13s-5.82 13-13 13S3 24.18 3 17z"></path><path stroke="none" fill="inherit" fill-rule="nonzero" d="M12 4h4v1h-4z"></path><path fill="none" stroke="inherit" stroke-linecap="square" d="M16 1.5l-4 3 4 3"></path></symbol><symbol id="ic-rotate" viewBox="0 0 24 24"><path d="M0 0h24v24H0z" fill="none" stroke="none"></path><path fill="inherit" stroke="none" d="M8.349 22.254a10.002 10.002 0 0 1-2.778-1.719l.65-.76a9.002 9.002 0 0 0 2.495 1.548l-.367.931zm2.873.704l.078-.997a9 9 0 1 0-.557-17.852l-.14-.99A10.076 10.076 0 0 1 12.145 3c5.523 0 10 4.477 10 10s-4.477 10-10 10c-.312 0-.62-.014-.924-.042zm-7.556-4.655a9.942 9.942 0 0 1-1.253-2.996l.973-.234a8.948 8.948 0 0 0 1.124 2.693l-.844.537zm-1.502-5.91A9.949 9.949 0 0 1 2.88 9.23l.925.382a8.954 8.954 0 0 0-.644 2.844l-.998-.062zm2.21-5.686c.687-.848 1.51-1.58 2.436-2.166l.523.852a9.048 9.048 0 0 0-2.188 1.95l-.771-.636z"></path><path stroke="inherit" fill="none" stroke-linecap="square" d="M13 1l-2.5 2.5L13 6"></path></symbol><symbol id="ic-shape-circle" viewBox="0 0 32 32"><circle cx="16" cy="16" r="14.5" fill="none" stroke="inherit"></circle></symbol><symbol id="ic-shape-rectangle" viewBox="0 0 32 32"><rect width="27" height="27" x="2.5" y="2.5" fill="none" stroke="inherit" rx="1"></rect></symbol><symbol id="ic-shape-triangle" viewBox="0 0 32 32"><path fill="none" stroke-linecap="round" stroke-linejoin="round" d="M16 2.5l15.5 27H.5z"></path></symbol><symbol id="ic-shape" viewBox="0 0 24 24"><path stroke="none" fill="inherit" d="M14.706 8H21a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H9a1 1 0 0 1-1-1v-4h1v4h12V9h-5.706l-.588-1z"></path><path fill="none" stroke="inherit" stroke-linecap="round" stroke-linejoin="round" d="M8.5 1.5l7.5 13H1z"></path></symbol><symbol id="ic-text-align-center" viewBox="0 0 32 32"><path stroke="none" fill="none" d="M0 0h32v32H0z"></path><path stroke="none" fill="inherit" d="M2 5h28v1H2zM8 12h16v1H8zM2 19h28v1H2zM8 26h16v1H8z"></path></symbol><symbol id="ic-text-align-left" viewBox="0 0 32 32"><path stroke="none" fill="none" d="M0 0h32v32H0z"></path><path stroke="none" fill="inherit" d="M2 5h28v1H2zM2 12h16v1H2zM2 19h28v1H2zM2 26h16v1H2z"></path></symbol><symbol id="ic-text-align-right" viewBox="0 0 32 32"><path stroke="none" fill="none" d="M0 0h32v32H0z"></path><path stroke="none" fill="inherit" d="M2 5h28v1H2zM14 12h16v1H14zM2 19h28v1H2zM14 26h16v1H14z"></path></symbol><symbol id="ic-text-bold" viewBox="0 0 32 32"><path fill="none" stroke="none" d="M0 0h32v32H0z"></path><path stroke="none" fill="inherit" d="M7 2h2v2H7zM7 28h2v2H7z"></path><path fill="none" stroke="inherit" stroke-width="2" d="M9 3v12h9a6 6 0 1 0 0-12H9zM9 15v14h10a7 7 0 0 0 0-14H9z"></path></symbol><symbol id="ic-text-italic" viewBox="0 0 32 32"><path fill="none" stroke="none" d="M0 0h32v32H0z"></path><path stroke="none" fill="inherit" d="M15 2h5v1h-5zM11 29h5v1h-5zM17 3h1l-4 26h-1z"></path></symbol><symbol id="ic-text-underline" viewBox="0 0 32 32"><path stroke="none" fill="none" d="M0 0h32v32H0z"></path><path stroke="none" fill="inherit" d="M8 2v14a8 8 0 1 0 16 0V2h1v14a9 9 0 0 1-18 0V2h1zM3 29h26v1H3z"></path><path stroke="none" fill="inherit" d="M5 2h5v1H5zM22 2h5v1h-5z"></path></symbol><symbol id="ic-text" viewBox="0 0 24 24"><path stroke="none" fill="inherit" d="M4 3h15a1 1 0 0 1 1 1H3a1 1 0 0 1 1-1zM3 4h1v1H3zM19 4h1v1h-1z"></path><path stroke="none" fill="inherit" d="M11 3h1v18h-1z"></path><path stroke="none" fill="inherit" d="M10 20h3v1h-3z"></path></symbol><symbol id="ic-undo" viewBox="0 0 24 24"><path d="M24 0H0v24h24z" opacity=".5" fill="none" stroke="none"></path><path stroke="none" fill="inherit" d="M3 6h12a6 6 0 1 1 0 12H3v1h12a7 7 0 0 0 0-14H3v1z"></path><path fill="none" stroke="inherit" stroke-linecap="square" d="M5 3L2.5 5.5 5 8"></path></symbol></defs></svg>'},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=function(e,t,n){return t&&o(e.prototype,t),n&&o(e,n),e};function o(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}var s=d(n(23)),l=d(n(24)),r=d(n(9)),c=d(n(123)),a=n(1),u=n(0);function d(e){return e&&e.__esModule?e:{default:e}}var h={stroke:"#ffbb3b",fill:"",strokeWidth:3},f=(function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(v,r.default),i(v,[{key:"destroy",value:function(){this._removeEvent(),this._els.strokeRange.destroy(),this._els.fillColorpicker.destroy(),this._els.strokeColorpicker.destroy(),(0,a.assignmentForDestroy)(this)}},{key:"addEvent",value:function(e){this.eventHandler.shapeTypeSelected=this._changeShapeHandler.bind(this),this.actions=e,this._els.shapeSelectButton.addEventListener("click",this.eventHandler.shapeTypeSelected),this._els.strokeRange.on("change",this._changeStrokeRangeHandler.bind(this)),this._els.fillColorpicker.on("change",this._changeFillColorHandler.bind(this)),this._els.strokeColorpicker.on("change",this._changeStrokeColorHandler.bind(this)),this._els.fillColorpicker.on("changeShow",this.colorPickerChangeShow.bind(this)),this._els.strokeColorpicker.on("changeShow",this.colorPickerChangeShow.bind(this))}},{key:"_removeEvent",value:function(){this._els.shapeSelectButton.removeEventListener("click",this.eventHandler.shapeTypeSelected),this._els.strokeRange.off(),this._els.fillColorpicker.off(),this._els.strokeColorpicker.off()}},{key:"setShapeStatus",value:function(e){var t=e.strokeWidth,n=e.strokeColor,i=e.fillColor;this._els.strokeRange.value=t,this._els.strokeColorpicker.color=n,this._els.fillColorpicker.color=i,this.options.stroke=n,this.options.fill=i,this.options.strokeWidth=t,this.actions.setDrawingShape(this.type,{strokeWidth:t})}},{key:"changeStartMode",value:function(){this.actions.stopDrawingMode()}},{key:"changeStandbyMode",value:function(){this.type=null,this.actions.changeSelectableAll(!0),this._els.shapeSelectButton.classList.remove("circle"),this._els.shapeSelectButton.classList.remove("triangle"),this._els.shapeSelectButton.classList.remove("rect")}},{key:"setMaxStrokeValue",value:function(e){var t=e;t<=0&&(t=u.defaultShapeStrokeValus.max),this._els.strokeRange.max=t}},{key:"setStrokeValue",value:function(e){this._els.strokeRange.value=e,this._els.strokeRange.trigger("change")}},{key:"getStrokeValue",value:function(){return this._els.strokeRange.value}},{key:"_changeShapeHandler",value:function(e){var t=e.target.closest(".tui-image-editor-button");if(t){this.actions.stopDrawingMode(),this.actions.discardSelection();var n=this.getButtonType(t,["circle","triangle","rect"]);if(this.type===n)return void this.changeStandbyMode();this.changeStandbyMode(),this.type=n,e.currentTarget.classList.add(n),this.actions.changeSelectableAll(!1),this.actions.modeChange("shape")}}},{key:"_changeStrokeRangeHandler",value:function(e,t){this.options.strokeWidth=(0,a.toInteger)(e),this.actions.changeShape({strokeWidth:e},!t),this.actions.setDrawingShape(this.type,this.options)}},{key:"_changeFillColorHandler",value:function(e){e=e||"transparent",this.options.fill=e,this.actions.changeShape({fill:e})}},{key:"_changeStrokeColorHandler",value:function(e){e=e||"transparent",this.options.stroke=e,this.actions.changeShape({stroke:e})}}]),v);function v(e,t){var n=t.locale,i=t.makeSvgIcon,o=t.menuBarPosition,r=t.usageStatistics;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,v);var a=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,(v.__proto__||Object.getPrototypeOf(v)).call(this,e,{locale:n,name:"shape",makeSvgIcon:i,menuBarPosition:o,templateHtml:c.default,usageStatistics:r}));return a.type=null,a.options=h,a._els={shapeSelectButton:a.selector(".tie-shape-button"),shapeColorButton:a.selector(".tie-shape-color-button"),strokeRange:new l.default({slider:a.selector(".tie-stroke-range"),input:a.selector(".tie-stroke-range-value")},u.defaultShapeStrokeValus),fillColorpicker:new s.default(a.selector(".tie-color-fill"),"",a.toggleDirection,a.usageStatistics),strokeColorpicker:new s.default(a.selector(".tie-color-stroke"),"#ffbb3b",a.toggleDirection,a.usageStatistics)},a.colorPickerControls.push(a._els.fillColorpicker),a.colorPickerControls.push(a._els.strokeColorpicker),a}t.default=f},function(e,t){e.exports=o},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){var t=e.locale,n=e.makeSvgIcon;return'\n    <ul class="tui-image-editor-submenu-item">\n        <li class="tie-shape-button">\n            <div class="tui-image-editor-button rect">\n                <div>\n                    '+n(["normal","active"],"shape-rectangle",!0)+"\n                </div>\n                <label> "+t.localize("Rectangle")+' </label>\n            </div>\n            <div class="tui-image-editor-button circle">\n                <div>\n                    '+n(["normal","active"],"shape-circle",!0)+"\n                </div>\n                <label> "+t.localize("Circle")+' </label>\n            </div>\n            <div class="tui-image-editor-button triangle">\n                <div>\n                    '+n(["normal","active"],"shape-triangle",!0)+"\n                </div>\n                <label> "+t.localize("Triangle")+' </label>\n            </div>\n        </li>\n        <li class="tui-image-editor-partition">\n            <div></div>\n        </li>\n        <li class="tie-shape-color-button">\n            <div class="tie-color-fill" title="'+t.localize("Fill")+'"></div>\n            <div class="tie-color-stroke" title="'+t.localize("Stroke")+'"></div>\n        </li>\n        <li class="tui-image-editor-partition only-left-right">\n            <div></div>\n        </li>\n        <li class="tui-image-editor-newline tui-image-editor-range-wrap">\n            <label class="range">'+t.localize("Stroke")+'</label>\n            <div class="tie-stroke-range"></div>\n            <input class="tie-stroke-range-value tui-image-editor-range-value" value="0" />\n        </li>\n    </ul>\n'}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=function(e,t,n){return t&&o(e.prototype,t),n&&o(e,n),e};function o(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}var r=c(n(2)),a=c(n(9)),s=n(1),l=c(n(125));function c(e){return e&&e.__esModule?e:{default:e}}var u=(function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(d,a.default),i(d,[{key:"destroy",value:function(){this._removeEvent(),(0,s.assignmentForDestroy)(this)}},{key:"addEvent",value:function(e){var t=this._applyEventHandler.bind(this),n=this._cancelEventHandler.bind(this),i=this._cropzonePresetEventHandler.bind(this);this.eventHandler={apply:t,cancel:n,cropzonePreset:i},this.actions=e,this._els.apply.addEventListener("click",t),this._els.cancel.addEventListener("click",n),this._els.preset.addEventListener("click",i)}},{key:"_removeEvent",value:function(){this._els.apply.removeEventListener("click",this.eventHandler.apply),this._els.cancel.removeEventListener("click",this.eventHandler.cancel),this._els.preset.removeEventListener("click",this.eventHandler.cropzonePreset)}},{key:"_applyEventHandler",value:function(){this.actions.crop(),this._els.apply.classList.remove("active")}},{key:"_cancelEventHandler",value:function(){this.actions.cancel(),this._els.apply.classList.remove("active")}},{key:"_cropzonePresetEventHandler",value:function(e){var t=e.target.closest(".tui-image-editor-button.preset");if(t){var n=t.className.match(/preset-[^\s]+/)[0];this._setPresetButtonActive(t),this.actions.preset(n)}}},{key:"changeStartMode",value:function(){this.actions.modeChange("crop")}},{key:"changeStandbyMode",value:function(){this.actions.stopDrawingMode(),this._setPresetButtonActive()}},{key:"changeApplyButtonStatus",value:function(e){e?this._els.apply.classList.add("active"):this._els.apply.classList.remove("active")}},{key:"_setPresetButtonActive",value:function(e){var t=0<arguments.length&&void 0!==e?e:this.defaultPresetButton;r.default.forEach([].slice.call(this._els.preset.querySelectorAll(".preset")),function(e){e.classList.remove("active")}),t&&t.classList.add("active")}}]),d);function d(e,t){var n=t.locale,i=t.makeSvgIcon,o=t.menuBarPosition,r=t.usageStatistics;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,d);var a=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,(d.__proto__||Object.getPrototypeOf(d)).call(this,e,{locale:n,name:"crop",makeSvgIcon:i,menuBarPosition:o,templateHtml:l.default,usageStatistics:r}));return a.status="active",a._els={apply:a.selector(".tie-crop-button .apply"),cancel:a.selector(".tie-crop-button .cancel"),preset:a.selector(".tie-crop-preset-button")},a.defaultPresetButton=a._els.preset.querySelector(".preset-none"),a}t.default=u},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){var t=e.locale,n=e.makeSvgIcon;return'\n    <ul class="tui-image-editor-submenu-item">\n        <li class="tie-crop-preset-button">\n            <div class="tui-image-editor-button preset preset-none active">\n                <div>\n                    '+n(["normal","active"],"shape-rectangle",!0)+"\n                </div>\n                <label> "+t.localize("Custom")+' </label>\n            </div>\n            <div class="tui-image-editor-button preset preset-square">\n                <div>\n                    '+n(["normal","active"],"crop",!0)+"\n                </div>\n                <label> "+t.localize("Square")+' </label>\n            </div>\n            <div class="tui-image-editor-button preset preset-3-2">\n                <div>\n                    '+n(["normal","active"],"crop",!0)+"\n                </div>\n                <label> "+t.localize("3:2")+' </label>\n            </div>\n            <div class="tui-image-editor-button preset preset-4-3">\n                <div>\n                    '+n(["normal","active"],"crop",!0)+"\n                </div>\n                <label> "+t.localize("4:3")+' </label>\n            </div>\n            <div class="tui-image-editor-button preset preset-5-4">\n                <div>\n                    '+n(["normal","active"],"crop",!0)+"\n                </div>\n                <label> "+t.localize("5:4")+' </label>\n            </div>\n            <div class="tui-image-editor-button preset preset-7-5">\n                <div>\n                    '+n(["normal","active"],"crop",!0)+"\n                </div>\n                <label> "+t.localize("7:5")+' </label>\n            </div>\n            <div class="tui-image-editor-button preset preset-16-9">\n                <div>\n                    '+n(["normal","active"],"crop",!0)+"\n                </div>\n                <label> "+t.localize("16:9")+' </label>\n            </div>\n        </li>\n        <li class="tui-image-editor-partition tui-image-editor-newline">\n        </li>\n        <li class="tui-image-editor-partition only-left-right">\n            <div></div>\n        </li>\n        <li class="tie-crop-button action">\n            <div class="tui-image-editor-button apply">\n                '+n(["normal","active"],"apply")+"\n                <label>\n                    "+t.localize("Apply")+'\n                </label>\n            </div>\n            <div class="tui-image-editor-button cancel">\n                '+n(["normal","active"],"cancel")+"\n                <label>\n                    "+t.localize("Cancel")+"\n                </label>\n            </div>\n        </li>\n    </ul>\n"}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=function(e,t,n){return t&&o(e.prototype,t),n&&o(e,n),e};function o(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}var r=c(n(2)),a=n(1),s=c(n(9)),l=c(n(127));function c(e){return e&&e.__esModule?e:{default:e}}var u=(function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(d,s.default),i(d,[{key:"destroy",value:function(){this._removeEvent(),(0,a.assignmentForDestroy)(this)}},{key:"addEvent",value:function(e){this.eventHandler.changeFlip=this._changeFlip.bind(this),this._actions=e,this._els.flipButton.addEventListener("click",this.eventHandler.changeFlip)}},{key:"_removeEvent",value:function(){this._els.flipButton.removeEventListener("click",this.eventHandler.changeFlip)}},{key:"_changeFlip",value:function(e){var i=this,t=e.target.closest(".tui-image-editor-button");if(t){var n=this.getButtonType(t,["flipX","flipY","resetFlip"]);if(!this.flipStatus&&"resetFlip"===n)return;this._actions.flip(n).then(function(t){var n=i._els.flipButton.classList;i.flipStatus=!1,n.remove("resetFlip"),r.default.forEach(["flipX","flipY"],function(e){n.remove(e),t[e]&&(n.add(e),n.add("resetFlip"),i.flipStatus=!0)})})}}}]),d);function d(e,t){var n=t.locale,i=t.makeSvgIcon,o=t.menuBarPosition,r=t.usageStatistics;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,d);var a=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,(d.__proto__||Object.getPrototypeOf(d)).call(this,e,{locale:n,name:"flip",makeSvgIcon:i,menuBarPosition:o,templateHtml:l.default,usageStatistics:r}));return a.flipStatus=!1,a._els={flipButton:a.selector(".tie-flip-button")},a}t.default=u},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){var t=e.locale,n=e.makeSvgIcon;return'\n    <ul class="tie-flip-button tui-image-editor-submenu-item">\n        <li>\n            <div class="tui-image-editor-button flipX">\n                <div>\n                    '+n(["normal","active"],"flip-x",!0)+"\n                </div>\n                <label>\n                    "+t.localize("Flip X")+'\n                </label>\n            </div>\n            <div class="tui-image-editor-button flipY">\n                <div>\n                    '+n(["normal","active"],"flip-y",!0)+"\n                </div>\n                <label>\n                    "+t.localize("Flip Y")+'\n                </label>\n            </div>\n        </li>\n        <li class="tui-image-editor-partition">\n            <div></div>\n        </li>\n        <li>\n            <div class="tui-image-editor-button resetFlip">\n                <div>\n                    '+n(["normal","active"],"flip-reset",!0)+"\n                </div>\n                <label>\n                    "+t.localize("Reset")+"\n                </label>\n            </div>\n        </li>\n    </ul>\n"}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=function(e,t,n){return t&&o(e.prototype,t),n&&o(e,n),e};function o(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}var s=u(n(24)),r=u(n(9)),l=u(n(129)),a=n(1),c=n(0);function u(e){return e&&e.__esModule?e:{default:e}}var d=(function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(h,r.default),i(h,[{key:"destroy",value:function(){this._removeEvent(),this._els.rotateRange.destroy(),(0,a.assignmentForDestroy)(this)}},{key:"setRangeBarAngle",value:function(e,t){var n=t;"rotate"===e&&(n=parseInt(this._els.rotateRange.value,10)+t),this._setRangeBarRatio(n)}},{key:"_setRangeBarRatio",value:function(e){this._els.rotateRange.value=e}},{key:"addEvent",value:function(e){this.eventHandler.rotationAngleChanged=this._changeRotateForButton.bind(this),this.actions=e,this._els.rotateButton.addEventListener("click",this.eventHandler.rotationAngleChanged),this._els.rotateRange.on("change",this._changeRotateForRange.bind(this))}},{key:"_removeEvent",value:function(){this._els.rotateButton.removeEventListener("click",this.eventHandler.rotationAngleChanged),this._els.rotateRange.off()}},{key:"_changeRotateForRange",value:function(e,t){var n=(0,a.toInteger)(e);this.actions.setAngle(n,!t),this._value=n}},{key:"_changeRotateForButton",value:function(e){var t=e.target.closest(".tui-image-editor-button"),n=this._els.rotateRange.value;if(t){var i={clockwise:30,counterclockwise:-30}[this.getButtonType(t,["counterclockwise","clockwise"])],o=parseInt(n,10)+i;-360<=o&&o<=360&&this.actions.rotate(i)}}}]),h);function h(e,t){var n=t.locale,i=t.makeSvgIcon,o=t.menuBarPosition,r=t.usageStatistics;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,h);var a=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,(h.__proto__||Object.getPrototypeOf(h)).call(this,e,{locale:n,name:"rotate",makeSvgIcon:i,menuBarPosition:o,templateHtml:l.default,usageStatistics:r}));return a._value=0,a._els={rotateButton:a.selector(".tie-retate-button"),rotateRange:new s.default({slider:a.selector(".tie-rotate-range"),input:a.selector(".tie-ratate-range-value")},c.defaultRotateRangeValus)},a}t.default=d},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){var t=e.locale,n=e.makeSvgIcon;return'\n    <ul class="tui-image-editor-submenu-item">\n        <li class="tie-retate-button">\n            <div class="tui-image-editor-button clockwise">\n                <div>\n                    '+n(["normal","active"],"rotate-clockwise",!0)+'\n                </div>\n                <label> 30 </label>\n            </div>\n            <div class="tui-image-editor-button counterclockwise">\n                <div>\n                    '+n(["normal","active"],"rotate-counterclockwise",!0)+'\n                </div>\n                <label> -30 </label>\n            </div>\n        </li>\n        <li class="tui-image-editor-partition only-left-right">\n            <div></div>\n        </li>\n        <li class="tui-image-editor-newline tui-image-editor-range-wrap">\n            <label class="range">'+t.localize("Range")+'</label>\n            <div class="tie-rotate-range"></div>\n            <input class="tie-ratate-range-value tui-image-editor-range-value" value="0" />\n        </li>\n    </ul>\n'}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=function(e,t,n){return t&&o(e.prototype,t),n&&o(e,n),e};function o(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}var r=n(1),s=d(n(24)),l=d(n(23)),a=d(n(9)),c=d(n(131)),u=n(0);function d(e){return e&&e.__esModule?e:{default:e}}var h=(function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(f,a.default),i(f,[{key:"destroy",value:function(){this._removeEvent(),this._els.textColorpicker.destroy(),this._els.textRange.destroy(),(0,r.assignmentForDestroy)(this)}},{key:"addEvent",value:function(e){var t=this._setTextEffectHandler.bind(this),n=this._setTextAlignHandler.bind(this);this.eventHandler={setTextEffect:t,setTextAlign:n},this.actions=e,this._els.textEffectButton.addEventListener("click",t),this._els.textAlignButton.addEventListener("click",n),this._els.textRange.on("change",this._changeTextRnageHandler.bind(this)),this._els.textColorpicker.on("change",this._changeColorHandler.bind(this))}},{key:"_removeEvent",value:function(){var e=this.eventHandler,t=e.setTextEffect,n=e.setTextAlign;this._els.textEffectButton.removeEventListener("click",t),this._els.textAlignButton.removeEventListener("click",n),this._els.textRange.off(),this._els.textColorpicker.off()}},{key:"changeStandbyMode",value:function(){this.actions.stopDrawingMode()}},{key:"changeStartMode",value:function(){this.actions.modeChange("text")}},{key:"setTextStyleStateOnAction",value:function(e){var t=0<arguments.length&&void 0!==e?e:{},n=t.fill,i=t.fontSize,o=t.fontStyle,r=t.fontWeight,a=t.textDecoration,s=t.textAlign;this.textColor=n,this.fontSize=i,this.setEffactState("italic",o),this.setEffactState("bold",r),this.setEffactState("underline",a),this.setAlignState(s)}},{key:"setEffactState",value:function(e,t){var n="italic"===t||"bold"===t||"underline"===t,i=this._els.textEffectButton.querySelector(".tui-image-editor-button."+e);this.effect[e]=n,i.classList[n?"add":"remove"]("active")}},{key:"setAlignState",value:function(e){var t=this._els.textAlignButton;t.classList.remove(this.align),t.classList.add(e),this.align=e}},{key:"_setTextEffectHandler",value:function(e){var t=e.target.closest(".tui-image-editor-button"),n=t.className.match(/(bold|italic|underline)/)[0],i={bold:{fontWeight:"bold"},italic:{fontStyle:"italic"},underline:{textDecoration:"underline"}}[n];this.effect[n]=!this.effect[n],t.classList.toggle("active"),this.actions.changeTextStyle(i)}},{key:"_setTextAlignHandler",value:function(e){var t=e.target.closest(".tui-image-editor-button");if(t){var n=this.getButtonType(t,["left","center","right"]);e.currentTarget.classList.remove(this.align),this.align!==n&&e.currentTarget.classList.add(n),this.actions.changeTextStyle({textAlign:n}),this.align=n}}},{key:"_changeTextRnageHandler",value:function(e,t){this.actions.changeTextStyle({fontSize:e},!t)}},{key:"_changeColorHandler",value:function(e){e=e||"transparent",this.actions.changeTextStyle({fill:e})}},{key:"textColor",set:function(e){this._els.textColorpicker.color=e},get:function(){return this._els.textColorpicker.color}},{key:"fontSize",get:function(){return this._els.textRange.value},set:function(e){this._els.textRange.value=e}},{key:"fontStyle",get:function(){return this.effect.italic?"italic":"normal"}},{key:"fontWeight",get:function(){return this.effect.bold?"bold":"normal"}},{key:"underline",get:function(){return this.effect.underline}}]),f);function f(e,t){var n=t.locale,i=t.makeSvgIcon,o=t.menuBarPosition,r=t.usageStatistics;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,f);var a=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,(f.__proto__||Object.getPrototypeOf(f)).call(this,e,{locale:n,name:"text",makeSvgIcon:i,menuBarPosition:o,templateHtml:c.default,usageStatistics:r}));return a.effect={bold:!1,italic:!1,underline:!1},a.align="left",a._els={textEffectButton:a.selector(".tie-text-effect-button"),textAlignButton:a.selector(".tie-text-align-button"),textColorpicker:new l.default(a.selector(".tie-text-color"),"#ffbb3b",a.toggleDirection,a.usageStatistics),textRange:new s.default({slider:a.selector(".tie-text-range"),input:a.selector(".tie-text-range-value")},u.defaultTextRangeValus)},a}t.default=h},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){var t=e.locale,n=e.makeSvgIcon;return'\n    <ul class="tui-image-editor-submenu-item">\n        <li class="tie-text-effect-button">\n            <div class="tui-image-editor-button bold">\n                <div>\n                    '+n(["normal","active"],"text-bold",!0)+"\n                </div>\n                <label> "+t.localize("Bold")+' </label>\n            </div>\n            <div class="tui-image-editor-button italic">\n                <div>\n                    '+n(["normal","active"],"text-italic",!0)+"\n                </div>\n                <label> "+t.localize("Italic")+' </label>\n            </div>\n            <div class="tui-image-editor-button underline">\n                <div>\n                    '+n(["normal","active"],"text-underline",!0)+"\n                </div>\n                <label> "+t.localize("Underline")+' </label>\n            </div>\n        </li>\n        <li class="tui-image-editor-partition">\n            <div></div>\n        </li>\n        <li class="tie-text-align-button">\n            <div class="tui-image-editor-button left">\n                <div>\n                    '+n(["normal","active"],"text-align-left",!0)+"\n                </div>\n                <label> "+t.localize("Left")+' </label>\n            </div>\n            <div class="tui-image-editor-button center">\n                <div>\n                    '+n(["normal","active"],"text-align-center",!0)+"\n                </div>\n                <label> "+t.localize("Center")+' </label>\n            </div>\n            <div class="tui-image-editor-button right">\n                <div>\n                    '+n(["normal","active"],"text-align-right",!0)+"\n                </div>\n                <label> "+t.localize("Right")+' </label>\n            </div>\n        </li>\n        <li class="tui-image-editor-partition">\n            <div></div>\n        </li>\n        <li>\n            <div class="tie-text-color" title="'+t.localize("Color")+'"></div>\n        </li>\n        <li class="tui-image-editor-partition only-left-right">\n            <div></div>\n        </li>\n        <li class="tui-image-editor-newline tui-image-editor-range-wrap">\n            <label class="range">'+t.localize("Text size")+'</label>\n            <div class="tie-text-range"></div>\n            <input class="tie-text-range-value tui-image-editor-range-value" value="0" />\n        </li>\n    </ul>\n'}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=function(e,t,n){return t&&o(e.prototype,t),n&&o(e,n),e};function o(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}var r=l(n(9)),a=n(1),s=l(n(133));function l(e){return e&&e.__esModule?e:{default:e}}var c=(function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(u,r.default),i(u,[{key:"destroy",value:function(){this._removeEvent(),(0,a.assignmentForDestroy)(this)}},{key:"addEvent",value:function(e){var t=this._loadMaskFile.bind(this),n=this._applyMask.bind(this);this.eventHandler={loadMaskFile:t,applyMask:n},this.actions=e,this._els.maskImageButton.addEventListener("change",t),this._els.applyButton.addEventListener("click",n)}},{key:"_removeEvent",value:function(){this._els.maskImageButton.removeEventListener("change",this.eventHandler.loadMaskFile),this._els.applyButton.removeEventListener("click",this.eventHandler.applyMask)}},{key:"_applyMask",value:function(){this.actions.applyFilter(),this._els.applyButton.classList.remove("active")}},{key:"_loadMaskFile",value:function(e){var t=void 0;(0,a.isSupportFileApi)()||alert("This browser does not support file-api");var n=e.target.files[0];n&&(t=URL.createObjectURL(n),this.actions.loadImageFromURL(t,n),this._els.applyButton.classList.add("active"))}}]),u);function u(e,t){var n=t.locale,i=t.makeSvgIcon,o=t.menuBarPosition,r=t.usageStatistics;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,u);var a=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,(u.__proto__||Object.getPrototypeOf(u)).call(this,e,{locale:n,name:"mask",makeSvgIcon:i,menuBarPosition:o,templateHtml:s.default,usageStatistics:r}));return a._els={applyButton:a.selector(".tie-mask-apply"),maskImageButton:a.selector(".tie-mask-image-file")},a}t.default=c},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){var t=e.locale,n=e.makeSvgIcon;return'\n    <ul class="tui-image-editor-submenu-item">\n        <li>\n            <div class="tui-image-editor-button">\n                <div>\n                    <input type="file" accept="image/*" class="tie-mask-image-file">\n                    '+n(["normal","active"],"mask-load",!0)+"\n                </div>\n                <label> "+t.localize("Load Mask Image")+' </label>\n            </div>\n        </li>\n        <li class="tui-image-editor-partition only-left-right">\n            <div></div>\n        </li>\n        <li class="tie-mask-apply tui-image-editor-newline apply" style="margin-top: 22px;margin-bottom: 5px">\n            <div class="tui-image-editor-button apply">\n                '+n(["normal","active"],"apply")+"\n                <label>\n                    "+t.localize("Apply")+"\n                </label>\n            </div>\n        </li>\n    </ul>\n"}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=function(e,t,n){return t&&o(e.prototype,t),n&&o(e,n),e};function o(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}var r=d(n(2)),s=d(n(23)),a=d(n(9)),l=d(n(135)),c=n(1),u=n(0);function d(e){return e&&e.__esModule?e:{default:e}}var h=(function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(f,a.default),i(f,[{key:"destroy",value:function(){this._removeEvent(),this._els.iconColorpicker.destroy(),(0,c.assignmentForDestroy)(this)}},{key:"addEvent",value:function(e){var t=this._registerIconHandler.bind(this),n=this._addIconHandler.bind(this);this.eventHandler={registerIcon:t,addIcon:n},this.actions=e,this._els.iconColorpicker.on("change",this._changeColorHandler.bind(this)),this._els.registrIconButton.addEventListener("change",t),this._els.addIconButton.addEventListener("click",n)}},{key:"_removeEvent",value:function(){this._els.iconColorpicker.off(),this._els.registrIconButton.removeEventListener("change",this.eventHandler.registerIcon),this._els.addIconButton.removeEventListener("click",this.eventHandler.addIcon)}},{key:"clearIconType",value:function(){this._els.addIconButton.classList.remove(this.iconType),this.iconType=null}},{key:"registDefaultIcon",value:function(){var n=this;r.default.forEach(u.defaultIconPath,function(e,t){n.actions.registDefalutIcons(t,e)})}},{key:"setIconPickerColor",value:function(e){this._els.iconColorpicker.color=e}},{key:"changeStandbyMode",value:function(){this.clearIconType(),this.actions.cancelAddIcon()}},{key:"_changeColorHandler",value:function(e){e=e||"transparent",this.actions.changeColor(e)}},{key:"_addIconHandler",value:function(e){var t=e.target.closest(".tui-image-editor-button");if(t){var n=t.getAttribute("data-icontype"),i=this._els.iconColorpicker.color;this.actions.discardSelection(),this.actions.changeSelectableAll(!1),this._els.addIconButton.classList.remove(this.iconType),this._els.addIconButton.classList.add(n),this.iconType===n?this.changeStandbyMode():(this.actions.addIcon(n,i),this.iconType=n)}}},{key:"_registerIconHandler",value:function(e){var t=void 0;c.isSupportFileApi||alert("This browser does not support file-api");var n=e.target.files[0];n&&(t=URL.createObjectURL(n),this.actions.registCustomIcon(t,n))}}]),f);function f(e,t){var n=t.locale,i=t.makeSvgIcon,o=t.menuBarPosition,r=t.usageStatistics;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,f);var a=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,(f.__proto__||Object.getPrototypeOf(f)).call(this,e,{locale:n,name:"icon",makeSvgIcon:i,menuBarPosition:o,templateHtml:l.default,usageStatistics:r}));return a.iconType=null,a._iconMap={},a._els={registrIconButton:a.selector(".tie-icon-image-file"),addIconButton:a.selector(".tie-icon-add-button"),iconColorpicker:new s.default(a.selector(".tie-icon-color"),"#ffbb3b",a.toggleDirection,a.usageStatistics)},a}t.default=h},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){var t=e.locale,n=e.makeSvgIcon;return'\n    <ul class="tui-image-editor-submenu-item">\n        <li class="tie-icon-add-button">\n            <div class="tui-image-editor-button" data-icontype="icon-arrow">\n                <div>\n                    '+n(["normal","active"],"icon-arrow",!0)+"\n                </div>\n                <label>\n                    "+t.localize("Arrow")+'\n                </label>\n            </div>\n            <div class="tui-image-editor-button" data-icontype="icon-arrow-2">\n                <div>\n                    '+n(["normal","active"],"icon-arrow-2",!0)+"\n                </div>\n                <label>\n                    "+t.localize("Arrow-2")+'\n                </label>\n            </div>\n            <div class="tui-image-editor-button" data-icontype="icon-arrow-3">\n                <div>\n                    '+n(["normal","active"],"icon-arrow-3",!0)+"\n                </div>\n                <label>\n                    "+t.localize("Arrow-3")+'\n                </label>\n            </div>\n            <div class="tui-image-editor-button" data-icontype="icon-star">\n                <div>\n                    '+n(["normal","active"],"icon-star",!0)+"\n                </div>\n                <label>\n                    "+t.localize("Star-1")+'\n                </label>\n            </div>\n            <div class="tui-image-editor-button" data-icontype="icon-star-2">\n                <div>\n                    '+n(["normal","active"],"icon-star-2",!0)+"\n                </div>\n                <label>\n                    "+t.localize("Star-2")+'\n                </label>\n            </div>\n\n            <div class="tui-image-editor-button" data-icontype="icon-polygon">\n                <div>\n                    '+n(["normal","active"],"icon-polygon",!0)+"\n                </div>\n                <label>\n                    "+t.localize("Polygon")+'\n                </label>\n            </div>\n\n            <div class="tui-image-editor-button" data-icontype="icon-location">\n                <div>\n                    '+n(["normal","active"],"icon-location",!0)+"\n                </div>\n                <label>\n                    "+t.localize("Location")+'\n                </label>\n            </div>\n\n            <div class="tui-image-editor-button" data-icontype="icon-heart">\n                <div>\n                    '+n(["normal","active"],"icon-heart",!0)+"\n                </div>\n                <label>\n                    "+t.localize("Heart")+'\n                </label>\n            </div>\n\n            <div class="tui-image-editor-button" data-icontype="icon-bubble">\n                <div>\n                    '+n(["normal","active"],"icon-bubble",!0)+"\n                </div>\n                <label>\n                    "+t.localize("Bubble")+'\n                </label>\n            </div>\n        </li>\n        <li class="tui-image-editor-partition">\n            <div></div>\n        </li>\n        <li class="tie-icon-add-button">\n            <div class="tui-image-editor-button" style="margin:0">\n                <div>\n                    <input type="file" accept="image/*" class="tie-icon-image-file">\n                    '+n(["normal","active"],"icon-load",!0)+"\n                </div>\n                <label>\n                    "+t.localize("Custom icon")+'\n                </label>\n            </div>\n        </li>\n        <li class="tui-image-editor-partition">\n            <div></div>\n        </li>\n        <li>\n            <div class="tie-icon-color" title="'+t.localize("Color")+'"></div>\n        </li>\n    </ul>\n'}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=function(e,t,n){return t&&o(e.prototype,t),n&&o(e,n),e};function o(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}var r=n(1),s=d(n(23)),l=d(n(24)),a=d(n(9)),c=d(n(137)),u=n(0);function d(e){return e&&e.__esModule?e:{default:e}}var h=(function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(f,a.default),i(f,[{key:"destroy",value:function(){this._removeEvent(),this._els.drawColorPicker.destroy(),this._els.drawRange.destroy(),(0,r.assignmentForDestroy)(this)}},{key:"addEvent",value:function(e){this.eventHandler.changeDrawType=this._changeDrawType.bind(this),this.actions=e,this._els.lineSelectButton.addEventListener("click",this.eventHandler.changeDrawType),this._els.drawColorPicker.on("change",this._changeDrawColor.bind(this)),this._els.drawRange.on("change",this._changeDrawRange.bind(this))}},{key:"_removeEvent",value:function(){this._els.lineSelectButton.removeEventListener("click",this.eventHandler.changeDrawType),this._els.drawColorPicker.off(),this._els.drawRange.off()}},{key:"setDrawMode",value:function(){this.actions.setDrawMode(this.type,{width:this.width,color:(0,r.getRgb)(this.color,.7)})}},{key:"changeStandbyMode",value:function(){this.type=null,this.actions.stopDrawingMode(),this.actions.changeSelectableAll(!0),this._els.lineSelectButton.classList.remove("free"),this._els.lineSelectButton.classList.remove("line")}},{key:"changeStartMode",value:function(){this.type="free",this._els.lineSelectButton.classList.add("free"),this.setDrawMode()}},{key:"_changeDrawType",value:function(e){var t=e.target.closest(".tui-image-editor-button");if(t){var n=this.getButtonType(t,["free","line"]);if(this.actions.discardSelection(),this.type===n)return void this.changeStandbyMode();this.changeStandbyMode(),this.type=n,this._els.lineSelectButton.classList.add(n),this.setDrawMode()}}},{key:"_changeDrawColor",value:function(e){this.color=e||"transparent",this.type?this.setDrawMode():this.changeStartMode()}},{key:"_changeDrawRange",value:function(e){this.width=e,this.type?this.setDrawMode():this.changeStartMode()}}]),f);function f(e,t){var n=t.locale,i=t.makeSvgIcon,o=t.menuBarPosition,r=t.usageStatistics;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,f);var a=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,(f.__proto__||Object.getPrototypeOf(f)).call(this,e,{locale:n,name:"draw",makeSvgIcon:i,menuBarPosition:o,templateHtml:c.default,usageStatistics:r}));return a._els={lineSelectButton:a.selector(".tie-draw-line-select-button"),drawColorPicker:new s.default(a.selector(".tie-draw-color"),"#00a9ff",a.toggleDirection,a.usageStatistics),drawRange:new l.default({slider:a.selector(".tie-draw-range"),input:a.selector(".tie-draw-range-value")},u.defaultDrawRangeValus)},a.type=null,a.color=a._els.drawColorPicker.color,a.width=a._els.drawRange.value,a}t.default=h},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){var t=e.locale,n=e.makeSvgIcon;return'\n    <ul class="tui-image-editor-submenu-item">\n        <li class="tie-draw-line-select-button">\n            <div class="tui-image-editor-button free">\n                <div>\n                    '+n(["normal","active"],"draw-free",!0)+"\n                </div>\n                <label>\n                    "+t.localize("Free")+'\n                </label>\n            </div>\n            <div class="tui-image-editor-button line">\n                <div>\n                    '+n(["normal","active"],"draw-line",!0)+"\n                </div>\n                <label>\n                    "+t.localize("Straight")+'\n                </label>\n            </div>\n        </li>\n        <li class="tui-image-editor-partition">\n            <div></div>\n        </li>\n        <li>\n            <div class="tie-draw-color" title="'+t.localize("Color")+'"></div>\n        </li>\n        <li class="tui-image-editor-partition only-left-right">\n            <div></div>\n        </li>\n        <li class="tui-image-editor-newline tui-image-editor-range-wrap">\n            <label class="range">'+t.localize("Range")+'</label>\n            <div class="tie-draw-range"></div>\n            <input class="tie-draw-range-value tui-image-editor-range-value" value="0" />\n        </li>\n    </ul>\n'}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=function(e,t,n){return t&&o(e.prototype,t),n&&o(e,n),e};function o(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}var a=h(n(2)),r=h(n(23)),s=h(n(24)),l=h(n(9)),c=h(n(139)),u=n(1),d=n(0);function h(e){return e&&e.__esModule?e:{default:e}}var f=["add","diff","subtract","multiply","screen","lighten","darken"],v=["grayscale","invert","sepia","vintage","blur","sharpen","emboss","remove-white","brightness","noise","pixelate","color-filter","tint","multiply","blend"],p={grayscale:"grayscale",invert:"invert",sepia:"sepia",blur:"blur",sharpen:"sharpen",emboss:"emboss",removeWhite:"removeColor",brightness:"brightness",contrast:"contrast",saturation:"saturation",vintage:"vintage",polaroid:"polaroid",noise:"noise",pixelate:"pixelate",colorFilter:"removeColor",tint:"blendColor",multiply:"blendColor",blend:"blendColor",hue:"hue",gamma:"gamma"},g=["removewhiteDistanceRange","colorfilterThresholeRange","pixelateRange","noiseRange","brightnessRange","tintOpacity"],m=["filterBlendColor","filterMultiplyColor","filterTintColor"],b=(function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(y,l.default),i(y,[{key:"destroy",value:function(){this._removeEvent(),this._destroyToolInstance(),(0,u.assignmentForDestroy)(this)}},{key:"_removeEvent",value:function(){var i=this;a.default.forEach(v,function(e){var t=i.selector(".tie-"+e),n=(0,u.toCamelCase)(e);t.removeEventListener("change",i.eventHandler[n])}),a.default.forEach([].concat(g,m),function(e){i._els[e].off()}),this._els.blendType.removeEventListener("change",this.eventHandler.changeBlendFilter),this._els.blendType.removeEventListener("click",this.eventHandler.changeBlendFilter)}},{key:"_destroyToolInstance",value:function(){var t=this;a.default.forEach([].concat(g,m),function(e){t._els[e].destroy()})}},{key:"addEvent",value:function(e){function i(e){return o._changeFilterState.bind(o,r,e)}function t(n){return function(e,t){return o._changeFilterState(r,n,t)}}var o=this,r=e.applyFilter;this.eventHandler={changeBlendFilter:i("blend"),blandTypeClick:function(e){return e.stopPropagation()}},a.default.forEach(v,function(e){var t=o.selector(".tie-"+e),n=(0,u.toCamelCase)(e);o.checkedMap[n]=t,o.eventHandler[n]=i(n),t.addEventListener("change",o.eventHandler[n])}),this._els.removewhiteDistanceRange.on("change",t("removeWhite")),this._els.colorfilterThresholeRange.on("change",t("colorFilter")),this._els.pixelateRange.on("change",t("pixelate")),this._els.noiseRange.on("change",t("noise")),this._els.brightnessRange.on("change",t("brightness")),this._els.filterBlendColor.on("change",this.eventHandler.changeBlendFilter),this._els.filterMultiplyColor.on("change",i("multiply")),this._els.filterTintColor.on("change",i("tint")),this._els.tintOpacity.on("change",t("tint")),this._els.filterMultiplyColor.on("changeShow",this.colorPickerChangeShow.bind(this)),this._els.filterTintColor.on("changeShow",this.colorPickerChangeShow.bind(this)),this._els.filterBlendColor.on("changeShow",this.colorPickerChangeShow.bind(this)),this._els.blendType.addEventListener("change",this.eventHandler.changeBlendFilter),this._els.blendType.addEventListener("click",this.eventHandler.blandTypeClick)}},{key:"setFilterState",value:function(e){var t=e.type,n=e.options,i=e.action,o=this._getFilterNameFromOptions(t,n),r="remove"===i;r||this._setFilterState(o,n),this.checkedMap[o].checked=!r}},{key:"_setFilterState",value:function(e,t){"colorFilter"===e?this._els.colorfilterThresholeRange.value=t.distance:"removeWhite"===e?this._els.removewhiteDistanceRange.value=t.distance:"pixelate"===e?this._els.pixelateRange.value=t.blocksize:"brightness"===e?this._els.brightnessRange.value=t.brightness:"noise"===e?this._els.noiseRange.value=t.noise:"tint"===e?(this._els.tintOpacity.value=t.alpha,this._els.filterTintColor.color=t.color):"blend"===e?this._els.filterBlendColor.color=t.color:"multiply"===e&&(this._els.filterMultiplyColor.color=t.color)}},{key:"_getFilterNameFromOptions",value:function(e,t){var n=e;return"removeColor"===e?n=a.default.isExisty(t.useAlpha)?"removeWhite":"colorFilter":"blendColor"===e&&(n={add:"blend",multiply:"multiply",tint:"tint"}[t.mode]),n}},{key:"_changeFilterState",value:function(e,t,n){var i=!(2<arguments.length&&void 0!==n)||n,o=this.checkedMap[t].checked,r=p[t],a=this.checkedMap[t].closest(".tui-image-editor-checkbox-group");a&&(o?a.classList.remove("tui-image-editor-disabled"):a.classList.add("tui-image-editor-disabled")),e(o,r,this._getFilterOption(t),!i)}},{key:"_getFilterOption",value:function(e){var t={};switch(e){case"removeWhite":t.color="#FFFFFF",t.useAlpha=!1,t.distance=parseFloat(this._els.removewhiteDistanceRange.value);break;case"colorFilter":t.color="#FFFFFF",t.distance=parseFloat(this._els.colorfilterThresholeRange.value);break;case"pixelate":t.blocksize=(0,u.toInteger)(this._els.pixelateRange.value);break;case"noise":t.noise=(0,u.toInteger)(this._els.noiseRange.value);break;case"brightness":t.brightness=parseFloat(this._els.brightnessRange.value);break;case"blend":t.mode="add",t.color=this._els.filterBlendColor.color,t.mode=this._els.blendType.value;break;case"multiply":t.mode="multiply",t.color=this._els.filterMultiplyColor.color;break;case"tint":t.mode="tint",t.color=this._els.filterTintColor.color,t.alpha=this._els.tintOpacity.value;break;case"blur":t.blur=this._els.blurRange.value}return t}},{key:"_makeControlElement",value:function(){this._els={removewhiteDistanceRange:new s.default({slider:this.selector(".tie-removewhite-distance-range")},d.defaultFilterRangeValus.removewhiteDistanceRange),brightnessRange:new s.default({slider:this.selector(".tie-brightness-range")},d.defaultFilterRangeValus.brightnessRange),noiseRange:new s.default({slider:this.selector(".tie-noise-range")},d.defaultFilterRangeValus.noiseRange),pixelateRange:new s.default({slider:this.selector(".tie-pixelate-range")},d.defaultFilterRangeValus.pixelateRange),colorfilterThresholeRange:new s.default({slider:this.selector(".tie-colorfilter-threshole-range")},d.defaultFilterRangeValus.colorfilterThresholeRange),filterTintColor:new r.default(this.selector(".tie-filter-tint-color"),"#03bd9e",this.toggleDirection,this.usageStatistics),filterMultiplyColor:new r.default(this.selector(".tie-filter-multiply-color"),"#515ce6",this.toggleDirection,this.usageStatistics),filterBlendColor:new r.default(this.selector(".tie-filter-blend-color"),"#ffbb3b",this.toggleDirection,this.usageStatistics),blurRange:d.defaultFilterRangeValus.blurFilterRange},this._els.tintOpacity=this._pickerWithRange(this._els.filterTintColor.pickerControl),this._els.blendType=this._pickerWithSelectbox(this._els.filterBlendColor.pickerControl),this.colorPickerControls.push(this._els.filterTintColor),this.colorPickerControls.push(this._els.filterMultiplyColor),this.colorPickerControls.push(this._els.filterBlendColor)}},{key:"_pickerWithRange",value:function(e){var t=document.createElement("div"),n=document.createElement("label"),i=document.createElement("div");return i.id="tie-filter-tint-opacity",n.innerHTML="Opacity",t.appendChild(n),t.appendChild(i),e.appendChild(t),e.style.height="130px",new s.default({slider:i},d.defaultFilterRangeValus.tintOpacityRange)}},{key:"_pickerWithSelectbox",value:function(e){var t=document.createElement("div"),n=document.createElement("select"),i=document.createElement("ul");return t.className="tui-image-editor-selectlist-wrap",i.className="tui-image-editor-selectlist",t.appendChild(n),t.appendChild(i),this._makeSelectOptionList(n),e.appendChild(t),e.style.height="130px",this._drawSelectOptionList(n,i),this._pickerWithSelectboxForAddEvent(n,i),n}},{key:"_drawSelectOptionList",value:function(e,n){var t=e.querySelectorAll("option");a.default.forEach(t,function(e){var t=document.createElement("li");t.innerHTML=e.innerHTML,t.setAttribute("data-item",e.value),n.appendChild(t)})}},{key:"_pickerWithSelectboxForAddEvent",value:function(i,o){var r=this;o.addEventListener("click",function(e){var t=e.target.getAttribute("data-item"),n=document.createEvent("HTMLEvents");i.querySelector('[value="'+t+'"]').selected=!0,n.initEvent("change",!0,!0),i.dispatchEvent(n),r.selectBoxShow=!1,o.style.display="none"}),i.addEventListener("mousedown",function(e){e.preventDefault(),r.selectBoxShow=!r.selectBoxShow,o.style.display=r.selectBoxShow?"block":"none",o.setAttribute("data-selectitem",i.value),o.querySelector("[data-item='"+i.value+"']").classList.add("active")})}},{key:"_makeSelectOptionList",value:function(n){a.default.forEach(f,function(e){var t=document.createElement("option");t.setAttribute("value",e),t.innerHTML=e.replace(/^[a-z]/,function(e){return e.toUpperCase()}),n.appendChild(t)})}}]),y);function y(e,t){var n=t.locale,i=t.menuBarPosition,o=t.usageStatistics;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,y);var r=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,(y.__proto__||Object.getPrototypeOf(y)).call(this,e,{locale:n,name:"filter",menuBarPosition:i,templateHtml:c.default,usageStatistics:o}));return r.selectBoxShow=!1,r.checkedMap={},r._makeControlElement(),r}t.default=b},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){var t=e.locale;return'\n    <ul class="tui-image-editor-submenu-item">\n        <li class="tui-image-editor-submenu-align">\n            <div class="tui-image-editor-checkbox-wrap fixed-width">\n                <div class="tui-image-editor-checkbox">\n                    <label>\n                        <input type="checkbox" class="tie-grayscale">\n                        <span>'+t.localize("Grayscale")+'</span>\n                    </label>\n                </div>\n                <div class="tui-image-editor-checkbox">\n                    <label>\n                        <input type="checkbox" class="tie-invert">\n                        <span>'+t.localize("Invert")+'</span>\n                    </label>\n                </div>\n                <div class="tui-image-editor-checkbox">\n                    <label>\n                        <input type="checkbox" class="tie-sepia">\n                        <span>'+t.localize("Sepia")+'</span>\n                    </label>\n                </div>\n                <div class="tui-image-editor-checkbox">\n                    <label>\n                        <input type="checkbox" class="tie-vintage">\n                        <span>'+t.localize("Sepia2")+'</span>\n                    </label>\n                </div>\n                <div class="tui-image-editor-checkbox">\n                    <label>\n                        <input type="checkbox" class="tie-blur">\n                        <span>'+t.localize("Blur")+'</span>\n                    </label>\n                </div>\n                <div class="tui-image-editor-checkbox">\n                    <label>\n                        <input type="checkbox" class="tie-sharpen">\n                        <span>'+t.localize("Sharpen")+'</span>\n                    </label>\n                </div>\n                <div class="tui-image-editor-checkbox">\n                    <label>\n                        <input type="checkbox" class="tie-emboss">\n                        <span>'+t.localize("Emboss")+'</span>\n                    </label>\n                </div>\n            </div>\n        </li>\n        <li class="tui-image-editor-partition">\n            <div></div>\n        </li>\n        <li class="tui-image-editor-submenu-align">\n            <div class="tui-image-editor-checkbox-group tui-image-editor-disabled" style="margin-bottom: 7px;">\n                <div class="tui-image-editor-checkbox-wrap">\n                    <div class="tui-image-editor-checkbox">\n                        <label>\n                            <input type="checkbox" class="tie-remove-white">\n                            <span>'+t.localize("Remove White")+'</span>\n                        </label>\n                    </div>\n                </div>\n                <div class="tui-image-editor-newline tui-image-editor-range-wrap short">\n                    <label>'+t.localize("Distance")+'</label>\n                    <div class="tie-removewhite-distance-range"></div>\n                </div>\n            </div>\n            <div class="tui-image-editor-checkbox-group tui-image-editor-disabled">\n                <div class="tui-image-editor-checkbox">\n                    <label>\n                        <input type="checkbox" class="tie-brightness">\n                        <span>'+t.localize("Brightness")+'</span>\n                    </label>\n                </div>\n                <div class="tui-image-editor-range-wrap short">\n                    <div class="tie-brightness-range"></div>\n                </div>\n            </div>\n            <div class="tui-image-editor-checkbox-group tui-image-editor-disabled">\n                <div class="tui-image-editor-checkbox">\n                    <label>\n                        <input type="checkbox" class="tie-noise">\n                        <span>'+t.localize("Noise")+'</span>\n                    </label>\n                </div>\n                <div class="tui-image-editor-range-wrap short">\n                    <div class="tie-noise-range"></div>\n                </div>\n            </div>\n        </li>\n        <li class="tui-image-editor-partition only-left-right">\n            <div></div>\n        </li>\n        <li class="tui-image-editor-submenu-align">\n            <div class="tui-image-editor-checkbox-group tui-image-editor-disabled">\n                <div class="tui-image-editor-checkbox">\n                    <label>\n                        <input type="checkbox" class="tie-pixelate">\n                        <span>'+t.localize("Pixelate")+'</span>\n                    </label>\n                </div>\n                <div class="tui-image-editor-range-wrap short">\n                    <div class="tie-pixelate-range"></div>\n                </div>\n            </div>\n            <div class="tui-image-editor-checkbox-group tui-image-editor-disabled">\n                <div class="tui-image-editor-newline tui-image-editor-checkbox-wrap">\n                    <div class="tui-image-editor-checkbox">\n                        <label>\n                            <input type="checkbox" class="tie-color-filter">\n                            <span>'+t.localize("Color Filter")+'</span>\n                        </label>\n                    </div>\n                </div>\n                <div class="tui-image-editor-newline tui-image-editor-range-wrap short">\n                    <label>'+t.localize("Threshold")+'</label>\n                    <div class="tie-colorfilter-threshole-range"></div>\n                </div>\n            </div>\n        </li>\n        <li class="tui-image-editor-partition">\n            <div></div>\n        </li>\n        <li>\n            <div class="filter-color-item">\n                <div class="tie-filter-tint-color" title="'+t.localize("Tint")+'"></div>\n                <div class="tui-image-editor-checkbox">\n                    <label>\n                        <input type="checkbox" class="tie-tint">\n                        <span></span>\n                    </label>\n                </div>\n            </div>\n            <div class="filter-color-item">\n                <div class="tie-filter-multiply-color" title="'+t.localize("Multiply")+'"></div>\n                <div class="tui-image-editor-checkbox">\n                    <label>\n                        <input type="checkbox" class="tie-multiply">\n                        <span></span>\n                    </label>\n                </div>\n            </div>\n            <div class="filter-color-item">\n                <div class="tie-filter-blend-color" title="'+t.localize("Blend")+'"></div>\n                <div class="tui-image-editor-checkbox">\n                    <label>\n                        <input type="checkbox" class="tie-blend">\n                        <span></span>\n                    </label>\n                </div>\n            </div>\n        </li>\n    </ul>\n'}},function(e,t,n){"use strict";function i(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}Object.defineProperty(t,"__esModule",{value:!0});var o=(function(e,t,n){return t&&i(e.prototype,t),n&&i(e,n),e}(r,[{key:"localize",value:function(e){return this._locale[e]||e}}]),r);function r(e){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,r),this._locale=e}t.default=o},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i,u=n(2),r=n(1),o=n(142),d=(i=o)&&i.__esModule?i:{default:i};t.default={getActions:function(){return{main:this._mainAction(),shape:this._shapeAction(),crop:this._cropAction(),flip:this._flipAction(),rotate:this._rotateAction(),text:this._textAction(),mask:this._maskAction(),draw:this._drawAction(),icon:this._iconAction(),filter:this._filterAction()}},_mainAction:function(){function n(){"crop"===o.ui.submenu&&(o.stopDrawingMode(),o.ui.changeMenu("crop"))}function e(e){var t,n;return t=e,"rotate"===o.ui.submenu&&o.ui.rotate.setRangeBarAngle("setAngle",t),n=e,"filter"===o.ui.submenu&&o.ui.filter.setFilterState(n),e}var o=this;return(0,u.extend)({initLoadImage:function(t,e){return o.loadImageFromURL(t,e).then(function(e){n(),o.ui.initializeImgUrl=t,o.ui.resizeEditor({imageSize:e}),o.clearUndoStack()})},undo:function(){o.isEmptyUndoStack()||(n(),o.deactivateAll(),o.undo().then(e))},redo:function(){o.isEmptyRedoStack()||(n(),o.deactivateAll(),o.redo().then(e))},reset:function(){n(),o.loadImageFromURL(o.ui.initializeImgUrl,"resetImage").then(function(e){n(),o.ui.resizeEditor({imageSize:e}),o.clearUndoStack()})},delete:function(){o.ui.changeHelpButtonEnabled("delete",!1),n(),o.removeActiveObject(),o.activeObjectId=null},deleteAll:function(){n(),o.clearObjects(),o.ui.changeHelpButtonEnabled("delete",!1),o.ui.changeHelpButtonEnabled("deleteAll",!1)},load:function(e){(0,r.isSupportFileApi)()||alert("This browser does not support file-api"),o.ui.initializeImgUrl=URL.createObjectURL(e),o.loadImageFromFile(e).then(function(e){n(),o.clearUndoStack(),o.ui.activeMenuEvent(),o.ui.resizeEditor({imageSize:e})}).catch(function(e){return Promise.reject(e)})},download:function(){var e=o.toDataURL(),t=o.getImageName(),n=void 0,i=void 0;(0,r.isSupportFileApi)()&&window.saveAs?(i=(n=(0,r.base64ToBlob)(e)).type.split("/")[1],t.split(".").pop()!==i&&(t+="."+i),saveAs(n,t)):window.open().document.body.innerHTML="<img src='"+e+"'>"}},this._commonAction())},_iconAction:function(){var o=this,n=void 0,i=void 0,r=void 0,a=void 0,s=void 0,l=void 0,c=void 0;this.on({iconCreateResize:function(e){var t=e.moveOriginPointer,n=(t.x-r)/s,i=(t.y-a)/l;o.setObjectPropertiesQuietly(c,{scaleX:Math.abs(2*n),scaleY:Math.abs(2*i)})},iconCreateEnd:function(){o.ui.icon.clearIconType(),o.changeSelectableAll(!0)}});return(0,u.extend)({changeColor:function(e){o.activeObjectId&&o.changeIconColor(o.activeObjectId,e)},addIcon:function(e,t){n=e,i=t,o.changeCursor("crosshair"),o.off("mousedown"),o.once("mousedown",function(e,t){r=t.x,a=t.y,o.addIcon(n,{left:t.x,top:t.y,fill:i}).then(function(e){c=e.id,s=e.width,l=e.height})}.bind(o))},cancelAddIcon:function(){o.off("mousedown"),o.ui.icon.clearIconType(),o.changeSelectableAll(!0),o.changeCursor("default")},registDefalutIcons:function(e,t){var n={};n[e]=t,o.registerIcons(n)},registCustomIcon:function(e,i){(new d.default).imageToSVG(e,function(e){var t=e.match(/path[^>]*d="([^"]*)"/)[1],n={};n[i.name]=t,o.registerIcons(n),o.addIcon(i.name,{left:100,top:100})},d.default.tracerDefaultOption())}},this._commonAction())},_drawAction:function(){var n=this;return(0,u.extend)({setDrawMode:function(e,t){n.stopDrawingMode(),"free"===e?n.startDrawingMode("FREE_DRAWING",t):n.startDrawingMode("LINE_DRAWING",t)},setColor:function(e){n.setBrush({color:e})}},this._commonAction())},_maskAction:function(){var n=this;return(0,u.extend)({loadImageFromURL:function(e,t){return n.loadImageFromURL(n.toDataURL(),"FilterImage").then(function(){n.addImageObject(e).then(function(){URL.revokeObjectURL(t)})})},applyFilter:function(){n.applyFilter("mask",{maskObjId:n.activeObjectId})}},this._commonAction())},_textAction:function(){var n=this;return(0,u.extend)({changeTextStyle:function(e,t){n.activeObjectId&&n.changeTextStyle(n.activeObjectId,e,t)}},this._commonAction())},_rotateAction:function(){var n=this;return(0,u.extend)({rotate:function(e,t){n.rotate(e,t),n.ui.resizeEditor(),n.ui.rotate.setRangeBarAngle("rotate",e)},setAngle:function(e,t){n.setAngle(e,t),n.ui.resizeEditor(),n.ui.rotate.setRangeBarAngle("setAngle",e)}},this._commonAction())},_shapeAction:function(){var n=this;return(0,u.extend)({changeShape:function(e,t){n.activeObjectId&&n.changeShape(n.activeObjectId,e,t)},setDrawingShape:function(e){n.setDrawingShape(e)}},this._commonAction())},_cropAction:function(){var t=this;return(0,u.extend)({crop:function(){var e=t.getCropzoneRect();e&&t.crop(e).then(function(){t.stopDrawingMode(),t.ui.resizeEditor(),t.ui.changeMenu("crop")}).catch(function(e){return Promise.reject(e)})},cancel:function(){t.stopDrawingMode(),t.ui.changeMenu("crop")},preset:function(e){switch(e){case"preset-square":t.setCropzoneRect(1);break;case"preset-3-2":t.setCropzoneRect(1.5);break;case"preset-4-3":t.setCropzoneRect(4/3);break;case"preset-5-4":t.setCropzoneRect(5/4);break;case"preset-7-5":t.setCropzoneRect(1.4);break;case"preset-16-9":t.setCropzoneRect(16/9);break;default:t.setCropzoneRect(),t.ui.crop.changeApplyButtonStatus(!1)}}},this._commonAction())},_flipAction:function(){var t=this;return(0,u.extend)({flip:function(e){return t[e]()}},this._commonAction())},_filterAction:function(){var o=this;return(0,u.extend)({applyFilter:function(e,t,n,i){e?o.applyFilter(t,n,i):o.hasFilter(t)&&o.removeFilter(t)}},this._commonAction())},setReAction:function(){var s=this;this.on({undoStackChanged:function(e){e?(s.ui.changeHelpButtonEnabled("undo",!0),s.ui.changeHelpButtonEnabled("reset",!0)):(s.ui.changeHelpButtonEnabled("undo",!1),s.ui.changeHelpButtonEnabled("reset",!1)),s.ui.resizeEditor()},redoStackChanged:function(e){e?s.ui.changeHelpButtonEnabled("redo",!0):s.ui.changeHelpButtonEnabled("redo",!1),s.ui.resizeEditor()},objectActivated:function(e){s.activeObjectId=e.id,s.ui.changeHelpButtonEnabled("delete",!0),s.ui.changeHelpButtonEnabled("deleteAll",!0),"cropzone"===e.type?s.ui.crop.changeApplyButtonStatus(!0):-1<["rect","circle","triangle"].indexOf(e.type)?(s.stopDrawingMode(),"shape"!==s.ui.submenu&&s.ui.changeMenu("shape",!1,!1),s.ui.shape.setShapeStatus({strokeColor:e.stroke,strokeWidth:e.strokeWidth,fillColor:e.fill}),s.ui.shape.setMaxStrokeValue(Math.min(e.width,e.height))):"path"===e.type||"line"===e.type?"draw"!==s.ui.submenu&&(s.ui.changeMenu("draw",!1,!1),s.ui.draw.changeStandbyMode()):-1<["i-text","text"].indexOf(e.type)?("text"!==s.ui.submenu&&s.ui.changeMenu("text",!1,!1),s.ui.text.setTextStyleStateOnAction(e)):"icon"===e.type&&(s.stopDrawingMode(),"icon"!==s.ui.submenu&&s.ui.changeMenu("icon",!1,!1),s.ui.icon.setIconPickerColor(e.fill))},addText:function(e){var t=s.ui.text,n=t.textColor,i=t.fontSize,o=t.fontStyle,r=t.fontWeight,a=t.underline;s.addText("Double Click",{position:e.originPosition,styles:{fill:n,fontSize:i,fontFamily:"Noto Sans",fontStyle:o,fontWeight:r,underline:a}}).then(function(){s.changeCursor("default")})},addObjectAfter:function(e){-1<["rect","circle","triangle"].indexOf(e.type)&&(s.ui.shape.setMaxStrokeValue(Math.min(e.width,e.height)),s.ui.shape.changeStandbyMode())},objectScaled:function(e){if(-1<["i-text","text"].indexOf(e.type))s.ui.text.fontSize=(0,r.toInteger)(e.fontSize);else if(0<=["rect","circle","triangle"].indexOf(e.type)){var t=e.width,n=e.height,i=s.ui.shape.getStrokeValue();t<i&&s.ui.shape.setStrokeValue(t),n<i&&s.ui.shape.setStrokeValue(n)}},selectionCleared:function(){s.activeObjectId=null,"text"===s.ui.submenu?s.changeCursor("text"):"draw"!==s.ui.submenu&&"crop"!==s.ui.submenu&&s.stopDrawingMode()}})},_commonAction:function(){var t=this;return{modeChange:function(e){switch(e){case"text":t._changeActivateMode("TEXT");break;case"crop":t.startDrawingMode("CROPPER");break;case"shape":t._changeActivateMode("SHAPE"),t.setDrawingShape(t.ui.shape.type,t.ui.shape.options)}},deactivateAll:this.deactivateAll.bind(this),changeSelectableAll:this.changeSelectableAll.bind(this),discardSelection:this.discardSelection.bind(this),stopDrawingMode:this.stopDrawingMode.bind(this)}},mixin:function(e){(0,u.extend)(e.prototype,this)}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=function(e,t,n){return t&&o(e.prototype,t),n&&o(e,n),e};function o(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}var r=(i(a,null,[{key:"tracerDefaultOption",value:function(){return{pathomit:100,ltres:.1,qtres:1,scale:1,strokewidth:5,viewbox:!1,linefilter:!0,desc:!1,rightangleenhance:!1,pal:[{r:0,g:0,b:0,a:255},{r:255,g:255,b:255,a:255}]}}}]),i(a,[{key:"imageToSVG",value:function(e,t,n){var i=this;n=this.checkoptions(n),this.loadImage(e,function(e){t(i.imagedataToSVG(i.getImgdata(e),n))},n)}},{key:"imagedataToSVG",value:function(e,t){t=this.checkoptions(t);var n=this.imagedataToTracedata(e,t);return this.getsvgstring(n,t)}},{key:"imageToTracedata",value:function(e,t,n){var i=this;n=this.checkoptions(n),this.loadImage(e,function(e){t(i.imagedataToTracedata(i.getImgdata(e),n))},n)}},{key:"imagedataToTracedata",value:function(e,t){t=this.checkoptions(t);var n=this.colorquantization(e,t),i=void 0;if(0===t.layering){i={layers:[],palette:n.palette,width:n.array[0].length-2,height:n.array.length-2};for(var o=0;o<n.palette.length;o+=1){var r=this.batchtracepaths(this.internodes(this.pathscan(this.layeringstep(n,o),t.pathomit),t),t.ltres,t.qtres);i.layers.push(r)}}else{var a=this.layering(n);t.layercontainerid&&this.drawLayers(a,this.specpalette,t.scale,t.layercontainerid);var s=this.batchpathscan(a,t.pathomit),l=this.batchinternodes(s,t);i={layers:this.batchtracelayers(l,t.ltres,t.qtres),palette:n.palette,width:e.width,height:e.height}}return i}},{key:"checkoptions",value:function(e){"string"==typeof(e=e||{})&&(e=e.toLowerCase(),e=this.optionpresets[e]?this.optionpresets[e]:{});for(var t=Object.keys(this.optionpresets.default),n=0;n<t.length;n+=1)e.hasOwnProperty(t[n])||(e[t[n]]=this.optionpresets.default[t[n]]);return e}},{key:"colorquantization",value:function(e,t){var n=[],i=0,o=void 0,r=void 0,a=void 0,s=[],l=e.width*e.height,c=void 0,u=void 0,d=void 0,h=void 0,f=void 0;for(u=0;u<e.height+2;u+=1)for(n[u]=[],c=0;c<e.width+2;c+=1)n[u][c]=-1;for(f=t.pal?t.pal:0===t.colorsampling?this.generatepalette(t.numberofcolors):1===t.colorsampling?this.samplepalette(t.numberofcolors,e):this.samplepalette2(t.numberofcolors,e),0<t.blurradius&&(e=this.blur(e,t.blurradius,t.blurdelta)),h=0;h<t.colorquantcycles;h+=1){if(0<h)for(d=0;d<f.length;d+=1)0<s[d].n&&(f[d]={r:Math.floor(s[d].r/s[d].n),g:Math.floor(s[d].g/s[d].n),b:Math.floor(s[d].b/s[d].n),a:Math.floor(s[d].a/s[d].n)}),s[d].n/l<t.mincolorratio&&h<t.colorquantcycles-1&&(f[d]={r:Math.floor(255*Math.random()),g:Math.floor(255*Math.random()),b:Math.floor(255*Math.random()),a:Math.floor(255*Math.random())});for(c=0;c<f.length;c+=1)s[c]={r:0,g:0,b:0,a:0,n:0};for(u=0;u<e.height;u+=1)for(c=0;c<e.width;c+=1){for(i=4*(u*e.width+c),r=1024,d=a=0;d<f.length;d+=1)(o=Math.abs(f[d].r-e.data[i])+Math.abs(f[d].g-e.data[i+1])+Math.abs(f[d].b-e.data[i+2])+Math.abs(f[d].a-e.data[i+3]))<r&&(r=o,a=d);s[a].r+=e.data[i],s[a].g+=e.data[i+1],s[a].b+=e.data[i+2],s[a].a+=e.data[i+3],s[a].n+=1,n[u+1][c+1]=a}}return{array:n,palette:f}}},{key:"samplepalette",value:function(e,t){for(var n=void 0,i=[],o=0;o<e;o+=1)n=4*Math.floor(Math.random()*t.data.length/4),i.push({r:t.data[n],g:t.data[n+1],b:t.data[n+2],a:t.data[n+3]});return i}},{key:"samplepalette2",value:function(e,t){for(var n=void 0,i=[],o=Math.ceil(Math.sqrt(e)),r=Math.ceil(e/o),a=t.width/(o+1),s=t.height/(r+1),l=0;l<r;l+=1)for(var c=0;c<o&&i.length!==e;c+=1)n=4*Math.floor((l+1)*s*t.width+(c+1)*a),i.push({r:t.data[n],g:t.data[n+1],b:t.data[n+2],a:t.data[n+3]});return i}},{key:"generatepalette",value:function(e){var t=[],n=void 0,i=void 0,o=void 0;if(e<8)for(var r=Math.floor(255/(e-1)),a=0;a<e;a+=1)t.push({r:a*r,g:a*r,b:a*r,a:255});else{var s=Math.floor(Math.pow(e,1/3)),l=Math.floor(255/(s-1)),c=e-s*s*s;for(n=0;n<s;n+=1)for(i=0;i<s;i+=1)for(o=0;o<s;o+=1)t.push({r:n*l,g:i*l,b:o*l,a:255});for(n=0;n<c;n+=1)t.push({r:Math.floor(255*Math.random()),g:Math.floor(255*Math.random()),b:Math.floor(255*Math.random()),a:Math.floor(255*Math.random())})}return t}},{key:"layering",value:function(e){var t=[],n=0,i=e.array.length,o=e.array[0].length,r=void 0,a=void 0,s=void 0,l=void 0,c=void 0,u=void 0,d=void 0,h=void 0,f=void 0,v=void 0,p=void 0;for(p=0;p<e.palette.length;p+=1)for(t[p]=[],v=0;v<i;v+=1)for(t[p][v]=[],f=0;f<o;f+=1)t[p][v][f]=0;for(v=1;v<i-1;v+=1)for(f=1;f<o-1;f+=1)n=e.array[v][f],r=e.array[v-1][f-1]===n?1:0,a=e.array[v-1][f]===n?1:0,s=e.array[v-1][f+1]===n?1:0,l=e.array[v][f-1]===n?1:0,c=e.array[v][f+1]===n?1:0,u=e.array[v+1][f-1]===n?1:0,d=e.array[v+1][f]===n?1:0,h=e.array[v+1][f+1]===n?1:0,t[n][v+1][f+1]=1+2*c+4*h+8*d,l||(t[n][v+1][f]=2+4*d+8*u),a||(t[n][v][f+1]=0+2*s+4*c+8),r||(t[n][v][f]=0+2*a+4+8*l);return t}},{key:"layeringstep",value:function(e,t){var n=[],i=e.array.length,o=e.array[0].length,r=void 0,a=void 0;for(a=0;a<i;a+=1)for(n[a]=[],r=0;r<o;r+=1)n[a][r]=0;for(a=1;a<i;a+=1)for(r=1;r<o;r+=1)n[a][r]=(e.array[a-1][r-1]===t?1:0)+(e.array[a-1][r]===t?2:0)+(e.array[a][r-1]===t?8:0)+(e.array[a][r]===t?4:0);return n}},{key:"pathscan",value:function(e,t){for(var n=[],i=0,o=0,r=0,a=0,s=e[0].length,l=e.length,c=0,u=!0,d=!1,h=void 0,f=0;f<l;f+=1)for(var v=0;v<s;v+=1)if(4===e[f][v]||11===e[f][v])for(r=v,a=f,n[i]={},n[i].points=[],n[i].boundingbox=[r,a,r,a],n[i].holechildren=[],u=!1,o=0,d=11===e[f][v],c=1;!u;){if(n[i].points[o]={},n[i].points[o].x=r-1,n[i].points[o].y=a-1,n[i].points[o].t=e[a][r],r-1<n[i].boundingbox[0]&&(n[i].boundingbox[0]=r-1),r-1>n[i].boundingbox[2]&&(n[i].boundingbox[2]=r-1),a-1<n[i].boundingbox[1]&&(n[i].boundingbox[1]=a-1),a-1>n[i].boundingbox[3]&&(n[i].boundingbox[3]=a-1),h=this.pathscan_combined_lookup[e[a][r]][c],e[a][r]=h[0],c=h[1],r+=h[2],a+=h[3],r-1===n[i].points[0].x&&a-1===n[i].points[0].y)if(u=!0,n[i].points.length<t)n.pop();else{if(n[i].isholepath=!!d,d){for(var p=0,g=[-1,-1,s+1,l+1],m=0;m<i;m++)!n[m].isholepath&&this.boundingboxincludes(n[m].boundingbox,n[i].boundingbox)&&this.boundingboxincludes(g,n[m].boundingbox)&&(g=n[p=m].boundingbox);n[p].holechildren.push(i)}i+=1}o+=1}return n}},{key:"boundingboxincludes",value:function(e,t){return e[0]<t[0]&&e[1]<t[1]&&e[2]>t[2]&&e[3]>t[3]}},{key:"batchpathscan",value:function(e,t){var n=[];for(var i in e)e.hasOwnProperty(i)&&(n[i]=this.pathscan(e[i],t));return n}},{key:"internodes",value:function(e,t){var n=[],i=0,o=0,r=0,a=0,s=0,l=void 0,c=void 0;for(l=0;l<e.length;l+=1)for(n[l]={},n[l].points=[],n[l].boundingbox=e[l].boundingbox,n[l].holechildren=e[l].holechildren,n[l].isholepath=e[l].isholepath,i=e[l].points.length,c=0;c<i;c+=1)o=(c+1)%i,r=(c+2)%i,a=(c-1+i)%i,s=(c-2+i)%i,t.rightangleenhance&&this.testrightangle(e[l],s,a,c,o,r)&&(0<n[l].points.length&&(n[l].points[n[l].points.length-1].linesegment=this.getdirection(n[l].points[n[l].points.length-1].x,n[l].points[n[l].points.length-1].y,e[l].points[c].x,e[l].points[c].y)),n[l].points.push({x:e[l].points[c].x,y:e[l].points[c].y,linesegment:this.getdirection(e[l].points[c].x,e[l].points[c].y,(e[l].points[c].x+e[l].points[o].x)/2,(e[l].points[c].y+e[l].points[o].y)/2)})),n[l].points.push({x:(e[l].points[c].x+e[l].points[o].x)/2,y:(e[l].points[c].y+e[l].points[o].y)/2,linesegment:this.getdirection((e[l].points[c].x+e[l].points[o].x)/2,(e[l].points[c].y+e[l].points[o].y)/2,(e[l].points[o].x+e[l].points[r].x)/2,(e[l].points[o].y+e[l].points[r].y)/2)});return n}},{key:"testrightangle",value:function(e,t,n,i,o,r){return e.points[i].x===e.points[t].x&&e.points[i].x===e.points[n].x&&e.points[i].y===e.points[o].y&&e.points[i].y===e.points[r].y||e.points[i].y===e.points[t].y&&e.points[i].y===e.points[n].y&&e.points[i].x===e.points[o].x&&e.points[i].x===e.points[r].x}},{key:"getdirection",value:function(e,t,n,i){return e<n?t<i?1:i<t?7:0:n<e?t<i?3:i<t?5:4:t<i?2:i<t?6:8}},{key:"batchinternodes",value:function(e,t){var n=[];for(var i in e)e.hasOwnProperty(i)&&(n[i]=this.internodes(e[i],t));return n}},{key:"tracepath",value:function(e,t,n){var i=0,o=void 0,r=void 0,a=void 0,s={segments:[]};for(s.boundingbox=e.boundingbox,s.holechildren=e.holechildren,s.isholepath=e.isholepath;i<e.points.length;){for(o=e.points[i].linesegment,r=-1,a=i+1;(e.points[a].linesegment===o||e.points[a].linesegment===r||-1===r)&&a<e.points.length-1;)e.points[a].linesegment!==o&&-1===r&&(r=e.points[a].linesegment),a+=1;a===e.points.length-1&&(a=0),s.segments=s.segments.concat(this.fitseq(e,t,n,i,a)),i=0<a?a:e.points.length}return s}},{key:"fitseq",value:function(e,t,n,i,o){if(o>e.points.length||o<0)return[];var r=i,a=0,s=!0,l=void 0,c=void 0,u=void 0,d=o-i;d<0&&(d+=e.points.length);for(var h=(e.points[o].x-e.points[i].x)/d,f=(e.points[o].y-e.points[i].y)/d,v=(i+1)%e.points.length,p=void 0;v!=o;)(p=v-i)<0&&(p+=e.points.length),l=e.points[i].x+h*p,c=e.points[i].y+f*p,t<(u=(e.points[v].x-l)*(e.points[v].x-l)+(e.points[v].y-c)*(e.points[v].y-c))&&(s=!1),a<u&&(r=v,a=u),v=(v+1)%e.points.length;if(s)return[{type:"L",x1:e.points[i].x,y1:e.points[i].y,x2:e.points[o].x,y2:e.points[o].y}];var g=r;s=!0,a=0;var m=(g-i)/d,b=(1-m)*(1-m),y=2*(1-m)*m,_=m*m,k=(b*e.points[i].x+_*e.points[o].x-e.points[g].x)/-y,E=(b*e.points[i].y+_*e.points[o].y-e.points[g].y)/-y;for(v=i+1;v!=o;)y=2*(1-(m=(v-i)/d))*m,_=m*m,l=(b=(1-m)*(1-m))*e.points[i].x+y*k+_*e.points[o].x,c=b*e.points[i].y+y*E+_*e.points[o].y,n<(u=(e.points[v].x-l)*(e.points[v].x-l)+(e.points[v].y-c)*(e.points[v].y-c))&&(s=!1),a<u&&(r=v,a=u),v=(v+1)%e.points.length;if(s)return[{type:"Q",x1:e.points[i].x,y1:e.points[i].y,x2:k,y2:E,x3:e.points[o].x,y3:e.points[o].y}];var w=g;return this.fitseq(e,t,n,i,w).concat(this.fitseq(e,t,n,w,o))}},{key:"batchtracepaths",value:function(e,t,n){var i=[];for(var o in e)e.hasOwnProperty(o)&&i.push(this.tracepath(e[o],t,n));return i}},{key:"batchtracelayers",value:function(e,t,n){var i=[];for(var o in e)e.hasOwnProperty(o)&&(i[o]=this.batchtracepaths(e[o],t,n));return i}},{key:"roundtodec",value:function(e,t){return Number(e.toFixed(t))}},{key:"svgpathstring",value:function(e,t,n,i){var o=e.layers[t],r=o[n],a="",s=void 0;if(i.linefilter&&r.segments.length<3)return a;if(a="<path "+(i.desc?'desc="l '+t+" p "+n+'" ':"")+this.tosvgcolorstr(e.palette[t],i)+'d="',-1===i.roundcoords){for(a+="M "+r.segments[0].x1*i.scale+" "+r.segments[0].y1*i.scale+" ",s=0;s<r.segments.length;s++)a+=r.segments[s].type+" "+r.segments[s].x2*i.scale+" "+r.segments[s].y2*i.scale+" ",r.segments[s].hasOwnProperty("x3")&&(a+=r.segments[s].x3*i.scale+" "+r.segments[s].y3*i.scale+" ");a+="Z "}else{for(a+="M "+this.roundtodec(r.segments[0].x1*i.scale,i.roundcoords)+" "+this.roundtodec(r.segments[0].y1*i.scale,i.roundcoords)+" ",s=0;s<r.segments.length;s++)a+=r.segments[s].type+" "+this.roundtodec(r.segments[s].x2*i.scale,i.roundcoords)+" "+this.roundtodec(r.segments[s].y2*i.scale,i.roundcoords)+" ",r.segments[s].hasOwnProperty("x3")&&(a+=this.roundtodec(r.segments[s].x3*i.scale,i.roundcoords)+" "+this.roundtodec(r.segments[s].y3*i.scale,i.roundcoords)+" ");a+="Z "}for(var l=0;l<r.holechildren.length;l++){var c=o[r.holechildren[l]];if(-1===i.roundcoords)for(c.segments[c.segments.length-1].hasOwnProperty("x3")?a+="M "+c.segments[c.segments.length-1].x3*i.scale+" "+c.segments[c.segments.length-1].y3*i.scale+" ":a+="M "+c.segments[c.segments.length-1].x2*i.scale+" "+c.segments[c.segments.length-1].y2*i.scale+" ",s=c.segments.length-1;0<=s;s--)a+=c.segments[s].type+" ",c.segments[s].hasOwnProperty("x3")&&(a+=c.segments[s].x2*i.scale+" "+c.segments[s].y2*i.scale+" "),a+=c.segments[s].x1*i.scale+" "+c.segments[s].y1*i.scale+" ";else for(c.segments[c.segments.length-1].hasOwnProperty("x3")?a+="M "+this.roundtodec(c.segments[c.segments.length-1].x3*i.scale)+" "+this.roundtodec(c.segments[c.segments.length-1].y3*i.scale)+" ":a+="M "+this.roundtodec(c.segments[c.segments.length-1].x2*i.scale)+" "+this.roundtodec(c.segments[c.segments.length-1].y2*i.scale)+" ",s=c.segments.length-1;0<=s;s--)a+=c.segments[s].type+" ",c.segments[s].hasOwnProperty("x3")&&(a+=this.roundtodec(c.segments[s].x2*i.scale)+" "+this.roundtodec(c.segments[s].y2*i.scale)+" "),a+=this.roundtodec(c.segments[s].x1*i.scale)+" "+this.roundtodec(c.segments[s].y1*i.scale)+" ";a+="Z "}if(a+='" />',i.lcpr||i.qcpr){for(s=0;s<r.segments.length;s++)r.segments[s].hasOwnProperty("x3")&&i.qcpr&&(a+='<circle cx="'+r.segments[s].x2*i.scale+'" cy="'+r.segments[s].y2*i.scale+'" r="'+i.qcpr+'" fill="cyan" stroke-width="'+.2*i.qcpr+'" stroke="black" />',a+='<circle cx="'+r.segments[s].x3*i.scale+'" cy="'+r.segments[s].y3*i.scale+'" r="'+i.qcpr+'" fill="white" stroke-width="'+.2*i.qcpr+'" stroke="black" />',a+='<line x1="'+r.segments[s].x1*i.scale+'" y1="'+r.segments[s].y1*i.scale+'" x2="'+r.segments[s].x2*i.scale+'" y2="'+r.segments[s].y2*i.scale+'" stroke-width="'+.2*i.qcpr+'" stroke="cyan" />',a+='<line x1="'+r.segments[s].x2*i.scale+'" y1="'+r.segments[s].y2*i.scale+'" x2="'+r.segments[s].x3*i.scale+'" y2="'+r.segments[s].y3*i.scale+'" stroke-width="'+.2*i.qcpr+'" stroke="cyan" />'),!r.segments[s].hasOwnProperty("x3")&&i.lcpr&&(a+='<circle cx="'+r.segments[s].x2*i.scale+'" cy="'+r.segments[s].y2*i.scale+'" r="'+i.lcpr+'" fill="white" stroke-width="'+.2*i.lcpr+'" stroke="black" />');for(l=0;l<r.holechildren.length;l++)for(c=o[r.holechildren[l]],s=0;s<c.segments.length;s++)c.segments[s].hasOwnProperty("x3")&&i.qcpr&&(a+='<circle cx="'+c.segments[s].x2*i.scale+'" cy="'+c.segments[s].y2*i.scale+'" r="'+i.qcpr+'" fill="cyan" stroke-width="'+.2*i.qcpr+'" stroke="black" />',a+='<circle cx="'+c.segments[s].x3*i.scale+'" cy="'+c.segments[s].y3*i.scale+'" r="'+i.qcpr+'" fill="white" stroke-width="'+.2*i.qcpr+'" stroke="black" />',a+='<line x1="'+c.segments[s].x1*i.scale+'" y1="'+c.segments[s].y1*i.scale+'" x2="'+c.segments[s].x2*i.scale+'" y2="'+c.segments[s].y2*i.scale+'" stroke-width="'+.2*i.qcpr+'" stroke="cyan" />',a+='<line x1="'+c.segments[s].x2*i.scale+'" y1="'+c.segments[s].y2*i.scale+'" x2="'+c.segments[s].x3*i.scale+'" y2="'+c.segments[s].y3*i.scale+'" stroke-width="'+.2*i.qcpr+'" stroke="cyan" />'),!c.segments[s].hasOwnProperty("x3")&&i.lcpr&&(a+='<circle cx="'+c.segments[s].x2*i.scale+'" cy="'+c.segments[s].y2*i.scale+'" r="'+i.lcpr+'" fill="white" stroke-width="'+.2*i.lcpr+'" stroke="black" />')}return a}},{key:"getsvgstring",value:function(e,t){t=this.checkoptions(t);for(var n=e.width*t.scale,i=e.height*t.scale,o="<svg "+(t.viewbox?'viewBox="0 0 '+n+" "+i+'" ':'width="'+n+'" height="'+i+'" ')+'version="1.1" xmlns="http://www.w3.org/2000/svg" desc="Created with imagetracer.js version '+this.versionnumber+'" >',r=0;r<e.layers.length;r+=1)for(var a=0;a<e.layers[r].length;a+=1)e.layers[r][a].isholepath||(o+=this.svgpathstring(e,r,a,t));return o+="</svg>"}},{key:"compareNumbers",value:function(e,t){return e-t}},{key:"torgbastr",value:function(e){return"rgba("+e.r+","+e.g+","+e.b+","+e.a+")"}},{key:"tosvgcolorstr",value:function(e,t){return'fill="rgb('+e.r+","+e.g+","+e.b+')" stroke="rgb('+e.r+","+e.g+","+e.b+')" stroke-width="'+t.strokewidth+'" opacity="'+e.a/255+'" '}},{key:"appendSVGString",value:function(e,t){var n=void 0;t?(n=document.getElementById(t))||((n=document.createElement("div")).id=t,document.body.appendChild(n)):(n=document.createElement("div"),document.body.appendChild(n)),n.innerHTML+=e}},{key:"blur",value:function(e,t,n){var i=void 0,o=void 0,r=void 0,a=void 0,s=void 0,l=void 0,c=void 0,u=void 0,d=void 0,h={width:e.width,height:e.height,data:[]};if((t=Math.floor(t))<1)return e;5<t&&(t=5),1024<(n=Math.abs(n))&&(n=1024);var f=this.gks[t-1];for(o=0;o<e.height;o++)for(i=0;i<e.width;i++){for(d=u=c=l=s=0,r=-t;r<t+1;r++)0<i+r&&i+r<e.width&&(a=4*(o*e.width+i+r),s+=e.data[a]*f[r+t],l+=e.data[a+1]*f[r+t],c+=e.data[a+2]*f[r+t],u+=e.data[a+3]*f[r+t],d+=f[r+t]);a=4*(o*e.width+i),h.data[a]=Math.floor(s/d),h.data[a+1]=Math.floor(l/d),h.data[a+2]=Math.floor(c/d),h.data[a+3]=Math.floor(u/d)}var v=new Uint8ClampedArray(h.data);for(o=0;o<e.height;o++)for(i=0;i<e.width;i++){for(d=u=c=l=s=0,r=-t;r<t+1;r++)0<o+r&&o+r<e.height&&(s+=v[a=4*((o+r)*e.width+i)]*f[r+t],l+=v[a+1]*f[r+t],c+=v[a+2]*f[r+t],u+=v[a+3]*f[r+t],d+=f[r+t]);a=4*(o*e.width+i),h.data[a]=Math.floor(s/d),h.data[a+1]=Math.floor(l/d),h.data[a+2]=Math.floor(c/d),h.data[a+3]=Math.floor(u/d)}for(o=0;o<e.height;o++)for(i=0;i<e.width;i++)a=4*(o*e.width+i),n<Math.abs(h.data[a]-e.data[a])+Math.abs(h.data[a+1]-e.data[a+1])+Math.abs(h.data[a+2]-e.data[a+2])+Math.abs(h.data[a+3]-e.data[a+3])&&(h.data[a]=e.data[a],h.data[a+1]=e.data[a+1],h.data[a+2]=e.data[a+2],h.data[a+3]=e.data[a+3]);return h}},{key:"loadImage",value:function(e,t,n){var i=new Image;n&&n.corsenabled&&(i.crossOrigin="Anonymous"),i.src=e,i.onload=function(){var e=document.createElement("canvas");e.width=i.width,e.height=i.height,e.getContext("2d").drawImage(i,0,0),t(e)}}},{key:"getImgdata",value:function(e){return e.getContext("2d").getImageData(0,0,e.width,e.height)}},{key:"drawLayers",value:function(e,t,n,i){n=n||1;var o=void 0,r=void 0,a=void 0,s=void 0,l=void 0,c=void 0;for(l in i?(c=document.getElementById(i))||((c=document.createElement("div")).id=i,document.body.appendChild(c)):(c=document.createElement("div"),document.body.appendChild(c)),e)if(e.hasOwnProperty(l)){o=e[l][0].length,r=e[l].length;var u=document.createElement("canvas");u.width=o*n,u.height=r*n;var d=u.getContext("2d");for(s=0;s<r;s+=1)for(a=0;a<o;a+=1)d.fillStyle=this.torgbastr(t[e[l][s][a]%t.length]),d.fillRect(a*n,s*n,n,n);c.appendChild(u)}}}]),a);function a(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,a),this.versionnumber="1.2.4",this.optionpresets={default:{corsenabled:!1,ltres:1,qtres:1,pathomit:8,rightangleenhance:!0,colorsampling:2,numberofcolors:16,mincolorratio:0,colorquantcycles:3,layering:0,strokewidth:1,linefilter:!1,scale:1,roundcoords:1,viewbox:!1,desc:!1,lcpr:0,qcpr:0,blurradius:0,blurdelta:20},posterized1:{colorsampling:0,numberofcolors:2},posterized2:{numberofcolors:4,blurradius:5},curvy:{ltres:.01,linefilter:!0,rightangleenhance:!1},sharp:{qtres:.01,linefilter:!1},detailed:{pathomit:0,roundcoords:2,ltres:.5,qtres:.5,numberofcolors:64},smoothed:{blurradius:5,blurdelta:64},grayscale:{colorsampling:0,colorquantcycles:1,numberofcolors:7},fixedpalette:{colorsampling:0,colorquantcycles:1,numberofcolors:27},randomsampling1:{colorsampling:1,numberofcolors:8},randomsampling2:{colorsampling:1,numberofcolors:64},artistic1:{colorsampling:0,colorquantcycles:1,pathomit:0,blurradius:5,blurdelta:64,ltres:.01,linefilter:!0,numberofcolors:16,strokewidth:2},artistic2:{qtres:.01,colorsampling:0,colorquantcycles:1,numberofcolors:4,strokewidth:0},artistic3:{qtres:10,ltres:10,numberofcolors:8},artistic4:{qtres:10,ltres:10,numberofcolors:64,blurradius:5,blurdelta:256,strokewidth:2},posterized3:{ltres:1,qtres:1,pathomit:20,rightangleenhance:!0,colorsampling:0,numberofcolors:3,mincolorratio:0,colorquantcycles:3,blurradius:3,blurdelta:20,strokewidth:0,linefilter:!1,roundcoords:1,pal:[{r:0,g:0,b:100,a:255},{r:255,g:255,b:255,a:255}]}},this.pathscan_combined_lookup=[[[-1,-1,-1,-1],[-1,-1,-1,-1],[-1,-1,-1,-1],[-1,-1,-1,-1]],[[0,1,0,-1],[-1,-1,-1,-1],[-1,-1,-1,-1],[0,2,-1,0]],[[-1,-1,-1,-1],[-1,-1,-1,-1],[0,1,0,-1],[0,0,1,0]],[[0,0,1,0],[-1,-1,-1,-1],[0,2,-1,0],[-1,-1,-1,-1]],[[-1,-1,-1,-1],[0,0,1,0],[0,3,0,1],[-1,-1,-1,-1]],[[13,3,0,1],[13,2,-1,0],[7,1,0,-1],[7,0,1,0]],[[-1,-1,-1,-1],[0,1,0,-1],[-1,-1,-1,-1],[0,3,0,1]],[[0,3,0,1],[0,2,-1,0],[-1,-1,-1,-1],[-1,-1,-1,-1]],[[0,3,0,1],[0,2,-1,0],[-1,-1,-1,-1],[-1,-1,-1,-1]],[[-1,-1,-1,-1],[0,1,0,-1],[-1,-1,-1,-1],[0,3,0,1]],[[11,1,0,-1],[14,0,1,0],[14,3,0,1],[11,2,-1,0]],[[-1,-1,-1,-1],[0,0,1,0],[0,3,0,1],[-1,-1,-1,-1]],[[0,0,1,0],[-1,-1,-1,-1],[0,2,-1,0],[-1,-1,-1,-1]],[[-1,-1,-1,-1],[-1,-1,-1,-1],[0,1,0,-1],[0,0,1,0]],[[0,1,0,-1],[-1,-1,-1,-1],[-1,-1,-1,-1],[0,2,-1,0]],[[-1,-1,-1,-1],[-1,-1,-1,-1],[-1,-1,-1,-1],[-1,-1,-1,-1]]],this.gks=[[.27901,.44198,.27901],[.135336,.228569,.272192,.228569,.135336],[.086776,.136394,.178908,.195843,.178908,.136394,.086776],[.063327,.093095,.122589,.144599,.152781,.144599,.122589,.093095,.063327],[.049692,.069304,.089767,.107988,.120651,.125194,.120651,.107988,.089767,.069304,.049692]],this.specpalette=[{r:0,g:0,b:0,a:255},{r:128,g:128,b:128,a:255},{r:0,g:0,b:128,a:255},{r:64,g:64,b:128,a:255},{r:192,g:192,b:192,a:255},{r:255,g:255,b:255,a:255},{r:128,g:128,b:192,a:255},{r:0,g:0,b:192,a:255},{r:128,g:0,b:0,a:255},{r:128,g:64,b:64,a:255},{r:128,g:0,b:128,a:255},{r:168,g:168,b:168,a:255},{r:192,g:128,b:128,a:255},{r:192,g:0,b:0,a:255},{r:255,g:255,b:255,a:255},{r:0,g:128,b:0,a:255}]}t.default=r},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=function(e,t,n){return t&&o(e.prototype,t),n&&o(e,n),e};function o(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}var h=O(n(2)),r=O(n(5)),a=O(n(144)),s=O(n(145)),l=O(n(147)),c=O(n(148)),u=O(n(149)),d=O(n(150)),f=O(n(152)),v=O(n(153)),p=O(n(154)),g=O(n(159)),m=O(n(161)),b=O(n(162)),y=O(n(163)),_=O(n(164)),k=O(n(165)),E=n(1),w=n(0);function O(e){return e&&e.__esModule?e:{default:e}}var C=h.default.extend,x=h.default.stamp,S=h.default.isArray,M=h.default.isString,P=h.default.forEachArray,j=h.default.forEachOwnProperties,T=h.default.CustomEvents,I={cssOnly:!0},A={backstoreOnly:!0},R=(i(D,[{key:"destroy",value:function(){var e=this._canvas.wrapperEl;this._canvas.clear(),e.parentNode.removeChild(e)}},{key:"deactivateAll",value:function(){return this._canvas.discardActiveObject(),this}},{key:"renderAll",value:function(){return this._canvas.renderAll(),this}},{key:"add",value:function(e){var t,n=[];S(e)?n=e:n.push(e),(t=this._canvas).add.apply(t,n)}},{key:"contains",value:function(e){return this._canvas.contains(e)}},{key:"getObjects",value:function(){return this._canvas.getObjects().slice()}},{key:"getObject",value:function(e){return this._objects[e]}},{key:"remove",value:function(e){this._canvas.remove(e)}},{key:"removeAll",value:function(e){var t=this._canvas,n=t.getObjects().slice();return t.remove.apply(t,this._canvas.getObjects()),e&&t.clear(),n}},{key:"removeObjectById",value:function(e){var t=[],n=this._canvas,i=this.getObject(e);return i&&i.isType("group")&&!i.isEmpty()?(n.discardActiveObject(),i.forEachObject(function(e){t.push(e),n.remove(e)})):n.contains(i)&&(t.push(i),n.remove(i)),t}},{key:"getObjectId",value:function(e){var t=null;for(t in this._objects)if(this._objects.hasOwnProperty(t)&&e===this._objects[t])return t;return null}},{key:"getActiveObject",value:function(){return this._canvas._activeObject}},{key:"getActiveObjectIdForRemove",value:function(){var e=this.getActiveObject(),t=e.type,n=e.left,i=e.top;if("activeSelection"!==t)return this.getObjectId(e);var o=new r.default.Group([].concat(e.getObjects()),{left:n,top:i});return this._addFabricObject(o)}},{key:"isReadyRemoveObject",value:function(){var e=this.getActiveObject();return e&&!e.isEditing}},{key:"getActiveObjects",value:function(){var e=this._canvas._activeObject;return e&&"activeSelection"===e.type?e:null}},{key:"getActiveSelectionFromObjects",value:function(e){var t=this.getCanvas();return new r.default.ActiveSelection(e,{canvas:t})}},{key:"setActiveObject",value:function(e){this._canvas.setActiveObject(e)}},{key:"setCropSelectionStyle",value:function(e){this.cropSelectionStyle=e}},{key:"getComponent",value:function(e){return this._componentMap[e]}},{key:"getDrawingMode",value:function(){return this._drawingMode}},{key:"startDrawingMode",value:function(e,t){if(this._isSameDrawingMode(e))return!0;this.stopDrawingMode();var n=this._getDrawingModeInstance(e);return n&&n.start&&(n.start(this,t),this._drawingMode=e),!!n}},{key:"stopDrawingMode",value:function(){if(!this._isSameDrawingMode(w.drawingModes.NORMAL)){var e=this._getDrawingModeInstance(this.getDrawingMode());e&&e.end&&e.end(this),this._drawingMode=w.drawingModes.NORMAL}}},{key:"toDataURL",value:function(e){var t=this.getComponent(w.componentNames.CROPPER);t.changeVisibility(!1);var n=this._canvas&&this._canvas.toDataURL(e);return t.changeVisibility(!0),n}},{key:"setCanvasImage",value:function(e,t){t&&x(t),this.imageName=e,this.canvasImage=t}},{key:"setCssMaxDimension",value:function(e){this.cssMaxWidth=e.width||this.cssMaxWidth,this.cssMaxHeight=e.height||this.cssMaxHeight}},{key:"adjustCanvasDimension",value:function(){var e=this.canvasImage.scale(1),t=e.getBoundingRect(),n=t.width,i=t.height,o=this._calcMaxDimension(n,i);this.setCanvasCssDimension({width:"100%",height:"100%","max-width":o.width+"px","max-height":o.height+"px"}),this.setCanvasBackstoreDimension({width:n,height:i}),this._canvas.centerObject(e)}},{key:"setCanvasCssDimension",value:function(e){this._canvas.setDimensions(e,I)}},{key:"setCanvasBackstoreDimension",value:function(e){this._canvas.setDimensions(e,A)}},{key:"setImageProperties",value:function(e,t){var n=this.canvasImage;n&&(n.set(e).setCoords(),t&&this._canvas.renderAll())}},{key:"getCanvasElement",value:function(){return this._canvas.getElement()}},{key:"getCanvas",value:function(){return this._canvas}},{key:"getCanvasImage",value:function(){return this.canvasImage}},{key:"getImageName",value:function(){return this.imageName}},{key:"addImageObject",value:function(e){var n=this,i=this._callbackAfterLoadingImageObject.bind(this);return new E.Promise(function(t){r.default.Image.fromURL(e,function(e){i(e),t(n.createObjectProperties(e))},{crossOrigin:"Anonymous"})})}},{key:"getCenter",value:function(){return this._canvas.getCenter()}},{key:"getCropzoneRect",value:function(){return this.getComponent(w.componentNames.CROPPER).getCropzoneRect()}},{key:"setCropzoneRect",value:function(e){this.getComponent(w.componentNames.CROPPER).setCropzoneRect(e)}},{key:"getCroppedImageData",value:function(e){return this.getComponent(w.componentNames.CROPPER).getCroppedImageData(e)}},{key:"setBrush",value:function(e){var t=this._drawingMode,n=w.componentNames.FREE_DRAWING;t===w.drawingModes.LINE&&(n=w.drawingModes.LINE),this.getComponent(n).setBrush(e)}},{key:"setDrawingShape",value:function(e,t){this.getComponent(w.componentNames.SHAPE).setStates(e,t)}},{key:"registerPaths",value:function(e){this.getComponent(w.componentNames.ICON).registerPaths(e)}},{key:"changeCursor",value:function(e){var t=this.getCanvas();t.defaultCursor=e,t.renderAll()}},{key:"hasFilter",value:function(e){return this.getComponent(w.componentNames.FILTER).hasFilter(e)}},{key:"setSelectionStyle",value:function(e){C(w.fObjectOptions.SELECTION_STYLE,e)}},{key:"setObjectProperties",value:function(e,t){var n=this.getObject(e),i=C({},t);return n.set(i),n.setCoords(),this.getCanvas().renderAll(),i}},{key:"getObjectProperties",value:function(e,t){var n=this.getObject(e),i={};return M(t)?i[t]=n[t]:S(t)?P(t,function(e){i[e]=n[e]}):j(t,function(e,t){i[t]=n[t]}),i}},{key:"getObjectPosition",value:function(e,t,n){var i=this.getObject(e);return i?i.getPointByOrigin(t,n):null}},{key:"setObjectPosition",value:function(e,t){var n=this.getObject(e),i=t.x,o=t.y,r=t.originX,a=t.originY;if(!n)return!1;var s=n.getPointByOrigin(r,a),l=n.getPointByOrigin("center","center"),c=l.x-s.x,u=l.y-s.y;return n.set({left:i+c,top:o+u}),n.setCoords(),!0}},{key:"getCanvasSize",value:function(){var e=this.getCanvasImage();return{width:e?e.width:0,height:e?e.height:0}}},{key:"createStaticCanvas",value:function(){var e=new r.default.StaticCanvas;return e.set({enableRetinaScaling:!1}),e}},{key:"_getDrawingModeInstance",value:function(e){return this._drawingModeMap[e]}},{key:"_setObjectCachingToFalse",value:function(){r.default.Object.prototype.objectCaching=!1}},{key:"_setCanvasElement",value:function(e){var t=void 0,n=void 0;"CANVAS"!==(t=e.nodeType?e:document.querySelector(e)).nodeName.toUpperCase()&&(n=document.createElement("canvas"),t.appendChild(n)),this._canvas=new r.default.Canvas(n,{containerClass:"tui-image-editor-canvas-container",enableRetinaScaling:!1})}},{key:"_createDrawingModeInstances",value:function(){this._register(this._drawingModeMap,new m.default),this._register(this._drawingModeMap,new b.default),this._register(this._drawingModeMap,new y.default),this._register(this._drawingModeMap,new _.default),this._register(this._drawingModeMap,new k.default)}},{key:"_createComponents",value:function(){this._register(this._componentMap,new a.default(this)),this._register(this._componentMap,new s.default(this)),this._register(this._componentMap,new l.default(this)),this._register(this._componentMap,new c.default(this)),this._register(this._componentMap,new u.default(this)),this._register(this._componentMap,new d.default(this)),this._register(this._componentMap,new f.default(this)),this._register(this._componentMap,new v.default(this)),this._register(this._componentMap,new p.default(this)),this._register(this._componentMap,new g.default(this))}},{key:"_register",value:function(e,t){e[t.getName()]=t}},{key:"_isSameDrawingMode",value:function(e){return this.getDrawingMode()===e}},{key:"_calcMaxDimension",value:function(e,t){var n=this.cssMaxWidth/e,i=this.cssMaxHeight/t,o=Math.min(e,this.cssMaxWidth),r=Math.min(t,this.cssMaxHeight);return n<1&&n<i?(o=e*n,r=t*n):i<1&&i<n&&(o=e*i,r=t*i),{width:Math.floor(o),height:Math.floor(r)}}},{key:"_callbackAfterLoadingImageObject",value:function(e){var t=this.getCanvasImage().getCenterPoint();e.set(w.fObjectOptions.SELECTION_STYLE),e.set({left:t.x,top:t.y,crossOrigin:"Anonymous"}),this.getCanvas().add(e).setActiveObject(e)}},{key:"_attachCanvasEvents",value:function(){var e=this._canvas,t=this._handler;e.on({"mouse:down":t.onMouseDown,"object:added":t.onObjectAdded,"object:removed":t.onObjectRemoved,"object:moving":t.onObjectMoved,"object:scaling":t.onObjectScaled,"object:modified":t.onObjectModified,"object:rotating":t.onObjectRotated,"object:selected":t.onObjectSelected,"path:created":t.onPathCreated,"selection:cleared":t.onSelectionCleared,"selection:created":t.onSelectionCreated,"selection:updated":t.onObjectSelected})}},{key:"_onMouseDown",value:function(e){var t=this._canvas.getPointer(e.e);this.fire(w.eventNames.MOUSE_DOWN,e.e,t)}},{key:"_onObjectAdded",value:function(e){var t=e.target;t.isType("cropzone")||this._addFabricObject(t)}},{key:"_onObjectRemoved",value:function(e){var t=e.target;this._removeFabricObject(x(t))}},{key:"_onObjectMoved",value:function(e){var t=this;this._lazyFire(w.eventNames.OBJECT_MOVED,function(e){return t.createObjectProperties(e)},e.target)}},{key:"_onObjectScaled",value:function(e){var t=this;this._lazyFire(w.eventNames.OBJECT_SCALED,function(e){return t.createObjectProperties(e)},e.target)}},{key:"_onObjectModified",value:function(e){var t=e.target;"activeSelection"===t.type&&t.getObjects().forEach(function(e){return e.fire("modifiedInGroup",t)})}},{key:"_onObjectRotated",value:function(e){var t=this;this._lazyFire(w.eventNames.OBJECT_ROTATED,function(e){return t.createObjectProperties(e)},e.target)}},{key:"_lazyFire",value:function(t,n,e){var i=this,o=e&&e.canvasEventDelegation?e.canvasEventDelegation(t):"none";"unregisted"===o&&e.canvasEventRegister(t,function(e){i.fire(t,n(e))}),"none"===o&&this.fire(t,n(e))}},{key:"_onObjectSelected",value:function(e){var t=e.target,n=this.createObjectProperties(t);this.fire(w.eventNames.OBJECT_ACTIVATED,n)}},{key:"_onPathCreated",value:function(e){var t=e.path.getCenterPoint(),n=t.x,i=t.y;e.path.set(C({left:n,top:i},w.fObjectOptions.SELECTION_STYLE));var o=this.createObjectProperties(e.path);this.fire(w.eventNames.ADD_OBJECT,o)}},{key:"_onSelectionCleared",value:function(){this.fire(w.eventNames.SELECTION_CLEARED)}},{key:"_onSelectionCreated",value:function(e){this.fire(w.eventNames.SELECTION_CREATED,e.target)}},{key:"discardSelection",value:function(){this._canvas.discardActiveObject(),this._canvas.renderAll()}},{key:"changeSelectableAll",value:function(t){this._canvas.forEachObject(function(e){e.selectable=t,e.hoverCursor=t?"move":"crosshair"})}},{key:"createObjectProperties",value:function(e){var t={id:x(e),type:e.type};if(C(t,(0,E.getProperties)(e,["left","top","width","height","fill","stroke","strokeWidth","opacity","angle"])),(0,E.includes)(["i-text","text"],e.type))C(t,this._createTextProperties(e,t));else if((0,E.includes)(["rect","triangle","circle"],e.type)){var n=this.getComponent(w.componentNames.SHAPE);C(t,{fill:n.makeFillPropertyForUserEvent(e)})}return t}},{key:"_createTextProperties",value:function(e){var t={};return C(t,(0,E.getProperties)(e,["text","fontFamily","fontSize","fontStyle","textAlign","textDecoration","fontWeight"])),t}},{key:"_addFabricObject",value:function(e){var t=x(e);return this._objects[t]=e,t}},{key:"_removeFabricObject",value:function(e){delete this._objects[e]}},{key:"resetTargetObjectForCopyPaste",value:function(){var e=this.getActiveObject();e&&(this.targetObjectForCopyPaste=e)}},{key:"pasteObject",value:function(){var t=this;if(!this.targetObjectForCopyPaste)return E.Promise.resolve([]);var e=this.targetObjectForCopyPaste,n="activeSelection"===e.type?e.getObjects():[e],i=null;return this.discardSelection(),this._cloneObject(n).then(function(e){i=1<e.length?t.getActiveSelectionFromObjects(e):e[0],t.targetObjectForCopyPaste=i,t.setActiveObject(i)})}},{key:"_cloneObject",value:function(e){var t=this,n=h.default.map(e,function(e){return t._cloneObjectItem(e)});return E.Promise.all(n)}},{key:"_cloneObjectItem",value:function(e){var n=this;return this._copyFabricObjectForPaste(e).then(function(e){var t=n.createObjectProperties(e);return n.add(e),n.fire(w.eventNames.ADD_OBJECT,t),e})}},{key:"_copyFabricObjectForPaste",value:function(e){function u(e,t){return t?e-10:e+10}var d=this;return this._copyFabricObject(e).then(function(e){var t=e.left,n=e.top,i=e.width,o=e.height,r=d.getCanvasSize(),a=r.width,s=r.height,l=t+i/2,c=n+o/2;return e.set(h.default.extend({left:u(t,a<l+10),top:u(n,s<c+10)},w.fObjectOptions.SELECTION_STYLE)),e})}},{key:"_copyFabricObject",value:function(i){var o=this;return new E.Promise(function(n){i.clone(function(e){var t=o.getComponent(w.componentNames.SHAPE);(0,E.isShape)(e)&&t.processForCopiedObject(e,i),n(e)})})}}]),D);function D(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},n=t.cssMaxWidth,i=t.cssMaxHeight,o=t.useDragAddIcon,r=void 0!==o&&o;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,D),this.canvasImage=null,this.cssMaxWidth=n||1e3,this.cssMaxHeight=i||800,this.useDragAddIcon=r,this.cropSelectionStyle={},this.targetObjectForCopyPaste=null,this.imageName="",this._objects={},this._canvas=null,this._drawingMode=w.drawingModes.NORMAL,this._drawingModeMap={},this._componentMap={},this._handler={onMouseDown:this._onMouseDown.bind(this),onObjectAdded:this._onObjectAdded.bind(this),onObjectRemoved:this._onObjectRemoved.bind(this),onObjectMoved:this._onObjectMoved.bind(this),onObjectScaled:this._onObjectScaled.bind(this),onObjectModified:this._onObjectModified.bind(this),onObjectRotated:this._onObjectRotated.bind(this),onObjectSelected:this._onObjectSelected.bind(this),onPathCreated:this._onPathCreated.bind(this),onSelectionCleared:this._onSelectionCleared.bind(this),onSelectionCreated:this._onSelectionCreated.bind(this)},this._setObjectCachingToFalse(),this._setCanvasElement(e),this._createDrawingModeInstances(),this._createComponents(),this._attachCanvasEvents()}T.mixin(R),t.default=R},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=function(e,t,n){return t&&o(e.prototype,t),n&&o(e,n),e};function o(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}var r,a=n(7),s=(r=a)&&r.__esModule?r:{default:r},l=n(0),c=n(1);var u={padding:0,crossOrigin:"Anonymous"},d=(function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(h,s.default),i(h,[{key:"load",value:function(t,e){var n=this,i=void 0;if(t||e)i=this._setBackgroundImage(e).then(function(e){return n.setCanvasImage(t,e),n.adjustCanvasDimension(),e});else{var o=this.getCanvas();o.backgroundImage=null,o.renderAll(),i=new c.Promise(function(e){n.setCanvasImage("",null),e()})}return i}},{key:"_setBackgroundImage",value:function(e){var o=this;return e?new c.Promise(function(t,n){var i=o.getCanvas();i.setBackgroundImage(e,function(){var e=i.backgroundImage;e&&e.getElement()?t(e):n(l.rejectMessages.loadingImageFailed)},u)}):c.Promise.reject(l.rejectMessages.loadImage)}}]),h);function h(e){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,h),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,(h.__proto__||Object.getPrototypeOf(h)).call(this,l.componentNames.IMAGE_LOADER,e))}t.default=d},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=function(e,t,n){return t&&o(e.prototype,t),n&&o(e,n),e};function o(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}var h=c(n(2)),r=c(n(5)),a=c(n(7)),s=c(n(146)),l=n(0),f=n(1);function c(e){return e&&e.__esModule?e:{default:e}}var u={presetRatio:null,top:-10,left:-10,height:1,width:1},d=(function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(v,a.default),i(v,[{key:"start",value:function(){if(!this._cropzone){var e=this.getCanvas();e.forEachObject(function(e){e.evented=!1}),this._cropzone=new s.default(e,h.default.extend({left:0,top:0,width:.5,height:.5,strokeWidth:0,cornerSize:10,cornerColor:"black",fill:"transparent"},l.CROPZONE_DEFAULT_OPTIONS,this.graphics.cropSelectionStyle)),e.discardActiveObject(),e.add(this._cropzone),e.on("mouse:down",this._listeners.mousedown),e.selection=!1,e.defaultCursor="crosshair",r.default.util.addListener(document,"keydown",this._listeners.keydown),r.default.util.addListener(document,"keyup",this._listeners.keyup)}}},{key:"end",value:function(){var e=this.getCanvas(),t=this._cropzone;t&&(e.remove(t),e.selection=!0,e.defaultCursor="default",e.off("mouse:down",this._listeners.mousedown),e.forEachObject(function(e){e.evented=!0}),this._cropzone=null,r.default.util.removeListener(document,"keydown",this._listeners.keydown),r.default.util.removeListener(document,"keyup",this._listeners.keyup))}},{key:"changeVisibility",value:function(e){this._cropzone&&this._cropzone.set({visible:e})}},{key:"_onFabricMouseDown",value:function(e){var t=this.getCanvas();if(!e.target){t.selection=!1;var n=t.getPointer(e.e);this._startX=n.x,this._startY=n.y,t.on({"mouse:move":this._listeners.mousemove,"mouse:up":this._listeners.mouseup})}}},{key:"_onFabricMouseMove",value:function(e){var t=this.getCanvas(),n=t.getPointer(e.e),i=n.x,o=n.y,r=this._cropzone;10<Math.abs(i-this._startX)+Math.abs(o-this._startY)&&(t.remove(r),r.set(this._calcRectDimensionFromPoint(i,o)),t.add(r),t.setActiveObject(r))}},{key:"_calcRectDimensionFromPoint",value:function(e,t){var n=this.getCanvas(),i=n.getWidth(),o=n.getHeight(),r=this._startX,a=this._startY,s=(0,f.clamp)(e,0,r),l=(0,f.clamp)(t,0,a),c=(0,f.clamp)(e,r,i)-s,u=(0,f.clamp)(t,a,o)-l;return this._withShiftKey&&(u<c?u=c:c<u&&(c=u),e<=r&&(s=r-c),t<=a&&(l=a-u)),{left:s,top:l,width:c,height:u}}},{key:"_onFabricMouseUp",value:function(){var e=this._cropzone,t=this._listeners,n=this.getCanvas();n.setActiveObject(e),n.off({"mouse:move":t.mousemove,"mouse:up":t.mouseup})}},{key:"getCroppedImageData",value:function(e){var t=this.getCanvas(),n=t.contains(this._cropzone);if(!e)return null;n&&t.remove(this._cropzone);var i={imageName:this.getImageName(),url:t.toDataURL(e)};return n&&t.add(this._cropzone),i}},{key:"getCropzoneRect",value:function(){var e=this._cropzone;return e.isValid()?{left:e.left,top:e.top,width:e.width,height:e.height}:null}},{key:"setCropzoneRect",value:function(e){var t=this.getCanvas(),n=this._cropzone;t.discardActiveObject(),t.selection=!1,t.remove(n),n.set(e?this._getPresetPropertiesForCropSize(e):u),t.add(n),t.selection=!0,e&&t.setActiveObject(n)}},{key:"_getPresetPropertiesForCropSize",value:function(e){function t(e,t){return t<e?t/e:1}var n=this.getCanvas(),i=n.getWidth(),o=n.getHeight(),r=o<=i?i:o,a=r*e,s=r,l=t(a,i),c=h.default.map([a,s],function(e){return e*l});a=c[0];var u=t(s=c[1],o),d=h.default.map([a,s],function(e){return(0,f.fixFloatingPoint)(e*u)});return a=d[0],{presetRatio:e,top:(o-(s=d[1]))/2,left:(i-a)/2,width:a,height:s}}},{key:"_onKeyDown",value:function(e){e.keyCode===l.keyCodes.SHIFT&&(this._withShiftKey=!0)}},{key:"_onKeyUp",value:function(e){e.keyCode===l.keyCodes.SHIFT&&(this._withShiftKey=!1)}}]),v);function v(e){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,v);var t=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,(v.__proto__||Object.getPrototypeOf(v)).call(this,l.componentNames.CROPPER,e));return t._cropzone=null,t._startX=null,t._startY=null,t._withShiftKey=!1,t._listeners={keydown:t._onKeyDown.bind(t),keyup:t._onKeyUp.bind(t),mousedown:t._onFabricMouseDown.bind(t),mousemove:t._onFabricMouseMove.bind(t),mouseup:t._onFabricMouseUp.bind(t)},t}t.default=d},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var c=o(n(2)),i=o(n(5)),u=n(1),a=n(0);function o(e){return e&&e.__esModule?e:{default:e}}function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function s(){}var l=["tl","tr","mt","ml","mr","mb","bl","br"];function v(e,t){return t<e?"width":"height"}var d=i.default.util.createClass(i.default.Rect,{initialize:function(e,t,n){(t=c.default.extend(t,n)).type="cropzone",this.callSuper("initialize",t),this._addEventHandler(),this.canvas=e,this.options=t},canvasEventDelegation:function(e){var t="unregisted";return this.canvasEventTrigger[e]!==s?t="registed":[a.eventNames.OBJECT_MOVED,a.eventNames.OBJECT_SCALED].indexOf(e)<0&&(t="none"),t},canvasEventRegister:function(e,t){this.canvasEventTrigger[e]=t},_addEventHandler:function(){var e;this.canvasEventTrigger=(r(e={},a.eventNames.OBJECT_MOVED,s),r(e,a.eventNames.OBJECT_SCALED,s),e),this.on({moving:this._onMoving.bind(this),scaling:this._onScaling.bind(this)})},_renderCropzone:function(e){var t=this.flipX?-1:1,n=this.flipY?-1:1,i=t/this.scaleX,o=n/this.scaleY;e.scale(i,o),this._fillOuterRect(e,"rgba(0, 0, 0, 0.5)"),this.options.lineWidth?(this._fillInnerRect(e),this._strokeBorder(e,"rgb(255, 255, 255)",{lineWidth:this.options.lineWidth})):(this._strokeBorder(e,"rgb(0, 0, 0)",{lineDashWidth:7}),this._strokeBorder(e,"rgb(255, 255, 255)",{lineDashWidth:7,lineDashOffset:7})),e.scale(1/i,1/o)},_render:function(e){this.callSuper("_render",e),this._renderCropzone(e)},_fillOuterRect:function(e,t){var n=this._getCoordinates(),i=n.x,o=n.y;e.save(),e.fillStyle=t,e.beginPath(),e.moveTo(i[0]-1,o[0]-1),e.lineTo(i[3]+1,o[0]-1),e.lineTo(i[3]+1,o[3]+1),e.lineTo(i[0]-1,o[3]+1),e.lineTo(i[0]-1,o[0]-1),e.closePath(),e.moveTo(i[1],o[1]),e.lineTo(i[1],o[2]),e.lineTo(i[2],o[2]),e.lineTo(i[2],o[1]),e.lineTo(i[1],o[1]),e.closePath(),e.fill(),e.restore()},_fillInnerRect:function(e){var t=this._getCoordinates(),n=t.x,i=t.y,o=this._caculateInnerPosition(n,(n[2]-n[1])/3),r=this._caculateInnerPosition(i,(i[2]-i[1])/3);e.save(),e.strokeStyle="rgba(255, 255, 255, 0.7)",e.lineWidth=this.options.lineWidth,e.beginPath(),e.moveTo(o[0],r[1]),e.lineTo(o[3],r[1]),e.moveTo(o[0],r[2]),e.lineTo(o[3],r[2]),e.moveTo(o[1],r[0]),e.lineTo(o[1],r[3]),e.moveTo(o[2],r[0]),e.lineTo(o[2],r[3]),e.stroke(),e.closePath(),e.restore()},_caculateInnerPosition:function(e,t){var n=[];return n[0]=e[1],n[1]=e[1]+t,n[2]=e[1]+2*t,n[3]=e[2],n},_getCoordinates:function(){var e=this.canvas,t=this.width,n=this.height,i=this.left,o=this.top,r=t/2,a=n/2,s=e.getHeight(),l=e.getWidth();return{x:c.default.map([-(r+i),-r,r,l-i-t+r],Math.ceil),y:c.default.map([-(a+o),-a,a,s-o-n+a],Math.ceil)}},_strokeBorder:function(e,t,n){var i=n.lineDashWidth,o=n.lineDashOffset,r=n.lineWidth,a=this.width/2,s=this.height/2;e.save(),e.strokeStyle=t,e.setLineDash&&e.setLineDash([i,i]),o&&(e.lineDashOffset=o),r&&(e.lineWidth=r),e.beginPath(),e.moveTo(-a,-s),e.lineTo(a,-s),e.lineTo(a,s),e.lineTo(-a,s),e.lineTo(-a,-s),e.stroke(),e.restore()},_onMoving:function(){var e=this.height,t=this.width,n=this.left,i=this.top,o=this.canvas.getWidth()-t,r=this.canvas.getHeight()-e;this.left=(0,u.clamp)(n,0,o),this.top=(0,u.clamp)(i,0,r),this.canvasEventTrigger[a.eventNames.OBJECT_MOVED](this)},_onScaling:function(e){var t=e.transform.corner,n=this.canvas.getPointer(e.e),i=this._calcScalingSizeFromPointer(n,t);this.scale(1).set(i),this.canvasEventTrigger[a.eventNames.OBJECT_SCALED](this)},_calcScalingSizeFromPointer:function(e,t){var n;return(n=t,0<=l.indexOf(n))&&this._resizeCropZone(e,t)},adjustRatioCropzoneSize:function(e){var t=e.width,n=e.height,i=e.leftMaker,o=e.topMaker,r=e.maxWidth,a=e.maxHeight,s=e.scaleTo;if(t=r?(0,u.clamp)(t,1,r):t,n=a?(0,u.clamp)(n,1,a):n,!this.presetRatio)return{width:t,height:n,left:i(t),top:o(n)};"width"===s?n=t/this.presetRatio:t=n*this.presetRatio;var l=Math.min(r/t,a/n);if(l<=1){var c=[t,n].map(function(e){return e*l});t=c[0],n=c[1]}return{width:t,height:n,left:i(t),top:o(n)}},_getCropzoneRectInfo:function(){var e=this.canvas,t=e.width,n=e.height,i=this.getBoundingRect(!1,!0),o=i.top,r=i.left,a=i.width,s=i.height;return{rectTop:o,rectLeft:r,rectWidth:a,rectHeight:s,rectRight:r+a,rectBottom:o+s,canvasWidth:t,canvasHeight:n}},_resizeCropZone:function(e,t){var n=e.x,i=e.y,o=this._getCropzoneRectInfo(),r=o.rectWidth,a=o.rectHeight,s=o.rectTop,l=o.rectLeft,c=o.rectBottom,u=o.rectRight,d=o.canvasWidth,h=o.canvasHeight,f={tl:{width:u-n,height:c-i,leftMaker:function(e){return u-e},topMaker:function(e){return c-e},maxWidth:u,maxHeight:c,scaleTo:v(l-n,s-i)},tr:{width:n-l,height:c-i,leftMaker:function(){return l},topMaker:function(e){return c-e},maxWidth:d-l,maxHeight:c,scaleTo:v(n-u,s-i)},mt:{width:r,height:c-i,leftMaker:function(){return l},topMaker:function(e){return c-e},maxWidth:d-l,maxHeight:c,scaleTo:"height"},ml:{width:u-n,height:a,leftMaker:function(e){return u-e},topMaker:function(){return s},maxWidth:u,maxHeight:h-s,scaleTo:"width"},mr:{width:n-l,height:a,leftMaker:function(){return l},topMaker:function(){return s},maxWidth:d-l,maxHeight:h-s,scaleTo:"width"},mb:{width:r,height:i-s,leftMaker:function(){return l},topMaker:function(){return s},maxWidth:d-l,maxHeight:h-s,scaleTo:"height"},bl:{width:u-n,height:i-s,leftMaker:function(e){return u-e},topMaker:function(){return s},maxWidth:u,maxHeight:h-s,scaleTo:v(l-n,i-c)},br:{width:n-l,height:i-s,leftMaker:function(){return l},topMaker:function(){return s},maxWidth:d-l,maxHeight:h-s,scaleTo:v(n-u,i-c)}};return this.adjustRatioCropzoneSize(f[t])},isValid:function(){return 0<=this.left&&0<=this.top&&0<this.width&&0<this.height}});t.default=d},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=function(e,t,n){return t&&o(e.prototype,t),n&&o(e,n),e};function o(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}var r=c(n(2)),a=n(1),s=c(n(7)),l=n(0);function c(e){return e&&e.__esModule?e:{default:e}}var u=(function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(d,s.default),i(d,[{key:"getCurrentSetting",value:function(){var e=this.getCanvasImage();return{flipX:e.flipX,flipY:e.flipY}}},{key:"set",value:function(e){var t=this.getCurrentSetting(),n=t.flipX!==e.flipX,i=t.flipY!==e.flipY;return n||i?(r.default.extend(t,e),this.setImageProperties(t,!0),this._invertAngle(n,i),this._flipObjects(n,i),a.Promise.resolve({flipX:t.flipX,flipY:t.flipY,angle:this.getCanvasImage().angle})):a.Promise.reject(l.rejectMessages.flip)}},{key:"_invertAngle",value:function(e,t){var n=this.getCanvasImage(),i=n.angle;e&&(i*=-1),t&&(i*=-1),n.rotate(parseFloat(i)).setCoords()}},{key:"_flipObjects",value:function(e,t){var n=this.getCanvas();e&&n.forEachObject(function(e){e.set({angle:parseFloat(-1*e.angle),flipX:!e.flipX,left:n.width-e.left}).setCoords()}),t&&n.forEachObject(function(e){e.set({angle:parseFloat(-1*e.angle),flipY:!e.flipY,top:n.height-e.top}).setCoords()}),n.renderAll()}},{key:"reset",value:function(){return this.set({flipX:!1,flipY:!1})}},{key:"flipX",value:function(){var e=this.getCurrentSetting();return this.set({flipX:!e.flipX,flipY:e.flipY})}},{key:"flipY",value:function(){var e=this.getCurrentSetting();return this.set({flipX:e.flipX,flipY:!e.flipY})}}]),d);function d(e){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,d),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,(d.__proto__||Object.getPrototypeOf(d)).call(this,l.componentNames.FLIP,e))}t.default=u},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=function(e,t,n){return t&&o(e.prototype,t),n&&o(e,n),e};function o(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}var l=c(n(5)),r=n(1),a=c(n(7)),s=n(0);function c(e){return e&&e.__esModule?e:{default:e}}var u=(function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(d,a.default),i(d,[{key:"getCurrentAngle",value:function(){return this.getCanvasImage().angle}},{key:"setAngle",value:function(e){var t=this.getCurrentAngle()%360;e%=360;var n=this.getCanvasImage(),i=n.getCenterPoint();n.set({angle:e}).setCoords(),this.adjustCanvasDimension();var o=n.getCenterPoint();return this._rotateForEachObject(i,o,e-t),r.Promise.resolve(e)}},{key:"_rotateForEachObject",value:function(o,e,r){var t=this.getCanvas(),a=o.x-e.x,s=o.y-e.y;t.forEachObject(function(e){var t=e.getCenterPoint(),n=l.default.util.degreesToRadians(r),i=l.default.util.rotatePoint(t,o,n);e.set({left:i.x-a,top:i.y-s,angle:(e.angle+r)%360}),e.setCoords()}),t.renderAll()}},{key:"rotate",value:function(e){var t=this.getCurrentAngle();return this.setAngle(t+e)}}]),d);function d(e){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,d),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,(d.__proto__||Object.getPrototypeOf(d)).call(this,s.componentNames.ROTATION,e))}t.default=u},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=function(e,t,n){return t&&o(e.prototype,t),n&&o(e,n),e};function o(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}var r=l(n(5)),a=l(n(7)),s=n(0);function l(e){return e&&e.__esModule?e:{default:e}}var c=(function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(u,a.default),i(u,[{key:"start",value:function(e){this.getCanvas().isDrawingMode=!0,this.setBrush(e)}},{key:"setBrush",value:function(e){var t=this.getCanvas().freeDrawingBrush;e=e||{},this.width=e.width||this.width,e.color&&(this.oColor=new r.default.Color(e.color)),t.width=this.width,t.color=this.oColor.toRgba()}},{key:"end",value:function(){this.getCanvas().isDrawingMode=!1}}]),u);function u(e){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,u);var t=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,(u.__proto__||Object.getPrototypeOf(u)).call(this,s.componentNames.FREE_DRAWING,e));return t.width=12,t.oColor=new r.default.Color("rgba(0, 0, 0, 0.5)"),t}t.default=c},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=function(e,t,n){return t&&o(e.prototype,t),n&&o(e,n),e};function o(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}var r=u(n(5)),a=u(n(2)),s=u(n(7)),l=u(n(151)),c=n(0);function u(e){return e&&e.__esModule?e:{default:e}}var d=(function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(h,s.default),i(h,[{key:"setHeadOption",value:function(e){var t=e.arrowType,n=void 0===t?{head:null,tail:null}:t;this._arrowType=n}},{key:"start",value:function(e){var t=0<arguments.length&&void 0!==e?e:{},n=this.getCanvas();n.defaultCursor="crosshair",n.selection=!1,this.setHeadOption(t),this.setBrush(t),n.forEachObject(function(e){e.set({evented:!1})}),n.on({"mouse:down":this._listeners.mousedown})}},{key:"setBrush",value:function(e){var t=this.getCanvas().freeDrawingBrush;e=e||{},this._width=e.width||this._width,e.color&&(this._oColor=new r.default.Color(e.color)),t.width=this._width,t.color=this._oColor.toRgba()}},{key:"end",value:function(){var e=this.getCanvas();e.defaultCursor="default",e.selection=!0,e.forEachObject(function(e){e.set({evented:!0})}),e.off("mouse:down",this._listeners.mousedown)}},{key:"_onFabricMouseDown",value:function(e){var t=this.getCanvas(),n=t.getPointer(e.e),i=n.x,o=n.y,r=[i,o,i,o];this._line=new l.default(r,{stroke:this._oColor.toRgba(),strokeWidth:this._width,arrowType:this._arrowType,evented:!1}),this._line.set(c.fObjectOptions.SELECTION_STYLE),t.add(this._line),t.on({"mouse:move":this._listeners.mousemove,"mouse:up":this._listeners.mouseup}),this.fire(c.eventNames.ADD_OBJECT,this._createLineEventObjectProperties())}},{key:"_onFabricMouseMove",value:function(e){var t=this.getCanvas(),n=t.getPointer(e.e);this._line.set({x2:n.x,y2:n.y}),this._line.setCoords(),t.renderAll()}},{key:"_onFabricMouseUp",value:function(){var e=this.getCanvas();this.fire(c.eventNames.OBJECT_ADDED,this._createLineEventObjectProperties()),this._line=null,e.off({"mouse:move":this._listeners.mousemove,"mouse:up":this._listeners.mouseup})}},{key:"_createLineEventObjectProperties",value:function(){var e=this.graphics.createObjectProperties(this._line),t=this._line,n=t.x1,i=t.x2,o=t.y1,r=t.y2;return a.default.extend({},e,{startPosition:{x:n,y:o},endPosition:{x:i,y:r}})}}]),h);function h(e){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,h);var t=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,(h.__proto__||Object.getPrototypeOf(h)).call(this,c.componentNames.LINE,e));return t._width=12,t._oColor=new r.default.Color("rgba(0, 0, 0, 0.5)"),t._listeners={mousedown:t._onFabricMouseDown.bind(t),mousemove:t._onFabricMouseMove.bind(t),mouseup:t._onFabricMouseUp.bind(t)},t}t.default=d},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i,o=n(5),r=(i=o)&&i.__esModule?i:{default:i};var a=r.default.util.createClass(r.default.Line,{type:"line",initialize:function(e,t){var n=1<arguments.length&&void 0!==t?t:{};this.callSuper("initialize",e,n),this.arrowType=n.arrowType},_render:function(e){var t=this.calcLinePoints(),n={fromX:t.x1,fromY:t.y1,toX:t.x2,toY:t.y2};(this.ctx=e).lineWidth=this.strokeWidth,this._renderBasicLinePath(n),this._drawDecoratorPath(n),this._renderStroke(e)},_renderBasicLinePath:function(e){var t=e.fromX,n=e.fromY,i=e.toX,o=e.toY;this.ctx.beginPath(),this.ctx.moveTo(t,n),this.ctx.lineTo(i,o)},_drawDecoratorPath:function(e){this._drawDecoratorPathType("head",e),this._drawDecoratorPathType("tail",e)},_drawDecoratorPathType:function(e,t){switch(this.arrowType[e]){case"triangle":this._drawTrianglePath(e,t);break;case"chevron":this._drawChevronPath(e,t)}},_drawTrianglePath:function(e,t){var n=1.7*this.ctx.lineWidth;this._drawChevronPath(e,t,n),this.ctx.closePath()},_drawChevronPath:function(e,t,n){var i=this,o=t.fromX,r=t.fromY,a=t.toX,s=t.toY,l=this.ctx;n=n||2.7*this.ctx.lineWidth;function c(e){return i.getRotatePosition(n,e,{x:d,y:h})}var u="head"===e?[o,r]:[a,s],d=u[0],h=u[1],f="head"===e?[a,s]:[o,r],v=f[0],p=f[1],g=180*Math.atan2(p-h,v-d)/Math.PI;l.moveTo.apply(l,c(30+g)),l.lineTo(d,h),l.lineTo.apply(l,c(g-30))},getRotatePosition:function(e,t,n){var i=t*Math.PI/180,o=n.x,r=n.y;return[e*Math.cos(i)+o,e*Math.sin(i)+r]}});t.default=a},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=function(e,t,n){return t&&o(e.prototype,t),n&&o(e,n),e};function o(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}var l=a(n(5)),c=a(n(2)),r=a(n(7)),u=n(0),d=n(1);function a(e){return e&&e.__esModule?e:{default:e}}var s={fill:"#000000",left:0,top:0},h={fill:"#000000",fontStyle:"normal",fontWeight:"normal",textAlign:"left",underline:!1},f=(function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(v,r.default),i(v,[{key:"start",value:function(){var t=this,e=this.getCanvas();e.selection=!1,e.defaultCursor="text",e.on({"mouse:down":this._listeners.mousedown,"object:selected":this._listeners.select,"before:selection:cleared":this._listeners.selectClear,"object:scaling":this._listeners.scaling,"text:editing":this._listeners.modify}),e.forEachObject(function(e){"i-text"===e.type&&t.adjustOriginPosition(e,"start")}),this.setCanvasRatio()}},{key:"end",value:function(){var t=this,n=this.getCanvas();n.selection=!0,n.defaultCursor="default",n.forEachObject(function(e){"i-text"===e.type&&(""===e.text?n.remove(e):t.adjustOriginPosition(e,"end"))}),n.off({"mouse:down":this._listeners.mousedown,"object:selected":this._listeners.select,"before:selection:cleared":this._listeners.selectClear,"object:scaling":this._listeners.scaling,"text:editing":this._listeners.modify})}},{key:"adjustOriginPosition",value:function(e,t){var n="center",i="center";"start"===t&&(n="left",i="top");var o=e.getPointByOrigin(n,i),r=o.x,a=o.y;e.set({left:r,top:a,originX:n,originY:i}),e.setCoords()}},{key:"add",value:function(r,a){var s=this;return new d.Promise(function(e){var t=s.getCanvas(),n=null,i=u.fObjectOptions.SELECTION_STYLE,o=s._defaultStyles;s._setInitPos(a.position),a.styles&&(o=c.default.extend(o,a.styles)),c.default.isExisty(a.autofocus)||(a.autofocus=!0),n=new l.default.IText(r,o),i=c.default.extend({},i,{originX:"left",originY:"top"}),n.set(i),n.on({mouseup:s._onFabricMouseUp.bind(s)}),t.add(n),a.autofocus&&(n.enterEditing(),n.selectAll()),t.getActiveObject()||t.setActiveObject(n),s.isPrevEditing=!0,e(s.graphics.createObjectProperties(n))})}},{key:"change",value:function(t,n){var i=this;return new d.Promise(function(e){t.set("text",n),i.getCanvas().renderAll(),e()})}},{key:"setStyle",value:function(n,i){var t=this;return new d.Promise(function(e){c.default.forEach(i,function(e,t){n[t]===e&&"fontSize"!==t&&(i[t]=h[t]||"")},t),"textDecoration"in i&&c.default.extend(i,t._getTextDecorationAdaptObject(i.textDecoration)),n.set(i),t.getCanvas().renderAll(),e()})}},{key:"getText",value:function(e){return e.text}},{key:"setSelectedInfo",value:function(e,t){this._selectedObj=e,this._isSelected=t}},{key:"isSelected",value:function(){return this._isSelected}},{key:"getSelectedObj",value:function(){return this._selectedObj}},{key:"setCanvasRatio",value:function(){var e=this.getCanvasElement(),t=parseInt(e.style.maxWidth,10),n=e.width/t;this._ratio=n}},{key:"getCanvasRatio",value:function(){return this._ratio}},{key:"_getTextDecorationAdaptObject",value:function(e){return{underline:"underline"===e,linetrought:"line-through"===e,overline:"overline"===e}}},{key:"_setInitPos",value:function(e){e=e||this.getCanvasImage().getCenterPoint(),this._defaultStyles.left=e.x,this._defaultStyles.top=e.y}},{key:"_onInput",value:function(){var e=this.getCanvasRatio(),t=this._editingObj,n=this._textarea.style;n.width=Math.ceil(t.width/e)+"px",n.height=Math.ceil(t.height/e)+"px"}},{key:"_onKeyDown",value:function(){var e=this,t=this.getCanvasRatio(),n=this._editingObj,i=this._textarea.style;setTimeout(function(){n.text(e._textarea.value),i.width=Math.ceil(n.width/t)+"px",i.height=Math.ceil(n.height/t)+"px"},0)}},{key:"_onBlur",value:function(){var e=this.getCanvasRatio(),t=this._editingObj,n=this._editingObjInfos,i=this._textarea.value,o=t.width/e-n.width/e,r=t.height/e-n.height/e;if(1===e&&(o/=2,r/=2),this._textarea.style.display="none",t.set({left:n.left+o,top:n.top+r}),i.length){this.getCanvas().add(t);var a={id:c.default.stamp(t),type:t.type,text:i};this.fire(u.eventNames.TEXT_CHANGED,a)}}},{key:"_onScroll",value:function(){this._textarea.scrollLeft=0,this._textarea.scrollTop=0}},{key:"_onFabricScaling",value:function(e){var t=e.target,n=t.fontSize*t.scaleY;t.fontSize=n,t.scaleX=1,t.scaleY=1}},{key:"_onFabricSelectClear",value:function(e){var t=this.getSelectedObj();this.isPrevEditing=!0,this.setSelectedInfo(e.target,!1),t&&""===t.text&&this.getCanvas().remove(t)}},{key:"_onFabricSelect",value:function(e){this.isPrevEditing=!0,this.setSelectedInfo(e.target,!0)}},{key:"_onFabricMouseDown",value:function(e){var t=e.target;t&&!t.isType("text")||(this.isPrevEditing?this.isPrevEditing=!1:this._fireAddText(e))}},{key:"_fireAddText",value:function(e){var t=e.target,n=e.e||{},i=this.getCanvas().getPointer(n);t||this.fire(u.eventNames.ADD_TEXT,{originPosition:{x:i.x,y:i.y},clientPosition:{x:n.clientX||0,y:n.clientY||0}})}},{key:"_onFabricMouseUp",value:function(e){var t=e.target,n=(new Date).getTime();this._isDoubleClick(n)&&!t.isEditing&&t.enterEditing(),t.isEditing&&this.fire(u.eventNames.TEXT_EDITING),this._lastClickTime=n}},{key:"_isDoubleClick",value:function(e){return e-this._lastClickTime<500}}]),v);function v(e){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,v);var t=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,(v.__proto__||Object.getPrototypeOf(v)).call(this,u.componentNames.TEXT,e));return t._defaultStyles=s,t._isSelected=!1,t._selectedObj={},t._editingObj={},t._listeners={mousedown:t._onFabricMouseDown.bind(t),select:t._onFabricSelect.bind(t),selectClear:t._onFabricSelectClear.bind(t),scaling:t._onFabricScaling.bind(t)},t._textarea=null,t._ratio=1,t._lastClickTime=(new Date).getTime(),t._editingObjInfos={},t.isPrevEditing=!1,t}t.default=f},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=function(e,t,n){return t&&o(e.prototype,t),n&&o(e,n),e};function o(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}var r=l(n(5)),d=l(n(2)),a=n(1),s=l(n(7)),h=n(0);function l(e){return e&&e.__esModule?e:{default:e}}var c={arrow:"M 0 90 H 105 V 120 L 160 60 L 105 0 V 30 H 0 Z",cancel:"M 0 30 L 30 60 L 0 90 L 30 120 L 60 90 L 90 120 L 120 90 L 90 60 L 120 30 L 90 0 L 60 30 L 30 0 Z"},u=(function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(f,s.default),i(f,[{key:"add",value:function(l,c){var u=this;return new a.Promise(function(e,t){var n=u.getCanvas(),i=u._pathMap[l],o=h.fObjectOptions.SELECTION_STYLE,r=0<=Object.keys(h.defaultIconPath).indexOf(l),a=u.useDragAddIcon&&r,s=i?u._createIcon(i):null;s||t(h.rejectMessages.invalidParameters),s.set(d.default.extend({type:"icon",fill:u._oColor},o,c,u.graphics.controlStyle)),n.add(s).setActiveObject(s),a&&u._addWithDragEvent(n),e(u.graphics.createObjectProperties(s))})}},{key:"_addWithDragEvent",value:function(t){var n=this;t.on({"mouse:move":function(e){t.selection=!1,n.fire(h.eventNames.ICON_CREATE_RESIZE,{moveOriginPointer:t.getPointer(e.e)})},"mouse:up":function(e){n.fire(h.eventNames.ICON_CREATE_END,{moveOriginPointer:t.getPointer(e.e)}),t.defaultCursor="default",t.off("mouse:up"),t.off("mouse:move"),t.selection=!0}})}},{key:"registerPaths",value:function(e){var n=this;d.default.forEach(e,function(e,t){n._pathMap[t]=e},this)}},{key:"setColor",value:function(e,t){this._oColor=e,t&&"icon"===t.get("type")&&(t.set({fill:this._oColor}),this.getCanvas().renderAll())}},{key:"getColor",value:function(e){return e.fill}},{key:"_createIcon",value:function(e){return new r.default.Path(e)}}]),f);function f(e){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,f);var t=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,(f.__proto__||Object.getPrototypeOf(f)).call(this,h.componentNames.ICON,e));return t._oColor="#000000",t._pathMap=c,t.useDragAddIcon=e.useDragAddIcon,t}t.default=u},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=function(e,t,n){return t&&o(e.prototype,t),n&&o(e,n),e};function o(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}var r=n(2),l=n(1),a=v(n(5)),s=v(n(7)),c=v(n(155)),u=n(0),d=v(n(156)),h=v(n(157)),f=v(n(158));function v(e){return e&&e.__esModule?e:{default:e}}var p=a.default.Image.filters;p.Mask=c.default,p.Sharpen=d.default,p.Emboss=h.default,p.ColorFilter=f.default;var g=(function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(m,s.default),i(m,[{key:"add",value:function(r,a){var s=this;return new l.Promise(function(e,t){var n=s._getSourceImage(),i=s.getCanvas(),o=s._getFilter(n,r);(o=o||s._createFilter(n,r,a))||t(u.rejectMessages.invalidParameters),s._changeFilterValues(o,a),s._apply(n,function(){i.renderAll(),e({type:r,action:"add",options:a})})})}},{key:"remove",value:function(r){var a=this;return new l.Promise(function(e,t){var n=a._getSourceImage(),i=a.getCanvas(),o=a.getOptions(r);n.filters.length||t(u.rejectMessages.unsupportedOperation),a._removeFilter(n,r),a._apply(n,function(){i.renderAll(),e({type:r,action:"remove",options:o})})})}},{key:"hasFilter",value:function(e){return!!this._getFilter(this._getSourceImage(),e)}},{key:"getOptions",value:function(e){var t=this._getSourceImage(),n=this._getFilter(t,e);return n?(0,r.extend)({},n.options):null}},{key:"_changeFilterValues",value:function(n,i){(0,r.forEach)(i,function(e,t){(0,r.isUndefined)(n[t])||(n[t]=e)}),(0,r.forEach)(n.options,function(e,t){(0,r.isUndefined)(i[t])||(n.options[t]=i[t])})}},{key:"_apply",value:function(e,t){e.filters.push(),e.applyFilters()&&t()}},{key:"_getSourceImage",value:function(){return this.getCanvasImage()}},{key:"_createFilter",value:function(e,t,n){var i=void 0,o=this._getFabricFilterType(t),r=a.default.Image.filters[o];return r&&((i=new r(n)).options=n,e.filters.push(i)),i}},{key:"_getFilter",value:function(e,t){var n=null;if(e){var i=this._getFabricFilterType(t),o=e.filters.length,r=void 0,a=void 0;for(a=0;a<o;a+=1)if((r=e.filters[a]).type===i){n=r;break}}return n}},{key:"_removeFilter",value:function(e,t){var n=this._getFabricFilterType(t);e.filters=(0,r.filter)(e.filters,function(e){return e.type!==n})}},{key:"_getFabricFilterType",value:function(e){return e.charAt(0).toUpperCase()+e.slice(1)}}]),m);function m(e){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,m),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,(m.__proto__||Object.getPrototypeOf(m)).call(this,u.componentNames.FILTER,e))}t.default=g},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i,o=n(5),r=(i=o)&&i.__esModule?i:{default:i};var a=r.default.util.createClass(r.default.Image.filters.BlendImage,{applyTo:function(e){if(this.mask){var t=e.canvasEl,n=t.width,i=t.height,o=this._createCanvasOfMask(n,i),r=t.getContext("2d"),a=o.getContext("2d"),s=r.getImageData(0,0,n,i);this._drawMask(a,t,r),this._mapData(a,s,n,i),e.imageData=s}},_createCanvasOfMask:function(e,t){var n=r.default.util.createCanvasElement();return n.width=e,n.height=t,n},_drawMask:function(e){var t=this.mask,n=t.getElement(),i=t.angle,o=t.left,r=t.scaleX,a=t.scaleY,s=t.top;e.save(),e.translate(o,s),e.rotate(i*Math.PI/180),e.scale(r,a),e.drawImage(n,-n.width/2,-n.height/2),e.restore()},_mapData:function(e,t,n,i){for(var o=t.data,r=t.height,a=o,s=t.width*r*4,l=e.getImageData(0,0,n,i).data,c=0;c<s;c+=4)a[c+3]=l[c]}});t.default=a},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i,o=n(5),r=(i=o)&&i.__esModule?i:{default:i};var a=r.default.util.createClass(r.default.Image.filters.Convolute,{type:"Sharpen",initialize:function(){this.matrix=[0,-1,0,-1,5,-1,0,-1,0]}});t.default=a},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i,o=n(5),r=(i=o)&&i.__esModule?i:{default:i};var a=r.default.util.createClass(r.default.Image.filters.Convolute,{type:"Emboss",initialize:function(){this.matrix=[1,1,1,1,.7,-1,-1,-1,-1]}});t.default=a},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i,o=n(5),c=(i=o)&&i.__esModule?i:{default:i};var r=c.default.util.createClass(c.default.Image.filters.BaseFilter,{type:"ColorFilter",initialize:function(e){e=e||{},this.color=e.color||"#FFFFFF",this.threshold=e.threshold||45,this.x=e.x||null,this.y=e.y||null},applyTo:function(e){var t,n=e.canvasEl,i=n.getContext("2d"),o=i.getImageData(0,0,n.width,n.height),r=o.data,a=this.threshold,s=c.default.Color.sourceFromHex(this.color),l=void 0;for(this.x&&this.y&&(s=this._getColor(o,this.x,this.y)),l=0,t=r.length;l<t;l+=4)this._isOutsideThreshold(r[l],s[0],a)||this._isOutsideThreshold(r[l+1],s[1],a)||this._isOutsideThreshold(r[l+2],s[2],a)||(r[l]=r[l+1]=r[l+2]=r[l+3]=0);i.putImageData(o,0,0)},_isOutsideThreshold:function(e,t,n){var i=e-t;return Math.abs(i)>n},_getColor:function(e,t,n){var i=[0,0,0,0],o=e.data,r=4*(e.width*n+t);return i[0]=o[r],i[1]=o[1+r],i[2]=o[2+r],i[3]=o[3+r],i}});t.default=r},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=function(e,t,n){return t&&o(e.prototype,t),n&&o(e,n),e};function o(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}var r=s(n(5)),a=s(n(7)),c=n(0),u=s(n(67)),l=n(160),d=n(1),h=n(2);function s(e){return e&&e.__esModule?e:{default:e}}var f=(0,h.extend)({strokeWidth:1,stroke:"#000000",fill:"#ffffff",width:1,height:1,rx:0,ry:0},c.SHAPE_DEFAULT_OPTIONS);function v(e,t,n){var i=e.fill,o=(0,d.getFillTypeFromOption)(e.fill),r=i;i.color&&(r=i.color);var a=null;if("filter"===o){var s=n();a=(0,l.makeFillPatternForFilter)(t,i.filter,s)}else a={fill:r};return(0,h.extend)({},e,a)}var p=(function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(g,a.default),i(g,[{key:"start",value:function(){var e=this.getCanvas();this._isSelected=!1,e.defaultCursor="crosshair",e.selection=!1,e.uniScaleTransform=!0,e.on({"mouse:down":this._handlers.mousedown}),r.default.util.addListener(document,"keydown",this._handlers.keydown),r.default.util.addListener(document,"keyup",this._handlers.keyup)}},{key:"end",value:function(){var e=this.getCanvas();this._isSelected=!1,e.defaultCursor="default",e.selection=!0,e.uniScaleTransform=!1,e.off({"mouse:down":this._handlers.mousedown}),r.default.util.removeListener(document,"keydown",this._handlers.keydown),r.default.util.removeListener(document,"keyup",this._handlers.keyup)}},{key:"setStates",value:function(e,t){this._type=e,t&&(this._options=(0,h.extend)(this._options,t))}},{key:"add",value:function(r,a){var s=this;return new d.Promise(function(e){var t=s.getCanvas(),n=s._extendOptions(a),i=s._createInstance(r,n),o=s.graphics.createObjectProperties(i);s._bindEventOnShape(i),t.add(i).setActiveObject(i),s._resetPositionFillFilter(i),e(o)})}},{key:"change",value:function(a,s){var l=this;return new d.Promise(function(e,t){(0,d.isShape)(a)||t(c.rejectMessages.unsupportedType);var n="filter"===(0,d.getFillTypeFromOption)(s.fill),i=l.graphics,o=i.canvasImage,r=i.createStaticCanvas;a.set(n?v(s,o,r):s),n&&l._resetPositionFillFilter(a),l.getCanvas().renderAll(),e()})}},{key:"makeFillPropertyForUserEvent",value:function(e){var t=(0,d.getFillTypeFromObject)(e),n={};if(t===c.SHAPE_FILL_TYPE.FILTER){var i=(0,l.getFillImageFromShape)(e),o=(0,l.makeFilterOptionFromFabricImage)(i);n.type=t,n.filter=o}else n.type=c.SHAPE_FILL_TYPE.COLOR,n.color=e.fill||"transparent";return n}},{key:"processForCopiedObject",value:function(e,t){if(this._bindEventOnShape(e),"filter"===(0,d.getFillTypeFromObject)(e)){var n=(0,l.getFillImageFromShape)(t),i=(0,l.makeFilterOptionFromFabricImage)(n),o=this.graphics.createStaticCanvas();e.set((0,l.makeFillPatternForFilter)(this.graphics.canvasImage,i,o)),this._resetPositionFillFilter(e)}}},{key:"_createInstance",value:function(e,t){var n=void 0;switch(e){case"rect":n=new r.default.Rect(t);break;case"circle":n=new r.default.Ellipse((0,h.extend)({type:"circle"},t));break;case"triangle":n=new r.default.Triangle(t);break;default:n={}}return n}},{key:"_extendOptions",value:function(e){var t=c.fObjectOptions.SELECTION_STYLE,n=this.graphics,i=n.canvasImage,o=n.createStaticCanvas;return(e=(0,h.extend)({},f,this._options,t,e)).isRegular&&(e.lockUniScaling=!0),v(e,i,o)}},{key:"_bindEventOnShape",value:function(t){var i=this,o=this.getCanvas();t.on({added:function(){i._shapeObj=this,u.default.setOrigins(i._shapeObj)},selected:function(){i._isSelected=!0,i._shapeObj=this,o.uniScaleTransform=!0,o.defaultCursor="default",u.default.setOrigins(i._shapeObj)},deselected:function(){i._isSelected=!1,i._shapeObj=null,o.defaultCursor="crosshair",o.uniScaleTransform=!1},modified:function(){var e=i._shapeObj;u.default.adjustOriginToCenter(e),u.default.setOrigins(e)},modifiedInGroup:function(e){i._fillFilterRePositionInGroupSelection(t,e)},moving:function(){i._resetPositionFillFilter(this)},rotating:function(){i._resetPositionFillFilter(this)},scaling:function(e){var t=o.getPointer(e.e),n=i._shapeObj;o.setCursor("crosshair"),u.default.resize(n,t,!0),i._resetPositionFillFilter(this)}})}},{key:"_onFabricMouseDown",value:function(e){if(e.target||(this._isSelected=!1,this._shapeObj=!1),!this._isSelected&&!this._shapeObj){var t=this.getCanvas();this._startPoint=t.getPointer(e.e),t.on({"mouse:move":this._handlers.mousemove,"mouse:up":this._handlers.mouseup})}}},{key:"_onFabricMouseMove",value:function(e){var t=this,n=this.getCanvas(),i=n.getPointer(e.e),o=this._startPoint.x,r=this._startPoint.y,a=o-i.x,s=r-i.y,l=this._shapeObj;l?(this._shapeObj.set({isRegular:this._withShiftKey}),u.default.resize(l,i),n.renderAll(),this._resetPositionFillFilter(l)):this.add(this._type,{left:o,top:r,width:a,height:s}).then(function(e){t.fire(c.eventNames.ADD_OBJECT,e)})}},{key:"_onFabricMouseUp",value:function(){var t=this,e=this.getCanvas(),n=this._startPoint.x,i=this._startPoint.y,o=this._shapeObj;o?o&&(u.default.adjustOriginToCenter(o),this.fire(c.eventNames.OBJECT_ADDED,this.graphics.createObjectProperties(o))):this.add(this._type,{left:n,top:i,width:20,height:20}).then(function(e){t.fire(c.eventNames.ADD_OBJECT,e)}),e.off({"mouse:move":this._handlers.mousemove,"mouse:up":this._handlers.mouseup})}},{key:"_onKeyDown",value:function(e){e.keyCode===c.keyCodes.SHIFT&&(this._withShiftKey=!0,this._shapeObj&&(this._shapeObj.isRegular=!0))}},{key:"_onKeyUp",value:function(e){e.keyCode===c.keyCodes.SHIFT&&(this._withShiftKey=!1,this._shapeObj&&(this._shapeObj.isRegular=!1))}},{key:"_resetPositionFillFilter",value:function(e){if("filter"===(0,d.getFillTypeFromObject)(e)){var t=(0,l.getFillImageFromShape)(e),n=(0,d.getCustomProperty)(t,"originalAngle").originalAngle;this.graphics.canvasImage.angle!==n&&(0,l.reMakePatternImageSource)(e,this.graphics.canvasImage);var i=e.originX,o=e.originY;u.default.adjustOriginToCenter(e),e.width*=e.scaleX,e.height*=e.scaleY,e.rx*=e.scaleX,e.ry*=e.scaleY,e.scaleX=1,e.scaleY=1,(0,l.rePositionFilterTypeFillImage)(e),(0,d.changeOrigin)(e,{originX:i,originY:o})}}},{key:"_fillFilterRePositionInGroupSelection",value:function(e,t){1===t.scaleX&&1===t.scaleY||t.addWithUpdate();var n=e.angle,i=e.left,o=e.top;t.realizeTransform(e),this._resetPositionFillFilter(e),e.set({angle:n,left:i,top:o})}}]),g);function g(e){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,g);var t=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,(g.__proto__||Object.getPrototypeOf(g)).call(this,c.componentNames.SHAPE,e));return t._shapeObj=null,t._type="rect",t._options=(0,h.extend)({},f),t._isSelected=!1,t._startPoint={},t._withShiftKey=!1,t._handlers={mousedown:t._onFabricMouseDown.bind(t),mousemove:t._onFabricMouseMove.bind(t),mouseup:t._onFabricMouseUp.bind(t),keydown:t._onKeyDown.bind(t),keyup:t._onKeyUp.bind(t)},t}t.default=p},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getFillImageFromShape=y,t.rePositionFilterTypeFillImage=function(e){var t=e.angle,n=e.flipX,i=e.flipY,o=y(e),r=function(e){var t=w(e),n=t[0],i=n.x,o=n.y,r=t[1],a=r.x,s=r.y,l=t[2],c=l.x,u=l.y,d=t[3],h=d.x,f=d.y,v=Math.min(i,a,c,h),p=Math.min(o,s,u,f),g=Math.max(i,a,c,h),m=Math.max(o,s,u,f);return{left:v,top:p,right:g,bottom:m,width:g-v,height:m-p}}(e),a=r.right,s=r.bottom,l=r.width,c=r.height,u=(l-e.width)/2,d=(c-e.height)/2,h=e.left-e.width/2-u,f=e.top-e.height/2-d,v=l/2-u,p=c/2-d,g=Math.max(l,c)+Math.max(u,d),m=function(e){function t(e,t,n,i){return r=(o={type:e,outDistance:t,shapeObj:m,flipX:b,flipY:y,left:n,top:i}).type,a=o.shapeObj,s=o.outDistance,l=o.left,c=o.top,u=o.flipX,d=o.flipY,h=w(a),f=function(n,e,t){var i=0,o=0;(0,_.forEach)(e,function(e,t){e[n]<i&&(i=e[n],o=t)});var r=t[o],a=r[0],s=r[1];return{startPointIndex:o,endPointIndex1:a,endPointIndex2:s}}(r,h,[[1,2],[0,3],[0,3],[1,2]]),v=function(e,r,t){var a=t.startPointIndex,n=t.endPointIndex1,i=t.endPointIndex2,s="x"===e?180:270;return(0,_.map)([n,i],function(e){var t=r[a],n=r[e],i=t.y-n.y,o=t.x-n.x;return 180*Math.atan2(i,o)/Math.PI-s})}(r,h,f),p=f.startPointIndex,g=function(e){var t=e.outDistance,n=e.startPointIndex,i=e.flipX,o=e.flipY,r=e.reatAngles,a=t*Math.cos(r[0]*Math.PI/180),s=t*Math.cos(r[1]*Math.PI/180),l=2===n||3===n,c={top:l?a:s,left:l?s:a};!function(e,t,n){return(!t&&n||!t&&!n)&&0===e||(t&&n||t&&!n)&&1===e||(!t&&!n||!t&&n)&&2===e||(t&&!n||t&&n)&&3===e}(n,i,o)||(c.left=-1*c.left);!function(e,t,n){return(t&&!n||!t&&!n)&&0===e||(!t&&!n||t&&!n)&&1===e||(t&&n||!t&&n)&&2===e||(!t&&n||t&&n)&&3===e}(n,i,o)||(c.top=-1*c.top);return c}({outDistance:s,startPointIndex:p,flipX:u,flipY:d,reatAngles:v}),[l+g.left,c+g.top];var o,r,a,s,l,c,u,d,h,f,v,p,g}var m=e.shapeObj,n=e.left,i=e.top,o=e.width,r=e.height,a=e.cropX,s=e.cropY,b=e.flipX,y=e.flipY,l=e.right,c=e.bottom,u=o,d=r,h=function(s,e){var l=e.left,c=e.top,t=e.width,n=e.height,u=e.cropX,d=e.cropY,h={width:t,height:n};return(0,_.forEach)(["x","y"],function(e){var t="x"===e?u:d,n=h[k[e]],i=E[k[e]];if(i<n){var o=(n-i)/2;h[k[e]]=i;var r=s(e,o,l,c);l=r[0],c=r[1]}if(t<0){var a=s(e,t,l,c);l=a[0],c=a[1]}}),[l,c,h.width,h.height]}(t,{left:n,top:i,width:o,height:r,cropX:a,cropY:s});n=h[0],i=h[1],o=h[2],r=h[3];var f=function(i,e){var o=e.left,r=e.top,t=e.insideCanvasRealImageWidth,n=e.insideCanvasRealImageHeight,a=e.right,s=e.bottom,l=e.cropX,c=e.cropY,u=e.originalWidth,d=e.originalHeight,h=t,f=n,v=E.width,p=E.height;v<a&&0<l&&(h=u-Math.abs(a-v));p<s&&0<c&&(f=d-Math.abs(s-p));var g={x:(t-h)/2,y:(n-f)/2};return(0,_.forEach)(["x","y"],function(e){var t=g[e];if(0<t){var n=i(e,t,o,r);o=n[0],r=n[1]}}),[o,r,h,f]}(t,{left:n,top:i,insideCanvasRealImageWidth:o,insideCanvasRealImageHeight:r,right:l,bottom:c,cropX:a,cropY:s,originalWidth:u,originalHeight:d});return n=f[0],i=f[1],o=f[2],r=f[3],[n,i,o,r]}({shapeObj:e,left:v,top:p,width:l,height:c,cropX:h,cropY:f,flipX:n,flipY:i,right:a,bottom:s});v=m[0],p=m[1],l=m[2],c=m[3],o.set({angle:n===i?-t:t,left:v,top:p,width:l,height:c,cropX:h,cropY:f,flipX:n,flipY:i}),(0,b.setCustomProperty)(o,{fillImageMaxSize:g})},t.makeFilterOptionFromFabricImage=c,t.makeFillPatternForFilter=function(e,t,n){var i=d(u(e),e.angle,t);n.add(i);var o={fill:new fabric.Pattern({source:function(){var e=n.getObjects()[0],t=(0,b.getCustomProperty)(e,"fillImageMaxSize").fillImageMaxSize;return t=Math.max(1,t),n.setDimensions({width:t,height:t}),n.renderAll(),n.getElement()},repeat:"no-repeat"})};return(0,b.setCustomProperty)(o,{patternSourceCanvas:n}),o},t.reMakePatternImageSource=function(e,t){var n=(0,b.getCustomProperty)(e,"patternSourceCanvas").patternSourceCanvas,i=n.getObjects()[0],o=c(i);n.remove(i);var r=d(u(t,!0),t.angle,o);n.add(r)},t.getCachedCanvasImageElement=u;var i,_=n(2),b=n(1),o=n(67),r=(i=o)&&i.__esModule?i:{default:i};function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var s={pixelate:"blocksize",blur:"blur"},k={x:"width",y:"height"},l=(0,b.flipObject)(s),E=null;function y(e){return(0,b.getCustomProperty)(e,"patternSourceCanvas").patternSourceCanvas.getObjects()[0]}function c(e){return(0,_.map)(e.filters,function(e){var t=Object.keys(e)[0];return a({},l[t],e[t])})}function u(e){return E&&!(1<arguments.length&&void 0!==arguments[1]&&arguments[1])||(E=e.toCanvasElement()),E}function w(e){return[e.getPointByOrigin("left","top"),e.getPointByOrigin("right","top"),e.getPointByOrigin("left","bottom"),e.getPointByOrigin("right","bottom")]}function d(e,t,n){var o=new fabric.Image(e);return(0,_.forEach)(_.extend.apply(void 0,[{}].concat(n)),function(e,t){var n=(0,b.capitalizeString)(t),i=new fabric.Image.filters[n](a({},s[t],e));o.filters.push(i)}),o.applyFilters(),(0,b.setCustomProperty)(o,{originalAngle:t,fillImageMaxSize:Math.max(o.width,o.height)}),r.default.adjustOriginToCenter(o),o}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=function(e,t,n){return t&&o(e.prototype,t),n&&o(e,n),e};function o(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}var r,a=n(25),s=(r=a)&&r.__esModule?r:{default:r},l=n(0);var c=(function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(u,s.default),i(u,[{key:"start",value:function(e){e.getComponent(l.componentNames.CROPPER).start()}},{key:"end",value:function(e){e.getComponent(l.componentNames.CROPPER).end()}}]),u);function u(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,u),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,(u.__proto__||Object.getPrototypeOf(u)).call(this,l.drawingModes.CROPPER))}t.default=c},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=function(e,t,n){return t&&o(e.prototype,t),n&&o(e,n),e};function o(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}var r,a=n(25),s=(r=a)&&r.__esModule?r:{default:r},l=n(0);var c=(function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(u,s.default),i(u,[{key:"start",value:function(e,t){e.getComponent(l.componentNames.FREE_DRAWING).start(t)}},{key:"end",value:function(e){e.getComponent(l.componentNames.FREE_DRAWING).end()}}]),u);function u(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,u),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,(u.__proto__||Object.getPrototypeOf(u)).call(this,l.drawingModes.FREE_DRAWING))}t.default=c},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=function(e,t,n){return t&&o(e.prototype,t),n&&o(e,n),e};function o(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}var r,a=n(25),s=(r=a)&&r.__esModule?r:{default:r},l=n(0);var c=(function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(u,s.default),i(u,[{key:"start",value:function(e,t){e.getComponent(l.componentNames.LINE).start(t)}},{key:"end",value:function(e){e.getComponent(l.componentNames.LINE).end()}}]),u);function u(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,u),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,(u.__proto__||Object.getPrototypeOf(u)).call(this,l.drawingModes.LINE_DRAWING))}t.default=c},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=function(e,t,n){return t&&o(e.prototype,t),n&&o(e,n),e};function o(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}var r,a=n(25),s=(r=a)&&r.__esModule?r:{default:r},l=n(0);var c=(function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(u,s.default),i(u,[{key:"start",value:function(e){e.getComponent(l.componentNames.SHAPE).start()}},{key:"end",value:function(e){e.getComponent(l.componentNames.SHAPE).end()}}]),u);function u(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,u),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,(u.__proto__||Object.getPrototypeOf(u)).call(this,l.drawingModes.SHAPE))}t.default=c},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=function(e,t,n){return t&&o(e.prototype,t),n&&o(e,n),e};function o(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}var r,a=n(25),s=(r=a)&&r.__esModule?r:{default:r},l=n(0);var c=(function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(u,s.default),i(u,[{key:"start",value:function(e){e.getComponent(l.componentNames.TEXT).start()}},{key:"end",value:function(e){e.getComponent(l.componentNames.TEXT).end()}}]),u);function u(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,u),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,(u.__proto__||Object.getPrototypeOf(u)).call(this,l.drawingModes.TEXT))}t.default=c},function(e,t,n){},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i,o=n(3),r=(i=o)&&i.__esModule?i:{default:i},a=n(1),s=n(0);var l=s.componentNames.ICON,c={name:s.commandNames.ADD_ICON,execute:function(t,e,n){var i=this;return t.getComponent(l).add(e,n).then(function(e){return i.undoData.object=t.getObject(e.id),e})},undo:function(e){return e.remove(this.undoData.object),a.Promise.resolve()}};r.default.register(c),t.default=c},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i,o=n(3),r=(i=o)&&i.__esModule?i:{default:i},a=n(1);var s={name:n(0).commandNames.ADD_IMAGE_OBJECT,execute:function(t,e){var n=this;return t.addImageObject(e).then(function(e){return n.undoData.object=t.getObject(e.id),e})},undo:function(e){return e.remove(this.undoData.object),a.Promise.resolve()}};r.default.register(s),t.default=s},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i,o=n(3),r=(i=o)&&i.__esModule?i:{default:i},a=n(1),s=n(0);var l={name:s.commandNames.ADD_OBJECT,execute:function(n,i){return new a.Promise(function(e,t){n.contains(i)?t(s.rejectMessages.addedObject):(n.add(i),e(i))})},undo:function(n,i){return new a.Promise(function(e,t){n.contains(i)?(n.remove(i),e(i)):t(s.rejectMessages.noObject)})}};r.default.register(l),t.default=l},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i,o=n(3),r=(i=o)&&i.__esModule?i:{default:i},a=n(1),s=n(0);var l=s.componentNames.SHAPE,c={name:s.commandNames.ADD_SHAPE,execute:function(t,e,n){var i=this;return t.getComponent(l).add(e,n).then(function(e){return i.undoData.object=t.getObject(e.id),e})},undo:function(e){return e.remove(this.undoData.object),a.Promise.resolve()}};r.default.register(c),t.default=c},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i,o=n(3),r=(i=o)&&i.__esModule?i:{default:i},a=n(1),s=n(0);var l=s.componentNames.TEXT,c={name:s.commandNames.ADD_TEXT,execute:function(i,e,t){var o=this,n=i.getComponent(l);if(this.undoData.object){var r=this.undoData.object;return new a.Promise(function(e,t){i.contains(r)?t(s.rejectMessages.redo):(i.add(r),e(r))})}return n.add(e,t).then(function(e){var t=e.id,n=i.getObject(t);return o.undoData.object=n,e})},undo:function(e){return e.remove(this.undoData.object),a.Promise.resolve()}};r.default.register(c),t.default=c},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var d=o(n(2)),i=o(n(3)),h=n(0);function o(e){return e&&e.__esModule?e:{default:e}}var f=h.componentNames.FILTER,v=null;var r={name:h.commandNames.APPLY_FILTER,execute:function(e,t,n,i){var o,r,a,s=e.getComponent(f);if("mask"===t){var l=e.getObject(n.maskObjId);if(!l||!l.isType("image"))return Promise.reject(h.rejectMessages.invalidParameters);d.default.extend(n,{mask:l}),e.remove(n.mask)}if(!this.isRedo){var c=s.getOptions(t),u=(o=c,r=n,a={},"mask"===t&&(a.object=r.mask),a.options=o,a);v=this.setUndoData(u,v,i)}return s.add(t,n)},undo:function(e,t){var n=e.getComponent(f);if("mask"!==t)return this.undoData.options?n.add(t,this.undoData.options):n.remove(t);var i=this.undoData.object;return e.add(i),e.setActiveObject(i),n.remove(t)}};i.default.register(r),t.default=r},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i,o=n(3),r=(i=o)&&i.__esModule?i:{default:i},l=n(1),c=n(0);var u=c.componentNames.ICON,a={name:c.commandNames.CHANGE_ICON_COLOR,execute:function(o,r,a){var s=this;return new l.Promise(function(e,t){var n=o.getComponent(u),i=o.getObject(r);i||t(c.rejectMessages.noObject),s.undoData.object=i,s.undoData.color=n.getColor(i),n.setColor(a,i),e()})},undo:function(e){var t=e.getComponent(u),n=this.undoData,i=n.object,o=n.color;return t.setColor(o,i),l.Promise.resolve()}};r.default.register(a),t.default=a},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var u=o(n(2)),d=n(1),i=o(n(3)),h=n(0);function o(e){return e&&e.__esModule?e:{default:e}}var f=h.componentNames.SHAPE,v=null;var r={name:h.commandNames.CHANGE_SHAPE,execute:function(e,t,n,i){var o,r,a,s=e.getComponent(f),l=e.getObject(t);if(!l)return d.Promise.reject(h.rejectMessages.noObject);if(!this.isRedo){var c=(o=n,a={object:r=l,options:{}},u.default.forEachOwnProperties(o,function(e,t){a.options[t]=r[t]}),a);v=this.setUndoData(c,v,i)}return s.change(l,n)},undo:function(e){var t=e.getComponent(f),n=this.undoData,i=n.object,o=n.options;return t.change(i,o)}};i.default.register(r),t.default=r},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i,o=n(3),r=(i=o)&&i.__esModule?i:{default:i},a=n(1),s=n(0);var l=s.componentNames.TEXT,c={name:s.commandNames.CHANGE_TEXT,execute:function(e,t,n){var i=e.getComponent(l),o=e.getObject(t);return o?(this.undoData.object=o,this.undoData.text=i.getText(o),i.change(o,n)):a.Promise.reject(s.rejectMessages.noObject)},undo:function(e){var t=e.getComponent(l),n=this.undoData,i=n.object,o=n.text;return t.change(i,o)}};r.default.register(c),t.default=c},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var u=o(n(2)),i=o(n(3)),d=n(1),h=n(0);function o(e){return e&&e.__esModule?e:{default:e}}var f=h.componentNames.TEXT,v=null;var r={name:h.commandNames.CHANGE_TEXT_STYLE,execute:function(e,t,n,i){var o,r,a,s=e.getComponent(f),l=e.getObject(t);if(!l)return d.Promise.reject(h.rejectMessages.noObject);if(!this.isRedo){var c=(o=n,a={object:r=l,styles:{}},u.default.forEachOwnProperties(o,function(e,t){var n=r[t];a.styles[t]=n}),a);v=this.setUndoData(c,v,i)}return s.setStyle(l,n)},undo:function(e){var t=e.getComponent(f),n=this.undoData,i=n.object,o=n.styles;return t.setStyle(i,o)}};i.default.register(r),t.default=r},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i,o=n(3),r=(i=o)&&i.__esModule?i:{default:i},a=n(1);var s={name:n(0).commandNames.CLEAR_OBJECTS,execute:function(t){var n=this;return new a.Promise(function(e){n.undoData.objects=t.removeAll(),e()})},undo:function(e){return e.add(this.undoData.objects),a.Promise.resolve()}};r.default.register(s),t.default=s},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i,o=n(3),r=(i=o)&&i.__esModule?i:{default:i},a=n(0);var s=a.componentNames.FLIP,l={name:a.commandNames.FLIP_IMAGE,execute:function(e,t){var n=e.getComponent(s);return this.undoData.setting=n.getCurrentSetting(),n[t]()},undo:function(e){return e.getComponent(s).set(this.undoData.setting)}};r.default.register(l),t.default=l},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i,o=n(3),r=(i=o)&&i.__esModule?i:{default:i},a=n(0);var l=a.componentNames.IMAGE_LOADER,s={name:a.commandNames.LOAD_IMAGE,execute:function(e,t,n){var i=e.getComponent(l),o=i.getCanvasImage(),r=o?o.width:0,a=o?o.height:0,s=e.removeAll(!0).filter(function(e){return"cropzone"!==e.type});return s.forEach(function(e){e.evented=!0}),this.undoData={name:i.getImageName(),image:o,objects:s},i.load(t,n).then(function(e){return{oldWidth:r,oldHeight:a,newWidth:e.width,newHeight:e.height}})},undo:function(e){var t=e.getComponent(l),n=this.undoData,i=n.objects,o=n.name,r=n.image;return e.removeAll(!0),e.add(i),t.load(o,r)}};r.default.register(s),t.default=s},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i,o=n(3),r=(i=o)&&i.__esModule?i:{default:i},a=n(0);var s=a.componentNames.FILTER,l={name:a.commandNames.REMOVE_FILTER,execute:function(e,t){var n=e.getComponent(s);return this.undoData.options=n.getOptions(t),n.remove(t)},undo:function(e,t){var n=e.getComponent(s),i=this.undoData.options;return n.add(t,i)}};r.default.register(l),t.default=l},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i,o=n(3),r=(i=o)&&i.__esModule?i:{default:i},a=n(1),s=n(0);var l={name:s.commandNames.REMOVE_OBJECT,execute:function(n,i){var o=this;return new a.Promise(function(e,t){o.undoData.objects=n.removeObjectById(i),o.undoData.objects.length?e():t(s.rejectMessages.noObject)})},undo:function(e){return e.add(this.undoData.objects),a.Promise.resolve()}};r.default.register(l),t.default=l},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i,o=n(3),r=(i=o)&&i.__esModule?i:{default:i},a=n(1);var s={name:n(0).commandNames.RESIZE_CANVAS_DIMENSION,execute:function(t,n){var i=this;return new a.Promise(function(e){i.undoData.size={width:t.cssMaxWidth,height:t.cssMaxHeight},t.setCssMaxDimension(n),t.adjustCanvasDimension(),e()})},undo:function(e){return e.setCssMaxDimension(this.undoData.size),e.adjustCanvasDimension(),a.Promise.resolve()}};r.default.register(s),t.default=s},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i,o=n(3),r=(i=o)&&i.__esModule?i:{default:i},a=n(0);var s=a.componentNames.ROTATION,l=null;var c={name:a.commandNames.ROTATE_IMAGE,execute:function(e,t,n,i){var o=e.getComponent(s);if(!this.isRedo){var r={angle:o.getCurrentAngle()};l=this.setUndoData(r,l,i)}return o[t](n)},undo:function(e){var t=e.getComponent(s),n=this.args,i=n[1],o=n[2];return"setAngle"===i?t[i](this.undoData.angle):t.rotate(-o)}};r.default.register(c),t.default=c},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=o(n(2)),i=o(n(3)),a=n(1),s=n(0);function o(e){return e&&e.__esModule?e:{default:e}}var l={name:s.commandNames.SET_OBJECT_PROPERTIES,execute:function(e,t,n){var i=this,o=e.getObject(t);return o?(this.undoData.props={},r.default.forEachOwnProperties(n,function(e,t){i.undoData.props[t]=o[t]}),e.setObjectProperties(t,n),a.Promise.resolve()):a.Promise.reject(s.rejectMessages.noObject)},undo:function(e,t){var n=this.undoData.props;return e.setObjectProperties(t,n),a.Promise.resolve()}};i.default.register(l),t.default=l},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i,o=n(3),r=(i=o)&&i.__esModule?i:{default:i},a=n(1),s=n(0);var l={name:s.commandNames.SET_OBJECT_POSITION,execute:function(e,t,n){return e.getObject(t)?(this.undoData.objectId=t,this.undoData.props=e.getObjectProperties(t,["left","top"]),e.setObjectPosition(t,n),e.renderAll(),a.Promise.resolve()):a.Promise.reject(s.rejectMessages.noObject)},undo:function(e){var t=this.undoData,n=t.objectId,i=t.props;return e.setObjectProperties(n,i),e.renderAll(),a.Promise.resolve()}};r.default.register(l),t.default=l}],r.c=s,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(t,e){if(1&e&&(t=r(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var i in t)r.d(n,i,function(e){return t[e]}.bind(null,i));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="/dist",r(r.s=68);function r(e){if(s[e])return s[e].exports;var t=s[e]={i:e,l:!1,exports:{}};return a[e].call(t.exports,t,t.exports,r),t.l=!0,t.exports}var a,s});
\ No newline at end of file
index 8137db4..68c9999 100644 (file)
@@ -22,7 +22,7 @@ class database {
     if (($text == "") || ($text == null)){
       return 'null';
     }
-    return "'".$text."'";
+    return "'".$this->securetext($text)."'";
   }
 
   public function query($sql){
@@ -90,7 +90,7 @@ class database {
     }
     try {
       if ($this->conn){
-        return  $this->exec($sql);
+        return $this->conn->exec($sql);
       }
     } catch (PDOException $e){
       error_log("EXEC ERROR: ".$sql);
index 8ebb17d..cfabcc7 100644 (file)
@@ -16,7 +16,7 @@ class gallery {
   }
 
   public function getGalleryItems($id){
-    $sql = "select * from galleryitems where id_galleries='".$id."'";
+    $sql = "select * from galleryitems where id_gallery='".$id."'";
     return $this->dbh->queryarray($sql);
   }
 
index a3a4926..c9b467f 100644 (file)
@@ -14,6 +14,7 @@ class session {
   }
   
   public function checkLogin($username,$password){
+    error_log("check Login");
     $encpwd = hash('sha256', trim($password));
 
     //echo "select id,username,usergroup from public.users where username='".$username."' and password='".$encpwd."';\n";
diff --git a/admin/tmpl/elements/dialogs/confirm.html.mustache b/admin/tmpl/elements/dialogs/confirm.html.mustache
new file mode 100644 (file)
index 0000000..9e4abb2
--- /dev/null
@@ -0,0 +1,15 @@
+<div class="modal" id="dlgconfirm">
+  <div class="modal-content animate-top card-4">
+    <header class="container">
+      <span class="button display-topright" onclick="document.getElementById('dlgconfirm').style.display='none'; return false;">&times;</span>
+      <h2 id="dlgconfirm_title"></h2>
+    </header>
+    <div class="container">
+      <div id="dlgconfirm_text"></div>
+    </div>
+    <footer class="container right-align padding-16">
+      <button class="button theme light margin-right border" id="dlgconfirm_btncancel" onclick="document.getElementById('dlgconfirm').style.display='none'; return false;">Abbrechen</button> <button class="button blue-grey margin-right border"
+      id="dlgconfirm_btnok" onclick="document.getElementById('dlgconfirm').style.display='none';">OK</button>
+    </footer>
+  </div>
+</div>
\ No newline at end of file
diff --git a/admin/tmpl/elements/dialogs/dataload.html.mustache b/admin/tmpl/elements/dialogs/dataload.html.mustache
new file mode 100644 (file)
index 0000000..6d0e7d4
--- /dev/null
@@ -0,0 +1,38 @@
+<div class="modal" id="dlgdataload">
+  <div class="modal-content animate-top card-4">
+    <header class="container">
+      <h2 id="dlgdataload_title"></h2>
+    </header>
+    <div class="container">
+      <div class="container" id="dlgdataload_text">
+        Attentez s.v.p.!
+      </div>
+      <div class="container padding">
+        <progress class="progress block" indeterminate=""></progress>
+      </div>
+    </div>
+    <footer class="container right-align padding-16">
+      <!--<button class="button blue-grey margin-right border" onclick="document.getElementById('dlgdataload').style.display='none'; return false;">OK</button>  -->
+    </footer>
+  </div>
+</div>
+<script>
+
+function showdataloaddlg(title,message){
+document.getElementById('dlgdataload_title').innerHTML=title;
+document.getElementById('dlgdataload_text').innerHTML=message;
+document.getElementById('dlgdataload').style.display='block';
+return false;
+}
+
+function closedataloaddlg(){
+document.getElementById('dlgdataload_title').innerHTML='';
+document.getElementById('dlgdataload_text').innerHTML='';
+document.getElementById('dlgdataload').style.display='none';
+return false;
+}
+
+function setloadtext(msg){
+document.getElementById('dlgdataload_text').innerHTML=msg;
+}
+</script>
\ No newline at end of file
diff --git a/admin/tmpl/elements/dialogs/dlg_galleryitem.html.mustache b/admin/tmpl/elements/dialogs/dlg_galleryitem.html.mustache
new file mode 100644 (file)
index 0000000..aa2c158
--- /dev/null
@@ -0,0 +1,37 @@
+<div id="dlg_galleryitem" class="modal">
+  <div class="modal-content animate-top card-4">
+    <header> 
+      <span onclick="document.getElementById('dlg_galleryitem').style.display='none'; return false;" 
+       class="button toolbarbtn display-topright" ><span class="icon icon-remove" style="font-size: 18px;"></span></span>
+      <h3 id="dlggalleryitem_title">Editer Image/Video</h3>
+    </header>
+    <div class="container">
+      <div id="dlg_galleryitem_infomsg"></div>
+        <form id="frm_galleryitem">
+        <input type="hidden" class="data_galleryitems" id="galleryitem_id" data-table="galleryitems" data-column="id"  data-id="" value=""/>
+        <input type="hidden" class="data_galleryitems" id="galleryitem_id_gallery" data-table="galleryitems" data-column="id_gallery"  data-id="" value=""/>
+        <div class="row">
+          <div class="cell" style="max-width: 140px;">
+            <label class="label" for="galleryitem_publishdate">Publication</label> 
+            <input class="input border date data_galleryitem datefield" data-column="publishdate" data-id="" data-table="galleryitems" id="galleryitem_publishdate" type="date">
+          </div>
+          <div class="cell" style="max-width: 140px;">
+            <label class="label" for="galleryitem_unpublishdate">Fin Publication</label> 
+            <input class="input border date data_galleryitem datefield" data-column="unpublishdate" data-id="" data-table="galleryitems" id="galleryitem_unpublishdate" type="date">
+          </div>
+        </div>
+        <div class="row">
+                <div class="cell container" style="width: 320px;">
+                <label for="galleryitem_description" class="label">description</label>
+                  <textarea class="input data_galleryitem" id="galleryitem_description" data-column="description"  data-table="galleryitems" data-id="" ></textarea>
+                </div>
+        </div>
+        
+       </form>  
+    </div>
+    <footer>
+    <button class="button theme-light margin-right border" onclick="document.getElementById('dlg_galleryitem').style.display='none'; return false;"><span class="icon icon-remove"></span>&nbsp;Annuler</button>
+    <button class="button actionbtn margin-right border" onclick="gallery.save();"><span class="icon icon-save"></span>&nbsp;Ajouter</button>  
+    </footer>
+  </div>
+</div>
\ No newline at end of file
diff --git a/admin/tmpl/elements/dialogs/dlgaddgalleryitem.html.mustache b/admin/tmpl/elements/dialogs/dlgaddgalleryitem.html.mustache
new file mode 100644 (file)
index 0000000..b6d9fe6
--- /dev/null
@@ -0,0 +1,28 @@
+<div id="dlg_addgalleryitem" class="modal">
+  <div class="modal-content animate-top card-4">
+    <header> 
+      <span onclick="document.getElementById('dlg_addgalleryitem').style.display='none'; return false;" 
+       class="button toolbarbtn display-topright" ><span class="icon icon-remove" style="font-size: 18px;"></span></span>
+      <h3 id="dlgaddgalleryitem_title">Ajouter Image/Video</h3>
+    </header>
+    <div class="container">
+      <div id="dlg_addgalleryitem_infomsg"></div>
+        <form id="frm_addgalleryitem">
+        <input type="hidden" class="data_addgalleryitems" id="addgalleryitem_id_gallery" data-table="galleryitems" data-column="id_gallery"  data-id="" value=""/>
+
+        <input type="hidden" class="data_addgalleryitems" id="addgalleryitem_folder" data-table="galleryitems"  data-column="" data-id="" value=""/>
+        <div class="row">
+                <div class="cell container" style="width: 200px;">
+                <label for="addgalleryitem_file" class="label">Fichier</label>
+                  <input type="file" class="input  data_addgalleryitem " id="addgalleryitem_file" data-column="filename"  data-table="galleryitems" data-id="" value="" />
+                </div>
+        </div>
+        
+       </form>  
+    </div>
+    <footer>
+    <button class="button theme-light margin-right border" onclick="document.getElementById('dlg_addgalleryitem').style.display='none'; return false;"><span class="icon icon-remove"></span>&nbsp;Annuler</button>
+    <button class="button actionbtn margin-right border" onclick="gallery.addItem();"><span class="icon icon-save"></span>&nbsp;Ajouter</button>  
+    </footer>
+  </div>
+</div>
diff --git a/admin/tmpl/elements/dialogs/message.html.mustache b/admin/tmpl/elements/dialogs/message.html.mustache
new file mode 100644 (file)
index 0000000..7931c02
--- /dev/null
@@ -0,0 +1,14 @@
+<div class="modal" id="dlgmessage">
+  <div class="modal-content animate-top card-4">
+    <header class="container">
+      <span class="button display-topright" onclick="document.getElementById('dlgmessage').style.display='none'; return false;">&times;</span>
+      <h2 id="dlgmessage_title"></h2>
+    </header>
+    <div class="container">
+      <div id="dlgmessage_text"></div>
+    </div>
+    <footer class="container right-align padding-16">
+      <button class="button blue-grey margin-right border" onclick="document.getElementById('dlgmessage').style.display='none'; return false;">OK</button>
+    </footer>
+  </div>
+</div>
\ No newline at end of file
diff --git a/admin/tmpl/elements/panels/pnl_galleries.html.mustache b/admin/tmpl/elements/panels/pnl_galleries.html.mustache
new file mode 100644 (file)
index 0000000..837aa03
--- /dev/null
@@ -0,0 +1,24 @@
+<div class="panel"  id="pnl_galleries">
+<div class="display-container bar toolbar">
+  <a class="bar-item toolbarbtn" href="index.html"><span class="icon-home" style="font-size: 18px;"></span>Home</a>
+  <div class="bar-item PageHeadTitle">Galleries</div>
+  <div class="hide-small">
+    <button class="bar-item toolbarbtn right" onclick="galleries.add();"><span class="icon-plus" style="font-size: 17px;"></span>ajouter</button>
+      <button class="bar-item toolbarbtn right" onclick="galleries.edit();"><span class="icon-edit" style="font-size: 17px;"></span>édit.</button>
+      <button class="bar-item toolbarbtn right" onclick="galleries.confirmRemove();"><span class="icon-trash" style="font-size: 17px;"></span>suppr.</button>
+      <button class="bar-item toolbarbtn right" onclick="galleries.duplicate()"><span class="icon-duplicate" style="font-size: 17px;"></span>dupl.</button>
+  </div>
+  <div class="hide-large hide-medium">
+    <button class="bar-item toolbarbtn right" onclick="myapp.togglemenu('mobilemenu_galleries');"><span class="icon-menu xxlarge" style="font-size: 20px;"></span></button>
+  </div>
+  <div class="toolbar" id="mobilemenu_galleries" style="display: none;">
+    <div class="bar">
+      <button class="bar-item toolbarbtn" onclick="galleries.add();"><span class="icon-plus" style="font-size: 17px;"></span>ajouter</button>
+      <button class="bar-item toolbarbtn" onclick="galleries.edit();"><span class="icon-edit" style="font-size: 17px;"></span>édit.</button>
+      <button class="bar-item toolbarbtn" onclick="galleries.confirmRemove();"><span class="icon-trash" style="font-size: 17px;"></span>suppr.</button>
+      {{! <button class="bar-item toolbarbtn" onclick="galleries.duplicate()"><span class="icon-duplicate" style="font-size: 17px;"></span>dupl.</button> }}
+    </div>
+  </div>
+</div>
+<div id="tbl_galleries"></div>
+</div>
\ No newline at end of file
diff --git a/admin/tmpl/elements/panels/pnl_gallery.html.mustache b/admin/tmpl/elements/panels/pnl_gallery.html.mustache
new file mode 100644 (file)
index 0000000..5c12e4d
--- /dev/null
@@ -0,0 +1,52 @@
+<div class="panel" id="pnl_gallery" style="display: none;">
+<div class="display-container bar toolbar">
+  <button class="bar-item toolbarbtn" onclick="myapp.viewpanel('galleries');"><span class="icon-back" style="font-size: 17px;"></span>retour</button>
+  <div class="bar-item PageHeadTitle">Gallerie</div>
+  <div class="hide-small">
+    <button class="bar-item toolbarbtn right" onclick="gallery.setAsDefaultItem();"><span class="icon-image" style="font-size: 17px;"></span>Vorschau-Bild</button>
+    <button class="bar-item toolbarbtn right" onclick="gallery.editImage();"><span class="icon-image" style="font-size: 17px;"></span>Bild edit.</button>
+    <button class="bar-item toolbarbtn right" onclick="gallery.add();"><span class="icon-plus" style="font-size: 17px;"></span>ajouter</button>
+    <button class="bar-item toolbarbtn right" onclick="gallery.edit();"><span class="icon-edit" style="font-size: 17px;"></span>édit.</button>
+    <button class="bar-item toolbarbtn right" onclick="gallery.confirmRemove();"><span class="icon-trash" style="font-size: 17px;"></span>suppr.</button>
+
+  </div>
+  <div class="hide-large hide-medium">
+    <button class="bar-item toolbarbtn right" onclick="myapp.togglemenu('mobilemenu_galleryitems');"><span class="icon-menu xxlarge" style="font-size: 20px;"></span></button>
+  </div>
+  <div class="toolbar" id="mobilemenu_galleryitems" style="display: none;">
+    <div class="bar">
+      <button class="bar-item toolbarbtn right" onclick="gallery.add();"><span class="icon-plus" style="font-size: 17px;"></span>ajouter</button>
+    <button class="bar-item toolbarbtn right" onclick="gallery.edit();"><span class="icon-edit" style="font-size: 17px;"></span>édit.</button>
+    <button class="bar-item toolbarbtn right" onclick="gallery.confirmRemove();"><span class="icon-trash" style="font-size: 17px;"></span>suppr.</button>
+    </div>
+  </div>
+</div>
+<div class="cell-row">
+  <div class="cell" style="background-color: lightgrey; width: 300px; height: calc( 100vh - 60px); overflow-y: scroll;">
+    <div class="row" style=" padding-bottom: 10px;">
+      <form id="frm_galleries">
+      <div class="cell-row">
+      <div class="cell container">
+          <label class="label">Nom</label>
+          <input class="input data_galleries" type="text" id="galleries_gallery" data-id="" data-column="gallery" data-table="galleries" onblur="dataform.savefield();"/>
+        </div>
+      </div>
+      <div class="cell-row">
+        <div class="cell container">
+          <label class="label">description</label>
+          <textarea class="input richeditarea data_galleries" type="text" style="width: 100%; height: 100px;" id="galleries_description" data-id="" data-column="description" data-table="galleries"></textarea>
+        </div>
+      </div>
+      </form>
+      </div>
+  </div>
+  <div class="cell container">
+
+    <div id="tbl_galleryitems"></div>
+  </div>  
+</div>
+
+<div class="row">
+  
+</div>
+</div>
\ No newline at end of file
index c91fac9..d041004 100644 (file)
 <link rel="icon" type="image/png" sizes="96x96" href="img/favicon/favicon-96x96.png?v={{config.appversion}}">
 <link rel="icon" type="image/png" sizes="16x16" href="img/favicon/favicon-16x16.png?v={{config.appversion}}">
 
-<link rel="stylesheet" href="css/icons{{minify}}.css?v={{config.appversion}}">
-<link rel="stylesheet" href="css/theme{{minify}}.css?v={{config.appversion}}">
+
 
 <link rel="stylesheet" href="js/vendors/tabulator/css/tabulator_site{{minify}}.css?v={{config.appversion}}">
 <link rel="stylesheet" href="js/vendors/slimselect/slimselect{{minify}}.css?v={{config.appversion}}">
 <link rel="stylesheet" href="js/vendors/flatpickr/flatpickr{{minify}}.css?v={{config.appversion}}">
 <link rel="stylesheet" href="js/vendors/flatpickr/themes/airbnb{{minify}}.css?v={{config.appversion}}">
+<!-- <link rel="stylesheet" href="js/vendors/dropzone/dropzone{{minify}}.css?v={{config.appversion}}"> -->
+<link rel="stylesheet" href="css/icons{{minify}}.css?v={{config.appversion}}">
+<link rel="stylesheet" href="css/theme{{minify}}.css?v={{config.appversion}}">
 </head>
 <body>
 <div class="main">
   <script type="text/javascript" src="js/vendors/flatpickr/flatpickr{{minify}}.js?v={{config.appversion}}"></script>
   <script type="text/javascript" src="js/vendors/flatpickr/l10n/fr{{minify}}.js?v={{config.appversion}}"></script>
   <script type="text/javascript" src="js/vendors/flatpickr/plugins/weekSelect/weekSelect.js?v={{config.appversion}}"></script>
+  <script type="text/javascript" src="js/vendors/tinymce/js/tinymce/tinymce.min.js?v={{config.appversion}}" ></script>
+  <!-- <script type="text/javascript" src="js/vendors/dropzone/dropzone.js?v={{config.appversion}}" ></script> -->
   <script type="text/javascript" src="js/request{{minify}}.js?v={{config.appversion}}"></script>
+  <script type="text/javascript" src="js/fieldata{{minify}}.js?v={{config.appversion}}"></script>
   <script type="text/javascript" src="js/myapp{{minify}}.js?v={{config.appversion}}"></script>
   <script type="text/javascript" src="js/timecalc{{minify}}.js?v={{config.appversion}}"></script>
   <script type="text/javascript" src="js/dataform{{minify}}.js?v={{config.appversion}}"></script>
-  <script type="text/javascript" src="js/report{{minify}}.js?v={{config.appversion}}"></script>
+  <!-- <script type="text/javascript" src="js/report{{minify}}.js?v={{config.appversion}}"></script> -->
   
 </body>
 
index a724b37..4e6297b 100644 (file)
@@ -1,71 +1,14 @@
-<div class="panel"  id="pnl_galleries">
-<div class="display-container bar toolbar">
-  <a class="bar-item toolbarbtn" href="index.html"><span class="icon-home" style="font-size: 18px;"></span>Home</a>
-  <div class="bar-item PageHeadTitle">Galleries</div>
-  <div class="hide-small">
-    <button class="bar-item toolbarbtn right" onclick="gallery.add();"><span class="icon-plus" style="font-size: 17px;"></span>ajouter</button>
-      <button class="bar-item toolbarbtn right" onclick="gallery.edit();"><span class="icon-edit" style="font-size: 17px;"></span>édit.</button>
-      <button class="bar-item toolbarbtn right" onclick="gallery.confirmRemove();"><span class="icon-trash" style="font-size: 17px;"></span>suppr.</button>
-      <button class="bar-item toolbarbtn right" onclick="gallery.duplicate()"><span class="icon-duplicate" style="font-size: 17px;"></span>dupl.</button>
-  </div>
-  <div class="hide-large hide-medium">
-    <button class="bar-item toolbarbtn right" onclick="myapp.togglemenu('mobilemenu_galleries');"><span class="icon-menu xxlarge" style="font-size: 20px;"></span></button>
-  </div>
-  <div class="toolbar" id="mobilemenu_galleries" style="display: none;">
-    <div class="bar">
-      <button class="bar-item toolbarbtn" onclick="gallery.add();"><span class="icon-plus" style="font-size: 17px;"></span>ajouter</button>
-      <button class="bar-item toolbarbtn" onclick="gallery.edit();"><span class="icon-edit" style="font-size: 17px;"></span>édit.</button>
-      <button class="bar-item toolbarbtn" onclick="gallery.confirmRemove();"><span class="icon-trash" style="font-size: 17px;"></span>suppr.</button>
-      <button class="bar-item toolbarbtn" onclick="gallery.duplicate()"><span class="icon-duplicate" style="font-size: 17px;"></span>dupl.</button>
-    </div>
-  </div>
-</div>
-<div id="tbl_galleries"></div>
-</div>
-<div class="panel" id="pnl_gallery" style="display: none;">
-<div class="display-container bar toolbar">
-  <button class="bar-item toolbarbtn" onclick="myapp.viewpanel('galleries');"><span class="icon-back" style="font-size: 17px;"></span>retour</button>
-  <div class="bar-item PageHeadTitle">Gallerie</div>
-  <div class="hide-small">
-    <button class="bar-item toolbarbtn right" onclick="gallery.addItem();"><span class="icon-plus" style="font-size: 17px;"></span>ajouter</button>
-      <button class="bar-item toolbarbtn right" onclick="gallery.editItem();"><span class="icon-edit" style="font-size: 17px;"></span>édit.</button>
-      <button class="bar-item toolbarbtn right" onclick="gallery.confirmRemoveItem();"><span class="icon-trash" style="font-size: 17px;"></span>suppr.</button>
-      <button class="bar-item toolbarbtn right" onclick="gallery.duplicateItem()"><span class="icon-duplicate" style="font-size: 17px;"></span>dupl.</button>
-  </div>
-  <div class="hide-large hide-medium">
-    <button class="bar-item toolbarbtn right" onclick="myapp.togglemenu('mobilemenu_galleryitems');"><span class="icon-menu xxlarge" style="font-size: 20px;"></span></button>
-  </div>
-  <div class="toolbar" id="mobilemenu_galleryitems" style="display: none;">
-    <div class="bar">
-      <button class="bar-item toolbarbtn" onclick="gallery.addItem();"><span class="icon-plus" style="font-size: 17px;"></span>ajouter</button>
-      <button class="bar-item toolbarbtn" onclick="gallery.editItem();"><span class="icon-edit" style="font-size: 17px;"></span>édit.</button>
-      <button class="bar-item toolbarbtn" onclick="gallery.confirmRemoveItem();"><span class="icon-trash" style="font-size: 17px;"></span>suppr.</button>
-      <button class="bar-item toolbarbtn" onclick="gallery.duplicateItem()"><span class="icon-duplicate" style="font-size: 17px;"></span>dupl.</button>
-    </div>
-  </div>
-</div>
-<div class="row" style="background-color: lightgrey; padding-bottom: 10px;">
-<form>
-<div class="cell-row">
-<div class="cell container">
-    <label class="label">Nom</label>
-    <input class="input" type="text" id="galleries_name" data-id="" data-column="gallery" data-table="galleries" onblur="gallery.savefield();"/>
-  </div>
-</div>
-<div class="cell-row">
-  <div class="cell container">
-    <label class="label">description</label>
-    <textarea class="input richeditarea" type="text" style="width: 100%; height: 100px;" id="galleries_description" data-id="" data-column="description" data-table="galleries"></textarea>
-  </div>
-</div>
-</div>
-<div class="row">
-  <div id="tbl_galleryitems"></div>
-</div>
-</div>
+{{> panels/pnl_galleries.html.mustache }}
+{{> panels/pnl_gallery.html.mustache }}
+{{> dialogs/dlgaddgalleryitem.html.mustache }}
+{{> dialogs/dlg_galleryitem.html.mustache }}
+{{> dialogs/confirm.html.mustache }}
+{{> dialogs/dataload.html.mustache }}
+<script type="text/javascript" src="js/modules/galleries.js"></script>
 <script type="text/javascript" src="js/modules/gallery.js"></script>
 <script>
   function initpage(){
+    galleries.init();
     gallery.init();
   }
-</script>
\ No newline at end of file
+</script>
index c5feea3..96d90a1 100644 (file)
         <h3>Contenu</h3>
       </header>
       <div class="bar">
-        <a class="bar-item bodybtn" href="galleries.html"><span class="icon-cube" style="font-size: 24px;"></span>Galleries</a> 
-        <a class="bar-item bodybtn" href="websites.html"><span class="icon-cube" style="font-size: 24px;"></span>Pages</button> 
-        <a class="bar-item bodybtn" href="rendezvous.html"><span class="icon-cube" style="font-size: 24px;"></span>Rendez-Vous</a>
-        <a class="bar-item bodybtn" href="shop.html"><span class="icon-cube" style="font-size: 24px;"></span>Shop</a>
-        <a class="bar-item bodybtn" href="orders.html"><span class="icon-cube" style="font-size: 24px;"></span>Commandes</a>
-        <a class="bar-item bodybtn" href="popup.html"><span class="icon-cube" style="font-size: 24px;"></span>Popup</a>
+        <a class="bar-item bodybtn" href="galleries.html"><span class="icon-images" style="font-size: 24px;"></span>Galleries</a> 
+        <a class="bar-item bodybtn" href="websites.html"><span class="icon-news" style="font-size: 24px;"></span>Pages</button> 
+        <a class="bar-item bodybtn" href="rendezvous.html"><span class="icon-rendezvous" style="font-size: 24px;"></span>Rendez-Vous</a>
+        <a class="bar-item bodybtn" href="shop.html"><span class="icon-cart" style="font-size: 24px;"></span>Shop</a>
+        <a class="bar-item bodybtn" href="orders.html"><span class="icon-" style="font-size: 24px;"></span>Commandes</a>
+        <a class="bar-item bodybtn" href="popup.html"><span class="icon-push" style="font-size: 24px;"></span>Popup</a>
       </div>
     </div>
   </div>
         <h3>Configuration</h3>
       </header>
       <div class="bar">
-        <a class="bar-item bodybtn" href="config/rendezvous.html"><span class="icon-bill" style="font-size: 24px;"></span>Rendez-Vous</a>
-        <a class="bar-item bodybtn" href="config/media.html"><span class="icon-bill" style="font-size: 24px;"></span>Media</a>
-        <a class="bar-item bodybtn" href="config/template.html"><span class="icon-bill" style="font-size: 24px;"></span>Template</a>
-        <a class="bar-item bodybtn" href="config/menu.html"><span class="icon-bill" style="font-size: 24px;"></span>Bars de Navigations</a> 
-        <a class="bar-item bodybtn" href="config/files.html"><span class="icon-contacts" style="font-size: 24px;"></span>Pages Web</button> 
-        <a class="bar-item bodybtn" href="config/site.html"><span class="icon-product" style="font-size: 24px;"></span>Site</a>
-        <a class="bar-item bodybtn" href="config/shop.html"><span class="icon-product" style="font-size: 24px;"></span>Shop</a>
-        <a class="bar-item bodybtn" href="config/users.html"><span class="icon-product" style="font-size: 24px;"></span>Utilisateurs</a>
+        <a class="bar-item bodybtn" href="config/rendezvous.html"><span class="icon-rendezvous" style="font-size: 24px;"></span>Rendez-Vous</a>
+        <a class="bar-item bodybtn" href="config/media.html"><span class="icon-images" style="font-size: 24px;"></span>Media</a>
+        <a class="bar-item bodybtn" href="config/template.html"><span class="icon-cube" style="font-size: 24px;"></span>Template</a>
+        <a class="bar-item bodybtn" href="config/menu.html"><span class="icon-cube" style="font-size: 24px;"></span>Bars de Navigations</a> 
+        <a class="bar-item bodybtn" href="config/files.html"><span class="icon-cube" style="font-size: 24px;"></span>Pages Web</button> 
+        <a class="bar-item bodybtn" href="config/site.html"><span class="icon-cube" style="font-size: 24px;"></span>Site</a>
+        <a class="bar-item bodybtn" href="config/shop.html"><span class="icon-cart" style="font-size: 24px;"></span>Shop</a>
+        <a class="bar-item bodybtn" href="config/users.html"><span class="icon-profile" style="font-size: 24px;"></span>Utilisateurs</a>
       </div>
     </div>
   </div>
index e69de29..bccb653 100644 (file)
@@ -0,0 +1,6 @@
+<script type="text/javascript" src="js/modules/rendezvous.js"></script>
+<script>
+  function initpage(){
+    rendezvous.init();
+  }
+</script>
\ No newline at end of file
index e69de29..c32cf75 100644 (file)
@@ -0,0 +1,31 @@
+<?php
+   require("lib/config.php");
+   require("lib/database.php");
+   require("lib/session.php");
+   $db = new database($cfg["db"]);
+   $sess = new session($db);
+   $vars = array();
+   $html = array();
+   if (isset($_COOKIE[$cfg["cookie"]])){
+    $vars["sid"] = $_COOKIE[$cfg["cookie"]]; 
+   }
+   if (isset($vars["sid"]) && ($vars["sid"] != "")){
+    $vars["session"] = $sess->getSession($vars["sid"]);
+    // if (!isset($vars["session"]["id_session"])){
+    //   $vars["sid"] = "";
+    // } 
+   }
+
+   
+   $html["session"] = $vars["session"];
+   
+   if(count($vars["session"]) == 0) {
+    header('Content-Type: application/json');
+    echo json_encode($html);
+    exit(1);
+   }
+   //header('Content-Type: application/json');
+   header('Content-Type: text/html');
+   print_r($params);
+
+?>
\ No newline at end of file
diff --git a/dev/cmds.txt b/dev/cmds.txt
new file mode 100644 (file)
index 0000000..cb5d532
--- /dev/null
@@ -0,0 +1 @@
+ ls -1 *.jpg | awk -F\/ '{ print "convert \""$(NF)"\" -resize x128 \"thumb/"$(NF)"\"" }' | sh
\ No newline at end of file
diff --git a/website/mkdir weeklysoap.txt b/website/mkdir weeklysoap.txt
new file mode 100644 (file)
index 0000000..8dd31b0
--- /dev/null
@@ -0,0 +1,7 @@
+mkdir weeklysoap
+mkdir suggestion
+mkdir ourspecials
+mkdir aboutus
+mkdir photos
+mkdir videos
+mkdir productions
\ No newline at end of file
index 3b3cebf..221ba46 100644 (file)
       </div>
     </div>
 
-<script src="js/index.js" type="text/javascript"></script>
+<script src="js/index.js?v={{ version }}" type="text/javascript"></script>